<?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>222517</bug_id>
          
          <creation_ts>2021-02-27 13:49:29 -0800</creation_ts>
          <short_desc>Add alternate, non-named-getter based, implementation of CSSStyleDeclaration back into WebCore</short_desc>
          <delta_ts>2021-03-01 13:28:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>217623</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</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>1734224</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-27 13:49:29 -0800</bug_when>
    <thetext>To aid iteration on a good solution, let&apos;s re-land the non-named-getter based, implementation of CSSStyleDeclaration back into WebCore, but behind a compile time flag for now, to avoid the compile  time and binary size regressions (see https://bugs.webkit.org/show_bug.cgi?id=217623).

Once we improve remove the regressions, we can turn it on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734225</commentid>
    <comment_count>1</comment_count>
      <attachid>421755</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-27 14:05:20 -0800</bug_when>
    <thetext>Created attachment 421755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734226</commentid>
    <comment_count>2</comment_count>
      <attachid>421756</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-27 14:06:12 -0800</bug_when>
    <thetext>Created attachment 421756
JSCSSStyleDeclaration.h (if you disable the legacy flag)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734227</commentid>
    <comment_count>3</comment_count>
      <attachid>421757</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-27 14:06:37 -0800</bug_when>
    <thetext>Created attachment 421757
JSCSSStyleDeclaration.cpp (if you disable the legacy flag)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734229</commentid>
    <comment_count>4</comment_count>
      <attachid>421758</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-27 14:11:23 -0800</bug_when>
    <thetext>Created attachment 421758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734233</commentid>
    <comment_count>5</comment_count>
      <attachid>421759</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-27 14:48:04 -0800</bug_when>
    <thetext>Created attachment 421759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734247</commentid>
    <comment_count>6</comment_count>
      <attachid>421764</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-27 17:52:20 -0800</bug_when>
    <thetext>Created attachment 421764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734302</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-28 14:13:19 -0800</bug_when>
    <thetext>The patch is essentially identical to the previous one which Darin reviewed with the following exceptions:

- Disabled behind a ENABLE flag.
- A little simpler due to no longer having the pixel/pos/css prefixes to deal with.
- Has a bindings test.
- Does not remove old, named getter/setter based code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734313</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-28 17:00:08 -0800</bug_when>
    <thetext>Looks like IDL preprocessing is maybe not a thing on windows :(. We really need to remove that port if no one is going to work on it :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734314</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-28 17:01:17 -0800</bug_when>
    <thetext>Maybe I can work around it by reversing the meaning of the ifdef?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734320</commentid>
    <comment_count>10</comment_count>
      <attachid>421786</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-28 18:05:27 -0800</bug_when>
    <thetext>Created attachment 421786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734580</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-01 13:27:44 -0800</bug_when>
    <thetext>Committed r273688: &lt;https://commits.webkit.org/r273688&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421786.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734581</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-01 13:28:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/74887863&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421755</attachid>
            <date>2021-02-27 14:05:20 -0800</date>
            <delta_ts>2021-02-27 14:23:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222517-20210227140519.patch</filename>
            <type>text/plain</type>
            <size>54495</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzM2MjYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAyLTI3ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYWx0ZXJuYXRlLCBub24tbmFtZWQtZ2V0dGVyIGJh
c2VkLCBpbXBsZW1lbnRhdGlvbiBvZiBDU1NTdHlsZURlY2xhcmF0aW9uIGJhY2sgaW50byBXZWJD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1
MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAgICBBZGQgbmV3IEVOQUJMRSBmbGFnIEVOQUJMRV9M
RUdBQ1lfTkFNRURfSVRFTV9JTVBMRU1FTlRBVElPTl9GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9O
IHdoaWNoIGluZGljYXRlcworICAgICAgICB0aGF0IHdlIHNob3VsZCB1c2UgdGhlIGluY29ycmVj
dCBsZWdhY3kgaW1wbGVtZW50YXRpbm8gb2YgcHJvcGVydHkgZ2V0dGVyL3NldHRlcnMgb2YgQ1NT
U3R5bGVEZWNsYXJhdGlvbi4KKyAgICAgICAgT25jZSB3ZSByZW1vdmUgdGhlIGNvbXBpbGUgdGlt
ZSBhbmQgYmluYXJ5IHNpemUgcmVncmVzc2lvbnMsIHdlIGNhbiBkaXNhYmxlIGFuZCByZW1vdmUg
dGhpcy4KKwogMjAyMS0wMi0yNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBCdW1wIGxpYnNvdXAzIHZlcnNpb24gdG8gMi45
OS4xCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgJKHJldmlzaW9uIDI3MzYyNikKKysrIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw2ICsz
NDgsMTAgQEAKICNkZWZpbmUgRU5BQkxFX0xBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQgMAogI2Vu
ZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfTEVHQUNZX05BTUVEX0lURU1fSU1QTEVNRU5UQVRJ
T05fRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTikKKyNkZWZpbmUgRU5BQkxFX0xFR0FDWV9OQU1F
RF9JVEVNX0lNUExFTUVOVEFUSU9OX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04gMQorI2VuZGlm
CisKICNpZiAhZGVmaW5lZChFTkFCTEVfTEVUVEVSUFJFU1MpCiAjZGVmaW5lIEVOQUJMRV9MRVRU
RVJQUkVTUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MzYyNykKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisy
MDIxLTAyLTI3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YWx0ZXJuYXRlLCBub24tbmFtZWQtZ2V0dGVyIGJhc2VkLCBpbXBsZW1lbnRhdGlvbiBvZiBDU1NT
dHlsZURlY2xhcmF0aW9uIGJhY2sgaW50byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1MTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZS1sYW5kcyBjaGFuZ2UgZnJvbSByMjY4NTY0IGJ1
dCBkaXNhYmxlZCBiZWhpbmQgYSBuZXcgRU5BQkxFIGZsYWcsIAorICAgICAgICAhRU5BQkxFKExF
R0FDWV9OQU1FRF9JVEVNX0lNUExFTUVOVEFUSU9OX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04p
LgorCisgICAgICAgIFJlcGxhY2UgbmFtZWQgZ2V0dGVyL3NldHRlciBiYXNlZCBpbXBsZW1lbnRh
dGlvbiBvZiBhY2Nlc3MgdG8gQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0eSB2YWx1ZXMKKyAg
ICAgICAgd2l0aCBhIGdlbmVyYXRlZCBwYXJ0aWFsIGludGVyZmFjZSB0aGF0IGxpc3RzIGFsbCB0
aGUgcHJvcGVydGllcyBleGFjdGx5LgorICAgICAgIAorICAgICAgICBUbyBrZWVwIHRoaW5ncyBj
b25zaXN0ZW50IHdpdGggZXhpc3RpbmcgYmVoYXZpb3IsIGluIGFkZGl0aW9uIHRvIHRoZSBzcGVj
J2QgcHJvcGVydGllcywgd2UgYWxzbworICAgICAgICBtYWludGFpbiBhZGRpdGlvbmFsIHByb3Bl
cnRpZXMgZm9yIGVwdWIgcHJlZml4ZWQgcHJvcGVydGllcy4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgIEdlbmVyYXRlIENTU1N0eWxlRGVj
bGFyYXRpb24rUHJvcGVydHlOYW1lcy5pZGwgYW5kIGVuc3VyZSBpdCBpcyBjb21waWxlIHRvZ2V0
aGVyIHdpdGggdGhlIG90aGVyCisgICAgICAgIGJpbmRpbmdzLgorCisgICAgICAgICogY3NzL21h
a2Vwcm9wLnBsOgorICAgICAgICBBZGQgZ2VuZXJhdGlvbiBvZiBDU1NTdHlsZURlY2xhcmF0aW9u
K1Byb3BlcnR5TmFtZXMuaWRsIGZyb20gQ1NTUHJvcGVydGllcy5qc29uLiBBZGQgY2hlY2tpbmcK
KyAgICAgICAgb2YgdGhlIGVuYWJsZSBmbGFnIHRvIGVuc3VyZSBpdCBpcyBub3QgY29tcGlsZWQg
YnkgZGVmYXVsdC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoVG9NZXRob2ROYW1lKToKKyAgICAgICAgRG9uJ3QgdHJhbnNmb3JtIG5h
bWVzIHRoYXQgc3RhcnQgd2l0aCBDU1NPTSB0byBlbnN1cmUgcHJvcGVydHkgbmFtZXMgYXJlIGNv
bnNpc3RlbnQuCisKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQm9keURlZmluaXRp
b24pOgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvbik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246CisgICAgICAgIEFk
ZCBpbml0aWFsIHN1cHBvcnQgZm9yIHRoZSBuZXcgQ1NTUHJvcGVydHkgZXh0ZW5kZWQgYXR0cmli
dXRlLiBPbmx5IHRoZSB0ZXN0cyBhbmQKKyAgICAgICAgdGhlIGRpc2FibGVkIGNvZGUgaW4gQ1NT
U3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmlkbCBjdXJyZW50bHkgdXNlIGl0LgorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0
b3JzLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJv
cGVydHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q1NTUHJvcGVydHkuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RDU1NQcm9wZXJ0eS5pZGw6IEFkZGVkLgorICAgICAgICBBZGQgdGVzdHMgZm9y
IHRoZSBuZXcgQ1NTUHJvcGVydHkgZXh0ZW5kZWQgYXR0cmlidXRlLgorCisgICAgICAgIChXZWJD
b3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwpOgor
ICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBj
c3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0
UHJvcGVydHlJbnRlcm5hbCk6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbi5oOgorICAgICAgICBSZW1vdmUgdW51c2VkIGJvb2wgcmV0dXJuIHZhbHVlIGZyb20g
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsIChpdCBnb2VzIGZyb20KKyAgICAgICAgRXhjZXB0aW9u
T3I8Ym9vbD4gdG8gRXhjZXB0aW9uT3I8dm9pZD4pIHRvIHNpbXBsaWZ5IHNvbWUgY2FsbGVycyB0
aGF0IG5vIGxvbmdlcgorICAgICAgICBuZWVkIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUuCisK
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgICogY3NzL0NT
U1N0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgRXh0cmFjdCBvdXQgc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsIHNvIGl0IGNhbiBiZSB1c2VkIGJ5IHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IKKyAg
ICAgICAgZm9yIENTU1Byb3BlcnR5IGF0dHJpYnV0ZXMuCisKKyAgICAgICAgQWxzbyByZW1vdmVz
IHVubmVjZXNzYXJ5IE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBkb3VibGU+PiByZXR1cm4gdmFs
dWUgZnJvbSBuYW1lZEl0ZW0KKyAgICAgICAgYXMgaXQgb25seSBldmVyIHJldHVybnMgYSBTdHJp
bmcuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGw6CisgICAgICAgIE1v
dmUgbmFtZWQgZ2V0dGVyL3NldHRlciBkZWNsYXJhdGlvbnMgYW5kIERlZmF1bHREZWZpbmVPd25Q
cm9wZXJ0eSBpbnNpZGUgb2YKKyAgICAgICAgZW5hYmxlIGZsYWdzIGNoZWNrcyBzbyB0aGF0IHdo
ZW4gaXQgaXMgZGlzYWJsZWQsIHdlIGRvbid0IHVzZSB0aGVtLgorCiAyMDIxLTAyLTI3ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3Ig
J3BpeGVsJyBhbmQgJ3BvcycgQ1NTT00gcHJlZml4ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMTkzMCw3ICsxOTMwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTICR7V2ViQ29yZV9ERQogCiAjIEdlbmVyYXRlIENTUyBwcm9wZXJ0eSBuYW1lcwogYWRkX2N1
c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
Q1NTUHJvcGVydGllcy5qc29uICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9w
ZXJ0eU5hbWVzLmggJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5TmFt
ZXMuY3BwICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmdw
ZXJmICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9TdHlsZUJ1aWxkZXJHZW5lcmF0ZWQu
Y3BwICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9TdHlsZVByb3BlcnR5U2hvcnRoYW5k
RnVuY3Rpb25zLmggJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L1N0eWxlUHJvcGVydHlT
aG9ydGhhbmRGdW5jdGlvbnMuY3BwCisgICAgT1VUUFVUICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9DU1NQcm9wZXJ0aWVzLmpzb24gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9
L0NTU1Byb3BlcnR5TmFtZXMuaCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTUHJv
cGVydHlOYW1lcy5jcHAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5
TmFtZXMuZ3BlcmYgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L1N0eWxlQnVpbGRlckdl
bmVyYXRlZC5jcHAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L1N0eWxlUHJvcGVydHlT
aG9ydGhhbmRGdW5jdGlvbnMuaCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19E
SVJ9L0NTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5pZGwKICAgICBNQUlOX0RFUEVO
REVOQ1kgJHtXRUJDT1JFX0RJUn0vY3NzL21ha2Vwcm9wLnBsCiAgICAgREVQRU5EUyAke1dlYkNv
cmVfQ1NTX1BST1BFUlRZX05BTUVTfQogICAgIFdPUktJTkdfRElSRUNUT1JZICR7V2ViQ29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfQpAQCAtMTk0MCw2ICsxOTQwLDcgQEAgYWRkX2N1c3RvbV9jb21t
YW5kKAogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmNwcCkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmNw
cCkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHApCitsaXN0KEFQUEVORCBX
ZWJDb3JlX0lETF9GSUxFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTU3R5bGVE
ZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmlkbCkKIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVE
X0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9jc3MvQ1NTUGFyc2VyLmNwcCBDU1NWYWx1ZUtl
eXdvcmRzLmgpCiAKICMgR2VuZXJhdGUgQ1NTIHZhbHVlIGtleXdvcmRzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24g
MjczNjI3KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw3IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWIKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NQcm9wZXJ0eU5hbWVzLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTUHJvcGVydHlOYW1l
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NTdHls
ZURlY2xhcmF0aW9uK1Byb3BlcnR5TmFtZXMuaWRsCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1ZUtleXdvcmRzLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db2xvckRhdGEuY3BwCkBAIC0z
MDQsNiArMzA1LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYgog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDU1NSdWxlLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ1NTUnVsZUxp
c3QuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NT
U1J1bGVMaXN0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDU1NTdHlsZURlY2xhcmF0aW9uK1Byb3Bl
cnR5TmFtZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNDU1NTdHlsZURlY2xhcmF0aW9uLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ1NTU3R5bGVSdWxlLmNwcApJbmRleDogU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjkxLDYgKzEyOTEs
NyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkveG1sL1hQYXRoUmVzdWx0
LmlkbCBcCiAgICAgJChXZWJDb3JlKS94bWwvWFNMVFByb2Nlc3Nvci5pZGwgXAogICAgIEludGVy
bmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsIFwKKyAgICBDU1NTdHlsZURlY2xhcmF0aW9uK1Byb3Bl
cnR5TmFtZXMuaWRsIFwKICMKIAogIyAtLS0tLS0tLQpAQCAtMTM5MCw2ICsxMzkxLDcgQEAgYWxs
IDogXAogICAgIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAgXAogICAgIFN0eWxlUHJvcGVydHlT
aG9ydGhhbmRGdW5jdGlvbnMuY3BwIFwKICAgICBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rp
b25zLmggXAorICAgIENTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5pZGwgXAogICAg
IFVzZXJBZ2VudFN0eWxlU2hlZXRzLmggXAogICAgIFdlYktpdEZvbnRGYW1pbHlOYW1lcy5jcHAg
XAogICAgIFdlYktpdEZvbnRGYW1pbHlOYW1lcy5oIFwKQEAgLTE0MTcsNiArMTQxOSw3IEBAIENT
U19QUk9QRVJUWV9OQU1FX0ZJTEVTID0gXAogICAgIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAg
XAogICAgIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwIFwKICAgICBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggXAorICAgIENTU1N0eWxlRGVjbGFyYXRpb24rUHJv
cGVydHlOYW1lcy5pZGwgXAogIwogQ1NTX1BST1BFUlRZX05BTUVfRklMRVNfUEFUVEVSTlMgPSAk
KHN1YnN0IC4sJSwkKENTU19QUk9QRVJUWV9OQU1FX0ZJTEVTKSkKIApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlz
aW9uIDI3MzYyNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zOTk3LDYgKzM5OTcsOSBAQCBzdWIgR2V0U2tp
cFZUYWJsZVZhbGlkYXRpb25Gb3JJbnRlcmZhY2UKIHN1YiBUb01ldGhvZE5hbWUKIHsKICAgICBt
eSAkcGFyYW0gPSBzaGlmdDsKKworICAgIHJldHVybiAkcGFyYW0gaWYgJHBhcmFtID1+IC9eQ1NT
T00vOworCiAgICAgbXkgJHJldCA9IGxjZmlyc3QoJHBhcmFtKTsKICAgICAkcmV0ID1+IHMvY1NT
L2Nzcy8gaWYgJHJldCA9fiAvXmNTUy87CiAgICAgJHJldCA9fiBzL2RPTS9kb20vIGlmICRyZXQg
PX4gL15kT00vOwpAQCAtNTMzMCw2ICs1MzMzLDEzIEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdl
dHRlckJvZHlEZWZpbml0aW8KICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyIgLiAk
Y29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OiR7
Y29uc3RydWN0b3JHZXR0ZXJ9KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlz
T2JqZWN0Lmdsb2JhbE9iamVjdCgpKTtcbiIpOwogICAgICAgICB9CisgICAgfSBlbHNpZiAoJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q1NTUHJvcGVydHl9KSB7CisgICAgICAgICRp
bXBsSW5jbHVkZXN7IkNTU1Byb3BlcnR5TmFtZXMuaCJ9ID0gMTsKKyAgICAgICAgbXkgJHByb3Bl
cnR5SUQgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDU1NQcm9wZXJ0eX07CisK
KyAgICAgICAgbXkgJHRvSlNFeHByZXNzaW9uID0gTmF0aXZlVG9KU1ZhbHVlVXNpbmdSZWZlcmVu
Y2VzKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICJpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eSR7cHJvcGVydHlJRH0pIiwgIip0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgp
Iik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoJHt0b0pTRXhwcmVzc2lvbn0pKTtcbiIpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDYWNoZWRBdHRyaWJ1dGV9KSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSB0aGlzT2JqZWN0Lm1fIiAuICRhdHRyaWJ1dGUt
Pm5hbWUgLiAiLmdldCgpKVxuIik7CkBAIC01NDc0LDYgKzU0ODQsMjEgQEAgc3ViIEdlbmVyYXRl
QXR0cmlidXRlU2V0dGVyQm9keURlZmluaXRpbwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoJnRoaXNPYmplY3QsIHZhbHVlKTtcbiIpOwogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUodmFsdWUp
O1xuXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiB0cnVlO1xu
Iik7CisgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q1NTUHJv
cGVydHl9KSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkNTU1Byb3BlcnR5TmFtZXMuaCJ9ID0g
MTsKKworICAgICAgICBteSAkcHJvcGVydHlJRCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0NTU1Byb3BlcnR5fTsKKworICAgICAgICBteSAkZXhjZXB0aW9uVGhyb3dlciA9IEdl
dEF0dHJpYnV0ZUV4Y2VwdGlvblRocm93ZXIoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAg
ICAgIG15ICR0b05hdGl2ZUV4cHJlc3Npb24gPSBKU1ZhbHVlVG9OYXRpdmUoJGludGVyZmFjZSwg
JGF0dHJpYnV0ZSwgInZhbHVlIiwgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29u
ZGl0aW9uYWx9LCAiJmxleGljYWxHbG9iYWxPYmplY3QiLCAibGV4aWNhbEdsb2JhbE9iamVjdCIs
ICJ0aGlzT2JqZWN0IiwgIip0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpIiwgJGV4Y2VwdGlvblRo
cm93ZXIpOworCisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSAke3RvTmF0aXZlRXhwcmVzc2lvbn07XG4iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHtcbiIp
OworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eSR7cHJvcGVydHlJRH0sIFdURk1vdmUobmF0
aXZlVmFsdWUpKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfSk7XG4i
KTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiB0cnVlO1xuIik7CiAg
ICAgfSBlbHNpZiAoJGlzQ29uc3RydWN0b3IpIHsKICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlw
ZSA9ICRhdHRyaWJ1dGUtPnR5cGUtPm5hbWU7CiAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4g
cy9Db25zdHJ1Y3RvciQvLzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
SURMQXR0cmlidXRlcy5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkod29ya2luZyBjb3B5
KQpAQCAtMzgsNiArMzgsMTAgQEAKICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2N1c3RvbS1lbGVtZW50cy5odG1sI2NlcmVhY3Rp
b25zIgogICAgICAgICAgICAgfQogICAgICAgICB9LAorICAgICAgICAiQ1NTUHJvcGVydHkiOiB7
CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwKKyAgICAgICAg
ICAgICJ2YWx1ZXMiOiBbIioiXQorICAgICAgICB9LAogICAgICAgICAiQ2FjaGVkQXR0cmlidXRl
IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0KICAgICAg
ICAgfSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5n
VGVzdEdsb2JhbENvbnN0cnVjdG9ycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAko
cmV2aXNpb24gMjczNjI3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDcgQEAKIHBhcnRpYWwgaW50ZXJmYWNlIFRlc3RHbG9iYWxPYmplY3QgewogICAgIGF0dHJp
YnV0ZSBUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvciBUZXN0Q0VSZWFjdGlvbnM7CiAgICAgYXR0
cmlidXRlIFRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IgVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXI7CisgICAgYXR0cmlidXRlIFRlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9y
IFRlc3RDU1NQcm9wZXJ0eTsKICAgICBhdHRyaWJ1dGUgVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3Rv
ciBUZXN0Q2FsbFRyYWNlcjsKICAgICBbQ29uZGl0aW9uYWw9VEVTVF9DT05ESVRJT05BTF0gYXR0
cmlidXRlIFRlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yIFRlc3RDYWxsYmFja0ludGVy
ZmFjZTsKICAgICBhdHRyaWJ1dGUgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29u
c3RydWN0b3IgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5k
ZXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1
cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAJKHJldmlzaW9uIDI3MzYyNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw5IEBAIFdlYkRPTVRlc3RDRVJlYWN0aW9ucy5o
OiAKIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaDogCiBET01UZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllci5oOiAKIFdlYkRPTVRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmg6IAorSlNU
ZXN0Q1NTUHJvcGVydHkuaDogCitET01UZXN0Q1NTUHJvcGVydHkuaDogCitXZWJET01UZXN0Q1NT
UHJvcGVydHkuaDogCiBKU1Rlc3RDYWxsVHJhY2VyLmg6IAogRE9NVGVzdENhbGxUcmFjZXIuaDog
CiBXZWJET01UZXN0Q2FsbFRyYWNlci5oOiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJvcGVydHkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJvcGVydHkuaWRsCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJv
cGVydHkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCit0
eXBlZGVmIFVTVlN0cmluZyBDU1NPTVN0cmluZzsKKworWworICAgIEV4cG9zZWQ9VGVzdEdsb2Jh
bE9iamVjdAorXSBpbnRlcmZhY2UgVGVzdENTU1Byb3BlcnR5IHsKKyAgICBbQ0VSZWFjdGlvbnMs
IENTU1Byb3BlcnR5PVByb3BlcnR5TmFtZV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVydHk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJvcGVy
dHkuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
OTggQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
YmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTVGVzdENTU1Byb3BlcnR5LmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uUXVldWUuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKKyNpbmNsdWRl
ICJKU0RPTUF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUg
IkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252
ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNs
dWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CisvLyBBdHRyaWJ1dGVzCisKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVz
dENTU1Byb3BlcnR5Q29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHkpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHkpOworCitjbGFzcyBKU1Rlc3RD
U1NQcm9wZXJ0eVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qg
eworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAg
c3RhdGljIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgeworICAgICAgICBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZT4odm0u
aGVhcCkpIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4g
cHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSwgQmFzZSk7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5
cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQor
ICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CitT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDU1NQcm9wZXJ0eVByb3Rv
dHlwZSwgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU6OkJhc2UpOworCit1c2luZyBKU1Rlc3RD
U1NQcm9wZXJ0eURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGU8SlNUZXN0Q1NTUHJvcGVydHk+OworCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q1NTUHJv
cGVydHlET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJB
TSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQor
Cit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q1NTUHJvcGVydHlET01Db25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
eworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RD
U1NQcm9wZXJ0eTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0Q1NTUHJvcGVy
dHkiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RDU1NQcm9wZXJ0eURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0Q1NTUHJvcGVydHkiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3RydWN0b3IpIH07CisKKy8qIEhh
c2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25z
dHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAg
ICB7ICJwcm9wZXJ0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHkpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDU1NQcm9wZXJ0
eV9wcm9wZXJ0eSkgfSB9LAorfTsKKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENTU1Byb3BlcnR5
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0Q1NTUHJvcGVydHkiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENTU1Byb3BlcnR5UHJv
dG90eXBlKSB9OworCit2b2lkIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5
U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0Q1NTUHJvcGVydHk6OmluZm8oKSwgSlNUZXN0Q1NT
UHJvcGVydHlQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0Q1NT
UHJvcGVydHk6OnNfaW5mbyA9IHsgIlRlc3RDU1NQcm9wZXJ0eSIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q1NTUHJvcGVydHkpIH07
CisKK0pTVGVzdENTU1Byb3BlcnR5OjpKU1Rlc3RDU1NQcm9wZXJ0eShTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDU1NQcm9wZXJ0
eT4mJiBpbXBsKQorICAgIDogSlNET01XcmFwcGVyPFRlc3RDU1NQcm9wZXJ0eT4oc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0Q1NTUHJv
cGVydHk6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19h
c3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3RDU1NQcm9wZXJ0eT46
OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZl
biB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3Qu
Iik7CisKK30KKworSlNPYmplY3QqIEpTVGVzdENTU1Byb3BlcnR5OjpjcmVhdGVQcm90b3R5cGUo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBK
U1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rl
c3RDU1NQcm9wZXJ0eVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKK30KKworSlNPYmplY3QqIEpTVGVz
dENTU1Byb3BlcnR5Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0Q1NTUHJvcGVydHk+
KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTVGVzdENTU1Byb3BlcnR5OjpnZXRD
b25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7Cit9CisKK3ZvaWQgSlNUZXN0Q1NTUHJvcGVydHk6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNl
bGwpCit7CisgICAgSlNUZXN0Q1NTUHJvcGVydHkqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U1Rlc3RDU1NQcm9wZXJ0eSo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVzdENTU1Byb3Bl
cnR5Ojp+SlNUZXN0Q1NTUHJvcGVydHkoKTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
Q1NTUHJvcGVydHkqIElETEF0dHJpYnV0ZTxKU1Rlc3RDU1NQcm9wZXJ0eT46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkK
K3sKKyAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDU1NQcm9wZXJ0eSo+KEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cit9
CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q1NTUHJv
cGVydHlQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RDU1NQcm9wZXJ0eTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOworfQorCitzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENTU1Byb3BlcnR5JiB0aGlzT2JqZWN0
KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQcm9wZXJ0eU5hbWUpKSkpOworfQorCitKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHksIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q1NTUHJvcGVydHk+Ojpn
ZXQ8anNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwcm9wZXJ0eSIp
OworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENTU1Byb3Bl
cnR5JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CisgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVByb3BlcnR5TmFtZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwor
ICAgIH0pOworICAgIHJldHVybiB0cnVlOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q1NTUHJvcGVydHk+
OjpzZXQ8c2V0SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInByb3BlcnR5Iik7Cit9CisKK0pTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdENTU1Byb3BlcnR5OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3Bh
Y2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q1NT
UHJvcGVydHkuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENTU1By
b3BlcnR5PiB8fCAhSlNUZXN0Q1NTUHJvcGVydHk6Om5lZWRzRGVzdHJ1Y3Rpb24pOworICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0Q1NTUHJvcGVydHk+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDU1NQ
cm9wZXJ0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q1NTUHJv
cGVydHkpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q1NTUHJv
cGVydHkgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RDU1NQcm9wZXJ0eSk7CisgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDU1NQcm9wZXJ0eS5nZXQoKTsKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICB2b2lkICgqbXlWaXNpdE91dHB1dENv
bnN0cmFpbnQpKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpID0gSlNUZXN0Q1NTUHJv
cGVydHk6OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7CisgICAgdm9pZCAoKmpzQ2VsbFZpc2l0T3V0
cHV0Q29uc3RyYWludCkoSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJikgPSBKU0M6OkpT
Q2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKKyAgICBpZiAobXlWaXNpdE91dHB1dENvbnN0
cmFpbnQgIT0ganNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KQorICAgICAgICBjbGllbnREYXRh
Lm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdT
X0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwordm9pZCBK
U1Rlc3RDU1NQcm9wZXJ0eTo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXIm
IGFuYWx5emVyKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q1NTUHJv
cGVydHkqPihjZWxsKTsKKyAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxs
LCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQorICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwg
InVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJp
bmcoKSk7CisgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCitib29s
IEpTVGVzdENTU1Byb3BlcnR5T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgQWJzdHJhY3RTbG90VmlzaXRvciYg
dmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKK3sKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxl
KTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdENTU1Byb3BlcnR5T3duZXI6OmZp
bmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQor
eworICAgIGF1dG8qIGpzVGVzdENTU1Byb3BlcnR5ID0gc3RhdGljX2Nhc3Q8SlNUZXN0Q1NTUHJv
cGVydHkqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYgd29ybGQgPSAqc3Rh
dGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIo
d29ybGQsICZqc1Rlc3RDU1NQcm9wZXJ0eS0+d3JhcHBlZCgpLCBqc1Rlc3RDU1NQcm9wZXJ0eSk7
Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lOKQor
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQg
KCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0Q1NTUHJvcGVydHlAV2ViQ29yZUBANkJAIilb
XSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTE1
VGVzdENTU1Byb3BlcnR5RVtdOyB9CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFsdWUgdG9K
U05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4mJiBpbXBsKQoreworCisjaWYgRU5BQkxF
KEJJTkRJTkdfSU5URUdSSVRZKQorICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIg
PSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2
b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0Q1NTUHJv
cGVydHlAV2ViQ29yZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9p
bnRlciA9ICZfWlRWTjdXZWJDb3JlMTVUZXN0Q1NTUHJvcGVydHlFWzJdOworI2VuZGlmCisKKyAg
ICAvLyBJZiB0aGlzIGZhaWxzIFRlc3RDU1NQcm9wZXJ0eSBkb2VzIG5vdCBoYXZlIGEgdnRhYmxl
LCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJs
ZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3RDU1NQcm9wZXJ0eT46OnZhbHVlLCAiVGVzdENTU1By
b3BlcnR5IGlzIG5vdCBwb2x5bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFz
c2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8g
VGVzdENTU1Byb3BlcnR5IGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0Q1NTUHJvcGVydHkgaGFzIHN1
YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSBy
ZXF1aXJlIFRlc3RDU1NQcm9wZXJ0eSB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmlu
ZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRv
IHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxW
VGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1
cm4gY3JlYXRlV3JhcHBlcjxUZXN0Q1NTUHJvcGVydHk+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDU1NQ
cm9wZXJ0eSYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QsIGltcGwpOworfQorCitUZXN0Q1NTUHJvcGVydHkqIEpTVGVzdENTU1Byb3Bl
cnR5Ojp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPih2bSwg
dmFsdWUpKQorICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1By
b3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBm
aWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1P
RElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2lu
Y2x1ZGUgIlRlc3RDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTVGVzdENTU1Byb3BlcnR5IDogcHVi
bGljIEpTRE9NV3JhcHBlcjxUZXN0Q1NTUHJvcGVydHk+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBC
YXNlID0gSlNET01XcmFwcGVyPFRlc3RDU1NQcm9wZXJ0eT47CisgICAgc3RhdGljIEpTVGVzdENT
U1Byb3BlcnR5KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4mJiBpbXBsKQorICAgIHsK
KyAgICAgICAgSlNUZXN0Q1NTUHJvcGVydHkqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0Q1NTUHJvcGVydHk+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNU
ZXN0Q1NTUHJvcGVydHkoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsK
KyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAg
ICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQ
cm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBz
dGF0aWMgVGVzdENTU1Byb3BlcnR5KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7
CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICB9CisKKyAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nl
c3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nl
c3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CisgICAgc3RhdGljIHZvaWQgYW5h
bHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKK3Byb3RlY3RlZDoKKyAgICBK
U1Rlc3RDU1NQcm9wZXJ0eShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVm
PFRlc3RDU1NQcm9wZXJ0eT4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0m
KTsKK307CisKK2NsYXNzIEpTVGVzdENTU1Byb3BlcnR5T3duZXIgZmluYWwgOiBwdWJsaWMgSlND
OjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpB
YnN0cmFjdFNsb3RWaXNpdG9yJiwgY29uc3QgY2hhcioqKSBmaW5hbDsKKyAgICB2b2lkIGZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpIGZpbmFsOworfTsK
KworaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldv
cmxkJiwgVGVzdENTU1Byb3BlcnR5KikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNU
ZXN0Q1NTUHJvcGVydHlPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30K
KworaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdENTU1Byb3BlcnR5KiB3cmFwcGFibGVPYmpl
Y3QpCit7CisgICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKK30KKworSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdENTU1Byb3Bl
cnR5Jik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdENT
U1Byb3BlcnR5KiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0
b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCos
IFJlZjxUZXN0Q1NTUHJvcGVydHk+JiYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlD
cmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0Q1NTUHJvcGVydHk+JiYgaW1wbCkg
eyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0
ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdENTU1Byb3Bl
cnR5PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0Q1NTUHJvcGVydHk7CisgICAg
dXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3RDU1NQcm9wZXJ0eSo7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMjczNjI3KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyNzgsNyArNDI3OCw3IEBAIFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmdldFAKICAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eUlEKTsKIH0KIAot
RXhjZXB0aW9uT3I8Ym9vbD4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0
eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGJvb2wpCitFeGNlcHRpb25P
cjx2b2lkPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwo
Q1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgYm9vbCkKIHsKICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDI3
MzYyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBSZWZQdHI8
Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSBmaW5h
bDsKICAgICBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpIGZp
bmFsOwotICAgIEV4Y2VwdGlvbk9yPGJvb2w+IHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVy
dHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpIGZpbmFsOworICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpIGZpbmFsOwogICAgIFJlZjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllcygpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVmUHRy
PENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlv
dXQgPSBVcGRhdGVMYXlvdXQpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMjczNjI3KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsMjMgKzIx
NiwzOSBAQCBDU1NQcm9wZXJ0eUlEIENTU1N0eWxlRGVjbGFyYXRpb246OmdldENTCiAgICAgcmV0
dXJuIHByb3BlcnR5SURGcm9tSmF2YVNjcmlwdENTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUs
IG51bGxwdHIpOwogfQogCitFeGNlcHRpb25Pcjx2b2lkPiBDU1NTdHlsZURlY2xhcmF0aW9uOjpz
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBTdHJpbmcg
dmFsdWUpCit7CisgICAgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZTsKKyAgICBpZiAoRGVwcmVjYXRl
ZEdsb2JhbFNldHRpbmdzOjpzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRl
cnMoKSkgeworICAgICAgICBhdXRvIGltcG9ydGFudEluZGV4ID0gdmFsdWUuZmluZElnbm9yaW5n
QVNDSUlDYXNlKCIhaW1wb3J0YW50Iik7CisgICAgICAgIGlmIChpbXBvcnRhbnRJbmRleCAmJiBp
bXBvcnRhbnRJbmRleCAhPSBub3RGb3VuZCkgeworICAgICAgICAgICAgaW1wb3J0YW50ID0gdHJ1
ZTsKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUubGVmdChpbXBvcnRhbnRJbmRleCAtIDEpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVy
dHlJRCwgV1RGTW92ZSh2YWx1ZSksIGltcG9ydGFudCk7Cit9CisKIGNvbnN0IFNldHRpbmdzKiBD
U1NTdHlsZURlY2xhcmF0aW9uOjpzZXR0aW5ncygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBhcmVu
dEVsZW1lbnQoKSA/ICZwYXJlbnRFbGVtZW50KCktPmRvY3VtZW50KCkuc2V0dGluZ3MoKSA6IG51
bGxwdHI7CiB9CiAKLU9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBkb3VibGU+PiBDU1NTdHlsZURl
Y2xhcmF0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYgcHJvcGVydHlOYW1lKQorI2lm
IEVOQUJMRShMRUdBQ1lfTkFNRURfSVRFTV9JTVBMRU1FTlRBVElPTl9GT1JfQ1NTX1NUWUxFX0RF
Q0xBUkFUSU9OKQorCitTdHJpbmcgQ1NTU3R5bGVEZWNsYXJhdGlvbjo6bmFtZWRJdGVtKGNvbnN0
IEF0b21TdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBnb2lu
ZyB0byByZXR1cm4gaW5jb3JyZWN0IHJlc3VsdHMgZm9yIGNzcyBwcm9wZXJ0aWVzIGRpc2FibGVk
IGJ5IFNldHRpbmdzIGlmIHNldHRpbmdzKCkgcmV0dXJucyBudWxscHRyLgogICAgIGF1dG8gcHJv
cGVydHlJRCA9IHByb3BlcnR5SURGcm9tSmF2YVNjcmlwdENTU1Byb3BlcnR5TmFtZShwcm9wZXJ0
eU5hbWUsIHNldHRpbmdzKCkpOwogICAgIGlmICghcHJvcGVydHlJRCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmIChhdXRvIHZhbHVl
ID0gZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHByb3BlcnR5SUQpKQotICAgICAgICByZXR1
cm4gVmFyaWFudDxTdHJpbmcsIGRvdWJsZT4geyB2YWx1ZS0+Y3NzVGV4dCgpIH07CisgICAgICAg
IHJldHVybiB2YWx1ZS0+Y3NzVGV4dCgpOwogCi0gICAgLy8gSWYgdGhlIHByb3BlcnR5IGlzIGEg
c2hvcnRoYW5kIHByb3BlcnR5IChzdWNoIGFzICJwYWRkaW5nIiksIGl0IGNhbiBvbmx5IGJlIGFj
Y2Vzc2VkIHVzaW5nIGdldFByb3BlcnR5VmFsdWUuCi0gICAgcmV0dXJuIFZhcmlhbnQ8U3RyaW5n
LCBkb3VibGU+IHsgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKHByb3BlcnR5SUQpIH07CisgICAg
Ly8gSWYgdGhlIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IChzdWNoIGFzICJwYWRk
aW5nIiksIGl0IGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHVzaW5nIGdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbC4KKyAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKHByb3BlcnR5SUQpOwog
fQogCiBFeGNlcHRpb25Pcjx2b2lkPiBDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXROYW1lZEl0ZW0o
Y29uc3QgQXRvbVN0cmluZyYgcHJvcGVydHlOYW1lLCBTdHJpbmcgdmFsdWUsIGJvb2wmIHByb3Bl
cnR5U3VwcG9ydGVkKQpAQCAtMjQ1LDIxICsyNjEsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDU1NT
dHlsZURlY2xhcmF0aW9uOjpzCiAgICAgfQogCiAgICAgcHJvcGVydHlTdXBwb3J0ZWQgPSB0cnVl
OwotCi0gICAgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZTsKLSAgICBpZiAoRGVwcmVjYXRlZEdsb2Jh
bFNldHRpbmdzOjpzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKSkg
ewotICAgICAgICBhdXRvIGltcG9ydGFudEluZGV4ID0gdmFsdWUuZmluZElnbm9yaW5nQVNDSUlD
YXNlKCIhaW1wb3J0YW50Iik7Ci0gICAgICAgIGlmIChpbXBvcnRhbnRJbmRleCAmJiBpbXBvcnRh
bnRJbmRleCAhPSBub3RGb3VuZCkgewotICAgICAgICAgICAgaW1wb3J0YW50ID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHZhbHVlID0gdmFsdWUubGVmdChpbXBvcnRhbnRJbmRleCAtIDEpOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgYXV0byBzZXRQcm9wZXJ0eUludGVybmFsUmVzdWx0ID0gc2V0UHJv
cGVydHlJbnRlcm5hbChwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAgICBpZiAoc2V0
UHJvcGVydHlJbnRlcm5hbFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIHNl
dFByb3BlcnR5SW50ZXJuYWxSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwotCi0gICAgcmV0dXJu
IHsgfTsKKyAgICByZXR1cm4gc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKHByb3BlcnR5SUQsIFdU
Rk1vdmUodmFsdWUpKTsKIH0KIAogVmVjdG9yPEF0b21TdHJpbmc+IENTU1N0eWxlRGVjbGFyYXRp
b246OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdApAQCAtMjg3LDYgKzI4OSw3IEBAIFZl
Y3RvcjxBdG9tU3RyaW5nPiBDU1NTdHlsZURlY2xhcmF0aW9uOjoKIAogICAgIHJldHVybiByZXN1
bHQ7CiB9CisjZW5kaWYKIAogU3RyaW5nIENTU1N0eWxlRGVjbGFyYXRpb246OmNzc0Zsb2F0KCkK
IHsKQEAgLTI5NSwxMCArMjk4LDcgQEAgU3RyaW5nIENTU1N0eWxlRGVjbGFyYXRpb246OmNzc0Zs
b2F0KCkKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q3NzRmxv
YXQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHNldFByb3BlcnR5
SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgdmFsdWUsIGZhbHNlIC8qIGltcG9ydGFudCAqLyk7
Ci0gICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gc2V0UHJvcGVy
dHlJbnRlcm5hbChDU1NQcm9wZXJ0eUZsb2F0LCB2YWx1ZSwgZmFsc2UgLyogaW1wb3J0YW50ICov
KTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5o
CShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw4IEBAIHB1YmxpYzoKICAgICAvLyBU
aGUgQ1NTVmFsdWUgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGJlIGV4cG9z
ZWQgdG8gdGhlIHdlYiBhcyBpdCBtYXkgYmUgdXNlZCBieSBtdWx0aXBsZSBkb2N1bWVudHMgYXQg
dGhlIHNhbWUgdGltZS4KICAgICB2aXJ0dWFsIFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlD
U1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBn
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgPSAwOwotICAgIHZpcnR1YWwg
RXhjZXB0aW9uT3I8Ym9vbD4gc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCkgPSAwOworICAgIHZpcnR1YWwgRXhjZXB0
aW9uT3I8dm9pZD4gc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBib29sIGltcG9ydGFudCkgPSAwOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBTdHJpbmcpOwogCiAgICAgdmly
dHVhbCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25zdCA9
IDA7CiAKQEAgLTc0LDEyICs3NSwxNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGNvbnN0IFNl
dHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0OwogCi0gICAgLy8gQmluZGluZ3Mgc3VwcG9ydC4KLSAg
ICBPcHRpb25hbDxWYXJpYW50PFN0cmluZywgZG91YmxlPj4gbmFtZWRJdGVtKGNvbnN0IEF0b21T
dHJpbmcmKTsKKyNpZiBFTkFCTEUoTEVHQUNZX05BTUVEX0lURU1fSU1QTEVNRU5UQVRJT05fRk9S
X0NTU19TVFlMRV9ERUNMQVJBVElPTikKKyAgICAvLyBOYW1lZC1pdGVtIGJhc2VkIGltcGxlbWVu
dGF0aW9uIHN1cHBvcnQuCisgICAgU3RyaW5nIG5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJik7
CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0TmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmIG5h
bWUsIFN0cmluZyB2YWx1ZSwgYm9vbCYgcHJvcGVydHlTdXBwb3J0ZWQpOwogICAgIFZlY3RvcjxB
dG9tU3RyaW5nPiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3Q7CisjZW5kaWYKIAorICAg
IC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIHBhc3MgaW4gYSBTZXR0aW5ncyYgdG8gd29yayBjb3Jy
ZWN0bHkuCiAgICAgc3RhdGljIENTU1Byb3BlcnR5SUQgZ2V0Q1NTUHJvcGVydHlJREZyb21KYXZh
U2NyaXB0UHJvcGVydHlOYW1lKGNvbnN0IEF0b21TdHJpbmcmKTsKKwogcHJvdGVjdGVkOgogICAg
IENTU1N0eWxlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAkocmV2aXNpb24gMjczNjI3KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2Ft
dWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjAsMzgg
KzIwLDM4IEBACiAKIFsKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAgICBEZWZh
dWx0RGVmaW5lT3duUHJvcGVydHksCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZSwKICAgICBKU0N1
c3RvbUhlYWRlciwKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKICAgICBTa2lwVlRhYmxlVmFs
aWRhdGlvbiwKLSAgICBFeHBvc2VkPVdpbmRvdworICAgIEV4cG9zZWQ9V2luZG93LAorI2lmIGRl
ZmluZWQoRU5BQkxFX0xFR0FDWV9OQU1FRF9JVEVNX0lNUExFTUVOVEFUSU9OX0ZPUl9DU1NfU1RZ
TEVfREVDTEFSQVRJT04pICYmIEVOQUJMRV9MRUdBQ1lfTkFNRURfSVRFTV9JTVBMRU1FTlRBVElP
Tl9GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OCisgICAgRGVmYXVsdERlZmluZU93blByb3BlcnR5
CisjZW5kaWYKIF0gaW50ZXJmYWNlIENTU1N0eWxlRGVjbGFyYXRpb24gewotICAgIFtDRVJlYWN0
aW9uc10gYXR0cmlidXRlIERPTVN0cmluZyBjc3NUZXh0OwotCi0gICAgRE9NU3RyaW5nIGdldFBy
b3BlcnR5VmFsdWUoRE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7Ci0KLSAgICBbQ0VSZWFjdGlvbnMs
IE1heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgcmVtb3ZlUHJvcGVydHkoRE9NU3RyaW5nIHBy
b3BlcnR5TmFtZSk7Ci0gICAgRE9NU3RyaW5nPyBnZXRQcm9wZXJ0eVByaW9yaXR5KERPTVN0cmlu
ZyBwcm9wZXJ0eU5hbWUpOwotCi0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIHNldFByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIFtMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlLCBvcHRpb25hbCBbTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmddIERPTVN0cmluZyBwcmlvcml0eSA9ICIiKTsKKyAgICAvLyBGSVhNRTogVGhlc2Ug
YXR0cmlidXRlcyBhbmQgZnVuY3Rpb25zIHNob3VsZCB1c2UgQ1NTT01TdHJpbmcgbm90IERPTVN0
cmluZy4KIAorICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIERPTVN0cmluZyBjc3NUZXh0Owog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0ZXIg
RE9NU3RyaW5nIGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgRE9NU3RyaW5nIGdldFBy
b3BlcnR5VmFsdWUoRE9NU3RyaW5nIHByb3BlcnR5KTsKKyAgICAvLyBGSVhNRTogVGhlIHJldHVy
biB2YWx1ZSBvZiAnZ2V0UHJvcGVydHlQcmlvcml0eScgc2hvdWxkIG5vdCBiZSBudWxsYWJsZS4K
KyAgICBET01TdHJpbmc/IGdldFByb3BlcnR5UHJpb3JpdHkoRE9NU3RyaW5nIHByb3BlcnR5KTsK
KyAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0UHJvcGVy
dHkoRE9NU3RyaW5nIHByb3BlcnR5LCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmlu
ZyB2YWx1ZSwgb3B0aW9uYWwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgcHJp
b3JpdHkgPSAiIik7CisgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3Ry
aW5nIHJlbW92ZVByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eSk7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIENTU1J1bGU/IHBhcmVudFJ1bGU7Ci0KICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0
ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBjc3NGbG9hdDsKIAorICAgIC8v
IE5vbi1zdGFuZGFyZC4KICAgICBET01TdHJpbmc/IGdldFByb3BlcnR5U2hvcnRoYW5kKG9wdGlv
bmFsIERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwogICAgIGJvb2xlYW4gaXNQcm9wZXJ0eUltcGxp
Y2l0KG9wdGlvbmFsIERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOworICAgIERlcHJlY2F0ZWRDU1NP
TVZhbHVlPyBnZXRQcm9wZXJ0eUNTU1ZhbHVlKERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwogCisj
aWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZX05BTUVEX0lURU1fSU1QTEVNRU5UQVRJT05fRk9SX0NT
U19TVFlMRV9ERUNMQVJBVElPTikgJiYgRU5BQkxFX0xFR0FDWV9OQU1FRF9JVEVNX0lNUExFTUVO
VEFUSU9OX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04KICAgICAvLyBVc2UgbmFtZWQgZ2V0dGVy
cy9zZXR0ZXJzIGZvciBhbGwgc3VwcG9ydCBDU1MgcHJvcGVydHkgbmFtZXMuIFRoZSBzcGVjIHNh
eXMKICAgICAvLyB0aGVzZSBzaG91bGQgYmUgbm9ybWFsIGF0dHJpYnV0ZXMsIGJ1dCB0aGVyZSBh
cmUgdG9vIG1hbnkgY29tYmluYXRpb25zIHdpdGgKLSAgICAvLyBwcmVmaXhlcyBmb3IgdGhpcyB0
byBiZSBwcmFjdGljYWwuIElmIHdlIHJlbW92ZSBsZWdhY3kgYWxpYXNlcywgd2Ugc2hvdWxkCi0g
ICAgLy8gcmVjb25zaWRlciB0aGlzIGRlY2lzaW9uLgotICAgIGdldHRlciAoRE9NU3RyaW5nIG9y
IGRvdWJsZSkgKERPTVN0cmluZyBuYW1lKTsKKyAgICAvLyBwcmVmaXhlcyBmb3IgdGhpcyB0byBi
ZSBwcmFjdGljYWwgd2l0aCBjdXJyZW50IGNvZGUgZ2VuZXJhdGlvbi4KKyAgICBnZXR0ZXIgRE9N
U3RyaW5nIChET01TdHJpbmcgbmFtZSk7CiAgICAgW0NFUmVhY3Rpb25zLCBDYWxsTmFtZWRTZXR0
ZXJPbmx5Rm9yU3VwcG9ydGVkUHJvcGVydGllc10gc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5n
IG5hbWUsIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlKTsKLQotICAg
IC8vIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsIGFuZCB3ZSB3b3VsZCBsaWtlIHRvIGRyb3Ag
c3VwcG9ydCBmb3IgaXQgc29tZWRheQotICAgIERlcHJlY2F0ZWRDU1NPTVZhbHVlPyBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOworI2VuZGlmCiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbi5jcHAJKHJldmlzaW9uIDI3MzYyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDgsMjIgKzMw
OCwyMiBAQCBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnCiAgICAgaWYg
KCFyZWxhdGVkVmFsdWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcmVsYXRlZFZhbHVlOwog
ICAgIAotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRp
b25Pcjxib29sPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50
ZXJuYWwoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29s
IGltcG9ydGFudCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbjo6c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0
IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50KQogeyAKLSAgICBTdHlsZUF0dHJpYnV0ZU11
dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKKyAgICBTdHlsZUF0dHJpYnV0ZU11dGF0
aW9uU2NvcGUgbXV0YXRpb25TY29wZSB7IHRoaXMgfTsKICAgICBpZiAoIXdpbGxNdXRhdGUoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYm9vbCBjaGFuZ2VkID0gbV9wcm9wZXJ0eVNl
dC0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyQ29u
dGV4dCgpKTsKLQotICAgIGRpZE11dGF0ZShjaGFuZ2VkID8gUHJvcGVydHlDaGFuZ2VkIDogTm9D
aGFuZ2VzKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlmIChjaGFuZ2VkKQorICAgIGlm
IChtX3Byb3BlcnR5U2V0LT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50
LCBjc3NQYXJzZXJDb250ZXh0KCkpKSB7CisgICAgICAgIGRpZE11dGF0ZShQcm9wZXJ0eUNoYW5n
ZWQpOwogICAgICAgICBtdXRhdGlvblNjb3BlLmVucXVldWVNdXRhdGlvblJlY29yZCgpOwotICAg
IHJldHVybiBjaGFuZ2VkOworICAgIH0gZWxzZQorICAgICAgICBkaWRNdXRhdGUoTm9DaGFuZ2Vz
KTsKKyAgICAgICAgCisgICAgcmV0dXJuIHsgfTsKIH0KIAogUmVmUHRyPERlcHJlY2F0ZWRDU1NP
TVZhbHVlPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OndyYXBGb3JEZXByZWNhdGVk
Q1NTT00oQ1NTVmFsdWUqIGludGVybmFsVmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCShyZXZpc2lvbiAyNzM2
MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxD
U1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpIGZpbmFs
OwogICAgIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgZmlu
YWw7Ci0gICAgRXhjZXB0aW9uT3I8Ym9vbD4gc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0
eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCkgZmluYWw7CisgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBT
dHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCkgZmluYWw7CiAgICAgCiAgICAgUmVmPE11dGFi
bGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzKCkgY29uc3QgZmluYWw7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvbWFrZXByb3AucGwJKHJldmlzaW9uIDI3MzYyNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9tYWtlcHJvcC5wbAkod29ya2luZyBjb3B5KQpAQCAtMTM1OCwzICsxMzU4LDE1NSBAQCBp
ZiAobm90ICRncGVyZikgewogICAgICRncGVyZiA9ICRFTlZ7R1BFUkZ9ID8gJEVOVntHUEVSRn0g
OiAiZ3BlcmYiOwogfQogc3lzdGVtKCJcIiRncGVyZlwiIC0ta2V5LXBvc2l0aW9ucz1cIipcIiAt
RCAtbiAtcyAyIENTU1Byb3BlcnR5TmFtZXMuZ3BlcmYgLS1vdXRwdXQtZmlsZT1DU1NQcm9wZXJ0
eU5hbWVzLmNwcCIpID09IDAgfHwgZGllICJjYWxsaW5nIGdwZXJmIGZhaWxlZDogJD8iOworCisj
IEdlbmVyYXRlIENTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5pZGwKKworIyBodHRw
czovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2Nzcy1wcm9wZXJ0eS10by1pZGwtYXR0cmlidXRl
CitzdWIgY3NzUHJvcGVydHlUb0lETEF0dHJpYnV0ZSgkJCQpCit7CisgICAgbXkgJHByb3BlcnR5
ID0gc2hpZnQ7CisgICAgbXkgJGxvd2VyY2FzZUZpcnN0ID0gc2hpZnQ7CisgICAgbXkgJHVwcGVy
Y2FzZUZpcnN0ID0gc2hpZnQ7CisKKyAgICBteSAkb3V0cHV0ID0gIiI7CisgICAgbXkgJHVwcGVy
Y2FzZU5leHQgPSAkdXBwZXJjYXNlRmlyc3Q7CisKKyAgICBpZiAoJGxvd2VyY2FzZUZpcnN0KSB7
CisgICAgICAgICRwcm9wZXJ0eSA9IHN1YnN0cigkcHJvcGVydHksIDEpOworICAgIH0KKworICAg
IGZvcmVhY2ggbXkgJGNoYXJhY3RlciAoc3BsaXQgLy8sICRwcm9wZXJ0eSkgeworICAgICAgICBp
ZiAoJGNoYXJhY3RlciBlcSAiLSIpIHsKKyAgICAgICAgICAgICR1cHBlcmNhc2VOZXh0ID0gMTsK
KyAgICAgICAgfSBlbHNpZiAoJHVwcGVyY2FzZU5leHQpIHsKKyAgICAgICAgICAgICR1cHBlcmNh
c2VOZXh0ID0gMDsKKyAgICAgICAgICAgICRvdXRwdXQgLj0gdWMgJGNoYXJhY3RlcjsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRvdXRwdXQgLj0gJGNoYXJhY3RlcjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiAkb3V0cHV0OworfQorCitteSAlbmFtZXNBbmRBbGlhc2Vz
VG9OYW1lOworZm9yZWFjaCBteSAkbmFtZSAoQG5hbWVzKSB7CisgICAgaWYgKGdyZXAgeyAkXyBl
cSAkbmFtZSB9IEBpbnRlcm5hbFByb3ByZXJ0aWVzKSB7CisgICAgICAgIG5leHQ7CisgICAgfQor
ICAgICRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5hbWV9ID0gJG5hbWU7CisgICAgZm9yIG15ICRh
bGlhcyAoQHskbmFtZVRvQWxpYXNlc3skbmFtZX19KSB7CisgICAgICAgICRuYW1lc0FuZEFsaWFz
ZXNUb05hbWV7JGFsaWFzfSA9ICRuYW1lOworICAgIH0KK30KK215IEBuYW1lc0FuZEFsaWFzZXMg
PSBzb3J0IGtleXMoJW5hbWVzQW5kQWxpYXNlc1RvTmFtZSk7CisKK29wZW4gQ1NTX1NUWUxFX0RF
Q0xBUkFUSU9OX1BST1BFUlRZX05BTUVTX0lETCwgIj4iLCAiQ1NTU3R5bGVEZWNsYXJhdGlvbitQ
cm9wZXJ0eU5hbWVzLmlkbCIgb3IgZGllICJDb3VsZCBub3Qgb3BlbiBDU1NTdHlsZURlY2xhcmF0
aW9uK1Byb3BlcnR5TmFtZXMuaWRsIGZvciB3cml0aW5nXG4iOworcHJpbnQgQ1NTX1NUWUxFX0RF
Q0xBUkFUSU9OX1BST1BFUlRZX05BTUVTX0lETCA8PCAiRU9GIjsKKy8vIFRoaXMgZmlsZSBpcyBh
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tICRpbnB1dEZpbGUgYnkgdGhlIG1ha2Vwcm9wLnBs
IHNjcmlwdC4gRG8gbm90IGVkaXQgaXQuCisKKyNpZiAhZGVmaW5lZChFTkFCTEVfTEVHQUNZX05B
TUVEX0lURU1fSU1QTEVNRU5UQVRJT05fRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTikgfHwgIUVO
QUJMRV9MRUdBQ1lfTkFNRURfSVRFTV9JTVBMRU1FTlRBVElPTl9GT1JfQ1NTX1NUWUxFX0RFQ0xB
UkFUSU9OCisKK3R5cGVkZWYgVVNWU3RyaW5nIENTU09NU3RyaW5nOworCitwYXJ0aWFsIGludGVy
ZmFjZSBDU1NTdHlsZURlY2xhcmF0aW9uIHsKKworRU9GCisKK3ByaW50IENTU19TVFlMRV9ERUNM
QVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwgPDwgIkVPRiI7CisgICAgLy8gRm9yIGVhY2ggQ1NT
IHByb3BlcnR5IHByb3BlcnR5IHRoYXQgaXMgYSBzdXBwb3J0ZWQgQ1NTIHByb3BlcnR5LCB0aGUg
Zm9sbG93aW5nCisgICAgLy8gcGFydGlhbCBpbnRlcmZhY2UgYXBwbGllcyB3aGVyZSBjYW1lbC1j
YXNlZCBhdHRyaWJ1dGUgaXMgb2J0YWluZWQgYnkgcnVubmluZyB0aGUKKyAgICAvLyBDU1MgcHJv
cGVydHkgdG8gSURMIGF0dHJpYnV0ZSBhbGdvcml0aG0gZm9yIHByb3BlcnR5LgorICAgIC8vIEV4
YW1wbGU6IGZvbnQtc2l6ZSAtPiBlbGVtZW50LnN0eWxlLmZvbnRTaXplCisgICAgLy8gRXhhbXBs
ZTogLXdlYmtpdC10cmFuc2Zvcm0gLT4gZWxlbWVudC5zdHlsZS5XZWJraXRUcmFuc2Zvcm0KKyAg
ICAvLyBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENT
U09NU3RyaW5nIF9jYW1lbF9jYXNlZF9hdHRyaWJ1dGU7CitFT0YKKworZm9yZWFjaCBteSAkbmFt
ZU9yQWxpYXMgKEBuYW1lc0FuZEFsaWFzZXMpIHsKKyAgICBteSAkY2FtZWxDYXNlZEF0dHJpYnV0
ZU5hbWUgPSBjc3NQcm9wZXJ0eVRvSURMQXR0cmlidXRlKCRuYW1lT3JBbGlhcywgMCwgMCk7Cisg
ICAgbXkgJG5hbWUgPSAkbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lT3JBbGlhc307CisgICAg
bXkgJHByb3BlcnR5SWQgPSAkbmFtZVRvSWR7JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19
OworCisgICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3By
b3BlcnR5SWR9Iik7CisgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVk
QnlTZXR0aW5nPSR7c2V0dGluZ3NGbGFnc3skbmFtZX19IikgaWYgJHNldHRpbmdzRmxhZ3N7JG5h
bWV9OworICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEF0UnVudGlt
ZT0ke3J1bnRpbWVGbGFnc3skbmFtZX19IikgaWYgJHJ1bnRpbWVGbGFnc3skbmFtZX07CisgICAg
bXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9IGpvaW4oIiwgIiwgQGV4dGVuZGVkQXR0cmlidXRlVmFs
dWVzKTsKKworICAgIHByaW50IENTU19TVFlMRV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19J
REwgIiAgICBbQ0VSZWFjdGlvbnMsICR7ZXh0ZW5kZWRBdHRyaWJ1dGVzfV0gYXR0cmlidXRlIFtM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgJHtjYW1lbENhc2VkQXR0cmlidXRl
TmFtZX07XG4iOworfQorCitwcmludCBDU1NfU1RZTEVfREVDTEFSQVRJT05fUFJPUEVSVFlfTkFN
RVNfSURMIDw8ICJFT0YiOworCisgICAgLy8gRm9yIGVhY2ggQ1NTIHByb3BlcnR5IHByb3BlcnR5
IHRoYXQgaXMgYSBzdXBwb3J0ZWQgQ1NTIHByb3BlcnR5IGFuZCB0aGF0IGJlZ2lucworICAgIC8v
IHdpdGggdGhlIHN0cmluZyAtd2Via2l0LSwgdGhlIGZvbGxvd2luZyBwYXJ0aWFsIGludGVyZmFj
ZSBhcHBsaWVzIHdoZXJlIHdlYmtpdC1jYXNlZAorICAgIC8vIGF0dHJpYnV0ZSBpcyBvYnRhaW5l
ZCBieSBydW5uaW5nIHRoZSBDU1MgcHJvcGVydHkgdG8gSURMIGF0dHJpYnV0ZSBhbGdvcml0aG0g
Zm9yCisgICAgLy8gcHJvcGVydHksIHdpdGggdGhlIGxvd2VyY2FzZSBmaXJzdCBmbGFnIHNldC4K
KyAgICAvLyBFeGFtcGxlOiAtd2Via2l0LXRyYW5zZm9ybSAtPiBlbGVtZW50LnN0eWxlLndlYmtp
dFRyYW5zZm9ybQorICAgIC8vIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgX3dlYmtpdF9jYXNlZF9hdHRyaWJ1dGU7CitFT0YKKwor
Zm9yZWFjaCBteSAkbmFtZU9yQWxpYXMgKGdyZXAgeyAkXyA9fiAvXlwtd2Via2l0XC0vIH0gQG5h
bWVzQW5kQWxpYXNlcykgeworICAgIG15ICR3ZWJraXRDYXNlZEF0dHJpYnV0ZU5hbWUgPSBjc3NQ
cm9wZXJ0eVRvSURMQXR0cmlidXRlKCRuYW1lT3JBbGlhcywgMSwgMCk7CisgICAgbXkgJG5hbWUg
PSAkbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lT3JBbGlhc307CisgICAgbXkgJHByb3BlcnR5
SWQgPSAkbmFtZVRvSWR7JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19OworCisgICAgbXkg
QGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3BlcnR5SWR9Iik7
CisgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQnlTZXR0aW5nPSR7
c2V0dGluZ3NGbGFnc3skbmFtZX19IikgaWYgJHNldHRpbmdzRmxhZ3N7JG5hbWV9OworICAgIHB1
c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEF0UnVudGltZT0ke3J1bnRpbWVG
bGFnc3skbmFtZX19IikgaWYgJHJ1bnRpbWVGbGFnc3skbmFtZX07CisgICAgbXkgJGV4dGVuZGVk
QXR0cmlidXRlcyA9IGpvaW4oIiwgIiwgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzKTsKKworICAg
IHByaW50IENTU19TVFlMRV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwgIiAgICBbQ0VS
ZWFjdGlvbnMsICR7ZXh0ZW5kZWRBdHRyaWJ1dGVzfV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgJHt3ZWJraXRDYXNlZEF0dHJpYnV0ZU5hbWV9O1xuIjsK
K30KKworcHJpbnQgQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OX1BST1BFUlRZX05BTUVTX0lETCA8PCAi
RU9GIjsKKworICAgIC8vIEZvciBlYWNoIENTUyBwcm9wZXJ0eSBwcm9wZXJ0eSB0aGF0IGlzIGEg
c3VwcG9ydGVkIENTUyBwcm9wZXJ0eSwgZXhjZXB0IGZvcgorICAgIC8vIHByb3BlcnRpZXMgdGhh
dCBoYXZlIG5vICItIiAoVSswMDJEKSBpbiB0aGUgcHJvcGVydHkgbmFtZSwgdGhlIGZvbGxvd2lu
ZyBwYXJ0aWFsCisgICAgLy8gaW50ZXJmYWNlIGFwcGxpZXMgd2hlcmUgZGFzaGVkIGF0dHJpYnV0
ZSBpcyBwcm9wZXJ0eS4KKyAgICAvLyBFeGFtcGxlOiBmb250LXNpemUgLT4gZWxlbWVudC5zdHls
ZVsnZm9udC1zaXplJ10KKyAgICAvLyBFeGFtcGxlOiAtd2Via2l0LXRyYW5zZm9ybSAtPiBlbGVt
ZW50LnN0eWxlLlsnLXdlYmtpdC10cmFuc2Zvcm0nXQorICAgIC8vIFtDRVJlYWN0aW9uc10gYXR0
cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgX2Rhc2hlZF9hdHRy
aWJ1dGU7CitFT0YKK2ZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChncmVwIHsgJF8gPX4gL1wtLyB9
IEBuYW1lc0FuZEFsaWFzZXMpIHsKKyAgICBteSAkZGFzaGVkQXR0cmlidXRlTmFtZSA9ICRuYW1l
T3JBbGlhczsKKyAgICBteSAkbmFtZSA9ICRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5hbWVPckFs
aWFzfTsKKyAgICBteSAkcHJvcGVydHlJZCA9ICRuYW1lVG9JZHskbmFtZXNBbmRBbGlhc2VzVG9O
YW1leyRuYW1lfX07CisKKyAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMgPSAoIkNTU1By
b3BlcnR5PSR7cHJvcGVydHlJZH0iKTsKKyAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVl
cywgIkVuYWJsZWRCeVNldHRpbmc9JHtzZXR0aW5nc0ZsYWdzeyRuYW1lfX0iKSBpZiAkc2V0dGlu
Z3NGbGFnc3skbmFtZX07CisgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFi
bGVkQXRSdW50aW1lPSR7cnVudGltZUZsYWdzeyRuYW1lfX0iKSBpZiAkcnVudGltZUZsYWdzeyRu
YW1lfTsKKyAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gam9pbigiLCAiLCBAZXh0ZW5kZWRB
dHRyaWJ1dGVWYWx1ZXMpOworCisgICAgcHJpbnQgQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OX1BST1BF
UlRZX05BTUVTX0lETCAiICAgIFtDRVJlYWN0aW9ucywgJHtleHRlbmRlZEF0dHJpYnV0ZXN9XSBh
dHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBDU1NPTVN0cmluZyAke2Rhc2hlZEF0
dHJpYnV0ZU5hbWV9O1xuIjsKK30KKworIyBFdmVyeXRoaW5nIGJlbG93IGhlcmUgaXMgbm9uLXN0
YW5kYXJkLgorCitwcmludCBDU1NfU1RZTEVfREVDTEFSQVRJT05fUFJPUEVSVFlfTkFNRVNfSURM
IDw8ICJFT0YiOworCisgICAgLy8gTm9uLXN0YW5kYXJkLiBTcGVjaWFsIGNhc2UgcHJvcGVydGll
cyBzdGFydGluZyB3aXRoIC1lcHViLSBsaWtlIGlzIGRvbmUgZm9yCisgICAgLy8gLXdlYmtpdC0s
IHdoZXJlIGF0dHJpYnV0ZSBpcyBvYnRhaW5lZCBieSBydW5uaW5nIHRoZSBDU1MgcHJvcGVydHkg
dG8gSURMIGF0dHJpYnV0ZQorICAgIC8vIGFsZ29yaXRobSBmb3IgcHJvcGVydHksIHdpdGggdGhl
IGxvd2VyY2FzZSBmaXJzdCBmbGFnIHNldC4KKyAgICAvLyBFeGFtcGxlOiAtZXB1Yi1jYXB0aW9u
LXNpZGUgLT4gZWxlbWVudC5zdHlsZS5lcHViQ2FwdGlvblNpZGUKK0VPRgorZm9yZWFjaCBteSAk
bmFtZU9yQWxpYXMgKGdyZXAgeyAkXyA9fiAvXlwtZXB1YlwtLyB9IEBuYW1lc0FuZEFsaWFzZXMp
IHsKKyAgICBteSAkZXB1YkNhc2VkQXR0cmlidXRlTmFtZSA9IGNzc1Byb3BlcnR5VG9JRExBdHRy
aWJ1dGUoJG5hbWVPckFsaWFzLCAxLCAwKTsKKyAgICBteSAkbmFtZSA9ICRuYW1lc0FuZEFsaWFz
ZXNUb05hbWV7JG5hbWVPckFsaWFzfTsKKyAgICBteSAkcHJvcGVydHlJZCA9ICRuYW1lVG9JZHsk
bmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lfX07CisKKyAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1
dGVWYWx1ZXMgPSAoIkNTU1Byb3BlcnR5PSR7cHJvcGVydHlJZH0iKTsKKyAgICBwdXNoKEBleHRl
bmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVuYWJsZWRCeVNldHRpbmc9JHtzZXR0aW5nc0ZsYWdzeyRu
YW1lfX0iKSBpZiAkc2V0dGluZ3NGbGFnc3skbmFtZX07CisgICAgcHVzaChAZXh0ZW5kZWRBdHRy
aWJ1dGVWYWx1ZXMsICJFbmFibGVkQXRSdW50aW1lPSR7cnVudGltZUZsYWdzeyRuYW1lfX0iKSBp
ZiAkcnVudGltZUZsYWdzeyRuYW1lfTsKKyAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gam9p
bigiLCAiLCBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMpOworCisgICAgcHJpbnQgQ1NTX1NUWUxF
X0RFQ0xBUkFUSU9OX1BST1BFUlRZX05BTUVTX0lETCAiICAgIFtDRVJlYWN0aW9ucywgJHtleHRl
bmRlZEF0dHJpYnV0ZXN9XSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBDU1NP
TVN0cmluZyAke2VwdWJDYXNlZEF0dHJpYnV0ZU5hbWV9O1xuIjsKK30KKworcHJpbnQgQ1NTX1NU
WUxFX0RFQ0xBUkFUSU9OX1BST1BFUlRZX05BTUVTX0lETCA8PCAiRU9GIjsKK307CisKKyNlbmRp
ZgorCitFT0YKKworY2xvc2UgQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OX1BST1BFUlRZX05BTUVTX0lE
TDsK
</data>
<flag name="commit-queue"
          id="440709"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>421756</attachid>
            <date>2021-02-27 14:06:12 -0800</date>
            <delta_ts>2021-02-27 14:06:12 -0800</delta_ts>
            <desc>JSCSSStyleDeclaration.h (if you disable the legacy flag)</desc>
            <filename>JSCSSStyleDeclaration.h</filename>
            <type>text/x-csrc</type>
            <size>4948</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">LyoKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCgogICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoK
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgoqLwoKI3ByYWdtYSBvbmNlCgojaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgojaW5j
bHVkZSAiSlNET01XcmFwcGVyLmgiCiNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KCm5h
bWVzcGFjZSBXZWJDb3JlIHsKCmNsYXNzIFdFQkNPUkVfRVhQT1JUIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gewpwdWJsaWM6
CiAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPENTU1N0eWxlRGVjbGFyYXRpb24+OwogICAg
c3RhdGljIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxDU1NTdHlsZURlY2xh
cmF0aW9uPiYmIGltcGwpCiAgICB7CiAgICAgICAgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj4o
Z2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU0NTU1N0eWxlRGVjbGFyYXRpb24oc3RydWN0dXJl
LCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICBwdHItPmZpbmlzaENyZWF0
aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgcmV0dXJuIHB0cjsKICAgIH0KCiAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2Jh
bE9iamVjdCYpOwogICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwg
SlNET01HbG9iYWxPYmplY3QmKTsKICAgIHN0YXRpYyBDU1NTdHlsZURlY2xhcmF0aW9uKiB0b1dy
YXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7CiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICBzdGF0aWMgdm9pZCBn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RG9udEVudW1Qcm9wZXJ0aWVzTW9kZSk7CiAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CgogICAgREVDTEFSRV9JTkZPOwoK
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICB7CiAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOwogICAgfQoKICAg
IHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNj
ZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgIHsKICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vz
czo6Q29uY3VycmVudGx5KQogICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICByZXR1
cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKICAgIH0KICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgREVDTEFSRV9WSVNJVF9DSElMRFJF
TjsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IHZvaWQgdmlzaXRBZGRpdGlvbmFsQ2hp
bGRyZW4oVmlzaXRvciYpOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IHN0YXRpYyB2
b2lkIHZpc2l0T3V0cHV0Q29uc3RyYWludHMoSlNDZWxsKiwgVmlzaXRvciYpOwogICAgc3RhdGlj
IHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKcHVibGljOgog
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5X
aGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CnByb3RlY3RlZDoKICAgIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPENT
U1N0eWxlRGVjbGFyYXRpb24+JiYpOwoKICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYp
Owp9OwoKY2xhc3MgV0VCQ09SRV9FWFBPUlQgSlNDU1NTdHlsZURlY2xhcmF0aW9uT3duZXIgZmlu
YWwgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewpwdWJsaWM6CiAgICBib29sIGlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNv
bnRleHQsIEpTQzo6QWJzdHJhY3RTbG90VmlzaXRvciYsIGNvbnN0IGNoYXIqKikgZmluYWw7CiAg
ICB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQp
IGZpbmFsOwp9OwoKaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9N
V3JhcHBlcldvcmxkJiwgQ1NTU3R5bGVEZWNsYXJhdGlvbiopCnsKICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxKU0NTU1N0eWxlRGVjbGFyYXRpb25Pd25lcj4gb3duZXI7CiAgICByZXR1cm4gJm93
bmVyLmdldCgpOwp9CgppbmxpbmUgdm9pZCogd3JhcHBlcktleShDU1NTdHlsZURlY2xhcmF0aW9u
KiB3cmFwcGFibGVPYmplY3QpCnsKICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Cn0KCldFQkNP
UkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUds
b2JhbE9iamVjdCosIENTU1N0eWxlRGVjbGFyYXRpb24mKTsKaW5saW5lIEpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENTU1N0eWxlRGVjbGFyYXRpb24qIGltcGwpIHsgcmV0dXJu
IGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDog
SlNDOjpqc051bGwoKTsgfQpKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4m
Jik7CmlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9K
U05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVs
ZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RP
TVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gewogICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gSlNDU1NTdHlsZURlY2xhcmF0aW9uOwogICAgdXNpbmcgVG9XcmFwcGVk
UmV0dXJuVHlwZSA9IENTU1N0eWxlRGVjbGFyYXRpb24qOwp9OwoKfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQojaW5jbHVkZSAiSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>421757</attachid>
            <date>2021-02-27 14:06:37 -0800</date>
            <delta_ts>2021-02-27 14:06:37 -0800</delta_ts>
            <desc>JSCSSStyleDeclaration.cpp (if you disable the legacy flag)</desc>
            <filename>JSCSSStyleDeclaration.cpp</filename>
            <type>text/x-csrc</type>
            <size>3182844</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">LyoKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCgogICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoK
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgoqLwoKI2luY2x1ZGUgImNvbmZpZy5oIgojaW5jbHVkZSAiSlNDU1NTdHlsZURlY2xhcmF0aW9u
LmgiCgojaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiNpbmNsdWRlICJDU1NQcm9wZXJ0eU5h
bWVzLmgiCiNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIgojaW5jbHVkZSAi
RE9NSXNvU3Vic3BhY2VzLmgiCiNpbmNsdWRlICJKU0NTU1J1bGUuaCIKI2luY2x1ZGUgIkpTRE9N
QXR0cmlidXRlLmgiCiNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiNpbmNsdWRlICJKU0RPTUNvbnZlcnRCb29sZWFu
LmgiCiNpbmNsdWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKI2luY2x1ZGUgIkpTRE9NQ29u
dmVydE51bGxhYmxlLmgiCiNpbmNsdWRlICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCiNpbmNsdWRl
ICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5n
LmgiCiNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgojaW5jbHVkZSAiSlNET01PcGVyYXRp
b24uaCIKI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiNpbmNsdWRlICJKU0RlcHJlY2F0
ZWRDU1NPTVZhbHVlLmgiCiNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiNpbmNs
dWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJh
eVByb3RvdHlwZS5oPgojaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgojaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CiNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5oPgojaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXku
aD4KI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CiNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiNpbmNsdWRlIDx3dGYvVVJM
Lmg+CgoKbmFtZXNwYWNlIFdlYkNvcmUgewp1c2luZyBuYW1lc3BhY2UgSlNDOwoKLy8gRnVuY3Rp
b25zCgpzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc0NTU1N0eWxlRGVjbGFyYXRp
b25Qcm90b3R5cGVGdW5jdGlvbl9pdGVtKTsKc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oanNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25fZ2V0UHJvcGVydHlWYWx1
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
blByb3RvdHlwZUZ1bmN0aW9uX2dldFByb3BlcnR5UHJpb3JpdHkpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihqc0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGVGdW5jdGlvbl9z
ZXRQcm9wZXJ0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX3JlbW92ZVByb3BlcnR5KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlRnVuY3Rp
b25fZ2V0UHJvcGVydHlTaG9ydGhhbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tihqc0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGVGdW5jdGlvbl9pc1Byb3BlcnR5SW1wbGlj
aXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc0NTU1N0eWxlRGVjbGFyYXRp
b25Qcm90b3R5cGVGdW5jdGlvbl9nZXRQcm9wZXJ0eUNTU1ZhbHVlKTsKCi8vIEF0dHJpYnV0ZXMK
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbkNv
bnN0cnVjdG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Nzc1RleHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fY3NzVGV4dCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9sZW5ndGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFyZW50UnVsZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jc3NGbG9hdCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9jc3NGbG9hdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9BcHBsZUNvbG9yRmlsdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0FwcGxlQ29sb3JGaWx0ZXIpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVQYXlC
dXR0b25TdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9BcHBsZVBheUJ1dHRvblN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0FwcGxlUGF5QnV0dG9uVHlwZSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9B
cHBsZVBheUJ1dHRvblR5cGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fQXBwbGVUcmFpbGluZ1dvcmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVUcmFpbGluZ1dvcmQp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
RXB1YkNhcHRpb25TaWRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX0VwdWJDYXB0aW9uU2lkZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViSHlwaGVucyk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViSHlw
aGVucyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9FcHViVGV4dENvbWJpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YlRleHRDb21iaW5lKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0RW1waGFzaXMp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fRXB1YlRleHRFbXBoYXNpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dEVtcGhhc2lzQ29sb3IpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YlRleHRFbXBo
YXNpc0NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX0VwdWJUZXh0RW1waGFzaXNTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dEVtcGhhc2lzU3R5bGUp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
RXB1YlRleHRPcmllbnRhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dE9yaWVudGF0aW9uKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0VHJhbnNm
b3JtKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX0VwdWJUZXh0VHJhbnNmb3JtKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJXb3JkQnJlYWspOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YldvcmRCcmVhayk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9F
cHViV3JpdGluZ01vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fRXB1YldyaXRpbmdNb2RlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0ludGVybmFsVGV4dEF1dG9zaXppbmdT
dGF0dXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fSW50ZXJuYWxUZXh0QXV0b3NpemluZ1N0YXR1cyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbGlnbkNvbnRlbnQp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0QWxpZ25Db250ZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFsaWduSXRlbXMpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25JdGVt
cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRBbGlnblNlbGYpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25TZWxmKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFsdCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRB
bHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0QW5pbWF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25EZWxh
eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRBbmltYXRpb25EZWxheSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25EaXJlY3Rpb24pOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0QW5pbWF0aW9uRGlyZWN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkR1cmF0aW9uKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFu
aW1hdGlvbkR1cmF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkZpbGxNb2RlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlv
bkZpbGxNb2RlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlv
bkl0ZXJhdGlvbkNvdW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbk5hbWUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uTmFt
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRBbmltYXRpb25QbGF5U3RhdGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uUGxheVN0YXRlKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0
aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEFwcGVhcmFuY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QXBwZWFyYW5jZSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZHJvcEZp
bHRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRCYWNrZHJvcEZpbHRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZmFjZVZpc2liaWxpdHkpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tncm91bmRDbGlwKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJh
Y2tncm91bmRDbGlwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tncm91bmRDb21wb3NpdGUpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3Vu
ZENvbXBvc2l0ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kT3JpZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tncm91bmRPcmln
aW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0QmFja2dyb3VuZFNpemUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZFNpemUpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9y
ZGVyQWZ0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQWZ0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJBZnRlckNvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVyU3R5bGUpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9y
ZGVyQWZ0ZXJTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlcldpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVy
V2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0Qm9yZGVyQmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJlZm9yZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3Jk
ZXJCZWZvcmVDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVDb2xvcik7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZv
cmVTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVXaWR0
aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCb3JkZXJCZWZvcmVXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVz
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEJvcmRlckJvdHRvbUxlZnRSYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyRW5kKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJvcmRlckVuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRD
b2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCb3JkZXJFbmRTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRTdHlsZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJFbmRXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJGaXQpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0Qm9yZGVyRml0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJv
cmRlckhvcml6b250YWxTcGFjaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckltYWdlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlcklt
YWdlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEJvcmRlclJhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJSYWRpdXMpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
U3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm9yZGVyU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyU3RhcnRDb2xvcik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRCb3JkZXJTdGFydENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0U3R5bGUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
U3RhcnRTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJTdGFydFdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0V2lk
dGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Qm9yZGVyVG9wTGVmdFJhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJUb3BMZWZ0UmFkaXVz
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJvcmRlclRvcFJpZ2h0UmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclRvcFJpZ2h0UmFkaXVz
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNp
bmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Qm94QWxpZ24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94QWxpZ24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94RGVjb3JhdGlvbkJy
ZWFrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEJveERlY29yYXRpb25CcmVhayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hEaXJlY3Rpb24pOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Qm94RGlyZWN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveEZsZXgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94RmxleCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hG
bGV4R3JvdXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Qm94RmxleEdyb3VwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveExpbmVzKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJv
eExpbmVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEJveE9yZGluYWxHcm91cCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hPcmRpbmFsR3JvdXApOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Qm94T3JpZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveE9yaWVudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hQYWNrKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJv
eFBhY2spOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0Qm94UmVmbGVjdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hSZWZsZWN0KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFNoYWRv
dyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCb3hTaGFkb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94U2l6aW5nKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFNpemluZyk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRDbGlwUGF0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDbGlwUGF0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5BeGlzKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dENvbHVtbkF4aXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Q29sdW1uQnJlYWtBZnRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0Fm
dGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdENvbHVtbkJyZWFrQmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkJyZWFrQmVmb3JlKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdENvbHVtbkJyZWFrSW5zaWRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkJyZWFrSW5zaWRlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENv
bHVtbkNvdW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkNvdW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkZpbGwpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Q29sdW1uRmlsbCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5HYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uR2FwKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVt
blByb2dyZXNzaW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblByb2dyZXNzaW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblJ1bGUp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Q29sdW1uUnVsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5SdWxlQ29sb3IpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1u
UnVsZUNvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdENvbHVtblJ1bGVTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5SdWxlU3R5bGUp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0Q29sdW1uUnVsZVdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblJ1bGVXaWR0aCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1
bW5TcGFuKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdENvbHVtblNwYW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uV2lkdGgpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29s
dW1uV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Q29sdW1ucyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5zKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEN1cnNvclZpc2li
aWxpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Q3Vyc29yVmlzaWJpbGl0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGaWx0ZXIpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Rmls
dGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEZsZXgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4QmFzaXMpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Rmxl
eEJhc2lzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEZsZXhEaXJlY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleERpcmVjdGlvbik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRG
bGV4Rmxvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRGbGV4Rmxvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4R3Jvdyk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4R3Jv
dyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRGbGV4U2hyaW5rKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhTaHJpbmspOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleFdyYXApOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0RmxleFdyYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Rm9udEtlcm5pbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Rm9udEtlcm5pbmcpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Rm9udFNtb290aGluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGb250U21vb3RoaW5nKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUNo
YXJhY3Rlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRB
ZnRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRIeXBoZW5hdGVMaW1pdEFmdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxpbWl0QmVm
b3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxpbWl0QmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxpbWl0TGlu
ZXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5zKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5
cGhlbnMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0SW5pdGlhbExldHRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRJbml0aWFsTGV0dGVyKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEp1
c3RpZnlDb250ZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEp1c3RpZnlDb250ZW50KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEp1c3RpZnlJdGVtcyk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRKdXN0aWZ5SXRlbXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZUFsaWduKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVBbGlnbik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRMaW5lQm94Q29udGFpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lQm94Q29udGFpbik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lQnJl
YWspOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0TGluZUJyZWFrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVDbGFtcCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lQ2xhbXAp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TGluZUdyaWQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZUdyaWQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZVNuYXApOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
TGluZVNuYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TG9jYWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExvY2FsZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMb2dpY2FsSGVpZ2h0
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdExvZ2ljYWxIZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TG9naWNhbFdpZHRoKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExvZ2lj
YWxXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNYXJnaW5BZnRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5BZnRlcik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJn
aW5BZnRlckNvbGxhcHNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2lu
QmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdE1hcmdpbkJlZm9yZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5Db2xsYXBzZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRNYXJnaW5Db2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5FbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luRW5kKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dE1hcmdpblN0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpblN0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpblRvcENvbGxhcHNl
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdE1hcmdpblRvcENvbGxhcHNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2spOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFzayk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRNYXNrQm94SW1hZ2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZU91
dHNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VPdXRzZXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlUmVwZWF0
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VTbGljZSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRNYXNrQm94SW1hZ2VTbGljZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
TWFza0JveEltYWdlU291cmNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZVdpZHRoKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tC
b3hJbWFnZVdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tDbGlwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tDbGlwKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tD
b21wb3NpdGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWFza0NvbXBvc2l0ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrSW1hZ2UpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
TWFza0ltYWdlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdE1hc2tPcmlnaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza09yaWdpbik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNr
UG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWFza1Bvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlvblgpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0TWFza1Bvc2l0aW9uWCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrUG9zaXRpb25ZKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlv
blkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0TWFza1JlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrUmVwZWF0KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tTaXplKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdE1hc2tTaXplKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tTb3VyY2VUeXBlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tTb3VyY2VU
eXBlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdE1heExvZ2ljYWxIZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWF4TG9naWNhbEhlaWdodCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRNYXhMb2dpY2FsV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWF4TG9naWNhbFdpZHRoKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1pbkxvZ2lj
YWxIZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWluTG9naWNhbEhlaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNaW5Mb2dpY2FsV2lkdGgp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0TWluTG9naWNhbFdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE5ic3BNb2RlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE5ic3BNb2Rl
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdE9wYWNpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0T3BhY2l0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRPcmRlcik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRPcmRl
cik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRQYWRkaW5nQWZ0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGFkZGluZ0FmdGVyKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBhZGRpbmdC
ZWZvcmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0UGFkZGluZ0JlZm9yZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQYWRkaW5nRW5kKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBh
ZGRpbmdFbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0UGFkZGluZ1N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBhZGRpbmdTdGFydCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQ
ZXJzcGVjdGl2ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZU9yaWdpbik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRQZXJzcGVjdGl2ZU9yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0UGVyc3BlY3RpdmVPcmlnaW5YKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQ
ZXJzcGVjdGl2ZU9yaWdpblkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UHJpbnRDb2xvckFkanVzdCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQcmludENv
bG9yQWRqdXN0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdFJ0bE9yZGVyaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFJ0bE9yZGVyaW5nKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFJ1
YnlQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRSdWJ5UG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0U2hhcGVJbWFnZVRocmVzaG9s
ZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRTaGFwZUltYWdlVGhyZXNob2xkKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFNoYXBlTWFyZ2luKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dFNoYXBlTWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFNoYXBlT3V0c2lkZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRTaGFwZU91dHNpZGUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VGV4dENvbWJpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dENvbWJpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb24p
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0VGV4dERlY29yYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25Db2xvcik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRUZXh0RGVjb3JhdGlvbkNvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uTGluZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRU
ZXh0RGVjb3JhdGlvbkxpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25Ta2lwKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRE
ZWNvcmF0aW9uU2tpcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlvblN0eWxlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNv
cmF0aW9uU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERl
Y29yYXRpb25zSW5FZmZlY3QpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dEVtcGhhc2lzKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRFbXBoYXNp
cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRUZXh0RW1waGFzaXNDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNDb2xvcik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRUZXh0RW1waGFzaXNQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRUZXh0RW1waGFzaXNTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNTdHlsZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0
RmlsbENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFRleHRGaWxsQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dE9yaWVudGF0aW9uKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFRleHRPcmllbnRhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0U2VjdXJpdHkpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFNl
Y3VyaXR5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdFRleHRTaXplQWRqdXN0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTaXplQWRqdXN0KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dFRleHRTdHJva2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0cm9rZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0U3Ryb2tlQ29sb3IpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VGV4dFN0cm9rZUNvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2VXaWR0aCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0
U3Ryb2tlV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRVbmRl
cmxpbmVQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0Wm9vbSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0Wm9vbSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFu
c2Zvcm0pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0VHJhbnNmb3JtKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpbik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRU
cmFuc2Zvcm1PcmlnaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNmb3JtT3JpZ2luWCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1P
cmlnaW5YKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNmb3JtT3JpZ2luWSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRUcmFuc2Zvcm1PcmlnaW5aKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblopOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJh
bnNmb3JtU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNmb3JtU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRUcmFuc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25EZWxheSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2l0aW9u
RGVsYXkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25EdXJhdGlv
bik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRUcmFuc2l0aW9uUHJvcGVydHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvblByb3BlcnR5KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2l0aW9uVGltaW5nRnVu
Y3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0VXNlckRyYWcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNlckRyYWcpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNlck1vZGlmeSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRVc2VyTW9kaWZ5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFVzZXJTZWxlY3QpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNlclNlbGVjdCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRXcml0aW5nTW9kZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRXcml0aW5nTW9kZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbkNvbnRlbnQpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxp
Z25Db250ZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2FsaWduSXRlbXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25JdGVtcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnblNlbGYpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25TZWxm
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2FsaWdubWVudEJhc2VsaW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWdubWVudEJhc2VsaW5lKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FsbCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGwpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWx0KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2FsdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9hbmltYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkRlbGF5KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkRl
bGF5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2FuaW1hdGlvbkRpcmVjdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25EaXJlY3Rpb24pOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uRHVy
YXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYW5pbWF0aW9uRHVyYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uRmlsbE1vZGUpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9u
RmlsbE1vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uSXRlcmF0aW9uQ291
bnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYW5pbWF0aW9uTmFtZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25OYW1lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvblBsYXlTdGF0ZSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9h
bmltYXRpb25QbGF5U3RhdGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uVGlt
aW5nRnVuY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYXNwZWN0UmF0aW8pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYXNwZWN0UmF0aW8pOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNr
Z3JvdW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2JhY2tncm91bmRBdHRhY2htZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRBdHRhY2htZW50KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tn
cm91bmRCbGVuZE1vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZEJsZW5kTW9kZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQ2xpcCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
YWNrZ3JvdW5kQ2xpcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZENvbG9yKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91
bmRJbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9iYWNrZ3JvdW5kSW1hZ2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZE9yaWdpbik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5k
T3JpZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2JhY2tncm91bmRQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUG9zaXRpb24pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3Vu
ZFBvc2l0aW9uWCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUG9zaXRpb25YKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRQb3NpdGlvblkpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
YmFja2dyb3VuZFBvc2l0aW9uWSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUmVwZWF0KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRSZXBlYXQp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
YmFja2dyb3VuZFNpemUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFNpemUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFzZWxpbmVTaGlmdCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYXNlbGlu
ZVNoaWZ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Jsb2NrU2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ibG9ja1NpemUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9j
ayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJCbG9jayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja0NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrQ29sb3IpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyQmxvY2tFbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tFbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tFbmRDb2xvcik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJCbG9ja0VuZENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5kU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tFbmRTdHls
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJCbG9ja0VuZFdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5kV2lkdGgpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tT
dGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJCbG9ja1N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRDb2xvcik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJC
bG9ja1N0YXJ0Q29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdGFydFN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRT
dHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJCbG9ja1N0YXJ0V2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdGFydFdpZHRoKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
ckJsb2NrU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja1dpZHRoKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
ckJsb2NrV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyQm90dG9tKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21Db2xv
cik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJCb3R0b21Db2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJv
dHRvbUxlZnRSYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tUmln
aHRSYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyQm90dG9tU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tU3R5bGUpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90
dG9tV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyQm90dG9tV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQ29sbGFwc2UpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQ29s
bGFwc2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyRW5kRW5kUmFkaXVzKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckVuZEVuZFJhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJFbmRTdGFydFJhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJFbmRTdGFydFJh
ZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJJbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZU91dHNldCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJJbWFnZU91dHNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVJlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVJlcGVhdCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJJbWFnZVNsaWNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdlU2xpY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW1hZ2VTb3VyY2UpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVySW1hZ2VTb3VyY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVySW1hZ2VXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVdpZHRoKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cklubGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lQ29sb3IpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5l
Q29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVySW5saW5lRW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUVuZCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRD
b2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRTdHlsZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJJbmxpbmVFbmRTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRX
aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJJbmxpbmVTdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdGFydCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVT
dGFydENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0Q29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnRTdHls
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJJbmxpbmVTdGFydFN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0V2lkdGgpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVySW5saW5lU3RhcnRXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdHls
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJJbmxpbmVXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVXaWR0aCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJMZWZ0KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckxlZnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyTGVmdENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnRDb2xvcik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJMZWZ0U3R5
bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyTGVmdFN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnRXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJMZWZ0V2lkdGgp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyUmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlclJhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJSaWdodENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0Q29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyUmlnaHRTdHlsZSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJSaWdodFN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0V2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyUmlnaHRXaWR0aCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJTcGFjaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlclNwYWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyU3RhcnRFbmRSYWRpdXMpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
U3RhcnRFbmRSYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyU3RhcnRTdGFydFJhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJTdGFydFN0YXJ0
UmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlclN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3Ap
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyVG9wQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wTGVmdFJhZGl1cyk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJUb3BMZWZ0UmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcFJpZ2h0UmFkaXVzKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcFJpZ2h0
UmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlclRvcFN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcFN0eWxlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcFdpZHRoKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlclRvcFdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcldpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcldpZHRoKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvdHRvbSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3R0
b20pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm94U2hhZG93KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JveFNoYWRvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3hTaXppbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm94U2l6aW5nKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JyZWFrQWZ0
ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYnJlYWtBZnRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9icmVha0JlZm9yZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha0JlZm9yZSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha0luc2lkZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9icmVha0luc2lkZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9idWZmZXJlZFJlbmRlcmluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9idWZmZXJlZFJlbmRlcmluZyk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXB0
aW9uU2lkZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9jYXB0aW9uU2lkZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXJldENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NhcmV0Q29sb3IpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xlYXIpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Y2xlYXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fY2xpcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jbGlwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2NsaXBQYXRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBQYXRoKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBSdWxlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBS
dWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2NvbG9ySW50ZXJwb2xhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvckludGVycG9sYXRp
b24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvckludGVycG9sYXRpb25GaWx0ZXJz
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2NvbG9yUHJvZmlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2xvclByb2ZpbGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JSZW5kZXJpbmcpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JSZW5k
ZXJpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fY29sb3JTY2hlbWUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JTY2hlbWUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uQ291bnQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uQ291
bnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fY29sdW1uRmlsbCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5GaWxsKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbkdhcCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5HYXApOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1u
UnVsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9jb2x1bW5SdWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtblJ1bGVDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5SdWxlQ29sb3IpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29s
dW1uUnVsZVN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2NvbHVtblJ1bGVTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5SdWxlV2lkdGgpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1u
UnVsZVdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2NvbHVtblNwYW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uU3Bhbik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5XaWR0aCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5X
aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9jb2x1bW5zKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2NvbHVtbnMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29udGVudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb250ZW50KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50ZXJJbmNyZW1l
bnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fY291bnRlckluY3JlbWVudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVyUmVzZXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY291bnRlclJlc2V0KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2N1cnNv
cik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9jdXJzb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fY3gpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fY3gpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fY3kpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY3kpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGlyZWN0aW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2RpcmVjdGlvbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kaXNw
bGF5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rpc3BsYXkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZG9taW5hbnRCYXNlbGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kb21pbmFudEJhc2VsaW5lKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VtcHR5
Q2VsbHMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZW1wdHlDZWxscyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9lbmFibGVCYWNrZ3JvdW5kKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VuYWJsZUJhY2tncm91bmQp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZmlsbCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9maWxsKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2ZpbGxPcGFjaXR5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxPcGFjaXR5KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxSdWxlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxS
dWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZpbHRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9maWx0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhCYXNpcyk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4QmFzaXMp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZmxleERpcmVjdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9mbGV4RGlyZWN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhGbG93KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhGbG93KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhH
cm93KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZsZXhHcm93KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2ZsZXhTaHJpbmspOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleFNocmluayk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4V3JhcCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4
V3JhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mbG9hdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mbG9hdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mbG9vZENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kQ29sb3IpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxvb2RPcGFjaXR5
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Zsb29kT3BhY2l0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9mb250KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udERpc3BsYXkpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udERpc3BsYXkp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Zm9udEZhbWlseSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mb250RmFtaWx5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRGZWF0dXJlU2V0dGluZ3MpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udEZlYXR1
cmVTZXR0aW5ncyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mb250S2VybmluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250S2VybmluZyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250T3B0aWNhbFNpemluZyk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mb250T3B0aWNhbFNpemluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U2l6ZSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U3RyZXRjaCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
b250U3RyZXRjaCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mb250U3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRTeW50aGVzaXMpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN5
bnRoZXNpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250VmFyaWFudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudEFsdGVybmF0ZXMp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udFZhcmlhbnRBbHRlcm5hdGVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50Q2Fwcyk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudENh
cHMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udFZhcmlhbnRFYXN0QXNpYW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRFYXN0QXNpYW4pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlh
bnRMaWdhdHVyZXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRMaWdhdHVyZXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnROdW1lcmljKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZvbnRWYXJpYW50TnVtZXJpYyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudFBvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50UG9z
aXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZm9udFZhcmlhdGlvblNldHRpbmdzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYXRpb25TZXR0aW5ncyk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250
V2VpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZvbnRXZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZ2FwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRh
bCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlwaE9yaWVudGF0aW9uVmVydGljYWwp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXJlYSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlk
QXJlYSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ncmlkQXV0b0NvbHVtbnMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEF1dG9Db2x1bW5zKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvRmxvdyk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9n
cmlkQXV0b0Zsb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZ3JpZEF1dG9Sb3dzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvUm93cyk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dy
aWRDb2x1bW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZ3JpZENvbHVtbkVuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uRW5kKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5HYXApOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Z3JpZENvbHVtbkdhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtblN0YXJ0KTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRHYXAp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZ3JpZEdhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ncmlkUm93KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRSb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd0VuZCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkUm93RW5kKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dy
aWRSb3dHYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZ3JpZFJvd0dhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkUm93U3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd1N0YXJ0KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRU
ZW1wbGF0ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRlQXJlYXMpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRl
QXJlYXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZ3JpZFRlbXBsYXRlQ29sdW1ucyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVDb2x1bW5zKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRUZW1w
bGF0ZVJvd3MpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRlUm93cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9oYW5naW5nUHVuY3R1YXRpb24pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faGFuZ2lu
Z1B1bmN0dWF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2hlaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9oZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW1hZ2VPcmllbnRhdGlvbik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZU9y
aWVudGF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ltYWdlUmVuZGVyaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlUmVuZGVyaW5nKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2lubGluZVNpemUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
aW5saW5lU2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9pbnNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldEJsb2NrKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2spOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRC
bG9ja0VuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9pbnNldEJsb2NrRW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2tTdGFydCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldEJsb2NrU3Rh
cnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25faW5zZXRJbmxpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25faW5zZXRJbmxpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRJbmxpbmVFbmQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRJbmxp
bmVFbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25faW5zZXRJbmxpbmVTdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElubGluZVN0YXJ0KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2lzb2xhdGlvbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9p
c29sYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fanVzdGlmeUNvbnRlbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeUNvbnRlbnQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeUl0ZW1zKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2p1c3RpZnlJdGVtcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9qdXN0aWZ5U2VsZik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5U2VsZik7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9rZXJuaW5nKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2tlcm5p
bmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbGVmdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9sZWZ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2xldHRlclNwYWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGV0dGVyU3BhY2luZyk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saWdodGluZ0Nv
bG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2xpZ2h0aW5nQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fbGluZUJyZWFrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVCcmVhayk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saW5lSGVpZ2h0KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2xpbmVIZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fbGlzdFN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0U3R5bGVJbWFnZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0
U3R5bGVJbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9saXN0U3R5bGVQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0U3R5bGVQb3NpdGlvbik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0U3R5
bGVUeXBlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2xpc3RTdHlsZVR5cGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbik7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9jayk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9t
YXJnaW5CbG9jayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXJnaW5CbG9ja0VuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja0VuZCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja1N0
YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX21hcmdpbkJsb2NrU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luQm90dG9tKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbkJvdHRvbSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJn
aW5JbmxpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fbWFyZ2luSW5saW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbklubGluZUVuZCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5JbmxpbmVF
bmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luSW5saW5lU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luSW5saW5lU3RhcnQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luTGVmdCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9t
YXJnaW5MZWZ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX21hcmdpblJpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpblJpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpblRvcCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5U
b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFya2VyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX21hcmtlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJrZXJFbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyRW5kKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlck1pZCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9t
YXJrZXJNaWQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fbWFya2VyU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFzayk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hc2tUeXBl
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX21hc2tUeXBlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX21hdGhTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXRoU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4QmxvY2tTaXplKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heEJs
b2NrU2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9tYXhIZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4SGVpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21heElubGluZVNpemUpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4SW5saW5l
U2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9tYXhXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXhXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5CbG9ja1NpemUpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWluQmxvY2tTaXplKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21p
bkhlaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9taW5IZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fbWluSW5saW5lU2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5JbmxpbmVTaXplKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21pbldp
ZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX21pbldpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX21peEJsZW5kTW9kZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taXhCbGVuZE1vZGUpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0Rml0KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X29iamVjdEZpdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9vYmplY3RQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vYmplY3RQb3NpdGlvbik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vcGFjaXR5KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX29w
YWNpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fb3JkZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fb3JkZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fb3JwaGFucyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vcnBoYW5zKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmUpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGlu
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9vdXRsaW5lQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZUNvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVPZmZzZXQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZU9m
ZnNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9vdXRsaW5lU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZVN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVXaWR0aCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5l
V2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fb3ZlcmZsb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dXcmFwKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93V3JhcCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9v
dmVyZmxvd1gpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fb3ZlcmZsb3dYKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93WSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd1kpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbEJl
aGF2aW9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX292ZXJzY3JvbGxCZWhhdmlvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsQmVoYXZpb3JYKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJz
Y3JvbGxCZWhhdmlvclgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbEJlaGF2aW9yWSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsQmVoYXZpb3JZ
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3BhZGRpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fcGFkZGluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQmxvY2spOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0Jsb2NrKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdC
bG9ja0VuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wYWRkaW5nQmxvY2tFbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0Jsb2NrU3RhcnQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0Js
b2NrU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fcGFkZGluZ0JvdHRvbSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQm90dG9tKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdJbmxpbmUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
cGFkZGluZ0lubGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9wYWRkaW5nSW5saW5lRW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdJbmxpbmVFbmQpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGlu
Z0lubGluZVN0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3BhZGRpbmdJbmxpbmVTdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nTGVmdCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5n
TGVmdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9wYWRkaW5nUmlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ1JpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdUb3ApOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ1Rv
cCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9wYWdlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BhZ2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFrQWZ0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFrQWZ0ZXIpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFr
QmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BhZ2VCcmVha0JlZm9yZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlQnJlYWtJbnNpZGUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFrSW5z
aWRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3BhaW50T3JkZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fcGFpbnRPcmRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
ZXJzcGVjdGl2ZU9yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZU9yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZU9yaWdpblgp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fcGVyc3BlY3RpdmVPcmlnaW5YKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luWSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZU9y
aWdpblkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fcGxhY2VDb250ZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlQ29udGVudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZUl0ZW1zKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlSXRl
bXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fcGxhY2VTZWxmKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3BsYWNlU2VsZik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wb2ludGVyRXZlbnRzKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BvaW50ZXJFdmVudHMp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
cG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fcG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fcXVvdGVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3F1b3Rlcyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9yKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3IpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcmVzaXplKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Jl
c2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9yaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9yaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9yb3RhdGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcm90YXRlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Jvd0dhcCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9yb3dHYXApOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcngp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fcngpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fcnkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fcnkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc2NhbGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2NhbGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsQmVoYXZpb3IpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsQmVo
YXZpb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsTWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9jayk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxNYXJnaW5CbG9jayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9ja0VuZCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9j
a0VuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxNYXJnaW5CbG9ja1N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkJsb2NrU3RhcnQpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsTWFyZ2luQm90dG9tKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkJvdHRvbSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5JbmxpbmUp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsTWFyZ2luSW5saW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbklubGluZUVuZCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJn
aW5JbmxpbmVFbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luSW5saW5lU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luSW5saW5l
U3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsTWFyZ2luTGVmdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5MZWZ0KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpblJp
Z2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbE1hcmdpblJpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpblRvcCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5U
b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsUGFkZGluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCbG9jayk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxQYWRkaW5nQmxvY2spOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0Jsb2NrRW5kKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdC
bG9ja0VuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxvY2tTdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxvY2tTdGFy
dCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxQYWRkaW5nQm90dG9tKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCb3R0b20pOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGlu
Z0lubGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nSW5saW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmVFbmQpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
c2Nyb2xsUGFkZGluZ0lubGluZUVuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nSW5saW5lU3RhcnQpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
UGFkZGluZ0lubGluZVN0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdMZWZ0KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdMZWZ0
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbFBhZGRpbmdSaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nUmlnaHQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ1Rv
cCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxQYWRkaW5nVG9wKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBBbGlnbik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwQWxpZ24p
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
c2Nyb2xsU25hcE1hcmdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5Cb3R0
b20pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsU25hcE1hcmdpbkJvdHRvbSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luTGVmdCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3Jv
bGxTbmFwTWFyZ2luTGVmdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luUmlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdp
blJpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5Ub3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpblRvcCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxT
bmFwU3RvcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxTbmFwU3RvcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwVHlwZSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwVHlw
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zaGFwZUltYWdlVGhyZXNob2xkKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlSW1hZ2VUaHJlc2hvbGQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVNYXJnaW4p
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2hhcGVNYXJnaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc2hhcGVPdXRzaWRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlT3V0c2lkZSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZVJlbmRlcmlu
Zyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zaGFwZVJlbmRlcmluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zaXplKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NpemUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3BlYWtBcyk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zcGVha0FzKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3NyYyk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zcmMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc3RvcENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3N0b3BDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wT3BhY2l0eSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wT3BhY2l0eSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
dHJva2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc3Ryb2tlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3N0cm9rZUNvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZUNvbG9yKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZURhc2hhcnJh
eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zdHJva2VEYXNoYXJyYXkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlRGFzaG9mZnNldCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VEYXNob2Zmc2V0
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3N0cm9rZUxpbmVjYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTGluZWNhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VMaW5lam9pbik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VM
aW5lam9pbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zdHJva2VNaXRlcmxpbWl0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZU1pdGVybGltaXQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlT3BhY2l0
eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zdHJva2VPcGFjaXR5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZVdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZVdpZHRoKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3N1cHBvcnRlZENv
bG9yU2NoZW1lcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zdXBwb3J0ZWRDb2xvclNjaGVtZXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGFiU2l6ZSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJTaXplKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Rh
YmxlTGF5b3V0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RhYmxlTGF5b3V0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRBbGlnbik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0QWxpZ24pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEFuY2hv
cik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl90ZXh0QW5jaG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHREZWNv
cmF0aW9uQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25Db2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvbkxpbmUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dERlY29yYXRpb25MaW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uU2tpcCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvblNr
aXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dERlY29yYXRpb25TdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvblN0eWxlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0
aW9uVGhpY2tuZXNzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRFbXBoYXNpcyk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0RW1waGFzaXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzQ29sb3IpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEVt
cGhhc2lzUG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzUG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzU3R5bGUp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dEVtcGhhc2lzU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEluZGVudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0SW5kZW50KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRPcmllbnRh
dGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl90ZXh0T3JpZW50YXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dE92ZXJmbG93KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRPdmVyZmxvdyk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0
UmVuZGVyaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RleHRSZW5kZXJpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFNoYWRvdyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0U2hhZG93KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRU
cmFuc2Zvcm0pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dFRyYW5zZm9ybSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0VW5kZXJsaW5lT2Zmc2V0KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRVbmRl
cmxpbmVPZmZzZXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dFVuZGVybGluZVBvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRVbmRlcmxpbmVQb3NpdGlv
bik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fdG9wKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3RvdWNoQWN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RvdWNoQWN0aW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFu
c2Zvcm0pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fdHJhbnNmb3JtQm94KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybUJveCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1PcmlnaW4pOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJh
bnNmb3JtT3JpZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luWCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zv
cm1PcmlnaW5ZKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luWik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zv
cm1PcmlnaW5aKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RyYW5zZm9ybVN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybVN0eWxlKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb24pOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dHJhbnNpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90cmFuc2l0aW9uRGVsYXkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbkRlbGF5KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25E
dXJhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90cmFuc2l0aW9uRHVyYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvblByb3BlcnR5KTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5z
aXRpb25Qcm9wZXJ0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RyYW5zbGF0ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2xhdGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZUJpZGkpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZUJp
ZGkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fdW5pY29kZVJhbmdlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3VuaWNvZGVSYW5nZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl92ZWN0b3JFZmZlY3QpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdmVjdG9yRWZm
ZWN0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3ZlcnRpY2FsQWxpZ24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fdmVydGljYWxBbGlnbik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl92aXNpYmlsaXR5KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Zpc2liaWxp
dHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2hpdGVTcGFjZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93aGl0ZVNwYWNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dpZG93cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93aWRvd3MpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2lkdGgpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2lk
dGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2lsbENoYW5nZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93aWxsQ2hhbmdlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRCcmVhayk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkQnJlYWspOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZFNw
YWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd29yZFNwYWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZFdyYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZFdyYXApOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd3JpdGluZ01vZGUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d3JpdGluZ01vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25feCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl94KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3kpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25feSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl96SW5kZXgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fekluZGV4KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3pvb20pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fem9vbSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRBbGlnbkNvbnRlbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25Db250ZW50KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsaWduSXRlbXMp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0QWxpZ25JdGVtcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbGlnblNlbGYpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25TZWxmKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEFsdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRBbHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRBbmltYXRpb25EZWxheSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25EZWxheSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRp
b25EaXJlY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkR1
cmF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkR1cmF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkZpbGxNb2Rl
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEFuaW1hdGlvbkZpbGxNb2RlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbk5hbWUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0QW5pbWF0aW9uTmFtZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25QbGF5U3RhdGUpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5p
bWF0aW9uUGxheVN0YXRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFwcGVhcmFuY2UpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QXBwZWFyYW5j
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCYWNrZHJvcEZpbHRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZHJvcEZpbHRlcik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNr
ZmFjZVZpc2liaWxpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tncm91
bmRDbGlwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEJhY2tncm91bmRDbGlwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tncm91bmRDb21wb3NpdGUp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kT3JpZ2luKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEJhY2tncm91bmRPcmlnaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2dyb3VuZFNpemUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2dy
b3VuZFNpemUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXIpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9y
ZGVyQWZ0ZXJDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRlckNvbG9yKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckFmdGVy
U3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRlcldpZHRoKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJvcmRlckFmdGVyV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQmVmb3JlKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRl
ckJlZm9yZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVDb2xv
cik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCb3JkZXJCZWZvcmVTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVTdHlsZSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3JkZXJCZWZvcmVXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVXaWR0aCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3Jk
ZXJCb3R0b21MZWZ0UmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJvdHRvbUxlZnRSYWRpdXMpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0Qm9yZGVyRW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckVuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRDb2xvcik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCb3JkZXJFbmRDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRTdHlsZSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3Jk
ZXJFbmRTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRXaWR0aCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRCb3JkZXJGaXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRml0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckhvcml6b250YWxT
cGFjaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckltYWdl
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEJvcmRlckltYWdlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclJhZGl1cyk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJS
YWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm9yZGVyU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyU3RhcnQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVy
U3RhcnRDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJTdGFydENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0YXJ0U3R5
bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm9yZGVyU3RhcnRTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJTdGFydFdpZHRoKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEJvcmRlclN0YXJ0V2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyVG9wTGVmdFJhZGl1cyk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJUb3BMZWZ0UmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclRvcFJpZ2h0UmFkaXVzKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
cmRlclRvcFJpZ2h0UmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJWZXJ0aWNhbFNwYWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94QWxpZ24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94QWxpZ24pOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0Qm94RGVjb3JhdGlvbkJyZWFrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveERlY29yYXRpb25CcmVhayk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3hEaXJlY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94RGlyZWN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveEZsZXgpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
Qm94RmxleCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRCb3hGbGV4R3JvdXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94RmxleEdyb3VwKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
eExpbmVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEJveExpbmVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveE9yZGluYWxHcm91cCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3hPcmRpbmFsR3JvdXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94T3JpZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveE9yaWVudCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3hQYWNrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEJveFBhY2spOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94UmVmbGVjdCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hSZWZs
ZWN0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEJveFNoYWRvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hTaGFkb3cpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94U2l6aW5nKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJveFNpemluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDbGlwUGF0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDbGlwUGF0aCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRD
b2x1bW5BeGlzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkF4aXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uQnJlYWtBZnRlcik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRDb2x1bW5CcmVha0FmdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkJyZWFrQmVmb3JlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENv
bHVtbkJyZWFrQmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkJyZWFrSW5zaWRlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkJy
ZWFrSW5zaWRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdENvbHVtbkNvdW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkNvdW50KTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENv
bHVtbkZpbGwpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0Q29sdW1uRmlsbCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5HYXApOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29s
dW1uR2FwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdENvbHVtblByb2dyZXNzaW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblByb2dyZXNzaW9u
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdENvbHVtblJ1bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUnVsZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5SdWxlQ29s
b3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Q29sdW1uUnVsZUNvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVTdHlsZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRDb2x1bW5SdWxlU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUnVsZVdpZHRoKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1
bGVXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRDb2x1bW5TcGFuKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblNwYW4pOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1u
V2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0Q29sdW1uV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1ucyk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5z
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEN1cnNvclZpc2liaWxpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q3Vyc29yVmlzaWJpbGl0eSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRG
aWx0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0RmlsdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4
QmFzaXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0RmxleEJhc2lzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhEaXJlY3Rpb24pOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Rmxl
eERpcmVjdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRGbGV4Rmxvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4Rmxvdyk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4R3Jv
dyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRGbGV4R3Jvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4U2hyaW5rKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhTaHJpbmsp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0RmxleFdyYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleFdyYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Rm9udEtlcm5pbmcpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0Rm9udEtlcm5pbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Rm9udFNtb290aGluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGb250U21vb3RoaW5n
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEh5cGhlbmF0ZUNoYXJhY3Rlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0SHlwaGVuYXRlTGltaXRBZnRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRIeXBoZW5hdGVMaW1pdEFmdGVyKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEh5cGhlbmF0ZUxpbWl0QmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0QmVmb3JlKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEh5cGhlbmF0ZUxpbWl0TGluZXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRI
eXBoZW5zKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEh5cGhlbnMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SW5pdGlhbExldHRlcik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRJbml0
aWFsTGV0dGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEp1c3RpZnlDb250ZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEp1c3RpZnlDb250ZW50KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEp1c3RpZnlJdGVtcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRKdXN0aWZ5SXRlbXMpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUFsaWduKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdExpbmVBbGlnbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lQm94Q29udGFpbik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lQm94Q29u
dGFpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRMaW5lQnJlYWspOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUJyZWFrKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVDbGFtcCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRMaW5lQ2xhbXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUdyaWQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUdyaWQpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TGluZVNuYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0TGluZVNuYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TG9jYWxlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExvY2FsZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRMb2dpY2FsSGVpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExvZ2ljYWxIZWlnaHQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TG9naWNhbFdp
ZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdExvZ2ljYWxXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5BZnRlcik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJn
aW5BZnRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkFmdGVyQ29s
bGFwc2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0TWFyZ2luQmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkJlZm9yZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJn
aW5CZWZvcmVDb2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJn
aW5Cb3R0b21Db2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJn
aW5Db2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5Db2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5FbmQpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0TWFyZ2luRW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpblN0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpblN0YXJ0KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dE1hcmdpblRvcENvbGxhcHNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpblRvcENvbGxhcHNlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2sp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TWFzayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdE1hc2tCb3hJbWFnZU91dHNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VPdXRzZXQpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TWFza0JveEltYWdlUmVwZWF0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNr
Qm94SW1hZ2VTbGljZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VTbGljZSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1h
Z2VTb3VyY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlU291cmNlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZVdp
ZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZVdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tDbGlwKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1h
c2tDbGlwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hc2tDb21wb3NpdGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0NvbXBvc2l0ZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRN
YXNrSW1hZ2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0TWFza0ltYWdlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tPcmlnaW4pOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFz
a09yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRNYXNrUG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza1Bvc2l0aW9uKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1h
c2tQb3NpdGlvblgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza1Bvc2l0aW9uWCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrUG9zaXRpb25ZKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdE1hc2tQb3NpdGlvblkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza1JlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrUmVwZWF0
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdE1hc2tTaXplKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tTaXplKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tTb3VyY2VUeXBlKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdE1hc2tTb3VyY2VUeXBlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1heExvZ2ljYWxIZWlnaHQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4
TG9naWNhbEhlaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXhMb2dpY2FsV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4TG9naWNhbFdp
ZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdE1pbkxvZ2ljYWxIZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWluTG9naWNhbEhlaWdodCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRNaW5Mb2dpY2FsV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWluTG9naWNhbFdpZHRoKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE5ic3BNb2Rl
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdE5ic3BNb2RlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE9wYWNpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0T3BhY2l0eSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRP
cmRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRPcmRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRkaW5nQWZ0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGluZ0Fm
dGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFBhZGRpbmdCZWZvcmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGluZ0JlZm9yZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRk
aW5nRW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdFBhZGRpbmdFbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGluZ1N0YXJ0KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBh
ZGRpbmdTdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQ
ZXJzcGVjdGl2ZU9yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVj
dGl2ZU9yaWdpblgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBlcnNwZWN0aXZl
T3JpZ2luWSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZU9yaWdpblkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UHJpbnRDb2xvckFkanVz
dCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRQcmludENvbG9yQWRqdXN0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFJ0bE9yZGVyaW5nKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFJ0
bE9yZGVyaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdFJ1YnlQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRSdWJ5UG9zaXRpb24pOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
U2hhcGVJbWFnZVRocmVzaG9sZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRTaGFwZUltYWdlVGhyZXNob2xkKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNo
YXBlTWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBlTWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBlT3V0c2lkZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRTaGFwZU91dHNpZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dENvbWJpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dENvbWJpbmUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0VGV4dERlY29yYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb24pOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29y
YXRpb25Db2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHREZWNvcmF0
aW9uTGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbkxpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25T
a2lwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdFRleHREZWNvcmF0aW9uU2tpcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvblN0eWxl
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFRleHREZWNvcmF0aW9uU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZl
Y3QpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dEVtcGhhc2lzKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRleHRFbXBoYXNpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNDb2xvcik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0
RW1waGFzaXNDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1w
aGFzaXNQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFz
aXNTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUZXh0RmlsbENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRGaWxsQ29sb3IpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VGV4dE9yaWVudGF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRPcmllbnRhdGlvbik7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U2VjdXJp
dHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0VGV4dFNlY3VyaXR5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTaXplQWRqdXN0KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRl
eHRTaXplQWRqdXN0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTdHJva2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRU
ZXh0U3Ryb2tlQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZUNvbG9yKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTdHJva2VX
aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUZXh0U3Ryb2tlV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9u
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFRleHRVbmRlcmxpbmVQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0Wm9vbSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRU
ZXh0Wm9vbSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUcmFuc2Zvcm0pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9y
bU9yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1PcmlnaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtT3JpZ2luWCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRUcmFuc2Zvcm1PcmlnaW5YKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybU9yaWdpblkpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VHJhbnNmb3JtT3JpZ2luWSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1PcmlnaW5aKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9y
bU9yaWdpblopOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0VHJhbnNmb3JtU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtU3R5bGUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0VHJhbnNpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb25EZWxheSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRUcmFuc2l0aW9uRGVsYXkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dFRyYW5zaXRpb25EdXJhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uUHJvcGVydHkpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJh
bnNpdGlvblByb3BlcnR5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRU
cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNlckRyYWcpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNlckRyYWcp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0VXNlck1vZGlmeSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRVc2VyTW9kaWZ5KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFVzZXJTZWxlY3QpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0VXNlclNlbGVjdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRXcml0aW5nTW9kZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRXcml0aW5nTW9kZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX2FwcGxlX2Rhc2hfY29sb3JfZGFzaF9maWx0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX2NvbG9y
X2Rhc2hfZmlsdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9wYXlfZGFzaF9idXR0b25fZGFzaF9zdHlsZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX2FwcGxlX2Rhc2hfcGF5X2Rhc2hfYnV0dG9uX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9k
YXNoX3BheV9kYXNoX2J1dHRvbl9kYXNoX3R5cGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3BheV9kYXNo
X2J1dHRvbl9kYXNoX3R5cGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3RyYWlsaW5nX2Rhc2hfd29yZCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX2FwcGxlX2Rhc2hfdHJhaWxpbmdfZGFzaF93b3JkKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX2NhcHRpb25f
ZGFzaF9zaWRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX2NhcHRpb25fZGFzaF9zaWRlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9k
YXNoX2h5cGhlbnMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfaHlwaGVucyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0
X2Rhc2hfY29tYmluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfY29tYmluZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2Vw
dWJfZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2Vt
cGhhc2lzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX2NvbG9yKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNo
X3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFz
aF9lbXBoYXNpc19kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9vcmllbnRhdGlv
bik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfb3JpZW50YXRpb24pOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hf
dGV4dF9kYXNoX3RyYW5zZm9ybSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfdHJhbnNmb3Jt
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfZXB1Yl9kYXNoX3dvcmRfZGFzaF9icmVhayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF93b3JkX2Rh
c2hfYnJlYWspOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfd3JpdGluZ19kYXNoX21vZGUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rh
c2hfd3JpdGluZ19kYXNoX21vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9pbnRlcm5hbF9kYXNoX3RleHRfZGFzaF9hdXRvc2l6
aW5nX2Rhc2hfc3RhdHVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfaW50ZXJuYWxfZGFzaF90ZXh0X2Rhc2hfYXV0b3Npemlu
Z19kYXNoX3N0YXR1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FsaWduX2Rhc2hfY29udGVudCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2FsaWduX2Rhc2hfY29udGVudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FsaWduX2Rh
c2hfaXRlbXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX2l0ZW1zKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYWxpZ25fZGFzaF9zZWxmKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWxpZ25fZGFzaF9zZWxm
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfYWx0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWx0KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYW5pbWF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfZGVsYXkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25f
ZGFzaF9kZWxheSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2RpcmVjdGlvbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2RpcmVjdGlvbik7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2FuaW1hdGlvbl9kYXNoX2R1cmF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rh
c2hfZHVyYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF9maWxsX2Rhc2hfbW9k
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2ZpbGxfZGFzaF9tb2RlKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfaXRlcmF0aW9uX2Rhc2hfY291bnQpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF9pdGVyYXRpb25fZGFzaF9jb3VudCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2FuaW1hdGlvbl9kYXNoX25hbWUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25f
ZGFzaF9uYW1lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRl
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRlKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfdGltaW5nX2Rhc2hfZnVuY3Rpb24pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvbik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2FwcGVhcmFuY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hcHBlYXJhbmNlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfYmFja2Ryb3BfZGFzaF9maWx0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZHJv
cF9kYXNoX2ZpbHRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tmYWNlX2Rhc2hfdmlzaWJpbGl0eSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tmYWNlX2Rhc2hfdmlzaWJpbGl0eSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2JhY2tncm91bmRfZGFzaF9jbGlwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9k
YXNoX2NsaXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfY29tcG9zaXRlKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9kYXNoX2NvbXBvc2l0ZSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JhY2tncm91bmRfZGFzaF9vcmlnaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rh
c2hfb3JpZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9kYXNoX3NpemUpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX2FmdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYWZ0ZXIpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym9yZGVyX2Rhc2hfYWZ0ZXJfZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNo
X2FmdGVyX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9k
YXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYWZ0ZXJfZGFzaF93aWR0aCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2FmdGVyX2Rhc2hfd2lkdGgpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFz
aF9iZWZvcmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFzaF9jb2xvcik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZV9kYXNoX2NvbG9yKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYmVmb3JlX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX2JlZm9yZV9kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYmVm
b3JlX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9s
ZWZ0X2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYm90dG9tX2Rh
c2hfbGVmdF9kYXNoX3JhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JvdHRvbV9k
YXNoX3JpZ2h0X2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYm90
dG9tX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9l
bmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9i
b3JkZXJfZGFzaF9lbmRfZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNo
X2VuZF9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZW5kX2Rhc2hfc3R5
bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9lbmRfZGFzaF9zdHlsZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2JvcmRlcl9kYXNoX2VuZF9kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym9yZGVyX2Rhc2hfZW5kX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9m
aXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9maXQpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9i
b3JkZXJfZGFzaF9ob3Jpem9udGFsX2Rhc2hfc3BhY2luZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
cmRlcl9kYXNoX2hvcml6b250YWxfZGFzaF9zcGFjaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVy
X2Rhc2hfaW1hZ2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9pbWFnZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2JvcmRlcl9kYXNoX3JhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX3JhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3N0YXJ0KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfYm9yZGVyX2Rhc2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9z
dGFydF9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfc3RhcnRfZGFz
aF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3N0YXJ0X2Rhc2hfc3R5bGUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3N0eWxlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF93aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
cmRlcl9kYXNoX3N0YXJ0X2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF90
b3BfZGFzaF9sZWZ0X2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
dG9wX2Rhc2hfbGVmdF9kYXNoX3JhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3Rv
cF9kYXNoX3JpZ2h0X2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
dG9wX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF92
ZXJ0aWNhbF9kYXNoX3NwYWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF92ZXJ0
aWNhbF9kYXNoX3NwYWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9hbGlnbik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2JveF9kYXNoX2FsaWduKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZGVj
b3JhdGlvbl9kYXNoX2JyZWFrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZGVjb3JhdGlv
bl9kYXNoX2JyZWFrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZGlyZWN0aW9uKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfYm94X2Rhc2hfZGlyZWN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hf
ZmxleCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2ZsZXgpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9i
b3hfZGFzaF9mbGV4X2Rhc2hfZ3JvdXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9mbGV4
X2Rhc2hfZ3JvdXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9saW5lcyk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2JveF9kYXNoX2xpbmVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfb3JkaW5hbF9k
YXNoX2dyb3VwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfb3JkaW5hbF9kYXNoX2dyb3Vw
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfb3JpZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94
X2Rhc2hfb3JpZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfcGFjayk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2JveF9kYXNoX3BhY2spOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9yZWZsZWN0KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfcmVmbGVjdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9k
YXNoX3NoYWRvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX3NoYWRvdyk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2JveF9kYXNoX3NpemluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX3Npemlu
Zyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2NsaXBfZGFzaF9wYXRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY2xp
cF9kYXNoX3BhdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9heGlzKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfY29sdW1uX2Rhc2hfYXhpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2Jy
ZWFrX2Rhc2hfYWZ0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9icmVha19kYXNo
X2FmdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtfZGFzaF9iZWZvcmUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9icmVha19kYXNoX2JlZm9yZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2NvbHVtbl9kYXNoX2JyZWFrX2Rhc2hfaW5zaWRlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Y29sdW1uX2Rhc2hfYnJlYWtfZGFzaF9pbnNpZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFz
aF9jb3VudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2NvdW50KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfY29sdW1uX2Rhc2hfZmlsbCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2Zp
bGwpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9nYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9j
b2x1bW5fZGFzaF9nYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9wcm9ncmVzc2lvbik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3Byb2dyZXNzaW9uKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfY29sdW1uX2Rhc2hfcnVsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGUp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1
bW5fZGFzaF9ydWxlX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9y
dWxlX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lk
dGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGgpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9zcGFuKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rh
c2hfc3Bhbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfY29sdW1uX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5zKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfY29sdW1ucyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2N1cnNvcl9kYXNoX3Zpc2liaWxp
dHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9jdXJzb3JfZGFzaF92aXNpYmlsaXR5KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfZmlsdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmlsdGVyKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
ZmxleCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hf
YmFzaXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfYmFzaXMpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9mbGV4X2Rhc2hfZGlyZWN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX2RpcmVj
dGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9mbG93KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
ZmxleF9kYXNoX2Zsb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfZ3Jvdyk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2ZsZXhfZGFzaF9ncm93KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX3Nocmlu
ayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9zaHJpbmspOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9m
bGV4X2Rhc2hfd3JhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF93cmFwKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfZm9udF9kYXNoX2tlcm5pbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mb250X2Rhc2hf
a2VybmluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZvbnRfZGFzaF9zbW9vdGhpbmcpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9mb250X2Rhc2hfc21vb3RoaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rh
c2hfY2hhcmFjdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfY2hhcmFjdGVy
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFzaF9hZnRlcik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2h5cGhlbmF0ZV9kYXNoX2xpbWl0X2Rhc2hfYWZ0ZXIpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9oeXBoZW5hdGVfZGFzaF9saW1pdF9kYXNoX2JlZm9yZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2h5cGhlbmF0ZV9kYXNoX2xpbWl0X2Rhc2hfYmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVu
YXRlX2Rhc2hfbGltaXRfZGFzaF9saW5lcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbmF0ZV9k
YXNoX2xpbWl0X2Rhc2hfbGluZXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9oeXBoZW5zKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfaHlwaGVucyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2luaXRpYWxfZGFzaF9sZXR0ZXIpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9pbml0aWFsX2Rhc2hfbGV0dGVyKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfanVz
dGlmeV9kYXNoX2NvbnRlbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9qdXN0aWZ5X2Rhc2hfY29udGVu
dCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2p1c3RpZnlfZGFzaF9pdGVtcyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2p1c3RpZnlfZGFzaF9pdGVtcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9hbGlnbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9hbGlnbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFz
aF9ib3hfZGFzaF9jb250YWluKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2JveF9kYXNo
X2NvbnRhaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rhc2hfYnJlYWspOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9saW5lX2Rhc2hfYnJlYWspOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rhc2hfY2xhbXApOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rhc2hfY2xhbXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rh
c2hfZ3JpZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9ncmlkKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbGluZV9kYXNoX3NuYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rhc2hfc25hcCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2xvY2FsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xvY2FsZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2xvZ2ljYWxfZGFzaF9oZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2dpY2FsX2Rh
c2hfaGVpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hf
YWZ0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9hZnRlcik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX21hcmdpbl9kYXNoX2FmdGVyX2Rhc2hfY29sbGFwc2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9t
YXJnaW5fZGFzaF9hZnRlcl9kYXNoX2NvbGxhcHNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rh
c2hfYmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYmVmb3JlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYmVmb3JlX2Rhc2hfY29sbGFwc2UpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9tYXJnaW5fZGFzaF9iZWZvcmVfZGFzaF9jb2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21h
cmdpbl9kYXNoX2JvdHRvbV9kYXNoX2NvbGxhcHNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2lu
X2Rhc2hfYm90dG9tX2Rhc2hfY29sbGFwc2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9j
b2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2NvbGxhcHNlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbWFyZ2luX2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hf
ZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXJnaW5fZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX3RvcF9kYXNo
X2NvbGxhcHNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfdG9wX2Rhc2hfY29sbGFw
c2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9tYXNrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFzayk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21h
c2tfZGFzaF9ib3hfZGFzaF9pbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFz
aF9pbWFnZV9kYXNoX291dHNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFz
aF9pbWFnZV9kYXNoX291dHNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9p
bWFnZV9kYXNoX3JlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9p
bWFnZV9kYXNoX3JlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9pbWFn
ZV9kYXNoX3NsaWNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2JveF9kYXNoX2ltYWdl
X2Rhc2hfc2xpY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFz
aF9zb3VyY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFz
aF9zb3VyY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF93
aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZV9kYXNoX3dp
ZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2NsaXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9t
YXNrX2Rhc2hfY2xpcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9jb21wb3NpdGUpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfY29tcG9zaXRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19k
YXNoX2ltYWdlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2ltYWdlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbWFza19kYXNoX29yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9vcmln
aW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfcG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXNrX2Rhc2hfcG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfcG9zaXRpb25f
ZGFzaF94KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX3Bvc2l0aW9uX2Rhc2hfeCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbl9kYXNoX3kpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXNrX2Rhc2hfcG9zaXRpb25fZGFzaF95KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX3Jl
cGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9yZXBlYXQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXNrX2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9zaXplKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfbWFza19kYXNoX3NvdXJjZV9kYXNoX3R5cGUpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXNrX2Rhc2hfc291cmNlX2Rhc2hfdHlwZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21heF9kYXNoX2xv
Z2ljYWxfZGFzaF9oZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXhfZGFzaF9sb2dpY2FsX2Rh
c2hfaGVpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWF4X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfbWF4X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbWluX2Rhc2hfbG9naWNhbF9kYXNoX2hlaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21p
bl9kYXNoX2xvZ2ljYWxfZGFzaF9oZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9taW5fZGFzaF9sb2dp
Y2FsX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9taW5fZGFzaF9sb2dpY2FsX2Rhc2hf
d2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9uYnNwX2Rhc2hfbW9kZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X25ic3BfZGFzaF9tb2RlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfb3BhY2l0eSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX29wYWNpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9vcmRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX29y
ZGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGluZ19kYXNoX2FmdGVyKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfcGFkZGluZ19kYXNoX2FmdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGluZ19kYXNoX2JlZm9y
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BhZGRpbmdfZGFzaF9iZWZvcmUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9wYWRkaW5nX2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGluZ19kYXNoX2VuZCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX3BhZGRpbmdfZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Bh
ZGRpbmdfZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0aXZlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfcGVyc3BlY3RpdmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZV9kYXNoX29y
aWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5fZGFzaF94KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5fZGFzaF94KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGVyc3Bl
Y3RpdmVfZGFzaF9vcmlnaW5fZGFzaF95KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGVyc3BlY3RpdmVf
ZGFzaF9vcmlnaW5fZGFzaF95KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcHJpbnRfZGFzaF9jb2xvcl9kYXNo
X2FkanVzdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3ByaW50X2Rhc2hfY29sb3JfZGFzaF9hZGp1c3Qp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ydGxfZGFzaF9vcmRlcmluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3J0
bF9kYXNoX29yZGVyaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcnVieV9kYXNoX3Bvc2l0aW9uKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfcnVieV9kYXNoX3Bvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hhcGVf
ZGFzaF9pbWFnZV9kYXNoX3RocmVzaG9sZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3NoYXBlX2Rhc2hf
aW1hZ2VfZGFzaF90aHJlc2hvbGQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9zaGFwZV9kYXNoX21hcmdpbik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3NoYXBlX2Rhc2hfbWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hh
cGVfZGFzaF9vdXRzaWRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hhcGVfZGFzaF9vdXRzaWRlKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2NvbWJpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0
X2Rhc2hfY29tYmluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2RlY29yYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0
X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNo
X2RlY29yYXRpb25fZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0
aW9uX2Rhc2hfbGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rh
c2hfbGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4
dF9kYXNoX2RlY29yYXRpb25zX2Rhc2hfaW5fZGFzaF9lZmZlY3QpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90ZXh0X2Rhc2hfZGVjb3JhdGlvbnNfZGFzaF9pbl9kYXNoX2VmZmVjdCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX3RleHRfZGFzaF9lbXBoYXNpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9lbXBo
YXNpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX2NvbG9yKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX3Bvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9k
YXNoX2VtcGhhc2lzX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZW1w
aGFzaXNfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9maWxsX2Rhc2hfY29s
b3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZmlsbF9kYXNoX2NvbG9yKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfdGV4dF9kYXNoX29yaWVudGF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9k
YXNoX29yaWVudGF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3NlY3VyaXR5KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3NlY3VyaXR5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9k
YXNoX3NpemVfZGFzaF9hZGp1c3QpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc2l6ZV9k
YXNoX2FkanVzdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9zdHJva2UpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF90ZXh0X2Rhc2hfc3Ryb2tlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3N0cm9r
ZV9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3N0cm9rZV9kYXNoX2Nv
bG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3N0cm9rZV9kYXNoX3dpZHRoKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfdGV4dF9kYXNoX3N0cm9rZV9kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
dGV4dF9kYXNoX3VuZGVybGluZV9kYXNoX3Bvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4
dF9kYXNoX3VuZGVybGluZV9kYXNoX3Bvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNo
X3pvb20pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfem9vbSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3RyYW5zZm9ybSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3RyYW5zZm9ybV9kYXNoX29yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNo
X29yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3gpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF94KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hfeSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Ry
YW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3kpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFz
aF9vcmlnaW5fZGFzaF96KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNmb3JtX2Rhc2hfb3JpZ2lu
X2Rhc2hfeik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX3N0eWxlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfdHJhbnNmb3JtX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2l0aW9u
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRp
b25fZGFzaF9kZWxheSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF9kZWxheSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF9kdXJhdGlvbik7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX3RyYW5zaXRpb25fZGFzaF9kdXJhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25f
ZGFzaF9wcm9wZXJ0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF9wcm9wZXJ0
eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvbik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvbik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX3VzZXJfZGFzaF9kcmFnKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdXNlcl9k
YXNoX2RyYWcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfbW9kaWZ5KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfdXNlcl9kYXNoX21vZGlmeSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3VzZXJfZGFzaF9zZWxlY3Qp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfc2VsZWN0KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfd3Jp
dGluZ19kYXNoX21vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF93cml0aW5nX2Rhc2hfbW9kZSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGln
bl9kYXNoX2NvbnRlbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYWxpZ25fZGFzaF9jb250ZW50KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWduX2Rhc2hfaXRlbXMpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
YWxpZ25fZGFzaF9pdGVtcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9hbGlnbl9kYXNoX3NlbGYpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25fZGFzaF9zZWxmKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWdu
bWVudF9kYXNoX2Jhc2VsaW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWdubWVudF9kYXNoX2Jhc2VsaW5lKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9k
YXNoX2RlbGF5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX2RlbGF5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX2RpcmVjdGlv
bik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9hbmltYXRpb25fZGFzaF9kaXJlY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfZHVyYXRpb24pOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
YW5pbWF0aW9uX2Rhc2hfZHVyYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfZmlsbF9kYXNoX21vZGUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
YW5pbWF0aW9uX2Rhc2hfZmlsbF9kYXNoX21vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfaXRlcmF0aW9uX2Rh
c2hfY291bnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfaXRlcmF0aW9uX2Rhc2hfY291bnQpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9u
X2Rhc2hfbmFtZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9uYW1lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX3BsYXlfZGFz
aF9zdGF0ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9wbGF5X2Rhc2hfc3RhdGUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hf
dGltaW5nX2Rhc2hfZnVuY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfdGltaW5nX2Rhc2hfZnVuY3Rp
b24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYXNwZWN0X2Rhc2hfcmF0aW8pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYXNwZWN0X2Rhc2hfcmF0aW8pOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNo
X2F0dGFjaG1lbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2F0dGFjaG1lbnQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNo
X2JsZW5kX2Rhc2hfbW9kZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfYmxlbmRfZGFzaF9tb2RlKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tn
cm91bmRfZGFzaF9jbGlwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9jbGlwKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9j
b2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2ltYWdlKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
Y2tncm91bmRfZGFzaF9pbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfb3JpZ2luKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRf
ZGFzaF9vcmlnaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9w
b3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9zaXRpb25fZGFzaF94KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFz
aF9wb3NpdGlvbl9kYXNoX3gpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0aW9uX2Rhc2hfeSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNr
Z3JvdW5kX2Rhc2hfcG9zaXRpb25fZGFzaF95KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9yZXBlYXQpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFj
a2dyb3VuZF9kYXNoX3JlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rh
c2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9iYXNlbGluZV9kYXNoX3NoaWZ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jhc2VsaW5lX2Rhc2hfc2hpZnQpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmxvY2tf
ZGFzaF9zaXplKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Jsb2NrX2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9jayk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9ibG9jayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Js
b2NrX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hf
YmxvY2tfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9lbmRfZGFzaF9jb2xvcik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9ibG9ja19kYXNoX2VuZF9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rh
c2hfZW5kX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9lbmRfZGFzaF9zdHls
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX2VuZF9kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Js
b2NrX2Rhc2hfZW5kX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRf
ZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0YXJ0X2Rhc2hfY29sb3IpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydF9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2Nr
X2Rhc2hfc3RhcnRfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0YXJ0X2Rhc2hf
d2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydF9kYXNoX3dpZHRoKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX2Jsb2NrX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdHlsZSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9ibG9ja19kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfd2lkdGgp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfYm90dG9tKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0
b21fZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9jb2xvcik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9ib3R0b21fZGFzaF9sZWZ0X2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNo
X2xlZnRfZGFzaF9yYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfcmlnaHRfZGFzaF9yYWRp
dXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXMpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfYm90dG9tX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfc3R5bGUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyX2Rhc2hfYm90dG9tX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfd2lk
dGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyX2Rhc2hfY29sbGFwc2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfY29sbGFwc2UpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfZW5kX2Rhc2hfZW5kX2Rh
c2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2VuZF9kYXNoX2VuZF9kYXNoX3JhZGl1cyk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9lbmRfZGFzaF9zdGFydF9kYXNoX3JhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9lbmRfZGFzaF9z
dGFydF9kYXNoX3JhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9pbWFnZV9kYXNoX291dHNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX291
dHNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX3JlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9k
YXNoX3JlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX3NsaWNlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lt
YWdlX2Rhc2hfc2xpY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2VfZGFzaF9zb3VyY2UpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfaW1hZ2VfZGFzaF9zb3VyY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2VfZGFzaF93aWR0aCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9pbWFnZV9kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9pbmxpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5s
aW5lX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X2lubGluZV9kYXNoX2VuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRfZGFzaF9jb2xvcik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRfZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxp
bmVfZGFzaF9lbmRfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRfZGFz
aF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRfZGFzaF93aWR0aCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9pbmxpbmVfZGFzaF9lbmRfZGFzaF93aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9z
dGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVf
ZGFzaF9zdGFydF9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0X2Rh
c2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRfZGFzaF9zdHlsZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydF9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9k
YXNoX3N0YXJ0X2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRfZGFz
aF93aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxp
bmVfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF93aWR0aCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9pbmxpbmVfZGFzaF93aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2xlZnQp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfbGVmdF9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2xlZnRfZGFzaF9jb2xv
cik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9sZWZ0X2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdF9kYXNoX3N0
eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX2xlZnRfZGFzaF93aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0X2Rhc2hf
d2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyX2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3JhZGl1cyk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9yaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodF9kYXNoX2NvbG9y
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX3JpZ2h0X2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHRfZGFzaF9z
dHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodF9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3JpZ2h0X2Rh
c2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHRfZGFzaF93aWR0aCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zcGFj
aW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlcl9kYXNoX3NwYWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF9lbmRfZGFz
aF9yYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF9lbmRfZGFzaF9yYWRpdXMpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
X2Rhc2hfc3RhcnRfZGFzaF9zdGFydF9kYXNoX3JhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zdGFydF9k
YXNoX3N0YXJ0X2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3N0
eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX3RvcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3ApOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rh
c2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rh
c2hfbGVmdF9kYXNoX3JhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3BfZGFzaF9sZWZ0X2Rhc2hfcmFk
aXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3JpZ2h0X2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X3RvcF9kYXNoX3JpZ2h0X2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3N0eWxlKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX3RvcF9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3dpZHRoKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX3RvcF9kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3dpZHRoKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JveF9kYXNoX3NoYWRvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3hfZGFzaF9zaGFkb3cpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm94X2Rhc2hfc2l6
aW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JveF9kYXNoX3NpemluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha19kYXNoX2FmdGVyKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JyZWFrX2Rhc2hfYWZ0
ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYnJlYWtfZGFzaF9iZWZvcmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtfZGFzaF9iZWZvcmUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtfZGFzaF9pbnNp
ZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYnJlYWtfZGFzaF9pbnNpZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYnVmZmVyZWRfZGFzaF9yZW5kZXJpbmcpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnVmZmVy
ZWRfZGFzaF9yZW5kZXJpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fY2FwdGlvbl9kYXNoX3NpZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY2FwdGlvbl9kYXNoX3NpZGUp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Y2FyZXRfZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jYXJldF9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBfZGFzaF9wYXRoKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Ns
aXBfZGFzaF9wYXRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2NsaXBfZGFzaF9ydWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBfZGFzaF9ydWxlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hf
aW50ZXJwb2xhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX2ludGVycG9sYXRpb24pOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9pbnRl
cnBvbGF0aW9uX2Rhc2hfZmlsdGVycyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX2ludGVycG9sYXRpb25fZGFzaF9m
aWx0ZXJzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvbG9yX2Rhc2hfcHJvZmlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX3Byb2ZpbGUpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JfZGFz
aF9yZW5kZXJpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9yZW5kZXJpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9zY2hlbWUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Y29sb3JfZGFzaF9zY2hlbWUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfY291bnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfY291bnQp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Y29sdW1uX2Rhc2hfZmlsbCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9maWxsKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX2dhcCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
b2x1bW5fZGFzaF9nYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfcnVsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVt
bl9kYXNoX3J1bGVfZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfY29sb3IpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29s
dW1uX2Rhc2hfcnVsZV9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3J1bGVfZGFzaF9zdHlsZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
b2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfcnVsZV9kYXNoX3dpZHRo
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2NvbHVtbl9kYXNoX3NwYW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfc3Bhbik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF93aWR0aCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9jb2x1bW5fZGFzaF93aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVyX2Rhc2hfaW5jcmVtZW50KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50ZXJfZGFz
aF9pbmNyZW1lbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fY291bnRlcl9kYXNoX3Jlc2V0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50ZXJfZGFzaF9yZXNldCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kb21p
bmFudF9kYXNoX2Jhc2VsaW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2RvbWluYW50X2Rhc2hfYmFzZWxpbmUpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZW1wdHlfZGFzaF9j
ZWxscyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9lbXB0eV9kYXNoX2NlbGxzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VuYWJsZV9kYXNoX2JhY2tncm91bmQpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZW5hYmxl
X2Rhc2hfYmFja2dyb3VuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9maWxsX2Rhc2hfb3BhY2l0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsX2Rhc2hfb3BhY2l0eSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
aWxsX2Rhc2hfcnVsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9maWxsX2Rhc2hfcnVsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfYmFzaXMpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9k
YXNoX2Jhc2lzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZsZXhfZGFzaF9kaXJlY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX2RpcmVjdGlvbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4
X2Rhc2hfZmxvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfZmxvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfZ3Jvdyk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hf
Z3Jvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mbGV4X2Rhc2hfc2hyaW5rKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9zaHJpbmspOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX3dyYXAp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZmxleF9kYXNoX3dyYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZmxvb2RfZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbG9vZF9kYXNoX2NvbG9yKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Zs
b29kX2Rhc2hfb3BhY2l0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mbG9vZF9kYXNoX29wYWNpdHkpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2Rpc3BsYXkp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udF9kYXNoX2Rpc3BsYXkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2ZhbWlseSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfZmFtaWx5
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZvbnRfZGFzaF9mZWF0dXJlX2Rhc2hfc2V0dGluZ3MpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2ZlYXR1cmVfZGFz
aF9zZXR0aW5ncyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mb250X2Rhc2hfa2VybmluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfa2VybmluZyk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rh
c2hfb3B0aWNhbF9kYXNoX3NpemluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfb3B0aWNhbF9kYXNoX3NpemluZyk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
b250X2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3RyZXRjaCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250
X2Rhc2hfc3RyZXRjaCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3N0eWxlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFz
aF9zeW50aGVzaXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3N5bnRoZXNpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
b250X2Rhc2hfdmFyaWFudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2FsdGVybmF0ZXMpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9u
dF9kYXNoX3ZhcmlhbnRfZGFzaF9hbHRlcm5hdGVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYW50X2Rhc2hfY2Fw
cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2NhcHMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9l
YXN0X2Rhc2hfYXNpYW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9lYXN0X2Rhc2hfYXNpYW4p
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Zm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9saWdhdHVyZXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFz
aF9saWdhdHVyZXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9udW1lcmljKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92
YXJpYW50X2Rhc2hfbnVtZXJpYyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX3Bvc2l0aW9uKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zv
bnRfZGFzaF92YXJpYW50X2Rhc2hfcG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhdGlvbl9kYXNoX3Nl
dHRpbmdzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYXRpb25fZGFzaF9zZXR0aW5ncyk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfd2Vp
Z2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRfZGFzaF93ZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ2x5cGhfZGFzaF9vcmllbnRhdGlvbl9kYXNoX2hvcml6
b250YWwpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZ2x5cGhfZGFzaF9vcmllbnRhdGlvbl9kYXNoX2hvcml6b250YWwpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ2x5cGhfZGFz
aF9vcmllbnRhdGlvbl9kYXNoX3ZlcnRpY2FsKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dseXBoX2Rhc2hfb3JpZW50YXRpb25fZGFz
aF92ZXJ0aWNhbCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXJlYSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXJlYSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0
b19kYXNoX2NvbHVtbnMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2F1dG9fZGFzaF9jb2x1bW5zKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9h
dXRvX2Rhc2hfZmxvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX2Zsb3cpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2F1dG9f
ZGFzaF9yb3dzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9hdXRvX2Rhc2hfcm93cyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2dyaWRfZGFzaF9jb2x1bW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2NvbHVtbl9kYXNoX2VuZCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hf
Y29sdW1uX2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9jb2x1bW5fZGFzaF9nYXApOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2Nv
bHVtbl9kYXNoX2dhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uX2Rhc2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2Nv
bHVtbl9kYXNoX3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9nYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2dhcCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hf
cm93KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2dyaWRfZGFzaF9yb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNoX2VuZCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hf
cm93X2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9yb3dfZGFzaF9nYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNo
X2dhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ncmlkX2Rhc2hfcm93X2Rhc2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNoX3N0YXJ0
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2dyaWRfZGFzaF90ZW1wbGF0ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVtcGxhdGUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBs
YXRlX2Rhc2hfYXJlYXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBsYXRlX2Rhc2hfYXJlYXMpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNo
X3RlbXBsYXRlX2Rhc2hfY29sdW1ucyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVtcGxhdGVfZGFzaF9jb2x1bW5z
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2dyaWRfZGFzaF90ZW1wbGF0ZV9kYXNoX3Jvd3MpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBsYXRlX2Rhc2hf
cm93cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9oYW5naW5nX2Rhc2hfcHVuY3R1YXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faGFuZ2luZ19kYXNoX3B1bmN0dWF0aW9u
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2ltYWdlX2Rhc2hfb3JpZW50YXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW1hZ2VfZGFzaF9vcmllbnRhdGlvbik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZV9k
YXNoX3JlbmRlcmluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9pbWFnZV9kYXNoX3JlbmRlcmluZyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbmxpbmVfZGFzaF9zaXplKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2lubGluZV9kYXNoX3NpemUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9jayk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2Jsb2NrKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2lu
c2V0X2Rhc2hfYmxvY2tfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9ja19kYXNoX2VuZCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNl
dF9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9ja19kYXNoX3N0YXJ0KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2lu
c2V0X2Rhc2hfaW5saW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lX2Rh
c2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lX2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lX2Rh
c2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25faW5zZXRfZGFzaF9pbmxpbmVfZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5X2Rhc2hfY29u
dGVudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9qdXN0aWZ5X2Rhc2hfY29udGVudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5X2Rhc2hfaXRlbXMpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlm
eV9kYXNoX2l0ZW1zKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2p1c3RpZnlfZGFzaF9zZWxmKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlfZGFzaF9zZWxmKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2xldHRl
cl9kYXNoX3NwYWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fbGV0dGVyX2Rhc2hfc3BhY2luZyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saWdodGluZ19kYXNoX2NvbG9y
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2xpZ2h0aW5nX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGluZV9kYXNoX2JyZWFrKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVfZGFzaF9icmVh
ayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9saW5lX2Rhc2hfaGVpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVfZGFzaF9oZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdF9kYXNoX3N0eWxlKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2xpc3RfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF9pbWFnZSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hf
c3R5bGVfZGFzaF9pbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF9wb3NpdGlvbik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rh
c2hfc3R5bGVfZGFzaF9wb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF90eXBlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3Rf
ZGFzaF9zdHlsZV9kYXNoX3R5cGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfYmxvY2spOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfYmxv
Y2spOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luX2Rhc2hfYmxvY2tfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfYmxvY2tfZGFzaF9l
bmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luX2Rhc2hfYmxvY2tfZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ibG9ja19kYXNo
X3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX21hcmdpbl9kYXNoX2JvdHRvbSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ib3R0b20pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rh
c2hfaW5saW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2lubGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9pbmxpbmVfZGFzaF9l
bmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2lubGluZV9kYXNo
X3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX21hcmdpbl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2xlZnQp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luX2Rhc2hfbGVmdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9yaWdodCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9yaWdo
dCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9tYXJnaW5fZGFzaF90b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfdG9wKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlcl9kYXNoX2VuZCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9t
YXJrZXJfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfbWlkKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlcl9kYXNoX21pZCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJrZXJf
ZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXJrZXJfZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrX2Rhc2hfdHlwZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrX2Rh
c2hfdHlwZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9tYXRoX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF0aF9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNoX2Jsb2Nr
X2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXhfZGFzaF9ibG9ja19kYXNoX3NpemUpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4X2Rhc2hfaGVpZ2h0KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X21heF9kYXNoX2hlaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXhfZGFzaF9pbmxpbmVfZGFzaF9zaXplKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNoX2lu
bGluZV9kYXNoX3NpemUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fbWF4X2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4X2Rhc2hfd2lkdGgpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWluX2Rhc2hf
YmxvY2tfZGFzaF9zaXplKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX2Jsb2NrX2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF9oZWln
aHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fbWluX2Rhc2hfaGVpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX2lubGluZV9kYXNoX3NpemUpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWluX2Rh
c2hfaW5saW5lX2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF93aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF93aWR0aCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taXhf
ZGFzaF9ibGVuZF9kYXNoX21vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWl4X2Rhc2hfYmxlbmRfZGFzaF9tb2RlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX29iamVjdF9k
YXNoX2ZpdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9vYmplY3RfZGFzaF9maXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0X2Rhc2hfcG9zaXRpb24pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0
X2Rhc2hfcG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fb3V0bGluZV9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFzaF9jb2xvcik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9v
dXRsaW5lX2Rhc2hfb2Zmc2V0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFzaF9vZmZzZXQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZV9kYXNoX3N0
eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX291dGxpbmVfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZV9k
YXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX292ZXJmbG93X2Rhc2hfd3JhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd19kYXNoX3dyYXApOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZs
b3dfZGFzaF94KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX292ZXJmbG93X2Rhc2hfeCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd19kYXNoX3kpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3df
ZGFzaF95KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX292ZXJzY3JvbGxfZGFzaF9iZWhhdmlvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsX2Rhc2hfYmVoYXZp
b3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fb3ZlcnNjcm9sbF9kYXNoX2JlaGF2aW9yX2Rhc2hfeCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsX2Rhc2hfYmVo
YXZpb3JfZGFzaF94KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX292ZXJzY3JvbGxfZGFzaF9iZWhhdmlvcl9kYXNoX3kpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9s
bF9kYXNoX2JlaGF2aW9yX2Rhc2hfeSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYmxvY2spOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNo
X2Jsb2NrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3BhZGRpbmdfZGFzaF9ibG9ja19kYXNoX2VuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYmxvY2tf
ZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2Js
b2NrX2Rhc2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2JvdHRvbSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYm90dG9t
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3BhZGRpbmdfZGFzaF9pbmxpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2lubGluZSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hf
aW5saW5lX2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9lbmQpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19k
YXNoX2lubGluZV9kYXNoX3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9zdGFydCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
YWRkaW5nX2Rhc2hfbGVmdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfbGVmdCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfcmlnaHQp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fcGFkZGluZ19kYXNoX3JpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF90b3ApOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX3Rv
cCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9wYWdlX2Rhc2hfYnJlYWtfZGFzaF9hZnRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlX2Rhc2hfYnJlYWtfZGFzaF9hZnRl
cik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9wYWdlX2Rhc2hfYnJlYWtfZGFzaF9iZWZvcmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZV9kYXNoX2JyZWFrX2Rhc2hfYmVm
b3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2luc2lkZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlX2Rhc2hfYnJlYWtfZGFzaF9p
bnNpZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fcGFpbnRfZGFzaF9vcmRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWludF9kYXNoX29yZGVyKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rh
c2hfb3JpZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3Jp
Z2luX2Rhc2hfeCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZV9kYXNoX29yaWdpbl9kYXNoX3gpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVf
ZGFzaF9vcmlnaW5fZGFzaF95KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luX2Rhc2hfeSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFj
ZV9kYXNoX2NvbnRlbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fcGxhY2VfZGFzaF9jb250ZW50KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlX2Rhc2hfaXRlbXMpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
cGxhY2VfZGFzaF9pdGVtcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wbGFjZV9kYXNoX3NlbGYpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VfZGFzaF9zZWxmKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BvaW50
ZXJfZGFzaF9ldmVudHMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fcG9pbnRlcl9kYXNoX2V2ZW50cyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9yb3dfZGFzaF9nYXApOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcm93
X2Rhc2hfZ2FwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbF9kYXNoX2JlaGF2aW9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX2JlaGF2aW9yKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbF9kYXNoX21hcmdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW4pOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2lu
X2Rhc2hfYmxvY2spOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYmxvY2spOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hf
bWFyZ2luX2Rhc2hfYmxvY2tfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYmxv
Y2tfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYmxvY2tfZGFzaF9zdGFydCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9ibG9ja19kYXNoX3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdp
bl9kYXNoX2JvdHRvbSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9ib3R0b20pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfbWFyZ2luX2Rhc2hfaW5saW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2lubGluZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9pbmxpbmVfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFy
Z2luX2Rhc2hfaW5saW5lX2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2lubGluZV9k
YXNoX3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbF9kYXNoX21hcmdpbl9kYXNoX2xlZnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfbGVm
dCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9yaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFz
aF9yaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF90b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2lu
X2Rhc2hfdG9wKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZyk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3Jv
bGxfZGFzaF9wYWRkaW5nX2Rhc2hfYmxvY2spOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2Js
b2NrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9ibG9ja19kYXNoX2VuZCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFz
aF9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2Js
b2NrX2Rhc2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfc3Rh
cnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2JvdHRvbSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5n
X2Rhc2hfYm90dG9tKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9pbmxpbmUpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfcGFkZGluZ19kYXNoX2lubGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfaW5saW5lX2Rh
c2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9lbmQpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
X2Rhc2hfcGFkZGluZ19kYXNoX2lubGluZV9kYXNoX3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRp
bmdfZGFzaF9pbmxpbmVfZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfbGVmdCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfbGVmdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hf
cmlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3JpZ2h0KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRp
bmdfZGFzaF90b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3RvcCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9z
bmFwX2Rhc2hfYWxpZ24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX2FsaWduKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNo
X3NuYXBfZGFzaF9tYXJnaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxf
ZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hfYm90dG9tKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFz
aF9tYXJnaW5fZGFzaF9ib3R0b20pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNoX2xl
ZnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNoX2xlZnQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hf
c25hcF9kYXNoX21hcmdpbl9kYXNoX3JpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJn
aW5fZGFzaF9yaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hfdG9wKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW5fZGFzaF90b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNo
X3N0b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX3N0b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNo
X3R5cGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX3R5cGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9pbWFnZV9kYXNo
X3RocmVzaG9sZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNoX2ltYWdlX2Rhc2hfdGhyZXNob2xkKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hf
bWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3NoYXBlX2Rhc2hfbWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hfb3V0c2lkZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9k
YXNoX291dHNpZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fc2hhcGVfZGFzaF9yZW5kZXJpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9yZW5kZXJpbmcp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
c3BlYWtfZGFzaF9hcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zcGVha19kYXNoX2FzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0b3BfZGFzaF9jb2xvcik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wX2Rh
c2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fc3RvcF9kYXNoX29wYWNpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3RvcF9kYXNoX29wYWNpdHkpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rh
c2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfZGFzaGFycmF5KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0
cm9rZV9kYXNoX2Rhc2hhcnJheSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9kYXNob2Zmc2V0KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNo
X2Rhc2hvZmZzZXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfbGluZWNhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9saW5lY2FwKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0
cm9rZV9kYXNoX2xpbmVqb2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xpbmVqb2luKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX21p
dGVybGltaXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfbWl0ZXJsaW1pdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9vcGFjaXR5KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3N0cm9rZV9kYXNoX29wYWNpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfd2lk
dGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc3VwcG9ydGVkX2Rhc2hfY29sb3JfZGFzaF9zY2hlbWVzKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N1cHBvcnRlZF9kYXNoX2Nv
bG9yX2Rhc2hfc2NoZW1lcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl90YWJfZGFzaF9zaXplKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RhYl9kYXNoX3NpemUpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGFibGVfZGFz
aF9sYXlvdXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGFibGVfZGFzaF9sYXlvdXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2FsaWduKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFz
aF9hbGlnbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl90ZXh0X2Rhc2hfYW5jaG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9hbmNob3IpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2Rl
Y29yYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFz
aF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNv
cmF0aW9uX2Rhc2hfbGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xpbmUpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9k
YXNoX2RlY29yYXRpb25fZGFzaF9za2lwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tp
cCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9u
X2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF90aGlja25lc3MpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9k
YXNoX2RlY29yYXRpb25fZGFzaF90aGlja25lc3MpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2VtcGhhc2lzKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRf
ZGFzaF9lbXBoYXNpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9jb2xvcik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hf
ZW1waGFzaXNfZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3NpdGlvbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9z
dHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfaW5kZW50KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHRfZGFzaF9pbmRlbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX29yaWVudGF0aW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9vcmll
bnRhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl90ZXh0X2Rhc2hfb3ZlcmZsb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX292ZXJmbG93KTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFz
aF9yZW5kZXJpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3JlbmRlcmluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfc2hhZG93KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Rl
eHRfZGFzaF9zaGFkb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3RyYW5zZm9ybSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfdHJhbnNmb3Jt
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHRfZGFzaF91bmRlcmxpbmVfZGFzaF9vZmZzZXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3VuZGVybGluZV9k
YXNoX29mZnNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0X2Rhc2hfdW5kZXJsaW5lX2Rhc2hfcG9zaXRpb24pOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNo
X3VuZGVybGluZV9kYXNoX3Bvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RvdWNoX2Rhc2hfYWN0aW9uKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RvdWNoX2Rhc2hf
YWN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3RyYW5zZm9ybV9kYXNoX2JveCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9ib3gpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3Jt
X2Rhc2hfb3JpZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9vcmln
aW5fZGFzaF94KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3gpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hf
b3JpZ2luX2Rhc2hfeSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF95KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9k
YXNoX29yaWdpbl9kYXNoX3opOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hfeik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zv
cm1fZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uX2Rhc2hfZGVs
YXkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fdHJhbnNpdGlvbl9kYXNoX2RlbGF5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25fZGFzaF9kdXJhdGlvbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
cmFuc2l0aW9uX2Rhc2hfZHVyYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbl9kYXNoX3Byb3BlcnR5KTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5z
aXRpb25fZGFzaF9wcm9wZXJ0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uX2Rhc2hfdGltaW5nX2Rhc2hfZnVuY3Rpb24p
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fdHJhbnNpdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3VuaWNvZGVfZGFzaF9iaWRp
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3VuaWNvZGVfZGFzaF9iaWRpKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3VuaWNvZGVfZGFzaF9yYW5nZSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl91bmljb2RlX2Rhc2hf
cmFuZ2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fdmVjdG9yX2Rhc2hfZWZmZWN0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3ZlY3Rvcl9kYXNoX2VmZmVjdCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl92ZXJ0aWNhbF9k
YXNoX2FsaWduKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3ZlcnRpY2FsX2Rhc2hfYWxpZ24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2hpdGVfZGFzaF9zcGFjZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93aGl0
ZV9kYXNoX3NwYWNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dpbGxfZGFzaF9jaGFuZ2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2lsbF9kYXNoX2NoYW5nZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkX2Rh
c2hfYnJlYWspOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd29yZF9kYXNoX2JyZWFrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRfZGFzaF9zcGFjaW5nKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRfZGFz
aF9zcGFjaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dvcmRfZGFzaF93cmFwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRfZGFzaF93cmFwKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dyaXRpbmdfZGFzaF9t
b2RlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dyaXRpbmdfZGFzaF9tb2RlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3pfZGFzaF9pbmRleCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl96X2Rhc2hfaW5kZXgpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1
YkNhcHRpb25TaWRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2VwdWJDYXB0aW9uU2lkZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViSHlwaGVucyk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViSHlwaGVu
cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9lcHViVGV4dENvbWJpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRDb21iaW5lKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0RW1waGFzaXMpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZXB1YlRleHRFbXBoYXNpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRFbXBoYXNp
c0NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2VwdWJUZXh0RW1waGFzaXNTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzU3R5bGUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1
YlRleHRPcmllbnRhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dE9yaWVudGF0aW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0VHJhbnNmb3Jt
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2VwdWJUZXh0VHJhbnNmb3JtKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJXb3JkQnJlYWspOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YldvcmRCcmVhayk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHVi
V3JpdGluZ01vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZXB1YldyaXRpbmdNb2RlKTsKCmNsYXNzIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvblByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewpwdWJs
aWM6CiAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgc3RhdGljIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
ewogICAgICAgIEpTQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGU+KHZt
LmhlYXApKSBKU0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICByZXR1
cm4gcHRyOwogICAgfQoKICAgIERFQ0xBUkVfSU5GTzsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgogICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgewogICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZSwgQmFzZSk7
CiAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwogICAgfQogICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgIHsKICAgICAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CiAgICB9Cgpwcml2YXRlOgogICAgSlNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQogICAgewog
ICAgfQoKICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwp9OwpTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGUsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZTo6QmFzZSk7Cgp1c2luZyBKU0NTU1N0eWxlRGVj
bGFyYXRpb25ET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj47Cgp0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKewogICAgVU5VU0VEX1BB
UkFNKHZtKTsKICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKfQoK
dGVtcGxhdGU8PiB2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbkRPTUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CnsKICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU0NTU1N0
eWxlRGVjbGFyYXRpb246OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJDU1NTdHlsZURl
Y2xhcmF0aW9uIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwp9Cgp0ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU0NTU1N0eWxlRGVjbGFyYXRpb25ET01Db25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiQ1NTU3R5bGVEZWNsYXJhdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDU1NTdHlsZURlY2xhcmF0aW9uRE9NQ29uc3RydWN0
b3IpIH07CgovKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KCnN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGVUYWJsZVZhbHVlc1tdID0K
ewogICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbkNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oMCkgfSB9LAogICAgeyAiY3NzVGV4dCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Nzc1RleHQp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY3NzVGV4dCkgfSB9LAogICAgeyAibGVuZ3RoIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9sZW5ndGgp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCiAgICB7ICJwYXJlbnRSdWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYXJlbnRSdWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgeyAiY3NzRmxvYXQi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jc3NGbG9hdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jc3NG
bG9hdCkgfSB9LAogICAgeyAiQXBwbGVDb2xvckZpbHRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX0Fw
cGxlQ29sb3JGaWx0ZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVDb2xvckZpbHRlcikg
fSB9LAogICAgeyAiQXBwbGVQYXlCdXR0b25TdHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX0FwcGxl
UGF5QnV0dG9uU3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVQYXlCdXR0b25TdHls
ZSkgfSB9LAogICAgeyAiQXBwbGVQYXlCdXR0b25UeXBlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fQXBw
bGVQYXlCdXR0b25UeXBlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0FwcGxlUGF5QnV0dG9uVHlw
ZSkgfSB9LAogICAgeyAiQXBwbGVUcmFpbGluZ1dvcmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9BcHBs
ZVRyYWlsaW5nV29yZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9BcHBsZVRyYWlsaW5nV29yZCkg
fSB9LAogICAgeyAiRXB1YkNhcHRpb25TaWRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YkNhcHRp
b25TaWRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJDYXB0aW9uU2lkZSkgfSB9LAogICAg
eyAiRXB1Ykh5cGhlbnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViSHlwaGVucyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9FcHViSHlwaGVucykgfSB9LAogICAgeyAiRXB1YlRleHRDb21iaW5lIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fRXB1YlRleHRDb21iaW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X0VwdWJUZXh0Q29tYmluZSkgfSB9LAogICAgeyAiRXB1YlRleHRFbXBoYXNpcyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX0VwdWJUZXh0RW1waGFzaXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YlRl
eHRFbXBoYXNpcykgfSB9LAogICAgeyAiRXB1YlRleHRFbXBoYXNpc0NvbG9yIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fRXB1YlRleHRFbXBoYXNpc0NvbG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0Vw
dWJUZXh0RW1waGFzaXNDb2xvcikgfSB9LAogICAgeyAiRXB1YlRleHRFbXBoYXNpc1N0eWxlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fRXB1YlRleHRFbXBoYXNpc1N0eWxlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX0VwdWJUZXh0RW1waGFzaXNTdHlsZSkgfSB9LAogICAgeyAiRXB1YlRleHRPcmllbnRh
dGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0T3JpZW50YXRpb24pLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fRXB1YlRleHRPcmllbnRhdGlvbikgfSB9LAogICAgeyAiRXB1YlRleHRUcmFu
c2Zvcm0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dFRyYW5zZm9ybSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9FcHViVGV4dFRyYW5zZm9ybSkgfSB9LAogICAgeyAiRXB1YldvcmRCcmVhayIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX0VwdWJXb3JkQnJlYWspLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
RXB1YldvcmRCcmVhaykgfSB9LAogICAgeyAiRXB1YldyaXRpbmdNb2RlIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fRXB1YldyaXRpbmdNb2RlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJXcml0aW5n
TW9kZSkgfSB9LAogICAgeyAiSW50ZXJuYWxUZXh0QXV0b3NpemluZ1N0YXR1cyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX0ludGVybmFsVGV4dEF1dG9zaXppbmdTdGF0dXMpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fSW50ZXJuYWxUZXh0QXV0b3NpemluZ1N0YXR1cykgfSB9LAogICAgeyAiV2Via2l0QWxp
Z25Db250ZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25Db250ZW50KSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEFsaWduQ29udGVudCkgfSB9LAogICAgeyAiV2Via2l0QWxp
Z25JdGVtcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFsaWduSXRlbXMpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0QWxpZ25JdGVtcykgfSB9LAogICAgeyAiV2Via2l0QWxpZ25TZWxm
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25TZWxmKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEFsaWduU2VsZikgfSB9LAogICAgeyAiV2Via2l0QWx0Iiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0QWx0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFsdCkgfSB9LAog
ICAgeyAiV2Via2l0QW5pbWF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9u
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbikgfSB9LAogICAgeyAiV2Vi
a2l0QW5pbWF0aW9uRGVsYXkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25EZWxh
eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25EZWxheSkgfSB9LAogICAg
eyAiV2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5p
bWF0aW9uRGlyZWN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkRp
cmVjdGlvbikgfSB9LAogICAgeyAiV2Via2l0QW5pbWF0aW9uRHVyYXRpb24iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRBbmltYXRpb25EdXJhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRBbmltYXRpb25EdXJhdGlvbikgfSB9LAogICAgeyAiV2Via2l0QW5pbWF0aW9uRmlsbE1v
ZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25GaWxsTW9kZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25GaWxsTW9kZSkgfSB9LAogICAgeyAiV2Via2l0
QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRp
b25JdGVyYXRpb25Db3VudCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25J
dGVyYXRpb25Db3VudCkgfSB9LAogICAgeyAiV2Via2l0QW5pbWF0aW9uTmFtZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbk5hbWUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0QW5pbWF0aW9uTmFtZSkgfSB9LAogICAgeyAiV2Via2l0QW5pbWF0aW9uUGxheVN0YXRlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uUGxheVN0YXRlKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZSkgfSB9LAogICAgeyAiV2Via2l0QW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25U
aW1pbmdGdW5jdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25UaW1p
bmdGdW5jdGlvbikgfSB9LAogICAgeyAiV2Via2l0QXBwZWFyYW5jZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEFwcGVhcmFuY2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QXBwZWFy
YW5jZSkgfSB9LAogICAgeyAiV2Via2l0QmFja2Ryb3BGaWx0ZXIiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRCYWNrZHJvcEZpbHRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNr
ZHJvcEZpbHRlcikgfSB9LAogICAgeyAiV2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5KSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSkgfSB9LAogICAgeyAiV2Via2l0QmFja2dyb3Vu
ZENsaXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kQ2xpcCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kQ2xpcCkgfSB9LAogICAgeyAiV2Via2l0QmFj
a2dyb3VuZENvbXBvc2l0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tncm91bmRDb21w
b3NpdGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSkg
fSB9LAogICAgeyAiV2Via2l0QmFja2dyb3VuZE9yaWdpbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJhY2tncm91bmRPcmlnaW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dy
b3VuZE9yaWdpbikgfSB9LAogICAgeyAiV2Via2l0QmFja2dyb3VuZFNpemUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kU2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRCYWNrZ3JvdW5kU2l6ZSkgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyQWZ0ZXIiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRCb3JkZXJBZnRlcikgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyQWZ0ZXJDb2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVyQ29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcikgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyQWZ0ZXJT
dHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVyU3R5bGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSkgfSB9LAogICAgeyAiV2Via2l0
Qm9yZGVyQWZ0ZXJXaWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVyV2lk
dGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCkgfSB9LAog
ICAgeyAiV2Via2l0Qm9yZGVyQmVmb3JlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
QmVmb3JlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJlZm9yZSkgfSB9LAog
ICAgeyAiV2Via2l0Qm9yZGVyQmVmb3JlQ29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJCZWZvcmVDb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZv
cmVDb2xvcikgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVTdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJCZWZvcmVTdHlsZSkgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyQmVmb3JlV2lk
dGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVXaWR0aCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVXaWR0aCkgfSB9LAogICAgeyAiV2Via2l0
Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJv
dHRvbUxlZnRSYWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQm90dG9t
TGVmdFJhZGl1cykgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cykgfSB9LAogICAgeyAi
V2Via2l0Qm9yZGVyRW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyRW5kKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckVuZCkgfSB9LAogICAgeyAiV2Via2l0Qm9y
ZGVyRW5kQ29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRDb2xvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRDb2xvcikgfSB9LAogICAgeyAiV2Vi
a2l0Qm9yZGVyRW5kU3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRTdHls
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRTdHlsZSkgfSB9LAogICAg
eyAiV2Via2l0Qm9yZGVyRW5kV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJF
bmRXaWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRXaWR0aCkgfSB9
LAogICAgeyAiV2Via2l0Qm9yZGVyRml0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
Rml0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckZpdCkgfSB9LAogICAgeyAi
V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJIb3Jpem9udGFsU3BhY2luZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3Jk
ZXJIb3Jpem9udGFsU3BhY2luZykgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVySW1hZ2UiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJJbWFnZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJJbWFnZSkgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyUmFkaXVzIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyUmFkaXVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJvcmRlclJhZGl1cykgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyU3RhcnQiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJTdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRCb3JkZXJTdGFydCkgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyU3RhcnRDb2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0Q29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Qm9yZGVyU3RhcnRDb2xvcikgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyU3RhcnRT
dHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0U3R5bGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyU3RhcnRTdHlsZSkgfSB9LAogICAgeyAiV2Via2l0
Qm9yZGVyU3RhcnRXaWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0V2lk
dGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyU3RhcnRXaWR0aCkgfSB9LAog
ICAgeyAiV2Via2l0Qm9yZGVyVG9wTGVmdFJhZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEJvcmRlclRvcExlZnRSYWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
VG9wTGVmdFJhZGl1cykgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyVG9wUmlnaHRSYWRpdXMiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJUb3BSaWdodFJhZGl1cyksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJUb3BSaWdodFJhZGl1cykgfSB9LAogICAgeyAiV2Via2l0
Qm9yZGVyVmVydGljYWxTcGFjaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyVmVy
dGljYWxTcGFjaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclZlcnRpY2Fs
U3BhY2luZykgfSB9LAogICAgeyAiV2Via2l0Qm94QWxpZ24iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3hBbGlnbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hBbGlnbikgfSB9
LAogICAgeyAiV2Via2l0Qm94RGVjb3JhdGlvbkJyZWFrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Qm94RGVjb3JhdGlvbkJyZWFrKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveERl
Y29yYXRpb25CcmVhaykgfSB9LAogICAgeyAiV2Via2l0Qm94RGlyZWN0aW9uIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm94RGlyZWN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEJveERpcmVjdGlvbikgfSB9LAogICAgeyAiV2Via2l0Qm94RmxleCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEJveEZsZXgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94RmxleCkg
fSB9LAogICAgeyAiV2Via2l0Qm94RmxleEdyb3VwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Qm94RmxleEdyb3VwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveEZsZXhHcm91cCkg
fSB9LAogICAgeyAiV2Via2l0Qm94TGluZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hM
aW5lcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hMaW5lcykgfSB9LAogICAgeyAi
V2Via2l0Qm94T3JkaW5hbEdyb3VwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94T3JkaW5h
bEdyb3VwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveE9yZGluYWxHcm91cCkgfSB9
LAogICAgeyAiV2Via2l0Qm94T3JpZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94T3Jp
ZW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveE9yaWVudCkgfSB9LAogICAgeyAi
V2Via2l0Qm94UGFjayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFBhY2spLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94UGFjaykgfSB9LAogICAgeyAiV2Via2l0Qm94UmVmbGVj
dCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFJlZmxlY3QpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0Qm94UmVmbGVjdCkgfSB9LAogICAgeyAiV2Via2l0Qm94U2hhZG93Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94U2hhZG93KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJveFNoYWRvdykgfSB9LAogICAgeyAiV2Via2l0Qm94U2l6aW5nIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0Qm94U2l6aW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFNp
emluZykgfSB9LAogICAgeyAiV2Via2l0Q2xpcFBhdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRDbGlwUGF0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDbGlwUGF0aCkgfSB9LAog
ICAgeyAiV2Via2l0Q29sdW1uQXhpcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkF4
aXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uQXhpcykgfSB9LAogICAgeyAi
V2Via2l0Q29sdW1uQnJlYWtBZnRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkJy
ZWFrQWZ0ZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uQnJlYWtBZnRlcikg
fSB9LAogICAgeyAiV2Via2l0Q29sdW1uQnJlYWtCZWZvcmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRDb2x1bW5CcmVha0JlZm9yZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1
bW5CcmVha0JlZm9yZSkgfSB9LAogICAgeyAiV2Via2l0Q29sdW1uQnJlYWtJbnNpZGUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0luc2lkZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRDb2x1bW5CcmVha0luc2lkZSkgfSB9LAogICAgeyAiV2Via2l0Q29sdW1uQ291
bnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5Db3VudCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRDb2x1bW5Db3VudCkgfSB9LAogICAgeyAiV2Via2l0Q29sdW1uRmlsbCIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkZpbGwpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Q29sdW1uRmlsbCkgfSB9LAogICAgeyAiV2Via2l0Q29sdW1uR2FwIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Q29sdW1uR2FwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dENvbHVtbkdhcCkgfSB9LAogICAgeyAiV2Via2l0Q29sdW1uUHJvZ3Jlc3Npb24iLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5Qcm9ncmVzc2lvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRDb2x1bW5Qcm9ncmVzc2lvbikgfSB9LAogICAgeyAiV2Via2l0Q29sdW1uUnVsZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblJ1bGUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Q29sdW1uUnVsZSkgfSB9LAogICAgeyAiV2Via2l0Q29sdW1uUnVsZUNvbG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZUNvbG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdENvbHVtblJ1bGVDb2xvcikgfSB9LAogICAgeyAiV2Via2l0Q29sdW1uUnVs
ZVN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZVN0eWxlKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblJ1bGVTdHlsZSkgfSB9LAogICAgeyAiV2Via2l0
Q29sdW1uUnVsZVdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZVdpZHRo
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblJ1bGVXaWR0aCkgfSB9LAogICAg
eyAiV2Via2l0Q29sdW1uU3BhbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblNwYW4p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uU3BhbikgfSB9LAogICAgeyAiV2Vi
a2l0Q29sdW1uV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5XaWR0aCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5XaWR0aCkgfSB9LAogICAgeyAiV2Via2l0
Q29sdW1ucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbnMpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Q29sdW1ucykgfSB9LAogICAgeyAiV2Via2l0Q3Vyc29yVmlzaWJpbGl0
eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEN1cnNvclZpc2liaWxpdHkpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Q3Vyc29yVmlzaWJpbGl0eSkgfSB9LAogICAgeyAiV2Via2l0Rmls
dGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmlsdGVyKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEZpbHRlcikgfSB9LAogICAgeyAiV2Via2l0RmxleCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEZsZXgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleCkgfSB9LAog
ICAgeyAiV2Via2l0RmxleEJhc2lzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleEJhc2lz
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhCYXNpcykgfSB9LAogICAgeyAiV2Vi
a2l0RmxleERpcmVjdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhEaXJlY3Rpb24p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleERpcmVjdGlvbikgfSB9LAogICAgeyAi
V2Via2l0RmxleEZsb3ciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4RmxvdyksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4RmxvdykgfSB9LAogICAgeyAiV2Via2l0RmxleEdy
b3ciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4R3JvdyksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRGbGV4R3JvdykgfSB9LAogICAgeyAiV2Via2l0RmxleFNocmluayIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhTaHJpbmspLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0RmxleFNocmluaykgfSB9LAogICAgeyAiV2Via2l0RmxleFdyYXAiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRGbGV4V3JhcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4V3Jh
cCkgfSB9LAogICAgeyAiV2Via2l0Rm9udEtlcm5pbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRGb250S2VybmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGb250S2VybmluZykg
fSB9LAogICAgeyAiV2Via2l0Rm9udFNtb290aGluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEZvbnRTbW9vdGhpbmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Rm9udFNtb290aGlu
ZykgfSB9LAogICAgeyAiV2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEh5cGhlbmF0ZUNoYXJhY3RlcikgfSB9LAogICAgeyAiV2Via2l0SHlwaGVuYXRlTGltaXRBZnRl
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxpbWl0QWZ0ZXIpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRBZnRlcikgfSB9LAogICAgeyAiV2Vi
a2l0SHlwaGVuYXRlTGltaXRCZWZvcmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5h
dGVMaW1pdEJlZm9yZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5hdGVMaW1p
dEJlZm9yZSkgfSB9LAogICAgeyAiV2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcykgfSB9LAogICAgeyAiV2Via2l0SHlwaGVucyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbnMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0SHlwaGVucykgfSB9LAogICAgeyAiV2Via2l0SW5pdGlhbExldHRlciIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEluaXRpYWxMZXR0ZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0SW5pdGlhbExldHRlcikgfSB9LAogICAgeyAiV2Via2l0SnVzdGlmeUNvbnRlbnQiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRKdXN0aWZ5Q29udGVudCksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRKdXN0aWZ5Q29udGVudCkgfSB9LAogICAgeyAiV2Via2l0SnVzdGlmeUl0ZW1zIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SnVzdGlmeUl0ZW1zKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEp1c3RpZnlJdGVtcykgfSB9LAogICAgeyAiV2Via2l0TGluZUFsaWduIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZUFsaWduKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdExpbmVBbGlnbikgfSB9LAogICAgeyAiV2Via2l0TGluZUJveENvbnRhaW4iLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRMaW5lQm94Q29udGFpbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRMaW5lQm94Q29udGFpbikgfSB9LAogICAgeyAiV2Via2l0TGluZUJyZWFrIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TGluZUJyZWFrKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dExpbmVCcmVhaykgfSB9LAogICAgeyAiV2Via2l0TGluZUNsYW1wIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0TGluZUNsYW1wKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVDbGFt
cCkgfSB9LAogICAgeyAiV2Via2l0TGluZUdyaWQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRM
aW5lR3JpZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lR3JpZCkgfSB9LAogICAg
eyAiV2Via2l0TGluZVNuYXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lU25hcCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lU25hcCkgfSB9LAogICAgeyAiV2Via2l0TG9j
YWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TG9jYWxlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdExvY2FsZSkgfSB9LAogICAgeyAiV2Via2l0TG9naWNhbEhlaWdodCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdExvZ2ljYWxIZWlnaHQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TG9naWNhbEhlaWdodCkgfSB9LAogICAgeyAiV2Via2l0TG9naWNhbFdpZHRoIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0TG9naWNhbFdpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdExvZ2ljYWxXaWR0aCkgfSB9LAogICAgeyAiV2Via2l0TWFyZ2luQWZ0ZXIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5BZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRNYXJnaW5BZnRlcikgfSB9LAogICAgeyAiV2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSkgfSB9LAogICAgeyAiV2Via2l0
TWFyZ2luQmVmb3JlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luQmVmb3JlKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpbkJlZm9yZSkgfSB9LAogICAgeyAiV2Via2l0
TWFyZ2luQmVmb3JlQ29sbGFwc2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5CZWZv
cmVDb2xsYXBzZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5CZWZvcmVDb2xs
YXBzZSkgfSB9LAogICAgeyAiV2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSkgfSB9LAogICAgeyAiV2Via2l0TWFyZ2luQ29s
bGFwc2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5Db2xsYXBzZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5Db2xsYXBzZSkgfSB9LAogICAgeyAiV2Via2l0TWFy
Z2luRW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luRW5kKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdE1hcmdpbkVuZCkgfSB9LAogICAgeyAiV2Via2l0TWFyZ2luU3RhcnQi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5TdGFydCksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRNYXJnaW5TdGFydCkgfSB9LAogICAgeyAiV2Via2l0TWFyZ2luVG9wQ29sbGFw
c2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSkgfSB9LAogICAgeyAiV2Via2l0
TWFzayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2spLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0TWFzaykgfSB9LAogICAgeyAiV2Via2l0TWFza0JveEltYWdlIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dE1hc2tCb3hJbWFnZSkgfSB9LAogICAgeyAiV2Via2l0TWFza0JveEltYWdlT3V0c2V0Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlT3V0c2V0KSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZU91dHNldCkgfSB9LAogICAgeyAiV2Via2l0TWFza0Jv
eEltYWdlUmVwZWF0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlUmVwZWF0
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCkgfSB9LAog
ICAgeyAiV2Via2l0TWFza0JveEltYWdlU2xpY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRN
YXNrQm94SW1hZ2VTbGljZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1h
Z2VTbGljZSkgfSB9LAogICAgeyAiV2Via2l0TWFza0JveEltYWdlU291cmNlIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlU291cmNlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZSkgfSB9LAogICAgeyAiV2Via2l0TWFza0JveEltYWdl
V2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VXaWR0aCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VXaWR0aCkgfSB9LAogICAgeyAiV2Vi
a2l0TWFza0NsaXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQ2xpcCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQ2xpcCkgfSB9LAogICAgeyAiV2Via2l0TWFza0NvbXBv
c2l0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tDb21wb3NpdGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWFza0NvbXBvc2l0ZSkgfSB9LAogICAgeyAiV2Via2l0TWFza0lt
YWdlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0ltYWdlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdE1hc2tJbWFnZSkgfSB9LAogICAgeyAiV2Via2l0TWFza09yaWdpbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tPcmlnaW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TWFza09yaWdpbikgfSB9LAogICAgeyAiV2Via2l0TWFza1Bvc2l0aW9uIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWFza1Bvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdE1hc2tQb3NpdGlvbikgfSB9LAogICAgeyAiV2Via2l0TWFza1Bvc2l0aW9uWCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlvblgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TWFza1Bvc2l0aW9uWCkgfSB9LAogICAgeyAiV2Via2l0TWFza1Bvc2l0aW9uWSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlvblkpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0TWFza1Bvc2l0aW9uWSkgfSB9LAogICAgeyAiV2Via2l0TWFza1JlcGVhdCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tSZXBlYXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TWFza1JlcGVhdCkgfSB9LAogICAgeyAiV2Via2l0TWFza1NpemUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNYXNrU2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNr
U2l6ZSkgfSB9LAogICAgeyAiV2Via2l0TWFza1NvdXJjZVR5cGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRNYXNrU291cmNlVHlwZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNr
U291cmNlVHlwZSkgfSB9LAogICAgeyAiV2Via2l0TWF4TG9naWNhbEhlaWdodCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdE1heExvZ2ljYWxIZWlnaHQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TWF4TG9naWNhbEhlaWdodCkgfSB9LAogICAgeyAiV2Via2l0TWF4TG9naWNhbFdpZHRo
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWF4TG9naWNhbFdpZHRoKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdE1heExvZ2ljYWxXaWR0aCkgfSB9LAogICAgeyAiV2Via2l0TWluTG9n
aWNhbEhlaWdodCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1pbkxvZ2ljYWxIZWlnaHQpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWluTG9naWNhbEhlaWdodCkgfSB9LAogICAgeyAi
V2Via2l0TWluTG9naWNhbFdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWluTG9naWNh
bFdpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1pbkxvZ2ljYWxXaWR0aCkgfSB9
LAogICAgeyAiV2Via2l0TmJzcE1vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXROYnNwTW9k
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXROYnNwTW9kZSkgfSB9LAogICAgeyAiV2Vi
a2l0T3BhY2l0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE9wYWNpdHkpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0T3BhY2l0eSkgfSB9LAogICAgeyAiV2Via2l0T3JkZXIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRPcmRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRP
cmRlcikgfSB9LAogICAgeyAiV2Via2l0UGFkZGluZ0FmdGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0UGFkZGluZ0FmdGVyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBhZGRpbmdB
ZnRlcikgfSB9LAogICAgeyAiV2Via2l0UGFkZGluZ0JlZm9yZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFBhZGRpbmdCZWZvcmUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGFkZGlu
Z0JlZm9yZSkgfSB9LAogICAgeyAiV2Via2l0UGFkZGluZ0VuZCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFBhZGRpbmdFbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGFkZGluZ0Vu
ZCkgfSB9LAogICAgeyAiV2Via2l0UGFkZGluZ1N0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0UGFkZGluZ1N0YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBhZGRpbmdTdGFy
dCkgfSB9LAogICAgeyAiV2Via2l0UGVyc3BlY3RpdmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRQZXJzcGVjdGl2ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZSkg
fSB9LAogICAgeyAiV2Via2l0UGVyc3BlY3RpdmVPcmlnaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJz
cGVjdGl2ZU9yaWdpbikgfSB9LAogICAgeyAiV2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCkgfSB9LAogICAgeyAiV2Via2l0UGVyc3Bl
Y3RpdmVPcmlnaW5ZIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGVyc3BlY3RpdmVPcmlnaW5Z
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSkgfSB9LAog
ICAgeyAiV2Via2l0UHJpbnRDb2xvckFkanVzdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBy
aW50Q29sb3JBZGp1c3QpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UHJpbnRDb2xvckFk
anVzdCkgfSB9LAogICAgeyAiV2Via2l0UnRsT3JkZXJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRSdGxPcmRlcmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRSdGxPcmRlcmlu
ZykgfSB9LAogICAgeyAiV2Via2l0UnVieVBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0UnVieVBvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFJ1YnlQb3NpdGlv
bikgfSB9LAogICAgeyAiV2Via2l0U2hhcGVJbWFnZVRocmVzaG9sZCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0U2hhcGVJbWFnZVRocmVzaG9sZCkgfSB9LAogICAgeyAiV2Via2l0U2hhcGVNYXJnaW4iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRTaGFwZU1hcmdpbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRTaGFwZU1hcmdpbikgfSB9LAogICAgeyAiV2Via2l0U2hhcGVPdXRzaWRlIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0U2hhcGVPdXRzaWRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFNoYXBlT3V0c2lkZSkgfSB9LAogICAgeyAiV2Via2l0VGV4dENvbWJpbmUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0Q29tYmluZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRUZXh0Q29tYmluZSkgfSB9LAogICAgeyAiV2Via2l0VGV4dERlY29yYXRpb24iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRUZXh0RGVjb3JhdGlvbikgfSB9LAogICAgeyAiV2Via2l0VGV4dERlY29yYXRpb25D
b2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uQ29sb3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25Db2xvcikgfSB9LAogICAgeyAi
V2Via2l0VGV4dERlY29yYXRpb25MaW5lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERl
Y29yYXRpb25MaW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9u
TGluZSkgfSB9LAogICAgeyAiV2Via2l0VGV4dERlY29yYXRpb25Ta2lwIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0VGV4dERlY29yYXRpb25Ta2lwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdFRleHREZWNvcmF0aW9uU2tpcCkgfSB9LAogICAgeyAiV2Via2l0VGV4dERlY29yYXRpb25T
dHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uU3R5bGUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25TdHlsZSkgfSB9LAogICAgeyAi
V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRU
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCkgfSB9LAogICAgeyAiV2Via2l0VGV4dEVtcGhhc2lzIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dEVtcGhhc2lzKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFRleHRFbXBoYXNpcykgfSB9LAogICAgeyAiV2Via2l0VGV4dEVtcGhhc2lzQ29sb3Ii
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNDb2xvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNDb2xvcikgfSB9LAogICAgeyAiV2Via2l0VGV4
dEVtcGhhc2lzUG9zaXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNQ
b3NpdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNQb3NpdGlv
bikgfSB9LAogICAgeyAiV2Via2l0VGV4dEVtcGhhc2lzU3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRUZXh0RW1waGFzaXNTdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRU
ZXh0RW1waGFzaXNTdHlsZSkgfSB9LAogICAgeyAiV2Via2l0VGV4dEZpbGxDb2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFRleHRGaWxsQ29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VGV4dEZpbGxDb2xvcikgfSB9LAogICAgeyAiV2Via2l0VGV4dE9yaWVudGF0aW9uIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dE9yaWVudGF0aW9uKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdFRleHRPcmllbnRhdGlvbikgfSB9LAogICAgeyAiV2Via2l0VGV4dFNlY3Vy
aXR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFNlY3VyaXR5KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdFRleHRTZWN1cml0eSkgfSB9LAogICAgeyAiV2Via2l0VGV4dFNpemVB
ZGp1c3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0U2l6ZUFkanVzdCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0U2l6ZUFkanVzdCkgfSB9LAogICAgeyAiV2Via2l0VGV4
dFN0cm9rZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2UpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0VGV4dFN0cm9rZSkgfSB9LAogICAgeyAiV2Via2l0VGV4dFN0cm9r
ZUNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0cm9rZUNvbG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2VDb2xvcikgfSB9LAogICAgeyAiV2Via2l0
VGV4dFN0cm9rZVdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0cm9rZVdpZHRo
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2VXaWR0aCkgfSB9LAogICAg
eyAiV2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
VGV4dFVuZGVybGluZVBvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRV
bmRlcmxpbmVQb3NpdGlvbikgfSB9LAogICAgeyAiV2Via2l0VGV4dFpvb20iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRUZXh0Wm9vbSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0
Wm9vbSkgfSB9LAogICAgeyAiV2Via2l0VHJhbnNmb3JtIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VHJhbnNmb3JtKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybSkgfSB9
LAogICAgeyAiV2Via2l0VHJhbnNmb3JtT3JpZ2luIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
VHJhbnNmb3JtT3JpZ2luKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9y
aWdpbikgfSB9LAogICAgeyAiV2Via2l0VHJhbnNmb3JtT3JpZ2luWCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
VHJhbnNmb3JtT3JpZ2luWCkgfSB9LAogICAgeyAiV2Via2l0VHJhbnNmb3JtT3JpZ2luWSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblkpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0VHJhbnNmb3JtT3JpZ2luWSkgfSB9LAogICAgeyAiV2Via2l0VHJhbnNmb3Jt
T3JpZ2luWiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblopLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNmb3JtT3JpZ2luWikgfSB9LAogICAgeyAiV2Vi
a2l0VHJhbnNmb3JtU3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1TdHls
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1TdHlsZSkgfSB9LAogICAg
eyAiV2Via2l0VHJhbnNpdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb24p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvbikgfSB9LAogICAgeyAiV2Vi
a2l0VHJhbnNpdGlvbkRlbGF5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvbkRl
bGF5KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25EZWxheSkgfSB9LAog
ICAgeyAiV2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
VHJhbnNpdGlvbkR1cmF0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRp
b25EdXJhdGlvbikgfSB9LAogICAgeyAiV2Via2l0VHJhbnNpdGlvblByb3BlcnR5Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvblByb3BlcnR5KSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSkgfSB9LAogICAgeyAiV2Via2l0VHJhbnNpdGlv
blRpbWluZ0Z1bmN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25UaW1pbmdG
dW5jdGlvbikgfSB9LAogICAgeyAiV2Via2l0VXNlckRyYWciLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRVc2VyRHJhZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRVc2VyRHJhZykgfSB9
LAogICAgeyAiV2Via2l0VXNlck1vZGlmeSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFVzZXJN
b2RpZnkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNlck1vZGlmeSkgfSB9LAogICAg
eyAiV2Via2l0VXNlclNlbGVjdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFVzZXJTZWxlY3Qp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNlclNlbGVjdCkgfSB9LAogICAgeyAiV2Vi
a2l0V3JpdGluZ01vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRXcml0aW5nTW9kZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRXcml0aW5nTW9kZSkgfSB9LAogICAgeyAiYWxpZ25D
b250ZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25Db250ZW50KSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2FsaWduQ29udGVudCkgfSB9LAogICAgeyAiYWxpZ25JdGVtcyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2FsaWduSXRlbXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25JdGVtcykgfSB9
LAogICAgeyAiYWxpZ25TZWxmIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25TZWxmKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2FsaWduU2VsZikgfSB9LAogICAgeyAiYWxpZ25tZW50QmFzZWxpbmUi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbm1lbnRCYXNlbGluZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9hbGlnbm1lbnRCYXNlbGluZSkgfSB9LAogICAgeyAiYWxsIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYWxsKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsbCkgfSB9LAogICAgeyAiYWx0Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYWx0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsdCkgfSB9LAogICAg
eyAiYW5pbWF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2FuaW1hdGlvbikgfSB9LAogICAgeyAiYW5pbWF0aW9uRGVsYXkiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9hbmltYXRpb25EZWxheSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRp
b25EZWxheSkgfSB9LAogICAgeyAiYW5pbWF0aW9uRGlyZWN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYW5pbWF0aW9uRGlyZWN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkRp
cmVjdGlvbikgfSB9LAogICAgeyAiYW5pbWF0aW9uRHVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9hbmltYXRpb25EdXJhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25EdXJh
dGlvbikgfSB9LAogICAgeyAiYW5pbWF0aW9uRmlsbE1vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9h
bmltYXRpb25GaWxsTW9kZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25GaWxsTW9k
ZSkgfSB9LAogICAgeyAiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9hbmltYXRpb25JdGVyYXRpb25Db3VudCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRp
b25JdGVyYXRpb25Db3VudCkgfSB9LAogICAgeyAiYW5pbWF0aW9uTmFtZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2FuaW1hdGlvbk5hbWUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uTmFt
ZSkgfSB9LAogICAgeyAiYW5pbWF0aW9uUGxheVN0YXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5p
bWF0aW9uUGxheVN0YXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvblBsYXlTdGF0
ZSkgfSB9LAogICAgeyAiYW5pbWF0aW9uVGltaW5nRnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9hbmltYXRpb25UaW1pbmdGdW5jdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRp
b25UaW1pbmdGdW5jdGlvbikgfSB9LAogICAgeyAiYXNwZWN0UmF0aW8iLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9hc3BlY3RSYXRpbyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hc3BlY3RSYXRpbykgfSB9
LAogICAgeyAiYmFja2dyb3VuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmQpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZCkgfSB9LAogICAgeyAiYmFja2dyb3VuZEF0dGFj
aG1lbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQXR0YWNobWVudCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQXR0YWNobWVudCkgfSB9LAogICAgeyAiYmFja2dyb3Vu
ZEJsZW5kTW9kZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRCbGVuZE1vZGUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZEJsZW5kTW9kZSkgfSB9LAogICAgeyAiYmFja2dy
b3VuZENsaXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQ2xpcCksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQ2xpcCkgfSB9LAogICAgeyAiYmFja2dyb3VuZENvbG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZENvbG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JhY2tncm91bmRDb2xvcikgfSB9LAogICAgeyAiYmFja2dyb3VuZEltYWdlIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYmFja2dyb3VuZEltYWdlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91
bmRJbWFnZSkgfSB9LAogICAgeyAiYmFja2dyb3VuZE9yaWdpbiIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JhY2tncm91bmRPcmlnaW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZE9yaWdp
bikgfSB9LAogICAgeyAiYmFja2dyb3VuZFBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFj
a2dyb3VuZFBvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRQb3NpdGlv
bikgfSB9LAogICAgeyAiYmFja2dyb3VuZFBvc2l0aW9uWCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
Y2tncm91bmRQb3NpdGlvblgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFBvc2l0
aW9uWCkgfSB9LAogICAgeyAiYmFja2dyb3VuZFBvc2l0aW9uWSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JhY2tncm91bmRQb3NpdGlvblkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFBv
c2l0aW9uWSkgfSB9LAogICAgeyAiYmFja2dyb3VuZFJlcGVhdCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JhY2tncm91bmRSZXBlYXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFJlcGVh
dCkgfSB9LAogICAgeyAiYmFja2dyb3VuZFNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3Jv
dW5kU2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kU2l6ZSkgfSB9LAogICAg
eyAiYmFzZWxpbmVTaGlmdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Jhc2VsaW5lU2hpZnQpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFzZWxpbmVTaGlmdCkgfSB9LAogICAgeyAiYmxvY2tTaXplIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYmxvY2tTaXplKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jsb2Nr
U2l6ZSkgfSB9LAogICAgeyAiYm9yZGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcikgfSB9LAogICAgeyAiYm9yZGVyQmxvY2siLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9jayksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJC
bG9jaykgfSB9LAogICAgeyAiYm9yZGVyQmxvY2tDb2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckJsb2NrQ29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tDb2xvcikg
fSB9LAogICAgeyAiYm9yZGVyQmxvY2tFbmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9j
a0VuZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja0VuZCkgfSB9LAogICAgeyAi
Ym9yZGVyQmxvY2tFbmRDb2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5kQ29s
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tFbmRDb2xvcikgfSB9LAogICAg
eyAiYm9yZGVyQmxvY2tFbmRTdHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5k
U3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tFbmRTdHlsZSkgfSB9LAog
ICAgeyAiYm9yZGVyQmxvY2tFbmRXaWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2Nr
RW5kV2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tFbmRXaWR0aCkgfSB9
LAogICAgeyAiYm9yZGVyQmxvY2tTdGFydCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2Nr
U3RhcnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdGFydCkgfSB9LAogICAg
eyAiYm9yZGVyQmxvY2tTdGFydENvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tT
dGFydENvbG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRDb2xvcikg
fSB9LAogICAgeyAiYm9yZGVyQmxvY2tTdGFydFN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyQmxvY2tTdGFydFN0eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3Rh
cnRTdHlsZSkgfSB9LAogICAgeyAiYm9yZGVyQmxvY2tTdGFydFdpZHRoIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyQmxvY2tTdGFydFdpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
ckJsb2NrU3RhcnRXaWR0aCkgfSB9LAogICAgeyAiYm9yZGVyQmxvY2tTdHlsZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlckJsb2NrU3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
QmxvY2tTdHlsZSkgfSB9LAogICAgeyAiYm9yZGVyQmxvY2tXaWR0aCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlckJsb2NrV2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tX
aWR0aCkgfSB9LAogICAgeyAiYm9yZGVyQm90dG9tIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
Qm90dG9tKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbSkgfSB9LAogICAgeyAi
Ym9yZGVyQm90dG9tQ29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21Db2xvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21Db2xvcikgfSB9LAogICAgeyAiYm9y
ZGVyQm90dG9tTGVmdFJhZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbUxlZnRS
YWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tTGVmdFJhZGl1cykgfSB9
LAogICAgeyAiYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJCb3R0b21SaWdodFJhZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21S
aWdodFJhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyQm90dG9tU3R5bGUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJCb3R0b21TdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0
b21TdHlsZSkgfSB9LAogICAgeyAiYm9yZGVyQm90dG9tV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJCb3R0b21XaWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21X
aWR0aCkgfSB9LAogICAgeyAiYm9yZGVyQ29sbGFwc2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJDb2xsYXBzZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJDb2xsYXBzZSkgfSB9LAog
ICAgeyAiYm9yZGVyQ29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJDb2xvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJDb2xvcikgfSB9LAogICAgeyAiYm9yZGVyRW5kRW5kUmFk
aXVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyRW5kRW5kUmFkaXVzKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlckVuZEVuZFJhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyRW5kU3RhcnRS
YWRpdXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJFbmRTdGFydFJhZGl1cyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJFbmRTdGFydFJhZGl1cykgfSB9LAogICAgeyAiYm9yZGVySW1h
Z2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJJbWFnZSkgfSB9LAogICAgeyAiYm9yZGVySW1hZ2VPdXRzZXQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJJbWFnZU91dHNldCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJ
bWFnZU91dHNldCkgfSB9LAogICAgeyAiYm9yZGVySW1hZ2VSZXBlYXQiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJJbWFnZVJlcGVhdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFn
ZVJlcGVhdCkgfSB9LAogICAgeyAiYm9yZGVySW1hZ2VTbGljZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlckltYWdlU2xpY2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW1hZ2VTbGlj
ZSkgfSB9LAogICAgeyAiYm9yZGVySW1hZ2VTb3VyY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJJbWFnZVNvdXJjZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVNvdXJjZSkg
fSB9LAogICAgeyAiYm9yZGVySW1hZ2VXaWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklt
YWdlV2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW1hZ2VXaWR0aCkgfSB9LAog
ICAgeyAiYm9yZGVySW5saW5lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZSkgfSB9LAogICAgeyAiYm9yZGVySW5saW5l
Q29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVDb2xvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVDb2xvcikgfSB9LAogICAgeyAiYm9yZGVySW5saW5lRW5k
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lRW5kKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcklubGluZUVuZCkgfSB9LAogICAgeyAiYm9yZGVySW5saW5lRW5kQ29sb3IiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRDb2xvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJJbmxpbmVFbmRDb2xvcikgfSB9LAogICAgeyAiYm9yZGVySW5saW5lRW5kU3R5
bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRTdHlsZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRTdHlsZSkgfSB9LAogICAgeyAiYm9yZGVySW5saW5l
RW5kV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRXaWR0aCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRXaWR0aCkgfSB9LAogICAgeyAiYm9yZGVy
SW5saW5lU3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdGFydCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdGFydCkgfSB9LAogICAgeyAiYm9yZGVySW5s
aW5lU3RhcnRDb2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0Q29sb3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnRDb2xvcikgfSB9LAogICAg
eyAiYm9yZGVySW5saW5lU3RhcnRTdHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGlu
ZVN0YXJ0U3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnRTdHls
ZSkgfSB9LAogICAgeyAiYm9yZGVySW5saW5lU3RhcnRXaWR0aCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcklubGluZVN0YXJ0V2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5s
aW5lU3RhcnRXaWR0aCkgfSB9LAogICAgeyAiYm9yZGVySW5saW5lU3R5bGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJJbmxpbmVTdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJ
bmxpbmVTdHlsZSkgfSB9LAogICAgeyAiYm9yZGVySW5saW5lV2lkdGgiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJJbmxpbmVXaWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxp
bmVXaWR0aCkgfSB9LAogICAgeyAiYm9yZGVyTGVmdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
ckxlZnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyTGVmdCkgfSB9LAogICAgeyAiYm9y
ZGVyTGVmdENvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyTGVmdENvbG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnRDb2xvcikgfSB9LAogICAgeyAiYm9yZGVyTGVmdFN0
eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyTGVmdFN0eWxlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlckxlZnRTdHlsZSkgfSB9LAogICAgeyAiYm9yZGVyTGVmdFdpZHRoIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyTGVmdFdpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckxlZnRXaWR0aCkgfSB9LAogICAgeyAiYm9yZGVyUmFkaXVzIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyUmFkaXVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJhZGl1cykgfSB9
LAogICAgeyAiYm9yZGVyUmlnaHQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodCkgfSB9LAogICAgeyAiYm9yZGVyUmlnaHRD
b2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0Q29sb3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyUmlnaHRDb2xvcikgfSB9LAogICAgeyAiYm9yZGVyUmlnaHRTdHlsZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0U3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyUmlnaHRTdHlsZSkgfSB9LAogICAgeyAiYm9yZGVyUmlnaHRXaWR0aCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0V2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyUmlnaHRXaWR0aCkgfSB9LAogICAgeyAiYm9yZGVyU3BhY2luZyIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlclNwYWNpbmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyU3BhY2luZykg
fSB9LAogICAgeyAiYm9yZGVyU3RhcnRFbmRSYWRpdXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJTdGFydEVuZFJhZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJTdGFydEVuZFJh
ZGl1cykgfSB9LAogICAgeyAiYm9yZGVyU3RhcnRTdGFydFJhZGl1cyIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlclN0YXJ0U3RhcnRSYWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
U3RhcnRTdGFydFJhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyU3R5bGUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJTdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJTdHlsZSkgfSB9
LAogICAgeyAiYm9yZGVyVG9wIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcCkgfSB9LAogICAgeyAiYm9yZGVyVG9wQ29sb3IiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3BDb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJUb3BDb2xvcikgfSB9LAogICAgeyAiYm9yZGVyVG9wTGVmdFJhZGl1cyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlclRvcExlZnRSYWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyVG9wTGVmdFJhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyVG9wUmlnaHRSYWRpdXMiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3BSaWdodFJhZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJUb3BSaWdodFJhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyVG9wU3R5bGUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3BTdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJUb3BTdHlsZSkgfSB9LAogICAgeyAiYm9yZGVyVG9wV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJUb3BXaWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3BXaWR0aCkg
fSB9LAogICAgeyAiYm9yZGVyV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJXaWR0aCks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJXaWR0aCkgfSB9LAogICAgeyAiYm90dG9tIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYm90dG9tKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvdHRvbSkg
fSB9LAogICAgeyAiYm94U2hhZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm94U2hhZG93KSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JveFNoYWRvdykgfSB9LAogICAgeyAiYm94U2l6aW5nIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm94U2l6aW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JveFNpemlu
ZykgfSB9LAogICAgeyAiYnJlYWtBZnRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JyZWFrQWZ0ZXIp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtBZnRlcikgfSB9LAogICAgeyAiYnJlYWtCZWZv
cmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha0JlZm9yZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9icmVha0JlZm9yZSkgfSB9LAogICAgeyAiYnJlYWtJbnNpZGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9icmVha0luc2lkZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha0luc2lkZSkgfSB9LAog
ICAgeyAiYnVmZmVyZWRSZW5kZXJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9idWZmZXJlZFJlbmRl
cmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9idWZmZXJlZFJlbmRlcmluZykgfSB9LAogICAg
eyAiY2FwdGlvblNpZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXB0aW9uU2lkZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jYXB0aW9uU2lkZSkgfSB9LAogICAgeyAiY2FyZXRDb2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2NhcmV0Q29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY2FyZXRDb2xv
cikgfSB9LAogICAgeyAiY2xlYXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGVhciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jbGVhcikgfSB9LAogICAgeyAiY2xpcCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2NsaXApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcCkgfSB9LAogICAgeyAiY2xpcFBhdGgi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlwUGF0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlw
UGF0aCkgfSB9LAogICAgeyAiY2xpcFJ1bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlwUnVsZSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlwUnVsZSkgfSB9LAogICAgeyAiY29sb3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcikgfSB9LAog
ICAgeyAiY29sb3JJbnRlcnBvbGF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JJbnRlcnBv
bGF0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9ySW50ZXJwb2xhdGlvbikgfSB9LAog
ICAgeyAiY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9y
SW50ZXJwb2xhdGlvbkZpbHRlcnMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JJbnRlcnBv
bGF0aW9uRmlsdGVycykgfSB9LAogICAgeyAiY29sb3JQcm9maWxlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fY29sb3JQcm9maWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yUHJvZmlsZSkgfSB9
LAogICAgeyAiY29sb3JSZW5kZXJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvclJlbmRlcmlu
ZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvclJlbmRlcmluZykgfSB9LAogICAgeyAiY29s
b3JTY2hlbWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvclNjaGVtZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9jb2xvclNjaGVtZSkgfSB9LAogICAgeyAiY29sdW1uQ291bnQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9jb2x1bW5Db3VudCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5Db3VudCkg
fSB9LAogICAgeyAiY29sdW1uRmlsbCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbkZpbGwpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uRmlsbCkgfSB9LAogICAgeyAiY29sdW1uR2FwIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fY29sdW1uR2FwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVt
bkdhcCkgfSB9LAogICAgeyAiY29sdW1uUnVsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtblJ1
bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZSkgfSB9LAogICAgeyAiY29sdW1u
UnVsZUNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZUNvbG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvbHVtblJ1bGVDb2xvcikgfSB9LAogICAgeyAiY29sdW1uUnVsZVN0eWxl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZVN0eWxlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2NvbHVtblJ1bGVTdHlsZSkgfSB9LAogICAgeyAiY29sdW1uUnVsZVdpZHRoIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fY29sdW1uUnVsZVdpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVt
blJ1bGVXaWR0aCkgfSB9LAogICAgeyAiY29sdW1uU3BhbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Nv
bHVtblNwYW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uU3BhbikgfSB9LAogICAgeyAi
Y29sdW1uV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5XaWR0aCksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9jb2x1bW5XaWR0aCkgfSB9LAogICAgeyAiY29sdW1ucyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvbHVtbnMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1ucykgfSB9LAogICAg
eyAiY29udGVudCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbnRlbnQpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fY29udGVudCkgfSB9LAogICAgeyAiY291bnRlckluY3JlbWVudCIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvdW50ZXJJbmNyZW1lbnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY291bnRlcklu
Y3JlbWVudCkgfSB9LAogICAgeyAiY291bnRlclJlc2V0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY291
bnRlclJlc2V0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50ZXJSZXNldCkgfSB9LAogICAg
eyAiY3Vyc29yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY3Vyc29yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2N1cnNvcikgfSB9LAogICAgeyAiY3giLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jeCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jeCkgfSB9LAogICAgeyAiY3kiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jeSkgfSB9LAogICAgeyAiZGlyZWN0aW9uIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGlyZWN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2RpcmVjdGlv
bikgfSB9LAogICAgeyAiZGlzcGxheSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rpc3BsYXkpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGlzcGxheSkgfSB9LAogICAgeyAiZG9taW5hbnRCYXNlbGluZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2RvbWluYW50QmFzZWxpbmUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZG9taW5hbnRCYXNlbGluZSkgfSB9LAogICAgeyAiZW1wdHlDZWxscyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2VtcHR5Q2VsbHMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZW1wdHlDZWxscykgfSB9
LAogICAgeyAiZW5hYmxlQmFja2dyb3VuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2VuYWJsZUJhY2tn
cm91bmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZW5hYmxlQmFja2dyb3VuZCkgfSB9LAogICAg
eyAiZmlsbCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGwpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZmlsbCkgfSB9LAogICAgeyAiZmlsbE9wYWNpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsT3Bh
Y2l0eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsT3BhY2l0eSkgfSB9LAogICAgeyAiZmls
bFJ1bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsUnVsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9maWxsUnVsZSkgfSB9LAogICAgeyAiZmlsdGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsdGVy
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbHRlcikgfSB9LAogICAgeyAiZmxleCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2ZsZXgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleCkgfSB9LAogICAg
eyAiZmxleEJhc2lzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleEJhc2lzKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZsZXhCYXNpcykgfSB9LAogICAgeyAiZmxleERpcmVjdGlvbiIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZsZXhEaXJlY3Rpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleERpcmVj
dGlvbikgfSB9LAogICAgeyAiZmxleEZsb3ciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4Rmxvdyks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4RmxvdykgfSB9LAogICAgeyAiZmxleEdyb3ciLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9mbGV4R3JvdyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4R3Jv
dykgfSB9LAogICAgeyAiZmxleFNocmluayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhTaHJpbmsp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleFNocmluaykgfSB9LAogICAgeyAiZmxleFdyYXAi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4V3JhcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4
V3JhcCkgfSB9LAogICAgeyAiZmxvYXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbG9hdCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9mbG9hdCkgfSB9LAogICAgeyAiZmxvb2RDb2xvciIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Zsb29kQ29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxvb2RDb2xvcikg
fSB9LAogICAgeyAiZmxvb2RPcGFjaXR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxvb2RPcGFjaXR5
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kT3BhY2l0eSkgfSB9LAogICAgeyAiZm9udCIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2ZvbnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udCkgfSB9
LAogICAgeyAiZm9udERpc3BsYXkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250RGlzcGxheSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250RGlzcGxheSkgfSB9LAogICAgeyAiZm9udEZhbWlseSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRGYW1pbHkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9u
dEZhbWlseSkgfSB9LAogICAgeyAiZm9udEZlYXR1cmVTZXR0aW5ncyIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZvbnRGZWF0dXJlU2V0dGluZ3MpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udEZlYXR1
cmVTZXR0aW5ncykgfSB9LAogICAgeyAiZm9udEtlcm5pbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
b250S2VybmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250S2VybmluZykgfSB9LAogICAg
eyAiZm9udE9wdGljYWxTaXppbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250T3B0aWNhbFNpemlu
ZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250T3B0aWNhbFNpemluZykgfSB9LAogICAgeyAi
Zm9udFNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U2l6ZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mb250U2l6ZSkgfSB9LAogICAgeyAiZm9udFN0cmV0Y2giLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mb250U3RyZXRjaCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U3RyZXRjaCkgfSB9LAog
ICAgeyAiZm9udFN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN0eWxlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2ZvbnRTdHlsZSkgfSB9LAogICAgeyAiZm9udFN5bnRoZXNpcyIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2ZvbnRTeW50aGVzaXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN5
bnRoZXNpcykgfSB9LAogICAgeyAiZm9udFZhcmlhbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250
VmFyaWFudCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudCkgfSB9LAogICAgeyAi
Zm9udFZhcmlhbnRBbHRlcm5hdGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRBbHRl
cm5hdGVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50QWx0ZXJuYXRlcykgfSB9
LAogICAgeyAiZm9udFZhcmlhbnRDYXBzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRD
YXBzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50Q2FwcykgfSB9LAogICAgeyAi
Zm9udFZhcmlhbnRFYXN0QXNpYW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudEVhc3RB
c2lhbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudEVhc3RBc2lhbikgfSB9LAog
ICAgeyAiZm9udFZhcmlhbnRMaWdhdHVyZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFu
dExpZ2F0dXJlcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudExpZ2F0dXJlcykg
fSB9LAogICAgeyAiZm9udFZhcmlhbnROdW1lcmljIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZh
cmlhbnROdW1lcmljKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50TnVtZXJpYykg
fSB9LAogICAgeyAiZm9udFZhcmlhbnRQb3NpdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRW
YXJpYW50UG9zaXRpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRQb3NpdGlv
bikgfSB9LAogICAgeyAiZm9udFZhcmlhdGlvblNldHRpbmdzIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Zm9udFZhcmlhdGlvblNldHRpbmdzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYXRp
b25TZXR0aW5ncykgfSB9LAogICAgeyAiZm9udFdlaWdodCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Zv
bnRXZWlnaHQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFdlaWdodCkgfSB9LAogICAgeyAi
Z2FwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ2FwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dhcCkg
fSB9LAogICAgeyAiZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlw
aE9yaWVudGF0aW9uSG9yaXpvbnRhbCkgfSB9LAogICAgeyAiZ2x5cGhPcmllbnRhdGlvblZlcnRp
Y2FsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbCkgfSB9LAogICAgeyAiZ3Jp
ZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZCkg
fSB9LAogICAgeyAiZ3JpZEFyZWEiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXJlYSksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ncmlkQXJlYSkgfSB9LAogICAgeyAiZ3JpZEF1dG9Db2x1bW5zIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZ3JpZEF1dG9Db2x1bW5zKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2dyaWRBdXRvQ29sdW1ucykgfSB9LAogICAgeyAiZ3JpZEF1dG9GbG93Iiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZ3JpZEF1dG9GbG93KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvRmxvdykg
fSB9LAogICAgeyAiZ3JpZEF1dG9Sb3dzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEF1dG9Sb3dz
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvUm93cykgfSB9LAogICAgeyAiZ3JpZENv
bHVtbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW4pLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZ3JpZENvbHVtbikgfSB9LAogICAgeyAiZ3JpZENvbHVtbkVuZCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2dyaWRDb2x1bW5FbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtbkVuZCkg
fSB9LAogICAgeyAiZ3JpZENvbHVtbkdhcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5H
YXApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtbkdhcCkgfSB9LAogICAgeyAiZ3Jp
ZENvbHVtblN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtblN0YXJ0KSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5TdGFydCkgfSB9LAogICAgeyAiZ3JpZEdhcCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX2dyaWRHYXApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEdhcCkg
fSB9LAogICAgeyAiZ3JpZFJvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRSb3cpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZFJvdykgfSB9LAogICAgeyAiZ3JpZFJvd0VuZCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2dyaWRSb3dFbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd0VuZCkg
fSB9LAogICAgeyAiZ3JpZFJvd0dhcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRSb3dHYXApLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd0dhcCkgfSB9LAogICAgeyAiZ3JpZFJvd1N0YXJ0
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd1N0YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2dyaWRSb3dTdGFydCkgfSB9LAogICAgeyAiZ3JpZFRlbXBsYXRlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZ3JpZFRlbXBsYXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRUZW1wbGF0ZSkgfSB9
LAogICAgeyAiZ3JpZFRlbXBsYXRlQXJlYXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxh
dGVBcmVhcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVBcmVhcykgfSB9LAog
ICAgeyAiZ3JpZFRlbXBsYXRlQ29sdW1ucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRUZW1wbGF0
ZUNvbHVtbnMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRlQ29sdW1ucykgfSB9
LAogICAgeyAiZ3JpZFRlbXBsYXRlUm93cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRUZW1wbGF0
ZVJvd3MpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRlUm93cykgfSB9LAogICAg
eyAiaGFuZ2luZ1B1bmN0dWF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25faGFuZ2luZ1B1bmN0dWF0
aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2hhbmdpbmdQdW5jdHVhdGlvbikgfSB9LAogICAg
eyAiaGVpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25faGVpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2hlaWdodCkgfSB9LAogICAgeyAiaW1hZ2VPcmllbnRhdGlvbiIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2ltYWdlT3JpZW50YXRpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW1hZ2VPcmllbnRh
dGlvbikgfSB9LAogICAgeyAiaW1hZ2VSZW5kZXJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFn
ZVJlbmRlcmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZVJlbmRlcmluZykgfSB9LAog
ICAgeyAiaW5saW5lU2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2lubGluZVNpemUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25faW5saW5lU2l6ZSkgfSB9LAogICAgeyAiaW5zZXQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9pbnNldCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldCkgfSB9LAogICAgeyAi
aW5zZXRCbG9jayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2spLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25faW5zZXRCbG9jaykgfSB9LAogICAgeyAiaW5zZXRCbG9ja0VuZCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2luc2V0QmxvY2tFbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRCbG9j
a0VuZCkgfSB9LAogICAgeyAiaW5zZXRCbG9ja1N0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5z
ZXRCbG9ja1N0YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2tTdGFydCkgfSB9
LAogICAgeyAiaW5zZXRJbmxpbmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElubGluZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElubGluZSkgfSB9LAogICAgeyAiaW5zZXRJbmxpbmVF
bmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElubGluZUVuZCksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9pbnNldElubGluZUVuZCkgfSB9LAogICAgeyAiaW5zZXRJbmxpbmVTdGFydCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2luc2V0SW5saW5lU3RhcnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5z
ZXRJbmxpbmVTdGFydCkgfSB9LAogICAgeyAiaXNvbGF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
aXNvbGF0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2lzb2xhdGlvbikgfSB9LAogICAgeyAi
anVzdGlmeUNvbnRlbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5Q29udGVudCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5Q29udGVudCkgfSB9LAogICAgeyAianVzdGlmeUl0ZW1z
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeUl0ZW1zKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2p1c3RpZnlJdGVtcykgfSB9LAogICAgeyAianVzdGlmeVNlbGYiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9qdXN0aWZ5U2VsZiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5U2VsZikgfSB9LAog
ICAgeyAia2VybmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2tlcm5pbmcpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fa2VybmluZykgfSB9LAogICAgeyAibGVmdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2xl
ZnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGVmdCkgfSB9LAogICAgeyAibGV0dGVyU3BhY2lu
ZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX2xldHRlclNwYWNpbmcpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fbGV0dGVyU3BhY2luZykgfSB9LAogICAgeyAibGlnaHRpbmdDb2xvciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2xpZ2h0aW5nQ29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlnaHRpbmdDb2xv
cikgfSB9LAogICAgeyAibGluZUJyZWFrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGluZUJyZWFrKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVCcmVhaykgfSB9LAogICAgeyAibGluZUhlaWdodCIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2xpbmVIZWlnaHQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlu
ZUhlaWdodCkgfSB9LAogICAgeyAibGlzdFN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdFN0
eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZSkgfSB9LAogICAgeyAibGlzdFN0
eWxlSW1hZ2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0U3R5bGVJbWFnZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9saXN0U3R5bGVJbWFnZSkgfSB9LAogICAgeyAibGlzdFN0eWxlUG9zaXRpb24i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0U3R5bGVQb3NpdGlvbiksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9saXN0U3R5bGVQb3NpdGlvbikgfSB9LAogICAgeyAibGlzdFN0eWxlVHlwZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2xpc3RTdHlsZVR5cGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdFN0
eWxlVHlwZSkgfSB9LAogICAgeyAibWFyZ2luIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbikgfSB9LAogICAgeyAibWFyZ2luQmxvY2siLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9jayksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJn
aW5CbG9jaykgfSB9LAogICAgeyAibWFyZ2luQmxvY2tFbmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9t
YXJnaW5CbG9ja0VuZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja0VuZCkgfSB9
LAogICAgeyAibWFyZ2luQmxvY2tTdGFydCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbkJsb2Nr
U3RhcnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luQmxvY2tTdGFydCkgfSB9LAogICAg
eyAibWFyZ2luQm90dG9tIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luQm90dG9tKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX21hcmdpbkJvdHRvbSkgfSB9LAogICAgeyAibWFyZ2luSW5saW5lIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luSW5saW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21h
cmdpbklubGluZSkgfSB9LAogICAgeyAibWFyZ2luSW5saW5lRW5kIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luSW5saW5lRW5kKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbklubGluZUVu
ZCkgfSB9LAogICAgeyAibWFyZ2luSW5saW5lU3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJn
aW5JbmxpbmVTdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5JbmxpbmVTdGFydCkg
fSB9LAogICAgeyAibWFyZ2luTGVmdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbkxlZnQpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luTGVmdCkgfSB9LAogICAgeyAibWFyZ2luUmlnaHQi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5SaWdodCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9t
YXJnaW5SaWdodCkgfSB9LAogICAgeyAibWFyZ2luVG9wIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFy
Z2luVG9wKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpblRvcCkgfSB9LAogICAgeyAibWFy
a2VyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21h
cmtlcikgfSB9LAogICAgeyAibWFya2VyRW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyRW5k
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlckVuZCkgfSB9LAogICAgeyAibWFya2VyTWlk
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyTWlkKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21h
cmtlck1pZCkgfSB9LAogICAgeyAibWFya2VyU3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJr
ZXJTdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJrZXJTdGFydCkgfSB9LAogICAgeyAi
bWFzayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX21hc2spLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFz
aykgfSB9LAogICAgeyAibWFza1R5cGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrVHlwZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrVHlwZSkgfSB9LAogICAgeyAibWF0aFN0eWxlIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fbWF0aFN0eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hdGhTdHls
ZSkgfSB9LAogICAgeyAibWF4QmxvY2tTaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4QmxvY2tT
aXplKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heEJsb2NrU2l6ZSkgfSB9LAogICAgeyAibWF4
SGVpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4SGVpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX21heEhlaWdodCkgfSB9LAogICAgeyAibWF4SW5saW5lU2l6ZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX21heElubGluZVNpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4SW5saW5lU2l6ZSkg
fSB9LAogICAgeyAibWF4V2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhXaWR0aCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXhXaWR0aCkgfSB9LAogICAgeyAibWluQmxvY2tTaXplIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fbWluQmxvY2tTaXplKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbkJs
b2NrU2l6ZSkgfSB9LAogICAgeyAibWluSGVpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWluSGVp
Z2h0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbkhlaWdodCkgfSB9LAogICAgeyAibWluSW5s
aW5lU2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX21pbklubGluZVNpemUpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fbWluSW5saW5lU2l6ZSkgfSB9LAogICAgeyAibWluV2lkdGgiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9taW5XaWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5XaWR0aCkgfSB9LAog
ICAgeyAibWl4QmxlbmRNb2RlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWl4QmxlbmRNb2RlKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX21peEJsZW5kTW9kZSkgfSB9LAogICAgeyAib2JqZWN0Rml0Iiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0Rml0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX29iamVj
dEZpdCkgfSB9LAogICAgeyAib2JqZWN0UG9zaXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vYmpl
Y3RQb3NpdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vYmplY3RQb3NpdGlvbikgfSB9LAog
ICAgeyAib3BhY2l0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX29wYWNpdHkpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fb3BhY2l0eSkgfSB9LAogICAgeyAib3JkZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9v
cmRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vcmRlcikgfSB9LAogICAgeyAib3JwaGFucyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX29ycGhhbnMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3JwaGFu
cykgfSB9LAogICAgeyAib3V0bGluZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZSkgfSB9LAogICAgeyAib3V0bGluZUNvbG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fb3V0bGluZUNvbG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxp
bmVDb2xvcikgfSB9LAogICAgeyAib3V0bGluZU9mZnNldCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX291
dGxpbmVPZmZzZXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZU9mZnNldCkgfSB9LAog
ICAgeyAib3V0bGluZVN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZVN0eWxlKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVTdHlsZSkgfSB9LAogICAgeyAib3V0bGluZVdpZHRo
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZVdpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X291dGxpbmVXaWR0aCkgfSB9LAogICAgeyAib3ZlcmZsb3ciLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9v
dmVyZmxvdyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvdykgfSB9LAogICAgeyAib3Zl
cmZsb3dXcmFwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dXcmFwKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX292ZXJmbG93V3JhcCkgfSB9LAogICAgeyAib3ZlcmZsb3dYIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fb3ZlcmZsb3dYKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93WCkgfSB9
LAogICAgeyAib3ZlcmZsb3dZIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dZKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX292ZXJmbG93WSkgfSB9LAogICAgeyAib3ZlcnNjcm9sbEJlaGF2aW9y
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbEJlaGF2aW9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX292ZXJzY3JvbGxCZWhhdmlvcikgfSB9LAogICAgeyAib3ZlcnNjcm9sbEJlaGF2aW9y
WCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxCZWhhdmlvclgpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fb3ZlcnNjcm9sbEJlaGF2aW9yWCkgfSB9LAogICAgeyAib3ZlcnNjcm9sbEJlaGF2
aW9yWSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxCZWhhdmlvclkpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fb3ZlcnNjcm9sbEJlaGF2aW9yWSkgfSB9LAogICAgeyAicGFkZGluZyIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3BhZGRpbmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZykg
fSB9LAogICAgeyAicGFkZGluZ0Jsb2NrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0Jsb2Nr
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdCbG9jaykgfSB9LAogICAgeyAicGFkZGlu
Z0Jsb2NrRW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0Jsb2NrRW5kKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhZGRpbmdCbG9ja0VuZCkgfSB9LAogICAgeyAicGFkZGluZ0Jsb2NrU3Rh
cnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQmxvY2tTdGFydCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9wYWRkaW5nQmxvY2tTdGFydCkgfSB9LAogICAgeyAicGFkZGluZ0JvdHRvbSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3BhZGRpbmdCb3R0b20pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFk
ZGluZ0JvdHRvbSkgfSB9LAogICAgeyAicGFkZGluZ0lubGluZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X3BhZGRpbmdJbmxpbmUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0lubGluZSkgfSB9
LAogICAgeyAicGFkZGluZ0lubGluZUVuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdJbmxp
bmVFbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0lubGluZUVuZCkgfSB9LAogICAg
eyAicGFkZGluZ0lubGluZVN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0lubGluZVN0
YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdJbmxpbmVTdGFydCkgfSB9LAogICAg
eyAicGFkZGluZ0xlZnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nTGVmdCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9wYWRkaW5nTGVmdCkgfSB9LAogICAgeyAicGFkZGluZ1JpZ2h0Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFkZGluZ1JpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRp
bmdSaWdodCkgfSB9LAogICAgeyAicGFkZGluZ1RvcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRp
bmdUb3ApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ1RvcCkgfSB9LAogICAgeyAicGFn
ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZSkg
fSB9LAogICAgeyAicGFnZUJyZWFrQWZ0ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlQnJlYWtB
ZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlQnJlYWtBZnRlcikgfSB9LAogICAgeyAi
cGFnZUJyZWFrQmVmb3JlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFrQmVmb3JlKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VCcmVha0JlZm9yZSkgfSB9LAogICAgeyAicGFnZUJyZWFr
SW5zaWRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFrSW5zaWRlKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BhZ2VCcmVha0luc2lkZSkgfSB9LAogICAgeyAicGFpbnRPcmRlciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhaW50T3JkZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFpbnRPcmRl
cikgfSB9LAogICAgeyAicGVyc3BlY3RpdmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZSkgfSB9LAogICAgeyAicGVyc3Bl
Y3RpdmVPcmlnaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZU9yaWdpbiksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZU9yaWdpbikgfSB9LAogICAgeyAicGVyc3BlY3Rp
dmVPcmlnaW5YIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVPcmlnaW5YKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luWCkgfSB9LAogICAgeyAicGVyc3BlY3Rp
dmVPcmlnaW5ZIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVPcmlnaW5ZKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luWSkgfSB9LAogICAgeyAicGxhY2VDb250
ZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VDb250ZW50KSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3BsYWNlQ29udGVudCkgfSB9LAogICAgeyAicGxhY2VJdGVtcyIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3BsYWNlSXRlbXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VJdGVtcykgfSB9LAog
ICAgeyAicGxhY2VTZWxmIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VTZWxmKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BsYWNlU2VsZikgfSB9LAogICAgeyAicG9pbnRlckV2ZW50cyIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3BvaW50ZXJFdmVudHMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcG9pbnRl
ckV2ZW50cykgfSB9LAogICAgeyAicG9zaXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wb3NpdGlv
biksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wb3NpdGlvbikgfSB9LAogICAgeyAicXVvdGVzIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fcXVvdGVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3F1b3Rlcykg
fSB9LAogICAgeyAiciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fcikgfSB9LAogICAgeyAicmVzaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcmVzaXplKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3Jlc2l6ZSkgfSB9LAogICAgeyAicmlnaHQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9yaWdodCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9yaWdodCkgfSB9LAogICAgeyAi
cm90YXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcm90YXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3JvdGF0ZSkgfSB9LAogICAgeyAicm93R2FwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcm93R2FwKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Jvd0dhcCkgfSB9LAogICAgeyAicngiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9yeCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9yeCkgfSB9LAogICAgeyAicnkiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9yeSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9yeSkgfSB9LAogICAg
eyAic2NhbGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY2FsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY2FsZSkgfSB9LAogICAgeyAic2Nyb2xsQmVoYXZpb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxCZWhhdmlvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxCZWhhdmlvcikgfSB9
LAogICAgeyAic2Nyb2xsTWFyZ2luIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbikgfSB9LAogICAgeyAic2Nyb2xsTWFy
Z2luQmxvY2siLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9jayksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9jaykgfSB9LAogICAgeyAic2Nyb2xsTWFyZ2lu
QmxvY2tFbmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9ja0VuZCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9ja0VuZCkgfSB9LAogICAgeyAic2Nyb2xs
TWFyZ2luQmxvY2tTdGFydCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkJsb2NrU3Rh
cnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luQmxvY2tTdGFydCkgfSB9LAog
ICAgeyAic2Nyb2xsTWFyZ2luQm90dG9tIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2lu
Qm90dG9tKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkJvdHRvbSkgfSB9LAog
ICAgeyAic2Nyb2xsTWFyZ2luSW5saW5lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2lu
SW5saW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbklubGluZSkgfSB9LAog
ICAgeyAic2Nyb2xsTWFyZ2luSW5saW5lRW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFy
Z2luSW5saW5lRW5kKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbklubGluZUVu
ZCkgfSB9LAogICAgeyAic2Nyb2xsTWFyZ2luSW5saW5lU3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxNYXJnaW5JbmxpbmVTdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxN
YXJnaW5JbmxpbmVTdGFydCkgfSB9LAogICAgeyAic2Nyb2xsTWFyZ2luTGVmdCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbE1hcmdpbkxlZnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
TWFyZ2luTGVmdCkgfSB9LAogICAgeyAic2Nyb2xsTWFyZ2luUmlnaHQiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxNYXJnaW5SaWdodCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJn
aW5SaWdodCkgfSB9LAogICAgeyAic2Nyb2xsTWFyZ2luVG9wIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
c2Nyb2xsTWFyZ2luVG9wKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpblRvcCkg
fSB9LAogICAgeyAic2Nyb2xsUGFkZGluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRp
bmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZykgfSB9LAogICAgeyAic2Ny
b2xsUGFkZGluZ0Jsb2NrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0Jsb2NrKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCbG9jaykgfSB9LAogICAgeyAic2Ny
b2xsUGFkZGluZ0Jsb2NrRW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0Jsb2Nr
RW5kKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCbG9ja0VuZCkgfSB9LAog
ICAgeyAic2Nyb2xsUGFkZGluZ0Jsb2NrU3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQ
YWRkaW5nQmxvY2tTdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxv
Y2tTdGFydCkgfSB9LAogICAgeyAic2Nyb2xsUGFkZGluZ0JvdHRvbSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbFBhZGRpbmdCb3R0b20pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFk
ZGluZ0JvdHRvbSkgfSB9LAogICAgeyAic2Nyb2xsUGFkZGluZ0lubGluZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
UGFkZGluZ0lubGluZSkgfSB9LAogICAgeyAic2Nyb2xsUGFkZGluZ0lubGluZUVuZCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmVFbmQpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsUGFkZGluZ0lubGluZUVuZCkgfSB9LAogICAgeyAic2Nyb2xsUGFkZGluZ0lubGlu
ZVN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0lubGluZVN0YXJ0KSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmVTdGFydCkgfSB9LAogICAgeyAi
c2Nyb2xsUGFkZGluZ0xlZnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nTGVmdCks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nTGVmdCkgfSB9LAogICAgeyAic2Ny
b2xsUGFkZGluZ1JpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ1JpZ2h0KSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdSaWdodCkgfSB9LAogICAgeyAic2Ny
b2xsUGFkZGluZ1RvcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdUb3ApLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ1RvcCkgfSB9LAogICAgeyAic2Nyb2xsU25h
cEFsaWduIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcEFsaWduKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbFNuYXBBbGlnbikgfSB9LAogICAgeyAic2Nyb2xsU25hcE1hcmdpbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW4pLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsU25hcE1hcmdpbikgfSB9LAogICAgeyAic2Nyb2xsU25hcE1hcmdpbkJvdHRvbSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5Cb3R0b20pLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpbkJvdHRvbSkgfSB9LAogICAgeyAic2Nyb2xsU25hcE1h
cmdpbkxlZnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luTGVmdCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luTGVmdCkgfSB9LAogICAgeyAic2Nyb2xs
U25hcE1hcmdpblJpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpblJpZ2h0
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5SaWdodCkgfSB9LAogICAg
eyAic2Nyb2xsU25hcE1hcmdpblRvcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJn
aW5Ub3ApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpblRvcCkgfSB9LAog
ICAgeyAic2Nyb2xsU25hcFN0b3AiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwU3RvcCks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwU3RvcCkgfSB9LAogICAgeyAic2Nyb2xs
U25hcFR5cGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwVHlwZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxTbmFwVHlwZSkgfSB9LAogICAgeyAic2hhcGVJbWFnZVRocmVzaG9s
ZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlSW1hZ2VUaHJlc2hvbGQpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2hhcGVJbWFnZVRocmVzaG9sZCkgfSB9LAogICAgeyAic2hhcGVNYXJnaW4iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zaGFwZU1hcmdpbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFw
ZU1hcmdpbikgfSB9LAogICAgeyAic2hhcGVPdXRzaWRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2hh
cGVPdXRzaWRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlT3V0c2lkZSkgfSB9LAogICAg
eyAic2hhcGVSZW5kZXJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZVJlbmRlcmluZyksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZVJlbmRlcmluZykgfSB9LAogICAgeyAic2l6ZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3NpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2l6ZSkgfSB9LAog
ICAgeyAic3BlYWtBcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3NwZWFrQXMpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc3BlYWtBcykgfSB9LAogICAgeyAic3JjIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Jj
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NyYykgfSB9LAogICAgeyAic3RvcENvbG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc3RvcENvbG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0b3BDb2xv
cikgfSB9LAogICAgeyAic3RvcE9wYWNpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wT3BhY2l0
eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wT3BhY2l0eSkgfSB9LAogICAgeyAic3Ryb2tl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9r
ZSkgfSB9LAogICAgeyAic3Ryb2tlQ29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VDb2xv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VDb2xvcikgfSB9LAogICAgeyAic3Ryb2tl
RGFzaGFycmF5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlRGFzaGFycmF5KSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3N0cm9rZURhc2hhcnJheSkgfSB9LAogICAgeyAic3Ryb2tlRGFzaG9mZnNl
dCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZURhc2hvZmZzZXQpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc3Ryb2tlRGFzaG9mZnNldCkgfSB9LAogICAgeyAic3Ryb2tlTGluZWNhcCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3N0cm9rZUxpbmVjYXApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tl
TGluZWNhcCkgfSB9LAogICAgeyAic3Ryb2tlTGluZWpvaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
dHJva2VMaW5lam9pbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VMaW5lam9pbikgfSB9
LAogICAgeyAic3Ryb2tlTWl0ZXJsaW1pdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZU1pdGVy
bGltaXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTWl0ZXJsaW1pdCkgfSB9LAogICAg
eyAic3Ryb2tlT3BhY2l0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZU9wYWNpdHkpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlT3BhY2l0eSkgfSB9LAogICAgeyAic3Ryb2tlV2lkdGgi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VXaWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
dHJva2VXaWR0aCkgfSB9LAogICAgeyAic3VwcG9ydGVkQ29sb3JTY2hlbWVzIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fc3VwcG9ydGVkQ29sb3JTY2hlbWVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N1
cHBvcnRlZENvbG9yU2NoZW1lcykgfSB9LAogICAgeyAidGFiU2l6ZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3RhYlNpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGFiU2l6ZSkgfSB9LAogICAgeyAi
dGFibGVMYXlvdXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJsZUxheW91dCksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90YWJsZUxheW91dCkgfSB9LAogICAgeyAidGV4dEFsaWduIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fdGV4dEFsaWduKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRBbGlnbikgfSB9
LAogICAgeyAidGV4dEFuY2hvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRBbmNob3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fdGV4dEFuY2hvcikgfSB9LAogICAgeyAidGV4dERlY29yYXRpb24i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0RGVjb3JhdGlvbikgfSB9LAogICAgeyAidGV4dERlY29yYXRpb25Db2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uQ29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dERlY29yYXRpb25Db2xvcikgfSB9LAogICAgeyAidGV4dERlY29yYXRpb25MaW5lIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25MaW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHREZWNvcmF0aW9uTGluZSkgfSB9LAogICAgeyAidGV4dERlY29yYXRpb25Ta2lwIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25Ta2lwKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHREZWNvcmF0aW9uU2tpcCkgfSB9LAogICAgeyAidGV4dERlY29yYXRpb25TdHlsZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uU3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dERlY29yYXRpb25TdHlsZSkgfSB9LAogICAgeyAidGV4dERlY29yYXRpb25UaGlja25l
c3MiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykgfSB9LAogICAgeyAidGV4dEVt
cGhhc2lzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3RleHRFbXBoYXNpcykgfSB9LAogICAgeyAidGV4dEVtcGhhc2lzQ29sb3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNDb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0RW1waGFzaXNDb2xvcikgfSB9LAogICAgeyAidGV4dEVtcGhhc2lzUG9zaXRpb24iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNQb3NpdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0RW1waGFzaXNQb3NpdGlvbikgfSB9LAogICAgeyAidGV4dEVtcGhhc2lzU3R5bGUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNTdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0RW1waGFzaXNTdHlsZSkgfSB9LAogICAgeyAidGV4dEluZGVudCIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX3RleHRJbmRlbnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEluZGVudCkgfSB9
LAogICAgeyAidGV4dE9yaWVudGF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dE9yaWVudGF0
aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRPcmllbnRhdGlvbikgfSB9LAogICAgeyAi
dGV4dE92ZXJmbG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dE92ZXJmbG93KSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RleHRPdmVyZmxvdykgfSB9LAogICAgeyAidGV4dFJlbmRlcmluZyIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRSZW5kZXJpbmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4
dFJlbmRlcmluZykgfSB9LAogICAgeyAidGV4dFNoYWRvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Rl
eHRTaGFkb3cpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFNoYWRvdykgfSB9LAogICAgeyAi
dGV4dFRyYW5zZm9ybSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRUcmFuc2Zvcm0pLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fdGV4dFRyYW5zZm9ybSkgfSB9LAogICAgeyAidGV4dFVuZGVybGluZU9m
ZnNldCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRVbmRlcmxpbmVPZmZzZXQpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dFVuZGVybGluZU9mZnNldCkgfSB9LAogICAgeyAidGV4dFVuZGVybGlu
ZVBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFVuZGVybGluZVBvc2l0aW9uKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RleHRVbmRlcmxpbmVQb3NpdGlvbikgfSB9LAogICAgeyAidG9w
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fdG9wKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RvcCkgfSB9
LAogICAgeyAidG91Y2hBY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90b3VjaEFjdGlvbiksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl90b3VjaEFjdGlvbikgfSB9LAogICAgeyAidHJhbnNmb3JtIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5z
Zm9ybSkgfSB9LAogICAgeyAidHJhbnNmb3JtQm94Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNm
b3JtQm94KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybUJveCkgfSB9LAogICAgeyAi
dHJhbnNmb3JtT3JpZ2luIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpbikgfSB9LAogICAgeyAidHJhbnNmb3Jt
T3JpZ2luWCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblgpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luWCkgfSB9LAogICAgeyAidHJhbnNmb3JtT3JpZ2lu
WSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblkpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fdHJhbnNmb3JtT3JpZ2luWSkgfSB9LAogICAgeyAidHJhbnNmb3JtT3JpZ2luWiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblopLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dHJhbnNmb3JtT3JpZ2luWikgfSB9LAogICAgeyAidHJhbnNmb3JtU3R5bGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl90cmFuc2Zvcm1TdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1T
dHlsZSkgfSB9LAogICAgeyAidHJhbnNpdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRp
b24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbikgfSB9LAogICAgeyAidHJhbnNp
dGlvbkRlbGF5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbkRlbGF5KSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RyYW5zaXRpb25EZWxheSkgfSB9LAogICAgeyAidHJhbnNpdGlvbkR1cmF0
aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbkR1cmF0aW9uKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RyYW5zaXRpb25EdXJhdGlvbikgfSB9LAogICAgeyAidHJhbnNpdGlvblByb3Bl
cnR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvblByb3BlcnR5KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RyYW5zaXRpb25Qcm9wZXJ0eSkgfSB9LAogICAgeyAidHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25UaW1pbmdGdW5jdGlvbikgfSB9LAogICAg
eyAidHJhbnNsYXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNsYXRlKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RyYW5zbGF0ZSkgfSB9LAogICAgeyAidW5pY29kZUJpZGkiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl91bmljb2RlQmlkaSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl91bmljb2RlQmlkaSkg
fSB9LAogICAgeyAidW5pY29kZVJhbmdlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZVJhbmdl
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3VuaWNvZGVSYW5nZSkgfSB9LAogICAgeyAidmVjdG9y
RWZmZWN0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdmVjdG9yRWZmZWN0KSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3ZlY3RvckVmZmVjdCkgfSB9LAogICAgeyAidmVydGljYWxBbGlnbiIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3ZlcnRpY2FsQWxpZ24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdmVydGljYWxB
bGlnbikgfSB9LAogICAgeyAidmlzaWJpbGl0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Zpc2liaWxp
dHkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdmlzaWJpbGl0eSkgfSB9LAogICAgeyAid2hpdGVT
cGFjZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3doaXRlU3BhY2UpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2hpdGVTcGFjZSkgfSB9LAogICAgeyAid2lkb3dzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2lk
b3dzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dpZG93cykgfSB9LAogICAgeyAid2lkdGgiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93aWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93aWR0aCkgfSB9
LAogICAgeyAid2lsbENoYW5nZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dpbGxDaGFuZ2UpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2lsbENoYW5nZSkgfSB9LAogICAgeyAid29yZEJyZWFrIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd29yZEJyZWFrKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRCcmVh
aykgfSB9LAogICAgeyAid29yZFNwYWNpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkU3BhY2lu
ZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkU3BhY2luZykgfSB9LAogICAgeyAid29yZFdy
YXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkV3JhcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
b3JkV3JhcCkgfSB9LAogICAgeyAid3JpdGluZ01vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93cml0
aW5nTW9kZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93cml0aW5nTW9kZSkgfSB9LAogICAgeyAi
eCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3gpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25feCkgfSB9LAog
ICAgeyAieSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3kpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25feSkg
fSB9LAogICAgeyAiekluZGV4Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fekluZGV4KSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3pJbmRleCkgfSB9LAogICAgeyAiem9vbSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X3pvb20pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fem9vbSkgfSB9LAogICAgeyAid2Via2l0QWxp
Z25Db250ZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25Db250ZW50KSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsaWduQ29udGVudCkgfSB9LAogICAgeyAid2Via2l0QWxp
Z25JdGVtcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsaWduSXRlbXMpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0QWxpZ25JdGVtcykgfSB9LAogICAgeyAid2Via2l0QWxpZ25TZWxm
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25TZWxmKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEFsaWduU2VsZikgfSB9LAogICAgeyAid2Via2l0QWx0Iiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0QWx0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsdCkgfSB9LAog
ICAgeyAid2Via2l0QW5pbWF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9u
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbikgfSB9LAogICAgeyAid2Vi
a2l0QW5pbWF0aW9uRGVsYXkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25EZWxh
eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25EZWxheSkgfSB9LAogICAg
eyAid2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5p
bWF0aW9uRGlyZWN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkRp
cmVjdGlvbikgfSB9LAogICAgeyAid2Via2l0QW5pbWF0aW9uRHVyYXRpb24iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRBbmltYXRpb25EdXJhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRBbmltYXRpb25EdXJhdGlvbikgfSB9LAogICAgeyAid2Via2l0QW5pbWF0aW9uRmlsbE1v
ZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25GaWxsTW9kZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25GaWxsTW9kZSkgfSB9LAogICAgeyAid2Via2l0
QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRp
b25JdGVyYXRpb25Db3VudCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25J
dGVyYXRpb25Db3VudCkgfSB9LAogICAgeyAid2Via2l0QW5pbWF0aW9uTmFtZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbk5hbWUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0QW5pbWF0aW9uTmFtZSkgfSB9LAogICAgeyAid2Via2l0QW5pbWF0aW9uUGxheVN0YXRlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uUGxheVN0YXRlKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZSkgfSB9LAogICAgeyAid2Via2l0QW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25U
aW1pbmdGdW5jdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25UaW1p
bmdGdW5jdGlvbikgfSB9LAogICAgeyAid2Via2l0QXBwZWFyYW5jZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEFwcGVhcmFuY2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QXBwZWFy
YW5jZSkgfSB9LAogICAgeyAid2Via2l0QmFja2Ryb3BGaWx0ZXIiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCYWNrZHJvcEZpbHRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNr
ZHJvcEZpbHRlcikgfSB9LAogICAgeyAid2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5KSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSkgfSB9LAogICAgeyAid2Via2l0QmFja2dyb3Vu
ZENsaXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kQ2xpcCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kQ2xpcCkgfSB9LAogICAgeyAid2Via2l0QmFj
a2dyb3VuZENvbXBvc2l0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tncm91bmRDb21w
b3NpdGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSkg
fSB9LAogICAgeyAid2Via2l0QmFja2dyb3VuZE9yaWdpbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEJhY2tncm91bmRPcmlnaW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2dy
b3VuZE9yaWdpbikgfSB9LAogICAgeyAid2Via2l0QmFja2dyb3VuZFNpemUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kU2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCYWNrZ3JvdW5kU2l6ZSkgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyQWZ0ZXIiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3JkZXJBZnRlcikgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyQWZ0ZXJDb2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckFmdGVyQ29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcikgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyQWZ0ZXJT
dHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckFmdGVyU3R5bGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSkgfSB9LAogICAgeyAid2Via2l0
Qm9yZGVyQWZ0ZXJXaWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckFmdGVyV2lk
dGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCkgfSB9LAog
ICAgeyAid2Via2l0Qm9yZGVyQmVmb3JlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVy
QmVmb3JlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJlZm9yZSkgfSB9LAog
ICAgeyAid2Via2l0Qm9yZGVyQmVmb3JlQ29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJCZWZvcmVDb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZv
cmVDb2xvcikgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVTdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRCb3JkZXJCZWZvcmVTdHlsZSkgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyQmVmb3JlV2lk
dGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVXaWR0aCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVXaWR0aCkgfSB9LAogICAgeyAid2Via2l0
Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJv
dHRvbUxlZnRSYWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQm90dG9t
TGVmdFJhZGl1cykgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cykgfSB9LAogICAgeyAi
d2Via2l0Qm9yZGVyRW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRW5kKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckVuZCkgfSB9LAogICAgeyAid2Via2l0Qm9y
ZGVyRW5kQ29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRDb2xvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRDb2xvcikgfSB9LAogICAgeyAid2Vi
a2l0Qm9yZGVyRW5kU3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRTdHls
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRTdHlsZSkgfSB9LAogICAg
eyAid2Via2l0Qm9yZGVyRW5kV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJF
bmRXaWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRXaWR0aCkgfSB9
LAogICAgeyAid2Via2l0Qm9yZGVyRml0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVy
Rml0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckZpdCkgfSB9LAogICAgeyAi
d2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJIb3Jpem9udGFsU3BhY2luZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3Jk
ZXJIb3Jpem9udGFsU3BhY2luZykgfSB9LAogICAgeyAid2Via2l0Qm9yZGVySW1hZ2UiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJJbWFnZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRCb3JkZXJJbWFnZSkgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyUmFkaXVzIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyUmFkaXVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEJvcmRlclJhZGl1cykgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyU3RhcnQiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJTdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3JkZXJTdGFydCkgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyU3RhcnRDb2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0YXJ0Q29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0Qm9yZGVyU3RhcnRDb2xvcikgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyU3RhcnRT
dHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0YXJ0U3R5bGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyU3RhcnRTdHlsZSkgfSB9LAogICAgeyAid2Via2l0
Qm9yZGVyU3RhcnRXaWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0YXJ0V2lk
dGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyU3RhcnRXaWR0aCkgfSB9LAog
ICAgeyAid2Via2l0Qm9yZGVyVG9wTGVmdFJhZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJvcmRlclRvcExlZnRSYWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVy
VG9wTGVmdFJhZGl1cykgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyVG9wUmlnaHRSYWRpdXMiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJUb3BSaWdodFJhZGl1cyksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJUb3BSaWdodFJhZGl1cykgfSB9LAogICAgeyAid2Via2l0
Qm9yZGVyVmVydGljYWxTcGFjaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyVmVy
dGljYWxTcGFjaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclZlcnRpY2Fs
U3BhY2luZykgfSB9LAogICAgeyAid2Via2l0Qm94QWxpZ24iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRCb3hBbGlnbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hBbGlnbikgfSB9
LAogICAgeyAid2Via2l0Qm94RGVjb3JhdGlvbkJyZWFrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0Qm94RGVjb3JhdGlvbkJyZWFrKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveERl
Y29yYXRpb25CcmVhaykgfSB9LAogICAgeyAid2Via2l0Qm94RGlyZWN0aW9uIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0Qm94RGlyZWN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJveERpcmVjdGlvbikgfSB9LAogICAgeyAid2Via2l0Qm94RmxleCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEJveEZsZXgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94RmxleCkg
fSB9LAogICAgeyAid2Via2l0Qm94RmxleEdyb3VwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
Qm94RmxleEdyb3VwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveEZsZXhHcm91cCkg
fSB9LAogICAgeyAid2Via2l0Qm94TGluZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hM
aW5lcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hMaW5lcykgfSB9LAogICAgeyAi
d2Via2l0Qm94T3JkaW5hbEdyb3VwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94T3JkaW5h
bEdyb3VwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveE9yZGluYWxHcm91cCkgfSB9
LAogICAgeyAid2Via2l0Qm94T3JpZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94T3Jp
ZW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveE9yaWVudCkgfSB9LAogICAgeyAi
d2Via2l0Qm94UGFjayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveFBhY2spLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94UGFjaykgfSB9LAogICAgeyAid2Via2l0Qm94UmVmbGVj
dCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveFJlZmxlY3QpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm94UmVmbGVjdCkgfSB9LAogICAgeyAid2Via2l0Qm94U2hhZG93Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94U2hhZG93KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEJveFNoYWRvdykgfSB9LAogICAgeyAid2Via2l0Qm94U2l6aW5nIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm94U2l6aW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveFNp
emluZykgfSB9LAogICAgeyAid2Via2l0Q2xpcFBhdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRDbGlwUGF0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDbGlwUGF0aCkgfSB9LAog
ICAgeyAid2Via2l0Q29sdW1uQXhpcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkF4
aXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uQXhpcykgfSB9LAogICAgeyAi
d2Via2l0Q29sdW1uQnJlYWtBZnRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkJy
ZWFrQWZ0ZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uQnJlYWtBZnRlcikg
fSB9LAogICAgeyAid2Via2l0Q29sdW1uQnJlYWtCZWZvcmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRDb2x1bW5CcmVha0JlZm9yZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1
bW5CcmVha0JlZm9yZSkgfSB9LAogICAgeyAid2Via2l0Q29sdW1uQnJlYWtJbnNpZGUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5CcmVha0luc2lkZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRDb2x1bW5CcmVha0luc2lkZSkgfSB9LAogICAgeyAid2Via2l0Q29sdW1uQ291
bnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5Db3VudCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRDb2x1bW5Db3VudCkgfSB9LAogICAgeyAid2Via2l0Q29sdW1uRmlsbCIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkZpbGwpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0Q29sdW1uRmlsbCkgfSB9LAogICAgeyAid2Via2l0Q29sdW1uR2FwIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0Q29sdW1uR2FwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dENvbHVtbkdhcCkgfSB9LAogICAgeyAid2Via2l0Q29sdW1uUHJvZ3Jlc3Npb24iLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5Qcm9ncmVzc2lvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRDb2x1bW5Qcm9ncmVzc2lvbikgfSB9LAogICAgeyAid2Via2l0Q29sdW1uUnVsZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0Q29sdW1uUnVsZSkgfSB9LAogICAgeyAid2Via2l0Q29sdW1uUnVsZUNvbG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUnVsZUNvbG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdENvbHVtblJ1bGVDb2xvcikgfSB9LAogICAgeyAid2Via2l0Q29sdW1uUnVs
ZVN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUnVsZVN0eWxlKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVTdHlsZSkgfSB9LAogICAgeyAid2Via2l0
Q29sdW1uUnVsZVdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUnVsZVdpZHRo
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVXaWR0aCkgfSB9LAogICAg
eyAid2Via2l0Q29sdW1uU3BhbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblNwYW4p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uU3BhbikgfSB9LAogICAgeyAid2Vi
a2l0Q29sdW1uV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5XaWR0aCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5XaWR0aCkgfSB9LAogICAgeyAid2Via2l0
Q29sdW1ucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbnMpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0Q29sdW1ucykgfSB9LAogICAgeyAid2Via2l0Q3Vyc29yVmlzaWJpbGl0
eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEN1cnNvclZpc2liaWxpdHkpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0Q3Vyc29yVmlzaWJpbGl0eSkgfSB9LAogICAgeyAid2Via2l0Rmls
dGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmlsdGVyKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEZpbHRlcikgfSB9LAogICAgeyAid2Via2l0RmxleCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEZsZXgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleCkgfSB9LAog
ICAgeyAid2Via2l0RmxleEJhc2lzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleEJhc2lz
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhCYXNpcykgfSB9LAogICAgeyAid2Vi
a2l0RmxleERpcmVjdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhEaXJlY3Rpb24p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleERpcmVjdGlvbikgfSB9LAogICAgeyAi
d2Via2l0RmxleEZsb3ciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4RmxvdyksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4RmxvdykgfSB9LAogICAgeyAid2Via2l0RmxleEdy
b3ciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4R3JvdyksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRGbGV4R3JvdykgfSB9LAogICAgeyAid2Via2l0RmxleFNocmluayIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhTaHJpbmspLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0RmxleFNocmluaykgfSB9LAogICAgeyAid2Via2l0RmxleFdyYXAiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRGbGV4V3JhcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4V3Jh
cCkgfSB9LAogICAgeyAid2Via2l0Rm9udEtlcm5pbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRGb250S2VybmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGb250S2VybmluZykg
fSB9LAogICAgeyAid2Via2l0Rm9udFNtb290aGluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEZvbnRTbW9vdGhpbmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Rm9udFNtb290aGlu
ZykgfSB9LAogICAgeyAid2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEh5cGhlbmF0ZUNoYXJhY3RlcikgfSB9LAogICAgeyAid2Via2l0SHlwaGVuYXRlTGltaXRBZnRl
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0QWZ0ZXIpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlTGltaXRBZnRlcikgfSB9LAogICAgeyAid2Vi
a2l0SHlwaGVuYXRlTGltaXRCZWZvcmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRIeXBoZW5h
dGVMaW1pdEJlZm9yZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRIeXBoZW5hdGVMaW1p
dEJlZm9yZSkgfSB9LAogICAgeyAid2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcykgfSB9LAogICAgeyAid2Via2l0SHlwaGVucyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbnMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0SHlwaGVucykgfSB9LAogICAgeyAid2Via2l0SW5pdGlhbExldHRlciIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEluaXRpYWxMZXR0ZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0SW5pdGlhbExldHRlcikgfSB9LAogICAgeyAid2Via2l0SnVzdGlmeUNvbnRlbnQiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRKdXN0aWZ5Q29udGVudCksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRKdXN0aWZ5Q29udGVudCkgfSB9LAogICAgeyAid2Via2l0SnVzdGlmeUl0ZW1zIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SnVzdGlmeUl0ZW1zKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEp1c3RpZnlJdGVtcykgfSB9LAogICAgeyAid2Via2l0TGluZUFsaWduIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUFsaWduKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdExpbmVBbGlnbikgfSB9LAogICAgeyAid2Via2l0TGluZUJveENvbnRhaW4iLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRMaW5lQm94Q29udGFpbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRMaW5lQm94Q29udGFpbikgfSB9LAogICAgeyAid2Via2l0TGluZUJyZWFrIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0TGluZUJyZWFrKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dExpbmVCcmVhaykgfSB9LAogICAgeyAid2Via2l0TGluZUNsYW1wIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TGluZUNsYW1wKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVDbGFt
cCkgfSB9LAogICAgeyAid2Via2l0TGluZUdyaWQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRM
aW5lR3JpZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lR3JpZCkgfSB9LAogICAg
eyAid2Via2l0TGluZVNuYXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lU25hcCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lU25hcCkgfSB9LAogICAgeyAid2Via2l0TG9j
YWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TG9jYWxlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdExvY2FsZSkgfSB9LAogICAgeyAid2Via2l0TG9naWNhbEhlaWdodCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdExvZ2ljYWxIZWlnaHQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TG9naWNhbEhlaWdodCkgfSB9LAogICAgeyAid2Via2l0TG9naWNhbFdpZHRoIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0TG9naWNhbFdpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdExvZ2ljYWxXaWR0aCkgfSB9LAogICAgeyAid2Via2l0TWFyZ2luQWZ0ZXIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5BZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRNYXJnaW5BZnRlcikgfSB9LAogICAgeyAid2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSkgfSB9LAogICAgeyAid2Via2l0
TWFyZ2luQmVmb3JlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luQmVmb3JlKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkJlZm9yZSkgfSB9LAogICAgeyAid2Via2l0
TWFyZ2luQmVmb3JlQ29sbGFwc2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5CZWZv
cmVDb2xsYXBzZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5CZWZvcmVDb2xs
YXBzZSkgfSB9LAogICAgeyAid2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSkgfSB9LAogICAgeyAid2Via2l0TWFyZ2luQ29s
bGFwc2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5Db2xsYXBzZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5Db2xsYXBzZSkgfSB9LAogICAgeyAid2Via2l0TWFy
Z2luRW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luRW5kKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdE1hcmdpbkVuZCkgfSB9LAogICAgeyAid2Via2l0TWFyZ2luU3RhcnQi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5TdGFydCksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRNYXJnaW5TdGFydCkgfSB9LAogICAgeyAid2Via2l0TWFyZ2luVG9wQ29sbGFw
c2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSkgfSB9LAogICAgeyAid2Via2l0
TWFzayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2spLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TWFzaykgfSB9LAogICAgeyAid2Via2l0TWFza0JveEltYWdlIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dE1hc2tCb3hJbWFnZSkgfSB9LAogICAgeyAid2Via2l0TWFza0JveEltYWdlT3V0c2V0Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlT3V0c2V0KSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZU91dHNldCkgfSB9LAogICAgeyAid2Via2l0TWFza0Jv
eEltYWdlUmVwZWF0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlUmVwZWF0
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCkgfSB9LAog
ICAgeyAid2Via2l0TWFza0JveEltYWdlU2xpY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRN
YXNrQm94SW1hZ2VTbGljZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1h
Z2VTbGljZSkgfSB9LAogICAgeyAid2Via2l0TWFza0JveEltYWdlU291cmNlIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlU291cmNlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZSkgfSB9LAogICAgeyAid2Via2l0TWFza0JveEltYWdl
V2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VXaWR0aCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VXaWR0aCkgfSB9LAogICAgeyAid2Vi
a2l0TWFza0NsaXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQ2xpcCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQ2xpcCkgfSB9LAogICAgeyAid2Via2l0TWFza0NvbXBv
c2l0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tDb21wb3NpdGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0TWFza0NvbXBvc2l0ZSkgfSB9LAogICAgeyAid2Via2l0TWFza0lt
YWdlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0ltYWdlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hc2tJbWFnZSkgfSB9LAogICAgeyAid2Via2l0TWFza09yaWdpbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tPcmlnaW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TWFza09yaWdpbikgfSB9LAogICAgeyAid2Via2l0TWFza1Bvc2l0aW9uIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0TWFza1Bvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdE1hc2tQb3NpdGlvbikgfSB9LAogICAgeyAid2Via2l0TWFza1Bvc2l0aW9uWCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tQb3NpdGlvblgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TWFza1Bvc2l0aW9uWCkgfSB9LAogICAgeyAid2Via2l0TWFza1Bvc2l0aW9uWSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tQb3NpdGlvblkpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TWFza1Bvc2l0aW9uWSkgfSB9LAogICAgeyAid2Via2l0TWFza1JlcGVhdCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tSZXBlYXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TWFza1JlcGVhdCkgfSB9LAogICAgeyAid2Via2l0TWFza1NpemUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRNYXNrU2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNr
U2l6ZSkgfSB9LAogICAgeyAid2Via2l0TWFza1NvdXJjZVR5cGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRNYXNrU291cmNlVHlwZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNr
U291cmNlVHlwZSkgfSB9LAogICAgeyAid2Via2l0TWF4TG9naWNhbEhlaWdodCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdE1heExvZ2ljYWxIZWlnaHQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TWF4TG9naWNhbEhlaWdodCkgfSB9LAogICAgeyAid2Via2l0TWF4TG9naWNhbFdpZHRo
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4TG9naWNhbFdpZHRoKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdE1heExvZ2ljYWxXaWR0aCkgfSB9LAogICAgeyAid2Via2l0TWluTG9n
aWNhbEhlaWdodCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1pbkxvZ2ljYWxIZWlnaHQpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWluTG9naWNhbEhlaWdodCkgfSB9LAogICAgeyAi
d2Via2l0TWluTG9naWNhbFdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWluTG9naWNh
bFdpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1pbkxvZ2ljYWxXaWR0aCkgfSB9
LAogICAgeyAid2Via2l0TmJzcE1vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXROYnNwTW9k
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXROYnNwTW9kZSkgfSB9LAogICAgeyAid2Vi
a2l0T3BhY2l0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE9wYWNpdHkpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0T3BhY2l0eSkgfSB9LAogICAgeyAid2Via2l0T3JkZXIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRPcmRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRP
cmRlcikgfSB9LAogICAgeyAid2Via2l0UGFkZGluZ0FmdGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0UGFkZGluZ0FmdGVyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBhZGRpbmdB
ZnRlcikgfSB9LAogICAgeyAid2Via2l0UGFkZGluZ0JlZm9yZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFBhZGRpbmdCZWZvcmUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGlu
Z0JlZm9yZSkgfSB9LAogICAgeyAid2Via2l0UGFkZGluZ0VuZCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFBhZGRpbmdFbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGluZ0Vu
ZCkgfSB9LAogICAgeyAid2Via2l0UGFkZGluZ1N0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0UGFkZGluZ1N0YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBhZGRpbmdTdGFy
dCkgfSB9LAogICAgeyAid2Via2l0UGVyc3BlY3RpdmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRQZXJzcGVjdGl2ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZSkg
fSB9LAogICAgeyAid2Via2l0UGVyc3BlY3RpdmVPcmlnaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJz
cGVjdGl2ZU9yaWdpbikgfSB9LAogICAgeyAid2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCkgfSB9LAogICAgeyAid2Via2l0UGVyc3Bl
Y3RpdmVPcmlnaW5ZIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGVyc3BlY3RpdmVPcmlnaW5Z
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSkgfSB9LAog
ICAgeyAid2Via2l0UHJpbnRDb2xvckFkanVzdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBy
aW50Q29sb3JBZGp1c3QpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UHJpbnRDb2xvckFk
anVzdCkgfSB9LAogICAgeyAid2Via2l0UnRsT3JkZXJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRSdGxPcmRlcmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRSdGxPcmRlcmlu
ZykgfSB9LAogICAgeyAid2Via2l0UnVieVBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0UnVieVBvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFJ1YnlQb3NpdGlv
bikgfSB9LAogICAgeyAid2Via2l0U2hhcGVJbWFnZVRocmVzaG9sZCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0U2hhcGVJbWFnZVRocmVzaG9sZCkgfSB9LAogICAgeyAid2Via2l0U2hhcGVNYXJnaW4iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRTaGFwZU1hcmdpbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRTaGFwZU1hcmdpbikgfSB9LAogICAgeyAid2Via2l0U2hhcGVPdXRzaWRlIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0U2hhcGVPdXRzaWRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFNoYXBlT3V0c2lkZSkgfSB9LAogICAgeyAid2Via2l0VGV4dENvbWJpbmUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0Q29tYmluZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRUZXh0Q29tYmluZSkgfSB9LAogICAgeyAid2Via2l0VGV4dERlY29yYXRpb24iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRUZXh0RGVjb3JhdGlvbikgfSB9LAogICAgeyAid2Via2l0VGV4dERlY29yYXRpb25D
b2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHREZWNvcmF0aW9uQ29sb3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25Db2xvcikgfSB9LAogICAgeyAi
d2Via2l0VGV4dERlY29yYXRpb25MaW5lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERl
Y29yYXRpb25MaW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHREZWNvcmF0aW9u
TGluZSkgfSB9LAogICAgeyAid2Via2l0VGV4dERlY29yYXRpb25Ta2lwIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0VGV4dERlY29yYXRpb25Ta2lwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFRleHREZWNvcmF0aW9uU2tpcCkgfSB9LAogICAgeyAid2Via2l0VGV4dERlY29yYXRpb25T
dHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHREZWNvcmF0aW9uU3R5bGUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25TdHlsZSkgfSB9LAogICAgeyAi
d2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRU
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCkgfSB9LAogICAgeyAid2Via2l0VGV4dEVtcGhhc2lzIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dEVtcGhhc2lzKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRleHRFbXBoYXNpcykgfSB9LAogICAgeyAid2Via2l0VGV4dEVtcGhhc2lzQ29sb3Ii
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNDb2xvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNDb2xvcikgfSB9LAogICAgeyAid2Via2l0VGV4
dEVtcGhhc2lzUG9zaXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNQ
b3NpdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNQb3NpdGlv
bikgfSB9LAogICAgeyAid2Via2l0VGV4dEVtcGhhc2lzU3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRUZXh0RW1waGFzaXNTdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRU
ZXh0RW1waGFzaXNTdHlsZSkgfSB9LAogICAgeyAid2Via2l0VGV4dEZpbGxDb2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdFRleHRGaWxsQ29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0VGV4dEZpbGxDb2xvcikgfSB9LAogICAgeyAid2Via2l0VGV4dE9yaWVudGF0aW9uIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dE9yaWVudGF0aW9uKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdFRleHRPcmllbnRhdGlvbikgfSB9LAogICAgeyAid2Via2l0VGV4dFNlY3Vy
aXR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFNlY3VyaXR5KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdFRleHRTZWN1cml0eSkgfSB9LAogICAgeyAid2Via2l0VGV4dFNpemVB
ZGp1c3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U2l6ZUFkanVzdCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U2l6ZUFkanVzdCkgfSB9LAogICAgeyAid2Via2l0VGV4
dFN0cm9rZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTdHJva2UpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZSkgfSB9LAogICAgeyAid2Via2l0VGV4dFN0cm9r
ZUNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZUNvbG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTdHJva2VDb2xvcikgfSB9LAogICAgeyAid2Via2l0
VGV4dFN0cm9rZVdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZVdpZHRo
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTdHJva2VXaWR0aCkgfSB9LAogICAg
eyAid2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VGV4dFVuZGVybGluZVBvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRV
bmRlcmxpbmVQb3NpdGlvbikgfSB9LAogICAgeyAid2Via2l0VGV4dFpvb20iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUZXh0Wm9vbSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0
Wm9vbSkgfSB9LAogICAgeyAid2Via2l0VHJhbnNmb3JtIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0VHJhbnNmb3JtKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybSkgfSB9
LAogICAgeyAid2Via2l0VHJhbnNmb3JtT3JpZ2luIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VHJhbnNmb3JtT3JpZ2luKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybU9y
aWdpbikgfSB9LAogICAgeyAid2Via2l0VHJhbnNmb3JtT3JpZ2luWCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFRyYW5zZm9ybU9yaWdpblgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VHJhbnNmb3JtT3JpZ2luWCkgfSB9LAogICAgeyAid2Via2l0VHJhbnNmb3JtT3JpZ2luWSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybU9yaWdpblkpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0VHJhbnNmb3JtT3JpZ2luWSkgfSB9LAogICAgeyAid2Via2l0VHJhbnNmb3Jt
T3JpZ2luWiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybU9yaWdpblopLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtT3JpZ2luWikgfSB9LAogICAgeyAid2Vi
a2l0VHJhbnNmb3JtU3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1TdHls
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1TdHlsZSkgfSB9LAogICAg
eyAid2Via2l0VHJhbnNpdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb24p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvbikgfSB9LAogICAgeyAid2Vi
a2l0VHJhbnNpdGlvbkRlbGF5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvbkRl
bGF5KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb25EZWxheSkgfSB9LAog
ICAgeyAid2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VHJhbnNpdGlvbkR1cmF0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRp
b25EdXJhdGlvbikgfSB9LAogICAgeyAid2Via2l0VHJhbnNpdGlvblByb3BlcnR5Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvblByb3BlcnR5KSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSkgfSB9LAogICAgeyAid2Via2l0VHJhbnNpdGlv
blRpbWluZ0Z1bmN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb25UaW1pbmdG
dW5jdGlvbikgfSB9LAogICAgeyAid2Via2l0VXNlckRyYWciLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRVc2VyRHJhZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRVc2VyRHJhZykgfSB9
LAogICAgeyAid2Via2l0VXNlck1vZGlmeSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFVzZXJN
b2RpZnkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNlck1vZGlmeSkgfSB9LAogICAg
eyAid2Via2l0VXNlclNlbGVjdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFVzZXJTZWxlY3Qp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNlclNlbGVjdCkgfSB9LAogICAgeyAid2Vi
a2l0V3JpdGluZ01vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRXcml0aW5nTW9kZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRXcml0aW5nTW9kZSkgfSB9LAogICAgeyAiLWFwcGxl
LWNvbG9yLWZpbHRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9jb2xvcl9k
YXNoX2ZpbHRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2FwcGxlX2Rhc2hfY29sb3Jf
ZGFzaF9maWx0ZXIpIH0gfSwKICAgIHsgIi1hcHBsZS1wYXktYnV0dG9uLXN0eWxlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3BheV9kYXNoX2J1dHRvbl9kYXNoX3N0eWxlKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9wYXlfZGFzaF9idXR0b25fZGFz
aF9zdHlsZSkgfSB9LAogICAgeyAiLWFwcGxlLXBheS1idXR0b24tdHlwZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9wYXlfZGFzaF9idXR0b25fZGFzaF90eXBlKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9wYXlfZGFzaF9idXR0b25fZGFzaF90eXBl
KSB9IH0sCiAgICB7ICItYXBwbGUtdHJhaWxpbmctd29yZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfYXBwbGVfZGFzaF90cmFpbGluZ19kYXNoX3dvcmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF9hcHBsZV9kYXNoX3RyYWlsaW5nX2Rhc2hfd29yZCkgfSB9LAogICAgeyAiLWVwdWItY2Fw
dGlvbi1zaWRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfY2FwdGlvbl9kYXNo
X3NpZGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfY2FwdGlvbl9kYXNo
X3NpZGUpIH0gfSwKICAgIHsgIi1lcHViLWh5cGhlbnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X2VwdWJfZGFzaF9oeXBoZW5zKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNo
X2h5cGhlbnMpIH0gfSwKICAgIHsgIi1lcHViLXRleHQtY29tYmluZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9jb21iaW5lKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9jb21iaW5lKSB9IH0sCiAgICB7ICItZXB1Yi10
ZXh0LWVtcGhhc2lzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNo
X2VtcGhhc2lzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFz
aF9lbXBoYXNpcykgfSB9LAogICAgeyAiLWVwdWItdGV4dC1lbXBoYXNpcy1jb2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX2NvbG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9lbXBoYXNp
c19kYXNoX2NvbG9yKSB9IH0sCiAgICB7ICItZXB1Yi10ZXh0LWVtcGhhc2lzLXN0eWxlIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfc3R5
bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhh
c2lzX2Rhc2hfc3R5bGUpIH0gfSwKICAgIHsgIi1lcHViLXRleHQtb3JpZW50YXRpb24iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfb3JpZW50YXRpb24pLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX29yaWVudGF0aW9uKSB9
IH0sCiAgICB7ICItZXB1Yi10ZXh0LXRyYW5zZm9ybSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
ZXB1Yl9kYXNoX3RleHRfZGFzaF90cmFuc2Zvcm0pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF9lcHViX2Rhc2hfdGV4dF9kYXNoX3RyYW5zZm9ybSkgfSB9LAogICAgeyAiLWVwdWItd29yZC1i
cmVhayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3dvcmRfZGFzaF9icmVhayks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF93b3JkX2Rhc2hfYnJlYWspIH0g
fSwKICAgIHsgIi1lcHViLXdyaXRpbmctbW9kZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1
Yl9kYXNoX3dyaXRpbmdfZGFzaF9tb2RlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1
Yl9kYXNoX3dyaXRpbmdfZGFzaF9tb2RlKSB9IH0sCiAgICB7ICItaW50ZXJuYWwtdGV4dC1hdXRv
c2l6aW5nLXN0YXR1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfaW50ZXJuYWxfZGFzaF90ZXh0
X2Rhc2hfYXV0b3NpemluZ19kYXNoX3N0YXR1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X2ludGVybmFsX2Rhc2hfdGV4dF9kYXNoX2F1dG9zaXppbmdfZGFzaF9zdGF0dXMpIH0gfSwKICAg
IHsgIi13ZWJraXQtYWxpZ24tY29udGVudCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYWxpZ25fZGFzaF9jb250ZW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfYWxpZ25fZGFzaF9jb250ZW50KSB9IH0sCiAgICB7ICItd2Via2l0LWFsaWduLWl0
ZW1zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX2l0ZW1z
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWxpZ25fZGFzaF9pdGVt
cykgfSB9LAogICAgeyAiLXdlYmtpdC1hbGlnbi1zZWxmIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX3NlbGYpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX3NlbGYpIH0gfSwKICAgIHsgIi13ZWJraXQtYWx0Iiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbHQpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbHQpIH0gfSwKICAgIHsgIi13ZWJraXQtYW5pbWF0aW9u
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb24pLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb24pIH0gfSwKICAgIHsgIi13
ZWJraXQtYW5pbWF0aW9uLWRlbGF5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9hbmltYXRpb25fZGFzaF9kZWxheSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2FuaW1hdGlvbl9kYXNoX2RlbGF5KSB9IH0sCiAgICB7ICItd2Via2l0LWFuaW1hdGlv
bi1kaXJlY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlv
bl9kYXNoX2RpcmVjdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2FuaW1hdGlvbl9kYXNoX2RpcmVjdGlvbikgfSB9LAogICAgeyAiLXdlYmtpdC1hbmltYXRpb24t
ZHVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9k
YXNoX2R1cmF0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5p
bWF0aW9uX2Rhc2hfZHVyYXRpb24pIH0gfSwKICAgIHsgIi13ZWJraXQtYW5pbWF0aW9uLWZpbGwt
bW9kZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hf
ZmlsbF9kYXNoX21vZGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9h
bmltYXRpb25fZGFzaF9maWxsX2Rhc2hfbW9kZSkgfSB9LAogICAgeyAiLXdlYmtpdC1hbmltYXRp
b24taXRlcmF0aW9uLWNvdW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9h
bmltYXRpb25fZGFzaF9pdGVyYXRpb25fZGFzaF9jb3VudCksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2l0ZXJhdGlvbl9kYXNoX2NvdW50KSB9
IH0sCiAgICB7ICItd2Via2l0LWFuaW1hdGlvbi1uYW1lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF9uYW1lKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfbmFtZSkgfSB9LAogICAgeyAiLXdlYmtp
dC1hbmltYXRpb24tcGxheS1zdGF0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRlKSB9IH0sCiAg
ICB7ICItd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfdGlt
aW5nX2Rhc2hfZnVuY3Rpb24pIH0gfSwKICAgIHsgIi13ZWJraXQtYXBwZWFyYW5jZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYXBwZWFyYW5jZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FwcGVhcmFuY2UpIH0gfSwKICAgIHsgIi13ZWJraXQt
YmFja2Ryb3AtZmlsdGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNr
ZHJvcF9kYXNoX2ZpbHRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JhY2tkcm9wX2Rhc2hfZmlsdGVyKSB9IH0sCiAgICB7ICItd2Via2l0LWJhY2tmYWNlLXZpc2li
aWxpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tmYWNlX2Rhc2hf
dmlzaWJpbGl0eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tm
YWNlX2Rhc2hfdmlzaWJpbGl0eSkgfSB9LAogICAgeyAiLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXAi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tncm91bmRfZGFzaF9jbGlw
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9kYXNo
X2NsaXApIH0gfSwKICAgIHsgIi13ZWJraXQtYmFja2dyb3VuZC1jb21wb3NpdGUiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tncm91bmRfZGFzaF9jb21wb3NpdGUpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfY29t
cG9zaXRlKSB9IH0sCiAgICB7ICItd2Via2l0LWJhY2tncm91bmQtb3JpZ2luIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfb3JpZ2luKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9kYXNoX29yaWdpbikg
fSB9LAogICAgeyAiLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JhY2tncm91bmRfZGFzaF9zaXplKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9kYXNoX3NpemUpIH0gfSwKICAgIHsgIi13
ZWJraXQtYm9yZGVyLWFmdGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9i
b3JkZXJfZGFzaF9hZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JvcmRlcl9kYXNoX2FmdGVyKSB9IH0sCiAgICB7ICItd2Via2l0LWJvcmRlci1hZnRlci1jb2xv
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYWZ0ZXJf
ZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRl
cl9kYXNoX2FmdGVyX2Rhc2hfY29sb3IpIH0gfSwKICAgIHsgIi13ZWJraXQtYm9yZGVyLWFmdGVy
LXN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9h
ZnRlcl9kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym9yZGVyX2Rhc2hfYWZ0ZXJfZGFzaF9zdHlsZSkgfSB9LAogICAgeyAiLXdlYmtpdC1ib3JkZXIt
YWZ0ZXItd2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX2FmdGVyX2Rhc2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNoX3dpZHRoKSB9IH0sCiAgICB7ICItd2Via2l0LWJv
cmRlci1iZWZvcmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX2JlZm9yZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRl
cl9kYXNoX2JlZm9yZSkgfSB9LAogICAgeyAiLXdlYmtpdC1ib3JkZXItYmVmb3JlLWNvbG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFz
aF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX2JlZm9yZV9kYXNoX2NvbG9yKSB9IH0sCiAgICB7ICItd2Via2l0LWJvcmRlci1iZWZvcmUt
c3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2Jl
Zm9yZV9kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym9yZGVyX2Rhc2hfYmVmb3JlX2Rhc2hfc3R5bGUpIH0gfSwKICAgIHsgIi13ZWJraXQtYm9yZGVy
LWJlZm9yZS13aWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVy
X2Rhc2hfYmVmb3JlX2Rhc2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFzaF93aWR0aCkgfSB9LAogICAgeyAiLXdlYmtp
dC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9sZWZ0X2Rhc2hfcmFkaXVzKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hf
bGVmdF9kYXNoX3JhZGl1cykgfSB9LAogICAgeyAiLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0
LXJhZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
Ym90dG9tX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9yaWdodF9kYXNoX3JhZGl1cykg
fSB9LAogICAgeyAiLXdlYmtpdC1ib3JkZXItZW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9lbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9lbmQpIH0gfSwKICAgIHsgIi13ZWJraXQtYm9yZGVyLWVu
ZC1jb2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
ZW5kX2Rhc2hfY29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9i
b3JkZXJfZGFzaF9lbmRfZGFzaF9jb2xvcikgfSB9LAogICAgeyAiLXdlYmtpdC1ib3JkZXItZW5k
LXN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9l
bmRfZGFzaF9zdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
cmRlcl9kYXNoX2VuZF9kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICItd2Via2l0LWJvcmRlci1lbmQt
d2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2Vu
ZF9kYXNoX3dpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9y
ZGVyX2Rhc2hfZW5kX2Rhc2hfd2lkdGgpIH0gfSwKICAgIHsgIi13ZWJraXQtYm9yZGVyLWZpdCIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZml0KSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZml0KSB9IH0s
CiAgICB7ICItd2Via2l0LWJvcmRlci1ob3Jpem9udGFsLXNwYWNpbmciLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2hvcml6b250YWxfZGFzaF9zcGFjaW5n
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfaG9y
aXpvbnRhbF9kYXNoX3NwYWNpbmcpIH0gfSwKICAgIHsgIi13ZWJraXQtYm9yZGVyLWltYWdlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9pbWFnZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2ltYWdlKSB9
IH0sCiAgICB7ICItd2Via2l0LWJvcmRlci1yYWRpdXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3JhZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3JhZGl1cykgfSB9LAogICAgeyAiLXdlYmtpdC1i
b3JkZXItc3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX3N0YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVy
X2Rhc2hfc3RhcnQpIH0gfSwKICAgIHsgIi13ZWJraXQtYm9yZGVyLXN0YXJ0LWNvbG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX2Nv
bG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
c3RhcnRfZGFzaF9jb2xvcikgfSB9LAogICAgeyAiLXdlYmtpdC1ib3JkZXItc3RhcnQtc3R5bGUi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3N0YXJ0X2Rh
c2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJf
ZGFzaF9zdGFydF9kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICItd2Via2l0LWJvcmRlci1zdGFydC13
aWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfc3Rh
cnRfZGFzaF93aWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
cmRlcl9kYXNoX3N0YXJ0X2Rhc2hfd2lkdGgpIH0gfSwKICAgIHsgIi13ZWJraXQtYm9yZGVyLXRv
cC1sZWZ0LXJhZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVy
X2Rhc2hfdG9wX2Rhc2hfbGVmdF9kYXNoX3JhZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3RvcF9kYXNoX2xlZnRfZGFzaF9yYWRpdXMpIH0g
fSwKICAgIHsgIi13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3JpZ2h0X2Rhc2hfcmFk
aXVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
dG9wX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXMpIH0gfSwKICAgIHsgIi13ZWJraXQtYm9yZGVyLXZl
cnRpY2FsLXNwYWNpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRl
cl9kYXNoX3ZlcnRpY2FsX2Rhc2hfc3BhY2luZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3ZlcnRpY2FsX2Rhc2hfc3BhY2luZykgfSB9LAogICAg
eyAiLXdlYmtpdC1ib3gtYWxpZ24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JveF9kYXNoX2FsaWduKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym94X2Rhc2hfYWxpZ24pIH0gfSwKICAgIHsgIi13ZWJraXQtYm94LWRlY29yYXRpb24tYnJlYWsi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2RlY29yYXRpb25f
ZGFzaF9icmVhayksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9k
YXNoX2RlY29yYXRpb25fZGFzaF9icmVhaykgfSB9LAogICAgeyAiLXdlYmtpdC1ib3gtZGlyZWN0
aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9kaXJlY3Rp
b24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9kaXJl
Y3Rpb24pIH0gfSwKICAgIHsgIi13ZWJraXQtYm94LWZsZXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2ZsZXgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9ib3hfZGFzaF9mbGV4KSB9IH0sCiAgICB7ICItd2Via2l0LWJveC1mbGV4
LWdyb3VwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9mbGV4
X2Rhc2hfZ3JvdXApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hf
ZGFzaF9mbGV4X2Rhc2hfZ3JvdXApIH0gfSwKICAgIHsgIi13ZWJraXQtYm94LWxpbmVzIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9saW5lcyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2xpbmVzKSB9IH0sCiAgICB7
ICItd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9ib3hfZGFzaF9vcmRpbmFsX2Rhc2hfZ3JvdXApLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9vcmRpbmFsX2Rhc2hfZ3JvdXApIH0gfSwKICAg
IHsgIi13ZWJraXQtYm94LW9yaWVudCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfYm94X2Rhc2hfb3JpZW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfYm94X2Rhc2hfb3JpZW50KSB9IH0sCiAgICB7ICItd2Via2l0LWJveC1wYWNrIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9wYWNrKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfcGFjaykgfSB9LAogICAgeyAiLXdl
YmtpdC1ib3gtcmVmbGVjdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94
X2Rhc2hfcmVmbGVjdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
eF9kYXNoX3JlZmxlY3QpIH0gfSwKICAgIHsgIi13ZWJraXQtYm94LXNoYWRvdyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfc2hhZG93KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfc2hhZG93KSB9IH0sCiAgICB7ICIt
d2Via2l0LWJveC1zaXppbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
eF9kYXNoX3NpemluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
eF9kYXNoX3NpemluZykgfSB9LAogICAgeyAiLXdlYmtpdC1jbGlwLXBhdGgiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NsaXBfZGFzaF9wYXRoKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY2xpcF9kYXNoX3BhdGgpIH0gfSwKICAgIHsgIi13ZWJr
aXQtY29sdW1uLWF4aXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVt
bl9kYXNoX2F4aXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1
bW5fZGFzaF9heGlzKSB9IH0sCiAgICB7ICItd2Via2l0LWNvbHVtbi1icmVhay1hZnRlciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtfZGFzaF9h
ZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNo
X2JyZWFrX2Rhc2hfYWZ0ZXIpIH0gfSwKICAgIHsgIi13ZWJraXQtY29sdW1uLWJyZWFrLWJlZm9y
ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtf
ZGFzaF9iZWZvcmUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1
bW5fZGFzaF9icmVha19kYXNoX2JlZm9yZSkgfSB9LAogICAgeyAiLXdlYmtpdC1jb2x1bW4tYnJl
YWstaW5zaWRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFz
aF9icmVha19kYXNoX2luc2lkZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2NvbHVtbl9kYXNoX2JyZWFrX2Rhc2hfaW5zaWRlKSB9IH0sCiAgICB7ICItd2Via2l0LWNv
bHVtbi1jb3VudCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rh
c2hfY291bnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5f
ZGFzaF9jb3VudCkgfSB9LAogICAgeyAiLXdlYmtpdC1jb2x1bW4tZmlsbCIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfZmlsbCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2ZpbGwpIH0gfSwKICAgIHsgIi13
ZWJraXQtY29sdW1uLWdhcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29s
dW1uX2Rhc2hfZ2FwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29s
dW1uX2Rhc2hfZ2FwKSB9IH0sCiAgICB7ICItd2Via2l0LWNvbHVtbi1wcm9ncmVzc2lvbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcHJvZ3Jlc3Npb24p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9wcm9n
cmVzc2lvbikgfSB9LAogICAgeyAiLXdlYmtpdC1jb2x1bW4tcnVsZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGUpIH0gfSwKICAgIHsgIi13ZWJr
aXQtY29sdW1uLXJ1bGUtY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2NvbHVtbl9kYXNoX3J1bGVfZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGVfZGFzaF9jb2xvcikgfSB9LAogICAgeyAiLXdl
YmtpdC1jb2x1bW4tcnVsZS1zdHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfY29sdW1uX2Rhc2hfcnVsZV9kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZV9kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICIt
d2Via2l0LWNvbHVtbi1ydWxlLXdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGgpIH0gfSwKICAgIHsg
Ii13ZWJraXQtY29sdW1uLXNwYW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2NvbHVtbl9kYXNoX3NwYW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9jb2x1bW5fZGFzaF9zcGFuKSB9IH0sCiAgICB7ICItd2Via2l0LWNvbHVtbi13aWR0aCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfd2lkdGgpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF93aWR0aCkgfSB9
LAogICAgeyAiLXdlYmtpdC1jb2x1bW5zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9jb2x1bW5zKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29s
dW1ucykgfSB9LAogICAgeyAiLXdlYmtpdC1jdXJzb3ItdmlzaWJpbGl0eSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY3Vyc29yX2Rhc2hfdmlzaWJpbGl0eSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2N1cnNvcl9kYXNoX3Zpc2liaWxpdHkpIH0g
fSwKICAgIHsgIi13ZWJraXQtZmlsdGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9maWx0ZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9maWx0
ZXIpIH0gfSwKICAgIHsgIi13ZWJraXQtZmxleCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfZmxleCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Zs
ZXgpIH0gfSwKICAgIHsgIi13ZWJraXQtZmxleC1iYXNpcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX2Jhc2lzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX2Jhc2lzKSB9IH0sCiAgICB7ICItd2Via2l0LWZsZXgt
ZGlyZWN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hf
ZGlyZWN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9k
YXNoX2RpcmVjdGlvbikgfSB9LAogICAgeyAiLXdlYmtpdC1mbGV4LWZsb3ciLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9mbG93KSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX2Zsb3cpIH0gfSwKICAgIHsgIi13ZWJr
aXQtZmxleC1ncm93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rh
c2hfZ3JvdyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFz
aF9ncm93KSB9IH0sCiAgICB7ICItd2Via2l0LWZsZXgtc2hyaW5rIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfc2hyaW5rKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX3NocmluaykgfSB9LAogICAgeyAiLXdlYmtp
dC1mbGV4LXdyYXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFz
aF93cmFwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNo
X3dyYXApIH0gfSwKICAgIHsgIi13ZWJraXQtZm9udC1rZXJuaW5nIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9mb250X2Rhc2hfa2VybmluZyksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZvbnRfZGFzaF9rZXJuaW5nKSB9IH0sCiAgICB7ICItd2Vi
a2l0LWZvbnQtc21vb3RoaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9m
b250X2Rhc2hfc21vb3RoaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfZm9udF9kYXNoX3Ntb290aGluZykgfSB9LAogICAgeyAiLXdlYmtpdC1oeXBoZW5hdGUtY2hh
cmFjdGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9oeXBoZW5hdGVfZGFz
aF9jaGFyYWN0ZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9oeXBo
ZW5hdGVfZGFzaF9jaGFyYWN0ZXIpIH0gfSwKICAgIHsgIi13ZWJraXQtaHlwaGVuYXRlLWxpbWl0
LWFmdGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9oeXBoZW5hdGVfZGFz
aF9saW1pdF9kYXNoX2FmdGVyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfaHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFzaF9hZnRlcikgfSB9LAogICAgeyAiLXdlYmtpdC1o
eXBoZW5hdGUtbGltaXQtYmVmb3JlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9oeXBoZW5hdGVfZGFzaF9saW1pdF9kYXNoX2JlZm9yZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbmF0ZV9kYXNoX2xpbWl0X2Rhc2hfYmVmb3JlKSB9IH0s
CiAgICB7ICItd2Via2l0LWh5cGhlbmF0ZS1saW1pdC1saW5lcyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFzaF9saW5lcyksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbmF0ZV9kYXNoX2xpbWl0X2Rh
c2hfbGluZXMpIH0gfSwKICAgIHsgIi13ZWJraXQtaHlwaGVucyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVucyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2h5cGhlbnMpIH0gfSwKICAgIHsgIi13ZWJraXQtaW5pdGlhbC1sZXR0ZXIiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2luaXRpYWxfZGFzaF9sZXR0ZXIpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9pbml0aWFsX2Rhc2hfbGV0dGVy
KSB9IH0sCiAgICB7ICItd2Via2l0LWp1c3RpZnktY29udGVudCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfanVzdGlmeV9kYXNoX2NvbnRlbnQpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9qdXN0aWZ5X2Rhc2hfY29udGVudCkgfSB9LAogICAgeyAi
LXdlYmtpdC1qdXN0aWZ5LWl0ZW1zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9qdXN0aWZ5X2Rhc2hfaXRlbXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9qdXN0aWZ5X2Rhc2hfaXRlbXMpIH0gfSwKICAgIHsgIi13ZWJraXQtbGluZS1hbGlnbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2FsaWduKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2FsaWduKSB9IH0s
CiAgICB7ICItd2Via2l0LWxpbmUtYm94LWNvbnRhaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9ib3hfZGFzaF9jb250YWluKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2JveF9kYXNoX2NvbnRhaW4pIH0gfSwK
ICAgIHsgIi13ZWJraXQtbGluZS1icmVhayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbGluZV9kYXNoX2JyZWFrKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbGluZV9kYXNoX2JyZWFrKSB9IH0sCiAgICB7ICItd2Via2l0LWxpbmUtY2xhbXAiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9jbGFtcCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9jbGFtcCkgfSB9LAog
ICAgeyAiLXdlYmtpdC1saW5lLWdyaWQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2xpbmVfZGFzaF9ncmlkKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbGluZV9kYXNoX2dyaWQpIH0gfSwKICAgIHsgIi13ZWJraXQtbGluZS1zbmFwIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rhc2hfc25hcCksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9zbmFwKSB9IH0sCiAgICB7ICIt
d2Via2l0LWxvY2FsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbG9jYWxl
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbG9jYWxlKSB9IH0sCiAg
ICB7ICItd2Via2l0LWxvZ2ljYWwtaGVpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9sb2dpY2FsX2Rhc2hfaGVpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfbG9naWNhbF9kYXNoX2hlaWdodCkgfSB9LAogICAgeyAiLXdlYmtpdC1sb2dp
Y2FsLXdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2dpY2FsX2Rh
c2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2dpY2Fs
X2Rhc2hfd2lkdGgpIH0gfSwKICAgIHsgIi13ZWJraXQtbWFyZ2luLWFmdGVyIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9hZnRlciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2FmdGVyKSB9IH0sCiAgICB7
ICItd2Via2l0LW1hcmdpbi1hZnRlci1jb2xsYXBzZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYWZ0ZXJfZGFzaF9jb2xsYXBzZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2FmdGVyX2Rhc2hfY29sbGFw
c2UpIH0gfSwKICAgIHsgIi13ZWJraXQtbWFyZ2luLWJlZm9yZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYmVmb3JlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYmVmb3JlKSB9IH0sCiAgICB7ICItd2Vi
a2l0LW1hcmdpbi1iZWZvcmUtY29sbGFwc2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX21hcmdpbl9kYXNoX2JlZm9yZV9kYXNoX2NvbGxhcHNlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYmVmb3JlX2Rhc2hfY29sbGFwc2Up
IH0gfSwKICAgIHsgIi13ZWJraXQtbWFyZ2luLWJvdHRvbS1jb2xsYXBzZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYm90dG9tX2Rhc2hfY29sbGFwc2Up
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9ib3R0
b21fZGFzaF9jb2xsYXBzZSkgfSB9LAogICAgeyAiLXdlYmtpdC1tYXJnaW4tY29sbGFwc2UiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2NvbGxhcHNlKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfY29sbGFw
c2UpIH0gfSwKICAgIHsgIi13ZWJraXQtbWFyZ2luLWVuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfZW5kKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfZW5kKSB9IH0sCiAgICB7ICItd2Via2l0LW1hcmdp
bi1zdGFydCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hf
c3RhcnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFz
aF9zdGFydCkgfSB9LAogICAgeyAiLXdlYmtpdC1tYXJnaW4tdG9wLWNvbGxhcHNlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF90b3BfZGFzaF9jb2xsYXBz
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX3Rv
cF9kYXNoX2NvbGxhcHNlKSB9IH0sCiAgICB7ICItd2Via2l0LW1hc2siLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2spLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9tYXNrKSB9IH0sCiAgICB7ICItd2Via2l0LW1hc2stYm94LWltYWdlIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2Up
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rh
c2hfaW1hZ2UpIH0gfSwKICAgIHsgIi13ZWJraXQtbWFzay1ib3gtaW1hZ2Utb3V0c2V0Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2Vf
ZGFzaF9vdXRzZXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNr
X2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF9vdXRzZXQpIH0gfSwKICAgIHsgIi13ZWJraXQtbWFz
ay1ib3gtaW1hZ2UtcmVwZWF0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9t
YXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF9yZXBlYXQpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF9yZXBlYXQp
IH0gfSwKICAgIHsgIi13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2UiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZV9kYXNoX3NsaWNl
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2JveF9k
YXNoX2ltYWdlX2Rhc2hfc2xpY2UpIH0gfSwKICAgIHsgIi13ZWJraXQtbWFzay1ib3gtaW1hZ2Ut
c291cmNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94
X2Rhc2hfaW1hZ2VfZGFzaF9zb3VyY2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF9zb3VyY2UpIH0gfSwKICAgIHsg
Ii13ZWJraXQtbWFzay1ib3gtaW1hZ2Utd2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZV9kYXNoX3dpZHRoKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2JveF9kYXNoX2ltYWdlX2Rh
c2hfd2lkdGgpIH0gfSwKICAgIHsgIi13ZWJraXQtbWFzay1jbGlwIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfY2xpcCksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9jbGlwKSB9IH0sCiAgICB7ICItd2Via2l0LW1h
c2stY29tcG9zaXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rh
c2hfY29tcG9zaXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFz
a19kYXNoX2NvbXBvc2l0ZSkgfSB9LAogICAgeyAiLXdlYmtpdC1tYXNrLWltYWdlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfaW1hZ2UpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfaW1hZ2UpIH0gfSwKICAgIHsg
Ii13ZWJraXQtbWFzay1vcmlnaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X21hc2tfZGFzaF9vcmlnaW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXNrX2Rhc2hfb3JpZ2luKSB9IH0sCiAgICB7ICItd2Via2l0LW1hc2stcG9zaXRpb24iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbiksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbikg
fSB9LAogICAgeyAiLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbl9kYXNoX3gpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfcG9zaXRpb25fZGFzaF94KSB9IH0s
CiAgICB7ICItd2Via2l0LW1hc2stcG9zaXRpb24teSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfbWFza19kYXNoX3Bvc2l0aW9uX2Rhc2hfeSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbl9kYXNoX3kpIH0gfSwKICAg
IHsgIi13ZWJraXQtbWFzay1yZXBlYXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX21hc2tfZGFzaF9yZXBlYXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9tYXNrX2Rhc2hfcmVwZWF0KSB9IH0sCiAgICB7ICItd2Via2l0LW1hc2stc2l6ZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX3NpemUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfc2l6ZSkgfSB9LAogICAg
eyAiLXdlYmtpdC1tYXNrLXNvdXJjZS10eXBlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9tYXNrX2Rhc2hfc291cmNlX2Rhc2hfdHlwZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9zb3VyY2VfZGFzaF90eXBlKSB9IH0sCiAgICB7
ICItd2Via2l0LW1heC1sb2dpY2FsLWhlaWdodCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbWF4X2Rhc2hfbG9naWNhbF9kYXNoX2hlaWdodCksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX21heF9kYXNoX2xvZ2ljYWxfZGFzaF9oZWlnaHQpIH0gfSwK
ICAgIHsgIi13ZWJraXQtbWF4LWxvZ2ljYWwtd2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX21heF9kYXNoX2xvZ2ljYWxfZGFzaF93aWR0aCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21heF9kYXNoX2xvZ2ljYWxfZGFzaF93aWR0aCkgfSB9
LAogICAgeyAiLXdlYmtpdC1taW4tbG9naWNhbC1oZWlnaHQiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX21pbl9kYXNoX2xvZ2ljYWxfZGFzaF9oZWlnaHQpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9taW5fZGFzaF9sb2dpY2FsX2Rhc2hfaGVpZ2h0
KSB9IH0sCiAgICB7ICItd2Via2l0LW1pbi1sb2dpY2FsLXdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9taW5fZGFzaF9sb2dpY2FsX2Rhc2hfd2lkdGgpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9taW5fZGFzaF9sb2dpY2FsX2Rhc2hfd2lk
dGgpIH0gfSwKICAgIHsgIi13ZWJraXQtbmJzcC1tb2RlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9uYnNwX2Rhc2hfbW9kZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX25ic3BfZGFzaF9tb2RlKSB9IH0sCiAgICB7ICItd2Via2l0LW9wYWNpdHki
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX29wYWNpdHkpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9vcGFjaXR5KSB9IH0sCiAgICB7ICItd2Via2l0
LW9yZGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9vcmRlciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX29yZGVyKSB9IH0sCiAgICB7ICItd2Vi
a2l0LXBhZGRpbmctYWZ0ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Bh
ZGRpbmdfZGFzaF9hZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3BhZGRpbmdfZGFzaF9hZnRlcikgfSB9LAogICAgeyAiLXdlYmtpdC1wYWRkaW5nLWJlZm9yZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGluZ19kYXNoX2JlZm9yZSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BhZGRpbmdfZGFzaF9iZWZv
cmUpIH0gfSwKICAgIHsgIi13ZWJraXQtcGFkZGluZy1lbmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX3BhZGRpbmdfZGFzaF9lbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfZW5kKSB9IH0sCiAgICB7ICItd2Via2l0LXBh
ZGRpbmctc3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BhZGRpbmdf
ZGFzaF9zdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BhZGRp
bmdfZGFzaF9zdGFydCkgfSB9LAogICAgeyAiLXdlYmtpdC1wZXJzcGVjdGl2ZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGVyc3BlY3RpdmUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZSkgfSB9LAogICAgeyAiLXdlYmtpdC1w
ZXJzcGVjdGl2ZS1vcmlnaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Bl
cnNwZWN0aXZlX2Rhc2hfb3JpZ2luKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW4pIH0gfSwKICAgIHsgIi13ZWJraXQtcGVyc3Bl
Y3RpdmUtb3JpZ2luLXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNw
ZWN0aXZlX2Rhc2hfb3JpZ2luX2Rhc2hfeCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luX2Rhc2hfeCkgfSB9LAogICAgeyAiLXdl
YmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4teSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5fZGFzaF95KSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5fZGFzaF95KSB9IH0s
CiAgICB7ICItd2Via2l0LXByaW50LWNvbG9yLWFkanVzdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfcHJpbnRfZGFzaF9jb2xvcl9kYXNoX2FkanVzdCksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3ByaW50X2Rhc2hfY29sb3JfZGFzaF9hZGp1c3Qp
IH0gfSwKICAgIHsgIi13ZWJraXQtcnRsLW9yZGVyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9ydGxfZGFzaF9vcmRlcmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX3J0bF9kYXNoX29yZGVyaW5nKSB9IH0sCiAgICB7ICItd2Via2l0LXJ1
YnktcG9zaXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3J1YnlfZGFz
aF9wb3NpdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3J1Ynlf
ZGFzaF9wb3NpdGlvbikgfSB9LAogICAgeyAiLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3NoYXBlX2Rhc2hfaW1hZ2VfZGFz
aF90aHJlc2hvbGQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9zaGFw
ZV9kYXNoX2ltYWdlX2Rhc2hfdGhyZXNob2xkKSB9IH0sCiAgICB7ICItd2Via2l0LXNoYXBlLW1h
cmdpbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hhcGVfZGFzaF9tYXJn
aW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9zaGFwZV9kYXNoX21h
cmdpbikgfSB9LAogICAgeyAiLXdlYmtpdC1zaGFwZS1vdXRzaWRlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9zaGFwZV9kYXNoX291dHNpZGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9zaGFwZV9kYXNoX291dHNpZGUpIH0gfSwKICAgIHsgIi13
ZWJraXQtdGV4dC1jb21iaW5lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90
ZXh0X2Rhc2hfY29tYmluZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3RleHRfZGFzaF9jb21iaW5lKSB9IH0sCiAgICB7ICItd2Via2l0LXRleHQtZGVjb3JhdGlvbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2RlY29yYXRpb24p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3Jh
dGlvbikgfSB9LAogICAgeyAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tY29sb3IiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfY29s
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVj
b3JhdGlvbl9kYXNoX2NvbG9yKSB9IH0sCiAgICB7ICItd2Via2l0LXRleHQtZGVjb3JhdGlvbi1s
aW5lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3Jh
dGlvbl9kYXNoX2xpbmUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90
ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xpbmUpIH0gfSwKICAgIHsgIi13ZWJraXQtdGV4dC1k
ZWNvcmF0aW9uLXNraXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRf
ZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcCkgfSB9LAogICAgeyAiLXdl
YmtpdC10ZXh0LWRlY29yYXRpb24tc3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3N0eWxlKSB9
IH0sCiAgICB7ICItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Iiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbnNfZGFzaF9pbl9k
YXNoX2VmZmVjdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRf
ZGFzaF9kZWNvcmF0aW9uc19kYXNoX2luX2Rhc2hfZWZmZWN0KSB9IH0sCiAgICB7ICItd2Via2l0
LXRleHQtZW1waGFzaXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRf
ZGFzaF9lbXBoYXNpcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Rl
eHRfZGFzaF9lbXBoYXNpcykgfSB9LAogICAgeyAiLXdlYmtpdC10ZXh0LWVtcGhhc2lzLWNvbG9y
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNf
ZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRf
ZGFzaF9lbXBoYXNpc19kYXNoX2NvbG9yKSB9IH0sCiAgICB7ICItd2Via2l0LXRleHQtZW1waGFz
aXMtcG9zaXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFz
aF9lbXBoYXNpc19kYXNoX3Bvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfcG9zaXRpb24pIH0gfSwKICAgIHsgIi13
ZWJraXQtdGV4dC1lbXBoYXNpcy1zdHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9zdHlsZSkgfSB9LAog
ICAgeyAiLXdlYmtpdC10ZXh0LWZpbGwtY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3RleHRfZGFzaF9maWxsX2Rhc2hfY29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZmlsbF9kYXNoX2NvbG9yKSB9IH0sCiAgICB7
ICItd2Via2l0LXRleHQtb3JpZW50YXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX3RleHRfZGFzaF9vcmllbnRhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3RleHRfZGFzaF9vcmllbnRhdGlvbikgfSB9LAogICAgeyAiLXdlYmtpdC10
ZXh0LXNlY3VyaXR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rh
c2hfc2VjdXJpdHkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0
X2Rhc2hfc2VjdXJpdHkpIH0gfSwKICAgIHsgIi13ZWJraXQtdGV4dC1zaXplLWFkanVzdCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3NpemVfZGFzaF9hZGp1
c3QpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc2l6
ZV9kYXNoX2FkanVzdCkgfSB9LAogICAgeyAiLXdlYmtpdC10ZXh0LXN0cm9rZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3N0cm9rZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9zdHJva2UpIH0gfSwKICAgIHsg
Ii13ZWJraXQtdGV4dC1zdHJva2UtY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX3RleHRfZGFzaF9zdHJva2VfZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9zdHJva2VfZGFzaF9jb2xvcikgfSB9LAogICAg
eyAiLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfdGV4dF9kYXNoX3N0cm9rZV9kYXNoX3dpZHRoKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3N0cm9rZV9kYXNoX3dpZHRoKSB9IH0sCiAg
ICB7ICItd2Via2l0LXRleHQtdW5kZXJsaW5lLXBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfdW5kZXJsaW5lX2Rhc2hfcG9zaXRpb24pLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfdW5kZXJsaW5lX2Rh
c2hfcG9zaXRpb24pIH0gfSwKICAgIHsgIi13ZWJraXQtdGV4dC16b29tIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfem9vbSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF96b29tKSB9IH0sCiAgICB7ICItd2Via2l0
LXRyYW5zZm9ybSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNmb3Jt
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNmb3JtKSB9IH0s
CiAgICB7ICItd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbikgfSB9LAogICAgeyAiLXdl
YmtpdC10cmFuc2Zvcm0tb3JpZ2luLXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3gpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF94KSB9IH0sCiAgICB7
ICItd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4teSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hfeSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3kpIH0gfSwK
ICAgIHsgIi13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbi16Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF96KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hfeikg
fSB9LAogICAgeyAiLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNmb3JtX2Rhc2hfc3R5bGUpIH0gfSwKICAgIHsgIi13
ZWJraXQtdHJhbnNpdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJh
bnNpdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRp
b24pIH0gfSwKICAgIHsgIi13ZWJraXQtdHJhbnNpdGlvbi1kZWxheSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX2RlbGF5KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX2RlbGF5KSB9IH0sCiAg
ICB7ICItd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF9kdXJhdGlvbiksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF9kdXJhdGlvbikgfSB9LAogICAg
eyAiLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hfcHJvcGVydHkpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hfcHJvcGVydHkpIH0gfSwKICAgIHsg
Ii13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvbiksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF90aW1p
bmdfZGFzaF9mdW5jdGlvbikgfSB9LAogICAgeyAiLXdlYmtpdC11c2VyLWRyYWciLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3VzZXJfZGFzaF9kcmFnKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdXNlcl9kYXNoX2RyYWcpIH0gfSwKICAgIHsgIi13
ZWJraXQtdXNlci1tb2RpZnkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Vz
ZXJfZGFzaF9tb2RpZnkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF91
c2VyX2Rhc2hfbW9kaWZ5KSB9IH0sCiAgICB7ICItd2Via2l0LXVzZXItc2VsZWN0Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfc2VsZWN0KSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdXNlcl9kYXNoX3NlbGVjdCkgfSB9LAogICAg
eyAiLXdlYmtpdC13cml0aW5nLW1vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX3dyaXRpbmdfZGFzaF9tb2RlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfd3JpdGluZ19kYXNoX21vZGUpIH0gfSwKICAgIHsgImFsaWduLWNvbnRlbnQiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9hbGlnbl9kYXNoX2NvbnRlbnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
YWxpZ25fZGFzaF9jb250ZW50KSB9IH0sCiAgICB7ICJhbGlnbi1pdGVtcyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2FsaWduX2Rhc2hfaXRlbXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25fZGFz
aF9pdGVtcykgfSB9LAogICAgeyAiYWxpZ24tc2VsZiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWdu
X2Rhc2hfc2VsZiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbl9kYXNoX3NlbGYpIH0gfSwK
ICAgIHsgImFsaWdubWVudC1iYXNlbGluZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWdubWVudF9k
YXNoX2Jhc2VsaW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWdubWVudF9kYXNoX2Jhc2Vs
aW5lKSB9IH0sCiAgICB7ICJhbmltYXRpb24tZGVsYXkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmlt
YXRpb25fZGFzaF9kZWxheSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9k
ZWxheSkgfSB9LAogICAgeyAiYW5pbWF0aW9uLWRpcmVjdGlvbiIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2FuaW1hdGlvbl9kYXNoX2RpcmVjdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRp
b25fZGFzaF9kaXJlY3Rpb24pIH0gfSwKICAgIHsgImFuaW1hdGlvbi1kdXJhdGlvbiIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX2R1cmF0aW9uKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2FuaW1hdGlvbl9kYXNoX2R1cmF0aW9uKSB9IH0sCiAgICB7ICJhbmltYXRpb24tZmlsbC1t
b2RlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfZmlsbF9kYXNoX21vZGUpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfZmlsbF9kYXNoX21vZGUpIH0gfSwK
ICAgIHsgImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmlt
YXRpb25fZGFzaF9pdGVyYXRpb25fZGFzaF9jb3VudCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9h
bmltYXRpb25fZGFzaF9pdGVyYXRpb25fZGFzaF9jb3VudCkgfSB9LAogICAgeyAiYW5pbWF0aW9u
LW5hbWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9uYW1lKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX25hbWUpIH0gfSwKICAgIHsgImFuaW1hdGlvbi1w
bGF5LXN0YXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0
YXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX3BsYXlfZGFzaF9zdGF0
ZSkgfSB9LAogICAgeyAiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2FuaW1hdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2FuaW1hdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uKSB9IH0sCiAgICB7ICJh
c3BlY3QtcmF0aW8iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hc3BlY3RfZGFzaF9yYXRpbyksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9hc3BlY3RfZGFzaF9yYXRpbykgfSB9LAogICAgeyAiYmFja2dyb3Vu
ZC1hdHRhY2htZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2F0dGFjaG1l
bnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2F0dGFjaG1lbnQpIH0g
fSwKICAgIHsgImJhY2tncm91bmQtYmxlbmQtbW9kZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tn
cm91bmRfZGFzaF9ibGVuZF9kYXNoX21vZGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dy
b3VuZF9kYXNoX2JsZW5kX2Rhc2hfbW9kZSkgfSB9LAogICAgeyAiYmFja2dyb3VuZC1jbGlwIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2NsaXApLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYmFja2dyb3VuZF9kYXNoX2NsaXApIH0gfSwKICAgIHsgImJhY2tncm91bmQtY29sb3Ii
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfY29sb3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2NvbG9yKSB9IH0sCiAgICB7ICJiYWNrZ3JvdW5kLWlt
YWdlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2ltYWdlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9pbWFnZSkgfSB9LAogICAgeyAiYmFja2dyb3Vu
ZC1vcmlnaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfb3JpZ2luKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9vcmlnaW4pIH0gfSwKICAgIHsgImJh
Y2tncm91bmQtcG9zaXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9z
aXRpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0aW9uKSB9
IH0sCiAgICB7ICJiYWNrZ3JvdW5kLXBvc2l0aW9uLXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNr
Z3JvdW5kX2Rhc2hfcG9zaXRpb25fZGFzaF94KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tn
cm91bmRfZGFzaF9wb3NpdGlvbl9kYXNoX3gpIH0gfSwKICAgIHsgImJhY2tncm91bmQtcG9zaXRp
b24teSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9wb3NpdGlvbl9kYXNoX3kp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0aW9uX2Rhc2hfeSkg
fSB9LAogICAgeyAiYmFja2dyb3VuZC1yZXBlYXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3Jv
dW5kX2Rhc2hfcmVwZWF0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9y
ZXBlYXQpIH0gfSwKICAgIHsgImJhY2tncm91bmQtc2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
Y2tncm91bmRfZGFzaF9zaXplKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFz
aF9zaXplKSB9IH0sCiAgICB7ICJiYXNlbGluZS1zaGlmdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
c2VsaW5lX2Rhc2hfc2hpZnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFzZWxpbmVfZGFzaF9z
aGlmdCkgfSB9LAogICAgeyAiYmxvY2stc2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Jsb2NrX2Rh
c2hfc2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ibG9ja19kYXNoX3NpemUpIH0gfSwKICAg
IHsgImJvcmRlci1ibG9jayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrKSB9IH0sCiAgICB7ICJib3Jk
ZXItYmxvY2stY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNo
X2NvbG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfY29s
b3IpIH0gfSwKICAgIHsgImJvcmRlci1ibG9jay1lbmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9ibG9ja19kYXNoX2VuZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9ibG9ja19kYXNoX2VuZCkgfSB9LAogICAgeyAiYm9yZGVyLWJsb2NrLWVuZC1jb2xvciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfZW5kX2Rhc2hfY29sb3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9lbmRfZGFzaF9jb2xv
cikgfSB9LAogICAgeyAiYm9yZGVyLWJsb2NrLWVuZC1zdHlsZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfZW5kX2Rhc2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9lbmRfZGFzaF9zdHlsZSkgfSB9LAogICAgeyAi
Ym9yZGVyLWJsb2NrLWVuZC13aWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Js
b2NrX2Rhc2hfZW5kX2Rhc2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfYmxvY2tfZGFzaF9lbmRfZGFzaF93aWR0aCkgfSB9LAogICAgeyAiYm9yZGVyLWJsb2NrLXN0
YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0YXJ0KSB9IH0sCiAg
ICB7ICJib3JkZXItYmxvY2stc3RhcnQtY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9ibG9ja19kYXNoX3N0YXJ0X2Rhc2hfY29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydF9kYXNoX2NvbG9yKSB9IH0sCiAgICB7ICJib3Jk
ZXItYmxvY2stc3RhcnQtc3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9j
a19kYXNoX3N0YXJ0X2Rhc2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfYmxvY2tfZGFzaF9zdGFydF9kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICJib3JkZXItYmxvY2st
c3RhcnQtd2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0
YXJ0X2Rhc2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tf
ZGFzaF9zdGFydF9kYXNoX3dpZHRoKSB9IH0sCiAgICB7ICJib3JkZXItYmxvY2stc3R5bGUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0eWxlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfc3R5bGUpIH0gfSwKICAgIHsgImJv
cmRlci1ibG9jay13aWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rh
c2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF93
aWR0aCkgfSB9LAogICAgeyAiYm9yZGVyLWJvdHRvbSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2JvdHRvbSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0b20p
IH0gfSwKICAgIHsgImJvcmRlci1ib3R0b20tY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9ib3R0b21fZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9ib3R0b21fZGFzaF9jb2xvcikgfSB9LAogICAgeyAiYm9yZGVyLWJvdHRvbS1sZWZ0LXJh
ZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX2xlZnRfZGFz
aF9yYWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hf
bGVmdF9kYXNoX3JhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9yaWdodF9kYXNoX3Jh
ZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9yaWdo
dF9kYXNoX3JhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyLWJvdHRvbS1zdHlsZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICJib3JkZXIt
Ym90dG9tLXdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hf
d2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfd2lk
dGgpIH0gfSwKICAgIHsgImJvcmRlci1jb2xsYXBzZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2NvbGxhcHNlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2NvbGxh
cHNlKSB9IH0sCiAgICB7ICJib3JkZXItY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9jb2xvcikgfSB9
LAogICAgeyAiYm9yZGVyLWVuZC1lbmQtcmFkaXVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
X2Rhc2hfZW5kX2Rhc2hfZW5kX2Rhc2hfcmFkaXVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2VuZF9kYXNoX2VuZF9kYXNoX3JhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyLWVu
ZC1zdGFydC1yYWRpdXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9lbmRfZGFzaF9z
dGFydF9kYXNoX3JhZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9lbmRf
ZGFzaF9zdGFydF9kYXNoX3JhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyLWltYWdlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyX2Rhc2hfaW1hZ2UpIH0gfSwKICAgIHsgImJvcmRlci1pbWFnZS1vdXRzZXQiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX291dHNldCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX291dHNldCkgfSB9LAogICAgeyAiYm9yZGVy
LWltYWdlLXJlcGVhdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hf
cmVwZWF0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hfcmVw
ZWF0KSB9IH0sCiAgICB7ICJib3JkZXItaW1hZ2Utc2xpY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9pbWFnZV9kYXNoX3NsaWNlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2ltYWdlX2Rhc2hfc2xpY2UpIH0gfSwKICAgIHsgImJvcmRlci1pbWFnZS1zb3VyY2Ui
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX3NvdXJjZSksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX3NvdXJjZSkgfSB9LAogICAg
eyAiYm9yZGVyLWltYWdlLXdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1h
Z2VfZGFzaF93aWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9k
YXNoX3dpZHRoKSB9IH0sCiAgICB7ICJib3JkZXItaW5saW5lIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfaW5saW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lu
bGluZSkgfSB9LAogICAgeyAiYm9yZGVyLWlubGluZS1jb2xvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX2NvbG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2lubGluZV9kYXNoX2NvbG9yKSB9IH0sCiAgICB7ICJib3JkZXItaW5saW5lLWVu
ZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX2VuZCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmQpIH0gfSwKICAgIHsg
ImJvcmRlci1pbmxpbmUtZW5kLWNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hf
aW5saW5lX2Rhc2hfZW5kX2Rhc2hfY29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
X2Rhc2hfaW5saW5lX2Rhc2hfZW5kX2Rhc2hfY29sb3IpIH0gfSwKICAgIHsgImJvcmRlci1pbmxp
bmUtZW5kLXN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hf
ZW5kX2Rhc2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5l
X2Rhc2hfZW5kX2Rhc2hfc3R5bGUpIH0gfSwKICAgIHsgImJvcmRlci1pbmxpbmUtZW5kLXdpZHRo
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfZW5kX2Rhc2hfd2lk
dGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfZW5kX2Rh
c2hfd2lkdGgpIH0gfSwKICAgIHsgImJvcmRlci1pbmxpbmUtc3RhcnQiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydCkgfSB9LAogICAgeyAiYm9yZGVyLWlubGlu
ZS1zdGFydC1jb2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNo
X3N0YXJ0X2Rhc2hfY29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5s
aW5lX2Rhc2hfc3RhcnRfZGFzaF9jb2xvcikgfSB9LAogICAgeyAiYm9yZGVyLWlubGluZS1zdGFy
dC1zdHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0
X2Rhc2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rh
c2hfc3RhcnRfZGFzaF9zdHlsZSkgfSB9LAogICAgeyAiYm9yZGVyLWlubGluZS1zdGFydC13aWR0
aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0X2Rhc2hf
d2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfc3Rh
cnRfZGFzaF93aWR0aCkgfSB9LAogICAgeyAiYm9yZGVyLWlubGluZS1zdHlsZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICJib3JkZXIt
aW5saW5lLXdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hf
d2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfd2lk
dGgpIH0gfSwKICAgIHsgImJvcmRlci1sZWZ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfbGVmdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0KSB9IH0sCiAg
ICB7ICJib3JkZXItbGVmdC1jb2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2xl
ZnRfZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0X2Rh
c2hfY29sb3IpIH0gfSwKICAgIHsgImJvcmRlci1sZWZ0LXN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyX2Rhc2hfbGVmdF9kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2xlZnRfZGFzaF9zdHlsZSkgfSB9LAogICAgeyAiYm9yZGVyLWxlZnQtd2lkdGgi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0X2Rhc2hfd2lkdGgpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdF9kYXNoX3dpZHRoKSB9IH0sCiAgICB7ICJi
b3JkZXItcmFkaXVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmFkaXVzKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3JhZGl1cykgfSB9LAogICAgeyAiYm9yZGVy
LXJpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHQpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHQpIH0gfSwKICAgIHsgImJvcmRlci1yaWdodC1j
b2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3JpZ2h0X2Rhc2hfY29sb3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHRfZGFzaF9jb2xvcikgfSB9LAog
ICAgeyAiYm9yZGVyLXJpZ2h0LXN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hf
cmlnaHRfZGFzaF9zdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdo
dF9kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICJib3JkZXItcmlnaHQtd2lkdGgiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodF9kYXNoX3dpZHRoKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX3JpZ2h0X2Rhc2hfd2lkdGgpIH0gfSwKICAgIHsgImJvcmRlci1zcGFj
aW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3BhY2luZyksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zcGFjaW5nKSB9IH0sCiAgICB7ICJib3JkZXItc3RhcnQt
ZW5kLXJhZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3N0YXJ0X2Rhc2hfZW5k
X2Rhc2hfcmFkaXVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3N0YXJ0X2Rh
c2hfZW5kX2Rhc2hfcmFkaXVzKSB9IH0sCiAgICB7ICJib3JkZXItc3RhcnQtc3RhcnQtcmFkaXVz
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF9zdGFydF9kYXNoX3Jh
ZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3N0YXJ0
X2Rhc2hfcmFkaXVzKSB9IH0sCiAgICB7ICJib3JkZXItc3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9zdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9z
dHlsZSkgfSB9LAogICAgeyAiYm9yZGVyLXRvcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX3RvcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3ApIH0gfSwKICAg
IHsgImJvcmRlci10b3AtY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3Bf
ZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3BfZGFzaF9j
b2xvcikgfSB9LAogICAgeyAiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX2xlZnRfZGFzaF9yYWRpdXMpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfbGVmdF9kYXNoX3JhZGl1cykgfSB9LAogICAg
eyAiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF90b3BfZGFzaF9yaWdodF9kYXNoX3JhZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF90b3BfZGFzaF9yaWdodF9kYXNoX3JhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyLXRv
cC1zdHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3N0eWxlKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3N0eWxlKSB9IH0sCiAg
ICB7ICJib3JkZXItdG9wLXdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9w
X2Rhc2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hf
d2lkdGgpIH0gfSwKICAgIHsgImJvcmRlci13aWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX3dpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3dpZHRoKSB9
IH0sCiAgICB7ICJib3gtc2hhZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm94X2Rhc2hfc2hhZG93
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JveF9kYXNoX3NoYWRvdykgfSB9LAogICAgeyAiYm94
LXNpemluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JveF9kYXNoX3NpemluZyksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3hfZGFzaF9zaXppbmcpIH0gfSwKICAgIHsgImJyZWFrLWFmdGVyIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYnJlYWtfZGFzaF9hZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
cmVha19kYXNoX2FmdGVyKSB9IH0sCiAgICB7ICJicmVhay1iZWZvcmUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9icmVha19kYXNoX2JlZm9yZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha19kYXNo
X2JlZm9yZSkgfSB9LAogICAgeyAiYnJlYWstaW5zaWRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYnJl
YWtfZGFzaF9pbnNpZGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtfZGFzaF9pbnNpZGUp
IH0gfSwKICAgIHsgImJ1ZmZlcmVkLXJlbmRlcmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2J1ZmZl
cmVkX2Rhc2hfcmVuZGVyaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2J1ZmZlcmVkX2Rhc2hf
cmVuZGVyaW5nKSB9IH0sCiAgICB7ICJjYXB0aW9uLXNpZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
YXB0aW9uX2Rhc2hfc2lkZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXB0aW9uX2Rhc2hfc2lk
ZSkgfSB9LAogICAgeyAiY2FyZXQtY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXJldF9kYXNo
X2NvbG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NhcmV0X2Rhc2hfY29sb3IpIH0gfSwKICAg
IHsgImNsaXAtcGF0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBfZGFzaF9wYXRoKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2NsaXBfZGFzaF9wYXRoKSB9IH0sCiAgICB7ICJjbGlwLXJ1bGUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jbGlwX2Rhc2hfcnVsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
bGlwX2Rhc2hfcnVsZSkgfSB9LAogICAgeyAiY29sb3ItaW50ZXJwb2xhdGlvbiIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2NvbG9yX2Rhc2hfaW50ZXJwb2xhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9jb2xvcl9kYXNoX2ludGVycG9sYXRpb24pIH0gfSwKICAgIHsgImNvbG9yLWludGVycG9sYXRp
b24tZmlsdGVycyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hfaW50ZXJwb2xhdGlvbl9k
YXNoX2ZpbHRlcnMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9pbnRlcnBvbGF0
aW9uX2Rhc2hfZmlsdGVycykgfSB9LAogICAgeyAiY29sb3ItcHJvZmlsZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvbG9yX2Rhc2hfcHJvZmlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9k
YXNoX3Byb2ZpbGUpIH0gfSwKICAgIHsgImNvbG9yLXJlbmRlcmluZyIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2NvbG9yX2Rhc2hfcmVuZGVyaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rh
c2hfcmVuZGVyaW5nKSB9IH0sCiAgICB7ICJjb2xvci1zY2hlbWUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9jb2xvcl9kYXNoX3NjaGVtZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX3Nj
aGVtZSkgfSB9LAogICAgeyAiY29sdW1uLWNvdW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1u
X2Rhc2hfY291bnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfY291bnQpIH0g
fSwKICAgIHsgImNvbHVtbi1maWxsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfZmls
bCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9maWxsKSB9IH0sCiAgICB7ICJj
b2x1bW4tZ2FwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfZ2FwKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX2dhcCkgfSB9LAogICAgeyAiY29sdW1uLXJ1bGUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2NvbHVtbl9kYXNoX3J1bGUpIH0gfSwKICAgIHsgImNvbHVtbi1ydWxlLWNvbG9yIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfcnVsZV9kYXNoX2NvbG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvbHVtbl9kYXNoX3J1bGVfZGFzaF9jb2xvcikgfSB9LAogICAgeyAiY29sdW1uLXJ1
bGUtc3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfc3R5bGUp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfcnVsZV9kYXNoX3N0eWxlKSB9IH0s
CiAgICB7ICJjb2x1bW4tcnVsZS13aWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNo
X3J1bGVfZGFzaF93aWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxl
X2Rhc2hfd2lkdGgpIH0gfSwKICAgIHsgImNvbHVtbi1zcGFuIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Y29sdW1uX2Rhc2hfc3BhbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9zcGFu
KSB9IH0sCiAgICB7ICJjb2x1bW4td2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFz
aF93aWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF93aWR0aCkgfSB9LAog
ICAgeyAiY291bnRlci1pbmNyZW1lbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVyX2Rhc2hf
aW5jcmVtZW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50ZXJfZGFzaF9pbmNyZW1lbnQp
IH0gfSwKICAgIHsgImNvdW50ZXItcmVzZXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVyX2Rh
c2hfcmVzZXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY291bnRlcl9kYXNoX3Jlc2V0KSB9IH0s
CiAgICB7ICJkb21pbmFudC1iYXNlbGluZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2RvbWluYW50X2Rh
c2hfYmFzZWxpbmUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZG9taW5hbnRfZGFzaF9iYXNlbGlu
ZSkgfSB9LAogICAgeyAiZW1wdHktY2VsbHMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lbXB0eV9kYXNo
X2NlbGxzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VtcHR5X2Rhc2hfY2VsbHMpIH0gfSwKICAg
IHsgImVuYWJsZS1iYWNrZ3JvdW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZW5hYmxlX2Rhc2hfYmFj
a2dyb3VuZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lbmFibGVfZGFzaF9iYWNrZ3JvdW5kKSB9
IH0sCiAgICB7ICJmaWxsLW9wYWNpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsX2Rhc2hfb3Bh
Y2l0eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsX2Rhc2hfb3BhY2l0eSkgfSB9LAogICAg
eyAiZmlsbC1ydWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsbF9kYXNoX3J1bGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZmlsbF9kYXNoX3J1bGUpIH0gfSwKICAgIHsgImZsZXgtYmFzaXMiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfYmFzaXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZmxleF9kYXNoX2Jhc2lzKSB9IH0sCiAgICB7ICJmbGV4LWRpcmVjdGlvbiIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZsZXhfZGFzaF9kaXJlY3Rpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9k
YXNoX2RpcmVjdGlvbikgfSB9LAogICAgeyAiZmxleC1mbG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZmxleF9kYXNoX2Zsb3cpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX2Zsb3cpIH0g
fSwKICAgIHsgImZsZXgtZ3JvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9ncm93KSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9ncm93KSB9IH0sCiAgICB7ICJmbGV4LXNo
cmluayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9zaHJpbmspLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZmxleF9kYXNoX3NocmluaykgfSB9LAogICAgeyAiZmxleC13cmFwIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZmxleF9kYXNoX3dyYXApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9k
YXNoX3dyYXApIH0gfSwKICAgIHsgImZsb29kLWNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxv
b2RfZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbG9vZF9kYXNoX2NvbG9yKSB9
IH0sCiAgICB7ICJmbG9vZC1vcGFjaXR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxvb2RfZGFzaF9v
cGFjaXR5KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kX2Rhc2hfb3BhY2l0eSkgfSB9LAog
ICAgeyAiZm9udC1kaXNwbGF5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2Rpc3BsYXkp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2Rpc3BsYXkpIH0gfSwKICAgIHsgImZv
bnQtZmFtaWx5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2ZhbWlseSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfZmFtaWx5KSB9IH0sCiAgICB7ICJmb250LWZlYXR1cmUt
c2V0dGluZ3MiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfZmVhdHVyZV9kYXNoX3NldHRp
bmdzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9mZWF0dXJlX2Rhc2hfc2V0dGlu
Z3MpIH0gfSwKICAgIHsgImZvbnQta2VybmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFz
aF9rZXJuaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9rZXJuaW5nKSB9IH0s
CiAgICB7ICJmb250LW9wdGljYWwtc2l6aW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNo
X29wdGljYWxfZGFzaF9zaXppbmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX29w
dGljYWxfZGFzaF9zaXppbmcpIH0gfSwKICAgIHsgImZvbnQtc2l6ZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZvbnRfZGFzaF9zaXplKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9zaXpl
KSB9IH0sCiAgICB7ICJmb250LXN0cmV0Y2giLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hf
c3RyZXRjaCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3RyZXRjaCkgfSB9LAog
ICAgeyAiZm9udC1zdHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9zdHlsZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3R5bGUpIH0gfSwKICAgIHsgImZvbnQtc3lu
dGhlc2lzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3N5bnRoZXNpcyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3ludGhlc2lzKSB9IH0sCiAgICB7ICJmb250LXZhcmlh
bnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudCkgfSB9LAogICAgeyAiZm9udC12YXJpYW50LWFsdGVy
bmF0ZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2FsdGVybmF0
ZXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9hbHRlcm5h
dGVzKSB9IH0sCiAgICB7ICJmb250LXZhcmlhbnQtY2FwcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Zv
bnRfZGFzaF92YXJpYW50X2Rhc2hfY2FwcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rh
c2hfdmFyaWFudF9kYXNoX2NhcHMpIH0gfSwKICAgIHsgImZvbnQtdmFyaWFudC1lYXN0LWFzaWFu
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9lYXN0X2Rhc2hfYXNp
YW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9lYXN0X2Rh
c2hfYXNpYW4pIH0gfSwKICAgIHsgImZvbnQtdmFyaWFudC1saWdhdHVyZXMiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2xpZ2F0dXJlcyksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2xpZ2F0dXJlcykgfSB9LAogICAgeyAiZm9u
dC12YXJpYW50LW51bWVyaWMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9k
YXNoX251bWVyaWMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFz
aF9udW1lcmljKSB9IH0sCiAgICB7ICJmb250LXZhcmlhbnQtcG9zaXRpb24iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX3Bvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRfZGFzaF92YXJpYW50X2Rhc2hfcG9zaXRpb24pIH0gfSwKICAgIHsgImZvbnQt
dmFyaWF0aW9uLXNldHRpbmdzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhdGlv
bl9kYXNoX3NldHRpbmdzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYXRp
b25fZGFzaF9zZXR0aW5ncykgfSB9LAogICAgeyAiZm9udC13ZWlnaHQiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mb250X2Rhc2hfd2VpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF93
ZWlnaHQpIH0gfSwKICAgIHsgImdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9nbHlwaF9kYXNoX29yaWVudGF0aW9uX2Rhc2hfaG9yaXpvbnRhbCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9nbHlwaF9kYXNoX29yaWVudGF0aW9uX2Rhc2hfaG9yaXpvbnRhbCkg
fSB9LAogICAgeyAiZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9nbHlwaF9kYXNoX29yaWVudGF0aW9uX2Rhc2hfdmVydGljYWwpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZ2x5cGhfZGFzaF9vcmllbnRhdGlvbl9kYXNoX3ZlcnRpY2FsKSB9IH0sCiAgICB7ICJn
cmlkLWFyZWEiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXJlYSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXJlYSkgfSB9LAogICAgeyAiZ3JpZC1hdXRvLWNvbHVtbnMi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX2NvbHVtbnMpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2F1dG9fZGFzaF9jb2x1bW5zKSB9IH0sCiAgICB7ICJn
cmlkLWF1dG8tZmxvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9hdXRvX2Rhc2hfZmxv
dyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX2Zsb3cpIH0gfSwK
ICAgIHsgImdyaWQtYXV0by1yb3dzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2F1dG9f
ZGFzaF9yb3dzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9hdXRvX2Rhc2hfcm93
cykgfSB9LAogICAgeyAiZ3JpZC1jb2x1bW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hf
Y29sdW1uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9jb2x1bW4pIH0gfSwKICAg
IHsgImdyaWQtY29sdW1uLWVuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9jb2x1bW5f
ZGFzaF9lbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2NvbHVtbl9kYXNoX2Vu
ZCkgfSB9LAogICAgeyAiZ3JpZC1jb2x1bW4tZ2FwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9k
YXNoX2NvbHVtbl9kYXNoX2dhcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29s
dW1uX2Rhc2hfZ2FwKSB9IH0sCiAgICB7ICJncmlkLWNvbHVtbi1zdGFydCIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2dyaWRfZGFzaF9jb2x1bW5fZGFzaF9zdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ncmlkX2Rhc2hfY29sdW1uX2Rhc2hfc3RhcnQpIH0gfSwKICAgIHsgImdyaWQtZ2FwIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2dhcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlk
X2Rhc2hfZ2FwKSB9IH0sCiAgICB7ICJncmlkLXJvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRf
ZGFzaF9yb3cpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3JvdykgfSB9LAogICAg
eyAiZ3JpZC1yb3ctZW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNoX2Vu
ZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfcm93X2Rhc2hfZW5kKSB9IH0sCiAg
ICB7ICJncmlkLXJvdy1nYXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfcm93X2Rhc2hf
Z2FwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9yb3dfZGFzaF9nYXApIH0gfSwK
ICAgIHsgImdyaWQtcm93LXN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19k
YXNoX3N0YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9yb3dfZGFzaF9zdGFy
dCkgfSB9LAogICAgeyAiZ3JpZC10ZW1wbGF0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFz
aF90ZW1wbGF0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVtcGxhdGUpIH0g
fSwKICAgIHsgImdyaWQtdGVtcGxhdGUtYXJlYXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rh
c2hfdGVtcGxhdGVfZGFzaF9hcmVhcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hf
dGVtcGxhdGVfZGFzaF9hcmVhcykgfSB9LAogICAgeyAiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBsYXRlX2Rhc2hfY29sdW1ucyksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVtcGxhdGVfZGFzaF9jb2x1bW5zKSB9IH0sCiAg
ICB7ICJncmlkLXRlbXBsYXRlLXJvd3MiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVt
cGxhdGVfZGFzaF9yb3dzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0
ZV9kYXNoX3Jvd3MpIH0gfSwKICAgIHsgImhhbmdpbmctcHVuY3R1YXRpb24iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9oYW5naW5nX2Rhc2hfcHVuY3R1YXRpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
aGFuZ2luZ19kYXNoX3B1bmN0dWF0aW9uKSB9IH0sCiAgICB7ICJpbWFnZS1vcmllbnRhdGlvbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlX2Rhc2hfb3JpZW50YXRpb24pLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25faW1hZ2VfZGFzaF9vcmllbnRhdGlvbikgfSB9LAogICAgeyAiaW1hZ2UtcmVuZGVy
aW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW1hZ2VfZGFzaF9yZW5kZXJpbmcpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25faW1hZ2VfZGFzaF9yZW5kZXJpbmcpIH0gfSwKICAgIHsgImlubGluZS1zaXpl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25faW5saW5lX2Rhc2hfc2l6ZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9pbmxpbmVfZGFzaF9zaXplKSB9IH0sCiAgICB7ICJpbnNldC1ibG9jayIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2luc2V0X2Rhc2hfYmxvY2spLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRf
ZGFzaF9ibG9jaykgfSB9LAogICAgeyAiaW5zZXQtYmxvY2stZW5kIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25faW5zZXRfZGFzaF9ibG9ja19kYXNoX2VuZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNl
dF9kYXNoX2Jsb2NrX2Rhc2hfZW5kKSB9IH0sCiAgICB7ICJpbnNldC1ibG9jay1zdGFydCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfYmxvY2tfZGFzaF9zdGFydCksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9pbnNldF9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQpIH0gfSwKICAgIHsgImluc2V0
LWlubGluZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lKSB9IH0sCiAgICB7ICJpbnNldC1pbmxpbmUt
ZW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9pbmxpbmVfZGFzaF9lbmQpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9pbmxpbmVfZGFzaF9lbmQpIH0gfSwKICAgIHsg
Imluc2V0LWlubGluZS1zdGFydCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5l
X2Rhc2hfc3RhcnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9pbmxpbmVfZGFz
aF9zdGFydCkgfSB9LAogICAgeyAianVzdGlmeS1jb250ZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
anVzdGlmeV9kYXNoX2NvbnRlbnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNo
X2NvbnRlbnQpIH0gfSwKICAgIHsgImp1c3RpZnktaXRlbXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9q
dXN0aWZ5X2Rhc2hfaXRlbXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNoX2l0
ZW1zKSB9IH0sCiAgICB7ICJqdXN0aWZ5LXNlbGYiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5
X2Rhc2hfc2VsZiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5X2Rhc2hfc2VsZikgfSB9
LAogICAgeyAibGV0dGVyLXNwYWNpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9sZXR0ZXJfZGFzaF9z
cGFjaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xldHRlcl9kYXNoX3NwYWNpbmcpIH0gfSwK
ICAgIHsgImxpZ2h0aW5nLWNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlnaHRpbmdfZGFzaF9j
b2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saWdodGluZ19kYXNoX2NvbG9yKSB9IH0sCiAg
ICB7ICJsaW5lLWJyZWFrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGluZV9kYXNoX2JyZWFrKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2xpbmVfZGFzaF9icmVhaykgfSB9LAogICAgeyAibGluZS1oZWln
aHQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saW5lX2Rhc2hfaGVpZ2h0KSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2xpbmVfZGFzaF9oZWlnaHQpIH0gfSwKICAgIHsgImxpc3Qtc3R5bGUiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdF9k
YXNoX3N0eWxlKSB9IH0sCiAgICB7ICJsaXN0LXN0eWxlLWltYWdlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbGlzdF9kYXNoX3N0eWxlX2Rhc2hfaW1hZ2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlz
dF9kYXNoX3N0eWxlX2Rhc2hfaW1hZ2UpIH0gfSwKICAgIHsgImxpc3Qtc3R5bGUtcG9zaXRpb24i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF9wb3NpdGlvbiksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF9wb3NpdGlvbikgfSB9LAogICAg
eyAibGlzdC1zdHlsZS10eXBlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdF9kYXNoX3N0eWxlX2Rh
c2hfdHlwZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF90eXBl
KSB9IH0sCiAgICB7ICJtYXJnaW4tYmxvY2siLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFz
aF9ibG9jayksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ibG9jaykgfSB9LAog
ICAgeyAibWFyZ2luLWJsb2NrLWVuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2Js
b2NrX2Rhc2hfZW5kKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2Jsb2NrX2Rh
c2hfZW5kKSB9IH0sCiAgICB7ICJtYXJnaW4tYmxvY2stc3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9tYXJnaW5fZGFzaF9ibG9ja19kYXNoX3N0YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21h
cmdpbl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQpIH0gfSwKICAgIHsgIm1hcmdpbi1ib3R0b20iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ib3R0b20pLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luX2Rhc2hfYm90dG9tKSB9IH0sCiAgICB7ICJtYXJnaW4taW5saW5lIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21h
cmdpbl9kYXNoX2lubGluZSkgfSB9LAogICAgeyAibWFyZ2luLWlubGluZS1lbmQiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9pbmxpbmVfZGFzaF9lbmQpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfZW5kKSB9IH0sCiAgICB7ICJtYXJnaW4taW5s
aW5lLXN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfc3Rh
cnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnQp
IH0gfSwKICAgIHsgIm1hcmdpbi1sZWZ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hf
bGVmdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9sZWZ0KSB9IH0sCiAgICB7
ICJtYXJnaW4tcmlnaHQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9yaWdodCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9yaWdodCkgfSB9LAogICAgeyAibWFyZ2lu
LXRvcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX3RvcCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9tYXJnaW5fZGFzaF90b3ApIH0gfSwKICAgIHsgIm1hcmtlci1lbmQiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXJrZXJfZGFzaF9lbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2Vy
X2Rhc2hfZW5kKSB9IH0sCiAgICB7ICJtYXJrZXItbWlkIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFy
a2VyX2Rhc2hfbWlkKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlcl9kYXNoX21pZCkgfSB9
LAogICAgeyAibWFya2VyLXN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfc3Rh
cnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfc3RhcnQpIH0gfSwKICAgIHsg
Im1hc2stdHlwZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX21hc2tfZGFzaF90eXBlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX21hc2tfZGFzaF90eXBlKSB9IH0sCiAgICB7ICJtYXRoLXN0eWxlIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fbWF0aF9kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21h
dGhfZGFzaF9zdHlsZSkgfSB9LAogICAgeyAibWF4LWJsb2NrLXNpemUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9tYXhfZGFzaF9ibG9ja19kYXNoX3NpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4
X2Rhc2hfYmxvY2tfZGFzaF9zaXplKSB9IH0sCiAgICB7ICJtYXgtaGVpZ2h0Iiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fbWF4X2Rhc2hfaGVpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNo
X2hlaWdodCkgfSB9LAogICAgeyAibWF4LWlubGluZS1zaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
bWF4X2Rhc2hfaW5saW5lX2Rhc2hfc2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhfZGFz
aF9pbmxpbmVfZGFzaF9zaXplKSB9IH0sCiAgICB7ICJtYXgtd2lkdGgiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9tYXhfZGFzaF93aWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhfZGFzaF93aWR0
aCkgfSB9LAogICAgeyAibWluLWJsb2NrLXNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFz
aF9ibG9ja19kYXNoX3NpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWluX2Rhc2hfYmxvY2tf
ZGFzaF9zaXplKSB9IH0sCiAgICB7ICJtaW4taGVpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWlu
X2Rhc2hfaGVpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX2hlaWdodCkgfSB9
LAogICAgeyAibWluLWlubGluZS1zaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWluX2Rhc2hfaW5s
aW5lX2Rhc2hfc2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF9pbmxpbmVfZGFz
aF9zaXplKSB9IH0sCiAgICB7ICJtaW4td2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFz
aF93aWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF93aWR0aCkgfSB9LAogICAg
eyAibWl4LWJsZW5kLW1vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taXhfZGFzaF9ibGVuZF9kYXNo
X21vZGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWl4X2Rhc2hfYmxlbmRfZGFzaF9tb2RlKSB9
IH0sCiAgICB7ICJvYmplY3QtZml0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0X2Rhc2hfZml0
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX29iamVjdF9kYXNoX2ZpdCkgfSB9LAogICAgeyAib2Jq
ZWN0LXBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0X2Rhc2hfcG9zaXRpb24pLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0X2Rhc2hfcG9zaXRpb24pIH0gfSwKICAgIHsgIm91
dGxpbmUtY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfY29sb3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZV9kYXNoX2NvbG9yKSB9IH0sCiAgICB7ICJvdXRsaW5l
LW9mZnNldCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFzaF9vZmZzZXQpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fb3V0bGluZV9kYXNoX29mZnNldCkgfSB9LAogICAgeyAib3V0bGluZS1z
dHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFzaF9zdHlsZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfc3R5bGUpIH0gfSwKICAgIHsgIm91dGxpbmUtd2lkdGgi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fb3V0bGluZV9kYXNoX3dpZHRoKSB9IH0sCiAgICB7ICJvdmVyZmxvdy13cmFwIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dfZGFzaF93cmFwKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X292ZXJmbG93X2Rhc2hfd3JhcCkgfSB9LAogICAgeyAib3ZlcmZsb3cteCIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX292ZXJmbG93X2Rhc2hfeCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd19k
YXNoX3gpIH0gfSwKICAgIHsgIm92ZXJmbG93LXkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxv
d19kYXNoX3kpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dfZGFzaF95KSB9IH0sCiAg
ICB7ICJvdmVyc2Nyb2xsLWJlaGF2aW9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbF9k
YXNoX2JlaGF2aW9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxfZGFzaF9iZWhh
dmlvcikgfSB9LAogICAgeyAib3ZlcnNjcm9sbC1iZWhhdmlvci14Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fb3ZlcnNjcm9sbF9kYXNoX2JlaGF2aW9yX2Rhc2hfeCksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9vdmVyc2Nyb2xsX2Rhc2hfYmVoYXZpb3JfZGFzaF94KSB9IH0sCiAgICB7ICJvdmVyc2Nyb2xs
LWJlaGF2aW9yLXkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsX2Rhc2hfYmVoYXZpb3Jf
ZGFzaF95KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxfZGFzaF9iZWhhdmlvcl9k
YXNoX3kpIH0gfSwKICAgIHsgInBhZGRpbmctYmxvY2siLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRk
aW5nX2Rhc2hfYmxvY2spLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2Jsb2Nr
KSB9IH0sCiAgICB7ICJwYWRkaW5nLWJsb2NrLWVuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRp
bmdfZGFzaF9ibG9ja19kYXNoX2VuZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rh
c2hfYmxvY2tfZGFzaF9lbmQpIH0gfSwKICAgIHsgInBhZGRpbmctYmxvY2stc3RhcnQiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9zdGFydCksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9zdGFydCkgfSB9LAogICAgeyAicGFk
ZGluZy1ib3R0b20iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYm90dG9tKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9ib3R0b20pIH0gfSwKICAgIHsgInBhZGRp
bmctaW5saW5lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2lubGluZSksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfaW5saW5lKSB9IH0sCiAgICB7ICJwYWRkaW5n
LWlubGluZS1lbmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfaW5saW5lX2Rhc2hf
ZW5kKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9lbmQp
IH0gfSwKICAgIHsgInBhZGRpbmctaW5saW5lLXN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFk
ZGluZ19kYXNoX2lubGluZV9kYXNoX3N0YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRp
bmdfZGFzaF9pbmxpbmVfZGFzaF9zdGFydCkgfSB9LAogICAgeyAicGFkZGluZy1sZWZ0Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2xlZnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
cGFkZGluZ19kYXNoX2xlZnQpIH0gfSwKICAgIHsgInBhZGRpbmctcmlnaHQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9wYWRkaW5nX2Rhc2hfcmlnaHQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGlu
Z19kYXNoX3JpZ2h0KSB9IH0sCiAgICB7ICJwYWRkaW5nLXRvcCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X3BhZGRpbmdfZGFzaF90b3ApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX3Rv
cCkgfSB9LAogICAgeyAicGFnZS1icmVhay1hZnRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2Vf
ZGFzaF9icmVha19kYXNoX2FmdGVyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VfZGFzaF9i
cmVha19kYXNoX2FmdGVyKSB9IH0sCiAgICB7ICJwYWdlLWJyZWFrLWJlZm9yZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2JlZm9yZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9wYWdlX2Rhc2hfYnJlYWtfZGFzaF9iZWZvcmUpIH0gfSwKICAgIHsgInBhZ2UtYnJlYWst
aW5zaWRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZV9kYXNoX2JyZWFrX2Rhc2hfaW5zaWRlKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2luc2lkZSkgfSB9LAog
ICAgeyAicGFpbnQtb3JkZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWludF9kYXNoX29yZGVyKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhaW50X2Rhc2hfb3JkZXIpIH0gfSwKICAgIHsgInBlcnNw
ZWN0aXZlLW9yaWdpbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2lu
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luKSB9IH0sCiAg
ICB7ICJwZXJzcGVjdGl2ZS1vcmlnaW4teCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZl
X2Rhc2hfb3JpZ2luX2Rhc2hfeCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZV9k
YXNoX29yaWdpbl9kYXNoX3gpIH0gfSwKICAgIHsgInBlcnNwZWN0aXZlLW9yaWdpbi15Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5fZGFzaF95KSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luX2Rhc2hfeSkgfSB9LAogICAgeyAi
cGxhY2UtY29udGVudCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlX2Rhc2hfY29udGVudCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZV9kYXNoX2NvbnRlbnQpIH0gfSwKICAgIHsgInBsYWNl
LWl0ZW1zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VfZGFzaF9pdGVtcyksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wbGFjZV9kYXNoX2l0ZW1zKSB9IH0sCiAgICB7ICJwbGFjZS1zZWxmIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGxhY2VfZGFzaF9zZWxmKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Bs
YWNlX2Rhc2hfc2VsZikgfSB9LAogICAgeyAicG9pbnRlci1ldmVudHMiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9wb2ludGVyX2Rhc2hfZXZlbnRzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BvaW50ZXJf
ZGFzaF9ldmVudHMpIH0gfSwKICAgIHsgInJvdy1nYXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9yb3df
ZGFzaF9nYXApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcm93X2Rhc2hfZ2FwKSB9IH0sCiAgICB7
ICJzY3JvbGwtYmVoYXZpb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9iZWhhdmlv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9iZWhhdmlvcikgfSB9LAogICAg
eyAic2Nyb2xsLW1hcmdpbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbiks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW4pIH0gfSwKICAgIHsgInNj
cm9sbC1tYXJnaW4tYmxvY2siLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5f
ZGFzaF9ibG9jayksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFz
aF9ibG9jaykgfSB9LAogICAgeyAic2Nyb2xsLW1hcmdpbi1ibG9jay1lbmQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9ibG9ja19kYXNoX2VuZCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9ibG9ja19kYXNoX2VuZCkgfSB9
LAogICAgeyAic2Nyb2xsLW1hcmdpbi1ibG9jay1zdGFydCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbF9kYXNoX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYmxvY2tfZGFzaF9zdGFydCkgfSB9LAogICAg
eyAic2Nyb2xsLW1hcmdpbi1ib3R0b20iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9t
YXJnaW5fZGFzaF9ib3R0b20pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFy
Z2luX2Rhc2hfYm90dG9tKSB9IH0sCiAgICB7ICJzY3JvbGwtbWFyZ2luLWlubGluZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2lubGluZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9pbmxpbmUpIH0gfSwKICAgIHsgInNj
cm9sbC1tYXJnaW4taW5saW5lLWVuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21h
cmdpbl9kYXNoX2lubGluZV9kYXNoX2VuZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxf
ZGFzaF9tYXJnaW5fZGFzaF9pbmxpbmVfZGFzaF9lbmQpIH0gfSwKICAgIHsgInNjcm9sbC1tYXJn
aW4taW5saW5lLXN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rh
c2hfaW5saW5lX2Rhc2hfc3RhcnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hf
bWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnQpIH0gfSwKICAgIHsgInNjcm9sbC1tYXJnaW4t
bGVmdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2xlZnQpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfbGVmdCkgfSB9LAog
ICAgeyAic2Nyb2xsLW1hcmdpbi1yaWdodCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNo
X21hcmdpbl9kYXNoX3JpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21h
cmdpbl9kYXNoX3JpZ2h0KSB9IH0sCiAgICB7ICJzY3JvbGwtbWFyZ2luLXRvcCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX3RvcCksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF90b3ApIH0gfSwKICAgIHsgInNjcm9sbC1wYWRk
aW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZyksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nKSB9IH0sCiAgICB7ICJzY3JvbGwtcGFkZGlu
Zy1ibG9jayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9ibG9j
ayksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfYmxvY2sp
IH0gfSwKICAgIHsgInNjcm9sbC1wYWRkaW5nLWJsb2NrLWVuZCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9ibG9ja19kYXNoX2VuZCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9lbmQpIH0gfSwKICAg
IHsgInNjcm9sbC1wYWRkaW5nLWJsb2NrLXN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
X2Rhc2hfcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQpIH0gfSwKICAgIHsg
InNjcm9sbC1wYWRkaW5nLWJvdHRvbSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3Bh
ZGRpbmdfZGFzaF9ib3R0b20pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFk
ZGluZ19kYXNoX2JvdHRvbSkgfSB9LAogICAgeyAic2Nyb2xsLXBhZGRpbmctaW5saW5lIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2lubGluZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfaW5saW5lKSB9IH0sCiAgICB7
ICJzY3JvbGwtcGFkZGluZy1pbmxpbmUtZW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfcGFkZGluZ19kYXNoX2lubGluZV9kYXNoX2VuZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfaW5saW5lX2Rhc2hfZW5kKSB9IH0sCiAgICB7ICJzY3Jv
bGwtcGFkZGluZy1pbmxpbmUtc3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9w
YWRkaW5nX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsX2Rhc2hfcGFkZGluZ19kYXNoX2lubGluZV9kYXNoX3N0YXJ0KSB9IH0sCiAgICB7ICJzY3Jv
bGwtcGFkZGluZy1sZWZ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19k
YXNoX2xlZnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNo
X2xlZnQpIH0gfSwKICAgIHsgInNjcm9sbC1wYWRkaW5nLXJpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3JpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9yaWdodCkgfSB9LAogICAgeyAic2Nyb2xsLXBhZGRp
bmctdG9wIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3RvcCks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfdG9wKSB9IH0s
CiAgICB7ICJzY3JvbGwtc25hcC1hbGlnbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNo
X3NuYXBfZGFzaF9hbGlnbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFw
X2Rhc2hfYWxpZ24pIH0gfSwKICAgIHsgInNjcm9sbC1zbmFwLW1hcmdpbiIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW4pLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbikgfSB9LAogICAgeyAic2Nyb2xsLXNuYXAt
bWFyZ2luLWJvdHRvbSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9t
YXJnaW5fZGFzaF9ib3R0b20pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25h
cF9kYXNoX21hcmdpbl9kYXNoX2JvdHRvbSkgfSB9LAogICAgeyAic2Nyb2xsLXNuYXAtbWFyZ2lu
LWxlZnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rh
c2hfbGVmdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFy
Z2luX2Rhc2hfbGVmdCkgfSB9LAogICAgeyAic2Nyb2xsLXNuYXAtbWFyZ2luLXJpZ2h0Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNoX3JpZ2h0KSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW5fZGFzaF9y
aWdodCkgfSB9LAogICAgeyAic2Nyb2xsLXNuYXAtbWFyZ2luLXRvcCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW5fZGFzaF90b3ApLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNoX3RvcCkgfSB9LAogICAg
eyAic2Nyb2xsLXNuYXAtc3RvcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBf
ZGFzaF9zdG9wKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9z
dG9wKSB9IH0sCiAgICB7ICJzY3JvbGwtc25hcC10eXBlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsX2Rhc2hfc25hcF9kYXNoX3R5cGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfc25hcF9kYXNoX3R5cGUpIH0gfSwKICAgIHsgInNoYXBlLWltYWdlLXRocmVzaG9sZCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hfaW1hZ2VfZGFzaF90aHJlc2hvbGQpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9pbWFnZV9kYXNoX3RocmVzaG9sZCkgfSB9LAogICAg
eyAic2hhcGUtbWFyZ2luIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9tYXJnaW4pLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9tYXJnaW4pIH0gfSwKICAgIHsgInNoYXBl
LW91dHNpZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNoX291dHNpZGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9vdXRzaWRlKSB9IH0sCiAgICB7ICJzaGFwZS1yZW5k
ZXJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNoX3JlbmRlcmluZyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNoX3JlbmRlcmluZykgfSB9LAogICAgeyAic3BlYWstYXMi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zcGVha19kYXNoX2FzKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3NwZWFrX2Rhc2hfYXMpIH0gfSwKICAgIHsgInN0b3AtY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zdG9wX2Rhc2hfY29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3RvcF9kYXNoX2NvbG9y
KSB9IH0sCiAgICB7ICJzdG9wLW9wYWNpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wX2Rhc2hf
b3BhY2l0eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wX2Rhc2hfb3BhY2l0eSkgfSB9LAog
ICAgeyAic3Ryb2tlLWNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfY29sb3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfY29sb3IpIH0gfSwKICAgIHsgInN0
cm9rZS1kYXNoYXJyYXkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9kYXNoYXJyYXkp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfZGFzaGFycmF5KSB9IH0sCiAgICB7
ICJzdHJva2UtZGFzaG9mZnNldCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2Rhc2hv
ZmZzZXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfZGFzaG9mZnNldCkgfSB9
LAogICAgeyAic3Ryb2tlLWxpbmVjYXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9s
aW5lY2FwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xpbmVjYXApIH0gfSwK
ICAgIHsgInN0cm9rZS1saW5lam9pbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xp
bmVqb2luKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xpbmVqb2luKSB9IH0s
CiAgICB7ICJzdHJva2UtbWl0ZXJsaW1pdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNo
X21pdGVybGltaXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfbWl0ZXJsaW1p
dCkgfSB9LAogICAgeyAic3Ryb2tlLW9wYWNpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2Vf
ZGFzaF9vcGFjaXR5KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX29wYWNpdHkp
IH0gfSwKICAgIHsgInN0cm9rZS13aWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNo
X3dpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX3dpZHRoKSB9IH0sCiAg
ICB7ICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3N1cHBvcnRl
ZF9kYXNoX2NvbG9yX2Rhc2hfc2NoZW1lcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdXBwb3J0
ZWRfZGFzaF9jb2xvcl9kYXNoX3NjaGVtZXMpIH0gfSwKICAgIHsgInRhYi1zaXplIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fdGFiX2Rhc2hfc2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJfZGFz
aF9zaXplKSB9IH0sCiAgICB7ICJ0YWJsZS1sYXlvdXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJs
ZV9kYXNoX2xheW91dCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJsZV9kYXNoX2xheW91dCkg
fSB9LAogICAgeyAidGV4dC1hbGlnbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9hbGln
biksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfYWxpZ24pIH0gfSwKICAgIHsgInRl
eHQtYW5jaG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2FuY2hvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfYW5jaG9yKSB9IH0sCiAgICB7ICJ0ZXh0LWRlY29yYXRp
b24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbiksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbikgfSB9LAogICAgeyAidGV4dC1kZWNvcmF0
aW9uLWNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF9j
b2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2Nv
bG9yKSB9IH0sCiAgICB7ICJ0ZXh0LWRlY29yYXRpb24tbGluZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfbGluZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xpbmUpIH0gfSwKICAgIHsgInRleHQtZGVjb3JhdGlv
bi1za2lwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF9za2lw
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcCkg
fSB9LAogICAgeyAidGV4dC1kZWNvcmF0aW9uLXN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4
dF9kYXNoX2RlY29yYXRpb25fZGFzaF9zdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0
X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICJ0ZXh0LWRlY29yYXRpb24t
dGhpY2tuZXNzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF90
aGlja25lc3MpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFz
aF90aGlja25lc3MpIH0gfSwKICAgIHsgInRleHQtZW1waGFzaXMiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0X2Rhc2hfZW1waGFzaXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2Vt
cGhhc2lzKSB9IH0sCiAgICB7ICJ0ZXh0LWVtcGhhc2lzLWNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfY29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfY29sb3IpIH0gfSwKICAgIHsgInRleHQtZW1waGFzaXMt
cG9zaXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3Np
dGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3Np
dGlvbikgfSB9LAogICAgeyAidGV4dC1lbXBoYXNpcy1zdHlsZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Rl
eHRfZGFzaF9lbXBoYXNpc19kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICJ0ZXh0LWluZGVudCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9pbmRlbnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dF9kYXNoX2luZGVudCkgfSB9LAogICAgeyAidGV4dC1vcmllbnRhdGlvbiIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RleHRfZGFzaF9vcmllbnRhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0X2Rhc2hfb3JpZW50YXRpb24pIH0gfSwKICAgIHsgInRleHQtb3ZlcmZsb3ciLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0X2Rhc2hfb3ZlcmZsb3cpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4
dF9kYXNoX292ZXJmbG93KSB9IH0sCiAgICB7ICJ0ZXh0LXJlbmRlcmluZyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX3RleHRfZGFzaF9yZW5kZXJpbmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9k
YXNoX3JlbmRlcmluZykgfSB9LAogICAgeyAidGV4dC1zaGFkb3ciLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0X2Rhc2hfc2hhZG93KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9zaGFk
b3cpIH0gfSwKICAgIHsgInRleHQtdHJhbnNmb3JtIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9k
YXNoX3RyYW5zZm9ybSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfdHJhbnNmb3Jt
KSB9IH0sCiAgICB7ICJ0ZXh0LXVuZGVybGluZS1vZmZzZXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0X2Rhc2hfdW5kZXJsaW5lX2Rhc2hfb2Zmc2V0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Rl
eHRfZGFzaF91bmRlcmxpbmVfZGFzaF9vZmZzZXQpIH0gfSwKICAgIHsgInRleHQtdW5kZXJsaW5l
LXBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3VuZGVybGluZV9kYXNoX3Bv
c2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF91bmRlcmxpbmVfZGFzaF9w
b3NpdGlvbikgfSB9LAogICAgeyAidG91Y2gtYWN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdG91
Y2hfZGFzaF9hY3Rpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdG91Y2hfZGFzaF9hY3Rpb24p
IH0gfSwKICAgIHsgInRyYW5zZm9ybS1ib3giLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1f
ZGFzaF9ib3gpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfYm94KSB9IH0s
CiAgICB7ICJ0cmFuc2Zvcm0tb3JpZ2luIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rh
c2hfb3JpZ2luKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbikg
fSB9LAogICAgeyAidHJhbnNmb3JtLW9yaWdpbi14Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNm
b3JtX2Rhc2hfb3JpZ2luX2Rhc2hfeCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1f
ZGFzaF9vcmlnaW5fZGFzaF94KSB9IH0sCiAgICB7ICJ0cmFuc2Zvcm0tb3JpZ2luLXkiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF95KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3kpIH0gfSwKICAgIHsgInRyYW5z
Zm9ybS1vcmlnaW4teiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9k
YXNoX3opLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hf
eikgfSB9LAogICAgeyAidHJhbnNmb3JtLXN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNm
b3JtX2Rhc2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfc3R5
bGUpIH0gfSwKICAgIHsgInRyYW5zaXRpb24tZGVsYXkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFu
c2l0aW9uX2Rhc2hfZGVsYXkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbl9kYXNo
X2RlbGF5KSB9IH0sCiAgICB7ICJ0cmFuc2l0aW9uLWR1cmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fdHJhbnNpdGlvbl9kYXNoX2R1cmF0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5z
aXRpb25fZGFzaF9kdXJhdGlvbikgfSB9LAogICAgeyAidHJhbnNpdGlvbi1wcm9wZXJ0eSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25fZGFzaF9wcm9wZXJ0eSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl90cmFuc2l0aW9uX2Rhc2hfcHJvcGVydHkpIH0gfSwKICAgIHsgInRyYW5zaXRpb24t
dGltaW5nLWZ1bmN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbl9kYXNoX3RpbWlu
Z19kYXNoX2Z1bmN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25fZGFzaF90
aW1pbmdfZGFzaF9mdW5jdGlvbikgfSB9LAogICAgeyAidW5pY29kZS1iaWRpIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fdW5pY29kZV9kYXNoX2JpZGkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29k
ZV9kYXNoX2JpZGkpIH0gfSwKICAgIHsgInVuaWNvZGUtcmFuZ2UiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl91bmljb2RlX2Rhc2hfcmFuZ2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZV9kYXNo
X3JhbmdlKSB9IH0sCiAgICB7ICJ2ZWN0b3ItZWZmZWN0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdmVj
dG9yX2Rhc2hfZWZmZWN0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3ZlY3Rvcl9kYXNoX2VmZmVj
dCkgfSB9LAogICAgeyAidmVydGljYWwtYWxpZ24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl92ZXJ0aWNh
bF9kYXNoX2FsaWduKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3ZlcnRpY2FsX2Rhc2hfYWxpZ24p
IH0gfSwKICAgIHsgIndoaXRlLXNwYWNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2hpdGVfZGFzaF9z
cGFjZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93aGl0ZV9kYXNoX3NwYWNlKSB9IH0sCiAgICB7
ICJ3aWxsLWNoYW5nZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dpbGxfZGFzaF9jaGFuZ2UpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2lsbF9kYXNoX2NoYW5nZSkgfSB9LAogICAgeyAid29yZC1icmVh
ayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRfZGFzaF9icmVhayksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93b3JkX2Rhc2hfYnJlYWspIH0gfSwKICAgIHsgIndvcmQtc3BhY2luZyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dvcmRfZGFzaF9zcGFjaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRf
ZGFzaF9zcGFjaW5nKSB9IH0sCiAgICB7ICJ3b3JkLXdyYXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
b3JkX2Rhc2hfd3JhcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkX2Rhc2hfd3JhcCkgfSB9
LAogICAgeyAid3JpdGluZy1tb2RlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd3JpdGluZ19kYXNoX21v
ZGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd3JpdGluZ19kYXNoX21vZGUpIH0gfSwKICAgIHsg
InotaW5kZXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl96X2Rhc2hfaW5kZXgpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fel9kYXNoX2luZGV4KSB9IH0sCiAgICB7ICJlcHViQ2FwdGlvblNpZGUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9lcHViQ2FwdGlvblNpZGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1
YkNhcHRpb25TaWRlKSB9IH0sCiAgICB7ICJlcHViSHlwaGVucyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2VwdWJIeXBoZW5zKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJIeXBoZW5zKSB9IH0sCiAg
ICB7ICJlcHViVGV4dENvbWJpbmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dENvbWJpbmUp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRDb21iaW5lKSB9IH0sCiAgICB7ICJlcHVi
VGV4dEVtcGhhc2lzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRFbXBoYXNpcyksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzKSB9IH0sCiAgICB7ICJlcHViVGV4dEVt
cGhhc2lzQ29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzQ29sb3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRFbXBoYXNpc0NvbG9yKSB9IH0sCiAgICB7ICJl
cHViVGV4dEVtcGhhc2lzU3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lz
U3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRFbXBoYXNpc1N0eWxlKSB9IH0s
CiAgICB7ICJlcHViVGV4dE9yaWVudGF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRP
cmllbnRhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dE9yaWVudGF0aW9uKSB9
IH0sCiAgICB7ICJlcHViVGV4dFRyYW5zZm9ybSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0
VHJhbnNmb3JtKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0VHJhbnNmb3JtKSB9IH0s
CiAgICB7ICJlcHViV29yZEJyZWFrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YldvcmRCcmVhayks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViV29yZEJyZWFrKSB9IH0sCiAgICB7ICJlcHViV3Jp
dGluZ01vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViV3JpdGluZ01vZGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZXB1YldyaXRpbmdNb2RlKSB9IH0sCiAgICB7ICJpdGVtIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25Qcm90b3R5cGVGdW5jdGlvbl9pdGVtKSwgKGludHB0cl90KSAoMSkgfSB9LAog
ICAgeyAiZ2V0UHJvcGVydHlWYWx1ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlRnVu
Y3Rpb25fZ2V0UHJvcGVydHlWYWx1ZSksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgIHsgImdldFBy
b3BlcnR5UHJpb3JpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX2dl
dFByb3BlcnR5UHJpb3JpdHkpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICB7ICJzZXRQcm9wZXJ0
eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
biksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oanNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25fc2V0UHJvcGVydHkpLCAo
aW50cHRyX3QpICgyKSB9IH0sCiAgICB7ICJyZW1vdmVQcm9wZXJ0eSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNDU1NTdHlsZURlY2xh
cmF0aW9uUHJvdG90eXBlRnVuY3Rpb25fcmVtb3ZlUHJvcGVydHkpLCAoaW50cHRyX3QpICgxKSB9
IH0sCiAgICB7ICJnZXRQcm9wZXJ0eVNob3J0aGFuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNDU1NTdHlsZURlY2xhcmF0aW9uUHJv
dG90eXBlRnVuY3Rpb25fZ2V0UHJvcGVydHlTaG9ydGhhbmQpLCAoaW50cHRyX3QpICgwKSB9IH0s
CiAgICB7ICJpc1Byb3BlcnR5SW1wbGljaXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlw
ZUZ1bmN0aW9uX2lzUHJvcGVydHlJbXBsaWNpdCksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgIHsg
ImdldFByb3BlcnR5Q1NTVmFsdWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0
aW9uX2dldFByb3BlcnR5Q1NTVmFsdWUpLCAoaW50cHRyX3QpICgxKSB9IH0sCn07Cgpjb25zdCBD
bGFzc0luZm8gSlNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJDU1NT
dHlsZURlY2xhcmF0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGUpIH07Cgp2b2lkIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQp7CiAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0s
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6aW5mbygpLCBKU0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90
b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwogICAgYm9vbCBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gZmFsc2U7CiAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLmFz
cGVjdFJhdGlvRW5hYmxlZCkgewogICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
PSB0cnVlOwogICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJhc3BlY3RSYXRpbyIpLCBzdHJs
ZW4oImFzcGVjdFJhdGlvIikpOwogICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAg
ICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICB9CiAg
ICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLm92ZXJzY3JvbGxCZWhhdmlvckVu
YWJsZWQpIHsKICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigib3ZlcnNjcm9sbEJlaGF2aW9yIiksIHN0cmxlbigi
b3ZlcnNjcm9sbEJlaGF2aW9yIikpOwogICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29w
ZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsK
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICB9
CiAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLm92ZXJzY3JvbGxCZWhhdmlv
ckVuYWJsZWQpIHsKICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigib3ZlcnNjcm9sbEJlaGF2aW9yWCIpLCBzdHJs
ZW4oIm92ZXJzY3JvbGxCZWhhdmlvclgiKSk7CiAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpOwogICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
ICAgIH0KICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkub3ZlcnNjcm9sbEJl
aGF2aW9yRW5hYmxlZCkgewogICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwogICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJvdmVyc2Nyb2xsQmVoYXZpb3JZIiks
IHN0cmxlbigib3ZlcnNjcm9sbEJlaGF2aW9yWSIpKTsKICAgICAgICBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZp
Z3VyYWJsZSk7CiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgfQogICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS5jc3NJbmRp
dmlkdWFsVHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWQpIHsKICAgICAgICBoYXNEaXNhYmxlZFJ1
bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigicm90
YXRlIiksIHN0cmxlbigicm90YXRlIikpOwogICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVT
Y29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxl
KTsKICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAg
ICB9CiAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLmNzc0luZGl2aWR1YWxU
cmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZCkgewogICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgPSB0cnVlOwogICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJzY2FsZSIpLCBz
dHJsZW4oInNjYWxlIikpOwogICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICB9CiAgICBp
ZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLkNTU09NVmlld1Ntb290aFNjcm9sbGlu
Z0VuYWJsZWQpIHsKICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigic2Nyb2xsQmVoYXZpb3IiKSwgc3RybGVuKCJz
Y3JvbGxCZWhhdmlvciIpKTsKICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgfQogICAg
aWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS5jc3NJbmRpdmlkdWFsVHJhbnNmb3Jt
UHJvcGVydGllc0VuYWJsZWQpIHsKICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVz
ID0gdHJ1ZTsKICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidHJhbnNsYXRlIiksIHN0cmxl
bigidHJhbnNsYXRlIikpOwogICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICB9CiAgICBp
ZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLmFzcGVjdFJhdGlvRW5hYmxlZCkgewog
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJhc3BlY3QtcmF0aW8iKSwgc3RybGVuKCJhc3BlY3QtcmF0aW8iKSk7
CiAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OwogICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgIH0KICAgIGlmICghanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNldHRpbmdzVmFsdWVzKCkub3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZCkgewogICAgICAgIGhh
c0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJvdmVyc2Nyb2xsLWJlaGF2aW9yIiksIHN0cmxlbigib3ZlcnNjcm9sbC1iZWhhdmlv
ciIpKTsKICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgfQogICAgaWYgKCFqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS5vdmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkKSB7CiAgICAg
ICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oIm92ZXJzY3JvbGwtYmVoYXZpb3IteCIpLCBzdHJsZW4oIm92ZXJzY3JvbGwt
YmVoYXZpb3IteCIpKTsKICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUo
dm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgfQogICAgaWYg
KCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS5vdmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVk
KSB7CiAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oIm92ZXJzY3JvbGwtYmVoYXZpb3IteSIpLCBzdHJsZW4oIm92
ZXJzY3JvbGwtYmVoYXZpb3IteSIpKTsKICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
CiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
fQogICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS5DU1NPTVZpZXdTbW9vdGhT
Y3JvbGxpbmdFbmFibGVkKSB7CiAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9
IHRydWU7CiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInNjcm9sbC1iZWhhdmlvciIpLCBz
dHJsZW4oInNjcm9sbC1iZWhhdmlvciIpKTsKICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
U2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJs
ZSk7CiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgfQogICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCkt
PmlzRGljdGlvbmFyeSgpKQogICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGdsb2JhbE9i
amVjdCgpLT5hcnJheVByb3RvdHlwZSgpLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwp9Cgpjb25zdCBDbGFzc0luZm8gSlNDU1NTdHlsZURl
Y2xhcmF0aW9uOjpzX2luZm8gPSB7ICJDU1NTdHlsZURlY2xhcmF0aW9uIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0NTU1N0eWxlRGVjbGFy
YXRpb24pIH07CgpKU0NTU1N0eWxlRGVjbGFyYXRpb246OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbihT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVm
PENTU1N0eWxlRGVjbGFyYXRpb24+JiYgaW1wbCkKICAgIDogSlNET01XcmFwcGVyPENTU1N0eWxl
RGVjbGFyYXRpb24+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQp7Cn0K
CnZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCnsKICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygp
KSk7CgogICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwg
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQgYXMg
W0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3ViY2xh
c3NlcyBBY3RpdmVET01PYmplY3QuIik7Cgp9CgpKU09iamVjdCogSlNDU1NTdHlsZURlY2xhcmF0
aW9uOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQp7CiAgICByZXR1cm4gSlNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlOjpjcmVhdGUo
dm0sICZnbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBl
KCkpKTsKfQoKSlNPYmplY3QqIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHJvdG90eXBlKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKewogICAgcmV0dXJuIGdldERPTVBy
b3RvdHlwZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+KHZtLCBnbG9iYWxPYmplY3QpOwp9CgpKU1Zh
bHVlIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQp7CiAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8SlNDU1NTdHlsZURlY2xhcmF0aW9uRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cn0KCnZvaWQgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQp7CiAgICBKU0NTU1N0eWxlRGVj
bGFyYXRpb24qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24q
PihjZWxsKTsKICAgIHRoaXNPYmplY3QtPkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6fkpTQ1NTU3R5
bGVEZWNsYXJhdGlvbigpOwp9Cgpib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCnsK
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4ob2Jq
ZWN0KTsKICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
ICAgIGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAg
aWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKICAg
ICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOwogICAgICAg
ICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwp9
Cgpib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5z
aWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKewogICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24qPihvYmplY3QpOwogICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgaWYgKExJS0VMWShpbmRleCA8
PSBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLmxlbmd0aCgpKSB7CiAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGlu
ZGV4KSk7CiAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBp
bmRleCwgc2xvdCk7Cn0KCnZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRG9udEVudW1Qcm9wZXJ0aWVz
TW9kZSBtb2RlKQp7CiAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24qPihv
YmplY3QpOwogICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGluZm8oKSk7CiAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5n
dGgoKTsgaSA8IGNvdW50OyArK2kpCiAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cjo6ZnJvbSh2bSwgaSkpOwogICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKfQoKdGVtcGxhdGU8
PiBpbmxpbmUgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQp7CiAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU0NTU1N0
eWxlRGVjbGFyYXRpb24qPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwp9Cgp0ZW1wbGF0ZTw+IGlubGluZSBKU0NTU1N0eWxlRGVj
bGFyYXRpb24qIElETE9wZXJhdGlvbjxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpjYXN0KEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKewog
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4oSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25Db25zdHJ1Y3RvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9u
UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgIGlmIChVTkxJ
S0VMWSghcHJvdG90eXBlKSkKICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlND
U1NTdHlsZURlY2xhcmF0aW9uOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY3NzVGV4dEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmNzc1RleHQoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9jc3NUZXh0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX2Nzc1RleHRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjc3NUZXh0Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY3NzVGV4dFNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRDc3NUZXh0KFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY3NzVGV4dCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jc3NUZXh0U2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjc3NU
ZXh0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGVu
Z3RoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExVbnNpZ25lZExvbmc+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwubGVuZ3RoKCkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGVuZ3RoLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2xlbmd0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImxlbmd0
aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BhcmVu
dFJ1bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETE51bGxhYmxlPElETEludGVyZmFj
ZTxDU1NSdWxlPj4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVj
dCgpLCB0aHJvd1Njb3BlLCBpbXBsLnBhcmVudFJ1bGUoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYXJlbnRSdWxlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3BhcmVudFJ1bGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJw
YXJlbnRSdWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fY3NzRmxvYXRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmNzc0Zsb2F0KCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fY3NzRmxvYXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fY3NzRmxvYXRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjc3NGbG9hdCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Nzc0Zsb2F0U2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0Q3NzRmxvYXQoV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jc3NGbG9hdCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jc3NGbG9hdFNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY3NzRmxvYXQi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9BcHBsZUNv
bG9yRmlsdGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBcHBsZUNvbG9y
RmlsdGVyKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9BcHBsZUNvbG9yRmlsdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX0FwcGxlQ29sb3JGaWx0ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJBcHBsZUNvbG9yRmlsdGVy
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVD
b2xvckZpbHRlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFwcGxlQ29sb3JGaWx0ZXIsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVDb2xvckZpbHRlciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9BcHBsZUNv
bG9yRmlsdGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJBcHBsZUNvbG9yRmlsdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fQXBwbGVQYXlCdXR0b25TdHlsZUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5QXBwbGVQYXlCdXR0b25TdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVQYXlCdXR0b25TdHlsZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9BcHBsZVBheUJ1dHRvblN0
eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiQXBwbGVQYXlCdXR0b25TdHlsZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0FwcGxlUGF5QnV0dG9uU3R5bGVTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlBcHBsZVBheUJ1dHRvblN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX0FwcGxlUGF5QnV0dG9uU3R5bGUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVQYXlCdXR0b25T
dHlsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiQXBwbGVQYXlCdXR0b25TdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX0FwcGxlUGF5QnV0dG9uVHlwZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5QXBwbGVQYXlCdXR0b25UeXBlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9BcHBsZVBheUJ1dHRvblR5cGUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVQYXlCdXR0b25UeXBlR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiQXBwbGVQYXlCdXR0b25UeXBlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVQYXlCdXR0b25UeXBlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5QXBwbGVQYXlCdXR0b25UeXBlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX0FwcGxlUGF5QnV0dG9uVHlwZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9BcHBsZVBheUJ1dHRvblR5cGVTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIkFwcGxlUGF5
QnV0dG9uVHlwZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX0FwcGxlVHJhaWxpbmdXb3JkR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlBcHBsZVRyYWlsaW5nV29yZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fQXBwbGVUcmFpbGluZ1dvcmQsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVUcmFpbGluZ1dvcmRHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJB
cHBsZVRyYWlsaW5nV29yZCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX0FwcGxlVHJhaWxpbmdXb3JkU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QXBwbGVUcmFpbGluZ1dv
cmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVUcmFp
bGluZ1dvcmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fQXBwbGVUcmFpbGluZ1dvcmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIkFwcGxlVHJhaWxpbmdXb3JkIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YkNhcHRpb25TaWRlR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDYXB0aW9uU2lkZSkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YkNhcHRpb25T
aWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJDYXB0aW9u
U2lkZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIkVwdWJDYXB0aW9uU2lkZSIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJDYXB0aW9uU2lkZVNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUNhcHRpb25TaWRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX0VwdWJDYXB0aW9uU2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViQ2FwdGlvblNpZGVTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIkVwdWJDYXB0aW9uU2lkZSIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJIeXBoZW5z
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViSHlw
aGVucywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViSHlwaGVu
c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIkVwdWJIeXBoZW5zIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1Ykh5cGhlbnNTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRI
eXBoZW5zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJI
eXBoZW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX0VwdWJIeXBoZW5zU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJFcHViSHlwaGVucyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0Q29tYmluZUdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmUpKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0Q29tYmluZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dENvbWJpbmVHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJFcHViVGV4dENvbWJpbmUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dENvbWJpbmVTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0Q29tYmluZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9FcHViVGV4dENvbWJpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YlRleHRDb21iaW5lU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJFcHViVGV4dENvbWJpbmUiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dEVtcGhh
c2lzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFz
aXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X0VwdWJUZXh0RW1waGFzaXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fRXB1YlRleHRFbXBoYXNpc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIkVwdWJUZXh0RW1waGFzaXMiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dEVt
cGhhc2lzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0RW1waGFzaXMsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YlRleHRF
bXBoYXNpc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiRXB1YlRleHRFbXBoYXNpcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0RW1waGFzaXNDb2xvckdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0RW1waGFzaXND
b2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dEVt
cGhhc2lzQ29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJFcHViVGV4dEVtcGhhc2lzQ29sb3IiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dEVtcGhh
c2lzQ29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dEVtcGhhc2lzQ29sb3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fRXB1YlRleHRFbXBoYXNpc0NvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJFcHViVGV4dEVtcGhhc2lzQ29sb3IiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dEVtcGhhc2lzU3R5
bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNp
c1N0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9FcHViVGV4dEVtcGhhc2lzU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fRXB1YlRleHRFbXBoYXNpc1N0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiRXB1YlRl
eHRFbXBoYXNpc1N0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fRXB1YlRleHRFbXBoYXNpc1N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzU3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
RXB1YlRleHRFbXBoYXNpc1N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0RW1waGFzaXNTdHlsZVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiRXB1YlRleHRFbXBo
YXNpc1N0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fRXB1YlRleHRPcmllbnRhdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0VGV4dE9yaWVudGF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dE9yaWVudGF0aW9uLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0T3JpZW50YXRpb25HZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJFcHViVGV4dE9yaWVudGF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YlRleHRPcmllbnRhdGlvblNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdFRleHRPcmllbnRhdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9FcHViVGV4dE9yaWVudGF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0T3JpZW50YXRpb25TZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIkVwdWJUZXh0
T3JpZW50YXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9FcHViVGV4dFRyYW5zZm9ybUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5VGV4dFRyYW5zZm9ybSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fRXB1YlRleHRUcmFuc2Zvcm0sIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fRXB1YlRleHRUcmFuc2Zvcm1HZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJFcHVi
VGV4dFRyYW5zZm9ybSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX0VwdWJUZXh0VHJhbnNmb3JtU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dFRyYW5zZm9y
bSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9FcHViVGV4dFRyYW5zZm9ybVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiRXB1YlRleHRUcmFuc2Zvcm0iKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViV29yZEJyZWFrR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkQnJlYWspKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJXb3JkQnJlYWssIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YldvcmRCcmVha0dldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIkVwdWJXb3JkQnJlYWsiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9FcHViV29yZEJyZWFrU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V29yZEJyZWFrLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJXb3JkQnJlYWssIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
RXB1YldvcmRCcmVha1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiRXB1YldvcmRCcmVhayIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX0VwdWJXcml0aW5nTW9kZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V3JpdGluZ01vZGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJXcml0aW5nTW9kZSwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViV3JpdGluZ01vZGVHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJFcHViV3JpdGluZ01vZGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9FcHViV3JpdGluZ01vZGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXcml0aW5nTW9kZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViV3JpdGluZ01vZGUs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fRXB1YldyaXRpbmdNb2RlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJFcHViV3JpdGluZ01vZGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9JbnRlcm5hbFRleHRBdXRvc2l6aW5nU3RhdHVzR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJbnRlcm5hbFRleHRBdXRvc2l6aW5n
U3RhdHVzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9JbnRlcm5hbFRleHRBdXRvc2l6aW5nU3RhdHVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX0ludGVybmFsVGV4dEF1dG9zaXppbmdTdGF0dXNHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJJbnRlcm5hbFRleHRBdXRvc2l6aW5nU3RhdHVzIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fSW50ZXJuYWxUZXh0QXV0b3NpemluZ1N0YXR1
c1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUludGVybmFsVGV4dEF1dG9zaXppbmdTdGF0dXMsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fSW50ZXJuYWxUZXh0QXV0b3NpemluZ1N0
YXR1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9JbnRlcm5hbFRleHRBdXRvc2l6aW5nU3RhdHVzU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJJbnRlcm5hbFRleHRBdXRvc2l6aW5n
U3RhdHVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0QWxpZ25Db250ZW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlB
bGlnbkNvbnRlbnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEFsaWduQ29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRBbGlnbkNvbnRlbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRB
bGlnbkNvbnRlbnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRBbGlnbkNvbnRlbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkNvbnRlbnQsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25Db250ZW50
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEFsaWduQ29udGVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0QWxpZ25Db250ZW50Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25JdGVtc0dldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWxpZ25JdGVtcykpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25JdGVtcywg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbGlnbkl0ZW1z
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0QWxpZ25JdGVtcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFsaWduSXRlbXNTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlBbGlnbkl0ZW1zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEFsaWduSXRlbXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25JdGVtc1NldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0QWxpZ25JdGVtcyIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFsaWdu
U2VsZkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWxpZ25TZWxmKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRB
bGlnblNlbGYsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
QWxpZ25TZWxmR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0QWxpZ25TZWxmIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25TZWxmU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5QWxpZ25TZWxmLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEFsaWduU2VsZiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbGlnblNlbGZTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEFsaWduU2VsZiIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFs
dEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWx0KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbHQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWx0R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiV2Via2l0QWx0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0QWx0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWx0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFsdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbHRTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEFsdCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFu
aW1hdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRBbmltYXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0QW5pbWF0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0QW5pbWF0aW9uIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5QW5pbWF0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25TZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEFuaW1hdGlv
biIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEFuaW1hdGlvbkRlbGF5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmlt
YXRpb25EZWxheSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0QW5pbWF0aW9uRGVsYXksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uRGVsYXlHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJr
aXRBbmltYXRpb25EZWxheSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkRlbGF5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uRGVs
YXksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5p
bWF0aW9uRGVsYXksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uRGVsYXlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEFuaW1hdGlvbkRlbGF5Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5p
bWF0aW9uRGlyZWN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmlt
YXRpb25EaXJlY3Rpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25EaXJlY3Rpb25HZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJXZWJraXRBbmltYXRpb25EaXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25EaXJlY3Rpb25TZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlBbmltYXRpb25EaXJlY3Rpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlv
bkRpcmVjdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiV2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uRHVyYXRpb25HZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkR1cmF0aW9uKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmlt
YXRpb25EdXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRBbmltYXRpb25EdXJhdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEFuaW1hdGlvbkR1
cmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0QW5pbWF0aW9uRHVyYXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25EdXJhdGlvbiwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRp
b25EdXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25EdXJhdGlvblNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0QW5pbWF0aW9uRHVyYXRp
b24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRBbmltYXRpb25GaWxsTW9kZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
QW5pbWF0aW9uRmlsbE1vZGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkZpbGxNb2RlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkZpbGxNb2RlR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiV2Via2l0QW5pbWF0aW9uRmlsbE1vZGUiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25GaWxsTW9kZVNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUFuaW1hdGlvbkZpbGxNb2RlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkZpbGxNb2RlLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkZp
bGxNb2RlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJXZWJraXRBbmltYXRpb25GaWxsTW9kZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50R2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25JdGVyYXRpb25Db3VudCkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnRHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50U2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
QW5pbWF0aW9uTmFtZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0
aW9uTmFtZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0QW5pbWF0aW9uTmFtZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25OYW1lR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0QW5p
bWF0aW9uTmFtZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEFuaW1hdGlvbk5hbWVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25OYW1lLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbk5h
bWUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0QW5pbWF0aW9uTmFtZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0QW5pbWF0aW9uTmFtZSIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvblBsYXlT
dGF0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uUGxheVN0
YXRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRBbmltYXRpb25QbGF5U3RhdGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uUGxheVN0YXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Vi
a2l0QW5pbWF0aW9uUGxheVN0YXRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uUGxheVN0YXRlU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5p
bWF0aW9uUGxheVN0YXRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25QbGF5U3RhdGVT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldl
YmtpdEFuaW1hdGlvblBsYXlTdGF0ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25UaW1pbmdGdW5jdGlvbikpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJr
aXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
QW5pbWF0aW9uVGltaW5nRnVuY3Rpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QXBwZWFy
YW5jZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5j
ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0QXBwZWFyYW5jZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRBcHBlYXJhbmNlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0QXBwZWFyYW5jZSIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFwcGVh
cmFuY2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFwcGVhcmFuY2UsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QXBwZWFy
YW5jZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiV2Via2l0QXBwZWFyYW5jZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tkcm9wRmlsdGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZHJvcEZpbHRlcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2Ryb3BGaWx0ZXIsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2Ryb3BGaWx0
ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCYWNrZHJvcEZpbHRlciIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tkcm9wRmlsdGVyU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2Ryb3BGaWx0ZXIsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2Ry
b3BGaWx0ZXJTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIldlYmtpdEJhY2tkcm9wRmlsdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5R2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHkpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJh
Y2tmYWNlVmlzaWJpbGl0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRCYWNrZmFjZVZpc2liaWxpdHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCYWNrZmFj
ZVZpc2liaWxpdHkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCYWNrZmFjZVZpc2liaWxpdHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFj
ZVZpc2liaWxpdHksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eVNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0
QmFja2ZhY2VWaXNpYmlsaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZENsaXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kQ2xpcCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kQ2xp
cEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJhY2tncm91bmRDbGlwIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZENsaXBTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kQ2xpcCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3Jv
dW5kQ2xpcFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiV2Via2l0QmFja2dyb3VuZENsaXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
YWNrZ3JvdW5kQ29tcG9zaXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEJhY2tncm91bmRDb21wb3NpdGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCYWNr
Z3JvdW5kQ29tcG9zaXRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJh
Y2tncm91bmRDb21wb3NpdGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kQ29tcG9z
aXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZE9yaWdpbkdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbikpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dy
b3VuZE9yaWdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRCYWNrZ3JvdW5kT3JpZ2luR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0QmFja2dyb3VuZE9yaWdp
biIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEJhY2tncm91bmRPcmlnaW5TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kT3JpZ2luLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tncm91
bmRPcmlnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZE9yaWdpblNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0QmFja2dyb3VuZE9yaWdpbiIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJh
Y2tncm91bmRTaXplR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRC
YWNrZ3JvdW5kU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZFNpemUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZFNpemVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJX
ZWJraXRCYWNrZ3JvdW5kU2l6ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tncm91bmRTaXplU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QmFj
a2dyb3VuZFNpemUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0QmFja2dyb3VuZFNpemUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZFNpemVTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEJhY2tncm91
bmRTaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0Qm9yZGVyQWZ0ZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
cmRlckJsb2NrRW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJv
cmRlckFmdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Qm9yZGVyQWZ0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZCwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRCb3JkZXJBZnRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0Qm9yZGVyQWZ0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlckNvbG9yR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZENvbG9yKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJBZnRlckNvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJvcmRlckFmdGVyQ29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCb3JkZXJBZnRl
ckNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrRW5kQ29sb3Is
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
QWZ0ZXJDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlckNvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRCb3JkZXJBZnRlckNvbG9y
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Qm9yZGVyQWZ0ZXJTdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVyQmxvY2tFbmRTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlclN0eWxlR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiV2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVyU3R5bGVTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlCb3JkZXJCbG9ja0VuZFN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVyU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQWZ0ZXJTdHls
ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVyV2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrRW5kV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVyV2lk
dGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
QWZ0ZXJXaWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJvcmRlckFmdGVyV2lkdGgiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJB
ZnRlcldpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tFbmRXaWR0aCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlcldpZHRoLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJvcmRlckFmdGVyV2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEJvcmRlckFmdGVyV2lkdGgiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnQpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEJvcmRlckJlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJCZWZvcmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCb3JkZXJCZWZvcmUiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3Jk
ZXJCZWZvcmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJlZm9yZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJCZWZvcmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIldlYmtpdEJvcmRlckJlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJlZm9yZUNvbG9yR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0Q29sb3IpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRl
ckJlZm9yZUNvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJvcmRlckJlZm9yZUNvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Qm9yZGVyQmVmb3Jl
Q29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJCZWZvcmVDb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnRDb2xv
ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3Jk
ZXJCZWZvcmVDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVDb2xvclNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0Qm9yZGVyQmVmb3Jl
Q29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJCZWZvcmVTdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Qm9yZGVyQmxvY2tTdGFydFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVTdHlsZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVTdHlsZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJvcmRlckJlZm9yZVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQmVmb3JlU3R5bGVT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0U3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Qm9yZGVyQmVmb3JlU3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIldlYmtpdEJvcmRlckJlZm9yZVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQmVmb3JlV2lkdGhH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnRXaWR0
aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0Qm9yZGVyQmVmb3JlV2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm9yZGVyQmVmb3JlV2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRC
b3JkZXJCZWZvcmVXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEJvcmRlckJlZm9yZVdpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxv
Y2tTdGFydFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJlZm9yZVdpZHRoU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRC
b3JkZXJCZWZvcmVXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEJvcmRlckJvdHRvbUxlZnRSYWRpdXNHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJvdHRv
bUxlZnRSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Qm9yZGVyQm90dG9tTGVmdFJhZGl1c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJvcmRlckJv
dHRvbUxlZnRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tTGVmdFJhZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJvdHRvbUxl
ZnRSYWRpdXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIldlYmtpdEJvcmRlckJvdHRvbUxlZnRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCb3R0b21SaWdodFJhZGl1
c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiV2Via2l0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCb3R0b21SaWdodFJh
ZGl1c1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJvdHRvbVJpZ2h0UmFk
aXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRCb3JkZXJCb3R0b21SaWdo
dFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJvcmRlckVuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVySW5saW5lRW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyRW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Qm9yZGVy
RW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Qm9yZGVyRW5kU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckVuZCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJFbmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIldlYmtpdEJvcmRlckVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckVuZENvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVFbmRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyRW5kQ29sb3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyRW5k
Q29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCb3JkZXJFbmRDb2xvciIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckVuZENvbG9y
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyRW5kQ29sb3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9y
ZGVyRW5kQ29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIldlYmtpdEJvcmRlckVuZENvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyRW5kU3R5bGVHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZUVuZFN0eWxlKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJF
bmRTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJFbmRTdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJvcmRlckVuZFN0eWxlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
RW5kU3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVFbmRTdHlsZSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRTdHlsZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJFbmRTdHlsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0Qm9yZGVyRW5kU3R5bGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRXaWR0aEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kV2lkdGgpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEJvcmRlckVuZFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJvcmRlckVuZFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Qm9yZGVyRW5kV2lk
dGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRCb3JkZXJFbmRXaWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZUVuZFdpZHRoLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckVuZFdp
ZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEJvcmRlckVuZFdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRCb3JkZXJFbmRXaWR0aCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckZpdEdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0KSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJGaXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Qm9yZGVyRml0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Qm9yZGVyRml0Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyRml0U2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckZpdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJGaXRTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEJvcmRl
ckZpdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZykpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVySG9yaXpvbnRh
bFNwYWNpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCb3JkZXJIb3Jp
em9udGFsU3BhY2luZyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
SG9yaXpvbnRhbFNwYWNpbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIldlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVySW1hZ2VH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRCb3JkZXJJbWFnZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJJbWFnZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJvcmRlckltYWdlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
SW1hZ2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJJbWFnZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3Jk
ZXJJbWFnZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiV2Via2l0Qm9yZGVySW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJSYWRpdXNHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyUmFkaXVzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclJhZGl1c0dl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJvcmRlclJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclJhZGl1c1NldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlclJhZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyUmFkaXVzU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRC
b3JkZXJSYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCb3JkZXJTdGFydEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Qm9yZGVySW5saW5lU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
V2Via2l0Qm9yZGVyU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJTdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0
YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJv
cmRlclN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRCb3JkZXJTdGFydCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0
Q29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0
YXJ0Q29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0Q29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyU3RhcnRDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldl
YmtpdEJvcmRlclN0YXJ0Q29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJTdGFydENvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVy
SW5saW5lU3RhcnRDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCb3JkZXJTdGFydENvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0Q29sb3JTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtp
dEJvcmRlclN0YXJ0Q29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJTdGFydFN0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVTdGFydFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJTdGFydFN0eWxl
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0
YXJ0U3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCb3JkZXJTdGFydFN0eWxlIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyU3Rh
cnRTdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0YXJ0U3R5bGUsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRCb3JkZXJTdGFydFN0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRCb3JkZXJTdGFydFN0eWxlIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyU3RhcnRX
aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3Rh
cnRXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0Qm9yZGVyU3RhcnRXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJTdGFydFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Vi
a2l0Qm9yZGVyU3RhcnRXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0V2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJ
bmxpbmVTdGFydFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEJvcmRlclN0YXJ0V2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyU3RhcnRXaWR0aFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0
Qm9yZGVyU3RhcnRXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEJvcmRlclRvcExlZnRSYWRpdXNHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclRvcExlZnRSYWRp
dXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
VG9wTGVmdFJhZGl1c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJvcmRlclRvcExlZnRSYWRpdXMi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJUb3BMZWZ0UmFkaXVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJUb3BM
ZWZ0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclRvcExlZnRSYWRpdXNTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEJvcmRlclRvcExlZnRS
YWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJUb3BSaWdodFJhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclRvcFJpZ2h0UmFkaXVzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclRvcFJpZ2h0
UmFkaXVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Qm9yZGVyVG9wUmlnaHRSYWRpdXMiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJU
b3BSaWdodFJhZGl1c1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclRvcFJpZ2h0
UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEJvcmRlclRvcFJpZ2h0UmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRCb3JkZXJUb3BSaWdodFJh
ZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZ0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNp
bmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
VmVydGljYWxTcGFjaW5nR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Qm9yZGVyVmVydGljYWxTcGFj
aW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGlj
YWxTcGFjaW5nLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmdT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldl
YmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveEFsaWduR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94QWxpZ24sIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94QWxpZ25HZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJXZWJraXRCb3hBbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEJveEFsaWduU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ24sIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94QWxpZ24s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Qm94QWxpZ25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIldlYmtpdEJveEFsaWduIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94RGVjb3JhdGlvbkJyZWFrR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hEZWNvcmF0aW9uQnJlYWspKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEJveERlY29yYXRpb25CcmVhaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCb3hEZWNvcmF0aW9uQnJlYWtHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCb3hE
ZWNvcmF0aW9uQnJlYWsiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRCb3hEZWNvcmF0aW9uQnJlYWtTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hE
ZWNvcmF0aW9uQnJlYWssIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Qm94RGVjb3JhdGlvbkJyZWFrLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveERlY29yYXRpb25CcmVha1Nl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Vi
a2l0Qm94RGVjb3JhdGlvbkJyZWFrIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94RGlyZWN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveERpcmVjdGlvbiwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hEaXJlY3Rpb25HZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJXZWJraXRCb3hEaXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hEaXJlY3Rpb25TZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRCb3hEaXJlY3Rpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm94RGlyZWN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveERpcmVjdGlvblNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0Qm94
RGlyZWN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Qm94RmxleEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0Qm94RmxleCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm94RmxleCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRCb3hGbGV4R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Qm94RmxleCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveEZs
ZXhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveEZsZXgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94RmxleFNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0Qm94
RmxleCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJveEZsZXhHcm91cEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0Qm94RmxleEdyb3VwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hGbGV4R3JvdXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94RmxleEdyb3VwR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Vi
a2l0Qm94RmxleEdyb3VwIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm94RmxleEdyb3VwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdy
b3VwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJv
eEZsZXhHcm91cCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hGbGV4R3JvdXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEJveEZsZXhHcm91cCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveExpbmVz
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lcykpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Qm94TGluZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Qm94TGluZXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCb3hMaW5lcyIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveExpbmVzU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0Qm94TGluZXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm94TGluZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94TGluZXNTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEJveExpbmVzIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94
T3JkaW5hbEdyb3VwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRC
b3hPcmRpbmFsR3JvdXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJveE9yZGluYWxHcm91cCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hPcmRpbmFsR3JvdXBHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJXZWJraXRCb3hPcmRpbmFsR3JvdXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hPcmRpbmFsR3JvdXBTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRCb3hPcmRpbmFsR3JvdXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0Qm94T3JkaW5hbEdyb3VwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveE9yZGluYWxHcm91cFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0
Qm94T3JkaW5hbEdyb3VwIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm94T3JpZW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXZWJraXRCb3hPcmllbnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveE9yaWVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hPcmllbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJr
aXRCb3hPcmllbnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCb3hPcmllbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94T3JpZW50LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJveE9yaWVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiV2Via2l0Qm94T3JpZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94UGFja0dldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94UGFjaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94UGFjaywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hQYWNrR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiV2Via2l0Qm94UGFjayIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEJveFBhY2tTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFBhY2ssIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0Qm94UGFja1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiV2Via2l0Qm94UGFjayIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFJlZmxlY3RHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFJlZmxlY3QsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94UmVmbGVjdEdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIldlYmtpdEJveFJlZmxlY3QiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hSZWZsZWN0U2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0
Qm94UmVmbGVjdCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3hSZWZsZWN0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFJlZmxlY3RTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEJveFJlZmxlY3QiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hTaGFk
b3dHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdykp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Qm94U2hhZG93LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJveFNoYWRvd0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJveFNoYWRvdyIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFNoYWRvd1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hTaGFkb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94U2hhZG93U2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRC
b3hTaGFkb3ciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRCb3hTaXppbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
eFNpemluZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0Qm94U2l6aW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEJveFNpemluZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJveFNpemluZyIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJv
eFNpemluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJveFNpemluZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hTaXppbmcsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94U2l6aW5nU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJr
aXRCb3hTaXppbmciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRDbGlwUGF0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Q2xpcFBhdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdENsaXBQYXRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdENsaXBQYXRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Q2xpcFBhdGgiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDbGlw
UGF0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUNsaXBQYXRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdENsaXBQYXRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENsaXBQYXRoU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRDbGlw
UGF0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdENvbHVtbkF4aXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkF4aXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdENvbHVtbkF4aXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Q29sdW1uQXhpc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdENvbHVt
bkF4aXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRDb2x1bW5BeGlzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQXhpcywgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5BeGlzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdENvbHVtbkF4aXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIldlYmtpdENvbHVtbkF4aXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0FmdGVyR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1
bW5CcmVha0FmdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdENvbHVtbkJyZWFrQWZ0ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRDb2x1bW5CcmVha0Fm
dGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Q29sdW1uQnJlYWtBZnRlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1u
QnJlYWtBZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0FmdGVyU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRDb2x1bW5CcmVha0FmdGVy
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Q29sdW1uQnJlYWtCZWZvcmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkJyZWFrQmVmb3JlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0JlZm9yZUdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIldlYmtpdENvbHVtbkJyZWFrQmVmb3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uQnJlYWtCZWZvcmVTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRD
b2x1bW5CcmVha0JlZm9yZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiV2Via2l0Q29sdW1uQnJlYWtCZWZvcmUiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0luc2lkZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNp
ZGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdENvbHVtbkJyZWFrSW5zaWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdENvbHVtbkJyZWFrSW5zaWRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0
Q29sdW1uQnJlYWtJbnNpZGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0luc2lkZVNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtbkJyZWFrSW5zaWRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdENvbHVtbkJyZWFrSW5zaWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkJyZWFrSW5zaWRlU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJr
aXRDb2x1bW5CcmVha0luc2lkZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkNvdW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlDb2x1bW5Db3VudCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uQ291bnQsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uQ291bnRHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJXZWJraXRDb2x1bW5Db3VudCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkNvdW50U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uQ291bnQs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1u
Q291bnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Q29sdW1uQ291bnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdENvbHVtbkNvdW50Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uRmlsbEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uRmlsbCkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uRmls
bCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5G
aWxsR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Q29sdW1uRmlsbCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkZpbGxTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlDb2x1bW5GaWxsLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdENvbHVtbkZpbGwsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uRmlsbFNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0Q29sdW1uRmlsbCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENv
bHVtbkdhcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uR2FwKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRDb2x1bW5HYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Q29sdW1uR2FwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Q29sdW1uR2FwIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uR2FwU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Q29sdW1uR2FwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdENvbHVtbkdhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5HYXBTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdENvbHVtbkdh
cCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dENvbHVtblByb2dyZXNzaW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5Qcm9ncmVzc2lvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUHJvZ3Jlc3Npb24sIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUHJvZ3Jlc3Npb25HZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJXZWJraXRDb2x1bW5Qcm9ncmVzc2lvbiIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblByb2dyZXNzaW9uU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUHJvZ3Jlc3Npb24sIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUHJvZ3Jlc3Npb24sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Q29sdW1uUHJvZ3Jlc3Npb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIldlYmtpdENvbHVtblByb2dyZXNzaW9uIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5SdWxl
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Q29sdW1uUnVsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblJ1bGVTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlDb2x1bW5SdWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdENvbHVtblJ1bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZVNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0Q29sdW1uUnVsZSIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVt
blJ1bGVDb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVs
ZUNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRDb2x1bW5SdWxlQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZUNvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0
Q29sdW1uUnVsZUNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZUNvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZUNv
bG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENv
bHVtblJ1bGVDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5SdWxlQ29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdENvbHVtblJ1bGVDb2xv
ciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dENvbHVtblJ1bGVTdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29s
dW1uUnVsZVN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5SdWxlU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZVN0eWxlR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
V2Via2l0Q29sdW1uUnVsZVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZVN0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1u
UnVsZVN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdENvbHVtblJ1bGVTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5SdWxlU3R5bGVTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdENvbHVtblJ1
bGVTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdENvbHVtblJ1bGVXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Q29sdW1uUnVsZVdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5SdWxlV2lkdGgsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZVdpZHRoR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiV2Via2l0Q29sdW1uUnVsZVdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZVdpZHRoU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Q29sdW1uUnVsZVdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdENvbHVtblJ1bGVXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5SdWxlV2lkdGhTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdENv
bHVtblJ1bGVXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdENvbHVtblNwYW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUNvbHVtblNwYW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblNwYW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uU3BhbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdENv
bHVtblNwYW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRDb2x1bW5TcGFuU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uU3BhbiwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5TcGFuLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dENvbHVtblNwYW5TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIldlYmtpdENvbHVtblNwYW4iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5XaWR0aEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Q29sdW1uV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbldpZHRoLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbldpZHRoR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiV2Via2l0Q29sdW1uV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5XaWR0aFNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVt
bldpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dENvbHVtbldpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbldpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRDb2x1bW5XaWR0aCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbnNH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbnMpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbnMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uc0dl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIldlYmtpdENvbHVtbnMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5zU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1u
cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1
bW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdENvbHVtbnNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdENvbHVtbnMiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDdXJzb3JWaXNpYmlsaXR5R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRDdXJzb3JWaXNpYmlsaXR5KSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRD
dXJzb3JWaXNpYmlsaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEN1cnNvclZpc2liaWxpdHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRDdXJzb3JWaXNp
YmlsaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0Q3Vyc29yVmlzaWJpbGl0eVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEN1cnNvclZpc2liaWxp
dHksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q3Vy
c29yVmlzaWJpbGl0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDdXJzb3JWaXNpYmlsaXR5U2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRDdXJzb3JWaXNpYmls
aXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0RmlsdGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGaWx0ZXIpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEZpbHRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRG
aWx0ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRGaWx0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGaWx0ZXJTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlG
aWx0ZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
RmlsdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEZpbHRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0RmlsdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5RmxleCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0RmxleCIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZs
ZXhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlGbGV4LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEZsZXgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0RmxleCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhCYXNpc0dldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEJhc2lzKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4QmFzaXMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleEJhc2lz
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0RmxleEJhc2lzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleEJhc2lzU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
RmxleEJhc2lzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEZsZXhCYXNpcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4QmFzaXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEZsZXhCYXNpcyIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhEaXJlY3Rp
b25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhEaXJlY3Rpb24pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEZsZXhEaXJlY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0RmxleERpcmVjdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEZsZXhEaXJlY3Rpb24i
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRG
bGV4RGlyZWN0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleERpcmVjdGlvbiwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4RGlyZWN0aW9uLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEZsZXhEaXJlY3Rpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIldlYmtpdEZsZXhEaXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4Rmxvd0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEZsb3cpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhGbG93LCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhGbG93R2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiV2Via2l0RmxleEZsb3ciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRGbGV4Rmxvd1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhGbG93LCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhGbG93LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEZsZXhGbG93U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJXZWJraXRGbGV4RmxvdyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhHcm93R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlGbGV4R3JvdykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleEdyb3csIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleEdyb3dHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJr
aXRGbGV4R3JvdyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEZsZXhHcm93U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEdyb3csIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleEdyb3csIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Rmxl
eEdyb3dTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIldlYmtpdEZsZXhHcm93Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0RmxleFNocmlua0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5RmxleFNocmluaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleFNocmluaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4U2hyaW5rR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Vi
a2l0RmxleFNocmluayIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEZsZXhTaHJpbmtTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4U2hyaW5rLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhTaHJpbmssIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0RmxleFNocmlua1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiV2Via2l0RmxleFNocmluayIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhXcmFwR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4V3JhcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleFdyYXAsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleFdyYXBHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJXZWJraXRGbGV4V3JhcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEZsZXhXcmFwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleFdyYXAsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleFdyYXAsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0RmxleFdyYXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIldlYmtpdEZsZXhXcmFwIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Rm9udEtlcm5pbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5nKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGb250S2VybmluZywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGb250S2VybmluZ0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIldlYmtpdEZvbnRLZXJuaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Rm9udEtlcm5pbmdTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRGb250S2VybmluZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRGb250S2VybmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGb250S2VybmluZ1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0Rm9udEtlcm5p
bmciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRGb250U21vb3RoaW5nR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRGb250U21vb3RoaW5nKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRGb250U21vb3RoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZvbnRTbW9vdGhpbmdHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJX
ZWJraXRGb250U21vb3RoaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Rm9udFNtb290aGluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEZvbnRT
bW9vdGhpbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Rm9udFNtb290aGluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGb250U21vb3RoaW5nU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRGb250U21vb3RoaW5n
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
SHlwaGVuYXRlQ2hhcmFjdGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXJH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5hdGVDaGFyYWN0
ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRl
TGltaXRBZnRlckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0SHlw
aGVuYXRlTGltaXRBZnRlcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRBZnRlciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5hdGVMaW1pdEFmdGVyR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiV2Via2l0SHlwaGVuYXRlTGltaXRBZnRlciIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxpbWl0QWZ0ZXJT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdEFmdGVyLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxpbWl0QWZ0ZXIsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0SHlwaGVuYXRlTGltaXRBZnRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0SHlwaGVuYXRlTGltaXRBZnRlciIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0
ZUxpbWl0QmVmb3JlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRI
eXBoZW5hdGVMaW1pdEJlZm9yZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmUsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmVH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJXZWJraXRIeXBoZW5hdGVMaW1pdEJlZm9yZSIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxpbWl0
QmVmb3JlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmUsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRC
ZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEh5cGhlbmF0ZUxpbWl0QmVm
b3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0SHlwaGVuYXRlTGltaXRMaW5lc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5hdGVMaW1p
dExpbmVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0
ZUxpbWl0TGluZXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxp
bWl0TGluZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRMaW5lc1NldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0SHlwaGVuYXRlTGltaXRM
aW5lcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEh5cGhlbnNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEh5
cGhlbnMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEh5cGhlbnMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0SHlwaGVuc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEh5cGhlbnMiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5zU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0SHlwaGVucywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbnNTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEh5cGhlbnMi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRJ
bml0aWFsTGV0dGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRJ
bml0aWFsTGV0dGVyKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRJbml0aWFsTGV0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEluaXRpYWxMZXR0ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJr
aXRJbml0aWFsTGV0dGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0SW5pdGlhbExldHRlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEluaXRpYWxM
ZXR0ZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
SW5pdGlhbExldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRJbml0aWFsTGV0dGVyU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRJbml0aWFsTGV0dGVyIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SnVz
dGlmeUNvbnRlbnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1c3RpZnlD
b250ZW50KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRKdXN0aWZ5Q29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRKdXN0aWZ5Q29udGVudEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEp1
c3RpZnlDb250ZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0SnVzdGlmeUNvbnRlbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlKdXN0aWZ5Q29udGVudCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRKdXN0aWZ5
Q29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRKdXN0aWZ5Q29udGVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0SnVzdGlmeUNvbnRlbnQiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRKdXN0aWZ5
SXRlbXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1c3RpZnlJdGVtcykp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0SnVzdGlmeUl0ZW1zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEp1c3RpZnlJdGVtc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEp1c3RpZnlJdGVtcyIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEp1
c3RpZnlJdGVtc1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1c3RpZnlJdGVtcywgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRKdXN0aWZ5SXRlbXMsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SnVz
dGlmeUl0ZW1zU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJXZWJraXRKdXN0aWZ5SXRlbXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lQWxpZ25HZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVBbGlnbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZUFsaWduLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVBbGlnbkdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIldlYmtpdExpbmVBbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVBbGlnblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVB
bGlnbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRM
aW5lQWxpZ24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TGluZUFsaWduU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRMaW5lQWxpZ24iKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lQm94Q29udGFpbkdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUJveENvbnRhaW4p
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdExpbmVCb3hDb250YWluLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdExpbmVCb3hDb250YWluR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TGluZUJveENv
bnRhaW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRMaW5lQm94Q29udGFpblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVCb3hDb250YWluLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVCb3hD
b250YWluLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdExpbmVCb3hDb250YWluU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRMaW5lQm94Q29udGFpbiIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVCcmVh
a0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFrKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5l
QnJlYWssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGlu
ZUJyZWFrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TGluZUJyZWFrIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZUJyZWFrU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5TGluZUJyZWFrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdExpbmVCcmVhaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lQnJlYWtTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdExpbmVCcmVhayIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVD
bGFtcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1w
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRMaW5lQ2xhbXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TGluZUNsYW1wR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TGluZUNsYW1wIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZUNsYW1w
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVDbGFtcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lQ2xhbXBTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtp
dExpbmVDbGFtcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdExpbmVHcmlkR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRMaW5lR3JpZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TGluZUdyaWQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TGluZUdyaWRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRMaW5lR3Jp
ZCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dExpbmVHcmlkU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUdyaWQsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZUdyaWQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZUdy
aWRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IldlYmtpdExpbmVHcmlkIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TGluZVNuYXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdExpbmVTbmFwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lU25hcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lU25hcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdExp
bmVTbmFwIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TGluZVNuYXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRMaW5lU25hcCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lU25hcCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRM
aW5lU25hcFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiV2Via2l0TGluZVNuYXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRMb2NhbGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdlYmtpdExvY2FsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TG9jYWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdExvY2FsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdExvY2Fs
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dExvY2FsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMb2NhbGUsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TG9jYWxlU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRM
b2NhbGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRMb2dpY2FsSGVpZ2h0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlC
bG9ja1NpemUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdExvZ2ljYWxIZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TG9naWNhbEhlaWdodEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdExv
Z2ljYWxIZWlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRMb2dpY2FsSGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmxvY2tTaXplLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExvZ2ljYWxIZWlnaHQs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0TG9naWNhbEhlaWdodFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TG9naWNhbEhlaWdodCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExvZ2ljYWxXaWR0aEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW5saW5lU2l6ZSkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TG9naWNhbFdp
ZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExvZ2lj
YWxXaWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdExvZ2ljYWxXaWR0aCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExvZ2ljYWxXaWR0aFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUlubGluZVNpemUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TG9naWNhbFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExvZ2ljYWxXaWR0aFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0
TG9naWNhbFdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0TWFyZ2luQWZ0ZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eU1hcmdpbkJsb2NrRW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5BZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5BZnRlckdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldl
YmtpdE1hcmdpbkFmdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TWFyZ2luQWZ0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9ja0VuZCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5B
ZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNYXJnaW5BZnRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWFyZ2luQWZ0ZXIiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5BZnRlckNvbGxh
cHNlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRl
ckNvbGxhcHNlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2VHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZVNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRN
YXJnaW5BZnRlckNvbGxhcHNlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luQmVmb3JlR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9ja1N0YXJ0KSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRN
YXJnaW5CZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0TWFyZ2luQmVmb3JlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TWFyZ2luQmVmb3JlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2lu
QmVmb3JlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luQmxvY2tTdGFydCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5CZWZvcmUsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFy
Z2luQmVmb3JlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJXZWJraXRNYXJnaW5CZWZvcmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dE1hcmdpbkJlZm9yZUNvbGxhcHNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0
TWFyZ2luQmVmb3JlQ29sbGFwc2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpbkJl
Zm9yZUNvbGxhcHNlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNl
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21D
b2xsYXBzZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2VHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0TWFyZ2luQm90dG9tQ29sbGFwc2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luQ29s
bGFwc2VHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNv
bGxhcHNlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRNYXJnaW5Db2xsYXBzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5Db2xsYXBzZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdE1h
cmdpbkNvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0TWFyZ2luQ29sbGFwc2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xs
YXBzZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRN
YXJnaW5Db2xsYXBzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5Db2xsYXBzZVNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWFyZ2luQ29sbGFwc2Ui
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRN
YXJnaW5FbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbklubGlu
ZUVuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0TWFyZ2luRW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdE1hcmdpbkVuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdE1hcmdpbkVuZCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdp
bkVuZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbklubGluZUVuZCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5FbmQsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luRW5k
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJX
ZWJraXRNYXJnaW5FbmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNYXJnaW5TdGFydEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5TWFyZ2luSW5saW5lU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpblN0YXJ0LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpblN0YXJ0R2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiV2Via2l0TWFyZ2luU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5TdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbklubGlu
ZVN0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dE1hcmdpblN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpblN0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRNYXJnaW5TdGFydCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpblRv
cENvbGxhcHNlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5Ub3BDb2xsYXBzZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWFyZ2luVG9wQ29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luVG9wQ29sbGFwc2VHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpblRvcENvbGxhcHNlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luVG9wQ29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luVG9w
Q29sbGFwc2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIldlYmtpdE1hcmdpblRvcENvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0TWFzaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFzaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TWFz
ayIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dE1hc2tTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2ssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWFzayIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tC
b3hJbWFnZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0Jv
eEltYWdlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRNYXNrQm94SW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TWFza0Jv
eEltYWdlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TWFza0JveEltYWdlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFn
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRNYXNrQm94SW1hZ2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdE1hc2tCb3hJbWFnZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZU91dHNl
dEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdl
T3V0c2V0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRNYXNrQm94SW1hZ2VPdXRzZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlT3V0c2V0R2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
V2Via2l0TWFza0JveEltYWdlT3V0c2V0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlT3V0c2V0U2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0TWFza0JveEltYWdlT3V0c2V0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZU91dHNldCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1h
Z2VPdXRzZXRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIldlYmtpdE1hc2tCb3hJbWFnZU91dHNldCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdEdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlUmVwZWF0KSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRNYXNrQm94SW1hZ2VSZXBlYXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0TWFza0JveEltYWdlUmVwZWF0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TWFz
a0JveEltYWdlUmVwZWF0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlUmVwZWF0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFz
a0JveEltYWdlUmVwZWF0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VSZXBlYXRT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldl
YmtpdE1hc2tCb3hJbWFnZVJlcGVhdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZVNsaWNlR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZSkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveElt
YWdlU2xpY2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
TWFza0JveEltYWdlU2xpY2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRNYXNrQm94SW1hZ2VTbGlj
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dE1hc2tCb3hJbWFnZVNsaWNlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU2xpY2Us
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0Jv
eEltYWdlU2xpY2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlU2xpY2VTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdE1hc2tCb3hJbWFnZVNs
aWNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0TWFza0JveEltYWdlU291cmNlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VTb3Vy
Y2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VT
b3VyY2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlU291cmNl
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWFza0JveEltYWdlU291cmNlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0Jv
eEltYWdlV2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tCb3hJbWFnZVdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VXaWR0aEdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIldlYmtpdE1hc2tCb3hJbWFnZVdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlV2lkdGhTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXZWJraXRNYXNrQm94SW1hZ2VXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VXaWR0aCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94
SW1hZ2VXaWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiV2Via2l0TWFza0JveEltYWdlV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQ2xpcEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXApKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tDbGlwLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tDbGlwR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiV2Via2l0TWFza0NsaXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQ2xpcFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tD
bGlwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1h
c2tDbGlwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdE1hc2tDbGlwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRNYXNrQ2xpcCIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tDb21wb3NpdGVHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1h
c2tDb21wb3NpdGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0TWFza0NvbXBvc2l0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdE1hc2tDb21wb3NpdGUiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNr
Q29tcG9zaXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQ29tcG9zaXRlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdE1hc2tDb21wb3NpdGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIldlYmtpdE1hc2tDb21wb3NpdGUiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrSW1hZ2VHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0ltYWdlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tJbWFnZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIldlYmtpdE1hc2tJbWFnZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tJbWFnZVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tJbWFnZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRNYXNrSW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0ltYWdlU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRNYXNrSW1hZ2UiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrT3Jp
Z2luR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2lu
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRNYXNrT3JpZ2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdE1hc2tPcmlnaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRNYXNrT3JpZ2luIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza09y
aWdpblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza09yaWdpbiwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrT3Jp
Z2luU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJXZWJraXRNYXNrT3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWFza1Bvc2l0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlvbiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrUG9zaXRpb25HZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJXZWJraXRNYXNrUG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrUG9zaXRpb25TZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0TWFza1Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlvblNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWFza1Bv
c2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TWFza1Bvc2l0aW9uWEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uWCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza1Bvc2l0aW9uWCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrUG9zaXRpb25YR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiV2Via2l0TWFza1Bvc2l0aW9uWCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlvblhTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRN
YXNrUG9zaXRpb25YLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdE1hc2tQb3NpdGlvblgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza1Bvc2l0aW9uWFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWFza1Bvc2l0
aW9uWCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdE1hc2tQb3NpdGlvbllHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tQb3NpdGlvblkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlvblksIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza1Bvc2l0aW9uWUdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
IldlYmtpdE1hc2tQb3NpdGlvblkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrUG9zaXRpb25ZU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRNYXNrUG9zaXRpb25ZLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlvbllTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdE1hc2tQb3NpdGlv
blkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRNYXNrUmVwZWF0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRN
YXNrUmVwZWF0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNYXNrUmVwZWF0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdE1hc2tSZXBlYXRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRNYXNrUmVw
ZWF0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0TWFza1JlcGVhdFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza1JlcGVhdCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRNYXNrUmVwZWF0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJXZWJraXRNYXNrUmVwZWF0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza1NpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrU2l6ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrU2l6ZUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIldlYmtpdE1hc2tTaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWFza1NpemVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrU2l6
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRNYXNrU2l6ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWFza1NpemUiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrU291cmNlVHlwZUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza1NvdXJjZVR5cGUpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tT
b3VyY2VUeXBlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dE1hc2tTb3VyY2VUeXBlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TWFza1NvdXJjZVR5cGUiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNr
U291cmNlVHlwZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTb3VyY2VUeXBlLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tTb3VyY2VUeXBlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdE1hc2tTb3VyY2VUeXBlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRNYXNrU291cmNlVHlwZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1heExvZ2ljYWxIZWlnaHRH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1heEJsb2NrU2l6ZSkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWF4
TG9naWNhbEhlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRNYXhMb2dpY2FsSGVpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TWF4TG9naWNhbEhl
aWdodCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdE1heExvZ2ljYWxIZWlnaHRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXhCbG9ja1NpemUsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWF4TG9naWNhbEhlaWdo
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRNYXhMb2dpY2FsSGVpZ2h0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRNYXhMb2dpY2FsSGVpZ2h0Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWF4TG9naWNh
bFdpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXhJbmxpbmVTaXpl
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRNYXhMb2dpY2FsV2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0TWF4TG9naWNhbFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TWF4TG9n
aWNhbFdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0TWF4TG9naWNhbFdpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWF4SW5saW5lU2l6ZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXhMb2dpY2Fs
V2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TWF4TG9naWNhbFdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRNYXhMb2dpY2FsV2lkdGgiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNaW5Mb2dp
Y2FsSGVpZ2h0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNaW5CbG9ja1Np
emUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdE1pbkxvZ2ljYWxIZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TWluTG9naWNhbEhlaWdodEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdE1p
bkxvZ2ljYWxIZWlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNaW5Mb2dpY2FsSGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWluQmxvY2tTaXpl
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1pbkxv
Z2ljYWxIZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0TWluTG9naWNhbEhlaWdodFNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWluTG9naWNhbEhlaWdo
dCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dE1pbkxvZ2ljYWxXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWlu
SW5saW5lU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TWluTG9naWNhbFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1pbkxvZ2ljYWxXaWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldl
YmtpdE1pbkxvZ2ljYWxXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdE1pbkxvZ2ljYWxXaWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1pbklubGlu
ZVNpemUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
TWluTG9naWNhbFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1pbkxvZ2ljYWxXaWR0aFNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWluTG9naWNhbFdp
ZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0TmJzcE1vZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE5i
c3BNb2RlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXROYnNwTW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXROYnNwTW9kZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdE5ic3BNb2RlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TmJzcE1v
ZGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXROYnNwTW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXROYnNwTW9kZVNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0
TmJzcE1vZGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRPcGFjaXR5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPcGFj
aXR5KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRPcGFjaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdE9wYWNpdHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRPcGFjaXR5Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0T3BhY2l0eVNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eU9wYWNpdHksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0T3BhY2l0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRPcGFjaXR5U2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRPcGFjaXR5Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0T3JkZXJHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU9yZGVyKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRPcmRlciwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRPcmRlckdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIldlYmtpdE9yZGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0T3JkZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPcmRlciwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRPcmRlciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRPcmRl
clNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
V2Via2l0T3JkZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRQYWRkaW5nQWZ0ZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVBhZGRpbmdCbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGFkZGluZ0FmdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBhZGRpbmdBZnRlckdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
IldlYmtpdFBhZGRpbmdBZnRlciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFBhZGRpbmdBZnRlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdCbG9j
a0VuZCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQ
YWRkaW5nQWZ0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0UGFkZGluZ0FmdGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRQYWRkaW5nQWZ0ZXIiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQYWRkaW5n
QmVmb3JlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nQmxvY2tT
dGFydCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0UGFkZGluZ0JlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRQYWRkaW5nQmVmb3JlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0UGFkZGlu
Z0JlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFBhZGRpbmdCZWZvcmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nQmxvY2tTdGFydCwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQYWRkaW5nQmVm
b3JlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdFBhZGRpbmdCZWZvcmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFBhZGRpbmdCZWZvcmUiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQYWRkaW5nRW5kR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5lRW5kKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQ
YWRkaW5nRW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dFBhZGRpbmdFbmRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRQYWRkaW5nRW5kIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGFkZGluZ0VuZFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVBhZGRpbmdJbmxpbmVFbmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGFkZGluZ0VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQYWRkaW5nRW5kU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJr
aXRQYWRkaW5nRW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0UGFkZGluZ1N0YXJ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlQYWRkaW5nSW5saW5lU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBhZGRpbmdTdGFydCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQYWRkaW5nU3RhcnRHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJXZWJraXRQYWRkaW5nU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQYWRkaW5nU3RhcnRTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5n
SW5saW5lU3RhcnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0UGFkZGluZ1N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBhZGRpbmdTdGFydFNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0UGFkZGluZ1N0YXJ0
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
UGVyc3BlY3RpdmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0
aXZlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRQZXJzcGVjdGl2ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRQZXJzcGVjdGl2ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdFBlcnNwZWN0aXZl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
UGVyc3BlY3RpdmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJz
cGVjdGl2ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiV2Via2l0UGVyc3BlY3RpdmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZU9yaWdpbkdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW4pKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBlcnNwZWN0aXZlT3Jp
Z2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBlcnNw
ZWN0aXZlT3JpZ2luR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0UGVyc3BlY3RpdmVPcmlnaW4iKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJz
cGVjdGl2ZU9yaWdpblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlT3JpZ2luLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBlcnNwZWN0aXZlT3JpZ2lu
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBlcnNwZWN0
aXZlT3JpZ2luWEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3Rp
dmVPcmlnaW5YKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiV2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5UGVyc3BlY3RpdmVPcmlnaW5YLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZU9y
aWdpblhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIldlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW5ZKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVj
dGl2ZU9yaWdpblksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0UGVyc3BlY3RpdmVPcmlnaW5ZR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0UGVyc3BlY3RpdmVP
cmlnaW5ZIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW5Z
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBlcnNw
ZWN0aXZlT3JpZ2luWSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZU9yaWdpbllTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFBlcnNwZWN0aXZl
T3JpZ2luWSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFByaW50Q29sb3JBZGp1c3RHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3QpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFByaW50Q29sb3JBZGp1c3QsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UHJpbnRDb2xvckFkanVzdEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIldlYmtpdFByaW50Q29sb3JBZGp1c3QiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQcmludENvbG9yQWRqdXN0U2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVzdCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQcmludENvbG9yQWRqdXN0LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBy
aW50Q29sb3JBZGp1c3RTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIldlYmtpdFByaW50Q29sb3JBZGp1c3QiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRSdGxPcmRlcmluZ0dldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmcpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFJ0bE9yZGVy
aW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFJ0bE9y
ZGVyaW5nR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0UnRsT3JkZXJpbmciKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRSdGxPcmRlcmluZ1NldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFJ0bE9yZGVyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFJ0bE9yZGVyaW5nU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJr
aXRSdGxPcmRlcmluZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdFJ1YnlQb3NpdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0UnVieVBvc2l0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRSdWJ5UG9zaXRpb24sIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UnVieVBvc2l0aW9uR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiV2Via2l0UnVieVBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UnVieVBvc2l0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0
UnVieVBvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFJ1YnlQb3NpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRSdWJ5UG9zaXRpb25TZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFJ1YnlQb3NpdGlv
biIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dFNoYXBlSW1hZ2VUaHJlc2hvbGRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVNoYXBlSW1hZ2VUaHJlc2hvbGQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0U2hhcGVJbWFnZVRocmVzaG9sZEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIldlYmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRTaGFwZUltYWdlVGhyZXNo
b2xkU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5U2hhcGVJbWFnZVRocmVzaG9sZCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRTaGFwZUltYWdlVGhyZXNob2xkLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRTaGFwZU1hcmdp
bkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVNYXJnaW4pKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFNo
YXBlTWFyZ2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dFNoYXBlTWFyZ2luR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0U2hhcGVNYXJnaW4iKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRTaGFwZU1hcmdp
blNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVNoYXBlTWFyZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFNoYXBlTWFyZ2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFNoYXBlTWFyZ2luU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJr
aXRTaGFwZU1hcmdpbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdFNoYXBlT3V0c2lkZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5U2hhcGVPdXRzaWRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRTaGFwZU91dHNpZGUsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0U2hhcGVPdXRzaWRlR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
V2Via2l0U2hhcGVPdXRzaWRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0U2hhcGVPdXRzaWRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVPdXRzaWRl
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFNoYXBl
T3V0c2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRTaGFwZU91dHNpZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFNoYXBlT3V0c2lkZSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRDb21iaW5l
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VGV4dENvbWJpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VGV4dENvbWJpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUZXh0Q29tYmluZSIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRD
b21iaW5lU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmUsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dENvbWJpbmUsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4
dENvbWJpbmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIldlYmtpdFRleHRDb21iaW5lIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25HZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlv
biwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVj
b3JhdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdFRleHREZWNvcmF0aW9uIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRp
b25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlvbiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRU
ZXh0RGVjb3JhdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiV2Via2l0VGV4dERlY29yYXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRU
ZXh0RGVjb3JhdGlvbkNvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uQ29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUZXh0
RGVjb3JhdGlvbkNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25Db2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHREZWNv
cmF0aW9uQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VGV4dERlY29yYXRpb25Db2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJr
aXRUZXh0RGVjb3JhdGlvbkNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25MaW5lR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkxpbmUpKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9u
TGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0
RGVjb3JhdGlvbkxpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUZXh0RGVjb3JhdGlvbkxpbmUi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRU
ZXh0RGVjb3JhdGlvbkxpbmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkxpbmUsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRp
b25MaW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uTGluZVNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0VGV4dERlY29yYXRpb25MaW5l
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
VGV4dERlY29yYXRpb25Ta2lwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlU
ZXh0RGVjb3JhdGlvblNraXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uU2tpcCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlvblNraXBHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJXZWJraXRUZXh0RGVjb3JhdGlvblNraXAiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlvblNraXBTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblNraXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25Ta2lwLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRE
ZWNvcmF0aW9uU2tpcFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiV2Via2l0VGV4dERlY29yYXRpb25Ta2lwIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25TdHlsZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25TdHlsZSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VGV4dERlY29yYXRpb25TdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlvblN0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0
VGV4dERlY29yYXRpb25TdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uU3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0
RGVjb3JhdGlvblN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25TdHls
ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
V2Via2l0VGV4dERlY29yYXRpb25TdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3RHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25zSW5F
ZmZlY3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3RTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFRleHREZWNvcmF0aW9u
c0luRWZmZWN0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0VGV4dEVtcGhhc2lzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRFbXBoYXNpcywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJXZWJraXRUZXh0RW1waGFzaXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VGV4dEVtcGhhc2lzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRFbXBoYXNpc1NldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0VGV4dEVtcGhhc2lzIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4
dEVtcGhhc2lzQ29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpc0NvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNDb2xvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNDb2xvckdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIldlYmtpdFRleHRFbXBoYXNpc0NvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dEVtcGhhc2lzQ29sb3JTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNDb2xvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0
RW1waGFzaXNDb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiV2Via2l0VGV4dEVtcGhhc2lzQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbkdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9z
aXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiV2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvblNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dFRleHRFbXBoYXNpc1Bvc2l0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbiIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRFbXBoYXNp
c1N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1w
aGFzaXNTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0VGV4dEVtcGhhc2lzU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dEVtcGhhc2lzU3R5bGVHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJXZWJraXRUZXh0RW1waGFzaXNTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRFbXBoYXNpc1N0eWxlU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0VGV4dEVtcGhhc2lzU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dEVtcGhhc2lz
U3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIldlYmtpdFRleHRFbXBoYXNpc1N0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dEZpbGxDb2xvckdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dEZpbGxDb2xv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0Rmls
bENvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0VGV4dEZpbGxDb2xvciIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRGaWxsQ29sb3JT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRGaWxsQ29sb3IsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dEZp
bGxDb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiV2Via2l0VGV4dEZpbGxDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRPcmllbnRhdGlvbkdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0T3JpZW50
YXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4
dE9yaWVudGF0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0VGV4dE9yaWVudGF0aW9uIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dE9y
aWVudGF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRPcmllbnRhdGlvbiwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRUZXh0T3JpZW50YXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFRleHRPcmllbnRhdGlvbiIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTZWN1cml0eUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5KSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRUZXh0U2VjdXJpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VGV4dFNlY3VyaXR5R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0VGV4dFNlY3VyaXR5Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4
dFNlY3VyaXR5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5LCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTZWN1cml0eSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRUZXh0U2VjdXJpdHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIldlYmtpdFRleHRTZWN1cml0eSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTaXplQWRqdXN0R2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFNp
emVBZGp1c3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
VGV4dFNpemVBZGp1c3RHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUZXh0U2l6ZUFkanVzdCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRT
aXplQWRqdXN0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3QsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFNpemVBZGp1c3QsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VGV4dFNpemVBZGp1c3RTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFRleHRTaXplQWRqdXN0Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0cm9rZUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0
cm9rZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0
U3Ryb2tlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0VGV4dFN0cm9rZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2VTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0cm9rZVNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0VGV4
dFN0cm9rZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFRleHRTdHJva2VDb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0U3Ryb2tlQ29sb3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0cm9rZUNvbG9yR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiV2Via2l0VGV4dFN0cm9rZUNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0cm9rZUNvbG9yU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2VDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0U3Ryb2tl
Q29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIldlYmtpdFRleHRTdHJva2VDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2VXaWR0aEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0U3Ryb2tl
V2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4
dFN0cm9rZVdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0VGV4dFN0cm9rZVdpZHRoIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0
cm9rZVdpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2VXaWR0aCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRUZXh0U3Ryb2tlV2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFRleHRTdHJva2VXaWR0aCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRVbmRlcmxpbmVQ
b3NpdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dFVuZGVybGlu
ZVBvc2l0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRUZXh0VW5kZXJsaW5lUG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiV2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9u
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVBvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRVbmRlcmxpbmVQb3NpdGlvbiwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRUZXh0VW5kZXJsaW5lUG9zaXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFRleHRVbmRlcmxpbmVQb3NpdGlvbiIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRa
b29tR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0Wm9vbSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VGV4dFpvb20sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VGV4dFpvb21HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUZXh0Wm9vbSIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRab29tU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0VGV4dFpvb20sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0VGV4dFpvb20sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFpvb21TZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFRleHRab29t
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
VHJhbnNmb3JtR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm0p
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdFRyYW5zZm9ybSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRUcmFuc2Zvcm1HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUcmFuc2Zvcm0iKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1T
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm0sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0VHJhbnNmb3JtLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0VHJhbnNm
b3JtIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VHJhbnNmb3JtT3JpZ2luR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlU
cmFuc2Zvcm1PcmlnaW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1PcmlnaW5HZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJXZWJraXRUcmFuc2Zvcm1PcmlnaW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1PcmlnaW5TZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFu
c2Zvcm1PcmlnaW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VHJhbnNmb3JtT3JpZ2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0VHJhbnNm
b3JtT3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0VHJhbnNmb3JtT3JpZ2luWEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5VHJhbnNmb3JtT3JpZ2luWCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNmb3JtT3JpZ2luWCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1PcmlnaW5YR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiV2Via2l0VHJhbnNmb3JtT3JpZ2luWCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblhTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5YLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblgsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNmb3JtT3Jp
Z2luWFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiV2Via2l0VHJhbnNmb3JtT3JpZ2luWCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpbllHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblkpKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdp
blksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNm
b3JtT3JpZ2luWUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdFRyYW5zZm9ybU9yaWdpblkiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zv
cm1PcmlnaW5ZU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luWSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdFRyYW5zZm9ybU9yaWdpbllTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFRyYW5zZm9ybU9yaWdpblkiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1PcmlnaW5a
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5aKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRUcmFuc2Zvcm1PcmlnaW5aLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblpHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUcmFuc2Zv
cm1PcmlnaW5aIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0VHJhbnNmb3JtT3JpZ2luWlNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblos
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNm
b3JtT3JpZ2luWiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1PcmlnaW5aU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRUcmFuc2Zvcm1PcmlnaW5a
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
VHJhbnNmb3JtU3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybVN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1TdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1TdHlsZUdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
IldlYmtpdFRyYW5zZm9ybVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNmb3JtU3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1TdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRUcmFuc2Zvcm1TdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1TdHlsZVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0VHJhbnNm
b3JtU3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRUcmFuc2l0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlU
cmFuc2l0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRUcmFuc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUcmFuc2l0
aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VHJhbnNpdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zaXRpb24sIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFu
c2l0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJXZWJraXRUcmFuc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvbkRlbGF5R2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uRGVsYXkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25EZWxheSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2l0aW9uRGVs
YXlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUcmFuc2l0aW9uRGVsYXkiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2l0aW9uRGVsYXlT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uRGVsYXksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvbkRlbGF5LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRp
b25EZWxheVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiV2Via2l0VHJhbnNpdGlvbkRlbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb24pKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRp
b25EdXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRUcmFuc2l0aW9uRHVyYXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUcmFuc2l0aW9uRHVy
YXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRUcmFuc2l0aW9uRHVyYXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb24s
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNp
dGlvbkR1cmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25EdXJhdGlvblNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0VHJhbnNpdGlvbkR1
cmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VHJhbnNpdGlvblByb3BlcnR5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlUcmFuc2l0aW9uUHJvcGVydHkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2l0aW9uUHJvcGVydHlH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUcmFuc2l0aW9uUHJvcGVydHkiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2l0aW9uUHJvcGVy
dHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uUHJvcGVydHksIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dFRyYW5zaXRpb25Qcm9wZXJ0eVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0VHJhbnNpdGlvblByb3BlcnR5Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9u
VGltaW5nRnVuY3Rpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rp
b25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24iKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2l0
aW9uVGltaW5nRnVuY3Rpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24s
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNp
dGlvblRpbWluZ0Z1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvblNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0
VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNlckRyYWdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRVc2VyRHJhZywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRVc2VyRHJhZ0dldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
IldlYmtpdFVzZXJEcmFnIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0VXNlckRyYWdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRVc2VyRHJhZywg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRVc2VyRHJhZ1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiV2Via2l0VXNlckRyYWciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRVc2VyTW9kaWZ5R2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5KSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRVc2VyTW9kaWZ5LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFVzZXJNb2RpZnlHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJXZWJraXRVc2VyTW9kaWZ5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNlck1vZGlmeVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdFVzZXJNb2RpZnksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0VXNlck1vZGlmeSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRVc2VyTW9kaWZ5U2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRVc2VyTW9kaWZ5Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNl
clNlbGVjdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VXNlclNl
bGVjdCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0VXNlclNlbGVjdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRVc2VyU2VsZWN0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0VXNlclNlbGVjdCIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFVz
ZXJTZWxlY3RTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFVzZXJTZWxlY3QsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNl
clNlbGVjdFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiV2Via2l0VXNlclNlbGVjdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFdyaXRpbmdNb2RlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXcml0aW5nTW9kZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0V3JpdGluZ01vZGUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0V3JpdGluZ01vZGVHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJXZWJraXRXcml0aW5nTW9kZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFdyaXRpbmdNb2RlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V3JpdGluZ01v
ZGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0V3Jp
dGluZ01vZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0V3JpdGluZ01vZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFdyaXRpbmdNb2RlIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25Db250ZW50R2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkNvbnRlbnQpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWduQ29udGVudCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbkNvbnRlbnRHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJhbGlnbkNvbnRlbnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbkNvbnRlbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkNvbnRl
bnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25Db250
ZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2FsaWduQ29udGVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiYWxpZ25Db250ZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25JdGVtc0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5QWxpZ25JdGVtcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25JdGVtcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbkl0ZW1zR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYWxpZ25JdGVt
cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWdu
SXRlbXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkl0ZW1zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2FsaWduSXRlbXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25JdGVtc1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYWxpZ25JdGVtcyIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWduU2VsZkdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWxpZ25TZWxmKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnblNlbGYsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25TZWxmR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiYWxpZ25TZWxmIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYWxpZ25TZWxmU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWxpZ25TZWxmLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWduU2VsZiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnblNlbGZT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImFs
aWduU2VsZiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X2FsaWdubWVudEJhc2VsaW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlB
bGlnbm1lbnRCYXNlbGluZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYWxpZ25tZW50QmFzZWxpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYWxpZ25tZW50QmFzZWxpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbGln
bm1lbnRCYXNlbGluZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2FsaWdubWVudEJhc2VsaW5lU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWxpZ25tZW50QmFzZWxpbmUs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25tZW50QmFz
ZWxpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYWxpZ25tZW50QmFzZWxpbmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImFsaWdubWVudEJhc2VsaW5lIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxsR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlBbGwpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2FsbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9hbGxHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbGwiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGxTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGwsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxsLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsbFNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYWxsIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWx0R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbHQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FsdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9hbHRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbHQiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbHRTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlB
bHQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWx0LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Fs
dFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
YWx0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5p
bWF0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb24pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1h
dGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25H
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJhbmltYXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb24sIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Fu
aW1hdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiYW5pbWF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYW5pbWF0aW9uRGVsYXlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUFuaW1hdGlvbkRlbGF5KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25EZWxheSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25EZWxheUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImFuaW1hdGlv
bkRlbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
YW5pbWF0aW9uRGVsYXlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25EZWxheSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25EZWxheSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRp
b25EZWxheVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiYW5pbWF0aW9uRGVsYXkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9hbmltYXRpb25EaXJlY3Rpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUFuaW1hdGlvbkRpcmVjdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uRGlyZWN0aW9uLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkRpcmVjdGlvbkdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgImFuaW1hdGlvbkRpcmVjdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkRpcmVjdGlvblNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUFuaW1hdGlvbkRpcmVjdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9hbmltYXRpb25EaXJlY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uRGlyZWN0aW9uU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhbmltYXRpb25E
aXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9hbmltYXRpb25EdXJhdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
QW5pbWF0aW9uRHVyYXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkR1cmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkR1cmF0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYW5p
bWF0aW9uRHVyYXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9hbmltYXRpb25EdXJhdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkR1cmF0aW9u
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkR1
cmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2FuaW1hdGlvbkR1cmF0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhbmltYXRpb25EdXJhdGlvbiIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkZpbGxNb2RlR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25GaWxsTW9kZSkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0
aW9uRmlsbE1vZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5p
bWF0aW9uRmlsbE1vZGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbmltYXRpb25GaWxsTW9kZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkZpbGxN
b2RlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uRmlsbE1vZGUsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uRmlsbE1vZGUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uRmls
bE1vZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgImFuaW1hdGlvbkZpbGxNb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uSXRlcmF0aW9uQ291bnRHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25JdGVyYXRp
b25Db3VudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRp
b25JdGVyYXRpb25Db3VudEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0
aW9uSXRlcmF0aW9uQ291bnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25JdGVyYXRpb25Db3VudCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25JdGVy
YXRpb25Db3VudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9hbmltYXRpb25JdGVyYXRpb25Db3VudFNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYW5pbWF0aW9uSXRlcmF0aW9uQ291
bnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmlt
YXRpb25OYW1lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25O
YW1lKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9hbmltYXRpb25OYW1lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X2FuaW1hdGlvbk5hbWVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbmltYXRpb25OYW1lIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uTmFtZVNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUFuaW1hdGlvbk5hbWUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYW5pbWF0aW9uTmFtZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25OYW1lU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhbmltYXRpb25OYW1lIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9u
UGxheVN0YXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25Q
bGF5U3RhdGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2FuaW1hdGlvblBsYXlTdGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9hbmltYXRpb25QbGF5U3RhdGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbmltYXRpb25Q
bGF5U3RhdGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9hbmltYXRpb25QbGF5U3RhdGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25QbGF5U3RhdGUsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uUGxheVN0
YXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2FuaW1hdGlvblBsYXlTdGF0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYW5pbWF0aW9uUGxheVN0YXRlIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uVGltaW5nRnVuY3Rp
b25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1
bmN0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9hbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9hbmltYXRpb25UaW1pbmdGdW5jdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uVGltaW5nRnVuY3Rpb25TZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9hbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25UaW1pbmdGdW5jdGlv
blNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
YW5pbWF0aW9uVGltaW5nRnVuY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9hc3BlY3RSYXRpb0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5QXNwZWN0UmF0aW8pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2FzcGVjdFJhdGlvLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2FzcGVjdFJhdGlvR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYXNwZWN0UmF0aW8i
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hc3BlY3RS
YXRpb1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUFzcGVjdFJhdGlvLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2FzcGVjdFJhdGlvLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FzcGVjdFJhdGlvU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhc3BlY3RSYXRpbyIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91
bmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmQpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91
bmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgImJhY2tncm91bmQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JhY2tncm91bmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgImJhY2tncm91bmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQXR0YWNobWVudEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRBdHRhY2htZW50LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRBdHRhY2ht
ZW50R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiYmFja2dyb3VuZEF0dGFjaG1lbnQiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQXR0YWNobWVudFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRBdHRhY2htZW50LCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRB
dHRhY2htZW50U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJiYWNrZ3JvdW5kQXR0YWNobWVudCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRCbGVuZE1vZGVHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmRCbGVuZE1vZGUpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRCbGVuZE1v
ZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZEJs
ZW5kTW9kZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJhY2tncm91bmRCbGVuZE1vZGUiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQmxlbmRNb2Rl
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZEJsZW5kTW9kZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQmxlbmRNb2RlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRC
bGVuZE1vZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImJhY2tncm91bmRCbGVuZE1vZGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQ2xpcEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRDbGlwLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRDbGlwR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiYmFja2dyb3VuZENsaXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQ2xpcFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRDbGlw
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JhY2tncm91bmRDbGlwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJiYWNrZ3JvdW5kQ2xpcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRDb2xvckdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQ29sb3IsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZENvbG9yR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiYmFja2dyb3VuZENvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZENvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
Y2tncm91bmRDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQ29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJhY2tncm91bmRDb2xvciIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRJbWFnZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3Jv
dW5kSW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dy
b3VuZEltYWdlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYmFja2dyb3VuZEltYWdlIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZEltYWdlU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JhY2tncm91bmRJbWFnZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kSW1hZ2VTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJhY2tncm91bmRJ
bWFnZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
Y2tncm91bmRPcmlnaW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tn
cm91bmRPcmlnaW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JhY2tncm91bmRPcmlnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYmFja2dyb3VuZE9yaWdpbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJhY2tncm91bmRP
cmlnaW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
YWNrZ3JvdW5kT3JpZ2luU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kT3JpZ2luLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
Y2tncm91bmRPcmlnaW5TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImJhY2tncm91bmRPcmlnaW4iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUG9zaXRpb25HZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFBvc2l0aW9u
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRQb3Np
dGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgImJhY2tncm91bmRQb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRQb3NpdGlvblNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFBvc2l0aW9u
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJi
YWNrZ3JvdW5kUG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUG9zaXRpb25YR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUG9zaXRpb25YLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRQb3NpdGlvblhHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJiYWNrZ3JvdW5kUG9zaXRpb25YIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFBvc2l0aW9uWFNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYmFja2dyb3VuZFBvc2l0aW9uWCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUG9zaXRpb25YU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJiYWNr
Z3JvdW5kUG9zaXRpb25YIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYmFja2dyb3VuZFBvc2l0aW9uWUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFBvc2l0aW9uWSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUG9zaXRpb25ZR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiYmFja2dyb3VuZFBvc2l0aW9uWSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRQb3NpdGlvbllTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JhY2tncm91bmRQb3NpdGlvblksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFBvc2l0aW9uWVNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYmFja2dy
b3VuZFBvc2l0aW9uWSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX2JhY2tncm91bmRSZXBlYXRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRSZXBlYXQsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFJlcGVhdEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJh
Y2tncm91bmRSZXBlYXQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9iYWNrZ3JvdW5kUmVwZWF0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUmVw
ZWF0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JhY2tncm91bmRSZXBlYXRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImJhY2tncm91bmRSZXBlYXQiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kU2l6ZUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRTaXplLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRTaXplR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiYmFja2dyb3VuZFNpemUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kU2l6ZVNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tn
cm91bmRTaXplLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
Y2tncm91bmRTaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRTaXplU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJiYWNrZ3JvdW5kU2l6ZSIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Jhc2VsaW5lU2hpZnRHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhc2VsaW5lU2hpZnQpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Jhc2VsaW5lU2hpZnQs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFzZWxpbmVTaGlmdEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgImJhc2VsaW5lU2hpZnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYXNlbGluZVNoaWZ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFzZWxp
bmVTaGlmdCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYXNl
bGluZVNoaWZ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Jhc2VsaW5lU2hpZnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJhc2VsaW5lU2hpZnQiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ibG9ja1NpemVHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJsb2NrU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmxvY2tTaXplLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Jsb2NrU2l6ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJsb2Nr
U2l6ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Js
b2NrU2l6ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJsb2NrU2l6ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ibG9ja1NpemUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmxvY2tTaXplU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJibG9ja1NpemUiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcikpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRl
ciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
clNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUJvcmRlciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja0dldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2spKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9y
ZGVyQmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJCbG9ja1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3Jk
ZXJCbG9jayIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlckJsb2NrQ29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
cmRlckJsb2NrQ29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckJs
b2NrQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJCbG9ja0NvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tDb2xvciwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja0NvbG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlckJsb2NrQ29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImJvcmRlckJsb2NrQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja0VuZEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tFbmQpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5kLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5kR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiYm9yZGVyQmxvY2tFbmQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja0VuZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2Nr
RW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJs
b2NrRW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlckJsb2NrRW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJCbG9ja0VuZCIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5kQ29sb3JHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrRW5kQ29sb3IpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJs
b2NrRW5kQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyQmxvY2tFbmRDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckJsb2NrRW5kQ29sb3IiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9j
a0VuZENvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tFbmRDb2xvciwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja0VuZENvbG9yLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckJsb2NrRW5kQ29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImJvcmRlckJsb2NrRW5kQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja0VuZFN0eWxlR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZFN0eWxlKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9j
a0VuZFN0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
ckJsb2NrRW5kU3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXJCbG9ja0VuZFN0eWxlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tF
bmRTdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrRW5kU3R5bGUsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tFbmRTdHlsZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJCbG9ja0VuZFN0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJib3JkZXJCbG9ja0VuZFN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tFbmRXaWR0aEdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tFbmRXaWR0aCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tF
bmRXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJC
bG9ja0VuZFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyQmxvY2tFbmRXaWR0aCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5k
V2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5kV2lkdGgsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
QmxvY2tFbmRXaWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiYm9yZGVyQmxvY2tFbmRXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnQsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdGFydEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgImJvcmRlckJsb2NrU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja1N0YXJ0U2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVyQmxvY2tTdGFydCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJCbG9ja1N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlckJsb2NrU3RhcnQi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJC
bG9ja1N0YXJ0Q29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRl
ckJsb2NrU3RhcnRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdGFydENvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRDb2xvckdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgImJvcmRlckJsb2NrU3RhcnRDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRDb2xvclNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
cmRlckJsb2NrU3RhcnRDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJCbG9ja1N0YXJ0Q29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdGFydENvbG9yU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3Jk
ZXJCbG9ja1N0YXJ0Q29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJCbG9ja1N0YXJ0U3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnRTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdGFydFN0eWxlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRT
dHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckJsb2NrU3RhcnRTdHlsZSIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRTdHls
ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnRTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja1N0YXJ0U3R5bGUsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
QmxvY2tTdGFydFN0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJib3JkZXJCbG9ja1N0YXJ0U3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja1N0YXJ0V2lkdGhHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnRXaWR0aCkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
QmxvY2tTdGFydFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlckJsb2NrU3RhcnRXaWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckJsb2NrU3RhcnRX
aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckJsb2NrU3RhcnRXaWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnRXaWR0aCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja1N0
YXJ0V2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdGFydFdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJCbG9ja1N0YXJ0V2lkdGgiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9j
a1N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0
eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJCbG9ja1N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlckJsb2NrU3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXJCbG9ja1N0eWxlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxv
Y2tTdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3R5bGUsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdHlsZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9j
a1N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJib3JkZXJCbG9ja1N0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tXaWR0aCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja1dpZHRoR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiYm9yZGVyQmxvY2tXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrV2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9j
a1dpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
ckJsb2NrV2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tXaWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyQmxvY2tXaWR0aCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b20s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiYm9yZGVyQm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJv
dHRvbSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJCb3R0b21TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlckJvdHRvbSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbUNvbG9yR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tQ29sb3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tQ29s
b3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXJCb3R0b21Db2xvciIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbUNvbG9yU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyQm90dG9tQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tQ29sb3JTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlckJv
dHRvbUNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyQm90dG9tTGVmdFJhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tTGVmdFJhZGl1cywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21MZWZ0UmFkaXVz
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyQm90dG9tTGVmdFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbUxlZnRSYWRpdXNT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbUxlZnRSYWRpdXMsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
Qm90dG9tTGVmdFJhZGl1c1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiYm9yZGVyQm90dG9tTGVmdFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbVJpZ2h0UmFkaXVzR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1
cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyQm90dG9tUmlnaHRSYWRpdXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXJC
b3R0b21SaWdodFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlckJvdHRvbVJpZ2h0UmFkaXVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tUmlnaHRSYWRpdXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tUmlnaHRSYWRpdXNTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyQm90dG9tU3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21TdHlsZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21TdHlsZUdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgImJvcmRlckJvdHRvbVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tU3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21TdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJCb3R0b21TdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21TdHlsZVNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyQm90dG9tU3R5bGUiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0
b21XaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
V2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlckJvdHRvbVdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlckJvdHRvbVdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyQm90dG9tV2lk
dGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJCb3R0b21XaWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbVdpZHRoLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckJvdHRvbVdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJib3JkZXJCb3R0b21XaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckNvbGxhcHNlR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQ29sbGFwc2UsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQ29sbGFwc2VHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJib3JkZXJDb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlckNvbGxhcHNlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFw
c2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQ29s
bGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyQ29sbGFwc2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlckNvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQ29sb3JHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJDb2xvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJDb2xvckdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImJvcmRlckNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyQ29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJDb2xvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJDb2xv
clNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
Ym9yZGVyQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJFbmRFbmRSYWRpdXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJvcmRlckVuZEVuZFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyRW5kRW5kUmFkaXVzLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckVuZEVuZFJhZGl1c0dldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgImJvcmRlckVuZEVuZFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlckVuZEVuZFJhZGl1c1NldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckVu
ZEVuZFJhZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJFbmRFbmRSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyRW5kRW5kUmFkaXVzU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJFbmRFbmRSYWRpdXMi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJF
bmRTdGFydFJhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVy
RW5kU3RhcnRSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlckVuZFN0YXJ0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckVuZFN0YXJ0UmFkaXVzR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
Ym9yZGVyRW5kU3RhcnRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJFbmRTdGFydFJhZGl1c1NldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckVu
ZFN0YXJ0UmFkaXVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlckVuZFN0YXJ0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckVuZFN0YXJ0UmFkaXVzU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJFbmRTdGFy
dFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlckltYWdlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJ
bWFnZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVySW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVySW1hZ2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXJJbWFnZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Qm9yZGVySW1hZ2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVySW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW1hZ2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlckltYWdlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW1hZ2VPdXRzZXRHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckltYWdlT3V0c2V0KSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFn
ZU91dHNldCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJ
bWFnZU91dHNldEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckltYWdlT3V0c2V0Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW1hZ2VPdXRzZXRT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZU91dHNldCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZU91dHNl
dFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
Ym9yZGVySW1hZ2VPdXRzZXQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVJlcGVhdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Qm9yZGVySW1hZ2VSZXBlYXQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdlUmVwZWF0LCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdlUmVwZWF0R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiYm9yZGVySW1hZ2VSZXBlYXQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVJlcGVhdFNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklt
YWdlUmVwZWF0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckltYWdlUmVwZWF0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdlUmVwZWF0U2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJJbWFnZVJlcGVhdCIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdl
U2xpY2VHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckltYWdlU2xp
Y2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlckltYWdlU2xpY2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVySW1hZ2VTbGljZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckltYWdlU2xpY2UiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFn
ZVNsaWNlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTbGljZSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVNsaWNlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdl
U2xpY2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgImJvcmRlckltYWdlU2xpY2UiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVNvdXJjZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdlU291cmNlLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdlU291cmNlR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiYm9yZGVySW1hZ2VTb3VyY2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVNvdXJjZVNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRl
ckltYWdlU291cmNlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlckltYWdlU291cmNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdlU291cmNlU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJJbWFnZVNvdXJjZSIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklt
YWdlV2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckltYWdl
V2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlckltYWdlV2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVySW1hZ2VXaWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckltYWdlV2lkdGgi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJ
bWFnZVdpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VXaWR0aCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVdpZHRoLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklt
YWdlV2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImJvcmRlckltYWdlV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUJvcmRlcklubGluZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlcklu
bGluZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcklubGluZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3Jk
ZXJJbmxpbmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJJbmxpbmVDb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVySW5saW5lQ29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUNvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUNvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9y
ZGVySW5saW5lQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJJbmxpbmVDb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZUNvbG9y
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGlu
ZUNvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcklubGluZUNvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJJbmxpbmVDb2xvciIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUVuZEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxp
bmVFbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5s
aW5lRW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVySW5saW5lRW5kIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lRW5kU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVySW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcklubGluZUVuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlcklubGluZUVu
ZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cklubGluZUVuZENvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3Jk
ZXJJbmxpbmVFbmRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lRW5kQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lRW5kQ29sb3JHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJib3JkZXJJbmxpbmVFbmRDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUVuZENvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVy
SW5saW5lRW5kQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVySW5saW5lRW5kQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lRW5kQ29sb3JTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlcklubGlu
ZUVuZENvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVySW5saW5lRW5kU3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJvcmRlcklubGluZUVuZFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRTdHlsZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRTdHlsZUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgImJvcmRlcklubGluZUVuZFN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lRW5kU3R5bGVTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlCb3JkZXJJbmxpbmVFbmRTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRTdHlsZVNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9y
ZGVySW5saW5lRW5kU3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUVuZFdpZHRoLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUVuZFdpZHRo
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVySW5saW5lRW5kV2lkdGgiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRXaWR0aFNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUJvcmRlcklubGluZUVuZFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUVuZFdpZHRoLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUVu
ZFdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJib3JkZXJJbmxpbmVFbmRXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVTdGFydCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnRHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJib3JkZXJJbmxpbmVTdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0U2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVySW5saW5lU3RhcnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVySW5saW5lU3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnRTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlcklubGluZVN0
YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVySW5saW5lU3RhcnRDb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVySW5saW5lU3RhcnRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnRDb2xvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdGFydENvbG9yR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiYm9yZGVySW5saW5lU3RhcnRDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0Q29sb3JTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlCb3JkZXJJbmxpbmVTdGFydENvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0Q29sb3IsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5l
U3RhcnRDb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiYm9yZGVySW5saW5lU3RhcnRDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0U3R5bGVHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0YXJ0U3R5bGUpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklu
bGluZVN0YXJ0U3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVySW5saW5lU3RhcnRTdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlcklubGluZVN0YXJ0
U3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJJbmxpbmVTdGFydFN0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3RhcnRTdHls
ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxp
bmVTdGFydFN0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0U3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlcklubGluZVN0YXJ0U3R5
bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJJbmxpbmVTdGFydFdpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlC
b3JkZXJJbmxpbmVTdGFydFdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdGFydFdpZHRoLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0V2lkdGhHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJib3JkZXJJbmxpbmVTdGFydFdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnRXaWR0aFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUJvcmRlcklubGluZVN0YXJ0V2lkdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnRXaWR0aCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVT
dGFydFdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJib3JkZXJJbmxpbmVTdGFydFdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3R5bGVHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0eWxlKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdHlsZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdHls
ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlcklubGluZVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3R5bGVTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlCb3JkZXJJbmxpbmVTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdHlsZVNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVySW5s
aW5lU3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJJbmxpbmVXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVySW5saW5lV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9y
ZGVySW5saW5lV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJJbmxpbmVXaWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVdpZHRo
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGlu
ZVdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcklubGluZVdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJJbmxpbmVXaWR0aCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnRHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckxlZnQpKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyTGVmdEdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgImJvcmRlckxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJMZWZ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyTGVmdCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJMZWZ0LCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnRT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJv
cmRlckxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJMZWZ0Q29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
cmRlckxlZnRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyTGVmdENvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlckxlZnRDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckxlZnRD
b2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckxlZnRDb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJMZWZ0Q29sb3IsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
TGVmdENvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJib3JkZXJMZWZ0Q29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJMZWZ0U3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyTGVmdFN0eWxlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnRTdHlsZUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgImJvcmRlckxlZnRTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlckxlZnRTdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHls
ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJMZWZ0
U3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyTGVmdFN0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJMZWZ0U3R5bGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJMZWZ0V2lkdGhHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyTGVmdFdpZHRo
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnRXaWR0
aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckxlZnRXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnRXaWR0aFNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUJvcmRlckxlZnRXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJMZWZ0V2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyTGVmdFdpZHRoU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJMZWZ0V2lkdGgiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSYWRp
dXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cykpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJh
ZGl1c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlclJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJhZGl1c1NldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
cmRlclJhZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyUmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJSYWRpdXMiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodEdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0R2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiYm9yZGVyUmlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJSaWdodFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0LCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJp
Z2h0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJib3JkZXJSaWdodCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlclJpZ2h0Q29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0Q29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0Q29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyUmlnaHRDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJv
cmRlclJpZ2h0Q29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJSaWdodENvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodENv
bG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlclJpZ2h0Q29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlclJpZ2h0Q29sb3IiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodFN0eWxlR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodFN0
eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0
U3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXJSaWdodFN0eWxlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyUmlnaHRTdHlsZVNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyUmlnaHRTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodFN0eWxlU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJSaWdo
dFN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyUmlnaHRXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHRXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyUmlnaHRXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyUmln
aHRXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlclJpZ2h0V2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0V2lkdGgsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyUmlnaHRXaWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiYm9yZGVyUmlnaHRXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclNwYWNpbmdHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclNwYWNpbmcsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyU3BhY2luZ0dldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgImJvcmRlclNwYWNpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJTcGFjaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZywgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJTcGFjaW5nLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlclNwYWNpbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImJvcmRlclNwYWNpbmciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJTdGFydEVuZFJhZGl1c0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyU3RhcnRFbmRSYWRpdXMpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclN0YXJ0RW5kUmFk
aXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclN0YXJ0
RW5kUmFkaXVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyU3RhcnRFbmRSYWRpdXMiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJTdGFydEVuZFJh
ZGl1c1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclN0YXJ0RW5kUmFkaXVzLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclN0YXJ0RW5kUmFkaXVzLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
clN0YXJ0RW5kUmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJib3JkZXJTdGFydEVuZFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclN0YXJ0U3RhcnRSYWRpdXNHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclN0YXJ0U3RhcnRSYWRpdXMpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
clN0YXJ0U3RhcnRSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyU3RhcnRTdGFydFJhZGl1c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlclN0YXJ0U3Rh
cnRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJTdGFydFN0YXJ0UmFkaXVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyU3RhcnRTdGFydFJh
ZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJT
dGFydFN0YXJ0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclN0YXJ0U3RhcnRSYWRpdXNTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlclN0YXJ0U3RhcnRS
YWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJTdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyU3R5
bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlclN0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlclN0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyU3R5bGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJTdHlsZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUJvcmRlclN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlclN0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlclN0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyVG9wKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3AsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVy
VG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyVG9wU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3BTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlclRvcCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcENvbG9y
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcikpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
VG9wQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
VG9wQ29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXJUb3BDb2xvciIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcENvbG9yU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVyVG9wQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyVG9wQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wQ29sb3JTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlclRvcENvbG9yIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9w
TGVmdFJhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyVG9w
TGVmdFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyVG9wTGVmdFJhZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3BMZWZ0UmFkaXVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVy
VG9wTGVmdFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlclRvcExlZnRSYWRpdXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFk
aXVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRv
cExlZnRSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wTGVmdFJhZGl1c1NldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyVG9wTGVmdFJhZGl1cyIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcFJp
Z2h0UmFkaXVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJUb3BS
aWdodFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyVG9wUmlnaHRSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wUmlnaHRSYWRpdXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3Jk
ZXJUb3BSaWdodFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlclRvcFJpZ2h0UmFkaXVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyVG9wUmln
aHRSYWRpdXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyVG9wUmlnaHRSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wUmlnaHRSYWRpdXNTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlclRvcFJpZ2h0UmFk
aXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyVG9wU3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJUb3BTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJUb3BTdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlclRvcFN0eWxlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wU3R5
bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3BTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3BTdHlsZVNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVy
VG9wU3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJUb3BXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVyVG9wV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlclRvcFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlclRvcFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyVG9wV2lkdGgi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJU
b3BXaWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcFdpZHRoLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcFdpZHRo
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJi
b3JkZXJUb3BXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlcldpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlC
b3JkZXJXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyV2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyV2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXJXaWR0aCIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcldpZHRoU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Qm9yZGVyV2lkdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyV2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyV2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlcldpZHRoIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm90dG9tR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3R0b20pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvdHRvbSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3R0b21HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3R0b20iKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3R0b21TZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlCb3R0b20sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvdHRvbVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm94U2hhZG93R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlCb3hTaGFkb3cpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2JveFNoYWRvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3hTaGFkb3dHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3hTaGFkb3ciKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3hTaGFkb3dTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlCb3hTaGFkb3csIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm94U2hhZG93LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JveFNoYWRvd1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm94U2hhZG93Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm94U2l6aW5nR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3hTaXppbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JveFNpemluZywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3hTaXppbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3hT
aXppbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3hTaXppbmdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3hTaXppbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm94U2l6aW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JveFNpemluZ1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm94U2l6aW5nIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtBZnRlckdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QnJlYWtBZnRlcikpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtBZnRlciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha0FmdGVyR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiYnJlYWtBZnRlciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JyZWFrQWZ0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCcmVha0FmdGVyLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JyZWFrQWZ0ZXIsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJl
YWtBZnRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiYnJlYWtBZnRlciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JyZWFrQmVmb3JlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlCcmVha0JlZm9yZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYnJlYWtCZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYnJlYWtCZWZvcmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJicmVha0JlZm9yZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JyZWFrQmVmb3JlU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5QnJlYWtCZWZvcmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYnJlYWtCZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtCZWZvcmVTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJyZWFrQmVmb3JlIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtJbnNpZGVHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJyZWFrSW5zaWRlKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha0luc2lkZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha0luc2lkZUdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgImJyZWFrSW5zaWRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYnJlYWtJbnNpZGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCcmVha0luc2lkZSwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha0luc2lkZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9icmVha0luc2lkZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiYnJlYWtJbnNpZGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9idWZmZXJlZFJlbmRlcmluZ0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5QnVmZmVyZWRSZW5kZXJpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2J1ZmZlcmVkUmVuZGVyaW5nLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2J1ZmZlcmVkUmVuZGVyaW5nR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiYnVmZmVyZWRSZW5kZXJpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9idWZmZXJlZFJlbmRlcmluZ1NldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJ1
ZmZlcmVkUmVuZGVyaW5nLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2J1ZmZlcmVkUmVuZGVyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2J1ZmZlcmVkUmVuZGVyaW5nU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJidWZmZXJlZFJlbmRlcmlu
ZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NhcHRp
b25TaWRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDYXB0aW9uU2lkZSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2Fw
dGlvblNpZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2FwdGlv
blNpZGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjYXB0aW9uU2lkZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NhcHRpb25TaWRlU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q2Fw
dGlvblNpZGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY2Fw
dGlvblNpZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fY2FwdGlvblNpZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImNhcHRpb25TaWRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2FyZXRDb2xvckdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Q2FyZXRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2FyZXRDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXJldENvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY2FyZXRD
b2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Nh
cmV0Q29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDYXJldENvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NhcmV0Q29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY2FyZXRDb2xvclNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY2FyZXRDb2xvciIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NsZWFyR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDbGVhcikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xlYXIsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xlYXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjbGVh
ciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NsZWFy
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Q2xlYXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fY2xlYXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fY2xlYXJTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImNsZWFyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Q2xpcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fY2xpcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
bGlwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiY2xpcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2NsaXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDbGlwLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXAsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY2xpcCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBQYXRoR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDbGlwUGF0aCkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcFBhdGgsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcFBhdGhHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJj
bGlwUGF0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2NsaXBQYXRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q2xpcFBhdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcFBhdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcFBhdGhTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNsaXBQYXRoIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcFJ1bGVHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNsaXBSdWxlKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlwUnVsZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlwUnVsZUdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImNsaXBSdWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fY2xpcFJ1bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDbGlwUnVsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlwUnVsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlwUnVsZVNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY2xpcFJ1bGUiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvckdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY29sb3IiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvclNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUNvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJjb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2NvbG9ySW50ZXJwb2xhdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvckludGVycG9sYXRpb24sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JJbnRlcnBvbGF0aW9uR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiY29sb3JJbnRlcnBvbGF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JJbnRlcnBvbGF0aW9uU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Q29sb3JJbnRlcnBvbGF0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2NvbG9ySW50ZXJwb2xhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvckludGVycG9sYXRpb25TZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbG9ySW50
ZXJwb2xhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRl
cnMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JJbnRlcnBv
bGF0aW9uRmlsdGVyc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcklu
dGVycG9sYXRpb25GaWx0ZXJzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uRmlsdGVy
cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvckludGVy
cG9sYXRpb25GaWx0ZXJzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnNTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbG9ySW50ZXJwb2xh
dGlvbkZpbHRlcnMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9jb2xvclByb2ZpbGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNv
bG9yUHJvZmlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fY29sb3JQcm9maWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvbG9yUHJvZmlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNvbG9yUHJvZmlsZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yUHJvZmlsZVNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUNvbG9yUHJvZmlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jb2xvclByb2ZpbGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JQcm9maWxlU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb2xvclByb2ZpbGUiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvclJlbmRl
cmluZ0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sb3JSZW5kZXJpbmcp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Nv
bG9yUmVuZGVyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Nv
bG9yUmVuZGVyaW5nR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY29sb3JSZW5kZXJpbmciKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvclJlbmRlcmluZ1NldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUNvbG9yUmVuZGVyaW5nLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvbG9yUmVuZGVyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yUmVuZGVyaW5nU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb2xvclJlbmRlcmlu
ZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9y
U2NoZW1lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2xvclNjaGVtZSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29s
b3JTY2hlbWUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JT
Y2hlbWVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjb2xvclNjaGVtZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yU2NoZW1lU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29s
b3JTY2hlbWUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29s
b3JTY2hlbWUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fY29sb3JTY2hlbWVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbG9yU2NoZW1lIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uQ291bnRHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbkNvdW50KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5Db3VudCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5Db3VudEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNv
bHVtbkNvdW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fY29sdW1uQ291bnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5Db3VudCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5Db3VudCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5Db3VudFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29s
dW1uQ291bnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9jb2x1bW5GaWxsR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5G
aWxsKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9jb2x1bW5GaWxsLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Nv
bHVtbkZpbGxHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjb2x1bW5GaWxsIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uRmlsbFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNv
bHVtbkZpbGwsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29s
dW1uRmlsbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9jb2x1bW5GaWxsU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJjb2x1bW5GaWxsIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uR2FwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlDb2x1bW5HYXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbkdhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5HYXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjb2x1bW5HYXAiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5HYXBT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlDb2x1bW5HYXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fY29sdW1uR2FwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbkdhcFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29sdW1uR2FwIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5SdWxlR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiY29sdW1uUnVsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvbHVtblJ1bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5SdWxlLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtblJ1bGUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZVNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29s
dW1uUnVsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X2NvbHVtblJ1bGVDb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29s
dW1uUnVsZUNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9jb2x1bW5SdWxlQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fY29sdW1uUnVsZUNvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY29sdW1uUnVsZUNv
bG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29s
dW1uUnVsZUNvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZUNvbG9yLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtblJ1bGVDb2xvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5S
dWxlQ29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImNvbHVtblJ1bGVDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2NvbHVtblJ1bGVTdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Q29sdW1uUnVsZVN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5SdWxlU3R5bGUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZVN0eWxlR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiY29sdW1uUnVsZVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fY29sdW1uUnVsZVN0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZVN0eWxl
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtblJ1bGVT
dHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9jb2x1bW5SdWxlU3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbHVtblJ1bGVTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtblJ1bGVXaWR0aEdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZVdpZHRoKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5SdWxlV2lkdGgs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZVdpZHRo
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiY29sdW1uUnVsZVdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZVdpZHRoU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Q29sdW1uUnVsZVdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2NvbHVtblJ1bGVXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5SdWxlV2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbHVtblJ1bGVXaWR0aCIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtblNwYW5H
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtblNwYW4pKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtblNwYW4s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uU3BhbkdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgImNvbHVtblNwYW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5TcGFuU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uU3BhbiwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5TcGFuLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Nv
bHVtblNwYW5TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImNvbHVtblNwYW4iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9jb2x1bW5XaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Q29sdW1uV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvbHVtbldpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2NvbHVtbldpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY29sdW1uV2lkdGgiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5XaWR0aFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUNvbHVtbldpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvbHVtbldpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbldpZHRoU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb2x1bW5XaWR0aCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbnNHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbnMpKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbnMsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uc0dldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNv
bHVtbnMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
b2x1bW5zU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1ucywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbnNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbHVtbnMiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb250ZW50R2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb250ZW50KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb250ZW50LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbnRlbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjb250ZW50Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29udGVudFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUNvbnRlbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fY29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jb250ZW50U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb250ZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY291bnRlckluY3JlbWVudEdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY291bnRlckluY3JlbWVudCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVySW5jcmVtZW50
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiY291bnRlckluY3JlbWVudCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50ZXJJbmNyZW1lbnRTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlDb3VudGVySW5jcmVtZW50LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvdW50ZXJJbmNyZW1lbnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY291bnRlckluY3JlbWVudFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY291bnRlckluY3JlbWVu
dCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50
ZXJSZXNldEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q291bnRlclJlc2V0
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
b3VudGVyUmVzZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY291
bnRlclJlc2V0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY291bnRlclJlc2V0Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY291bnRlclJlc2V0U2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Q291bnRlclJlc2V0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2NvdW50ZXJSZXNldCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVyUmVzZXRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvdW50ZXJSZXNldCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2N1cnNvckdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q3Vyc29yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jdXJzb3IsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fY3Vyc29yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY3Vyc29yIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY3Vyc29yU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Q3Vyc29yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2N1cnNvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jdXJzb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgImN1cnNvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2N4R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlDeCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fY3gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY3hHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJjeCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2N4U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q3gsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fY3gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fY3hTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImN4Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fY3lHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUN5KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9jeSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jeUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgImN5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fY3lTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDeSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jeSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jeVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiY3kiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kaXJlY3Rpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eURpcmVjdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGlyZWN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2RpcmVjdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImRpcmVjdGlvbiIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2RpcmVjdGlvblNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eURpcmVjdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kaXJlY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGlyZWN0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJkaXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kaXNwbGF5R2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlEaXNwbGF5KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kaXNwbGF5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rpc3BsYXlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJkaXNwbGF5Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGlzcGxheVNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eURpc3BsYXksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGlzcGxheSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kaXNwbGF5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJkaXNwbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZG9taW5hbnRCYXNlbGluZUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5RG9taW5hbnRCYXNlbGluZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZG9taW5hbnRCYXNlbGluZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kb21pbmFudEJhc2VsaW5lR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiZG9taW5hbnRCYXNlbGluZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2RvbWluYW50QmFzZWxpbmVTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlEb21p
bmFudEJhc2VsaW5lLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2RvbWluYW50QmFzZWxpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZG9taW5hbnRCYXNlbGluZVNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZG9taW5hbnRCYXNlbGluZSIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2VtcHR5Q2VsbHNH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VtcHR5Q2VsbHMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZW1wdHlDZWxsc0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgImVtcHR5Q2VsbHMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9lbXB0eUNlbGxzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RW1wdHlDZWxscywgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lbXB0eUNlbGxzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Vt
cHR5Q2VsbHNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImVtcHR5Q2VsbHMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9lbmFibGVCYWNrZ3JvdW5kR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlFbmFibGVCYWNrZ3JvdW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lbmFibGVCYWNrZ3JvdW5kLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2VuYWJsZUJhY2tncm91bmRHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJlbmFibGVCYWNrZ3JvdW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZW5hYmxlQmFja2dyb3VuZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUVuYWJsZUJhY2tncm91
bmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZW5hYmxlQmFj
a2dyb3VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9lbmFibGVCYWNrZ3JvdW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJlbmFibGVCYWNrZ3JvdW5kIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsbEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5RmlsbCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9maWxsR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZmlsbCIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGaWxs
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGwsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmls
bFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
ZmlsbCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Zp
bGxPcGFjaXR5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGaWxsT3BhY2l0
eSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZmlsbE9wYWNpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmls
bE9wYWNpdHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmaWxsT3BhY2l0eSIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxPcGFjaXR5U2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
RmlsbE9wYWNpdHksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZmlsbE9wYWNpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZmlsbE9wYWNpdHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZpbGxPcGFjaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsbFJ1bGVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUZpbGxSdWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsUnVsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsUnVsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZpbGxSdWxlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsbFJ1bGVT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlGaWxsUnVsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9maWxsUnVsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsUnVsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmlsbFJ1bGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWx0ZXJHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUZpbHRlcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2ZpbHRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZpbHRlciIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbHRlclNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUZpbHRlciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
aWx0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZmlsdGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJmaWx0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mbGV4R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlG
bGV4KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mbGV4LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJmbGV4Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZmxleFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXgsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4U2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmbGV4Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleEJhc2lzR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4QmFzaXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhCYXNpcywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4QmFzaXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmbGV4
QmFzaXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
bGV4QmFzaXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4QmFzaXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleEJhc2lzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhCYXNpc1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmxleEJhc2lzIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleERpcmVjdGlv
bkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleERpcmVjdGlvbikpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleERp
cmVjdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4RGly
ZWN0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZmxleERpcmVjdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhEaXJlY3Rpb25TZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlGbGV4RGlyZWN0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZsZXhEaXJlY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleERpcmVjdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmxleERpcmVjdGlvbiIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhGbG93R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4RmxvdykpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleEZsb3csIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleEZsb3dHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJm
bGV4RmxvdyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZsZXhGbG93U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEZsb3csIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleEZsb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleEZsb3dTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZsZXhGbG93Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleEdyb3dHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhHcm93KSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4R3JvdywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4R3Jvd0dldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImZsZXhHcm93Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZmxleEdyb3dTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4R3JvdywgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4R3JvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4R3Jvd1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmxleEdyb3ciKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4U2hyaW5rR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4U2hyaW5rKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4U2hyaW5rLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhTaHJpbmtHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJmbGV4U2hyaW5rIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZmxleFNocmlua1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhTaHJpbmssIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleFNocmluaywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4
U2hyaW5rU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJmbGV4U2hyaW5rIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZmxleFdyYXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZs
ZXhXcmFwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mbGV4V3JhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
bGV4V3JhcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZsZXhXcmFwIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleFdyYXBTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4V3Jh
cCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4V3JhcCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mbGV4V3JhcFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiZmxleFdyYXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mbG9hdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rmxv
YXQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Zsb2F0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb2F0R2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiZmxvYXQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mbG9hdFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsb2F0LCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb2F0LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb2F0U2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmbG9hdCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kQ29sb3JHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsb29kQ29sb3IpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kQ29sb3IsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxvb2RDb2xvckdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgImZsb29kQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mbG9vZENvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rmxvb2RDb2xvciwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbG9vZENvbG9yLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kQ29s
b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
ImZsb29kQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mbG9vZE9wYWNpdHlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZs
b29kT3BhY2l0eSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZmxvb2RPcGFjaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2Zsb29kT3BhY2l0eUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZsb29kT3BhY2l0eSIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kT3BhY2l0eVNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUZsb29kT3BhY2l0eSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mbG9vZE9wYWNpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxvb2RPcGFjaXR5U2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmbG9vZE9wYWNpdHkiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250R2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250KSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmb250Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUZvbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Zm9udCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJmb250Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZm9udERpc3BsYXlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUZvbnREaXNwbGF5KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mb250RGlzcGxheSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250RGlzcGxheUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZvbnREaXNwbGF5Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udERpc3BsYXlTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlGb250RGlzcGxheSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mb250RGlzcGxheSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250RGlzcGxheVNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZm9udERpc3BsYXkiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250RmFtaWx5R2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250RmFtaWx5KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250RmFtaWx5LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRGYW1pbHlHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJmb250RmFtaWx5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZm9udEZhbWlseVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udEZhbWlseSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250RmFt
aWx5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJmb250RmFtaWx5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZm9udEZlYXR1cmVTZXR0aW5nc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Rm9udEZlYXR1cmVTZXR0aW5ncykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udEZlYXR1cmVTZXR0aW5ncywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250RmVhdHVyZVNldHRpbmdzR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiZm9udEZlYXR1cmVTZXR0aW5ncyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRGZWF0dXJlU2V0dGluZ3NTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlG
b250RmVhdHVyZVNldHRpbmdzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRGZWF0dXJlU2V0dGluZ3MsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udEZlYXR1cmVTZXR0aW5nc1NldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZm9udEZlYXR1
cmVTZXR0aW5ncyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZvbnRLZXJuaW5nR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRGb250S2VybmluZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZm9udEtlcm5pbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZm9udEtlcm5pbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmb250S2VybmluZyIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRLZXJuaW5nU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0Rm9udEtlcm5pbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZm9udEtlcm5pbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udEtlcm5pbmdTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZvbnRLZXJuaW5nIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udE9wdGlj
YWxTaXppbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRPcHRpY2Fs
U2l6aW5nKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mb250T3B0aWNhbFNpemluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250T3B0aWNhbFNpemluZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZvbnRPcHRpY2FsU2l6
aW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9u
dE9wdGljYWxTaXppbmdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250T3B0aWNhbFNpemluZywgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250T3B0aWNhbFNpemluZywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
b250T3B0aWNhbFNpemluZ1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiZm9udE9wdGljYWxTaXppbmciKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U2l6ZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Rm9udFNpemUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRTaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2ZvbnRTaXplR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZm9udFNpemUiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U2l6ZVNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUZvbnRTaXplLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRTaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRTaXplU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmb250U2l6ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRTdHJldGNoR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlGb250U3RyZXRjaCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN0cmV0Y2gsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN0cmV0Y2hHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJm
b250U3RyZXRjaCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZvbnRTdHJldGNoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFN0cmV0Y2gsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN0cmV0Y2gsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN0cmV0Y2hT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZv
bnRTdHJldGNoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udFN0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250U3R5
bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZvbnRTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250
U3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmb250U3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250U3R5
bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN0eWxl
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZvbnRTdHlsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiZm9udFN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZm9udFN5bnRoZXNpc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Rm9udFN5bnRoZXNpcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN5bnRoZXNpcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U3ludGhlc2lzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZm9udFN5
bnRoZXNpcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZvbnRTeW50aGVzaXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250U3ludGhlc2lzLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRTeW50aGVzaXMsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN5bnRo
ZXNpc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiZm9udFN5bnRoZXNpcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZvbnRWYXJpYW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlGb250VmFyaWFudCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZm9udFZhcmlhbnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZm9udFZhcmlhbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmb250VmFyaWFudCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50U2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZm9udFZhcmlhbnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZvbnRWYXJpYW50Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRBbHRl
cm5hdGVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250VmFyaWFudEFs
dGVybmF0ZXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRWYXJpYW50QWx0ZXJuYXRlcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudEFsdGVybmF0ZXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmb250
VmFyaWFudEFsdGVybmF0ZXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mb250VmFyaWFudEFsdGVybmF0ZXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250VmFyaWFu
dEFsdGVybmF0ZXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Zm9udFZhcmlhbnRBbHRlcm5hdGVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50QWx0ZXJuYXRlc1NldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZm9udFZhcmlhbnRB
bHRlcm5hdGVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udFZhcmlhbnRDYXBzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlG
b250VmFyaWFudENhcHMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50Q2FwcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudENhcHNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmb250VmFyaWFu
dENhcHMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
b250VmFyaWFudENhcHNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250VmFyaWFudENhcHMsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRDYXBzLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRW
YXJpYW50Q2Fwc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiZm9udFZhcmlhbnRDYXBzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRFYXN0QXNpYW5HZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJpYW50RWFzdEFzaWFuKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudEVhc3RBc2lh
biwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudEVh
c3RBc2lhbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZvbnRWYXJpYW50RWFzdEFzaWFuIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRFYXN0QXNp
YW5TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlGb250VmFyaWFudEVhc3RBc2lhbiwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudEVhc3RBc2lhbiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFy
aWFudEVhc3RBc2lhblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiZm9udFZhcmlhbnRFYXN0QXNpYW4iKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudExpZ2F0dXJlc0dldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50
TGlnYXR1cmVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRW
YXJpYW50TGlnYXR1cmVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZm9udFZhcmlhbnRMaWdhdHVyZXMiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFu
dExpZ2F0dXJlc1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TGlnYXR1cmVzLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50TGlnYXR1cmVzLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZvbnRWYXJpYW50TGlnYXR1cmVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJmb250VmFyaWFudExpZ2F0dXJlcyIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50TnVtZXJpY0dldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnROdW1lcmljKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFy
aWFudE51bWVyaWMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9u
dFZhcmlhbnROdW1lcmljR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZm9udFZhcmlhbnROdW1lcmljIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRO
dW1lcmljU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnROdW1lcmljLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50TnVtZXJpYywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFy
aWFudE51bWVyaWNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgImZvbnRWYXJpYW50TnVtZXJpYyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50UG9zaXRpb25HZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJpYW50UG9zaXRpb24pKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50UG9zaXRp
b24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRQ
b3NpdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZvbnRWYXJpYW50UG9zaXRpb24iKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudFBvc2l0aW9u
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRQb3NpdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudFBvc2l0aW9uLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50
UG9zaXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImZvbnRWYXJpYW50UG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWF0aW9uU2V0dGluZ3NHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJpYXRpb25TZXR0aW5ncykpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhdGlvblNl
dHRpbmdzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJp
YXRpb25TZXR0aW5nc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZvbnRWYXJpYXRpb25TZXR0aW5ncyIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYXRp
b25TZXR0aW5nc1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJpYXRpb25TZXR0aW5ncywgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWF0aW9uU2V0dGluZ3Ms
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udFZhcmlhdGlvblNldHRpbmdzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmb250VmFyaWF0aW9uU2V0dGluZ3MiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250V2VpZ2h0R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250V2VpZ2h0KSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250V2VpZ2h0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRXZWlnaHRHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJmb250V2VpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZm9udFdlaWdodFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFdlaWdodCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250V2VpZ2h0
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJm
b250V2VpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZ2FwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHYXApKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dhcCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9nYXBHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJn
YXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9nYXBT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlHYXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZ2FwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2dhcFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiZ2FwIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWxHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlwaE9yaWVudGF0
aW9uSG9yaXpvbnRhbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9n
bHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdseXBoT3JpZW50YXRp
b25Ib3Jpem9udGFsIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWxTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHbHlwaE9yaWVu
dGF0aW9uSG9yaXpvbnRhbCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlwaE9yaWVudGF0aW9uSG9yaXpv
bnRhbFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlwaE9yaWVudGF0aW9uVmVydGljYWxHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ2x5cGhP
cmllbnRhdGlvblZlcnRpY2FsLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdseXBoT3JpZW50
YXRpb25WZXJ0aWNhbCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdseXBoT3JpZW50
YXRpb25WZXJ0aWNhbCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9nbHlwaE9yaWVudGF0aW9uVmVydGljYWwsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJnbHlw
aE9yaWVudGF0aW9uVmVydGljYWwiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ncmlkR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlH
cmlkKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ncmlkLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJncmlkIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZ3JpZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWQsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJncmlkIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEFyZWFHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRBcmVhKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXJlYSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXJlYUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdyaWRBcmVh
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEFy
ZWFTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlHcmlkQXJlYSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ncmlkQXJlYSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXJlYVNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZ3JpZEFyZWEiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXV0b0NvbHVtbnNHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRBdXRvQ29sdW1ucykpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEF1dG9Db2x1
bW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvQ29s
dW1uc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgImdyaWRBdXRvQ29sdW1ucyIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvQ29sdW1uc1NldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUdyaWRBdXRvQ29sdW1ucywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ncmlkQXV0b0NvbHVtbnMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEF1dG9Db2x1bW5zU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJncmlkQXV0b0NvbHVtbnMi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXV0
b0Zsb3dHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRBdXRvRmxvdykp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3Jp
ZEF1dG9GbG93LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRB
dXRvRmxvd0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdyaWRBdXRvRmxvdyIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvRmxvd1NldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUdyaWRBdXRvRmxvdywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ncmlkQXV0b0Zsb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZ3JpZEF1dG9GbG93U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJncmlkQXV0b0Zsb3ciKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXV0b1Jvd3NHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRBdXRvUm93cykpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEF1dG9Sb3dzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvUm93c0dldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgImdyaWRBdXRvUm93cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvUm93c1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRBdXRvUm93cywg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXV0b1Jvd3Ms
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZ3JpZEF1dG9Sb3dzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJncmlkQXV0b1Jvd3MiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlHcmlkQ29sdW1uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJncmlkQ29sdW1uIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVt
blNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUdyaWRDb2x1bW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJncmlkQ29sdW1uIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtbkVuZEdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZENvbHVtbkVuZCkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVt
bkVuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1u
RW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiZ3JpZENvbHVtbkVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5FbmRTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlH
cmlkQ29sdW1uRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2dyaWRDb2x1bW5FbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtbkVuZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZ3JpZENvbHVtbkVuZCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5HYXBHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbkdhcCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtbkdhcCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uR2FwR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiZ3JpZENvbHVtbkdhcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5HYXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5HYXAs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtbkdh
cCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ncmlkQ29sdW1uR2FwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJncmlkQ29sdW1uR2FwIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtblN0YXJ0R2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkQ29sdW1uU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5TdGFydCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uU3RhcnRHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJncmlkQ29sdW1uU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uU3RhcnRTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkQ29s
dW1uU3RhcnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3Jp
ZENvbHVtblN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5TdGFydFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZ3JpZENvbHVtblN0YXJ0Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEdhcEdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R2FwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkR2FwLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRHYXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJncmlkR2FwIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEdhcFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUdhcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ncmlkR2FwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2dyaWRHYXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWRHYXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkUm93R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlHcmlkUm93KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ncmlkUm93LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2dyaWRSb3dHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJncmlkUm93Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd1NldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUdyaWRSb3csIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3Jp
ZFJvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ncmlkUm93U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJncmlkUm93Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZFJvd0VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5R3JpZFJvd0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZFJvd0VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ncmlkUm93RW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZ3JpZFJvd0VuZCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRSb3dFbmRTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlHcmlkUm93RW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2dyaWRSb3dFbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd0VuZFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZ3JpZFJvd0VuZCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRSb3dHYXBHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVJvd0dhcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd0dhcCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkUm93R2FwR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
Z3JpZFJvd0dhcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2dyaWRSb3dHYXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlSb3dHYXAsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd0dhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkUm93R2FwU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJncmlkUm93R2Fw
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJv
d1N0YXJ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkUm93U3RhcnQp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dy
aWRSb3dTdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlk
Um93U3RhcnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJncmlkUm93U3RhcnQiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkUm93U3RhcnRTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlHcmlkUm93U3RhcnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZ3JpZFJvd1N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2dyaWRSb3dTdGFydFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZ3JpZFJvd1N0YXJ0Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRlR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGUpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRUZW1wbGF0ZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJncmlkVGVtcGxhdGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGUs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRl
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2dyaWRUZW1wbGF0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiZ3JpZFRlbXBsYXRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRlQXJlYXNHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUFyZWFzKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVBcmVhcywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVBcmVhc0dl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgImdyaWRUZW1wbGF0ZUFyZWFzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRlQXJlYXNTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlHcmlkVGVtcGxhdGVBcmVhcywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ncmlkVGVtcGxhdGVBcmVhcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVBcmVhc1NldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZ3JpZFRlbXBsYXRl
QXJlYXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9n
cmlkVGVtcGxhdGVDb2x1bW5zR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlH
cmlkVGVtcGxhdGVDb2x1bW5zKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVDb2x1bW5zLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRUZW1wbGF0ZUNvbHVtbnNHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJncmlkVGVtcGxhdGVDb2x1bW5zIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRlQ29sdW1uc1NldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRUZW1w
bGF0ZUNvbHVtbnMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Z3JpZFRlbXBsYXRlQ29sdW1ucywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVDb2x1bW5zU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJncmlkVGVtcGxhdGVDb2x1
bW5zIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3Jp
ZFRlbXBsYXRlUm93c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZFRl
bXBsYXRlUm93cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZ3JpZFRlbXBsYXRlUm93cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVSb3dzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZ3JpZFRlbXBsYXRl
Um93cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dy
aWRUZW1wbGF0ZVJvd3NTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVSb3dzLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRUZW1wbGF0ZVJvd3MsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3Jp
ZFRlbXBsYXRlUm93c1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiZ3JpZFRlbXBsYXRlUm93cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2hhbmdpbmdQdW5jdHVhdGlvbkdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5SGFuZ2luZ1B1bmN0dWF0aW9uKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9oYW5naW5nUHVuY3R1YXRpb24s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25faGFuZ2luZ1B1bmN0dWF0
aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiaGFuZ2luZ1B1bmN0dWF0aW9uIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faGFuZ2luZ1B1bmN0dWF0aW9uU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5SGFuZ2luZ1B1bmN0dWF0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2hhbmdpbmdQdW5jdHVhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9oYW5naW5nUHVuY3R1YXRpb25T
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImhh
bmdpbmdQdW5jdHVhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2hlaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SGVp
Z2h0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9oZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25faGVpZ2h0
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiaGVpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25faGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SGVpZ2h0LCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2hlaWdodCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9oZWlnaHRTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImhlaWdodCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlT3Jp
ZW50YXRpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUltYWdlT3JpZW50
YXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2ltYWdlT3JpZW50YXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25faW1hZ2VPcmllbnRhdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImltYWdlT3JpZW50YXRpb24i
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZU9y
aWVudGF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW1hZ2VPcmllbnRhdGlvbiwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZU9yaWVudGF0aW9uLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlT3Jp
ZW50YXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImltYWdlT3JpZW50YXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9pbWFnZVJlbmRlcmluZ0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlUmVuZGVyaW5nLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlUmVuZGVyaW5nR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
aW1hZ2VSZW5kZXJpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9pbWFnZVJlbmRlcmluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlUmVuZGVyaW5nLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2ltYWdlUmVuZGVyaW5nU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJpbWFnZVJlbmRlcmluZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2lubGluZVNpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUlubGluZVNpemUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2lubGluZVNpemUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25faW5saW5lU2l6ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImlubGluZVNpemUi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbmxpbmVT
aXplU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5SW5saW5lU2l6ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9pbmxpbmVTaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2lubGluZVNpemVTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImlubGluZVNpemUiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldEdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW5zZXQpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiaW5zZXQiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldFNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUluc2V0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2luc2V0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2luc2V0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJpbnNldCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2tHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUluc2V0QmxvY2spKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2ssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25faW5zZXRCbG9ja0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImluc2V0QmxvY2siKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldEJsb2NrU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5SW5zZXRCbG9jaywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9pbnNldEJsb2NrLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2tTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImluc2V0QmxvY2siKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldEJsb2NrRW5kR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJbnNldEJsb2NrRW5kKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldEJsb2NrRW5k
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2tFbmRH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJpbnNldEJsb2NrRW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRCbG9ja0VuZFNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUluc2V0
QmxvY2tFbmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5z
ZXRCbG9ja0VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9pbnNldEJsb2NrRW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbnNldEJsb2NrRW5kIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRCbG9ja1N0YXJ0R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJbnNldEJsb2NrU3RhcnQpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2tTdGFy
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldEJsb2NrU3Rh
cnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJpbnNldEJsb2NrU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldEJsb2NrU3RhcnRTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlJbnNldEJsb2NrU3RhcnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25faW5zZXRCbG9ja1N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2tTdGFydFNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiaW5zZXRCbG9ja1N0YXJ0Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRJbmxp
bmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUluc2V0SW5saW5lKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElu
bGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElubGlu
ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgImluc2V0SW5saW5lIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRJbmxpbmVTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJbnNldElu
bGluZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElu
bGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9pbnNldElubGluZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiaW5zZXRJbmxpbmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElubGluZUVuZEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5SW5zZXRJbmxpbmVFbmQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0SW5saW5lRW5kLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0SW5saW5lRW5kR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiaW5zZXRJbmxpbmVFbmQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9pbnNldElubGluZUVuZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUluc2V0SW5saW5lRW5k
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0SW5saW5l
RW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2luc2V0SW5saW5lRW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJpbnNldElubGluZUVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0SW5saW5lU3RhcnRHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUluc2V0SW5saW5lU3RhcnQpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0SW5saW5lU3RhcnQs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRJbmxpbmVTdGFy
dEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgImluc2V0SW5saW5lU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElubGluZVN0YXJ0U2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5SW5zZXRJbmxpbmVTdGFydCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9pbnNldElubGluZVN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0SW5saW5lU3RhcnRTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImluc2V0SW5saW5lU3Rh
cnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pc29s
YXRpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlzb2xhdGlvbikpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25faXNvbGF0
aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2lzb2xhdGlvbkdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgImlzb2xhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2lzb2xhdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlzb2xhdGlvbiwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pc29sYXRpb24sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faXNv
bGF0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJpc29sYXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9qdXN0aWZ5Q29udGVudEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5SnVzdGlmeUNvbnRlbnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2p1c3RpZnlDb250ZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2p1c3RpZnlDb250ZW50R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAianVzdGlmeUNv
bnRlbnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9q
dXN0aWZ5Q29udGVudFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1c3RpZnlDb250ZW50LCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlDb250ZW50LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlD
b250ZW50U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJqdXN0aWZ5Q29udGVudCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX2p1c3RpZnlJdGVtc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5SnVzdGlmeUl0ZW1zKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5SXRlbXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fanVzdGlmeUl0ZW1zR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAianVzdGlmeUl0ZW1z
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlm
eUl0ZW1zU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5SnVzdGlmeUl0ZW1zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlJdGVtcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5SXRlbXNTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImp1c3RpZnlJ
dGVtcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2p1
c3RpZnlTZWxmR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlKdXN0aWZ5U2Vs
ZikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
anVzdGlmeVNlbGYsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fanVz
dGlmeVNlbGZHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJqdXN0aWZ5U2VsZiIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlTZWxmU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
SnVzdGlmeVNlbGYsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
anVzdGlmeVNlbGYsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fanVzdGlmeVNlbGZTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImp1c3RpZnlTZWxmIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fa2VybmluZ0dldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5S2VybmluZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fa2VybmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9rZXJuaW5nR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAia2VybmluZyIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2tlcm5pbmdTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlLZXJuaW5nLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2tlcm5pbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fa2VybmluZ1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAia2VybmluZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2xlZnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUxlZnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2xlZnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
bGVmdEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgImxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9sZWZ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGVmdCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9sZWZ0LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xlZnRTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImxlZnQiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9sZXR0ZXJTcGFjaW5nR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9sZXR0ZXJTcGFj
aW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2xldHRlclNwYWNp
bmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJsZXR0ZXJTcGFjaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGV0dGVyU3BhY2luZ1NldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUxl
dHRlclNwYWNpbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
bGV0dGVyU3BhY2luZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9sZXR0ZXJTcGFjaW5nU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJsZXR0ZXJTcGFjaW5nIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlnaHRpbmdDb2xvckdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGlnaHRpbmdDb2xvcikpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlnaHRpbmdDb2xvciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saWdodGluZ0NvbG9yR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAibGlnaHRpbmdDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpZ2h0aW5nQ29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlMaWdodGlu
Z0NvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpZ2h0
aW5nQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fbGlnaHRpbmdDb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibGlnaHRpbmdDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVCcmVha0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFrKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saW5lQnJlYWssIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGluZUJyZWFrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibGluZUJy
ZWFrIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlu
ZUJyZWFrU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2xpbmVCcmVhaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saW5lQnJlYWtTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImxpbmVCcmVhayIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVIZWlnaHRHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUxpbmVIZWlnaHQpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVIZWlnaHQsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGluZUhlaWdodEdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgImxpbmVIZWlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9saW5lSGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGluZUhlaWdodCwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saW5lSGVpZ2h0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVI
ZWlnaHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgImxpbmVIZWlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9saXN0U3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUxp
c3RTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fbGlzdFN0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X2xpc3RTdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImxpc3RTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUxp
c3RTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0
U3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fbGlzdFN0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJsaXN0U3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0U3R5bGVJbWFnZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZUltYWdlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZUltYWdlR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAibGlzdFN0eWxlSW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9saXN0U3R5bGVJbWFnZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZUltYWdl
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2xpc3RTdHlsZUltYWdlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJsaXN0U3R5bGVJbWFnZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZVBvc2l0aW9uR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdFN0eWxlUG9zaXRpb24s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdFN0eWxlUG9zaXRp
b25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJsaXN0U3R5bGVQb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZVBvc2l0aW9uU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fbGlzdFN0eWxlUG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdFN0eWxlUG9zaXRpb25TZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImxpc3RTdHls
ZVBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbGlzdFN0eWxlVHlwZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGlz
dFN0eWxlVHlwZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fbGlzdFN0eWxlVHlwZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9saXN0U3R5bGVUeXBlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibGlzdFN0eWxlVHlwZSIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZVR5
cGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZVR5cGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdFN0eWxlVHlwZVNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibGlzdFN0eWxl
VHlwZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX21h
cmdpbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW4sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAibWFyZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fbWFyZ2luU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5TZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1hcmdpbiIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbkJsb2NrR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9jaykpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luQmxvY2ssIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luQmxvY2tHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJtYXJnaW5CbG9jayIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX21hcmdpbkJsb2NrU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luQmxvY2ssIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luQmxvY2ssIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFy
Z2luQmxvY2tTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIm1hcmdpbkJsb2NrIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fbWFyZ2luQmxvY2tFbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eU1hcmdpbkJsb2NrRW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja0VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja0VuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1hcmdp
bkJsb2NrRW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luQmxvY2tFbmRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9ja0VuZCwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja0VuZCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJn
aW5CbG9ja0VuZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAibWFyZ2luQmxvY2tFbmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja1N0YXJ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9ja1N0YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja1N0YXJ0LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbkJsb2NrU3RhcnRHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJtYXJnaW5CbG9ja1N0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luQmxvY2tTdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbkJs
b2NrU3RhcnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFy
Z2luQmxvY2tTdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja1N0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtYXJnaW5CbG9ja1N0YXJ0Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luQm90dG9tR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20pKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbkJvdHRv
bSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5Cb3R0b21H
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJtYXJnaW5Cb3R0b20iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5Cb3R0b21TZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5C
b3R0b20sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2lu
Qm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX21hcmdpbkJvdHRvbVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAibWFyZ2luQm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luSW5saW5lR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5JbmxpbmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbklubGluZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5JbmxpbmVHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJtYXJnaW5JbmxpbmUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9tYXJnaW5JbmxpbmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5JbmxpbmUsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luSW5saW5lLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdp
bklubGluZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAibWFyZ2luSW5saW5lIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fbWFyZ2luSW5saW5lRW5kR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlNYXJnaW5JbmxpbmVFbmQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbklubGluZUVuZCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5JbmxpbmVFbmRHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJt
YXJnaW5JbmxpbmVFbmQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9tYXJnaW5JbmxpbmVFbmRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5JbmxpbmVFbmQsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luSW5saW5lRW5k
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX21hcmdpbklubGluZUVuZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAibWFyZ2luSW5saW5lRW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luSW5saW5lU3RhcnRHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbklubGluZVN0YXJ0KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5JbmxpbmVTdGFy
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5JbmxpbmVT
dGFydEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1hcmdpbklubGluZVN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luSW5saW5lU3RhcnRTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlNYXJnaW5JbmxpbmVTdGFydCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXJnaW5JbmxpbmVTdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5JbmxpbmVTdGFydFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibWFyZ2lu
SW5saW5lU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9tYXJnaW5MZWZ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJn
aW5MZWZ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9tYXJnaW5MZWZ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X21hcmdpbkxlZnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtYXJnaW5MZWZ0Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luTGVmdFNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eU1hcmdpbkxlZnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
bWFyZ2luTGVmdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXJnaW5MZWZ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtYXJnaW5MZWZ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luUmlnaHRHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5SaWdodCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5SaWdodEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1h
cmdpblJpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luUmlnaHRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5SaWdodCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5SaWdodFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibWFy
Z2luUmlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9tYXJnaW5Ub3BHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpblRv
cCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
bWFyZ2luVG9wLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdp
blRvcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1hcmdpblRvcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpblRvcFNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpblRv
cCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5Ub3As
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luVG9wU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJtYXJnaW5Ub3AiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXJrZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eU1hcmtlcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fbWFya2VyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21h
cmtlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1hcmtlciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmtlciwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJrZXIsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtYXJr
ZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJr
ZXJFbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmtlckVuZCkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2Vy
RW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlckVuZEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIm1hcmtlckVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX21hcmtlckVuZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmtlckVuZCwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJrZXJFbmQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFy
a2VyRW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJtYXJrZXJFbmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9tYXJrZXJNaWRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1h
cmtlck1pZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fbWFya2VyTWlkLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X21hcmtlck1pZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1hcmtlck1pZCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlck1pZFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1h
cmtlck1pZCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJr
ZXJNaWQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fbWFya2VyTWlkU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJtYXJrZXJNaWQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJrZXJTdGFydEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5TWFya2VyU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlclN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX21hcmtlclN0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWFya2VyU3Rh
cnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJr
ZXJTdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmtlclN0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlclN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlclN0YXJ0U2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtYXJrZXJTdGFy
dCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX21hc2tH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hc2spKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hc2ssIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFza0dldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1hc2si
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5TWFzaywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9tYXNrLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX21hc2tTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIm1hc2siKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXNrVHlwZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5TWFza1R5cGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX21hc2tUeXBlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX21hc2tUeXBlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWFza1R5cGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrVHlwZVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1h
c2tUeXBlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hc2tU
eXBlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX21hc2tUeXBlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJtYXNrVHlwZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX21hdGhTdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5TWF0aFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXRoU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fbWF0aFN0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWF0aFN0eWxlIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF0aFN0eWxlU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5TWF0aFN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX21hdGhTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXRoU3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1hdGhTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX21heEJsb2NrU2l6ZUdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5TWF4QmxvY2tTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhCbG9ja1NpemUsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4QmxvY2tTaXplR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAibWF4QmxvY2tTaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fbWF4QmxvY2tTaXplU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWF4QmxvY2tTaXplLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heEJsb2NrU2l6ZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhC
bG9ja1NpemVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIm1heEJsb2NrU2l6ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX21heEhlaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5TWF4SGVpZ2h0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXhIZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fbWF4SGVpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWF4SGVpZ2h0Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4SGVpZ2h0U2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5TWF4SGVpZ2h0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X21heEhlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXhIZWlnaHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1heEhlaWdodCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX21heElubGluZVNpemVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU1heElubGluZVNpemUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21heElubGluZVNpemUsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4SW5saW5lU2l6ZUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIm1heElubGluZVNpemUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXhJbmxpbmVTaXplU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWF4SW5saW5lU2l6ZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhJbmxpbmVTaXplLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X21heElubGluZVNpemVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIm1heElubGluZVNpemUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5TWF4V2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX21heFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX21heFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWF4V2lkdGgiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhXaWR0aFNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eU1heFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X21heFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX21heFdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJtYXhXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX21pbkJsb2NrU2l6ZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5TWluQmxvY2tTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5CbG9ja1NpemUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWluQmxvY2tTaXplR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWlu
QmxvY2tTaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fbWluQmxvY2tTaXplU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWluQmxvY2tTaXplLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbkJsb2NrU2l6ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5CbG9ja1Np
emVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Im1pbkJsb2NrU2l6ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX21pbkhlaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWlu
SGVpZ2h0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9taW5IZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
bWluSGVpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWluSGVpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWluSGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWlu
SGVpZ2h0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbkhl
aWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9taW5IZWlnaHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIm1pbkhlaWdodCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX21pbklubGluZVNpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eU1pbklubGluZVNpemUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21pbklubGluZVNpemUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWluSW5saW5lU2l6ZUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1p
bklubGluZVNpemUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9taW5JbmxpbmVTaXplU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWluSW5saW5lU2l6ZSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5JbmxpbmVTaXplLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbklu
bGluZVNpemVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIm1pbklubGluZVNpemUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9taW5XaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5TWluV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX21pbldpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX21pbldpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWluV2lkdGgiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5XaWR0aFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1p
bldpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbldp
ZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX21pbldpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJtaW5XaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX21peEJsZW5kTW9kZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5TWl4QmxlbmRNb2RlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9taXhCbGVuZE1vZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fbWl4QmxlbmRNb2RlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWl4QmxlbmRN
b2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWl4
QmxlbmRNb2RlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWl4QmxlbmRNb2RlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21peEJsZW5kTW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taXhCbGVuZE1vZGVTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1peEJs
ZW5kTW9kZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X29iamVjdEZpdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T2JqZWN0Rml0
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9v
YmplY3RGaXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0
Rml0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAib2JqZWN0Rml0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0Rml0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T2JqZWN0Rml0
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX29iamVjdEZpdCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9vYmplY3RGaXRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIm9iamVjdEZpdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX29iamVjdFBvc2l0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlPYmplY3RQb3NpdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0UG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0UG9zaXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvYmpl
Y3RQb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX29iamVjdFBvc2l0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T2JqZWN0UG9zaXRpb24sIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0UG9zaXRpb24sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb2Jq
ZWN0UG9zaXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIm9iamVjdFBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fb3BhY2l0eUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5T3BhY2l0eSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fb3BhY2l0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9vcGFjaXR5R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAib3BhY2l0eSIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX29wYWNpdHlTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPcGFj
aXR5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX29wYWNpdHks
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fb3BhY2l0eVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAib3BhY2l0eSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX29yZGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPcmRl
cikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
b3JkZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3JkZXJHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJvcmRlciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX29yZGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3JkZXIsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3JkZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3JkZXJTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm9yZGVyIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3JwaGFuc0dldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3JwaGFucykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3JwaGFucywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vcnBoYW5zR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAib3JwaGFu
cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX29ycGhh
bnNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlPcnBoYW5zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX29ycGhhbnMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3JwaGFuc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib3JwaGFucyIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU91dGxpbmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm91dGxpbmUiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5T3V0bGluZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9vdXRsaW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX291dGxpbmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIm91dGxpbmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lQ29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZUNvbG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm91
dGxpbmVDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX291dGxpbmVDb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lQ29sb3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZUNv
bG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJvdXRsaW5lQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9vdXRsaW5lT2Zmc2V0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlPdXRsaW5lT2Zmc2V0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9vdXRsaW5lT2Zmc2V0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX291dGxpbmVPZmZzZXRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvdXRsaW5lT2Zmc2V0
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGlu
ZU9mZnNldFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZU9mZnNldCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lT2Zmc2V0U2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJvdXRs
aW5lT2Zmc2V0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fb3V0bGluZVN0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPdXRs
aW5lU3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX291dGxpbmVTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9vdXRsaW5lU3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvdXRsaW5lU3R5bGUiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lU3R5bGVTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlPdXRsaW5lU3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fb3V0bGluZVN0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVTdHlsZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib3V0bGluZVN0eWxlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZVdpZHRo
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVX
aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lV2lk
dGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJvdXRsaW5lV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lV2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPdXRs
aW5lV2lkdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0
bGluZVdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX291dGxpbmVXaWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib3V0bGluZVdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJmbG93KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm92ZXJmbG93Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlPdmVyZmxvdywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9vdmVyZmxvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib3ZlcmZsb3ciKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd1dyYXBHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJmbG93V3JhcCkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dXcmFwLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93V3JhcEdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIm92ZXJmbG93V3JhcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX292ZXJmbG93V3JhcFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJmbG93V3JhcCwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd1dyYXAsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
b3ZlcmZsb3dXcmFwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJvdmVyZmxvd1dyYXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd1hHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eU92ZXJmbG93WCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dYLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX292ZXJmbG93WEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm92ZXJmbG93WCIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93WFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eU92ZXJmbG93WCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9vdmVyZmxvd1gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dYU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJvdmVyZmxvd1giKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd1lHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJmbG93WSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dZLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93WUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm92ZXJmbG93
WSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJm
bG93WVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJmbG93WSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd1ksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dZU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJvdmVyZmxvd1kiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsQmVoYXZp
b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJzY3JvbGxCZWhhdmlv
cikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
b3ZlcnNjcm9sbEJlaGF2aW9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX292ZXJzY3JvbGxCZWhhdmlvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm92ZXJzY3JvbGxCZWhhdmlv
ciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJz
Y3JvbGxCZWhhdmlvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJzY3JvbGxCZWhhdmlvciwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsQmVoYXZpb3IsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
b3ZlcnNjcm9sbEJlaGF2aW9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJvdmVyc2Nyb2xsQmVoYXZpb3IiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsQmVoYXZpb3JYR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPdmVyc2Nyb2xsQmVoYXZpb3JYKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xs
QmVoYXZpb3JYLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJz
Y3JvbGxCZWhhdmlvclhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvdmVyc2Nyb2xsQmVoYXZpb3JYIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbEJl
aGF2aW9yWFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJzY3JvbGxCZWhhdmlvclgsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbEJlaGF2aW9yWCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVy
c2Nyb2xsQmVoYXZpb3JYU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJvdmVyc2Nyb2xsQmVoYXZpb3JYIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbEJlaGF2aW9yWUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3ZlcnNjcm9sbEJlaGF2aW9yWSkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbEJl
aGF2aW9yWSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Ny
b2xsQmVoYXZpb3JZR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAib3ZlcnNjcm9sbEJlaGF2aW9yWSIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxCZWhh
dmlvcllTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlPdmVyc2Nyb2xsQmVoYXZpb3JZLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxCZWhhdmlvclksIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNj
cm9sbEJlaGF2aW9yWVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAib3ZlcnNjcm9sbEJlaGF2aW9yWSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVBhZGRpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fcGFkZGluZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhZGRpbmciKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5UGFkZGluZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
YWRkaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BhZGRpbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgInBhZGRpbmciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQmxvY2tHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVBhZGRpbmdCbG9jaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0Jsb2NrLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdCbG9ja0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhZGRpbmdC
bG9jayIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Bh
ZGRpbmdCbG9ja1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdCbG9jaywgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQmxvY2ssIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0Jsb2NrU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwYWRk
aW5nQmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9wYWRkaW5nQmxvY2tFbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBh
ZGRpbmdCbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fcGFkZGluZ0Jsb2NrRW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhZGRpbmdCbG9ja0VuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhZGRpbmdCbG9j
a0VuZCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Bh
ZGRpbmdCbG9ja0VuZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdCbG9ja0VuZCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQmxvY2tFbmQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGlu
Z0Jsb2NrRW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJwYWRkaW5nQmxvY2tFbmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQmxvY2tTdGFydEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5UGFkZGluZ0Jsb2NrU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdCbG9ja1N0YXJ0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdCbG9ja1N0YXJ0R2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAicGFkZGluZ0Jsb2NrU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQmxvY2tTdGFydFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBh
ZGRpbmdCbG9ja1N0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3BhZGRpbmdCbG9ja1N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdCbG9ja1N0YXJ0U2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwYWRkaW5nQmxvY2tTdGFy
dCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRp
bmdCb3R0b21HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0
b20pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3BhZGRpbmdCb3R0b20sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
cGFkZGluZ0JvdHRvbUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhZGRpbmdCb3R0b20iKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQm90dG9tU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5UGFkZGluZ0JvdHRvbSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wYWRkaW5nQm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdCb3R0b21TZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhZGRpbmdCb3R0b20iKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nSW5s
aW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5lKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRk
aW5nSW5saW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRp
bmdJbmxpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwYWRkaW5nSW5saW5lIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0lubGluZVNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVBhZGRpbmdJbmxpbmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fcGFkZGluZ0lubGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nSW5saW5lU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwYWRkaW5nSW5saW5lIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0lubGluZUVu
ZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFkZGluZ0lubGluZUVuZCkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFk
ZGluZ0lubGluZUVuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
YWRkaW5nSW5saW5lRW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGFkZGluZ0lubGluZUVuZCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdJbmxpbmVF
bmRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdJbmxpbmVFbmQsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0lubGluZUVu
ZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
cGFkZGluZ0lubGluZUVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BhZGRpbmdJbmxpbmVTdGFydEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5UGFkZGluZ0lubGluZVN0YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nSW5saW5lU3RhcnQsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0lubGluZVN0YXJ0R2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAicGFkZGluZ0lubGluZVN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0lubGluZVN0YXJ0U2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFk
ZGluZ0lubGluZVN0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3BhZGRpbmdJbmxpbmVTdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nSW5saW5lU3RhcnRTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhZGRpbmdJbmxpbmVT
dGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Bh
ZGRpbmdMZWZ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nTGVm
dCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
cGFkZGluZ0xlZnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFk
ZGluZ0xlZnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwYWRkaW5nTGVmdCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdMZWZ0U2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
UGFkZGluZ0xlZnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
cGFkZGluZ0xlZnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFkZGluZ0xlZnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhZGRpbmdMZWZ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ1JpZ2h0R2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdSaWdodCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nUmlnaHRHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJwYWRkaW5nUmlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wYWRkaW5nUmlnaHRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ1JpZ2h0LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Bh
ZGRpbmdSaWdodFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAicGFkZGluZ1JpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFkZGluZ1RvcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5UGFkZGluZ1RvcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFkZGluZ1RvcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wYWRkaW5nVG9wR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGFkZGluZ1RvcCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdUb3BTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlQYWRkaW5nVG9wLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BhZGRpbmdUb3AsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ1RvcFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicGFkZGluZ1RvcCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZ2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFnZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhZ2UiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFn
ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Bh
Z2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
InBhZ2UiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
YWdlQnJlYWtBZnRlckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFnZUJy
ZWFrQWZ0ZXIpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3BhZ2VCcmVha0FmdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX3BhZ2VCcmVha0FmdGVyR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGFnZUJyZWFrQWZ0ZXIiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlQnJlYWtB
ZnRlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VCcmVha0FmdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VCcmVha0FmdGVyU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwYWdl
QnJlYWtBZnRlciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3BhZ2VCcmVha0JlZm9yZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
UGFnZUJyZWFrQmVmb3JlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9wYWdlQnJlYWtCZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFrQmVmb3JlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGFnZUJyZWFr
QmVmb3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
cGFnZUJyZWFrQmVmb3JlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VCcmVha0JlZm9yZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdl
QnJlYWtCZWZvcmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgInBhZ2VCcmVha0JlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VCcmVha0luc2lkZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlQnJlYWtJbnNpZGUsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFrSW5zaWRlR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAicGFnZUJyZWFrSW5zaWRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFrSW5zaWRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5z
aWRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VCcmVh
a0luc2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wYWdlQnJlYWtJbnNpZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhZ2VCcmVha0luc2lkZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BhaW50T3JkZXJHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhaW50T3JkZXIpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhaW50T3JkZXIsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFpbnRPcmRlckdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
InBhaW50T3JkZXIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9wYWludE9yZGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFpbnRPcmRlciwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWludE9yZGVyLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhaW50T3JkZXJTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhaW50
T3JkZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
ZXJzcGVjdGl2ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3Rp
dmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3BlcnNwZWN0aXZlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Bl
cnNwZWN0aXZlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGVyc3BlY3RpdmUiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVBlcnNwZWN0aXZlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3BlcnNwZWN0aXZlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwZXJzcGVjdGl2ZSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdpbikpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVP
cmlnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3Rp
dmVPcmlnaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwZXJzcGVjdGl2ZU9yaWdpbiIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVPcmlnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVPcmlnaW5T
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBl
cnNwZWN0aXZlT3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fcGVyc3BlY3RpdmVPcmlnaW5YR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdpblgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luWCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZU9yaWdpblhHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJwZXJzcGVjdGl2ZU9yaWdpblgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZU9yaWdpblhTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQZXJz
cGVjdGl2ZU9yaWdpblgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fcGVyc3BlY3RpdmVPcmlnaW5YLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luWFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicGVyc3BlY3RpdmVPcmln
aW5YIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGVy
c3BlY3RpdmVPcmlnaW5ZR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQZXJz
cGVjdGl2ZU9yaWdpblkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luWSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZU9yaWdpbllHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwZXJz
cGVjdGl2ZU9yaWdpblkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9wZXJzcGVjdGl2ZU9yaWdpbllTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdp
blksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3Rp
dmVPcmlnaW5ZLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luWVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicGVyc3BlY3RpdmVPcmlnaW5ZIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VDb250ZW50R2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQbGFjZUNvbnRlbnQpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlQ29udGVu
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZUNvbnRlbnRH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJwbGFjZUNvbnRlbnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZUNvbnRlbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQbGFjZUNv
bnRlbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VD
b250ZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BsYWNlQ29udGVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAicGxhY2VDb250ZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VJdGVtc0dldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5UGxhY2VJdGVtcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VJdGVtcywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZUl0ZW1zR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGxhY2VJ
dGVtcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Bs
YWNlSXRlbXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQbGFjZUl0ZW1zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlSXRlbXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VJdGVtc1NldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicGxhY2VJdGVtcyIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlU2Vs
ZkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGxhY2VTZWxmKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZVNlbGYs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VTZWxmR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAicGxhY2VTZWxmIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fcGxhY2VTZWxmU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGxhY2VTZWxmLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlU2VsZiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZVNl
bGZTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
InBsYWNlU2VsZiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3BvaW50ZXJFdmVudHNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBv
aW50ZXJFdmVudHMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BvaW50ZXJFdmVudHMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fcG9pbnRlckV2ZW50c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBvaW50ZXJFdmVudHMiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wb2ludGVyRXZl
bnRzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wb2ludGVyRXZlbnRzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BvaW50ZXJFdmVudHNTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBvaW50ZXJF
dmVudHMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
b3NpdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UG9zaXRpb24pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Bvc2l0
aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Bvc2l0aW9uR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAicG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wb3NpdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBvc2l0aW9uLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Bvc2l0aW9uLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Bvc2l0aW9u
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJw
b3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3F1b3Rlc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UXVvdGVzKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9xdW90ZXMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcXVvdGVzR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAicXVvdGVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fcXVvdGVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UXVvdGVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3F1b3RlcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9xdW90ZXNTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInF1b3RlcyIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3JHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVIpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UiwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInIiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9yZXNpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVJlc2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fcmVzaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX3Jlc2l6ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInJlc2l6ZSIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Jlc2l6ZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVJlc2l6ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9yZXNp
emUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fcmVzaXplU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJyZXNpemUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9yaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Umln
aHQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3JpZ2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3JpZ2h0R2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAicmlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9yaWdodFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVJpZ2h0LCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3JpZ2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3JpZ2h0U2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJyaWdodCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3JvdGF0ZUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Um90YXRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9yb3RhdGUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcm90YXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicm90YXRlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcm90YXRlU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Um90YXRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3JvdGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9yb3RhdGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgInJvdGF0ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX3Jvd0dhcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Um93R2FwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9yb3dHYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fcm93R2FwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicm93R2FwIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcm93R2FwU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Um93R2Fw
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Jvd0dhcCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9y
b3dHYXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgInJvd0dhcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3J4R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlSeCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcngsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcnhHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJyeCIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3J4U2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5UngsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
cngsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fcnhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgInJ4Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fcnlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVJ5KSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9yeSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9yeUdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInJ5Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcnlTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlSeSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9y
eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9yeVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAicnkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY2FsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2NhbGUpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3NjYWxlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3NjYWxlR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAic2NhbGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY2FsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjYWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3NjYWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NjYWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY2FsZSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbEJlaGF2aW9yR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxCZWhhdmlvcikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsQmVoYXZpb3IsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsQmVoYXZpb3JHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJzY3JvbGxCZWhhdmlvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbEJlaGF2aW9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xs
QmVoYXZpb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsQmVoYXZpb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsQmVoYXZpb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbEJlaGF2aW9yIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxNYXJnaW4pKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbiwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5HZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJzY3JvbGxNYXJnaW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxNYXJnaW4s
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2lu
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbE1hcmdpblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAic2Nyb2xsTWFyZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luQmxvY2tHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbkJsb2NrKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9jaywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9ja0dl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgInNjcm9sbE1hcmdpbkJsb2NrIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luQmxvY2tTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlTY3JvbGxNYXJnaW5CbG9jaywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9jaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9ja1NldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2Nyb2xsTWFyZ2lu
QmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxNYXJnaW5CbG9ja0VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
U2Nyb2xsTWFyZ2luQmxvY2tFbmQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkJsb2NrRW5kLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkJsb2NrRW5kR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAic2Nyb2xsTWFyZ2luQmxvY2tFbmQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9ja0VuZFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNj
cm9sbE1hcmdpbkJsb2NrRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbE1hcmdpbkJsb2NrRW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkJsb2NrRW5kU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGxN
YXJnaW5CbG9ja0VuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbE1hcmdpbkJsb2NrU3RhcnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVNjcm9sbE1hcmdpbkJsb2NrU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkJsb2NrU3RhcnQsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luQmxvY2tT
dGFydEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbE1hcmdpbkJsb2NrU3RhcnQiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9ja1N0
YXJ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luQmxvY2tTdGFydCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9ja1N0YXJ0LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbE1hcmdpbkJsb2NrU3RhcnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbE1hcmdpbkJsb2NrU3RhcnQiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5Cb3R0b21HZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbkJvdHRvbSkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
TWFyZ2luQm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbE1hcmdpbkJvdHRvbUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbE1hcmdpbkJvdHRvbSIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdp
bkJvdHRvbVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbkJvdHRvbSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5Cb3R0b20sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
TWFyZ2luQm90dG9tU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJzY3JvbGxNYXJnaW5Cb3R0b20iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5JbmxpbmVHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbklubGluZSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luSW5saW5l
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbklu
bGluZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbE1hcmdpbklubGluZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbklubGluZVNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVNjcm9sbE1hcmdpbklubGluZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5JbmxpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luSW5saW5l
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJz
Y3JvbGxNYXJnaW5JbmxpbmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5JbmxpbmVFbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbklubGluZUVuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luSW5saW5lRW5kLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbklubGlu
ZUVuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbE1hcmdpbklubGluZUVuZCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbklubGluZUVu
ZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbklubGluZUVuZCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5JbmxpbmVFbmQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
TWFyZ2luSW5saW5lRW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJzY3JvbGxNYXJnaW5JbmxpbmVFbmQiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5JbmxpbmVTdGFydEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luSW5saW5lU3RhcnQp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbE1hcmdpbklubGluZVN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbE1hcmdpbklubGluZVN0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsTWFy
Z2luSW5saW5lU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxNYXJnaW5JbmxpbmVTdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdp
bklubGluZVN0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbE1hcmdpbklubGluZVN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbklubGluZVN0YXJ0U2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGxN
YXJnaW5JbmxpbmVTdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbE1hcmdpbkxlZnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVNjcm9sbE1hcmdpbkxlZnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkxlZnQsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luTGVmdEdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
InNjcm9sbE1hcmdpbkxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5MZWZ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luTGVm
dCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJn
aW5MZWZ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbE1hcmdpbkxlZnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbE1hcmdpbkxlZnQiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5SaWdodEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luUmlnaHQpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1h
cmdpblJpZ2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9s
bE1hcmdpblJpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsTWFyZ2luUmlnaHQiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5SaWdo
dFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpblJpZ2h0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpblJpZ2h0LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpblJp
Z2h0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJzY3JvbGxNYXJnaW5SaWdodCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpblRvcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5U2Nyb2xsTWFyZ2luVG9wKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5Ub3AsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luVG9wR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
c2Nyb2xsTWFyZ2luVG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsTWFyZ2luVG9wU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luVG9wLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpblRv
cCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxNYXJnaW5Ub3BTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbE1hcmdpblRvcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmcsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0dldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgInNjcm9sbFBhZGRpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGluZywg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5n
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbFBhZGRpbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgInNjcm9sbFBhZGRpbmciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxvY2tHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdCbG9jaykpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0Jsb2Nr
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdC
bG9ja0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbFBhZGRpbmdCbG9jayIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCbG9ja1NldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdCbG9jaywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxvY2ssIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0Jsb2Nr
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJz
Y3JvbGxQYWRkaW5nQmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxvY2tFbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdCbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0Jsb2NrRW5kLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCbG9j
a0VuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbFBhZGRpbmdCbG9ja0VuZCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCbG9ja0Vu
ZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdCbG9ja0VuZCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxvY2tFbmQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
UGFkZGluZ0Jsb2NrRW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJzY3JvbGxQYWRkaW5nQmxvY2tFbmQiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxvY2tTdGFydEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGluZ0Jsb2NrU3RhcnQp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbFBhZGRpbmdCbG9ja1N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbFBhZGRpbmdCbG9ja1N0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsUGFk
ZGluZ0Jsb2NrU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxvY2tTdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRp
bmdCbG9ja1N0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbFBhZGRpbmdCbG9ja1N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCbG9ja1N0YXJ0U2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGxQ
YWRkaW5nQmxvY2tTdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCb3R0b21HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdCb3R0b20pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCb3R0b20sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0JvdHRvbUdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgInNjcm9sbFBhZGRpbmdCb3R0b20iKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQm90dG9tU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5U2Nyb2xsUGFkZGluZ0JvdHRvbSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCb3R0b21TZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9s
bFBhZGRpbmdCb3R0b20iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxQYWRkaW5nSW5saW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlTY3JvbGxQYWRkaW5nSW5saW5lKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nSW5saW5lLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmVHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJzY3JvbGxQYWRkaW5nSW5saW5lIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0lubGluZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVNjcm9sbFBhZGRpbmdJbmxpbmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsUGFkZGluZ0lubGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nSW5saW5lU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGxQ
YWRkaW5nSW5saW5lIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsUGFkZGluZ0lubGluZUVuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5U2Nyb2xsUGFkZGluZ0lubGluZUVuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0lubGluZUVuZCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nSW5saW5l
RW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsUGFkZGluZ0lubGluZUVuZCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmVF
bmRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxQYWRkaW5nSW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmVFbmQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsUGFkZGluZ0lubGluZUVuZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAic2Nyb2xsUGFkZGluZ0lubGluZUVuZCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmVTdGFy
dEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGluZ0lubGlu
ZVN0YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxQYWRkaW5nSW5saW5lU3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0lubGluZVN0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
c2Nyb2xsUGFkZGluZ0lubGluZVN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0lubGluZVN0YXJ0U2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
U2Nyb2xsUGFkZGluZ0lubGluZVN0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmVTdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nSW5s
aW5lU3RhcnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgInNjcm9sbFBhZGRpbmdJbmxpbmVTdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdMZWZ0R2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxQYWRkaW5nTGVmdCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0xlZnQs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0xl
ZnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJzY3JvbGxQYWRkaW5nTGVmdCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdMZWZ0U2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5U2Nyb2xsUGFkZGluZ0xlZnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0xlZnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0xlZnRTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbFBh
ZGRpbmdMZWZ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsUGFkZGluZ1JpZ2h0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlTY3JvbGxQYWRkaW5nUmlnaHQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdSaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nUmlnaHRHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJzY3JvbGxQYWRkaW5nUmlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nUmlnaHRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxQYWRk
aW5nUmlnaHQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsUGFkZGluZ1JpZ2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdSaWdodFNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2Nyb2xsUGFkZGluZ1JpZ2h0Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFk
ZGluZ1RvcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGlu
Z1RvcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsUGFkZGluZ1RvcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxQYWRkaW5nVG9wR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsUGFkZGluZ1RvcCIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBh
ZGRpbmdUb3BTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxQYWRkaW5nVG9wLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdUb3AsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFk
ZGluZ1RvcFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAic2Nyb2xsUGFkZGluZ1RvcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBBbGlnbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5U2Nyb2xsU25hcEFsaWduKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwQWxpZ24sIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcEFsaWduR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAic2Nyb2xsU25hcEFsaWduIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsU25hcEFsaWduU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsU25hcEFsaWdu
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBB
bGlnbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxTbmFwQWxpZ25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbFNuYXBBbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5HZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpbiwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2lu
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsU25hcE1hcmdpbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5TZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlTY3JvbGxNYXJnaW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsU25hcE1hcmdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGxTbmFwTWFyZ2luIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25h
cE1hcmdpbkJvdHRvbUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xs
TWFyZ2luQm90dG9tKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luQm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5Cb3R0b21HZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJzY3JvbGxTbmFwTWFyZ2luQm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpbkJvdHRvbVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNj
cm9sbE1hcmdpbkJvdHRvbSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxTbmFwTWFyZ2luQm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5Cb3R0b21TZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9s
bFNuYXBNYXJnaW5Cb3R0b20iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luTGVmdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luTGVmdCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpbkxlZnQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpbkxlZnRHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJzY3JvbGxTbmFwTWFyZ2luTGVmdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5MZWZ0U2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5U2Nyb2xsTWFyZ2luTGVmdCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luTGVmdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luTGVmdFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2Ny
b2xsU25hcE1hcmdpbkxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luUmlnaHRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpblJpZ2h0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luUmlnaHQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpblJpZ2h0
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsU25hcE1hcmdpblJpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpblJpZ2h0U2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luUmlnaHQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpblJpZ2h0LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJn
aW5SaWdodFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAic2Nyb2xsU25hcE1hcmdpblJpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpblRvcEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luVG9wKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luVG9wLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5U
b3BHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJzY3JvbGxTbmFwTWFyZ2luVG9wIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpblRvcFNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVNjcm9sbE1hcmdpblRvcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luVG9wLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5Ub3BT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNj
cm9sbFNuYXBNYXJnaW5Ub3AiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxTbmFwU3RvcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5U2Nyb2xsU25hcFN0b3ApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBTdG9wLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBTdG9wR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xs
U25hcFN0b3AiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxTbmFwU3RvcFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFNuYXBTdG9wLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBTdG9wLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9s
bFNuYXBTdG9wU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJzY3JvbGxTbmFwU3RvcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBUeXBlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlTY3JvbGxTbmFwVHlwZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcFR5cGUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcFR5cGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJz
Y3JvbGxTbmFwVHlwZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbFNuYXBUeXBlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsU25hcFR5cGUsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcFR5cGUsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
c2Nyb2xsU25hcFR5cGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgInNjcm9sbFNuYXBUeXBlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVJbWFnZVRocmVzaG9sZEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVJbWFnZVRocmVzaG9sZCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVJbWFnZVRocmVzaG9s
ZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZUltYWdlVGhy
ZXNob2xkR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2hhcGVJbWFnZVRocmVzaG9sZCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlSW1hZ2VUaHJlc2hvbGRT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlTaGFwZUltYWdlVGhyZXNob2xkLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlSW1hZ2VUaHJlc2hvbGQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVJbWFnZVRo
cmVzaG9sZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAic2hhcGVJbWFnZVRocmVzaG9sZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlTWFyZ2luR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlTaGFwZU1hcmdpbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVNYXJnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fc2hhcGVNYXJnaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzaGFwZU1hcmdp
biIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBl
TWFyZ2luU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVNYXJnaW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVNYXJnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVNYXJnaW5TZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNoYXBlTWFyZ2lu
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVP
dXRzaWRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTaGFwZU91dHNpZGUp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3No
YXBlT3V0c2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFw
ZU91dHNpZGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzaGFwZU91dHNpZGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZU91dHNpZGVTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlTaGFwZU91dHNpZGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2hhcGVPdXRzaWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlT3V0c2lkZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2hhcGVPdXRzaWRlIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVSZW5kZXJpbmdHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNoYXBlUmVuZGVyaW5nKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZVJlbmRlcmlu
ZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZVJlbmRlcmlu
Z0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgInNoYXBlUmVuZGVyaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVSZW5kZXJpbmdTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlT
aGFwZVJlbmRlcmluZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zaGFwZVJlbmRlcmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZVJlbmRlcmluZ1NldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2hhcGVSZW5kZXJpbmciKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaXplR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3NpemVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzaXplIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2l6ZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVNpemUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2l6ZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zaXplU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJzaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc3BlYWtBc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3BlYWtBcykp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Bl
YWtBcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zcGVha0FzR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAic3BlYWtBcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3NwZWFrQXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTcGVha0FzLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NwZWFrQXMsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3BlYWtBc1NldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3BlYWtB
cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3NyY0dl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3JjKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zcmMsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3JjR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic3JjIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3JjU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5U3JjLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Ny
YywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zcmNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgInNyYyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3N0b3BDb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3RvcENv
bG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zdG9wQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Rv
cENvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic3RvcENvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3RvcENvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3RvcENv
bG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0b3BDb2xv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zdG9wQ29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgInN0b3BDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3N0b3BPcGFjaXR5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlTdG9wT3BhY2l0eSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fc3RvcE9wYWNpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc3RvcE9wYWNpdHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzdG9wT3BhY2l0eSIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0b3BPcGFj
aXR5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5U3RvcE9wYWNpdHksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc3RvcE9wYWNpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3RvcE9wYWNpdHlTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN0b3BPcGFjaXR5Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2UpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJz
dHJva2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
dHJva2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fc3Ryb2tlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3Ryb2tlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlQ29sb3JHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVN0cm9rZUNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VDb2xvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VDb2xvckdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
InN0cm9rZUNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc3Ryb2tlQ29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VDb2xvciwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VDb2xvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VDb2xv
clNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
c3Ryb2tlQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zdHJva2VEYXNoYXJyYXlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVN0cm9rZURhc2hhcnJheSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc3Ryb2tlRGFzaGFycmF5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX3N0cm9rZURhc2hhcnJheUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInN0cm9rZURh
c2hhcnJheSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3N0cm9rZURhc2hhcnJheVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVN0cm9rZURhc2hhcnJheSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VEYXNoYXJyYXksIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ry
b2tlRGFzaGFycmF5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJzdHJva2VEYXNoYXJyYXkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VEYXNob2Zmc2V0R2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VEYXNob2Zmc2V0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VEYXNob2Zmc2V0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZURhc2hvZmZzZXRHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJzdHJva2VEYXNob2Zmc2V0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlRGFzaG9mZnNldFNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVN0cm9r
ZURhc2hvZmZzZXQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
c3Ryb2tlRGFzaG9mZnNldCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VEYXNob2Zmc2V0U2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzdHJva2VEYXNob2Zmc2V0Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTGluZWNh
cEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3Ryb2tlTGluZWNhcCkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tl
TGluZWNhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VM
aW5lY2FwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic3Ryb2tlTGluZWNhcCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZUxpbmVjYXBTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlTdHJva2VMaW5lY2FwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3N0cm9rZUxpbmVjYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTGluZWNhcFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3Ryb2tlTGluZWNhcCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZUxpbmVqb2luR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VMaW5lam9pbikpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTGlu
ZWpvaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTGlu
ZWpvaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzdHJva2VMaW5lam9pbiIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZUxpbmVqb2luU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5U3Ryb2tlTGluZWpvaW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc3Ryb2tlTGluZWpvaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTGluZWpvaW5TZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN0cm9rZUxpbmVqb2luIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTWl0ZXJs
aW1pdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3Ryb2tlTWl0ZXJsaW1p
dCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
c3Ryb2tlTWl0ZXJsaW1pdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zdHJva2VNaXRlcmxpbWl0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic3Ryb2tlTWl0ZXJsaW1pdCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZU1pdGVy
bGltaXRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VNaXRlcmxpbWl0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZU1pdGVybGltaXQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTWl0ZXJs
aW1pdFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAic3Ryb2tlTWl0ZXJsaW1pdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX3N0cm9rZU9wYWNpdHlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVN0cm9rZU9wYWNpdHkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZU9wYWNpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlT3BhY2l0eUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInN0cm9rZU9w
YWNpdHkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
dHJva2VPcGFjaXR5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3Ryb2tlT3BhY2l0eSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VPcGFjaXR5LCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZU9wYWNp
dHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
InN0cm9rZU9wYWNpdHkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zdHJva2VXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
U3Ryb2tlV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3N0cm9rZVdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX3N0cm9rZVdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic3Ryb2tlV2lkdGgiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VXaWR0aFNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVN0cm9rZVdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3N0cm9rZVdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZVdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzdHJva2VXaWR0aCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3N1cHBvcnRlZENvbG9yU2No
ZW1lc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sb3JTY2hlbWUpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3N1cHBv
cnRlZENvbG9yU2NoZW1lcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zdXBwb3J0ZWRDb2xvclNjaGVtZXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzdXBwb3J0ZWRDb2xvclNj
aGVtZXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
dXBwb3J0ZWRDb2xvclNjaGVtZXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2xvclNjaGVtZSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdXBwb3J0ZWRDb2xvclNjaGVtZXMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc3VwcG9ydGVkQ29sb3JTY2hlbWVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzdXBwb3J0ZWRDb2xvclNjaGVtZXMiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJTaXplR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUYWJTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJTaXplLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3RhYlNpemVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0YWJTaXpl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGFiU2l6
ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVRhYlNpemUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGFiU2l6ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJTaXplU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0YWJTaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGFibGVMYXlvdXRHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJsZUxheW91dCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJsZUxheW91dEdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
InRhYmxlTGF5b3V0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fdGFibGVMYXlvdXRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUYWJsZUxheW91dCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJsZUxheW91dCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJsZUxheW91
dFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
dGFibGVMYXlvdXQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl90ZXh0QWxpZ25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRB
bGlnbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dEFsaWduLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Rl
eHRBbGlnbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHRBbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRBbGlnblNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRB
bGlnbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0QWxp
Z24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fdGV4dEFsaWduU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJ0ZXh0QWxpZ24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl90ZXh0QW5jaG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlUZXh0QW5jaG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl90ZXh0QW5jaG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX3RleHRBbmNob3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0QW5jaG9yIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEFuY2hvclNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVRleHRBbmNob3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dEFuY2hvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0QW5jaG9yU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0QW5jaG9yIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25HZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3Jh
dGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3Jh
dGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHREZWNvcmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25TZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlUZXh0RGVjb3JhdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl90ZXh0RGVjb3JhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvblNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGV4dERlY29yYXRpb24iKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlv
bkNvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
bkNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl90ZXh0RGVjb3JhdGlvbkNvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RleHREZWNvcmF0aW9uQ29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0RGVjb3Jh
dGlvbkNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dERlY29yYXRpb25Db2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uQ29sb3Is
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRp
b25Db2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvbkNvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0RGVjb3JhdGlvbkNvbG9yIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25M
aW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkxp
bmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHREZWNvcmF0aW9uTGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl90ZXh0RGVjb3JhdGlvbkxpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0RGVjb3JhdGlvbkxp
bmUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0
RGVjb3JhdGlvbkxpbmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkxpbmUsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25MaW5lLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHREZWNvcmF0aW9uTGluZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAidGV4dERlY29yYXRpb25MaW5lIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25Ta2lwR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblNraXApKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0
aW9uU2tpcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVj
b3JhdGlvblNraXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0RGVjb3JhdGlvblNraXAiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvblNr
aXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblNraXAsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25Ta2lwLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0
aW9uU2tpcFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAidGV4dERlY29yYXRpb25Ta2lwIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25TdHlsZUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25TdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25TdHlsZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvblN0
eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAidGV4dERlY29yYXRpb25TdHlsZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uU3R5bGVTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uU3R5bGUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25T
dHlsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAidGV4dERlY29yYXRpb25TdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uVGhpY2tuZXNzR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblRoaWNrbmVzcykpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25U
aGlja25lc3MsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERl
Y29yYXRpb25UaGlja25lc3NHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0RGVjb3JhdGlvblRoaWNrbmVz
cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25UaGlja25lc3Ms
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRp
b25UaGlja25lc3MsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25UaGlja25lc3NTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4
dEVtcGhhc2lzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3RleHRFbXBoYXNpcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl90ZXh0RW1waGFzaXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0RW1waGFzaXMiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRFbXBoYXNpc1NldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGV4dEVtcGhhc2lz
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEVt
cGhhc2lzQ29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRFbXBoYXNpc0NvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHRF
bXBoYXNpc0NvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fdGV4dEVtcGhhc2lzQ29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXND
b2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RW1w
aGFzaXNDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNDb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGV4dEVtcGhhc2lzQ29sb3IiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNQb3Np
dGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhh
c2lzUG9zaXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RleHRFbXBoYXNpc1Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRFbXBoYXNpc1Bvc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidGV4
dEVtcGhhc2lzUG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNQb3NpdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpc1Bvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3RleHRFbXBoYXNpc1Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRFbXBoYXNpc1Bvc2l0aW9uU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0RW1waGFz
aXNQb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3RleHRFbXBoYXNpc1N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzU3R5bGUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzU3R5bGVHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJ0ZXh0RW1waGFzaXNTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRFbXBoYXNpc1N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4
dEVtcGhhc2lzU3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dEVtcGhhc2lzU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzU3R5bGVTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRleHRFbXBoYXNpc1N0eWxl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dElu
ZGVudEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dEluZGVudCkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dElu
ZGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0SW5kZW50
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAidGV4dEluZGVudCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRJbmRlbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0SW5kZW50
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRJbmRlbnQs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dEluZGVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAidGV4dEluZGVudCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRPcmllbnRhdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5VGV4dE9yaWVudGF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0T3JpZW50YXRpb24sIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dE9yaWVudGF0aW9uR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAidGV4dE9yaWVudGF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dE9yaWVudGF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dE9yaWVudGF0aW9u
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRPcmllbnRh
dGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl90ZXh0T3JpZW50YXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgInRleHRPcmllbnRhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRPdmVyZmxvd0dldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dE92ZXJmbG93KSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0T3ZlcmZsb3csIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dE92ZXJmbG93R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAidGV4dE92ZXJmbG93Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dE92ZXJmbG93U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dE92ZXJmbG93LCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRPdmVyZmxvdywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0T3ZlcmZsb3dTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgInRleHRPdmVyZmxvdyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRSZW5kZXJpbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRSZW5kZXJpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFJlbmRlcmluZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHRS
ZW5kZXJpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0UmVuZGVyaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZywgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0UmVuZGVyaW5nLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRSZW5k
ZXJpbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgInRleHRSZW5kZXJpbmciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0U2hhZG93R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlUZXh0U2hhZG93KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0U2hhZG93LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX3RleHRTaGFkb3dHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0U2hhZG93Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFNoYWRvd1NldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVRleHRTaGFkb3csIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fdGV4dFNoYWRvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0U2hhZG93U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0U2hhZG93Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFRyYW5zZm9ybUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFRyYW5zZm9ybSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0VHJhbnNmb3JtR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAidGV4dFRyYW5zZm9ybSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RleHRUcmFuc2Zvcm1TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0VHJhbnNm
b3JtLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRUcmFu
c2Zvcm0sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fdGV4dFRyYW5zZm9ybVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAidGV4dFRyYW5zZm9ybSIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRVbmRlcmxpbmVPZmZzZXRHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVPZmZzZXQpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRVbmRlcmxp
bmVPZmZzZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFVu
ZGVybGluZU9mZnNldEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHRVbmRlcmxpbmVPZmZzZXQiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0VW5kZXJsaW5l
T2Zmc2V0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU9mZnNldCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0VW5kZXJsaW5lT2Zmc2V0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRV
bmRlcmxpbmVPZmZzZXRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgInRleHRVbmRlcmxpbmVPZmZzZXQiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0VW5kZXJsaW5lUG9zaXRpb25HZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVQb3NpdGlvbikpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFVuZGVy
bGluZVBvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Rl
eHRVbmRlcmxpbmVQb3NpdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHRVbmRlcmxpbmVQb3NpdGlv
biIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRV
bmRlcmxpbmVQb3NpdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVQb3NpdGlvbiwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0VW5kZXJsaW5lUG9z
aXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fdGV4dFVuZGVybGluZVBvc2l0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0VW5kZXJsaW5lUG9zaXRpb24iKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90b3BHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRvcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdG9wLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3RvcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRvcCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RvcFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRv
cCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90b3AsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdG9w
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0
b3AiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90b3Vj
aEFjdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VG91Y2hBY3Rpb24p
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Rv
dWNoQWN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3RvdWNo
QWN0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidG91Y2hBY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90b3VjaEFjdGlvblNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRv
dWNoQWN0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Rv
dWNoQWN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RvdWNoQWN0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0b3VjaEFjdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm0sIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhbnNmb3Jt
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNm
b3JtU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1TZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRyYW5zZm9ybSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybUJveEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtQm94KSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1Cb3gs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtQm94R2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAidHJhbnNmb3JtQm94Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtQm94U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3Jt
Qm94LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9y
bUJveCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl90cmFuc2Zvcm1Cb3hTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInRyYW5zZm9ybUJveCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpbkdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1PcmlnaW4sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAidHJhbnNmb3JtT3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNm
b3JtT3JpZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Ry
YW5zZm9ybU9yaWdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1PcmlnaW5TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRyYW5zZm9ybU9yaWdpbiIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblhH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblgpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5z
Zm9ybU9yaWdpblgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJh
bnNmb3JtT3JpZ2luWEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRyYW5zZm9ybU9yaWdpblgiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1PcmlnaW5Y
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luWCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1PcmlnaW5YLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblhT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRy
YW5zZm9ybU9yaWdpblgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl90cmFuc2Zvcm1PcmlnaW5ZR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlUcmFuc2Zvcm1PcmlnaW5ZKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1PcmlnaW5ZLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpbllHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0
cmFuc2Zvcm1PcmlnaW5ZIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luWVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblks
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3Jp
Z2luWSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl90cmFuc2Zvcm1PcmlnaW5ZU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0cmFuc2Zvcm1PcmlnaW5ZIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luWkdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luWikpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3Jp
Z2luWiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1P
cmlnaW5aR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhbnNmb3JtT3JpZ2luWiIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblpTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5aLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblosIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luWlNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidHJhbnNmb3Jt
T3JpZ2luWiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3RyYW5zZm9ybVN0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFu
c2Zvcm1TdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fdHJhbnNmb3JtU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fdHJhbnNmb3JtU3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0cmFuc2Zvcm1TdHlsZSIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9y
bVN0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtU3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtU3R5bGUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtU3R5bGVT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRy
YW5zZm9ybVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fdHJhbnNpdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJh
bnNpdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fdHJhbnNpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90cmFuc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhbnNpdGlvbiIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25TZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlUcmFuc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3RyYW5zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidHJhbnNpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25EZWxheUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNpdGlvbkRlbGF5KSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uRGVsYXksIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbkRlbGF5R2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAidHJhbnNpdGlvbkRlbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbkRlbGF5U2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJh
bnNpdGlvbkRlbGF5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3RyYW5zaXRpb25EZWxheSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uRGVsYXlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRyYW5zaXRpb25EZWxheSIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25EdXJh
dGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNpdGlvbkR1cmF0
aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90cmFuc2l0aW9uRHVyYXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fdHJhbnNpdGlvbkR1cmF0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhbnNpdGlvbkR1cmF0
aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJh
bnNpdGlvbkR1cmF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNpdGlvbkR1cmF0aW9uLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25EdXJhdGlvbiwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl90cmFuc2l0aW9uRHVyYXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInRyYW5zaXRpb25EdXJhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25Qcm9wZXJ0eUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNpdGlvblByb3BlcnR5KSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9u
UHJvcGVydHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNp
dGlvblByb3BlcnR5R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhbnNpdGlvblByb3BlcnR5Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvblByb3Bl
cnR5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5VHJhbnNpdGlvblByb3BlcnR5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25Qcm9wZXJ0eSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9u
UHJvcGVydHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgInRyYW5zaXRpb25Qcm9wZXJ0eSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25UaW1pbmdGdW5jdGlvbkdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9u
VGltaW5nRnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
dHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Ry
YW5zaXRpb25UaW1pbmdGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uVGltaW5nRnVuY3Rpb25TZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRyYW5zaXRp
b25UaW1pbmdGdW5jdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RyYW5zbGF0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
VHJhbnNsYXRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl90cmFuc2xhdGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fdHJhbnNsYXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhbnNsYXRlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNsYXRlU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
VHJhbnNsYXRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Ry
YW5zbGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90cmFuc2xhdGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInRyYW5zbGF0ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX3VuaWNvZGVCaWRpR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZUJpZGksIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZUJpZGlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ1bmljb2Rl
QmlkaSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Vu
aWNvZGVCaWRpU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5VW5pY29kZUJpZGksIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZUJpZGksIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZUJpZGlTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInVuaWNvZGVC
aWRpIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdW5p
Y29kZVJhbmdlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlVbmljb2RlUmFu
Z2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3VuaWNvZGVSYW5nZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl91
bmljb2RlUmFuZ2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ1bmljb2RlUmFuZ2UiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl91bmljb2RlUmFuZ2VTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlVbmljb2RlUmFuZ2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fdW5pY29kZVJhbmdlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3VuaWNvZGVSYW5nZVNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidW5pY29kZVJhbmdlIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdmVjdG9yRWZmZWN0R2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlWZWN0b3JFZmZlY3QpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3ZlY3RvckVmZmVjdCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl92ZWN0b3JFZmZlY3RHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ2ZWN0b3JFZmZlY3QiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl92ZWN0b3JFZmZlY3RTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlWZWN0b3JFZmZl
Y3QsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdmVjdG9yRWZm
ZWN0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3ZlY3RvckVmZmVjdFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAidmVjdG9yRWZmZWN0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdmVydGljYWxBbGlnbkdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5VmVydGljYWxBbGlnbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdmVydGljYWxBbGlnbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl92ZXJ0aWNhbEFsaWduR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAidmVydGljYWxBbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3ZlcnRpY2FsQWxpZ25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3ZlcnRpY2FsQWxpZ24sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dmVydGljYWxBbGlnblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAidmVydGljYWxBbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3Zpc2liaWxpdHlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVZpc2liaWxpdHkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3Zpc2liaWxpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fdmlzaWJpbGl0eUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInZpc2liaWxpdHkiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl92aXNpYmlsaXR5
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5VmlzaWJpbGl0eSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl92aXNpYmlsaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Zpc2liaWxpdHlTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInZpc2liaWxpdHkiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93aGl0ZVNwYWNlR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93aGl0ZVNwYWNlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3doaXRlU3BhY2VHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJ3aGl0ZVNwYWNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2hpdGVTcGFjZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2hpdGVTcGFjZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93aGl0ZVNw
YWNlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJ3aGl0ZVNwYWNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2lkb3dzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXaWRvd3Mp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dp
ZG93cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93aWRvd3NHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ3aWRvd3MiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93aWRvd3NTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXaWRvd3MsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2lkb3dzLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dpZG93c1NldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2lkb3dzIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2lkdGhHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93aWR0aCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndpZHRoIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2lkdGhTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93aWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAid2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93aWxsQ2hhbmdlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXaWxsQ2hhbmdlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93aWxsQ2hhbmdlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX3dpbGxDaGFuZ2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3aWxsQ2hhbmdlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2lsbENoYW5nZVNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdpbGxDaGFuZ2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2lsbENoYW5nZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93aWxsQ2hhbmdlU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3aWxsQ2hhbmdlIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZEJyZWFrR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkQnJlYWspKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRCcmVhaywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkQnJlYWtHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJ3b3JkQnJlYWsiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93b3JkQnJlYWtTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkQnJlYWssIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZEJyZWFrLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRCcmVha1NldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid29yZEJyZWFr
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZFNw
YWNpbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3Jk
U3BhY2luZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkU3Bh
Y2luZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIndvcmRTcGFjaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZFNwYWNpbmdTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXb3Jk
U3BhY2luZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3Jk
U3BhY2luZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93b3JkU3BhY2luZ1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAid29yZFNwYWNpbmciKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkV3JhcEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V29yZFdyYXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRXcmFwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX3dvcmRXcmFwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid29yZFdyYXAiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkV3JhcFNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVdvcmRXcmFwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dvcmRXcmFwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dvcmRXcmFwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3b3JkV3JhcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dyaXRpbmdNb2RlR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXcml0aW5nTW9kZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd3JpdGluZ01vZGUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd3JpdGluZ01vZGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3
cml0aW5nTW9kZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dyaXRpbmdNb2RlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V3JpdGluZ01vZGUsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd3JpdGluZ01vZGUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd3JpdGluZ01vZGVT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndy
aXRpbmdNb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25feEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5WCkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25feCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl94R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAieCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3hTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlYLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3gsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25feFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAieCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3lHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3ksIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25feUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInkiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl95U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5WSwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl95LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3lTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInkiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl96SW5kZXhHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVpJbmRleCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fekluZGV4LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX3pJbmRleEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInpJbmRleCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3pJbmRleFNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVpJbmRleCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl96SW5kZXgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fekluZGV4U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJ6SW5kZXgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl96b29tR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlab29tKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl96b29tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3pv
b21HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJ6b29tIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fem9vbVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVpvb20sIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fem9vbSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl96b29tU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ6b29tIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25Db250ZW50
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkNvbnRlbnQpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFs
aWduQ29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRBbGlnbkNvbnRlbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRBbGlnbkNvbnRlbnQiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbGlnbkNv
bnRlbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkNvbnRlbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25Db250ZW50LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsaWduQ29u
dGVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAid2Via2l0QWxpZ25Db250ZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25JdGVtc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5QWxpZ25JdGVtcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25JdGVtcywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbGlnbkl0ZW1zR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
d2Via2l0QWxpZ25JdGVtcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEFsaWduSXRlbXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkl0ZW1zLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsaWduSXRlbXMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0QWxpZ25JdGVtc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0QWxpZ25JdGVtcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsaWduU2VsZkdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWxpZ25TZWxmKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbGlnblNlbGYsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25TZWxmR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAid2Via2l0QWxpZ25TZWxmIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25TZWxmU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWxpZ25TZWxm
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsaWdu
U2VsZiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRBbGlnblNlbGZTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEFsaWduU2VsZiIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsdEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5QWx0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWx0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0QWx0Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWx0
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5QWx0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdEFsdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEFsdCIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb24sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAid2Via2l0QW5pbWF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0
aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFu
aW1hdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEFuaW1hdGlvbiIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkRlbGF5R2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25EZWxheSkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5p
bWF0aW9uRGVsYXksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0QW5pbWF0aW9uRGVsYXlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRBbmltYXRpb25EZWxheSIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFu
aW1hdGlvbkRlbGF5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uRGVsYXksIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uRGVsYXksIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0QW5pbWF0aW9uRGVsYXlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIndlYmtpdEFuaW1hdGlvbkRlbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25EaXJlY3Rpb24pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEFuaW1hdGlvbkRpcmVjdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRBbmltYXRpb25EaXJlY3Rpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRBbmlt
YXRpb25EaXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRBbmltYXRpb25EaXJlY3Rpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25E
aXJlY3Rpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0QW5pbWF0aW9uRGlyZWN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkRpcmVjdGlvblNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0QW5p
bWF0aW9uRGlyZWN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0QW5pbWF0aW9uRHVyYXRpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUFuaW1hdGlvbkR1cmF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25EdXJhdGlvbiwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25EdXJh
dGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEFuaW1hdGlvbkR1cmF0aW9uIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uRHVy
YXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25EdXJhdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25EdXJhdGlvbiwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRBbmltYXRpb25EdXJhdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0QW5pbWF0aW9uRHVyYXRpb24iKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25GaWxsTW9k
ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uRmlsbE1vZGUp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEFuaW1hdGlvbkZpbGxNb2RlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdEFuaW1hdGlvbkZpbGxNb2RlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0QW5p
bWF0aW9uRmlsbE1vZGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRBbmltYXRpb25GaWxsTW9kZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkZp
bGxNb2RlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEFuaW1hdGlvbkZpbGxNb2RlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkZpbGxNb2RlU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRBbmltYXRp
b25GaWxsTW9kZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlBbmltYXRpb25JdGVyYXRpb25Db3VudCkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uSXRlcmF0
aW9uQ291bnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
QW5pbWF0aW9uSXRlcmF0aW9uQ291bnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRBbmltYXRpb25J
dGVyYXRpb25Db3VudCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50U2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0
aW9uSXRlcmF0aW9uQ291bnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uSXRl
cmF0aW9uQ291bnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIndlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uTmFtZUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uTmFtZSkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0
aW9uTmFtZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRB
bmltYXRpb25OYW1lR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0QW5pbWF0aW9uTmFtZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlv
bk5hbWVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25OYW1lLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbk5hbWUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0
aW9uTmFtZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAid2Via2l0QW5pbWF0aW9uTmFtZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uUGxheVN0YXRlKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25Q
bGF5U3RhdGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
QW5pbWF0aW9uUGxheVN0YXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0QW5pbWF0aW9uUGxheVN0
YXRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0QW5pbWF0aW9uUGxheVN0YXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uUGxheVN0YXRlLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlv
blBsYXlTdGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25QbGF5U3RhdGVTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEFuaW1hdGlvblBsYXlT
dGF0ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlBbmltYXRpb25UaW1pbmdGdW5jdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rp
b24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0
aW9uVGltaW5nRnVuY3Rpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRBbmltYXRpb25UaW1pbmdG
dW5jdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uVGlt
aW5nRnVuY3Rpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uVGltaW5nRnVu
Y3Rpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIndlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QXBwZWFyYW5jZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QXBwZWFyYW5jZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBcHBlYXJhbmNl
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAid2Via2l0QXBwZWFyYW5jZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFwcGVhcmFuY2VTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRBcHBlYXJhbmNlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdEFwcGVhcmFuY2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QXBwZWFyYW5jZVNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0QXBwZWFyYW5j
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJhY2tkcm9wRmlsdGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRCYWNrZHJvcEZpbHRlcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2Ryb3BGaWx0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2Ryb3BGaWx0ZXJHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJ3ZWJraXRCYWNrZHJvcEZpbHRlciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tkcm9wRmlsdGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0
QmFja2Ryb3BGaWx0ZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0QmFja2Ryb3BGaWx0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2Ryb3BGaWx0ZXJTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJhY2tk
cm9wRmlsdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZmFjZVZp
c2liaWxpdHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCYWNrZmFjZVZpc2liaWxpdHkiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZmFj
ZVZpc2liaWxpdHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHksIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2ZhY2VWaXNp
YmlsaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eVNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
QmFja2dyb3VuZENsaXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRDbGlwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kQ2xpcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kQ2xpcEdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
IndlYmtpdEJhY2tncm91bmRDbGlwIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2dyb3VuZENsaXBTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRC
YWNrZ3JvdW5kQ2xpcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCYWNrZ3JvdW5kQ2xpcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kQ2xpcFNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0QmFja2dy
b3VuZENsaXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRl
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tncm91
bmRDb21wb3NpdGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFj
a2dyb3VuZENvbXBvc2l0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2dy
b3VuZENvbXBvc2l0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRCYWNrZ3JvdW5k
Q29tcG9zaXRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0QmFja2dyb3VuZE9yaWdpbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2dyb3VuZE9yaWdpbiwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kT3JpZ2lu
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAid2Via2l0QmFja2dyb3VuZE9yaWdpbiIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tncm91bmRPcmlnaW5T
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kT3JpZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tncm91bmRPcmlnaW4sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
QmFja2dyb3VuZE9yaWdpblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAid2Via2l0QmFja2dyb3VuZE9yaWdpbiIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tncm91bmRTaXplR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZSkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
QmFja2dyb3VuZFNpemUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0QmFja2dyb3VuZFNpemVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCYWNrZ3JvdW5kU2l6
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJhY2tncm91bmRTaXplU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2dyb3VuZFNp
emUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0QmFja2dyb3VuZFNpemVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJhY2tncm91bmRTaXplIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrRW5kKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJBZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3JkZXJBZnRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEJvcmRlckFmdGVyIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0
ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRl
clNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
d2Via2l0Qm9yZGVyQWZ0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRlckNvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZENvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRlckNvbG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckFmdGVy
Q29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCb3JkZXJBZnRlckNvbG9yIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJD
b2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrRW5kQ29sb3IsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJDb2xvciwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3JkZXJBZnRlckNvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRCb3JkZXJBZnRlckNvbG9yIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tFbmRTdHlsZSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0Qm9yZGVyQWZ0ZXJTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRCb3JkZXJBZnRlclN0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm9yZGVy
QWZ0ZXJTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEJvcmRlckFmdGVyU3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZFN0
eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
cmRlckFmdGVyU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Qm9yZGVyQWZ0ZXJT
dHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEJvcmRlckFmdGVyV2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUJvcmRlckJsb2NrRW5kV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckFmdGVyV2lkdGgsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aEdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIndlYmtpdEJvcmRlckFmdGVyV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRlcldpZHRoU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVyQmxvY2tFbmRXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRlcldpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckFmdGVy
V2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIndlYmtpdEJvcmRlckFmdGVyV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJlZm9yZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCb3JkZXJCZWZvcmUiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlCb3JkZXJCbG9ja1N0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEJvcmRlckJlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJv
cmRlckJlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEJvcmRlckJlZm9yZUNvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0Q29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJlZm9yZUNvbG9yLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJlZm9yZUNv
bG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm9yZGVyQmVmb3JlQ29sb3IiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVD
b2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnRDb2xvciwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVDb2xvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRCb3JkZXJCZWZvcmVDb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Qm9yZGVyQmVmb3JlQ29sb3IiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVT
dHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tTdGFy
dFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRCb3JkZXJCZWZvcmVTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVTdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndl
YmtpdEJvcmRlckJlZm9yZVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQmVmb3JlU3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3Jk
ZXJCbG9ja1N0YXJ0U3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQmVmb3JlU3R5bGVT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndl
YmtpdEJvcmRlckJlZm9yZVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQmVmb3JlV2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnRXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQmVmb3Jl
V2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9y
ZGVyQmVmb3JlV2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCb3JkZXJCZWZvcmVXaWR0aCIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
cmRlckJlZm9yZVdpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tTdGFydFdpZHRoLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJlZm9y
ZVdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEJvcmRlckJlZm9yZVdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRCb3JkZXJCZWZvcmVXaWR0aCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
cmRlckJvdHRvbUxlZnRSYWRpdXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJvdHRvbUxlZnRSYWRpdXMsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQm90dG9tTGVm
dFJhZGl1c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEJvcmRlckJvdHRvbUxlZnRSYWRpdXMiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3Jk
ZXJCb3R0b21MZWZ0UmFkaXVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJC
b3R0b21MZWZ0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJvdHRvbUxlZnRSYWRpdXNTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCb3R0b21SaWdodFJhZGl1c0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJv
dHRvbVJpZ2h0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm9y
ZGVyQm90dG9tUmlnaHRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCb3R0b21SaWdodFJhZGl1c1NldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckVuZEdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJFbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
Qm9yZGVyRW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm9yZGVyRW5kIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRW5kU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckVuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJvcmRl
ckVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEJvcmRlckVuZENvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlC
b3JkZXJJbmxpbmVFbmRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRW5kQ29sb3IsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRW5kQ29sb3JHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJ3ZWJraXRCb3JkZXJFbmRDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckVuZENvbG9yU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVySW5saW5lRW5kQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm9yZGVyRW5kQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRW5kQ29sb3JTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJv
cmRlckVuZENvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm9yZGVyRW5kU3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUJvcmRlcklubGluZUVuZFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRTdHlsZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRTdHlsZUdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIndlYmtpdEJvcmRlckVuZFN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRW5kU3R5bGVTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlCb3JkZXJJbmxpbmVFbmRTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRTdHls
ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
d2Via2l0Qm9yZGVyRW5kU3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckVuZFdpZHRoLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckVuZFdp
ZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm9yZGVyRW5kV2lkdGgiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRXaWR0aFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJvcmRlcklubGluZUVuZFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckVuZFdpZHRoLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRl
ckVuZFdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJ3ZWJraXRCb3JkZXJFbmRXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckZpdEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJGaXQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRml0R2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAid2Via2l0Qm9yZGVyRml0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRml0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRml0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJvcmRlckZpdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJGaXRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJvcmRlckZpdCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckhvcml6b250
YWxTcGFjaW5nR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJIb3Jpem9udGFsU3BhY2luZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVySG9yaXpvbnRhbFNw
YWNpbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZyIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRl
ckhvcml6b250YWxTcGFjaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNw
YWNpbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmdT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndl
YmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVySW1hZ2VHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJJbWFnZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJJbWFnZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIndlYmtpdEJvcmRlckltYWdlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVySW1hZ2VTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJJbWFnZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRCb3JkZXJJbWFnZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJJbWFnZVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Qm9yZGVy
SW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRCb3JkZXJSYWRpdXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyUmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclJhZGl1c0dldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndl
YmtpdEJvcmRlclJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEJvcmRlclJhZGl1c1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJh
ZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyUmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRCb3JkZXJSYWRpdXMiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJT
dGFydEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3Rh
cnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJvcmRlclN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEJvcmRlclN0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm9yZGVyU3RhcnQi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJTdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0YXJ0LCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0YXJ0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJvcmRlclN0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJ3ZWJraXRCb3JkZXJTdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0YXJ0Q29sb3JHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0YXJ0Q29sb3IpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRl
clN0YXJ0Q29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0Qm9yZGVyU3RhcnRDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEJvcmRlclN0YXJ0Q29s
b3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3JkZXJTdGFydENvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3RhcnRDb2xvciwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJT
dGFydENvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0YXJ0Q29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJvcmRlclN0YXJ0Q29sb3Ii
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJTdGFydFN0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3Jk
ZXJJbmxpbmVTdGFydFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJTdGFydFN0eWxlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0YXJ0U3R5bGVHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJ3ZWJraXRCb3JkZXJTdGFydFN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyU3RhcnRTdHlsZVNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJvcmRlcklubGluZVN0YXJ0U3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJTdGFy
dFN0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJ3ZWJraXRCb3JkZXJTdGFydFN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyU3RhcnRXaWR0aEdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3RhcnRXaWR0aCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVy
U3RhcnRXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3JkZXJTdGFydFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm9yZGVyU3RhcnRXaWR0
aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJvcmRlclN0YXJ0V2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVTdGFydFdpZHRoLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0
YXJ0V2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyU3RhcnRXaWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Qm9yZGVyU3RhcnRXaWR0aCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
cmRlclRvcExlZnRSYWRpdXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
cmRlclRvcExlZnRSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclRvcExlZnRSYWRpdXMsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyVG9wTGVmdFJhZGl1c0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIndlYmtpdEJvcmRlclRvcExlZnRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJUb3BMZWZ0UmFkaXVz
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJUb3BMZWZ0UmFkaXVzLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJvcmRlclRvcExlZnRSYWRpdXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJvcmRlclRvcExlZnRSYWRpdXMiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJUb3BSaWdo
dFJhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyVG9wUmln
aHRSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdEJvcmRlclRvcFJpZ2h0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclRvcFJpZ2h0UmFkaXVzR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAid2Via2l0Qm9yZGVyVG9wUmlnaHRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJUb3BSaWdodFJhZGl1c1NldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclRvcFJpZ2h0UmFkaXVzLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
cmRlclRvcFJpZ2h0UmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRCb3JkZXJUb3BSaWdodFJhZGl1cyIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclZlcnRpY2Fs
U3BhY2luZ0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
VmVydGljYWxTcGFjaW5nKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAid2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyVmVydGljYWxT
cGFjaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclZlcnRpY2Fs
U3BhY2luZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmdTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJvcmRlclZlcnRpY2Fs
U3BhY2luZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJveEFsaWduR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRCb3hBbGlnbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0Qm94QWxpZ24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0Qm94QWxpZ25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCb3hBbGlnbiIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
eEFsaWduU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ24sIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94QWxpZ24sIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94QWxpZ25T
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndl
YmtpdEJveEFsaWduIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm94RGVjb3JhdGlvbkJyZWFrR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRCb3hEZWNvcmF0aW9uQnJlYWspKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveERlY29yYXRpb25CcmVh
aywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hEZWNv
cmF0aW9uQnJlYWtHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCb3hEZWNvcmF0aW9uQnJlYWsiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hE
ZWNvcmF0aW9uQnJlYWtTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hEZWNvcmF0aW9uQnJlYWssIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94RGVjb3Jh
dGlvbkJyZWFrLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJveERlY29yYXRpb25CcmVha1NldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Qm94RGVjb3JhdGlvbkJy
ZWFrIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0Qm94RGlyZWN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRCb3hEaXJlY3Rpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJveERpcmVjdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hEaXJlY3Rpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJr
aXRCb3hEaXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRCb3hEaXJlY3Rpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rp
b24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94
RGlyZWN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJveERpcmVjdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Qm94RGlyZWN0aW9uIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94RmxleEdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleCkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94
RmxleCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hG
bGV4R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm94RmxleCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveEZsZXhTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRCb3hGbGV4LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJveEZsZXgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94RmxleFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Qm94RmxleCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveEZsZXhHcm91cEdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3hGbGV4R3JvdXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0Qm94RmxleEdyb3VwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm94RmxleEdyb3VwIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94
RmxleEdyb3VwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveEZsZXhHcm91cCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3hGbGV4R3JvdXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIndlYmtpdEJveEZsZXhHcm91cCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveExpbmVzR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94TGluZXMsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94TGluZXNHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJ3ZWJraXRCb3hMaW5lcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveExpbmVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94TGlu
ZXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94
TGluZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0Qm94TGluZXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJveExpbmVzIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94T3JkaW5hbEdyb3VwR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXApKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJveE9yZGluYWxHcm91cCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCb3hPcmRpbmFsR3JvdXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCb3hPcmRpbmFs
R3JvdXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRCb3hPcmRpbmFsR3JvdXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXAs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94T3Jk
aW5hbEdyb3VwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJveE9yZGluYWxHcm91cFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Qm94T3JkaW5hbEdyb3VwIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94
T3JpZW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmll
bnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJveE9yaWVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCb3hPcmllbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCb3hPcmllbnQiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hPcmll
bnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94T3JpZW50LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveE9yaWVudFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Vi
a2l0Qm94T3JpZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm94UGFja0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0Qm94UGFjaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0Qm94UGFjaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRCb3hQYWNrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm94UGFjayIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
eFBhY2tTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveFBhY2ssIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94UGFja1NldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0
Qm94UGFjayIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJveFJlZmxlY3RHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdEJveFJlZmxlY3QpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJveFJlZmxlY3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94UmVmbGVjdEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEJv
eFJlZmxlY3QiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCb3hSZWZsZWN0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hSZWZsZWN0LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJveFJlZmxlY3RTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIndlYmtpdEJveFJlZmxlY3QiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hTaGFkb3dHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdykpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94U2hhZG93LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveFNoYWRvd0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIndlYmtpdEJveFNoYWRvdyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveFNoYWRvd1NldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dEJveFNoYWRvdywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRCb3hTaGFkb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94U2hhZG93U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRCb3hTaGFkb3ciKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hTaXppbmdH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJveFNpemluZykpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94U2l6
aW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveFNp
emluZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEJveFNpemluZyIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveFNpemluZ1NldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJveFNpemluZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCb3hTaXppbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94U2l6aW5nU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRCb3hTaXppbmciKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDbGlwUGF0
aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q2xpcFBhdGgpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENsaXBQ
YXRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENsaXBQ
YXRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Q2xpcFBhdGgiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDbGlwUGF0aFNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUNsaXBQYXRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdENsaXBQYXRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdENsaXBQYXRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRDbGlwUGF0aCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkF4aXNHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkF4aXMpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENv
bHVtbkF4aXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
Q29sdW1uQXhpc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdENvbHVtbkF4aXMiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5BeGlzU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQXhpcywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5BeGlzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkF4aXNTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtp
dENvbHVtbkF4aXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRDb2x1bW5CcmVha0FmdGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5CcmVha0FmdGVyLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkJyZWFrQWZ0
ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRDb2x1bW5CcmVha0FmdGVyIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uQnJlYWtBZnRl
clNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uQnJlYWtBZnRlciwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRDb2x1bW5CcmVha0FmdGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRDb2x1bW5CcmVha0FmdGVyIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uQnJlYWtCZWZvcmVH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVm
b3JlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5CcmVha0JlZm9yZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtp
dENvbHVtbkJyZWFrQmVmb3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0Q29sdW1uQnJlYWtCZWZvcmVTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5CcmVha0JlZm9yZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5CcmVha0JlZm9yZVNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Vi
a2l0Q29sdW1uQnJlYWtCZWZvcmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5CcmVha0luc2lkZUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkJyZWFr
SW5zaWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENv
bHVtbkJyZWFrSW5zaWRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Q29sdW1uQnJlYWtJbnNpZGUi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRD
b2x1bW5CcmVha0luc2lkZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkJy
ZWFrSW5zaWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkJyZWFrSW5zaWRlU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRDb2x1bW5CcmVha0luc2lk
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dENvbHVtbkNvdW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5D
b3VudCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0Q29sdW1uQ291bnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Q29sdW1uQ291bnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRDb2x1bW5Db3Vu
dCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dENvbHVtbkNvdW50U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uQ291bnQsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uQ291bnQsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29s
dW1uQ291bnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIndlYmtpdENvbHVtbkNvdW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uRmlsbEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Q29sdW1uRmlsbCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uRmlsbCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5GaWxsR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAid2Via2l0Q29sdW1uRmlsbCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkZpbGxTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5GaWxsLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkZp
bGwsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Q29sdW1uRmlsbFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Q29sdW1uRmlsbCIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkdhcEdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uR2FwKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5HYXAsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uR2FwR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAid2Via2l0Q29sdW1uR2FwIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uR2FwU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1u
R2FwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENv
bHVtbkdhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5HYXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdENvbHVtbkdhcCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblByb2dyZXNzaW9u
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Qcm9ncmVz
c2lvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0Q29sdW1uUHJvZ3Jlc3Npb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUHJvZ3Jlc3Npb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJr
aXRDb2x1bW5Qcm9ncmVzc2lvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblByb2dyZXNzaW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uUHJvZ3Jlc3Npb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Q29sdW1uUHJvZ3Jlc3Npb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUHJvZ3Jlc3Npb25T
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndl
YmtpdENvbHVtblByb2dyZXNzaW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUnVsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Q29sdW1uUnVsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUnVsZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5SdWxlR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
d2Via2l0Q29sdW1uUnVsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5SdWxlLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGUs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0Q29sdW1uUnVsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Q29sdW1uUnVsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVDb2xvckdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZUNvbG9yKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5S
dWxlQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
Q29sdW1uUnVsZUNvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Q29sdW1uUnVsZUNvbG9yIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29s
dW1uUnVsZUNvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZUNvbG9yLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVDb2xvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRDb2x1bW5SdWxlQ29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdENvbHVtblJ1bGVDb2xvciIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVTdHlsZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZVN0eWxlKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRD
b2x1bW5SdWxlU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0Q29sdW1uUnVsZVN0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Q29sdW1uUnVsZVN0
eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0Q29sdW1uUnVsZVN0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZVN0eWxlLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVTdHls
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRDb2x1bW5SdWxlU3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdENvbHVtblJ1bGVTdHlsZSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVX
aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZVdpZHRo
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRDb2x1bW5SdWxlV2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Q29sdW1uUnVsZVdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Q29sdW1u
UnVsZVdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0Q29sdW1uUnVsZVdpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZVdpZHRoLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1
bGVXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5SdWxlV2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdENvbHVtblJ1bGVXaWR0aCIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVt
blNwYW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtblNwYW4pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dENvbHVtblNwYW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0Q29sdW1uU3BhbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdENvbHVtblNwYW4iKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5TcGFu
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Q29sdW1uU3BhbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5TcGFuLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblNwYW5TZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdENv
bHVtblNwYW4iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRDb2x1bW5XaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Q29sdW1uV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdENvbHVtbldpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbldpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Q29s
dW1uV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRDb2x1bW5XaWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbldpZHRoLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbldpZHRoLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdENvbHVtbldpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJ3ZWJraXRDb2x1bW5XaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbnNHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbnMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbnMsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uc0dldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndl
YmtpdENvbHVtbnMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRDb2x1bW5zU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1ucywgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5zLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVt
bnNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IndlYmtpdENvbHVtbnMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRDdXJzb3JWaXNpYmlsaXR5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRDdXJzb3JWaXNpYmlsaXR5KSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDdXJzb3JWaXNpYmlsaXR5LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEN1cnNvclZpc2li
aWxpdHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRDdXJzb3JWaXNpYmlsaXR5Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q3Vyc29yVmlzaWJp
bGl0eVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEN1cnNvclZpc2liaWxpdHksIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q3Vyc29yVmlzaWJpbGl0eSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRDdXJzb3JWaXNpYmlsaXR5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRDdXJzb3JWaXNpYmlsaXR5Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmlsdGVyR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGaWx0ZXIpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZpbHRlciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGaWx0ZXJHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJ3ZWJraXRGaWx0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRGaWx0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGaWx0ZXIsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmlsdGVyLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZp
bHRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAid2Via2l0RmlsdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0RmxleEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
RmxleCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0RmxleCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRGbGV4R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0RmxleCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlG
bGV4LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZs
ZXgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0RmxleFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAid2Via2l0RmxleCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhCYXNpc0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5RmxleEJhc2lzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4QmFzaXMsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleEJhc2lzR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
d2Via2l0RmxleEJhc2lzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0RmxleEJhc2lzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEJhc2lzLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhCYXNpcywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRGbGV4QmFzaXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIndlYmtpdEZsZXhCYXNpcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhEaXJlY3Rpb25HZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhEaXJlY3Rpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhEaXJlY3Rpb24sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleERpcmVjdGlv
bkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEZsZXhEaXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4RGlyZWN0aW9uU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5RmxleERpcmVjdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRGbGV4RGlyZWN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhEaXJlY3Rpb25TZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtp
dEZsZXhEaXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRGbGV4Rmxvd0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5RmxleEZsb3cpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEZsZXhGbG93LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEZsZXhGbG93R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0RmxleEZsb3ci
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRG
bGV4Rmxvd1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhGbG93LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhGbG93LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhGbG93U2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRG
bGV4RmxvdyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEZsZXhHcm93R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4
R3JvdykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0RmxleEdyb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0RmxleEdyb3dHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRGbGV4R3JvdyIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhHcm93
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5RmxleEdyb3csIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0RmxleEdyb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleEdyb3dTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEZsZXhHcm93
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
RmxleFNocmlua0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleFNocmlu
aykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0RmxleFNocmluaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRGbGV4U2hyaW5rR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0RmxleFNocmluayIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhT
aHJpbmtTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4U2hyaW5rLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhTaHJpbmssIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleFNocmlua1Nl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Vi
a2l0RmxleFNocmluayIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdEZsZXhXcmFwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlGbGV4V3JhcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0RmxleFdyYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0RmxleFdyYXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRGbGV4V3JhcCIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZs
ZXhXcmFwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5RmxleFdyYXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleFdyYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleFdyYXBTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEZs
ZXhXcmFwIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0Rm9udEtlcm5pbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdEZvbnRLZXJuaW5nKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRGb250S2VybmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGb250S2VybmluZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtp
dEZvbnRLZXJuaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Rm9udEtlcm5pbmdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRGb250S2VybmluZywg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGb250S2Vy
bmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRGb250S2VybmluZ1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Rm9udEtlcm5pbmciKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGb250U21vb3RoaW5nR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRGb250U21vb3RoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEZvbnRTbW9vdGhpbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRGb250U21vb3RoaW5n
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
Rm9udFNtb290aGluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmcsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Rm9udFNtb290aGluZywg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRGb250U21vb3RoaW5nU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRGb250U21vb3RoaW5nIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVy
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFy
YWN0ZXIpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXJHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3
ZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXJTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUNo
YXJhY3RlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAid2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlTGltaXRBZnRlckdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRBZnRlcikp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0SHlwaGVuYXRlTGltaXRBZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRIeXBoZW5hdGVMaW1pdEFmdGVyR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0
SHlwaGVuYXRlTGltaXRBZnRlciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0QWZ0ZXJTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRIeXBoZW5hdGVMaW1pdEFmdGVyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0QWZ0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlTGlt
aXRBZnRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAid2Via2l0SHlwaGVuYXRlTGltaXRBZnRlciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0QmVmb3JlR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdEJlZm9y
ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3
ZWJraXRIeXBoZW5hdGVMaW1pdEJlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0QmVmb3JlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmUsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SHlw
aGVuYXRlTGltaXRCZWZvcmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIndlYmtpdEh5cGhlbmF0ZUxpbWl0QmVmb3JlIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlTGltaXRM
aW5lc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRl
TGltaXRMaW5lcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAid2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXNTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
SHlwaGVuYXRlTGltaXRMaW5lc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbnNHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbnMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SHlwaGVuc0dl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIndlYmtpdEh5cGhlbnMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRIeXBoZW5zU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0
SHlwaGVucywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRIeXBoZW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbnNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEh5cGhlbnMiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRJbml0aWFsTGV0dGVyR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRJbml0aWFsTGV0dGVyKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRJ
bml0aWFsTGV0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEluaXRpYWxMZXR0ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRJbml0aWFsTGV0dGVyIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SW5p
dGlhbExldHRlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEluaXRpYWxMZXR0ZXIsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SW5pdGlhbExldHRlciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRJbml0aWFsTGV0dGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRJbml0aWFsTGV0dGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SnVzdGlmeUNvbnRlbnRHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1c3RpZnlDb250ZW50KSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRKdXN0aWZ5
Q29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRK
dXN0aWZ5Q29udGVudEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEp1c3RpZnlDb250ZW50Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SnVzdGlm
eUNvbnRlbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlKdXN0aWZ5Q29udGVudCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRKdXN0aWZ5Q29udGVudCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRK
dXN0aWZ5Q29udGVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAid2Via2l0SnVzdGlmeUNvbnRlbnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRKdXN0aWZ5SXRlbXNHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1c3RpZnlJdGVtcykpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SnVzdGlmeUl0ZW1zLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEp1c3RpZnlJdGVt
c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEp1c3RpZnlJdGVtcyIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEp1c3RpZnlJdGVtc1NldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUp1c3RpZnlJdGVtcywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRKdXN0aWZ5SXRlbXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SnVzdGlmeUl0ZW1zU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRKdXN0
aWZ5SXRlbXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRMaW5lQWxpZ25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdExpbmVBbGlnbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0TGluZUFsaWduLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdExpbmVBbGlnbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdExpbmVB
bGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdExpbmVBbGlnblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVBbGlnbiwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lQWxpZ24sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TGluZUFsaWduU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJ3ZWJraXRMaW5lQWxpZ24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lQm94Q29udGFpbkdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUJveENvbnRhaW4pKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVCb3hDb250YWlu
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVCb3hD
b250YWluR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TGluZUJveENvbnRhaW4iKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lQm94Q29udGFp
blNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVCb3hDb250YWluLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVCb3hDb250YWluLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExp
bmVCb3hDb250YWluU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJ3ZWJraXRMaW5lQm94Q29udGFpbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVCcmVha0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFrKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lQnJlYWssIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUJyZWFrR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAid2Via2l0TGluZUJyZWFrIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUJyZWFrU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFrLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVCcmVh
aywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRMaW5lQnJlYWtTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdExpbmVCcmVhayIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVDbGFtcEdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lQ2xhbXAsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUNsYW1wR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAid2Via2l0TGluZUNsYW1wIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUNsYW1wU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0TGluZUNsYW1wLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdExpbmVDbGFtcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lQ2xhbXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdExpbmVDbGFtcCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVHcmlk
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRMaW5lR3JpZCkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TGluZUdyaWQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TGluZUdyaWRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRMaW5lR3JpZCIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVHcmlkU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0TGluZUdyaWQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0TGluZUdyaWQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUdyaWRTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdExpbmVHcmlkIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGlu
ZVNuYXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVTbmFw
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRMaW5lU25hcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRMaW5lU25hcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdExpbmVTbmFwIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZVNuYXBTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRMaW5lU25hcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lU25hcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lU25hcFNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TGluZVNu
YXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRMb2NhbGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdExvY2Fs
ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TG9jYWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdExvY2FsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdExvY2FsZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExvY2FsZVNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdExvY2FsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRMb2NhbGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TG9jYWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRMb2NhbGUiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMb2dpY2FsSGVpZ2h0
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCbG9ja1NpemUpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExvZ2lj
YWxIZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TG9naWNhbEhlaWdodEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdExvZ2ljYWxIZWlnaHQiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMb2dpY2Fs
SGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5QmxvY2tTaXplLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExvZ2ljYWxIZWlnaHQsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TG9naWNhbEhl
aWdodFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAid2Via2l0TG9naWNhbEhlaWdodCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdExvZ2ljYWxXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5SW5saW5lU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TG9naWNhbFdpZHRoLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExvZ2ljYWxXaWR0aEdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIndlYmtpdExvZ2ljYWxXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExvZ2ljYWxXaWR0aFNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlubGlu
ZVNpemUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TG9naWNhbFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdExvZ2ljYWxXaWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TG9naWNhbFdpZHRoIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2lu
QWZ0ZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbkJsb2NrRW5k
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRNYXJnaW5BZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRNYXJnaW5BZnRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1hcmdpbkFmdGVyIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFy
Z2luQWZ0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9ja0VuZCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5BZnRlciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJn
aW5BZnRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAid2Via2l0TWFyZ2luQWZ0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJn
aW5BZnRlckNvbGxhcHNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRNYXJnaW5B
ZnRlckNvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkFmdGVyQ29sbGFwc2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5BZnRlckNvbGxhcHNl
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3
ZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luQmVmb3JlR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9ja1N0YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5CZWZvcmUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luQmVmb3JlR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAid2Via2l0TWFyZ2luQmVmb3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luQmVmb3JlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5TWFyZ2luQmxvY2tTdGFydCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRNYXJnaW5CZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luQmVmb3JlU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRNYXJn
aW5CZWZvcmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkJlZm9yZUNvbGxh
cHNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdp
bkJlZm9yZUNvbGxhcHNlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWFyZ2luQmVmb3JlQ29sbGFw
c2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRNYXJnaW5CZWZvcmVDb2xsYXBzZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNv
bGxhcHNlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dE1hcmdpbkJlZm9yZUNvbGxhcHNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRN
YXJnaW5CZWZvcmVDb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2lu
Qm90dG9tQ29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRNYXJnaW5C
b3R0b21Db2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQm90dG9tQ29sbGFwc2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luQm90dG9tQ29s
bGFwc2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIndlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luQ29sbGFwc2VHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5D
b2xsYXBzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRN
YXJnaW5Db2xsYXBzZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1hcmdpbkNvbGxhcHNlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2lu
Q29sbGFwc2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5Db2xsYXBzZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRNYXJnaW5Db2xsYXBzZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TWFyZ2luQ29sbGFwc2UiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5FbmRHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbklubGluZUVuZCkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luRW5k
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkVu
ZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1hcmdpbkVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkVuZFNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eU1hcmdpbklubGluZUVuZCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRNYXJnaW5FbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luRW5kU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRNYXJnaW5FbmQiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJn
aW5TdGFydEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luSW5saW5l
U3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdE1hcmdpblN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hcmdpblN0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWFyZ2luU3Rh
cnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRNYXJnaW5TdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbklubGluZVN0YXJ0LCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpblN0YXJ0LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdE1hcmdpblN0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJ3ZWJraXRNYXJnaW5TdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpblRvcENvbGxhcHNlR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TWFyZ2luVG9wQ29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TWFyZ2luVG9wQ29sbGFwc2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRNYXJnaW5U
b3BDb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdE1hcmdpblRvcENvbGxhcHNlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9w
Q29sbGFwc2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0TWFyZ2luVG9wQ29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luVG9wQ29sbGFwc2VTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdE1hcmdp
blRvcENvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0TWFza0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0TWFzaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0TWFzaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRNYXNrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWFzayIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdE1hc2ssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TWFzayIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94
SW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFz
a0JveEltYWdlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWFza0JveEltYWdlIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdl
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZSwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94
SW1hZ2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIndlYmtpdE1hc2tCb3hJbWFnZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZU91dHNldEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlT3V0c2V0KSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94
SW1hZ2VPdXRzZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0TWFza0JveEltYWdlT3V0c2V0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWFza0JveEltYWdl
T3V0c2V0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TWFza0JveEltYWdlT3V0c2V0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdl
T3V0c2V0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dE1hc2tCb3hJbWFnZU91dHNldCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VPdXRzZXRTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdE1hc2tC
b3hJbWFnZU91dHNldCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlUmVwZWF0KSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VSZXBl
YXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0Jv
eEltYWdlUmVwZWF0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWFza0JveEltYWdlUmVwZWF0Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFz
a0JveEltYWdlUmVwZWF0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlUmVwZWF0LCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJ
bWFnZVJlcGVhdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VSZXBlYXRTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdE1hc2tCb3hJbWFnZVJl
cGVhdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdE1hc2tCb3hJbWFnZVNsaWNlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlU2xpY2UsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlU2xpY2VH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRNYXNrQm94SW1hZ2VTbGljZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZVNsaWNl
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU2xpY2UsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlU2xpY2UsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0TWFza0JveEltYWdlU2xpY2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdE1hc2tCb3hJbWFnZVNsaWNlIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlU291
cmNlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1h
Z2VTb3VyY2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VTb3VyY2VHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJ3ZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VTb3VyY2VTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlU291cmNlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJ
bWFnZVNvdXJjZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAid2Via2l0TWFza0JveEltYWdlU291cmNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlV2lkdGhHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVdpZHRoKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRNYXNrQm94SW1hZ2VXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRNYXNrQm94SW1hZ2VXaWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1hc2tC
b3hJbWFnZVdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0TWFza0JveEltYWdlV2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94
SW1hZ2VXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRNYXNrQm94SW1hZ2VXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VXaWR0aFNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TWFz
a0JveEltYWdlV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRNYXNrQ2xpcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0TWFza0NsaXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tDbGlwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tDbGlwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWFz
a0NsaXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRNYXNrQ2xpcFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tDbGlwLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1h
c2tDbGlwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJ3ZWJraXRNYXNrQ2xpcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tDb21wb3NpdGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tDb21wb3NpdGUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0NvbXBvc2l0ZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1hc2tDb21wb3NpdGUiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQ29tcG9zaXRlU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQ29tcG9zaXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tDb21wb3NpdGVT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndl
YmtpdE1hc2tDb21wb3NpdGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRNYXNrSW1hZ2VHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0ltYWdlLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tJbWFnZUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndl
YmtpdE1hc2tJbWFnZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hc2tJbWFnZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrSW1hZ2Us
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TWFza0ltYWdlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRNYXNrSW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrT3JpZ2luR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrT3JpZ2luLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tPcmlnaW5H
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRNYXNrT3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza09yaWdpblNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tPcmlnaW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0TWFza09yaWdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrT3JpZ2luU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRNYXNrT3JpZ2lu
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TWFza1Bvc2l0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRN
YXNrUG9zaXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdE1hc2tQb3NpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrUG9zaXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRN
YXNrUG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRNYXNrUG9zaXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24s
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza1Bv
c2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdE1hc2tQb3NpdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TWFza1Bvc2l0aW9uIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza1Bvc2l0aW9u
WEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
WCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TWFza1Bvc2l0aW9uWCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRNYXNrUG9zaXRpb25YR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWFza1Bvc2l0
aW9uWCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdE1hc2tQb3NpdGlvblhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tQb3NpdGlv
blgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0TWFza1Bvc2l0aW9uWFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TWFza1Bvc2l0aW9uWCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tQb3NpdGlvbllH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdE1hc2tQb3NpdGlvblksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TWFza1Bvc2l0aW9uWUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1hc2tQb3NpdGlv
blkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRNYXNrUG9zaXRpb25ZU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrUG9zaXRpb25Z
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdE1hc2tQb3NpdGlvbllTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdE1hc2tQb3NpdGlvblkiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrUmVwZWF0R2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0KSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNr
UmVwZWF0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1h
c2tSZXBlYXRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRNYXNrUmVwZWF0Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza1JlcGVhdFNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza1JlcGVhdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrUmVwZWF0U2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRN
YXNrUmVwZWF0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TWFza1NpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRNYXNrU2l6ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRNYXNrU2l6ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1hc2tTaXpl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TWFza1NpemVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrU2l6ZSwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrU2l6
ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
d2Via2l0TWFza1NpemUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRNYXNrU291cmNlVHlwZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0TWFza1NvdXJjZVR5cGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tTb3VyY2VUeXBlLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tTb3VyY2VUeXBlR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAid2Via2l0TWFza1NvdXJjZVR5cGUiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrU291cmNlVHlwZVNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tTb3VyY2VUeXBlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tTb3VyY2VUeXBlLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tTb3VyY2VU
eXBlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJ3ZWJraXRNYXNrU291cmNlVHlwZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdE1heExvZ2ljYWxIZWlnaHRHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU1heEJsb2NrU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4TG9naWNhbEhlaWdodCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXhMb2dpY2FsSGVp
Z2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWF4TG9naWNhbEhlaWdodCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1heExvZ2ljYWxIZWln
aHRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlNYXhCbG9ja1NpemUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4TG9naWNhbEhlaWdodCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXhMb2dp
Y2FsSGVpZ2h0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJ3ZWJraXRNYXhMb2dpY2FsSGVpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4TG9naWNhbFdpZHRoR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXhJbmxpbmVTaXplKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXhMb2dpY2FsV2lk
dGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4TG9n
aWNhbFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWF4TG9naWNhbFdpZHRoIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4TG9naWNh
bFdpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5TWF4SW5saW5lU2l6ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXhMb2dpY2FsV2lkdGgsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4
TG9naWNhbFdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJ3ZWJraXRNYXhMb2dpY2FsV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNaW5Mb2dpY2FsSGVpZ2h0R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNaW5CbG9ja1NpemUpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1pbkxvZ2ljYWxI
ZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWlu
TG9naWNhbEhlaWdodEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1pbkxvZ2ljYWxIZWlnaHQiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNaW5M
b2dpY2FsSGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWluQmxvY2tTaXplLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1pbkxvZ2ljYWxIZWlnaHQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0TWluTG9naWNhbEhlaWdodFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TWluTG9naWNhbEhlaWdodCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1pbkxvZ2ljYWxXaWR0aEdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWluSW5saW5lU2l6ZSkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWlu
TG9naWNhbFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdE1pbkxvZ2ljYWxXaWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1pbkxvZ2ljYWxXaWR0
aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dE1pbkxvZ2ljYWxXaWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1pbklubGluZVNpemUsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWluTG9naWNhbFdpZHRoLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdE1pbkxvZ2ljYWxXaWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TWluTG9naWNhbFdpZHRoIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TmJzcE1vZGVHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXROYnNwTW9k
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXROYnNwTW9k
ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE5ic3BNb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TmJzcE1vZGVTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXROYnNwTW9kZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXROYnNwTW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXROYnNwTW9kZVNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TmJzcE1vZGUiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRPcGFjaXR5R2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPcGFjaXR5KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRPcGFjaXR5LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE9wYWNpdHlHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ3ZWJraXRPcGFjaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0T3BhY2l0eVNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU9wYWNpdHks
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0T3BhY2l0
eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRPcGFjaXR5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRPcGFjaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0T3JkZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eU9yZGVyKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRPcmRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRPcmRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE9yZGVy
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
T3JkZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlPcmRlciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRPcmRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRPcmRlclNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0T3JkZXIiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRkaW5n
QWZ0ZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdCbG9ja0Vu
ZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0UGFkZGluZ0FmdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFBhZGRpbmdBZnRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdFBhZGRpbmdBZnRl
ciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dFBhZGRpbmdBZnRlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdCbG9ja0VuZCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRkaW5nQWZ0ZXIsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0UGFkZGluZ0FmdGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJ3ZWJraXRQYWRkaW5nQWZ0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRkaW5nQmVmb3JlR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nQmxvY2tTdGFydCkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGluZ0Jl
Zm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRk
aW5nQmVmb3JlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0UGFkZGluZ0JlZm9yZSIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBhZGRpbmdCZWZv
cmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nQmxvY2tTdGFydCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRkaW5nQmVmb3JlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBhZGRp
bmdCZWZvcmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIndlYmtpdFBhZGRpbmdCZWZvcmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRkaW5nRW5kR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5lRW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRkaW5nRW5kLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBhZGRpbmdFbmRHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJ3ZWJraXRQYWRkaW5nRW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGluZ0VuZFNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRp
bmdJbmxpbmVFbmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0UGFkZGluZ0VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRkaW5nRW5kU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRQYWRkaW5nRW5kIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGlu
Z1N0YXJ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5l
U3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFBhZGRpbmdTdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRQYWRkaW5nU3RhcnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRQYWRkaW5n
U3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRQYWRkaW5nU3RhcnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5lU3RhcnQsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGluZ1N0YXJ0
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFBhZGRpbmdTdGFydFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0UGFkZGluZ1N0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGVyc3BlY3RpdmVHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVj
dGl2ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdFBlcnNwZWN0aXZlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGVyc3BlY3RpdmVTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlQZXJzcGVjdGl2ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0UGVyc3Bl
Y3RpdmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5UGVyc3BlY3RpdmVPcmlnaW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAid2Via2l0UGVyc3BlY3RpdmVPcmlnaW4iKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZU9yaWdpblNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVBlcnNwZWN0aXZlT3JpZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBlcnNwZWN0
aXZlT3JpZ2luU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJ3ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWEdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW5YKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJz
cGVjdGl2ZU9yaWdpblgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0UGVyc3BlY3Rp
dmVPcmlnaW5YIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmln
aW5YLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBl
cnNwZWN0aXZlT3JpZ2luWCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZU9yaWdpblhTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdFBlcnNwZWN0
aXZlT3JpZ2luWCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW5ZKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZU9yaWdpblksIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGVyc3BlY3RpdmVPcmln
aW5ZR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGVyc3BlY3RpdmVP
cmlnaW5ZU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW5ZLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbllTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFByaW50Q29sb3JB
ZGp1c3RHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29s
b3JBZGp1c3QpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdFByaW50Q29sb3JBZGp1c3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0UHJpbnRDb2xvckFkanVzdEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndl
YmtpdFByaW50Q29sb3JBZGp1c3QiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRQcmludENvbG9yQWRqdXN0U2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0
UHJpbnRDb2xvckFkanVzdCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRQcmludENvbG9yQWRqdXN0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFByaW50Q29sb3JBZGp1c3RTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtp
dFByaW50Q29sb3JBZGp1c3QiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRSdGxPcmRlcmluZ0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFJ0bE9yZGVyaW5nLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFJ0bE9yZGVyaW5nR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAid2Via2l0UnRsT3JkZXJpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRSdGxPcmRlcmluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFJ0
bE9yZGVyaW5nLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFJ0bE9yZGVyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFJ0bE9yZGVyaW5nU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRSdGxPcmRlcmluZyIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFJ1YnlQ
b3NpdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0UnVieVBv
c2l0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRSdWJ5UG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0UnVieVBvc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0UnVieVBv
c2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0UnVieVBvc2l0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFJ1YnlQb3NpdGlv
biwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRSdWJ5UG9zaXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdFJ1YnlQb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBlSW1hZ2VUaHJlc2hv
bGRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNoYXBlSW1hZ2VUaHJlc2hv
bGQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0U2hhcGVJbWFnZVRocmVzaG9sZEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndl
YmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRTaGFwZUltYWdlVGhyZXNob2xkU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
U2hhcGVJbWFnZVRocmVzaG9sZCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRTaGFwZUltYWdlVGhyZXNob2xkLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBlSW1hZ2VUaHJl
c2hvbGRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIndlYmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRTaGFwZU1hcmdpbkdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVNYXJnaW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBlTWFyZ2luLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBlTWFyZ2luR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAid2Via2l0U2hhcGVNYXJnaW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRTaGFwZU1hcmdpblNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNo
YXBlTWFyZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFNoYXBlTWFyZ2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBlTWFyZ2luU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRTaGFwZU1hcmdpbiIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBl
T3V0c2lkZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVPdXRzaWRl
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRTaGFwZU91dHNpZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0U2hhcGVPdXRzaWRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0U2hhcGVPdXRzaWRl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
U2hhcGVPdXRzaWRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVPdXRzaWRlLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBlT3V0c2lkZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRT
aGFwZU91dHNpZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIndlYmtpdFNoYXBlT3V0c2lkZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRDb21iaW5lR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dENvbWJpbmUsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dENvbWJpbmVH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUZXh0Q29tYmluZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRDb21iaW5lU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0VGV4dENvbWJpbmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0VGV4dENvbWJpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dENvbWJpbmVTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdFRleHRD
b21iaW5lIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0VGV4dERlY29yYXRpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVdlYmtpdFRleHREZWNvcmF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbiwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbkdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIndlYmtpdFRleHREZWNvcmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25TZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RGVjb3JhdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvblNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0
VGV4dERlY29yYXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHREZWNv
cmF0aW9uQ29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4
dERlY29yYXRpb25Db2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uQ29sb3IsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRp
b25Db2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRUZXh0RGVjb3JhdGlvbkNv
bG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0VGV4dERlY29yYXRpb25MaW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlUZXh0RGVjb3JhdGlvbkxpbmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHREZWNvcmF0aW9uTGluZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbkxpbmVHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ3ZWJraXRUZXh0RGVjb3JhdGlvbkxpbmUiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbkxpbmVT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkxpbmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25MaW5lLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRl
eHREZWNvcmF0aW9uTGluZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAid2Via2l0VGV4dERlY29yYXRpb25MaW5lIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25Ta2lw
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblNraXAp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFRleHREZWNvcmF0aW9uU2tpcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvblNraXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRU
ZXh0RGVjb3JhdGlvblNraXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvblNraXBTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVj
b3JhdGlvblNraXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0VGV4dERlY29yYXRpb25Ta2lwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHREZWNvcmF0aW9uU2tpcFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0
VGV4dERlY29yYXRpb25Ta2lwIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25TdHlsZUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25TdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25T
dHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0
RGVjb3JhdGlvblN0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0VGV4dERlY29yYXRpb25TdHls
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dFRleHREZWNvcmF0aW9uU3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblN0eWxlLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHREZWNv
cmF0aW9uU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25TdHlsZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VGV4dERlY29yYXRp
b25TdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRp
b25zSW5FZmZlY3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3RHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0U2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4
dERlY29yYXRpb25zSW5FZmZlY3RTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dEVtcGhh
c2lzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFz
aXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRleHRFbXBoYXNpcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRUZXh0RW1waGFzaXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUZXh0RW1waGFz
aXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRUZXh0RW1waGFzaXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dEVtcGhhc2lzLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRleHRFbXBoYXNpc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VGV4dEVtcGhhc2lzIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dEVtcGhhc2lzQ29sb3JHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9y
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRUZXh0RW1waGFzaXNDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdFRl
eHRFbXBoYXNpc0NvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0VGV4dEVtcGhhc2lzQ29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXNDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRUZXh0RW1waGFzaXNDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNDb2xvclNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0
VGV4dEVtcGhhc2lzQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbkdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb24pKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRFbXBo
YXNpc1Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0VGV4dEVtcGhh
c2lzUG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpc1Bvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRFbXBoYXNpc1Bvc2l0
aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJ3ZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRFbXBoYXNpc1N0eWxlR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4
dEVtcGhhc2lzU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0VGV4dEVtcGhhc2lzU3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUZXh0RW1waGFz
aXNTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRleHRFbXBoYXNpc1N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lz
U3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VGV4dEVtcGhhc2lzU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dEVtcGhhc2lzU3R5bGVTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdFRleHRFbXBo
YXNpc1N0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0VGV4dEZpbGxDb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0VGV4dEZpbGxDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dEZpbGxDb2xvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RmlsbENvbG9yR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAid2Via2l0VGV4dEZpbGxDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRGaWxsQ29sb3JTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RmlsbENvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFRleHRGaWxsQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dEZpbGxDb2xvclNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VGV4dEZp
bGxDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRleHRPcmllbnRhdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0VGV4dE9yaWVudGF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0T3JpZW50YXRpb24sIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dE9yaWVudGF0aW9uR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAid2Via2l0VGV4dE9yaWVudGF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dE9yaWVudGF0aW9uU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRPcmllbnRhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0T3JpZW50
YXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIndlYmtpdFRleHRPcmllbnRhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTZWN1cml0eUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5KSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U2VjdXJpdHksIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFNlY3VyaXR5
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAid2Via2l0VGV4dFNlY3VyaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFNlY3VyaXR5U2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTZWN1cml0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U2VjdXJpdHlTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtp
dFRleHRTZWN1cml0eSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdFRleHRTaXplQWRqdXN0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFNpemVBZGp1c3QsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFNpemVBZGp1c3RHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ3ZWJraXRUZXh0U2l6ZUFkanVzdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTaXplQWRqdXN0U2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3QsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFNpemVBZGp1c3QsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFNpemVBZGp1
c3RTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IndlYmtpdFRleHRTaXplQWRqdXN0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U3Ryb2tlR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAid2Via2l0VGV4dFN0cm9rZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTdHJva2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0
U3Ryb2tlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dFRleHRTdHJva2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VGV4dFN0cm9rZSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTdHJva2VD
b2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9r
ZUNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRUZXh0U3Ryb2tlQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZUNvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0
VGV4dFN0cm9rZUNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZUNvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZUNvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFRleHRTdHJva2VDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U3Ryb2tlQ29sb3JTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdFRleHRTdHJv
a2VDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRleHRTdHJva2VXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U3Ryb2tlV2lkdGgsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZVdpZHRoR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAid2Via2l0VGV4dFN0cm9rZVdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZVdpZHRoU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTdHJva2VXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U3Ryb2tl
V2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIndlYmtpdFRleHRTdHJva2VXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRVbmRlcmxpbmVQb3NpdGlvbkdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVBvc2l0aW9uKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0
VW5kZXJsaW5lUG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0VGV4
dFVuZGVybGluZVBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4
dFVuZGVybGluZVBvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdFRleHRVbmRlcmxpbmVQb3NpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0VW5kZXJsaW5l
UG9zaXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIndlYmtpdFRleHRVbmRlcmxpbmVQb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRab29tR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0Wm9vbSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFpvb20sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFpvb21HZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJ3ZWJraXRUZXh0Wm9vbSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRab29tU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4
dFpvb20sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VGV4dFpvb20sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0VGV4dFpvb21TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdFRleHRab29tIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1HZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ3ZWJraXRUcmFuc2Zvcm0iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1TZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFu
c2Zvcm0sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VHJhbnNmb3JtLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VHJhbnNmb3JtIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtT3JpZ2lu
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW4pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dFRyYW5zZm9ybU9yaWdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRUcmFuc2Zvcm1PcmlnaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUcmFuc2Zvcm1P
cmlnaW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRUcmFuc2Zvcm1PcmlnaW5TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW4sIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtT3Jp
Z2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdFRyYW5zZm9ybU9yaWdpblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VHJhbnNmb3JtT3JpZ2luIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3Jt
T3JpZ2luWEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtT3Jp
Z2luWCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0VHJhbnNmb3JtT3JpZ2luWCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1PcmlnaW5YR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0
VHJhbnNmb3JtT3JpZ2luWCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybU9yaWdpblhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm1P
cmlnaW5YLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dFRyYW5zZm9ybU9yaWdpblgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtT3JpZ2luWFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VHJhbnNmb3Jt
T3JpZ2luWCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRyYW5zZm9ybU9yaWdpbllHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVRyYW5zZm9ybU9yaWdpblkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybU9yaWdpblksIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtT3JpZ2luWUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIndlYmtpdFRyYW5zZm9ybU9yaWdpblkiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1PcmlnaW5ZU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5VHJhbnNmb3JtT3JpZ2luWSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybU9yaWdp
bllTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IndlYmtpdFRyYW5zZm9ybU9yaWdpblkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1PcmlnaW5aR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5aKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1PcmlnaW5a
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9y
bU9yaWdpblpHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUcmFuc2Zvcm1PcmlnaW5aIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3Jt
T3JpZ2luWlNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblosIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtT3JpZ2luWiwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRUcmFuc2Zvcm1PcmlnaW5aU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRUcmFuc2Zvcm1PcmlnaW5aIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtU3R5bGVHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRUcmFuc2Zvcm1TdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRUcmFuc2Zvcm1TdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdFRyYW5zZm9ybVN0
eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0VHJhbnNmb3JtU3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1T
dHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1TdHlsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VHJhbnNmb3JtU3R5bGUiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9u
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFu
c2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRy
YW5zaXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUcmFuc2l0aW9uIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvblNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVRyYW5zaXRpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0VHJhbnNpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRUcmFuc2l0
aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0VHJhbnNpdGlvbkRlbGF5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlU
cmFuc2l0aW9uRGVsYXkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb25EZWxheSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uRGVsYXlHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJ3ZWJraXRUcmFuc2l0aW9uRGVsYXkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uRGVsYXlTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFu
c2l0aW9uRGVsYXksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0VHJhbnNpdGlvbkRlbGF5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb25EZWxheVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VHJhbnNp
dGlvbkRlbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uRHVyYXRp
b25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUcmFuc2l0aW9uRHVyYXRpb24iKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uRHVy
YXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb24sIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFRyYW5zaXRpb25EdXJhdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvblBy
b3BlcnR5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uUHJv
cGVydHkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uUHJvcGVydHlHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3
ZWJraXRUcmFuc2l0aW9uUHJvcGVydHkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uUHJvcGVydHlTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlU
cmFuc2l0aW9uUHJvcGVydHksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0
eVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
d2Via2l0VHJhbnNpdGlvblByb3BlcnR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb25HZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJ3ZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb25T
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9u
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1
bmN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0VXNlckRyYWdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dFVzZXJEcmFnKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRVc2VyRHJhZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRVc2VyRHJhZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdFVzZXJEcmFnIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNl
ckRyYWdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRVc2VyRHJhZywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRVc2VyRHJhZ1Nl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Vi
a2l0VXNlckRyYWciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRVc2VyTW9kaWZ5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRVc2VyTW9kaWZ5KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRVc2VyTW9kaWZ5LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFVzZXJNb2RpZnlHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJr
aXRVc2VyTW9kaWZ5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0VXNlck1vZGlmeVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNlck1vZGlm
eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRVc2VyTW9kaWZ5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRVc2VyTW9kaWZ5Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNlclNlbGVjdEdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNlclNlbGVj
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRVc2VyU2Vs
ZWN0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0VXNlclNlbGVjdCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFVzZXJTZWxlY3RTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXZWJraXRVc2VyU2VsZWN0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdFVzZXJTZWxlY3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNlclNlbGVjdFNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VXNlclNl
bGVjdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFdyaXRpbmdNb2RlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXcml0
aW5nTW9kZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0V3JpdGluZ01vZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0V3JpdGluZ01vZGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRXcml0aW5n
TW9kZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFdyaXRpbmdNb2RlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V3JpdGluZ01vZGUsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0V3JpdGluZ01vZGUsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
V3JpdGluZ01vZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIndlYmtpdFdyaXRpbmdNb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX2NvbG9yX2Rhc2hfZmlsdGVyR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBcHBsZUNvbG9yRmlsdGVyKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2Fw
cGxlX2Rhc2hfY29sb3JfZGFzaF9maWx0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX2NvbG9yX2Rhc2hfZmlsdGVyR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiLWFwcGxlLWNvbG9yLWZpbHRlciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9jb2xvcl9kYXNoX2ZpbHRlclNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUFwcGxlQ29sb3JGaWx0ZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX2NvbG9yX2Rhc2hfZmlsdGVyLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
YXBwbGVfZGFzaF9jb2xvcl9kYXNoX2ZpbHRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLWFwcGxlLWNvbG9yLWZpbHRlciIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9w
YXlfZGFzaF9idXR0b25fZGFzaF9zdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5QXBwbGVQYXlCdXR0b25TdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3BheV9kYXNoX2J1dHRvbl9k
YXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
YXBwbGVfZGFzaF9wYXlfZGFzaF9idXR0b25fZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi1h
cHBsZS1wYXktYnV0dG9uLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3BheV9kYXNoX2J1dHRvbl9kYXNoX3N0eWxl
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5QXBwbGVQYXlCdXR0b25TdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2FwcGxlX2Rhc2hfcGF5X2Rhc2hfYnV0dG9uX2Rh
c2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3BheV9kYXNoX2J1dHRvbl9kYXNoX3N0eWxlU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItYXBw
bGUtcGF5LWJ1dHRvbi1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9wYXlfZGFzaF9idXR0b25fZGFzaF90eXBlR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBcHBsZVBheUJ1dHRvblR5cGUpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
YXBwbGVfZGFzaF9wYXlfZGFzaF9idXR0b25fZGFzaF90eXBlLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9wYXlfZGFzaF9idXR0b25fZGFz
aF90eXBlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLWFwcGxlLXBheS1idXR0b24tdHlwZSIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9w
YXlfZGFzaF9idXR0b25fZGFzaF90eXBlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QXBwbGVQYXlCdXR0b25UeXBl
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVf
ZGFzaF9wYXlfZGFzaF9idXR0b25fZGFzaF90eXBlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9wYXlfZGFz
aF9idXR0b25fZGFzaF90eXBlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICItYXBwbGUtcGF5LWJ1dHRvbi10eXBlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3RyYWlsaW5n
X2Rhc2hfd29yZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QXBwbGVUcmFp
bGluZ1dvcmQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF90cmFpbGluZ19kYXNoX3dvcmQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3RyYWlsaW5nX2Rhc2hf
d29yZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIi1hcHBsZS10cmFpbGluZy13b3JkIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3RyYWls
aW5nX2Rhc2hfd29yZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFwcGxlVHJhaWxpbmdXb3JkLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF90cmFpbGlu
Z19kYXNoX3dvcmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3RyYWlsaW5nX2Rhc2hfd29yZFNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLWFwcGxlLXRy
YWlsaW5nLXdvcmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX2VwdWJfZGFzaF9jYXB0aW9uX2Rhc2hfc2lkZUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX2NhcHRpb25fZGFzaF9z
aWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9k
YXNoX2NhcHRpb25fZGFzaF9zaWRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLWVwdWItY2FwdGlvbi1zaWRl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9l
cHViX2Rhc2hfY2FwdGlvbl9kYXNoX3NpZGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDYXB0aW9uU2lkZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF9j
YXB0aW9uX2Rhc2hfc2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF9jYXB0aW9uX2Rhc2hfc2lkZVNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLWVwdWIt
Y2FwdGlvbi1zaWRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF9lcHViX2Rhc2hfaHlwaGVuc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0SHlwaGVucykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfaHlwaGVucywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF9oeXBoZW5zR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiLWVwdWItaHlwaGVucyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX2h5cGhlbnNTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRIeXBoZW5zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfZXB1Yl9kYXNoX2h5cGhlbnMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfaHlwaGVuc1NldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLWVwdWItaHlw
aGVucyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9jb21iaW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2NvbWJp
bmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rh
c2hfdGV4dF9kYXNoX2NvbWJpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItZXB1Yi10ZXh0LWNvbWJpbmUi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2Vw
dWJfZGFzaF90ZXh0X2Rhc2hfY29tYmluZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5l
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9k
YXNoX3RleHRfZGFzaF9jb21iaW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9jb21iaW5l
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICIt
ZXB1Yi10ZXh0LWNvbWJpbmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcykpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hf
dGV4dF9kYXNoX2VtcGhhc2lzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9lbXBoYXNpc0dldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi1l
cHViLXRleHQtZW1waGFzaXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9k
YXNoX3RleHRfZGFzaF9lbXBoYXNpc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiLWVwdWItdGV4dC1lbXBoYXNpcyIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFz
aF9lbXBoYXNpc19kYXNoX2NvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lz
X2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF9lcHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfY29sb3JHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICItZXB1Yi10ZXh0LWVtcGhhc2lzLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rh
c2hfY29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rh
c2hfZW1waGFzaXNfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfZW1waGFz
aXNfZGFzaF9jb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiLWVwdWItdGV4dC1lbXBoYXNpcy1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9l
bXBoYXNpc19kYXNoX3N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RW1waGFzaXNTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rh
c2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9l
cHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfc3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICIt
ZXB1Yi10ZXh0LWVtcGhhc2lzLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hf
c3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hf
ZW1waGFzaXNfZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNf
ZGFzaF9zdHlsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiLWVwdWItdGV4dC1lbXBoYXNpcy1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9vcmll
bnRhdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dE9y
aWVudGF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfb3JpZW50YXRpb24sIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX29y
aWVudGF0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLWVwdWItdGV4dC1vcmllbnRhdGlvbiIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNo
X3RleHRfZGFzaF9vcmllbnRhdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRPcmllbnRhdGlv
biwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJf
ZGFzaF90ZXh0X2Rhc2hfb3JpZW50YXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX29y
aWVudGF0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICItZXB1Yi10ZXh0LW9yaWVudGF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX3RyYW5zZm9y
bUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9l
cHViX2Rhc2hfdGV4dF9kYXNoX3RyYW5zZm9ybSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfdHJhbnNmb3JtR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiLWVwdWItdGV4dC10cmFuc2Zvcm0iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfdHJhbnNmb3Jt
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfdHJhbnNmb3JtLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfZXB1Yl9kYXNoX3RleHRfZGFzaF90cmFuc2Zvcm1TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi1lcHViLXRleHQtdHJhbnNmb3JtIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rh
c2hfd29yZF9kYXNoX2JyZWFrR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
b3JkQnJlYWspKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3dvcmRfZGFzaF9icmVhaywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF93b3JkX2Rhc2hfYnJlYWtHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICItZXB1Yi13b3JkLWJyZWFrIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfd29yZF9kYXNoX2JyZWFrU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V29yZEJyZWFrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3dvcmRfZGFzaF9icmVhaywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFz
aF93b3JkX2Rhc2hfYnJlYWtTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIi1lcHViLXdvcmQtYnJlYWsiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF93cml0aW5nX2Rhc2hfbW9k
ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V3JpdGluZ01vZGUpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1
Yl9kYXNoX3dyaXRpbmdfZGFzaF9tb2RlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3dyaXRpbmdfZGFzaF9tb2RlR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiLWVwdWItd3JpdGluZy1tb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfd3JpdGluZ19kYXNoX21vZGVTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXcml0aW5nTW9kZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX2VwdWJfZGFzaF93cml0aW5nX2Rhc2hfbW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF93
cml0aW5nX2Rhc2hfbW9kZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiLWVwdWItd3JpdGluZy1tb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9pbnRlcm5hbF9kYXNoX3RleHRfZGFzaF9h
dXRvc2l6aW5nX2Rhc2hfc3RhdHVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlJbnRlcm5hbFRleHRBdXRvc2l6aW5nU3RhdHVzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2ludGVybmFsX2Rhc2hfdGV4dF9kYXNo
X2F1dG9zaXppbmdfZGFzaF9zdGF0dXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF9pbnRlcm5hbF9kYXNoX3RleHRfZGFzaF9hdXRvc2l6aW5nX2Rhc2hfc3Rh
dHVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiLWludGVybmFsLXRleHQtYXV0b3NpemluZy1zdGF0dXMiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2ludGVy
bmFsX2Rhc2hfdGV4dF9kYXNoX2F1dG9zaXppbmdfZGFzaF9zdGF0dXNTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJ
bnRlcm5hbFRleHRBdXRvc2l6aW5nU3RhdHVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfaW50ZXJuYWxfZGFzaF90ZXh0X2Rhc2hfYXV0b3NpemluZ19k
YXNoX3N0YXR1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX2ludGVybmFsX2Rhc2hfdGV4dF9kYXNoX2F1dG9zaXppbmdfZGFz
aF9zdGF0dXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIi1pbnRlcm5hbC10ZXh0LWF1dG9zaXppbmctc3RhdHVzIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbGlnbl9k
YXNoX2NvbnRlbnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFsaWduQ29u
dGVudCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX2NvbnRlbnQsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX2NvbnRl
bnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWFsaWduLWNvbnRlbnQiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FsaWdu
X2Rhc2hfY29udGVudFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFsaWduQ29udGVudCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FsaWduX2Rhc2hf
Y29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FsaWduX2Rhc2hfY29udGVudFNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1hbGln
bi1jb250ZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX2l0ZW1zR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkl0ZW1zKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FsaWduX2Rhc2hfaXRl
bXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9hbGlnbl9kYXNoX2l0ZW1zR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1hbGlnbi1pdGVt
cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfYWxpZ25fZGFzaF9pdGVtc1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFsaWduSXRlbXMsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9hbGlnbl9kYXNoX2l0ZW1zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWxpZ25fZGFzaF9pdGVtc1Nl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdl
YmtpdC1hbGlnbi1pdGVtcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWxpZ25fZGFzaF9zZWxmR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnblNlbGYpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWxpZ25fZGFz
aF9zZWxmLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfYWxpZ25fZGFzaF9zZWxmR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1hbGlnbi1z
ZWxmIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX3NlbGZTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnblNlbGYsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9hbGlnbl9kYXNoX3NlbGYsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX3NlbGZTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJr
aXQtYWxpZ24tc2VsZiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWx0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlBbHQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWx0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWx0R2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdl
YmtpdC1hbHQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2FsdFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFsdCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FsdCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2FsdFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1hbHQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbkdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1h
dGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2FuaW1hdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYW5pbWF0aW9uIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9hbmltYXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb24sIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb24sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtYW5pbWF0aW9uIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmlt
YXRpb25fZGFzaF9kZWxheUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5p
bWF0aW9uRGVsYXkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfZGVsYXksIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRp
b25fZGFzaF9kZWxheUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYW5pbWF0aW9uLWRlbGF5Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9hbmltYXRpb25fZGFzaF9kZWxheVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkRlbGF5
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfZGVsYXksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25f
ZGFzaF9kZWxheVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiLXdlYmtpdC1hbmltYXRpb24tZGVsYXkiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNo
X2RpcmVjdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9u
RGlyZWN0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2RpcmVjdGlvbiwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1h
dGlvbl9kYXNoX2RpcmVjdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYW5pbWF0aW9uLWRp
cmVjdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfZGlyZWN0aW9uU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
QW5pbWF0aW9uRGlyZWN0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfZGlyZWN0aW9uLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfZGlyZWN0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWFuaW1hdGlvbi1kaXJl
Y3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2R1cmF0aW9uR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25EdXJhdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmlt
YXRpb25fZGFzaF9kdXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2R1cmF0aW9uR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNo
X2R1cmF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uRHVyYXRpb24sIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25f
ZGFzaF9kdXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2R1cmF0aW9u
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICIt
d2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfZmlsbF9k
YXNoX21vZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkZp
bGxNb2RlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2ZpbGxfZGFzaF9tb2RlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5p
bWF0aW9uX2Rhc2hfZmlsbF9kYXNoX21vZGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWFuaW1h
dGlvbi1maWxsLW1vZGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2ZpbGxfZGFzaF9tb2RlU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5QW5pbWF0aW9uRmlsbE1vZGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF9maWxsX2Rh
c2hfbW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2ZpbGxfZGFzaF9tb2Rl
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICIt
d2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2l0ZXJh
dGlvbl9kYXNoX2NvdW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmlt
YXRpb25JdGVyYXRpb25Db3VudCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF9pdGVyYXRp
b25fZGFzaF9jb3VudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2l0ZXJhdGlvbl9kYXNoX2NvdW50R2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9h
bmltYXRpb25fZGFzaF9pdGVyYXRpb25fZGFzaF9jb3VudFNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlv
bkl0ZXJhdGlvbkNvdW50LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfaXRlcmF0aW9uX2Rhc2hfY291bnQs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF9pdGVyYXRpb25fZGFzaF9jb3VudFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdl
YmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF9u
YW1lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25OYW1lKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX25hbWUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF9uYW1lR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1hbmltYXRpb24tbmFtZSIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9u
X2Rhc2hfbmFtZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbk5hbWUsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFz
aF9uYW1lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfbmFtZVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1hbmlt
YXRpb24tbmFtZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRlR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25QbGF5U3RhdGUpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hf
cGxheV9kYXNoX3N0YXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1hbmltYXRpb24tcGxheS1z
dGF0ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5QW5pbWF0aW9uUGxheVN0YXRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRl
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRlU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0
LWFuaW1hdGlvbi1wbGF5LXN0YXRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF90aW1pbmdfZGFz
aF9mdW5jdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9u
VGltaW5nRnVuY3Rpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfdGltaW5nX2Rhc2hf
ZnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvbkdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIi13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0
aW9uX2Rhc2hfdGltaW5nX2Rhc2hfZnVuY3Rpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25UaW1p
bmdGdW5jdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfdGltaW5nX2Rhc2hfZnVuY3Rpb25TZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQt
YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYXBwZWFyYW5jZUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZSkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9hcHBlYXJhbmNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfYXBwZWFyYW5jZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYXBwZWFy
YW5jZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfYXBwZWFyYW5jZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2Us
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9hcHBlYXJhbmNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYXBwZWFyYW5jZVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1hcHBl
YXJhbmNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9iYWNrZHJvcF9kYXNoX2ZpbHRlckdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFj
a2Ryb3BfZGFzaF9maWx0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZHJvcF9kYXNoX2ZpbHRlckdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
Ii13ZWJraXQtYmFja2Ryb3AtZmlsdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZHJvcF9kYXNoX2ZpbHRlclNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2Ryb3BfZGFzaF9maWx0
ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZHJvcF9kYXNoX2ZpbHRlclNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1iYWNrZHJv
cC1maWx0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tmYWNlX2Rhc2hfdmlzaWJpbGl0eUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5KSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2JhY2tmYWNlX2Rhc2hfdmlzaWJpbGl0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tmYWNlX2Rhc2hfdmlzaWJpbGl0
eUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eSIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
YmFja2ZhY2VfZGFzaF92aXNpYmlsaXR5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNp
YmlsaXR5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfYmFja2ZhY2VfZGFzaF92aXNpYmlsaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
YmFja2ZhY2VfZGFzaF92aXNpYmlsaXR5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHkiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2JhY2tncm91bmRfZGFzaF9jbGlwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hf
Y2xpcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2JhY2tncm91bmRfZGFzaF9jbGlwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1iYWNr
Z3JvdW5kLWNsaXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tncm91bmRfZGFzaF9jbGlwU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0QmFja2dyb3VuZENsaXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfY2xpcCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2JhY2tncm91bmRfZGFzaF9jbGlwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJhY2tncm91bmQtY2xpcCIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYmFja2dyb3VuZF9kYXNoX2NvbXBvc2l0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNr
Z3JvdW5kX2Rhc2hfY29tcG9zaXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9kYXNoX2NvbXBvc2l0ZUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIi13ZWJraXQtYmFja2dyb3VuZC1jb21wb3NpdGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tncm91
bmRfZGFzaF9jb21wb3NpdGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRl
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYmFja2dyb3VuZF9kYXNoX2NvbXBvc2l0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tn
cm91bmRfZGFzaF9jb21wb3NpdGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtYmFja2dyb3VuZC1jb21wb3NpdGUiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JhY2tncm91bmRfZGFzaF9vcmlnaW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9kYXNo
X29yaWdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2JhY2tncm91bmRfZGFzaF9vcmlnaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0
LWJhY2tncm91bmQtb3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfb3JpZ2luU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tncm91bmRfZGFzaF9vcmln
aW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfb3JpZ2luU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJhY2tn
cm91bmQtb3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfc2l6ZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfYmFja2dyb3VuZF9kYXNoX3NpemUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfc2l6ZUdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIi13ZWJraXQtYmFja2dyb3VuZC1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hf
c2l6ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9k
YXNoX3NpemUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfc2l6ZVNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1i
YWNrZ3JvdW5kLXNpemUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2FmdGVyR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3Jk
ZXJfZGFzaF9hZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2FmdGVyR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtp
dC1ib3JkZXItYWZ0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2FmdGVyU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVyQmxvY2tFbmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JvcmRlcl9kYXNoX2FmdGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJvcmRlci1hZnRlciIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rh
c2hfYWZ0ZXJfZGFzaF9jb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVyQmxvY2tFbmRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNo
X2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYWZ0ZXJfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13
ZWJraXQtYm9yZGVyLWFmdGVyLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNo
X2NvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tFbmRDb2xvciwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNo
X2FmdGVyX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9k
YXNoX2NvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICItd2Via2l0LWJvcmRlci1hZnRlci1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
YWZ0ZXJfZGFzaF9zdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVyQmxvY2tFbmRTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNoX3N0
eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYm9yZGVyX2Rhc2hfYWZ0ZXJfZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJr
aXQtYm9yZGVyLWFmdGVyLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNoX3N0
eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tFbmRTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2Fm
dGVyX2Rhc2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNo
X3N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICItd2Via2l0LWJvcmRlci1hZnRlci1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYWZ0
ZXJfZGFzaF93aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVy
QmxvY2tFbmRXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNoX3dpZHRo
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfYm9yZGVyX2Rhc2hfYWZ0ZXJfZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQt
Ym9yZGVyLWFmdGVyLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNoX3dpZHRo
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tFbmRXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2FmdGVy
X2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNoX3dp
ZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICItd2Via2l0LWJvcmRlci1hZnRlci13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYmVmb3Jl
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0KSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZUdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLWJlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
YmVmb3JlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tTdGFydCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2Jl
Zm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZVNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ib3JkZXIt
YmVmb3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFzaF9jb2xvckdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tTdGFydENvbG9yKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZV9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYmVmb3Jl
X2Rhc2hfY29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJvcmRlci1iZWZvcmUtY29sb3Ii
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZV9kYXNoX2NvbG9yU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVyQmxvY2tTdGFydENvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYmVmb3JlX2Rhc2hfY29sb3IsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFzaF9jb2xvclNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ib3Jk
ZXItYmVmb3JlLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFzaF9zdHlsZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tTdGFydFN0eWxl
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZV9kYXNoX3N0eWxlLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rh
c2hfYmVmb3JlX2Rhc2hfc3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJvcmRlci1iZWZv
cmUtc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZV9kYXNoX3N0eWxlU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVyQmxvY2tTdGFydFN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYmVmb3JlX2Rhc2hf
c3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFzaF9zdHlsZVNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdl
YmtpdC1ib3JkZXItYmVmb3JlLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFz
aF93aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tT
dGFydFdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZV9kYXNoX3dpZHRoLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym9yZGVyX2Rhc2hfYmVmb3JlX2Rhc2hfd2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJv
cmRlci1iZWZvcmUtd2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZV9kYXNoX3dpZHRo
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tTdGFydFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYmVm
b3JlX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFz
aF93aWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiLXdlYmtpdC1ib3JkZXItYmVmb3JlLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9i
b3R0b21fZGFzaF9sZWZ0X2Rhc2hfcmFkaXVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNo
X2JvdHRvbV9kYXNoX2xlZnRfZGFzaF9yYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9s
ZWZ0X2Rhc2hfcmFkaXVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1ib3JkZXItYm90dG9tLWxl
ZnQtcmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9sZWZ0X2Rhc2hfcmFk
aXVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNo
X2JvdHRvbV9kYXNoX2xlZnRfZGFzaF9yYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJf
ZGFzaF9ib3R0b21fZGFzaF9sZWZ0X2Rhc2hfcmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJvcmRlci1ib3R0b20tbGVm
dC1yYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX3JpZ2h0X2Rhc2hfcmFk
aXVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdo
dFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9yaWdodF9kYXNo
X3JhZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX3JpZ2h0X2Rhc2hfcmFkaXVzR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXNTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21SaWdodFJhZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX3JpZ2h0
X2Rhc2hfcmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hf
cmlnaHRfZGFzaF9yYWRpdXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2JvcmRlcl9kYXNoX2VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVySW5saW5lRW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2VuZCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX2VuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLWVuZCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9y
ZGVyX2Rhc2hfZW5kU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rh
c2hfZW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZW5kU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJvcmRlci1l
bmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2VuZF9kYXNoX2NvbG9yR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVFbmRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9i
b3JkZXJfZGFzaF9lbmRfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2VuZF9kYXNoX2NvbG9yR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1ib3JkZXItZW5kLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJf
ZGFzaF9lbmRfZGFzaF9jb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZUVuZENvbG9yLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfYm9yZGVyX2Rhc2hfZW5kX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJf
ZGFzaF9lbmRfZGFzaF9jb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ib3JkZXItZW5kLWNvbG9yIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3Jk
ZXJfZGFzaF9lbmRfZGFzaF9zdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Qm9yZGVySW5saW5lRW5kU3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZW5kX2Rh
c2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9lbmRfZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13
ZWJraXQtYm9yZGVyLWVuZC1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZW5kX2Rhc2hfc3R5
bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVFbmRTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2Vu
ZF9kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZW5kX2Rhc2hfc3R5
bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Ii13ZWJraXQtYm9yZGVyLWVuZC1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZW5kX2Rhc2hf
d2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZUVu
ZFdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2VuZF9kYXNoX3dpZHRoLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVy
X2Rhc2hfZW5kX2Rhc2hfd2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJvcmRlci1lbmQt
d2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2VuZF9kYXNoX3dpZHRoU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVySW5saW5lRW5kV2lkdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9lbmRfZGFzaF93aWR0aCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2VuZF9kYXNoX3dpZHRoU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJvcmRlci1l
bmQtd2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2ZpdEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNo
X2ZpdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2JvcmRlcl9kYXNoX2ZpdEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLWZp
dCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZml0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYm9yZGVyX2Rhc2hfZml0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZml0
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICIt
d2Via2l0LWJvcmRlci1maXQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2hvcml6b250YWxfZGFzaF9z
cGFjaW5nR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJI
b3Jpem9udGFsU3BhY2luZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9ob3Jpem9udGFsX2Rh
c2hfc3BhY2luZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2hvcml6b250YWxfZGFzaF9zcGFjaW5nR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiLXdlYmtpdC1ib3JkZXItaG9yaXpvbnRhbC1zcGFjaW5nIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3Jk
ZXJfZGFzaF9ob3Jpem9udGFsX2Rhc2hfc3BhY2luZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckhvcml6b250YWxTcGFjaW5nLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfaG9yaXpvbnRhbF9kYXNoX3NwYWNp
bmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9ob3Jpem9udGFsX2Rhc2hfc3BhY2lu
Z1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
LXdlYmtpdC1ib3JkZXItaG9yaXpvbnRhbC1zcGFjaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9p
bWFnZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1h
Z2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfaW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9pbWFnZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLWltYWdlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFz
aF9pbWFnZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
aW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9pbWFnZVNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ib3JkZXIt
aW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3JhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX3JhZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3JhZGl1c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQt
Ym9yZGVyLXJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfcmFkaXVzU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyUmFkaXVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfcmFkaXVzLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYm9yZGVyX2Rhc2hfcmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJvcmRlci1yYWRpdXMiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
cmRlcl9kYXNoX3N0YXJ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3Jk
ZXJJbmxpbmVTdGFydCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX3N0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1ib3JkZXItc3RhcnQiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JvcmRlcl9kYXNoX3N0YXJ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3RhcnQsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9i
b3JkZXJfZGFzaF9zdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3N0YXJ0U2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Vi
a2l0LWJvcmRlci1zdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF9jb2xvckdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3RhcnRDb2xv
cikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX2NvbG9yLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rh
c2hfc3RhcnRfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLXN0YXJ0
LWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX2NvbG9yU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Qm9yZGVySW5saW5lU3RhcnRDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3N0YXJ0X2Rhc2hfY29s
b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX2NvbG9yU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0
LWJvcmRlci1zdGFydC1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF9zdHls
ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3RhcnRT
dHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3N0eWxlLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVy
X2Rhc2hfc3RhcnRfZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLXN0
YXJ0LXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3N0eWxlU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVySW5saW5lU3RhcnRTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3N0YXJ0X2Rhc2hf
c3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3N0eWxlU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Vi
a2l0LWJvcmRlci1zdGFydC1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF93
aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3Rh
cnRXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3dpZHRoLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9y
ZGVyX2Rhc2hfc3RhcnRfZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVy
LXN0YXJ0LXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3dpZHRoU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Qm9yZGVySW5saW5lU3RhcnRXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3N0YXJ0X2Rh
c2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3dpZHRo
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICIt
d2Via2l0LWJvcmRlci1zdGFydC13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfdG9wX2Rhc2hf
bGVmdF9kYXNoX3JhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVyVG9wTGVmdFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF90b3BfZGFzaF9sZWZ0
X2Rhc2hfcmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfbGVmdF9kYXNoX3JhZGl1c0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9y
ZGVyX2Rhc2hfdG9wX2Rhc2hfbGVmdF9kYXNoX3JhZGl1c1NldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRv
cExlZnRSYWRpdXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF90b3BfZGFzaF9sZWZ0X2Rhc2hfcmFkaXVzLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfbGVmdF9kYXNoX3JhZGl1c1Nl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdl
YmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF90b3BfZGFz
aF9yaWdodF9kYXNoX3JhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVyVG9wUmlnaHRSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfdG9wX2Rhc2hf
cmlnaHRfZGFzaF9yYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF90b3BfZGFzaF9yaWdodF9kYXNoX3JhZGl1
c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3JpZ2h0X2Rhc2hfcmFkaXVzU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF90b3BfZGFzaF9yaWdodF9kYXNo
X3JhZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3JpZ2h0X2Rh
c2hfcmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICItd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJf
ZGFzaF92ZXJ0aWNhbF9kYXNoX3NwYWNpbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJf
ZGFzaF92ZXJ0aWNhbF9kYXNoX3NwYWNpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF92ZXJ0aWNhbF9kYXNoX3Nw
YWNpbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJvcmRlci12ZXJ0aWNhbC1zcGFjaW5nIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9ib3JkZXJfZGFzaF92ZXJ0aWNhbF9kYXNoX3NwYWNpbmdTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF92ZXJ0aWNhbF9kYXNo
X3NwYWNpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF92ZXJ0aWNhbF9kYXNoX3Nw
YWNpbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIi13ZWJraXQtYm9yZGVyLXZlcnRpY2FsLXNwYWNpbmciKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2Fs
aWduR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbikp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9ib3hfZGFzaF9hbGlnbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2FsaWduR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiLXdlYmtpdC1ib3gtYWxpZ24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2FsaWduU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0Qm94QWxpZ24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9hbGlnbiwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2JveF9kYXNoX2FsaWduU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJveC1hbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZGVj
b3JhdGlvbl9kYXNoX2JyZWFrR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRCb3hEZWNvcmF0aW9uQnJlYWspKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZGVjb3JhdGlv
bl9kYXNoX2JyZWFrLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2JyZWFrR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiLXdlYmtpdC1ib3gtZGVjb3JhdGlvbi1icmVhayIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZGVj
b3JhdGlvbl9kYXNoX2JyZWFrU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94RGVjb3JhdGlvbkJyZWFr
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYm94X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2JyZWFrLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym94X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2JyZWFrU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJveC1kZWNvcmF0aW9uLWJyZWFr
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9ib3hfZGFzaF9kaXJlY3Rpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9kaXJl
Y3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9ib3hfZGFzaF9kaXJlY3Rpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJveC1k
aXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2RpcmVjdGlvblNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dEJveERpcmVjdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2RpcmVjdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JveF9kYXNoX2RpcmVjdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ib3gtZGlyZWN0aW9uIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFz
aF9mbGV4R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2ZsZXgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9mbGV4R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiLXdlYmtpdC1ib3gtZmxleCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZmxleFNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdEJveEZsZXgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9mbGV4LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym94X2Rhc2hfZmxleFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiLXdlYmtpdC1ib3gtZmxleCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZmxleF9kYXNo
X2dyb3VwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4
R3JvdXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZmxleF9kYXNoX2dyb3VwLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hf
ZmxleF9kYXNoX2dyb3VwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1ib3gtZmxleC1ncm91cCIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfYm94X2Rhc2hfZmxleF9kYXNoX2dyb3VwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94
RmxleEdyb3VwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZmxleF9kYXNoX2dyb3VwLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfYm94X2Rhc2hfZmxleF9kYXNoX2dyb3VwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJveC1mbGV4LWdyb3VwIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9ib3hfZGFzaF9saW5lc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0Qm94TGluZXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfbGluZXMsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9saW5l
c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm94LWxpbmVzIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9s
aW5lc1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfbGluZXMsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9saW5lc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ib3gtbGluZXMiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JveF9kYXNoX29yZGluYWxfZGFzaF9ncm91cEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX29y
ZGluYWxfZGFzaF9ncm91cCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX29yZGluYWxfZGFzaF9ncm91cEdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIi13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXAiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX29yZGlu
YWxfZGFzaF9ncm91cFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cCwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
eF9kYXNoX29yZGluYWxfZGFzaF9ncm91cCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX29y
ZGluYWxfZGFzaF9ncm91cFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rh
c2hfb3JpZW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hP
cmllbnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfb3JpZW50LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfb3JpZW50R2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1ib3gtb3JpZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9vcmll
bnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9vcmllbnQsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9vcmllbnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtYm94LW9yaWVudCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfYm94X2Rhc2hfcGFja0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0Qm94UGFjaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9wYWNrLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfcGFja0dl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm94LXBhY2siKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX3BhY2tT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfcGFjaywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2JveF9kYXNoX3BhY2tTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtYm94LXBhY2siKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNo
X3JlZmxlY3RHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJveFJl
ZmxlY3QpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfcmVmbGVjdCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX3JlZmxlY3RH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJveC1yZWZsZWN0Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9y
ZWZsZWN0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX3JlZmxl
Y3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9yZWZsZWN0U2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJveC1yZWZsZWN0
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9ib3hfZGFzaF9zaGFkb3dHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdlYmtpdEJveFNoYWRvdykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9zaGFkb3csIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9i
b3hfZGFzaF9zaGFkb3dHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJveC1zaGFkb3ciKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2JveF9kYXNoX3NoYWRvd1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
eF9kYXNoX3NoYWRvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX3NoYWRvd1NldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1i
b3gtc2hhZG93Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9zaXppbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUJveFNpemluZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9zaXppbmcs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9ib3hfZGFzaF9zaXppbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJveC1zaXppbmciKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2JveF9kYXNoX3NpemluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJveFNpemluZywgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9k
YXNoX3NpemluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX3NpemluZ1NldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ib3gt
c2l6aW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9jbGlwX2Rhc2hfcGF0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Q2xpcFBhdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY2xpcF9kYXNoX3BhdGgsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jbGlw
X2Rhc2hfcGF0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtY2xpcC1wYXRoIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9j
bGlwX2Rhc2hfcGF0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNsaXBQYXRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY2xpcF9kYXNoX3BhdGgs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9jbGlwX2Rhc2hfcGF0aFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1jbGlwLXBhdGgiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2NvbHVtbl9kYXNoX2F4aXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbkF4aXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYXhpcywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVt
bl9kYXNoX2F4aXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWNvbHVtbi1heGlzIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9jb2x1bW5fZGFzaF9heGlzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQXhpcywgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Nv
bHVtbl9kYXNoX2F4aXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9heGlzU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0
LWNvbHVtbi1heGlzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9icmVha19kYXNoX2FmdGVyR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2JyZWFrX2Rhc2hfYWZ0ZXIsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9i
cmVha19kYXNoX2FmdGVyR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1jb2x1bW4tYnJlYWstYWZ0
ZXIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2JyZWFrX2Rhc2hfYWZ0ZXJTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5CcmVha0FmdGVyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtfZGFzaF9hZnRlciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2JyZWFrX2Rhc2hfYWZ0ZXJTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtY29s
dW1uLWJyZWFrLWFmdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9icmVha19kYXNoX2JlZm9yZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZv
cmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtfZGFzaF9iZWZvcmUsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5f
ZGFzaF9icmVha19kYXNoX2JlZm9yZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtY29sdW1uLWJy
ZWFrLWJlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtfZGFzaF9iZWZvcmVTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2JyZWFrX2Rh
c2hfYmVmb3JlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtfZGFzaF9iZWZv
cmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Ii13ZWJraXQtY29sdW1uLWJyZWFrLWJlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtf
ZGFzaF9pbnNpZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtbkJyZWFrSW5zaWRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2JyZWFrX2Rhc2hfaW5z
aWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtfZGFzaF9pbnNpZGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Vi
a2l0LWNvbHVtbi1icmVhay1pbnNpZGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2JyZWFrX2Rhc2hf
aW5zaWRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5f
ZGFzaF9icmVha19kYXNoX2luc2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2Jy
ZWFrX2Rhc2hfaW5zaWRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICItd2Via2l0LWNvbHVtbi1icmVhay1pbnNpZGUiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVt
bl9kYXNoX2NvdW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5D
b3VudCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9jb3VudCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2NvdW50
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1jb2x1bW4tY291bnQiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9k
YXNoX2NvdW50U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uQ291bnQsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9jb3Vu
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2NvdW50U2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWNvbHVtbi1jb3Vu
dCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfZmlsbEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Q29sdW1uRmlsbCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9maWxsLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29s
dW1uX2Rhc2hfZmlsbEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtY29sdW1uLWZpbGwiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2NvbHVtbl9kYXNoX2ZpbGxTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5GaWxsLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1u
X2Rhc2hfZmlsbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2ZpbGxTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtY29s
dW1uLWZpbGwiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2dhcEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Q29sdW1uR2FwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2dhcCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2NvbHVtbl9kYXNoX2dhcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtY29sdW1uLWdhcCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfY29sdW1uX2Rhc2hfZ2FwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uR2FwLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1u
X2Rhc2hfZ2FwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfZ2FwU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWNvbHVt
bi1nYXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3Byb2dyZXNzaW9uR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Qcm9ncmVzc2lvbikpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9jb2x1bW5fZGFzaF9wcm9ncmVzc2lvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3Byb2dyZXNzaW9uR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiLXdlYmtpdC1jb2x1bW4tcHJvZ3Jlc3Npb24iKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9k
YXNoX3Byb2dyZXNzaW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUHJvZ3Jlc3Npb24sIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9jb2x1bW5fZGFzaF9wcm9ncmVzc2lvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNo
X3Byb2dyZXNzaW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICItd2Via2l0LWNvbHVtbi1wcm9ncmVzc2lvbiIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rh
c2hfcnVsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9ydWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIi13ZWJraXQtY29sdW1uLXJ1bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGVT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlDb2x1bW5SdWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtY29sdW1uLXJ1bGUiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Nv
bHVtbl9kYXNoX3J1bGVfZGFzaF9jb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Q29sdW1uUnVsZUNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGVfZGFz
aF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGVfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13
ZWJraXQtY29sdW1uLXJ1bGUtY29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGVfZGFzaF9j
b2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtblJ1bGVDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGVf
ZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGVfZGFzaF9jb2xv
clNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
LXdlYmtpdC1jb2x1bW4tcnVsZS1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZV9kYXNo
X3N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5SdWxlU3R5
bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZV9kYXNoX3N0eWxlLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rh
c2hfcnVsZV9kYXNoX3N0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1jb2x1bW4tcnVsZS1z
dHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZV9kYXNoX3N0eWxlU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Q29sdW1uUnVsZVN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZV9kYXNoX3N0eWxlLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZV9kYXNoX3N0eWxlU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWNvbHVtbi1ydWxl
LXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGhHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtblJ1bGVXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9j
b2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGhH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWNvbHVtbi1ydWxlLXdpZHRoIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1
bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5SdWxlV2lkdGgsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5f
ZGFzaF9ydWxlX2Rhc2hfd2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtY29sdW1uLXJ1bGUtd2lkdGgiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Nv
bHVtbl9kYXNoX3NwYW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVt
blNwYW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfc3BhbiwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3NwYW5H
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWNvbHVtbi1zcGFuIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFz
aF9zcGFuU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uU3BhbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3NwYW4sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9zcGFuU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWNvbHVtbi1zcGFuIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9jb2x1bW5fZGFzaF93aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Q29sdW1uV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfd2lkdGgsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5f
ZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtY29sdW1uLXdpZHRoIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9jb2x1bW5fZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbldpZHRoLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1u
X2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF93aWR0aFNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1j
b2x1bW4td2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbnNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUNvbHVtbnMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1ucywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbnNHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICItd2Via2l0LWNvbHVtbnMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbnNTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlDb2x1bW5zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfY29sdW1ucywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbnNTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQt
Y29sdW1ucyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfY3Vyc29yX2Rhc2hfdmlzaWJpbGl0eUdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Q3Vyc29yVmlzaWJpbGl0eSkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9jdXJzb3JfZGFzaF92aXNpYmlsaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY3Vyc29yX2Rhc2hfdmlzaWJpbGl0eUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIi13ZWJraXQtY3Vyc29yLXZpc2liaWxpdHkiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2N1cnNvcl9kYXNo
X3Zpc2liaWxpdHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRDdXJzb3JWaXNpYmlsaXR5LCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY3Vy
c29yX2Rhc2hfdmlzaWJpbGl0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2N1cnNvcl9kYXNoX3Zpc2li
aWxpdHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIi13ZWJraXQtY3Vyc29yLXZpc2liaWxpdHkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZpbHRlckdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmlsdGVyKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZpbHRlciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2ZpbHRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtZmlsdGVyIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9maWx0ZXJT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlGaWx0ZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9maWx0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9maWx0
ZXJTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Ii13ZWJraXQtZmlsdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlGbGV4KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXgsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4R2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiLXdlYmtpdC1mbGV4Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleCwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Zs
ZXgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWZsZXgiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFz
aF9iYXNpc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEJhc2lzKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9iYXNpcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9iYXNpc0dldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIi13ZWJraXQtZmxleC1iYXNpcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX2Jhc2lzU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5RmxleEJhc2lzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX2Jhc2lzLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfZmxleF9kYXNoX2Jhc2lzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWZsZXgtYmFzaXMiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9k
aXJlY3Rpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhEaXJlY3Rp
b24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX2RpcmVjdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9kaXJlY3Rp
b25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWZsZXgtZGlyZWN0aW9uIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4
X2Rhc2hfZGlyZWN0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleERpcmVjdGlvbiwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFz
aF9kaXJlY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfZGlyZWN0aW9uU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0
LWZsZXgtZGlyZWN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfZmxvd0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEZsb3cpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX2Zs
b3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9mbGV4X2Rhc2hfZmxvd0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtZmxleC1mbG93Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9mbGV4X2Rhc2hfZmxvd1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhGbG93LCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9k
YXNoX2Zsb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfZmxvd1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1mbGV4LWZs
b3ciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9ncm93R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlGbGV4R3JvdykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfZ3JvdywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFz
aF9ncm93R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1mbGV4LWdyb3ciKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhf
ZGFzaF9ncm93U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEdyb3csIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfZ3JvdywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9ncm93U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWZsZXgtZ3JvdyIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
ZmxleF9kYXNoX3Nocmlua0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rmxl
eFNocmluaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfc2hyaW5rLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX3Nocmlu
a0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtZmxleC1zaHJpbmsiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFz
aF9zaHJpbmtTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4U2hyaW5rLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX3Nocmluaywg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9zaHJpbmtTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtZmxleC1zaHJpbmsiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2ZsZXhfZGFzaF93cmFwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlGbGV4V3JhcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfd3JhcCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF93cmFw
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1mbGV4LXdyYXAiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF93
cmFwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5RmxleFdyYXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfd3JhcCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2ZsZXhfZGFzaF93cmFwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWZsZXgtd3JhcCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZm9udF9k
YXNoX2tlcm5pbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEZv
bnRLZXJuaW5nKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZvbnRfZGFzaF9rZXJuaW5nLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZm9udF9kYXNoX2tl
cm5pbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWZvbnQta2VybmluZyIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZm9u
dF9kYXNoX2tlcm5pbmdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRGb250S2VybmluZywgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZvbnRf
ZGFzaF9rZXJuaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZm9udF9kYXNoX2tlcm5pbmdTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQt
Zm9udC1rZXJuaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9mb250X2Rhc2hfc21vb3RoaW5nR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2ZvbnRfZGFzaF9zbW9vdGhpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9mb250X2Rhc2hfc21vb3RoaW5nR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiLXdlYmtpdC1mb250LXNtb290aGluZyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZm9udF9kYXNoX3Ntb290aGluZ1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mb250X2Rhc2hfc21vb3RoaW5n
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZm9udF9kYXNoX3Ntb290aGluZ1NldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1mb250LXNtb290
aGluZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfY2hhcmFjdGVyR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfaHlwaGVuYXRlX2Rhc2hfY2hhcmFjdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfY2hhcmFjdGVyR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1oeXBoZW5hdGUtY2hhcmFjdGVyIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9oeXBo
ZW5hdGVfZGFzaF9jaGFyYWN0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0
ZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9oeXBoZW5hdGVfZGFzaF9jaGFyYWN0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9oeXBo
ZW5hdGVfZGFzaF9jaGFyYWN0ZXJTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtaHlwaGVuYXRlLWNoYXJhY3RlciIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
aHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFzaF9hZnRlckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRBZnRlcikpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9oeXBo
ZW5hdGVfZGFzaF9saW1pdF9kYXNoX2FmdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFzaF9h
ZnRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtaHlwaGVuYXRlLWxpbWl0LWFmdGVyIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9oeXBoZW5hdGVfZGFzaF9saW1pdF9kYXNoX2FmdGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0
SHlwaGVuYXRlTGltaXRBZnRlciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbmF0ZV9kYXNoX2xpbWl0X2Rhc2hfYWZ0ZXIs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9oeXBoZW5hdGVfZGFzaF9saW1pdF9kYXNoX2FmdGVyU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0
LWh5cGhlbmF0ZS1saW1pdC1hZnRlciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFz
aF9iZWZvcmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhl
bmF0ZUxpbWl0QmVmb3JlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbmF0ZV9kYXNoX2xpbWl0X2Rhc2hf
YmVmb3JlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFzaF9iZWZvcmVHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICItd2Via2l0LWh5cGhlbmF0ZS1saW1pdC1iZWZvcmUiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbmF0ZV9kYXNo
X2xpbWl0X2Rhc2hfYmVmb3JlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRCZWZv
cmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9oeXBoZW5hdGVfZGFzaF9saW1pdF9kYXNoX2JlZm9yZSwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2h5cGhlbmF0ZV9kYXNoX2xpbWl0X2Rhc2hfYmVmb3JlU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWh5cGhlbmF0ZS1saW1p
dC1iZWZvcmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbmF0ZV9kYXNoX2xpbWl0X2Rhc2hfbGluZXNHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFzaF9saW5lcywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbmF0
ZV9kYXNoX2xpbWl0X2Rhc2hfbGluZXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWh5cGhlbmF0
ZS1saW1pdC1saW5lcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFzaF9saW5lc1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9oeXBoZW5hdGVfZGFz
aF9saW1pdF9kYXNoX2xpbmVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfbGlt
aXRfZGFzaF9saW5lc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiLXdlYmtpdC1oeXBoZW5hdGUtbGltaXQtbGluZXMiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhl
bnNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfaHlwaGVucywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbnNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWh5
cGhlbnMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2h5cGhlbnNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
aHlwaGVucywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbnNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtaHlwaGVucyIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfaW5pdGlhbF9kYXNoX2xldHRlckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0SW5pdGlhbExldHRlcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9pbml0aWFsX2Rhc2hfbGV0dGVy
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfaW5pdGlhbF9kYXNoX2xldHRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtaW5pdGlhbC1s
ZXR0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2luaXRpYWxfZGFzaF9sZXR0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRJ
bml0aWFsTGV0dGVyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfaW5pdGlhbF9kYXNoX2xldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2luaXRpYWxfZGFzaF9sZXR0ZXJTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtaW5pdGlhbC1sZXR0ZXIiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2p1c3Rp
ZnlfZGFzaF9jb250ZW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlKdXN0
aWZ5Q29udGVudCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9qdXN0aWZ5X2Rhc2hfY29udGVudCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2p1c3RpZnlf
ZGFzaF9jb250ZW50R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2p1c3RpZnlfZGFzaF9jb250ZW50U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SnVzdGlmeUNvbnRlbnQs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9qdXN0aWZ5X2Rhc2hfY29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2p1c3RpZnlfZGFz
aF9jb250ZW50U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICItd2Via2l0LWp1c3RpZnktY29udGVudCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfanVzdGlmeV9kYXNoX2l0
ZW1zR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlKdXN0aWZ5SXRlbXMpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfanVzdGlmeV9kYXNoX2l0ZW1zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfanVzdGlmeV9kYXNoX2l0ZW1zR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiLXdlYmtpdC1qdXN0aWZ5LWl0ZW1zIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9qdXN0aWZ5X2Rhc2hf
aXRlbXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlKdXN0aWZ5SXRlbXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9qdXN0aWZ5X2Rhc2hfaXRlbXMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9qdXN0aWZ5X2Rhc2hfaXRlbXNTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtanVzdGlmeS1pdGVt
cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfbGluZV9kYXNoX2FsaWduR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRMaW5lQWxpZ24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2FsaWduLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
bGluZV9kYXNoX2FsaWduR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1saW5lLWFsaWduIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9saW5lX2Rhc2hfYWxpZ25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRMaW5lQWxpZ24sIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9s
aW5lX2Rhc2hfYWxpZ24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rhc2hfYWxpZ25TZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQt
bGluZS1hbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2JveF9kYXNoX2NvbnRhaW5HZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVCb3hDb250YWluKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2xpbmVfZGFzaF9ib3hfZGFzaF9jb250YWluLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2JveF9kYXNoX2Nv
bnRhaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWxpbmUtYm94LWNvbnRhaW4iKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2xpbmVfZGFzaF9ib3hfZGFzaF9jb250YWluU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUJveENv
bnRhaW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9saW5lX2Rhc2hfYm94X2Rhc2hfY29udGFpbiwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2xpbmVfZGFzaF9ib3hfZGFzaF9jb250YWluU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWxpbmUtYm94LWNvbnRhaW4iKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2xpbmVfZGFzaF9icmVha0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
TGluZUJyZWFrKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9icmVhaywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9icmVh
a0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtbGluZS1icmVhayIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNo
X2JyZWFrU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2JyZWFrLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2JyZWFrU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWxpbmUtYnJlYWsiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2xpbmVfZGFzaF9jbGFtcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0TGluZUNsYW1wKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9jbGFtcCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9j
bGFtcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtbGluZS1jbGFtcCIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9k
YXNoX2NsYW1wU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2Ns
YW1wLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2NsYW1wU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWxpbmUtY2xhbXAi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2xpbmVfZGFzaF9ncmlkR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXZWJraXRMaW5lR3JpZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rhc2hfZ3JpZCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVf
ZGFzaF9ncmlkR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1saW5lLWdyaWQiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xp
bmVfZGFzaF9ncmlkU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUdyaWQsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rhc2hf
Z3JpZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9ncmlkU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWxpbmUtZ3JpZCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbGluZV9kYXNoX3NuYXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdExpbmVTbmFwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9zbmFwLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9k
YXNoX3NuYXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWxpbmUtc25hcCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGlu
ZV9kYXNoX3NuYXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRMaW5lU25hcCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9z
bmFwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX3NuYXBTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbGluZS1zbmFwIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9sb2NhbGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dExvY2FsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2NhbGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2NhbGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICIt
d2Via2l0LWxvY2FsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbG9jYWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TG9jYWxl
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbG9jYWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbG9jYWxlU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWxvY2FsZSIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbG9naWNhbF9kYXNoX2hlaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5QmxvY2tTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xvZ2ljYWxfZGFzaF9oZWlnaHQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2dp
Y2FsX2Rhc2hfaGVpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1sb2dpY2FsLWhlaWdodCIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbG9naWNhbF9kYXNoX2hlaWdodFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJsb2NrU2l6ZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2xvZ2ljYWxfZGFzaF9oZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2dpY2FsX2Rhc2hfaGVp
Z2h0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICItd2Via2l0LWxvZ2ljYWwtaGVpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2dpY2FsX2Rhc2hfd2lkdGhHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlubGluZVNpemUpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbG9naWNhbF9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiLXdlYmtpdC1sb2dpY2FsLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2dpY2FsX2Rhc2hfd2lkdGhTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlJbmxpbmVTaXplLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWxvZ2ljYWwtd2lkdGgiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X21hcmdpbl9kYXNoX2FmdGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlN
YXJnaW5CbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9hZnRlciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9k
YXNoX2FmdGVyR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1tYXJnaW4tYWZ0ZXIiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X21hcmdpbl9kYXNoX2FmdGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luQmxvY2tFbmQsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJn
aW5fZGFzaF9hZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2FmdGVyU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0
LW1hcmdpbi1hZnRlciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYWZ0ZXJfZGFzaF9jb2xsYXBzZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xs
YXBzZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9hZnRlcl9kYXNoX2NvbGxhcHNlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFy
Z2luX2Rhc2hfYWZ0ZXJfZGFzaF9jb2xsYXBzZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtbWFy
Z2luLWFmdGVyLWNvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9hZnRlcl9kYXNoX2NvbGxh
cHNlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9k
YXNoX2FmdGVyX2Rhc2hfY29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9h
ZnRlcl9kYXNoX2NvbGxhcHNlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1hcmdpbi1hZnRlci1jb2xsYXBzZSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
bWFyZ2luX2Rhc2hfYmVmb3JlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlN
YXJnaW5CbG9ja1N0YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2JlZm9yZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdp
bl9kYXNoX2JlZm9yZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtbWFyZ2luLWJlZm9yZSIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbWFyZ2luX2Rhc2hfYmVmb3JlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luQmxvY2tTdGFydCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX21hcmdpbl9kYXNoX2JlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2Jl
Zm9yZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiLXdlYmtpdC1tYXJnaW4tYmVmb3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9iZWZvcmVfZGFz
aF9jb2xsYXBzZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQmVmb3JlQ29sbGFwc2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYmVmb3JlX2Rhc2hf
Y29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9iZWZvcmVfZGFzaF9jb2xsYXBzZUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIi13ZWJraXQtbWFyZ2luLWJlZm9yZS1jb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hf
YmVmb3JlX2Rhc2hfY29sbGFwc2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xs
YXBzZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX21hcmdpbl9kYXNoX2JlZm9yZV9kYXNoX2NvbGxhcHNlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbWFyZ2luX2Rhc2hfYmVmb3JlX2Rhc2hfY29sbGFwc2VTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFyZ2luLWJlZm9y
ZS1jb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYm90dG9tX2Rhc2hfY29sbGFwc2VHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxh
cHNlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2JvdHRvbV9kYXNoX2NvbGxhcHNlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFy
Z2luX2Rhc2hfYm90dG9tX2Rhc2hfY29sbGFwc2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1h
cmdpbi1ib3R0b20tY29sbGFwc2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2JvdHRvbV9kYXNoX2Nv
bGxhcHNlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJn
aW5fZGFzaF9ib3R0b21fZGFzaF9jb2xsYXBzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9k
YXNoX2JvdHRvbV9kYXNoX2NvbGxhcHNlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1hcmdpbi1ib3R0b20tY29sbGFwc2UiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX21hcmdpbl9kYXNoX2NvbGxhcHNlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9j
b2xsYXBzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX21hcmdpbl9kYXNoX2NvbGxhcHNlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1t
YXJnaW4tY29sbGFwc2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2NvbGxhcHNlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQ29sbGFwc2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9jb2xsYXBzZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2NvbGxhcHNlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1hcmdpbi1jb2xsYXBzZSIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbWFyZ2luX2Rhc2hfZW5kR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlNYXJnaW5JbmxpbmVFbmQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfZW5kLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFy
Z2luX2Rhc2hfZW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1tYXJnaW4tZW5kIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXJnaW5fZGFzaF9lbmRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5JbmxpbmVFbmQsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJn
aW5fZGFzaF9lbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9lbmRTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFy
Z2luLWVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfc3RhcnRHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eU1hcmdpbklubGluZVN0YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9k
YXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfc3RhcnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1h
cmdpbi1zdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfc3RhcnRTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJn
aW5JbmxpbmVTdGFydCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
bWFyZ2luX2Rhc2hfc3RhcnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFyZ2luLXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFz
aF90b3BfZGFzaF9jb2xsYXBzZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luVG9wQ29sbGFwc2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfdG9wX2Rh
c2hfY29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF90b3BfZGFzaF9jb2xsYXBzZUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIi13ZWJraXQtbWFyZ2luLXRvcC1jb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfdG9w
X2Rhc2hfY29sbGFwc2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X21hcmdpbl9kYXNoX3RvcF9kYXNoX2NvbGxhcHNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2lu
X2Rhc2hfdG9wX2Rhc2hfY29sbGFwc2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFyZ2luLXRvcC1jb2xsYXBzZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbWFza0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFzaykp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9tYXNrLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtbWFzayIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbWFza1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2ssIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfbWFza1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1tYXNrIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hf
aW1hZ2VHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJ
bWFnZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2UsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hf
Ym94X2Rhc2hfaW1hZ2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1hc2stYm94LWltYWdlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNr
Qm94SW1hZ2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2UsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFzay1ib3gtaW1hZ2UiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZV9kYXNoX291dHNldEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlT3V0c2V0KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZV9kYXNoX291dHNldCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFz
aF9pbWFnZV9kYXNoX291dHNldEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtbWFzay1ib3gtaW1h
Z2Utb3V0c2V0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF9vdXRzZXRT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VPdXRzZXQsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94
X2Rhc2hfaW1hZ2VfZGFzaF9vdXRzZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94
X2Rhc2hfaW1hZ2VfZGFzaF9vdXRzZXRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFzay1ib3gtaW1hZ2Utb3V0c2V0Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF9yZXBlYXRHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF9yZXBlYXQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94
X2Rhc2hfaW1hZ2VfZGFzaF9yZXBlYXRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1hc2stYm94
LWltYWdlLXJlcGVhdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2JveF9kYXNoX2ltYWdlX2Rhc2hfcmVw
ZWF0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlUmVwZWF0LCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNo
X2JveF9kYXNoX2ltYWdlX2Rhc2hfcmVwZWF0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNo
X2JveF9kYXNoX2ltYWdlX2Rhc2hfcmVwZWF0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1hc2stYm94LWltYWdlLXJlcGVhdCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbWFza19kYXNoX2JveF9kYXNoX2ltYWdlX2Rhc2hfc2xpY2VHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNsaWNlKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZV9kYXNoX3NsaWNlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2Jv
eF9kYXNoX2ltYWdlX2Rhc2hfc2xpY2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1hc2stYm94
LWltYWdlLXNsaWNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF9zbGlj
ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNsaWNlLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2Jv
eF9kYXNoX2ltYWdlX2Rhc2hfc2xpY2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94
X2Rhc2hfaW1hZ2VfZGFzaF9zbGljZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zbGljZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbWFza19kYXNoX2JveF9kYXNoX2ltYWdlX2Rhc2hfc291cmNlR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbWFza19kYXNoX2JveF9kYXNoX2ltYWdlX2Rhc2hfc291cmNlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2JveF9k
YXNoX2ltYWdlX2Rhc2hfc291cmNlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1tYXNrLWJveC1p
bWFnZS1zb3VyY2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZV9kYXNoX3NvdXJj
ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9i
b3hfZGFzaF9pbWFnZV9kYXNoX3NvdXJjZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9i
b3hfZGFzaF9pbWFnZV9kYXNoX3NvdXJjZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zb3VyY2UiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZV9kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VXaWR0aCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hf
ZGFzaF9pbWFnZV9kYXNoX3dpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1tYXNrLWJveC1p
bWFnZS13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2JveF9kYXNoX2ltYWdlX2Rhc2hfd2lkdGhT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hf
ZGFzaF9pbWFnZV9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2JveF9k
YXNoX2ltYWdlX2Rhc2hfd2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFzay1ib3gtaW1hZ2Utd2lkdGgiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X21hc2tfZGFzaF9jbGlwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrQ2xpcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfY2xpcCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9jbGlw
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1tYXNrLWNsaXAiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9j
bGlwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfY2xpcCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9jbGlwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1hc2stY2xpcCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
bWFza19kYXNoX2NvbXBvc2l0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0TWFza0NvbXBvc2l0ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfY29tcG9zaXRlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
bWFza19kYXNoX2NvbXBvc2l0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtbWFzay1jb21wb3Np
dGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX21hc2tfZGFzaF9jb21wb3NpdGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q29tcG9zaXRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2NvbXBvc2l0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21h
c2tfZGFzaF9jb21wb3NpdGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFzay1jb21wb3NpdGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFz
aF9pbWFnZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0lt
YWdlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9pbWFnZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9pbWFnZUdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIi13ZWJraXQtbWFzay1pbWFnZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2ltYWdl
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2ltYWdlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2ltYWdlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1hc2staW1hZ2UiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X21hc2tfZGFzaF9vcmlnaW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tPcmlnaW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX29yaWdpbiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFz
aF9vcmlnaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1hc2stb3JpZ2luIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9t
YXNrX2Rhc2hfb3JpZ2luU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tf
ZGFzaF9vcmlnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfb3JpZ2luU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1h
c2stb3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfcG9zaXRpb25HZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNr
X2Rhc2hfcG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfcG9zaXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Vi
a2l0LW1hc2stcG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvblNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1tYXNrLXBvc2l0aW9uIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXNrX2Rhc2hfcG9zaXRpb25fZGFzaF94R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3Np
dGlvbl9kYXNoX3gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfcG9zaXRpb25fZGFzaF94R2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
LXdlYmtpdC1tYXNrLXBvc2l0aW9uLXgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbl9kYXNo
X3hTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX3Bvc2l0
aW9uX2Rhc2hfeCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbl9kYXNoX3hT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13
ZWJraXQtbWFzay1wb3NpdGlvbi14Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfcG9zaXRpb25fZGFzaF95
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25Z
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbl9kYXNoX3ksIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfcG9z
aXRpb25fZGFzaF95R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXkiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbl9kYXNoX3lTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNr
UG9zaXRpb25ZLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX3Bvc2l0aW9uX2Rhc2hfeSwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX21hc2tfZGFzaF9wb3NpdGlvbl9kYXNoX3lTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFzay1wb3NpdGlvbi15Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9tYXNrX2Rhc2hfcmVwZWF0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUmVwZWF0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9yZXBlYXQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNr
X2Rhc2hfcmVwZWF0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1tYXNrLXJlcGVhdCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbWFza19kYXNoX3JlcGVhdFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9t
YXNrX2Rhc2hfcmVwZWF0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX3JlcGVhdFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtp
dC1tYXNrLXJlcGVhdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX3NpemVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFz
aF9zaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbWFza19kYXNoX3NpemVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1hc2stc2l6
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfbWFza19kYXNoX3NpemVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX21hc2tfZGFzaF9zaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX3NpemVTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJr
aXQtbWFzay1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfc291cmNlX2Rhc2hfdHlwZUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza1NvdXJjZVR5cGUpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbWFza19kYXNoX3NvdXJjZV9kYXNoX3R5cGUsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfc291cmNlX2Rh
c2hfdHlwZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtbWFzay1zb3VyY2UtdHlwZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbWFza19kYXNoX3NvdXJjZV9kYXNoX3R5cGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrU291
cmNlVHlwZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX21hc2tfZGFzaF9zb3VyY2VfZGFzaF90eXBlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbWFza19kYXNoX3NvdXJjZV9kYXNoX3R5cGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFzay1zb3VyY2UtdHlwZSIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbWF4X2Rhc2hfbG9naWNhbF9kYXNoX2hlaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5TWF4QmxvY2tTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21heF9kYXNoX2xvZ2lj
YWxfZGFzaF9oZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9tYXhfZGFzaF9sb2dpY2FsX2Rhc2hfaGVpZ2h0R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiLXdlYmtpdC1tYXgtbG9naWNhbC1oZWlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21heF9kYXNoX2xvZ2lj
YWxfZGFzaF9oZWlnaHRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXhCbG9ja1NpemUsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXhfZGFzaF9s
b2dpY2FsX2Rhc2hfaGVpZ2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWF4X2Rhc2hfbG9naWNhbF9k
YXNoX2hlaWdodFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiLXdlYmtpdC1tYXgtbG9naWNhbC1oZWlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21heF9kYXNoX2xv
Z2ljYWxfZGFzaF93aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWF4
SW5saW5lU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXhfZGFzaF9sb2dpY2FsX2Rhc2hfd2lkdGgsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9t
YXhfZGFzaF9sb2dpY2FsX2Rhc2hfd2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1heC1s
b2dpY2FsLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXhfZGFzaF9sb2dpY2FsX2Rhc2hfd2lkdGhTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlNYXhJbmxpbmVTaXplLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWF4X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfbWF4X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1heC1s
b2dpY2FsLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9taW5fZGFzaF9sb2dpY2FsX2Rhc2hfaGVpZ2h0R2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNaW5CbG9ja1NpemUpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbWluX2Rhc2hfbG9naWNhbF9kYXNoX2hlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21pbl9kYXNoX2xvZ2ljYWxfZGFzaF9o
ZWlnaHRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1pbi1sb2dpY2FsLWhlaWdodCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbWluX2Rhc2hfbG9naWNhbF9kYXNoX2hlaWdodFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1pbkJsb2NrU2l6
ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX21pbl9kYXNoX2xvZ2ljYWxfZGFzaF9oZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9t
aW5fZGFzaF9sb2dpY2FsX2Rhc2hfaGVpZ2h0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1pbi1sb2dpY2FsLWhlaWdodCIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbWluX2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlNaW5JbmxpbmVTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21pbl9kYXNoX2xvZ2lj
YWxfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX21pbl9kYXNoX2xvZ2ljYWxfZGFzaF93aWR0aEdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIi13ZWJraXQtbWluLWxvZ2ljYWwtd2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21pbl9kYXNoX2xvZ2ljYWxf
ZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1pbklubGluZVNpemUsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9taW5fZGFzaF9sb2dp
Y2FsX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9taW5fZGFzaF9sb2dpY2FsX2Rhc2hf
d2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIi13ZWJraXQtbWluLWxvZ2ljYWwtd2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX25ic3BfZGFzaF9tb2RlR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9uYnNwX2Rhc2hfbW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX25ic3BfZGFzaF9tb2RlR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
LXdlYmtpdC1uYnNwLW1vZGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX25ic3BfZGFzaF9tb2RlU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0TmJzcE1vZGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9uYnNwX2Rhc2hfbW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX25i
c3BfZGFzaF9tb2RlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICItd2Via2l0LW5ic3AtbW9kZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfb3BhY2l0eUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3BhY2l0eSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9vcGFjaXR5
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfb3BhY2l0eUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtb3BhY2l0eSIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfb3Bh
Y2l0eVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU9wYWNpdHksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9vcGFjaXR5LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfb3BhY2l0eVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiLXdlYmtpdC1vcGFjaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9vcmRlckdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5T3JkZXIpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfb3JkZXIsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9vcmRlckdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtb3JkZXIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX29yZGVyU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5T3JkZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9vcmRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX29yZGVyU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW9yZGVy
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfYWZ0ZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVBhZGRpbmdCbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfYWZ0
ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9wYWRkaW5nX2Rhc2hfYWZ0ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXBhZGRpbmct
YWZ0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX3BhZGRpbmdfZGFzaF9hZnRlclNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdC
bG9ja0VuZCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3BhZGRpbmdfZGFzaF9hZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BhZGRp
bmdfZGFzaF9hZnRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiLXdlYmtpdC1wYWRkaW5nLWFmdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hf
YmVmb3JlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nQmxvY2tT
dGFydCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfYmVmb3JlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGluZ19kYXNoX2Jl
Zm9yZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtcGFkZGluZy1iZWZvcmUiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Bh
ZGRpbmdfZGFzaF9iZWZvcmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nQmxvY2tTdGFydCwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Bh
ZGRpbmdfZGFzaF9iZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfYmVmb3Jl
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICIt
d2Via2l0LXBhZGRpbmctYmVmb3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfZW5kR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5lRW5kKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX3BhZGRpbmdfZGFzaF9lbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfZW5kR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
LXdlYmtpdC1wYWRkaW5nLWVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGluZ19kYXNoX2VuZFNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVBhZGRpbmdJbmxpbmVFbmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfZW5kLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfcGFkZGluZ19kYXNoX2VuZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1wYWRkaW5nLWVuZCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGlu
Z19kYXNoX3N0YXJ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5n
SW5saW5lU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGluZ19kYXNoX3N0YXJ0LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGluZ19k
YXNoX3N0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1wYWRkaW5nLXN0YXJ0Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9wYWRkaW5nX2Rhc2hfc3RhcnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5lU3RhcnQsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9wYWRkaW5nX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfc3Rh
cnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Ii13ZWJraXQtcGFkZGluZy1zdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGVyc3BlY3RpdmVHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNw
ZWN0aXZlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfcGVyc3BlY3RpdmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXBlcnNwZWN0aXZl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGVy
c3BlY3RpdmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1wZXJzcGVjdGl2
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5HZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlT3JpZ2luKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0
aXZlX2Rhc2hfb3JpZ2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5HZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICItd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGVyc3BlY3RpdmVfZGFzaF9v
cmlnaW5TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdpbiwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0aXZlX2Rh
c2hfb3JpZ2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5TZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJr
aXQtcGVyc3BlY3RpdmUtb3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZV9kYXNoX29yaWdpbl9k
YXNoX3hHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlT3Jp
Z2luWCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZV9kYXNoX29yaWdpbl9kYXNoX3gsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wZXJz
cGVjdGl2ZV9kYXNoX29yaWdpbl9kYXNoX3hHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXBlcnNw
ZWN0aXZlLW9yaWdpbi14Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZV9kYXNoX29yaWdpbl9kYXNoX3hT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdpblgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZV9kYXNoX29y
aWdpbl9kYXNoX3gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZV9kYXNoX29yaWdpbl9k
YXNoX3hTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIi13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luLXgiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0aXZlX2Rh
c2hfb3JpZ2luX2Rhc2hfeUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGVy
c3BlY3RpdmVPcmlnaW5ZKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luX2Rh
c2hfeSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luX2Rhc2hfeUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13
ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luLXkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0aXZlX2Rhc2hfb3Jp
Z2luX2Rhc2hfeVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlT3JpZ2luWSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0
aXZlX2Rhc2hfb3JpZ2luX2Rhc2hfeSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0aXZlX2Rh
c2hfb3JpZ2luX2Rhc2hfeVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4teSIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcHJp
bnRfZGFzaF9jb2xvcl9kYXNoX2FkanVzdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVzdCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wcmludF9kYXNoX2Nv
bG9yX2Rhc2hfYWRqdXN0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfcHJpbnRfZGFzaF9jb2xvcl9kYXNoX2FkanVzdEdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIi13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wcmludF9kYXNoX2Nv
bG9yX2Rhc2hfYWRqdXN0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVzdCwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3ByaW50X2Rhc2hfY29sb3JfZGFzaF9hZGp1c3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wcmludF9k
YXNoX2NvbG9yX2Rhc2hfYWRqdXN0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LXByaW50LWNvbG9yLWFkanVzdCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
cnRsX2Rhc2hfb3JkZXJpbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdFJ0bE9yZGVyaW5nKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3J0bF9kYXNoX29yZGVyaW5nLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcnRsX2Rh
c2hfb3JkZXJpbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXJ0bC1vcmRlcmluZyIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfcnRsX2Rhc2hfb3JkZXJpbmdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZywgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3J0bF9kYXNoX29yZGVyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcnRsX2Rhc2hfb3JkZXJpbmdT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13
ZWJraXQtcnRsLW9yZGVyaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ydWJ5X2Rhc2hfcG9zaXRpb25HZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbikpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9ydWJ5X2Rhc2hfcG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ydWJ5X2Rhc2hfcG9zaXRpb25HZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICItd2Via2l0LXJ1YnktcG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3J1YnlfZGFzaF9wb3NpdGlvblNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3J1YnlfZGFzaF9wb3NpdGlvbiwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3J1YnlfZGFzaF9wb3NpdGlvblNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ydWJ5LXBvc2l0aW9u
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9zaGFwZV9kYXNoX2ltYWdlX2Rhc2hfdGhyZXNob2xkR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTaGFwZUltYWdlVGhyZXNob2xkKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3NoYXBlX2Rhc2hfaW1hZ2VfZGFzaF90aHJlc2hvbGQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9zaGFwZV9kYXNoX2ltYWdlX2Rhc2hf
dGhyZXNob2xkR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3NoYXBlX2Rhc2hfaW1hZ2VfZGFzaF90aHJlc2hvbGRTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlT
aGFwZUltYWdlVGhyZXNob2xkLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hhcGVfZGFzaF9pbWFnZV9kYXNoX3RocmVzaG9sZCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3NoYXBlX2Rhc2hfaW1hZ2VfZGFzaF90aHJlc2hvbGRTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQt
c2hhcGUtaW1hZ2UtdGhyZXNob2xkIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9zaGFwZV9kYXNoX21hcmdpbkdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVNYXJnaW4pKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
c2hhcGVfZGFzaF9tYXJnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9zaGFwZV9kYXNoX21hcmdpbkdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13
ZWJraXQtc2hhcGUtbWFyZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9zaGFwZV9kYXNoX21hcmdpblNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVNoYXBlTWFyZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hhcGVfZGFzaF9tYXJnaW4sIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9zaGFwZV9kYXNoX21hcmdpblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1zaGFwZS1tYXJnaW4iKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3NoYXBlX2Rh
c2hfb3V0c2lkZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVPdXRz
aWRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3NoYXBlX2Rhc2hfb3V0c2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3NoYXBlX2Rhc2hfb3V0c2lk
ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtc2hhcGUtb3V0c2lkZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hhcGVf
ZGFzaF9vdXRzaWRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVPdXRzaWRlLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hhcGVfZGFzaF9v
dXRzaWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hhcGVfZGFzaF9vdXRzaWRlU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LXNoYXBl
LW91dHNpZGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9jb21iaW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rh
c2hfY29tYmluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3RleHRfZGFzaF9jb21iaW5lR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC10
ZXh0LWNvbWJpbmUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9jb21iaW5lU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dENvbWJpbmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfY29tYmluZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3RleHRfZGFzaF9jb21iaW5lU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICItd2Via2l0LXRleHQtY29tYmluZSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNo
X2RlY29yYXRpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRl
eHREZWNvcmF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9k
YXNoX2RlY29yYXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXRleHQtZGVjb3JhdGlvbiIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfdGV4dF9kYXNoX2RlY29yYXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVj
b3JhdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4
dF9kYXNoX2RlY29yYXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rh
c2hfZGVjb3JhdGlvbl9kYXNoX2NvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0
aW9uX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2NvbG9yR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tY29sb3IiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFz
aF9kZWNvcmF0aW9uX2Rhc2hfY29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9y
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfY29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNv
bG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xpbmVHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uTGluZSkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9k
YXNoX2xpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXRleHQtZGVjb3JhdGlvbi1saW5lIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xpbmVTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0
RGVjb3JhdGlvbkxpbmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xpbmUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xpbmVTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdGV4dC1k
ZWNvcmF0aW9uLWxpbmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcEdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25Ta2lwKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9k
ZWNvcmF0aW9uX2Rhc2hfc2tpcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtdGV4dC1kZWNvcmF0
aW9uLXNraXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVRleHREZWNvcmF0aW9uU2tpcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hf
c2tpcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdl
YmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2RlY29yYXRpb25f
ZGFzaF9zdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29y
YXRpb25TdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3N0eWxl
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJr
aXQtdGV4dC1kZWNvcmF0aW9uLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9k
YXNoX3N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25TdHlsZSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFz
aF9kZWNvcmF0aW9uX2Rhc2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVj
b3JhdGlvbl9kYXNoX3N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICItd2Via2l0LXRleHQtZGVjb3JhdGlvbi1zdHlsZSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
dGV4dF9kYXNoX2RlY29yYXRpb25zX2Rhc2hfaW5fZGFzaF9lZmZlY3RHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uc19kYXNoX2luX2Rhc2hfZWZmZWN0LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4
dF9kYXNoX2RlY29yYXRpb25zX2Rhc2hfaW5fZGFzaF9lZmZlY3RHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICIt
d2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVj
b3JhdGlvbnNfZGFzaF9pbl9kYXNoX2VmZmVjdFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNv
cmF0aW9uc0luRWZmZWN0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2RlY29yYXRpb25zX2Rhc2hfaW5fZGFzaF9l
ZmZlY3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbnNfZGFzaF9pbl9k
YXNoX2VmZmVjdFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4
dF9kYXNoX2VtcGhhc2lzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RW1waGFzaXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9k
YXNoX2VtcGhhc2lzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC10ZXh0LWVtcGhhc2lzIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZW1w
aGFzaXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIi13ZWJraXQtdGV4dC1lbXBoYXNpcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rh
c2hfY29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpc0NvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX2NvbG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfY29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0
LXRleHQtZW1waGFzaXMtY29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX2Nv
bG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hf
ZW1waGFzaXNfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9lbXBoYXNp
c19kYXNoX2NvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICItd2Via2l0LXRleHQtZW1waGFzaXMtY29sb3IiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFz
aF9lbXBoYXNpc19kYXNoX3Bvc2l0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hf
ZW1waGFzaXNfZGFzaF9wb3NpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX3Bvc2l0aW9u
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC10ZXh0LWVtcGhhc2lzLXBvc2l0aW9uIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3NpdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRFbXBoYXNpc1Bvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfcG9zaXRpb24s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3NpdGlvblNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtp
dC10ZXh0LWVtcGhhc2lzLXBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNfZGFz
aF9zdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzU3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfc3R5bGUs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQt
dGV4dC1lbXBoYXNpcy1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfc3R5
bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9l
bXBoYXNpc19kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lz
X2Rhc2hfc3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIi13ZWJraXQtdGV4dC1lbXBoYXNpcy1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNo
X2ZpbGxfZGFzaF9jb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dEZpbGxDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZmlsbF9kYXNoX2NvbG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfdGV4dF9kYXNoX2ZpbGxfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtdGV4
dC1maWxsLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZmlsbF9kYXNoX2NvbG9yU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9maWxsX2Rhc2hfY29sb3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZmlsbF9kYXNoX2NvbG9yU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LXRleHQt
ZmlsbC1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX29yaWVudGF0aW9uR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0T3JpZW50YXRpb24pKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfdGV4dF9kYXNoX29yaWVudGF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX29yaWVudGF0aW9uR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiLXdlYmtpdC10ZXh0LW9yaWVudGF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfb3Jp
ZW50YXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0T3JpZW50YXRpb24sIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rh
c2hfb3JpZW50YXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfb3JpZW50YXRpb25T
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13
ZWJraXQtdGV4dC1vcmllbnRhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3NlY3VyaXR5R2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHkpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfdGV4dF9kYXNoX3NlY3VyaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3NlY3VyaXR5R2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiLXdlYmtpdC10ZXh0LXNlY3VyaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc2VjdXJp
dHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHksIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc2VjdXJp
dHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc2VjdXJpdHlTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdGV4dC1zZWN1
cml0eSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3NpemVfZGFzaF9hZGp1c3RHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3RleHRfZGFzaF9zaXplX2Rhc2hfYWRqdXN0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3NpemVfZGFzaF9hZGp1c3RH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3QiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRf
ZGFzaF9zaXplX2Rhc2hfYWRqdXN0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3Qs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF90ZXh0X2Rhc2hfc2l6ZV9kYXNoX2FkanVzdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRf
ZGFzaF9zaXplX2Rhc2hfYWRqdXN0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3QiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Rl
eHRfZGFzaF9zdHJva2VHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTdHJva2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3N0cm9rZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9z
dHJva2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXRleHQtc3Ryb2tlIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0
X2Rhc2hfc3Ryb2tlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFz
aF9zdHJva2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc3Ryb2tlU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LXRleHQt
c3Ryb2tlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc3Ryb2tlX2Rhc2hfY29sb3JHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcikpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF90ZXh0X2Rhc2hfc3Ryb2tlX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc3Ryb2tlX2Rhc2hf
Y29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXRleHQtc3Ryb2tlLWNvbG9yIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90ZXh0X2Rhc2hfc3Ryb2tlX2Rhc2hfY29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ry
b2tlQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc3Ryb2tlX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF90ZXh0X2Rhc2hfc3Ryb2tlX2Rhc2hfY29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdGV4dC1zdHJva2UtY29sb3Ii
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3RleHRfZGFzaF9zdHJva2VfZGFzaF93aWR0aEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Rl
eHRfZGFzaF9zdHJva2VfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9zdHJva2VfZGFzaF93aWR0aEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGgiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRf
ZGFzaF9zdHJva2VfZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0
aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX3RleHRfZGFzaF9zdHJva2VfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Rl
eHRfZGFzaF9zdHJva2VfZGFzaF93aWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfdGV4dF9kYXNoX3VuZGVybGluZV9kYXNoX3Bvc2l0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lUG9zaXRpb24pKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4
dF9kYXNoX3VuZGVybGluZV9kYXNoX3Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3VuZGVybGluZV9kYXNo
X3Bvc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC10ZXh0LXVuZGVybGluZS1wb3NpdGlv
biIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfdGV4dF9kYXNoX3VuZGVybGluZV9kYXNoX3Bvc2l0aW9uU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5VGV4dFVuZGVybGluZVBvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3VuZGVybGluZV9kYXNoX3Bv
c2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3VuZGVybGluZV9kYXNoX3Bvc2l0
aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICItd2Via2l0LXRleHQtdW5kZXJsaW5lLXBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfem9v
bUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFpvb20pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfdGV4dF9kYXNoX3pvb20sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfem9vbUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIi13ZWJraXQtdGV4dC16b29tIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfem9vbVNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRab29tLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3pvb20sIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90ZXh0X2Rhc2hfem9vbVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC10ZXh0LXpvb20iKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3RyYW5zZm9ybSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3RyYW5zZm9ybUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtdHJhbnNmb3Jt
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF90cmFuc2Zvcm1TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm0sIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zv
cm0sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdHJhbnNmb3JtIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90cmFuc2Zvcm1fZGFzaF9vcmlnaW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVRyYW5zZm9ybU9yaWdpbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9vcmlnaW4s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90cmFuc2Zvcm1fZGFzaF9vcmlnaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXRyYW5zZm9y
bS1vcmlnaW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpblNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRy
YW5zZm9ybU9yaWdpbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbiwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF94R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5YKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNo
X29yaWdpbl9kYXNoX3gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF94R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luLXgiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNo
X29yaWdpbl9kYXNoX3hTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5YLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNm
b3JtX2Rhc2hfb3JpZ2luX2Rhc2hfeCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNo
X29yaWdpbl9kYXNoX3hTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIi13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbi14Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zv
cm1fZGFzaF9vcmlnaW5fZGFzaF95R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlUcmFuc2Zvcm1PcmlnaW5ZKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9k
YXNoX3ksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF95R2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdl
YmtpdC10cmFuc2Zvcm0tb3JpZ2luLXkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9k
YXNoX3lTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5ZLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNmb3JtX2Rhc2hf
b3JpZ2luX2Rhc2hfeSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9k
YXNoX3lTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIi13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbi15Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9v
cmlnaW5fZGFzaF96R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zv
cm1PcmlnaW5aKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3osIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90
cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF96R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC10cmFu
c2Zvcm0tb3JpZ2luLXoiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3pTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5aLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rh
c2hfeiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3pTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJr
aXQtdHJhbnNmb3JtLW9yaWdpbi16Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9zdHlsZUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGUpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfdHJhbnNmb3JtX2Rhc2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9zdHlsZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtdHJhbnNmb3JtLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zv
cm1fZGFzaF9zdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJh
bnNmb3JtX2Rhc2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9zdHls
ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
LXdlYmtpdC10cmFuc2Zvcm0tc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25HZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zaXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNp
dGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX3RyYW5zaXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXRyYW5zaXRpb24iKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX3RyYW5zaXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlv
biwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdHJhbnNpdGlvbiIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfdHJhbnNpdGlvbl9kYXNoX2RlbGF5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlUcmFuc2l0aW9uRGVsYXkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX2RlbGF5
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfdHJhbnNpdGlvbl9kYXNoX2RlbGF5R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC10cmFuc2l0
aW9uLWRlbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hfZGVsYXlTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlU
cmFuc2l0aW9uRGVsYXksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hfZGVsYXksIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF90cmFuc2l0aW9uX2Rhc2hfZGVsYXlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdHJhbnNpdGlvbi1kZWxheSIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfdHJhbnNpdGlvbl9kYXNoX2R1cmF0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNo
X2R1cmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX2R1cmF0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdl
YmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hfZHVyYXRp
b25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb24sIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hf
ZHVyYXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hfZHVyYXRpb25TZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJr
aXQtdHJhbnNpdGlvbi1kdXJhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX3Byb3BlcnR5
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uUHJvcGVydHkp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX3Byb3BlcnR5LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNo
X3Byb3BlcnR5R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hfcHJvcGVydHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9u
UHJvcGVydHksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hfcHJvcGVydHksIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90cmFuc2l0aW9uX2Rhc2hfcHJvcGVydHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eSIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24pKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9k
YXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC10cmFuc2l0
aW9uLXRpbWluZy1mdW5jdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX3RpbWluZ19kYXNo
X2Z1bmN0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJh
bnNpdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJh
bnNpdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LXRyYW5zaXRpb24tdGltaW5n
LWZ1bmN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfZHJhZ0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdXNlcl9kYXNoX2Ry
YWcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF91c2VyX2Rhc2hfZHJhZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtdXNlci1kcmFnIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF91c2VyX2Rhc2hfZHJhZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
dXNlcl9kYXNoX2RyYWcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfZHJhZ1NldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC11
c2VyLWRyYWciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3VzZXJfZGFzaF9tb2RpZnlHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdXNlcl9kYXNo
X21vZGlmeSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3VzZXJfZGFzaF9tb2RpZnlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXVzZXIt
bW9kaWZ5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfbW9kaWZ5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VXNl
ck1vZGlmeSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3VzZXJfZGFzaF9tb2RpZnksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rh
c2hfbW9kaWZ5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICItd2Via2l0LXVzZXItbW9kaWZ5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfc2VsZWN0R2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0KSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3VzZXJfZGFzaF9zZWxlY3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfc2VsZWN0R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiLXdlYmtpdC11c2VyLXNlbGVjdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdXNlcl9kYXNoX3NlbGVjdFNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfc2VsZWN0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfdXNlcl9kYXNoX3NlbGVjdFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC11c2VyLXNlbGVjdCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
d3JpdGluZ19kYXNoX21vZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdy
aXRpbmdNb2RlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3dyaXRpbmdfZGFzaF9tb2RlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfd3JpdGluZ19kYXNo
X21vZGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXdyaXRpbmctbW9kZSIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfd3Jp
dGluZ19kYXNoX21vZGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXcml0aW5nTW9kZSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3dyaXRpbmdfZGFz
aF9tb2RlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfd3JpdGluZ19kYXNoX21vZGVTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtd3JpdGlu
Zy1tb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
YWxpZ25fZGFzaF9jb250ZW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlB
bGlnbkNvbnRlbnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2FsaWduX2Rhc2hfY29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9hbGlnbl9kYXNoX2NvbnRlbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbGlnbi1j
b250ZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
YWxpZ25fZGFzaF9jb250ZW50U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWxpZ25Db250ZW50LCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWduX2Rhc2hfY29udGVudCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9h
bGlnbl9kYXNoX2NvbnRlbnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImFsaWduLWNvbnRlbnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbl9kYXNoX2l0ZW1zR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkl0ZW1zKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbl9kYXNoX2l0ZW1zLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWduX2Rhc2hfaXRlbXNHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJhbGlnbi1pdGVtcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2FsaWduX2Rhc2hfaXRlbXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkl0ZW1zLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWduX2Rhc2hfaXRl
bXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYWxpZ25fZGFzaF9pdGVtc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiYWxpZ24taXRlbXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbl9kYXNoX3NlbGZHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFsaWduU2VsZikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25fZGFzaF9zZWxmLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWduX2Rhc2hfc2VsZkdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgImFsaWduLXNlbGYiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9hbGlnbl9kYXNoX3NlbGZTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnblNlbGYsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25fZGFzaF9zZWxmLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2FsaWduX2Rhc2hfc2VsZlNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiYWxpZ24tc2VsZiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2FsaWdubWVudF9kYXNoX2Jhc2VsaW5lR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbm1lbnRCYXNlbGluZSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25tZW50X2Rhc2hfYmFz
ZWxpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25tZW50
X2Rhc2hfYmFzZWxpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbGlnbm1lbnQtYmFzZWxpbmUiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbm1lbnRfZGFz
aF9iYXNlbGluZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFsaWdubWVudEJhc2VsaW5lLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWdubWVudF9kYXNoX2Jhc2VsaW5lLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2FsaWdubWVudF9kYXNoX2Jhc2VsaW5lU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhbGlnbm1lbnQtYmFzZWxpbmUiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9kZWxheUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uRGVsYXkpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlv
bl9kYXNoX2RlbGF5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Fu
aW1hdGlvbl9kYXNoX2RlbGF5R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYW5pbWF0aW9uLWRlbGF5Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rh
c2hfZGVsYXlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25EZWxheSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9kZWxheSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRp
b25fZGFzaF9kZWxheVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiYW5pbWF0aW9uLWRlbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfZGlyZWN0aW9uR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25EaXJlY3Rpb24pKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNo
X2RpcmVjdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmlt
YXRpb25fZGFzaF9kaXJlY3Rpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbmltYXRpb24tZGlyZWN0aW9u
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0
aW9uX2Rhc2hfZGlyZWN0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uRGlyZWN0aW9uLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX2Rp
cmVjdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9kaXJlY3Rpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImFuaW1hdGlvbi1kaXJlY3Rpb24iKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25f
ZGFzaF9kdXJhdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0
aW9uRHVyYXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX2R1cmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX2R1cmF0aW9uR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiYW5pbWF0aW9uLWR1cmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfZHVyYXRpb25TZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmlt
YXRpb25EdXJhdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9hbmltYXRpb25fZGFzaF9kdXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9kdXJhdGlvblNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYW5pbWF0
aW9uLWR1cmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYW5pbWF0aW9uX2Rhc2hfZmlsbF9kYXNoX21vZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkZpbGxNb2RlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9maWxsX2Rhc2hf
bW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25f
ZGFzaF9maWxsX2Rhc2hfbW9kZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImFuaW1hdGlvbi1maWxsLW1vZGUi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRp
b25fZGFzaF9maWxsX2Rhc2hfbW9kZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkZpbGxNb2RlLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNo
X2ZpbGxfZGFzaF9tb2RlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX2ZpbGxfZGFzaF9tb2RlU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhbmltYXRpb24t
ZmlsbC1tb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYW5pbWF0aW9uX2Rhc2hfaXRlcmF0aW9uX2Rhc2hfY291bnRHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9p
dGVyYXRpb25fZGFzaF9jb3VudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9hbmltYXRpb25fZGFzaF9pdGVyYXRpb25fZGFzaF9jb3VudEdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9pdGVyYXRpb25fZGFzaF9jb3VudFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX2l0ZXJhdGlvbl9kYXNoX2Nv
dW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2FuaW1hdGlvbl9kYXNoX2l0ZXJhdGlvbl9kYXNoX2NvdW50U2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhbmltYXRpb24taXRlcmF0
aW9uLWNvdW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYW5pbWF0aW9uX2Rhc2hfbmFtZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5QW5pbWF0aW9uTmFtZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfbmFtZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9uYW1lR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
YW5pbWF0aW9uLW5hbWUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9hbmltYXRpb25fZGFzaF9uYW1lU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uTmFtZSwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFz
aF9uYW1lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX25hbWVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImFuaW1hdGlvbi1uYW1lIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfcGxheV9k
YXNoX3N0YXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25Q
bGF5U3RhdGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2FuaW1hdGlvbl9kYXNoX3BsYXlfZGFzaF9zdGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9wbGF5X2Rhc2hfc3RhdGVHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJhbmltYXRpb24tcGxheS1zdGF0ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX3BsYXlfZGFzaF9zdGF0
ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvblBsYXlTdGF0ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9wbGF5X2Rhc2hfc3RhdGUsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
YW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhbmltYXRpb24tcGxheS1zdGF0ZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNo
X3RpbWluZ19kYXNoX2Z1bmN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlBbmltYXRpb25UaW1pbmdGdW5jdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfdGltaW5nX2Rhc2hfZnVuY3Rp
b24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rh
c2hfdGltaW5nX2Rhc2hfZnVuY3Rpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbmltYXRpb24tdGltaW5n
LWZ1bmN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fYW5pbWF0aW9uX2Rhc2hfdGltaW5nX2Rhc2hfZnVuY3Rpb25TZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9hbmltYXRpb25fZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25f
ZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2FzcGVjdF9kYXNoX3Jh
dGlvR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBc3BlY3RSYXRpbykpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYXNwZWN0
X2Rhc2hfcmF0aW8sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYXNw
ZWN0X2Rhc2hfcmF0aW9HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhc3BlY3QtcmF0aW8iKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hc3BlY3RfZGFzaF9yYXRpb1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUFzcGVjdFJhdGlvLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2FzcGVjdF9kYXNoX3JhdGlvLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FzcGVjdF9kYXNoX3JhdGlvU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhc3BlY3Qt
cmF0aW8iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
YWNrZ3JvdW5kX2Rhc2hfYXR0YWNobWVudEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9hdHRhY2htZW50LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9hdHRh
Y2htZW50R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYmFja2dyb3VuZC1hdHRhY2htZW50Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2F0
dGFjaG1lbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfYXR0YWNobWVu
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9iYWNrZ3JvdW5kX2Rhc2hfYXR0YWNobWVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYmFja2dyb3VuZC1hdHRhY2htZW50Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9k
YXNoX2JsZW5kX2Rhc2hfbW9kZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
QmFja2dyb3VuZEJsZW5kTW9kZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2JsZW5kX2Rhc2hfbW9kZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfYmxlbmRf
ZGFzaF9tb2RlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYmFja2dyb3VuZC1ibGVuZC1tb2RlIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNo
X2JsZW5kX2Rhc2hfbW9kZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmRCbGVuZE1vZGUsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2Js
ZW5kX2Rhc2hfbW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfYmxlbmRfZGFzaF9tb2RlU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJiYWNrZ3JvdW5k
LWJsZW5kLW1vZGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9iYWNrZ3JvdW5kX2Rhc2hfY2xpcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5QmFja2dyb3VuZENsaXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9jbGlwLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9jbGlwR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiYmFja2dyb3VuZC1jbGlwIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2NsaXBTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ2xpcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNr
Z3JvdW5kX2Rhc2hfY2xpcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfY2xpcFNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYmFja2dyb3VuZC1jbGlwIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3Vu
ZF9kYXNoX2NvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2JhY2tncm91bmRfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfY29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJiYWNr
Z3JvdW5kLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYmFja2dyb3VuZF9kYXNoX2NvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRf
ZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfY29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJhY2tncm91bmQtY29sb3IiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rh
c2hfaW1hZ2VHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmRJ
bWFnZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYmFja2dyb3VuZF9kYXNoX2ltYWdlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9pbWFnZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJhY2tncm91
bmQtaW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9iYWNrZ3JvdW5kX2Rhc2hfaW1hZ2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNo
X2ltYWdlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9pbWFnZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYmFja2dyb3VuZC1pbWFnZSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9v
cmlnaW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmln
aW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JhY2tncm91bmRfZGFzaF9vcmlnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX29yaWdpbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJhY2tncm91
bmQtb3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fYmFja2dyb3VuZF9kYXNoX29yaWdpblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4s
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9k
YXNoX29yaWdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfb3JpZ2luU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJiYWNrZ3JvdW5kLW9yaWdpbiIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRf
ZGFzaF9wb3NpdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dy
b3VuZFBvc2l0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0aW9uR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiYmFja2dyb3VuZC1wb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9wb3NpdGlvblNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0
aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJiYWNrZ3JvdW5kLXBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0aW9uX2Rhc2hfeEdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9k
YXNoX3Bvc2l0aW9uX2Rhc2hfeCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9zaXRpb25fZGFzaF94R2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYmFj
a2dyb3VuZC1wb3NpdGlvbi14Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0aW9uX2Rhc2hfeFNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0aW9uX2Rhc2hfeCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rh
c2hfcG9zaXRpb25fZGFzaF94U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJiYWNrZ3JvdW5kLXBvc2l0aW9uLXgiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9zaXRpb25f
ZGFzaF95R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25ZKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9zaXRpb25fZGFzaF95LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9wb3NpdGlvbl9kYXNoX3lHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJiYWNrZ3JvdW5kLXBvc2l0aW9uLXkiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9zaXRpb25fZGFz
aF95U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9zaXRpb25fZGFzaF95
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JhY2tncm91bmRfZGFzaF9wb3NpdGlvbl9kYXNoX3lTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJhY2tncm91bmQtcG9zaXRpb24teSIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91
bmRfZGFzaF9yZXBlYXRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9yZXBlYXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3JlcGVhdEdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImJhY2tncm91bmQtcmVwZWF0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3JlcGVhdFNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91
bmRSZXBlYXQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFj
a2dyb3VuZF9kYXNoX3JlcGVhdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcmVwZWF0U2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJiYWNrZ3JvdW5kLXJl
cGVhdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
Y2tncm91bmRfZGFzaF9zaXplR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3NpemUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3NpemVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJi
YWNrZ3JvdW5kLXNpemUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfc2l6ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXpl
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRf
ZGFzaF9zaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9zaXplU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJiYWNrZ3JvdW5kLXNpemUiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYXNlbGluZV9kYXNoX3No
aWZ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCYXNlbGluZVNoaWZ0KSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYXNl
bGluZV9kYXNoX3NoaWZ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X2Jhc2VsaW5lX2Rhc2hfc2hpZnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJiYXNlbGluZS1zaGlmdCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jhc2VsaW5lX2Rh
c2hfc2hpZnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCYXNlbGluZVNoaWZ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jhc2VsaW5lX2Rhc2hfc2hpZnQsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFzZWxpbmVf
ZGFzaF9zaGlmdFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiYmFzZWxpbmUtc2hpZnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ibG9ja19kYXNoX3NpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJsb2NrU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYmxvY2tfZGFzaF9zaXplLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Jsb2NrX2Rhc2hfc2l6ZUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJs
b2NrLXNpemUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ibG9ja19kYXNoX3NpemVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCbG9ja1NpemUsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmxvY2tfZGFzaF9zaXplLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jsb2NrX2Rh
c2hfc2l6ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiYmxvY2stc2l6ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlCb3JkZXJCbG9jaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2ssIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJi
b3JkZXItYmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJfZGFzaF9ibG9ja1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2Jsb2NrU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJib3JkZXItYmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX2NvbG9yR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0NvbG9yKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9ibG9ja19kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfY29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXIt
YmxvY2stY29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX2NvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxv
Y2tDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9ibG9ja19kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfY29sb3JT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJv
cmRlci1ibG9jay1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfZW5kR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9lbmQs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxv
Y2tfZGFzaF9lbmRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItYmxvY2stZW5kIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tf
ZGFzaF9lbmRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX2VuZCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9ibG9ja19kYXNoX2VuZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLWJsb2NrLWVuZCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hf
ZW5kX2Rhc2hfY29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRl
ckJsb2NrRW5kQ29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfZW5kX2Rhc2hfY29sb3IsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFz
aF9lbmRfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1ibG9jay1lbmQtY29sb3Ii
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9ibG9ja19kYXNoX2VuZF9kYXNoX2NvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tF
bmRDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9ibG9ja19kYXNoX2VuZF9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rh
c2hfZW5kX2Rhc2hfY29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImJvcmRlci1ibG9jay1lbmQtY29sb3IiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX2Vu
ZF9kYXNoX3N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJC
bG9ja0VuZFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX2VuZF9kYXNoX3N0eWxlLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hf
ZW5kX2Rhc2hfc3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItYmxvY2stZW5kLXN0eWxlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfYmxvY2tfZGFzaF9lbmRfZGFzaF9zdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrRW5k
U3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
X2Rhc2hfYmxvY2tfZGFzaF9lbmRfZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNo
X2VuZF9kYXNoX3N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJib3JkZXItYmxvY2stZW5kLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9lbmRf
ZGFzaF93aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxv
Y2tFbmRXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9lbmRfZGFzaF93aWR0aCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX2Vu
ZF9kYXNoX3dpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWJsb2NrLWVuZC13aWR0aCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X2Jsb2NrX2Rhc2hfZW5kX2Rhc2hfd2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZFdp
ZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX2Jsb2NrX2Rhc2hfZW5kX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9l
bmRfZGFzaF93aWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiYm9yZGVyLWJsb2NrLWVuZC13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnQpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJv
cmRlci1ibG9jay1zdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3Jk
ZXJCbG9ja1N0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9z
dGFydFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiYm9yZGVyLWJsb2NrLXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydF9kYXNoX2NvbG9yR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0Q29sb3Ip
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0YXJ0X2Rhc2hf
Y29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItYmxvY2stc3RhcnQtY29sb3IiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9j
a19kYXNoX3N0YXJ0X2Rhc2hfY29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0Q29s
b3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfYmxvY2tfZGFzaF9zdGFydF9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hf
c3RhcnRfZGFzaF9jb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiYm9yZGVyLWJsb2NrLXN0YXJ0LWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9z
dGFydF9kYXNoX3N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3Jk
ZXJCbG9ja1N0YXJ0U3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRfZGFzaF9zdHlsZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9j
a19kYXNoX3N0YXJ0X2Rhc2hfc3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItYmxvY2stc3Rh
cnQtc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0YXJ0X2Rhc2hfc3R5bGVTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlC
b3JkZXJCbG9ja1N0YXJ0U3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydF9kYXNoX3N0eWxlLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRfZGFzaF9zdHlsZVNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLWJsb2NrLXN0YXJ0LXN0eWxl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
X2Rhc2hfYmxvY2tfZGFzaF9zdGFydF9kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0V2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hf
c3RhcnRfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0YXJ0X2Rhc2hfd2lkdGhHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJib3JkZXItYmxvY2stc3RhcnQtd2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0YXJ0X2Rhc2hfd2lk
dGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0V2lkdGgsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydF9k
YXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRfZGFzaF93aWR0aFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVy
LWJsb2NrLXN0YXJ0LXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdHlsZUdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFz
aF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9ibG9ja19kYXNoX3N0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWJsb2NrLXN0eWxl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
X2Rhc2hfYmxvY2tfZGFzaF9zdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3R5bGUsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxv
Y2tfZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0eWxlU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItYmxvY2st
c3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9ibG9ja19kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlCb3JkZXJCbG9ja1dpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3dpZHRoLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rh
c2hfd2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItYmxvY2std2lkdGgiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19k
YXNoX3dpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tXaWR0aCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3dpZHRo
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfd2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1ibG9jay13aWR0aCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jv
dHRvbUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9ib3R0b20sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfYm90dG9tR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWJvdHRvbSIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jv
dHRvbVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0b20sIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90
dG9tU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJib3JkZXItYm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfY29sb3JHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0b21fZGFz
aF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9ib3R0b21fZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1ib3R0b20tY29s
b3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9ib3R0b21fZGFzaF9jb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9y
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X2JvdHRvbV9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX2NvbG9yU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXIt
Ym90dG9tLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfbGVmdF9kYXNoX3JhZGl1c0dldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cykpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfYm90dG9tX2Rhc2hfbGVmdF9kYXNoX3JhZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9sZWZ0X2Rhc2hfcmFkaXVz
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9k
YXNoX2xlZnRfZGFzaF9yYWRpdXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVz
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X2JvdHRvbV9kYXNoX2xlZnRfZGFzaF9yYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hf
bGVmdF9kYXNoX3JhZGl1c1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNo
X3JpZ2h0X2Rhc2hfcmFkaXVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21SaWdodFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfcmlnaHRfZGFzaF9y
YWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfYm90dG9tX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXIt
Ym90dG9tLXJpZ2h0LXJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX3JpZ2h0X2Rhc2hfcmFkaXVzU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfcmlnaHRfZGFz
aF9yYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXNTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRl
ci1ib3R0b20tcmlnaHQtcmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfc3R5bGVHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0
b21fZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9ib3R0b21fZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1ib3R0
b20tc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9zdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2JvdHRvbV9kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX3N0eWxl
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJi
b3JkZXItYm90dG9tLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfd2lkdGhHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0b21f
ZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9ib3R0b21fZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1ib3R0b20t
d2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9ib3R0b21fZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX2JvdHRvbV9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX3dpZHRoU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3Jk
ZXItYm90dG9tLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfY29sbGFwc2VHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9jb2xsYXBzZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9jb2xsYXBzZUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgImJvcmRlci1jb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2NvbGxhcHNlU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVyQ29sbGFwc2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfY29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfY29sbGFwc2VTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1jb2xsYXBz
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2NvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJD
b2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyX2Rhc2hfY29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItY29sb3IiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9jb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Nv
bG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJib3JkZXItY29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9lbmRfZGFzaF9lbmRfZGFzaF9yYWRpdXNHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckVuZEVuZFJhZGl1cykpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfZW5k
X2Rhc2hfZW5kX2Rhc2hfcmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlcl9kYXNoX2VuZF9kYXNoX2VuZF9kYXNoX3JhZGl1c0dldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgImJvcmRlci1lbmQtZW5kLXJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2VuZF9kYXNoX2VuZF9kYXNoX3JhZGl1c1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJvcmRlckVuZEVuZFJhZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9lbmRfZGFzaF9lbmRfZGFzaF9yYWRpdXMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyX2Rhc2hfZW5kX2Rhc2hfZW5kX2Rhc2hfcmFkaXVzU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItZW5kLWVuZC1yYWRp
dXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9lbmRfZGFzaF9zdGFydF9kYXNoX3JhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Qm9yZGVyRW5kU3RhcnRSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2VuZF9kYXNoX3N0
YXJ0X2Rhc2hfcmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2VuZF9kYXNoX3N0YXJ0X2Rhc2hfcmFkaXVzR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
Ym9yZGVyLWVuZC1zdGFydC1yYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9lbmRfZGFzaF9zdGFydF9kYXNoX3JhZGl1c1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJvcmRlckVuZFN0YXJ0UmFkaXVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2VuZF9kYXNoX3N0YXJ0X2Rhc2hfcmFk
aXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlcl9kYXNoX2VuZF9kYXNoX3N0YXJ0X2Rhc2hfcmFkaXVzU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItZW5kLXN0
YXJ0LXJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX2ltYWdlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlCb3JkZXJJbWFnZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXIt
aW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9pbWFnZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckltYWdlLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2ltYWdlLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2ltYWdlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJib3JkZXItaW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX291dHNldEdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VPdXRzZXQpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lt
YWdlX2Rhc2hfb3V0c2V0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hfb3V0c2V0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWlt
YWdlLW91dHNldCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hfb3V0c2V0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2VPdXRzZXQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyX2Rhc2hfaW1hZ2VfZGFzaF9vdXRzZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2VfZGFzaF9vdXRz
ZXRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
ImJvcmRlci1pbWFnZS1vdXRzZXQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX3JlcGVhdEdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VSZXBlYXQpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2ltYWdl
X2Rhc2hfcmVwZWF0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2ltYWdlX2Rhc2hfcmVwZWF0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWltYWdl
LXJlcGVhdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hfcmVwZWF0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VS
ZXBlYXQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
X2Rhc2hfaW1hZ2VfZGFzaF9yZXBlYXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2VfZGFzaF9yZXBlYXRT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJv
cmRlci1pbWFnZS1yZXBlYXQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX3NsaWNlR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNsaWNlKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNo
X3NsaWNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX2ltYWdlX2Rhc2hfc2xpY2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItaW1hZ2Utc2xpY2Ui
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9pbWFnZV9kYXNoX3NsaWNlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTbGljZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFn
ZV9kYXNoX3NsaWNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hfc2xpY2VTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1pbWFnZS1z
bGljZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2ltYWdlX2Rhc2hfc291cmNlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2VfZGFzaF9zb3VyY2UsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2Vf
ZGFzaF9zb3VyY2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItaW1hZ2Utc291cmNlIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1h
Z2VfZGFzaF9zb3VyY2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNo
X3NvdXJjZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX3NvdXJjZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLWltYWdlLXNvdXJj
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2ltYWdlX2Rhc2hfd2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJvcmRlckltYWdlV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hfd2lkdGgsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2VfZGFzaF93
aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1pbWFnZS13aWR0aCIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hf
d2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hfd2lkdGgsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfaW1hZ2VfZGFzaF93aWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLWltYWdlLXdpZHRoIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5l
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmUpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX2lubGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9pbmxpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItaW5saW5lIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5l
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJv
cmRlci1pbmxpbmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9jb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lQ29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX2Nv
bG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X2lubGluZV9kYXNoX2NvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWlubGluZS1jb2xvciIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX2lubGluZV9kYXNoX2NvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lQ29sb3IsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5s
aW5lX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfY29sb3JTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1pbmxp
bmUtY29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUJvcmRlcklubGluZUVuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfZW5kLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9k
YXNoX2VuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1pbmxpbmUtZW5kIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rh
c2hfZW5kU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX2VuZCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1pbmxpbmUtZW5kIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rh
c2hfZW5kX2Rhc2hfY29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
cmRlcklubGluZUVuZENvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRfZGFzaF9jb2xvciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxp
bmVfZGFzaF9lbmRfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1pbmxpbmUtZW5k
LWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfZW5kX2Rhc2hfY29sb3JTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3Jk
ZXJJbmxpbmVFbmRDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9pbmxpbmVfZGFzaF9lbmRfZGFzaF9jb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLWlubGluZS1lbmQtY29sb3IiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9p
bmxpbmVfZGFzaF9lbmRfZGFzaF9zdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVySW5saW5lRW5kU3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX2VuZF9kYXNo
X3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX2lubGluZV9kYXNoX2VuZF9kYXNoX3N0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWlu
bGluZS1lbmQtc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRfZGFzaF9zdHlsZVNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJvcmRlcklubGluZUVuZFN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX2VuZF9kYXNoX3N0eWxlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2lubGluZV9kYXNoX2VuZF9kYXNoX3N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItaW5saW5lLWVuZC1zdHls
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2lubGluZV9kYXNoX2VuZF9kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVFbmRXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hf
ZW5kX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfZW5kX2Rhc2hfd2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJi
b3JkZXItaW5saW5lLWVuZC13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX2VuZF9kYXNoX3dpZHRoU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kV2lkdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfZW5kX2Rhc2hfd2lk
dGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfZW5kX2Rhc2hfd2lkdGhTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1pbmxpbmUt
ZW5kLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFy
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9p
bmxpbmVfZGFzaF9zdGFydEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1pbmxpbmUtc3RhcnQiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9pbmxpbmVfZGFzaF9zdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0YXJ0LCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGlu
ZV9kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0U2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItaW5saW5l
LXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRfZGFzaF9jb2xvckdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3RhcnRDb2xvcikpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5s
aW5lX2Rhc2hfc3RhcnRfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydF9kYXNoX2NvbG9yR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiYm9yZGVyLWlubGluZS1zdGFydC1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0
YXJ0X2Rhc2hfY29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVTdGFydENvbG9yLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGlu
ZV9kYXNoX3N0YXJ0X2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRf
ZGFzaF9jb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiYm9yZGVyLWlubGluZS1zdGFydC1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0
X2Rhc2hfc3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklu
bGluZVN0YXJ0U3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0X2Rhc2hfc3R5bGUsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5l
X2Rhc2hfc3RhcnRfZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1pbmxpbmUtc3Rh
cnQtc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydF9kYXNoX3N0eWxlU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVySW5saW5lU3RhcnRTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydF9kYXNoX3N0eWxlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0X2Rhc2hfc3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1pbmxpbmUtc3RhcnQt
c3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydF9kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVTdGFydFdpZHRoKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxp
bmVfZGFzaF9zdGFydF9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0X2Rhc2hfd2lkdGhHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfc3Rh
cnRfZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0YXJ0V2lkdGgsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5l
X2Rhc2hfc3RhcnRfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydF9k
YXNoX3dpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfc3R5bGVH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0eWxlKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9pbmxpbmVfZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImJvcmRlci1pbmxpbmUtc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdHlsZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUJvcmRlcklubGluZVN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGlu
ZV9kYXNoX3N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJib3JkZXItaW5saW5lLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfd2lkdGhHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVdpZHRoKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9pbmxpbmVfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJv
cmRlci1pbmxpbmUtd2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
cmRlcklubGluZVdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9k
YXNoX3dpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJib3JkZXItaW5saW5lLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyTGVmdCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiYm9yZGVyLWxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyTGVmdCwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX2xlZnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1sZWZ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdF9kYXNoX2NvbG9yR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X2xlZnRfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9sZWZ0X2Rhc2hfY29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItbGVm
dC1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2xlZnRfZGFzaF9jb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xv
ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9sZWZ0X2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdF9kYXNoX2NvbG9yU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItbGVm
dC1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2xlZnRfZGFzaF9zdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0X2Rhc2hfc3R5bGUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdF9kYXNo
X3N0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWxlZnQtc3R5bGUiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0X2Rhc2hf
c3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdF9kYXNoX3N0eWxlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2xlZnRfZGFzaF9zdHlsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLWxlZnQtc3R5bGUiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0X2Rhc2hf
d2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0
aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfbGVmdF9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2xlZnRfZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImJvcmRlci1sZWZ0LXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdF9kYXNoX3dpZHRoU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2xlZnRfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0X2Rhc2hfd2lk
dGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
ImJvcmRlci1sZWZ0LXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmFkaXVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlCb3JkZXJSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3JhZGl1cywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yYWRpdXNHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJib3JkZXItcmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmFkaXVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVz
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X3JhZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yYWRpdXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1yYWRpdXMiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3Jp
Z2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X3JpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLXJpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHRTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlCb3JkZXJSaWdodCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJfZGFzaF9yaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLXJpZ2h0Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfcmlnaHRfZGFzaF9jb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHRfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodF9kYXNoX2NvbG9y
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLXJpZ2h0LWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHRfZGFzaF9jb2xv
clNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHRfZGFzaF9jb2xvciwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9yaWdodF9kYXNoX2NvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItcmlnaHQtY29sb3IiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodF9kYXNo
X3N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0
eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9yaWdodF9kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3JpZ2h0X2Rhc2hfc3R5bGVHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJib3JkZXItcmlnaHQtc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodF9kYXNoX3N0eWxlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodF9kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3JpZ2h0
X2Rhc2hfc3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgImJvcmRlci1yaWdodC1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3JpZ2h0X2Rhc2hfd2lkdGhHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X3JpZ2h0X2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyX2Rhc2hfcmlnaHRfZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1y
aWdodC13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX3JpZ2h0X2Rhc2hfd2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJSaWdo
dFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX3JpZ2h0X2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHRfZGFzaF93aWR0aFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9y
ZGVyLXJpZ2h0LXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfc3BhY2luZ0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Qm9yZGVyU3BhY2luZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3BhY2luZywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zcGFjaW5nR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiYm9yZGVyLXNwYWNpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zcGFjaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyU3Bh
Y2luZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9zcGFjaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3NwYWNpbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1zcGFjaW5nIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3Rh
cnRfZGFzaF9lbmRfZGFzaF9yYWRpdXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJvcmRlclN0YXJ0RW5kUmFkaXVzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX2VuZF9kYXNoX3Jh
ZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9zdGFydF9kYXNoX2VuZF9kYXNoX3JhZGl1c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1zdGFy
dC1lbmQtcmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF9lbmRfZGFzaF9yYWRpdXNTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlCb3JkZXJTdGFydEVuZFJhZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX2VuZF9kYXNoX3JhZGl1cywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9zdGFydF9kYXNoX2VuZF9kYXNoX3JhZGl1c1NldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLXN0YXJ0LWVuZC1yYWRpdXMi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9zdGFydF9kYXNoX3N0YXJ0X2Rhc2hfcmFkaXVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlCb3JkZXJTdGFydFN0YXJ0UmFkaXVzKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zdGFydF9kYXNo
X3N0YXJ0X2Rhc2hfcmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX3N0YXJ0X2Rhc2hfc3RhcnRfZGFzaF9yYWRpdXNHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJib3JkZXItc3RhcnQtc3RhcnQtcmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF9zdGFydF9kYXNo
X3JhZGl1c1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclN0YXJ0U3RhcnRSYWRpdXMsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF9z
dGFydF9kYXNoX3JhZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3N0YXJ0X2Rhc2hfcmFk
aXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJib3JkZXItc3RhcnQtc3RhcnQtcmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zdHlsZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zdHlsZUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgImJvcmRlci1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyU3R5
bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1zdHlsZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcEdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyVG9wKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3AsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiYm9yZGVyLXRvcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcFNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRv
cCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF90b3AsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItdG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfY29sb3JHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF90b3BfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF90b3BfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci10b3At
Y29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF90b3BfZGFzaF9jb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3Rv
cF9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX2NvbG9yU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItdG9wLWNvbG9y
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
X2Rhc2hfdG9wX2Rhc2hfbGVmdF9kYXNoX3JhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfbGVmdF9k
YXNoX3JhZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF90b3BfZGFzaF9sZWZ0X2Rhc2hfcmFkaXVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVy
LXRvcC1sZWZ0LXJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX2xlZnRfZGFzaF9yYWRpdXNTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX2xlZnRfZGFzaF9yYWRpdXMsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyX2Rhc2hfdG9wX2Rhc2hfbGVmdF9kYXNoX3JhZGl1c1NldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX3RvcF9kYXNoX3JpZ2h0X2Rhc2hfcmFkaXVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfcmlnaHRf
ZGFzaF9yYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyX2Rhc2hfdG9wX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3Jk
ZXItdG9wLXJpZ2h0LXJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3JpZ2h0X2Rhc2hfcmFkaXVzU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXNTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci10b3AtcmlnaHQt
cmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfdG9wX2Rhc2hfc3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUJvcmRlclRvcFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3BfZGFzaF9zdHlsZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3BfZGFzaF9zdHls
ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci10b3Atc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3BfZGFzaF9zdHlsZVNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X3RvcF9kYXNoX3N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJib3JkZXItdG9wLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfd2lkdGhHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90
b3BfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF90b3BfZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci10b3Atd2lk
dGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF90b3BfZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9k
YXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3dpZHRoU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItdG9wLXdpZHRoIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfd2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcldpZHRo
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci13aWR0aCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3dp
ZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfd2lkdGhT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJv
cmRlci13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2JveF9kYXNoX3NoYWRvd0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm94U2hhZG93KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3hfZGFzaF9zaGFkb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm94X2Rhc2hfc2hhZG93R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm94LXNoYWRvdyIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JveF9kYXNoX3No
YWRvd1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJveFNoYWRvdywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3hfZGFzaF9zaGFkb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm94X2Rhc2hfc2hhZG93U2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3gtc2hh
ZG93Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm94
X2Rhc2hfc2l6aW5nR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3hTaXpp
bmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JveF9kYXNoX3NpemluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3hfZGFzaF9zaXppbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3gtc2l6aW5nIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm94X2Rhc2hfc2l6aW5nU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Qm94U2l6aW5nLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JveF9kYXNoX3NpemluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3hfZGFzaF9zaXppbmdTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJveC1zaXppbmciKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha19kYXNo
X2FmdGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCcmVha0FmdGVyKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVh
a19kYXNoX2FmdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Jy
ZWFrX2Rhc2hfYWZ0ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJicmVhay1hZnRlciIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JyZWFrX2Rhc2hfYWZ0ZXJTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlCcmVha0FmdGVyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JyZWFrX2Rhc2hfYWZ0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtfZGFzaF9hZnRlclNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYnJlYWstYWZ0ZXIi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha19k
YXNoX2JlZm9yZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QnJlYWtCZWZv
cmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JyZWFrX2Rhc2hfYmVmb3JlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX2JyZWFrX2Rhc2hfYmVmb3JlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYnJlYWstYmVmb3JlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtfZGFzaF9i
ZWZvcmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlCcmVha0JlZm9yZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha19kYXNoX2JlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha19kYXNoX2JlZm9y
ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
YnJlYWstYmVmb3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYnJlYWtfZGFzaF9pbnNpZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJyZWFrSW5zaWRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9icmVha19kYXNoX2luc2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9icmVha19kYXNoX2luc2lkZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJyZWFr
LWluc2lkZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JyZWFrX2Rhc2hfaW5zaWRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QnJlYWtJbnNpZGUsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtfZGFzaF9pbnNpZGUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJl
YWtfZGFzaF9pbnNpZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImJyZWFrLWluc2lkZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2J1ZmZlcmVkX2Rhc2hfcmVuZGVyaW5nR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCdWZmZXJlZFJlbmRlcmluZykpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYnVmZmVyZWRfZGFzaF9yZW5k
ZXJpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYnVmZmVyZWRf
ZGFzaF9yZW5kZXJpbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJidWZmZXJlZC1yZW5kZXJpbmciKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9idWZmZXJlZF9kYXNo
X3JlbmRlcmluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJ1ZmZlcmVkUmVuZGVyaW5nLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2J1ZmZlcmVkX2Rhc2hfcmVuZGVyaW5nLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2J1ZmZlcmVkX2Rhc2hfcmVuZGVyaW5nU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJidWZmZXJlZC1yZW5kZXJpbmciKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXB0aW9uX2Rhc2hfc2lkZUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NhcHRpb25fZGFzaF9z
aWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2NhcHRpb25fZGFz
aF9zaWRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY2FwdGlvbi1zaWRlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY2FwdGlvbl9kYXNoX3NpZGVTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlDYXB0aW9uU2lkZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9jYXB0aW9uX2Rhc2hfc2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXB0aW9uX2Rhc2hfc2lkZVNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY2FwdGlvbi1zaWRlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2FyZXRfZGFz
aF9jb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q2FyZXRDb2xvcikp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2Fy
ZXRfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
YXJldF9kYXNoX2NvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY2FyZXQtY29sb3IiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXJldF9kYXNoX2NvbG9yU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Q2FyZXRDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9jYXJldF9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NhcmV0X2Rhc2hfY29sb3JTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNhcmV0LWNvbG9y
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcF9k
YXNoX3BhdGhHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNsaXBQYXRoKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlw
X2Rhc2hfcGF0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlw
X2Rhc2hfcGF0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNsaXAtcGF0aCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBfZGFzaF9wYXRoU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Q2xpcFBhdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Y2xpcF9kYXNoX3BhdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fY2xpcF9kYXNoX3BhdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNsaXAtcGF0aCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBfZGFzaF9ydWxlR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDbGlwUnVsZSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcF9kYXNoX3J1bGUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcF9kYXNoX3J1bGVHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJjbGlwLXJ1bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jbGlwX2Rhc2hfcnVsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNsaXBSdWxlLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBfZGFzaF9ydWxlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2NsaXBfZGFzaF9ydWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJjbGlwLXJ1bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX2ludGVycG9sYXRpb25HZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9pbnRlcnBv
bGF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rh
c2hfaW50ZXJwb2xhdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNvbG9yLWludGVycG9sYXRpb24iKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNo
X2ludGVycG9sYXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2xvckludGVycG9sYXRpb24sIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9pbnRlcnBvbGF0
aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvbG9yX2Rhc2hfaW50ZXJwb2xhdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29sb3ItaW50ZXJwb2xhdGlvbiIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hfaW50
ZXJwb2xhdGlvbl9kYXNoX2ZpbHRlcnNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hfaW50ZXJwb2xhdGlvbl9kYXNo
X2ZpbHRlcnMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3Jf
ZGFzaF9pbnRlcnBvbGF0aW9uX2Rhc2hfZmlsdGVyc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNvbG9yLWlu
dGVycG9sYXRpb24tZmlsdGVycyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hfaW50ZXJwb2xhdGlvbl9kYXNoX2ZpbHRlcnNTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlDb2xvckludGVycG9sYXRpb25GaWx0ZXJzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hfaW50ZXJwb2xhdGlvbl9kYXNoX2ZpbHRl
cnMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fY29sb3JfZGFzaF9pbnRlcnBvbGF0aW9uX2Rhc2hfZmlsdGVyc1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29sb3ItaW50ZXJwb2xh
dGlvbi1maWx0ZXJzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fY29sb3JfZGFzaF9wcm9maWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlDb2xvclByb2ZpbGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hfcHJvZmlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX3Byb2ZpbGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJj
b2xvci1wcm9maWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fY29sb3JfZGFzaF9wcm9maWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sb3JQcm9maWxlLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hfcHJvZmls
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9jb2xvcl9kYXNoX3Byb2ZpbGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbG9yLXByb2ZpbGUiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX3JlbmRlcmluZ0dldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sb3JSZW5kZXJpbmcpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hfcmVu
ZGVyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rh
c2hfcmVuZGVyaW5nR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY29sb3ItcmVuZGVyaW5nIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9yZW5kZXJp
bmdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlDb2xvclJlbmRlcmluZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX3JlbmRlcmluZywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX3Jl
bmRlcmluZ1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiY29sb3ItcmVuZGVyaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9zY2hlbWVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUNvbG9yU2NoZW1lKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX3NjaGVtZSwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX3NjaGVtZUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgImNvbG9yLXNjaGVtZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2NvbG9yX2Rhc2hfc2NoZW1lU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sb3JTY2hlbWUsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9zY2hl
bWUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fY29sb3JfZGFzaF9zY2hlbWVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbG9yLXNjaGVtZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX2NvdW50R2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5Db3VudCkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfY291bnQsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfY291bnRH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJjb2x1bW4tY291bnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9jb3VudFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNv
bHVtbkNvdW50LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Nv
bHVtbl9kYXNoX2NvdW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX2NvdW50U2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb2x1bW4tY291bnQiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9maWxs
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5GaWxsKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFz
aF9maWxsLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9k
YXNoX2ZpbGxHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjb2x1bW4tZmlsbCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX2ZpbGxTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlDb2x1bW5GaWxsLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2NvbHVtbl9kYXNoX2ZpbGwsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfZmlsbFNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29sdW1uLWZpbGwiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9n
YXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbkdhcCkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rh
c2hfZ2FwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9k
YXNoX2dhcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNvbHVtbi1nYXAiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9nYXBTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlDb2x1bW5HYXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Y29sdW1uX2Rhc2hfZ2FwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX2dhcFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29sdW1uLWdhcCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3J1bGVHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtblJ1bGUpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3J1
bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hf
cnVsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgImNvbHVtbi1ydWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfcnVsZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUNvbHVtblJ1bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Y29sdW1uX2Rhc2hfcnVsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb2x1bW4tcnVsZSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3J1bGVf
ZGFzaF9jb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVs
ZUNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfcnVsZV9kYXNoX2NvbG9yR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiY29sdW1uLXJ1bGUtY29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfY29sb3JTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlDb2x1bW5SdWxlQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fY29sdW1uX2Rhc2hfcnVsZV9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3J1bGVfZGFz
aF9jb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiY29sdW1uLXJ1bGUtY29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfc3R5bGVHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtblJ1bGVTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfcnVsZV9k
YXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVt
bl9kYXNoX3J1bGVfZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNvbHVtbi1ydWxlLXN0eWxl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1u
X2Rhc2hfcnVsZV9kYXNoX3N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZVN0eWxlLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3J1bGVf
ZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfc3R5bGVTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbHVtbi1ydWxlLXN0eWxl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1u
X2Rhc2hfcnVsZV9kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlDb2x1bW5SdWxlV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3J1bGVfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGhH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJjb2x1bW4tcnVsZS13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3J1bGVfZGFzaF93aWR0aFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUNvbHVtblJ1bGVXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rh
c2hfcnVsZV9kYXNoX3dpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJjb2x1bW4tcnVsZS13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3NwYW5HZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtblNwYW4pKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3NwYW4sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfc3BhbkdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgImNvbHVtbi1zcGFuIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfc3BhblNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtblNw
YW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rh
c2hfc3BhbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9zcGFuU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb2x1bW4tc3BhbiIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3dpZHRoR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5XaWR0aCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfd2lkdGgs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfd2lk
dGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJjb2x1bW4td2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF93aWR0aFNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUNvbHVtbldpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2NvbHVtbl9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3dpZHRoU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb2x1bW4td2lkdGgiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVyX2Rhc2hf
aW5jcmVtZW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb3VudGVySW5j
cmVtZW50KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9jb3VudGVyX2Rhc2hfaW5jcmVtZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvdW50ZXJfZGFzaF9pbmNyZW1lbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjb3Vu
dGVyLWluY3JlbWVudCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvdW50ZXJfZGFzaF9pbmNyZW1lbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb3VudGVySW5jcmVt
ZW50LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50ZXJf
ZGFzaF9pbmNyZW1lbnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fY291bnRlcl9kYXNoX2luY3JlbWVudFNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY291bnRlci1pbmNyZW1lbnQi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVy
X2Rhc2hfcmVzZXRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvdW50ZXJS
ZXNldCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fY291bnRlcl9kYXNoX3Jlc2V0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvdW50ZXJfZGFzaF9yZXNldEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNvdW50ZXItcmVzZXQi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVy
X2Rhc2hfcmVzZXRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY291bnRlcl9kYXNoX3Jlc2V0LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50ZXJf
ZGFzaF9yZXNldFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiY291bnRlci1yZXNldCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2RvbWluYW50X2Rhc2hfYmFzZWxpbmVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmUpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2RvbWluYW50X2Rhc2hfYmFzZWxpbmUs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZG9taW5hbnRfZGFzaF9i
YXNlbGluZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImRvbWluYW50LWJhc2VsaW5lIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZG9taW5hbnRfZGFzaF9iYXNlbGlu
ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZG9taW5hbnRfZGFzaF9iYXNlbGluZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kb21pbmFudF9k
YXNoX2Jhc2VsaW5lU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJkb21pbmFudC1iYXNlbGluZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2VtcHR5X2Rhc2hfY2VsbHNHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VtcHR5X2Rhc2hfY2VsbHMsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZW1wdHlfZGFzaF9jZWxsc0dldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgImVtcHR5LWNlbGxzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZW1wdHlfZGFzaF9jZWxsc1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZW1wdHlfZGFzaF9jZWxs
cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9lbXB0eV9kYXNoX2NlbGxzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJlbXB0eS1jZWxscyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2VuYWJsZV9kYXNoX2JhY2tncm91bmRHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUVuYWJsZUJhY2tncm91bmQpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VuYWJsZV9kYXNoX2Jh
Y2tncm91bmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZW5hYmxl
X2Rhc2hfYmFja2dyb3VuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImVuYWJsZS1iYWNrZ3JvdW5kIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZW5hYmxlX2Rhc2hf
YmFja2dyb3VuZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUVuYWJsZUJhY2tncm91bmQsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZW5hYmxlX2Rhc2hfYmFja2dyb3VuZCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9l
bmFibGVfZGFzaF9iYWNrZ3JvdW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJlbmFibGUtYmFja2dyb3VuZCIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxfZGFzaF9vcGFjaXR5R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGaWxsT3BhY2l0eSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsbF9kYXNoX29wYWNpdHks
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsbF9kYXNoX29wYWNp
dHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJmaWxsLW9wYWNpdHkiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsX2Rhc2hfb3BhY2l0eVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUZpbGxPcGFjaXR5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZpbGxfZGFzaF9vcGFjaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxfZGFzaF9vcGFjaXR5U2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmaWxsLW9wYWNpdHkiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsX2Rhc2hfcnVs
ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmlsbFJ1bGUpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxfZGFzaF9y
dWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxfZGFzaF9y
dWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiZmlsbC1ydWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsbF9kYXNoX3J1bGVTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGaWxs
UnVsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsX2Rh
c2hfcnVsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9maWxsX2Rhc2hfcnVsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmlsbC1ydWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX2Jhc2lzR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4QmFzaXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9iYXNpcywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfYmFzaXNHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJmbGV4LWJhc2lzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZmxleF9kYXNoX2Jhc2lzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEJhc2lzLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9iYXNpcywg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mbGV4X2Rhc2hfYmFzaXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImZsZXgtYmFzaXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfZGlyZWN0aW9uR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4RGlyZWN0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfZGlyZWN0aW9uLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9kaXJlY3Rpb25H
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJmbGV4LWRpcmVjdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9kaXJlY3Rpb25TZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlGbGV4RGlyZWN0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZsZXhfZGFzaF9kaXJlY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX2RpcmVjdGlvblNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmxleC1kaXJlY3Rp
b24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4
X2Rhc2hfZmxvd0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEZsb3cp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Zs
ZXhfZGFzaF9mbG93LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Zs
ZXhfZGFzaF9mbG93R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZmxleC1mbG93Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX2Zsb3dTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlGbGV4RmxvdywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mbGV4X2Rhc2hfZmxvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfZmxvd1NldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmxleC1mbG93Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX2dyb3dHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhHcm93KSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfZ3JvdywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfZ3Jvd0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgImZsZXgtZ3JvdyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9ncm93U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEdyb3csIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX2dyb3cs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZmxleF9kYXNoX2dyb3dTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImZsZXgtZ3JvdyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9zaHJpbmtHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUZsZXhTaHJpbmspKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9zaHJpbmssIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX3Nocmlua0dldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgImZsZXgtc2hyaW5rIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZmxleF9kYXNoX3Nocmlua1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhTaHJpbmssIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX3Nocmluaywg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mbGV4X2Rhc2hfc2hyaW5rU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJmbGV4LXNocmluayIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF93cmFwR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlGbGV4V3JhcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX3dyYXAsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX3dyYXBHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJm
bGV4LXdyYXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mbGV4X2Rhc2hfd3JhcFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhXcmFwLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF93cmFwLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF93
cmFwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJmbGV4LXdyYXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mbG9vZF9kYXNoX2NvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlGbG9vZENvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mbG9vZF9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2Zsb29kX2Rhc2hfY29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmbG9vZC1jb2xv
ciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29k
X2Rhc2hfY29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9vZENvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxvb2RfZGFzaF9j
b2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiZmxvb2QtY29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mbG9vZF9kYXNoX29wYWNpdHlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUZsb29kT3BhY2l0eSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZmxvb2RfZGFzaF9vcGFjaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kX2Rhc2hfb3BhY2l0eUdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImZsb29kLW9wYWNpdHkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mbG9vZF9kYXNoX29wYWNpdHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9vZE9wYWNpdHksIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxvb2RfZGFzaF9vcGFj
aXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Zsb29kX2Rhc2hfb3BhY2l0eVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmxvb2Qtb3BhY2l0eSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9kaXNwbGF5R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250RGlzcGxheSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2Rpc3BsYXks
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2Rpc3Bs
YXlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJmb250LWRpc3BsYXkiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfZGlzcGxheVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUZvbnREaXNwbGF5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZvbnRfZGFzaF9kaXNwbGF5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9kaXNwbGF5U2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmb250LWRpc3BsYXkiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfZmFt
aWx5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250RmFtaWx5KSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rh
c2hfZmFtaWx5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRf
ZGFzaF9mYW1pbHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmb250LWZhbWlseSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9mYW1pbHlTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlGb250RmFtaWx5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRfZGFzaF9mYW1pbHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2ZhbWlseVNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZm9udC1mYW1pbHkiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hf
ZmVhdHVyZV9kYXNoX3NldHRpbmdzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlGb250RmVhdHVyZVNldHRpbmdzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfZmVhdHVyZV9kYXNoX3NldHRpbmdzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9mZWF0dXJlX2Rh
c2hfc2V0dGluZ3NHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmb250LWZlYXR1cmUtc2V0dGluZ3MiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfZmVh
dHVyZV9kYXNoX3NldHRpbmdzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udEZlYXR1cmVTZXR0aW5ncywgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfZmVhdHVy
ZV9kYXNoX3NldHRpbmdzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9mZWF0dXJlX2Rhc2hfc2V0dGluZ3NTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZvbnQtZmVh
dHVyZS1zZXR0aW5ncyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRfZGFzaF9rZXJuaW5nR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXZWJraXRGb250S2VybmluZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2tlcm5pbmcsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2tlcm5pbmdHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJmb250LWtlcm5pbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250X2Rhc2hfa2VybmluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5n
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9r
ZXJuaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZvbnRfZGFzaF9rZXJuaW5nU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmb250LWtlcm5pbmciKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfb3B0aWNhbF9kYXNoX3Np
emluZ0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udE9wdGljYWxTaXpp
bmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZvbnRfZGFzaF9vcHRpY2FsX2Rhc2hfc2l6aW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9vcHRpY2FsX2Rhc2hfc2l6aW5nR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiZm9udC1vcHRpY2FsLXNpemluZyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9vcHRpY2FsX2Rhc2hfc2l6aW5nU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Rm9udE9wdGljYWxTaXppbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZm9udF9kYXNoX29wdGljYWxfZGFzaF9zaXppbmcsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX29w
dGljYWxfZGFzaF9zaXppbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImZvbnQtb3B0aWNhbC1zaXppbmciKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc2l6ZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFNpemUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9zaXplLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9zaXplR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiZm9udC1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZm9udF9kYXNoX3NpemVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250U2l6ZSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc2l6ZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250
X2Rhc2hfc2l6ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiZm9udC1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZm9udF9kYXNoX3N0cmV0Y2hHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUZvbnRTdHJldGNoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3RyZXRjaCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3RyZXRjaEdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImZvbnQtc3RyZXRjaCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRfZGFzaF9zdHJldGNoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFN0cmV0Y2gsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3N0cmV0Y2gs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udF9kYXNoX3N0cmV0Y2hTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgImZvbnQtc3RyZXRjaCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9zdHlsZUdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3R5bGUsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3N0eWxlR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiZm9udC1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZvbnRfZGFzaF9zdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3R5bGUsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Zm9udF9kYXNoX3N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJmb250LXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3N5bnRoZXNpc0dldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Rm9udFN5bnRoZXNpcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3N5bnRoZXNpcywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3ludGhlc2lzR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiZm9udC1zeW50aGVzaXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3ludGhlc2lzU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Rm9udFN5bnRoZXNpcywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mb250X2Rhc2hfc3ludGhlc2lzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9zeW50aGVzaXNTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZvbnQtc3ludGhlc2lz
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9k
YXNoX3ZhcmlhbnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJp
YW50KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mb250X2Rhc2hfdmFyaWFudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mb250X2Rhc2hfdmFyaWFudEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZvbnQtdmFyaWFudCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92
YXJpYW50U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnQsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3Zhcmlh
bnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
ImZvbnQtdmFyaWFudCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRfZGFzaF92YXJpYW50X2Rhc2hfYWx0ZXJuYXRlc0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRBbHRlcm5hdGVzKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFu
dF9kYXNoX2FsdGVybmF0ZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9hbHRlcm5hdGVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZm9u
dC12YXJpYW50LWFsdGVybmF0ZXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2FsdGVybmF0ZXNTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlGb250VmFyaWFudEFsdGVybmF0ZXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9hbHRlcm5hdGVzLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRf
ZGFzaF92YXJpYW50X2Rhc2hfYWx0ZXJuYXRlc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZm9udC12YXJpYW50LWFsdGVybmF0ZXMiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFy
aWFudF9kYXNoX2NhcHNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRW
YXJpYW50Q2FwcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9jYXBzLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYW50X2Rhc2hfY2Fwc0dldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgImZvbnQtdmFyaWFudC1jYXBzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9jYXBzU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Rm9udFZhcmlhbnRDYXBzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYW50X2Rhc2hfY2FwcywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFu
dF9kYXNoX2NhcHNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgImZvbnQtdmFyaWFudC1jYXBzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9lYXN0X2Rhc2hfYXNp
YW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJpYW50RWFzdEFz
aWFuKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2Vhc3RfZGFzaF9hc2lhbiwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2Vhc3RfZGFz
aF9hc2lhbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZvbnQtdmFyaWFudC1lYXN0LWFzaWFuIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3Zhcmlh
bnRfZGFzaF9lYXN0X2Rhc2hfYXNpYW5TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250VmFyaWFudEVhc3RBc2lh
biwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hf
dmFyaWFudF9kYXNoX2Vhc3RfZGFzaF9hc2lhbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2Vh
c3RfZGFzaF9hc2lhblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiZm9udC12YXJpYW50LWVhc3QtYXNpYW4iKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2xpZ2F0
dXJlc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdh
dHVyZXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZvbnRfZGFzaF92YXJpYW50X2Rhc2hfbGlnYXR1cmVzLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYW50X2Rhc2hfbGlnYXR1cmVzR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiZm9udC12YXJpYW50LWxpZ2F0dXJlcyIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYW50X2Rhc2hfbGln
YXR1cmVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9saWdh
dHVyZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9saWdhdHVyZXNTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZvbnQtdmFyaWFudC1saWdh
dHVyZXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
b250X2Rhc2hfdmFyaWFudF9kYXNoX251bWVyaWNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUZvbnRWYXJpYW50TnVtZXJpYykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9udW1lcmlj
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJp
YW50X2Rhc2hfbnVtZXJpY0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZvbnQtdmFyaWFudC1udW1lcmljIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNo
X3ZhcmlhbnRfZGFzaF9udW1lcmljU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnROdW1lcmljLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJp
YW50X2Rhc2hfbnVtZXJpYywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX251bWVyaWNTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZvbnQtdmFy
aWFudC1udW1lcmljIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9wb3NpdGlvbkdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRQb3NpdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFz
aF9wb3NpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250
X2Rhc2hfdmFyaWFudF9kYXNoX3Bvc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZm9udC12YXJpYW50
LXBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9wb3NpdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJp
YW50UG9zaXRpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Zm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9wb3NpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNo
X3Bvc2l0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJmb250LXZhcmlhbnQtcG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWF0aW9uX2Rhc2hfc2V0dGluZ3NH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJpYXRpb25TZXR0aW5n
cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Zm9udF9kYXNoX3ZhcmlhdGlvbl9kYXNoX3NldHRpbmdzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYXRpb25fZGFzaF9zZXR0aW5nc0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgImZvbnQtdmFyaWF0aW9uLXNldHRpbmdzIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhdGlvbl9kYXNoX3Nl
dHRpbmdzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhdGlvblNldHRpbmdzLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYXRpb25fZGFzaF9z
ZXR0aW5ncywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWF0aW9uX2Rhc2hfc2V0dGluZ3NTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZvbnQtdmFyaWF0aW9u
LXNldHRpbmdzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udF9kYXNoX3dlaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Rm9udFdlaWdodCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZm9udF9kYXNoX3dlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mb250X2Rhc2hfd2VpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZm9udC13ZWlnaHQi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rh
c2hfd2VpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfd2VpZ2h0LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF93ZWln
aHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
ImZvbnQtd2VpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZ2x5cGhfZGFzaF9vcmllbnRhdGlvbl9kYXNoX2hvcml6b250YWxHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlwaF9k
YXNoX29yaWVudGF0aW9uX2Rhc2hfaG9yaXpvbnRhbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9nbHlwaF9kYXNoX29yaWVudGF0aW9uX2Rhc2hfaG9yaXpvbnRhbEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgImdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlwaF9kYXNoX29yaWVudGF0
aW9uX2Rhc2hfaG9yaXpvbnRhbFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25Ib3Jpem9u
dGFsLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dseXBoX2Rh
c2hfb3JpZW50YXRpb25fZGFzaF9ob3Jpem9udGFsLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dseXBoX2Rhc2hfb3JpZW50YXRpb25f
ZGFzaF9ob3Jpem9udGFsU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ2x5cGhfZGFzaF9vcmllbnRhdGlv
bl9kYXNoX3ZlcnRpY2FsR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHbHlw
aE9yaWVudGF0aW9uVmVydGljYWwpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2dseXBoX2Rhc2hfb3JpZW50YXRpb25fZGFzaF92ZXJ0aWNhbCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlwaF9kYXNoX29yaWVu
dGF0aW9uX2Rhc2hfdmVydGljYWxHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJnbHlwaC1vcmllbnRhdGlvbi12
ZXJ0aWNhbCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2dseXBoX2Rhc2hfb3JpZW50YXRpb25fZGFzaF92ZXJ0aWNhbFNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdseXBo
T3JpZW50YXRpb25WZXJ0aWNhbCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9nbHlwaF9kYXNoX29yaWVudGF0aW9uX2Rhc2hfdmVydGljYWwsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ2x5cGhfZGFz
aF9vcmllbnRhdGlvbl9kYXNoX3ZlcnRpY2FsU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9h
cmVhR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkQXJlYSkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNo
X2FyZWEsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNo
X2FyZWFHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJncmlkLWFyZWEiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXJlYVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdy
aWRBcmVhLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRf
ZGFzaF9hcmVhLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9hcmVhU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJncmlkLWFyZWEiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX2NvbHVtbnNH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRBdXRvQ29sdW1ucykpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9k
YXNoX2F1dG9fZGFzaF9jb2x1bW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2dyaWRfZGFzaF9hdXRvX2Rhc2hfY29sdW1uc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdyaWQt
YXV0by1jb2x1bW5zIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZ3JpZF9kYXNoX2F1dG9fZGFzaF9jb2x1bW5zU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZEF1dG9D
b2x1bW5zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRf
ZGFzaF9hdXRvX2Rhc2hfY29sdW1ucywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX2NvbHVtbnNTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWQt
YXV0by1jb2x1bW5zIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZ3JpZF9kYXNoX2F1dG9fZGFzaF9mbG93R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlHcmlkQXV0b0Zsb3cpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9hdXRvX2Rhc2hfZmxvdywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX2Zsb3dH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJncmlkLWF1dG8tZmxvdyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9hdXRvX2Rhc2hfZmxvd1NldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUdyaWRBdXRvRmxvdywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX2Zsb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2F1dG9fZGFzaF9m
bG93U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJncmlkLWF1dG8tZmxvdyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2dyaWRfZGFzaF9hdXRvX2Rhc2hfcm93c0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5R3JpZEF1dG9Sb3dzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX3Jvd3MsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2F1dG9fZGFzaF9y
b3dzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiZ3JpZC1hdXRvLXJvd3MiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX3Jvd3NTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlHcmlkQXV0b1Jvd3MsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZ3JpZF9kYXNoX2F1dG9fZGFzaF9yb3dzLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9hdXRvX2Rh
c2hfcm93c1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiZ3JpZC1hdXRvLXJvd3MiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlHcmlkQ29sdW1uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9jb2x1bW5HZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJn
cmlkLWNvbHVtbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2dyaWRfZGFzaF9jb2x1bW5TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkQ29sdW1uLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9jb2x1bW4sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3Jp
ZF9kYXNoX2NvbHVtblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiZ3JpZC1jb2x1bW4iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uX2Rhc2hfZW5kR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkQ29sdW1uRW5kKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uX2Rhc2hf
ZW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9j
b2x1bW5fZGFzaF9lbmRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJncmlkLWNvbHVtbi1lbmQiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1u
X2Rhc2hfZW5kU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZENvbHVtbkVuZCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uX2Rhc2hfZW5kLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dy
aWRfZGFzaF9jb2x1bW5fZGFzaF9lbmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWQtY29sdW1uLWVuZCIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9jb2x1bW5fZGFzaF9nYXBH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbkdhcCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2Nv
bHVtbl9kYXNoX2dhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9n
cmlkX2Rhc2hfY29sdW1uX2Rhc2hfZ2FwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZ3JpZC1jb2x1bW4tZ2Fw
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9k
YXNoX2NvbHVtbl9kYXNoX2dhcFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbkdhcCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uX2Rhc2hfZ2Fw
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2dyaWRfZGFzaF9jb2x1bW5fZGFzaF9nYXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWQtY29sdW1uLWdhcCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9jb2x1bW5fZGFz
aF9zdGFydEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZENvbHVtblN0
YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ncmlkX2Rhc2hfY29sdW1uX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2NvbHVtbl9kYXNoX3N0YXJ0R2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiZ3JpZC1jb2x1bW4tc3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uX2Rhc2hfc3RhcnRTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlH
cmlkQ29sdW1uU3RhcnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZ3JpZF9kYXNoX2NvbHVtbl9kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9jb2x1bW5fZGFzaF9z
dGFydFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiZ3JpZC1jb2x1bW4tc3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfZ2FwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlHYXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2dyaWRfZGFzaF9nYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZ3JpZF9kYXNoX2dhcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdyaWQtZ2FwIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2dhcFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUdhcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ncmlkX2Rhc2hfZ2FwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9nYXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWQtZ2FwIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd0dldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZFJvdykpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3JvdywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfcm93R2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiZ3JpZC1yb3ciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ncmlkX2Rhc2hfcm93U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZFJvdywgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfcm93LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRf
ZGFzaF9yb3dTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImdyaWQtcm93Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNoX2VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5R3JpZFJvd0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNoX2VuZCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfcm93X2Rhc2hfZW5kR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiZ3JpZC1yb3ctZW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNoX2VuZFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdy
aWRSb3dFbmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3Jp
ZF9kYXNoX3Jvd19kYXNoX2VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfcm93X2Rhc2hfZW5kU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJncmlkLXJvdy1lbmQi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rh
c2hfcm93X2Rhc2hfZ2FwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlSb3dH
YXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2dyaWRfZGFzaF9yb3dfZGFzaF9nYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNoX2dhcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdyaWQtcm93
LWdhcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dy
aWRfZGFzaF9yb3dfZGFzaF9nYXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlSb3dHYXAsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNoX2dhcCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9n
cmlkX2Rhc2hfcm93X2Rhc2hfZ2FwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJncmlkLXJvdy1nYXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfcm93X2Rhc2hfc3RhcnRHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRSb3dTdGFydCkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19k
YXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRf
ZGFzaF9yb3dfZGFzaF9zdGFydEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdyaWQtcm93LXN0YXJ0Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jv
d19kYXNoX3N0YXJ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZFJvd1N0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9yb3dfZGFzaF9zdGFydCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9n
cmlkX2Rhc2hfcm93X2Rhc2hfc3RhcnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWQtcm93LXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBsYXRlR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGUpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVt
cGxhdGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJncmlkLXRlbXBsYXRlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBsYXRlU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5R3JpZFRlbXBsYXRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVtcGxhdGVTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWQtdGVtcGxh
dGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlk
X2Rhc2hfdGVtcGxhdGVfZGFzaF9hcmVhc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5R3JpZFRlbXBsYXRlQXJlYXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0ZV9kYXNoX2FyZWFzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0ZV9k
YXNoX2FyZWFzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZ3JpZC10ZW1wbGF0ZS1hcmVhcyIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0
ZV9kYXNoX2FyZWFzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQXJlYXMsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBsYXRlX2Rhc2hf
YXJlYXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBsYXRlX2Rhc2hfYXJlYXNTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWQtdGVtcGxhdGUtYXJlYXMi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rh
c2hfdGVtcGxhdGVfZGFzaF9jb2x1bW5zR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlHcmlkVGVtcGxhdGVDb2x1bW5zKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVtcGxhdGVfZGFzaF9jb2x1bW5zLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0
ZV9kYXNoX2NvbHVtbnNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJncmlkLXRlbXBsYXRlLWNvbHVtbnMiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hf
dGVtcGxhdGVfZGFzaF9jb2x1bW5zU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQ29sdW1ucywg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVt
cGxhdGVfZGFzaF9jb2x1bW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0ZV9kYXNoX2NvbHVtbnNTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWQt
dGVtcGxhdGUtY29sdW1ucyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0ZV9kYXNoX3Jvd3NHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZVJvd3MpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0ZV9kYXNo
X3Jvd3MsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNo
X3RlbXBsYXRlX2Rhc2hfcm93c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdyaWQtdGVtcGxhdGUtcm93cyIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFz
aF90ZW1wbGF0ZV9kYXNoX3Jvd3NTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVSb3dzLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0
ZV9kYXNoX3Jvd3MsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBsYXRlX2Rhc2hfcm93c1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZ3JpZC10ZW1wbGF0ZS1y
b3dzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25faGFu
Z2luZ19kYXNoX3B1bmN0dWF0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlIYW5naW5nUHVuY3R1YXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2hhbmdpbmdfZGFzaF9wdW5jdHVhdGlvbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9oYW5naW5nX2Rhc2hfcHVuY3R1YXRpb25HZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJoYW5naW5nLXB1bmN0dWF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faGFuZ2luZ19kYXNoX3B1bmN0dWF0aW9uU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5SGFuZ2luZ1B1bmN0dWF0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2hhbmdpbmdfZGFzaF9wdW5jdHVhdGlvbiwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9oYW5naW5nX2Rhc2hf
cHVuY3R1YXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgImhhbmdpbmctcHVuY3R1YXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZV9kYXNoX29yaWVudGF0aW9uR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJbWFnZU9yaWVudGF0aW9uKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZV9kYXNoX29yaWVu
dGF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlX2Rh
c2hfb3JpZW50YXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJpbWFnZS1vcmllbnRhdGlvbiIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlX2Rhc2hfb3Jp
ZW50YXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJbWFnZU9yaWVudGF0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlX2Rhc2hfb3JpZW50YXRpb24sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW1h
Z2VfZGFzaF9vcmllbnRhdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiaW1hZ2Utb3JpZW50YXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZV9kYXNoX3JlbmRlcmluZ0dldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmcpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlX2Rhc2hfcmVu
ZGVyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlX2Rh
c2hfcmVuZGVyaW5nR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiaW1hZ2UtcmVuZGVyaW5nIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW1hZ2VfZGFzaF9yZW5kZXJp
bmdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlJbWFnZVJlbmRlcmluZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZV9kYXNoX3JlbmRlcmluZywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZV9kYXNoX3Jl
bmRlcmluZ1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiaW1hZ2UtcmVuZGVyaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25faW5saW5lX2Rhc2hfc2l6ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5SW5saW5lU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25faW5saW5lX2Rhc2hfc2l6ZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbmxpbmVfZGFzaF9zaXplR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
aW5saW5lLXNpemUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9pbmxpbmVfZGFzaF9zaXplU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW5saW5lU2l6ZSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbmxpbmVfZGFzaF9zaXplLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2lu
bGluZV9kYXNoX3NpemVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImlubGluZS1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9ja0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5SW5zZXRCbG9jaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9jaywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2Jsb2NrR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiaW5zZXQtYmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9pbnNldF9kYXNoX2Jsb2NrU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW5zZXRCbG9jaywgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2Jsb2NrLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2luc2V0X2Rhc2hfYmxvY2tTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImluc2V0LWJsb2NrIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9ja19kYXNoX2VuZEdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW5zZXRCbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9ja19k
YXNoX2VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9k
YXNoX2Jsb2NrX2Rhc2hfZW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiaW5zZXQtYmxvY2stZW5kIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9i
bG9ja19kYXNoX2VuZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUluc2V0QmxvY2tFbmQsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9ja19kYXNoX2VuZCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9pbnNldF9kYXNoX2Jsb2NrX2Rhc2hfZW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbnNldC1ibG9jay1lbmQiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2Jsb2NrX2Rhc2hf
c3RhcnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUluc2V0QmxvY2tTdGFy
dCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
aW5zZXRfZGFzaF9ibG9ja19kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfYmxvY2tfZGFzaF9zdGFydEdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
Imluc2V0LWJsb2NrLXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9ja19kYXNoX3N0YXJ0U2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW5z
ZXRCbG9ja1N0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2luc2V0X2Rhc2hfYmxvY2tfZGFzaF9zdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2Jsb2NrX2Rhc2hfc3Rh
cnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Imluc2V0LWJsb2NrLXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25faW5zZXRfZGFzaF9pbmxpbmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUluc2V0SW5saW5lKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2lubGluZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2lubGluZUdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
Imluc2V0LWlubGluZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW5zZXRJbmxpbmUsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9pbmxpbmUs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25faW5zZXRfZGFzaF9pbmxpbmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgImluc2V0LWlubGluZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lX2Rhc2hfZW5kR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJbnNldElubGluZUVuZCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9p
bmxpbmVfZGFzaF9lbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
aW5zZXRfZGFzaF9pbmxpbmVfZGFzaF9lbmRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJpbnNldC1pbmxpbmUt
ZW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5z
ZXRfZGFzaF9pbmxpbmVfZGFzaF9lbmRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJbnNldElubGluZUVuZCwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2lubGlu
ZV9kYXNoX2VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2lubGluZV9kYXNoX2VuZFNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiaW5zZXQtaW5saW5lLWVuZCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rh
c2hfaW5saW5lX2Rhc2hfc3RhcnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUluc2V0SW5saW5lU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9pbmxpbmVfZGFzaF9zdGFy
dEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgImluc2V0LWlubGluZS1zdGFydCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lX2Rhc2hfc3Rh
cnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlJbnNldElubGluZVN0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5z
ZXRfZGFzaF9pbmxpbmVfZGFzaF9zdGFydFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiaW5zZXQtaW5saW5lLXN0YXJ0Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNoX2NvbnRlbnRH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1c3RpZnlDb250ZW50KSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5
X2Rhc2hfY29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9q
dXN0aWZ5X2Rhc2hfY29udGVudEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImp1c3RpZnktY29udGVudCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlfZGFz
aF9jb250ZW50U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5SnVzdGlmeUNvbnRlbnQsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNoX2NvbnRlbnQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlm
eV9kYXNoX2NvbnRlbnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImp1c3RpZnktY29udGVudCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlfZGFzaF9pdGVtc0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5SnVzdGlmeUl0ZW1zKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5X2Rhc2hfaXRlbXMsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNoX2l0ZW1zR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAianVzdGlmeS1pdGVtcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlfZGFzaF9pdGVtc1NldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1
c3RpZnlJdGVtcywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9q
dXN0aWZ5X2Rhc2hfaXRlbXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNoX2l0ZW1zU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJqdXN0aWZ5LWl0ZW1zIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNo
X3NlbGZHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1c3RpZnlTZWxmKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0
aWZ5X2Rhc2hfc2VsZiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9q
dXN0aWZ5X2Rhc2hfc2VsZkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImp1c3RpZnktc2VsZiIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlfZGFzaF9zZWxm
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5SnVzdGlmeVNlbGYsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNoX3NlbGYsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNoX3NlbGZTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImp1c3Rp
Znktc2VsZiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X2xldHRlcl9kYXNoX3NwYWNpbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUxldHRlclNwYWNpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2xldHRlcl9kYXNoX3NwYWNpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fbGV0dGVyX2Rhc2hfc3BhY2luZ0dldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImxl
dHRlci1zcGFjaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fbGV0dGVyX2Rhc2hfc3BhY2luZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGV0dGVyX2Rhc2hfc3Bh
Y2luZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9sZXR0ZXJfZGFzaF9zcGFjaW5nU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJsZXR0ZXItc3BhY2luZyIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2xpZ2h0aW5nX2Rhc2hfY29sb3JHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUxpZ2h0aW5nQ29sb3IpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2xpZ2h0aW5nX2Rh
c2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlnaHRp
bmdfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImxpZ2h0aW5nLWNvbG9yIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlnaHRpbmdfZGFzaF9jb2xv
clNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUxpZ2h0aW5nQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fbGlnaHRpbmdfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saWdodGluZ19kYXNoX2Nv
bG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJsaWdodGluZy1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2xpbmVfZGFzaF9icmVha0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5TGluZUJyZWFrKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9saW5lX2Rhc2hfYnJlYWssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fbGluZV9kYXNoX2JyZWFrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibGluZS1icmVh
ayIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVf
ZGFzaF9icmVha1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUxpbmVCcmVhaywgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saW5lX2Rhc2hfYnJlYWssIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGluZV9kYXNoX2JyZWFr
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJs
aW5lLWJyZWFrIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbGluZV9kYXNoX2hlaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
TGluZUhlaWdodCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fbGluZV9kYXNoX2hlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9saW5lX2Rhc2hfaGVpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibGluZS1oZWlnaHQi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saW5lX2Rh
c2hfaGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGluZUhlaWdodCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saW5lX2Rhc2hfaGVpZ2h0LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVfZGFzaF9oZWln
aHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
ImxpbmUtaGVpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fbGlzdF9kYXNoX3N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlMaXN0U3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2xpc3RfZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJsaXN0LXN0eWxlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdF9kYXNo
X3N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5TGlzdFN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2xpc3RfZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImxpc3Qt
c3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9s
aXN0X2Rhc2hfc3R5bGVfZGFzaF9pbWFnZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5TGlzdFN0eWxlSW1hZ2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2xpc3RfZGFzaF9zdHlsZV9kYXNoX2ltYWdlLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RfZGFzaF9zdHlsZV9kYXNoX2ltYWdl
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAibGlzdC1zdHlsZS1pbWFnZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RfZGFzaF9zdHlsZV9kYXNoX2ltYWdlU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fbGlzdF9kYXNoX3N0eWxlX2Rhc2hfaW1hZ2UsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdF9kYXNoX3N0
eWxlX2Rhc2hfaW1hZ2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImxpc3Qtc3R5bGUtaW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF9wb3NpdGlvbkdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24pKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RfZGFz
aF9zdHlsZV9kYXNoX3Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2xpc3RfZGFzaF9zdHlsZV9kYXNoX3Bvc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibGlz
dC1zdHlsZS1wb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2xpc3RfZGFzaF9zdHlsZV9kYXNoX3Bvc2l0aW9uU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGlz
dFN0eWxlUG9zaXRpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fbGlzdF9kYXNoX3N0eWxlX2Rhc2hfcG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdF9kYXNoX3N0eWxlX2Rhc2hf
cG9zaXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImxpc3Qtc3R5bGUtcG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF90eXBlR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFz
aF90eXBlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RfZGFz
aF9zdHlsZV9kYXNoX3R5cGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJsaXN0LXN0eWxlLXR5cGUiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5
bGVfZGFzaF90eXBlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF90eXBlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2xpc3RfZGFzaF9zdHlsZV9kYXNoX3R5cGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImxpc3Qtc3R5bGUtdHlwZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2Jsb2NrR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9jaykpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfYmxv
Y2ssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hf
YmxvY2tHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtYXJnaW4tYmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ibG9ja1NldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eU1hcmdpbkJsb2NrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX21hcmdpbl9kYXNoX2Jsb2NrLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2Jsb2NrU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtYXJnaW4tYmxvY2siKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFz
aF9ibG9ja19kYXNoX2VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFy
Z2luQmxvY2tFbmQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfZW5kLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfZW5kR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAibWFyZ2luLWJsb2NrLWVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfZW5kU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5TWFyZ2luQmxvY2tFbmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fbWFyZ2luX2Rhc2hfYmxvY2tfZGFzaF9lbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfYmxvY2tfZGFz
aF9lbmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIm1hcmdpbi1ibG9jay1lbmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ibG9ja19kYXNoX3N0YXJ0R2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9ja1N0YXJ0KSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ibG9ja19k
YXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdp
bl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtYXJnaW4tYmxvY2stc3Rh
cnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJn
aW5fZGFzaF9ibG9ja19kYXNoX3N0YXJ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luQmxvY2tTdGFydCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9i
bG9ja19kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1hcmdpbi1ibG9j
ay1zdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X21hcmdpbl9kYXNoX2JvdHRvbUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
TWFyZ2luQm90dG9tKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ib3R0b20sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfYm90dG9tR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWFyZ2lu
LWJvdHRvbSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X21hcmdpbl9kYXNoX2JvdHRvbVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ib3R0b20sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
bWFyZ2luX2Rhc2hfYm90dG9tU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJtYXJnaW4tYm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5JbmxpbmUpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2lubGluZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9pbmxpbmVH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJtYXJnaW4taW5saW5lIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
TWFyZ2luSW5saW5lLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X21hcmdpbl9kYXNoX2lubGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9pbmxpbmVTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1hcmdpbi1pbmxpbmUiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFz
aF9pbmxpbmVfZGFzaF9lbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1h
cmdpbklubGluZUVuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfZW5kLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2lubGluZV9kYXNoX2VuZEdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIm1hcmdpbi1pbmxpbmUtZW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfZW5kU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5TWFyZ2luSW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2lubGluZV9kYXNoX2VuZCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9p
bmxpbmVfZGFzaF9lbmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIm1hcmdpbi1pbmxpbmUtZW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbklubGluZVN0YXJ0KSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5f
ZGFzaF9pbmxpbmVfZGFzaF9zdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9tYXJnaW5fZGFzaF9pbmxpbmVfZGFzaF9zdGFydEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1h
cmdpbi1pbmxpbmUtc3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9pbmxpbmVfZGFzaF9zdGFydFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1h
cmdpbklubGluZVN0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX21hcmdpbl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2lubGluZV9k
YXNoX3N0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJtYXJnaW4taW5saW5lLXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfbGVmdEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5TWFyZ2luTGVmdCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfbGVmdCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9sZWZ0R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAibWFyZ2luLWxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9sZWZ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9sZWZ0
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX21hcmdpbl9kYXNoX2xlZnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIm1hcmdpbi1sZWZ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfcmlnaHRHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9yaWdodCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9yaWdodEdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIm1hcmdpbi1yaWdodCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX3JpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2lu
UmlnaHQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2lu
X2Rhc2hfcmlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfcmlnaHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1hcmdpbi1yaWdodCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX3RvcEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luVG9wKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF90b3As
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfdG9w
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAibWFyZ2luLXRvcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX3RvcFNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdp
blRvcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5f
ZGFzaF90b3AsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfdG9wU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtYXJnaW4tdG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfZW5kR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJrZXJFbmQpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlcl9kYXNoX2VuZCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJrZXJfZGFzaF9lbmRHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJtYXJrZXItZW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfZW5kU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFya2VyRW5kLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlcl9kYXNoX2Vu
ZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9tYXJrZXJfZGFzaF9lbmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIm1hcmtlci1lbmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJrZXJfZGFzaF9taWRHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU1hcmtlck1pZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfbWlkLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlcl9kYXNoX21pZEdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIm1hcmtlci1taWQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9tYXJrZXJfZGFzaF9taWRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJrZXJNaWQsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfbWlkLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21h
cmtlcl9kYXNoX21pZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAibWFya2VyLW1pZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX21hcmtlcl9kYXNoX3N0YXJ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlNYXJrZXJTdGFydCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfc3RhcnRHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJtYXJrZXItc3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXJrZXJfZGFzaF9zdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmtlclN0YXJ0LCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlcl9kYXNoX3N0
YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX21hcmtlcl9kYXNoX3N0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtYXJrZXItc3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrX2Rhc2hfdHlwZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFza1R5cGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hc2tfZGFzaF90eXBlLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21hc2tfZGFzaF90eXBlR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAibWFzay10eXBlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fbWFza19kYXNoX3R5cGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXNrVHlwZSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrX2Rhc2hfdHlwZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNr
X2Rhc2hfdHlwZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAibWFzay10eXBlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fbWF0aF9kYXNoX3N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlNYXRoU3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX21hdGhfZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXRoX2Rhc2hfc3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtYXRoLXN0
eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF0
aF9kYXNoX3N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWF0aFN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hdGhfZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXRoX2Rhc2hfc3R5
bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Im1hdGgtc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9tYXhfZGFzaF9ibG9ja19kYXNoX3NpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eU1heEJsb2NrU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4X2Rhc2hfYmxvY2tfZGFzaF9zaXplLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNoX2Jsb2NrX2Rhc2hfc2l6ZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIm1heC1ibG9jay1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4X2Rhc2hfYmxvY2tfZGFzaF9zaXplU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5TWF4QmxvY2tTaXplLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX21heF9kYXNoX2Jsb2NrX2Rhc2hfc2l6ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhfZGFzaF9ibG9ja19kYXNoX3Np
emVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Im1heC1ibG9jay1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fbWF4X2Rhc2hfaGVpZ2h0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlNYXhIZWlnaHQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX21heF9kYXNoX2hlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXhfZGFzaF9oZWlnaHRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtYXgtaGVpZ2h0
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4X2Rh
c2hfaGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNoX2hlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhfZGFzaF9oZWlnaHRT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1h
eC1oZWlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9tYXhfZGFzaF9pbmxpbmVfZGFzaF9zaXplR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlNYXhJbmxpbmVTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhfZGFzaF9pbmxpbmVfZGFzaF9zaXplLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNoX2lubGluZV9kYXNoX3NpemVH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJtYXgtaW5saW5lLXNpemUiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhfZGFzaF9pbmxpbmVfZGFzaF9zaXplU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5TWF4SW5saW5lU2l6ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXhfZGFzaF9pbmxpbmVfZGFzaF9zaXplLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNoX2lubGluZV9k
YXNoX3NpemVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIm1heC1pbmxpbmUtc2l6ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX21heF9kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlNYXhXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fbWF4X2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fbWF4X2Rhc2hfd2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtYXgtd2lk
dGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhf
ZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1heFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNoX3dpZHRoU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtYXgt
d2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9t
aW5fZGFzaF9ibG9ja19kYXNoX3NpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eU1pbkJsb2NrU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fbWluX2Rhc2hfYmxvY2tfZGFzaF9zaXplLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX2Jsb2NrX2Rhc2hfc2l6ZUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIm1pbi1ibG9jay1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fbWluX2Rhc2hfYmxvY2tfZGFzaF9zaXplU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
TWluQmxvY2tTaXplLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X21pbl9kYXNoX2Jsb2NrX2Rhc2hfc2l6ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF9ibG9ja19kYXNoX3NpemVTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1pbi1i
bG9jay1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbWluX2Rhc2hfaGVpZ2h0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlN
aW5IZWlnaHQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX21pbl9kYXNoX2hlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9taW5fZGFzaF9oZWlnaHRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtaW4taGVpZ2h0Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWluX2Rhc2hfaGVp
Z2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5TWluSGVpZ2h0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX2hlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF9oZWlnaHRTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1pbi1oZWln
aHQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5f
ZGFzaF9pbmxpbmVfZGFzaF9zaXplR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlNaW5JbmxpbmVTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9taW5fZGFzaF9pbmxpbmVfZGFzaF9zaXplLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX2lubGluZV9kYXNoX3NpemVHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJtaW4taW5saW5lLXNpemUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF9pbmxpbmVfZGFzaF9zaXplU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5TWluSW5saW5lU2l6ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9taW5fZGFzaF9pbmxpbmVfZGFzaF9zaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX2lubGluZV9kYXNoX3Np
emVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Im1pbi1pbmxpbmUtc2l6ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX21pbl9kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlNaW5XaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fbWluX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fbWluX2Rhc2hfd2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtaW4td2lkdGgiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF93
aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU1pbldpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX3dpZHRoU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtaW4td2lkdGgi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taXhfZGFz
aF9ibGVuZF9kYXNoX21vZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1p
eEJsZW5kTW9kZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fbWl4X2Rhc2hfYmxlbmRfZGFzaF9tb2RlLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX21peF9kYXNoX2JsZW5kX2Rhc2hfbW9kZUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIm1peC1ibGVuZC1tb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fbWl4X2Rhc2hfYmxlbmRfZGFzaF9tb2RlU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWl4Qmxl
bmRNb2RlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21peF9k
YXNoX2JsZW5kX2Rhc2hfbW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taXhfZGFzaF9ibGVuZF9kYXNoX21vZGVTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1peC1ibGVuZC1t
b2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fb2Jq
ZWN0X2Rhc2hfZml0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPYmplY3RG
aXQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X29iamVjdF9kYXNoX2ZpdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9vYmplY3RfZGFzaF9maXRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvYmplY3QtZml0Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0X2Rhc2hfZml0U2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5T2JqZWN0Rml0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX29iamVjdF9kYXNoX2ZpdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vYmplY3RfZGFzaF9maXRTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm9iamVjdC1maXQiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vYmplY3RfZGFz
aF9wb3NpdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T2JqZWN0UG9z
aXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX29iamVjdF9kYXNoX3Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX29iamVjdF9kYXNoX3Bvc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAib2JqZWN0LXBv
c2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
b2JqZWN0X2Rhc2hfcG9zaXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPYmplY3RQb3NpdGlvbiwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vYmplY3RfZGFzaF9wb3NpdGlv
biwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9vYmplY3RfZGFzaF9wb3NpdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib2JqZWN0LXBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZV9kYXNoX2NvbG9yR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFzaF9j
b2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lX2Rh
c2hfY29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvdXRsaW5lLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZV9kYXNoX2NvbG9yU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5T3V0bGluZUNvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX291dGxpbmVfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfY29sb3JTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm91dGxpbmUt
Y29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9v
dXRsaW5lX2Rhc2hfb2Zmc2V0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlP
dXRsaW5lT2Zmc2V0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfb2Zmc2V0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFzaF9vZmZzZXRHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvdXRs
aW5lLW9mZnNldCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX291dGxpbmVfZGFzaF9vZmZzZXRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0LCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFzaF9vZmZz
ZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fb3V0bGluZV9kYXNoX29mZnNldFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib3V0bGluZS1vZmZzZXQiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfc3R5bGVHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZV9kYXNoX3N0
eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFz
aF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm91dGxpbmUtc3R5bGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfc3R5bGVTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlPdXRsaW5lU3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fb3V0bGluZV9kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFzaF9zdHlsZVNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib3V0bGluZS1z
dHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX291
dGxpbmVfZGFzaF93aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3V0
bGluZVdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9vdXRsaW5lX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fb3V0bGluZV9kYXNoX3dpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAib3V0bGluZS13
aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX291
dGxpbmVfZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfd2lkdGgsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0
bGluZV9kYXNoX3dpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJvdXRsaW5lLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dfZGFzaF93cmFwR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlPdmVyZmxvd1dyYXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93X2Rhc2hfd3JhcCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd19kYXNoX3dyYXBHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJvdmVyZmxvdy13cmFwIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dfZGFzaF93cmFwU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3Zl
cmZsb3dXcmFwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292
ZXJmbG93X2Rhc2hfd3JhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd19kYXNoX3dyYXBTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm92ZXJmbG93LXdyYXAiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd19kYXNo
X3hHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJmbG93WCkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3df
ZGFzaF94LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93
X2Rhc2hfeEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm92ZXJmbG93LXgiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd19kYXNoX3hTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlPdmVyZmxvd1gsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
b3ZlcmZsb3dfZGFzaF94LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93X2Rhc2hfeFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib3ZlcmZsb3cteCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93X2Rhc2hfeUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3ZlcmZsb3dZKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd19kYXNoX3ks
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dfZGFzaF95
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAib3ZlcmZsb3cteSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93X2Rhc2hfeVNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJm
bG93WSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxv
d19kYXNoX3ksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fb3ZlcmZsb3dfZGFzaF95U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJvdmVyZmxvdy15Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbF9kYXNoX2JlaGF2aW9yR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPdmVyc2Nyb2xsQmVoYXZpb3IpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJz
Y3JvbGxfZGFzaF9iZWhhdmlvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9vdmVyc2Nyb2xsX2Rhc2hfYmVoYXZpb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvdmVyc2Nyb2xs
LWJlaGF2aW9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fb3ZlcnNjcm9sbF9kYXNoX2JlaGF2aW9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3ZlcnNjcm9sbEJlaGF2
aW9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3Jv
bGxfZGFzaF9iZWhhdmlvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsX2Rhc2hfYmVoYXZpb3JTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm92ZXJzY3JvbGwtYmVo
YXZpb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9v
dmVyc2Nyb2xsX2Rhc2hfYmVoYXZpb3JfZGFzaF94R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlPdmVyc2Nyb2xsQmVoYXZpb3JYKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsX2Rhc2hfYmVoYXZpb3JfZGFz
aF94LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxf
ZGFzaF9iZWhhdmlvcl9kYXNoX3hHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvdmVyc2Nyb2xsLWJlaGF2aW9y
LXgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVy
c2Nyb2xsX2Rhc2hfYmVoYXZpb3JfZGFzaF94U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3ZlcnNjcm9sbEJlaGF2
aW9yWCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Ny
b2xsX2Rhc2hfYmVoYXZpb3JfZGFzaF94LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxfZGFzaF9iZWhhdmlvcl9kYXNo
X3hTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Im92ZXJzY3JvbGwtYmVoYXZpb3IteCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxfZGFzaF9iZWhhdmlvcl9kYXNoX3lHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJzY3JvbGxCZWhhdmlvclkpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxf
ZGFzaF9iZWhhdmlvcl9kYXNoX3ksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fb3ZlcnNjcm9sbF9kYXNoX2JlaGF2aW9yX2Rhc2hfeUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm92
ZXJzY3JvbGwtYmVoYXZpb3IteSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX292ZXJzY3JvbGxfZGFzaF9iZWhhdmlvcl9kYXNoX3lTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlPdmVyc2Nyb2xsQmVoYXZpb3JZLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX292ZXJzY3JvbGxfZGFzaF9iZWhhdmlvcl9kYXNoX3ksIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbF9k
YXNoX2JlaGF2aW9yX2Rhc2hfeVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAib3ZlcnNjcm9sbC1iZWhhdmlvci15Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2Jsb2NrR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nQmxvY2spKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9i
bG9jaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rh
c2hfYmxvY2tHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwYWRkaW5nLWJsb2NrIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2Jsb2NrU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5UGFkZGluZ0Jsb2NrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9ibG9jaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYmxvY2tTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhZGRpbmct
YmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
YWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9lbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVBhZGRpbmdCbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfZW5kLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9ibG9ja19kYXNo
X2VuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhZGRpbmctYmxvY2stZW5kIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hf
ZW5kU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5UGFkZGluZ0Jsb2NrRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9ibG9ja19kYXNoX2VuZCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRk
aW5nX2Rhc2hfYmxvY2tfZGFzaF9lbmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhZGRpbmctYmxvY2stZW5kIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hf
c3RhcnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdCbG9ja1N0
YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9zdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9zdGFydEdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgInBhZGRpbmctYmxvY2stc3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9zdGFydFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVBhZGRpbmdCbG9ja1N0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9ibG9ja19kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFz
aF9ibG9ja19kYXNoX3N0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJwYWRkaW5nLWJsb2NrLXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2JvdHRvbUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbSkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2Jv
dHRvbSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rh
c2hfYm90dG9tR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGFkZGluZy1ib3R0b20iKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYm90dG9tU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9ib3R0b21T
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBh
ZGRpbmctYm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fcGFkZGluZ19kYXNoX2lubGluZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5UGFkZGluZ0lubGluZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2lubGluZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfaW5saW5lR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAicGFkZGluZy1pbmxpbmUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfaW5saW5lU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFkZGluZ0lubGlu
ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rh
c2hfaW5saW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9pbmxpbmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhZGRpbmctaW5saW5lIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2lubGlu
ZV9kYXNoX2VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFkZGluZ0lu
bGluZUVuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fcGFkZGluZ19kYXNoX2lubGluZV9kYXNoX2VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfaW5saW5lX2Rhc2hfZW5kR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAicGFkZGluZy1pbmxpbmUtZW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2lubGluZV9kYXNoX2VuZFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVBhZGRpbmdJbmxpbmVFbmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2lubGluZV9kYXNoX2VuZCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hf
aW5saW5lX2Rhc2hfZW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJwYWRkaW5nLWlubGluZS1lbmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdJbmxpbmVTdGFydCkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFk
ZGluZ19kYXNoX2lubGluZV9kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9zdGFydEdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgInBhZGRpbmctaW5saW5lLXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2lubGluZV9kYXNoX3N0YXJ0U2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5UGFkZGluZ0lubGluZVN0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9zdGFydCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rh
c2hfaW5saW5lX2Rhc2hfc3RhcnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInBhZGRpbmctaW5saW5lLXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2xlZnRHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfbGVm
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hf
bGVmdEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhZGRpbmctbGVmdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9sZWZ0U2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5UGFkZGluZ0xlZnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fcGFkZGluZ19kYXNoX2xlZnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2xlZnRTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhZGRpbmctbGVmdCIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFz
aF9yaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
YWRkaW5nX2Rhc2hfcmlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fcGFkZGluZ19kYXNoX3JpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGFkZGluZy1yaWdodCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFz
aF9yaWdodFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfcmlnaHQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNo
X3JpZ2h0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJwYWRkaW5nLXJpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX3RvcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5UGFkZGluZ1RvcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX3RvcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfdG9wR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGFk
ZGluZy10b3AiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9wYWRkaW5nX2Rhc2hfdG9wU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFkZGluZ1RvcCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfdG9wLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRp
bmdfZGFzaF90b3BTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgInBhZGRpbmctdG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFnZV9kYXNoX2JyZWFrX2Rhc2hfYWZ0ZXJHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlX2Rhc2hfYnJlYWtfZGFzaF9h
ZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlX2Rhc2hf
YnJlYWtfZGFzaF9hZnRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhZ2UtYnJlYWstYWZ0ZXIiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlX2Rhc2hfYnJl
YWtfZGFzaF9hZnRlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2FmdGVy
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2FmdGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwYWdlLWJyZWFrLWFmdGVyIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZV9kYXNoX2JyZWFrX2Rh
c2hfYmVmb3JlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWdlQnJlYWtC
ZWZvcmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2JlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wYWdlX2Rhc2hfYnJlYWtfZGFzaF9iZWZvcmVHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJwYWdlLWJyZWFrLWJlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2JlZm9yZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVBhZ2VCcmVha0JlZm9yZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9wYWdlX2Rhc2hfYnJlYWtfZGFzaF9iZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZV9kYXNoX2JyZWFrX2Rhc2hf
YmVmb3JlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJwYWdlLWJyZWFrLWJlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2luc2lkZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlX2Rhc2hfYnJlYWtfZGFz
aF9pbnNpZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZV9k
YXNoX2JyZWFrX2Rhc2hfaW5zaWRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGFnZS1icmVhay1pbnNpZGUi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlX2Rh
c2hfYnJlYWtfZGFzaF9pbnNpZGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZV9kYXNoX2JyZWFrX2Rh
c2hfaW5zaWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2luc2lkZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicGFnZS1icmVhay1pbnNpZGUi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWludF9k
YXNoX29yZGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWludE9yZGVy
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
YWludF9kYXNoX29yZGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X3BhaW50X2Rhc2hfb3JkZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwYWludC1vcmRlciIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhaW50X2Rhc2hfb3JkZXJT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlQYWludE9yZGVyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhaW50X2Rhc2hfb3JkZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFpbnRfZGFzaF9vcmRlclNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicGFpbnQtb3Jk
ZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJz
cGVjdGl2ZV9kYXNoX29yaWdpbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
UGVyc3BlY3RpdmVPcmlnaW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAicGVyc3BlY3RpdmUtb3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5TZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlQZXJzcGVjdGl2ZU9yaWdpbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9wZXJzcGVjdGl2ZV9kYXNoX29yaWdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZV9kYXNoX29yaWdp
blNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
cGVyc3BlY3RpdmUtb3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5fZGFzaF94R2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdpblgpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hf
b3JpZ2luX2Rhc2hfeCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
ZXJzcGVjdGl2ZV9kYXNoX29yaWdpbl9kYXNoX3hHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwZXJzcGVjdGl2
ZS1vcmlnaW4teCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luX2Rhc2hfeFNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0
aXZlT3JpZ2luWCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
ZXJzcGVjdGl2ZV9kYXNoX29yaWdpbl9kYXNoX3gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5f
ZGFzaF94U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJwZXJzcGVjdGl2ZS1vcmlnaW4teCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luX2Rhc2hfeUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW5ZKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2
ZV9kYXNoX29yaWdpbl9kYXNoX3ksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5fZGFzaF95R2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGVy
c3BlY3RpdmUtb3JpZ2luLXkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZV9kYXNoX29yaWdpbl9kYXNoX3lTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQ
ZXJzcGVjdGl2ZU9yaWdpblksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5fZGFzaF95LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hf
b3JpZ2luX2Rhc2hfeVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAicGVyc3BlY3RpdmUtb3JpZ2luLXkiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZV9kYXNoX2NvbnRlbnRHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBsYWNlQ29udGVudCkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VfZGFzaF9jb250ZW50LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlX2Rhc2hfY29udGVu
dEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgInBsYWNlLWNvbnRlbnQiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZV9kYXNoX2NvbnRlbnRTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlQbGFjZUNvbnRlbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fcGxhY2VfZGFzaF9jb250ZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlX2Rhc2hfY29udGVudFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicGxhY2UtY29udGVudCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlX2Rh
c2hfaXRlbXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBsYWNlSXRlbXMp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Bs
YWNlX2Rhc2hfaXRlbXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
cGxhY2VfZGFzaF9pdGVtc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBsYWNlLWl0ZW1zIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VfZGFzaF9pdGVtc1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVBsYWNlSXRlbXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fcGxhY2VfZGFzaF9pdGVtcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZV9kYXNoX2l0ZW1zU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwbGFjZS1pdGVt
cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNl
X2Rhc2hfc2VsZkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGxhY2VTZWxm
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
bGFjZV9kYXNoX3NlbGYsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
cGxhY2VfZGFzaF9zZWxmR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGxhY2Utc2VsZiIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlX2Rhc2hfc2VsZlNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVBsYWNlU2VsZiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9wbGFjZV9kYXNoX3NlbGYsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VfZGFzaF9zZWxmU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwbGFjZS1zZWxmIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcG9pbnRlcl9kYXNo
X2V2ZW50c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UG9pbnRlckV2ZW50
cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
cG9pbnRlcl9kYXNoX2V2ZW50cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9wb2ludGVyX2Rhc2hfZXZlbnRzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicG9pbnRlci1ldmVudHMi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wb2ludGVy
X2Rhc2hfZXZlbnRzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wb2ludGVyX2Rhc2hfZXZlbnRzLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BvaW50
ZXJfZGFzaF9ldmVudHNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgInBvaW50ZXItZXZlbnRzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fcm93X2Rhc2hfZ2FwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlSb3dHYXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3Jvd19kYXNoX2dhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9yb3dfZGFzaF9nYXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJyb3ctZ2FwIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcm93X2Rhc2hf
Z2FwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Um93R2FwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3Jvd19kYXNoX2dhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9yb3dfZGFzaF9nYXBTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInJvdy1nYXAiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9iZWhh
dmlvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsQmVoYXZpb3Ip
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbF9kYXNoX2JlaGF2aW9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX2JlaGF2aW9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsLWJlaGF2aW9y
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
X2Rhc2hfYmVoYXZpb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxCZWhhdmlvciwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9iZWhhdmlvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxfZGFzaF9iZWhhdmlvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAic2Nyb2xsLWJlaGF2aW9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxNYXJnaW4pKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbiwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJn
aW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJzY3JvbGwtbWFyZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5U2Nyb2xsTWFyZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX21hcmdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5TZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1tYXJnaW4i
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxf
ZGFzaF9tYXJnaW5fZGFzaF9ibG9ja0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5U2Nyb2xsTWFyZ2luQmxvY2spKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2Jsb2NrLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNo
X2Jsb2NrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsLW1hcmdpbi1ibG9jayIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9k
YXNoX2Jsb2NrU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luQmxvY2ssIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYmxv
Y2ssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYmxvY2tTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1tYXJnaW4tYmxvY2siKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFz
aF9tYXJnaW5fZGFzaF9ibG9ja19kYXNoX2VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5U2Nyb2xsTWFyZ2luQmxvY2tFbmQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2Jsb2Nr
X2Rhc2hfZW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9s
bF9kYXNoX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfZW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xs
LW1hcmdpbi1ibG9jay1lbmQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9ibG9ja19kYXNoX2VuZFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVNjcm9sbE1hcmdpbkJsb2NrRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfZW5kLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfZW5kU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGwtbWFyZ2luLWJsb2Nr
LWVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbF9kYXNoX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbkJsb2NrU3RhcnQpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdp
bl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYmxvY2tfZGFzaF9zdGFydEdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgInNjcm9sbC1tYXJnaW4tYmxvY2stc3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9ibG9j
a19kYXNoX3N0YXJ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luQmxvY2tTdGFydCwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5f
ZGFzaF9ibG9ja19kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2Jsb2NrX2Rh
c2hfc3RhcnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgInNjcm9sbC1tYXJnaW4tYmxvY2stc3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9ib3R0b21H
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbkJvdHRvbSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2JvdHRvbUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgInNjcm9sbC1tYXJnaW4tYm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYm90dG9tU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5U2Nyb2xsTWFyZ2luQm90dG9tLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2JvdHRvbSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFz
aF9tYXJnaW5fZGFzaF9ib3R0b21TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1tYXJnaW4tYm90dG9tIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hf
aW5saW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxNYXJnaW5J
bmxpbmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2lubGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9pbmxpbmVHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJzY3JvbGwtbWFyZ2luLWlubGluZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2lubGluZVNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbklubGluZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9pbmxpbmUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsX2Rhc2hfbWFyZ2luX2Rhc2hfaW5saW5lU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGwtbWFyZ2luLWlubGluZSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdp
bl9kYXNoX2lubGluZV9kYXNoX2VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5U2Nyb2xsTWFyZ2luSW5saW5lRW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9pbmxpbmVfZGFz
aF9lbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfZW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsLW1h
cmdpbi1pbmxpbmUtZW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfZW5kU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5U2Nyb2xsTWFyZ2luSW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2lubGluZV9kYXNoX2VuZCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9pbmxpbmVfZGFzaF9lbmRTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1tYXJnaW4taW5s
aW5lLWVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0R2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxNYXJnaW5JbmxpbmVTdGFydCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hf
bWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJzY3JvbGwtbWFyZ2luLWlubGluZS1zdGFydCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9k
YXNoX2lubGluZV9kYXNoX3N0YXJ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luSW5saW5lU3Rh
cnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rh
c2hfaW5saW5lX2Rhc2hfc3RhcnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1tYXJnaW4taW5saW5lLXN0YXJ0Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2lu
X2Rhc2hfbGVmdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFy
Z2luTGVmdCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfbGVmdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9sZWZ0R2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAic2Nyb2xsLW1hcmdpbi1sZWZ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfbGVmdFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVNjcm9sbE1hcmdpbkxlZnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfbGVmdCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9t
YXJnaW5fZGFzaF9sZWZ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJzY3JvbGwtbWFyZ2luLWxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9yaWdodEdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luUmlnaHQpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9s
bF9kYXNoX21hcmdpbl9kYXNoX3JpZ2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX3JpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
c2Nyb2xsLW1hcmdpbi1yaWdodCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX3JpZ2h0U2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
U2Nyb2xsTWFyZ2luUmlnaHQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfcmlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2lu
X2Rhc2hfcmlnaHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgInNjcm9sbC1tYXJnaW4tcmlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF90b3BHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpblRvcCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hf
bWFyZ2luX2Rhc2hfdG9wLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX3RvcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbC1tYXJn
aW4tdG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
c2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfdG9wU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luVG9w
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNo
X21hcmdpbl9kYXNoX3RvcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF90b3BTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1tYXJn
aW4tdG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
c2Nyb2xsX2Rhc2hfcGFkZGluZ0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
U2Nyb2xsUGFkZGluZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Ny
b2xsLXBhZGRpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGluZywgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRk
aW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1wYWRkaW5nIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNo
X2Jsb2NrR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxQYWRkaW5n
QmxvY2spKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9ibG9jaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfYmxvY2tHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJzY3JvbGwtcGFkZGluZy1ibG9jayIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9ibG9ja1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdCbG9jaywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfYmxvY2ssIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsX2Rhc2hfcGFkZGluZ19kYXNoX2Jsb2NrU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGwtcGFkZGluZy1ibG9jayIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRp
bmdfZGFzaF9ibG9ja19kYXNoX2VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5U2Nyb2xsUGFkZGluZ0Jsb2NrRW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFz
aF9lbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfZW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsLXBh
ZGRpbmctYmxvY2stZW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfZW5kU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5U2Nyb2xsUGFkZGluZ0Jsb2NrRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9ibG9ja19kYXNoX2VuZCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9lbmRTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1wYWRkaW5nLWJs
b2NrLWVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9ibG9ja19kYXNoX3N0YXJ0R2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxQYWRkaW5nQmxvY2tTdGFydCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hf
cGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJzY3JvbGwtcGFkZGluZy1ibG9jay1zdGFydCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdf
ZGFzaF9ibG9ja19kYXNoX3N0YXJ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGluZ0Jsb2NrU3Rh
cnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19k
YXNoX2Jsb2NrX2Rhc2hfc3RhcnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1wYWRkaW5nLWJsb2NrLXN0YXJ0Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGlu
Z19kYXNoX2JvdHRvbUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xs
UGFkZGluZ0JvdHRvbSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2JvdHRvbSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfYm90
dG9tR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsLXBhZGRpbmctYm90dG9tIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19k
YXNoX2JvdHRvbVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdCb3R0b20sIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNo
X2JvdHRvbSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfYm90dG9tU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGwtcGFkZGluZy1i
b3R0b20iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfaW5saW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlTY3JvbGxQYWRkaW5nSW5saW5lKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfaW5s
aW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNo
X3BhZGRpbmdfZGFzaF9pbmxpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzY3JvbGwtcGFkZGluZy1pbmxp
bmUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3Jv
bGxfZGFzaF9wYWRkaW5nX2Rhc2hfaW5saW5lU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGluZ0lu
bGluZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxf
ZGFzaF9wYWRkaW5nX2Rhc2hfaW5saW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9pbmxp
bmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
InNjcm9sbC1wYWRkaW5nLWlubGluZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9lbmRH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdJbmxpbmVF
bmQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9lbmQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2lubGlu
ZV9kYXNoX2VuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbC1wYWRkaW5nLWlubGluZS1lbmQiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFz
aF9wYWRkaW5nX2Rhc2hfaW5saW5lX2Rhc2hfZW5kU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGlu
Z0lubGluZUVuZCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfaW5saW5lX2Rhc2hfZW5kLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3Bh
ZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9lbmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1wYWRkaW5nLWlubGluZS1lbmQiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9w
YWRkaW5nX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdJbmxpbmVTdGFydCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNo
X2lubGluZV9kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9zdGFydEdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgInNjcm9sbC1wYWRkaW5nLWlubGluZS1zdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9pbmxp
bmVfZGFzaF9zdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdJbmxpbmVTdGFydCwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRk
aW5nX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2lu
bGluZV9kYXNoX3N0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJzY3JvbGwtcGFkZGluZy1pbmxpbmUtc3RhcnQiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rh
c2hfbGVmdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGlu
Z0xlZnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9sZWZ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9sZWZ0R2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAic2Nyb2xsLXBhZGRpbmctbGVmdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9sZWZ0U2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5U2Nyb2xsUGFkZGluZ0xlZnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2xlZnQsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfcGFkZGluZ19kYXNoX2xlZnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1wYWRkaW5nLWxlZnQiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hf
cmlnaHRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdS
aWdodCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3JpZ2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9yaWdodEdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgInNjcm9sbC1wYWRkaW5nLXJpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3JpZ2h0U2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5U2Nyb2xsUGFkZGluZ1JpZ2h0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9yaWdodCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3Jv
bGxfZGFzaF9wYWRkaW5nX2Rhc2hfcmlnaHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1wYWRkaW5nLXJpZ2h0Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGlu
Z19kYXNoX3RvcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFk
ZGluZ1RvcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3RvcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfdG9wR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAic2Nyb2xsLXBhZGRpbmctdG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3RvcFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVNjcm9sbFBhZGRpbmdUb3AsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3RvcCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9w
YWRkaW5nX2Rhc2hfdG9wU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJzY3JvbGwtcGFkZGluZy10b3AiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfYWxpZ25HZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFNuYXBBbGlnbikpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfc25hcF9kYXNoX2FsaWduLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9hbGlnbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbC1z
bmFwLWFsaWduIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX2FsaWduU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsU25hcEFs
aWduLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9k
YXNoX3NuYXBfZGFzaF9hbGlnbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfYWxpZ25TZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1z
bmFwLWFsaWduIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFz
aF9tYXJnaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzY3JvbGwtc25hcC1tYXJnaW4iKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rh
c2hfbWFyZ2luU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW4sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
c2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2Nyb2xsLXNuYXAtbWFyZ2luIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9k
YXNoX21hcmdpbl9kYXNoX2JvdHRvbUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5U2Nyb2xsTWFyZ2luQm90dG9tKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hfYm90
dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNo
X3NuYXBfZGFzaF9tYXJnaW5fZGFzaF9ib3R0b21HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzY3JvbGwtc25h
cC1tYXJnaW4tYm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNoX2JvdHRvbVNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVNjcm9sbE1hcmdpbkJvdHRvbSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hfYm90dG9tLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW5fZGFzaF9ib3R0b21TZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1zbmFwLW1hcmdp
bi1ib3R0b20iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hfbGVmdEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luTGVmdCkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNo
X21hcmdpbl9kYXNoX2xlZnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNoX2xlZnRHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJzY3JvbGwtc25hcC1tYXJnaW4tbGVmdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW5fZGFzaF9sZWZ0
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luTGVmdCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hfbGVm
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hfbGVmdFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2Nyb2xsLXNuYXAtbWFy
Z2luLWxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hfcmlnaHRHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpblJpZ2h0KSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rh
c2hfbWFyZ2luX2Rhc2hfcmlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNoX3JpZ2h0R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAic2Nyb2xsLXNuYXAtbWFyZ2luLXJpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNo
X3JpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luUmlnaHQsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9k
YXNoX3JpZ2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW5fZGFzaF9yaWdodFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2Nyb2xs
LXNuYXAtbWFyZ2luLXJpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNoX3RvcEdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luVG9wKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9z
bmFwX2Rhc2hfbWFyZ2luX2Rhc2hfdG9wLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW5fZGFzaF90b3BHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJzY3JvbGwtc25hcC1tYXJnaW4tdG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNo
X3RvcFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpblRvcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hf
dG9wLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW5fZGFzaF90b3BTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1zbmFwLW1h
cmdpbi10b3AiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfc3RvcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5U2Nyb2xsU25hcFN0b3ApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9zdG9wLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9z
dG9wR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsLXNuYXAtc3RvcCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9zdG9w
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5U2Nyb2xsU25hcFN0b3AsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX3N0b3AsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfc25hcF9kYXNoX3N0b3BTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgInNjcm9sbC1zbmFwLXN0b3AiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfdHlwZUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsU25hcFR5cGUpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNo
X3NuYXBfZGFzaF90eXBlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX3NuYXBfZGFzaF90eXBlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsLXNuYXAt
dHlwZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbF9kYXNoX3NuYXBfZGFzaF90eXBlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsU25hcFR5cGUsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25h
cF9kYXNoX3R5cGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX3R5cGVTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1zbmFwLXR5cGUi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9k
YXNoX2ltYWdlX2Rhc2hfdGhyZXNob2xkR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlTaGFwZUltYWdlVGhyZXNob2xkKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNoX2ltYWdlX2Rhc2hfdGhyZXNob2xkLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hfaW1hZ2Vf
ZGFzaF90aHJlc2hvbGRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzaGFwZS1pbWFnZS10aHJlc2hvbGQiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNo
X2ltYWdlX2Rhc2hfdGhyZXNob2xkU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVJbWFnZVRocmVzaG9sZCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNoX2lt
YWdlX2Rhc2hfdGhyZXNob2xkLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hfaW1hZ2VfZGFzaF90aHJlc2hvbGRTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNoYXBl
LWltYWdlLXRocmVzaG9sZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX3NoYXBlX2Rhc2hfbWFyZ2luR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlTaGFwZU1hcmdpbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9tYXJnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9tYXJnaW5HZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJz
aGFwZS1tYXJnaW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zaGFwZV9kYXNoX21hcmdpblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNoYXBlTWFyZ2luLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hfbWFyZ2luLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3NoYXBlX2Rhc2hfbWFyZ2luU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJzaGFwZS1tYXJnaW4iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNoX291dHNpZGVHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNoYXBlT3V0c2lkZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9vdXRzaWRlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hfb3V0c2lkZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgInNoYXBlLW91dHNpZGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNoX291dHNpZGVTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlT
aGFwZU91dHNpZGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
c2hhcGVfZGFzaF9vdXRzaWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hfb3V0c2lkZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2hhcGUtb3V0c2lkZSIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hf
cmVuZGVyaW5nR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTaGFwZVJlbmRl
cmluZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2hhcGVfZGFzaF9yZW5kZXJpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fc2hhcGVfZGFzaF9yZW5kZXJpbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzaGFwZS1yZW5k
ZXJpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
aGFwZV9kYXNoX3JlbmRlcmluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNoYXBlUmVuZGVyaW5nLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hfcmVuZGVyaW5n
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3NoYXBlX2Rhc2hfcmVuZGVyaW5nU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzaGFwZS1yZW5kZXJpbmciKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zcGVha19kYXNoX2FzR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTcGVha0FzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zcGVha19kYXNoX2FzLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3NwZWFrX2Rhc2hfYXNHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJzcGVhay1hcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3NwZWFrX2Rhc2hfYXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTcGVha0FzLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NwZWFrX2Rhc2hfYXMsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3BlYWtfZGFz
aF9hc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAic3BlYWstYXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zdG9wX2Rhc2hfY29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVN0b3BDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fc3RvcF9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX3N0b3BfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInN0b3AtY29sb3IiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wX2Rhc2hf
Y29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlTdG9wQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc3RvcF9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0b3BfZGFzaF9jb2xvclNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3RvcC1j
b2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3N0
b3BfZGFzaF9vcGFjaXR5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdG9w
T3BhY2l0eSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc3RvcF9kYXNoX29wYWNpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fc3RvcF9kYXNoX29wYWNpdHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzdG9wLW9wYWNpdHki
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wX2Rh
c2hfb3BhY2l0eVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVN0b3BPcGFjaXR5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0b3BfZGFzaF9vcGFjaXR5LCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0b3BfZGFzaF9v
cGFjaXR5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJzdG9wLW9wYWNpdHkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9jb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5U3Ryb2tlQ29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2NvbG9yR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
c3Ryb2tlLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc3Ryb2tlX2Rhc2hfY29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VDb2xvciwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9jb2xvciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zdHJva2VfZGFzaF9jb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAic3Ryb2tlLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfZGFzaGFycmF5R2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VEYXNoYXJyYXkpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2Rhc2hh
cnJheSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFz
aF9kYXNoYXJyYXlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzdHJva2UtZGFzaGFycmF5Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfZGFzaGFy
cmF5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5U3Ryb2tlRGFzaGFycmF5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2Rhc2hhcnJheSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFz
aF9kYXNoYXJyYXlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgInN0cm9rZS1kYXNoYXJyYXkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9kYXNob2Zmc2V0R2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VEYXNob2Zmc2V0KSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9kYXNob2Zm
c2V0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNo
X2Rhc2hvZmZzZXRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzdHJva2UtZGFzaG9mZnNldCIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2Rhc2hv
ZmZzZXRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VEYXNob2Zmc2V0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2Rhc2hvZmZzZXQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tl
X2Rhc2hfZGFzaG9mZnNldFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAic3Ryb2tlLWRhc2hvZmZzZXQiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9saW5lY2FwR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VMaW5lY2FwKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9saW5lY2Fw
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xp
bmVjYXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzdHJva2UtbGluZWNhcCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xpbmVjYXBTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlTdHJva2VMaW5lY2FwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xpbmVjYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfbGluZWNhcFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3Ryb2tl
LWxpbmVjYXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zdHJva2VfZGFzaF9saW5lam9pbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5U3Ryb2tlTGluZWpvaW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xpbmVqb2luLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xpbmVqb2luR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAic3Ryb2tlLWxpbmVqb2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfbGluZWpvaW5TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VMaW5l
am9pbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2Vf
ZGFzaF9saW5lam9pbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9saW5lam9pblNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3Ryb2tlLWxpbmVqb2luIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hf
bWl0ZXJsaW1pdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3Ryb2tlTWl0
ZXJsaW1pdCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc3Ryb2tlX2Rhc2hfbWl0ZXJsaW1pdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9taXRlcmxpbWl0R2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic3Ry
b2tlLW1pdGVybGltaXQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zdHJva2VfZGFzaF9taXRlcmxpbWl0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3Ryb2tlTWl0ZXJs
aW1pdCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2Vf
ZGFzaF9taXRlcmxpbWl0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX21pdGVybGltaXRTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN0cm9rZS1taXRlcmxpbWl0
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tl
X2Rhc2hfb3BhY2l0eUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3Ryb2tl
T3BhY2l0eSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc3Ryb2tlX2Rhc2hfb3BhY2l0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9vcGFjaXR5R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic3Ryb2tlLW9w
YWNpdHkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
dHJva2VfZGFzaF9vcGFjaXR5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3Ryb2tlT3BhY2l0eSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9vcGFjaXR5LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3N0cm9rZV9kYXNoX29wYWNpdHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInN0cm9rZS1vcGFjaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfd2lkdGhHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVN0cm9rZVdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF93aWR0aCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF93aWR0aEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgInN0cm9rZS13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX3dpZHRoU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3Ry
b2tlV2lkdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ry
b2tlX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfd2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN0cm9rZS13aWR0aCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3N1cHBvcnRlZF9kYXNoX2Nv
bG9yX2Rhc2hfc2NoZW1lc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29s
b3JTY2hlbWUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3N1cHBvcnRlZF9kYXNoX2NvbG9yX2Rhc2hfc2NoZW1lcywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdXBwb3J0ZWRfZGFzaF9jb2xvcl9kYXNoX3NjaGVt
ZXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N1cHBvcnRlZF9kYXNoX2NvbG9y
X2Rhc2hfc2NoZW1lc1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbG9yU2NoZW1lLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N1cHBvcnRlZF9kYXNoX2NvbG9yX2Rhc2hfc2No
ZW1lcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zdXBwb3J0ZWRfZGFzaF9jb2xvcl9kYXNoX3NjaGVtZXNTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN1cHBvcnRlZC1jb2xvci1z
Y2hlbWVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
dGFiX2Rhc2hfc2l6ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGFiU2l6
ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
dGFiX2Rhc2hfc2l6ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90
YWJfZGFzaF9zaXplR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidGFiLXNpemUiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJfZGFzaF9zaXplU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5VGFiU2l6ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
YWJfZGFzaF9zaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3RhYl9kYXNoX3NpemVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRhYi1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGFibGVfZGFzaF9sYXlvdXRHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0KSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJsZV9kYXNoX2xheW91dCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJsZV9kYXNoX2xheW91
dEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgInRhYmxlLWxheW91dCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RhYmxlX2Rhc2hfbGF5b3V0U2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
VGFibGVMYXlvdXQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dGFibGVfZGFzaF9sYXlvdXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fdGFibGVfZGFzaF9sYXlvdXRTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRhYmxlLWxheW91dCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9hbGln
bkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dEFsaWduKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hf
YWxpZ24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNo
X2FsaWduR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidGV4dC1hbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9hbGlnblNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVRleHRBbGlnbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0X2Rhc2hfYWxpZ24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2FsaWduU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LWFsaWduIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2FuY2hvckdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dEFuY2hvcikpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2FuY2hv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfYW5j
aG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAidGV4dC1hbmNob3IiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfYW5jaG9yU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
VGV4dEFuY2hvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0X2Rhc2hfYW5jaG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9hbmNob3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRleHQtYW5jaG9yIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRp
b25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0
X2Rhc2hfZGVjb3JhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0X2Rhc2hfZGVjb3JhdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHQtZGVjb3JhdGlvbiIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFz
aF9kZWNvcmF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb24sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4
dF9kYXNoX2RlY29yYXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgInRleHQtZGVjb3JhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfY29sb3JH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uQ29sb3Ip
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Rl
eHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF9jb2xvckdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgInRleHQtZGVjb3JhdGlvbi1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfY29sb3JTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfY29sb3IsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4
dF9kYXNoX2RlY29yYXRpb25fZGFzaF9jb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGV4dC1kZWNvcmF0aW9uLWNvbG9yIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29y
YXRpb25fZGFzaF9saW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0
RGVjb3JhdGlvbkxpbmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfbGluZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xp
bmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0LWRlY29yYXRpb24tbGluZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rh
c2hfbGluZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uTGluZSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xp
bmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF9saW5lU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LWRlY29yYXRpb24tbGluZSIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFz
aF9kZWNvcmF0aW9uX2Rhc2hfc2tpcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5VGV4dERlY29yYXRpb25Ta2lwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3NraXAsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25f
ZGFzaF9za2lwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidGV4dC1kZWNvcmF0aW9uLXNraXAiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3Jh
dGlvbl9kYXNoX3NraXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblNraXAsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25f
ZGFzaF9za2lwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGV4dC1kZWNvcmF0aW9u
LXNraXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3N0
eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9k
ZWNvcmF0aW9uX2Rhc2hfc3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0LWRlY29yYXRpb24tc3R5
bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0
X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25T
dHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rh
c2hfZGVjb3JhdGlvbl9kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc3R5
bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
InRleHQtZGVjb3JhdGlvbi1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfdGhpY2tuZXNzR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblRoaWNrbmVzcykp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4
dF9kYXNoX2RlY29yYXRpb25fZGFzaF90aGlja25lc3MsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF90aGlja25lc3NHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFz
aF90aGlja25lc3NTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlv
bl9kYXNoX3RoaWNrbmVzcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3RoaWNrbmVzc1Nl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGV4
dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9lbXBoYXNpc0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXMsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2VtcGhhc2lzR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAidGV4dC1lbXBoYXNpcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9lbXBoYXNpc1NldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpcywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl90ZXh0X2Rhc2hfZW1waGFzaXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2VtcGhhc2lzU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LWVtcGhhc2lz
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9k
YXNoX2VtcGhhc2lzX2Rhc2hfY29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9jb2xvciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFz
aXNfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHQtZW1waGFzaXMtY29sb3IiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1w
aGFzaXNfZGFzaF9jb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9lbXBo
YXNpc19kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX2NvbG9yU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LWVtcGhh
c2lzLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfcG9zaXRpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFz
aXNfZGFzaF9wb3NpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3NpdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHQt
ZW1waGFzaXMtcG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3NpdGlvblNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX3Bvc2l0aW9uLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRf
ZGFzaF9lbXBoYXNpc19kYXNoX3Bvc2l0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LWVtcGhhc2lzLXBvc2l0aW9uIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2VtcGhh
c2lzX2Rhc2hfc3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpc1N0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9zdHlsZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9z
dHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHQtZW1waGFzaXMtc3R5bGUiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFz
aF9zdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9lbXBoYXNpc19kYXNo
X3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX3N0eWxlU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LWVtcGhhc2lzLXN0eWxl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9k
YXNoX2luZGVudEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dEluZGVu
dCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dF9kYXNoX2luZGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0X2Rhc2hfaW5kZW50R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidGV4dC1pbmRlbnQiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfaW5kZW50
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5VGV4dEluZGVudCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfaW5kZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9pbmRlbnRTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRleHQtaW5k
ZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4
dF9kYXNoX29yaWVudGF0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlU
ZXh0T3JpZW50YXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3RleHRfZGFzaF9vcmllbnRhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfb3JpZW50YXRpb25HZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJ0ZXh0LW9yaWVudGF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dF9kYXNoX29yaWVudGF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dE9yaWVu
dGF0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRf
ZGFzaF9vcmllbnRhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfb3JpZW50YXRpb25TZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRleHQtb3JpZW50YXRpb24i
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rh
c2hfb3ZlcmZsb3dHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRPdmVy
ZmxvdykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dF9kYXNoX292ZXJmbG93LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX3RleHRfZGFzaF9vdmVyZmxvd0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHQtb3ZlcmZsb3ci
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rh
c2hfb3ZlcmZsb3dTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3csIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX292ZXJmbG93LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFz
aF9vdmVyZmxvd1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAidGV4dC1vdmVyZmxvdyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9yZW5kZXJpbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9yZW5kZXJpbmcsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3JlbmRlcmluZ0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgInRleHQtcmVuZGVyaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3JlbmRlcmluZ1NldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRl
eHRSZW5kZXJpbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dF9kYXNoX3JlbmRlcmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfcmVuZGVyaW5nU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LXJlbmRlcmluZyIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFz
aF9zaGFkb3dHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRTaGFkb3cp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Rl
eHRfZGFzaF9zaGFkb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dF9kYXNoX3NoYWRvd0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHQtc2hhZG93Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3NoYWRvd1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVRleHRTaGFkb3csIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dF9kYXNoX3NoYWRvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfc2hhZG93U2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LXNoYWRv
dyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRf
ZGFzaF90cmFuc2Zvcm1HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRU
cmFuc2Zvcm0pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3RleHRfZGFzaF90cmFuc2Zvcm0sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dF9kYXNoX3RyYW5zZm9ybUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHQtdHJh
bnNmb3JtIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dF9kYXNoX3RyYW5zZm9ybVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0sIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3RyYW5zZm9ybSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0X2Rhc2hfdHJhbnNmb3JtU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LXRyYW5zZm9ybSIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF91bmRlcmxpbmVfZGFzaF9vZmZz
ZXRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVPZmZz
ZXQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHRfZGFzaF91bmRlcmxpbmVfZGFzaF9vZmZzZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3VuZGVybGluZV9kYXNoX29mZnNldEdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgInRleHQtdW5kZXJsaW5lLW9mZnNldCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF91bmRlcmxpbmVfZGFzaF9vZmZzZXRT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lT2Zmc2V0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF91bmRlcmxpbmVfZGFzaF9vZmZzZXQsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dF9kYXNoX3VuZGVybGluZV9kYXNoX29mZnNldFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGV4dC11bmRlcmxpbmUtb2Zmc2V0Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3Vu
ZGVybGluZV9kYXNoX3Bvc2l0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlUZXh0VW5kZXJsaW5lUG9zaXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF91bmRlcmxpbmVfZGFzaF9wb3NpdGlvbiwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfdW5kZXJs
aW5lX2Rhc2hfcG9zaXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0LXVuZGVybGluZS1wb3NpdGlv
biIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRf
ZGFzaF91bmRlcmxpbmVfZGFzaF9wb3NpdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVQ
b3NpdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0
X2Rhc2hfdW5kZXJsaW5lX2Rhc2hfcG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3VuZGVybGluZV9kYXNo
X3Bvc2l0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJ0ZXh0LXVuZGVybGluZS1wb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RvdWNoX2Rhc2hfYWN0aW9uR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUb3VjaEFjdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdG91Y2hfZGFzaF9hY3Rpb24sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdG91Y2hfZGFzaF9hY3Rpb25HZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ0b3VjaC1hY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl90b3VjaF9kYXNoX2FjdGlvblNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRvdWNo
QWN0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RvdWNo
X2Rhc2hfYWN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3RvdWNoX2Rhc2hfYWN0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0b3VjaC1hY3Rpb24iKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9ib3hH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybUJveCkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3Jt
X2Rhc2hfYm94LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5z
Zm9ybV9kYXNoX2JveEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRyYW5zZm9ybS1ib3giKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9ib3hT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm1Cb3gsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfYm94LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX2JveFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidHJh
bnNmb3JtLWJveCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5VHJhbnNmb3JtT3JpZ2luKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9vcmlnaW4sIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3JpZ2luR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAidHJhbnNmb3JtLW9yaWdpbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpblNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRy
YW5zZm9ybU9yaWdpbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl90cmFuc2Zvcm1fZGFzaF9vcmlnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3JpZ2luU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0cmFuc2Zvcm0t
b3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
dHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hfeEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luWCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hfeCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9vcmln
aW5fZGFzaF94R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhbnNmb3JtLW9yaWdpbi14Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3Jp
Z2luX2Rhc2hfeFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblgsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hf
eCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF94U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0cmFuc2Zvcm0tb3JpZ2luLXgiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFz
aF9vcmlnaW5fZGFzaF95R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFu
c2Zvcm1PcmlnaW5ZKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF95LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3lHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ0cmFuc2Zvcm0tb3JpZ2luLXkiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF95U2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luWSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF95LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9y
bV9kYXNoX29yaWdpbl9kYXNoX3lTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInRyYW5zZm9ybS1vcmlnaW4teSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNo
X3pHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblop
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Ry
YW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3osIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hfekdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
InRyYW5zZm9ybS1vcmlnaW4teiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3pTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlU
cmFuc2Zvcm1PcmlnaW5aLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3osIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3JpZ2lu
X2Rhc2hfelNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAidHJhbnNmb3JtLW9yaWdpbi16Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfc3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybVN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9zdHlsZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9zdHls
ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgInRyYW5zZm9ybS1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX3N0eWxlU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5VHJhbnNmb3JtU3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfc3R5bGVTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRyYW5z
Zm9ybS1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3RyYW5zaXRpb25fZGFzaF9kZWxheUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5VHJhbnNpdGlvbkRlbGF5KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uX2Rhc2hfZGVsYXksIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbl9kYXNoX2RlbGF5R2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAidHJhbnNpdGlvbi1kZWxheSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25fZGFzaF9kZWxheVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRy
YW5zaXRpb25EZWxheSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl90cmFuc2l0aW9uX2Rhc2hfZGVsYXksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbl9kYXNoX2RlbGF5U2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0cmFuc2l0aW9u
LWRlbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
dHJhbnNpdGlvbl9kYXNoX2R1cmF0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlUcmFuc2l0aW9uRHVyYXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25fZGFzaF9kdXJhdGlvbiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uX2Rhc2hfZHVyYXRpb25H
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJ0cmFuc2l0aW9uLWR1cmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbl9kYXNoX2R1cmF0aW9uU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5VHJhbnNpdGlvbkR1cmF0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25fZGFzaF9kdXJhdGlvbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9u
X2Rhc2hfZHVyYXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgInRyYW5zaXRpb24tZHVyYXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uX2Rhc2hfcHJvcGVydHlHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eSkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlv
bl9kYXNoX3Byb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X3RyYW5zaXRpb25fZGFzaF9wcm9wZXJ0eUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRyYW5zaXRpb24tcHJv
cGVydHkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
cmFuc2l0aW9uX2Rhc2hfcHJvcGVydHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uUHJvcGVydHks
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbl9k
YXNoX3Byb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25fZGFzaF9wcm9wZXJ0eVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidHJhbnNpdGlvbi1wcm9wZXJ0
eSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5z
aXRpb25fZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uX2Rhc2hfdGltaW5n
X2Rhc2hfZnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
dHJhbnNpdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJh
bnNpdGlvbi10aW1pbmctZnVuY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uX2Rhc2hfdGltaW5nX2Rhc2hfZnVuY3Rpb25TZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0
aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3RyYW5zaXRpb25fZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvblNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidHJhbnNpdGlvbi10aW1p
bmctZnVuY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl91bmljb2RlX2Rhc2hfYmlkaUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5VW5pY29kZUJpZGkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3VuaWNvZGVfZGFzaF9iaWRpLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX3VuaWNvZGVfZGFzaF9iaWRpR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidW5pY29k
ZS1iaWRpIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dW5pY29kZV9kYXNoX2JpZGlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl91bmljb2RlX2Rhc2hfYmlkaSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl91bmlj
b2RlX2Rhc2hfYmlkaVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAidW5pY29kZS1iaWRpIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZV9kYXNoX3JhbmdlR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3VuaWNvZGVfZGFzaF9yYW5nZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl91bmljb2RlX2Rhc2hfcmFuZ2VHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJ1bmljb2RlLXJhbmdlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZV9kYXNoX3JhbmdlU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VW5pY29k
ZVJhbmdlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3VuaWNv
ZGVfZGFzaF9yYW5nZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl91bmljb2RlX2Rhc2hfcmFuZ2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInVuaWNvZGUtcmFuZ2UiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl92ZWN0b3JfZGFzaF9lZmZl
Y3RHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVZlY3RvckVmZmVjdCkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdmVjdG9y
X2Rhc2hfZWZmZWN0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Zl
Y3Rvcl9kYXNoX2VmZmVjdEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInZlY3Rvci1lZmZlY3QiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl92ZWN0b3JfZGFzaF9lZmZl
Y3RTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlWZWN0b3JFZmZlY3QsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fdmVjdG9yX2Rhc2hfZWZmZWN0LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3ZlY3Rvcl9kYXNoX2VmZmVj
dFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
dmVjdG9yLWVmZmVjdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX3ZlcnRpY2FsX2Rhc2hfYWxpZ25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVZlcnRpY2FsQWxpZ24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3ZlcnRpY2FsX2Rhc2hfYWxpZ24sIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdmVydGljYWxfZGFzaF9hbGlnbkdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgInZlcnRpY2FsLWFsaWduIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdmVydGljYWxfZGFzaF9hbGlnblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVZlcnRpY2FsQWxp
Z24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdmVydGljYWxf
ZGFzaF9hbGlnbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl92ZXJ0aWNhbF9kYXNoX2FsaWduU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ2ZXJ0aWNhbC1hbGlnbiIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3doaXRlX2Rhc2hfc3BhY2VH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdoaXRlU3BhY2UpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3doaXRlX2Rhc2hf
c3BhY2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2hpdGVfZGFz
aF9zcGFjZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndoaXRlLXNwYWNlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2hpdGVfZGFzaF9zcGFjZVNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdoaXRlU3BhY2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2hpdGVfZGFzaF9zcGFjZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93aGl0ZV9kYXNoX3NwYWNlU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3aGl0ZS1zcGFjZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dpbGxfZGFzaF9jaGFu
Z2VHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdpbGxDaGFuZ2UpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dpbGxfZGFz
aF9jaGFuZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2lsbF9k
YXNoX2NoYW5nZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndpbGwtY2hhbmdlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2lsbF9kYXNoX2NoYW5nZVNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdpbGxDaGFuZ2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2lsbF9kYXNoX2NoYW5nZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93aWxsX2Rhc2hfY2hhbmdlU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3aWxsLWNoYW5nZSIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRfZGFzaF9i
cmVha0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V29yZEJyZWFrKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkX2Rh
c2hfYnJlYWssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZF9k
YXNoX2JyZWFrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid29yZC1icmVhayIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRfZGFzaF9icmVha1NldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdvcmRCcmVhaywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93b3JkX2Rhc2hfYnJlYWssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZF9kYXNoX2JyZWFrU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3b3JkLWJyZWFrIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZF9kYXNoX3NwYWNpbmdH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkX2Rhc2hf
c3BhY2luZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkX2Rh
c2hfc3BhY2luZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndvcmQtc3BhY2luZyIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRfZGFzaF9zcGFjaW5nU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V29yZFNwYWNpbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd29yZF9kYXNoX3NwYWNpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZF9kYXNoX3NwYWNpbmdTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndvcmQtc3BhY2lu
ZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRf
ZGFzaF93cmFwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3JhcCkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd29y
ZF9kYXNoX3dyYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd29y
ZF9kYXNoX3dyYXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3b3JkLXdyYXAiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkX2Rhc2hfd3JhcFNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdvcmRXcmFwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dvcmRfZGFzaF93cmFwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dvcmRfZGFzaF93cmFwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3b3JkLXdyYXAiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93cml0aW5nX2Rhc2hfbW9kZUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V3JpdGluZ01vZGUpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dyaXRpbmdfZGFzaF9t
b2RlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dyaXRpbmdfZGFz
aF9tb2RlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid3JpdGluZy1tb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd3JpdGluZ19kYXNoX21vZGVTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXcml0aW5nTW9kZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93cml0aW5nX2Rhc2hfbW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93cml0aW5nX2Rhc2hfbW9kZVNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid3JpdGluZy1tb2RlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fel9kYXNoX2lu
ZGV4R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlaSW5kZXgpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3pfZGFzaF9pbmRl
eCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl96X2Rhc2hfaW5kZXhH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJ6LWluZGV4Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fel9kYXNoX2luZGV4U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5WkluZGV4LCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3pfZGFzaF9pbmRleCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl96
X2Rhc2hfaW5kZXhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgInotaW5kZXgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9lcHViQ2FwdGlvblNpZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUNhcHRpb25TaWRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9lcHViQ2FwdGlvblNpZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZXB1YkNhcHRpb25TaWRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZXB1YkNh
cHRpb25TaWRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZXB1YkNhcHRpb25TaWRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YkNhcHRpb25TaWRlLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJD
YXB0aW9uU2lkZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiZXB1YkNhcHRpb25TaWRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZXB1Ykh5cGhlbnNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJIeXBoZW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2VwdWJIeXBoZW5zR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZXB1Ykh5cGhl
bnMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHVi
SHlwaGVuc1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1Ykh5cGhlbnMsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1Ykh5cGhlbnNTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImVwdWJIeXBo
ZW5zIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1
YlRleHRDb21iaW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0Q29tYmluZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZXB1YlRleHRDb21iaW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2VwdWJUZXh0Q29tYmluZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImVwdWJUZXh0Q29tYmlu
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJU
ZXh0Q29tYmluZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0Q29tYmluZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4
dENvbWJpbmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImVwdWJUZXh0Q29tYmluZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0RW1waGFzaXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRFbXBoYXNpcywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiZXB1YlRleHRFbXBoYXNpcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0RW1waGFzaXNTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RW1waGFzaXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZXB1YlRleHRFbXBoYXNpcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJlcHViVGV4dEVtcGhhc2lzIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRFbXBo
YXNpc0NvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXNDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZXB1YlRleHRFbXBoYXNpc0NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0RW1waGFzaXNDb2xvckdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImVwdWJUZXh0RW1waGFzaXNDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0RW1waGFzaXNDb2xvclNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpc0NvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2VwdWJUZXh0RW1waGFzaXNDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzQ29sb3JTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImVwdWJU
ZXh0RW1waGFzaXNDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2VwdWJUZXh0RW1waGFzaXNTdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0RW1waGFzaXNTdHlsZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lz
U3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJlcHViVGV4dEVtcGhhc2lzU3R5bGUiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzU3R5
bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzU3R5bGUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1
YlRleHRFbXBoYXNpc1N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJlcHViVGV4dEVtcGhhc2lzU3R5bGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dE9yaWVudGF0aW9uR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0T3JpZW50YXRpb24pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJU
ZXh0T3JpZW50YXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZXB1YlRleHRPcmllbnRhdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImVwdWJUZXh0T3JpZW50YXRpb24i
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4
dE9yaWVudGF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0T3JpZW50YXRpb24s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZXB1YlRleHRPcmllbnRhdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiZXB1YlRleHRPcmllbnRhdGlvbiIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0VHJhbnNmb3JtR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dFRyYW5z
Zm9ybSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dFRy
YW5zZm9ybUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImVwdWJUZXh0VHJhbnNmb3JtIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRUcmFuc2Zvcm1TZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2VwdWJUZXh0VHJhbnNmb3JtLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0VHJhbnNmb3JtU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJlcHViVGV4
dFRyYW5zZm9ybSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2VwdWJXb3JkQnJlYWtHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdv
cmRCcmVhaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZXB1YldvcmRCcmVhaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9lcHViV29yZEJyZWFrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZXB1YldvcmRCcmVhayIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJXb3JkQnJlYWtT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXb3JkQnJlYWssIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZXB1YldvcmRCcmVhaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViV29yZEJyZWFrU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJlcHViV29yZEJyZWFrIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YldyaXRp
bmdNb2RlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXcml0aW5nTW9kZSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1
YldyaXRpbmdNb2RlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Vw
dWJXcml0aW5nTW9kZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImVwdWJXcml0aW5nTW9kZSIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJXcml0aW5nTW9kZVNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdyaXRpbmdNb2RlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2VwdWJXcml0aW5nTW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViV3JpdGluZ01vZGVTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImVwdWJXcml0aW5n
TW9kZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25faXRlbUJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgaWYgKFVOTElLRUxZKGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgIGF1dG8gaW5kZXggPSBj
b252ZXJ0PElETFVuc2lnbmVkTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgaW1wbC5pdGVtKFdURk1v
dmUoaW5kZXgpKSkpKTsKfQoKSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX2l0ZW0sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQp7CiAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmNhbGw8anNDU1NTdHlsZURlY2xhcmF0aW9uUHJv
dG90eXBlRnVuY3Rpb25faXRlbUJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1l
LCAiaXRlbSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25fZ2V0UHJvcGVydHlWYWx1ZUJvZHkoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7CiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgaWYgKFVO
TElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICBFbnN1cmVTdGlsbEFs
aXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAg
IGF1dG8gcHJvcGVydHkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlKFdURk1vdmUocHJvcGVydHkpKSkpKTsKfQoKSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX2dl
dFByb3BlcnR5VmFsdWUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQp7CiAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmNhbGw8anNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25f
Z2V0UHJvcGVydHlWYWx1ZUJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAi
Z2V0UHJvcGVydHlWYWx1ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25fZ2V0UHJvcGVydHlQcmlvcml0
eUJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgVU5VU0VE
X1BBUkFNKGNhbGxGcmFtZSk7CiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICBF
bnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgwKTsKICAgIGF1dG8gcHJvcGVydHkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5n
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGltcGwuZ2V0UHJvcGVydHlQcmlvcml0eShXVEZNb3Zl
KHByb3BlcnR5KSkpKSk7Cn0KCkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc0NTU1N0eWxlRGVj
bGFyYXRpb25Qcm90b3R5cGVGdW5jdGlvbl9nZXRQcm9wZXJ0eVByaW9yaXR5LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKewogICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpjYWxsPGpzQ1NTU3R5
bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX2dldFByb3BlcnR5UHJpb3JpdHlCb2R5Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImdldFByb3BlcnR5UHJpb3JpdHkiKTsK
fQoKc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
blByb3RvdHlwZUZ1bmN0aW9uX3NldFByb3BlcnR5Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcykKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKCpsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgIEVuc3Vy
ZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApOwogICAgYXV0byBwcm9wZXJ0eSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBh
cmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgYXV0byB2YWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0cmlu
Zz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMik7CiAgICBhdXRv
IHByaW9yaXR5ID0gYXJndW1lbnQyLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IGVtcHR5U3RyaW5n
KCkgOiBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExET01TdHJp
bmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQyLnZhbHVlKCkpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOwogICAgcHJvcGFnYXRlRXhjZXB0aW9uKCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLnNldFByb3BlcnR5KFdURk1vdmUocHJvcGVydHkpLCBXVEZNb3Zl
KHZhbHVlKSwgV1RGTW92ZShwcmlvcml0eSkpKTsKICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Cn0KCkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc0NTU1N0eWxlRGVj
bGFyYXRpb25Qcm90b3R5cGVGdW5jdGlvbl9zZXRQcm9wZXJ0eSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCnsKICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Y2FsbDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25Qcm90b3R5cGVGdW5jdGlvbl9zZXRQcm9wZXJ0eUJvZHk+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FsbEZyYW1lLCAic2V0UHJvcGVydHkiKTsKfQoKc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX3JlbW92
ZVByb3BlcnR5Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKCpsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICBpZiAoVU5MSUtFTFkoY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgYXV0byBwcm9wZXJ0
eSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLnJlbW92ZVByb3BlcnR5KFdURk1vdmUocHJvcGVydHkpKSkpKTsKfQoKSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX3JlbW92
ZVByb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKewogICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpjYWxsPGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX3JlbW92
ZVByb3BlcnR5Qm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJyZW1vdmVQ
cm9wZXJ0eSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25fZ2V0UHJvcGVydHlTaG9ydGhhbmRCb2R5KEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBj
YWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgIFVOVVNFRF9QQVJBTShj
YWxsRnJhbWUpOwogICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwog
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8g
U3RyaW5nKCkgOiBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGltcGwuZ2V0UHJvcGVydHlTaG9ydGhhbmQoV1RGTW92ZShwcm9wZXJ0eU5hbWUpKSkp
KTsKfQoKSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3Rv
dHlwZUZ1bmN0aW9uX2dldFByb3BlcnR5U2hvcnRoYW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKewogICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpjYWxsPGpzQ1NTU3R5bGVEZWNsYXJhdGlv
blByb3RvdHlwZUZ1bmN0aW9uX2dldFByb3BlcnR5U2hvcnRoYW5kQm9keT4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYWxsRnJhbWUsICJnZXRQcm9wZXJ0eVNob3J0aGFuZCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBl
RnVuY3Rpb25faXNQcm9wZXJ0eUltcGxpY2l0Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cykKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJn
dW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
YXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogY29udmVydDxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xl
YW4+KGltcGwuaXNQcm9wZXJ0eUltcGxpY2l0KFdURk1vdmUocHJvcGVydHlOYW1lKSkpKSk7Cn0K
CkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGVG
dW5jdGlvbl9pc1Byb3BlcnR5SW1wbGljaXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQp7CiAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmNhbGw8anNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90
eXBlRnVuY3Rpb25faXNQcm9wZXJ0eUltcGxpY2l0Qm9keT4oKmxleGljYWxHbG9iYWxPYmplY3Qs
ICpjYWxsRnJhbWUsICJpc1Byb3BlcnR5SW1wbGljaXQiKTsKfQoKc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX2dl
dFByb3BlcnR5Q1NTVmFsdWVCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQogICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCkpOwogICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExO
dWxsYWJsZTxJRExJbnRlcmZhY2U8RGVwcmVjYXRlZENTU09NVmFsdWU+Pj4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKFdURk1vdmUocHJvcGVydHlOYW1lKSkpKSk7Cn0KCkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGVGdW5jdGlvbl9nZXRQcm9wZXJ0eUNT
U1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKewogICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpjYWxsPGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX2dldFByb3Bl
cnR5Q1NTVmFsdWVCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImdldFBy
b3BlcnR5Q1NTVmFsdWUiKTsKfQoKSlNDOjpJc29TdWJzcGFjZSogSlNDU1NTdHlsZURlY2xhcmF0
aW9uOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCnsKICAgIGF1dG8mIGNsaWVudERhdGEg
PSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKICAgIGF1dG8m
IHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICBpZiAoYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvckNTU1N0eWxlRGVjbGFyYXRpb24uZ2V0KCkpCiAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24+IHx8ICFKU0NTU1N0eWxlRGVj
bGFyYXRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24+
KQogICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yQ1NTU3R5bGVEZWNsYXJhdGlvbiA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDU1NTdHlsZURlY2xhcmF0aW9uKTsKICAg
IGVsc2UKICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckNTU1N0eWxlRGVjbGFyYXRpb24gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBKU0NTU1N0eWxlRGVjbGFyYXRpb24pOwogICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckNTU1N0eWxlRGVjbGFyYXRpb24uZ2V0KCk7CklHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCklHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQogICAgdm9pZCAoKm15VmlzaXRPdXRwdXRDb25zdHJh
aW50KShKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKSA9IEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKICAgIHZvaWQgKCpqc0NlbGxWaXNpdE91dHB1
dENvbnN0cmFpbnQpKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpID0gSlNDOjpKU0Nl
bGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7CiAgICBpZiAobXlWaXNpdE91dHB1dENvbnN0cmFp
bnQgIT0ganNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KQogICAgICAgIGNsaWVudERhdGEub3V0
cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CklHTk9SRV9XQVJOSU5HU19FTkQK
SUdOT1JFX1dBUk5JTkdTX0VORAogICAgcmV0dXJuIHNwYWNlOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFt
ZSBWaXNpdG9yPgp2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlzaXRDaGlsZHJlbkltcGwo
SlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQp7CiAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KGNlbGwpOwogICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgIHRoaXNPYmplY3QtPnZpc2l0QWRkaXRpb25hbENoaWxk
cmVuKHZpc2l0b3IpOwp9CgpERUZJTkVfVklTSVRfQ0hJTERSRU4oSlNDU1NTdHlsZURlY2xhcmF0
aW9uKTsKCnRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CnZvaWQgSlNDU1NTdHlsZURlY2xhcmF0
aW9uOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRv
cikKewogICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24q
PihjZWxsKTsKICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKICAgIEJhc2U6OnZpc2l0T3V0cHV0Q29uc3RyYWludHModGhpc09iamVjdCwgdmlzaXRvcik7
CiAgICB0aGlzT2JqZWN0LT52aXNpdEFkZGl0aW9uYWxDaGlsZHJlbih2aXNpdG9yKTsKfQoKdGVt
cGxhdGUgdm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0T3V0cHV0Q29uc3RyYWludHMo
SlNDZWxsKiwgQWJzdHJhY3RTbG90VmlzaXRvciYpOwp0ZW1wbGF0ZSB2b2lkIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyhKU0NlbGwqLCBTbG90VmlzaXRvciYp
Owp2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBI
ZWFwQW5hbHl6ZXImIGFuYWx5emVyKQp7CiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbio+KGNlbGwpOwogICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVj
dEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7CiAgICBpZiAodGhpc09iamVj
dC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgIGFuYWx5emVyLnNldExhYmVsRm9y
Q2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnVybCgpLnN0cmluZygpKTsKICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsK
fQoKYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb25Pd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBBYnN0cmFjdFNs
b3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQp7CiAgICBhdXRvKiBqc0NT
U1N0eWxlRGVjbGFyYXRpb24gPSBqc0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4oaGFuZGxl
LnNsb3QoKS0+YXNDZWxsKCkpOwogICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoJmpzQ1NT
U3R5bGVEZWNsYXJhdGlvbi0+d3JhcHBlZCgpKTsKICAgIGlmIChVTkxJS0VMWShyZWFzb24pKQog
ICAgICAgICpyZWFzb24gPSAiUmVhY2hhYmxlIGZyb20ganNDU1NTdHlsZURlY2xhcmF0aW9uIjsK
ICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KTsKfQoKdm9pZCBKU0NT
U1N0eWxlRGVjbGFyYXRpb25Pd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCnsKICAgIGF1dG8qIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
biA9IHN0YXRpY19jYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KGhhbmRsZS5zbG90KCktPmFz
Q2VsbCgpKTsKICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+
KGNvbnRleHQpOwogICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc0NTU1N0eWxlRGVjbGFyYXRp
b24tPndyYXBwZWQoKSwganNDU1NTdHlsZURlY2xhcmF0aW9uKTsKfQoKSlNDOjpKU1ZhbHVlIHRv
SlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmIGltcGwpCnsKICAgIHJldHVy
biBjcmVhdGVXcmFwcGVyPENTU1N0eWxlRGVjbGFyYXRpb24+KGdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSk7Cn0KCkpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENTU1N0eWxl
RGVjbGFyYXRpb24mIGltcGwpCnsKICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdCwgaW1wbCk7Cn0KCkNTU1N0eWxlRGVjbGFyYXRpb24qIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCnsK
ICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRp
b24qPih2bSwgdmFsdWUpKQogICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAg
cmV0dXJuIG51bGxwdHI7Cn0KCn0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421758</attachid>
            <date>2021-02-27 14:11:23 -0800</date>
            <delta_ts>2021-02-27 14:55:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222517-20210227141122.patch</filename>
            <type>text/plain</type>
            <size>65917</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzM2MjYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAyLTI3ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYWx0ZXJuYXRlLCBub24tbmFtZWQtZ2V0dGVyIGJh
c2VkLCBpbXBsZW1lbnRhdGlvbiBvZiBDU1NTdHlsZURlY2xhcmF0aW9uIGJhY2sgaW50byBXZWJD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1
MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAgICBBZGQgbmV3IEVOQUJMRSBmbGFnIEVOQUJMRV9M
RUdBQ1lfTkFNRURfSVRFTV9JTVBMRU1FTlRBVElPTl9GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9O
IHdoaWNoIGluZGljYXRlcworICAgICAgICB0aGF0IHdlIHNob3VsZCB1c2UgdGhlIGluY29ycmVj
dCBsZWdhY3kgaW1wbGVtZW50YXRpbm8gb2YgcHJvcGVydHkgZ2V0dGVyL3NldHRlcnMgb2YgQ1NT
U3R5bGVEZWNsYXJhdGlvbi4KKyAgICAgICAgT25jZSB3ZSByZW1vdmUgdGhlIGNvbXBpbGUgdGlt
ZSBhbmQgYmluYXJ5IHNpemUgcmVncmVzc2lvbnMsIHdlIGNhbiBkaXNhYmxlIGFuZCByZW1vdmUg
dGhpcy4KKwogMjAyMS0wMi0yNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBCdW1wIGxpYnNvdXAzIHZlcnNpb24gdG8gMi45
OS4xCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgJKHJldmlzaW9uIDI3MzYyNikKKysrIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw2ICsz
NDgsMTAgQEAKICNkZWZpbmUgRU5BQkxFX0xBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQgMAogI2Vu
ZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfTEVHQUNZX05BTUVEX0lURU1fSU1QTEVNRU5UQVRJ
T05fRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTikKKyNkZWZpbmUgRU5BQkxFX0xFR0FDWV9OQU1F
RF9JVEVNX0lNUExFTUVOVEFUSU9OX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04gMQorI2VuZGlm
CisKICNpZiAhZGVmaW5lZChFTkFCTEVfTEVUVEVSUFJFU1MpCiAjZGVmaW5lIEVOQUJMRV9MRVRU
RVJQUkVTUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MzYyNykKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisy
MDIxLTAyLTI3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YWx0ZXJuYXRlLCBub24tbmFtZWQtZ2V0dGVyIGJhc2VkLCBpbXBsZW1lbnRhdGlvbiBvZiBDU1NT
dHlsZURlY2xhcmF0aW9uIGJhY2sgaW50byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1MTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZS1sYW5kcyBjaGFuZ2UgZnJvbSByMjY4NTY0IGJ1
dCBkaXNhYmxlZCBiZWhpbmQgYSBuZXcgRU5BQkxFIGZsYWcsIAorICAgICAgICAhRU5BQkxFKExF
R0FDWV9OQU1FRF9JVEVNX0lNUExFTUVOVEFUSU9OX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04p
LgorCisgICAgICAgIFJlcGxhY2UgbmFtZWQgZ2V0dGVyL3NldHRlciBiYXNlZCBpbXBsZW1lbnRh
dGlvbiBvZiBhY2Nlc3MgdG8gQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0eSB2YWx1ZXMKKyAg
ICAgICAgd2l0aCBhIGdlbmVyYXRlZCBwYXJ0aWFsIGludGVyZmFjZSB0aGF0IGxpc3RzIGFsbCB0
aGUgcHJvcGVydGllcyBleGFjdGx5LgorICAgICAgIAorICAgICAgICBUbyBrZWVwIHRoaW5ncyBj
b25zaXN0ZW50IHdpdGggZXhpc3RpbmcgYmVoYXZpb3IsIGluIGFkZGl0aW9uIHRvIHRoZSBzcGVj
J2QgcHJvcGVydGllcywgd2UgYWxzbworICAgICAgICBtYWludGFpbiBhZGRpdGlvbmFsIHByb3Bl
cnRpZXMgZm9yIGVwdWIgcHJlZml4ZWQgcHJvcGVydGllcy4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgIEdlbmVyYXRlIENTU1N0eWxlRGVj
bGFyYXRpb24rUHJvcGVydHlOYW1lcy5pZGwgYW5kIGVuc3VyZSBpdCBpcyBjb21waWxlIHRvZ2V0
aGVyIHdpdGggdGhlIG90aGVyCisgICAgICAgIGJpbmRpbmdzLgorCisgICAgICAgICogY3NzL21h
a2Vwcm9wLnBsOgorICAgICAgICBBZGQgZ2VuZXJhdGlvbiBvZiBDU1NTdHlsZURlY2xhcmF0aW9u
K1Byb3BlcnR5TmFtZXMuaWRsIGZyb20gQ1NTUHJvcGVydGllcy5qc29uLiBBZGQgY2hlY2tpbmcK
KyAgICAgICAgb2YgdGhlIGVuYWJsZSBmbGFnIHRvIGVuc3VyZSBpdCBpcyBub3QgY29tcGlsZWQg
YnkgZGVmYXVsdC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoVG9NZXRob2ROYW1lKToKKyAgICAgICAgRG9uJ3QgdHJhbnNmb3JtIG5h
bWVzIHRoYXQgc3RhcnQgd2l0aCBDU1NPTSB0byBlbnN1cmUgcHJvcGVydHkgbmFtZXMgYXJlIGNv
bnNpc3RlbnQuCisKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQm9keURlZmluaXRp
b24pOgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvbik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246CisgICAgICAgIEFk
ZCBpbml0aWFsIHN1cHBvcnQgZm9yIHRoZSBuZXcgQ1NTUHJvcGVydHkgZXh0ZW5kZWQgYXR0cmli
dXRlLiBPbmx5IHRoZSB0ZXN0cyBhbmQKKyAgICAgICAgdGhlIGRpc2FibGVkIGNvZGUgaW4gQ1NT
U3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmlkbCBjdXJyZW50bHkgdXNlIGl0LgorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0
b3JzLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJv
cGVydHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q1NTUHJvcGVydHkuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RDU1NQcm9wZXJ0eS5pZGw6IEFkZGVkLgorICAgICAgICBBZGQgdGVzdHMgZm9y
IHRoZSBuZXcgQ1NTUHJvcGVydHkgZXh0ZW5kZWQgYXR0cmlidXRlLgorCisgICAgICAgIChXZWJD
b3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwpOgor
ICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBj
c3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0
UHJvcGVydHlJbnRlcm5hbCk6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbi5oOgorICAgICAgICBSZW1vdmUgdW51c2VkIGJvb2wgcmV0dXJuIHZhbHVlIGZyb20g
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsIChpdCBnb2VzIGZyb20KKyAgICAgICAgRXhjZXB0aW9u
T3I8Ym9vbD4gdG8gRXhjZXB0aW9uT3I8dm9pZD4pIHRvIHNpbXBsaWZ5IHNvbWUgY2FsbGVycyB0
aGF0IG5vIGxvbmdlcgorICAgICAgICBuZWVkIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUuCisK
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgICogY3NzL0NT
U1N0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgRXh0cmFjdCBvdXQgc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsIHNvIGl0IGNhbiBiZSB1c2VkIGJ5IHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IKKyAg
ICAgICAgZm9yIENTU1Byb3BlcnR5IGF0dHJpYnV0ZXMuCisKKyAgICAgICAgQWxzbyByZW1vdmVz
IHVubmVjZXNzYXJ5IE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBkb3VibGU+PiByZXR1cm4gdmFs
dWUgZnJvbSBuYW1lZEl0ZW0KKyAgICAgICAgYXMgaXQgb25seSBldmVyIHJldHVybnMgYSBTdHJp
bmcuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGw6CisgICAgICAgIE1v
dmUgbmFtZWQgZ2V0dGVyL3NldHRlciBkZWNsYXJhdGlvbnMgYW5kIERlZmF1bHREZWZpbmVPd25Q
cm9wZXJ0eSBpbnNpZGUgb2YKKyAgICAgICAgZW5hYmxlIGZsYWdzIGNoZWNrcyBzbyB0aGF0IHdo
ZW4gaXQgaXMgZGlzYWJsZWQsIHdlIGRvbid0IHVzZSB0aGVtLgorCiAyMDIxLTAyLTI3ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3Ig
J3BpeGVsJyBhbmQgJ3BvcycgQ1NTT00gcHJlZml4ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMTkzMCw3ICsxOTMwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTICR7V2ViQ29yZV9ERQogCiAjIEdlbmVyYXRlIENTUyBwcm9wZXJ0eSBuYW1lcwogYWRkX2N1
c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
Q1NTUHJvcGVydGllcy5qc29uICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9w
ZXJ0eU5hbWVzLmggJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5TmFt
ZXMuY3BwICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmdw
ZXJmICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9TdHlsZUJ1aWxkZXJHZW5lcmF0ZWQu
Y3BwICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9TdHlsZVByb3BlcnR5U2hvcnRoYW5k
RnVuY3Rpb25zLmggJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L1N0eWxlUHJvcGVydHlT
aG9ydGhhbmRGdW5jdGlvbnMuY3BwCisgICAgT1VUUFVUICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9DU1NQcm9wZXJ0aWVzLmpzb24gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9
L0NTU1Byb3BlcnR5TmFtZXMuaCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTUHJv
cGVydHlOYW1lcy5jcHAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5
TmFtZXMuZ3BlcmYgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L1N0eWxlQnVpbGRlckdl
bmVyYXRlZC5jcHAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L1N0eWxlUHJvcGVydHlT
aG9ydGhhbmRGdW5jdGlvbnMuaCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19E
SVJ9L0NTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5pZGwKICAgICBNQUlOX0RFUEVO
REVOQ1kgJHtXRUJDT1JFX0RJUn0vY3NzL21ha2Vwcm9wLnBsCiAgICAgREVQRU5EUyAke1dlYkNv
cmVfQ1NTX1BST1BFUlRZX05BTUVTfQogICAgIFdPUktJTkdfRElSRUNUT1JZICR7V2ViQ29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfQpAQCAtMTk0MCw2ICsxOTQwLDcgQEAgYWRkX2N1c3RvbV9jb21t
YW5kKAogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmNwcCkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmNw
cCkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHApCitsaXN0KEFQUEVORCBX
ZWJDb3JlX0lETF9GSUxFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTU3R5bGVE
ZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmlkbCkKIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVE
X0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9jc3MvQ1NTUGFyc2VyLmNwcCBDU1NWYWx1ZUtl
eXdvcmRzLmgpCiAKICMgR2VuZXJhdGUgQ1NTIHZhbHVlIGtleXdvcmRzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24g
MjczNjI3KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw3IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWIKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NQcm9wZXJ0eU5hbWVzLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTUHJvcGVydHlOYW1l
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NTdHls
ZURlY2xhcmF0aW9uK1Byb3BlcnR5TmFtZXMuaWRsCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1ZUtleXdvcmRzLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db2xvckRhdGEuY3BwCkBAIC0z
MDQsNiArMzA1LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYgog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDU1NSdWxlLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ1NTUnVsZUxp
c3QuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NT
U1J1bGVMaXN0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDU1NTdHlsZURlY2xhcmF0aW9uK1Byb3Bl
cnR5TmFtZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNDU1NTdHlsZURlY2xhcmF0aW9uLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ1NTU3R5bGVSdWxlLmNwcApJbmRleDogU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjkxLDYgKzEyOTEs
NyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkveG1sL1hQYXRoUmVzdWx0
LmlkbCBcCiAgICAgJChXZWJDb3JlKS94bWwvWFNMVFByb2Nlc3Nvci5pZGwgXAogICAgIEludGVy
bmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsIFwKKyAgICBDU1NTdHlsZURlY2xhcmF0aW9uK1Byb3Bl
cnR5TmFtZXMuaWRsIFwKICMKIAogIyAtLS0tLS0tLQpAQCAtMTM5MCw2ICsxMzkxLDcgQEAgYWxs
IDogXAogICAgIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAgXAogICAgIFN0eWxlUHJvcGVydHlT
aG9ydGhhbmRGdW5jdGlvbnMuY3BwIFwKICAgICBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rp
b25zLmggXAorICAgIENTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5pZGwgXAogICAg
IFVzZXJBZ2VudFN0eWxlU2hlZXRzLmggXAogICAgIFdlYktpdEZvbnRGYW1pbHlOYW1lcy5jcHAg
XAogICAgIFdlYktpdEZvbnRGYW1pbHlOYW1lcy5oIFwKQEAgLTE0MTcsNiArMTQxOSw3IEBAIENT
U19QUk9QRVJUWV9OQU1FX0ZJTEVTID0gXAogICAgIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAg
XAogICAgIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwIFwKICAgICBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggXAorICAgIENTU1N0eWxlRGVjbGFyYXRpb24rUHJv
cGVydHlOYW1lcy5pZGwgXAogIwogQ1NTX1BST1BFUlRZX05BTUVfRklMRVNfUEFUVEVSTlMgPSAk
KHN1YnN0IC4sJSwkKENTU19QUk9QRVJUWV9OQU1FX0ZJTEVTKSkKIApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlz
aW9uIDI3MzYyNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zOTk3LDYgKzM5OTcsOSBAQCBzdWIgR2V0U2tp
cFZUYWJsZVZhbGlkYXRpb25Gb3JJbnRlcmZhY2UKIHN1YiBUb01ldGhvZE5hbWUKIHsKICAgICBt
eSAkcGFyYW0gPSBzaGlmdDsKKworICAgIHJldHVybiAkcGFyYW0gaWYgJHBhcmFtID1+IC9eQ1NT
T00vOworCiAgICAgbXkgJHJldCA9IGxjZmlyc3QoJHBhcmFtKTsKICAgICAkcmV0ID1+IHMvY1NT
L2Nzcy8gaWYgJHJldCA9fiAvXmNTUy87CiAgICAgJHJldCA9fiBzL2RPTS9kb20vIGlmICRyZXQg
PX4gL15kT00vOwpAQCAtNTMzMCw2ICs1MzMzLDEzIEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdl
dHRlckJvZHlEZWZpbml0aW8KICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyIgLiAk
Y29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OiR7
Y29uc3RydWN0b3JHZXR0ZXJ9KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlz
T2JqZWN0Lmdsb2JhbE9iamVjdCgpKTtcbiIpOwogICAgICAgICB9CisgICAgfSBlbHNpZiAoJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q1NTUHJvcGVydHl9KSB7CisgICAgICAgICRp
bXBsSW5jbHVkZXN7IkNTU1Byb3BlcnR5TmFtZXMuaCJ9ID0gMTsKKyAgICAgICAgbXkgJHByb3Bl
cnR5SUQgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDU1NQcm9wZXJ0eX07CisK
KyAgICAgICAgbXkgJHRvSlNFeHByZXNzaW9uID0gTmF0aXZlVG9KU1ZhbHVlVXNpbmdSZWZlcmVu
Y2VzKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICJpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eSR7cHJvcGVydHlJRH0pIiwgIip0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgp
Iik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoJHt0b0pTRXhwcmVzc2lvbn0pKTtcbiIpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDYWNoZWRBdHRyaWJ1dGV9KSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSB0aGlzT2JqZWN0Lm1fIiAuICRhdHRyaWJ1dGUt
Pm5hbWUgLiAiLmdldCgpKVxuIik7CkBAIC01NDc0LDYgKzU0ODQsMjEgQEAgc3ViIEdlbmVyYXRl
QXR0cmlidXRlU2V0dGVyQm9keURlZmluaXRpbwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoJnRoaXNPYmplY3QsIHZhbHVlKTtcbiIpOwogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUodmFsdWUp
O1xuXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiB0cnVlO1xu
Iik7CisgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q1NTUHJv
cGVydHl9KSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkNTU1Byb3BlcnR5TmFtZXMuaCJ9ID0g
MTsKKworICAgICAgICBteSAkcHJvcGVydHlJRCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0NTU1Byb3BlcnR5fTsKKworICAgICAgICBteSAkZXhjZXB0aW9uVGhyb3dlciA9IEdl
dEF0dHJpYnV0ZUV4Y2VwdGlvblRocm93ZXIoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAg
ICAgIG15ICR0b05hdGl2ZUV4cHJlc3Npb24gPSBKU1ZhbHVlVG9OYXRpdmUoJGludGVyZmFjZSwg
JGF0dHJpYnV0ZSwgInZhbHVlIiwgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29u
ZGl0aW9uYWx9LCAiJmxleGljYWxHbG9iYWxPYmplY3QiLCAibGV4aWNhbEdsb2JhbE9iamVjdCIs
ICJ0aGlzT2JqZWN0IiwgIip0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpIiwgJGV4Y2VwdGlvblRo
cm93ZXIpOworCisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSAke3RvTmF0aXZlRXhwcmVzc2lvbn07XG4iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHtcbiIp
OworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eSR7cHJvcGVydHlJRH0sIFdURk1vdmUobmF0
aXZlVmFsdWUpKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfSk7XG4i
KTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiB0cnVlO1xuIik7CiAg
ICAgfSBlbHNpZiAoJGlzQ29uc3RydWN0b3IpIHsKICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlw
ZSA9ICRhdHRyaWJ1dGUtPnR5cGUtPm5hbWU7CiAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4g
cy9Db25zdHJ1Y3RvciQvLzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
SURMQXR0cmlidXRlcy5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkod29ya2luZyBjb3B5
KQpAQCAtMzgsNiArMzgsMTAgQEAKICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2N1c3RvbS1lbGVtZW50cy5odG1sI2NlcmVhY3Rp
b25zIgogICAgICAgICAgICAgfQogICAgICAgICB9LAorICAgICAgICAiQ1NTUHJvcGVydHkiOiB7
CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwKKyAgICAgICAg
ICAgICJ2YWx1ZXMiOiBbIioiXQorICAgICAgICB9LAogICAgICAgICAiQ2FjaGVkQXR0cmlidXRl
IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0KICAgICAg
ICAgfSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5n
VGVzdEdsb2JhbENvbnN0cnVjdG9ycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAko
cmV2aXNpb24gMjczNjI3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDcgQEAKIHBhcnRpYWwgaW50ZXJmYWNlIFRlc3RHbG9iYWxPYmplY3QgewogICAgIGF0dHJp
YnV0ZSBUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvciBUZXN0Q0VSZWFjdGlvbnM7CiAgICAgYXR0
cmlidXRlIFRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IgVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXI7CisgICAgYXR0cmlidXRlIFRlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9y
IFRlc3RDU1NQcm9wZXJ0eTsKICAgICBhdHRyaWJ1dGUgVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3Rv
ciBUZXN0Q2FsbFRyYWNlcjsKICAgICBbQ29uZGl0aW9uYWw9VEVTVF9DT05ESVRJT05BTF0gYXR0
cmlidXRlIFRlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yIFRlc3RDYWxsYmFja0ludGVy
ZmFjZTsKICAgICBhdHRyaWJ1dGUgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29u
c3RydWN0b3IgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5k
ZXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1
cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAJKHJldmlzaW9uIDI3MzYyNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw5IEBAIFdlYkRPTVRlc3RDRVJlYWN0aW9ucy5o
OiAKIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaDogCiBET01UZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllci5oOiAKIFdlYkRPTVRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmg6IAorSlNU
ZXN0Q1NTUHJvcGVydHkuaDogCitET01UZXN0Q1NTUHJvcGVydHkuaDogCitXZWJET01UZXN0Q1NT
UHJvcGVydHkuaDogCiBKU1Rlc3RDYWxsVHJhY2VyLmg6IAogRE9NVGVzdENhbGxUcmFjZXIuaDog
CiBXZWJET01UZXN0Q2FsbFRyYWNlci5oOiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJvcGVydHkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJvcGVydHkuaWRsCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJv
cGVydHkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCit0
eXBlZGVmIFVTVlN0cmluZyBDU1NPTVN0cmluZzsKKworWworICAgIEV4cG9zZWQ9VGVzdEdsb2Jh
bE9iamVjdAorXSBpbnRlcmZhY2UgVGVzdENTU1Byb3BlcnR5IHsKKyAgICBbQ0VSZWFjdGlvbnMs
IENTU1Byb3BlcnR5PVByb3BlcnR5TmFtZV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVydHk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJvcGVy
dHkuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
OTggQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
YmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTVGVzdENTU1Byb3BlcnR5LmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uUXVldWUuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKKyNpbmNsdWRl
ICJKU0RPTUF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUg
IkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252
ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNs
dWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CisvLyBBdHRyaWJ1dGVzCisKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVz
dENTU1Byb3BlcnR5Q29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHkpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHkpOworCitjbGFzcyBKU1Rlc3RD
U1NQcm9wZXJ0eVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qg
eworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAg
c3RhdGljIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgeworICAgICAgICBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZT4odm0u
aGVhcCkpIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4g
cHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSwgQmFzZSk7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5
cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQor
ICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CitT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDU1NQcm9wZXJ0eVByb3Rv
dHlwZSwgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU6OkJhc2UpOworCit1c2luZyBKU1Rlc3RD
U1NQcm9wZXJ0eURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGU8SlNUZXN0Q1NTUHJvcGVydHk+OworCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q1NTUHJv
cGVydHlET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJB
TSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQor
Cit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q1NTUHJvcGVydHlET01Db25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
eworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RD
U1NQcm9wZXJ0eTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0Q1NTUHJvcGVy
dHkiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RDU1NQcm9wZXJ0eURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0Q1NTUHJvcGVydHkiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3RydWN0b3IpIH07CisKKy8qIEhh
c2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25z
dHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAg
ICB7ICJwcm9wZXJ0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHkpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDU1NQcm9wZXJ0
eV9wcm9wZXJ0eSkgfSB9LAorfTsKKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENTU1Byb3BlcnR5
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0Q1NTUHJvcGVydHkiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENTU1Byb3BlcnR5UHJv
dG90eXBlKSB9OworCit2b2lkIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5
U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0Q1NTUHJvcGVydHk6OmluZm8oKSwgSlNUZXN0Q1NT
UHJvcGVydHlQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0Q1NT
UHJvcGVydHk6OnNfaW5mbyA9IHsgIlRlc3RDU1NQcm9wZXJ0eSIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q1NTUHJvcGVydHkpIH07
CisKK0pTVGVzdENTU1Byb3BlcnR5OjpKU1Rlc3RDU1NQcm9wZXJ0eShTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDU1NQcm9wZXJ0
eT4mJiBpbXBsKQorICAgIDogSlNET01XcmFwcGVyPFRlc3RDU1NQcm9wZXJ0eT4oc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0Q1NTUHJv
cGVydHk6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19h
c3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3RDU1NQcm9wZXJ0eT46
OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZl
biB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3Qu
Iik7CisKK30KKworSlNPYmplY3QqIEpTVGVzdENTU1Byb3BlcnR5OjpjcmVhdGVQcm90b3R5cGUo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBK
U1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rl
c3RDU1NQcm9wZXJ0eVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKK30KKworSlNPYmplY3QqIEpTVGVz
dENTU1Byb3BlcnR5Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0Q1NTUHJvcGVydHk+
KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTVGVzdENTU1Byb3BlcnR5OjpnZXRD
b25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7Cit9CisKK3ZvaWQgSlNUZXN0Q1NTUHJvcGVydHk6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNl
bGwpCit7CisgICAgSlNUZXN0Q1NTUHJvcGVydHkqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U1Rlc3RDU1NQcm9wZXJ0eSo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVzdENTU1Byb3Bl
cnR5Ojp+SlNUZXN0Q1NTUHJvcGVydHkoKTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
Q1NTUHJvcGVydHkqIElETEF0dHJpYnV0ZTxKU1Rlc3RDU1NQcm9wZXJ0eT46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkK
K3sKKyAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDU1NQcm9wZXJ0eSo+KEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cit9
CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q1NTUHJv
cGVydHlQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RDU1NQcm9wZXJ0eTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOworfQorCitzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENTU1Byb3BlcnR5JiB0aGlzT2JqZWN0
KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQcm9wZXJ0eU5hbWUpKSkpOworfQorCitKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHksIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q1NTUHJvcGVydHk+Ojpn
ZXQ8anNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwcm9wZXJ0eSIp
OworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENTU1Byb3Bl
cnR5JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CisgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVByb3BlcnR5TmFtZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwor
ICAgIH0pOworICAgIHJldHVybiB0cnVlOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q1NTUHJvcGVydHk+
OjpzZXQ8c2V0SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInByb3BlcnR5Iik7Cit9CisKK0pTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdENTU1Byb3BlcnR5OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3Bh
Y2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q1NT
UHJvcGVydHkuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENTU1By
b3BlcnR5PiB8fCAhSlNUZXN0Q1NTUHJvcGVydHk6Om5lZWRzRGVzdHJ1Y3Rpb24pOworICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0Q1NTUHJvcGVydHk+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDU1NQ
cm9wZXJ0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q1NTUHJv
cGVydHkpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q1NTUHJv
cGVydHkgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RDU1NQcm9wZXJ0eSk7CisgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDU1NQcm9wZXJ0eS5nZXQoKTsKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICB2b2lkICgqbXlWaXNpdE91dHB1dENv
bnN0cmFpbnQpKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpID0gSlNUZXN0Q1NTUHJv
cGVydHk6OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7CisgICAgdm9pZCAoKmpzQ2VsbFZpc2l0T3V0
cHV0Q29uc3RyYWludCkoSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJikgPSBKU0M6OkpT
Q2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKKyAgICBpZiAobXlWaXNpdE91dHB1dENvbnN0
cmFpbnQgIT0ganNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KQorICAgICAgICBjbGllbnREYXRh
Lm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdT
X0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwordm9pZCBK
U1Rlc3RDU1NQcm9wZXJ0eTo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXIm
IGFuYWx5emVyKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q1NTUHJv
cGVydHkqPihjZWxsKTsKKyAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxs
LCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQorICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwg
InVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJp
bmcoKSk7CisgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCitib29s
IEpTVGVzdENTU1Byb3BlcnR5T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgQWJzdHJhY3RTbG90VmlzaXRvciYg
dmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKK3sKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxl
KTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdENTU1Byb3BlcnR5T3duZXI6OmZp
bmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQor
eworICAgIGF1dG8qIGpzVGVzdENTU1Byb3BlcnR5ID0gc3RhdGljX2Nhc3Q8SlNUZXN0Q1NTUHJv
cGVydHkqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYgd29ybGQgPSAqc3Rh
dGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIo
d29ybGQsICZqc1Rlc3RDU1NQcm9wZXJ0eS0+d3JhcHBlZCgpLCBqc1Rlc3RDU1NQcm9wZXJ0eSk7
Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lOKQor
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQg
KCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0Q1NTUHJvcGVydHlAV2ViQ29yZUBANkJAIilb
XSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTE1
VGVzdENTU1Byb3BlcnR5RVtdOyB9CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFsdWUgdG9K
U05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4mJiBpbXBsKQoreworCisjaWYgRU5BQkxF
KEJJTkRJTkdfSU5URUdSSVRZKQorICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIg
PSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2
b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0Q1NTUHJv
cGVydHlAV2ViQ29yZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9p
bnRlciA9ICZfWlRWTjdXZWJDb3JlMTVUZXN0Q1NTUHJvcGVydHlFWzJdOworI2VuZGlmCisKKyAg
ICAvLyBJZiB0aGlzIGZhaWxzIFRlc3RDU1NQcm9wZXJ0eSBkb2VzIG5vdCBoYXZlIGEgdnRhYmxl
LCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJs
ZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3RDU1NQcm9wZXJ0eT46OnZhbHVlLCAiVGVzdENTU1By
b3BlcnR5IGlzIG5vdCBwb2x5bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFz
c2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8g
VGVzdENTU1Byb3BlcnR5IGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0Q1NTUHJvcGVydHkgaGFzIHN1
YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSBy
ZXF1aXJlIFRlc3RDU1NQcm9wZXJ0eSB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmlu
ZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRv
IHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxW
VGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1
cm4gY3JlYXRlV3JhcHBlcjxUZXN0Q1NTUHJvcGVydHk+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDU1NQ
cm9wZXJ0eSYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QsIGltcGwpOworfQorCitUZXN0Q1NTUHJvcGVydHkqIEpTVGVzdENTU1Byb3Bl
cnR5Ojp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPih2bSwg
dmFsdWUpKQorICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1By
b3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBm
aWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1P
RElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2lu
Y2x1ZGUgIlRlc3RDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTVGVzdENTU1Byb3BlcnR5IDogcHVi
bGljIEpTRE9NV3JhcHBlcjxUZXN0Q1NTUHJvcGVydHk+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBC
YXNlID0gSlNET01XcmFwcGVyPFRlc3RDU1NQcm9wZXJ0eT47CisgICAgc3RhdGljIEpTVGVzdENT
U1Byb3BlcnR5KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4mJiBpbXBsKQorICAgIHsK
KyAgICAgICAgSlNUZXN0Q1NTUHJvcGVydHkqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0Q1NTUHJvcGVydHk+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNU
ZXN0Q1NTUHJvcGVydHkoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsK
KyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAg
ICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQ
cm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBz
dGF0aWMgVGVzdENTU1Byb3BlcnR5KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7
CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICB9CisKKyAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nl
c3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nl
c3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CisgICAgc3RhdGljIHZvaWQgYW5h
bHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKK3Byb3RlY3RlZDoKKyAgICBK
U1Rlc3RDU1NQcm9wZXJ0eShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVm
PFRlc3RDU1NQcm9wZXJ0eT4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0m
KTsKK307CisKK2NsYXNzIEpTVGVzdENTU1Byb3BlcnR5T3duZXIgZmluYWwgOiBwdWJsaWMgSlND
OjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpB
YnN0cmFjdFNsb3RWaXNpdG9yJiwgY29uc3QgY2hhcioqKSBmaW5hbDsKKyAgICB2b2lkIGZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpIGZpbmFsOworfTsK
KworaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldv
cmxkJiwgVGVzdENTU1Byb3BlcnR5KikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNU
ZXN0Q1NTUHJvcGVydHlPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30K
KworaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdENTU1Byb3BlcnR5KiB3cmFwcGFibGVPYmpl
Y3QpCit7CisgICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKK30KKworSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdENTU1Byb3Bl
cnR5Jik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdENT
U1Byb3BlcnR5KiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0
b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCos
IFJlZjxUZXN0Q1NTUHJvcGVydHk+JiYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlD
cmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0Q1NTUHJvcGVydHk+JiYgaW1wbCkg
eyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0
ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdENTU1Byb3Bl
cnR5PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0Q1NTUHJvcGVydHk7CisgICAg
dXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3RDU1NQcm9wZXJ0eSo7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkocmV2
aXNpb24gMjczNjI3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJKU1Rlc3QuaCIKICNpbmNsdWRlICJKU1Rlc3RDRVJlYWN0aW9ucy5oIgogI2lu
Y2x1ZGUgIkpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaCIKKyNpbmNsdWRlICJKU1Rlc3RD
U1NQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkpTVGVzdENhbGxUcmFjZXIuaCIKICNpbmNsdWRlICJK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTVGVzdERP
TUpJVC5oIgpAQCAtMTY1LDYgKzE2Niw4IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzVGVzdEcKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEds
b2JhbE9iamVjdF9UZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXJDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rvcik7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVz
dENTU1Byb3BlcnR5Q29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2Fs
bFRyYWNlckNvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yKTsKICNpZiBFTkFC
TEUoVEVTVF9DT05ESVRJT05BTCkKQEAgLTI5NCwxMyArMjk3LDEzIEBAIHVzaW5nIEpTVGVzdEds
b2JhbE9iamVjdERPTUNvbnN0cnVjdG9yID0KIAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0aWMg
Y29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRl
eFsyNjddID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEds
b2JhbE9iamVjdFRhYmxlSW5kZXhbMjY4XSA9IHsKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzks
IC0xIH0sCisgICAgeyA0MCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMCwgLTEgfSwK
ICAgICB7IDQsIC0xIH0sCi0gICAgeyA0MywgLTEgfSwKKyAgICB7IDQ0LCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzA4LDcgKzMx
MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDUyLCAtMSB9
LAorICAgIHsgNTMsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCkBAIC0zMTYsNyArMzE5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21w
YWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgNjEsIC0xIH0sCisgICAgeyA2MiwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTMzMCwxNCArMzMzLDE0
IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDMzLCAtMSB9LAor
ICAgIHsgMzQsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNjQsIC0x
IH0sCi0gICAgeyAxMiwgMjYwIH0sCisgICAgeyA1LCAyNjcgfSwKKyAgICB7IDEzLCAyNjAgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM0
NSwxMSArMzQ4LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IDM3LCAtMSB9LAotICAgIHsgMTgsIDI1NyB9LAotICAgIHsgNiwgLTEgfSwKKyAgICB7IDM4LCAt
MSB9LAorICAgIHsgMTksIDI1NyB9LAorICAgIHsgNywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgNDQsIC0xIH0sCisgICAgeyA0NSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM1OCwyMCArMzYxLDIwIEBAIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDM1LCAtMSB9LAorICAgIHsgMzYsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAy
MCwgMjY1IH0sCisgICAgeyAyMSwgMjY1IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgNSwgLTEgfSwKKyAgICB7IDYsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zNzksMjcgKzM4MiwyNyBAQCBzdGF0aWMgY29u
c3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyOCwgLTEgfSwKLSAgICB7IDU0LCAtMSB9
LAorICAgIHsgMjksIC0xIH0sCisgICAgeyA1NSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDksIDI1NiB9LAorICAgIHsgMTAsIDI1NiB9
LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1NiwgLTEgfSwKLSAgICB7IDE3LCAtMSB9LAorICAg
IHsgNTcsIC0xIH0sCisgICAgeyAxOCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDE2LCAtMSB9LAorICAgIHsgMTcsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKLSAgICB7IDM0LCAtMSB9LAorICAgIHsgMzUsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00MDcsMTQgKzQxMCwx
NCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyMiwgLTEgfSwK
KyAgICB7IDIzLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAyLCAtMSB9LAotICAgIHsg
MzYsIC0xIH0sCisgICAgeyAzNywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDE5LCAtMSB9LAorICAgIHsgMjAsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00Mjcs
MTUgKzQzMCwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAy
NiwgLTEgfSwKKyAgICB7IDI3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0MSwgLTEg
fSwKKyAgICB7IDQyLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDUx
LCAtMSB9LAorICAgIHsgNTIsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NDMsMjIgKzQ0NiwyMiBAQCBzdGF0aWMgY29uc3Qgc3Ry
dWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0NiwgLTEgfSwKKyAgICB7IDQ3LCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDEwLCAtMSB9LAorICAgIHsgMTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAg
eyA2MiwgLTEgfSwKKyAgICB7IDYzLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjUsIC0xIH0sCi0gICAgeyAzMCwgLTEgfSwK
KyAgICB7IDI2LCAtMSB9LAorICAgIHsgMzEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NjgsOSArNDcxLDkgQEAgc3RhdGljIGNv
bnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTQsIDI1OSB9LAorICAgIHsgMTUsIDI1
OSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1NywgLTEgfSwKKyAgICB7IDU4LCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDc5
LDExICs0ODIsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
MzIsIDI2NiB9LAorICAgIHsgMzMsIDI2NiB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxNSwg
LTEgfSwKKyAgICB7IDE2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA2MCwgLTEgfSwK
KyAgICB7IDYxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LApAQCAtNTAyLDExICs1MDUsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21w
YWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgNDUsIC0xIH0sCisgICAgeyA0NiwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDExLCAtMSB9LAor
ICAgIHsgMTIsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCkBAIC01MTUsNTMgKzUxOCw1NCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBh
Y3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCi0gICAgeyA1NSwgLTEgfSwKKyAgICB7IDU2LCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA4LCAtMSB9LAorICAg
IHsgOSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDcsIDI2MyB9LAotICAgIHsgNywgMjYyIH0s
CisgICAgeyA0OCwgMjYzIH0sCisgICAgeyA4LCAyNjIgfSwKICAgICB7IC0xLCAtMSB9LAotICAg
IHsgNTgsIC0xIH0sCisgICAgeyA1OSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDEzLCAtMSB9LAorICAgIHsgMTQsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKLSAgICB7IDIzLCAtMSB9LAorICAgIHsgMjQsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjksIC0xIH0sCisgICAgeyAzMCwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IDMsIC0xIH0sCi0gICAgeyA0OSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAogICAgIHsgNTAsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDUxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjEsIDI1OCB9LAotICAgIHsg
MjQsIDI2NCB9LAotICAgIHsgMjcsIDI2MSB9LAotICAgIHsgMzEsIC0xIH0sCi0gICAgeyAzOCwg
LTEgfSwKLSAgICB7IDQwLCAtMSB9LAotICAgIHsgNDIsIC0xIH0sCi0gICAgeyA0OCwgLTEgfSwK
LSAgICB7IDUzLCAtMSB9LAotICAgIHsgNTksIC0xIH0sCi0gICAgeyA2MywgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgMjIsIDI1OCB9LAorICAgIHsgMjUsIDI2NCB9LAorICAgIHsgMjgs
IDI2MSB9LAorICAgIHsgMzIsIC0xIH0sCisgICAgeyAzOSwgLTEgfSwKKyAgICB7IDQxLCAtMSB9
LAorICAgIHsgNDMsIC0xIH0sCisgICAgeyA0OSwgLTEgfSwKKyAgICB7IDU0LCAtMSB9LAorICAg
IHsgNjAsIC0xIH0sCisgICAgeyA2NCwgLTEgfSwKKyAgICB7IDY1LCAtMSB9LAogfTsKIAogCkBA
IC01NzYsNiArNTgwLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2Jh
bAogI2VuZGlmCiAgICAgeyAiVGVzdENFUmVhY3Rpb25zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxP
YmplY3RfVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RfVGVz
dENFUmVhY3Rpb25zQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXJDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RDU1NQcm9wZXJ0eSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVz
dENhbGxUcmFjZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbFRyYWNlckNv
bnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3Ip
IH0gfSwKICNpZiBFTkFCTEUoVEVTVF9DT05ESVRJT05BTCkKICAgICB7ICJUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbGJhY2tJbnRlcmZh
Y2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbGJhY2tJbnRlcmZhY2VD
b25zdHJ1Y3RvcikgfSB9LApAQCAtNjUwLDcgKzY1NSw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU1Rlc3RHbG9iYWwKICAgICB7ICJyZWd1bGFyT3BlcmF0aW9uIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX3JlZ3VsYXJPcGVyYXRpb24pLCAoaW50cHRyX3QpICgx
KSB9IH0sCiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEdsb2JhbE9iamVjdFRh
YmxlID0geyA2NSwgMjU1LCB0cnVlLCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmluZm8oKSwgSlNUZXN0
R2xvYmFsT2JqZWN0VGFibGVWYWx1ZXMsIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXggfTsK
K3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGUgPSB7IDY2LCAy
NTUsIHRydWUsIEpTVGVzdEdsb2JhbE9iamVjdDo6aW5mbygpLCBKU1Rlc3RHbG9iYWxPYmplY3RU
YWJsZVZhbHVlcywgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleCB9OwogLyogSGFzaCB0YWJs
ZSBmb3IgY29uc3RydWN0b3IgKi8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dEdsb2JhbE9iamVjdENvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CkBAIC05NjcsNiArOTcyLDI5
IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RHbG9iYWwKICAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RfVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXIiKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVj
dF9UZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVO
VVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0Q1NTUHJv
cGVydHk6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0
aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3RvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmpl
Y3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yR2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdENTU1Byb3BlcnR5Iik7
Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RfVGVzdENTU1By
b3BlcnR5Q29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNo
YWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJUZXN0Q1NTUHJvcGVydHkiKSwgc3RybGVuKCJUZXN0Q1NTUHJvcGVydHki
KSksIHZhbHVlKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEdsb2Jh
bE9iamVjdF9UZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVj
dG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJUZXN0Q1NTUHJvcGVydHkiKTsKK30KKwogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEds
b2JhbE9iamVjdF9UZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlz
aW9uIDI3MzYyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Mjc4LDcgKzQyNzgsNyBAQCBTdHJpbmcgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQCiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFs
dWUocHJvcGVydHlJRCk7CiB9CiAKLUV4Y2VwdGlvbk9yPGJvb2w+IENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJp
bmcmLCBib29sKQorRXhjZXB0aW9uT3I8dm9pZD4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
OjpzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGJvb2wp
CiB7CiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5oCShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3ICsxMzMsNyBA
QCBwcml2YXRlOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldENzc1RleHQoY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlJRCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUlEKSBmaW5hbDsKLSAgICBFeGNlcHRpb25Pcjxib29sPiBzZXRQcm9w
ZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1w
b3J0YW50KSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQcm9wZXJ0eUludGVybmFs
KENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50KSBmaW5h
bDsKICAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25z
dCBmaW5hbDsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQ
cm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0ID0gVXBkYXRlTGF5b3V0KSBjb25zdDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDI3MzYy
NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjE2LDIzICsyMTYsMzkgQEAgQ1NTUHJvcGVydHlJRCBDU1NTdHlsZURlY2xh
cmF0aW9uOjpnZXRDUwogICAgIHJldHVybiBwcm9wZXJ0eUlERnJvbUphdmFTY3JpcHRDU1NQcm9w
ZXJ0eU5hbWUocHJvcGVydHlOYW1lLCBudWxscHRyKTsKIH0KIAorRXhjZXB0aW9uT3I8dm9pZD4g
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCwgU3RyaW5nIHZhbHVlKQoreworICAgIGJvb2wgaW1wb3J0YW50ID0gZmFs
c2U7CisgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2hvdWxkUmVzcGVjdFByaW9y
aXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKCkpIHsKKyAgICAgICAgYXV0byBpbXBvcnRhbnRJbmRl
eCA9IHZhbHVlLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgiIWltcG9ydGFudCIpOworICAgICAgICBp
ZiAoaW1wb3J0YW50SW5kZXggJiYgaW1wb3J0YW50SW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAg
ICAgICAgIGltcG9ydGFudCA9IHRydWU7CisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmxlZnQo
aW1wb3J0YW50SW5kZXggLSAxKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBzZXRQ
cm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIFdURk1vdmUodmFsdWUpLCBpbXBvcnRhbnQpOwor
fQorCiBjb25zdCBTZXR0aW5ncyogQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0dGluZ3MoKSBjb25z
dAogewogICAgIHJldHVybiBwYXJlbnRFbGVtZW50KCkgPyAmcGFyZW50RWxlbWVudCgpLT5kb2N1
bWVudCgpLnNldHRpbmdzKCkgOiBudWxscHRyOwogfQogCi1PcHRpb25hbDxWYXJpYW50PFN0cmlu
ZywgZG91YmxlPj4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21TdHJp
bmcmIHByb3BlcnR5TmFtZSkKKyNpZiBFTkFCTEUoTEVHQUNZX05BTUVEX0lURU1fSU1QTEVNRU5U
QVRJT05fRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTikKKworU3RyaW5nIENTU1N0eWxlRGVjbGFy
YXRpb246Om5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAg
Ly8gRklYTUU6IFRoaXMgaXMgZ29pbmcgdG8gcmV0dXJuIGluY29ycmVjdCByZXN1bHRzIGZvciBj
c3MgcHJvcGVydGllcyBkaXNhYmxlZCBieSBTZXR0aW5ncyBpZiBzZXR0aW5ncygpIHJldHVybnMg
bnVsbHB0ci4KICAgICBhdXRvIHByb3BlcnR5SUQgPSBwcm9wZXJ0eUlERnJvbUphdmFTY3JpcHRD
U1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lLCBzZXR0aW5ncygpKTsKICAgICBpZiAoIXByb3Bl
cnR5SUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IH07
CiAKICAgICBpZiAoYXV0byB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChwcm9w
ZXJ0eUlEKSkKLSAgICAgICAgcmV0dXJuIFZhcmlhbnQ8U3RyaW5nLCBkb3VibGU+IHsgdmFsdWUt
PmNzc1RleHQoKSB9OworICAgICAgICByZXR1cm4gdmFsdWUtPmNzc1RleHQoKTsKIAotICAgIC8v
IElmIHRoZSBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSAoc3VjaCBhcyAicGFkZGlu
ZyIpLCBpdCBjYW4gb25seSBiZSBhY2Nlc3NlZCB1c2luZyBnZXRQcm9wZXJ0eVZhbHVlLgotICAg
IHJldHVybiBWYXJpYW50PFN0cmluZywgZG91YmxlPiB7IGdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChwcm9wZXJ0eUlEKSB9OworICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBw
cm9wZXJ0eSAoc3VjaCBhcyAicGFkZGluZyIpLCBpdCBjYW4gb25seSBiZSBhY2Nlc3NlZCB1c2lu
ZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwuCisgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChwcm9wZXJ0eUlEKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6c2V0TmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmIHByb3BlcnR5TmFtZSwgU3Ry
aW5nIHZhbHVlLCBib29sJiBwcm9wZXJ0eVN1cHBvcnRlZCkKQEAgLTI0NSwyMSArMjYxLDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cwogICAgIH0KIAogICAgIHBy
b3BlcnR5U3VwcG9ydGVkID0gdHJ1ZTsKLQotICAgIGJvb2wgaW1wb3J0YW50ID0gZmFsc2U7Ci0g
ICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2hvdWxkUmVzcGVjdFByaW9yaXR5SW5D
U1NBdHRyaWJ1dGVTZXR0ZXJzKCkpIHsKLSAgICAgICAgYXV0byBpbXBvcnRhbnRJbmRleCA9IHZh
bHVlLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgiIWltcG9ydGFudCIpOwotICAgICAgICBpZiAoaW1w
b3J0YW50SW5kZXggJiYgaW1wb3J0YW50SW5kZXggIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAg
IGltcG9ydGFudCA9IHRydWU7Ci0gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmxlZnQoaW1wb3J0
YW50SW5kZXggLSAxKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGF1dG8gc2V0UHJvcGVydHlJ
bnRlcm5hbFJlc3VsdCA9IHNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHlJRCwgdmFsdWUsIGlt
cG9ydGFudCk7Ci0gICAgaWYgKHNldFByb3BlcnR5SW50ZXJuYWxSZXN1bHQuaGFzRXhjZXB0aW9u
KCkpCi0gICAgICAgIHJldHVybiBzZXRQcm9wZXJ0eUludGVybmFsUmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKTsKLQotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIHNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChwcm9wZXJ0eUlELCBXVEZNb3ZlKHZhbHVlKSk7CiB9CiAKIFZlY3RvcjxBdG9tU3Ry
aW5nPiBDU1NTdHlsZURlY2xhcmF0aW9uOjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3QK
QEAgLTI4Nyw2ICsyODksNyBAQCBWZWN0b3I8QXRvbVN0cmluZz4gQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQorI2VuZGlmCiAKIFN0cmluZyBDU1NTdHlsZURl
Y2xhcmF0aW9uOjpjc3NGbG9hdCgpCiB7CkBAIC0yOTUsMTAgKzI5OCw3IEBAIFN0cmluZyBDU1NT
dHlsZURlY2xhcmF0aW9uOjpjc3NGbG9hdCgpCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENTU1N0eWxl
RGVjbGFyYXRpb246OnNldENzc0Zsb2F0KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgYXV0
byByZXN1bHQgPSBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQsIHZhbHVlLCBm
YWxzZSAvKiBpbXBvcnRhbnQgKi8pOwotICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0g
ICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgIHJldHVybiB7IH07
CisgICAgcmV0dXJuIHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgdmFsdWUs
IGZhbHNlIC8qIGltcG9ydGFudCAqLyk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZURlY2xhcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMjczNjI3KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYs
OCBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIENTU1ZhbHVlIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rp
b24gc2hvdWxkIG5vdCBiZSBleHBvc2VkIHRvIHRoZSB3ZWIgYXMgaXQgbWF5IGJlIHVzZWQgYnkg
bXVsdGlwbGUgZG9jdW1lbnRzIGF0IHRoZSBzYW1lIHRpbWUuCiAgICAgdmlydHVhbCBSZWZQdHI8
Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSA9IDA7
CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
SUQpID0gMDsKLSAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPGJvb2w+IHNldFByb3BlcnR5SW50ZXJu
YWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpID0g
MDsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFByb3BlcnR5SW50ZXJuYWwoQ1NT
UHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpID0gMDsKKyAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJ
RCwgU3RyaW5nKTsKIAogICAgIHZpcnR1YWwgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNv
cHlQcm9wZXJ0aWVzKCkgY29uc3QgPSAwOwogCkBAIC03NCwxMiArNzUsMTYgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBjb25zdCBTZXR0aW5ncyogc2V0dGluZ3MoKSBjb25zdDsKIAotICAgIC8v
IEJpbmRpbmdzIHN1cHBvcnQuCi0gICAgT3B0aW9uYWw8VmFyaWFudDxTdHJpbmcsIGRvdWJsZT4+
IG5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJik7CisjaWYgRU5BQkxFKExFR0FDWV9OQU1FRF9J
VEVNX0lNUExFTUVOVEFUSU9OX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04pCisgICAgLy8gTmFt
ZWQtaXRlbSBiYXNlZCBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0LgorICAgIFN0cmluZyBuYW1lZEl0
ZW0oY29uc3QgQXRvbVN0cmluZyYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE5hbWVkSXRl
bShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBTdHJpbmcgdmFsdWUsIGJvb2wmIHByb3BlcnR5U3Vw
cG9ydGVkKTsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygp
IGNvbnN0OworI2VuZGlmCiAKKyAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBwYXNzIGluIGEg
U2V0dGluZ3MmIHRvIHdvcmsgY29ycmVjdGx5LgogICAgIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIGdl
dENTU1Byb3BlcnR5SURGcm9tSmF2YVNjcmlwdFByb3BlcnR5TmFtZShjb25zdCBBdG9tU3RyaW5n
Jik7CisKIHByb3RlY3RlZDoKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKCkgPSBkZWZhdWx0Owog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwJKHJl
dmlzaW9uIDI3MzYyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9u
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKQEAgLTIwLDM4ICsyMCwzOCBAQAogCiBbCiAgICAgRXhwb3J0TWFjcm89V0VC
Q09SRV9FWFBPUlQsCi0gICAgRGVmYXVsdERlZmluZU93blByb3BlcnR5LAogICAgIEdlbmVyYXRl
SXNSZWFjaGFibGUsCiAgICAgSlNDdXN0b21IZWFkZXIsCiAgICAgSlNDdXN0b21NYXJrRnVuY3Rp
b24sCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCi0gICAgRXhwb3NlZD1XaW5kb3cKKyAgICBF
eHBvc2VkPVdpbmRvdywKKyNpZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTkFNRURfSVRFTV9JTVBM
RU1FTlRBVElPTl9GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OKSAmJiBFTkFCTEVfTEVHQUNZX05B
TUVEX0lURU1fSU1QTEVNRU5UQVRJT05fRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTgorICAgIERl
ZmF1bHREZWZpbmVPd25Qcm9wZXJ0eQorI2VuZGlmCiBdIGludGVyZmFjZSBDU1NTdHlsZURlY2xh
cmF0aW9uIHsKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBET01TdHJpbmcgY3NzVGV4dDsK
LQotICAgIERPTVN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKERPTVN0cmluZyBwcm9wZXJ0eU5hbWUp
OwotCi0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHJlbW92
ZVByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwotICAgIERPTVN0cmluZz8gZ2V0UHJv
cGVydHlQcmlvcml0eShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKLQotICAgIFtDRVJlYWN0aW9u
cywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQcm9wZXJ0eShET01TdHJpbmcgcHJv
cGVydHlOYW1lLCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZSwgb3B0
aW9uYWwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgcHJpb3JpdHkgPSAiIik7
CisgICAgLy8gRklYTUU6IFRoZXNlIGF0dHJpYnV0ZXMgYW5kIGZ1bmN0aW9ucyBzaG91bGQgdXNl
IENTU09NU3RyaW5nIG5vdCBET01TdHJpbmcuCiAKKyAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0
ZSBET01TdHJpbmcgY3NzVGV4dDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBsZW5ndGg7CiAgICAgZ2V0dGVyIERPTVN0cmluZyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgp
OworICAgIERPTVN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKERPTVN0cmluZyBwcm9wZXJ0eSk7Cisg
ICAgLy8gRklYTUU6IFRoZSByZXR1cm4gdmFsdWUgb2YgJ2dldFByb3BlcnR5UHJpb3JpdHknIHNo
b3VsZCBub3QgYmUgbnVsbGFibGUuCisgICAgRE9NU3RyaW5nPyBnZXRQcm9wZXJ0eVByaW9yaXR5
KERPTVN0cmluZyBwcm9wZXJ0eSk7CisgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5kZWZpbmVkIHNldFByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eSwgW0xlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWUsIG9wdGlvbmFsIFtMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIHByaW9yaXR5ID0gIiIpOworICAgIFtDRVJlYWN0aW9ucywgTWF5
VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZW1vdmVQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVy
dHkpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlPyBwYXJlbnRSdWxlOwotCiAgICAg
W0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJp
bmcgY3NzRmxvYXQ7CiAKKyAgICAvLyBOb24tc3RhbmRhcmQuCiAgICAgRE9NU3RyaW5nPyBnZXRQ
cm9wZXJ0eVNob3J0aGFuZChvcHRpb25hbCBET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKICAgICBi
b29sZWFuIGlzUHJvcGVydHlJbXBsaWNpdChvcHRpb25hbCBET01TdHJpbmcgcHJvcGVydHlOYW1l
KTsKKyAgICBEZXByZWNhdGVkQ1NTT01WYWx1ZT8gZ2V0UHJvcGVydHlDU1NWYWx1ZShET01TdHJp
bmcgcHJvcGVydHlOYW1lKTsKIAorI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9OQU1FRF9JVEVN
X0lNUExFTUVOVEFUSU9OX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04pICYmIEVOQUJMRV9MRUdB
Q1lfTkFNRURfSVRFTV9JTVBMRU1FTlRBVElPTl9GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OCiAg
ICAgLy8gVXNlIG5hbWVkIGdldHRlcnMvc2V0dGVycyBmb3IgYWxsIHN1cHBvcnQgQ1NTIHByb3Bl
cnR5IG5hbWVzLiBUaGUgc3BlYyBzYXlzCiAgICAgLy8gdGhlc2Ugc2hvdWxkIGJlIG5vcm1hbCBh
dHRyaWJ1dGVzLCBidXQgdGhlcmUgYXJlIHRvbyBtYW55IGNvbWJpbmF0aW9ucyB3aXRoCi0gICAg
Ly8gcHJlZml4ZXMgZm9yIHRoaXMgdG8gYmUgcHJhY3RpY2FsLiBJZiB3ZSByZW1vdmUgbGVnYWN5
IGFsaWFzZXMsIHdlIHNob3VsZAotICAgIC8vIHJlY29uc2lkZXIgdGhpcyBkZWNpc2lvbi4KLSAg
ICBnZXR0ZXIgKERPTVN0cmluZyBvciBkb3VibGUpIChET01TdHJpbmcgbmFtZSk7CisgICAgLy8g
cHJlZml4ZXMgZm9yIHRoaXMgdG8gYmUgcHJhY3RpY2FsIHdpdGggY3VycmVudCBjb2RlIGdlbmVy
YXRpb24uCisgICAgZ2V0dGVyIERPTVN0cmluZyAoRE9NU3RyaW5nIG5hbWUpOwogICAgIFtDRVJl
YWN0aW9ucywgQ2FsbE5hbWVkU2V0dGVyT25seUZvclN1cHBvcnRlZFByb3BlcnRpZXNdIHNldHRl
ciB1bmRlZmluZWQgKERPTVN0cmluZyBuYW1lLCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERP
TVN0cmluZyB2YWx1ZSk7Ci0KLSAgICAvLyBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLCBhbmQg
d2Ugd291bGQgbGlrZSB0byBkcm9wIHN1cHBvcnQgZm9yIGl0IHNvbWVkYXkKLSAgICBEZXByZWNh
dGVkQ1NTT01WYWx1ZT8gZ2V0UHJvcGVydHlDU1NWYWx1ZShET01TdHJpbmcgcHJvcGVydHlOYW1l
KTsKKyNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzA4LDIyICszMDgsMjIgQEAgU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6ZwogICAgIGlmICghcmVsYXRlZFZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIHJlbGF0ZWRWYWx1ZTsKICAgICAKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0
dXJuIHsgfTsKIH0KIAotRXhjZXB0aW9uT3I8Ym9vbD4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCitFeGNlcHRpb25Pcjx2b2lkPiBQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCkKIHsg
Ci0gICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7Cisg
ICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUgeyB0aGlzIH07CiAg
ICAgaWYgKCF3aWxsTXV0YXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGJvb2wg
Y2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBp
bXBvcnRhbnQsIGNzc1BhcnNlckNvbnRleHQoKSk7Ci0KLSAgICBkaWRNdXRhdGUoY2hhbmdlZCA/
IFByb3BlcnR5Q2hhbmdlZCA6IE5vQ2hhbmdlcyk7CisgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBpZiAoY2hhbmdlZCkKKyAgICBpZiAobV9wcm9wZXJ0eVNldC0+c2V0UHJvcGVydHkocHJvcGVy
dHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyQ29udGV4dCgpKSkgeworICAgICAgICBk
aWRNdXRhdGUoUHJvcGVydHlDaGFuZ2VkKTsKICAgICAgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVl
TXV0YXRpb25SZWNvcmQoKTsKLSAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9IGVsc2UKKyAgICAg
ICAgZGlkTXV0YXRlKE5vQ2hhbmdlcyk7CisgICAgICAgIAorICAgIHJldHVybiB7IH07CiB9CiAK
IFJlZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTU09NKENTU1ZhbHVlKiBpbnRlcm5hbFZhbHVlKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24uaAkocmV2aXNpb24gMjczNjI3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBA
IHByaXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcm
KSBmaW5hbDsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUlEKSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5SUQpIGZpbmFsOwotICAgIEV4Y2VwdGlvbk9yPGJvb2w+IHNldFByb3Bl
cnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBv
cnRhbnQpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFByb3BlcnR5SW50ZXJuYWwo
Q1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpIGZpbmFs
OwogICAgIAogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllcygp
IGNvbnN0IGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCShyZXZpc2lvbiAyNzM2
MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwJKHdvcmtpbmcgY29weSkKQEAg
LTEzNTgsMyArMTM1OCwxNTUgQEAgaWYgKG5vdCAkZ3BlcmYpIHsKICAgICAkZ3BlcmYgPSAkRU5W
e0dQRVJGfSA/ICRFTlZ7R1BFUkZ9IDogImdwZXJmIjsKIH0KIHN5c3RlbSgiXCIkZ3BlcmZcIiAt
LWtleS1wb3NpdGlvbnM9XCIqXCIgLUQgLW4gLXMgMiBDU1NQcm9wZXJ0eU5hbWVzLmdwZXJmIC0t
b3V0cHV0LWZpbGU9Q1NTUHJvcGVydHlOYW1lcy5jcHAiKSA9PSAwIHx8IGRpZSAiY2FsbGluZyBn
cGVyZiBmYWlsZWQ6ICQ/IjsKKworIyBHZW5lcmF0ZSBDU1NTdHlsZURlY2xhcmF0aW9uK1Byb3Bl
cnR5TmFtZXMuaWRsCisKKyMgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNjc3MtcHJv
cGVydHktdG8taWRsLWF0dHJpYnV0ZQorc3ViIGNzc1Byb3BlcnR5VG9JRExBdHRyaWJ1dGUoJCQk
KQoreworICAgIG15ICRwcm9wZXJ0eSA9IHNoaWZ0OworICAgIG15ICRsb3dlcmNhc2VGaXJzdCA9
IHNoaWZ0OworICAgIG15ICR1cHBlcmNhc2VGaXJzdCA9IHNoaWZ0OworCisgICAgbXkgJG91dHB1
dCA9ICIiOworICAgIG15ICR1cHBlcmNhc2VOZXh0ID0gJHVwcGVyY2FzZUZpcnN0OworCisgICAg
aWYgKCRsb3dlcmNhc2VGaXJzdCkgeworICAgICAgICAkcHJvcGVydHkgPSBzdWJzdHIoJHByb3Bl
cnR5LCAxKTsKKyAgICB9CisKKyAgICBmb3JlYWNoIG15ICRjaGFyYWN0ZXIgKHNwbGl0IC8vLCAk
cHJvcGVydHkpIHsKKyAgICAgICAgaWYgKCRjaGFyYWN0ZXIgZXEgIi0iKSB7CisgICAgICAgICAg
ICAkdXBwZXJjYXNlTmV4dCA9IDE7CisgICAgICAgIH0gZWxzaWYgKCR1cHBlcmNhc2VOZXh0KSB7
CisgICAgICAgICAgICAkdXBwZXJjYXNlTmV4dCA9IDA7CisgICAgICAgICAgICAkb3V0cHV0IC49
IHVjICRjaGFyYWN0ZXI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkb3V0cHV0IC49
ICRjaGFyYWN0ZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gJG91dHB1dDsKK30K
KworbXkgJW5hbWVzQW5kQWxpYXNlc1RvTmFtZTsKK2ZvcmVhY2ggbXkgJG5hbWUgKEBuYW1lcykg
eworICAgIGlmIChncmVwIHsgJF8gZXEgJG5hbWUgfSBAaW50ZXJuYWxQcm9wcmVydGllcykgewor
ICAgICAgICBuZXh0OworICAgIH0KKyAgICAkbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lfSA9
ICRuYW1lOworICAgIGZvciBteSAkYWxpYXMgKEB7JG5hbWVUb0FsaWFzZXN7JG5hbWV9fSkgewor
ICAgICAgICAkbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRhbGlhc30gPSAkbmFtZTsKKyAgICB9Cit9
CitteSBAbmFtZXNBbmRBbGlhc2VzID0gc29ydCBrZXlzKCVuYW1lc0FuZEFsaWFzZXNUb05hbWUp
OworCitvcGVuIENTU19TVFlMRV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwsICI+Iiwg
IkNTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5pZGwiIG9yIGRpZSAiQ291bGQgbm90
IG9wZW4gQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmlkbCBmb3Igd3JpdGluZ1xu
IjsKK3ByaW50IENTU19TVFlMRV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwgPDwgIkVP
RiI7CisvLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSAkaW5wdXRG
aWxlIGJ5IHRoZSBtYWtlcHJvcC5wbCBzY3JpcHQuIERvIG5vdCBlZGl0IGl0LgorCisjaWYgIWRl
ZmluZWQoRU5BQkxFX0xFR0FDWV9OQU1FRF9JVEVNX0lNUExFTUVOVEFUSU9OX0ZPUl9DU1NfU1RZ
TEVfREVDTEFSQVRJT04pIHx8ICFFTkFCTEVfTEVHQUNZX05BTUVEX0lURU1fSU1QTEVNRU5UQVRJ
T05fRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTgorCit0eXBlZGVmIFVTVlN0cmluZyBDU1NPTVN0
cmluZzsKKworcGFydGlhbCBpbnRlcmZhY2UgQ1NTU3R5bGVEZWNsYXJhdGlvbiB7CisKK0VPRgor
CitwcmludCBDU1NfU1RZTEVfREVDTEFSQVRJT05fUFJPUEVSVFlfTkFNRVNfSURMIDw8ICJFT0Yi
OworICAgIC8vIEZvciBlYWNoIENTUyBwcm9wZXJ0eSBwcm9wZXJ0eSB0aGF0IGlzIGEgc3VwcG9y
dGVkIENTUyBwcm9wZXJ0eSwgdGhlIGZvbGxvd2luZworICAgIC8vIHBhcnRpYWwgaW50ZXJmYWNl
IGFwcGxpZXMgd2hlcmUgY2FtZWwtY2FzZWQgYXR0cmlidXRlIGlzIG9idGFpbmVkIGJ5IHJ1bm5p
bmcgdGhlCisgICAgLy8gQ1NTIHByb3BlcnR5IHRvIElETCBhdHRyaWJ1dGUgYWxnb3JpdGhtIGZv
ciBwcm9wZXJ0eS4KKyAgICAvLyBFeGFtcGxlOiBmb250LXNpemUgLT4gZWxlbWVudC5zdHlsZS5m
b250U2l6ZQorICAgIC8vIEV4YW1wbGU6IC13ZWJraXQtdHJhbnNmb3JtIC0+IGVsZW1lbnQuc3R5
bGUuV2Via2l0VHJhbnNmb3JtCisgICAgLy8gW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nXSBDU1NPTVN0cmluZyBfY2FtZWxfY2FzZWRfYXR0cmlidXRlOwor
RU9GCisKK2ZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChAbmFtZXNBbmRBbGlhc2VzKSB7CisgICAg
bXkgJGNhbWVsQ2FzZWRBdHRyaWJ1dGVOYW1lID0gY3NzUHJvcGVydHlUb0lETEF0dHJpYnV0ZSgk
bmFtZU9yQWxpYXMsIDAsIDApOworICAgIG15ICRuYW1lID0gJG5hbWVzQW5kQWxpYXNlc1RvTmFt
ZXskbmFtZU9yQWxpYXN9OworICAgIG15ICRwcm9wZXJ0eUlkID0gJG5hbWVUb0lkeyRuYW1lc0Fu
ZEFsaWFzZXNUb05hbWV7JG5hbWV9fTsKKworICAgIG15IEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVl
cyA9ICgiQ1NTUHJvcGVydHk9JHtwcm9wZXJ0eUlkfSIpOworICAgIHB1c2goQGV4dGVuZGVkQXR0
cmlidXRlVmFsdWVzLCAiRW5hYmxlZEJ5U2V0dGluZz0ke3NldHRpbmdzRmxhZ3N7JG5hbWV9fSIp
IGlmICRzZXR0aW5nc0ZsYWdzeyRuYW1lfTsKKyAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZh
bHVlcywgIkVuYWJsZWRBdFJ1bnRpbWU9JHtydW50aW1lRmxhZ3N7JG5hbWV9fSIpIGlmICRydW50
aW1lRmxhZ3N7JG5hbWV9OworICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZXMgPSBqb2luKCIsICIs
IEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyk7CisKKyAgICBwcmludCBDU1NfU1RZTEVfREVDTEFS
QVRJT05fUFJPUEVSVFlfTkFNRVNfSURMICIgICAgW0NFUmVhY3Rpb25zLCAke2V4dGVuZGVkQXR0
cmlidXRlc31dIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09NU3RyaW5n
ICR7Y2FtZWxDYXNlZEF0dHJpYnV0ZU5hbWV9O1xuIjsKK30KKworcHJpbnQgQ1NTX1NUWUxFX0RF
Q0xBUkFUSU9OX1BST1BFUlRZX05BTUVTX0lETCA8PCAiRU9GIjsKKworICAgIC8vIEZvciBlYWNo
IENTUyBwcm9wZXJ0eSBwcm9wZXJ0eSB0aGF0IGlzIGEgc3VwcG9ydGVkIENTUyBwcm9wZXJ0eSBh
bmQgdGhhdCBiZWdpbnMKKyAgICAvLyB3aXRoIHRoZSBzdHJpbmcgLXdlYmtpdC0sIHRoZSBmb2xs
b3dpbmcgcGFydGlhbCBpbnRlcmZhY2UgYXBwbGllcyB3aGVyZSB3ZWJraXQtY2FzZWQKKyAgICAv
LyBhdHRyaWJ1dGUgaXMgb2J0YWluZWQgYnkgcnVubmluZyB0aGUgQ1NTIHByb3BlcnR5IHRvIElE
TCBhdHRyaWJ1dGUgYWxnb3JpdGhtIGZvcgorICAgIC8vIHByb3BlcnR5LCB3aXRoIHRoZSBsb3dl
cmNhc2UgZmlyc3QgZmxhZyBzZXQuCisgICAgLy8gRXhhbXBsZTogLXdlYmtpdC10cmFuc2Zvcm0g
LT4gZWxlbWVudC5zdHlsZS53ZWJraXRUcmFuc2Zvcm0KKyAgICAvLyBbQ0VSZWFjdGlvbnNdIGF0
dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09NU3RyaW5nIF93ZWJraXRfY2Fz
ZWRfYXR0cmlidXRlOworRU9GCisKK2ZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChncmVwIHsgJF8g
PX4gL15cLXdlYmtpdFwtLyB9IEBuYW1lc0FuZEFsaWFzZXMpIHsKKyAgICBteSAkd2Via2l0Q2Fz
ZWRBdHRyaWJ1dGVOYW1lID0gY3NzUHJvcGVydHlUb0lETEF0dHJpYnV0ZSgkbmFtZU9yQWxpYXMs
IDEsIDApOworICAgIG15ICRuYW1lID0gJG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZU9yQWxp
YXN9OworICAgIG15ICRwcm9wZXJ0eUlkID0gJG5hbWVUb0lkeyRuYW1lc0FuZEFsaWFzZXNUb05h
bWV7JG5hbWV9fTsKKworICAgIG15IEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyA9ICgiQ1NTUHJv
cGVydHk9JHtwcm9wZXJ0eUlkfSIpOworICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVz
LCAiRW5hYmxlZEJ5U2V0dGluZz0ke3NldHRpbmdzRmxhZ3N7JG5hbWV9fSIpIGlmICRzZXR0aW5n
c0ZsYWdzeyRuYW1lfTsKKyAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVuYWJs
ZWRBdFJ1bnRpbWU9JHtydW50aW1lRmxhZ3N7JG5hbWV9fSIpIGlmICRydW50aW1lRmxhZ3N7JG5h
bWV9OworICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZXMgPSBqb2luKCIsICIsIEBleHRlbmRlZEF0
dHJpYnV0ZVZhbHVlcyk7CisKKyAgICBwcmludCBDU1NfU1RZTEVfREVDTEFSQVRJT05fUFJPUEVS
VFlfTkFNRVNfSURMICIgICAgW0NFUmVhY3Rpb25zLCAke2V4dGVuZGVkQXR0cmlidXRlc31dIGF0
dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09NU3RyaW5nICR7d2Via2l0Q2Fz
ZWRBdHRyaWJ1dGVOYW1lfTtcbiI7Cit9CisKK3ByaW50IENTU19TVFlMRV9ERUNMQVJBVElPTl9Q
Uk9QRVJUWV9OQU1FU19JREwgPDwgIkVPRiI7CisKKyAgICAvLyBGb3IgZWFjaCBDU1MgcHJvcGVy
dHkgcHJvcGVydHkgdGhhdCBpcyBhIHN1cHBvcnRlZCBDU1MgcHJvcGVydHksIGV4Y2VwdCBmb3IK
KyAgICAvLyBwcm9wZXJ0aWVzIHRoYXQgaGF2ZSBubyAiLSIgKFUrMDAyRCkgaW4gdGhlIHByb3Bl
cnR5IG5hbWUsIHRoZSBmb2xsb3dpbmcgcGFydGlhbAorICAgIC8vIGludGVyZmFjZSBhcHBsaWVz
IHdoZXJlIGRhc2hlZCBhdHRyaWJ1dGUgaXMgcHJvcGVydHkuCisgICAgLy8gRXhhbXBsZTogZm9u
dC1zaXplIC0+IGVsZW1lbnQuc3R5bGVbJ2ZvbnQtc2l6ZSddCisgICAgLy8gRXhhbXBsZTogLXdl
YmtpdC10cmFuc2Zvcm0gLT4gZWxlbWVudC5zdHlsZS5bJy13ZWJraXQtdHJhbnNmb3JtJ10KKyAg
ICAvLyBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENT
U09NU3RyaW5nIF9kYXNoZWRfYXR0cmlidXRlOworRU9GCitmb3JlYWNoIG15ICRuYW1lT3JBbGlh
cyAoZ3JlcCB7ICRfID1+IC9cLS8gfSBAbmFtZXNBbmRBbGlhc2VzKSB7CisgICAgbXkgJGRhc2hl
ZEF0dHJpYnV0ZU5hbWUgPSAkbmFtZU9yQWxpYXM7CisgICAgbXkgJG5hbWUgPSAkbmFtZXNBbmRB
bGlhc2VzVG9OYW1leyRuYW1lT3JBbGlhc307CisgICAgbXkgJHByb3BlcnR5SWQgPSAkbmFtZVRv
SWR7JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19OworCisgICAgbXkgQGV4dGVuZGVkQXR0
cmlidXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3BlcnR5SWR9Iik7CisgICAgcHVzaChA
ZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQnlTZXR0aW5nPSR7c2V0dGluZ3NGbGFn
c3skbmFtZX19IikgaWYgJHNldHRpbmdzRmxhZ3N7JG5hbWV9OworICAgIHB1c2goQGV4dGVuZGVk
QXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEF0UnVudGltZT0ke3J1bnRpbWVGbGFnc3skbmFtZX19
IikgaWYgJHJ1bnRpbWVGbGFnc3skbmFtZX07CisgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9
IGpvaW4oIiwgIiwgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzKTsKKworICAgIHByaW50IENTU19T
VFlMRV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwgIiAgICBbQ0VSZWFjdGlvbnMsICR7
ZXh0ZW5kZWRBdHRyaWJ1dGVzfV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10g
Q1NTT01TdHJpbmcgJHtkYXNoZWRBdHRyaWJ1dGVOYW1lfTtcbiI7Cit9CisKKyMgRXZlcnl0aGlu
ZyBiZWxvdyBoZXJlIGlzIG5vbi1zdGFuZGFyZC4KKworcHJpbnQgQ1NTX1NUWUxFX0RFQ0xBUkFU
SU9OX1BST1BFUlRZX05BTUVTX0lETCA8PCAiRU9GIjsKKworICAgIC8vIE5vbi1zdGFuZGFyZC4g
U3BlY2lhbCBjYXNlIHByb3BlcnRpZXMgc3RhcnRpbmcgd2l0aCAtZXB1Yi0gbGlrZSBpcyBkb25l
IGZvcgorICAgIC8vIC13ZWJraXQtLCB3aGVyZSBhdHRyaWJ1dGUgaXMgb2J0YWluZWQgYnkgcnVu
bmluZyB0aGUgQ1NTIHByb3BlcnR5IHRvIElETCBhdHRyaWJ1dGUKKyAgICAvLyBhbGdvcml0aG0g
Zm9yIHByb3BlcnR5LCB3aXRoIHRoZSBsb3dlcmNhc2UgZmlyc3QgZmxhZyBzZXQuCisgICAgLy8g
RXhhbXBsZTogLWVwdWItY2FwdGlvbi1zaWRlIC0+IGVsZW1lbnQuc3R5bGUuZXB1YkNhcHRpb25T
aWRlCitFT0YKK2ZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChncmVwIHsgJF8gPX4gL15cLWVwdWJc
LS8gfSBAbmFtZXNBbmRBbGlhc2VzKSB7CisgICAgbXkgJGVwdWJDYXNlZEF0dHJpYnV0ZU5hbWUg
PSBjc3NQcm9wZXJ0eVRvSURMQXR0cmlidXRlKCRuYW1lT3JBbGlhcywgMSwgMCk7CisgICAgbXkg
JG5hbWUgPSAkbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lT3JBbGlhc307CisgICAgbXkgJHBy
b3BlcnR5SWQgPSAkbmFtZVRvSWR7JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19OworCisg
ICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3BlcnR5
SWR9Iik7CisgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQnlTZXR0
aW5nPSR7c2V0dGluZ3NGbGFnc3skbmFtZX19IikgaWYgJHNldHRpbmdzRmxhZ3N7JG5hbWV9Owor
ICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEF0UnVudGltZT0ke3J1
bnRpbWVGbGFnc3skbmFtZX19IikgaWYgJHJ1bnRpbWVGbGFnc3skbmFtZX07CisgICAgbXkgJGV4
dGVuZGVkQXR0cmlidXRlcyA9IGpvaW4oIiwgIiwgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzKTsK
KworICAgIHByaW50IENTU19TVFlMRV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwgIiAg
ICBbQ0VSZWFjdGlvbnMsICR7ZXh0ZW5kZWRBdHRyaWJ1dGVzfV0gYXR0cmlidXRlIFtMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgJHtlcHViQ2FzZWRBdHRyaWJ1dGVOYW1lfTtc
biI7Cit9CisKK3ByaW50IENTU19TVFlMRV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwg
PDwgIkVPRiI7Cit9OworCisjZW5kaWYKKworRU9GCisKK2Nsb3NlIENTU19TVFlMRV9ERUNMQVJB
VElPTl9QUk9QRVJUWV9OQU1FU19JREw7Cg==
</data>
<flag name="commit-queue"
          id="440712"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421759</attachid>
            <date>2021-02-27 14:48:04 -0800</date>
            <delta_ts>2021-02-27 17:56:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222517-20210227144804.patch</filename>
            <type>text/plain</type>
            <size>65917</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzM2MjYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAyLTI3ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYWx0ZXJuYXRlLCBub24tbmFtZWQtZ2V0dGVyIGJh
c2VkLCBpbXBsZW1lbnRhdGlvbiBvZiBDU1NTdHlsZURlY2xhcmF0aW9uIGJhY2sgaW50byBXZWJD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1
MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAgICBBZGQgbmV3IEVOQUJMRSBmbGFnIEVOQUJMRV9M
RUdBQ1lfTkFNRURfSVRFTV9JTVBMRU1FTlRBVElPTl9GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9O
IHdoaWNoIGluZGljYXRlcworICAgICAgICB0aGF0IHdlIHNob3VsZCB1c2UgdGhlIGluY29ycmVj
dCBsZWdhY3kgaW1wbGVtZW50YXRpbm8gb2YgcHJvcGVydHkgZ2V0dGVyL3NldHRlcnMgb2YgQ1NT
U3R5bGVEZWNsYXJhdGlvbi4KKyAgICAgICAgT25jZSB3ZSByZW1vdmUgdGhlIGNvbXBpbGUgdGlt
ZSBhbmQgYmluYXJ5IHNpemUgcmVncmVzc2lvbnMsIHdlIGNhbiBkaXNhYmxlIGFuZCByZW1vdmUg
dGhpcy4KKwogMjAyMS0wMi0yNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBCdW1wIGxpYnNvdXAzIHZlcnNpb24gdG8gMi45
OS4xCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgJKHJldmlzaW9uIDI3MzYyNikKKysrIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw2ICsz
NDgsMTAgQEAKICNkZWZpbmUgRU5BQkxFX0xBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQgMAogI2Vu
ZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfTEVHQUNZX05BTUVEX0lURU1fSU1QTEVNRU5UQVRJ
T05fRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTikKKyNkZWZpbmUgRU5BQkxFX0xFR0FDWV9OQU1F
RF9JVEVNX0lNUExFTUVOVEFUSU9OX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04gMQorI2VuZGlm
CisKICNpZiAhZGVmaW5lZChFTkFCTEVfTEVUVEVSUFJFU1MpCiAjZGVmaW5lIEVOQUJMRV9MRVRU
RVJQUkVTUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MzYyNykKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisy
MDIxLTAyLTI3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YWx0ZXJuYXRlLCBub24tbmFtZWQtZ2V0dGVyIGJhc2VkLCBpbXBsZW1lbnRhdGlvbiBvZiBDU1NT
dHlsZURlY2xhcmF0aW9uIGJhY2sgaW50byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1MTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZS1sYW5kcyBjaGFuZ2UgZnJvbSByMjY4NTY0IGJ1
dCBkaXNhYmxlZCBiZWhpbmQgYSBuZXcgRU5BQkxFIGZsYWcsIAorICAgICAgICAhRU5BQkxFKExF
R0FDWV9OQU1FRF9JVEVNX0lNUExFTUVOVEFUSU9OX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04p
LgorCisgICAgICAgIFJlcGxhY2UgbmFtZWQgZ2V0dGVyL3NldHRlciBiYXNlZCBpbXBsZW1lbnRh
dGlvbiBvZiBhY2Nlc3MgdG8gQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0eSB2YWx1ZXMKKyAg
ICAgICAgd2l0aCBhIGdlbmVyYXRlZCBwYXJ0aWFsIGludGVyZmFjZSB0aGF0IGxpc3RzIGFsbCB0
aGUgcHJvcGVydGllcyBleGFjdGx5LgorICAgICAgIAorICAgICAgICBUbyBrZWVwIHRoaW5ncyBj
b25zaXN0ZW50IHdpdGggZXhpc3RpbmcgYmVoYXZpb3IsIGluIGFkZGl0aW9uIHRvIHRoZSBzcGVj
J2QgcHJvcGVydGllcywgd2UgYWxzbworICAgICAgICBtYWludGFpbiBhZGRpdGlvbmFsIHByb3Bl
cnRpZXMgZm9yIGVwdWIgcHJlZml4ZWQgcHJvcGVydGllcy4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgIEdlbmVyYXRlIENTU1N0eWxlRGVj
bGFyYXRpb24rUHJvcGVydHlOYW1lcy5pZGwgYW5kIGVuc3VyZSBpdCBpcyBjb21waWxlIHRvZ2V0
aGVyIHdpdGggdGhlIG90aGVyCisgICAgICAgIGJpbmRpbmdzLgorCisgICAgICAgICogY3NzL21h
a2Vwcm9wLnBsOgorICAgICAgICBBZGQgZ2VuZXJhdGlvbiBvZiBDU1NTdHlsZURlY2xhcmF0aW9u
K1Byb3BlcnR5TmFtZXMuaWRsIGZyb20gQ1NTUHJvcGVydGllcy5qc29uLiBBZGQgY2hlY2tpbmcK
KyAgICAgICAgb2YgdGhlIGVuYWJsZSBmbGFnIHRvIGVuc3VyZSBpdCBpcyBub3QgY29tcGlsZWQg
YnkgZGVmYXVsdC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoVG9NZXRob2ROYW1lKToKKyAgICAgICAgRG9uJ3QgdHJhbnNmb3JtIG5h
bWVzIHRoYXQgc3RhcnQgd2l0aCBDU1NPTSB0byBlbnN1cmUgcHJvcGVydHkgbmFtZXMgYXJlIGNv
bnNpc3RlbnQuCisKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQm9keURlZmluaXRp
b24pOgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvbik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246CisgICAgICAgIEFk
ZCBpbml0aWFsIHN1cHBvcnQgZm9yIHRoZSBuZXcgQ1NTUHJvcGVydHkgZXh0ZW5kZWQgYXR0cmli
dXRlLiBPbmx5IHRoZSB0ZXN0cyBhbmQKKyAgICAgICAgdGhlIGRpc2FibGVkIGNvZGUgaW4gQ1NT
U3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmlkbCBjdXJyZW50bHkgdXNlIGl0LgorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0
b3JzLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJv
cGVydHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q1NTUHJvcGVydHkuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RDU1NQcm9wZXJ0eS5pZGw6IEFkZGVkLgorICAgICAgICBBZGQgdGVzdHMgZm9y
IHRoZSBuZXcgQ1NTUHJvcGVydHkgZXh0ZW5kZWQgYXR0cmlidXRlLgorCisgICAgICAgIChXZWJD
b3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwpOgor
ICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBj
c3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0
UHJvcGVydHlJbnRlcm5hbCk6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbi5oOgorICAgICAgICBSZW1vdmUgdW51c2VkIGJvb2wgcmV0dXJuIHZhbHVlIGZyb20g
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsIChpdCBnb2VzIGZyb20KKyAgICAgICAgRXhjZXB0aW9u
T3I8Ym9vbD4gdG8gRXhjZXB0aW9uT3I8dm9pZD4pIHRvIHNpbXBsaWZ5IHNvbWUgY2FsbGVycyB0
aGF0IG5vIGxvbmdlcgorICAgICAgICBuZWVkIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUuCisK
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgICogY3NzL0NT
U1N0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgRXh0cmFjdCBvdXQgc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsIHNvIGl0IGNhbiBiZSB1c2VkIGJ5IHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IKKyAg
ICAgICAgZm9yIENTU1Byb3BlcnR5IGF0dHJpYnV0ZXMuCisKKyAgICAgICAgQWxzbyByZW1vdmVz
IHVubmVjZXNzYXJ5IE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBkb3VibGU+PiByZXR1cm4gdmFs
dWUgZnJvbSBuYW1lZEl0ZW0KKyAgICAgICAgYXMgaXQgb25seSBldmVyIHJldHVybnMgYSBTdHJp
bmcuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGw6CisgICAgICAgIE1v
dmUgbmFtZWQgZ2V0dGVyL3NldHRlciBkZWNsYXJhdGlvbnMgYW5kIERlZmF1bHREZWZpbmVPd25Q
cm9wZXJ0eSBpbnNpZGUgb2YKKyAgICAgICAgZW5hYmxlIGZsYWdzIGNoZWNrcyBzbyB0aGF0IHdo
ZW4gaXQgaXMgZGlzYWJsZWQsIHdlIGRvbid0IHVzZSB0aGVtLgorCiAyMDIxLTAyLTI3ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3Ig
J3BpeGVsJyBhbmQgJ3BvcycgQ1NTT00gcHJlZml4ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMTkzMCw3ICsxOTMwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTICR7V2ViQ29yZV9ERQogCiAjIEdlbmVyYXRlIENTUyBwcm9wZXJ0eSBuYW1lcwogYWRkX2N1
c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
Q1NTUHJvcGVydGllcy5qc29uICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9w
ZXJ0eU5hbWVzLmggJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5TmFt
ZXMuY3BwICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmdw
ZXJmICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9TdHlsZUJ1aWxkZXJHZW5lcmF0ZWQu
Y3BwICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9TdHlsZVByb3BlcnR5U2hvcnRoYW5k
RnVuY3Rpb25zLmggJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L1N0eWxlUHJvcGVydHlT
aG9ydGhhbmRGdW5jdGlvbnMuY3BwCisgICAgT1VUUFVUICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9DU1NQcm9wZXJ0aWVzLmpzb24gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9
L0NTU1Byb3BlcnR5TmFtZXMuaCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTUHJv
cGVydHlOYW1lcy5jcHAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5
TmFtZXMuZ3BlcmYgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L1N0eWxlQnVpbGRlckdl
bmVyYXRlZC5jcHAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L1N0eWxlUHJvcGVydHlT
aG9ydGhhbmRGdW5jdGlvbnMuaCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19E
SVJ9L0NTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5pZGwKICAgICBNQUlOX0RFUEVO
REVOQ1kgJHtXRUJDT1JFX0RJUn0vY3NzL21ha2Vwcm9wLnBsCiAgICAgREVQRU5EUyAke1dlYkNv
cmVfQ1NTX1BST1BFUlRZX05BTUVTfQogICAgIFdPUktJTkdfRElSRUNUT1JZICR7V2ViQ29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfQpAQCAtMTk0MCw2ICsxOTQwLDcgQEAgYWRkX2N1c3RvbV9jb21t
YW5kKAogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmNwcCkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmNw
cCkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHApCitsaXN0KEFQUEVORCBX
ZWJDb3JlX0lETF9GSUxFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTU3R5bGVE
ZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmlkbCkKIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVE
X0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9jc3MvQ1NTUGFyc2VyLmNwcCBDU1NWYWx1ZUtl
eXdvcmRzLmgpCiAKICMgR2VuZXJhdGUgQ1NTIHZhbHVlIGtleXdvcmRzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24g
MjczNjI3KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw3IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWIKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NQcm9wZXJ0eU5hbWVzLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTUHJvcGVydHlOYW1l
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NTdHls
ZURlY2xhcmF0aW9uK1Byb3BlcnR5TmFtZXMuaWRsCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1ZUtleXdvcmRzLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db2xvckRhdGEuY3BwCkBAIC0z
MDQsNiArMzA1LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYgog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDU1NSdWxlLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ1NTUnVsZUxp
c3QuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NT
U1J1bGVMaXN0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDU1NTdHlsZURlY2xhcmF0aW9uK1Byb3Bl
cnR5TmFtZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNDU1NTdHlsZURlY2xhcmF0aW9uLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ1NTU3R5bGVSdWxlLmNwcApJbmRleDogU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjkxLDYgKzEyOTEs
NyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkveG1sL1hQYXRoUmVzdWx0
LmlkbCBcCiAgICAgJChXZWJDb3JlKS94bWwvWFNMVFByb2Nlc3Nvci5pZGwgXAogICAgIEludGVy
bmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsIFwKKyAgICBDU1NTdHlsZURlY2xhcmF0aW9uK1Byb3Bl
cnR5TmFtZXMuaWRsIFwKICMKIAogIyAtLS0tLS0tLQpAQCAtMTM5MCw2ICsxMzkxLDcgQEAgYWxs
IDogXAogICAgIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAgXAogICAgIFN0eWxlUHJvcGVydHlT
aG9ydGhhbmRGdW5jdGlvbnMuY3BwIFwKICAgICBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rp
b25zLmggXAorICAgIENTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5pZGwgXAogICAg
IFVzZXJBZ2VudFN0eWxlU2hlZXRzLmggXAogICAgIFdlYktpdEZvbnRGYW1pbHlOYW1lcy5jcHAg
XAogICAgIFdlYktpdEZvbnRGYW1pbHlOYW1lcy5oIFwKQEAgLTE0MTcsNiArMTQxOSw3IEBAIENT
U19QUk9QRVJUWV9OQU1FX0ZJTEVTID0gXAogICAgIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAg
XAogICAgIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwIFwKICAgICBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggXAorICAgIENTU1N0eWxlRGVjbGFyYXRpb24rUHJv
cGVydHlOYW1lcy5pZGwgXAogIwogQ1NTX1BST1BFUlRZX05BTUVfRklMRVNfUEFUVEVSTlMgPSAk
KHN1YnN0IC4sJSwkKENTU19QUk9QRVJUWV9OQU1FX0ZJTEVTKSkKIApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlz
aW9uIDI3MzYyNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zOTk3LDYgKzM5OTcsOSBAQCBzdWIgR2V0U2tp
cFZUYWJsZVZhbGlkYXRpb25Gb3JJbnRlcmZhY2UKIHN1YiBUb01ldGhvZE5hbWUKIHsKICAgICBt
eSAkcGFyYW0gPSBzaGlmdDsKKworICAgIHJldHVybiAkcGFyYW0gaWYgJHBhcmFtID1+IC9eQ1NT
T00vOworCiAgICAgbXkgJHJldCA9IGxjZmlyc3QoJHBhcmFtKTsKICAgICAkcmV0ID1+IHMvY1NT
L2Nzcy8gaWYgJHJldCA9fiAvXmNTUy87CiAgICAgJHJldCA9fiBzL2RPTS9kb20vIGlmICRyZXQg
PX4gL15kT00vOwpAQCAtNTMzMCw2ICs1MzMzLDEzIEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdl
dHRlckJvZHlEZWZpbml0aW8KICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyIgLiAk
Y29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OiR7
Y29uc3RydWN0b3JHZXR0ZXJ9KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlz
T2JqZWN0Lmdsb2JhbE9iamVjdCgpKTtcbiIpOwogICAgICAgICB9CisgICAgfSBlbHNpZiAoJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q1NTUHJvcGVydHl9KSB7CisgICAgICAgICRp
bXBsSW5jbHVkZXN7IkNTU1Byb3BlcnR5TmFtZXMuaCJ9ID0gMTsKKyAgICAgICAgbXkgJHByb3Bl
cnR5SUQgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDU1NQcm9wZXJ0eX07CisK
KyAgICAgICAgbXkgJHRvSlNFeHByZXNzaW9uID0gTmF0aXZlVG9KU1ZhbHVlVXNpbmdSZWZlcmVu
Y2VzKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICJpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eSR7cHJvcGVydHlJRH0pIiwgIip0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgp
Iik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoJHt0b0pTRXhwcmVzc2lvbn0pKTtcbiIpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDYWNoZWRBdHRyaWJ1dGV9KSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSB0aGlzT2JqZWN0Lm1fIiAuICRhdHRyaWJ1dGUt
Pm5hbWUgLiAiLmdldCgpKVxuIik7CkBAIC01NDc0LDYgKzU0ODQsMjEgQEAgc3ViIEdlbmVyYXRl
QXR0cmlidXRlU2V0dGVyQm9keURlZmluaXRpbwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoJnRoaXNPYmplY3QsIHZhbHVlKTtcbiIpOwogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUodmFsdWUp
O1xuXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiB0cnVlO1xu
Iik7CisgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q1NTUHJv
cGVydHl9KSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkNTU1Byb3BlcnR5TmFtZXMuaCJ9ID0g
MTsKKworICAgICAgICBteSAkcHJvcGVydHlJRCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0NTU1Byb3BlcnR5fTsKKworICAgICAgICBteSAkZXhjZXB0aW9uVGhyb3dlciA9IEdl
dEF0dHJpYnV0ZUV4Y2VwdGlvblRocm93ZXIoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAg
ICAgIG15ICR0b05hdGl2ZUV4cHJlc3Npb24gPSBKU1ZhbHVlVG9OYXRpdmUoJGludGVyZmFjZSwg
JGF0dHJpYnV0ZSwgInZhbHVlIiwgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29u
ZGl0aW9uYWx9LCAiJmxleGljYWxHbG9iYWxPYmplY3QiLCAibGV4aWNhbEdsb2JhbE9iamVjdCIs
ICJ0aGlzT2JqZWN0IiwgIip0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpIiwgJGV4Y2VwdGlvblRo
cm93ZXIpOworCisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSAke3RvTmF0aXZlRXhwcmVzc2lvbn07XG4iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHtcbiIp
OworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eSR7cHJvcGVydHlJRH0sIFdURk1vdmUobmF0
aXZlVmFsdWUpKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfSk7XG4i
KTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiB0cnVlO1xuIik7CiAg
ICAgfSBlbHNpZiAoJGlzQ29uc3RydWN0b3IpIHsKICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlw
ZSA9ICRhdHRyaWJ1dGUtPnR5cGUtPm5hbWU7CiAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4g
cy9Db25zdHJ1Y3RvciQvLzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
SURMQXR0cmlidXRlcy5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkod29ya2luZyBjb3B5
KQpAQCAtMzgsNiArMzgsMTAgQEAKICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2N1c3RvbS1lbGVtZW50cy5odG1sI2NlcmVhY3Rp
b25zIgogICAgICAgICAgICAgfQogICAgICAgICB9LAorICAgICAgICAiQ1NTUHJvcGVydHkiOiB7
CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXSwKKyAgICAgICAg
ICAgICJ2YWx1ZXMiOiBbIioiXQorICAgICAgICB9LAogICAgICAgICAiQ2FjaGVkQXR0cmlidXRl
IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0KICAgICAg
ICAgfSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5n
VGVzdEdsb2JhbENvbnN0cnVjdG9ycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAko
cmV2aXNpb24gMjczNjI3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDcgQEAKIHBhcnRpYWwgaW50ZXJmYWNlIFRlc3RHbG9iYWxPYmplY3QgewogICAgIGF0dHJp
YnV0ZSBUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvciBUZXN0Q0VSZWFjdGlvbnM7CiAgICAgYXR0
cmlidXRlIFRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IgVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXI7CisgICAgYXR0cmlidXRlIFRlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9y
IFRlc3RDU1NQcm9wZXJ0eTsKICAgICBhdHRyaWJ1dGUgVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3Rv
ciBUZXN0Q2FsbFRyYWNlcjsKICAgICBbQ29uZGl0aW9uYWw9VEVTVF9DT05ESVRJT05BTF0gYXR0
cmlidXRlIFRlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yIFRlc3RDYWxsYmFja0ludGVy
ZmFjZTsKICAgICBhdHRyaWJ1dGUgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29u
c3RydWN0b3IgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5k
ZXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1
cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAJKHJldmlzaW9uIDI3MzYyNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw5IEBAIFdlYkRPTVRlc3RDRVJlYWN0aW9ucy5o
OiAKIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaDogCiBET01UZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllci5oOiAKIFdlYkRPTVRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmg6IAorSlNU
ZXN0Q1NTUHJvcGVydHkuaDogCitET01UZXN0Q1NTUHJvcGVydHkuaDogCitXZWJET01UZXN0Q1NT
UHJvcGVydHkuaDogCiBKU1Rlc3RDYWxsVHJhY2VyLmg6IAogRE9NVGVzdENhbGxUcmFjZXIuaDog
CiBXZWJET01UZXN0Q2FsbFRyYWNlci5oOiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJvcGVydHkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJvcGVydHkuaWRsCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJv
cGVydHkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCit0
eXBlZGVmIFVTVlN0cmluZyBDU1NPTVN0cmluZzsKKworWworICAgIEV4cG9zZWQ9VGVzdEdsb2Jh
bE9iamVjdAorXSBpbnRlcmZhY2UgVGVzdENTU1Byb3BlcnR5IHsKKyAgICBbQ0VSZWFjdGlvbnMs
IENTU1Byb3BlcnR5PVByb3BlcnR5TmFtZV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVydHk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJvcGVy
dHkuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
OTggQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
YmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTVGVzdENTU1Byb3BlcnR5LmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uUXVldWUuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKKyNpbmNsdWRl
ICJKU0RPTUF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUg
IkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252
ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNs
dWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CisvLyBBdHRyaWJ1dGVzCisKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVz
dENTU1Byb3BlcnR5Q29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHkpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHkpOworCitjbGFzcyBKU1Rlc3RD
U1NQcm9wZXJ0eVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qg
eworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAg
c3RhdGljIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgeworICAgICAgICBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZT4odm0u
aGVhcCkpIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4g
cHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSwgQmFzZSk7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5
cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQor
ICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CitT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDU1NQcm9wZXJ0eVByb3Rv
dHlwZSwgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU6OkJhc2UpOworCit1c2luZyBKU1Rlc3RD
U1NQcm9wZXJ0eURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGU8SlNUZXN0Q1NTUHJvcGVydHk+OworCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q1NTUHJv
cGVydHlET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJB
TSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQor
Cit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q1NTUHJvcGVydHlET01Db25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
eworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RD
U1NQcm9wZXJ0eTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0Q1NTUHJvcGVy
dHkiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RDU1NQcm9wZXJ0eURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0Q1NTUHJvcGVydHkiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3RydWN0b3IpIH07CisKKy8qIEhh
c2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25z
dHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAg
ICB7ICJwcm9wZXJ0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHkpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDU1NQcm9wZXJ0
eV9wcm9wZXJ0eSkgfSB9LAorfTsKKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENTU1Byb3BlcnR5
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0Q1NTUHJvcGVydHkiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENTU1Byb3BlcnR5UHJv
dG90eXBlKSB9OworCit2b2lkIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5
U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0Q1NTUHJvcGVydHk6OmluZm8oKSwgSlNUZXN0Q1NT
UHJvcGVydHlQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0Q1NT
UHJvcGVydHk6OnNfaW5mbyA9IHsgIlRlc3RDU1NQcm9wZXJ0eSIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q1NTUHJvcGVydHkpIH07
CisKK0pTVGVzdENTU1Byb3BlcnR5OjpKU1Rlc3RDU1NQcm9wZXJ0eShTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDU1NQcm9wZXJ0
eT4mJiBpbXBsKQorICAgIDogSlNET01XcmFwcGVyPFRlc3RDU1NQcm9wZXJ0eT4oc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0Q1NTUHJv
cGVydHk6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19h
c3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3RDU1NQcm9wZXJ0eT46
OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZl
biB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3Qu
Iik7CisKK30KKworSlNPYmplY3QqIEpTVGVzdENTU1Byb3BlcnR5OjpjcmVhdGVQcm90b3R5cGUo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBK
U1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rl
c3RDU1NQcm9wZXJ0eVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKK30KKworSlNPYmplY3QqIEpTVGVz
dENTU1Byb3BlcnR5Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0Q1NTUHJvcGVydHk+
KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTVGVzdENTU1Byb3BlcnR5OjpnZXRD
b25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7Cit9CisKK3ZvaWQgSlNUZXN0Q1NTUHJvcGVydHk6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNl
bGwpCit7CisgICAgSlNUZXN0Q1NTUHJvcGVydHkqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U1Rlc3RDU1NQcm9wZXJ0eSo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVzdENTU1Byb3Bl
cnR5Ojp+SlNUZXN0Q1NTUHJvcGVydHkoKTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
Q1NTUHJvcGVydHkqIElETEF0dHJpYnV0ZTxKU1Rlc3RDU1NQcm9wZXJ0eT46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkK
K3sKKyAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDU1NQcm9wZXJ0eSo+KEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cit9
CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q1NTUHJv
cGVydHlQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RDU1NQcm9wZXJ0eTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOworfQorCitzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENTU1Byb3BlcnR5JiB0aGlzT2JqZWN0
KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQcm9wZXJ0eU5hbWUpKSkpOworfQorCitKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHksIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q1NTUHJvcGVydHk+Ojpn
ZXQ8anNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwcm9wZXJ0eSIp
OworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENTU1Byb3Bl
cnR5JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CisgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVByb3BlcnR5TmFtZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwor
ICAgIH0pOworICAgIHJldHVybiB0cnVlOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q1NTUHJvcGVydHk+
OjpzZXQ8c2V0SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInByb3BlcnR5Iik7Cit9CisKK0pTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdENTU1Byb3BlcnR5OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3Bh
Y2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q1NT
UHJvcGVydHkuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENTU1By
b3BlcnR5PiB8fCAhSlNUZXN0Q1NTUHJvcGVydHk6Om5lZWRzRGVzdHJ1Y3Rpb24pOworICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0Q1NTUHJvcGVydHk+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDU1NQ
cm9wZXJ0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q1NTUHJv
cGVydHkpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q1NTUHJv
cGVydHkgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RDU1NQcm9wZXJ0eSk7CisgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDU1NQcm9wZXJ0eS5nZXQoKTsKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICB2b2lkICgqbXlWaXNpdE91dHB1dENv
bnN0cmFpbnQpKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpID0gSlNUZXN0Q1NTUHJv
cGVydHk6OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7CisgICAgdm9pZCAoKmpzQ2VsbFZpc2l0T3V0
cHV0Q29uc3RyYWludCkoSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJikgPSBKU0M6OkpT
Q2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKKyAgICBpZiAobXlWaXNpdE91dHB1dENvbnN0
cmFpbnQgIT0ganNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KQorICAgICAgICBjbGllbnREYXRh
Lm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdT
X0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwordm9pZCBK
U1Rlc3RDU1NQcm9wZXJ0eTo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXIm
IGFuYWx5emVyKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q1NTUHJv
cGVydHkqPihjZWxsKTsKKyAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxs
LCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQorICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwg
InVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJp
bmcoKSk7CisgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCitib29s
IEpTVGVzdENTU1Byb3BlcnR5T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgQWJzdHJhY3RTbG90VmlzaXRvciYg
dmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKK3sKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxl
KTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdENTU1Byb3BlcnR5T3duZXI6OmZp
bmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQor
eworICAgIGF1dG8qIGpzVGVzdENTU1Byb3BlcnR5ID0gc3RhdGljX2Nhc3Q8SlNUZXN0Q1NTUHJv
cGVydHkqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYgd29ybGQgPSAqc3Rh
dGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIo
d29ybGQsICZqc1Rlc3RDU1NQcm9wZXJ0eS0+d3JhcHBlZCgpLCBqc1Rlc3RDU1NQcm9wZXJ0eSk7
Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lOKQor
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQg
KCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0Q1NTUHJvcGVydHlAV2ViQ29yZUBANkJAIilb
XSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTE1
VGVzdENTU1Byb3BlcnR5RVtdOyB9CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFsdWUgdG9K
U05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4mJiBpbXBsKQoreworCisjaWYgRU5BQkxF
KEJJTkRJTkdfSU5URUdSSVRZKQorICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIg
PSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2
b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0Q1NTUHJv
cGVydHlAV2ViQ29yZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9p
bnRlciA9ICZfWlRWTjdXZWJDb3JlMTVUZXN0Q1NTUHJvcGVydHlFWzJdOworI2VuZGlmCisKKyAg
ICAvLyBJZiB0aGlzIGZhaWxzIFRlc3RDU1NQcm9wZXJ0eSBkb2VzIG5vdCBoYXZlIGEgdnRhYmxl
LCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJs
ZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3RDU1NQcm9wZXJ0eT46OnZhbHVlLCAiVGVzdENTU1By
b3BlcnR5IGlzIG5vdCBwb2x5bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFz
c2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8g
VGVzdENTU1Byb3BlcnR5IGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0Q1NTUHJvcGVydHkgaGFzIHN1
YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSBy
ZXF1aXJlIFRlc3RDU1NQcm9wZXJ0eSB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmlu
ZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRv
IHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxW
VGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1
cm4gY3JlYXRlV3JhcHBlcjxUZXN0Q1NTUHJvcGVydHk+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDU1NQ
cm9wZXJ0eSYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QsIGltcGwpOworfQorCitUZXN0Q1NTUHJvcGVydHkqIEpTVGVzdENTU1Byb3Bl
cnR5Ojp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPih2bSwg
dmFsdWUpKQorICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1By
b3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBm
aWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1P
RElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2lu
Y2x1ZGUgIlRlc3RDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTVGVzdENTU1Byb3BlcnR5IDogcHVi
bGljIEpTRE9NV3JhcHBlcjxUZXN0Q1NTUHJvcGVydHk+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBC
YXNlID0gSlNET01XcmFwcGVyPFRlc3RDU1NQcm9wZXJ0eT47CisgICAgc3RhdGljIEpTVGVzdENT
U1Byb3BlcnR5KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4mJiBpbXBsKQorICAgIHsK
KyAgICAgICAgSlNUZXN0Q1NTUHJvcGVydHkqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0Q1NTUHJvcGVydHk+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNU
ZXN0Q1NTUHJvcGVydHkoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsK
KyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAg
ICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQ
cm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBz
dGF0aWMgVGVzdENTU1Byb3BlcnR5KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7
CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICB9CisKKyAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nl
c3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nl
c3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CisgICAgc3RhdGljIHZvaWQgYW5h
bHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKK3Byb3RlY3RlZDoKKyAgICBK
U1Rlc3RDU1NQcm9wZXJ0eShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVm
PFRlc3RDU1NQcm9wZXJ0eT4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0m
KTsKK307CisKK2NsYXNzIEpTVGVzdENTU1Byb3BlcnR5T3duZXIgZmluYWwgOiBwdWJsaWMgSlND
OjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpB
YnN0cmFjdFNsb3RWaXNpdG9yJiwgY29uc3QgY2hhcioqKSBmaW5hbDsKKyAgICB2b2lkIGZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpIGZpbmFsOworfTsK
KworaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldv
cmxkJiwgVGVzdENTU1Byb3BlcnR5KikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNU
ZXN0Q1NTUHJvcGVydHlPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30K
KworaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdENTU1Byb3BlcnR5KiB3cmFwcGFibGVPYmpl
Y3QpCit7CisgICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKK30KKworSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdENTU1Byb3Bl
cnR5Jik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdENT
U1Byb3BlcnR5KiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0
b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCos
IFJlZjxUZXN0Q1NTUHJvcGVydHk+JiYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlD
cmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0Q1NTUHJvcGVydHk+JiYgaW1wbCkg
eyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0
ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdENTU1Byb3Bl
cnR5PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0Q1NTUHJvcGVydHk7CisgICAg
dXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3RDU1NQcm9wZXJ0eSo7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkocmV2
aXNpb24gMjczNjI3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJKU1Rlc3QuaCIKICNpbmNsdWRlICJKU1Rlc3RDRVJlYWN0aW9ucy5oIgogI2lu
Y2x1ZGUgIkpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaCIKKyNpbmNsdWRlICJKU1Rlc3RD
U1NQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkpTVGVzdENhbGxUcmFjZXIuaCIKICNpbmNsdWRlICJK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTVGVzdERP
TUpJVC5oIgpAQCAtMTY1LDYgKzE2Niw4IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzVGVzdEcKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEds
b2JhbE9iamVjdF9UZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXJDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rvcik7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVz
dENTU1Byb3BlcnR5Q29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2Fs
bFRyYWNlckNvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yKTsKICNpZiBFTkFC
TEUoVEVTVF9DT05ESVRJT05BTCkKQEAgLTI5NCwxMyArMjk3LDEzIEBAIHVzaW5nIEpTVGVzdEds
b2JhbE9iamVjdERPTUNvbnN0cnVjdG9yID0KIAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0aWMg
Y29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRl
eFsyNjddID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEds
b2JhbE9iamVjdFRhYmxlSW5kZXhbMjY4XSA9IHsKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzks
IC0xIH0sCisgICAgeyA0MCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMCwgLTEgfSwK
ICAgICB7IDQsIC0xIH0sCi0gICAgeyA0MywgLTEgfSwKKyAgICB7IDQ0LCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzA4LDcgKzMx
MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDUyLCAtMSB9
LAorICAgIHsgNTMsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCkBAIC0zMTYsNyArMzE5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21w
YWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgNjEsIC0xIH0sCisgICAgeyA2MiwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTMzMCwxNCArMzMzLDE0
IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDMzLCAtMSB9LAor
ICAgIHsgMzQsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNjQsIC0x
IH0sCi0gICAgeyAxMiwgMjYwIH0sCisgICAgeyA1LCAyNjcgfSwKKyAgICB7IDEzLCAyNjAgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM0
NSwxMSArMzQ4LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IDM3LCAtMSB9LAotICAgIHsgMTgsIDI1NyB9LAotICAgIHsgNiwgLTEgfSwKKyAgICB7IDM4LCAt
MSB9LAorICAgIHsgMTksIDI1NyB9LAorICAgIHsgNywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgNDQsIC0xIH0sCisgICAgeyA0NSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM1OCwyMCArMzYxLDIwIEBAIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDM1LCAtMSB9LAorICAgIHsgMzYsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAy
MCwgMjY1IH0sCisgICAgeyAyMSwgMjY1IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgNSwgLTEgfSwKKyAgICB7IDYsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zNzksMjcgKzM4MiwyNyBAQCBzdGF0aWMgY29u
c3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyOCwgLTEgfSwKLSAgICB7IDU0LCAtMSB9
LAorICAgIHsgMjksIC0xIH0sCisgICAgeyA1NSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDksIDI1NiB9LAorICAgIHsgMTAsIDI1NiB9
LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1NiwgLTEgfSwKLSAgICB7IDE3LCAtMSB9LAorICAg
IHsgNTcsIC0xIH0sCisgICAgeyAxOCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDE2LCAtMSB9LAorICAgIHsgMTcsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKLSAgICB7IDM0LCAtMSB9LAorICAgIHsgMzUsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00MDcsMTQgKzQxMCwx
NCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyMiwgLTEgfSwK
KyAgICB7IDIzLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAyLCAtMSB9LAotICAgIHsg
MzYsIC0xIH0sCisgICAgeyAzNywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDE5LCAtMSB9LAorICAgIHsgMjAsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00Mjcs
MTUgKzQzMCwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAy
NiwgLTEgfSwKKyAgICB7IDI3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0MSwgLTEg
fSwKKyAgICB7IDQyLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDUx
LCAtMSB9LAorICAgIHsgNTIsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NDMsMjIgKzQ0NiwyMiBAQCBzdGF0aWMgY29uc3Qgc3Ry
dWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0NiwgLTEgfSwKKyAgICB7IDQ3LCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDEwLCAtMSB9LAorICAgIHsgMTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAg
eyA2MiwgLTEgfSwKKyAgICB7IDYzLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjUsIC0xIH0sCi0gICAgeyAzMCwgLTEgfSwK
KyAgICB7IDI2LCAtMSB9LAorICAgIHsgMzEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NjgsOSArNDcxLDkgQEAgc3RhdGljIGNv
bnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTQsIDI1OSB9LAorICAgIHsgMTUsIDI1
OSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1NywgLTEgfSwKKyAgICB7IDU4LCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDc5
LDExICs0ODIsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
MzIsIDI2NiB9LAorICAgIHsgMzMsIDI2NiB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxNSwg
LTEgfSwKKyAgICB7IDE2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA2MCwgLTEgfSwK
KyAgICB7IDYxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LApAQCAtNTAyLDExICs1MDUsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21w
YWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgNDUsIC0xIH0sCisgICAgeyA0NiwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDExLCAtMSB9LAor
ICAgIHsgMTIsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCkBAIC01MTUsNTMgKzUxOCw1NCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBh
Y3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCi0gICAgeyA1NSwgLTEgfSwKKyAgICB7IDU2LCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA4LCAtMSB9LAorICAg
IHsgOSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDcsIDI2MyB9LAotICAgIHsgNywgMjYyIH0s
CisgICAgeyA0OCwgMjYzIH0sCisgICAgeyA4LCAyNjIgfSwKICAgICB7IC0xLCAtMSB9LAotICAg
IHsgNTgsIC0xIH0sCisgICAgeyA1OSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDEzLCAtMSB9LAorICAgIHsgMTQsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKLSAgICB7IDIzLCAtMSB9LAorICAgIHsgMjQsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjksIC0xIH0sCisgICAgeyAzMCwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IDMsIC0xIH0sCi0gICAgeyA0OSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAogICAgIHsgNTAsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDUxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjEsIDI1OCB9LAotICAgIHsg
MjQsIDI2NCB9LAotICAgIHsgMjcsIDI2MSB9LAotICAgIHsgMzEsIC0xIH0sCi0gICAgeyAzOCwg
LTEgfSwKLSAgICB7IDQwLCAtMSB9LAotICAgIHsgNDIsIC0xIH0sCi0gICAgeyA0OCwgLTEgfSwK
LSAgICB7IDUzLCAtMSB9LAotICAgIHsgNTksIC0xIH0sCi0gICAgeyA2MywgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgMjIsIDI1OCB9LAorICAgIHsgMjUsIDI2NCB9LAorICAgIHsgMjgs
IDI2MSB9LAorICAgIHsgMzIsIC0xIH0sCisgICAgeyAzOSwgLTEgfSwKKyAgICB7IDQxLCAtMSB9
LAorICAgIHsgNDMsIC0xIH0sCisgICAgeyA0OSwgLTEgfSwKKyAgICB7IDU0LCAtMSB9LAorICAg
IHsgNjAsIC0xIH0sCisgICAgeyA2NCwgLTEgfSwKKyAgICB7IDY1LCAtMSB9LAogfTsKIAogCkBA
IC01NzYsNiArNTgwLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2Jh
bAogI2VuZGlmCiAgICAgeyAiVGVzdENFUmVhY3Rpb25zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxP
YmplY3RfVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RfVGVz
dENFUmVhY3Rpb25zQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXJDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RDU1NQcm9wZXJ0eSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVz
dENhbGxUcmFjZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbFRyYWNlckNv
bnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3Ip
IH0gfSwKICNpZiBFTkFCTEUoVEVTVF9DT05ESVRJT05BTCkKICAgICB7ICJUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbGJhY2tJbnRlcmZh
Y2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbGJhY2tJbnRlcmZhY2VD
b25zdHJ1Y3RvcikgfSB9LApAQCAtNjUwLDcgKzY1NSw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU1Rlc3RHbG9iYWwKICAgICB7ICJyZWd1bGFyT3BlcmF0aW9uIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX3JlZ3VsYXJPcGVyYXRpb24pLCAoaW50cHRyX3QpICgx
KSB9IH0sCiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEdsb2JhbE9iamVjdFRh
YmxlID0geyA2NSwgMjU1LCB0cnVlLCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmluZm8oKSwgSlNUZXN0
R2xvYmFsT2JqZWN0VGFibGVWYWx1ZXMsIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXggfTsK
K3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGUgPSB7IDY2LCAy
NTUsIHRydWUsIEpTVGVzdEdsb2JhbE9iamVjdDo6aW5mbygpLCBKU1Rlc3RHbG9iYWxPYmplY3RU
YWJsZVZhbHVlcywgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleCB9OwogLyogSGFzaCB0YWJs
ZSBmb3IgY29uc3RydWN0b3IgKi8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dEdsb2JhbE9iamVjdENvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CkBAIC05NjcsNiArOTcyLDI5
IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RHbG9iYWwKICAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RfVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXIiKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVj
dF9UZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVO
VVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0Q1NTUHJv
cGVydHk6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0
aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3RvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmpl
Y3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yR2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdENTU1Byb3BlcnR5Iik7
Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RfVGVzdENTU1By
b3BlcnR5Q29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNo
YWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJUZXN0Q1NTUHJvcGVydHkiKSwgc3RybGVuKCJUZXN0Q1NTUHJvcGVydHki
KSksIHZhbHVlKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEdsb2Jh
bE9iamVjdF9UZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVj
dG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJUZXN0Q1NTUHJvcGVydHkiKTsKK30KKwogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEds
b2JhbE9iamVjdF9UZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlz
aW9uIDI3MzYyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Mjc4LDcgKzQyNzgsNyBAQCBTdHJpbmcgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQCiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFs
dWUocHJvcGVydHlJRCk7CiB9CiAKLUV4Y2VwdGlvbk9yPGJvb2w+IENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJp
bmcmLCBib29sKQorRXhjZXB0aW9uT3I8dm9pZD4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
OjpzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGJvb2wp
CiB7CiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5oCShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3ICsxMzMsNyBA
QCBwcml2YXRlOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldENzc1RleHQoY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlJRCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUlEKSBmaW5hbDsKLSAgICBFeGNlcHRpb25Pcjxib29sPiBzZXRQcm9w
ZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1w
b3J0YW50KSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQcm9wZXJ0eUludGVybmFs
KENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50KSBmaW5h
bDsKICAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25z
dCBmaW5hbDsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQ
cm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0ID0gVXBkYXRlTGF5b3V0KSBjb25zdDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDI3MzYy
NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjE2LDIzICsyMTYsMzkgQEAgQ1NTUHJvcGVydHlJRCBDU1NTdHlsZURlY2xh
cmF0aW9uOjpnZXRDUwogICAgIHJldHVybiBwcm9wZXJ0eUlERnJvbUphdmFTY3JpcHRDU1NQcm9w
ZXJ0eU5hbWUocHJvcGVydHlOYW1lLCBudWxscHRyKTsKIH0KIAorRXhjZXB0aW9uT3I8dm9pZD4g
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCwgU3RyaW5nIHZhbHVlKQoreworICAgIGJvb2wgaW1wb3J0YW50ID0gZmFs
c2U7CisgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2hvdWxkUmVzcGVjdFByaW9y
aXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKCkpIHsKKyAgICAgICAgYXV0byBpbXBvcnRhbnRJbmRl
eCA9IHZhbHVlLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgiIWltcG9ydGFudCIpOworICAgICAgICBp
ZiAoaW1wb3J0YW50SW5kZXggJiYgaW1wb3J0YW50SW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAg
ICAgICAgIGltcG9ydGFudCA9IHRydWU7CisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmxlZnQo
aW1wb3J0YW50SW5kZXggLSAxKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBzZXRQ
cm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIFdURk1vdmUodmFsdWUpLCBpbXBvcnRhbnQpOwor
fQorCiBjb25zdCBTZXR0aW5ncyogQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0dGluZ3MoKSBjb25z
dAogewogICAgIHJldHVybiBwYXJlbnRFbGVtZW50KCkgPyAmcGFyZW50RWxlbWVudCgpLT5kb2N1
bWVudCgpLnNldHRpbmdzKCkgOiBudWxscHRyOwogfQogCi1PcHRpb25hbDxWYXJpYW50PFN0cmlu
ZywgZG91YmxlPj4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21TdHJp
bmcmIHByb3BlcnR5TmFtZSkKKyNpZiBFTkFCTEUoTEVHQUNZX05BTUVEX0lURU1fSU1QTEVNRU5U
QVRJT05fRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTikKKworU3RyaW5nIENTU1N0eWxlRGVjbGFy
YXRpb246Om5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAg
Ly8gRklYTUU6IFRoaXMgaXMgZ29pbmcgdG8gcmV0dXJuIGluY29ycmVjdCByZXN1bHRzIGZvciBj
c3MgcHJvcGVydGllcyBkaXNhYmxlZCBieSBTZXR0aW5ncyBpZiBzZXR0aW5ncygpIHJldHVybnMg
bnVsbHB0ci4KICAgICBhdXRvIHByb3BlcnR5SUQgPSBwcm9wZXJ0eUlERnJvbUphdmFTY3JpcHRD
U1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lLCBzZXR0aW5ncygpKTsKICAgICBpZiAoIXByb3Bl
cnR5SUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IH07
CiAKICAgICBpZiAoYXV0byB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChwcm9w
ZXJ0eUlEKSkKLSAgICAgICAgcmV0dXJuIFZhcmlhbnQ8U3RyaW5nLCBkb3VibGU+IHsgdmFsdWUt
PmNzc1RleHQoKSB9OworICAgICAgICByZXR1cm4gdmFsdWUtPmNzc1RleHQoKTsKIAotICAgIC8v
IElmIHRoZSBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSAoc3VjaCBhcyAicGFkZGlu
ZyIpLCBpdCBjYW4gb25seSBiZSBhY2Nlc3NlZCB1c2luZyBnZXRQcm9wZXJ0eVZhbHVlLgotICAg
IHJldHVybiBWYXJpYW50PFN0cmluZywgZG91YmxlPiB7IGdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChwcm9wZXJ0eUlEKSB9OworICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBw
cm9wZXJ0eSAoc3VjaCBhcyAicGFkZGluZyIpLCBpdCBjYW4gb25seSBiZSBhY2Nlc3NlZCB1c2lu
ZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwuCisgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChwcm9wZXJ0eUlEKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6c2V0TmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmIHByb3BlcnR5TmFtZSwgU3Ry
aW5nIHZhbHVlLCBib29sJiBwcm9wZXJ0eVN1cHBvcnRlZCkKQEAgLTI0NSwyMSArMjYxLDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cwogICAgIH0KIAogICAgIHBy
b3BlcnR5U3VwcG9ydGVkID0gdHJ1ZTsKLQotICAgIGJvb2wgaW1wb3J0YW50ID0gZmFsc2U7Ci0g
ICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2hvdWxkUmVzcGVjdFByaW9yaXR5SW5D
U1NBdHRyaWJ1dGVTZXR0ZXJzKCkpIHsKLSAgICAgICAgYXV0byBpbXBvcnRhbnRJbmRleCA9IHZh
bHVlLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgiIWltcG9ydGFudCIpOwotICAgICAgICBpZiAoaW1w
b3J0YW50SW5kZXggJiYgaW1wb3J0YW50SW5kZXggIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAg
IGltcG9ydGFudCA9IHRydWU7Ci0gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmxlZnQoaW1wb3J0
YW50SW5kZXggLSAxKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGF1dG8gc2V0UHJvcGVydHlJ
bnRlcm5hbFJlc3VsdCA9IHNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHlJRCwgdmFsdWUsIGlt
cG9ydGFudCk7Ci0gICAgaWYgKHNldFByb3BlcnR5SW50ZXJuYWxSZXN1bHQuaGFzRXhjZXB0aW9u
KCkpCi0gICAgICAgIHJldHVybiBzZXRQcm9wZXJ0eUludGVybmFsUmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKTsKLQotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIHNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChwcm9wZXJ0eUlELCBXVEZNb3ZlKHZhbHVlKSk7CiB9CiAKIFZlY3RvcjxBdG9tU3Ry
aW5nPiBDU1NTdHlsZURlY2xhcmF0aW9uOjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3QK
QEAgLTI4Nyw2ICsyODksNyBAQCBWZWN0b3I8QXRvbVN0cmluZz4gQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQorI2VuZGlmCiAKIFN0cmluZyBDU1NTdHlsZURl
Y2xhcmF0aW9uOjpjc3NGbG9hdCgpCiB7CkBAIC0yOTUsMTAgKzI5OCw3IEBAIFN0cmluZyBDU1NT
dHlsZURlY2xhcmF0aW9uOjpjc3NGbG9hdCgpCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENTU1N0eWxl
RGVjbGFyYXRpb246OnNldENzc0Zsb2F0KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgYXV0
byByZXN1bHQgPSBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQsIHZhbHVlLCBm
YWxzZSAvKiBpbXBvcnRhbnQgKi8pOwotICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0g
ICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgIHJldHVybiB7IH07
CisgICAgcmV0dXJuIHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgdmFsdWUs
IGZhbHNlIC8qIGltcG9ydGFudCAqLyk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZURlY2xhcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMjczNjI3KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYs
OCBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIENTU1ZhbHVlIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rp
b24gc2hvdWxkIG5vdCBiZSBleHBvc2VkIHRvIHRoZSB3ZWIgYXMgaXQgbWF5IGJlIHVzZWQgYnkg
bXVsdGlwbGUgZG9jdW1lbnRzIGF0IHRoZSBzYW1lIHRpbWUuCiAgICAgdmlydHVhbCBSZWZQdHI8
Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSA9IDA7
CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
SUQpID0gMDsKLSAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPGJvb2w+IHNldFByb3BlcnR5SW50ZXJu
YWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpID0g
MDsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFByb3BlcnR5SW50ZXJuYWwoQ1NT
UHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpID0gMDsKKyAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJ
RCwgU3RyaW5nKTsKIAogICAgIHZpcnR1YWwgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNv
cHlQcm9wZXJ0aWVzKCkgY29uc3QgPSAwOwogCkBAIC03NCwxMiArNzUsMTYgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBjb25zdCBTZXR0aW5ncyogc2V0dGluZ3MoKSBjb25zdDsKIAotICAgIC8v
IEJpbmRpbmdzIHN1cHBvcnQuCi0gICAgT3B0aW9uYWw8VmFyaWFudDxTdHJpbmcsIGRvdWJsZT4+
IG5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJik7CisjaWYgRU5BQkxFKExFR0FDWV9OQU1FRF9J
VEVNX0lNUExFTUVOVEFUSU9OX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04pCisgICAgLy8gTmFt
ZWQtaXRlbSBiYXNlZCBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0LgorICAgIFN0cmluZyBuYW1lZEl0
ZW0oY29uc3QgQXRvbVN0cmluZyYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE5hbWVkSXRl
bShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBTdHJpbmcgdmFsdWUsIGJvb2wmIHByb3BlcnR5U3Vw
cG9ydGVkKTsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygp
IGNvbnN0OworI2VuZGlmCiAKKyAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBwYXNzIGluIGEg
U2V0dGluZ3MmIHRvIHdvcmsgY29ycmVjdGx5LgogICAgIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIGdl
dENTU1Byb3BlcnR5SURGcm9tSmF2YVNjcmlwdFByb3BlcnR5TmFtZShjb25zdCBBdG9tU3RyaW5n
Jik7CisKIHByb3RlY3RlZDoKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKCkgPSBkZWZhdWx0Owog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwJKHJl
dmlzaW9uIDI3MzYyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9u
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKQEAgLTIwLDM4ICsyMCwzOCBAQAogCiBbCiAgICAgRXhwb3J0TWFjcm89V0VC
Q09SRV9FWFBPUlQsCi0gICAgRGVmYXVsdERlZmluZU93blByb3BlcnR5LAogICAgIEdlbmVyYXRl
SXNSZWFjaGFibGUsCiAgICAgSlNDdXN0b21IZWFkZXIsCiAgICAgSlNDdXN0b21NYXJrRnVuY3Rp
b24sCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCi0gICAgRXhwb3NlZD1XaW5kb3cKKyAgICBF
eHBvc2VkPVdpbmRvdywKKyNpZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTkFNRURfSVRFTV9JTVBM
RU1FTlRBVElPTl9GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OKSAmJiBFTkFCTEVfTEVHQUNZX05B
TUVEX0lURU1fSU1QTEVNRU5UQVRJT05fRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTgorICAgIERl
ZmF1bHREZWZpbmVPd25Qcm9wZXJ0eQorI2VuZGlmCiBdIGludGVyZmFjZSBDU1NTdHlsZURlY2xh
cmF0aW9uIHsKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBET01TdHJpbmcgY3NzVGV4dDsK
LQotICAgIERPTVN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKERPTVN0cmluZyBwcm9wZXJ0eU5hbWUp
OwotCi0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHJlbW92
ZVByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwotICAgIERPTVN0cmluZz8gZ2V0UHJv
cGVydHlQcmlvcml0eShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKLQotICAgIFtDRVJlYWN0aW9u
cywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBzZXRQcm9wZXJ0eShET01TdHJpbmcgcHJv
cGVydHlOYW1lLCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZSwgb3B0
aW9uYWwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgcHJpb3JpdHkgPSAiIik7
CisgICAgLy8gRklYTUU6IFRoZXNlIGF0dHJpYnV0ZXMgYW5kIGZ1bmN0aW9ucyBzaG91bGQgdXNl
IENTU09NU3RyaW5nIG5vdCBET01TdHJpbmcuCiAKKyAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0
ZSBET01TdHJpbmcgY3NzVGV4dDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBsZW5ndGg7CiAgICAgZ2V0dGVyIERPTVN0cmluZyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgp
OworICAgIERPTVN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKERPTVN0cmluZyBwcm9wZXJ0eSk7Cisg
ICAgLy8gRklYTUU6IFRoZSByZXR1cm4gdmFsdWUgb2YgJ2dldFByb3BlcnR5UHJpb3JpdHknIHNo
b3VsZCBub3QgYmUgbnVsbGFibGUuCisgICAgRE9NU3RyaW5nPyBnZXRQcm9wZXJ0eVByaW9yaXR5
KERPTVN0cmluZyBwcm9wZXJ0eSk7CisgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5kZWZpbmVkIHNldFByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eSwgW0xlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWUsIG9wdGlvbmFsIFtMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIHByaW9yaXR5ID0gIiIpOworICAgIFtDRVJlYWN0aW9ucywgTWF5
VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZW1vdmVQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVy
dHkpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlPyBwYXJlbnRSdWxlOwotCiAgICAg
W0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJp
bmcgY3NzRmxvYXQ7CiAKKyAgICAvLyBOb24tc3RhbmRhcmQuCiAgICAgRE9NU3RyaW5nPyBnZXRQ
cm9wZXJ0eVNob3J0aGFuZChvcHRpb25hbCBET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKICAgICBi
b29sZWFuIGlzUHJvcGVydHlJbXBsaWNpdChvcHRpb25hbCBET01TdHJpbmcgcHJvcGVydHlOYW1l
KTsKKyAgICBEZXByZWNhdGVkQ1NTT01WYWx1ZT8gZ2V0UHJvcGVydHlDU1NWYWx1ZShET01TdHJp
bmcgcHJvcGVydHlOYW1lKTsKIAorI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9OQU1FRF9JVEVN
X0lNUExFTUVOVEFUSU9OX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04pICYmIEVOQUJMRV9MRUdB
Q1lfTkFNRURfSVRFTV9JTVBMRU1FTlRBVElPTl9GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OCiAg
ICAgLy8gVXNlIG5hbWVkIGdldHRlcnMvc2V0dGVycyBmb3IgYWxsIHN1cHBvcnQgQ1NTIHByb3Bl
cnR5IG5hbWVzLiBUaGUgc3BlYyBzYXlzCiAgICAgLy8gdGhlc2Ugc2hvdWxkIGJlIG5vcm1hbCBh
dHRyaWJ1dGVzLCBidXQgdGhlcmUgYXJlIHRvbyBtYW55IGNvbWJpbmF0aW9ucyB3aXRoCi0gICAg
Ly8gcHJlZml4ZXMgZm9yIHRoaXMgdG8gYmUgcHJhY3RpY2FsLiBJZiB3ZSByZW1vdmUgbGVnYWN5
IGFsaWFzZXMsIHdlIHNob3VsZAotICAgIC8vIHJlY29uc2lkZXIgdGhpcyBkZWNpc2lvbi4KLSAg
ICBnZXR0ZXIgKERPTVN0cmluZyBvciBkb3VibGUpIChET01TdHJpbmcgbmFtZSk7CisgICAgLy8g
cHJlZml4ZXMgZm9yIHRoaXMgdG8gYmUgcHJhY3RpY2FsIHdpdGggY3VycmVudCBjb2RlIGdlbmVy
YXRpb24uCisgICAgZ2V0dGVyIERPTVN0cmluZyAoRE9NU3RyaW5nIG5hbWUpOwogICAgIFtDRVJl
YWN0aW9ucywgQ2FsbE5hbWVkU2V0dGVyT25seUZvclN1cHBvcnRlZFByb3BlcnRpZXNdIHNldHRl
ciB1bmRlZmluZWQgKERPTVN0cmluZyBuYW1lLCBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERP
TVN0cmluZyB2YWx1ZSk7Ci0KLSAgICAvLyBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLCBhbmQg
d2Ugd291bGQgbGlrZSB0byBkcm9wIHN1cHBvcnQgZm9yIGl0IHNvbWVkYXkKLSAgICBEZXByZWNh
dGVkQ1NTT01WYWx1ZT8gZ2V0UHJvcGVydHlDU1NWYWx1ZShET01TdHJpbmcgcHJvcGVydHlOYW1l
KTsKKyNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzA4LDIyICszMDgsMjIgQEAgU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6ZwogICAgIGlmICghcmVsYXRlZFZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIHJlbGF0ZWRWYWx1ZTsKICAgICAKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0
dXJuIHsgfTsKIH0KIAotRXhjZXB0aW9uT3I8Ym9vbD4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCitFeGNlcHRpb25Pcjx2b2lkPiBQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCkKIHsg
Ci0gICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7Cisg
ICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUgeyB0aGlzIH07CiAg
ICAgaWYgKCF3aWxsTXV0YXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGJvb2wg
Y2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBp
bXBvcnRhbnQsIGNzc1BhcnNlckNvbnRleHQoKSk7Ci0KLSAgICBkaWRNdXRhdGUoY2hhbmdlZCA/
IFByb3BlcnR5Q2hhbmdlZCA6IE5vQ2hhbmdlcyk7CisgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBpZiAoY2hhbmdlZCkKKyAgICBpZiAobV9wcm9wZXJ0eVNldC0+c2V0UHJvcGVydHkocHJvcGVy
dHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyQ29udGV4dCgpKSkgeworICAgICAgICBk
aWRNdXRhdGUoUHJvcGVydHlDaGFuZ2VkKTsKICAgICAgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVl
TXV0YXRpb25SZWNvcmQoKTsKLSAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9IGVsc2UKKyAgICAg
ICAgZGlkTXV0YXRlKE5vQ2hhbmdlcyk7CisgICAgICAgIAorICAgIHJldHVybiB7IH07CiB9CiAK
IFJlZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTU09NKENTU1ZhbHVlKiBpbnRlcm5hbFZhbHVlKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24uaAkocmV2aXNpb24gMjczNjI3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBA
IHByaXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcm
KSBmaW5hbDsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUlEKSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5SUQpIGZpbmFsOwotICAgIEV4Y2VwdGlvbk9yPGJvb2w+IHNldFByb3Bl
cnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBv
cnRhbnQpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFByb3BlcnR5SW50ZXJuYWwo
Q1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpIGZpbmFs
OwogICAgIAogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllcygp
IGNvbnN0IGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCShyZXZpc2lvbiAyNzM2
MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwJKHdvcmtpbmcgY29weSkKQEAg
LTEzNTgsMyArMTM1OCwxNTUgQEAgaWYgKG5vdCAkZ3BlcmYpIHsKICAgICAkZ3BlcmYgPSAkRU5W
e0dQRVJGfSA/ICRFTlZ7R1BFUkZ9IDogImdwZXJmIjsKIH0KIHN5c3RlbSgiXCIkZ3BlcmZcIiAt
LWtleS1wb3NpdGlvbnM9XCIqXCIgLUQgLW4gLXMgMiBDU1NQcm9wZXJ0eU5hbWVzLmdwZXJmIC0t
b3V0cHV0LWZpbGU9Q1NTUHJvcGVydHlOYW1lcy5jcHAiKSA9PSAwIHx8IGRpZSAiY2FsbGluZyBn
cGVyZiBmYWlsZWQ6ICQ/IjsKKworIyBHZW5lcmF0ZSBDU1NTdHlsZURlY2xhcmF0aW9uK1Byb3Bl
cnR5TmFtZXMuaWRsCisKKyMgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNjc3MtcHJv
cGVydHktdG8taWRsLWF0dHJpYnV0ZQorc3ViIGNzc1Byb3BlcnR5VG9JRExBdHRyaWJ1dGUoJCQk
KQoreworICAgIG15ICRwcm9wZXJ0eSA9IHNoaWZ0OworICAgIG15ICRsb3dlcmNhc2VGaXJzdCA9
IHNoaWZ0OworICAgIG15ICR1cHBlcmNhc2VGaXJzdCA9IHNoaWZ0OworCisgICAgbXkgJG91dHB1
dCA9ICIiOworICAgIG15ICR1cHBlcmNhc2VOZXh0ID0gJHVwcGVyY2FzZUZpcnN0OworCisgICAg
aWYgKCRsb3dlcmNhc2VGaXJzdCkgeworICAgICAgICAkcHJvcGVydHkgPSBzdWJzdHIoJHByb3Bl
cnR5LCAxKTsKKyAgICB9CisKKyAgICBmb3JlYWNoIG15ICRjaGFyYWN0ZXIgKHNwbGl0IC8vLCAk
cHJvcGVydHkpIHsKKyAgICAgICAgaWYgKCRjaGFyYWN0ZXIgZXEgIi0iKSB7CisgICAgICAgICAg
ICAkdXBwZXJjYXNlTmV4dCA9IDE7CisgICAgICAgIH0gZWxzaWYgKCR1cHBlcmNhc2VOZXh0KSB7
CisgICAgICAgICAgICAkdXBwZXJjYXNlTmV4dCA9IDA7CisgICAgICAgICAgICAkb3V0cHV0IC49
IHVjICRjaGFyYWN0ZXI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkb3V0cHV0IC49
ICRjaGFyYWN0ZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gJG91dHB1dDsKK30K
KworbXkgJW5hbWVzQW5kQWxpYXNlc1RvTmFtZTsKK2ZvcmVhY2ggbXkgJG5hbWUgKEBuYW1lcykg
eworICAgIGlmIChncmVwIHsgJF8gZXEgJG5hbWUgfSBAaW50ZXJuYWxQcm9wcmVydGllcykgewor
ICAgICAgICBuZXh0OworICAgIH0KKyAgICAkbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lfSA9
ICRuYW1lOworICAgIGZvciBteSAkYWxpYXMgKEB7JG5hbWVUb0FsaWFzZXN7JG5hbWV9fSkgewor
ICAgICAgICAkbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRhbGlhc30gPSAkbmFtZTsKKyAgICB9Cit9
CitteSBAbmFtZXNBbmRBbGlhc2VzID0gc29ydCBrZXlzKCVuYW1lc0FuZEFsaWFzZXNUb05hbWUp
OworCitvcGVuIENTU19TVFlMRV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwsICI+Iiwg
IkNTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5pZGwiIG9yIGRpZSAiQ291bGQgbm90
IG9wZW4gQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmlkbCBmb3Igd3JpdGluZ1xu
IjsKK3ByaW50IENTU19TVFlMRV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwgPDwgIkVP
RiI7CisvLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSAkaW5wdXRG
aWxlIGJ5IHRoZSBtYWtlcHJvcC5wbCBzY3JpcHQuIERvIG5vdCBlZGl0IGl0LgorCit0eXBlZGVm
IFVTVlN0cmluZyBDU1NPTVN0cmluZzsKKworcGFydGlhbCBpbnRlcmZhY2UgQ1NTU3R5bGVEZWNs
YXJhdGlvbiB7CisKKyNpZiAhZGVmaW5lZChFTkFCTEVfTEVHQUNZX05BTUVEX0lURU1fSU1QTEVN
RU5UQVRJT05fRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTikgfHwgIUVOQUJMRV9MRUdBQ1lfTkFN
RURfSVRFTV9JTVBMRU1FTlRBVElPTl9GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OCisKK0VPRgor
CitwcmludCBDU1NfU1RZTEVfREVDTEFSQVRJT05fUFJPUEVSVFlfTkFNRVNfSURMIDw8ICJFT0Yi
OworICAgIC8vIEZvciBlYWNoIENTUyBwcm9wZXJ0eSBwcm9wZXJ0eSB0aGF0IGlzIGEgc3VwcG9y
dGVkIENTUyBwcm9wZXJ0eSwgdGhlIGZvbGxvd2luZworICAgIC8vIHBhcnRpYWwgaW50ZXJmYWNl
IGFwcGxpZXMgd2hlcmUgY2FtZWwtY2FzZWQgYXR0cmlidXRlIGlzIG9idGFpbmVkIGJ5IHJ1bm5p
bmcgdGhlCisgICAgLy8gQ1NTIHByb3BlcnR5IHRvIElETCBhdHRyaWJ1dGUgYWxnb3JpdGhtIGZv
ciBwcm9wZXJ0eS4KKyAgICAvLyBFeGFtcGxlOiBmb250LXNpemUgLT4gZWxlbWVudC5zdHlsZS5m
b250U2l6ZQorICAgIC8vIEV4YW1wbGU6IC13ZWJraXQtdHJhbnNmb3JtIC0+IGVsZW1lbnQuc3R5
bGUuV2Via2l0VHJhbnNmb3JtCisgICAgLy8gW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nXSBDU1NPTVN0cmluZyBfY2FtZWxfY2FzZWRfYXR0cmlidXRlOwor
RU9GCisKK2ZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChAbmFtZXNBbmRBbGlhc2VzKSB7CisgICAg
bXkgJGNhbWVsQ2FzZWRBdHRyaWJ1dGVOYW1lID0gY3NzUHJvcGVydHlUb0lETEF0dHJpYnV0ZSgk
bmFtZU9yQWxpYXMsIDAsIDApOworICAgIG15ICRuYW1lID0gJG5hbWVzQW5kQWxpYXNlc1RvTmFt
ZXskbmFtZU9yQWxpYXN9OworICAgIG15ICRwcm9wZXJ0eUlkID0gJG5hbWVUb0lkeyRuYW1lc0Fu
ZEFsaWFzZXNUb05hbWV7JG5hbWV9fTsKKworICAgIG15IEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVl
cyA9ICgiQ1NTUHJvcGVydHk9JHtwcm9wZXJ0eUlkfSIpOworICAgIHB1c2goQGV4dGVuZGVkQXR0
cmlidXRlVmFsdWVzLCAiRW5hYmxlZEJ5U2V0dGluZz0ke3NldHRpbmdzRmxhZ3N7JG5hbWV9fSIp
IGlmICRzZXR0aW5nc0ZsYWdzeyRuYW1lfTsKKyAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZh
bHVlcywgIkVuYWJsZWRBdFJ1bnRpbWU9JHtydW50aW1lRmxhZ3N7JG5hbWV9fSIpIGlmICRydW50
aW1lRmxhZ3N7JG5hbWV9OworICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZXMgPSBqb2luKCIsICIs
IEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyk7CisKKyAgICBwcmludCBDU1NfU1RZTEVfREVDTEFS
QVRJT05fUFJPUEVSVFlfTkFNRVNfSURMICIgICAgW0NFUmVhY3Rpb25zLCAke2V4dGVuZGVkQXR0
cmlidXRlc31dIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09NU3RyaW5n
ICR7Y2FtZWxDYXNlZEF0dHJpYnV0ZU5hbWV9O1xuIjsKK30KKworcHJpbnQgQ1NTX1NUWUxFX0RF
Q0xBUkFUSU9OX1BST1BFUlRZX05BTUVTX0lETCA8PCAiRU9GIjsKKworICAgIC8vIEZvciBlYWNo
IENTUyBwcm9wZXJ0eSBwcm9wZXJ0eSB0aGF0IGlzIGEgc3VwcG9ydGVkIENTUyBwcm9wZXJ0eSBh
bmQgdGhhdCBiZWdpbnMKKyAgICAvLyB3aXRoIHRoZSBzdHJpbmcgLXdlYmtpdC0sIHRoZSBmb2xs
b3dpbmcgcGFydGlhbCBpbnRlcmZhY2UgYXBwbGllcyB3aGVyZSB3ZWJraXQtY2FzZWQKKyAgICAv
LyBhdHRyaWJ1dGUgaXMgb2J0YWluZWQgYnkgcnVubmluZyB0aGUgQ1NTIHByb3BlcnR5IHRvIElE
TCBhdHRyaWJ1dGUgYWxnb3JpdGhtIGZvcgorICAgIC8vIHByb3BlcnR5LCB3aXRoIHRoZSBsb3dl
cmNhc2UgZmlyc3QgZmxhZyBzZXQuCisgICAgLy8gRXhhbXBsZTogLXdlYmtpdC10cmFuc2Zvcm0g
LT4gZWxlbWVudC5zdHlsZS53ZWJraXRUcmFuc2Zvcm0KKyAgICAvLyBbQ0VSZWFjdGlvbnNdIGF0
dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09NU3RyaW5nIF93ZWJraXRfY2Fz
ZWRfYXR0cmlidXRlOworRU9GCisKK2ZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChncmVwIHsgJF8g
PX4gL15cLXdlYmtpdFwtLyB9IEBuYW1lc0FuZEFsaWFzZXMpIHsKKyAgICBteSAkd2Via2l0Q2Fz
ZWRBdHRyaWJ1dGVOYW1lID0gY3NzUHJvcGVydHlUb0lETEF0dHJpYnV0ZSgkbmFtZU9yQWxpYXMs
IDEsIDApOworICAgIG15ICRuYW1lID0gJG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZU9yQWxp
YXN9OworICAgIG15ICRwcm9wZXJ0eUlkID0gJG5hbWVUb0lkeyRuYW1lc0FuZEFsaWFzZXNUb05h
bWV7JG5hbWV9fTsKKworICAgIG15IEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyA9ICgiQ1NTUHJv
cGVydHk9JHtwcm9wZXJ0eUlkfSIpOworICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVz
LCAiRW5hYmxlZEJ5U2V0dGluZz0ke3NldHRpbmdzRmxhZ3N7JG5hbWV9fSIpIGlmICRzZXR0aW5n
c0ZsYWdzeyRuYW1lfTsKKyAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVuYWJs
ZWRBdFJ1bnRpbWU9JHtydW50aW1lRmxhZ3N7JG5hbWV9fSIpIGlmICRydW50aW1lRmxhZ3N7JG5h
bWV9OworICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZXMgPSBqb2luKCIsICIsIEBleHRlbmRlZEF0
dHJpYnV0ZVZhbHVlcyk7CisKKyAgICBwcmludCBDU1NfU1RZTEVfREVDTEFSQVRJT05fUFJPUEVS
VFlfTkFNRVNfSURMICIgICAgW0NFUmVhY3Rpb25zLCAke2V4dGVuZGVkQXR0cmlidXRlc31dIGF0
dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09NU3RyaW5nICR7d2Via2l0Q2Fz
ZWRBdHRyaWJ1dGVOYW1lfTtcbiI7Cit9CisKK3ByaW50IENTU19TVFlMRV9ERUNMQVJBVElPTl9Q
Uk9QRVJUWV9OQU1FU19JREwgPDwgIkVPRiI7CisKKyAgICAvLyBGb3IgZWFjaCBDU1MgcHJvcGVy
dHkgcHJvcGVydHkgdGhhdCBpcyBhIHN1cHBvcnRlZCBDU1MgcHJvcGVydHksIGV4Y2VwdCBmb3IK
KyAgICAvLyBwcm9wZXJ0aWVzIHRoYXQgaGF2ZSBubyAiLSIgKFUrMDAyRCkgaW4gdGhlIHByb3Bl
cnR5IG5hbWUsIHRoZSBmb2xsb3dpbmcgcGFydGlhbAorICAgIC8vIGludGVyZmFjZSBhcHBsaWVz
IHdoZXJlIGRhc2hlZCBhdHRyaWJ1dGUgaXMgcHJvcGVydHkuCisgICAgLy8gRXhhbXBsZTogZm9u
dC1zaXplIC0+IGVsZW1lbnQuc3R5bGVbJ2ZvbnQtc2l6ZSddCisgICAgLy8gRXhhbXBsZTogLXdl
YmtpdC10cmFuc2Zvcm0gLT4gZWxlbWVudC5zdHlsZS5bJy13ZWJraXQtdHJhbnNmb3JtJ10KKyAg
ICAvLyBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENT
U09NU3RyaW5nIF9kYXNoZWRfYXR0cmlidXRlOworRU9GCitmb3JlYWNoIG15ICRuYW1lT3JBbGlh
cyAoZ3JlcCB7ICRfID1+IC9cLS8gfSBAbmFtZXNBbmRBbGlhc2VzKSB7CisgICAgbXkgJGRhc2hl
ZEF0dHJpYnV0ZU5hbWUgPSAkbmFtZU9yQWxpYXM7CisgICAgbXkgJG5hbWUgPSAkbmFtZXNBbmRB
bGlhc2VzVG9OYW1leyRuYW1lT3JBbGlhc307CisgICAgbXkgJHByb3BlcnR5SWQgPSAkbmFtZVRv
SWR7JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19OworCisgICAgbXkgQGV4dGVuZGVkQXR0
cmlidXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3BlcnR5SWR9Iik7CisgICAgcHVzaChA
ZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQnlTZXR0aW5nPSR7c2V0dGluZ3NGbGFn
c3skbmFtZX19IikgaWYgJHNldHRpbmdzRmxhZ3N7JG5hbWV9OworICAgIHB1c2goQGV4dGVuZGVk
QXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEF0UnVudGltZT0ke3J1bnRpbWVGbGFnc3skbmFtZX19
IikgaWYgJHJ1bnRpbWVGbGFnc3skbmFtZX07CisgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9
IGpvaW4oIiwgIiwgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzKTsKKworICAgIHByaW50IENTU19T
VFlMRV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwgIiAgICBbQ0VSZWFjdGlvbnMsICR7
ZXh0ZW5kZWRBdHRyaWJ1dGVzfV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10g
Q1NTT01TdHJpbmcgJHtkYXNoZWRBdHRyaWJ1dGVOYW1lfTtcbiI7Cit9CisKKyMgRXZlcnl0aGlu
ZyBiZWxvdyBoZXJlIGlzIG5vbi1zdGFuZGFyZC4KKworcHJpbnQgQ1NTX1NUWUxFX0RFQ0xBUkFU
SU9OX1BST1BFUlRZX05BTUVTX0lETCA8PCAiRU9GIjsKKworICAgIC8vIE5vbi1zdGFuZGFyZC4g
U3BlY2lhbCBjYXNlIHByb3BlcnRpZXMgc3RhcnRpbmcgd2l0aCAtZXB1Yi0gbGlrZSBpcyBkb25l
IGZvcgorICAgIC8vIC13ZWJraXQtLCB3aGVyZSBhdHRyaWJ1dGUgaXMgb2J0YWluZWQgYnkgcnVu
bmluZyB0aGUgQ1NTIHByb3BlcnR5IHRvIElETCBhdHRyaWJ1dGUKKyAgICAvLyBhbGdvcml0aG0g
Zm9yIHByb3BlcnR5LCB3aXRoIHRoZSBsb3dlcmNhc2UgZmlyc3QgZmxhZyBzZXQuCisgICAgLy8g
RXhhbXBsZTogLWVwdWItY2FwdGlvbi1zaWRlIC0+IGVsZW1lbnQuc3R5bGUuZXB1YkNhcHRpb25T
aWRlCitFT0YKK2ZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChncmVwIHsgJF8gPX4gL15cLWVwdWJc
LS8gfSBAbmFtZXNBbmRBbGlhc2VzKSB7CisgICAgbXkgJGVwdWJDYXNlZEF0dHJpYnV0ZU5hbWUg
PSBjc3NQcm9wZXJ0eVRvSURMQXR0cmlidXRlKCRuYW1lT3JBbGlhcywgMSwgMCk7CisgICAgbXkg
JG5hbWUgPSAkbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lT3JBbGlhc307CisgICAgbXkgJHBy
b3BlcnR5SWQgPSAkbmFtZVRvSWR7JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19OworCisg
ICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3BlcnR5
SWR9Iik7CisgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQnlTZXR0
aW5nPSR7c2V0dGluZ3NGbGFnc3skbmFtZX19IikgaWYgJHNldHRpbmdzRmxhZ3N7JG5hbWV9Owor
ICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEF0UnVudGltZT0ke3J1
bnRpbWVGbGFnc3skbmFtZX19IikgaWYgJHJ1bnRpbWVGbGFnc3skbmFtZX07CisgICAgbXkgJGV4
dGVuZGVkQXR0cmlidXRlcyA9IGpvaW4oIiwgIiwgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzKTsK
KworICAgIHByaW50IENTU19TVFlMRV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwgIiAg
ICBbQ0VSZWFjdGlvbnMsICR7ZXh0ZW5kZWRBdHRyaWJ1dGVzfV0gYXR0cmlidXRlIFtMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgJHtlcHViQ2FzZWRBdHRyaWJ1dGVOYW1lfTtc
biI7Cit9CisKK3ByaW50IENTU19TVFlMRV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwg
PDwgIkVPRiI7CisKKyNlbmRpZgorfTsKKworRU9GCisKK2Nsb3NlIENTU19TVFlMRV9ERUNMQVJB
VElPTl9QUk9QRVJUWV9OQU1FU19JREw7Cg==
</data>
<flag name="commit-queue"
          id="440719"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421764</attachid>
            <date>2021-02-27 17:52:20 -0800</date>
            <delta_ts>2021-02-28 18:05:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222517-20210227175219.patch</filename>
            <type>text/plain</type>
            <size>65311</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzM2MjYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAyLTI3ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYWx0ZXJuYXRlLCBub24tbmFtZWQtZ2V0dGVyIGJh
c2VkLCBpbXBsZW1lbnRhdGlvbiBvZiBDU1NTdHlsZURlY2xhcmF0aW9uIGJhY2sgaW50byBXZWJD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1
MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAgICBBZGQgbmV3IEVOQUJMRSBmbGFnIEVOQUJMRV9M
RUdBQ1lfTkFNRURfSVRFTV9JTVBMRU1FTlRBVElPTl9GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9O
IHdoaWNoIGluZGljYXRlcworICAgICAgICB0aGF0IHdlIHNob3VsZCB1c2UgdGhlIGluY29ycmVj
dCBsZWdhY3kgaW1wbGVtZW50YXRpbm8gb2YgcHJvcGVydHkgZ2V0dGVyL3NldHRlcnMgb2YgQ1NT
U3R5bGVEZWNsYXJhdGlvbi4KKyAgICAgICAgT25jZSB3ZSByZW1vdmUgdGhlIGNvbXBpbGUgdGlt
ZSBhbmQgYmluYXJ5IHNpemUgcmVncmVzc2lvbnMsIHdlIGNhbiBkaXNhYmxlIGFuZCByZW1vdmUg
dGhpcy4KKwogMjAyMS0wMi0yNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBCdW1wIGxpYnNvdXAzIHZlcnNpb24gdG8gMi45
OS4xCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgJKHJldmlzaW9uIDI3MzYyNikKKysrIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw2ICsz
NDgsMTAgQEAKICNkZWZpbmUgRU5BQkxFX0xBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQgMAogI2Vu
ZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfTEVHQUNZX05BTUVEX0lURU1fSU1QTEVNRU5UQVRJ
T05fRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTikKKyNkZWZpbmUgRU5BQkxFX0xFR0FDWV9OQU1F
RF9JVEVNX0lNUExFTUVOVEFUSU9OX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04gMQorI2VuZGlm
CisKICNpZiAhZGVmaW5lZChFTkFCTEVfTEVUVEVSUFJFU1MpCiAjZGVmaW5lIEVOQUJMRV9MRVRU
RVJQUkVTUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MzYyNykKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisy
MDIxLTAyLTI3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YWx0ZXJuYXRlLCBub24tbmFtZWQtZ2V0dGVyIGJhc2VkLCBpbXBsZW1lbnRhdGlvbiBvZiBDU1NT
dHlsZURlY2xhcmF0aW9uIGJhY2sgaW50byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1MTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZS1sYW5kcyBjaGFuZ2UgZnJvbSByMjY4NTY0IGJ1
dCBkaXNhYmxlZCBiZWhpbmQgYSBuZXcgRU5BQkxFIGZsYWcsIAorICAgICAgICAhRU5BQkxFKExF
R0FDWV9OQU1FRF9JVEVNX0lNUExFTUVOVEFUSU9OX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04p
LgorCisgICAgICAgIFJlcGxhY2UgbmFtZWQgZ2V0dGVyL3NldHRlciBiYXNlZCBpbXBsZW1lbnRh
dGlvbiBvZiBhY2Nlc3MgdG8gQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0eSB2YWx1ZXMKKyAg
ICAgICAgd2l0aCBhIGdlbmVyYXRlZCBwYXJ0aWFsIGludGVyZmFjZSB0aGF0IGxpc3RzIGFsbCB0
aGUgcHJvcGVydGllcyBleGFjdGx5LgorICAgICAgIAorICAgICAgICBUbyBrZWVwIHRoaW5ncyBj
b25zaXN0ZW50IHdpdGggZXhpc3RpbmcgYmVoYXZpb3IsIGluIGFkZGl0aW9uIHRvIHRoZSBzcGVj
J2QgcHJvcGVydGllcywgd2UgYWxzbworICAgICAgICBtYWludGFpbiBhZGRpdGlvbmFsIHByb3Bl
cnRpZXMgZm9yIGVwdWIgcHJlZml4ZWQgcHJvcGVydGllcy4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgIEdlbmVyYXRlIENTU1N0eWxlRGVj
bGFyYXRpb24rUHJvcGVydHlOYW1lcy5pZGwgYW5kIGVuc3VyZSBpdCBpcyBjb21waWxlIHRvZ2V0
aGVyIHdpdGggdGhlIG90aGVyCisgICAgICAgIGJpbmRpbmdzLgorCisgICAgICAgICogY3NzL21h
a2Vwcm9wLnBsOgorICAgICAgICBBZGQgZ2VuZXJhdGlvbiBvZiBDU1NTdHlsZURlY2xhcmF0aW9u
K1Byb3BlcnR5TmFtZXMuaWRsIGZyb20gQ1NTUHJvcGVydGllcy5qc29uLiBBZGQgY2hlY2tpbmcK
KyAgICAgICAgb2YgdGhlIGVuYWJsZSBmbGFnIHRvIGVuc3VyZSBpdCBpcyBub3QgY29tcGlsZWQg
YnkgZGVmYXVsdC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoVG9NZXRob2ROYW1lKToKKyAgICAgICAgRG9uJ3QgdHJhbnNmb3JtIG5h
bWVzIHRoYXQgc3RhcnQgd2l0aCBDU1NPTSB0byBlbnN1cmUgcHJvcGVydHkgbmFtZXMgYXJlIGNv
bnNpc3RlbnQuCisKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQm9keURlZmluaXRp
b24pOgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvbik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246CisgICAgICAgIEFk
ZCBpbml0aWFsIHN1cHBvcnQgZm9yIHRoZSBuZXcgQ1NTUHJvcGVydHkgZXh0ZW5kZWQgYXR0cmli
dXRlLiBPbmx5IHRoZSB0ZXN0cyBhbmQKKyAgICAgICAgdGhlIGRpc2FibGVkIGNvZGUgaW4gQ1NT
U3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmlkbCBjdXJyZW50bHkgdXNlIGl0LgorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0
b3JzLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJv
cGVydHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q1NTUHJvcGVydHkuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RDU1NQcm9wZXJ0eS5pZGw6IEFkZGVkLgorICAgICAgICBBZGQgdGVzdHMgZm9y
IHRoZSBuZXcgQ1NTUHJvcGVydHkgZXh0ZW5kZWQgYXR0cmlidXRlLgorCisgICAgICAgIChXZWJD
b3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwpOgor
ICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBj
c3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0
UHJvcGVydHlJbnRlcm5hbCk6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbi5oOgorICAgICAgICBSZW1vdmUgdW51c2VkIGJvb2wgcmV0dXJuIHZhbHVlIGZyb20g
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsIChpdCBnb2VzIGZyb20KKyAgICAgICAgRXhjZXB0aW9u
T3I8Ym9vbD4gdG8gRXhjZXB0aW9uT3I8dm9pZD4pIHRvIHNpbXBsaWZ5IHNvbWUgY2FsbGVycyB0
aGF0IG5vIGxvbmdlcgorICAgICAgICBuZWVkIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUuCisK
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgICogY3NzL0NT
U1N0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgRXh0cmFjdCBvdXQgc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsIHNvIGl0IGNhbiBiZSB1c2VkIGJ5IHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IKKyAg
ICAgICAgZm9yIENTU1Byb3BlcnR5IGF0dHJpYnV0ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5pZGw6CisgICAgICAgIE1vdmUgbmFtZWQgZ2V0dGVyL3NldHRlciBkZWNs
YXJhdGlvbnMgYW5kIERlZmF1bHREZWZpbmVPd25Qcm9wZXJ0eSBpbnNpZGUgb2YKKyAgICAgICAg
ZW5hYmxlIGZsYWdzIGNoZWNrcyBzbyB0aGF0IHdoZW4gaXQgaXMgZGlzYWJsZWQsIHdlIGRvbid0
IHVzZSB0aGVtLgorCiAyMDIxLTAyLTI3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgJ3BpeGVsJyBhbmQgJ3BvcycgQ1NTT00gcHJl
Zml4ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTkzMCw3ICsxOTMw
LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7V2ViQ29yZV9ERQogCiAjIEdlbmVy
YXRlIENTUyBwcm9wZXJ0eSBuYW1lcwogYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAk
e1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTUHJvcGVydGllcy5qc29uICR7V2ViQ29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmggJHtXZWJDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5TmFtZXMuY3BwICR7V2ViQ29yZV9ERVJJVkVEX1NP
VVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmdwZXJmICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9TdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuY3BwICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9TdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggJHtXZWJDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L1N0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwCisgICAg
T1VUUFVUICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0aWVzLmpzb24g
JHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5TmFtZXMuaCAke1dlYkNv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTUHJvcGVydHlOYW1lcy5jcHAgJHtXZWJDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5TmFtZXMuZ3BlcmYgJHtXZWJDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L1N0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAgJHtXZWJDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L1N0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCAke1dlYkNv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5j
cHAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1N0eWxlRGVjbGFyYXRpb24rUHJv
cGVydHlOYW1lcy5pZGwKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtXRUJDT1JFX0RJUn0vY3NzL21h
a2Vwcm9wLnBsCiAgICAgREVQRU5EUyAke1dlYkNvcmVfQ1NTX1BST1BFUlRZX05BTUVTfQogICAg
IFdPUktJTkdfRElSRUNUT1JZICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfQpAQCAtMTk0
MCw2ICsxOTQwLDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmNw
cCkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmNwcCkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZEZ1bmN0aW9ucy5jcHApCitsaXN0KEFQUEVORCBXZWJDb3JlX0lETF9GSUxFUyAke1dlYkNvcmVf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmlk
bCkKIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVEX0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElS
fS9jc3MvQ1NTUGFyc2VyLmNwcCBDU1NWYWx1ZUtleXdvcmRzLmgpCiAKICMgR2VuZXJhdGUgQ1NT
IHZhbHVlIGtleXdvcmRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjczNjI3KQorKysgU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTMsNiAr
Myw3IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWIKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0J5dGVMZW5ndGhRdWV1aW5nU3Ry
YXRlZ3lCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9DU1NQcm9wZXJ0eU5hbWVzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvQ1NTUHJvcGVydHlOYW1lcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NTdHlsZURlY2xhcmF0aW9uK1Byb3BlcnR5TmFtZXMu
aWRsCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1
ZUtleXdvcmRzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvQ1NTVmFsdWVLZXl3b3Jkcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9Db2xvckRhdGEuY3BwCkBAIC0zMDQsNiArMzA1LDggQEAgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNDU1NSdWxlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQ1NTUnVsZUxpc3QuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NTU1J1bGVMaXN0LmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9w
ZXJ0eU5hbWVzLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNDU1NTdHlsZURlY2xhcmF0aW9uK1Byb3BlcnR5TmFtZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDU1NTdHlsZURl
Y2xhcmF0aW9uLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQ1NTU3R5bGVSdWxlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShy
ZXZpc2lvbiAyNzM2MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjkxLDYgKzEyOTEsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAog
ICAgICQoV2ViQ29yZSkveG1sL1hQYXRoUmVzdWx0LmlkbCBcCiAgICAgJChXZWJDb3JlKS94bWwv
WFNMVFByb2Nlc3Nvci5pZGwgXAogICAgIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsIFwK
KyAgICBDU1NTdHlsZURlY2xhcmF0aW9uK1Byb3BlcnR5TmFtZXMuaWRsIFwKICMKIAogIyAtLS0t
LS0tLQpAQCAtMTM5MCw2ICsxMzkxLDcgQEAgYWxsIDogXAogICAgIFN0eWxlQnVpbGRlckdlbmVy
YXRlZC5jcHAgXAogICAgIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwIFwKICAg
ICBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggXAorICAgIENTU1N0eWxlRGVjbGFy
YXRpb24rUHJvcGVydHlOYW1lcy5pZGwgXAogICAgIFVzZXJBZ2VudFN0eWxlU2hlZXRzLmggXAog
ICAgIFdlYktpdEZvbnRGYW1pbHlOYW1lcy5jcHAgXAogICAgIFdlYktpdEZvbnRGYW1pbHlOYW1l
cy5oIFwKQEAgLTE0MTcsNiArMTQxOSw3IEBAIENTU19QUk9QRVJUWV9OQU1FX0ZJTEVTID0gXAog
ICAgIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAgXAogICAgIFN0eWxlUHJvcGVydHlTaG9ydGhh
bmRGdW5jdGlvbnMuY3BwIFwKICAgICBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmgg
XAorICAgIENTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5pZGwgXAogIwogQ1NTX1BS
T1BFUlRZX05BTUVfRklMRVNfUEFUVEVSTlMgPSAkKHN1YnN0IC4sJSwkKENTU19QUk9QRVJUWV9O
QU1FX0ZJTEVTKSkKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI3MzYyNykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTk3LDYgKzM5OTcsOSBAQCBzdWIgR2V0U2tpcFZUYWJsZVZhbGlkYXRpb25Gb3JJbnRlcmZh
Y2UKIHN1YiBUb01ldGhvZE5hbWUKIHsKICAgICBteSAkcGFyYW0gPSBzaGlmdDsKKworICAgIHJl
dHVybiAkcGFyYW0gaWYgJHBhcmFtID1+IC9eQ1NTT00vOworCiAgICAgbXkgJHJldCA9IGxjZmly
c3QoJHBhcmFtKTsKICAgICAkcmV0ID1+IHMvY1NTL2Nzcy8gaWYgJHJldCA9fiAvXmNTUy87CiAg
ICAgJHJldCA9fiBzL2RPTS9kb20vIGlmICRyZXQgPX4gL15kT00vOwpAQCAtNTMzMCw2ICs1MzMz
LDEzIEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW8KICAgICAgICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGNv
bmRpdGlvbmFsKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4g
SlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OiR7Y29uc3RydWN0b3JHZXR0ZXJ9KEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTtcbiIp
OwogICAgICAgICB9CisgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q1NTUHJvcGVydHl9KSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkNTU1Byb3BlcnR5TmFt
ZXMuaCJ9ID0gMTsKKyAgICAgICAgbXkgJHByb3BlcnR5SUQgPSAkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDU1NQcm9wZXJ0eX07CisKKyAgICAgICAgbXkgJHRvSlNFeHByZXNzaW9u
ID0gTmF0aXZlVG9KU1ZhbHVlVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2Us
ICJpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eSR7cHJvcGVydHlJRH0p
IiwgIip0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7XG4iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAoJHt0b0pTRXhwcmVzc2lvbn0pKTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICgk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWNoZWRBdHRyaWJ1dGV9KSB7CiAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUg
PSB0aGlzT2JqZWN0Lm1fIiAuICRhdHRyaWJ1dGUtPm5hbWUgLiAiLmdldCgpKVxuIik7CkBAIC01
NDc0LDYgKzU0ODQsMjEgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyQm9keURlZmluaXRp
bwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIo
JnRoaXNPYmplY3QsIHZhbHVlKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUodmFsdWUpO1xuXG4iKTsKICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHJldHVybiB0cnVlO1xuIik7CisgICAgfSBlbHNpZiAoJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q1NTUHJvcGVydHl9KSB7CisgICAgICAgICRpbXBsSW5j
bHVkZXN7IkNTU1Byb3BlcnR5TmFtZXMuaCJ9ID0gMTsKKworICAgICAgICBteSAkcHJvcGVydHlJ
RCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NTU1Byb3BlcnR5fTsKKworICAg
ICAgICBteSAkZXhjZXB0aW9uVGhyb3dlciA9IEdldEF0dHJpYnV0ZUV4Y2VwdGlvblRocm93ZXIo
JGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgIG15ICR0b05hdGl2ZUV4cHJlc3Npb24g
PSBKU1ZhbHVlVG9OYXRpdmUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSwgInZhbHVlIiwgJGF0dHJp
YnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9LCAiJmxleGljYWxHbG9iYWxP
YmplY3QiLCAibGV4aWNhbEdsb2JhbE9iamVjdCIsICJ0aGlzT2JqZWN0IiwgIip0aGlzT2JqZWN0
Lmdsb2JhbE9iamVjdCgpIiwgJGV4Y2VwdGlvblRocm93ZXIpOworCisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7XG4iKTsK
KyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gbmF0aXZlVmFsdWUgPSAke3Rv
TmF0aXZlRXhwcmVzc2lvbn07XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpO1xuIik7CisgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eSR7cHJvcGVydHlJRH0sIFdURk1vdmUobmF0aXZlVmFsdWUpKTtcbiIpOworICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgfSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgfSBlbHNpZiAoJGlzQ29uc3RydWN0b3Ip
IHsKICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnR5cGUtPm5hbWU7
CiAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29u
CShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lE
TEF0dHJpYnV0ZXMuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTAgQEAKICAgICAg
ICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L2N1c3RvbS1lbGVtZW50cy5odG1sI2NlcmVhY3Rpb25zIgogICAgICAgICAgICAgfQogICAgICAg
ICB9LAorICAgICAgICAiQ1NTUHJvcGVydHkiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJhdHRyaWJ1dGUiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXQorICAgICAg
ICB9LAogICAgICAgICAiQ2FjaGVkQXR0cmlidXRlIjogewogICAgICAgICAgICAgImNvbnRleHRz
QWxsb3dlZCI6IFsiYXR0cmlidXRlIl0KICAgICAgICAgfSwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRp
bmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAkocmV2aXNpb24gMjczNjI3KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0
b3JzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIHBhcnRpYWwgaW50ZXJmYWNl
IFRlc3RHbG9iYWxPYmplY3QgewogICAgIGF0dHJpYnV0ZSBUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1
Y3RvciBUZXN0Q0VSZWFjdGlvbnM7CiAgICAgYXR0cmlidXRlIFRlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyQ29uc3RydWN0b3IgVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI7CisgICAgYXR0cmli
dXRlIFRlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yIFRlc3RDU1NQcm9wZXJ0eTsKICAgICBhdHRy
aWJ1dGUgVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvciBUZXN0Q2FsbFRyYWNlcjsKICAgICBbQ29u
ZGl0aW9uYWw9VEVTVF9DT05ESVRJT05BTF0gYXR0cmlidXRlIFRlc3RDYWxsYmFja0ludGVyZmFj
ZUNvbnN0cnVjdG9yIFRlc3RDYWxsYmFja0ludGVyZmFjZTsKICAgICBhdHRyaWJ1dGUgVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IgVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAJ
KHJldmlzaW9uIDI3MzYyNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsy
NCw5IEBAIFdlYkRPTVRlc3RDRVJlYWN0aW9ucy5oOiAKIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXIuaDogCiBET01UZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oOiAKIFdlYkRPTVRlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyLmg6IAorSlNUZXN0Q1NTUHJvcGVydHkuaDogCitET01UZXN0
Q1NTUHJvcGVydHkuaDogCitXZWJET01UZXN0Q1NTUHJvcGVydHkuaDogCiBKU1Rlc3RDYWxsVHJh
Y2VyLmg6IAogRE9NVGVzdENhbGxUcmFjZXIuaDogCiBXZWJET01UZXN0Q2FsbFRyYWNlci5oOiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJvcGVy
dHkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0Q1NTUHJvcGVydHkuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJvcGVydHkuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCit0eXBlZGVmIFVTVlN0cmluZyBDU1NPTVN0cmlu
ZzsKKworWworICAgIEV4cG9zZWQ9VGVzdEdsb2JhbE9iamVjdAorXSBpbnRlcmZhY2UgVGVzdENT
U1Byb3BlcnR5IHsKKyAgICBbQ0VSZWFjdGlvbnMsIENTU1Byb3BlcnR5PVByb3BlcnR5TmFtZV0g
YXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVydHk7
Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENTU1Byb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJvcGVydHkuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOTggQEAKKy8qCisgICAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBo
YXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkh
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdENTU1Byb3BlcnR5Lmgi
CisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5h
bWVzLmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCIKKyNpbmNsdWRl
ICJET01Jc29TdWJzcGFjZXMuaCIKKyNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgorI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgor
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlND
bGllbnREYXRhLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2Vi
Q29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBBdHRyaWJ1dGVzCisKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdENTU1Byb3BlcnR5Q29uc3RydWN0b3IpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0Q1NTUHJvcGVydHlfcHJvcGVy
dHkpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0Q1NTUHJvcGVy
dHlfcHJvcGVydHkpOworCitjbGFzcyBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSBmaW5hbCA6
IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTVGVzdENTU1Byb3BlcnR5UHJv
dG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3RDU1NQ
cm9wZXJ0eVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdENTU1Byb3BlcnR5UHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVf
SU5GTzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vz
cz4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RDU1NQcm9wZXJ0eVByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNO
b25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSwgSlNUZXN0Q1NTUHJvcGVydHlQcm90
b3R5cGU6OkJhc2UpOworCit1c2luZyBKU1Rlc3RDU1NQcm9wZXJ0eURPTUNvbnN0cnVjdG9yID0g
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0Q1NTUHJvcGVydHk+OworCit0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q1NTUHJvcGVydHlET01Db25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q1NT
UHJvcGVydHlET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RDU1NQcm9wZXJ0eTo6cHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJUZXN0Q1NTUHJvcGVydHkiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDU1NQcm9wZXJ0
eURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Q1NTUHJvcGVydHkiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENTU1Byb3Bl
cnR5RE9NQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwor
CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGVU
YWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q1NT
UHJvcGVydHlDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJwcm9wZXJ0eSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q1NTUHJvcGVy
dHlfcHJvcGVydHkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3RDU1NQcm9wZXJ0eV9wcm9wZXJ0eSkgfSB9LAorfTsKKworY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
Q1NTUHJvcGVydHkiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlKSB9OworCit2b2lkIEpTVGVzdENT
U1Byb3BlcnR5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0
Q1NTUHJvcGVydHk6OmluZm8oKSwgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGVUYWJsZVZhbHVl
cywgKnRoaXMpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwor
fQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0Q1NTUHJvcGVydHk6OnNfaW5mbyA9IHsgIlRlc3RD
U1NQcm9wZXJ0eSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0Q1NTUHJvcGVydHkpIH07CisKK0pTVGVzdENTU1Byb3BlcnR5OjpKU1Rl
c3RDU1NQcm9wZXJ0eShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4mJiBpbXBsKQorICAgIDogSlNET01XcmFw
cGVyPFRlc3RDU1NQcm9wZXJ0eT4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0Q1NTUHJvcGVydHk6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRz
KHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3Rp
dmVET01PYmplY3QsIFRlc3RDU1NQcm9wZXJ0eT46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBt
YXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xh
c3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7CisKK30KKworSlNPYmplY3QqIEpTVGVz
dENTU1Byb3BlcnR5OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZTo6
Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90
eXBlKCkpKTsKK30KKworSlNPYmplY3QqIEpTVGVzdENTU1Byb3BlcnR5Ojpwcm90b3R5cGUoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRE
T01Qcm90b3R5cGU8SlNUZXN0Q1NTUHJvcGVydHk+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitK
U1ZhbHVlIEpTVGVzdENTU1Byb3BlcnR5OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVj
dG9yPEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0Q1NTUHJv
cGVydHk6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNUZXN0Q1NTUHJvcGVy
dHkqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RDU1NQcm9wZXJ0eSo+KGNlbGwpOwor
ICAgIHRoaXNPYmplY3QtPkpTVGVzdENTU1Byb3BlcnR5Ojp+SlNUZXN0Q1NTUHJvcGVydHkoKTsK
K30KKwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q1NTUHJvcGVydHkqIElETEF0dHJpYnV0ZTxK
U1Rlc3RDU1NQcm9wZXJ0eT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RDU1NQcm9wZXJ0eSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sK
KyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlw
ZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDU1NQcm9wZXJ0eTo6Z2V0
Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5n
bG9iYWxPYmplY3QoKSkpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q1NTUHJv
cGVydHlfcHJvcGVydHlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVGVzdENTU1Byb3BlcnR5JiB0aGlzT2JqZWN0KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQcm9w
ZXJ0eU5hbWUpKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q1NTUHJv
cGVydHlfcHJvcGVydHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0Q1NTUHJvcGVydHk+OjpnZXQ8anNUZXN0Q1NTUHJvcGVydHlfcHJvcGVy
dHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJwcm9wZXJ0eSIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVGVzdENTU1Byb3BlcnR5JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwor
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CisgICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVByb3BlcnR5
TmFtZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOworICAgIHJldHVybiB0cnVlOwor
fQorCitKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVy
dHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQoreworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0Q1NTUHJvcGVydHk+OjpzZXQ8c2V0SlNUZXN0Q1NTUHJvcGVydHlf
cHJvcGVydHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgInByb3BlcnR5Iik7Cit9CisKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENTU1Byb3Bl
cnR5OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0
YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1
dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q1NTUHJvcGVydHkuZ2V0KCkpCisgICAgICAgIHJl
dHVybiBzcGFjZTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENTU1Byb3BlcnR5PiB8fCAhSlNUZXN0Q1NTUHJvcGVy
dHk6Om5lZWRzRGVzdHJ1Y3Rpb24pOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q1NTUHJvcGVydHk+KQorICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDU1NQcm9wZXJ0eSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q1NTUHJvcGVydHkpOworICAgIGVsc2UKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q1NTUHJvcGVydHkgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3RDU1NQcm9wZXJ0eSk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RDU1NQcm9wZXJ0eS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKKyAgICB2b2lkICgqbXlWaXNpdE91dHB1dENvbnN0cmFpbnQpKEpTQzo6SlNDZWxsKiwgSlND
OjpTbG90VmlzaXRvciYpID0gSlNUZXN0Q1NTUHJvcGVydHk6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHM7CisgICAgdm9pZCAoKmpzQ2VsbFZpc2l0T3V0cHV0Q29uc3RyYWludCkoSlNDOjpKU0NlbGwq
LCBKU0M6OlNsb3RWaXNpdG9yJikgPSBKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50
czsKKyAgICBpZiAobXlWaXNpdE91dHB1dENvbnN0cmFpbnQgIT0ganNDZWxsVmlzaXRPdXRwdXRD
b25zdHJhaW50KQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5h
cHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAor
ICAgIHJldHVybiBzcGFjZTsKK30KKwordm9pZCBKU1Rlc3RDU1NQcm9wZXJ0eTo6YW5hbHl6ZUhl
YXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQoreworICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPihjZWxsKTsKKyAgICBhbmFseXpl
ci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsK
KyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICBh
bmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6YW5hbHl6ZUhl
YXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCitib29sIEpTVGVzdENTU1Byb3BlcnR5T3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiwgQWJzdHJhY3RTbG90VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNv
bikKK3sKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRv
cik7CisgICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIEpTVGVzdENTU1Byb3BlcnR5T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQoreworICAgIGF1dG8qIGpzVGVzdENTU1Byb3Bl
cnR5ID0gc3RhdGljX2Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPihoYW5kbGUuc2xvdCgpLT5hc0Nl
bGwoKSk7CisgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4o
Y29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDU1NQcm9wZXJ0eS0+
d3JhcHBlZCgpLCBqc1Rlc3RDU1NQcm9wZXJ0eSk7Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19J
TlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0
ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdU
ZXN0Q1NTUHJvcGVydHlAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIg
eyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTE1VGVzdENTU1Byb3BlcnR5RVtdOyB9CisjZW5k
aWYKKyNlbmRpZgorCitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDU1NQcm9w
ZXJ0eT4mJiBpbXBsKQoreworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorICAgIGNv
bnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRy
KCkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIg
PSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0Q1NTUHJvcGVydHlAV2ViQ29yZUBANkJAIik7CisjZWxz
ZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMTVUZXN0
Q1NTUHJvcGVydHlFWzJdOworI2VuZGlmCisKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3RDU1NQ
cm9wZXJ0eSBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisg
ICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFj
ZSBkZWZpbml0aW9uCisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3RD
U1NQcm9wZXJ0eT46OnZhbHVlLCAiVGVzdENTU1Byb3BlcnR5IGlzIG5vdCBwb2x5bW9ycGhpYyIp
OworCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1
c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdENTU1Byb3BlcnR5IGhhcyBzdWJjbGFz
c2VzLiBJZiBUZXN0Q1NTUHJvcGVydHkgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisg
ICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFRlc3RDU1NQcm9wZXJ0eSB5b3Ug
dG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tp
cFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRp
b24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRh
YmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0Q1NTUHJv
cGVydHk+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDU1NQcm9wZXJ0eSYgaW1wbCkKK3sKKyAgICByZXR1
cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCitU
ZXN0Q1NTUHJvcGVydHkqIEpTVGVzdENTU1Byb3BlcnR5Ojp0b1dyYXBwZWQoSlNDOjpWTSYgdm0s
IEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1cm4gJndy
YXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENTU1Byb3BlcnR5LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw5MyBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9w
ZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRlc3RDU1NQcm9wZXJ0eS5oIgor
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEpTVGVzdENTU1Byb3BlcnR5IDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0Q1NTUHJv
cGVydHk+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RDU1NQ
cm9wZXJ0eT47CisgICAgc3RhdGljIEpTVGVzdENTU1Byb3BlcnR5KiBjcmVhdGUoSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRl
c3RDU1NQcm9wZXJ0eT4mJiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0Q1NTUHJvcGVydHkq
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q1NTUHJvcGVydHk+
KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0Q1NTUHJvcGVydHkoc3RydWN0dXJlLCAq
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlv
bihnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAg
IHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xv
YmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZN
JiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgVGVzdENTU1Byb3BlcnR5KiB0b1dy
YXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBK
U0M6Ok5vbkFycmF5KTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0
cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3Rl
eHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsK
KyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSk7CisgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFw
QW5hbHl6ZXImKTsKK3Byb3RlY3RlZDoKKyAgICBKU1Rlc3RDU1NQcm9wZXJ0eShKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4mJik7CisKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpTVGVzdENTU1By
b3BlcnR5T3duZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGlj
OgorICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpBYnN0cmFjdFNsb3RWaXNpdG9yJiwgY29uc3Qg
Y2hhcioqKSBmaW5hbDsKKyAgICB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4sIHZvaWQqIGNvbnRleHQpIGZpbmFsOworfTsKKworaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93
bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdENTU1Byb3BlcnR5KikKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0Q1NTUHJvcGVydHlPd25lcj4gb3duZXI7
CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQqIHdyYXBwZXJLZXko
VGVzdENTU1Byb3BlcnR5KiB3cmFwcGFibGVPYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXBwYWJs
ZU9iamVjdDsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiwgVGVzdENTU1Byb3BlcnR5Jik7CitpbmxpbmUgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdENTU1Byb3BlcnR5KiBpbXBsKSB7IHJldHVybiBp
bXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpT
Qzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0Q1NTUHJvcGVydHk+JiYpOwor
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZlB0cjxUZXN0Q1NTUHJvcGVydHk+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNy
ZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25O
dWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBw
ZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdENTU1Byb3BlcnR5PiB7CisgICAgdXNpbmcgV3JhcHBlckNs
YXNzID0gSlNUZXN0Q1NTUHJvcGVydHk7CisgICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9
IFRlc3RDU1NQcm9wZXJ0eSo7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjczNjI3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKU1Rlc3QuaCIKICNpbmNs
dWRlICJKU1Rlc3RDRVJlYWN0aW9ucy5oIgogI2luY2x1ZGUgIkpTVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXIuaCIKKyNpbmNsdWRlICJKU1Rlc3RDU1NQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkpT
VGVzdENhbGxUcmFjZXIuaCIKICNpbmNsdWRlICJKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTVGVzdERPTUpJVC5oIgpAQCAtMTY1LDYgKzE2Niw4IEBA
IHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEcKIHN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEdsb2JhbE9iamVjdF9UZXN0Q0VSZWFjdGlvbnND
b25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9i
YWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rvcik7CiBzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rvcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENTU1Byb3BlcnR5Q29uc3RydWN0b3IpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0R2xvYmFsT2JqZWN0X1Rl
c3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yKTsKIHN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2Fs
bFRyYWNlckNvbnN0cnVjdG9yKTsKICNpZiBFTkFCTEUoVEVTVF9DT05ESVRJT05BTCkKQEAgLTI5
NCwxMyArMjk3LDEzIEBAIHVzaW5nIEpTVGVzdEdsb2JhbE9iamVjdERPTUNvbnN0cnVjdG9yID0K
IAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5k
ZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjddID0geworc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY4XSA9
IHsKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzksIC0xIH0sCisgICAgeyA0MCwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgMCwgLTEgfSwKICAgICB7IDQsIC0xIH0sCi0gICAgeyA0Mywg
LTEgfSwKKyAgICB7IDQ0LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LApAQCAtMzA4LDcgKzMxMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg
Q29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKLSAgICB7IDUyLCAtMSB9LAorICAgIHsgNTMsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zMTYsNyArMzE5
LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNjEsIC0xIH0s
CisgICAgeyA2MiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKQEAgLTMzMCwxNCArMzMzLDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29t
cGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKLSAgICB7IDMzLCAtMSB9LAorICAgIHsgMzQsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgNjQsIC0xIH0sCi0gICAgeyAxMiwgMjYwIH0sCisgICAg
eyA1LCAyNjcgfSwKKyAgICB7IDEzLCAyNjAgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM0NSwxMSArMzQ4LDExIEBAIHN0YXRpYyBjb25z
dCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDM3LCAtMSB9LAotICAgIHsgMTgsIDI1NyB9
LAotICAgIHsgNiwgLTEgfSwKKyAgICB7IDM4LCAtMSB9LAorICAgIHsgMTksIDI1NyB9LAorICAg
IHsgNywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDQsIC0xIH0sCisgICAgeyA0NSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
QEAgLTM1OCwyMCArMzYxLDIwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
LSAgICB7IDM1LCAtMSB9LAorICAgIHsgMzYsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyMCwgMjY1IH0sCisgICAgeyAyMSwgMjY1IH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNSwgLTEgfSwKKyAgICB7IDYsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBA
IC0zNzksMjcgKzM4MiwyNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXgg
SlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0g
ICAgeyAyOCwgLTEgfSwKLSAgICB7IDU0LCAtMSB9LAorICAgIHsgMjksIC0xIH0sCisgICAgeyA1
NSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAg
ICB7IDksIDI1NiB9LAorICAgIHsgMTAsIDI1NiB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1
NiwgLTEgfSwKLSAgICB7IDE3LCAtMSB9LAorICAgIHsgNTcsIC0xIH0sCisgICAgeyAxOCwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAg
ICB7IDE2LCAtMSB9LAorICAgIHsgMTcsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDM0LCAtMSB9
LAorICAgIHsgMzUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCkBAIC00MDcsMTQgKzQxMCwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENv
bXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCi0gICAgeyAyMiwgLTEgfSwKKyAgICB7IDIzLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAyLCAtMSB9LAotICAgIHsgMzYsIC0xIH0sCisgICAgeyAzNywgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IDE5LCAtMSB9LAorICAgIHsgMjAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00MjcsMTUgKzQzMCwxNSBAQCBzdGF0aWMgY29uc3Qg
c3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyNiwgLTEgfSwKKyAgICB7IDI3LCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0MSwgLTEgfSwKKyAgICB7IDQyLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDUxLCAtMSB9LAorICAgIHsgNTIsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NDMs
MjIgKzQ0NiwyMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0
NiwgLTEgfSwKKyAgICB7IDQ3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKLSAgICB7IDEwLCAtMSB9LAorICAgIHsgMTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA2MiwgLTEgfSwKKyAgICB7IDYzLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAg
IHsgMjUsIC0xIH0sCi0gICAgeyAzMCwgLTEgfSwKKyAgICB7IDI2LCAtMSB9LAorICAgIHsgMzEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CkBAIC00NjgsOSArNDcxLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4
IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgMTQsIDI1OSB9LAorICAgIHsgMTUsIDI1OSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAg
eyA1NywgLTEgfSwKKyAgICB7IDU4LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDc5LDExICs0ODIsMTEgQEAgc3RhdGljIGNvbnN0
IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzIsIDI2NiB9LAorICAgIHsgMzMsIDI2NiB9
LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxNSwgLTEgfSwKKyAgICB7IDE2LCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCi0gICAgeyA2MCwgLTEgfSwKKyAgICB7IDYxLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNTAyLDExICs1MDUs
MTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDUsIC0xIH0s
CisgICAgeyA0NiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKLSAgICB7IDExLCAtMSB9LAorICAgIHsgMTIsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC01MTUsNTMgKzUxOCw1
NCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1NSwgLTEgfSwK
KyAgICB7IDU2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAxLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCi0gICAgeyA4LCAtMSB9LAorICAgIHsgOSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAg
IHsgNDcsIDI2MyB9LAotICAgIHsgNywgMjYyIH0sCisgICAgeyA0OCwgMjYzIH0sCisgICAgeyA4
LCAyNjIgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNTgsIC0xIH0sCisgICAgeyA1OSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDEz
LCAtMSB9LAorICAgIHsgMTQsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDIzLCAtMSB9
LAorICAgIHsgMjQsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAg
IHsgMjksIC0xIH0sCisgICAgeyAzMCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDMsIC0xIH0sCi0gICAgeyA0OSwgLTEgfSwK
LSAgICB7IC0xLCAtMSB9LAogICAgIHsgNTAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7
IDUxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAotICAgIHsgMjEsIDI1OCB9LAotICAgIHsgMjQsIDI2NCB9LAotICAgIHsgMjcsIDI2MSB9
LAotICAgIHsgMzEsIC0xIH0sCi0gICAgeyAzOCwgLTEgfSwKLSAgICB7IDQwLCAtMSB9LAotICAg
IHsgNDIsIC0xIH0sCi0gICAgeyA0OCwgLTEgfSwKLSAgICB7IDUzLCAtMSB9LAotICAgIHsgNTks
IC0xIH0sCi0gICAgeyA2MywgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMjIsIDI1OCB9
LAorICAgIHsgMjUsIDI2NCB9LAorICAgIHsgMjgsIDI2MSB9LAorICAgIHsgMzIsIC0xIH0sCisg
ICAgeyAzOSwgLTEgfSwKKyAgICB7IDQxLCAtMSB9LAorICAgIHsgNDMsIC0xIH0sCisgICAgeyA0
OSwgLTEgfSwKKyAgICB7IDU0LCAtMSB9LAorICAgIHsgNjAsIC0xIH0sCisgICAgeyA2NCwgLTEg
fSwKKyAgICB7IDY1LCAtMSB9LAogfTsKIAogCkBAIC01NzYsNiArNTgwLDcgQEAgc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbAogI2VuZGlmCiAgICAgeyAiVGVzdENFUmVh
Y3Rpb25zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpIH0g
fSwKICAgICB7ICJUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0X1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RH
bG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvcikgfSB9LAor
ICAgIHsgIlRlc3RDU1NQcm9wZXJ0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RD
U1NQcm9wZXJ0eUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0
eUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdENhbGxUcmFjZXIiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdF9UZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0X1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3IpIH0gfSwKICNpZiBFTkFCTEUoVEVTVF9DT05E
SVRJT05BTCkKICAgICB7ICJUZXN0Q2FsbGJhY2tJbnRlcmZhY2UiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEds
b2JhbE9iamVjdF9UZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2Jh
bE9iamVjdF9UZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3RvcikgfSB9LApAQCAtNjUwLDcg
KzY1NSw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RHbG9iYWwKICAgICB7
ICJyZWd1bGFyT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX3Jl
Z3VsYXJPcGVyYXRpb24pLCAoaW50cHRyX3QpICgxKSB9IH0sCiB9OwogCi1zdGF0aWMgY29uc3Qg
SGFzaFRhYmxlIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlID0geyA2NSwgMjU1LCB0cnVlLCBKU1Rl
c3RHbG9iYWxPYmplY3Q6OmluZm8oKSwgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVWYWx1ZXMsIEpT
VGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXggfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNU
ZXN0R2xvYmFsT2JqZWN0VGFibGUgPSB7IDY2LCAyNTUsIHRydWUsIEpTVGVzdEdsb2JhbE9iamVj
dDo6aW5mbygpLCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZVZhbHVlcywgSlNUZXN0R2xvYmFsT2Jq
ZWN0VGFibGVJbmRleCB9OwogLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KIAogc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yVGFi
bGVWYWx1ZXNbXSA9CkBAIC05NjcsNiArOTcyLDI5IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU1Rlc3RHbG9iYWwKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9i
amVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXJDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIiKTsKIH0KIAorc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3Rv
ckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFs
T2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0Q1NTUHJvcGVydHk6OmdldENvbnN0cnVjdG9yKEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsK
K30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NT
UHJvcGVydHlDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0
X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiVGVzdENTU1Byb3BlcnR5Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RfVGVzdENTU1Byb3BlcnR5Q29uc3RydWN0b3JTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0Q1NTUHJvcGVy
dHkiKSwgc3RybGVuKCJUZXN0Q1NTUHJvcGVydHkiKSksIHZhbHVlKTsKK30KKworSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NTUHJvcGVydHlDb25z
dHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCit7CisgICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFs
T2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0Q1NTUHJvcGVydHkiKTsKK30KKwog
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbFRyYWNlckNv
bnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxH
bG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDI3MzYyNykKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Mjc4LDcgKzQyNzgsNyBAQCBTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQCiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWUocHJvcGVydHlJRCk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPGJvb2w+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJbnRl
cm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBib29sKQorRXhjZXB0aW9uT3I8dm9p
ZD4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKENTU1By
b3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGJvb2wpCiB7CiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCShyZXZpc2lvbiAyNzM2Mjcp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldENzc1RleHQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUmVmUHRyPENTU1Zh
bHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgZmluYWw7CiAg
ICAgU3RyaW5nIGdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSBmaW5hbDsK
LSAgICBFeGNlcHRpb25Pcjxib29sPiBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQs
IGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50KSBmaW5hbDsKKyAgICBFeGNlcHRp
b25Pcjx2b2lkPiBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50KSBmaW5hbDsKICAgICBSZWY8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25zdCBmaW5hbDsKIAogICAgIFJlZlB0cjxDU1NW
YWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0ID0g
VXBkYXRlTGF5b3V0KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDI3MzYyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDExICsyMTYsMjcg
QEAgQ1NTUHJvcGVydHlJRCBDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRDUwogICAgIHJldHVybiBw
cm9wZXJ0eUlERnJvbUphdmFTY3JpcHRDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lLCBudWxs
cHRyKTsKIH0KIAorRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgU3RyaW5nIHZhbHVl
KQoreworICAgIGJvb2wgaW1wb3J0YW50ID0gZmFsc2U7CisgICAgaWYgKERlcHJlY2F0ZWRHbG9i
YWxTZXR0aW5nczo6c2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKCkp
IHsKKyAgICAgICAgYXV0byBpbXBvcnRhbnRJbmRleCA9IHZhbHVlLmZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZSgiIWltcG9ydGFudCIpOworICAgICAgICBpZiAoaW1wb3J0YW50SW5kZXggJiYgaW1wb3J0
YW50SW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIGltcG9ydGFudCA9IHRydWU7Cisg
ICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmxlZnQoaW1wb3J0YW50SW5kZXggLSAxKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQs
IFdURk1vdmUodmFsdWUpLCBpbXBvcnRhbnQpOworfQorCiBjb25zdCBTZXR0aW5ncyogQ1NTU3R5
bGVEZWNsYXJhdGlvbjo6c2V0dGluZ3MoKSBjb25zdAogewogICAgIHJldHVybiBwYXJlbnRFbGVt
ZW50KCkgPyAmcGFyZW50RWxlbWVudCgpLT5kb2N1bWVudCgpLnNldHRpbmdzKCkgOiBudWxscHRy
OwogfQogCisjaWYgRU5BQkxFKExFR0FDWV9OQU1FRF9JVEVNX0lNUExFTUVOVEFUSU9OX0ZPUl9D
U1NfU1RZTEVfREVDTEFSQVRJT04pCisKIE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBkb3VibGU+
PiBDU1NTdHlsZURlY2xhcmF0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYgcHJvcGVy
dHlOYW1lKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGdvaW5nIHRvIHJldHVybiBpbmNvcnJl
Y3QgcmVzdWx0cyBmb3IgY3NzIHByb3BlcnRpZXMgZGlzYWJsZWQgYnkgU2V0dGluZ3MgaWYgc2V0
dGluZ3MoKSByZXR1cm5zIG51bGxwdHIuCkBAIC0yMzEsNyArMjQ3LDcgQEAgT3B0aW9uYWw8VmFy
aWFudDxTdHJpbmcsIGRvdWJsZT4+IENTU1N0eQogICAgIGlmIChhdXRvIHZhbHVlID0gZ2V0UHJv
cGVydHlDU1NWYWx1ZUludGVybmFsKHByb3BlcnR5SUQpKQogICAgICAgICByZXR1cm4gVmFyaWFu
dDxTdHJpbmcsIGRvdWJsZT4geyB2YWx1ZS0+Y3NzVGV4dCgpIH07CiAKLSAgICAvLyBJZiB0aGUg
cHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgKHN1Y2ggYXMgInBhZGRpbmciKSwgaXQg
Y2FuIG9ubHkgYmUgYWNjZXNzZWQgdXNpbmcgZ2V0UHJvcGVydHlWYWx1ZS4KKyAgICAvLyBJZiB0
aGUgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgKHN1Y2ggYXMgInBhZGRpbmciKSwg
aXQgY2FuIG9ubHkgYmUgYWNjZXNzZWQgdXNpbmcgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsLgog
ICAgIHJldHVybiBWYXJpYW50PFN0cmluZywgZG91YmxlPiB7IGdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChwcm9wZXJ0eUlEKSB9OwogfQogCkBAIC0yNDUsMjEgKzI2MSw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IENTU1N0eWxlRGVjbGFyYXRpb246OnMKICAgICB9CiAKICAgICBwcm9wZXJ0eVN1cHBv
cnRlZCA9IHRydWU7Ci0KLSAgICBib29sIGltcG9ydGFudCA9IGZhbHNlOwotICAgIGlmIChEZXBy
ZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRl
U2V0dGVycygpKSB7Ci0gICAgICAgIGF1dG8gaW1wb3J0YW50SW5kZXggPSB2YWx1ZS5maW5kSWdu
b3JpbmdBU0NJSUNhc2UoIiFpbXBvcnRhbnQiKTsKLSAgICAgICAgaWYgKGltcG9ydGFudEluZGV4
ICYmIGltcG9ydGFudEluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBpbXBvcnRhbnQg
PSB0cnVlOwotICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5sZWZ0KGltcG9ydGFudEluZGV4IC0g
MSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBhdXRvIHNldFByb3BlcnR5SW50ZXJuYWxSZXN1
bHQgPSBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQpOwot
ICAgIGlmIChzZXRQcm9wZXJ0eUludGVybmFsUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAg
ICByZXR1cm4gc2V0UHJvcGVydHlJbnRlcm5hbFJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0K
LSAgICByZXR1cm4geyB9OworICAgIHJldHVybiBzZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwocHJv
cGVydHlJRCwgV1RGTW92ZSh2YWx1ZSkpOwogfQogCiBWZWN0b3I8QXRvbVN0cmluZz4gQ1NTU3R5
bGVEZWNsYXJhdGlvbjo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0CkBAIC0yODcsNiAr
Mjg5LDcgQEAgVmVjdG9yPEF0b21TdHJpbmc+IENTU1N0eWxlRGVjbGFyYXRpb246OgogCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KKyNlbmRpZgogCiBTdHJpbmcgQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
Y3NzRmxvYXQoKQogewpAQCAtMjk1LDEwICsyOTgsNyBAQCBTdHJpbmcgQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6Y3NzRmxvYXQoKQogCiBFeGNlcHRpb25Pcjx2b2lkPiBDU1NTdHlsZURlY2xhcmF0aW9u
OjpzZXRDc3NGbG9hdChjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIGF1dG8gcmVzdWx0ID0g
c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUZsb2F0LCB2YWx1ZSwgZmFsc2UgLyogaW1w
b3J0YW50ICovKTsKLSAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1
cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICByZXR1cm4geyB9OworICAgIHJldHVy
biBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQsIHZhbHVlLCBmYWxzZSAvKiBp
bXBvcnRhbnQgKi8pOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURl
Y2xhcmF0aW9uLmgJKHJldmlzaW9uIDI3MzYyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZURlY2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDggQEAgcHVibGlj
OgogICAgIC8vIFRoZSBDU1NWYWx1ZSByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIHNob3VsZCBu
b3QgYmUgZXhwb3NlZCB0byB0aGUgd2ViIGFzIGl0IG1heSBiZSB1c2VkIGJ5IG11bHRpcGxlIGRv
Y3VtZW50cyBhdCB0aGUgc2FtZSB0aW1lLgogICAgIHZpcnR1YWwgUmVmUHRyPENTU1ZhbHVlPiBn
ZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgPSAwOwogICAgIHZpcnR1
YWwgU3RyaW5nIGdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSA9IDA7Ci0g
ICAgdmlydHVhbCBFeGNlcHRpb25Pcjxib29sPiBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3Bl
cnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50KSA9IDA7CisgICAgdmly
dHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQs
IGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50KSA9IDA7CisgICAgRXhjZXB0aW9u
T3I8dm9pZD4gc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQsIFN0cmluZyk7
CiAKICAgICB2aXJ0dWFsIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGll
cygpIGNvbnN0ID0gMDsKIApAQCAtNzQsMTIgKzc1LDE2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgY29uc3QgU2V0dGluZ3MqIHNldHRpbmdzKCkgY29uc3Q7CiAKLSAgICAvLyBCaW5kaW5ncyBz
dXBwb3J0LgorI2lmIEVOQUJMRShMRUdBQ1lfTkFNRURfSVRFTV9JTVBMRU1FTlRBVElPTl9GT1Jf
Q1NTX1NUWUxFX0RFQ0xBUkFUSU9OKQorICAgIC8vIE5hbWVkLWl0ZW0gYmFzZWQgaW1wbGVtZW50
YXRpb24gc3VwcG9ydC4KICAgICBPcHRpb25hbDxWYXJpYW50PFN0cmluZywgZG91YmxlPj4gbmFt
ZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXROYW1l
ZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgU3RyaW5nIHZhbHVlLCBib29sJiBwcm9wZXJ0
eVN1cHBvcnRlZCk7CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFt
ZXMoKSBjb25zdDsKKyNlbmRpZgogCisgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gcGFzcyBp
biBhIFNldHRpbmdzJiB0byB3b3JrIGNvcnJlY3RseS4KICAgICBzdGF0aWMgQ1NTUHJvcGVydHlJ
RCBnZXRDU1NQcm9wZXJ0eUlERnJvbUphdmFTY3JpcHRQcm9wZXJ0eU5hbWUoY29uc3QgQXRvbVN0
cmluZyYpOworCiBwcm90ZWN0ZWQ6CiAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbigpID0gZGVmYXVs
dDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRs
CShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJh
dGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNv
bT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCkBAIC0yMCwzOCArMjAsMzggQEAKIAogWwogICAgIEV4cG9ydE1hY3Jv
PVdFQkNPUkVfRVhQT1JULAotICAgIERlZmF1bHREZWZpbmVPd25Qcm9wZXJ0eSwKICAgICBHZW5l
cmF0ZUlzUmVhY2hhYmxlLAogICAgIEpTQ3VzdG9tSGVhZGVyLAogICAgIEpTQ3VzdG9tTWFya0Z1
bmN0aW9uLAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAotICAgIEV4cG9zZWQ9V2luZG93Cisg
ICAgRXhwb3NlZD1XaW5kb3csCisjaWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZX05BTUVEX0lURU1f
SU1QTEVNRU5UQVRJT05fRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTikgJiYgRU5BQkxFX0xFR0FD
WV9OQU1FRF9JVEVNX0lNUExFTUVOVEFUSU9OX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04KKyAg
ICBEZWZhdWx0RGVmaW5lT3duUHJvcGVydHkKKyNlbmRpZgogXSBpbnRlcmZhY2UgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiB7Ci0gICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNzc1Rl
eHQ7Ci0KLSAgICBET01TdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShET01TdHJpbmcgcHJvcGVydHlO
YW1lKTsKLQotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBy
ZW1vdmVQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKLSAgICBET01TdHJpbmc/IGdl
dFByb3BlcnR5UHJpb3JpdHkoRE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7Ci0KLSAgICBbQ0VSZWFj
dGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0UHJvcGVydHkoRE9NU3RyaW5n
IHByb3BlcnR5TmFtZSwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWUs
IG9wdGlvbmFsIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHByaW9yaXR5ID0g
IiIpOworICAgIC8vIEZJWE1FOiBUaGVzZSBhdHRyaWJ1dGVzIGFuZCBmdW5jdGlvbnMgc2hvdWxk
IHVzZSBDU1NPTVN0cmluZyBub3QgRE9NU3RyaW5nLgogCisgICAgW0NFUmVhY3Rpb25zXSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGNzc1RleHQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgbGVuZ3RoOwogICAgIGdldHRlciBET01TdHJpbmcgaXRlbSh1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKKyAgICBET01TdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShET01TdHJpbmcgcHJvcGVydHkp
OworICAgIC8vIEZJWE1FOiBUaGUgcmV0dXJuIHZhbHVlIG9mICdnZXRQcm9wZXJ0eVByaW9yaXR5
JyBzaG91bGQgbm90IGJlIG51bGxhYmxlLgorICAgIERPTVN0cmluZz8gZ2V0UHJvcGVydHlQcmlv
cml0eShET01TdHJpbmcgcHJvcGVydHkpOworICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBzZXRQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHksIFtMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlLCBvcHRpb25hbCBbTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmddIERPTVN0cmluZyBwcmlvcml0eSA9ICIiKTsKKyAgICBbQ0VSZWFjdGlvbnMs
IE1heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgcmVtb3ZlUHJvcGVydHkoRE9NU3RyaW5nIHBy
b3BlcnR5KTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ1NTUnVsZT8gcGFyZW50UnVsZTsKLQog
ICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9N
U3RyaW5nIGNzc0Zsb2F0OwogCisgICAgLy8gTm9uLXN0YW5kYXJkLgogICAgIERPTVN0cmluZz8g
Z2V0UHJvcGVydHlTaG9ydGhhbmQob3B0aW9uYWwgRE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7CiAg
ICAgYm9vbGVhbiBpc1Byb3BlcnR5SW1wbGljaXQob3B0aW9uYWwgRE9NU3RyaW5nIHByb3BlcnR5
TmFtZSk7CisgICAgRGVwcmVjYXRlZENTU09NVmFsdWU/IGdldFByb3BlcnR5Q1NTVmFsdWUoRE9N
U3RyaW5nIHByb3BlcnR5TmFtZSk7CiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTkFNRURf
SVRFTV9JTVBMRU1FTlRBVElPTl9GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OKSAmJiBFTkFCTEVf
TEVHQUNZX05BTUVEX0lURU1fSU1QTEVNRU5UQVRJT05fRk9SX0NTU19TVFlMRV9ERUNMQVJBVElP
TgogICAgIC8vIFVzZSBuYW1lZCBnZXR0ZXJzL3NldHRlcnMgZm9yIGFsbCBzdXBwb3J0IENTUyBw
cm9wZXJ0eSBuYW1lcy4gVGhlIHNwZWMgc2F5cwogICAgIC8vIHRoZXNlIHNob3VsZCBiZSBub3Jt
YWwgYXR0cmlidXRlcywgYnV0IHRoZXJlIGFyZSB0b28gbWFueSBjb21iaW5hdGlvbnMgd2l0aAot
ICAgIC8vIHByZWZpeGVzIGZvciB0aGlzIHRvIGJlIHByYWN0aWNhbC4gSWYgd2UgcmVtb3ZlIGxl
Z2FjeSBhbGlhc2VzLCB3ZSBzaG91bGQKLSAgICAvLyByZWNvbnNpZGVyIHRoaXMgZGVjaXNpb24u
CisgICAgLy8gcHJlZml4ZXMgZm9yIHRoaXMgdG8gYmUgcHJhY3RpY2FsIHdpdGggY3VycmVudCBj
b2RlIGdlbmVyYXRpb24uCiAgICAgZ2V0dGVyIChET01TdHJpbmcgb3IgZG91YmxlKSAoRE9NU3Ry
aW5nIG5hbWUpOwogICAgIFtDRVJlYWN0aW9ucywgQ2FsbE5hbWVkU2V0dGVyT25seUZvclN1cHBv
cnRlZFByb3BlcnRpZXNdIHNldHRlciB1bmRlZmluZWQgKERPTVN0cmluZyBuYW1lLCBbTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZSk7Ci0KLSAgICAvLyBUaGlzIG1ldGhv
ZCBpcyBkZXByZWNhdGVkLCBhbmQgd2Ugd291bGQgbGlrZSB0byBkcm9wIHN1cHBvcnQgZm9yIGl0
IHNvbWVkYXkKLSAgICBEZXByZWNhdGVkQ1NTT01WYWx1ZT8gZ2V0UHJvcGVydHlDU1NWYWx1ZShE
T01TdHJpbmcgcHJvcGVydHlOYW1lKTsKKyNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZp
c2lvbiAyNzM2MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA4LDIyICszMDgsMjIgQEAgU3RyaW5n
IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6ZwogICAgIGlmICghcmVsYXRlZFZhbHVl
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJlbGF0ZWRWYWx1ZTsKICAgICAKLSAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotRXhjZXB0aW9uT3I8Ym9vbD4gUHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCitF
eGNlcHRpb25Pcjx2b2lkPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3Bl
cnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBib29sIGltcG9ydGFudCkKIHsgCi0gICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11
dGF0aW9uU2NvcGUodGhpcyk7CisgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0
aW9uU2NvcGUgeyB0aGlzIH07CiAgICAgaWYgKCF3aWxsTXV0YXRlKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGJvb2wgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldFByb3BlcnR5
KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlckNvbnRleHQoKSk7Ci0KLSAg
ICBkaWRNdXRhdGUoY2hhbmdlZCA/IFByb3BlcnR5Q2hhbmdlZCA6IE5vQ2hhbmdlcyk7CisgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAoY2hhbmdlZCkKKyAgICBpZiAobV9wcm9wZXJ0eVNl
dC0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyQ29u
dGV4dCgpKSkgeworICAgICAgICBkaWRNdXRhdGUoUHJvcGVydHlDaGFuZ2VkKTsKICAgICAgICAg
bXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKLSAgICByZXR1cm4gY2hhbmdl
ZDsKKyAgICB9IGVsc2UKKyAgICAgICAgZGlkTXV0YXRlKE5vQ2hhbmdlcyk7CisgICAgICAgIAor
ICAgIHJldHVybiB7IH07CiB9CiAKIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTU09NKENTU1ZhbHVl
KiBpbnRlcm5hbFZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMjczNjI3KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0
Q3NzVGV4dChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IGdldFBy
b3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSBmaW5hbDsKICAgICBTdHJpbmcg
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpIGZpbmFsOwotICAgIEV4Y2Vw
dGlvbk9yPGJvb2w+IHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
Ym9vbCBpbXBvcnRhbnQpIGZpbmFsOwogICAgIAogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBjb3B5UHJvcGVydGllcygpIGNvbnN0IGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvbWFrZXByb3AucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL21ha2Vw
cm9wLnBsCShyZXZpc2lvbiAyNzM2MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3Au
cGwJKHdvcmtpbmcgY29weSkKQEAgLTEzNTgsMyArMTM1OCwxNTUgQEAgaWYgKG5vdCAkZ3BlcmYp
IHsKICAgICAkZ3BlcmYgPSAkRU5We0dQRVJGfSA/ICRFTlZ7R1BFUkZ9IDogImdwZXJmIjsKIH0K
IHN5c3RlbSgiXCIkZ3BlcmZcIiAtLWtleS1wb3NpdGlvbnM9XCIqXCIgLUQgLW4gLXMgMiBDU1NQ
cm9wZXJ0eU5hbWVzLmdwZXJmIC0tb3V0cHV0LWZpbGU9Q1NTUHJvcGVydHlOYW1lcy5jcHAiKSA9
PSAwIHx8IGRpZSAiY2FsbGluZyBncGVyZiBmYWlsZWQ6ICQ/IjsKKworIyBHZW5lcmF0ZSBDU1NT
dHlsZURlY2xhcmF0aW9uK1Byb3BlcnR5TmFtZXMuaWRsCisKKyMgaHR0cHM6Ly9kcmFmdHMuY3Nz
d2cub3JnL2Nzc29tLyNjc3MtcHJvcGVydHktdG8taWRsLWF0dHJpYnV0ZQorc3ViIGNzc1Byb3Bl
cnR5VG9JRExBdHRyaWJ1dGUoJCQkKQoreworICAgIG15ICRwcm9wZXJ0eSA9IHNoaWZ0OworICAg
IG15ICRsb3dlcmNhc2VGaXJzdCA9IHNoaWZ0OworICAgIG15ICR1cHBlcmNhc2VGaXJzdCA9IHNo
aWZ0OworCisgICAgbXkgJG91dHB1dCA9ICIiOworICAgIG15ICR1cHBlcmNhc2VOZXh0ID0gJHVw
cGVyY2FzZUZpcnN0OworCisgICAgaWYgKCRsb3dlcmNhc2VGaXJzdCkgeworICAgICAgICAkcHJv
cGVydHkgPSBzdWJzdHIoJHByb3BlcnR5LCAxKTsKKyAgICB9CisKKyAgICBmb3JlYWNoIG15ICRj
aGFyYWN0ZXIgKHNwbGl0IC8vLCAkcHJvcGVydHkpIHsKKyAgICAgICAgaWYgKCRjaGFyYWN0ZXIg
ZXEgIi0iKSB7CisgICAgICAgICAgICAkdXBwZXJjYXNlTmV4dCA9IDE7CisgICAgICAgIH0gZWxz
aWYgKCR1cHBlcmNhc2VOZXh0KSB7CisgICAgICAgICAgICAkdXBwZXJjYXNlTmV4dCA9IDA7Cisg
ICAgICAgICAgICAkb3V0cHV0IC49IHVjICRjaGFyYWN0ZXI7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAkb3V0cHV0IC49ICRjaGFyYWN0ZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gJG91dHB1dDsKK30KKworbXkgJW5hbWVzQW5kQWxpYXNlc1RvTmFtZTsKK2ZvcmVh
Y2ggbXkgJG5hbWUgKEBuYW1lcykgeworICAgIGlmIChncmVwIHsgJF8gZXEgJG5hbWUgfSBAaW50
ZXJuYWxQcm9wcmVydGllcykgeworICAgICAgICBuZXh0OworICAgIH0KKyAgICAkbmFtZXNBbmRB
bGlhc2VzVG9OYW1leyRuYW1lfSA9ICRuYW1lOworICAgIGZvciBteSAkYWxpYXMgKEB7JG5hbWVU
b0FsaWFzZXN7JG5hbWV9fSkgeworICAgICAgICAkbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRhbGlh
c30gPSAkbmFtZTsKKyAgICB9Cit9CitteSBAbmFtZXNBbmRBbGlhc2VzID0gc29ydCBrZXlzKCVu
YW1lc0FuZEFsaWFzZXNUb05hbWUpOworCitvcGVuIENTU19TVFlMRV9ERUNMQVJBVElPTl9QUk9Q
RVJUWV9OQU1FU19JREwsICI+IiwgIkNTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5p
ZGwiIG9yIGRpZSAiQ291bGQgbm90IG9wZW4gQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5h
bWVzLmlkbCBmb3Igd3JpdGluZ1xuIjsKK3ByaW50IENTU19TVFlMRV9ERUNMQVJBVElPTl9QUk9Q
RVJUWV9OQU1FU19JREwgPDwgIkVPRiI7CisvLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgZnJvbSAkaW5wdXRGaWxlIGJ5IHRoZSBtYWtlcHJvcC5wbCBzY3JpcHQuIERvIG5v
dCBlZGl0IGl0LgorCit0eXBlZGVmIFVTVlN0cmluZyBDU1NPTVN0cmluZzsKKworcGFydGlhbCBp
bnRlcmZhY2UgQ1NTU3R5bGVEZWNsYXJhdGlvbiB7CisKKyNpZiAhZGVmaW5lZChFTkFCTEVfTEVH
QUNZX05BTUVEX0lURU1fSU1QTEVNRU5UQVRJT05fRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTikg
fHwgIUVOQUJMRV9MRUdBQ1lfTkFNRURfSVRFTV9JTVBMRU1FTlRBVElPTl9GT1JfQ1NTX1NUWUxF
X0RFQ0xBUkFUSU9OCisKK0VPRgorCitwcmludCBDU1NfU1RZTEVfREVDTEFSQVRJT05fUFJPUEVS
VFlfTkFNRVNfSURMIDw8ICJFT0YiOworICAgIC8vIEZvciBlYWNoIENTUyBwcm9wZXJ0eSBwcm9w
ZXJ0eSB0aGF0IGlzIGEgc3VwcG9ydGVkIENTUyBwcm9wZXJ0eSwgdGhlIGZvbGxvd2luZworICAg
IC8vIHBhcnRpYWwgaW50ZXJmYWNlIGFwcGxpZXMgd2hlcmUgY2FtZWwtY2FzZWQgYXR0cmlidXRl
IGlzIG9idGFpbmVkIGJ5IHJ1bm5pbmcgdGhlCisgICAgLy8gQ1NTIHByb3BlcnR5IHRvIElETCBh
dHRyaWJ1dGUgYWxnb3JpdGhtIGZvciBwcm9wZXJ0eS4KKyAgICAvLyBFeGFtcGxlOiBmb250LXNp
emUgLT4gZWxlbWVudC5zdHlsZS5mb250U2l6ZQorICAgIC8vIEV4YW1wbGU6IC13ZWJraXQtdHJh
bnNmb3JtIC0+IGVsZW1lbnQuc3R5bGUuV2Via2l0VHJhbnNmb3JtCisgICAgLy8gW0NFUmVhY3Rp
b25zXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBDU1NPTVN0cmluZyBfY2Ft
ZWxfY2FzZWRfYXR0cmlidXRlOworRU9GCisKK2ZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChAbmFt
ZXNBbmRBbGlhc2VzKSB7CisgICAgbXkgJGNhbWVsQ2FzZWRBdHRyaWJ1dGVOYW1lID0gY3NzUHJv
cGVydHlUb0lETEF0dHJpYnV0ZSgkbmFtZU9yQWxpYXMsIDAsIDApOworICAgIG15ICRuYW1lID0g
JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZU9yQWxpYXN9OworICAgIG15ICRwcm9wZXJ0eUlk
ID0gJG5hbWVUb0lkeyRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5hbWV9fTsKKworICAgIG15IEBl
eHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyA9ICgiQ1NTUHJvcGVydHk9JHtwcm9wZXJ0eUlkfSIpOwor
ICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEJ5U2V0dGluZz0ke3Nl
dHRpbmdzRmxhZ3N7JG5hbWV9fSIpIGlmICRzZXR0aW5nc0ZsYWdzeyRuYW1lfTsKKyAgICBwdXNo
KEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVuYWJsZWRBdFJ1bnRpbWU9JHtydW50aW1lRmxh
Z3N7JG5hbWV9fSIpIGlmICRydW50aW1lRmxhZ3N7JG5hbWV9OworICAgIG15ICRleHRlbmRlZEF0
dHJpYnV0ZXMgPSBqb2luKCIsICIsIEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyk7CisKKyAgICBw
cmludCBDU1NfU1RZTEVfREVDTEFSQVRJT05fUFJPUEVSVFlfTkFNRVNfSURMICIgICAgW0NFUmVh
Y3Rpb25zLCAke2V4dGVuZGVkQXR0cmlidXRlc31dIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmddIENTU09NU3RyaW5nICR7Y2FtZWxDYXNlZEF0dHJpYnV0ZU5hbWV9O1xuIjsKK30K
KworcHJpbnQgQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OX1BST1BFUlRZX05BTUVTX0lETCA8PCAiRU9G
IjsKKworICAgIC8vIEZvciBlYWNoIENTUyBwcm9wZXJ0eSBwcm9wZXJ0eSB0aGF0IGlzIGEgc3Vw
cG9ydGVkIENTUyBwcm9wZXJ0eSBhbmQgdGhhdCBiZWdpbnMKKyAgICAvLyB3aXRoIHRoZSBzdHJp
bmcgLXdlYmtpdC0sIHRoZSBmb2xsb3dpbmcgcGFydGlhbCBpbnRlcmZhY2UgYXBwbGllcyB3aGVy
ZSB3ZWJraXQtY2FzZWQKKyAgICAvLyBhdHRyaWJ1dGUgaXMgb2J0YWluZWQgYnkgcnVubmluZyB0
aGUgQ1NTIHByb3BlcnR5IHRvIElETCBhdHRyaWJ1dGUgYWxnb3JpdGhtIGZvcgorICAgIC8vIHBy
b3BlcnR5LCB3aXRoIHRoZSBsb3dlcmNhc2UgZmlyc3QgZmxhZyBzZXQuCisgICAgLy8gRXhhbXBs
ZTogLXdlYmtpdC10cmFuc2Zvcm0gLT4gZWxlbWVudC5zdHlsZS53ZWJraXRUcmFuc2Zvcm0KKyAg
ICAvLyBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENT
U09NU3RyaW5nIF93ZWJraXRfY2FzZWRfYXR0cmlidXRlOworRU9GCisKK2ZvcmVhY2ggbXkgJG5h
bWVPckFsaWFzIChncmVwIHsgJF8gPX4gL15cLXdlYmtpdFwtLyB9IEBuYW1lc0FuZEFsaWFzZXMp
IHsKKyAgICBteSAkd2Via2l0Q2FzZWRBdHRyaWJ1dGVOYW1lID0gY3NzUHJvcGVydHlUb0lETEF0
dHJpYnV0ZSgkbmFtZU9yQWxpYXMsIDEsIDApOworICAgIG15ICRuYW1lID0gJG5hbWVzQW5kQWxp
YXNlc1RvTmFtZXskbmFtZU9yQWxpYXN9OworICAgIG15ICRwcm9wZXJ0eUlkID0gJG5hbWVUb0lk
eyRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5hbWV9fTsKKworICAgIG15IEBleHRlbmRlZEF0dHJp
YnV0ZVZhbHVlcyA9ICgiQ1NTUHJvcGVydHk9JHtwcm9wZXJ0eUlkfSIpOworICAgIHB1c2goQGV4
dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEJ5U2V0dGluZz0ke3NldHRpbmdzRmxhZ3N7
JG5hbWV9fSIpIGlmICRzZXR0aW5nc0ZsYWdzeyRuYW1lfTsKKyAgICBwdXNoKEBleHRlbmRlZEF0
dHJpYnV0ZVZhbHVlcywgIkVuYWJsZWRBdFJ1bnRpbWU9JHtydW50aW1lRmxhZ3N7JG5hbWV9fSIp
IGlmICRydW50aW1lRmxhZ3N7JG5hbWV9OworICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZXMgPSBq
b2luKCIsICIsIEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyk7CisKKyAgICBwcmludCBDU1NfU1RZ
TEVfREVDTEFSQVRJT05fUFJPUEVSVFlfTkFNRVNfSURMICIgICAgW0NFUmVhY3Rpb25zLCAke2V4
dGVuZGVkQXR0cmlidXRlc31dIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENT
U09NU3RyaW5nICR7d2Via2l0Q2FzZWRBdHRyaWJ1dGVOYW1lfTtcbiI7Cit9CisKK3ByaW50IENT
U19TVFlMRV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwgPDwgIkVPRiI7CisKKyAgICAv
LyBGb3IgZWFjaCBDU1MgcHJvcGVydHkgcHJvcGVydHkgdGhhdCBpcyBhIHN1cHBvcnRlZCBDU1Mg
cHJvcGVydHksIGV4Y2VwdCBmb3IKKyAgICAvLyBwcm9wZXJ0aWVzIHRoYXQgaGF2ZSBubyAiLSIg
KFUrMDAyRCkgaW4gdGhlIHByb3BlcnR5IG5hbWUsIHRoZSBmb2xsb3dpbmcgcGFydGlhbAorICAg
IC8vIGludGVyZmFjZSBhcHBsaWVzIHdoZXJlIGRhc2hlZCBhdHRyaWJ1dGUgaXMgcHJvcGVydHku
CisgICAgLy8gRXhhbXBsZTogZm9udC1zaXplIC0+IGVsZW1lbnQuc3R5bGVbJ2ZvbnQtc2l6ZSdd
CisgICAgLy8gRXhhbXBsZTogLXdlYmtpdC10cmFuc2Zvcm0gLT4gZWxlbWVudC5zdHlsZS5bJy13
ZWJraXQtdHJhbnNmb3JtJ10KKyAgICAvLyBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmddIENTU09NU3RyaW5nIF9kYXNoZWRfYXR0cmlidXRlOworRU9GCitm
b3JlYWNoIG15ICRuYW1lT3JBbGlhcyAoZ3JlcCB7ICRfID1+IC9cLS8gfSBAbmFtZXNBbmRBbGlh
c2VzKSB7CisgICAgbXkgJGRhc2hlZEF0dHJpYnV0ZU5hbWUgPSAkbmFtZU9yQWxpYXM7CisgICAg
bXkgJG5hbWUgPSAkbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lT3JBbGlhc307CisgICAgbXkg
JHByb3BlcnR5SWQgPSAkbmFtZVRvSWR7JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19Owor
CisgICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3Bl
cnR5SWR9Iik7CisgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQnlT
ZXR0aW5nPSR7c2V0dGluZ3NGbGFnc3skbmFtZX19IikgaWYgJHNldHRpbmdzRmxhZ3N7JG5hbWV9
OworICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEF0UnVudGltZT0k
e3J1bnRpbWVGbGFnc3skbmFtZX19IikgaWYgJHJ1bnRpbWVGbGFnc3skbmFtZX07CisgICAgbXkg
JGV4dGVuZGVkQXR0cmlidXRlcyA9IGpvaW4oIiwgIiwgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVz
KTsKKworICAgIHByaW50IENTU19TVFlMRV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwg
IiAgICBbQ0VSZWFjdGlvbnMsICR7ZXh0ZW5kZWRBdHRyaWJ1dGVzfV0gYXR0cmlidXRlIFtMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgJHtkYXNoZWRBdHRyaWJ1dGVOYW1lfTtc
biI7Cit9CisKKyMgRXZlcnl0aGluZyBiZWxvdyBoZXJlIGlzIG5vbi1zdGFuZGFyZC4KKworcHJp
bnQgQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OX1BST1BFUlRZX05BTUVTX0lETCA8PCAiRU9GIjsKKwor
ICAgIC8vIE5vbi1zdGFuZGFyZC4gU3BlY2lhbCBjYXNlIHByb3BlcnRpZXMgc3RhcnRpbmcgd2l0
aCAtZXB1Yi0gbGlrZSBpcyBkb25lIGZvcgorICAgIC8vIC13ZWJraXQtLCB3aGVyZSBhdHRyaWJ1
dGUgaXMgb2J0YWluZWQgYnkgcnVubmluZyB0aGUgQ1NTIHByb3BlcnR5IHRvIElETCBhdHRyaWJ1
dGUKKyAgICAvLyBhbGdvcml0aG0gZm9yIHByb3BlcnR5LCB3aXRoIHRoZSBsb3dlcmNhc2UgZmly
c3QgZmxhZyBzZXQuCisgICAgLy8gRXhhbXBsZTogLWVwdWItY2FwdGlvbi1zaWRlIC0+IGVsZW1l
bnQuc3R5bGUuZXB1YkNhcHRpb25TaWRlCitFT0YKK2ZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChn
cmVwIHsgJF8gPX4gL15cLWVwdWJcLS8gfSBAbmFtZXNBbmRBbGlhc2VzKSB7CisgICAgbXkgJGVw
dWJDYXNlZEF0dHJpYnV0ZU5hbWUgPSBjc3NQcm9wZXJ0eVRvSURMQXR0cmlidXRlKCRuYW1lT3JB
bGlhcywgMSwgMCk7CisgICAgbXkgJG5hbWUgPSAkbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1l
T3JBbGlhc307CisgICAgbXkgJHByb3BlcnR5SWQgPSAkbmFtZVRvSWR7JG5hbWVzQW5kQWxpYXNl
c1RvTmFtZXskbmFtZX19OworCisgICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJD
U1NQcm9wZXJ0eT0ke3Byb3BlcnR5SWR9Iik7CisgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVW
YWx1ZXMsICJFbmFibGVkQnlTZXR0aW5nPSR7c2V0dGluZ3NGbGFnc3skbmFtZX19IikgaWYgJHNl
dHRpbmdzRmxhZ3N7JG5hbWV9OworICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAi
RW5hYmxlZEF0UnVudGltZT0ke3J1bnRpbWVGbGFnc3skbmFtZX19IikgaWYgJHJ1bnRpbWVGbGFn
c3skbmFtZX07CisgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9IGpvaW4oIiwgIiwgQGV4dGVu
ZGVkQXR0cmlidXRlVmFsdWVzKTsKKworICAgIHByaW50IENTU19TVFlMRV9ERUNMQVJBVElPTl9Q
Uk9QRVJUWV9OQU1FU19JREwgIiAgICBbQ0VSZWFjdGlvbnMsICR7ZXh0ZW5kZWRBdHRyaWJ1dGVz
fV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgJHtlcHVi
Q2FzZWRBdHRyaWJ1dGVOYW1lfTtcbiI7Cit9CisKK3ByaW50IENTU19TVFlMRV9ERUNMQVJBVElP
Tl9QUk9QRVJUWV9OQU1FU19JREwgPDwgIkVPRiI7CisKKyNlbmRpZgorfTsKKworRU9GCisKK2Ns
b3NlIENTU19TVFlMRV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421786</attachid>
            <date>2021-02-28 18:05:27 -0800</date>
            <delta_ts>2021-03-01 13:27:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222517-20210228180526.patch</filename>
            <type>text/plain</type>
            <size>65310</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzM2MzMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAyLTI4ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYWx0ZXJuYXRlLCBub24tbmFtZWQtZ2V0dGVyIGJh
c2VkLCBpbXBsZW1lbnRhdGlvbiBvZiBDU1NTdHlsZURlY2xhcmF0aW9uIGJhY2sgaW50byBXZWJD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1
MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAgICBBZGQgbmV3IG9mZiBieSBkZWZhdWx0IEVOQUJM
RSBmbGFnIEVOQUJMRShBVFRSSUJVVEVfQkFTRURfUFJPUEVSVElFU19GT1JfQ1NTX1NUWUxFX0RF
Q0xBUkFUSU9OKSB3aGljaCBpbmRpY2F0ZXMKKyAgICAgICAgdGhhdCB3ZSBzaG91bGQgdXNlIHRo
ZSBuZXcgYXR0cmlidXRlIGJhc2VkIGltcGxlbWVudGF0aW9uIG9mIHByb3BlcnR5IGdldHRlci9z
ZXR0ZXJzIG9mIENTU1N0eWxlRGVjbGFyYXRpb24uCisgICAgICAgIE9uY2Ugd2UgcmVtb3ZlIHRo
ZSBjb21waWxlIHRpbWUgYW5kIGJpbmFyeSBzaXplIHJlZ3Jlc3Npb25zLCB3ZSBjYW4gZW5hYmxl
IHRoaXMgYW5kIHJlbW92ZSB0aGUgbWFjcm8uCisKIDIwMjEtMDItMjYgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQnVtcCBs
aWJzb3VwMyB2ZXJzaW9uIHRvIDIuOTkuMQpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1F
bmFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCShy
ZXZpc2lvbiAyNzM2MzMpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNDgsNiArMzQ4LDEwIEBACiAjZGVmaW5lIEVOQUJMRV9MQVlPVVRfRk9S
TUFUVElOR19DT05URVhUIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0FUVFJJQlVU
RV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04pCisjZGVmaW5lIEVO
QUJMRV9BVFRSSUJVVEVfQkFTRURfUFJPUEVSVElFU19GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9O
IDAKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0xFVFRFUlBSRVNTKQogI2RlZmluZSBF
TkFCTEVfTEVUVEVSUFJFU1MgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzM2
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw2NSBAQAorMjAyMS0wMi0yOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIGFsdGVybmF0ZSwgbm9uLW5hbWVkLWdldHRlciBiYXNlZCwgaW1wbGVtZW50YXRp
b24gb2YgQ1NTU3R5bGVEZWNsYXJhdGlvbiBiYWNrIGludG8gV2ViQ29yZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTE3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmUtbGFuZHMgY2hhbmdlIGZyb20g
cjI2ODU2NCBidXQgZGlzYWJsZWQgYmVoaW5kIGEgbmV3IEVOQUJMRSBmbGFnLCAKKyAgICAgICAg
RU5BQkxFKEFUVFJJQlVURV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJ
T04pLgorCisgICAgICAgIFJlcGxhY2UgbmFtZWQgZ2V0dGVyL3NldHRlciBiYXNlZCBpbXBsZW1l
bnRhdGlvbiBvZiBhY2Nlc3MgdG8gQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0eSB2YWx1ZXMK
KyAgICAgICAgd2l0aCBhIGdlbmVyYXRlZCBwYXJ0aWFsIGludGVyZmFjZSB0aGF0IGxpc3RzIGFs
bCB0aGUgcHJvcGVydGllcyBleGFjdGx5LgorICAgICAgIAorICAgICAgICBUbyBrZWVwIHRoaW5n
cyBjb25zaXN0ZW50IHdpdGggZXhpc3RpbmcgYmVoYXZpb3IsIGluIGFkZGl0aW9uIHRvIHRoZSBz
cGVjJ2QgcHJvcGVydGllcywgd2UgYWxzbworICAgICAgICBtYWludGFpbiBhZGRpdGlvbmFsIHBy
b3BlcnRpZXMgZm9yIGVwdWIgcHJlZml4ZWQgcHJvcGVydGllcy4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgIEdlbmVyYXRlIENTU1N0eWxl
RGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5pZGwgYW5kIGVuc3VyZSBpdCBpcyBjb21waWxlIHRv
Z2V0aGVyIHdpdGggdGhlIG90aGVyCisgICAgICAgIGJpbmRpbmdzLgorCisgICAgICAgICogY3Nz
L21ha2Vwcm9wLnBsOgorICAgICAgICBBZGQgZ2VuZXJhdGlvbiBvZiBDU1NTdHlsZURlY2xhcmF0
aW9uK1Byb3BlcnR5TmFtZXMuaWRsIGZyb20gQ1NTUHJvcGVydGllcy5qc29uLiBBZGQgY2hlY2tp
bmcKKyAgICAgICAgb2YgdGhlIGVuYWJsZSBmbGFnIHRvIGVuc3VyZSBpdCBpcyBub3QgY29tcGls
ZWQgYnkgZGVmYXVsdC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtOgorICAgICAgICAoVG9NZXRob2ROYW1lKToKKyAgICAgICAgRG9uJ3QgdHJhbnNmb3Jt
IG5hbWVzIHRoYXQgc3RhcnQgd2l0aCBDU1NPTSB0byBlbnN1cmUgcHJvcGVydHkgbmFtZXMgYXJl
IGNvbnNpc3RlbnQuCisKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQm9keURlZmlu
aXRpb24pOgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvbik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246CisgICAgICAg
IEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIHRoZSBuZXcgQ1NTUHJvcGVydHkgZXh0ZW5kZWQgYXR0
cmlidXRlLiBPbmx5IHRoZSB0ZXN0cyBhbmQKKyAgICAgICAgdGhlIGRpc2FibGVkIGNvZGUgaW4g
Q1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmlkbCBjdXJyZW50bHkgdXNlIGl0Lgor
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3Ry
dWN0b3JzLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NT
UHJvcGVydHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q1NTUHJvcGVydHkuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RDU1NQcm9wZXJ0eS5pZGw6IEFkZGVkLgorICAgICAgICBBZGQgdGVzdHMg
Zm9yIHRoZSBuZXcgQ1NTUHJvcGVydHkgZXh0ZW5kZWQgYXR0cmlidXRlLgorCisgICAgICAgIChX
ZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwp
OgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAg
KiBjc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6
c2V0UHJvcGVydHlJbnRlcm5hbCk6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbi5oOgorICAgICAgICBSZW1vdmUgdW51c2VkIGJvb2wgcmV0dXJuIHZhbHVlIGZy
b20gZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsIChpdCBnb2VzIGZyb20KKyAgICAgICAgRXhjZXB0
aW9uT3I8Ym9vbD4gdG8gRXhjZXB0aW9uT3I8dm9pZD4pIHRvIHNpbXBsaWZ5IHNvbWUgY2FsbGVy
cyB0aGF0IG5vIGxvbmdlcgorICAgICAgICBuZWVkIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUu
CisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgICogY3Nz
L0NTU1N0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgRXh0cmFjdCBvdXQgc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsIHNvIGl0IGNhbiBiZSB1c2VkIGJ5IHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IK
KyAgICAgICAgZm9yIENTU1Byb3BlcnR5IGF0dHJpYnV0ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NT
U3R5bGVEZWNsYXJhdGlvbi5pZGw6CisgICAgICAgIE1vdmUgbmFtZWQgZ2V0dGVyL3NldHRlciBk
ZWNsYXJhdGlvbnMgYW5kIERlZmF1bHREZWZpbmVPd25Qcm9wZXJ0eSBpbnNpZGUgb2YKKyAgICAg
ICAgZW5hYmxlIGZsYWdzIGNoZWNrcyBzbyB0aGF0IHdoZW4gaXQgaXMgZGlzYWJsZWQsIHdlIGRv
bid0IHVzZSB0aGVtLgorCiAyMDIxLTAyLTI4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBbaU9TXSBSZWR1Y2UgdXNlIG9mIHJldGFpbi9yZWxlYXNlIGluIFdBS1dp
bmRvdyBhbmQgcmVtb3ZlIHVubmVlZGVkIG1ldGhvZHMgZnJvbSB0aGF0IGNsYXNzCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjczNjMzKQorKysgU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5MzAsNyArMTkzMCw3IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREUKIAogIyBHZW5lcmF0ZSBDU1MgcHJvcGVy
dHkgbmFtZXMKIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtXZWJDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnRpZXMuanNvbiAke1dlYkNvcmVfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vQ1NTUHJvcGVydHlOYW1lcy5oICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElS
fS9DU1NQcm9wZXJ0eU5hbWVzLmNwcCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NT
UHJvcGVydHlOYW1lcy5ncGVyZiAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vU3R5bGVC
dWlsZGVyR2VuZXJhdGVkLmNwcCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElS
fS9TdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcAorICAgIE9VVFBVVCAke1dlYkNv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTUHJvcGVydGllcy5qc29uICR7V2ViQ29yZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmggJHtXZWJDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L0NTU1Byb3BlcnR5TmFtZXMuY3BwICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNf
RElSfS9DU1NQcm9wZXJ0eU5hbWVzLmdwZXJmICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElS
fS9TdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuY3BwICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElS
fS9TdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggJHtXZWJDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L1N0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwICR7V2ViQ29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9DU1NTdHlsZURlY2xhcmF0aW9uK1Byb3BlcnR5TmFtZXMuaWRs
CiAgICAgTUFJTl9ERVBFTkRFTkNZICR7V0VCQ09SRV9ESVJ9L2Nzcy9tYWtlcHJvcC5wbAogICAg
IERFUEVORFMgJHtXZWJDb3JlX0NTU19QUk9QRVJUWV9OQU1FU30KICAgICBXT1JLSU5HX0RJUkVD
VE9SWSAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0KQEAgLTE5NDAsNiArMTk0MCw3IEBA
IGFkZF9jdXN0b21fY29tbWFuZCgKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTUHJvcGVydHlOYW1lcy5jcHApCiBsaXN0KEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L1N0eWxlQnVp
bGRlckdlbmVyYXRlZC5jcHApCiBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtXZWJDb3Jl
X0RFUklWRURfU09VUkNFU19ESVJ9L1N0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3Bw
KQorbGlzdChBUFBFTkQgV2ViQ29yZV9JRExfRklMRVMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0NTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5pZGwpCiBBRERfU09VUkNF
X1dFQkNPUkVfREVSSVZFRF9ERVBFTkRFTkNJRVMoJHtXRUJDT1JFX0RJUn0vY3NzL0NTU1BhcnNl
ci5jcHAgQ1NTVmFsdWVLZXl3b3Jkcy5oKQogCiAjIEdlbmVyYXRlIENTUyB2YWx1ZSBrZXl3b3Jk
cwpJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QJKHJldmlzaW9uIDI3MzYzMykKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDYgKzMsNyBAQCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTUHJvcGVy
dHlOYW1lcy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0NTU1Byb3BlcnR5TmFtZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmlkbAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1ZhbHVlS2V5
d29yZHMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29s
b3JEYXRhLmNwcApAQCAtMzA0LDYgKzMwNSw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWIKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQ1NTUnVsZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0NTU1J1bGVMaXN0LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNDU1NSdWxlTGlzdC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0NTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5jcHAK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ1NTU3R5bGVE
ZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NTU1N0eWxlUnVs
ZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjczNjMz
KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpA
QCAtMTI5MSw2ICsxMjkxLDcgQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAkKFdlYkNvcmUp
L3htbC9YUGF0aFJlc3VsdC5pZGwgXAogICAgICQoV2ViQ29yZSkveG1sL1hTTFRQcm9jZXNzb3Iu
aWRsIFwKICAgICBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbCBcCisgICAgQ1NTU3R5bGVE
ZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmlkbCBcCiAjCiAKICMgLS0tLS0tLS0KQEAgLTEzOTAs
NiArMTM5MSw3IEBAIGFsbCA6IFwKICAgICBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuY3BwIFwKICAg
ICBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcCBcCiAgICAgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZEZ1bmN0aW9ucy5oIFwKKyAgICBDU1NTdHlsZURlY2xhcmF0aW9uK1Byb3BlcnR5
TmFtZXMuaWRsIFwKICAgICBVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIFwKICAgICBXZWJLaXRGb250
RmFtaWx5TmFtZXMuY3BwIFwKICAgICBXZWJLaXRGb250RmFtaWx5TmFtZXMuaCBcCkBAIC0xNDE3
LDYgKzE0MTksNyBAQCBDU1NfUFJPUEVSVFlfTkFNRV9GSUxFUyA9IFwKICAgICBTdHlsZUJ1aWxk
ZXJHZW5lcmF0ZWQuY3BwIFwKICAgICBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNw
cCBcCiAgICAgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oIFwKKyAgICBDU1NTdHls
ZURlY2xhcmF0aW9uK1Byb3BlcnR5TmFtZXMuaWRsIFwKICMKIENTU19QUk9QRVJUWV9OQU1FX0ZJ
TEVTX1BBVFRFUk5TID0gJChzdWJzdCAuLCUsJChDU1NfUFJPUEVSVFlfTkFNRV9GSUxFUykpCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCShyZXZpc2lvbiAyNzM2MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMzk5Nyw2ICszOTk3
LDkgQEAgc3ViIEdldFNraXBWVGFibGVWYWxpZGF0aW9uRm9ySW50ZXJmYWNlCiBzdWIgVG9NZXRo
b2ROYW1lCiB7CiAgICAgbXkgJHBhcmFtID0gc2hpZnQ7CisKKyAgICByZXR1cm4gJHBhcmFtIGlm
ICRwYXJhbSA9fiAvXkNTU09NLzsKKwogICAgIG15ICRyZXQgPSBsY2ZpcnN0KCRwYXJhbSk7CiAg
ICAgJHJldCA9fiBzL2NTUy9jc3MvIGlmICRyZXQgPX4gL15jU1MvOwogICAgICRyZXQgPX4gcy9k
T00vZG9tLyBpZiAkcmV0ID1+IC9eZE9NLzsKQEAgLTUzMzAsNiArNTMzMywxMyBAQCBzdWIgR2Vu
ZXJhdGVBdHRyaWJ1dGVHZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICIuaCIsICRjb25kaXRpb25hbCk7CiAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTIiAuICRjb25zdHJ1
Y3RvclR5cGUgLiAiOjoke2NvbnN0cnVjdG9yR2V0dGVyfShKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7XG4iKTsKICAgICAgICAgfQor
ICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NTU1Byb3BlcnR5
fSkgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJDU1NQcm9wZXJ0eU5hbWVzLmgifSA9IDE7Cisg
ICAgICAgIG15ICRwcm9wZXJ0eUlEID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q1NTUHJvcGVydHl9OworCisgICAgICAgIG15ICR0b0pTRXhwcmVzc2lvbiA9IE5hdGl2ZVRvSlNW
YWx1ZVVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHkke3Byb3BlcnR5SUR9KSIsICIqdGhpc09iamVj
dC5nbG9iYWxPYmplY3QoKSIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKCR7dG9KU0V4cHJl
c3Npb259KSk7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q2FjaGVkQXR0cmlidXRlfSkgewogICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gdGhpc09iamVjdC5t
XyIgLiAkYXR0cmlidXRlLT5uYW1lIC4gIi5nZXQoKSlcbiIpOwpAQCAtNTQ3NCw2ICs1NDg0LDIx
IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZVNldHRlckJvZHlEZWZpbml0aW8KICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKCZ0aGlzT2JqZWN0LCB2
YWx1ZSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGVuc3VyZVN0aWxs
QWxpdmVIZXJlKHZhbHVlKTtcblxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICByZXR1cm4gdHJ1ZTtcbiIpOworICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NTU1Byb3BlcnR5fSkgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJDU1NQcm9w
ZXJ0eU5hbWVzLmgifSA9IDE7CisKKyAgICAgICAgbXkgJHByb3BlcnR5SUQgPSAkYXR0cmlidXRl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDU1NQcm9wZXJ0eX07CisKKyAgICAgICAgbXkgJGV4Y2Vw
dGlvblRocm93ZXIgPSBHZXRBdHRyaWJ1dGVFeGNlcHRpb25UaHJvd2VyKCRpbnRlcmZhY2UsICRh
dHRyaWJ1dGUpOworICAgICAgICBteSAkdG9OYXRpdmVFeHByZXNzaW9uID0gSlNWYWx1ZVRvTmF0
aXZlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUsICJ2YWx1ZSIsICRhdHRyaWJ1dGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSwgIiZsZXhpY2FsR2xvYmFsT2JqZWN0IiwgImxleGlj
YWxHbG9iYWxPYmplY3QiLCAidGhpc09iamVjdCIsICIqdGhpc09iamVjdC5nbG9iYWxPYmplY3Qo
KSIsICRleGNlcHRpb25UaHJvd2VyKTsKKworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpO1xuIik7CisgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gJHt0b05hdGl2ZUV4cHJlc3Np
b259O1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHkke3Byb3BlcnR5
SUR9LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIH0pO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1
cm4gdHJ1ZTtcbiIpOwogICAgIH0gZWxzaWYgKCRpc0NvbnN0cnVjdG9yKSB7CiAgICAgICAgIG15
ICRjb25zdHJ1Y3RvclR5cGUgPSAkYXR0cmlidXRlLT50eXBlLT5uYW1lOwogICAgICAgICAkY29u
c3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjcz
NjMzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpz
b24JKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDEwIEBACiAgICAgICAgICAgICAgICAgInVy
bCI6ICJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9jdXN0b20tZWxlbWVu
dHMuaHRtbCNjZXJlYWN0aW9ucyIKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKKyAgICAgICAg
IkNTU1Byb3BlcnR5IjogeworICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmli
dXRlIl0sCisgICAgICAgICAgICAidmFsdWVzIjogWyIqIl0KKyAgICAgICAgfSwKICAgICAgICAg
IkNhY2hlZEF0dHJpYnV0ZSI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0
dHJpYnV0ZSJdCiAgICAgICAgIH0sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENv
bnN0cnVjdG9ycy5pZGwJKHJldmlzaW9uIDI3MzYzMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw3IEBACiBwYXJ0aWFsIGludGVyZmFjZSBUZXN0R2xvYmFsT2Jq
ZWN0IHsKICAgICBhdHRyaWJ1dGUgVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IgVGVzdENFUmVh
Y3Rpb25zOwogICAgIGF0dHJpYnV0ZSBUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVj
dG9yIFRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOworICAgIGF0dHJpYnV0ZSBUZXN0Q1NTUHJv
cGVydHlDb25zdHJ1Y3RvciBUZXN0Q1NTUHJvcGVydHk7CiAgICAgYXR0cmlidXRlIFRlc3RDYWxs
VHJhY2VyQ29uc3RydWN0b3IgVGVzdENhbGxUcmFjZXI7CiAgICAgW0NvbmRpdGlvbmFsPVRFU1Rf
Q09ORElUSU9OQUxdIGF0dHJpYnV0ZSBUZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3RvciBU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2U7CiAgICAgYXR0cmlidXRlIFRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50
YWxEZXBlbmRlbmNpZXMuZGVwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCShyZXZpc2lvbiAyNzM2
MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFs
RGVwZW5kZW5jaWVzLmRlcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOSBAQCBXZWJET01U
ZXN0Q0VSZWFjdGlvbnMuaDogCiBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmg6IAogRE9N
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaDogCiBXZWJET01UZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllci5oOiAKK0pTVGVzdENTU1Byb3BlcnR5Lmg6IAorRE9NVGVzdENTU1Byb3BlcnR5Lmg6
IAorV2ViRE9NVGVzdENTU1Byb3BlcnR5Lmg6IAogSlNUZXN0Q2FsbFRyYWNlci5oOiAKIERPTVRl
c3RDYWxsVHJhY2VyLmg6IAogV2ViRE9NVGVzdENhbGxUcmFjZXIuaDogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENTU1Byb3BlcnR5LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENTU1Byb3Bl
cnR5LmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdENTU1Byb3BlcnR5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKwordHlwZWRlZiBVU1ZTdHJpbmcgQ1NTT01TdHJpbmc7CisKK1sKKyAgICBF
eHBvc2VkPVRlc3RHbG9iYWxPYmplY3QKK10gaW50ZXJmYWNlIFRlc3RDU1NQcm9wZXJ0eSB7Cisg
ICAgW0NFUmVhY3Rpb25zLCBDU1NQcm9wZXJ0eT1Qcm9wZXJ0eU5hbWVdIGF0dHJpYnV0ZSBbTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09NU3RyaW5nIHByb3BlcnR5OworfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENTU1Byb3BlcnR5LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJvcGVydHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjk4IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBX
ZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3RDU1NQcm9wZXJ0eS5oIgorCisjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1
ZGUgIkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3Bh
Y2VzLmgiCisjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRp
bmcuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgorI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKKyNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhh
bmRsaW5nLmgiCisjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JN
YWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KKyNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcg
bmFtZXNwYWNlIEpTQzsKKworLy8gQXR0cmlidXRlcworCitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KTsK
KworY2xhc3MgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpK
U05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZp
bmFsT2JqZWN0OworICAgIHN0YXRpYyBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSogY3JlYXRl
KEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5
cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q1NTUHJvcGVy
dHlQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q1NTUHJvcGVydHlQ
cm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgfQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTVGVzdENT
U1Byb3BlcnR5UHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qo
dm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0M6OlZNJik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
Q1NTUHJvcGVydHlQcm90b3R5cGUsIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlOjpCYXNlKTsK
KwordXNpbmcgSlNUZXN0Q1NTUHJvcGVydHlET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdENTU1Byb3BlcnR5PjsKKwordGVtcGxhdGU8PiBKU1Zh
bHVlIEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sK
KyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Q
cm90b3R5cGUoKTsKK30KKwordGVtcGxhdGU8PiB2b2lkIEpTVGVzdENTU1Byb3BlcnR5RE9NQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgSlNUZXN0Q1NTUHJvcGVydHk6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZt
LCAiVGVzdENTU1Byb3BlcnR5Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKK30KKwor
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q1NTUHJvcGVydHlET01Db25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdENTU1Byb3BlcnR5IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDU1NQcm9wZXJ0eURPTUNvbnN0cnVj
dG9yKSB9OworCisvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0
IEhhc2hUYWJsZVZhbHVlIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9
Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENTU1Byb3BlcnR5Q29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCisgICAgeyAicHJvcGVydHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHkpIH0gfSwKK307CisKK2NvbnN0IENsYXNzSW5mbyBK
U1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdENTU1Byb3BlcnR5Iiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RDU1NQcm9wZXJ0eVByb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3RDU1NQcm9wZXJ0eVByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdENTU1Byb3BlcnR5Ojpp
bmZvKCksIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKKyAg
ICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdENTU1Byb3BlcnR5OjpzX2luZm8gPSB7ICJUZXN0Q1NTUHJvcGVydHkiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dENTU1Byb3BlcnR5KSB9OworCitKU1Rlc3RDU1NQcm9wZXJ0eTo6SlNUZXN0Q1NTUHJvcGVydHko
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJl
ZjxUZXN0Q1NTUHJvcGVydHk+JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0Q1NTUHJv
cGVydHk+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQoreworfQorCit2
b2lkIEpTVGVzdENTU1Byb3BlcnR5OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7
CisKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBU
ZXN0Q1NTUHJvcGVydHk+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3Rp
dmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMg
QWN0aXZlRE9NT2JqZWN0LiIpOworCit9CisKK0pTT2JqZWN0KiBKU1Rlc3RDU1NQcm9wZXJ0eTo6
Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3sKKyAgICByZXR1cm4gSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmds
b2JhbE9iamVjdCwgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Cit9CisK
K0pTT2JqZWN0KiBKU1Rlc3RDU1NQcm9wZXJ0eTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpT
VGVzdENTU1Byb3BlcnR5Pih2bSwgZ2xvYmFsT2JqZWN0KTsKK30KKworSlNWYWx1ZSBKU1Rlc3RD
U1NQcm9wZXJ0eTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDU1NQ
cm9wZXJ0eURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCkpOworfQorCit2b2lkIEpTVGVzdENTU1Byb3BlcnR5OjpkZXN0cm95
KEpTQzo6SlNDZWxsKiBjZWxsKQoreworICAgIEpTVGVzdENTU1Byb3BlcnR5KiB0aGlzT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0
LT5KU1Rlc3RDU1NQcm9wZXJ0eTo6fkpTVGVzdENTU1Byb3BlcnR5KCk7Cit9CisKK3RlbXBsYXRl
PD4gaW5saW5lIEpTVGVzdENTU1Byb3BlcnR5KiBJRExBdHRyaWJ1dGU8SlNUZXN0Q1NTUHJvcGVy
dHk+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q1NTUHJv
cGVydHkqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q1NTUHJv
cGVydHlDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Q1NTUHJvcGVydHk6OmdldENvbnN0cnVjdG9yKEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkp
KTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDU1NQcm9w
ZXJ0eSYgdGhpc09iamVjdCkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UHJvcGVydHlOYW1lKSkpKTsK
K30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dENTU1Byb3BlcnR5Pjo6Z2V0PGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAicHJvcGVydHkiKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdENTU1By
b3BlcnR5X3Byb3BlcnR5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3RDU1NQcm9wZXJ0eSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOworICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQcm9wZXJ0eU5hbWUsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdENTU1Byb3BlcnR5Pjo6c2V0PHNldEpTVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5U2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwcm9wZXJ0
eSIpOworfQorCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDU1NQcm9wZXJ0eTo6c3Vic3BhY2VG
b3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBj
bGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdENTU1Byb3BlcnR5LmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7Cisg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RDU1NQcm9wZXJ0eT4gfHwgIUpTVGVzdENTU1Byb3BlcnR5OjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdENTU1Byb3BlcnR5PikKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Q1NTUHJvcGVydHkgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdENTU1Byb3BlcnR5KTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdENTU1Byb3BlcnR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q1NTUHJv
cGVydHkpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q1NTUHJv
cGVydHkuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQor
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgdm9pZCAo
Km15VmlzaXRPdXRwdXRDb25zdHJhaW50KShKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3Im
KSA9IEpTVGVzdENTU1Byb3BlcnR5Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzOworICAgIHZvaWQg
KCpqc0NlbGxWaXNpdE91dHB1dENvbnN0cmFpbnQpKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90Vmlz
aXRvciYpID0gSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7CisgICAgaWYgKG15
VmlzaXRPdXRwdXRDb25zdHJhaW50ICE9IGpzQ2VsbFZpc2l0T3V0cHV0Q29uc3RyYWludCkKKyAg
ICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsK
K0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3Bh
Y2U7Cit9CisKK3ZvaWQgSlNUZXN0Q1NTUHJvcGVydHk6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2Vs
bCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTVGVzdENTU1Byb3BlcnR5Kj4oY2VsbCk7CisgICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9i
amVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7CisgICAgaWYgKHRoaXNP
YmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgYW5hbHl6ZXIuc2V0TGFi
ZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5
emVyKTsKK30KKworYm9vbCBKU1Rlc3RDU1NQcm9wZXJ0eU93bmVyOjppc1JlYWNoYWJsZUZyb21P
cGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIEFic3Ry
YWN0U2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCit7CisgICAgVU5V
U0VEX1BBUkFNKGhhbmRsZSk7CisgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOworICAgIFVOVVNF
RF9QQVJBTShyZWFzb24pOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBKU1Rlc3RDU1NQ
cm9wZXJ0eU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwg
dm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRvKiBqc1Rlc3RDU1NQcm9wZXJ0eSA9IHN0YXRpY19j
YXN0PEpTVGVzdENTU1Byb3BlcnR5Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIGF1
dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAg
IHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0Q1NTUHJvcGVydHktPndyYXBwZWQoKSwganNU
ZXN0Q1NTUHJvcGVydHkpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lm
IFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJD
IiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdENTU1Byb3BlcnR5
QFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KKyNlbHNlCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQq
IF9aVFZON1dlYkNvcmUxNVRlc3RDU1NQcm9wZXJ0eUVbXTsgfQorI2VuZGlmCisjZW5kaWYKKwor
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q1NTUHJvcGVydHk+JiYgaW1wbCkK
K3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lkKiBhY3R1
YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNpZiBQTEFU
Rk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVy
KCI/P183VGVzdENTU1Byb3BlcnR5QFdlYkNvcmVAQDZCQCIpOworI2Vsc2UKKyAgICB2b2lkKiBl
eHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTE1VGVzdENTU1Byb3BlcnR5RVsy
XTsKKyNlbmRpZgorCisgICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0Q1NTUHJvcGVydHkgZG9lcyBu
b3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgor
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0Q1NTUHJvcGVydHk+Ojp2
YWx1ZSwgIlRlc3RDU1NQcm9wZXJ0eSBpcyBub3QgcG9seW1vcnBoaWMiKTsKKworICAgIC8vIElm
IHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUg
YnVnLCBvcgorICAgIC8vIFRlc3RDU1NQcm9wZXJ0eSBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdENT
U1Byb3BlcnR5IGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAorICAgIC8vIHRvIHRvSlMo
KSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0Q1NTUHJvcGVydHkgeW91IHRvIG9wdCBvdXQgb2Yg
YmluZGluZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0
aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCisgICAgUkVMRUFT
RV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwor
I2VuZGlmCisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdENTU1Byb3BlcnR5PihnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0Q1NTUHJvcGVydHkmIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAobGV4aWNh
bEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKK30KKworVGVzdENTU1Byb3BlcnR5
KiBKU1Rlc3RDU1NQcm9wZXJ0eTo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUg
dmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENT
U1Byb3BlcnR5Kj4odm0sIHZhbHVlKSkKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVk
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0
eS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTMgQEAK
Ky8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RP
TVdyYXBwZXIuaCIKKyNpbmNsdWRlICJUZXN0Q1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RD
U1NQcm9wZXJ0eSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdENTU1Byb3BlcnR5PiB7CitwdWJs
aWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0Q1NTUHJvcGVydHk+OworICAg
IHN0YXRpYyBKU1Rlc3RDU1NQcm9wZXJ0eSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q1NTUHJvcGVydHk+
JiYgaW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVzdENTU1Byb3BlcnR5KiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdENTU1Byb3BlcnR5PihnbG9iYWxPYmplY3Qt
PnZtKCkuaGVhcCkpIEpTVGVzdENTU1Byb3BlcnR5KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0
LT52bSgpKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwor
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFs
T2JqZWN0Jik7CisgICAgc3RhdGljIFRlc3RDU1NQcm9wZXJ0eSogdG9XcmFwcGVkKEpTQzo6Vk0m
LCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8o
SlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7
CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZN
JiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBK
U0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBK
U0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOworICAg
IHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7Citw
cm90ZWN0ZWQ6CisgICAgSlNUZXN0Q1NTUHJvcGVydHkoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCYsIFJlZjxUZXN0Q1NTUHJvcGVydHk+JiYpOworCisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihKU0M6OlZNJik7Cit9OworCitjbGFzcyBKU1Rlc3RDU1NQcm9wZXJ0eU93bmVyIGZp
bmFsIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICBib29sIGlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQq
IGNvbnRleHQsIEpTQzo6QWJzdHJhY3RTbG90VmlzaXRvciYsIGNvbnN0IGNoYXIqKikgZmluYWw7
CisgICAgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250
ZXh0KSBmaW5hbDsKK307CisKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93
bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RDU1NQcm9wZXJ0eSopCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEpTVGVzdENTU1Byb3BlcnR5T3duZXI+IG93bmVyOworICAgIHJldHVybiAm
b3duZXIuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3RDU1NQcm9wZXJ0
eSogd3JhcHBhYmxlT2JqZWN0KQoreworICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Cit9CisK
K0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVj
dCosIFRlc3RDU1NQcm9wZXJ0eSYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3RDU1NQcm9wZXJ0eSogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4
aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9
CitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNE
T01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdENTU1Byb3BlcnR5PiYmKTsKK2lubGluZSBKU0M6OkpT
VmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdENTU1By
b3BlcnR5PiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxH
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6
anNOdWxsKCk7IH0KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJh
aXRzPFRlc3RDU1NQcm9wZXJ0eT4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdENT
U1Byb3BlcnR5OworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0Q1NTUHJvcGVy
dHkqOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5jcHAJKHJldmlzaW9uIDI3MzYzMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSlNUZXN0LmgiCiAjaW5jbHVkZSAiSlNUZXN0Q0VS
ZWFjdGlvbnMuaCIKICNpbmNsdWRlICJKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmgiCisj
aW5jbHVkZSAiSlNUZXN0Q1NTUHJvcGVydHkuaCIKICNpbmNsdWRlICJKU1Rlc3RDYWxsVHJhY2Vy
LmgiCiAjaW5jbHVkZSAiSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJKU1Rlc3RET01KSVQuaCIKQEAgLTE2NSw2ICsxNjYsOCBAQCBzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHCiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyQ29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0
R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NTUHJvcGVydHlD
b25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9i
YWxPYmplY3RfVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RHbG9iYWxPYmplY3RfVGVzdENhbGxUcmFjZXJDb25zdHJ1
Y3Rvcik7CiAjaWYgRU5BQkxFKFRFU1RfQ09ORElUSU9OQUwpCkBAIC0yOTQsMTMgKzI5NywxMyBA
QCB1c2luZyBKU1Rlc3RHbG9iYWxPYmplY3RET01Db25zdHJ1Y3RvciA9CiAKIC8qIEhhc2ggdGFi
bGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2Jh
bE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2OF0gPSB7CiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDM5LCAtMSB9LAorICAgIHsgNDAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IDAsIC0xIH0sCiAgICAgeyA0LCAtMSB9LAotICAgIHsgNDMsIC0xIH0sCisgICAgeyA0
NCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKQEAgLTMwOCw3ICszMTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5k
ZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
Ci0gICAgeyA1MiwgLTEgfSwKKyAgICB7IDUzLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzE2LDcgKzMxOSw3IEBAIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDYxLCAtMSB9LAorICAgIHsgNjIsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBA
IC0zMzAsMTQgKzMzMywxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXgg
SlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0g
ICAgeyAzMywgLTEgfSwKKyAgICB7IDM0LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKLSAgICB7IDY0LCAtMSB9LAotICAgIHsgMTIsIDI2MCB9LAorICAgIHsgNSwgMjY3IH0sCisg
ICAgeyAxMywgMjYwIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCkBAIC0zNDUsMTEgKzM0OCwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBh
Y3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCi0gICAgeyAzNywgLTEgfSwKLSAgICB7IDE4LCAyNTcgfSwKLSAgICB7IDYsIC0x
IH0sCisgICAgeyAzOCwgLTEgfSwKKyAgICB7IDE5LCAyNTcgfSwKKyAgICB7IDcsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ0LCAtMSB9LAorICAgIHsgNDUsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zNTgsMjAgKzM2
MSwyMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzNSwgLTEg
fSwKKyAgICB7IDM2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAotICAgIHsgMjAsIDI2NSB9LAorICAgIHsgMjEsIDI2NSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKLSAgICB7IDUsIC0xIH0sCisgICAgeyA2LCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzc5LDI3ICszODIs
MjcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjgsIC0xIH0s
Ci0gICAgeyA1NCwgLTEgfSwKKyAgICB7IDI5LCAtMSB9LAorICAgIHsgNTUsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA5LCAyNTYgfSwK
KyAgICB7IDEwLCAyNTYgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNTYsIC0xIH0sCi0gICAg
eyAxNywgLTEgfSwKKyAgICB7IDU3LCAtMSB9LAorICAgIHsgMTgsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxNiwgLTEgfSwK
KyAgICB7IDE3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzNCwgLTEgfSwKKyAgICB7IDM1LCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApA
QCAtNDA3LDE0ICs0MTAsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4
IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgMjIsIC0xIH0sCisgICAgeyAyMywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
MiwgLTEgfSwKLSAgICB7IDM2LCAtMSB9LAorICAgIHsgMzcsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxOSwgLTEgfSwKKyAg
ICB7IDIwLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LApAQCAtNDI3LDE1ICs0MzAsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0
SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAotICAgIHsgMjYsIC0xIH0sCisgICAgeyAyNywgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAotICAgIHsgNDEsIC0xIH0sCisgICAgeyA0MiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCi0gICAgeyA1MSwgLTEgfSwKKyAgICB7IDUyLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDQzLDIyICs0NDYsMjIgQEAg
c3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDYsIC0xIH0sCisgICAg
eyA0NywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxMCwg
LTEgfSwKKyAgICB7IDExLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgNjIsIC0xIH0sCisgICAgeyA2MywgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDI1LCAtMSB9LAot
ICAgIHsgMzAsIC0xIH0sCisgICAgeyAyNiwgLTEgfSwKKyAgICB7IDMxLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDY4LDkgKzQ3
MSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDE0LCAyNTkg
fSwKKyAgICB7IDE1LCAyNTkgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNTcsIC0xIH0sCisg
ICAgeyA1OCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKQEAgLTQ3OSwxMSArNDgyLDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKLSAgICB7IDMyLCAyNjYgfSwKKyAgICB7IDMzLCAyNjYgfSwKICAgICB7IC0xLCAt
MSB9LAotICAgIHsgMTUsIC0xIH0sCisgICAgeyAxNiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgNjAsIC0xIH0sCisgICAgeyA2MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTUwMiwxMSArNTA1LDExIEBAIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ1LCAtMSB9LAorICAgIHsgNDYsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0g
ICAgeyAxMSwgLTEgfSwKKyAgICB7IDEyLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNTE1LDUzICs1MTgsNTQgQEAgc3RhdGljIGNv
bnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNTUsIC0xIH0sCisgICAgeyA1NiwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAg
IHsgOCwgLTEgfSwKKyAgICB7IDksIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ3LCAyNjMgfSwK
LSAgICB7IDcsIDI2MiB9LAorICAgIHsgNDgsIDI2MyB9LAorICAgIHsgOCwgMjYyIH0sCiAgICAg
eyAtMSwgLTEgfSwKLSAgICB7IDU4LCAtMSB9LAorICAgIHsgNTksIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxMywgLTEgfSwKKyAgICB7
IDE0LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyMywgLTEgfSwKKyAgICB7IDI0LCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDI5LCAtMSB9LAor
ICAgIHsgMzAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAzLCAtMSB9LAotICAgIHsgNDksIC0xIH0sCi0gICAgeyAtMSwgLTEg
fSwKICAgICB7IDUwLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCisgICAgeyA1MSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDIx
LCAyNTggfSwKLSAgICB7IDI0LCAyNjQgfSwKLSAgICB7IDI3LCAyNjEgfSwKLSAgICB7IDMxLCAt
MSB9LAotICAgIHsgMzgsIC0xIH0sCi0gICAgeyA0MCwgLTEgfSwKLSAgICB7IDQyLCAtMSB9LAot
ICAgIHsgNDgsIC0xIH0sCi0gICAgeyA1MywgLTEgfSwKLSAgICB7IDU5LCAtMSB9LAotICAgIHsg
NjMsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDIyLCAyNTggfSwKKyAgICB7IDI1LCAy
NjQgfSwKKyAgICB7IDI4LCAyNjEgfSwKKyAgICB7IDMyLCAtMSB9LAorICAgIHsgMzksIC0xIH0s
CisgICAgeyA0MSwgLTEgfSwKKyAgICB7IDQzLCAtMSB9LAorICAgIHsgNDksIC0xIH0sCisgICAg
eyA1NCwgLTEgfSwKKyAgICB7IDYwLCAtMSB9LAorICAgIHsgNjQsIC0xIH0sCisgICAgeyA2NSwg
LTEgfSwKIH07CiAKIApAQCAtNTc2LDYgKzU4MCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RHbG9iYWwKICNlbmRpZgogICAgIHsgIlRlc3RDRVJlYWN0aW9ucyIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
R2xvYmFsT2JqZWN0X1Rlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0X1Rl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0Q1NT
UHJvcGVydHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NTUHJvcGVydHlDb25z
dHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3Rvcikg
fSB9LAogICAgIHsgIlRlc3RDYWxsVHJhY2VyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3Rf
VGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbFRy
YWNlckNvbnN0cnVjdG9yKSB9IH0sCiAjaWYgRU5BQkxFKFRFU1RfQ09ORElUSU9OQUwpCiAgICAg
eyAiVGVzdENhbGxiYWNrSW50ZXJmYWNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVz
dENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RfVGVzdENh
bGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3IpIH0gfSwKQEAgLTY1MCw3ICs2NTUsNyBAQCBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsCiAgICAgeyAicmVndWxhck9wZXJh
dGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbl9yZWd1bGFyT3BlcmF0aW9u
KSwgKGludHB0cl90KSAoMSkgfSB9LAogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rl
c3RHbG9iYWxPYmplY3RUYWJsZSA9IHsgNjUsIDI1NSwgdHJ1ZSwgSlNUZXN0R2xvYmFsT2JqZWN0
OjppbmZvKCksIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlVmFsdWVzLCBKU1Rlc3RHbG9iYWxPYmpl
Y3RUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEdsb2JhbE9iamVj
dFRhYmxlID0geyA2NiwgMjU1LCB0cnVlLCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmluZm8oKSwgSlNU
ZXN0R2xvYmFsT2JqZWN0VGFibGVWYWx1ZXMsIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXgg
fTsKIC8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAKIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQpA
QCAtOTY3LDYgKzk3MiwyOSBAQCBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0R2xv
YmFsCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0
SlNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3JT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyIik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RHbG9iYWxPYmplY3RfVGVzdENTU1Byb3BlcnR5Q29uc3RydWN0b3JHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09i
amVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0
dXJuIEpTVGVzdENTU1Byb3BlcnR5OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0pTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENTU1Byb3BlcnR5Q29uc3Ry
dWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NTUHJvcGVy
dHlDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRl
c3RDU1NQcm9wZXJ0eSIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFs
T2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1
cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdENTU1Byb3BlcnR5IiksIHN0cmxlbigi
VGVzdENTU1Byb3BlcnR5IikpLCB2YWx1ZSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU1Rlc3RHbG9iYWxPYmplY3RfVGVzdENTU1Byb3BlcnR5Q29uc3RydWN0b3IsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NT
UHJvcGVydHlDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdENTU1Byb3BlcnR5Iik7Cit9CisKIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvckdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0
JiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCShyZXZpc2lvbiAyNzM2MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI3OCw3ICs0Mjc4
LDcgQEAgU3RyaW5nIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UAogICAgIHJldHVy
biBnZXRQcm9wZXJ0eVZhbHVlKHByb3BlcnR5SUQpOwogfQogCi1FeGNlcHRpb25Pcjxib29sPiBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVy
dHlJRCwgY29uc3QgU3RyaW5nJiwgYm9vbCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25z
dCBTdHJpbmcmLCBib29sKQogewogICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlv
bkFsbG93ZWRFcnJvciB9OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMjczNjMzKQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRDc3NU
ZXh0KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVy
dHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpIGZpbmFsOwogICAgIFN0cmluZyBnZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgZmluYWw7Ci0gICAgRXhjZXB0aW9u
T3I8Ym9vbD4gc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBib29sIGltcG9ydGFudCkgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0
UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29s
IGltcG9ydGFudCkgZmluYWw7CiAgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQ
cm9wZXJ0aWVzKCkgY29uc3QgZmluYWw7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3Bl
cnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCA9IFVwZGF0ZUxheW91dCkg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3Bw
CShyZXZpc2lvbiAyNzM2MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNiwxMSArMjE2LDI3IEBAIENTU1Byb3BlcnR5
SUQgQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q1MKICAgICByZXR1cm4gcHJvcGVydHlJREZyb21K
YXZhU2NyaXB0Q1NTUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSwgbnVsbHB0cik7CiB9CiAKK0V4
Y2VwdGlvbk9yPHZvaWQ+IENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIFN0cmluZyB2YWx1ZSkKK3sKKyAgICBib29s
IGltcG9ydGFudCA9IGZhbHNlOworICAgIGlmIChEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNo
b3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycygpKSB7CisgICAgICAgIGF1
dG8gaW1wb3J0YW50SW5kZXggPSB2YWx1ZS5maW5kSWdub3JpbmdBU0NJSUNhc2UoIiFpbXBvcnRh
bnQiKTsKKyAgICAgICAgaWYgKGltcG9ydGFudEluZGV4ICYmIGltcG9ydGFudEluZGV4ICE9IG5v
dEZvdW5kKSB7CisgICAgICAgICAgICBpbXBvcnRhbnQgPSB0cnVlOworICAgICAgICAgICAgdmFs
dWUgPSB2YWx1ZS5sZWZ0KGltcG9ydGFudEluZGV4IC0gMSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eUlELCBXVEZNb3ZlKHZhbHVl
KSwgaW1wb3J0YW50KTsKK30KKwogY29uc3QgU2V0dGluZ3MqIENTU1N0eWxlRGVjbGFyYXRpb246
OnNldHRpbmdzKCkgY29uc3QKIHsKICAgICByZXR1cm4gcGFyZW50RWxlbWVudCgpID8gJnBhcmVu
dEVsZW1lbnQoKS0+ZG9jdW1lbnQoKS5zZXR0aW5ncygpIDogbnVsbHB0cjsKIH0KIAorI2lmICFF
TkFCTEUoQVRUUklCVVRFX0JBU0VEX1BST1BFUlRJRVNfRk9SX0NTU19TVFlMRV9ERUNMQVJBVElP
TikKKwogT3B0aW9uYWw8VmFyaWFudDxTdHJpbmcsIGRvdWJsZT4+IENTU1N0eWxlRGVjbGFyYXRp
b246Om5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgLy8g
RklYTUU6IFRoaXMgaXMgZ29pbmcgdG8gcmV0dXJuIGluY29ycmVjdCByZXN1bHRzIGZvciBjc3Mg
cHJvcGVydGllcyBkaXNhYmxlZCBieSBTZXR0aW5ncyBpZiBzZXR0aW5ncygpIHJldHVybnMgbnVs
bHB0ci4KQEAgLTIzMSw3ICsyNDcsNyBAQCBPcHRpb25hbDxWYXJpYW50PFN0cmluZywgZG91Ymxl
Pj4gQ1NTU3R5CiAgICAgaWYgKGF1dG8gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJu
YWwocHJvcGVydHlJRCkpCiAgICAgICAgIHJldHVybiBWYXJpYW50PFN0cmluZywgZG91YmxlPiB7
IHZhbHVlLT5jc3NUZXh0KCkgfTsKIAotICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBhIHNob3J0
aGFuZCBwcm9wZXJ0eSAoc3VjaCBhcyAicGFkZGluZyIpLCBpdCBjYW4gb25seSBiZSBhY2Nlc3Nl
ZCB1c2luZyBnZXRQcm9wZXJ0eVZhbHVlLgorICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBhIHNo
b3J0aGFuZCBwcm9wZXJ0eSAoc3VjaCBhcyAicGFkZGluZyIpLCBpdCBjYW4gb25seSBiZSBhY2Nl
c3NlZCB1c2luZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwuCiAgICAgcmV0dXJuIFZhcmlhbnQ8
U3RyaW5nLCBkb3VibGU+IHsgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKHByb3BlcnR5SUQpIH07
CiB9CiAKQEAgLTI0NSwyMSArMjYxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6cwogICAgIH0KIAogICAgIHByb3BlcnR5U3VwcG9ydGVkID0gdHJ1ZTsKLQotICAg
IGJvb2wgaW1wb3J0YW50ID0gZmFsc2U7Ci0gICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
czo6c2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKCkpIHsKLSAgICAg
ICAgYXV0byBpbXBvcnRhbnRJbmRleCA9IHZhbHVlLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgiIWlt
cG9ydGFudCIpOwotICAgICAgICBpZiAoaW1wb3J0YW50SW5kZXggJiYgaW1wb3J0YW50SW5kZXgg
IT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIGltcG9ydGFudCA9IHRydWU7Ci0gICAgICAgICAg
ICB2YWx1ZSA9IHZhbHVlLmxlZnQoaW1wb3J0YW50SW5kZXggLSAxKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIGF1dG8gc2V0UHJvcGVydHlJbnRlcm5hbFJlc3VsdCA9IHNldFByb3BlcnR5SW50
ZXJuYWwocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCk7Ci0gICAgaWYgKHNldFByb3BlcnR5
SW50ZXJuYWxSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBzZXRQcm9wZXJ0
eUludGVybmFsUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKLQotICAgIHJldHVybiB7IH07Cisg
ICAgcmV0dXJuIHNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChwcm9wZXJ0eUlELCBXVEZNb3ZlKHZh
bHVlKSk7CiB9CiAKIFZlY3RvcjxBdG9tU3RyaW5nPiBDU1NTdHlsZURlY2xhcmF0aW9uOjpzdXBw
b3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3QKQEAgLTI4Nyw2ICsyODksNyBAQCBWZWN0b3I8QXRv
bVN0cmluZz4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQor
I2VuZGlmCiAKIFN0cmluZyBDU1NTdHlsZURlY2xhcmF0aW9uOjpjc3NGbG9hdCgpCiB7CkBAIC0y
OTUsMTAgKzI5OCw3IEBAIFN0cmluZyBDU1NTdHlsZURlY2xhcmF0aW9uOjpjc3NGbG9hdCgpCiAK
IEV4Y2VwdGlvbk9yPHZvaWQ+IENTU1N0eWxlRGVjbGFyYXRpb246OnNldENzc0Zsb2F0KGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzZXRQcm9wZXJ0eUludGVybmFs
KENTU1Byb3BlcnR5RmxvYXQsIHZhbHVlLCBmYWxzZSAvKiBpbXBvcnRhbnQgKi8pOwotICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpOwotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIHNldFByb3BlcnR5SW50ZXJu
YWwoQ1NTUHJvcGVydHlGbG9hdCwgdmFsdWUsIGZhbHNlIC8qIGltcG9ydGFudCAqLyk7CiB9CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNp
b24gMjczNjMzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsOCBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIENTU1Zh
bHVlIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBleHBvc2VkIHRvIHRo
ZSB3ZWIgYXMgaXQgbWF5IGJlIHVzZWQgYnkgbXVsdGlwbGUgZG9jdW1lbnRzIGF0IHRoZSBzYW1l
IHRpbWUuCiAgICAgdmlydHVhbCBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUlEKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpID0gMDsKLSAgICB2aXJ0dWFsIEV4Y2VwdGlv
bk9yPGJvb2w+IHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpID0gMDsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgYm9vbCBpbXBvcnRhbnQpID0gMDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgU3RyaW5nKTsKIAogICAgIHZpcnR1YWwgUmVm
PE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzKCkgY29uc3QgPSAwOwogCkBA
IC03NCwxMiArNzUsMTYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBjb25zdCBTZXR0aW5ncyog
c2V0dGluZ3MoKSBjb25zdDsKIAotICAgIC8vIEJpbmRpbmdzIHN1cHBvcnQuCisjaWYgIUVOQUJM
RShBVFRSSUJVVEVfQkFTRURfUFJPUEVSVElFU19GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OKQor
ICAgIC8vIE5hbWVkLWl0ZW0gYmFzZWQgaW1wbGVtZW50YXRpb24gc3VwcG9ydC4KICAgICBPcHRp
b25hbDxWYXJpYW50PFN0cmluZywgZG91YmxlPj4gbmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcm
KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXROYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYg
bmFtZSwgU3RyaW5nIHZhbHVlLCBib29sJiBwcm9wZXJ0eVN1cHBvcnRlZCk7CiAgICAgVmVjdG9y
PEF0b21TdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKKyNlbmRpZgogCisg
ICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gcGFzcyBpbiBhIFNldHRpbmdzJiB0byB3b3JrIGNv
cnJlY3RseS4KICAgICBzdGF0aWMgQ1NTUHJvcGVydHlJRCBnZXRDU1NQcm9wZXJ0eUlERnJvbUph
dmFTY3JpcHRQcm9wZXJ0eU5hbWUoY29uc3QgQXRvbVN0cmluZyYpOworCiBwcm90ZWN0ZWQ6CiAg
ICAgQ1NTU3R5bGVEZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCShyZXZpc2lvbiAyNzM2MzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBT
YW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yMCwz
OCArMjAsMzggQEAKIAogWwogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAotICAgIERl
ZmF1bHREZWZpbmVPd25Qcm9wZXJ0eSwKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlLAogICAgIEpT
Q3VzdG9tSGVhZGVyLAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAogICAgIFNraXBWVGFibGVW
YWxpZGF0aW9uLAotICAgIEV4cG9zZWQ9V2luZG93CisgICAgRXhwb3NlZD1XaW5kb3csCisjaWYg
IWRlZmluZWQoRU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVf
REVDTEFSQVRJT04pIHx8ICFFTkFCTEVfQVRUUklCVVRFX0JBU0VEX1BST1BFUlRJRVNfRk9SX0NT
U19TVFlMRV9ERUNMQVJBVElPTgorICAgIERlZmF1bHREZWZpbmVPd25Qcm9wZXJ0eQorI2VuZGlm
CiBdIGludGVyZmFjZSBDU1NTdHlsZURlY2xhcmF0aW9uIHsKLSAgICBbQ0VSZWFjdGlvbnNdIGF0
dHJpYnV0ZSBET01TdHJpbmcgY3NzVGV4dDsKLQotICAgIERPTVN0cmluZyBnZXRQcm9wZXJ0eVZh
bHVlKERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwotCi0gICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJv
d0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHJlbW92ZVByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5h
bWUpOwotICAgIERPTVN0cmluZz8gZ2V0UHJvcGVydHlQcmlvcml0eShET01TdHJpbmcgcHJvcGVy
dHlOYW1lKTsKLQotICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5l
ZCBzZXRQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHlOYW1lLCBbTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmddIERPTVN0cmluZyB2YWx1ZSwgb3B0aW9uYWwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
XSBET01TdHJpbmcgcHJpb3JpdHkgPSAiIik7CisgICAgLy8gRklYTUU6IFRoZXNlIGF0dHJpYnV0
ZXMgYW5kIGZ1bmN0aW9ucyBzaG91bGQgdXNlIENTU09NU3RyaW5nIG5vdCBET01TdHJpbmcuCiAK
KyAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBET01TdHJpbmcgY3NzVGV4dDsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgZ2V0dGVyIERPTVN0cmlu
ZyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIERPTVN0cmluZyBnZXRQcm9wZXJ0eVZh
bHVlKERPTVN0cmluZyBwcm9wZXJ0eSk7CisgICAgLy8gRklYTUU6IFRoZSByZXR1cm4gdmFsdWUg
b2YgJ2dldFByb3BlcnR5UHJpb3JpdHknIHNob3VsZCBub3QgYmUgbnVsbGFibGUuCisgICAgRE9N
U3RyaW5nPyBnZXRQcm9wZXJ0eVByaW9yaXR5KERPTVN0cmluZyBwcm9wZXJ0eSk7CisgICAgW0NF
UmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldFByb3BlcnR5KERPTVN0
cmluZyBwcm9wZXJ0eSwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWUs
IG9wdGlvbmFsIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHByaW9yaXR5ID0g
IiIpOworICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZW1v
dmVQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHkpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBD
U1NSdWxlPyBwYXJlbnRSdWxlOwotCiAgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW0xlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgY3NzRmxvYXQ7CiAKKyAgICAvLyBOb24tc3Rh
bmRhcmQuCiAgICAgRE9NU3RyaW5nPyBnZXRQcm9wZXJ0eVNob3J0aGFuZChvcHRpb25hbCBET01T
dHJpbmcgcHJvcGVydHlOYW1lKTsKICAgICBib29sZWFuIGlzUHJvcGVydHlJbXBsaWNpdChvcHRp
b25hbCBET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKKyAgICBEZXByZWNhdGVkQ1NTT01WYWx1ZT8g
Z2V0UHJvcGVydHlDU1NWYWx1ZShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKIAorI2lmICFkZWZp
bmVkKEVOQUJMRV9BVFRSSUJVVEVfQkFTRURfUFJPUEVSVElFU19GT1JfQ1NTX1NUWUxFX0RFQ0xB
UkFUSU9OKSB8fCAhRU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZ
TEVfREVDTEFSQVRJT04KICAgICAvLyBVc2UgbmFtZWQgZ2V0dGVycy9zZXR0ZXJzIGZvciBhbGwg
c3VwcG9ydCBDU1MgcHJvcGVydHkgbmFtZXMuIFRoZSBzcGVjIHNheXMKICAgICAvLyB0aGVzZSBz
aG91bGQgYmUgbm9ybWFsIGF0dHJpYnV0ZXMsIGJ1dCB0aGVyZSBhcmUgdG9vIG1hbnkgY29tYmlu
YXRpb25zIHdpdGgKLSAgICAvLyBwcmVmaXhlcyBmb3IgdGhpcyB0byBiZSBwcmFjdGljYWwuIElm
IHdlIHJlbW92ZSBsZWdhY3kgYWxpYXNlcywgd2Ugc2hvdWxkCi0gICAgLy8gcmVjb25zaWRlciB0
aGlzIGRlY2lzaW9uLgorICAgIC8vIHByZWZpeGVzIGZvciB0aGlzIHRvIGJlIHByYWN0aWNhbCB3
aXRoIGN1cnJlbnQgY29kZSBnZW5lcmF0aW9uLgogICAgIGdldHRlciAoRE9NU3RyaW5nIG9yIGRv
dWJsZSkgKERPTVN0cmluZyBuYW1lKTsKICAgICBbQ0VSZWFjdGlvbnMsIENhbGxOYW1lZFNldHRl
ck9ubHlGb3JTdXBwb3J0ZWRQcm9wZXJ0aWVzXSBzZXR0ZXIgdW5kZWZpbmVkIChET01TdHJpbmcg
bmFtZSwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWUpOwotCi0gICAg
Ly8gVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCwgYW5kIHdlIHdvdWxkIGxpa2UgdG8gZHJvcCBz
dXBwb3J0IGZvciBpdCBzb21lZGF5Ci0gICAgRGVwcmVjYXRlZENTU09NVmFsdWU/IGdldFByb3Bl
cnR5Q1NTVmFsdWUoRE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7CisjZW5kaWYKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uLmNwcAkocmV2aXNpb24gMjczNjMzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwOCwyMiArMzA4
LDIyIEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmcKICAgICBpZiAo
IXJlbGF0ZWRWYWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiByZWxhdGVkVmFsdWU7CiAg
ICAgCi0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlv
bk9yPGJvb2w+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJbnRl
cm5hbChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wg
aW1wb3J0YW50KQorRXhjZXB0aW9uT3I8dm9pZD4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCiB7IAotICAgIFN0eWxlQXR0cmlidXRlTXV0
YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOworICAgIFN0eWxlQXR0cmlidXRlTXV0YXRp
b25TY29wZSBtdXRhdGlvblNjb3BlIHsgdGhpcyB9OwogICAgIGlmICghd2lsbE11dGF0ZSgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIGNoYW5nZWQgPSBtX3Byb3BlcnR5U2V0
LT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQYXJzZXJDb250
ZXh0KCkpOwotCi0gICAgZGlkTXV0YXRlKGNoYW5nZWQgPyBQcm9wZXJ0eUNoYW5nZWQgOiBOb0No
YW5nZXMpOworICAgICAgICByZXR1cm4geyB9OwogCi0gICAgaWYgKGNoYW5nZWQpCisgICAgaWYg
KG1fcHJvcGVydHlTZXQtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQs
IGNzc1BhcnNlckNvbnRleHQoKSkpIHsKKyAgICAgICAgZGlkTXV0YXRlKFByb3BlcnR5Q2hhbmdl
ZCk7CiAgICAgICAgIG11dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7Ci0gICAg
cmV0dXJuIGNoYW5nZWQ7CisgICAgfSBlbHNlCisgICAgICAgIGRpZE11dGF0ZShOb0NoYW5nZXMp
OworICAgICAgICAKKyAgICByZXR1cm4geyB9OwogfQogCiBSZWZQdHI8RGVwcmVjYXRlZENTU09N
VmFsdWU+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6d3JhcEZvckRlcHJlY2F0ZWRD
U1NPTShDU1NWYWx1ZSogaW50ZXJuYWxWYWx1ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDI3MzYz
MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNldENzc1RleHQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUmVmUHRyPENT
U1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgZmluYWw7
CiAgICAgU3RyaW5nIGdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSBmaW5h
bDsKLSAgICBFeGNlcHRpb25Pcjxib29sPiBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5
SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50KSBmaW5hbDsKKyAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0
cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50KSBmaW5hbDsKICAgICAKICAgICBSZWY8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25zdCBmaW5hbDsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9tYWtlcHJvcC5wbAkocmV2aXNpb24gMjczNjMzKQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL21ha2Vwcm9wLnBsCSh3b3JraW5nIGNvcHkpCkBAIC0xMzU4LDMgKzEzNTgsMTU1IEBAIGlm
IChub3QgJGdwZXJmKSB7CiAgICAgJGdwZXJmID0gJEVOVntHUEVSRn0gPyAkRU5We0dQRVJGfSA6
ICJncGVyZiI7CiB9CiBzeXN0ZW0oIlwiJGdwZXJmXCIgLS1rZXktcG9zaXRpb25zPVwiKlwiIC1E
IC1uIC1zIDIgQ1NTUHJvcGVydHlOYW1lcy5ncGVyZiAtLW91dHB1dC1maWxlPUNTU1Byb3BlcnR5
TmFtZXMuY3BwIikgPT0gMCB8fCBkaWUgImNhbGxpbmcgZ3BlcmYgZmFpbGVkOiAkPyI7CisKKyMg
R2VuZXJhdGUgQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmlkbAorCisjIGh0dHBz
Oi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jY3NzLXByb3BlcnR5LXRvLWlkbC1hdHRyaWJ1dGUK
K3N1YiBjc3NQcm9wZXJ0eVRvSURMQXR0cmlidXRlKCQkJCkKK3sKKyAgICBteSAkcHJvcGVydHkg
PSBzaGlmdDsKKyAgICBteSAkbG93ZXJjYXNlRmlyc3QgPSBzaGlmdDsKKyAgICBteSAkdXBwZXJj
YXNlRmlyc3QgPSBzaGlmdDsKKworICAgIG15ICRvdXRwdXQgPSAiIjsKKyAgICBteSAkdXBwZXJj
YXNlTmV4dCA9ICR1cHBlcmNhc2VGaXJzdDsKKworICAgIGlmICgkbG93ZXJjYXNlRmlyc3QpIHsK
KyAgICAgICAgJHByb3BlcnR5ID0gc3Vic3RyKCRwcm9wZXJ0eSwgMSk7CisgICAgfQorCisgICAg
Zm9yZWFjaCBteSAkY2hhcmFjdGVyIChzcGxpdCAvLywgJHByb3BlcnR5KSB7CisgICAgICAgIGlm
ICgkY2hhcmFjdGVyIGVxICItIikgeworICAgICAgICAgICAgJHVwcGVyY2FzZU5leHQgPSAxOwor
ICAgICAgICB9IGVsc2lmICgkdXBwZXJjYXNlTmV4dCkgeworICAgICAgICAgICAgJHVwcGVyY2Fz
ZU5leHQgPSAwOworICAgICAgICAgICAgJG91dHB1dCAuPSB1YyAkY2hhcmFjdGVyOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgJG91dHB1dCAuPSAkY2hhcmFjdGVyOworICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuICRvdXRwdXQ7Cit9CisKK215ICVuYW1lc0FuZEFsaWFzZXNU
b05hbWU7Citmb3JlYWNoIG15ICRuYW1lIChAbmFtZXMpIHsKKyAgICBpZiAoZ3JlcCB7ICRfIGVx
ICRuYW1lIH0gQGludGVybmFsUHJvcHJlcnRpZXMpIHsKKyAgICAgICAgbmV4dDsKKyAgICB9Cisg
ICAgJG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX0gPSAkbmFtZTsKKyAgICBmb3IgbXkgJGFs
aWFzIChAeyRuYW1lVG9BbGlhc2VzeyRuYW1lfX0pIHsKKyAgICAgICAgJG5hbWVzQW5kQWxpYXNl
c1RvTmFtZXskYWxpYXN9ID0gJG5hbWU7CisgICAgfQorfQorbXkgQG5hbWVzQW5kQWxpYXNlcyA9
IHNvcnQga2V5cyglbmFtZXNBbmRBbGlhc2VzVG9OYW1lKTsKKworb3BlbiBDU1NfU1RZTEVfREVD
TEFSQVRJT05fUFJPUEVSVFlfTkFNRVNfSURMLCAiPiIsICJDU1NTdHlsZURlY2xhcmF0aW9uK1By
b3BlcnR5TmFtZXMuaWRsIiBvciBkaWUgIkNvdWxkIG5vdCBvcGVuIENTU1N0eWxlRGVjbGFyYXRp
b24rUHJvcGVydHlOYW1lcy5pZGwgZm9yIHdyaXRpbmdcbiI7CitwcmludCBDU1NfU1RZTEVfREVD
TEFSQVRJT05fUFJPUEVSVFlfTkFNRVNfSURMIDw8ICJFT0YiOworLy8gVGhpcyBmaWxlIGlzIGF1
dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gJGlucHV0RmlsZSBieSB0aGUgbWFrZXByb3AucGwg
c2NyaXB0LiBEbyBub3QgZWRpdCBpdC4KKwordHlwZWRlZiBVU1ZTdHJpbmcgQ1NTT01TdHJpbmc7
CisKK3BhcnRpYWwgaW50ZXJmYWNlIENTU1N0eWxlRGVjbGFyYXRpb24geworCisjaWYgZGVmaW5l
ZChFTkFCTEVfQVRUUklCVVRFX0JBU0VEX1BST1BFUlRJRVNfRk9SX0NTU19TVFlMRV9ERUNMQVJB
VElPTikgJiYgRU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVf
REVDTEFSQVRJT04KKworRU9GCisKK3ByaW50IENTU19TVFlMRV9ERUNMQVJBVElPTl9QUk9QRVJU
WV9OQU1FU19JREwgPDwgIkVPRiI7CisgICAgLy8gRm9yIGVhY2ggQ1NTIHByb3BlcnR5IHByb3Bl
cnR5IHRoYXQgaXMgYSBzdXBwb3J0ZWQgQ1NTIHByb3BlcnR5LCB0aGUgZm9sbG93aW5nCisgICAg
Ly8gcGFydGlhbCBpbnRlcmZhY2UgYXBwbGllcyB3aGVyZSBjYW1lbC1jYXNlZCBhdHRyaWJ1dGUg
aXMgb2J0YWluZWQgYnkgcnVubmluZyB0aGUKKyAgICAvLyBDU1MgcHJvcGVydHkgdG8gSURMIGF0
dHJpYnV0ZSBhbGdvcml0aG0gZm9yIHByb3BlcnR5LgorICAgIC8vIEV4YW1wbGU6IGZvbnQtc2l6
ZSAtPiBlbGVtZW50LnN0eWxlLmZvbnRTaXplCisgICAgLy8gRXhhbXBsZTogLXdlYmtpdC10cmFu
c2Zvcm0gLT4gZWxlbWVudC5zdHlsZS5XZWJraXRUcmFuc2Zvcm0KKyAgICAvLyBbQ0VSZWFjdGlv
bnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09NU3RyaW5nIF9jYW1l
bF9jYXNlZF9hdHRyaWJ1dGU7CitFT0YKKworZm9yZWFjaCBteSAkbmFtZU9yQWxpYXMgKEBuYW1l
c0FuZEFsaWFzZXMpIHsKKyAgICBteSAkY2FtZWxDYXNlZEF0dHJpYnV0ZU5hbWUgPSBjc3NQcm9w
ZXJ0eVRvSURMQXR0cmlidXRlKCRuYW1lT3JBbGlhcywgMCwgMCk7CisgICAgbXkgJG5hbWUgPSAk
bmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lT3JBbGlhc307CisgICAgbXkgJHByb3BlcnR5SWQg
PSAkbmFtZVRvSWR7JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19OworCisgICAgbXkgQGV4
dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3BlcnR5SWR9Iik7Cisg
ICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQnlTZXR0aW5nPSR7c2V0
dGluZ3NGbGFnc3skbmFtZX19IikgaWYgJHNldHRpbmdzRmxhZ3N7JG5hbWV9OworICAgIHB1c2go
QGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEF0UnVudGltZT0ke3J1bnRpbWVGbGFn
c3skbmFtZX19IikgaWYgJHJ1bnRpbWVGbGFnc3skbmFtZX07CisgICAgbXkgJGV4dGVuZGVkQXR0
cmlidXRlcyA9IGpvaW4oIiwgIiwgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzKTsKKworICAgIHBy
aW50IENTU19TVFlMRV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwgIiAgICBbQ0VSZWFj
dGlvbnMsICR7ZXh0ZW5kZWRBdHRyaWJ1dGVzfV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ10gQ1NTT01TdHJpbmcgJHtjYW1lbENhc2VkQXR0cmlidXRlTmFtZX07XG4iOworfQor
CitwcmludCBDU1NfU1RZTEVfREVDTEFSQVRJT05fUFJPUEVSVFlfTkFNRVNfSURMIDw8ICJFT0Yi
OworCisgICAgLy8gRm9yIGVhY2ggQ1NTIHByb3BlcnR5IHByb3BlcnR5IHRoYXQgaXMgYSBzdXBw
b3J0ZWQgQ1NTIHByb3BlcnR5IGFuZCB0aGF0IGJlZ2lucworICAgIC8vIHdpdGggdGhlIHN0cmlu
ZyAtd2Via2l0LSwgdGhlIGZvbGxvd2luZyBwYXJ0aWFsIGludGVyZmFjZSBhcHBsaWVzIHdoZXJl
IHdlYmtpdC1jYXNlZAorICAgIC8vIGF0dHJpYnV0ZSBpcyBvYnRhaW5lZCBieSBydW5uaW5nIHRo
ZSBDU1MgcHJvcGVydHkgdG8gSURMIGF0dHJpYnV0ZSBhbGdvcml0aG0gZm9yCisgICAgLy8gcHJv
cGVydHksIHdpdGggdGhlIGxvd2VyY2FzZSBmaXJzdCBmbGFnIHNldC4KKyAgICAvLyBFeGFtcGxl
OiAtd2Via2l0LXRyYW5zZm9ybSAtPiBlbGVtZW50LnN0eWxlLndlYmtpdFRyYW5zZm9ybQorICAg
IC8vIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gQ1NT
T01TdHJpbmcgX3dlYmtpdF9jYXNlZF9hdHRyaWJ1dGU7CitFT0YKKworZm9yZWFjaCBteSAkbmFt
ZU9yQWxpYXMgKGdyZXAgeyAkXyA9fiAvXlwtd2Via2l0XC0vIH0gQG5hbWVzQW5kQWxpYXNlcykg
eworICAgIG15ICR3ZWJraXRDYXNlZEF0dHJpYnV0ZU5hbWUgPSBjc3NQcm9wZXJ0eVRvSURMQXR0
cmlidXRlKCRuYW1lT3JBbGlhcywgMSwgMCk7CisgICAgbXkgJG5hbWUgPSAkbmFtZXNBbmRBbGlh
c2VzVG9OYW1leyRuYW1lT3JBbGlhc307CisgICAgbXkgJHByb3BlcnR5SWQgPSAkbmFtZVRvSWR7
JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19OworCisgICAgbXkgQGV4dGVuZGVkQXR0cmli
dXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3BlcnR5SWR9Iik7CisgICAgcHVzaChAZXh0
ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQnlTZXR0aW5nPSR7c2V0dGluZ3NGbGFnc3sk
bmFtZX19IikgaWYgJHNldHRpbmdzRmxhZ3N7JG5hbWV9OworICAgIHB1c2goQGV4dGVuZGVkQXR0
cmlidXRlVmFsdWVzLCAiRW5hYmxlZEF0UnVudGltZT0ke3J1bnRpbWVGbGFnc3skbmFtZX19Iikg
aWYgJHJ1bnRpbWVGbGFnc3skbmFtZX07CisgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9IGpv
aW4oIiwgIiwgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzKTsKKworICAgIHByaW50IENTU19TVFlM
RV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwgIiAgICBbQ0VSZWFjdGlvbnMsICR7ZXh0
ZW5kZWRBdHRyaWJ1dGVzfV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gQ1NT
T01TdHJpbmcgJHt3ZWJraXRDYXNlZEF0dHJpYnV0ZU5hbWV9O1xuIjsKK30KKworcHJpbnQgQ1NT
X1NUWUxFX0RFQ0xBUkFUSU9OX1BST1BFUlRZX05BTUVTX0lETCA8PCAiRU9GIjsKKworICAgIC8v
IEZvciBlYWNoIENTUyBwcm9wZXJ0eSBwcm9wZXJ0eSB0aGF0IGlzIGEgc3VwcG9ydGVkIENTUyBw
cm9wZXJ0eSwgZXhjZXB0IGZvcgorICAgIC8vIHByb3BlcnRpZXMgdGhhdCBoYXZlIG5vICItIiAo
VSswMDJEKSBpbiB0aGUgcHJvcGVydHkgbmFtZSwgdGhlIGZvbGxvd2luZyBwYXJ0aWFsCisgICAg
Ly8gaW50ZXJmYWNlIGFwcGxpZXMgd2hlcmUgZGFzaGVkIGF0dHJpYnV0ZSBpcyBwcm9wZXJ0eS4K
KyAgICAvLyBFeGFtcGxlOiBmb250LXNpemUgLT4gZWxlbWVudC5zdHlsZVsnZm9udC1zaXplJ10K
KyAgICAvLyBFeGFtcGxlOiAtd2Via2l0LXRyYW5zZm9ybSAtPiBlbGVtZW50LnN0eWxlLlsnLXdl
YmtpdC10cmFuc2Zvcm0nXQorICAgIC8vIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgX2Rhc2hlZF9hdHRyaWJ1dGU7CitFT0YKK2Zv
cmVhY2ggbXkgJG5hbWVPckFsaWFzIChncmVwIHsgJF8gPX4gL1wtLyB9IEBuYW1lc0FuZEFsaWFz
ZXMpIHsKKyAgICBteSAkZGFzaGVkQXR0cmlidXRlTmFtZSA9ICRuYW1lT3JBbGlhczsKKyAgICBt
eSAkbmFtZSA9ICRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5hbWVPckFsaWFzfTsKKyAgICBteSAk
cHJvcGVydHlJZCA9ICRuYW1lVG9JZHskbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lfX07CisK
KyAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMgPSAoIkNTU1Byb3BlcnR5PSR7cHJvcGVy
dHlJZH0iKTsKKyAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVuYWJsZWRCeVNl
dHRpbmc9JHtzZXR0aW5nc0ZsYWdzeyRuYW1lfX0iKSBpZiAkc2V0dGluZ3NGbGFnc3skbmFtZX07
CisgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQXRSdW50aW1lPSR7
cnVudGltZUZsYWdzeyRuYW1lfX0iKSBpZiAkcnVudGltZUZsYWdzeyRuYW1lfTsKKyAgICBteSAk
ZXh0ZW5kZWRBdHRyaWJ1dGVzID0gam9pbigiLCAiLCBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMp
OworCisgICAgcHJpbnQgQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OX1BST1BFUlRZX05BTUVTX0lETCAi
ICAgIFtDRVJlYWN0aW9ucywgJHtleHRlbmRlZEF0dHJpYnV0ZXN9XSBhdHRyaWJ1dGUgW0xlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nXSBDU1NPTVN0cmluZyAke2Rhc2hlZEF0dHJpYnV0ZU5hbWV9O1xu
IjsKK30KKworIyBFdmVyeXRoaW5nIGJlbG93IGhlcmUgaXMgbm9uLXN0YW5kYXJkLgorCitwcmlu
dCBDU1NfU1RZTEVfREVDTEFSQVRJT05fUFJPUEVSVFlfTkFNRVNfSURMIDw8ICJFT0YiOworCisg
ICAgLy8gTm9uLXN0YW5kYXJkLiBTcGVjaWFsIGNhc2UgcHJvcGVydGllcyBzdGFydGluZyB3aXRo
IC1lcHViLSBsaWtlIGlzIGRvbmUgZm9yCisgICAgLy8gLXdlYmtpdC0sIHdoZXJlIGF0dHJpYnV0
ZSBpcyBvYnRhaW5lZCBieSBydW5uaW5nIHRoZSBDU1MgcHJvcGVydHkgdG8gSURMIGF0dHJpYnV0
ZQorICAgIC8vIGFsZ29yaXRobSBmb3IgcHJvcGVydHksIHdpdGggdGhlIGxvd2VyY2FzZSBmaXJz
dCBmbGFnIHNldC4KKyAgICAvLyBFeGFtcGxlOiAtZXB1Yi1jYXB0aW9uLXNpZGUgLT4gZWxlbWVu
dC5zdHlsZS5lcHViQ2FwdGlvblNpZGUKK0VPRgorZm9yZWFjaCBteSAkbmFtZU9yQWxpYXMgKGdy
ZXAgeyAkXyA9fiAvXlwtZXB1YlwtLyB9IEBuYW1lc0FuZEFsaWFzZXMpIHsKKyAgICBteSAkZXB1
YkNhc2VkQXR0cmlidXRlTmFtZSA9IGNzc1Byb3BlcnR5VG9JRExBdHRyaWJ1dGUoJG5hbWVPckFs
aWFzLCAxLCAwKTsKKyAgICBteSAkbmFtZSA9ICRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5hbWVP
ckFsaWFzfTsKKyAgICBteSAkcHJvcGVydHlJZCA9ICRuYW1lVG9JZHskbmFtZXNBbmRBbGlhc2Vz
VG9OYW1leyRuYW1lfX07CisKKyAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMgPSAoIkNT
U1Byb3BlcnR5PSR7cHJvcGVydHlJZH0iKTsKKyAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZh
bHVlcywgIkVuYWJsZWRCeVNldHRpbmc9JHtzZXR0aW5nc0ZsYWdzeyRuYW1lfX0iKSBpZiAkc2V0
dGluZ3NGbGFnc3skbmFtZX07CisgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJF
bmFibGVkQXRSdW50aW1lPSR7cnVudGltZUZsYWdzeyRuYW1lfX0iKSBpZiAkcnVudGltZUZsYWdz
eyRuYW1lfTsKKyAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gam9pbigiLCAiLCBAZXh0ZW5k
ZWRBdHRyaWJ1dGVWYWx1ZXMpOworCisgICAgcHJpbnQgQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OX1BS
T1BFUlRZX05BTUVTX0lETCAiICAgIFtDRVJlYWN0aW9ucywgJHtleHRlbmRlZEF0dHJpYnV0ZXN9
XSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBDU1NPTVN0cmluZyAke2VwdWJD
YXNlZEF0dHJpYnV0ZU5hbWV9O1xuIjsKK30KKworcHJpbnQgQ1NTX1NUWUxFX0RFQ0xBUkFUSU9O
X1BST1BFUlRZX05BTUVTX0lETCA8PCAiRU9GIjsKKworI2VuZGlmCit9OworCitFT0YKKworY2xv
c2UgQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OX1BST1BFUlRZX05BTUVTX0lETDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>