<?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>218302</bug_id>
          
          <creation_ts>2020-10-28 11:46:50 -0700</creation_ts>
          <short_desc>Rename build.webkit.org-config directory to build-webkit-org</short_desc>
          <delta_ts>2021-02-08 07:37:49 -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>Tools / Tests</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=218026</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>175056</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Aakash Jain">aakash_jain</reporter>
          <assigned_to name="Aakash Jain">aakash_jain</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>clopez</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>fujii</cc>
    
    <cc>jbedard</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>stephan.szabo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1702424</commentid>
    <comment_count>0</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-28 11:46:50 -0700</bug_when>
    <thetext>We should rename &quot;build.webkit.org-config&quot; directory inside Tools/CISupport to &quot;build-webkit-org&quot; to make the name more readable.

Note that &quot;build.webkit.org&quot; directory name isn&apos;t a good option, since in the long-term we want to run build.webkit.org unit-tests using test-webkitpy script and that requires directory name to not have dots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702425</commentid>
    <comment_count>1</comment_count>
      <attachid>412555</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-28 11:50:04 -0700</bug_when>
    <thetext>Created attachment 412555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702429</commentid>
    <comment_count>2</comment_count>
      <attachid>412555</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-28 11:52:36 -0700</bug_when>
    <thetext>Comment on attachment 412555
Patch

Are we doing anything with symlinks here? Do we need to?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702431</commentid>
    <comment_count>3</comment_count>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2020-10-28 11:58:43 -0700</bug_when>
    <thetext>Are the files that didn&apos;t seem to move in the patch (like the README) unnecessary now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702433</commentid>
    <comment_count>4</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-28 12:04:03 -0700</bug_when>
    <thetext>(In reply to Stephan Szabo from comment #3)
&gt; Are the files that didn&apos;t seem to move in the patch (like the README) unnecessary now?
I did &quot;svn mv build.webkit.org-config build-webkit-org&quot;. So there shouldn&apos;t be any such files. README is also moved in this patch. Maybe the patch review UI doesn&apos;t show it properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702434</commentid>
    <comment_count>5</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-28 12:08:29 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #2)
&gt; Are we doing anything with symlinks here? Do we need to?
Doesn&apos;t look like we need to create symlink for this. There aren&apos;t much external directories referencing this. 

build-webkit-org/steps.py reference it in RunDashboardTests and ews-build/steps.py reference it in RunBuildWebKitOrgUnitTests. For those we can just restart Buildbot to pick up new location.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702481</commentid>
    <comment_count>6</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-28 13:56:39 -0700</bug_when>
    <thetext>Committed r269120: &lt;https://trac.webkit.org/changeset/269120&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702482</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-28 13:57:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/70778907&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702484</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-10-28 14:04:58 -0700</bug_when>
    <thetext>(In reply to Aakash Jain from comment #0)
&gt; Note that &quot;build.webkit.org&quot; directory name isn&apos;t a good option, since in
&gt; the long-term we want to run build.webkit.org unit-tests using test-webkitpy
&gt; script and that requires directory name to not have dots.

It would be great to run the buildbot unit-tests with test-webkitpy :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702911</commentid>
    <comment_count>9</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-29 16:04:25 -0700</bug_when>
    <thetext>Restarted build.webkit.org to pick up this change. Seems to be working fine.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412555</attachid>
            <date>2020-10-28 11:50:04 -0700</date>
            <delta_ts>2020-10-28 11:52:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218302-20201028145002.patch</filename>
            <type>text/plain</type>
            <size>1839114</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2OTExMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI1IEBACisyMDIwLTEwLTI4ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZW5hbWUgYnVpbGQud2Via2l0Lm9yZy1jb25maWcgZGlyZWN0b3J5IHRv
IGJ1aWxkLXdlYmtpdC1vcmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxODMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogQ0lTdXBwb3J0L2J1aWxkLXdlYmtpdC1vcmc6IENvcGllZCBmcm9tIFRvb2xz
L0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy4KKyAgICAgICAgKiBDSVN1cHBvcnQv
YnVpbGQtd2Via2l0LW9yZy9odGRpZ2VzdHBhcnNlcl91bml0dGVzdC5weToKKyAgICAgICAgKiBD
SVN1cHBvcnQvYnVpbGQtd2Via2l0LW9yZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9idWlsZGVyc191bml0dGVzdHMuanM6CisgICAgICAgICogQ0lTdXBwb3J0L2J1aWxkLXdlYmtp
dC1vcmcvc3RlcHMucHk6CisgICAgICAgICogQ0lTdXBwb3J0L2J1aWxkLXdlYmtpdC1vcmcvc3Rl
cHNfdW5pdHRlc3QucHk6CisgICAgICAgICogQ0lTdXBwb3J0L2J1aWxkLXdlYmtpdC1vcmcvd2ti
dWlsZC5weToKKyAgICAgICAgKiBDSVN1cHBvcnQvYnVpbGQtd2Via2l0LW9yZy93a2J1aWxkX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAqIENJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZzog
UmVtb3ZlZC4KKyAgICAgICAgKiBDSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5OgorICAgICAg
ICAqIENJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2Ny
aXB0cy9ydW4tZGFzaGJvYXJkLXRlc3RzOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3ZpZXdzL2J1aWxkYm90X3Jlc3VsdHMucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlci5weToKKwogMjAyMC0xMC0yOCAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIFByZWZlcmVuY2Ug
T3ZlcnJpZGUgTWV0aG9kczogVGFic1RvTGlua3MvU3BhdGlhbE5hdmlnYXRpb24KSW5kZXg6IFRv
b2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9NYWtlZmlsZQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvTWFrZWZpbGUJKHJl
dmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9NYWtlZmlsZQkobm9uZXhpc3RlbnQpCkBAIC0xLDE5ICswLDAgQEAKLSMgLSotIG1ha2VmaWxl
IC0qLQotCi0jIFRoaXMgaXMgYSBzaW1wbGUgbWFrZWZpbGUgd2hpY2ggbGl2ZXMgaW4gYSBidWls
ZG1hc3Rlci9idWlsZHNsYXZlCi0jIGRpcmVjdG9yeSAobmV4dCB0byB0aGUgYnVpbGRib3QudGFj
IGZpbGUpLiBJdCBhbGxvd3MgeW91IHRvIHN0YXJ0L3N0b3AgdGhlCi0jIG1hc3RlciBvciBzbGF2
ZSBieSBkb2luZyAnbWFrZSBzdGFydCcgb3IgJ21ha2Ugc3RvcCcuCi0KLSMgVGhlICdyZWNvbmZp
ZycgdGFyZ2V0IHdpbGwgdGVsbCBhIGJ1aWxkbWFzdGVyIHRvIHJlbG9hZCBpdHMgY29uZmlnIGZp
bGUuCi0KLXN0YXJ0OgotCS9vcHQvbG9jYWwvYmluL3R3aXN0ZDIuNSAtLW5vX3NhdmUgLXkgYnVp
bGRib3QudGFjCi0KLXN0b3A6Ci0Ja2lsbCBgY2F0IHR3aXN0ZC5waWRgCi0KLXJlY29uZmlnOgot
CWtpbGwgLUhVUCBgY2F0IHR3aXN0ZC5waWRgCi0KLWxvZzoKLQl0YWlsIC1mIHR3aXN0ZC5sb2cK
SW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9SRUFETUUKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL1JFQURN
RQkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL1JFQURNRQkobm9uZXhpc3RlbnQpCkBAIC0xLDIgKzAsMCBAQAotTm90ZTogVGhpcyBk
aXJlY3RvcnkgaXMgKm5vdCogYXV0b21hdGljYWxseSBzeW5jaHJvbml6ZWQgd2l0aCBTdWJ2ZXJz
aW9uIHZpYSBhIHBvc3QtY29tbWl0IGhvb2suCi1BbnkgY2hhbmdlcyBtYWRlIHRvIGNvZGUgd2l0
aGluIHRoaXMgZGlyZWN0b3J5IHdpbGwgbmVlZCB0byBiZSBtYW51YWxseSBwdXNoZWQgdG8gYnVp
bGQud2Via2l0Lm9yZy4KSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9idWlsZGJvdC50YWMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL2J1aWxkYm90LnRhYwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMv
Q0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2J1aWxkYm90LnRhYwkobm9uZXhpc3Rl
bnQpCkBAIC0xLDMxICswLDAgQEAKLWltcG9ydCBvcwotCi1VU0VfQlVJTERCT1RfVkVSU0lPTjIg
PSBvcy5nZXRlbnYoJ1VTRV9CVUlMREJPVF9WRVJTSU9OMicpIGlzIG5vdCBOb25lCi0KLWZyb20g
dHdpc3RlZC5hcHBsaWNhdGlvbiBpbXBvcnQgc2VydmljZQotZnJvbSBidWlsZGJvdC5tYXN0ZXIg
aW1wb3J0IEJ1aWxkTWFzdGVyCi0KLWJhc2VkaXIgPSAnLicKLWlmIFVTRV9CVUlMREJPVF9WRVJT
SU9OMjoKLSAgICBjb25maWdmaWxlID0gcidtYXN0ZXJfYnVpbGRib3QyLmNmZycKLWVsc2U6Ci0g
ICAgY29uZmlnZmlsZSA9IHInbWFzdGVyLmNmZycKLXJvdGF0ZUxlbmd0aCA9IDUwMDAwMDAwCi1t
YXhSb3RhdGVkRmlsZXMgPSAyMAotdW1hc2sgPSAwbzAyMgotCi1pZiBiYXNlZGlyID09ICcuJzoK
LSAgICBiYXNlZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykp
Ci0KLWFwcGxpY2F0aW9uID0gc2VydmljZS5BcHBsaWNhdGlvbignYnVpbGRtYXN0ZXInKQotdHJ5
OgotICBmcm9tIHR3aXN0ZWQucHl0aG9uLmxvZ2ZpbGUgaW1wb3J0IExvZ0ZpbGUKLSAgZnJvbSB0
d2lzdGVkLnB5dGhvbi5sb2cgaW1wb3J0IElMb2dPYnNlcnZlciwgRmlsZUxvZ09ic2VydmVyCi0g
IGxvZ2ZpbGUgPSBMb2dGaWxlLmZyb21GdWxsUGF0aCgidHdpc3RkLmxvZyIsIHJvdGF0ZUxlbmd0
aD1yb3RhdGVMZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhSb3Rh
dGVkRmlsZXM9bWF4Um90YXRlZEZpbGVzKQotICBhcHBsaWNhdGlvbi5zZXRDb21wb25lbnQoSUxv
Z09ic2VydmVyLCBGaWxlTG9nT2JzZXJ2ZXIobG9nZmlsZSkuZW1pdCkKLWV4Y2VwdCBJbXBvcnRF
cnJvcjoKLSAgIyBwcm9iYWJseSBub3QgeWV0IHR3aXN0ZWQgOC4yLjAgYW5kIGJleW9uZCwgY2Fu
J3Qgc2V0IGxvZyB5ZXQKLSAgcGFzcwotQnVpbGRNYXN0ZXIoYmFzZWRpciwgY29uZmlnZmlsZSku
c2V0U2VydmljZVBhcmVudChhcHBsaWNhdGlvbikKLQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL2NvbW1pdHRlcl9hdXRoLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9jb21taXR0ZXJfYXV0aC5weQko
cmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL2NvbW1pdHRlcl9hdXRoLnB5CShub25leGlzdGVudCkKQEAgLTEsMTE1ICswLDAgQEAKLSMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiQW4gaW1wbGVtZW50YXRp
b24gb2YgYnVpbGRib3Quc3RhdHVzLndlYi5hdXRoLklBdXRoIGZvciBhdXRoZW50aWNhdGluZyBX
ZWJLaXQgY29tbWl0dGVycyIiIgotCi1pbXBvcnQgQ29uZmlnUGFyc2VyCi1pbXBvcnQgYnVpbGRi
b3Quc3RhdHVzLndlYi5hdXRoCi1pbXBvcnQganNvbgotaW1wb3J0IHpvcGUuaW50ZXJmYWNlCi0K
LWZyb20gaHRkaWdlc3RwYXJzZXIgaW1wb3J0IEhURGlnZXN0UGFyc2VyCi0KLQotY2xhc3MgRXJy
b3IoRXhjZXB0aW9uKToKLSAgICBwYXNzCi0KLQotY2xhc3MgQ29tbWl0dGVyQXV0aChidWlsZGJv
dC5zdGF0dXMud2ViLmF1dGguQXV0aEJhc2UpOgotICAgIHpvcGUuaW50ZXJmYWNlLmltcGxlbWVu
dHMoYnVpbGRib3Quc3RhdHVzLndlYi5hdXRoLklBdXRoKQotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIGF1dGhfanNvbl9maWxlbmFtZSk6Ci0gICAgICAgIHNlbGYuX2F1dGhfanNvbl9maWxlbmFt
ZSA9IGF1dGhfanNvbl9maWxlbmFtZQotCi0gICAgZGVmIGF1dGhfanNvbihzZWxmKToKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW5fYXV0aF9qc29uX2ZpbGUoKSBhcyBm
OgotICAgICAgICAgICAgICAgIHJldHVybiBqc29uLmxvYWQoZikKLSAgICAgICAgZXhjZXB0IElP
RXJyb3IgYXMgZToKLSAgICAgICAgICAgIHJhaXNlIEVycm9yKCdFcnJvciBvcGVuaW5nIGF1dGgu
anNvbiBmaWxlOiB7MH0nLmZvcm1hdChlLnN0cmVycm9yKSkKLSAgICAgICAgZXhjZXB0IFZhbHVl
RXJyb3IgYXMgZToKLSAgICAgICAgICAgIHJhaXNlIEVycm9yKCdFcnJvciBwYXJzaW5nIGF1dGgu
anNvbiBmaWxlOiB7MH0nLmZvcm1hdChlLm1lc3NhZ2UpKQotCi0gICAgZGVmIGF1dGhfanNvbl9m
aWxlbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2F1dGhfanNvbl9maWxlbmFtZQot
Ci0gICAgZGVmIGF1dGhlbnRpY2F0ZShzZWxmLCB1c2VybmFtZSwgcGFzc3dvcmQpOgotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5pc193ZWJraXRfY29tbWl0dGVyKHVzZXJu
YW1lKSBhbmQgc2VsZi5pc193ZWJraXRfdHJhY191c2VyKHVzZXJuYW1lLCBwYXNzd29yZCkKLSAg
ICAgICAgZXhjZXB0IEVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmVyciA9IGUuYXJnc1sw
XQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgaXNfd2Via2l0X2NvbW1pdHRl
cihzZWxmLCB1c2VybmFtZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIHVzZXJuYW1l
IG5vdCBpbiBzZWxmLndlYmtpdF9jb21taXR0ZXJzKCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5l
cnIgPSAnSW52YWxpZCB1c2VybmFtZS9wYXNzd29yZCcKLSAgICAgICAgICAgICAgICByZXR1cm4g
RmFsc2UKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGV4Y2VwdCBDb25maWdQYXJz
ZXIuRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBFcnJvcignRXJyb3IgcGFyc2luZyBXZWJLaXQg
Y29tbWl0dGVycyBmaWxlJykKLSAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKLSAgICAgICAg
ICAgIHJhaXNlIEVycm9yKCdFcnJvciBvcGVuaW5nIFdlYktpdCBjb21taXR0ZXJzIGZpbGU6IHsw
fScuZm9ybWF0KGUuc3RyZXJyb3IpKQotCi0gICAgZGVmIGlzX3dlYmtpdF90cmFjX3VzZXIoc2Vs
ZiwgdXNlcm5hbWUsIHBhc3N3b3JkKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBz
ZWxmLm9wZW5fdHJhY19jcmVkZW50aWFsc19maWxlKCkgYXMgZjoKLSAgICAgICAgICAgICAgICBo
dGRpZ2VzdCA9IEhURGlnZXN0UGFyc2VyKGYpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6
Ci0gICAgICAgICAgICByYWlzZSBFcnJvcignRXJyb3Igb3BlbmluZyBUcmFjIGNyZWRlbnRpYWxz
IGZpbGU6IHswfScuZm9ybWF0KGUuc3RyZXJyb3IpKQotCi0gICAgICAgIGlmIG5vdCBodGRpZ2Vz
dC5lbnRyaWVzKCk6Ci0gICAgICAgICAgICByYWlzZSBFcnJvcignRXJyb3IgcGFyc2luZyBUcmFj
IGNyZWRlbnRpYWxzIGZpbGUnKQotCi0gICAgICAgIGlmIG5vdCBodGRpZ2VzdC5hdXRoZW50aWNh
dGUodXNlcm5hbWUsICdNYWMgT1MgRm9yZ2UnLCBwYXNzd29yZCk6Ci0gICAgICAgICAgICBzZWxm
LmVyciA9ICdJbnZhbGlkIHVzZXJuYW1lL3Bhc3N3b3JkJwotICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCi0KLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICMgVGhlc2UgdGhyZWUgbWV0aG9kcyBl
eGlzdCBmb3IgZWFzZSBvZiB0ZXN0aW5nLgotICAgIGRlZiBvcGVuX2F1dGhfanNvbl9maWxlKHNl
bGYpOgotICAgICAgICByZXR1cm4gb3BlbihzZWxmLmF1dGhfanNvbl9maWxlbmFtZSgpKQotCi0g
ICAgZGVmIG9wZW5fdHJhY19jcmVkZW50aWFsc19maWxlKHNlbGYpOgotICAgICAgICByZXR1cm4g
b3BlbihzZWxmLnRyYWNfY3JlZGVudGlhbHNfZmlsZW5hbWUoKSkKLQotICAgIGRlZiBvcGVuX3dl
YmtpdF9jb21taXR0ZXJzX2ZpbGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBvcGVuKHNlbGYud2Vi
a2l0X2NvbW1pdHRlcnNfZmlsZW5hbWUoKSkKLQotICAgIGRlZiB0cmFjX2NyZWRlbnRpYWxzX2Zp
bGVuYW1lKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5hdXRo
X2pzb24oKVsndHJhY19jcmVkZW50aWFscyddCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAg
ICAgICAgICAgIHJhaXNlIEVycm9yKCdhdXRoLmpzb24gZmlsZSBpcyBtaXNzaW5nICJ0cmFjX2Ny
ZWRlbnRpYWxzIiBrZXknKQotCi0gICAgZGVmIHdlYmtpdF9jb21taXR0ZXJzKHNlbGYpOgotICAg
ICAgICBjb25maWcgPSBDb25maWdQYXJzZXIuUmF3Q29uZmlnUGFyc2VyKCkKLSAgICAgICAgd2l0
aCBzZWxmLm9wZW5fd2Via2l0X2NvbW1pdHRlcnNfZmlsZSgpIGFzIGY6Ci0gICAgICAgICAgICBj
b25maWcucmVhZGZwKGYpCi0gICAgICAgIHJldHVybiBjb25maWcuZ2V0KCdncm91cHMnLCAnd2Vi
a2l0Jykuc3BsaXQoJywnKQotCi0gICAgZGVmIHdlYmtpdF9jb21taXR0ZXJzX2ZpbGVuYW1lKHNl
bGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5hdXRoX2pzb24oKVsn
d2Via2l0X2NvbW1pdHRlcnMnXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAg
ICByYWlzZSBFcnJvcignYXV0aC5qc29uIGZpbGUgaXMgbWlzc2luZyAid2Via2l0X2NvbW1pdHRl
cnMiIGtleScpCkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
Y29tbWl0dGVyX2F1dGhfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2NvbW1pdHRlcl9hdXRoX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
Y29tbWl0dGVyX2F1dGhfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMjAgKzAsMCBA
QAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMg
YXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLWltcG9ydCBTdHJpbmdJTwotaW1wb3J0IF9fYnVpbHRpbl9fCi1pbXBvcnQg
YnVpbGRib3Quc3RhdHVzLndlYi5hdXRoCi1pbXBvcnQgY29udGV4dGxpYgotaW1wb3J0IG9zCi1p
bXBvcnQgdW5pdHRlc3QKLQotZnJvbSBjb21taXR0ZXJfYXV0aCBpbXBvcnQgQ29tbWl0dGVyQXV0
aAotCi0KLSMgVGhpcyBzdWJjbGFzcyBvZiBTdHJpbmdJTyBzdXBwb3J0cyB0aGUgY29udGV4dCBt
YW5hZ2VyIHByb3RvY29sIHNvIGl0IHdvcmtzCi0jIHdpdGggIndpdGgiIHN0YXRlbWVudHMsIGp1
c3QgbGlrZSByZWFsIGZpbGVzLgotY2xhc3MgQ01TdHJpbmdJTyhTdHJpbmdJTy5TdHJpbmdJTyk6
Ci0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRl
ZiBfX2V4aXRfXyhzZWxmLCBleGNlcHRpb24sIHZhbHVlLCB0cmFjZWJhY2spOgotICAgICAgICBz
ZWxmLmNsb3NlKCkKLQotCi1AY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgotZGVmIG9wZW5fb3Zl
cnJpZGUoZnVuYyk6Ci0gICAgb3JpZ2luYWxfb3BlbiA9IF9fYnVpbHRpbl9fLm9wZW4KLSAgICBf
X2J1aWx0aW5fXy5vcGVuID0gZnVuYwotICAgIHlpZWxkCi0gICAgX19idWlsdGluX18ub3BlbiA9
IG9yaWdpbmFsX29wZW4KLQotCi1jbGFzcyBDb21taXR0ZXJBdXRoVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmF1dGggPSBDb21taXR0
ZXJBdXRoKCdwYXRoL3RvL2F1dGguanNvbicpCi0gICAgICAgIHNlbGYuYXV0aC5vcGVuX2F1dGhf
anNvbl9maWxlID0gc2VsZi5mYWtlX2F1dGhfanNvbl9maWxlCi0gICAgICAgIHNlbGYuYXV0aC5v
cGVuX3dlYmtpdF9jb21taXR0ZXJzX2ZpbGUgPSBzZWxmLmZha2VfY29tbWl0dGVyc19maWxlCi0g
ICAgICAgIHNlbGYuYXV0aC5vcGVuX3RyYWNfY3JlZGVudGlhbHNfZmlsZSA9IHNlbGYuZmFrZV9o
dGRpZ2VzdF9maWxlCi0KLSAgICBkZWYgZmFrZV9vcGVuX2Z1bmN0aW9uKHNlbGYsIGV4cGVjdGVk
X2ZpbGVuYW1lKToKLSAgICAgICAgZGVmIGZha2Vfb3BlbihuYW1lLCBtb2RlPSdyJyk6Ci0gICAg
ICAgICAgICBzZWxmLmZha2Vfb3Blbl93YXNfY2FsbGVkID0gVHJ1ZQotICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChleHBlY3RlZF9maWxlbmFtZSwgbmFtZSkKLSAgICAgICAgcmV0dXJuIGZh
a2Vfb3BlbgotCi0gICAgZGVmIHRlc3RfYXV0aGVudGljYXRpb25fc3VjY2VzcyhzZWxmKToKLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuYXV0aC5hdXRoZW50aWNhdGUoJ2NvbW1pdHRlckB3
ZWJraXQub3JnJywgJ2NvbW1pdHRlcnBhc3N3b3JkJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJycsIHNlbGYuYXV0aC5lcnJtc2coKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYu
YXV0aC5hdXRoZW50aWNhdGUoJ2NvbW1pdHRlcjJAZXhhbXBsZS5jb20nLCAnY29tbWl0dGVyMnBh
c3N3b3JkJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIHNlbGYuYXV0aC5lcnJtc2co
KSkKLQotICAgIGRlZiB0ZXN0X2NvbW1pdHRlcl93aXRob3V0X3RyYWNfY3JlZGVudGlhbHNfZmFp
bHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5hdXRoLmF1dGhlbnRpY2F0
ZSgnY29tbWl0dGVyM0B3ZWJraXQub3JnJywgJ2NvbW1pdHRlcjNwYXNzd29yZCcpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdJbnZhbGlkIHVzZXJuYW1lL3Bhc3N3b3JkJywgc2VsZi5hdXRo
LmVycm1zZygpKQotCi0gICAgZGVmIHRlc3RfZmFpbF90b19vcGVuX2F1dGhfanNvbl9maWxlKHNl
bGYpOgotICAgICAgICBkZWYgcmFpc2VfSU9FcnJvcigpOgotICAgICAgICAgICAgcmFpc2UgSU9F
cnJvcigyLCAnTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeScsICdwYXRoL3RvL2F1dGguanNvbicp
Ci0gICAgICAgIGF1dGggPSBDb21taXR0ZXJBdXRoKCdwYXRoL3RvL2F1dGguanNvbicpCi0gICAg
ICAgIGF1dGgub3Blbl9hdXRoX2pzb25fZmlsZSA9IHJhaXNlX0lPRXJyb3IKLSAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShhdXRoLmF1dGhlbnRpY2F0ZSgnY29tbWl0dGVyQHdlYmtpdC5vcmcnLCAn
Y29tbWl0dGVycGFzc3dvcmQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRXJyb3Igb3Bl
bmluZyBhdXRoLmpzb24gZmlsZTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeScsIGF1dGguZXJy
bXNnKCkpCi0KLSAgICBkZWYgdGVzdF9mYWlsX3RvX29wZW5fdHJhY19jcmVkZW50aWFsc19maWxl
KHNlbGYpOgotICAgICAgICBkZWYgcmFpc2VfSU9FcnJvcigpOgotICAgICAgICAgICAgcmFpc2Ug
SU9FcnJvcigyLCAnTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeScsICdwYXRoL3RvL3RyYWMvY3Jl
ZGVudGlhbHMnKQotICAgICAgICBzZWxmLmF1dGgub3Blbl90cmFjX2NyZWRlbnRpYWxzX2ZpbGUg
PSByYWlzZV9JT0Vycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5hdXRoLmF1dGhl
bnRpY2F0ZSgnY29tbWl0dGVyQHdlYmtpdC5vcmcnLCAnY29tbWl0dGVycGFzc3dvcmQnKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRXJyb3Igb3BlbmluZyBUcmFjIGNyZWRlbnRpYWxzIGZp
bGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnknLCBzZWxmLmF1dGguZXJybXNnKCkpCi0KLSAg
ICBkZWYgdGVzdF9mYWlsX3RvX29wZW5fd2Via2l0X2NvbW1pdHRlcnNfZmlsZShzZWxmKToKLSAg
ICAgICAgZGVmIHJhaXNlX0lPRXJyb3IoKToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoMiwg
J05vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnknLCAncGF0aC90by93ZWJraXQvY29tbWl0dGVycycp
Ci0gICAgICAgIHNlbGYuYXV0aC5vcGVuX3dlYmtpdF9jb21taXR0ZXJzX2ZpbGUgPSByYWlzZV9J
T0Vycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5hdXRoLmF1dGhlbnRpY2F0ZSgn
Y29tbWl0dGVyQHdlYmtpdC5vcmcnLCAnY29tbWl0dGVycGFzc3dvcmQnKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnRXJyb3Igb3BlbmluZyBXZWJLaXQgY29tbWl0dGVycyBmaWxlOiBObyBz
dWNoIGZpbGUgb3IgZGlyZWN0b3J5Jywgc2VsZi5hdXRoLmVycm1zZygpKQotCi0gICAgZGVmIHRl
c3RfaW1wbGVtZW50c19JQXV0aChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxk
Ym90LnN0YXR1cy53ZWIuYXV0aC5JQXV0aC5pbXBsZW1lbnRlZEJ5KENvbW1pdHRlckF1dGgpKQot
Ci0gICAgZGVmIHRlc3RfaW52YWxpZF9hdXRoX2pzb25fZmlsZShzZWxmKToKLSAgICAgICAgYXV0
aCA9IENvbW1pdHRlckF1dGgoJ3BhdGgvdG8vYXV0aC5qc29uJykKLSAgICAgICAgYXV0aC5vcGVu
X2F1dGhfanNvbl9maWxlID0gc2VsZi5pbnZhbGlkX2F1dGhfanNvbl9maWxlCi0gICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UoYXV0aC5hdXRoZW50aWNhdGUoJ2NvbW1pdHRlckB3ZWJraXQub3JnJywg
J2NvbW1pdHRlcnBhc3N3b3JkJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0Vycm9yIHBh
cnNpbmcgYXV0aC5qc29uIGZpbGU6IE5vIEpTT04gb2JqZWN0IGNvdWxkIGJlIGRlY29kZWQnLCBh
dXRoLmVycm1zZygpKQotCi0gICAgZGVmIHRlc3RfaW52YWxpZF9jb21taXR0ZXJzX2ZpbGUoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuYXV0aC5vcGVuX3dlYmtpdF9jb21taXR0ZXJzX2ZpbGUgPSBzZWxm
LmludmFsaWRfY29tbWl0dGVyc19maWxlCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5h
dXRoLmF1dGhlbnRpY2F0ZSgnY29tbWl0dGVyQHdlYmtpdC5vcmcnLCAnY29tbWl0dGVycGFzc3dv
cmQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRXJyb3IgcGFyc2luZyBXZWJLaXQgY29t
bWl0dGVycyBmaWxlJywgc2VsZi5hdXRoLmVycm1zZygpKQotCi0gICAgZGVmIHRlc3RfaW52YWxp
ZF90cmFjX2NyZWRlbnRpYWxzX2ZpbGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXV0aC5vcGVuX3Ry
YWNfY3JlZGVudGlhbHNfZmlsZSA9IHNlbGYuaW52YWxpZF9odGRpZ2VzdF9maWxlCi0gICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5hdXRoLmF1dGhlbnRpY2F0ZSgnY29tbWl0dGVyQHdlYmtp
dC5vcmcnLCAnY29tbWl0dGVycGFzc3dvcmQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
RXJyb3IgcGFyc2luZyBUcmFjIGNyZWRlbnRpYWxzIGZpbGUnLCBzZWxmLmF1dGguZXJybXNnKCkp
Ci0KLSAgICBkZWYgdGVzdF9taXNzaW5nX2F1dGhfanNvbl9rZXlzKHNlbGYpOgotICAgICAgICBh
dXRoID0gQ29tbWl0dGVyQXV0aCgncGF0aC90by9hdXRoLmpzb24nKQotICAgICAgICBhdXRoLm9w
ZW5fYXV0aF9qc29uX2ZpbGUgPSBsYW1iZGE6IENNU3RyaW5nSU8oJ3sgInRyYWNfY3JlZGVudGlh
bHMiOiAicGF0aC90by90cmFjL2NyZWRlbnRpYWxzIiB9JykKLSAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShhdXRoLmF1dGhlbnRpY2F0ZSgnY29tbWl0dGVyQHdlYmtpdC5vcmcnLCAnY29tbWl0dGVy
cGFzc3dvcmQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYXV0aC5qc29uIGZpbGUgaXMg
bWlzc2luZyAid2Via2l0X2NvbW1pdHRlcnMiIGtleScsIGF1dGguZXJybXNnKCkpCi0KLSAgICAg
ICAgYXV0aC5vcGVuX2F1dGhfanNvbl9maWxlID0gbGFtYmRhOiBDTVN0cmluZ0lPKCd7ICJ3ZWJr
aXRfY29tbWl0dGVycyI6ICJwYXRoL3RvL3dlYmtpdC9jb21taXR0ZXJzIiB9JykKLSAgICAgICAg
YXV0aC5vcGVuX3dlYmtpdF9jb21taXR0ZXJzX2ZpbGUgPSBzZWxmLmZha2VfY29tbWl0dGVyc19m
aWxlCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXV0aC5hdXRoZW50aWNhdGUoJ2NvbW1pdHRl
ckB3ZWJraXQub3JnJywgJ2NvbW1pdHRlcnBhc3N3b3JkJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2F1dGguanNvbiBmaWxlIGlzIG1pc3NpbmcgInRyYWNfY3JlZGVudGlhbHMiIGtleScs
IGF1dGguZXJybXNnKCkpCi0KLSAgICBkZWYgdGVzdF9vcGVuX2F1dGhfanNvbl9maWxlKHNlbGYp
OgotICAgICAgICBhdXRoID0gQ29tbWl0dGVyQXV0aCgncGF0aC90by9hdXRoLmpzb24nKQotICAg
ICAgICBzZWxmLmZha2Vfb3Blbl93YXNfY2FsbGVkID0gRmFsc2UKLSAgICAgICAgd2l0aCBvcGVu
X292ZXJyaWRlKHNlbGYuZmFrZV9vcGVuX2Z1bmN0aW9uKGF1dGguYXV0aF9qc29uX2ZpbGVuYW1l
KCkpKToKLSAgICAgICAgICAgIGF1dGgub3Blbl9hdXRoX2pzb25fZmlsZSgpCi0gICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShzZWxmLmZha2Vfb3Blbl93YXNfY2FsbGVkKQotCi0gICAgZGVmIHRlc3Rf
b3Blbl90cmFjX2NyZWRlbnRpYWxzX2ZpbGUoc2VsZik6Ci0gICAgICAgIGF1dGggPSBDb21taXR0
ZXJBdXRoKCdwYXRoL3RvL2F1dGguanNvbicpCi0gICAgICAgIGF1dGgudHJhY19jcmVkZW50aWFs
c19maWxlbmFtZSA9IGxhbWJkYTogJ3RyYWMgY3JlZGVudGlhbHMgZmlsZW5hbWUnCi0gICAgICAg
IHNlbGYuZmFrZV9vcGVuX3dhc19jYWxsZWQgPSBGYWxzZQotICAgICAgICB3aXRoIG9wZW5fb3Zl
cnJpZGUoc2VsZi5mYWtlX29wZW5fZnVuY3Rpb24oYXV0aC50cmFjX2NyZWRlbnRpYWxzX2ZpbGVu
YW1lKCkpKToKLSAgICAgICAgICAgIGF1dGgub3Blbl90cmFjX2NyZWRlbnRpYWxzX2ZpbGUoKQot
ICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5mYWtlX29wZW5fd2FzX2NhbGxlZCkKLQotICAg
IGRlZiB0ZXN0X29wZW5fd2Via2l0X2NvbW1pdHRlcnNfZmlsZShzZWxmKToKLSAgICAgICAgYXV0
aCA9IENvbW1pdHRlckF1dGgoJ3BhdGgvdG8vYXV0aC5qc29uJykKLSAgICAgICAgYXV0aC53ZWJr
aXRfY29tbWl0dGVyc19maWxlbmFtZSA9IGxhbWJkYTogJ3dlYmtpdCBjb21taXR0ZXJzIGZpbGVu
YW1lJwotICAgICAgICBzZWxmLmZha2Vfb3Blbl93YXNfY2FsbGVkID0gRmFsc2UKLSAgICAgICAg
d2l0aCBvcGVuX292ZXJyaWRlKHNlbGYuZmFrZV9vcGVuX2Z1bmN0aW9uKGF1dGgud2Via2l0X2Nv
bW1pdHRlcnNfZmlsZW5hbWUoKSkpOgotICAgICAgICAgICAgYXV0aC5vcGVuX3dlYmtpdF9jb21t
aXR0ZXJzX2ZpbGUoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5mYWtlX29wZW5fd2Fz
X2NhbGxlZCkKLQotICAgIGRlZiB0ZXN0X25vbl9jb21taXR0ZXJfZmFpbHMoc2VsZik6Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5hdXRoLmF1dGhlbnRpY2F0ZSgnbm9uY29tbWl0dGVy
QGV4YW1wbGUuY29tJywgJ25vbmNvbW1pdHRlcnBhc3N3b3JkJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ0ludmFsaWQgdXNlcm5hbWUvcGFzc3dvcmQnLCBzZWxmLmF1dGguZXJybXNnKCkp
Ci0KLSAgICBkZWYgdGVzdF90cmFjX2NyZWRlbnRpYWxzX2ZpbGVuYW1lKHNlbGYpOgotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdwYXRoL3RvL3RyYWMvY3JlZGVudGlhbHMnLCBzZWxmLmF1dGgu
dHJhY19jcmVkZW50aWFsc19maWxlbmFtZSgpKQotCi0gICAgZGVmIHRlc3RfdW5rbm93bl91c2Vy
X2ZhaWxzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuYXV0aC5hdXRoZW50
aWNhdGUoJ25vYm9keUBleGFtcGxlLmNvbScsICdub2JvZHlwYXNzd29yZCcpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdJbnZhbGlkIHVzZXJuYW1lL3Bhc3N3b3JkJywgc2VsZi5hdXRoLmVy
cm1zZygpKQotCi0gICAgZGVmIHRlc3RfdXNlcm5hbWVfaXNfcHJlZml4X29mX3ZhbGlkX3VzZXIo
c2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5hdXRoLmF1dGhlbnRpY2F0ZSgn
Y29tbWl0dGVyQHdlYmtpdC5vcmdnJywgJ2NvbW1pdHRlcnBhc3N3b3JkJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ0ludmFsaWQgdXNlcm5hbWUvcGFzc3dvcmQnLCBzZWxmLmF1dGguZXJy
bXNnKCkpCi0KLSAgICBkZWYgdGVzdF93ZWJraXRfY29tbWl0dGVycyhzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChbJ2NvbW1pdHRlckB3ZWJraXQub3JnJywgJ2NvbW1pdHRlcjJAZXhh
bXBsZS5jb20nLCAnY29tbWl0dGVyM0B3ZWJraXQub3JnJ10sIHNlbGYuYXV0aC53ZWJraXRfY29t
bWl0dGVycygpKQotCi0gICAgZGVmIHRlc3Rfd2Via2l0X2NvbW1pdHRlcnNfZmlsZW5hbWUoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BhdGgvdG8vd2Via2l0L2NvbW1pdHRlcnMn
LCBzZWxmLmF1dGgud2Via2l0X2NvbW1pdHRlcnNfZmlsZW5hbWUoKSkKLQotICAgIGRlZiB0ZXN0
X3dyb25nX3Bhc3N3b3JkX2ZhaWxzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNl
bGYuYXV0aC5hdXRoZW50aWNhdGUoJ2NvbW1pdHRlckB3ZWJraXQub3JnJywgJ3dyb25ncGFzc3dv
cmQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSW52YWxpZCB1c2VybmFtZS9wYXNzd29y
ZCcsIHNlbGYuYXV0aC5lcnJtc2coKSkKLQotICAgIGRlZiBmYWtlX2F1dGhfanNvbl9maWxlKHNl
bGYpOgotICAgICAgICByZXR1cm4gQ01TdHJpbmdJTygiIiJ7Ci0gICAgInRyYWNfY3JlZGVudGlh
bHMiOiAicGF0aC90by90cmFjL2NyZWRlbnRpYWxzIiwKLSAgICAid2Via2l0X2NvbW1pdHRlcnMi
OiAicGF0aC90by93ZWJraXQvY29tbWl0dGVycyIKLX0iIiIpCi0KLSAgICBkZWYgaW52YWxpZF9h
dXRoX2pzb25fZmlsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIENNU3RyaW5nSU8oJ34hQCMkJV4m
KigpXysnKQotCi0gICAgZGVmIGZha2VfY29tbWl0dGVyc19maWxlKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gQ01TdHJpbmdJTygiIiJbZ3JvdXBzXQotZ3JvdXAxID0gdXNlckBleGFtcGxlLmNvbSx1
c2VyMkBleGFtcGxlLmNvbQotZ3JvdXAyID0gdXNlcjNAZXhhbXBsZS5jb20KLQotZ3JvdXAzID0K
LWdyb3VwNCA9Ci0KLXdlYmtpdCA9IGNvbW1pdHRlckB3ZWJraXQub3JnLGNvbW1pdHRlcjJAZXhh
bXBsZS5jb20sY29tbWl0dGVyM0B3ZWJraXQub3JnCi0KLVtzZXJ2aWNlOi9dCi0qICAgID0gcgot
IiIiKQotCi0gICAgZGVmIGludmFsaWRfY29tbWl0dGVyc19maWxlKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gQ01TdHJpbmdJTygiIiJbZ3JvdXBzXQotCi1bW2dyb3VwczJdCi0iIiIpCi0KLSAgICBk
ZWYgZmFrZV9odGRpZ2VzdF9maWxlKHNlbGYpOgotICAgICAgICByZXR1cm4gQ01TdHJpbmdJTygi
IiJjb21taXR0ZXJAd2Via2l0Lm9yZzpNYWMgT1MgRm9yZ2U6NzYxYzhkY2I3ZDliNTkwODAwN2Vk
MTQyZjYyZmU3M2EKLWNvbW1pdHRlcjJAZXhhbXBsZS5jb206TWFjIE9TIEZvcmdlOmZhZWVlNjlh
Y2MyZTQ5YWYzYTBkYmIxNWJkNTkzZWY0Ci1ub25jb21taXR0ZXJAZXhhbXBsZS5jb206TWFjIE9T
IEZvcmdlOmI5OWFhN2FkMzIzMDZhNjU0Y2E0ZDU3ODM5ZmRlOWMxCi0iIiIpCi0KLSAgICBkZWYg
aW52YWxpZF9odGRpZ2VzdF9maWxlKHNlbGYpOgotICAgICAgICByZXR1cm4gQ01TdHJpbmdJTygi
IiJjb21taXR0ZXJAd2Via2l0Lm9yZzpNYWMgT1MgRm9yZ2U6NzYxYzhkY2I3ZDliNTkwODAwN2Vk
MTQyZjYyZmU3M2EKLWNvbW1pdHRlcjJAZXhhbXBsZS5jb206TWFjIE9TIEZvcmdlOmZhZWVlNjlh
Y2MyZTQ5YWYzYTBkYmIxNWJkNTkzZWY0Ci1ub25jb21taXR0ZXJAZXhhbXBsZS5jb206TWFjIE9T
IEZvcmdlOmI5OWFhN2FkMzIzMDZhNjU0Y2E0ZDU3ODM5ZmRlOWMxCi1jb21taXR0ZXI0QGV4YW1w
bGUuY29tOk1hYyBPUyBGb3JnZTo6OgotIiIiKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9DSVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvY29tbWl0dGVyX2F1dGhfdW5pdHRlc3QucHkK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMSArMCwwICMjCi0qClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9jb25maWcuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvY29uZmlnLmpzb24JKHJldmlzaW9uIDI2OTExMSkK
KysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9jb25maWcuanNvbgko
bm9uZXhpc3RlbnQpCkBAIC0xLDYzNiArMCwwIEBACi17Ci0gICAgIndvcmtlcnMiOiAgICAgWwot
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDI3OSIsICJwbGF0Zm9ybSI6ICJtYWMt
Ymlnc3VyIn0sCi0KLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3QxMjEiLCAicGxh
dGZvcm0iOiAibWFjLWNhdGFsaW5hIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImJvdDE1NyIsICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiYm90MTg3IiwgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIgfSwKLSAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3QyMDUiLCAicGxhdGZvcm0iOiAibWFjLWNh
dGFsaW5hIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDI0MSIsICJwbGF0
Zm9ybSI6ICJtYWMtY2F0YWxpbmEiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
Ym90MjQyIiwgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIgfSwKLSAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJib3QyNDMiLCAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiB9LAotICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDI0NCIsICJwbGF0Zm9ybSI6ICJtYWMtY2F0
YWxpbmEiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90MjQ1IiwgInBsYXRm
b3JtIjogIm1hYy1jYXRhbGluYSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJi
b3QyNDYiLCAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiB9LAotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImJvdDI0NyIsICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90MjQ4IiwgInBsYXRmb3JtIjogIm1hYy1jYXRh
bGluYSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3QyNjAiLCAicGxhdGZv
cm0iOiAibWFjLWNhdGFsaW5hIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJv
dDMwMiIsICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiIH0sCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiYm90NjAzIiwgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIgfSwKLSAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3Q2MzIiLCAicGxhdGZvcm0iOiAibWFjLWNhdGFs
aW5hIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDYzOCIsICJwbGF0Zm9y
bSI6ICJtYWMtY2F0YWxpbmEiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90
Njc0IiwgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIgfSwKLSAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJib3Q2ODMiLCAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiB9LAotICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDY4NyIsICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxp
bmEiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90Njg4IiwgInBsYXRmb3Jt
IjogIm1hYy1jYXRhbGluYSIgfSwKLQotCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
Ym90MTMyIiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiIH0sCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiYm90MTc4IiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90MTc5IiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUi
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90MTgzIiwgInBsYXRmb3JtIjog
Im1hYy1tb2phdmUiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90MTg0Iiwg
InBsYXRmb3JtIjogIm1hYy1tb2phdmUiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiYm90MTg1IiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiYm90MTk4IiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90MjEwIiwgInBsYXRmb3JtIjogIm1hYy1tb2ph
dmUiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90NjEwIiwgInBsYXRmb3Jt
IjogIm1hYy1tb2phdmUiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90NjEx
IiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiYm90NjEyIiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiIH0sCi0gICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiYm90NjEzIiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiIH0sCi0K
LQotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDY3MyIsICJwbGF0Zm9ybSI6ICJp
b3MtMTQiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90NjUxIiwgInBsYXRm
b3JtIjogImlvcy1zaW11bGF0b3ItMTQiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiYm90NjUyIiwgInBsYXRmb3JtIjogImlvcy1zaW11bGF0b3ItMTQiIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiYm90NjUzIiwgInBsYXRmb3JtIjogImlvcy1zaW11bGF0b3It
MTQiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90NjU0IiwgInBsYXRmb3Jt
IjogImlvcy1zaW11bGF0b3ItMTQiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
Ym90NjQxIiwgInBsYXRmb3JtIjogImlvcy1zaW11bGF0b3ItMTQiIH0sCi0gICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiYm90NjgyIiwgInBsYXRmb3JtIjogImlvcy1zaW11bGF0b3ItMTQi
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90Njk0IiwgInBsYXRmb3JtIjog
Imlvcy1zaW11bGF0b3ItMTQiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90
Njk1IiwgInBsYXRmb3JtIjogImlvcy1zaW11bGF0b3ItMTQiIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiYm90NjY3IiwgInBsYXRmb3JtIjogImlvcy1zaW11bGF0b3ItMTQifSwK
LSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3Q2NjQiLCAicGxhdGZvcm0iOiAiaW9z
LXNpbXVsYXRvci0xNCJ9LAotCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90NjA3
IiwgInBsYXRmb3JtIjogInR2b3MtMTQiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiYm90NjA4IiwgInBsYXRmb3JtIjogInR2b3Mtc2ltdWxhdG9yLTE0IiB9LAotICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImJvdDYwOSIsICJwbGF0Zm9ybSI6ICJ3YXRjaG9zLTciIH0s
Ci0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90NjcyIiwgInBsYXRmb3JtIjogIndh
dGNob3Mtc2ltdWxhdG9yLTciIH0sCi0KLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJi
b3Q1NDUiLCAicGxhdGZvcm0iOiAid2luIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImJvdDU0NiIsICJwbGF0Zm9ybSI6ICJ3aW4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiYm90NTQ3IiwgInBsYXRmb3JtIjogIndpbiIgfSwKLSAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJib3Q1NDgiLCAicGxhdGZvcm0iOiAid2luIiB9LAotCi0gICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAid2luY2Fpcm8td2tsLXJlbGVhc2UtYnVpbGQtMDEiLCAicGxh
dGZvcm0iOiAid2luY2Fpcm8iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid2lu
Y2Fpcm8td2tsLXJlbGVhc2UtdGVzdHMtMDEiLCAicGxhdGZvcm0iOiAid2luY2Fpcm8iIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid2luY2Fpcm8td2tsLXJlbGVhc2UtdGVzdHMt
MDIiLCAicGxhdGZvcm0iOiAid2luY2Fpcm8iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAid2luY2Fpcm8tanNjLXJlbGVhc2UtdGVzdHMtMDEiLCAicGxhdGZvcm0iOiAid2luY2Fp
cm8iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid2luY2Fpcm8td2tsLWRlYnVn
LWJ1aWxkLTAxIiwgInBsYXRmb3JtIjogIndpbmNhaXJvIiB9LAotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogIndpbmNhaXJvLXdrbC1kZWJ1Zy10ZXN0cy0wMSIsICJwbGF0Zm9ybSI6ICJ3
aW5jYWlybyIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ3aW5jYWlyby13a2wt
ZGVidWctdGVzdHMtMDIiLCAicGxhdGZvcm0iOiAid2luY2Fpcm8iIH0sCi0gICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAid2luY2Fpcm8tanNjLWRlYnVnLXRlc3RzLTAxIiwgInBsYXRmb3Jt
IjogIndpbmNhaXJvIiB9LAotCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGxheXN0
YXRpb24tcmVsZWFzZS1idWlsZC0wMSIsICJwbGF0Zm9ybSI6ICJwbGF5c3RhdGlvbiIgfSwKLSAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwbGF5c3RhdGlvbi1kZWJ1Zy1idWlsZC0wMSIs
ICJwbGF0Zm9ybSI6ICJwbGF5c3RhdGlvbiIgfSwKLQotICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImd0ay1saW51eC1ib3QtMSIsICJwbGF0Zm9ybSI6ICJndGsiIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiZ3RrLWxpbnV4LWJvdC0yIiwgInBsYXRmb3JtIjogImd0ayIg
fSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJndGstbGludXgtYm90LTMiLCAicGxh
dGZvcm0iOiAiZ3RrIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImd0ay1saW51
eC1ib3QtNSIsICJwbGF0Zm9ybSI6ICJndGsiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZ3RrLWxpbnV4LWJvdC02IiwgInBsYXRmb3JtIjogImd0ayIgfSwKLSAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJndGstbGludXgtYm90LTciLCAicGxhdGZvcm0iOiAiZ3RrIiB9
LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImd0ay1saW51eC1ib3QtOCIsICJwbGF0
Zm9ybSI6ICJndGsiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZ3RrLWxpbnV4
LWJvdC05IiwgInBsYXRmb3JtIjogImd0ayIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJndGstbGludXgtYm90LTEwIiwgInBsYXRmb3JtIjogImd0ayIgfSwKLSAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJndGstbGludXgtYm90LTExIiwgInBsYXRmb3JtIjogImd0ayIg
fSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJndGstbGludXgtYm90LTEyIiwgInBs
YXRmb3JtIjogImd0ayIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJndGstbGlu
dXgtYm90LTEzIiwgInBsYXRmb3JtIjogImd0ayIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJndGstbGludXgtYm90LTE0IiwgInBsYXRmb3JtIjogImd0ayIgfSwKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJndGstbGludXgtYm90LTE1IiwgInBsYXRmb3JtIjogImd0
ayIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJndGstbGludXgtYm90LTE2Iiwg
InBsYXRmb3JtIjogImd0ayIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJndGst
bGludXgtYm90LTE3IiwgInBsYXRmb3JtIjogImd0ayIgfSwKLQotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImpzY29ubHktbGludXgtaWdhbGlhLWJvdC0xIiwgInBsYXRmb3JtIjogImpz
Yy1vbmx5IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImpzY29ubHktbGludXgt
aWdhbGlhLWJvdC0yIiwgInBsYXRmb3JtIjogImpzYy1vbmx5IiB9LAotICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImpzY29ubHktbGludXgtaWdhbGlhLWJvdC0zIiwgInBsYXRmb3JtIjog
ImpzYy1vbmx5IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImpzY29ubHktbGlu
dXgtaWdhbGlhLWJvdC00IiwgInBsYXRmb3JtIjogImpzYy1vbmx5IiB9LAotICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImpzY29ubHktbGludXgtaWdhbGlhLWJvdC01IiwgInBsYXRmb3Jt
IjogImpzYy1vbmx5IiB9LAotCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid3BlLWxp
bnV4LWJvdC0xIiwgInBsYXRmb3JtIjogIndwZSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJ3cGUtbGludXgtYm90LTIiLCAicGxhdGZvcm0iOiAid3BlIiB9LAotICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogIndwZS1saW51eC1ib3QtMyIsICJwbGF0Zm9ybSI6ICJ3cGUi
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid3BlLWxpbnV4LWJvdC00IiwgInBs
YXRmb3JtIjogIndwZSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ3cGUtbGlu
dXgtYm90LTUiLCAicGxhdGZvcm0iOiAid3BlIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIndwZS1saW51eC1ib3QtNiIsICJwbGF0Zm9ybSI6ICJ3cGUiIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAid3BlLWxpbnV4LWJvdC03IiwgInBsYXRmb3JtIjogIndwZSIg
fSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ3cGUtbGludXgtYm90LTgiLCAicGxh
dGZvcm0iOiAid3BlIiB9Ci0gICAgICAgICAgICAgICAgICBdLAotCi0gICAgImJ1aWxkZXJzIjog
ICBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiQXBwbGUtQmlnU3VyLVJlbGVhc2Ut
QnVpbGQiLCAiZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiYmlnc3VyLXJl
bGVhc2UiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtYmlnc3VyIiwg
ImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiLCAi
YXJtNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDI3OSJd
Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
QXBwbGUtQ2F0YWxpbmEtRGVidWctQnVpbGQiLCAiZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAi
YnVpbGRkaXIiOiAiY2F0YWxpbmEtZGVidWciLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0
Zm9ybSI6ICJtYWMtY2F0YWxpbmEiLCAiY29uZmlndXJhdGlvbiI6ICJkZWJ1ZyIsICJhcmNoaXRl
Y3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAidHJpZ2dlcnMiOiBb
ImNhdGFsaW5hLWRlYnVnLXRlc3RzLWpzYyIsICJjYXRhbGluYS1kZWJ1Zy10ZXN0cy10ZXN0MjYy
IiwgImNhdGFsaW5hLWRlYnVnLXRlc3RzLXdrMSIsICJjYXRhbGluYS1kZWJ1Zy10ZXN0cy13azIi
LCAiY2F0YWxpbmEtZGVidWctdGVzdHMtd2syLWdwdXByb2Nlc3MiXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDY4NyIsICJib3Q2ODgiXQotICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIkFwcGxlLUNhdGFsaW5h
LURlYnVnLVdLMS1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RXZWJLaXQxQWxsQnV0SlNDRmFjdG9y
eSIsICJidWlsZGRpciI6ICJjYXRhbGluYS1kZWJ1Zy10ZXN0cy13azEiLAotICAgICAgICAgICAg
ICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiLCAiY29uZmlndXJhdGlvbiI6ICJk
ZWJ1ZyIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAiYWRkaXRpb25hbEFyZ3VtZW50cyI6IFsiLS1uby1yZXRyeS1mYWlsdXJlcyJdLAotICAgICAg
ICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90MjQxIiwgImJvdDI0MiJdCi0gICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiQXBwbGUt
Q2F0YWxpbmEtRGVidWctV0syLVRlc3RzIiwgImZhY3RvcnkiOiAiVGVzdEFsbEJ1dEpTQ0ZhY3Rv
cnkiLCAiYnVpbGRkaXIiOiAiY2F0YWxpbmEtZGVidWctdGVzdHMtd2syIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiwgImNvbmZpZ3VyYXRpb24iOiAi
ZGVidWciLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAg
ICAgImFkZGl0aW9uYWxBcmd1bWVudHMiOiBbIi0tbm8tcmV0cnktZmFpbHVyZXMiXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDI0MyIsICJib3QyNDQiXQotICAg
ICAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiQXBw
bGUtQ2F0YWxpbmEtRGVidWctV0syLUdQVVByb2Nlc3MtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0
QWxsQnV0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJjYXRhbGluYS1kZWJ1Zy10ZXN0cy13azIt
Z3B1cHJvY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1jYXRh
bGluYSIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82
NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5v
LXJldHJ5LWZhaWx1cmVzIiwgIi0tdXNlLWdwdS1wcm9jZXNzIl0sCi0gICAgICAgICAgICAgICAg
ICAgICAgIndvcmtlcm5hbWVzIjogWyJib3QyNjAiXQotICAgICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtQnVp
bGQiLCAiZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiY2F0YWxpbmEtcmVs
ZWFzZSIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIs
ICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0s
Ci0gICAgICAgICAgICAgICAgICAgICAgInRyaWdnZXJzIjogWyJjYXRhbGluYS1yZWxlYXNlLXRl
c3RzLXRlc3QyNjIiLCAiY2F0YWxpbmEtcmVsZWFzZS10ZXN0cy1qc2MiLCAiY2F0YWxpbmEtcmVs
ZWFzZS1wZXJmLXRlc3RzIiwgImNhdGFsaW5hLXJlbGVhc2UtdGVzdHMtd2sxIiwgImNhdGFsaW5h
LXJlbGVhc2UtdGVzdHMtd2syIiwgImNhdGFsaW5hLXJlbGVhc2UtdGVzdHMtd2syLXdlYmdsIl0s
Ci0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3Q2ODMiLCAiYm90Njc0
Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJBcHBsZS1DYXRhbGluYS1SZWxlYXNlLVdLMS1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RXZWJL
aXQxQWxsQnV0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJjYXRhbGluYS1yZWxlYXNlLXRlc3Rz
LXdrMSIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIs
ICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0s
Ci0gICAgICAgICAgICAgICAgICAgICAgImFkZGl0aW9uYWxBcmd1bWVudHMiOiBbIi0tbm8tcmV0
cnktZmFpbHVyZXMiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJv
dDI0NSIsICJib3QyNDYiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogIkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtV0syLVRlc3RzIiwgImZhY3Rv
cnkiOiAiVGVzdEFsbEJ1dEpTQ0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiY2F0YWxpbmEtcmVsZWFz
ZS10ZXN0cy13azIiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtY2F0
YWxpbmEiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4
Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyIt
LW5vLXJldHJ5LWZhaWx1cmVzIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVz
IjogWyJib3QyNDciLCAiYm90MjQ4Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJBcHBsZS1DYXRhbGluYS1SZWxlYXNlLVdLMi1XZWJHTC1U
ZXN0cyIsICJmYWN0b3J5IjogIlRlc3RBbGxCdXRKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjogImNh
dGFsaW5hLXJlbGVhc2UtdGVzdHMtd2syLXdlYmdsIiwKLSAgICAgICAgICAgICAgICAgICAgICAi
cGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJh
cmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAiYWRkaXRp
b25hbEFyZ3VtZW50cyI6IFsiLS1uby1yZXRyeS1mYWlsdXJlcyIsICItLXdlYmdsLXRlc3Qtc3Vp
dGUiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDMwMiJdCi0g
ICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiQXBw
bGUtQ2F0YWxpbmEtRGVidWctSlNDLVRlc3RzIiwgImZhY3RvcnkiOiAiVGVzdEpTQ0ZhY3Rvcnki
LCAiYnVpbGRkaXIiOiAiY2F0YWxpbmEtZGVidWctdGVzdHMtanNjIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiwgImNvbmZpZ3VyYXRpb24iOiAiZGVi
dWciLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAg
Indvcmtlcm5hbWVzIjogWyJib3Q2MzgiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogIkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtSlNDLVRlc3Rz
IiwgImZhY3RvcnkiOiAiVGVzdEpTQ0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiY2F0YWxpbmEtcmVs
ZWFzZS10ZXN0cy1qc2MiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMt
Y2F0YWxpbmEiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBb
Ing4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90MTU3
Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJBcHBsZS1DYXRhbGluYS1MTElOVC1DTG9vcC1CdWlsZEFuZFRlc3QiLCAiZmFjdG9yeSI6ICJC
dWlsZEFuZFRlc3RMTElOVENMb29wRmFjdG9yeSIsICJidWlsZGRpciI6ICJjYXRhbGluYS1jbG9v
cC1kZWJ1ZyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1jYXRhbGlu
YSIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJd
LAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90MTg3Il0KLSAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJBcHBsZS1D
YXRhbGluYS1EZWJ1Zy1UZXN0MjYyLVRlc3RzIiwgImZhY3RvcnkiOiAiVGVzdDI2MkZhY3Rvcnki
LCAiYnVpbGRkaXIiOiAiY2F0YWxpbmEtZGVidWctdGVzdHMtdGVzdDI2MiIsCi0gICAgICAgICAg
ICAgICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIsICJjb25maWd1cmF0aW9uIjog
ImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAg
ICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90NjAzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFwcGxl
LUNhdGFsaW5hLVJlbGVhc2UtV0syLVBlcmYiLCAiZmFjdG9yeSI6ICJEb3dubG9hZEFuZFBlcmZU
ZXN0RmFjdG9yeSIsICJidWlsZGRpciI6ICJjYXRhbGluYS1yZWxlYXNlLXBlcmYtdGVzdHMiLAot
ICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiLCAiY29uZmln
dXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAg
ICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90MjA1Il0KLSAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJBcHBsZS1DYXRhbGluYS1S
ZWxlYXNlLVRlc3QyNjItVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0MjYyRmFjdG9yeSIsICJidWls
ZGRpciI6ICJjYXRhbGluYS1yZWxlYXNlLXRlc3RzLXRlc3QyNjIiLAotICAgICAgICAgICAgICAg
ICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxl
YXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAg
ICJ3b3JrZXJuYW1lcyI6IFsiYm90NjMyIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJBcHBsZS1Nb2phdmUtRGVidWctQnVpbGQiLCAiZmFj
dG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAibW9qYXZlLWRlYnVnIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAibWFjLW1vamF2ZSIsICJjb25maWd1cmF0aW9u
IjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAg
ICAgICAgICJ0cmlnZ2VycyI6IFsibW9qYXZlLWRlYnVnLXRlc3RzLXdrMSIsICJtb2phdmUtZGVi
dWctdGVzdHMtd2syIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJi
b3Q2MTIiLCAiYm90NjEzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJBcHBsZS1Nb2phdmUtRGVidWctV0sxLVRlc3RzIiwgImZhY3Rvcnki
OiAiVGVzdFdlYktpdDFBbGxCdXRKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjogIm1vamF2ZS1kZWJ1
Zy10ZXN0cy13azEiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9q
YXZlIiwgImNvbmZpZ3VyYXRpb24iOiAiZGVidWciLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0
Il0sCi0gICAgICAgICAgICAgICAgICAgICAgImFkZGl0aW9uYWxBcmd1bWVudHMiOiBbIi0tbm8t
cmV0cnktZmFpbHVyZXMiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBb
ImJvdDE4MyIsICJib3QxODQiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIkFwcGxlLU1vamF2ZS1EZWJ1Zy1XSzItVGVzdHMiLCAiZmFjdG9y
eSI6ICJUZXN0QWxsQnV0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJtb2phdmUtZGVidWctdGVz
dHMtd2syIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAibWFjLW1vamF2ZSIs
ICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAot
ICAgICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5vLXJldHJ5
LWZhaWx1cmVzIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3Qx
NzgiLCAiYm90MTc5Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJBcHBsZS1Nb2phdmUtUmVsZWFzZS1CdWlsZCIsICJmYWN0b3J5IjogIkJ1
aWxkRmFjdG9yeSIsICJidWlsZGRpciI6ICJtb2phdmUtcmVsZWFzZSIsCi0gICAgICAgICAgICAg
ICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxl
YXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAg
ICJ0cmlnZ2VycyI6IFsibW9qYXZlLXJlbGVhc2UtdGVzdHMtd2sxIiwgIm1vamF2ZS1yZWxlYXNl
LXRlc3RzLXdrMiJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90
NjEwIiwgImJvdDYxMSJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiQXBwbGUtTW9qYXZlLVJlbGVhc2UtV0sxLVRlc3RzIiwgImZhY3Rvcnki
OiAiVGVzdFdlYktpdDFBbGxCdXRKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjogIm1vamF2ZS1yZWxl
YXNlLXRlc3RzLXdrMSIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1t
b2phdmUiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4
Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyIt
LW5vLXJldHJ5LWZhaWx1cmVzIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVz
IjogWyJib3QxMzIiLCAiYm90MTg1Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJBcHBsZS1Nb2phdmUtUmVsZWFzZS1XSzItVGVzdHMiLCAi
ZmFjdG9yeSI6ICJUZXN0QWxsQnV0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJtb2phdmUtcmVs
ZWFzZS10ZXN0cy13azIiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMt
bW9qYXZlIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4
ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAiYWRkaXRpb25hbEFyZ3VtZW50cyI6IFsi
LS1uby1yZXRyeS1mYWlsdXJlcyJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1l
cyI6IFsiYm90MTk4IiwgImJvdDIxMCJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBcHBsZS1pT1Mt
MTQtUmVsZWFzZS1CdWlsZCIsICJmYWN0b3J5IjogIkJ1aWxkRmFjdG9yeSIsICJidWlsZGRpciI6
ICJpb3MtMTQtcmVsZWFzZSIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImlv
cy0xNCIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsiYXJt
NjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDY3MyJdCi0g
ICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAibmFtZSI6ICJBcHBsZS1pT1MtMTQtU2ltdWxhdG9yLVJlbGVhc2UtQnVpbGQi
LCAiZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiaW9zLXNpbXVsYXRvci0x
NC1yZWxlYXNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiaW9zLXNpbXVs
YXRvci0xNCIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsi
eDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgInRyaWdnZXJzIjogWyJpb3Mtc2ltdWxh
dG9yLTE0LXJlbGVhc2UtdGVzdHMtd2syIiwgImlwYWRvcy1zaW11bGF0b3ItMTQtcmVsZWFzZS10
ZXN0cy13azIiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDY0
MSIsICJib3Q2ODIiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQXBwbGUtaU9TLTE0LVNpbXVsYXRv
ci1EZWJ1Zy1CdWlsZCIsICJmYWN0b3J5IjogIkJ1aWxkRmFjdG9yeSIsICJidWlsZGRpciI6ICJp
b3Mtc2ltdWxhdG9yLTE0LWRlYnVnIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0i
OiAiaW9zLXNpbXVsYXRvci0xNCIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVj
dHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ0cmlnZ2VycyI6IFsi
aW9zLXNpbXVsYXRvci0xNC1kZWJ1Zy10ZXN0cy13azIiLCAiaXBhZG9zLXNpbXVsYXRvci0xNC1k
ZWJ1Zy10ZXN0cy13azIiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBb
ImJvdDY5NCIsICJib3Q2OTUiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQXBwbGUtaU9TLTE0LVNp
bXVsYXRvci1SZWxlYXNlLVdLMi1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RBbGxCdXRKU0NGYWN0
b3J5IiwgImJ1aWxkZGlyIjogImlvcy1zaW11bGF0b3ItMTQtcmVsZWFzZS10ZXN0cy13azIiLAot
ICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0IiwgImNv
bmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwgImRl
dmljZV9tb2RlbCI6ICJpcGhvbmUiLAotICAgICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFs
QXJndW1lbnRzIjogWyItLW5vLXJldHJ5LWZhaWx1cmVzIl0sCi0gICAgICAgICAgICAgICAgICAg
ICAgIndvcmtlcm5hbWVzIjogWyJib3Q2NTEiLCAiYm90NjUyIl0KLSAgICAgICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1l
IjogIkFwcGxlLWlPUy0xNC1TaW11bGF0b3ItRGVidWctV0syLVRlc3RzIiwgImZhY3RvcnkiOiAi
VGVzdEFsbEJ1dEpTQ0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiaW9zLXNpbXVsYXRvci0xNC1kZWJ1
Zy10ZXN0cy13azIiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJpb3Mtc2lt
dWxhdG9yLTE0IiwgImNvbmZpZ3VyYXRpb24iOiAiZGVidWciLCAiYXJjaGl0ZWN0dXJlcyI6IFsi
eDg2XzY0Il0sICJkZXZpY2VfbW9kZWwiOiAiaXBob25lIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAiYWRkaXRpb25hbEFyZ3VtZW50cyI6IFsiLS1uby1yZXRyeS1mYWlsdXJlcyIsICItLW5vLXNh
bXBsZS1vbi10aW1lb3V0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjog
WyJib3Q2NTMiLCAiYm90NjU0Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFwcGxlLWlQYWRPUy0x
NC1TaW11bGF0b3ItUmVsZWFzZS1XSzItVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0QWxsQnV0SlND
RmFjdG9yeSIsICJidWlsZGRpciI6ICJpcGFkb3Mtc2ltdWxhdG9yLTE0LXJlbGVhc2UtdGVzdHMt
d2syIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiaW9zLXNpbXVsYXRvci0x
NCIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0
Il0sICJkZXZpY2VfbW9kZWwiOiAiaXBhZCIsCi0gICAgICAgICAgICAgICAgICAgICAgImFkZGl0
aW9uYWxBcmd1bWVudHMiOiBbIi0tbm8tcmV0cnktZmFpbHVyZXMiXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDY2NyJdCi0gICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJB
cHBsZS1pUGFkT1MtMTQtU2ltdWxhdG9yLURlYnVnLVdLMi1UZXN0cyIsICJmYWN0b3J5IjogIlRl
c3RBbGxCdXRKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjogImlwYWRvcy1zaW11bGF0b3ItMTQtZGVi
dWctdGVzdHMtd2syIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiaW9zLXNp
bXVsYXRvci0xNCIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBb
Ing4Nl82NCJdLCAiZGV2aWNlX21vZGVsIjogImlwYWQiLAotICAgICAgICAgICAgICAgICAgICAg
ICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5vLXJldHJ5LWZhaWx1cmVzIiwgIi0tbm8tc2Ft
cGxlLW9uLXRpbWVvdXQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBb
ImJvdDY2NCJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBcHBsZS10dk9TLTE0LVJlbGVhc2UtQnVp
bGQiLCAiZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAidHZvcy0xNC1yZWxl
YXNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAidHZvcy0xNCIsICJjb25m
aWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsiYXJtNjQiXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDYwNyJdCi0gICAgICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAi
bmFtZSI6ICJBcHBsZS10dk9TLVNpbXVsYXRvci0xNC1SZWxlYXNlLUJ1aWxkIiwgImZhY3Rvcnki
OiAiQnVpbGRGYWN0b3J5IiwgImJ1aWxkZGlyIjogInR2b3Mtc2ltdWxhdG9yLTE0LXJlbGVhc2Ui
LAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ0dm9zLXNpbXVsYXRvci0xNCIs
ICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0s
Ci0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3Q2MDgiXQotICAgICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgIm5hbWUiOiAiQXBwbGUtd2F0Y2hPUy03LVJlbGVhc2UtQnVpbGQiLCAiZmFjdG9yeSI6
ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAid2F0Y2hvcy03LXJlbGVhc2UiLAotICAgICAg
ICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3YXRjaG9zLTciLCAiY29uZmlndXJhdGlvbiI6
ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbImFybTY0XzMyIiwgImFybXY3ayJdLAotICAg
ICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90NjA5Il0KLSAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICJuYW1lIjogIkFwcGxlLXdhdGNoT1MtU2ltdWxhdG9yLTctUmVsZWFzZS1CdWlsZCIsICJmYWN0
b3J5IjogIkJ1aWxkRmFjdG9yeSIsICJidWlsZGRpciI6ICJ3YXRjaG9zLXNpbXVsYXRvci03LXJl
bGVhc2UiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3YXRjaG9zLXNpbXVs
YXRvci03IiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJp
Mzg2Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3Q2NzIiXQot
ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgIm5hbWUiOiAiQXBwbGUtV2luLTEwLVJlbGVhc2UtQnVpbGQiLCAiZmFjdG9y
eSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAid2luMTAtcmVsZWFzZSIsCi0gICAgICAg
ICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIndpbiIsICJjb25maWd1cmF0aW9uIjogInJlbGVh
c2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAg
InRyaWdnZXJzIjogWyJ3aW4xMC1yZWxlYXNlLXRlc3RzIl0sCi0gICAgICAgICAgICAgICAgICAg
ICAgIndvcmtlcm5hbWVzIjogWyJib3Q1NDgiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQXBwbGUt
V2luLTEwLURlYnVnLUJ1aWxkIiwgImZhY3RvcnkiOiAiQnVpbGRGYWN0b3J5IiwgImJ1aWxkZGly
IjogIndpbjEwLWRlYnVnIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAid2lu
IiwgImNvbmZpZ3VyYXRpb24iOiAiZGVidWciLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0s
Ci0gICAgICAgICAgICAgICAgICAgICAgInRyaWdnZXJzIjogWyJ3aW4xMC1kZWJ1Zy10ZXN0cyJd
LAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90NTQ3Il0KLSAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICJuYW1lIjogIkFwcGxlLVdpbi0xMC1SZWxlYXNlLVRlc3RzIiwgImZhY3RvcnkiOiAi
VGVzdFdlYktpdDFGYWN0b3J5IiwgImJ1aWxkZGlyIjogIndpbjEwLXJlbGVhc2UtdGVzdHMiLAot
ICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3aW4iLCAiY29uZmlndXJhdGlvbiI6
ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAg
ICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90NTQ2Il0KLSAgICAgICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFw
cGxlLVdpbi0xMC1EZWJ1Zy1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RXZWJLaXQxRmFjdG9yeSIs
ICJidWlsZGRpciI6ICJ3aW4xMC1kZWJ1Zy10ZXN0cyIsCi0gICAgICAgICAgICAgICAgICAgICAg
InBsYXRmb3JtIjogIndpbiIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVy
ZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsi
Ym90NTQ1Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1C
dWlsZCIsICJmYWN0b3J5IjogIkJ1aWxkQW5kR2VuZXJhdGVKU0NCdW5kbGVGYWN0b3J5IiwgImJ1
aWxkZGlyIjogImd0ay1saW51eC02NC1yZWxlYXNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAi
cGxhdGZvcm0iOiAiZ3RrIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1
cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAidHJpZ2dlcnMiOiBbImd0
ay1saW51eC02NC1yZWxlYXNlLXRlc3RzIiwgImd0ay1saW51eC02NC1yZWxlYXNlLXRlc3RzLWpz
IiwgImd0ay1saW51eC02NC1yZWxlYXNlLXRlc3RzLXdlYmRyaXZlciIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJndGstbGludXgtNjQtcmVsZWFzZS13YXlsYW5kLXRlc3Rz
IiwgImd0ay1saW51eC02NC1yZWxlYXNlLXBlcmYtdGVzdHMiXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAid29ya2VybmFtZXMiOiBbImd0ay1saW51eC1ib3QtMiJdCi0gICAgICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFt
ZSI6ICJHVEstTGludXgtNjQtYml0LVJlbGVhc2UtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0QWxs
QnV0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJndGstbGludXgtNjQtcmVsZWFzZS10ZXN0cyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImd0ayIsICJjb25maWd1cmF0aW9u
IjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAg
ICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJndGstbGludXgtYm90LTYiXQotICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
Im5hbWUiOiAiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLUpTLVRlc3RzIiwgImZhY3RvcnkiOiAi
VGVzdEpTRmFjdG9yeSIsICJidWlsZGRpciI6ICJndGstbGludXgtNjQtcmVsZWFzZS10ZXN0cy1q
cyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImd0ayIsICJjb25maWd1cmF0
aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAg
ICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJndGstbGludXgtYm90LTEyIl0KLSAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICJuYW1lIjogIkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1XZWJEcml2ZXItVGVzdHMiLCAi
ZmFjdG9yeSI6ICJUZXN0V2ViRHJpdmVyRmFjdG9yeSIsICJidWlsZGRpciI6ICJndGstbGludXgt
NjQtcmVsZWFzZS10ZXN0cy13ZWJkcml2ZXIiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0
Zm9ybSI6ICJndGsiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMi
OiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZ3Rr
LWxpbnV4LWJvdC0xNCJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEstTGludXgtNjQtYml0LURl
YnVnLUJ1aWxkIiwgImZhY3RvcnkiOiAiQnVpbGRGYWN0b3J5IiwgImJ1aWxkZGlyIjogImd0ay1s
aW51eC02NC1kZWJ1ZyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImd0ayIs
ICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAot
ICAgICAgICAgICAgICAgICAgICAgICJ0cmlnZ2VycyI6IFsiZ3RrLWxpbnV4LTY0LWRlYnVnLXRl
c3RzIiwgImd0ay1saW51eC02NC1kZWJ1Zy10ZXN0cy1qcyIsICJndGstbGludXgtNjQtZGVidWct
dGVzdHMtd2ViZHJpdmVyIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjog
WyJndGstbGludXgtYm90LTMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiR1RLLUxpbnV4LTY0LWJp
dC1EZWJ1Zy1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RBbGxCdXRKU0NGYWN0b3J5IiwgImJ1aWxk
ZGlyIjogImd0ay1saW51eC02NC1kZWJ1Zy10ZXN0cyIsCi0gICAgICAgICAgICAgICAgICAgICAg
InBsYXRmb3JtIjogImd0ayIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVy
ZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsi
Z3RrLWxpbnV4LWJvdC03Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkdUSy1MaW51eC02NC1iaXQt
RGVidWctSlMtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0SlNGYWN0b3J5IiwgImJ1aWxkZGlyIjog
Imd0ay1saW51eC02NC1kZWJ1Zy10ZXN0cy1qcyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBs
YXRmb3JtIjogImd0ayIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMi
OiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZ3Rr
LWxpbnV4LWJvdC0xMyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEstTGludXgtNjQtYml0LURl
YnVnLVdlYkRyaXZlci1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RXZWJEcml2ZXJGYWN0b3J5Iiwg
ImJ1aWxkZGlyIjogImd0ay1saW51eC02NC1kZWJ1Zy10ZXN0cy13ZWJkcml2ZXIiLAotICAgICAg
ICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJndGsiLCAiY29uZmlndXJhdGlvbiI6ICJkZWJ1
ZyIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAi
d29ya2VybmFtZXMiOiBbImd0ay1saW51eC1ib3QtMTUiXQotICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAi
R1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLVBlcmYiLCAiZmFjdG9yeSI6ICJEb3dubG9hZEFuZFBl
cmZUZXN0RmFjdG9yeSIsICJidWlsZGRpciI6ICJndGstbGludXgtNjQtcmVsZWFzZS1wZXJmLXRl
c3RzIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiZ3RrIiwgImNvbmZpZ3Vy
YXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAiYWRkaXRpb25hbEFyZ3VtZW50cyI6IFsiLS1kaXNwbGF5LXNlcnZlcj14
b3JnIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJndGstbGludXgt
Ym90LTgiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLVdh
eWxhbmQtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0QWxsQnV0SlNDRmFjdG9yeSIsICJidWlsZGRp
ciI6ICJndGstbGludXgtNjQtcmVsZWFzZS13YXlsYW5kLXRlc3RzIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAicGxhdGZvcm0iOiAiZ3RrIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJh
cmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAiYWRkaXRp
b25hbEFyZ3VtZW50cyI6IFsiLS1kaXNwbGF5LXNlcnZlcj13YXlsYW5kIl0sCi0gICAgICAgICAg
ICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJndGstbGludXgtYm90LTkiXQotICAgICAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgIm5hbWUiOiAiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLURlYmlhbi1TdGFibGUtQnVpbGQi
LCAiZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiZ3RrLWxpbnV4LTY0LXJl
bGVhc2UtZGViaWFuIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiZ3RrIiwg
ImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwK
LSAgICAgICAgICAgICAgICAgICAgICAiYWRkaXRpb25hbEFyZ3VtZW50cyI6IFsiLS1uby1leHBl
cmltZW50YWwtZmVhdHVyZXMiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMi
OiBbImd0ay1saW51eC1ib3QtMTAiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiR1RLLUxpbnV4LTY0
LWJpdC1SZWxlYXNlLVVidW50dS1MVFMtQnVpbGQiLCAiZmFjdG9yeSI6ICJCdWlsZEZhY3Rvcnki
LCAiYnVpbGRkaXIiOiAiZ3RrLWxpbnV4LTY0LXJlbGVhc2UtdWJ1bnR1IiwKLSAgICAgICAgICAg
ICAgICAgICAgICAicGxhdGZvcm0iOiAiZ3RrIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIs
ICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAiYWRk
aXRpb25hbEFyZ3VtZW50cyI6IFsiLS1uby1leHBlcmltZW50YWwtZmVhdHVyZXMiXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImd0ay1saW51eC1ib3QtMTEiXQotICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgIm5hbWUiOiAiR1RLLUxpbnV4LTY0Yml0LVJlbGVhc2UtUGFja2FnaW5nLU5pZ2h0
bHktVWJ1bnR1MTgwNCIsICJmYWN0b3J5IjogIkJ1aWxkQW5kR2VuZXJhdGVNaW5pQnJvd3NlckJ1
bmRsZUZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiZ3RrLWxpbnV4LTY0LXBhY2thZ2luZy1uaWd0aGx5
LXVidW50dTE4MDQiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJndGsiLCAi
Y29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAot
ICAgICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5vLWJ1YmJs
ZXdyYXAtc2FuZGJveCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsi
Z3RrLWxpbnV4LWJvdC0xNiJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEstTGludXgtNjRiaXQt
UmVsZWFzZS1QYWNrYWdpbmctTmlnaHRseS1VYnVudHUyMDA0IiwgImZhY3RvcnkiOiAiQnVpbGRB
bmRHZW5lcmF0ZU1pbmlCcm93c2VyQnVuZGxlRmFjdG9yeSIsICJidWlsZGRpciI6ICJndGstbGlu
dXgtNjQtcGFja2FnaW5nLW5pZ3RobHktdWJ1bnR1MjAwNCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgInBsYXRmb3JtIjogImd0ayIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0
ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgImFkZGl0aW9uYWxB
cmd1bWVudHMiOiBbIi0tbm8tYnViYmxld3JhcC1zYW5kYm94Il0sCi0gICAgICAgICAgICAgICAg
ICAgICAgIndvcmtlcm5hbWVzIjogWyJndGstbGludXgtYm90LTE3Il0KLSAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJu
YW1lIjogIldpbkNhaXJvLTY0LWJpdC1XS0wtUmVsZWFzZS1CdWlsZCIsICJmYWN0b3J5IjogIkJ1
aWxkRmFjdG9yeSIsICJidWlsZGRpciI6ICJ3aW5jYWlyby13a2wtcmVsZWFzZSIsCi0gICAgICAg
ICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIndpbmNhaXJvIiwgImNvbmZpZ3VyYXRpb24iOiAi
cmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAidHJpZ2dlcnMiOiBbIndpbmNhaXJvLXdrbC1yZWxlYXNlLXRlc3RzIiwgIndpbmNhaXJv
LWpzYy1yZWxlYXNlLXRlc3RzIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVz
IjogWyJ3aW5jYWlyby13a2wtcmVsZWFzZS1idWlsZC0wMSJdCi0gICAgICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6
ICJXaW5DYWlyby02NC1iaXQtV0tMLVJlbGVhc2UtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0V2Vi
S2l0MUFsbEJ1dEpTQ0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAid2luY2Fpcm8td2tsLXJlbGVhc2Ut
dGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3aW5jYWlybyIsICJj
b25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0g
ICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJ3aW5jYWlyby13a2wtcmVsZWFz
ZS10ZXN0cy0wMSIsICJ3aW5jYWlyby13a2wtcmVsZWFzZS10ZXN0cy0wMiJdCi0gICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAibmFtZSI6ICJXaW5DYWlyby02NC1iaXQtSlNDLVJlbGVhc2UtVGVzdHMiLCAiZmFjdG9yeSI6
ICJUZXN0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJ3aW5jYWlyby1qc2MtcmVsZWFzZS10ZXN0
cyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIndpbmNhaXJvIiwgImNvbmZp
Z3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbIndpbmNhaXJvLWpzYy1yZWxlYXNlLXRl
c3RzLTAxIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIldpbkNhaXJvLTY0LWJpdC1XS0wtRGVidWct
QnVpbGQiLCAiZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAid2luY2Fpcm8t
d2tsLWRlYnVnIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAid2luY2Fpcm8i
LCAiY29uZmlndXJhdGlvbiI6ICJkZWJ1ZyIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwK
LSAgICAgICAgICAgICAgICAgICAgICAidHJpZ2dlcnMiOiBbIndpbmNhaXJvLXdrbC1kZWJ1Zy10
ZXN0cyIsICJ3aW5jYWlyby1qc2MtZGVidWctdGVzdHMiXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAid29ya2VybmFtZXMiOiBbIndpbmNhaXJvLXdrbC1kZWJ1Zy1idWlsZC0wMSJdCi0gICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAibmFtZSI6ICJXaW5DYWlyby02NC1iaXQtV0tMLURlYnVnLVRlc3RzIiwgImZhY3Rvcnki
OiAiVGVzdFdlYktpdDFBbGxCdXRKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjogIndpbmNhaXJvLXdr
bC1kZWJ1Zy10ZXN0cyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIndpbmNh
aXJvIiwgImNvbmZpZ3VyYXRpb24iOiAiZGVidWciLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0
Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJ3aW5jYWlyby13a2wt
ZGVidWctdGVzdHMtMDEiLCAid2luY2Fpcm8td2tsLWRlYnVnLXRlc3RzLTAyIl0KLSAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICJuYW1lIjogIldpbkNhaXJvLTY0LWJpdC1KU0MtRGVidWctVGVzdHMiLCAiZmFjdG9yeSI6
ICJUZXN0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJ3aW5jYWlyby1qc2MtZGVidWctdGVzdHMi
LAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3aW5jYWlybyIsICJjb25maWd1
cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAg
ICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsid2luY2Fpcm8tanNjLWRlYnVnLXRlc3RzLTAx
Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICJuYW1lIjogIlBsYXlTdGF0aW9uLURlYnVnLUJ1aWxkIiwgImZhY3Rv
cnkiOiAiQnVpbGRGYWN0b3J5IiwgImJ1aWxkZGlyIjogInBsYXlzdGF0aW9uLWRlYnVnIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAicGxheXN0YXRpb24iLCAiY29uZmlndXJh
dGlvbiI6ICJkZWJ1ZyIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAid29ya2VybmFtZXMiOiBbInBsYXlzdGF0aW9uLWRlYnVnLWJ1aWxkLTAxIl0K
LSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICJuYW1lIjogIlBsYXlTdGF0aW9uLVJlbGVhc2UtQnVpbGQiLCAiZmFjdG9y
eSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAicGxheXN0YXRpb24tcmVsZWFzZSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogInBsYXlzdGF0aW9uIiwgImNvbmZpZ3Vy
YXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbInBsYXlzdGF0aW9uLXJlbGVhc2UtYnVpbGQt
MDEiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiSlNDT25seS1MaW51eC1BQXJjaDY0LVJlbGVhc2Ui
LCAiZmFjdG9yeSI6ICJCdWlsZEFuZFJlbW90ZUpTQ1Rlc3RzRmFjdG9yeSIsICJidWlsZGRpciI6
ICJqc2Nvbmx5LWxpbnV4LWFhcmNoNjQtcmVsZWFzZSIsCi0gICAgICAgICAgICAgICAgICAgICAg
InBsYXRmb3JtIjogImpzYy1vbmx5IiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNo
aXRlY3R1cmVzIjogWyJhYXJjaDY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5h
bWVzIjogWyJqc2Nvbmx5LWxpbnV4LWlnYWxpYS1ib3QtMiJdCi0gICAgICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6
ICJKU0NPbmx5LUxpbnV4LUFSTXY3LVRodW1iMi1SZWxlYXNlIiwgImZhY3RvcnkiOiAiQnVpbGRB
bmRSZW1vdGVKU0NUZXN0c0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAianNjb25seS1saW51eC1hcm12
Ny10aHVtYjItcmVsZWFzZSIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImpz
Yy1vbmx5IiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJh
cm12NyJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsianNjb25seS1s
aW51eC1pZ2FsaWEtYm90LTMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiSlNDT25seS1MaW51eC1B
Uk12Ny1UaHVtYjItU29mdEZQLVJlbGVhc2UiLCAiZmFjdG9yeSI6ICJCdWlsZEFuZFJlbW90ZUpT
Q1Rlc3RzRmFjdG9yeSIsICJidWlsZGRpciI6ICJqc2Nvbmx5LWxpbnV4LWFybXY3LXRodW1iMi1z
b2Z0ZnAtcmVsZWFzZSIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImpzYy1v
bmx5IiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJhcm12
NyJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsianNjb25seS1saW51
eC1pZ2FsaWEtYm90LTUiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiSlNDT25seS1MaW51eC1NSVBT
MzJlbC1SZWxlYXNlIiwgImZhY3RvcnkiOiAiQnVpbGRBbmRSZW1vdGVKU0NUZXN0c0ZhY3Rvcnki
LCAiYnVpbGRkaXIiOiAianNjb25seS1saW51eC1taXBzMzJlbC1yZWxlYXNlIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAicGxhdGZvcm0iOiAianNjLW9ubHkiLCAiY29uZmlndXJhdGlvbiI6ICJy
ZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIm1pcHMiXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAid29ya2VybmFtZXMiOiBbImpzY29ubHktbGludXgtaWdhbGlhLWJvdC0xIl0KLSAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICJuYW1lIjogIldQRS1MaW51eC02NC1iaXQtUmVsZWFzZS1CdWlsZCIsICJmYWN0b3J5Ijog
IkJ1aWxkRmFjdG9yeSIsICJidWlsZGRpciI6ICJ3cGUtbGludXgtNjQtcmVsZWFzZSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIndwZSIsICJjb25maWd1cmF0aW9uIjogInJl
bGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAg
ICAgInRyaWdnZXJzIjogWyJ3cGUtbGludXgtNjQtcmVsZWFzZS10ZXN0cyIsICJ3cGUtbGludXgt
NjQtcmVsZWFzZS10ZXN0cy1qcyJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1l
cyI6IFsid3BlLWxpbnV4LWJvdC0xIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIldQRS1MaW51eC02
NC1iaXQtUmVsZWFzZS1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RBbGxCdXRKU0NGYWN0b3J5Iiwg
ImJ1aWxkZGlyIjogIndwZS1saW51eC02NC1yZWxlYXNlLXRlc3RzIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAicGxhdGZvcm0iOiAid3BlIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJh
cmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2Vy
bmFtZXMiOiBbIndwZS1saW51eC1ib3QtMiJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJXUEUtTGlu
dXgtNjQtYml0LVJlbGVhc2UtSlMtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0SlNGYWN0b3J5Iiwg
ImJ1aWxkZGlyIjogIndwZS1saW51eC02NC1yZWxlYXNlLXRlc3RzLWpzIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAicGxhdGZvcm0iOiAid3BlIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIs
ICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29y
a2VybmFtZXMiOiBbIndwZS1saW51eC1ib3QtNSJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJXUEUt
TGludXgtNjQtYml0LURlYnVnLUJ1aWxkIiwgImZhY3RvcnkiOiAiQnVpbGRGYWN0b3J5IiwgImJ1
aWxkZGlyIjogIndwZS1saW51eC02NC1kZWJ1ZyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBs
YXRmb3JtIjogIndwZSIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMi
OiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ0cmlnZ2VycyI6IFsid3BlLWxp
bnV4LTY0LWRlYnVnLXRlc3RzIiwgIndwZS1saW51eC02NC1kZWJ1Zy10ZXN0cy1qcyJdLAotICAg
ICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsid3BlLWxpbnV4LWJvdC0zIl0KLSAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICJuYW1lIjogIldQRS1MaW51eC02NC1iaXQtRGVidWctVGVzdHMiLCAiZmFjdG9y
eSI6ICJUZXN0QWxsQnV0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJ3cGUtbGludXgtNjQtZGVi
dWctdGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3cGUiLCAiY29u
ZmlndXJhdGlvbiI6ICJkZWJ1ZyIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbIndwZS1saW51eC1ib3QtNCJdCi0gICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAibmFtZSI6ICJXUEUtTGludXgtNjQtYml0LURlYnVnLUpTLVRlc3RzIiwgImZhY3Rv
cnkiOiAiVGVzdEpTRmFjdG9yeSIsICJidWlsZGRpciI6ICJ3cGUtbGludXgtNjQtZGVidWctdGVz
dHMtanMiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3cGUiLCAiY29uZmln
dXJhdGlvbiI6ICJkZWJ1ZyIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbIndwZS1saW51eC1ib3QtNiJdCi0gICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAibmFtZSI6ICJXUEUtTGludXgtNjRiaXQtUmVsZWFzZS1QYWNrYWdpbmctTmlnaHRseS1V
YnVudHUxODA0IiwgImZhY3RvcnkiOiAiQnVpbGRBbmRHZW5lcmF0ZU1pbmlCcm93c2VyQnVuZGxl
RmFjdG9yeSIsICJidWlsZGRpciI6ICJ3cGUtbGludXgtNjQtcGFja2FnaW5nLW5pZ3RobHktdWJ1
bnR1MTgwNCIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIndwZSIsICJjb25m
aWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAg
ICAgICAgICAgICAgICAgICAgImFkZGl0aW9uYWxBcmd1bWVudHMiOiBbIi0tbm8tYnViYmxld3Jh
cC1zYW5kYm94IiwgIi0tY21ha2VhcmdzPS1ERU5BQkxFX1dQRV9RVF9BUEk9T0ZGIl0sCi0gICAg
ICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJ3cGUtbGludXgtYm90LTciXQotICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgIm5hbWUiOiAiV1BFLUxpbnV4LTY0Yml0LVJlbGVhc2UtUGFja2FnaW5nLU5pZ2h0
bHktVWJ1bnR1MjAwNCIsICJmYWN0b3J5IjogIkJ1aWxkQW5kR2VuZXJhdGVNaW5pQnJvd3NlckJ1
bmRsZUZhY3RvcnkiLCAiYnVpbGRkaXIiOiAid3BlLWxpbnV4LTY0LXBhY2thZ2luZy1uaWd0aGx5
LXVidW50dTIwMDQiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3cGUiLCAi
Y29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAot
ICAgICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5vLWJ1YmJs
ZXdyYXAtc2FuZGJveCIsICItLWNtYWtlYXJncz0tREVOQUJMRV9XUEVfUVRfQVBJPU9GRiJdLAot
ICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsid3BlLWxpbnV4LWJvdC04Il0K
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgXSwKLQotICAgICJzY2hl
ZHVsZXJzIjogWyB7ICJ0eXBlIjogIkFueUJyYW5jaFNjaGVkdWxlciIsICJuYW1lIjogInRydW5r
IiwgImNoYW5nZV9maWx0ZXIiOiAidHJ1bmtfZmlsdGVyIiwgInRyZWVTdGFibGVUaW1lciI6IDQ1
LjAsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiR1RLLUxpbnV4LTY0
LWJpdC1SZWxlYXNlLUJ1aWxkIiwgIkdUSy1MaW51eC02NC1iaXQtRGVidWctQnVpbGQiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdUSy1MaW51eC02NC1iaXQtUmVs
ZWFzZS1EZWJpYW4tU3RhYmxlLUJ1aWxkIiwgIkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1VYnVu
dHUtTFRTLUJ1aWxkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJK
U0NPbmx5LUxpbnV4LUFBcmNoNjQtUmVsZWFzZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiSlNDT25seS1MaW51eC1BUk12Ny1UaHVtYjItUmVsZWFzZSIsICJKU0NP
bmx5LUxpbnV4LUFSTXY3LVRodW1iMi1Tb2Z0RlAtUmVsZWFzZSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiSlNDT25seS1MaW51eC1NSVBTMzJlbC1SZWxlYXNlIiwg
IlBsYXlTdGF0aW9uLVJlbGVhc2UtQnVpbGQiLCAiUGxheVN0YXRpb24tRGVidWctQnVpbGQiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldpbkNhaXJvLTY0LWJpdC1X
S0wtUmVsZWFzZS1CdWlsZCIsICJXaW5DYWlyby02NC1iaXQtV0tMLURlYnVnLUJ1aWxkIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXUEUtTGludXgtNjQtYml0LVJl
bGVhc2UtQnVpbGQiLCAiV1BFLUxpbnV4LTY0LWJpdC1EZWJ1Zy1CdWlsZCJdCi0gICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiUGxhdGZvcm1TcGVj
aWZpY1NjaGVkdWxlciIsICJwbGF0Zm9ybSI6ICJtYWMtYmlnc3VyIiwgImJyYW5jaCI6ICJ0cnVu
ayIsICJ0cmVlU3RhYmxlVGltZXIiOiA0NS4wLAotICAgICAgICAgICAgICAgICAgICAgICJidWls
ZGVyTmFtZXMiOiBbIkFwcGxlLUJpZ1N1ci1SZWxlYXNlLUJ1aWxkIl0KLSAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJQbGF0Zm9ybVNwZWNpZmlj
U2NoZWR1bGVyIiwgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIsICJicmFuY2giOiAidHJ1bmsi
LCAidHJlZVN0YWJsZVRpbWVyIjogNDUuMCwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRl
ck5hbWVzIjogWyJBcHBsZS1DYXRhbGluYS1SZWxlYXNlLUJ1aWxkIiwgIkFwcGxlLUNhdGFsaW5h
LURlYnVnLUJ1aWxkIiwgIkFwcGxlLUNhdGFsaW5hLUxMSU5ULUNMb29wLUJ1aWxkQW5kVGVzdCJd
Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAi
VHJpZ2dlcmFibGUiLCAibmFtZSI6ICJjYXRhbGluYS1yZWxlYXNlLXBlcmYtdGVzdHMiLAotICAg
ICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLUNhdGFsaW5hLVJlbGVh
c2UtV0syLVBlcmYiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAg
ICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAiY2F0YWxpbmEtcmVsZWFzZS10ZXN0
cy13azEiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLUNh
dGFsaW5hLVJlbGVhc2UtV0sxLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImNhdGFsaW5h
LXJlbGVhc2UtdGVzdHMtd2syIiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVz
IjogWyJBcHBsZS1DYXRhbGluYS1SZWxlYXNlLVdLMi1UZXN0cyJdCi0gICAgICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFt
ZSI6ICJjYXRhbGluYS1kZWJ1Zy10ZXN0cy13azEiLAotICAgICAgICAgICAgICAgICAgICAgICJi
dWlsZGVyTmFtZXMiOiBbIkFwcGxlLUNhdGFsaW5hLURlYnVnLVdLMS1UZXN0cyJdCi0gICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFi
bGUiLCAibmFtZSI6ICJjYXRhbGluYS1kZWJ1Zy10ZXN0cy13azIiLAotICAgICAgICAgICAgICAg
ICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLUNhdGFsaW5hLURlYnVnLVdLMi1UZXN0cyJd
Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAi
VHJpZ2dlcmFibGUiLCAibmFtZSI6ICJjYXRhbGluYS1yZWxlYXNlLXRlc3RzLXdrMi13ZWJnbCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtQ2F0YWxpbmEt
UmVsZWFzZS1XSzItV2ViR0wtVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAiY2F0YWxpbmEt
ZGVidWctdGVzdHMtd2syLWdwdXByb2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICJidWls
ZGVyTmFtZXMiOiBbIkFwcGxlLUNhdGFsaW5hLURlYnVnLVdLMi1HUFVQcm9jZXNzLVRlc3RzIl0K
LSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJU
cmlnZ2VyYWJsZSIsICJuYW1lIjogImNhdGFsaW5hLWRlYnVnLXRlc3RzLWpzYyIsCi0gICAgICAg
ICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtQ2F0YWxpbmEtRGVidWctSlND
LVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAi
dHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImNhdGFsaW5hLXJlbGVhc2UtdGVzdHMtanNj
IiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBcHBsZS1DYXRhbGlu
YS1SZWxlYXNlLUpTQy1UZXN0cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJjYXRhbGluYS1kZWJ1
Zy10ZXN0cy10ZXN0MjYyIiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjog
WyJBcHBsZS1DYXRhbGluYS1EZWJ1Zy1UZXN0MjYyLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1l
IjogImNhdGFsaW5hLXJlbGVhc2UtdGVzdHMtdGVzdDI2MiIsCi0gICAgICAgICAgICAgICAgICAg
ICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtQ2F0YWxpbmEtUmVsZWFzZS1UZXN0MjYyLVRlc3Rz
Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6
ICJQbGF0Zm9ybVNwZWNpZmljU2NoZWR1bGVyIiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiLCAi
YnJhbmNoIjogInRydW5rIiwgInRyZWVTdGFibGVUaW1lciI6IDQ1LjAsCi0gICAgICAgICAgICAg
ICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtTW9qYXZlLVJlbGVhc2UtQnVpbGQiLCAi
QXBwbGUtTW9qYXZlLURlYnVnLUJ1aWxkIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogIm1vamF2ZS1y
ZWxlYXNlLXRlc3RzLXdrMSIsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6
IFsiQXBwbGUtTW9qYXZlLVJlbGVhc2UtV0sxLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjog
Im1vamF2ZS1yZWxlYXNlLXRlc3RzLXdrMiIsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxk
ZXJOYW1lcyI6IFsiQXBwbGUtTW9qYXZlLVJlbGVhc2UtV0syLVRlc3RzIl0KLSAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIs
ICJuYW1lIjogIm1vamF2ZS1kZWJ1Zy10ZXN0cy13azEiLAotICAgICAgICAgICAgICAgICAgICAg
ICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLU1vamF2ZS1EZWJ1Zy1XSzEtVGVzdHMiXQotICAgICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJh
YmxlIiwgIm5hbWUiOiAibW9qYXZlLWRlYnVnLXRlc3RzLXdrMiIsCi0gICAgICAgICAgICAgICAg
ICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtTW9qYXZlLURlYnVnLVdLMi1UZXN0cyJdCi0g
ICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiUGxh
dGZvcm1TcGVjaWZpY1NjaGVkdWxlciIsICJwbGF0Zm9ybSI6ICJpb3MtMTQiLCAiYnJhbmNoIjog
InRydW5rIiwgInRyZWVTdGFibGVUaW1lciI6IDQ1LjAsCi0gICAgICAgICAgICAgICAgICAgICAg
ImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtaU9TLTE0LVJlbGVhc2UtQnVpbGQiXQotICAgICAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlBsYXRmb3JtU3Bl
Y2lmaWNTY2hlZHVsZXIiLCAicGxhdGZvcm0iOiAiaW9zLXNpbXVsYXRvci0xNCIsICJicmFuY2gi
OiAidHJ1bmsiLCAidHJlZVN0YWJsZVRpbWVyIjogNDUuMCwKLSAgICAgICAgICAgICAgICAgICAg
ICAiYnVpbGRlck5hbWVzIjogWyJBcHBsZS1pT1MtMTQtU2ltdWxhdG9yLVJlbGVhc2UtQnVpbGQi
LCAiQXBwbGUtaU9TLTE0LVNpbXVsYXRvci1EZWJ1Zy1CdWlsZCJdCi0gICAgICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiUGxhdGZvcm1TcGVjaWZpY1Nj
aGVkdWxlciIsICJwbGF0Zm9ybSI6ICJ0dm9zLTE0IiwgImJyYW5jaCI6ICJ0cnVuayIsICJ0cmVl
U3RhYmxlVGltZXIiOiA0NS4wLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMi
OiBbIkFwcGxlLXR2T1MtMTQtUmVsZWFzZS1CdWlsZCJdCi0gICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiUGxhdGZvcm1TcGVjaWZpY1NjaGVkdWxl
ciIsICJwbGF0Zm9ybSI6ICJ0dm9zLXNpbXVsYXRvci0xNCIsICJicmFuY2giOiAidHJ1bmsiLCAi
dHJlZVN0YWJsZVRpbWVyIjogNDUuMCwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5h
bWVzIjogWyJBcHBsZS10dk9TLVNpbXVsYXRvci0xNC1SZWxlYXNlLUJ1aWxkIl0KLSAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJQbGF0Zm9ybVNw
ZWNpZmljU2NoZWR1bGVyIiwgInBsYXRmb3JtIjogIndhdGNob3MtNyIsICJicmFuY2giOiAidHJ1
bmsiLCAidHJlZVN0YWJsZVRpbWVyIjogNDUuMCwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVp
bGRlck5hbWVzIjogWyJBcHBsZS13YXRjaE9TLTctUmVsZWFzZS1CdWlsZCJdCi0gICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiUGxhdGZvcm1TcGVj
aWZpY1NjaGVkdWxlciIsICJwbGF0Zm9ybSI6ICJ3YXRjaG9zLXNpbXVsYXRvci03IiwgImJyYW5j
aCI6ICJ0cnVuayIsICJ0cmVlU3RhYmxlVGltZXIiOiA0NS4wLAotICAgICAgICAgICAgICAgICAg
ICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLXdhdGNoT1MtU2ltdWxhdG9yLTctUmVsZWFzZS1C
dWlsZCJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5
cGUiOiAiUGxhdGZvcm1TcGVjaWZpY1NjaGVkdWxlciIsICJwbGF0Zm9ybSI6ICJ3aW4iLCAiYnJh
bmNoIjogInRydW5rIiwgInRyZWVTdGFibGVUaW1lciI6IDQ1LjAsCi0gICAgICAgICAgICAgICAg
ICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtV2luLTEwLVJlbGVhc2UtQnVpbGQiLCAiQXBw
bGUtV2luLTEwLURlYnVnLUJ1aWxkIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImlvcy1zaW11bGF0
b3ItMTQtcmVsZWFzZS10ZXN0cy13azIiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVy
TmFtZXMiOiBbIkFwcGxlLWlPUy0xNC1TaW11bGF0b3ItUmVsZWFzZS1XSzItVGVzdHMiXQotICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdn
ZXJhYmxlIiwgIm5hbWUiOiAiaW9zLXNpbXVsYXRvci0xNC1kZWJ1Zy10ZXN0cy13azIiLAotICAg
ICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLWlPUy0xNC1TaW11bGF0
b3ItRGVidWctV0syLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImlwYWRvcy1zaW11bGF0
b3ItMTQtcmVsZWFzZS10ZXN0cy13azIiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVy
TmFtZXMiOiBbIkFwcGxlLWlQYWRPUy0xNC1TaW11bGF0b3ItUmVsZWFzZS1XSzItVGVzdHMiXQot
ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRy
aWdnZXJhYmxlIiwgIm5hbWUiOiAiaXBhZG9zLXNpbXVsYXRvci0xNC1kZWJ1Zy10ZXN0cy13azIi
LAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLWlQYWRPUy0x
NC1TaW11bGF0b3ItRGVidWctV0syLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogIndpbjEw
LXJlbGVhc2UtdGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBb
IkFwcGxlLVdpbi0xMC1SZWxlYXNlLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogIndpbjEw
LWRlYnVnLXRlc3RzIiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJB
cHBsZS1XaW4tMTAtRGVidWctVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAiZ3RrLWxpbnV4
LTY0LXJlbGVhc2UtdGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMi
OiBbIkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1UZXN0cyJdCi0gICAgICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6
ICJndGstbGludXgtNjQtcmVsZWFzZS10ZXN0cy1qcyIsCi0gICAgICAgICAgICAgICAgICAgICAg
ImJ1aWxkZXJOYW1lcyI6IFsiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLUpTLVRlc3RzIl0KLSAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmln
Z2VyYWJsZSIsICJuYW1lIjogImd0ay1saW51eC02NC1yZWxlYXNlLXRlc3RzLXdlYmRyaXZlciIs
Ci0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiR1RLLUxpbnV4LTY0LWJp
dC1SZWxlYXNlLVdlYkRyaXZlci1UZXN0cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJndGstbGlu
dXgtNjQtZGVidWctdGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMi
OiBbIkdUSy1MaW51eC02NC1iaXQtRGVidWctVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAi
Z3RrLWxpbnV4LTY0LWRlYnVnLXRlc3RzLWpzIiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVp
bGRlck5hbWVzIjogWyJHVEstTGludXgtNjQtYml0LURlYnVnLUpTLVRlc3RzIl0KLSAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJs
ZSIsICJuYW1lIjogImd0ay1saW51eC02NC1kZWJ1Zy10ZXN0cy13ZWJkcml2ZXIiLAotICAgICAg
ICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkdUSy1MaW51eC02NC1iaXQtRGVidWct
V2ViRHJpdmVyLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImd0ay1saW51eC02NC1yZWxl
YXNlLXBlcmYtdGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBb
IkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1QZXJmIl0KLSAgICAgICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImd0
ay1saW51eC02NC1yZWxlYXNlLXdheWxhbmQtdGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAg
ICJidWlsZGVyTmFtZXMiOiBbIkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1XYXlsYW5kLVRlc3Rz
Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6
ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogIndpbmNhaXJvLXdrbC1yZWxlYXNlLXRlc3RzIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJXaW5DYWlyby02NC1iaXQtV0tM
LVJlbGVhc2UtVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAid2luY2Fpcm8tanNjLXJlbGVh
c2UtdGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIldpbkNh
aXJvLTY0LWJpdC1KU0MtUmVsZWFzZS1UZXN0cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJ3aW5j
YWlyby13a2wtZGVidWctdGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFt
ZXMiOiBbIldpbkNhaXJvLTY0LWJpdC1XS0wtRGVidWctVGVzdHMiXQotICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5h
bWUiOiAid2luY2Fpcm8tanNjLWRlYnVnLXRlc3RzIiwKLSAgICAgICAgICAgICAgICAgICAgICAi
YnVpbGRlck5hbWVzIjogWyJXaW5DYWlyby02NC1iaXQtSlNDLURlYnVnLVRlc3RzIl0KLSAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2Vy
YWJsZSIsICJuYW1lIjogIndwZS1saW51eC02NC1yZWxlYXNlLXRlc3RzIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJXUEUtTGludXgtNjQtYml0LVJlbGVhc2UtVGVz
dHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBl
IjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAid3BlLWxpbnV4LTY0LXJlbGVhc2UtdGVzdHMtanMi
LAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIldQRS1MaW51eC02NC1i
aXQtUmVsZWFzZS1KUy1UZXN0cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJ3cGUtbGludXgtNjQt
ZGVidWctdGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIldQ
RS1MaW51eC02NC1iaXQtRGVidWctVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAid3BlLWxp
bnV4LTY0LWRlYnVnLXRlc3RzLWpzIiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5h
bWVzIjogWyJXUEUtTGludXgtNjQtYml0LURlYnVnLUpTLVRlc3RzIl0KLSAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJOaWdodGx5IiwgIm5hbWUi
OiAiTmlnaHRseVNjaGVkdWxlciIsICJjaGFuZ2VfZmlsdGVyIjogInRydW5rX2ZpbHRlciIsCi0g
ICAgICAgICAgICAgICAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsICJob3VyIjogMjIsICJtaW51
dGUiOiAwLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkdUSy1MaW51
eC02NGJpdC1SZWxlYXNlLVBhY2thZ2luZy1OaWdodGx5LVVidW50dTE4MDQiLCAiR1RLLUxpbnV4
LTY0Yml0LVJlbGVhc2UtUGFja2FnaW5nLU5pZ2h0bHktVWJ1bnR1MjAwNCIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV1BFLUxpbnV4LTY0Yml0LVJlbGVhc2UtUGFj
a2FnaW5nLU5pZ2h0bHktVWJ1bnR1MTgwNCIsICJXUEUtTGludXgtNjRiaXQtUmVsZWFzZS1QYWNr
YWdpbmctTmlnaHRseS1VYnVudHUyMDA0Il0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgXQotfQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL2ZhY3Rvcmllcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvZmFjdG9yaWVzLnB5CShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29s
cy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvZmFjdG9yaWVzLnB5CShub25leGlz
dGVudCkKQEAgLTEsMjQ3ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0j
IGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0j
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi1mcm9tIGJ1aWxkYm90LnByb2Nlc3MgaW1wb3J0IGZhY3RvcnkKLWZyb20g
YnVpbGRib3Quc3RlcHMgaW1wb3J0IHRyaWdnZXIKLQotZnJvbSBzdGVwcyBpbXBvcnQgKgotCi0K
LWNsYXNzIEZhY3RvcnkoZmFjdG9yeS5CdWlsZEZhY3RvcnkpOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgYnVpbGRPbmx5LCBh
ZGRpdGlvbmFsQXJndW1lbnRzLCBkZXZpY2VfbW9kZWwpOgotICAgICAgICBmYWN0b3J5LkJ1aWxk
RmFjdG9yeS5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLmFkZFN0ZXAoQ29uZmlndXJlQnVp
bGQocGxhdGZvcm09cGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgYXJjaGl0
ZWN0dXJlPSIgIi5qb2luKGFyY2hpdGVjdHVyZXMpLCBidWlsZE9ubHk9YnVpbGRPbmx5LCBhZGRp
dGlvbmFsQXJndW1lbnRzPWFkZGl0aW9uYWxBcmd1bWVudHMsIGRldmljZV9tb2RlbD1kZXZpY2Vf
bW9kZWwpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoQ2hlY2tPdXRTb3VyY2UoKSkKLSAgICAgICAg
aWYgbm90IChwbGF0Zm9ybSA9PSAianNjLW9ubHkiKToKLSAgICAgICAgICAgIHNlbGYuYWRkU3Rl
cChLaWxsT2xkUHJvY2Vzc2VzKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChDbGVhbkJ1aWxkSWZT
Y2hlZHVsZWQoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKERlbGV0ZVN0YWxlQnVpbGRGaWxlcygp
KQotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAid2luIjoKLSAgICAgICAgICAgIHNlbGYuYWRkU3Rl
cChJbnN0YWxsV2luMzJEZXBlbmRlbmNpZXMoKSkKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gImd0
ayIgYW5kICItLW5vLWV4cGVyaW1lbnRhbC1mZWF0dXJlcyIgbm90IGluIChhZGRpdGlvbmFsQXJn
dW1lbnRzIG9yIFtdKToKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChJbnN0YWxsR3RrRGVwZW5k
ZW5jaWVzKCkpCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICJ3cGUiOgotICAgICAgICAgICAgc2Vs
Zi5hZGRTdGVwKEluc3RhbGxXcGVEZXBlbmRlbmNpZXMoKSkKLQotCi1jbGFzcyBCdWlsZEZhY3Rv
cnkoRmFjdG9yeSk6Ci0gICAgU2hvdWxkUnVuSlNDQnVuZGxlU3RlcCA9IEZhbHNlCi0gICAgU2hv
dWxkUnVuTWluaUJyb3dzZXJCdW5kbGVTdGVwID0gRmFsc2UKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgdHJpZ2dlcnM9Tm9u
ZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lLCBkZXZpY2VfbW9kZWw9Tm9uZSk6Ci0gICAgICAg
IEZhY3RvcnkuX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVj
dHVyZXMsIFRydWUsIGFkZGl0aW9uYWxBcmd1bWVudHMsIGRldmljZV9tb2RlbCkKLQotICAgICAg
ICBpZiBwbGF0Zm9ybSA9PSAid2luIiBvciBwbGF0Zm9ybS5zdGFydHN3aXRoKCJwbGF5c3RhdGlv
biIpOgotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKENvbXBpbGVXZWJLaXQodGltZW91dD0yICog
NjAgKiA2MCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoQ29tcGls
ZVdlYktpdCgpKQotCi0gICAgICAgIGlmIHNlbGYuU2hvdWxkUnVuSlNDQnVuZGxlU3RlcDoKLSAg
ICAgICAgICAgIHNlbGYuYWRkU3RlcChHZW5lcmF0ZUpTQ0J1bmRsZSgpKQotICAgICAgICBpZiBz
ZWxmLlNob3VsZFJ1bk1pbmlCcm93c2VyQnVuZGxlU3RlcDoKLSAgICAgICAgICAgIHNlbGYuYWRk
U3RlcChHZW5lcmF0ZU1pbmlCcm93c2VyQnVuZGxlKCkpCi0KLSAgICAgICAgaWYgdHJpZ2dlcnM6
Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoQXJjaGl2ZUJ1aWx0UHJvZHVjdCgpKQotICAgICAg
ICAgICAgc2VsZi5hZGRTdGVwKFVwbG9hZEJ1aWx0UHJvZHVjdCgpKQotICAgICAgICAgICAgaWYg
cGxhdGZvcm0uc3RhcnRzd2l0aCgnbWFjJykgb3IgcGxhdGZvcm0uc3RhcnRzd2l0aCgnaW9zLXNp
bXVsYXRvcicpIG9yIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3R2b3Mtc2ltdWxhdG9yJykgb3IgcGxh
dGZvcm0uc3RhcnRzd2l0aCgnd2F0Y2hvcy1zaW11bGF0b3InKToKLSAgICAgICAgICAgICAgICBz
ZWxmLmFkZFN0ZXAoQXJjaGl2ZU1pbmlmaWVkQnVpbHRQcm9kdWN0KCkpCi0gICAgICAgICAgICAg
ICAgc2VsZi5hZGRTdGVwKFVwbG9hZE1pbmlmaWVkQnVpbHRQcm9kdWN0KCkpCi0gICAgICAgICAg
ICBzZWxmLmFkZFN0ZXAoVHJhbnNmZXJUb1MzKCkpCi0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAo
dHJpZ2dlci5UcmlnZ2VyKHNjaGVkdWxlck5hbWVzPXRyaWdnZXJzKSkKLQotCi1jbGFzcyBUZXN0
RmFjdG9yeShGYWN0b3J5KToKLSAgICBKU0NUZXN0Q2xhc3MgPSBSdW5KYXZhU2NyaXB0Q29yZVRl
c3RzCi0gICAgTGF5b3V0VGVzdENsYXNzID0gUnVuV2ViS2l0VGVzdHMKLQotICAgIGRlZiBnZXRQ
cm9kdWN0KHNlbGYpOgotICAgICAgICBzZWxmLmFkZFN0ZXAoRG93bmxvYWRCdWlsdFByb2R1Y3Qo
KSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKEV4dHJhY3RCdWlsdFByb2R1Y3QoKSkKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywg
YWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lLCBkZXZpY2VfbW9kZWw9Tm9uZSwgKiprd2FyZ3MpOgot
ICAgICAgICBGYWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBh
cmNoaXRlY3R1cmVzLCBGYWxzZSwgYWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNlX21vZGVsLCAq
Kmt3YXJncykKLSAgICAgICAgc2VsZi5nZXRQcm9kdWN0KCkKLQotICAgICAgICBpZiBwbGF0Zm9y
bSA9PSAnd2luY2Fpcm8nOgotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKEluc3RhbGxXaW5DYWly
b0RlcGVuZGVuY2llcygpKQotCi0gICAgICAgIGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ21hYycp
IG9yIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2lvcy1zaW11bGF0b3InKToKLSAgICAgICAgICAgIHNl
bGYuYWRkU3RlcChXYWl0Rm9yQ3Jhc2hDb2xsZWN0aW9uKCkpCi0KLSAgICAgICAgaWYgc2VsZi5K
U0NUZXN0Q2xhc3M6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoc2VsZi5KU0NUZXN0Q2xhc3Mo
KSkKLSAgICAgICAgaWYgc2VsZi5MYXlvdXRUZXN0Q2xhc3M6Ci0gICAgICAgICAgICBzZWxmLmFk
ZFN0ZXAoc2VsZi5MYXlvdXRUZXN0Q2xhc3MoKSkKLQotICAgICAgICBpZiBwbGF0Zm9ybS5zdGFy
dHN3aXRoKCd3aW4nKSBvciBwbGF0Zm9ybS5zdGFydHN3aXRoKCdtYWMnKSBvciBwbGF0Zm9ybS5z
dGFydHN3aXRoKCdpb3Mtc2ltdWxhdG9yJyk6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoUnVu
QVBJVGVzdHMoKSkKLQotICAgICAgICBpZiBwbGF0Zm9ybS5zdGFydHN3aXRoKCdtYWMnKToKLSAg
ICAgICAgICAgIHNlbGYuYWRkU3RlcChSdW5MTERCV2ViS2l0VGVzdHMoKSkKLQotICAgICAgICBz
ZWxmLmFkZFN0ZXAoUnVuV2ViS2l0UHlUZXN0cygpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoUnVu
UGVybFRlc3RzKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChSdW5CaW5kaW5nc1Rlc3RzKCkpCi0g
ICAgICAgIHNlbGYuYWRkU3RlcChSdW5CdWlsdGluc1Rlc3RzKCkpCi0gICAgICAgIGlmIG5vdCBw
bGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChSdW5E
YXNoYm9hcmRUZXN0cygpKQotCi0gICAgICAgIGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ21hYycp
IG9yIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2lvcy1zaW11bGF0b3InKToKLSAgICAgICAgICAgIHNl
bGYuYWRkU3RlcChUcmlnZ2VyQ3Jhc2hMb2dTdWJtaXNzaW9uKCkpCi0KLSAgICAgICAgaWYgc2Vs
Zi5MYXlvdXRUZXN0Q2xhc3M6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoQXJjaGl2ZVRlc3RS
ZXN1bHRzKCkpCi0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoVXBsb2FkVGVzdFJlc3VsdHMoKSkK
LSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChFeHRyYWN0VGVzdFJlc3VsdHMoKSkKLSAgICAgICAg
aWYgcGxhdGZvcm0gPT0gImd0ayI6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuR3RrQVBJ
VGVzdHMoKSkKLSAgICAgICAgICAgIGlmIGFkZGl0aW9uYWxBcmd1bWVudHMgYW5kICItLWRpc3Bs
YXktc2VydmVyPXdheWxhbmQiIGluIGFkZGl0aW9uYWxBcmd1bWVudHM6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5hZGRTdGVwKFJ1bldlYkRyaXZlclRlc3RzKCkpCi0gICAgICAgIGlmIHBsYXRmb3Jt
ID09ICJ3cGUiOgotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bldQRUFQSVRlc3RzKCkpCi0g
ICAgICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuV2ViRHJpdmVyVGVzdHMoKSkKLQotCi1jbGFzcyBC
dWlsZEFuZFRlc3RGYWN0b3J5KFRlc3RGYWN0b3J5KToKLSAgICBkZWYgZ2V0UHJvZHVjdChzZWxm
KToKLSAgICAgICAgc2VsZi5hZGRTdGVwKENvbXBpbGVXZWJLaXQoKSkKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgdHJpZ2dl
cnM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lLCBkZXZpY2VfbW9kZWw9Tm9uZSwgKipr
d2FyZ3MpOgotICAgICAgICBUZXN0RmFjdG9yeS5fX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29u
ZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgYWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNlX21v
ZGVsLCAqKmt3YXJncykKLSAgICAgICAgaWYgdHJpZ2dlcnM6Ci0gICAgICAgICAgICBzZWxmLmFk
ZFN0ZXAoQXJjaGl2ZUJ1aWx0UHJvZHVjdCgpKQotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKFVw
bG9hZEJ1aWx0UHJvZHVjdCgpKQotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKHRyaWdnZXIuVHJp
Z2dlcihzY2hlZHVsZXJOYW1lcz10cmlnZ2VycykpCi0KLQotY2xhc3MgQnVpbGRBbmRUZXN0TExJ
TlRDTG9vcEZhY3RvcnkoRmFjdG9yeSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsYXRmb3Jt
LCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCB0cmlnZ2Vycz1Ob25lLCBhZGRpdGlvbmFs
QXJndW1lbnRzPU5vbmUsIGRldmljZV9tb2RlbD1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIEZh
Y3RvcnkuX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVy
ZXMsIEZhbHNlLCBhZGRpdGlvbmFsQXJndW1lbnRzLCBkZXZpY2VfbW9kZWwsICoqa3dhcmdzKQot
ICAgICAgICBzZWxmLmFkZFN0ZXAoQ29tcGlsZUxMSU5UQ0xvb3AoKSkKLSAgICAgICAgc2VsZi5h
ZGRTdGVwKFJ1bkxMSU5UQ0xvb3BUZXN0cygpKQotCi0KLWNsYXNzIEJ1aWxkQW5kVGVzdDMyYml0
SlNDRmFjdG9yeShGYWN0b3J5KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNv
bmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXMsIHRyaWdnZXJzPU5vbmUsIGFkZGl0aW9uYWxBcmd1
bWVudHM9Tm9uZSwgZGV2aWNlX21vZGVsPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgRmFjdG9y
eS5fX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywg
RmFsc2UsIGFkZGl0aW9uYWxBcmd1bWVudHMsIGRldmljZV9tb2RlbCwgKiprd2FyZ3MpCi0gICAg
ICAgIHNlbGYuYWRkU3RlcChDb21waWxlMzJiaXRKU0MoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVw
KFJ1bjMyYml0SlNDVGVzdHMoKSkKLQotCi1jbGFzcyBCdWlsZEFuZE5vbkxheW91dFRlc3RGYWN0
b3J5KEJ1aWxkQW5kVGVzdEZhY3RvcnkpOgotICAgIExheW91dFRlc3RDbGFzcyA9IE5vbmUKLQot
Ci1jbGFzcyBCdWlsZEFuZFJlbW90ZUpTQ1Rlc3RzRmFjdG9yeShGYWN0b3J5KToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXMsIHRy
aWdnZXJzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSwgZGV2aWNlX21vZGVsPU5vbmUp
OgotICAgICAgICBGYWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9u
LCBhcmNoaXRlY3R1cmVzLCBGYWxzZSwgYWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNlX21vZGVs
KQotICAgICAgICBzZWxmLmFkZFN0ZXAoQ29tcGlsZUpTQ09ubHkodGltZW91dD02MCAqIDYwKSkK
LSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1blJlbW90ZUphdmFTY3JpcHRDb3JlVGVzdHModGltZW91
dD02MCAqIDYwKSkKLQotCi1jbGFzcyBUZXN0V2ViS2l0MUxlYWtzRmFjdG9yeShGYWN0b3J5KToK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVj
dHVyZXMsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSwgZGV2aWNlX21vZGVsPU5vbmUpOgotICAg
ICAgICBGYWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNo
aXRlY3R1cmVzLCBGYWxzZSwgYWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNlX21vZGVsKQotICAg
ICAgICBzZWxmLmFkZFN0ZXAoRG93bmxvYWRCdWlsdFByb2R1Y3QoKSkKLSAgICAgICAgc2VsZi5h
ZGRTdGVwKEV4dHJhY3RCdWlsdFByb2R1Y3QoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bldl
YktpdDFMZWFrVGVzdHMoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKEFyY2hpdmVUZXN0UmVzdWx0
cygpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoVXBsb2FkVGVzdFJlc3VsdHMoKSkKLSAgICAgICAg
c2VsZi5hZGRTdGVwKEV4dHJhY3RUZXN0UmVzdWx0c0FuZExlYWtzKCkpCi0KLQotY2xhc3MgVGVz
dEFsbEJ1dEpTQ0ZhY3RvcnkoVGVzdEZhY3RvcnkpOgotICAgIEpTQ1Rlc3RDbGFzcyA9IE5vbmUK
LQotCi1jbGFzcyBCdWlsZEFuZEdlbmVyYXRlSlNDQnVuZGxlRmFjdG9yeShCdWlsZEZhY3Rvcnkp
OgotICAgIFNob3VsZFJ1bkpTQ0J1bmRsZVN0ZXAgPSBUcnVlCi0KLQotY2xhc3MgQnVpbGRBbmRH
ZW5lcmF0ZU1pbmlCcm93c2VyQnVuZGxlRmFjdG9yeShCdWlsZEZhY3RvcnkpOgotICAgIFNob3Vs
ZFJ1bk1pbmlCcm93c2VyQnVuZGxlU3RlcCA9IFRydWUKLQotCi1jbGFzcyBCdWlsZEFuZEdlbmVy
YXRlTWluaUJyb3dzZXJKU0NCdW5kbGVGYWN0b3J5KEJ1aWxkRmFjdG9yeSk6Ci0gICAgU2hvdWxk
UnVuSlNDQnVuZGxlU3RlcCA9IFRydWUKLSAgICBTaG91bGRSdW5NaW5pQnJvd3NlckJ1bmRsZVN0
ZXAgPSBUcnVlCi0KLQotY2xhc3MgVGVzdEpTQ0ZhY3RvcnkoRmFjdG9yeSk6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCBhZGRp
dGlvbmFsQXJndW1lbnRzPU5vbmUsIGRldmljZV9tb2RlbD1Ob25lKToKLSAgICAgICAgRmFjdG9y
eS5fX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywg
RmFsc2UsIGFkZGl0aW9uYWxBcmd1bWVudHMsIGRldmljZV9tb2RlbCkKLSAgICAgICAgc2VsZi5h
ZGRTdGVwKERvd25sb2FkQnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChFeHRy
YWN0QnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChSdW5KYXZhU2NyaXB0Q29y
ZVRlc3RzKCkpCi0KLQotY2xhc3MgVGVzdDI2MkZhY3RvcnkoRmFjdG9yeSk6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCBhZGRp
dGlvbmFsQXJndW1lbnRzPU5vbmUsIGRldmljZV9tb2RlbD1Ob25lKToKLSAgICAgICAgRmFjdG9y
eS5fX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywg
RmFsc2UsIGFkZGl0aW9uYWxBcmd1bWVudHMsIGRldmljZV9tb2RlbCkKLSAgICAgICAgc2VsZi5h
ZGRTdGVwKERvd25sb2FkQnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChFeHRy
YWN0QnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChSdW5UZXN0MjYyVGVzdHMo
KSkKLQotCi1jbGFzcyBUZXN0SlNGYWN0b3J5KEZhY3RvcnkpOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgYWRkaXRpb25hbEFy
Z3VtZW50cz1Ob25lLCBkZXZpY2VfbW9kZWw9Tm9uZSk6Ci0gICAgICAgIEZhY3RvcnkuX19pbml0
X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXMsIEZhbHNlLCBh
ZGRpdGlvbmFsQXJndW1lbnRzLCBkZXZpY2VfbW9kZWwpCi0gICAgICAgIHNlbGYuYWRkU3RlcChE
b3dubG9hZEJ1aWx0UHJvZHVjdCgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoRXh0cmFjdEJ1aWx0
UHJvZHVjdCgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cygp
KQotICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuVGVzdDI2MlRlc3RzKCkpCi0KLQotY2xhc3MgVGVz
dFdlYkRyaXZlckZhY3RvcnkoRmFjdG9yeSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsYXRm
b3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5v
bmUsIGRldmljZV9tb2RlbD1Ob25lKToKLSAgICAgICAgRmFjdG9yeS5fX2luaXRfXyhzZWxmLCBw
bGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgRmFsc2UsIGFkZGl0aW9uYWxB
cmd1bWVudHMsIGRldmljZV9tb2RlbCkKLSAgICAgICAgc2VsZi5hZGRTdGVwKERvd25sb2FkQnVp
bHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChFeHRyYWN0QnVpbHRQcm9kdWN0KCkp
Ci0gICAgICAgIHNlbGYuYWRkU3RlcChSdW5XZWJEcml2ZXJUZXN0cygpKQotCi0KLWNsYXNzIFRl
c3RXZWJLaXQxRmFjdG9yeShUZXN0RmFjdG9yeSk6Ci0gICAgTGF5b3V0VGVzdENsYXNzID0gUnVu
V2ViS2l0MVRlc3RzCi0KLQotY2xhc3MgVGVzdFdlYktpdDFBbGxCdXRKU0NGYWN0b3J5KFRlc3RX
ZWJLaXQxRmFjdG9yeSk6Ci0gICAgSlNDVGVzdENsYXNzID0gTm9uZQotCi0KLWNsYXNzIEJ1aWxk
QW5kUGVyZlRlc3RGYWN0b3J5KEZhY3RvcnkpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0
Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgYWRkaXRpb25hbEFyZ3VtZW50cz1O
b25lLCBkZXZpY2VfbW9kZWw9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBGYWN0b3J5Ll9faW5p
dF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCBGYWxzZSwg
YWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNlX21vZGVsLCAqKmt3YXJncykKLSAgICAgICAgc2Vs
Zi5hZGRTdGVwKENvbXBpbGVXZWJLaXQoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bkFuZFVw
bG9hZFBlcmZUZXN0cygpKQotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAiZ3RrIjoKLSAgICAgICAg
ICAgIHNlbGYuYWRkU3RlcChSdW5CZW5jaG1hcmtUZXN0cyh0aW1lb3V0PTIwMDApKQotCi0KLWNs
YXNzIERvd25sb2FkQW5kUGVyZlRlc3RGYWN0b3J5KEZhY3RvcnkpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgYWRkaXRpb25h
bEFyZ3VtZW50cz1Ob25lLCBkZXZpY2VfbW9kZWw9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBG
YWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1
cmVzLCBGYWxzZSwgYWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNlX21vZGVsLCAqKmt3YXJncykK
LSAgICAgICAgc2VsZi5hZGRTdGVwKERvd25sb2FkQnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNl
bGYuYWRkU3RlcChFeHRyYWN0QnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChS
dW5BbmRVcGxvYWRQZXJmVGVzdHMoKSkKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gImd0ayI6Ci0g
ICAgICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuQmVuY2htYXJrVGVzdHModGltZW91dD0yMDAwKSkK
SW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9odGRpZ2VzdHBh
cnNlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvaHRkaWdlc3RwYXJzZXIucHkJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9odGRpZ2VzdHBhcnNlci5weQkobm9uZXhpc3Rl
bnQpCkBAIC0xLDU0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0
OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotIiIiaHRkaWdlc3RwYXJzZXIgLSBhIHBhcnNlciBmb3IgaHRkaWdlc3QgZmlsZXMiIiIK
LQotaW1wb3J0IGhhc2hsaWIKLWltcG9ydCBzdHJpbmcKLQotCi1jbGFzcyBIVERpZ2VzdFBhcnNl
cihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaWdlc3RfZmlsZSk6Ci0gICAgICAg
IHNlbGYuX2VudHJpZXMgPSBzZWxmLnBhcnNlX2ZpbGUoZGlnZXN0X2ZpbGUpCi0KLSAgICBkZWYg
YXV0aGVudGljYXRlKHNlbGYsIHVzZXJuYW1lLCByZWFsbSwgcGFzc3dvcmQpOgotICAgICAgICBo
YXNoZWRfcGFzc3dvcmQgPSBoYXNobGliLm1kNSgnOicuam9pbigodXNlcm5hbWUsIHJlYWxtLCBw
YXNzd29yZCkpKS5oZXhkaWdlc3QoKQotICAgICAgICByZXR1cm4gW3VzZXJuYW1lLCByZWFsbSwg
aGFzaGVkX3Bhc3N3b3JkXSBpbiBzZWxmLmVudHJpZXMoKQotCi0gICAgZGVmIGVudHJpZXMoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9lbnRyaWVzCi0KLSAgICBkZWYgcGFyc2VfZmlsZShz
ZWxmLCBkaWdlc3RfZmlsZSk6Ci0gICAgICAgIGVudHJpZXMgPSBbbGluZS5yc3RyaXAoKS5zcGxp
dCgnOicpIGZvciBsaW5lIGluIGRpZ2VzdF9maWxlXQotCi0gICAgICAgICMgUGVyZm9ybSBzb21l
IHNhbml0eS1jaGVja2luZyB0byBlbnN1cmUgdGhlIGZpbGUgaXMgdmFsaWQuCi0gICAgICAgIHZh
bGlkX2NoYXJhY3RlcnMgPSBzZXQoc3RyaW5nLmhleGRpZ2l0cykKLSAgICAgICAgZm9yIGVudHJ5
IGluIGVudHJpZXM6Ci0gICAgICAgICAgICBpZiBsZW4oZW50cnkpICE9IDM6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIFtdCi0gICAgICAgICAgICBoYXNoZWRfcGFzc3dvcmQgPSBlbnRyeVstMV0K
LSAgICAgICAgICAgIGlmIGxlbihoYXNoZWRfcGFzc3dvcmQpICE9IDMyOgotICAgICAgICAgICAg
ICAgIHJldHVybiBbXQotICAgICAgICAgICAgaWYgbm90IHNldChoYXNoZWRfcGFzc3dvcmQpLmlz
c3Vic2V0KHZhbGlkX2NoYXJhY3RlcnMpOgotICAgICAgICAgICAgICAgIHJldHVybiBbXQotCi0g
ICAgICAgIHJldHVybiBlbnRyaWVzCkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvaHRkaWdlc3RwYXJzZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2h0ZGlnZXN0cGFyc2VyX3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvaHRkaWdlc3RwYXJzZXJfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAt
MSw5NiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0Ogot
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotaW1wb3J0IHN5cwotaW1wb3J0IG9zCi1pbXBvcnQgdW5pdHRlc3QKLQotaWYgc3lzLnZlcnNp
b25faW5mbyA+ICgzLCAwKToKLSAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwotZWxzZToKLSAg
ICBmcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTwotCi1mcm9tIGh0ZGlnZXN0cGFyc2VyIGlt
cG9ydCBIVERpZ2VzdFBhcnNlcgotCi0KLWNsYXNzIEhURGlnZXN0UGFyc2VyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6Ci0gICAgZGVmIGFzc2VydEVudHJpZXNFcXVhbChzZWxmLCBlbnRyaWVzLCBh
ZGRpdGlvbmFsX2NvbnRlbnQ9Tm9uZSk6Ci0gICAgICAgIGRpZ2VzdF9maWxlID0gc2VsZi5mYWtl
X2h0ZGlnZXN0X2ZpbGUoKQotICAgICAgICBpZiBhZGRpdGlvbmFsX2NvbnRlbnQgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICBkaWdlc3RfZmlsZS5zZWVrKHBvcz0wLCBtb2RlPW9zLlNFRUtfRU5E
KQotICAgICAgICAgICAgZGlnZXN0X2ZpbGUud3JpdGUoYWRkaXRpb25hbF9jb250ZW50KQotICAg
ICAgICAgICAgZGlnZXN0X2ZpbGUuc2Vlayhwb3M9MCwgbW9kZT1vcy5TRUVLX1NFVCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyaWVzLCBIVERpZ2VzdFBhcnNlcihkaWdlc3RfZmlsZSku
ZW50cmllcygpKQotCi0gICAgZGVmIHRlc3RfYXV0aGVudGljYXRlKHNlbGYpOgotICAgICAgICBo
dGRpZ2VzdCA9IEhURGlnZXN0UGFyc2VyKHNlbGYuZmFrZV9odGRpZ2VzdF9maWxlKCkpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIxJywgJ3JlYWxt
IDEnLCAncGFzc3dvcmQxJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShodGRpZ2VzdC5hdXRo
ZW50aWNhdGUoJ3VzZXIyJywgJ3JlYWxtIDInLCAncGFzc3dvcmQyJykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIzJywgJ3JlYWxtIDEnLCAncGFz
c3dvcmQzJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUo
J3VzZXIzJywgJ3JlYWxtIDMnLCAncGFzc3dvcmQzJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIxJywgJ3JlYWxtJywgJ3Bhc3N3b3JkMScp
KQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGh0ZGlnZXN0LmF1dGhlbnRpY2F0ZSgndXNlcjEn
LCAncmVhbG0gMicsICdwYXNzd29yZDEnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShodGRp
Z2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIyJywgJ3JlYWxtIDInLCAncGFzc3dvcmQxJykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UoaHRkaWdlc3QuYXV0aGVudGljYXRlKCd1c2VyMicsICdyZWFs
bSAxJywgJ3Bhc3N3b3JkMScpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGh0ZGlnZXN0LmF1
dGhlbnRpY2F0ZSgnJywgJycsICcnKSkKLQotICAgIGRlZiB0ZXN0X2VudHJpZXMoc2VsZik6Ci0g
ICAgICAgIGVudHJpZXMgPSBbCi0gICAgICAgICAgICBbJ3VzZXIxJywgJ3JlYWxtIDEnLCAnMzZi
OGFhMjdmYTVlOTA1MTA5NWQzN2I2MTlmOTI3NjInXSwKLSAgICAgICAgICAgIFsndXNlcjInLCAn
cmVhbG0gMicsICcxNGY4Mjc2ODZmYTk3Nzc4ZjAyZmUxMzE0YTMzMzdjOCddLAotICAgICAgICAg
ICAgWyd1c2VyMycsICdyZWFsbSAxJywgJzE4MTdmYzhhMjQxMTljYzU3ZmJhZmM4YTYzMGVhNWE1
J10sCi0gICAgICAgICAgICBbJ3VzZXIzJywgJ3JlYWxtIDMnLCAnYTA1ZjVhMjMzNWU5ZDg3YmJl
NzViYmU1ZTUzMjQ4ZjAnXSwKLSAgICAgICAgXQotICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNF
cXVhbChlbnRyaWVzKQotICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNFcXVhbChlbnRyaWVzLCBh
ZGRpdGlvbmFsX2NvbnRlbnQ9JycpCi0KLSAgICBkZWYgdGVzdF9lbXB0eV9maWxlKHNlbGYpOgot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBIVERpZ2VzdFBhcnNlcihTdHJpbmdJTygpKS5l
bnRyaWVzKCkpCi0KLSAgICBkZWYgdGVzdF90b29fZmV3X2NvbG9ucyhzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRFbnRyaWVzRXF1YWwoW10sIGFkZGl0aW9uYWxfY29udGVudD0ndXNlcjE6cmVh
bG0gMVxuJykKLQotICAgIGRlZiB0ZXN0X3Rvb19tYW55X2NvbG9ucyhzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRFbnRyaWVzRXF1YWwoW10sIGFkZGl0aW9uYWxfY29udGVudD0ndXNlcjE6cmVh
bG0gMTozNmI4YWEyN2ZhNWU5MDUxMDk1ZDM3YjYxOWY5Mjc2MjpnYXJiYWdlXG4nKQotCi0gICAg
ZGVmIHRlc3RfaW52YWxpZF9oYXNoKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNF
cXVhbChbXSwgYWRkaXRpb25hbF9jb250ZW50PSd1c2VyMTpyZWFsbSAxOjM2YjhhYTI3ZmE1ZTkw
NTEwOTVkMzdiNjE5ZjkyNzYyMDAwMDAwXG4nKQotICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNF
cXVhbChbXSwgYWRkaXRpb25hbF9jb250ZW50PSd1c2VyMTpyZWFsbSAxOjM2YjhhYTI3ZmE1ZTkw
NTEwOTVkMzdiNjE5ZjkyNzZcbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RW50cmllc0VxdWFsKFtd
LCBhZGRpdGlvbmFsX2NvbnRlbnQ9J3VzZXIxOnJlYWxtIDE6MzZiOGFhMjdmYTVlOTA1MTA5NWQz
N2I2MTlmOTI3NnpcbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RW50cmllc0VxdWFsKFtdLCBhZGRp
dGlvbmFsX2NvbnRlbnQ9J3VzZXIxOnJlYWxtIDE6IDM2YjhhYTI3ZmE1ZTkwNTEwOTVkMzdiNjE5
ZjkyNzYyXG4nKQotCi0gICAgZGVmIGZha2VfaHRkaWdlc3RfZmlsZShzZWxmKToKLSAgICAgICAg
cmV0dXJuIFN0cmluZ0lPKCIiInVzZXIxOnJlYWxtIDE6MzZiOGFhMjdmYTVlOTA1MTA5NWQzN2I2
MTlmOTI3NjIKLXVzZXIyOnJlYWxtIDI6MTRmODI3Njg2ZmE5Nzc3OGYwMmZlMTMxNGEzMzM3YzgK
LXVzZXIzOnJlYWxtIDE6MTgxN2ZjOGEyNDExOWNjNTdmYmFmYzhhNjMwZWE1YTUKLXVzZXIzOnJl
YWxtIDM6YTA1ZjVhMjMzNWU5ZDg3YmJlNzViYmU1ZTUzMjQ4ZjAKLSIiIikKLQotCi0jIEZJWE1F
OiBXZSBzaG91bGQgcnVuIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIHRlc3Qtcm0gLgotIyBVbmZvcnR1
bmF0ZWx5IHRlc3Qtcm0gIGN1cnJlbnRseSByZXF1aXJlcyB0aGF0IHVuaXR0ZXN0cwotIyBiZSBs
b2NhdGVkIGluIGEgZGlyZWN0b3J5IHdpdGggYSB2YWxpZCBtb2R1bGUgbmFtZS4KLSMgJ2J1aWxk
LndlYmtpdC5vcmctY29uZmlnJyBpcyBub3QgYSB2YWxpZCBtb2R1bGUgbmFtZSAoZHVlIHRvICcu
JyBhbmQgJy0nKQotIyBzbyBmb3Igbm93IHRoaXMgaXMgYSBzdGFuZC1hbG9uZSB0ZXN0IGhhcm5l
c3MuCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQpJbmRl
eDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2xvYWRDb25maWcucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2xv
YWRDb25maWcucHkJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9sb2FkQ29uZmlnLnB5CShub25leGlzdGVudCkKQEAgLTEsMTk0ICsw
LDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBv
cnQgb3MKLVVTRV9CVUlMREJPVF9WRVJTSU9OMiA9IG9zLmdldGVudignVVNFX0JVSUxEQk9UX1ZF
UlNJT04yJykgaXMgbm90IE5vbmUKLQotaWYgVVNFX0JVSUxEQk9UX1ZFUlNJT04yOgotICAgIGZy
b20gYnVpbGRib3Qud29ya2VyIGltcG9ydCBXb3JrZXIKLWVsc2U6Ci0gICAgZnJvbSBidWlsZGJv
dC5idWlsZHNsYXZlIGltcG9ydCBCdWlsZFNsYXZlCi1mcm9tIGJ1aWxkYm90LnNjaGVkdWxlciBp
bXBvcnQgQW55QnJhbmNoU2NoZWR1bGVyLCBUcmlnZ2VyYWJsZSwgTmlnaHRseQotZnJvbSBidWls
ZGJvdC5zY2hlZHVsZXJzLmZvcmNlc2NoZWQgaW1wb3J0IEZpeGVkUGFyYW1ldGVyLCBGb3JjZVNj
aGVkdWxlciwgU3RyaW5nUGFyYW1ldGVyLCBCb29sZWFuUGFyYW1ldGVyCi1mcm9tIGJ1aWxkYm90
LnNjaGVkdWxlcnMuZmlsdGVyIGltcG9ydCBDaGFuZ2VGaWx0ZXIKLWZyb20gYnVpbGRib3QucHJv
Y2VzcyBpbXBvcnQgYnVpbGRzdGVwLCBmYWN0b3J5LCBwcm9wZXJ0aWVzCi0KLWZyb20gZmFjdG9y
aWVzIGltcG9ydCAqCi0KLWltcG9ydCByZQotaW1wb3J0IGpzb24KLWltcG9ydCBvcGVyYXRvcgot
Ci1mcm9tIGNvbW1pdHRlcl9hdXRoIGltcG9ydCBDb21taXR0ZXJBdXRoCi1pbXBvcnQgbWFrZV9w
YXNzd29yZHNfanNvbgotaW1wb3J0IHdrYnVpbGQKLQotdHJ1bmtfZmlsdGVyID0gQ2hhbmdlRmls
dGVyKGJyYW5jaD1bInRydW5rIiwgTm9uZV0pCi1idWlsZGJvdF9pZGVudGlmaWVyc19yZSA9IHJl
LmNvbXBpbGUoJ15bYS16QS1aXy1dW2EtekEtWjAtOV8tXSokJykKLQotQlVJTERFUl9OQU1FX0xF
TkdUSF9MSU1JVCA9IDcwCi1TVEVQX05BTUVfTEVOR1RIX0xJTUlUID0gNTAKLQotCi1kZWYgcGlj
a0xhdGVzdEJ1aWxkKGJ1aWxkZXIsIHJlcXVlc3RzKToKLSAgICByZXR1cm4gbWF4KHJlcXVlc3Rz
LCBrZXk9b3BlcmF0b3IuYXR0cmdldHRlcigic3VibWl0dGVkQXQiKSkKLQotCi1kZWYgbG9hZEJ1
aWxkZXJDb25maWcoYywgaXNfdGVzdF9tb2RlX2VuYWJsZWQ9RmFsc2UpOgotICAgICMgRklYTUU6
IFRoZXNlIGZpbGUgaGFuZGxlcyBhcmUgbGVha2VkLgotICAgIGlmIGlzX3Rlc3RfbW9kZV9lbmFi
bGVkOgotICAgICAgICBwYXNzd29yZHMgPSB7fQotICAgIGVsc2U6Ci0gICAgICAgIHBhc3N3b3Jk
cyA9IGpzb24ubG9hZChvcGVuKCdwYXNzd29yZHMuanNvbicpKQotICAgIHJlc3VsdHNfc2VydmVy
X2FwaV9rZXkgPSBwYXNzd29yZHMuZ2V0KCdyZXN1bHRzLXNlcnZlci1hcGkta2V5JykKLSAgICBp
ZiByZXN1bHRzX3NlcnZlcl9hcGlfa2V5OgotICAgICAgICBvcy5lbnZpcm9uWydSRVNVTFRTX1NF
UlZFUl9BUElfS0VZJ10gPSByZXN1bHRzX3NlcnZlcl9hcGlfa2V5Ci0KLSAgICBjb25maWcgPSBq
c29uLmxvYWQob3BlbignY29uZmlnLmpzb24nKSkKLSAgICBpZiBVU0VfQlVJTERCT1RfVkVSU0lP
TjI6Ci0gICAgICAgIGNbJ3dvcmtlcnMnXSA9IFtXb3JrZXIod29ya2VyWyduYW1lJ10sIHBhc3N3
b3Jkcy5nZXQod29ya2VyWyduYW1lJ10sICdwYXNzd29yZCcpLCBtYXhfYnVpbGRzPTEpIGZvciB3
b3JrZXIgaW4gY29uZmlnWyd3b3JrZXJzJ11dCi0gICAgZWxzZToKLSAgICAgICAgY1snc2xhdmVz
J10gPSBbQnVpbGRTbGF2ZSh3b3JrZXJbJ25hbWUnXSwgcGFzc3dvcmRzLmdldCh3b3JrZXJbJ25h
bWUnXSwgJ3Bhc3N3b3JkJyksIG1heF9idWlsZHM9MSkgZm9yIHdvcmtlciBpbiBjb25maWdbJ3dv
cmtlcnMnXV0KLQotICAgIGNbJ3NjaGVkdWxlcnMnXSA9IFtdCi0gICAgZm9yIHNjaGVkdWxlciBp
biBjb25maWdbJ3NjaGVkdWxlcnMnXToKLSAgICAgICAgaWYgImNoYW5nZV9maWx0ZXIiIGluIHNj
aGVkdWxlcjoKLSAgICAgICAgICAgIHNjaGVkdWxlclsiY2hhbmdlX2ZpbHRlciJdID0gZ2xvYmFs
cygpW3NjaGVkdWxlclsiY2hhbmdlX2ZpbHRlciJdXQotICAgICAgICBzY2hlZHVsZXJUeXBlID0g
Z2xvYmFscygpW3NjaGVkdWxlci5wb3AoJ3R5cGUnKV0KLSAgICAgICAgIyBQeXRob24gMi42IGNh
bid0IGhhbmRsZSB1bmljb2RlIGtleXMgYXMga2V5d29yZCBhcmd1bWVudHM6Ci0gICAgICAgICMg
aHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI2NDYuICBNb2Rlcm4gdmVyc2lvbnMgb2YganNv
biByZXR1cm4KLSAgICAgICAgIyB1bmljb2RlIHN0cmluZ3MgZnJvbSBqc29uLmxvYWQsIHNvIHdl
IG1hcCBhbGwga2V5cyB0byBzdHIgb2JqZWN0cy4KLSAgICAgICAgc2NoZWR1bGVyID0gZGljdCht
YXAobGFtYmRhIGtleV92YWx1ZV9wYWlyOiAoc3RyKGtleV92YWx1ZV9wYWlyWzBdKSwga2V5X3Zh
bHVlX3BhaXJbMV0pLCBzY2hlZHVsZXIuaXRlbXMoKSkpCi0KLSAgICAgICAgY1snc2NoZWR1bGVy
cyddLmFwcGVuZChzY2hlZHVsZXJUeXBlKCoqc2NoZWR1bGVyKSkKLQotICAgIGZvcmNlU2NoZWR1
bGVyID0gRm9yY2VTY2hlZHVsZXIoCi0gICAgICAgIG5hbWU9ImZvcmNlIiwKLSAgICAgICAgYnVp
bGRlck5hbWVzPVtzdHIoYnVpbGRlclsnbmFtZSddKSBmb3IgYnVpbGRlciBpbiBjb25maWdbJ2J1
aWxkZXJzJ11dLAotICAgICAgICByZWFzb249U3RyaW5nUGFyYW1ldGVyKG5hbWU9InJlYXNvbiIs
IGRlZmF1bHQ9IiIsIHNpemU9NDApLAotCi0gICAgICAgICMgVmFsaWRhdGUgU1ZOIHJldmlzaW9u
OiBudW1iZXIgb3IgZW1wdHkgc3RyaW5nCi0gICAgICAgIHJldmlzaW9uPVN0cmluZ1BhcmFtZXRl
cihuYW1lPSJyZXZpc2lvbiIsIGRlZmF1bHQ9IiIsIHJlZ2V4PXJlLmNvbXBpbGUocideKFxkKikk
JykpLAotCi0gICAgICAgICMgRGlzYWJsZSBkZWZhdWx0IGVuYWJsZWQgaW5wdXQgZmllbGRzOiBi
cmFuY2gsIHJlcG9zaXRvcnksIHByb2plY3QsIGFkZGl0aW9uYWwgcHJvcGVydGllcwotICAgICAg
ICBicmFuY2g9Rml4ZWRQYXJhbWV0ZXIobmFtZT0iYnJhbmNoIiksCi0gICAgICAgIHJlcG9zaXRv
cnk9Rml4ZWRQYXJhbWV0ZXIobmFtZT0icmVwb3NpdG9yeSIpLAotICAgICAgICBwcm9qZWN0PUZp
eGVkUGFyYW1ldGVyKG5hbWU9InByb2plY3QiKSwKLSAgICAgICAgcHJvcGVydGllcz1bQm9vbGVh
blBhcmFtZXRlcihuYW1lPSJpc19jbGVhbiIsIGxhYmVsPSJGb3JjZSBDbGVhbiBidWlsZCIpXQot
ICAgICkKLSAgICBjWydzY2hlZHVsZXJzJ10uYXBwZW5kKGZvcmNlU2NoZWR1bGVyKQotCi0gICAg
Y1snYnVpbGRlcnMnXSA9IFtdCi0gICAgZm9yIGJ1aWxkZXIgaW4gY29uZmlnWydidWlsZGVycydd
OgotICAgICAgICBmb3Igd29ya2VyTmFtZSBpbiBidWlsZGVyWyd3b3JrZXJuYW1lcyddOgotICAg
ICAgICAgICAgZm9yIHdvcmtlciBpbiBjb25maWdbJ3dvcmtlcnMnXToKLSAgICAgICAgICAgICAg
ICBpZiB3b3JrZXJbJ25hbWUnXSAhPSB3b3JrZXJOYW1lIG9yIHdvcmtlclsncGxhdGZvcm0nXSA9
PSAnKic6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICBp
ZiB3b3JrZXJbJ3BsYXRmb3JtJ10gIT0gYnVpbGRlclsncGxhdGZvcm0nXToKLSAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdCdWlsZGVyIHt9IGlzIGZvciBwbGF0Zm9ybSB7fSBi
dXQgaGFzIHdvcmtlciB7fSBmb3IgcGxhdGZvcm0ge30hJy5mb3JtYXQoYnVpbGRlclsnbmFtZSdd
LCBidWlsZGVyWydwbGF0Zm9ybSddLCB3b3JrZXJbJ25hbWUnXSwgd29ya2VyWydwbGF0Zm9ybSdd
KSkKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIGlmIG5vdCBVU0VfQlVJTERCT1Rf
VkVSU0lPTjI6Ci0gICAgICAgICAgICBidWlsZGVyWydzbGF2ZW5hbWVzJ10gPSBidWlsZGVyLnBv
cCgnd29ya2VybmFtZXMnKQotICAgICAgICBwbGF0Zm9ybSA9IGJ1aWxkZXJbJ3BsYXRmb3JtJ10K
LQotICAgICAgICBmYWN0b3J5TmFtZSA9IGJ1aWxkZXIucG9wKCdmYWN0b3J5JykKLSAgICAgICAg
ZmFjdG9yeSA9IGdsb2JhbHMoKVtmYWN0b3J5TmFtZV0KLSAgICAgICAgZmFjdG9yeWt3YXJncyA9
IHt9Ci0gICAgICAgIGZvciBrZXkgaW4gInBsYXRmb3JtIiwgImNvbmZpZ3VyYXRpb24iLCAiYXJj
aGl0ZWN0dXJlcyIsICJ0cmlnZ2VycyIsICJhZGRpdGlvbmFsQXJndW1lbnRzIiwgImRldmljZV9t
b2RlbCI6Ci0gICAgICAgICAgICB2YWx1ZSA9IGJ1aWxkZXIucG9wKGtleSwgTm9uZSkKLSAgICAg
ICAgICAgIGlmIHZhbHVlOgotICAgICAgICAgICAgICAgIGZhY3Rvcnlrd2FyZ3Nba2V5XSA9IHZh
bHVlCi0KLSAgICAgICAgYnVpbGRlclsiZmFjdG9yeSJdID0gZmFjdG9yeSgqKmZhY3Rvcnlrd2Fy
Z3MpCi0KLSAgICAgICAgYnVpbGRlcl9uYW1lID0gYnVpbGRlclsnbmFtZSddCi0gICAgICAgIGlm
IGxlbihidWlsZGVyX25hbWUpID4gQlVJTERFUl9OQU1FX0xFTkdUSF9MSU1JVDoKLSAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignQnVpbGRlciBuYW1lICJ7fSIgaXMgbG9uZ2VyIHRoYW4gbWF4
aW11bSBhbGxvd2VkIGJ5IEJ1aWxkYm90ICh7fSBjaGFyYWN0ZXJzKS4nLmZvcm1hdChidWlsZGVy
X25hbWUsIEJVSUxERVJfTkFNRV9MRU5HVEhfTElNSVQpKQotICAgICAgICBpZiBub3QgYnVpbGRi
b3RfaWRlbnRpZmllcnNfcmUubWF0Y2goYnVpbGRlcl9uYW1lKToKLSAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbignQnVpbGRlciBuYW1lICJ7fSIgaXMgbm90IGEgdmFsaWQgYnVpbGRib3QgaWRl
bnRpZmllci4nLmZvcm1hdChidWlsZGVyX25hbWUpKQotICAgICAgICBmb3Igc3RlcCBpbiBidWls
ZGVyWyJmYWN0b3J5Il0uc3RlcHM6Ci0gICAgICAgICAgICBpZiBVU0VfQlVJTERCT1RfVkVSU0lP
TjI6Ci0gICAgICAgICAgICAgICAgc3RlcF9uYW1lID0gc3RlcC5idWlsZFN0ZXAoKS5uYW1lCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN0ZXBfbmFtZSA9IHN0ZXBbMF0ubmFt
ZQotICAgICAgICAgICAgaWYgbGVuKHN0ZXBfbmFtZSkgPiBTVEVQX05BTUVfTEVOR1RIX0xJTUlU
OgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignc3RlcCBuYW1lICJ7fSIgaXMgbG9u
Z2VyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGJ5IEJ1aWxkYm90ICh7fSBjaGFyYWN0ZXJzKS4nLmZv
cm1hdChzdGVwX25hbWUsIFNURVBfTkFNRV9MRU5HVEhfTElNSVQpKQotICAgICAgICAgICAgaWYg
bm90IGJ1aWxkYm90X2lkZW50aWZpZXJzX3JlLm1hdGNoKHN0ZXBfbmFtZSk6Ci0gICAgICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdzdGVwIG5hbWUgInt9IiBpcyBub3QgYSB2YWxpZCBidWls
ZGJvdCBpZGVudGlmaWVyLicuZm9ybWF0KHN0ZXBfbmFtZSkpCi0KLSAgICAgICAgaWYgcGxhdGZv
cm0uc3RhcnRzd2l0aCgnbWFjJyk6Ci0gICAgICAgICAgICBjYXRlZ29yeSA9ICdBcHBsZU1hYycK
LSAgICAgICAgZWxpZiBwbGF0Zm9ybS5zdGFydHN3aXRoKCdpb3MnKToKLSAgICAgICAgICAgIGNh
dGVnb3J5ID0gJ2lPUycKLSAgICAgICAgZWxpZiBwbGF0Zm9ybSA9PSAnd2luJzoKLSAgICAgICAg
ICAgIGNhdGVnb3J5ID0gJ0FwcGxlV2luJwotICAgICAgICBlbGlmIHBsYXRmb3JtLnN0YXJ0c3dp
dGgoJ2d0aycpOgotICAgICAgICAgICAgY2F0ZWdvcnkgPSAnR1RLJwotICAgICAgICBlbGlmIHBs
YXRmb3JtLnN0YXJ0c3dpdGgoJ3dwZScpOgotICAgICAgICAgICAgY2F0ZWdvcnkgPSAnV1BFJwot
ICAgICAgICBlbGlmIHBsYXRmb3JtID09ICd3aW5jYWlybyc6Ci0gICAgICAgICAgICBjYXRlZ29y
eSA9ICdXaW5DYWlybycKLSAgICAgICAgZWxpZiBwbGF0Zm9ybS5zdGFydHN3aXRoKCdwbGF5c3Rh
dGlvbicpOgotICAgICAgICAgICAgY2F0ZWdvcnkgPSAnUGxheVN0YXRpb24nCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBjYXRlZ29yeSA9ICdtaXNjJwotCi0gICAgICAgIGlmIChjYXRlZ29y
eSBpbiAoJ0FwcGxlTWFjJywgJ0FwcGxlV2luJywgJ2lPUycpKSBhbmQgZmFjdG9yeU5hbWUgIT0g
J0J1aWxkRmFjdG9yeSc6Ci0gICAgICAgICAgICBidWlsZGVyWyduZXh0QnVpbGQnXSA9IHBpY2tM
YXRlc3RCdWlsZAotCi0gICAgICAgIGlmIFVTRV9CVUlMREJPVF9WRVJTSU9OMjoKLSAgICAgICAg
ICAgIGJ1aWxkZXJbJ3RhZ3MnXSA9IGdldFRhZ3NGb3JCdWlsZGVyKGJ1aWxkZXIpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBidWlsZGVyWydjYXRlZ29yeSddID0gY2F0ZWdvcnkKLSAgICAg
ICAgY1snYnVpbGRlcnMnXS5hcHBlbmQoYnVpbGRlcikKLQotCi1jbGFzcyBQbGF0Zm9ybVNwZWNp
ZmljU2NoZWR1bGVyKEFueUJyYW5jaFNjaGVkdWxlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBsYXRmb3JtLCBicmFuY2gsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5wbGF0Zm9ybSA9IHBs
YXRmb3JtCi0gICAgICAgIGZpbHRlciA9IENoYW5nZUZpbHRlcihicmFuY2g9W2JyYW5jaCwgTm9u
ZV0sIGZpbHRlcl9mbj1zZWxmLmZpbHRlcikKLSAgICAgICAgQW55QnJhbmNoU2NoZWR1bGVyLl9f
aW5pdF9fKHNlbGYsIG5hbWU9cGxhdGZvcm0sIGNoYW5nZV9maWx0ZXI9ZmlsdGVyLCAqKmt3YXJn
cykKLQotICAgIGRlZiBmaWx0ZXIoc2VsZiwgY2hhbmdlKToKLSAgICAgICAgcmV0dXJuIHdrYnVp
bGQuc2hvdWxkX2J1aWxkKHNlbGYucGxhdGZvcm0sIGNoYW5nZS5maWxlcykKLQotCi1kZWYgZ2V0
SW52YWxpZFRhZ3MoKToKLSAgICAiIiIKLSAgICBXZSBtYWludGFpbiBhIGxpc3Qgb2Ygd29yZHMg
d2hpY2ggd2UgZG8gbm90IHdhbnQgdG8gZGlzcGxheSBhcyB0YWcgaW4gYnVpbGRib3QuCi0gICAg
V2UgZ2VuZXJhdGUgYSBsaXN0IG9mIHRhZ3MgYnkgc3BsaXR0aW5nIHRoZSBidWlsZGVyIG5hbWUu
IFdlIGRvIG5vdCB3YW50IGNlcnRhaW4gd29yZHMgYXMgdGFnLgotICAgIEZvciBlLmcuIHdlIGRv
bid0IHdhbnQgJzExJ2FzIHRhZyBmb3IgYnVpbGRlciBpT1MtMTEtU2ltdWxhdG9yLUVXUwotICAg
ICIiIgotICAgIGludmFsaWRfdGFncyA9IFtzdHIoaSkgZm9yIGkgaW4gcmFuZ2UoMCwgMjApXQot
ICAgIGludmFsaWRfdGFncy5leHRlbmQoWydFV1MnLCAnVHJ5Qm90J10pCi0gICAgcmV0dXJuIGlu
dmFsaWRfdGFncwotCi0KLWRlZiBnZXRWYWxpZFRhZ3ModGFncyk6Ci0gICAgcmV0dXJuIGxpc3Qo
c2V0KHRhZ3MpIC0gc2V0KGdldEludmFsaWRUYWdzKCkpKQotCi0KLWRlZiBnZXRUYWdzRm9yQnVp
bGRlcihidWlsZGVyKToKLSAgICBrZXl3b3JkcyA9IGZpbHRlcihOb25lLCByZS5zcGxpdCgnWywg
XC1fOigpXSsnLCBzdHIoYnVpbGRlclsnbmFtZSddKSkpCi0gICAgcmV0dXJuIGdldFZhbGlkVGFn
cyhrZXl3b3JkcykKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9sb2FkQ29uZmlnX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9sb2FkQ29uZmlnX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAy
NjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbG9hZENv
bmZpZ191bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDEwMiArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0Ogot
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotCi1pbXBvcnQganNvbgotaW1wb3J0IG9zCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IGxv
YWRDb25maWcKLQotCi1jbGFzcyBDb25maWdEb3RKU09OVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
Ci0gICAgZGVmIGdldF9jb25maWcoc2VsZik6Ci0gICAgICAgIGN3ZCA9IG9zLnBhdGguZGlybmFt
ZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQotICAgICAgICByZXR1cm4ganNvbi5sb2FkKG9w
ZW4ob3MucGF0aC5qb2luKGN3ZCwgJ2NvbmZpZy5qc29uJykpKQotCi0gICAgZGVmIHRlc3RfYnVp
bGRlcl9rZXlzKHNlbGYpOgotICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoKQotICAg
ICAgICB2YWxpZF9idWlsZGVyX2tleXMgPSBbJ2FkZGl0aW9uYWxBcmd1bWVudHMnLCAnYXJjaGl0
ZWN0dXJlcycsICdidWlsZGRpcicsICdjb25maWd1cmF0aW9uJywgJ2Rlc2NyaXB0aW9uJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0UHJvcGVydGllcycsICdkZXZpY2Vf
bW9kZWwnLCAnZW52JywgJ2ZhY3RvcnknLCAnaWNvbicsICdsb2NrcycsICduYW1lJywgJ3BsYXRm
b3JtJywgJ3Byb3BlcnRpZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbW90
ZXMnLCAncnVuVGVzdHMnLCAnc2hvcnRuYW1lJywgJ3RhZ3MnLCAndHJpZ2dlcnMnLCAnd29ya2Vy
bmFtZXMnLCAnd29ya2VyYnVpbGRkaXInXQotICAgICAgICBmb3IgYnVpbGRlciBpbiBjb25maWcu
Z2V0KCdidWlsZGVycycsIFtdKToKLSAgICAgICAgICAgIGZvciBrZXkgaW4gYnVpbGRlcjoKLSAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoa2V5IGluIHZhbGlkX2J1aWxkZXJfa2V5cywg
J1VuZXhwZWN0ZWQga2V5ICJ7fSIgZm9yIGJ1aWxkZXIge30nLmZvcm1hdChrZXksIGJ1aWxkZXIu
Z2V0KCduYW1lJykpKQotCi0gICAgZGVmIHRlc3RfbXVsdGlwbGVfc2NoZWR1ZXJzX2Zvcl9idWls
ZGVyKHNlbGYpOgotICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoKQotICAgICAgICBi
dWlsZGVyX3RvX3NjaGR1bGVyX21hcCA9IHt9Ci0KLSAgICAgICAgZm9yIHNjaGVkdWxlciBpbiBj
b25maWcuZ2V0KCdzY2hlZHVsZXJzJyk6Ci0gICAgICAgICAgICBmb3IgYnVpbGRlcm5hbWUgaW4g
c2NoZWR1bGVyLmdldCgnYnVpbGRlck5hbWVzJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGJ1aWxkZXJuYW1lIG5vdCBpbiBidWlsZGVyX3RvX3NjaGR1bGVyX21hcCwgJ2J1aWxk
ZXIge30gYXBwZWFycyBtdWx0aXBsZSB0aW1lcyBpbiBzY2hlZHVsZXJzLicuZm9ybWF0KGJ1aWxk
ZXJuYW1lKSkKLSAgICAgICAgICAgICAgICBidWlsZGVyX3RvX3NjaGR1bGVyX21hcFtidWlsZGVy
bmFtZV0gPSBzY2hlZHVsZXIuZ2V0KCduYW1lJykKLQotICAgIGRlZiB0ZXN0X3NjaGR1bGVyX2Nv
bnRhaW5zX3ZhbGlkX2J1aWxkZXJfbmFtZShzZWxmKToKLSAgICAgICAgY29uZmlnID0gc2VsZi5n
ZXRfY29uZmlnKCkKLSAgICAgICAgYnVpbGRlcl9uYW1lX2xpc3QgPSBbYnVpbGRlclsnbmFtZSdd
IGZvciBidWlsZGVyIGluIGNvbmZpZ1snYnVpbGRlcnMnXV0KLSAgICAgICAgZm9yIHNjaGVkdWxl
ciBpbiBjb25maWcuZ2V0KCdzY2hlZHVsZXJzJyk6Ci0gICAgICAgICAgICBmb3IgYnVpbGRlcm5h
bWUgaW4gc2NoZWR1bGVyLmdldCgnYnVpbGRlck5hbWVzJyk6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGJ1aWxkZXJuYW1lIGluIGJ1aWxkZXJfbmFtZV9saXN0LCAnYnVpbGRlciAi
e30iIGluIHNjaGVkdWxlciAie30iIGlzIGludmFsaWQuJy5mb3JtYXQoYnVpbGRlcm5hbWUsIHNj
aGVkdWxlci5nZXQoJ25hbWUnKSkpCi0KLSAgICBkZWYgdGVzdF9zaW5nbGVfYnVpbGRlcl9mb3Jf
dHJpZ2dlcmFibGVfc2NoZWR1bGVyKHNlbGYpOgotICAgICAgICBjb25maWcgPSBzZWxmLmdldF9j
b25maWcoKQotICAgICAgICBmb3Igc2NoZWR1bGVyIGluIGNvbmZpZ1snc2NoZWR1bGVycyddOgot
ICAgICAgICAgICAgaWYgc2NoZWR1bGVyLmdldCgndHlwZScpID09ICdUcmlnZ2VyYWJsZSc6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihzY2hlZHVsZXIuZ2V0KCdidWlsZGVy
TmFtZXMnKSkgPT0gMSwgJ3NjaGVkdWxlciAie30iIHRyaWdnZXJzIG11bHRpcGxlIGJ1aWxkZXJz
LicuZm9ybWF0KHNjaGVkdWxlclsnbmFtZSddKSkKLQotCi1jbGFzcyBUYWdzRm9yQnVpbGRlclRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB2ZXJpZnlUYWdzKHNlbGYsIGJ1aWxkZXJO
YW1lLCBleHBlY3RlZFRhZ3MpOgotICAgICAgICB0YWdzID0gbG9hZENvbmZpZy5nZXRUYWdzRm9y
QnVpbGRlcih7J25hbWUnOiBidWlsZGVyTmFtZX0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c29ydGVkKHRhZ3MpLCBzb3J0ZWQoZXhwZWN0ZWRUYWdzKSkKLQotICAgIGRlZiB0ZXN0X2dldFRh
Z3NGb3JCdWlsZGVyKHNlbGYpOgotICAgICAgICBzZWxmLnZlcmlmeVRhZ3MoJ0VXUycsIFtdKQot
ICAgICAgICBzZWxmLnZlcmlmeVRhZ3MoJ1RyeUJvdC0xMC1FV1MnLCBbXSkKLSAgICAgICAgc2Vs
Zi52ZXJpZnlUYWdzKCcxMS1FV1MnLCBbXSkKLSAgICAgICAgc2VsZi52ZXJpZnlUYWdzKCczMi1F
V1MnLCBbJzMyJ10pCi0gICAgICAgIHNlbGYudmVyaWZ5VGFncygnaU9TLTExLUVXUycsIFsnaU9T
J10pCi0gICAgICAgIHNlbGYudmVyaWZ5VGFncygnaU9TKDExKSwodGVzdCktRVdTJywgWydpT1Mn
LCAndGVzdCddKQotICAgICAgICBzZWxmLnZlcmlmeVRhZ3MoJ1dpbmRvd3MtRVdTJywgWydXaW5k
b3dzJ10pCi0gICAgICAgIHNlbGYudmVyaWZ5VGFncygnV2luZG93c19XaW5kb3dzJywgWydXaW5k
b3dzJ10pCi0gICAgICAgIHNlbGYudmVyaWZ5VGFncygnR1RLLUJ1aWxkLUVXUycsIFsnR1RLJywg
J0J1aWxkJ10pCi0gICAgICAgIHNlbGYudmVyaWZ5VGFncygnR1RLLVdLMi1UZXN0cy1FV1MnLCBb
J0dUSycsICdXSzInLCAnVGVzdHMnXSkKLSAgICAgICAgc2VsZi52ZXJpZnlUYWdzKCdtYWNPUy1T
aWVycmEtUmVsZWFzZS1XSzEtRVdTJywgWydTaWVycmEnLCAnUmVsZWFzZScsICdtYWNPUycsICdX
SzEnXSkKLSAgICAgICAgc2VsZi52ZXJpZnlUYWdzKCdtYWNPUy1IaWdoLVNpZXJyYS1SZWxlYXNl
LTMyYml0LVdLMi1FV1MnLCBbJ21hY09TJywgJ0hpZ2gnLCAnU2llcnJhJywgJ1JlbGVhc2UnLCAn
V0syJywgJzMyYml0J10pCi0KLSAgICBkZWYgdGVzdF90YWdzX3R5cGUoc2VsZik6Ci0gICAgICAg
IHRhZ3MgPSBsb2FkQ29uZmlnLmdldFRhZ3NGb3JCdWlsZGVyKHsnbmFtZSc6ICdpT1MtMTEtRVdT
J30pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFncywgWydpT1MnXSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCh0eXBlKHRhZ3NbMF0pLCBzdHIpCi0KLSAgICBkZWYgdGVzdF9nZXRJbnZh
bGlkVGFncyhzZWxmKToKLSAgICAgICAgaW52YWxpZFRhZ3MgPSBsb2FkQ29uZmlnLmdldEludmFs
aWRUYWdzKCkKLSAgICAgICAgZXhwZWN0ZWRUYWdzID0gWycwJywgJzEnLCAnMicsICczJywgJzQn
LCAnNScsICc2JywgJzcnLCAnOCcsICc5JywgJzEwJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICcxMScsICcxMicsICcxMycsICcxNCcsICcxNScsICcxNicsICcxNycsICcxOCcsICcxOScsICdF
V1MnLCAnVHJ5Qm90J10KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnZhbGlkVGFncywgZXhw
ZWN0ZWRUYWdzKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3Qu
bWFpbigpCkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFr
ZV9wYXNzd29yZHNfanNvbi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvbWFrZV9wYXNzd29yZHNfanNvbi5weQkocmV2aXNpb24gMjY5MTEx
KQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21ha2VfcGFzc3dv
cmRzX2pzb24ucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NCArMCwwIEBACi0jIS91c3IvYmluL2Vu
diBweXRob24KLQotIyBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBqc29uCi1pbXBvcnQgbWQ1Ci0KLQotZGVmIGNy
ZWF0ZV9tb2NrX3dvcmtlcl9wYXNzd29yZHNfZGljdCgpOgotICAgIHdpdGggb3BlbignY29uZmln
Lmpzb24nLCAncicpIGFzIGNvbmZpZ19qc29uOgotICAgICAgICBjb25maWdfZGljdCA9IGpzb24u
bG9hZChjb25maWdfanNvbikKLSAgICByZXN1bHQgPSBkaWN0KFsod29ya2VyWyduYW1lJ10sICcx
MjM0JykgZm9yIHdvcmtlciBpbiBjb25maWdfZGljdFsnd29ya2VycyddXSkKLSAgICByZXN1bHRb
J3Jlc3VsdHMtc2VydmVyLWFwaS1rZXknXSA9ICdhcGkta2V5JwotICAgIHJldHVybiByZXN1bHQK
LQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB3aXRoIG9wZW4oJ3Bhc3N3b3Jkcy5q
c29uJywgJ3cnKSBhcyBwYXNzd29yZHNfZmlsZToKLSAgICAgICAgcGFzc3dvcmRzX2ZpbGUud3Jp
dGUoanNvbi5kdW1wcyhjcmVhdGVfbW9ja193b3JrZXJfcGFzc3dvcmRzX2RpY3QoKSwgaW5kZW50
PTQsIHNvcnRfa2V5cz1UcnVlKSkKLQotICAgIHdpdGggb3BlbignYXV0aC5qc29uJywgJ3cnKSBh
cyBhdXRoX2pzb25fZmlsZToKLSAgICAgICAgYXV0aF9qc29uX2ZpbGUud3JpdGUoIiIiewotICAg
ICJ0cmFjX2NyZWRlbnRpYWxzIjogImNyZWRlbnRpYWxzLmNmZyIsCi0gICAgIndlYmtpdF9jb21t
aXR0ZXJzIjogImNvbW1pdHRlcnMuY2ZnIgotfSIiIikKLQotICAgIHdpdGggb3BlbignY3JlZGVu
dGlhbHMuY2ZnJywgJ3cnKSBhcyBjcmVkZW50aWFsc19maWxlOgotICAgICAgICBjcmVkZW50aWFs
c19maWxlLndyaXRlKCJjb21taXR0ZXJAd2Via2l0Lm9yZzpNYWMgT1MgRm9yZ2U6JXMiICUgbWQ1
Lm5ldygiY29tbWl0dGVyQHdlYmtpdC5vcmc6TWFjIE9TIEZvcmdlOmNvbW1pdHRlcnBhc3N3b3Jk
IikuaGV4ZGlnZXN0KCkpCi0KLSAgICB3aXRoIG9wZW4oJ2NvbW1pdHRlcnMuY2ZnJywgJ3cnKSBh
cyBjb21taXR0ZXJzX2ZpbGU6Ci0gICAgICAgIGNvbW1pdHRlcnNfZmlsZS53cml0ZSgiIiJbZ3Jv
dXBzXQotd2Via2l0ID0gY29tbWl0dGVyQHdlYmtpdC5vcmcKLSIiIikKClByb3BlcnR5IGNoYW5n
ZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYWtlX3Bhc3N3
b3Jkc19qc29uLnB5Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTEgKzAs
MCAjIwotKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVyLmNmZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVyLmNmZwkocmV2aXNp
b24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21h
c3Rlci5jZmcJKG5vbmV4aXN0ZW50KQpAQCAtMSw0OCArMCwwIEBACi0jIC0qLSBweXRob24gLSot
Ci0jIGV4OiBzZXQgc3ludGF4PXB5dGhvbjoKLQotZnJvbSBidWlsZGJvdC5jaGFuZ2VzLnBiIGlt
cG9ydCBQQkNoYW5nZVNvdXJjZQotZnJvbSBidWlsZGJvdC5zdGF0dXMgaW1wb3J0IGh0bWwKLWZy
b20gYnVpbGRib3Quc3RhdHVzLndlYi5hdXRoeiBpbXBvcnQgQXV0aHoKLQotZnJvbSBjb21taXR0
ZXJfYXV0aCBpbXBvcnQgQ29tbWl0dGVyQXV0aAotZnJvbSBsb2FkQ29uZmlnIGltcG9ydCAqCi0K
LQotaXNfdGVzdF9tb2RlX2VuYWJsZWQgPSBvcy5nZXRlbnYoJ0JVSUxEQk9UX1RFU1RJTkcnKSBp
cyBub3QgTm9uZQotCi1jID0gQnVpbGRtYXN0ZXJDb25maWcgPSB7fQotCi1jWydjaGFuZ2Vfc291
cmNlJ10gPSBQQkNoYW5nZVNvdXJjZShwb3J0PTE2MDAwKQotCi0jIHBlcm1pc3Npb25zIGZvciBX
ZWJTdGF0dXMKLWF1dGh6ID0gQXV0aHooCi0gICAgYXV0aD1Db21taXR0ZXJBdXRoKCdhdXRoLmpz
b24nKSwKLSAgICBmb3JjZUJ1aWxkPSdhdXRoJywKLSAgICBmb3JjZUFsbEJ1aWxkcz0nYXV0aCcs
Ci0gICAgcGluZ0J1aWxkZXI9VHJ1ZSwKLSAgICBncmFjZWZ1bFNodXRkb3duPUZhbHNlLAotICAg
IHN0b3BCdWlsZD0nYXV0aCcsCi0gICAgc3RvcEFsbEJ1aWxkcz0nYXV0aCcsCi0gICAgY2FuY2Vs
UGVuZGluZ0J1aWxkPSdhdXRoJywKLSAgICBzdG9wQ2hhbmdlPVRydWUsCi0gICAgY2xlYW5TaHV0
ZG93bj1GYWxzZSkKLQotY1snc3RhdHVzJ10gPSBbXQotY1snc3RhdHVzJ10uYXBwZW5kKGh0bWwu
V2ViU3RhdHVzKGh0dHBfcG9ydD04NzEwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldmxpbms9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8lcyIsIAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWNvbW1lbnRsaW5rPShyIihodHRw
czovL2J1Z3NcLndlYmtpdFwub3JnL3Nob3dfYnVnXC5jZ2lcP2lkPXx3ZWJraXRcLm9yZy9iLyko
XGQrKSIsIHIiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPVwyIiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aHo9YXV0aHopKQotCi1jWydzbGF2
ZVBvcnRudW0nXSA9IDE3MDAwCi1jWydwcm9qZWN0TmFtZSddID0gIldlYktpdCIKLWNbJ3Byb2pl
Y3RVUkwnXSA9ICJodHRwczovL3dlYmtpdC5vcmciCi1jWydidWlsZGJvdFVSTCddID0gImh0dHBz
Oi8vYnVpbGQud2Via2l0Lm9yZy8iCi0KLWNbJ2J1aWxkSG9yaXpvbiddID0gMTAwMAotY1snbG9n
SG9yaXpvbiddID0gNTAwCi1jWydldmVudEhvcml6b24nXSA9IDIwMAotY1snYnVpbGRDYWNoZVNp
emUnXSA9IDYwCi0KLQotbG9hZEJ1aWxkZXJDb25maWcoYywgaXNfdGVzdF9tb2RlX2VuYWJsZWQ9
aXNfdGVzdF9tb2RlX2VuYWJsZWQpCkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvbWFzdGVyX2J1aWxkYm90Mi5jZmcKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3Rlcl9idWlsZGJvdDIuY2ZnCShyZXZp
c2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
bWFzdGVyX2J1aWxkYm90Mi5jZmcJKG5vbmV4aXN0ZW50KQpAQCAtMSw0OCArMCwwIEBACi0jIC0q
LSBweXRob24gLSotCi0jIGV4OiBzZXQgc3ludGF4PXB5dGhvbjoKLQotZnJvbSBidWlsZGJvdC5j
aGFuZ2VzLnBiIGltcG9ydCBQQkNoYW5nZVNvdXJjZQotZnJvbSBidWlsZGJvdC5zdGF0dXMgaW1w
b3J0IGh0bWwKLWZyb20gYnVpbGRib3Quc3RhdHVzLndlYi5hdXRoeiBpbXBvcnQgQXV0aHoKLQot
ZnJvbSBjb21taXR0ZXJfYXV0aCBpbXBvcnQgQ29tbWl0dGVyQXV0aAotZnJvbSBsb2FkQ29uZmln
IGltcG9ydCAqCi0KLQotaXNfdGVzdF9tb2RlX2VuYWJsZWQgPSBvcy5nZXRlbnYoJ0JVSUxEQk9U
X1RFU1RJTkcnKSBpcyBub3QgTm9uZQotCi1jID0gQnVpbGRtYXN0ZXJDb25maWcgPSB7fQotCi1j
WydjaGFuZ2Vfc291cmNlJ10gPSBQQkNoYW5nZVNvdXJjZShwb3J0PTE2MDAwKQotCi0jIHBlcm1p
c3Npb25zIGZvciBXZWJTdGF0dXMKLWF1dGh6ID0gQXV0aHooCi0gICAgYXV0aD1Db21taXR0ZXJB
dXRoKCdhdXRoLmpzb24nKSwKLSAgICBmb3JjZUJ1aWxkPSdhdXRoJywKLSAgICBmb3JjZUFsbEJ1
aWxkcz0nYXV0aCcsCi0gICAgcGluZ0J1aWxkZXI9VHJ1ZSwKLSAgICBncmFjZWZ1bFNodXRkb3du
PUZhbHNlLAotICAgIHN0b3BCdWlsZD0nYXV0aCcsCi0gICAgc3RvcEFsbEJ1aWxkcz0nYXV0aCcs
Ci0gICAgY2FuY2VsUGVuZGluZ0J1aWxkPSdhdXRoJywKLSAgICBzdG9wQ2hhbmdlPVRydWUsCi0g
ICAgY2xlYW5TaHV0ZG93bj1GYWxzZSkKLQotY1snc3RhdHVzJ10gPSBbXQotY1snc3RhdHVzJ10u
YXBwZW5kKGh0bWwuV2ViU3RhdHVzKGh0dHBfcG9ydD04NzEwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldmxpbms9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8lcyIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWNvbW1lbnRs
aW5rPShyIihodHRwczovL2J1Z3NcLndlYmtpdFwub3JnL3Nob3dfYnVnXC5jZ2lcP2lkPXx3ZWJr
aXRcLm9yZy9iLykoXGQrKSIsIHIiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPVwyIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aHo9YXV0aHop
KQotCi1jWydzbGF2ZVBvcnRudW0nXSA9IDE3MDAwCi1jWydwcm9qZWN0TmFtZSddID0gIldlYktp
dCIKLWNbJ3Byb2plY3RVUkwnXSA9ICJodHRwczovL3dlYmtpdC5vcmciCi1jWydidWlsZGJvdFVS
TCddID0gImh0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8iCi0KLWNbJ2J1aWxkSG9yaXpvbiddID0g
MTAwMAotY1snbG9nSG9yaXpvbiddID0gNTAwCi1jWydldmVudEhvcml6b24nXSA9IDIwMAotY1sn
YnVpbGRDYWNoZVNpemUnXSA9IDYwCi0KLQotbG9hZEJ1aWxkZXJDb25maWcoYywgaXNfdGVzdF9t
b2RlX2VuYWJsZWQ9aXNfdGVzdF9tb2RlX2VuYWJsZWQpCkluZGV4OiBUb29scy9DSVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvTGVha3NMb2Fk
ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL0xlYWtzTG9hZGVyLmpzCShyZXZpc2lvbiAyNjkx
MTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvTGVha3NWaWV3ZXIvTGVha3NMb2FkZXIuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotZnVuY3Rpb24gTGVha3NMb2FkZXIoZGlkQ291bnRMZWFrc0ZpbGVz
Q2FsbGJhY2ssIGRpZExvYWRMZWFrc0ZpbGVDYWxsYmFjaykgewotICAgIHRoaXMuX2RpZENvdW50
TGVha3NGaWxlc0NhbGxiYWNrID0gZGlkQ291bnRMZWFrc0ZpbGVzQ2FsbGJhY2s7Ci0gICAgdGhp
cy5fZGlkTG9hZExlYWtzRmlsZUNhbGxiYWNrID0gZGlkTG9hZExlYWtzRmlsZUNhbGxiYWNrOwot
fQotCi1MZWFrc0xvYWRlci5wcm90b3R5cGUgPSB7Ci0gICAgc3RhcnQ6IGZ1bmN0aW9uKHVybCkg
ewotICAgICAgICBpZiAoL1wudHh0JC8udGVzdCh1cmwpKQotICAgICAgICAgICAgdGhpcy5fbG9h
ZExlYWtzRmlsZXMoW3VybF0pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9sb2Fk
TGVha3NGcm9tUmVzdWx0c1BhZ2UodXJsKTsKLSAgICB9LAotCi0gICAgX2xvYWRMZWFrc0ZpbGVz
OiBmdW5jdGlvbih1cmxzKSB7Ci0gICAgICAgIHRoaXMuX2RpZENvdW50TGVha3NGaWxlc0NhbGxi
YWNrKHVybHMubGVuZ3RoKTsKLQotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHZh
ciBwZW5kaW5nVVJMcyA9IHVybHMubGVuZ3RoOwotICAgICAgICB1cmxzLmZvckVhY2goZnVuY3Rp
b24odXJsKSB7Ci0gICAgICAgICAgICBnZXRSZXNvdXJjZSh1cmwsIGZ1bmN0aW9uKHhocikgewot
ICAgICAgICAgICAgICAgIHNlbGYuX2RpZExvYWRMZWFrc0ZpbGVDYWxsYmFjayh4aHIucmVzcG9u
c2VUZXh0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9LAotCi0gICAgX2xv
YWRMZWFrc0Zyb21SZXN1bHRzUGFnZTogZnVuY3Rpb24odXJsKSB7Ci0gICAgICAgIHZhciBzZWxm
ID0gdGhpczsKLSAgICAgICAgZ2V0UmVzb3VyY2UodXJsLCBmdW5jdGlvbih4aHIpIHsKLSAgICAg
ICAgICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaHRtbCIpOwotICAgICAg
ICAgICAgcm9vdC5pbm5lckhUTUwgPSB4aHIucmVzcG9uc2VUZXh0OwotCi0gICAgICAgICAgICAv
LyBTdHJpcCBvZmYgZXZlcnl0aGluZyBhZnRlciB0aGUgbGFzdCAvLgotICAgICAgICAgICAgdmFy
IGJhc2VVUkwgPSB1cmwuc3Vic3RyaW5nKDAsIHVybC5sYXN0SW5kZXhPZigiLyIpICsgMSk7Ci0K
LSAgICAgICAgICAgIHZhciB1cmxzID0gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKHJvb3QucXVl
cnlTZWxlY3RvckFsbCgidHIuZmlsZSA+IHRkID4gYVtocmVmJD0nLWxlYWtzLnR4dCddIiksIGZ1
bmN0aW9uKGxpbmspIHsgcmV0dXJuIGJhc2VVUkwgKyBsaW5rLmdldEF0dHJpYnV0ZSgiaHJlZiIp
OyB9KTsKLQotICAgICAgICAgICAgc2VsZi5fbG9hZExlYWtzRmlsZXModXJscyk7Ci0gICAgICAg
IH0pOwotICAgIH0sCi19OwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL0xlYWtzUGFyc2VyLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9M
ZWFrc1ZpZXdlci9MZWFrc1BhcnNlci5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL0xl
YWtzUGFyc2VyLmpzCShub25leGlzdGVudCkKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LWZ1bmN0aW9uIExlYWtzUGFyc2VyKGRpZFBhcnNlTGVha3NGaWxlQ2FsbGJhY2spIHsKLSAgICB0
aGlzLl9kaWRQYXJzZUxlYWtzRmlsZUNhbGxiYWNrID0gZGlkUGFyc2VMZWFrc0ZpbGVDYWxsYmFj
azsKLSAgICAKLSAgICBpZiAod29ya2Vyc1N1cHBvcnRDeWNsaWNTdHJ1Y3R1cmVzKCkpIHsKLSAg
ICAgICAgdGhpcy5fd29ya2VyID0gbmV3IFdvcmtlcigiTGVha3NQYXJzZXJXb3JrZXIuanMiKTsK
LQotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHRoaXMuX3dvcmtlci5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBzZWxmLl9kaWRQYXJzZUxlYWtzRmlsZUNh
bGxiYWNrKGUuZGF0YSk7Ci0gICAgICAgIH07Ci0gICAgfSBlbHNlCi0gICAgICAgIHRoaXMuX3Bh
cnNlckltcGwgPSBuZXcgTGVha3NQYXJzZXJJbXBsKHRoaXMuX2RpZFBhcnNlTGVha3NGaWxlQ2Fs
bGJhY2spOwotfQotCi1MZWFrc1BhcnNlci5wcm90b3R5cGUgPSB7Ci0gICAgYWRkTGVha3NGaWxl
OiBmdW5jdGlvbihsZWFrc1RleHQpIHsKLSAgICAgICAgaWYgKHRoaXMuX3dvcmtlcikKLSAgICAg
ICAgICAgIHRoaXMuX3dvcmtlci5wb3N0TWVzc2FnZShsZWFrc1RleHQpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0aGlzLl9wYXJzZXJJbXBsLmFkZExlYWtzRmlsZShsZWFrc1RleHQpOwot
ICAgIH0sCi19OwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL0xlYWtzVmlld2VyL0xlYWtzUGFyc2VySW1wbC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVh
a3NWaWV3ZXIvTGVha3NQYXJzZXJJbXBsLmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9D
SVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIv
TGVha3NQYXJzZXJJbXBsLmpzCShub25leGlzdGVudCkKQEAgLTEsMTEwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi1mdW5jdGlvbiBMZWFrc1BhcnNlckltcGwoZGlkUGFyc2VMZWFrc0NhbGxiYWNrKSB7
Ci0gICAgdGhpcy5fZGlkUGFyc2VMZWFrc0NhbGxiYWNrID0gZGlkUGFyc2VMZWFrc0NhbGxiYWNr
OwotICAgIHRoaXMuX3Byb2ZpbGUgPSB0aGlzLl9jcmVhdGVOb2RlKCJ0b3AgbGV2ZWwiKTsKLX0K
LQotTGVha3NQYXJzZXJJbXBsLnByb3RvdHlwZSA9IHsKLSAgICBhZGRMZWFrc0ZpbGU6IGZ1bmN0
aW9uKGxlYWtzVGV4dCkgewotICAgICAgICB0aGlzLl9pbmNvcnBvcmF0ZUxlYWtzKHRoaXMuX3Bh
cnNlTGVha3MobGVha3NUZXh0KSk7Ci0gICAgICAgIHRoaXMuX2RpZFBhcnNlTGVha3NDYWxsYmFj
ayh0aGlzLl9wcm9maWxlKTsKLSAgICB9LAotCi0gICAgX3BhcnNlTGVha3M6IGZ1bmN0aW9uKHRl
eHQpIHsKLSAgICAgICAgdmFyIGxlYWtzID0gW107Ci0gICAgICAgIHZhciBjdXJyZW50U2l6ZSA9
IDA7Ci0gICAgICAgIHRleHQuc3BsaXQoIlxuIikuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7Ci0g
ICAgICAgICAgICB2YXIgbWF0Y2ggPSAvXkxlYWs6Lipcc3NpemU9KFxkKylccy8uZXhlYyhsaW5l
KTsKLSAgICAgICAgICAgIGlmIChtYXRjaCkgewotICAgICAgICAgICAgICAgIGN1cnJlbnRTaXpl
ID0gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIS9eXHMrQ2FsbCBzdGFjazovLnRlc3QobGluZSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAvLyBUaGUgZmlyc3QgZnJh
bWUgaXMgbm90IHJlYWxseSBhIGZyYW1lIGF0IGFsbCAoIkNhbGwgc3RhY2s6IHRocmVhZCAweE5O
Tk5OOiIpLCBzbyB3ZSBvbWl0IGl0LgotICAgICAgICAgICAgbGVha3MucHVzaCh7IHNpemU6IGN1
cnJlbnRTaXplLCBzdGFjazogbGluZS5zcGxpdCgiIHwgIikuc2xpY2UoMSkubWFwKGZ1bmN0aW9u
KHN0cikgeyByZXR1cm4gc3RyLnRyaW0oKTsgfSkgfSk7Ci0gICAgICAgICAgICBjdXJyZW50U2l6
ZSA9IDA7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm4gbGVha3M7Ci0gICAgfSwKLQotICAg
IF9jcmVhdGVOb2RlOiBmdW5jdGlvbihmdW5jdGlvbk5hbWUpIHsKLSAgICAgICAgdmFyIHVybDsK
LSAgICAgICAgdmFyIGxpbmVOdW1iZXI7Ci0gICAgICAgIHZhciBtYXRjaCA9IC8oLiopIChcUysp
OihcZCspJC8uZXhlYyhmdW5jdGlvbk5hbWUpOwotICAgICAgICBpZiAobWF0Y2gpIHsKLSAgICAg
ICAgICAgIGZ1bmN0aW9uTmFtZSA9IG1hdGNoWzFdOwotICAgICAgICAgICAgLy8gRklYTUU6IEl0
IHdvdWxkIGJlIG5pY2UgdG8gYmUgYWJsZSB0byBsaW5rIHN0cmFpZ2h0IHRvIHRoZSByaWdodCBs
aW5lIGluIFRyYWMsIGJ1dCB0bwotICAgICAgICAgICAgLy8gZG8gdGhhdCB3ZSdkIGhhdmUgdG8g
aGF2ZSBzb21lIHdheSBvZiB0cmFuc2xhdGluZyBmcm9tIGZpbGVuYW1lcyB0byBUcmFjIFVSTHMu
Ci0gICAgICAgICAgICAvLyA8aHR0cDovL3dlYmtpdC5vcmcvYi83MjUwOT4KLSAgICAgICAgICAg
IHVybCA9IG1hdGNoWzJdOwotICAgICAgICAgICAgbGluZU51bWJlciA9IG1hdGNoWzNdOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogZnVu
Y3Rpb25OYW1lLAotICAgICAgICAgICAgc2VsZlRpbWU6IDAsCi0gICAgICAgICAgICB0b3RhbFRp
bWU6IDAsCi0gICAgICAgICAgICBhdmVyYWdlVGltZTogMCwKLSAgICAgICAgICAgIG51bWJlck9m
Q2FsbHM6IDAsCi0gICAgICAgICAgICBjaGlsZHJlbjogW10sCi0gICAgICAgICAgICBjaGlsZHJl
bkJ5TmFtZToge30sCi0gICAgICAgICAgICBjYWxsVUlEOiBmdW5jdGlvbk5hbWUsCi0gICAgICAg
ICAgICB1cmw6IHVybCwKLSAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCi0gICAg
ICAgIH07Ci0gICAgfSwKLQotICAgIC8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIGZha2UgInBy
b2ZpbGUiIGZyb20gYSBzZXQgb2YgbGVhayBzdGFja3MuICJzZWxmVGltZSIgaXMgdGhlIG51bWJl
ciBvZgotICAgIC8vIHN0YWNrcyBpbiB3aGljaCB0aGlzIGZ1bmN0aW9uIHdhcyBhdCB0aGUgdG9w
IChpbiB0aGVvcnksIG9ubHkgZnVuY3Rpb25zIGxpa2UgbWFsbG9jIHNob3VsZCBoYXZlIGEKLSAg
ICAvLyBub24temVybyBzZWxmVGltZSkuICJ0b3RhbFRpbWUiIGlzIHRoZSBudW1iZXIgb2Ygc3Rh
Y2tzIHdoaWNoIGNvbnRhaW4gdGhpcyBmdW5jdGlvbiAoYW5kIHRodXMgaXMKLSAgICAvLyB0aGUg
bnVtYmVyIG9mIGxlYWtzIHRoYXQgb2NjdXJyZWQgaW4gb3IgYmVuZWF0aCB0aGlzIGZ1bmN0aW9u
KS4KLSAgICAvLyBGSVhNRTogVGhpcyBpcyBleHBlbnNpdmUhIENhbiB3ZSBwYXJhbGxlbGl6ZSBp
dD8KLSAgICBfaW5jb3Jwb3JhdGVMZWFrczogZnVuY3Rpb24obGVha3MpIHsKLSAgICAgICAgdmFy
IHNlbGYgPSB0aGlzOwotICAgICAgICBsZWFrcy5mb3JFYWNoKGZ1bmN0aW9uKGxlYWspIHsKLSAg
ICAgICAgICAgIGxlYWsuc3RhY2sucmVkdWNlKGZ1bmN0aW9uKG5vZGUsIGZyYW1lLCBpbmRleCwg
YXJyYXkpIHsKLSAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlOwotICAgICAgICAgICAgICAg
IGlmIChmcmFtZSBpbiBub2RlLmNoaWxkcmVuQnlOYW1lKQotICAgICAgICAgICAgICAgICAgICBj
aGlsZE5vZGUgPSBub2RlLmNoaWxkcmVuQnlOYW1lW2ZyYW1lXTsKLSAgICAgICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlID0gc2VsZi5fY3JlYXRlTm9kZShm
cmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZS5oZWFkID0gc2VsZi5fcHJvZmls
ZTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlbkJ5TmFtZVtmcmFtZV0gPSBjaGls
ZE5vZGU7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4ucHVzaChjaGlsZE5vZGUp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IGFycmF5
Lmxlbmd0aCAtIDEpCi0gICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZS5zZWxmVGltZSArPSBs
ZWFrLnNpemU7Ci0gICAgICAgICAgICAgICAgY2hpbGROb2RlLnRvdGFsVGltZSArPSBsZWFrLnNp
emU7Ci0gICAgICAgICAgICAgICAgKytjaGlsZE5vZGUubnVtYmVyT2ZDYWxsczsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gY2hpbGROb2RlOwotICAgICAgICAgICAgfSwgc2VsZi5fcHJvZmlsZSk7
Ci0gICAgICAgIH0pOwotICAgICAgICBzZWxmLl9wcm9maWxlLnRvdGFsVGltZSA9IHNlbGYuX3By
b2ZpbGUuY2hpbGRyZW4ucmVkdWNlKGZ1bmN0aW9uKHN1bSwgY2hpbGQpIHsgcmV0dXJuIHN1bSAr
IGNoaWxkLnRvdGFsVGltZTsgfSwgMCk7Ci0gICAgfSwKLX07CkluZGV4OiBUb29scy9DSVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvTGVha3NQ
YXJzZXJXb3JrZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL0xlYWtzUGFyc2VyV29ya2VyLmpz
CShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvTGVha3NQYXJzZXJXb3JrZXIuanMJKG5vbmV4
aXN0ZW50KQpAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotaW1wb3J0U2NyaXB0cygiTGVh
a3NQYXJzZXJJbXBsLmpzIik7Ci0KLXZhciBwYXJzZXIgPSBuZXcgTGVha3NQYXJzZXJJbXBsKGZ1
bmN0aW9uKHByb2ZpbGUpIHsKLSAgICBwb3N0TWVzc2FnZShwcm9maWxlKTsKLX0pOwotCi1vbm1l
c3NhZ2UgPSBmdW5jdGlvbihlKSB7Ci0gICAgcGFyc2VyLmFkZExlYWtzRmlsZShlLmRhdGEpOwot
fQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL0xlYWtzVmlld2VyL0xlYWtzVmlld2VyLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvTGVh
a3NWaWV3ZXIuY3NzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvTGVha3NWaWV3ZXIuY3Nz
CShub25leGlzdGVudCkKQEAgLTEsOTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSN1cmwtcHJvbXB0
LWNvbnRhaW5lciB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICBi
b3R0b206IDA7Ci0gICAgbGVmdDogMDsKLSAgICByaWdodDogMDsKLSAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7Ci0gICAgei1pbmRleDogNTAwMDA7Ci19Ci0KLSN1cmwt
cHJvbXB0IHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIGJvdHRv
bTogMDsKLSAgICBsZWZ0OiAwOwotICAgIHJpZ2h0OiAwOwotICAgIHdpZHRoOiA0MDBweDsKLSAg
ICBoZWlnaHQ6IDMwMHB4OwotICAgIG1hcmdpbjogYXV0bzsKLSAgICBiYWNrZ3JvdW5kLWNvbG9y
OiB3aGl0ZTsKLSAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgNXB4IDEwcHggcmdiYSgwLCAwLCAw
LCAwLjgpOwotICAgIHBhZGRpbmc6IDUwcHggMDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19
Ci0KLSNsb2FkaW5nLWluZGljYXRvciB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHJp
Z2h0OiAyMHB4OwotICAgIHdpZHRoOiAxNTBweDsKLSAgICBtYXJnaW4tdG9wOiA1cHg7Ci19Ci0K
LSNzcGlubmVyIHsKLSAgICBmbG9hdDogbGVmdDsKLSAgICBtYXJnaW4tdG9wOiAtMXB4OwotfQot
Ci0jbG9hZGluZy1pbmRpY2F0b3ItbGFiZWwgewotICAgIG1hcmdpbi1sZWZ0OiA1cHg7Ci19Ci0K
LSNyZWNlbnQtYnVpbGRzLWxvYWRpbmctaW5kaWNhdG9yIHsKLSAgICBjb2xvcjogZ3JheTsKLX0K
LQotI3JlY2VudC1idWlsZHMtbGlzdCB7Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsKLSAgICBtYXJn
aW46IDA7Ci0gICAgcGFkZGluZzogMDsKLX0KLQotLyogSW5zcGVjdG9yIHN0eWxlIG92ZXJyaWRl
cyAqLwotCi0ucGVyY2VudC10aW1lLXN0YXR1cy1iYXItaXRlbSB7Ci0gICAgLyogV2UgYWx3YXlz
IHNob3cgbGVhayBjb3VudHMgYXMgcmVhbCB2YWx1ZXMsIG5vdCBwZXJjZW50YWdlcywgc28gdGhp
cyBidXR0b24gaXNuJ3QgdXNlZnVsLiAqLwotICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsK
LX0KLQotLmRhdGEtZ3JpZCAuZGF0YS1jb250YWluZXIgewotICAgIG92ZXJmbG93LXg6IHZpc2li
bGU7Ci0gICAgb3ZlcmZsb3cteTogYXV0bzsKLX0KLQotLmRhdGEtZ3JpZCB0ZCA+IGRpdiwgLmRh
dGEtZ3JpZCB0aCA+IGRpdiB7Ci0gICAgb3ZlcmZsb3c6IHZpc2libGU7Ci19CkluZGV4OiBUb29s
cy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3
ZXIvTGVha3NWaWV3ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL0xlYWtzVmlld2VyLmpzCShy
ZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvTGVha3NWaWV3ZXIuanMJKG5vbmV4aXN0ZW50KQpA
QCAtMSwyMDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXZhciBMZWFrc1ZpZXdlciA9IHsKLSAgICBs
b2FkZWQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLl9sb2FkZXIgPSBuZXcgTGVha3NMb2Fk
ZXIodGhpcy5fZGlkQ291bnRMZWFrc0ZpbGVzLmJpbmQodGhpcyksIHRoaXMuX2RpZExvYWRMZWFr
c0ZpbGUuYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX3BhcnNlciA9IG5ldyBMZWFrc1BhcnNl
cih0aGlzLl9kaWRQYXJzZUxlYWtzRmlsZS5iaW5kKHRoaXMpKTsKLQotICAgICAgICB0aGlzLl9s
b2FkaW5nSW5kaWNhdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvYWRpbmctaW5kaWNh
dG9yIik7Ci0gICAgICAgIHRoaXMuX2xvYWRpbmdJbmRpY2F0b3JMYWJlbCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJsb2FkaW5nLWluZGljYXRvci1sYWJlbCIpOwotCi0gICAgICAgIHRoaXMu
X3Byb2ZpbGVWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldyh7fSk7Ci0gICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluLXBhbmVscyIpLmFwcGVuZENoaWxkKHRo
aXMuX3Byb2ZpbGVWaWV3LmVsZW1lbnQpOwotICAgICAgICB0aGlzLl9wcm9maWxlVmlldy5zaG93
KCk7Ci0KLSAgICAgICAgLy8gRnJvbSBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLnNob3cK
LSAgICAgICAgdmFyIHN0YXR1c0Jhckl0ZW1zID0gdGhpcy5fcHJvZmlsZVZpZXcuc3RhdHVzQmFy
SXRlbXM7Ci0gICAgICAgIGlmIChzdGF0dXNCYXJJdGVtcykgewotICAgICAgICAgICAgdGhpcy5f
c3RhdHVzQmFySXRlbUNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGF0dXNCYXJJdGVtcy5sZW5ndGg7ICsr
aSkKLSAgICAgICAgICAgICAgICB0aGlzLl9zdGF0dXNCYXJJdGVtQ29udGFpbmVyLmFwcGVuZENo
aWxkKHN0YXR1c0Jhckl0ZW1zW2ldKTsKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJtYWluLXN0YXR1cy1iYXIiKS5hcHBlbmRDaGlsZCh0aGlzLl9zdGF0dXNCYXJJdGVtQ29u
dGFpbmVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciB1cmw7Ci0gICAgICAgIHZhciBtYXRj
aCA9IC91cmw9KFteJl0rKS8uZXhlYyhsb2NhdGlvbi5zZWFyY2gpOwotICAgICAgICBpZiAobWF0
Y2gpCi0gICAgICAgICAgICB1cmwgPSBkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbMV0pOwotCi0g
ICAgICAgIGlmICh1cmwpCi0gICAgICAgICAgICB0aGlzLl9sb2FkTGVha3NGcm9tVVJMKHVybCkK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fZGlzcGxheVVSTFByb21wdCgpOwotICAg
IH0sCi0KLSAgICBnZXQgZmlsZXNMZWZ0VG9QYXJzZSgpIHsKLSAgICAgICAgaWYgKCEoJ19maWxl
c0xlZnRUb1BhcnNlJyBpbiB0aGlzKSkKLSAgICAgICAgICAgIHRoaXMuX2ZpbGVzTGVmdFRvUGFy
c2UgPSAwOwotICAgICAgICByZXR1cm4gdGhpcy5fZmlsZXNMZWZ0VG9QYXJzZTsKLSAgICB9LAot
Ci0gICAgc2V0IGZpbGVzTGVmdFRvUGFyc2UoeCkgewotICAgICAgICBpZiAodGhpcy5fZmlsZXNM
ZWZ0VG9QYXJzZSA9PT0geCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5fZmls
ZXNMZWZ0VG9QYXJzZSA9IHg7Ci0gICAgICAgIHRoaXMuX2xvYWRpbmdTdGF0dXNDaGFuZ2VkKCk7
Ci0gICAgfSwKLQotICAgIGdldCBsb2FkaW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5faXNM
b2FkaW5nOwotICAgIH0sCi0KLSAgICBzZXQgbG9hZGluZyh4KSB7Ci0gICAgICAgIGlmICh0aGlz
Ll9pc0xvYWRpbmcgPT09IHgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX2lz
TG9hZGluZyA9IHg7Ci0gICAgICAgIHRoaXMuX2xvYWRpbmdTdGF0dXNDaGFuZ2VkKCk7Ci0gICAg
fSwKLQotICAgIGdldCB1cmwoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLl91cmw7Ci0gICAgfSwK
LQotICAgIHNldCB1cmwoeCkgewotICAgICAgICBpZiAodGhpcy5fdXJsID09PSB4KQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3VybCA9IHg7Ci0gICAgICAgIHRoaXMuX3Vw
ZGF0ZVRpdGxlKCk7Ci0gICAgfSwKLQotICAgIHVybFByb21wdEJ1dHRvbkNsaWNrZWQ6IGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgdGhpcy5fdXJsQ2hvc2VuRnJvbVByb21wdChkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidXJsIikudmFsdWUpOwotICAgIH0sCi0KLSAgICBfZGlkQ291bnRMZWFrc0Zp
bGVzOiBmdW5jdGlvbihmaWxlQ291bnQpIHsKLSAgICAgICAgdGhpcy5fZmlsZUNvdW50ID0gZmls
ZUNvdW50OwotICAgICAgICB0aGlzLmZpbGVzTGVmdFRvUGFyc2UgPSBmaWxlQ291bnQ7Ci0gICAg
fSwKLQotICAgIF9kaWRMb2FkTGVha3NGaWxlOiBmdW5jdGlvbihsZWFrc1RleHQpIHsKLSAgICAg
ICAgdGhpcy5fcGFyc2VyLmFkZExlYWtzRmlsZShsZWFrc1RleHQpOwotICAgIH0sCi0KLSAgICBf
ZGlkTG9hZFJlY2VudEJ1aWxkczogZnVuY3Rpb24oYnVpbGRzKSB7Ci0gICAgICAgIHRoaXMuX3Jl
Y2VudEJ1aWxkcyA9IGJ1aWxkczsKLSAgICAgICAgdGhpcy5fdXBkYXRlVVJMUHJvbXB0KCk7Ci0g
ICAgfSwKLQotICAgIF9kaWRQYXJzZUxlYWtzRmlsZTogZnVuY3Rpb24ocHJvZmlsZSkgewotICAg
ICAgICBpZiAoLS10aGlzLmZpbGVzTGVmdFRvUGFyc2UpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIFByb2ZpbGVyQWdlbnQucHJvZmlsZVJlYWR5KHByb2ZpbGUpOwotICAgICAgICB0aGlz
LmxvYWRpbmcgPSBmYWxzZTsKLSAgICB9LAotCi0gICAgX2Rpc3BsYXlVUkxQcm9tcHQ6IGZ1bmN0
aW9uKCkgewotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXJsLXByb21wdC1jb250
YWluZXIiKS5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKLSAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInVybCIpLmZvY3VzKCk7Ci0gICAgICAgIHZhciBsb2FkZXIgPSBuZXcgUmVj
ZW50QnVpbGRzTG9hZGVyKHRoaXMuX2RpZExvYWRSZWNlbnRCdWlsZHMuYmluZCh0aGlzKSk7Ci0g
ICAgICAgIGxvYWRlci5zdGFydCgiQXBwbGUgU2llcnJhIChMZWFrcykiLCB0aGlzLl9udW1iZXJP
ZlJlY2VudEJ1aWxkc1RvTG9hZCk7Ci0gICAgfSwKLQotICAgIF9sb2FkTGVha3NGcm9tVVJMOiBm
dW5jdGlvbih1cmwpIHsKLSAgICAgICAgdGhpcy51cmwgPSB1cmw7Ci0gICAgICAgIHRoaXMubG9h
ZGluZyA9IHRydWU7Ci0KLSAgICAgICAgdGhpcy5fbG9hZGVyLnN0YXJ0KHRoaXMudXJsKTsKLSAg
ICB9LAotCi0gICAgX2xvYWRpbmdJbmRpY2F0b3JUZXh0OiBmdW5jdGlvbigpIHsKLSAgICAgICAg
dmFyIHRleHQgPSAiTG9hZGluZyI7Ci0gICAgICAgIGlmICh0aGlzLmZpbGVzTGVmdFRvUGFyc2Up
Ci0gICAgICAgICAgICB0ZXh0ICs9ICIgIiArICh0aGlzLl9maWxlQ291bnQgLSB0aGlzLmZpbGVz
TGVmdFRvUGFyc2UgKyAxKSArICIvIiArIHRoaXMuX2ZpbGVDb3VudCArICIgZmlsZXMiOwotICAg
ICAgICB0ZXh0ICs9ICJcdTIwMjYiOwotICAgICAgICByZXR1cm4gdGV4dDsKLSAgICB9LAotCi0g
ICAgX2xvYWRpbmdTdGF0dXNDaGFuZ2VkOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy5fc2V0
TG9hZGluZ0luZGljYXRvckhpZGRlbighdGhpcy5sb2FkaW5nKTsKLSAgICAgICAgdGhpcy5fdXBk
YXRlTG9hZGluZ0luZGljYXRvckxhYmVsKCk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlKCk7
Ci0gICAgfSwKLQotICAgIF9udW1iZXJPZlJlY2VudEJ1aWxkc1RvTG9hZDogMTAsCi0KLSAgICBf
c2V0TG9hZGluZ0luZGljYXRvckhpZGRlbjogZnVuY3Rpb24oaGlkZGVuKSB7Ci0gICAgICAgIGlm
IChoaWRkZW4pCi0gICAgICAgICAgICB0aGlzLl9sb2FkaW5nSW5kaWNhdG9yLmFkZFN0eWxlQ2xh
c3MoImhpZGRlbiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9sb2FkaW5nSW5k
aWNhdG9yLnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOwotICAgIH0sCi0KLSAgICBfdXBkYXRl
TG9hZGluZ0luZGljYXRvckxhYmVsOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy5fbG9hZGlu
Z0luZGljYXRvckxhYmVsLmlubmVyVGV4dCA9IHRoaXMuX2xvYWRpbmdJbmRpY2F0b3JUZXh0KCk7
Ci0gICAgfSwKLQotICAgIF91cGRhdGVUaXRsZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB0
aXRsZSA9ICJMZWFrcyBWaWV3ZXIgXHUyMDE0ICI7Ci0gICAgICAgIGlmICh0aGlzLmxvYWRpbmcp
Ci0gICAgICAgICAgICB0aXRsZSArPSAiKCIgKyB0aGlzLl9sb2FkaW5nSW5kaWNhdG9yVGV4dCgp
ICsgIikgIjsKLSAgICAgICAgdGl0bGUgKz0gdGhpcy51cmw7Ci0gICAgICAgIGRvY3VtZW50LnRp
dGxlID0gdGl0bGU7Ci0gICAgfSwKLQotICAgIF91cGRhdGVVUkxQcm9tcHQ6IGZ1bmN0aW9uKCkg
ewotICAgICAgICB2YXIgcmVjZW50QnVpbGRzQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlY2VudC1idWlsZHMtY29udGFpbmVyIik7Ci0gICAgICAgIHJlY2VudEJ1aWxkc0Nv
bnRhaW5lci5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICBpZiAodGhpcy5fcmVjZW50QnVpbGRz
ICYmIHRoaXMuX3JlY2VudEJ1aWxkcy5sZW5ndGgpIHsKLSAgICAgICAgICAgIHZhciBsaXN0ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKLSAgICAgICAgICAgIGxpc3QuaWQgPSAicmVj
ZW50LWJ1aWxkcy1saXN0IjsKLQotICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAg
ICAgICAgdGhpcy5fcmVjZW50QnVpbGRzLmZvckVhY2goZnVuY3Rpb24oYnVpbGQpIHsKLSAgICAg
ICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICAg
ICAgICAgICAgICBsaW5rLmhyZWYgPSBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICsgIj91cmw9IiAr
IGVuY29kZVVSSUNvbXBvbmVudChidWlsZC51cmwpOwotICAgICAgICAgICAgICAgIGxpbmsuYWRk
RXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHNlbGYuX3VybENob3NlbkZyb21Qcm9tcHQoYnVpbGQudXJsKTsKLSAgICAgICAgICAgICAgICAg
ICAgZS5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
ICAgIGxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoInIiICsgYnVpbGQu
cmV2aXNpb24gKyAiOiAiICsgYnVpbGQubGVha0NvdW50ICsgIiBsZWFrcyIpKTsKLSAgICAgICAg
ICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7Ci0gICAgICAg
ICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChsaW5rKTsKLQotICAgICAgICAgICAgICAgIGxpc3Qu
YXBwZW5kQ2hpbGQoaXRlbSk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgcmVjZW50
QnVpbGRzQ29udGFpbmVyLmFwcGVuZENoaWxkKGxpc3QpOwotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIHJlY2VudEJ1aWxkc0NvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgiTm8gcmVjZW50IGxlYWt5IGJ1aWxkcyBmb3VuZC4iKSk7Ci0gICAgfSwKLQotICAg
IF91cmxDaG9zZW5Gcm9tUHJvbXB0OiBmdW5jdGlvbih1cmwpIHsKLSAgICAgICAgdGhpcy5fbG9h
ZExlYWtzRnJvbVVSTCh1cmwpOwotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXJs
LXByb21wdC1jb250YWluZXIiKS5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKLSAgICB9LAotCi19
OwotCi1hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgTGVha3NWaWV3ZXIubG9hZGVkLmJpbmQoTGVh
a3NWaWV3ZXIpKTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9MZWFrc1ZpZXdlci9SZWNlbnRCdWlsZHNMb2FkZXIuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L0xlYWtzVmlld2VyL1JlY2VudEJ1aWxkc0xvYWRlci5qcwkocmV2aXNpb24gMjY5MTExKQorKysg
VG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtz
Vmlld2VyL1JlY2VudEJ1aWxkc0xvYWRlci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDg4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi1mdW5jdGlvbiBSZWNlbnRCdWlsZHNMb2FkZXIoZGlkTG9hZFJlY2Vu
dEJ1aWxkc0NhbGxiYWNrKSB7Ci0gICAgdGhpcy5fZGlkTG9hZFJlY2VudEJ1aWxkc0NhbGxiYWNr
ID0gZGlkTG9hZFJlY2VudEJ1aWxkc0NhbGxiYWNrOwotfQotCi1SZWNlbnRCdWlsZHNMb2FkZXIu
cHJvdG90eXBlID0gewotICAgIHN0YXJ0OiBmdW5jdGlvbihidWlsZGVyTmFtZSwgbWF4aW11bU51
bWJlck9mQnVpbGRzKSB7Ci0gICAgICAgIHZhciB1cmwgPSB0aGlzLl9idWlsZGJvdEJhc2VVUkwg
KyAiL2pzb24vYnVpbGRlcnMvIiArIGJ1aWxkZXJOYW1lICsgIi9idWlsZHMvPyI7Ci0gICAgICAg
IHVybCArPSByYW5nZShtYXhpbXVtTnVtYmVyT2ZCdWlsZHMpLm1hcChmdW5jdGlvbihuKSB7IHJl
dHVybiAic2VsZWN0PS0iICsgKG4gKyAxKTsgfSkuam9pbigiJiIpOwotICAgICAgICB2YXIgc2Vs
ZiA9IHRoaXM7Ci0gICAgICAgIGdldFJlc291cmNlKHVybCwgZnVuY3Rpb24oeGhyKSB7Ci0gICAg
ICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7Ci0gICAgICAg
ICAgICB2YXIgYnVpbGRzID0gW107Ci0gICAgICAgICAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JF
YWNoKGZ1bmN0aW9uKGJ1aWxkTnVtYmVyKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGJ1aWxkID0g
ZGF0YVtidWlsZE51bWJlcl07Ci0gICAgICAgICAgICAgICAgaWYgKGJ1aWxkLmVycm9yKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJCdWlsZCAiICsgYnVpbGROdW1iZXIgKyAi
OiAiICsgYnVpbGQuZXJyb3IpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIHZhciBzdm5SZXZpc2lvblByb3BlcnR5ID0gYnVp
bGQucHJvcGVydGllcy5maXJzdChmdW5jdGlvbihwcm9wZXJ0eSkgeyByZXR1cm4gcHJvcGVydHlb
MF0gPT09ICJnb3RfcmV2aXNpb24iOyB9KTsKLSAgICAgICAgICAgICAgICBpZiAoIXN2blJldmlz
aW9uUHJvcGVydHkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
ICAgIHZhciBidWlsZEluZm8gPSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldmlzaW9uOiBwYXJz
ZUludChzdm5SZXZpc2lvblByb3BlcnR5WzFdLCAxMCksCi0gICAgICAgICAgICAgICAgICAgIGxl
YWtDb3VudDogMCwKLSAgICAgICAgICAgICAgICAgICAgdXJsOiBudWxsLAotICAgICAgICAgICAg
ICAgIH07Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgc3RlcEluZGV4ID0gMDsgc3RlcEluZGV4
IDwgYnVpbGQuc3RlcHMubGVuZ3RoOyArK3N0ZXBJbmRleCkgewotICAgICAgICAgICAgICAgICAg
ICB2YXIgc3RlcCA9IGJ1aWxkLnN0ZXBzW3N0ZXBJbmRleF07Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChzdGVwLm5hbWUgPT09ICJsYXlvdXQtdGVzdCIpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghKCJ0ZXh0IiBpbiBzdGVwKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdHJpbmdzID0gc3RlcC50ZXh0
OwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgc3RyaW5nSW5kZXggPSAwOyBzdHJp
bmdJbmRleCA8IHN0cmluZ3MubGVuZ3RoOyArK3N0cmluZ0luZGV4KSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gL14oXGQrKSB0b3RhbCBsZWFrcyBmb3VuZC8uZXhl
YyhzdHJpbmdzW3N0cmluZ0luZGV4XSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFtYXRjaCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRJbmZvLmxlYWtDb3VudCA9IHBhcnNlSW50KG1h
dGNoWzFdLCAxMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RlcC5u
YW1lID09PSAiTWFzdGVyU2hlbGxDb21tYW5kIikgewotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCEoInVybHMiIGluIHN0ZXApKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCJ2aWV3IHJlc3VsdHMiIGluIHN0ZXAu
dXJscykpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHVybCA9IHN0ZXAudXJsc1sidmlldyByZXN1bHRzIl07Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBidWlsZEluZm8udXJsID0gc2VsZi5fYnVpbGRib3RCYXNlVVJMICsg
dXJsLnJlcGxhY2UoL1wvcmVzdWx0c1wuaHRtbCQvLCAiIikgKyAiLyI7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoYnVpbGRJbmZvLmxlYWtDb3VudCAm
JiBidWlsZEluZm8udXJsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBidWlsZHMucHVzaChi
dWlsZEluZm8pOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
IC8vIFNvcnQgZGVzY2VuZGluZyBieSByZXZpc2lvbi4KLSAgICAgICAgICAgIGJ1aWxkcy5zb3J0
KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGIucmV2aXNpb24gLSBhLnJldmlzaW9uOyB9KTsKLSAg
ICAgICAgICAgIHNlbGYuX2RpZExvYWRSZWNlbnRCdWlsZHNDYWxsYmFjayhidWlsZHMpOwotICAg
ICAgICB9KTsKLSAgICB9LAotCi0gICAgX2J1aWxkYm90QmFzZVVSTDogImh0dHBzOi8vYnVpbGQu
d2Via2l0Lm9yZy8iLAotfTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9MZWFrc1ZpZXdlci9VdGlsaXRpZXMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xl
YWtzVmlld2VyL1V0aWxpdGllcy5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL1V0aWxp
dGllcy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5j
dGlvbiBnZXRSZXNvdXJjZSh1cmwsIGNhbGxiYWNrKSB7Ci0gICAgdmFyIHhociA9IG5ldyBYTUxI
dHRwUmVxdWVzdCgpOwotICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgLy8gQWxsb3cgYSBzdGF0dXMgb2YgMCBmb3IgZWFzaWVyIHRlc3Rpbmcgd2l0aCBs
b2NhbCBmaWxlcy4KLSAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSA0ICYmICghdGhpcy5z
dGF0dXMgfHwgdGhpcy5zdGF0dXMgPT0gMjAwKSkKLSAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMp
OwotICAgIH07Ci0gICAgeGhyLm9wZW4oIkdFVCIsIHVybCk7Ci0gICAgeGhyLnNlbmQoKTsKLX0K
LQotZnVuY3Rpb24gcmFuZ2UobikgewotICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkobik7Ci0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpCi0gICAgICAgIHJlc3VsdFtpXSA9IGk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnVuY3Rpb24gd29ya2Vyc1N1cHBvcnRDeWNsaWNTdHJ1
Y3R1cmVzKCkgewotICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJVdGlsaXRpZXMuanMiKTsK
LSAgICB2YXIgc3VwcG9ydHNDeWNsaWNTdHJ1Y3R1cmVzID0gdHJ1ZTsKLQotICAgIHRyeSB7Ci0g
ICAgICAgIHZhciBjeWNsaWNTdHJ1Y3R1cmUgPSB7IGN5Y2xlOiBudWxsIH07Ci0gICAgICAgIGN5
Y2xpY1N0cnVjdHVyZS5jeWNsZSA9IGN5Y2xpY1N0cnVjdHVyZTsKLQotICAgICAgICB3b3JrZXIu
cG9zdE1lc3NhZ2UoY3ljbGljU3RydWN0dXJlKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAg
c3VwcG9ydHNDeWNsaWNTdHJ1Y3R1cmVzID0gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN1
cHBvcnRzQ3ljbGljU3RydWN0dXJlczsKLX0KLQotQXJyYXkucHJvdG90eXBlLmZpcnN0ID0gZnVu
Y3Rpb24ocHJlZGljYXRlKSB7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsg
KytpKSB7Ci0gICAgICAgIGlmIChwcmVkaWNhdGUodGhpc1tpXSkpCi0gICAgICAgICAgICByZXR1
cm4gdGhpc1tpXTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci19CkluZGV4OiBUb29scy9DSVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvV2Vi
SW5zcGVjdG9yU2hpbXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL1dlYkluc3BlY3RvclNoaW1z
LmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvV2ViSW5zcGVjdG9yU2hpbXMuanMJKG5v
bmV4aXN0ZW50KQpAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gVGhpcyBmaWxlIGNv
bnRhaW5zIGRlZmluaXRpb25zIHRoYXQgYXJlIG5lZWRlZCB0byBzYXRpc2Z5IHRoZSBXZWIgSW5z
cGVjdG9yIEphdmFTY3JpcHQgZmlsZXMgd2UKLS8vIGltcG9ydC4KLQotdmFyIFdlYkluc3BlY3Rv
ciA9IHsKLSAgICBkaXNwbGF5TmFtZUZvclVSTDogZnVuY3Rpb24odXJsKSB7Ci0gICAgICAgIHJl
dHVybiB1cmw7Ci0gICAgfSwKLQotICAgIGxpbmtpZnlVUkxBc05vZGU6IGZ1bmN0aW9uKHVybCwg
bGlua1RleHQsIGNsYXNzZXMsIHRvb2x0aXBUZXh0KSB7Ci0gICAgICAgIGlmICghbGlua1RleHQp
Ci0gICAgICAgICAgICBsaW5rVGV4dCA9IHVybDsKLSAgICAgICAgY2xhc3NlcyA9IChjbGFzc2Vz
ID8gY2xhc3NlcyArICIgIiA6ICIiKTsKLQotICAgICAgICAvLyBGSVhNRTogQ3JlYXRlIGFuIDxh
PiBlbGVtZW50IGhlcmUgb25jZSB3ZSBhY3R1YWxseSBoYXZlIHNvbWV3aGVyZSB1c2VmdWwgdG8g
bGluayB0by4KLSAgICAgICAgLy8gPGh0dHA6Ly93ZWJraXQub3JnL2IvNzI1MDk+Ci0gICAgICAg
IHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICBhLmhyZWYg
PSB1cmw7Ci0gICAgICAgIGEuY2xhc3NOYW1lID0gY2xhc3NlczsKLSAgICAgICAgaWYgKHR5cGVv
ZiB0b29sdGlwVGV4dCA9PT0gInVuZGVmaW5lZCIpCi0gICAgICAgICAgICBhLnRpdGxlID0gdXJs
OwotICAgICAgICBlbHNlIGlmICh0eXBlb2YgdG9vbHRpcFRleHQgIT09ICJzdHJpbmciIHx8IHRv
b2x0aXBUZXh0Lmxlbmd0aCkKLSAgICAgICAgICAgIGEudGl0bGUgPSB0b29sdGlwVGV4dDsKLSAg
ICAgICAgYS50ZXh0Q29udGVudCA9IGxpbmtUZXh0OwotCi0gICAgICAgIHJldHVybiBhOwotICAg
IH0sCi0KLSAgICBsaW5raWZ5UmVzb3VyY2VBc05vZGU6IGZ1bmN0aW9uKHVybCwgcHJlZmVycmVk
UGFuZWwsIGxpbmVOdW1iZXIsIGNsYXNzZXMsIHRvb2x0aXBUZXh0KSB7Ci0gICAgICAgIHZhciBs
aW5rVGV4dCA9IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTCh1cmwpOwotICAgICAgICBp
ZiAobGluZU51bWJlcikKLSAgICAgICAgICAgIGxpbmtUZXh0ICs9ICI6IiArIGxpbmVOdW1iZXI7
Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IubGlua2lmeVVSTEFzTm9kZSh1cmwsIGxpbmtU
ZXh0LCBjbGFzc2VzLCB0b29sdGlwVGV4dCk7Ci0gICAgfSwKLQotICAgIFVJU3RyaW5nOiBmdW5j
dGlvbihzdHJpbmcpIHsKLSAgICAgICAgcmV0dXJuIFN0cmluZy52c3ByaW50ZihzdHJpbmcsIEFy
cmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpOwotICAgIH0sCi19OwotCi12
YXIgUHJlZmVyZW5jZXMgPSB7Ci0gICAgLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIGNhdXNlcyB0
aGUgIkF2ZXJhZ2UiIGFuZCAiQ2FsbHMiIGNvbHVtbnMgdG8gYmUgc2hvd24uCi0gICAgc2FtcGxp
bmdDUFVQcm9maWxlcjogZmFsc2UsCi19OwotCi12YXIgUHJvZmlsZXJBZ2VudCA9IHsKLSAgICBn
ZXRQcm9maWxlOiBmdW5jdGlvbih0eXBlSWQsIHVpZCwgY2FsbGJhY2spIHsKLSAgICAgICAgdGhp
cy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKLSAgICB9LAotCi0gICAgcHJvZmlsZVJlYWR5OiBmdW5j
dGlvbihoZWFkKSB7Ci0gICAgICAgIHRoaXMuX2NhbGxiYWNrKHsgaGVhZDogaGVhZCB9KTsKLSAg
ICB9LAotfTsKLQotLy8gVGhpcyBmdW5jdGlvbiBtYWtlcyBhbnkgcmVxdWlyZWQgY2hhbmdlcyB0
byBvYmplY3RzIGltcG9ydGVkIGZyb20gdGhlIFdlYiBJbnNwZWN0b3IgSmF2YVNjcmlwdAotLy8g
ZmlsZXMuCi1mdW5jdGlvbiBtb25rZXlQYXRjaEluc3BlY3Rvck9iamVjdHMoKSB7Ci0gICAgdmFy
IG9yaWdpbmFsR2V0dGVyID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90
eXBlLl9fbG9va3VwR2V0dGVyX18oImRhdGEiKTsKLSAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZURh
dGFHcmlkTm9kZS5wcm90b3R5cGUuX19kZWZpbmVHZXR0ZXJfXygiZGF0YSIsIGZ1bmN0aW9uKCkg
ewotICAgICAgICB2YXIgZGF0YSA9IG9yaWdpbmFsR2V0dGVyLmNhbGwodGhpcyk7Ci0KLSAgICAg
ICAgLy8gUHJvZmlsZURhdGFHcmlkTm9kZSBmb3JtYXRzIHZhbHVlcyBhcyBtaWxsaXNlY29uZHMs
IGJ1dCB3ZSBhcmUgaW5zdGVhZCBtZWFzdXJpbmcgYnl0ZXMuCi0gICAgICAgIGlmICghdGhpcy5w
cm9maWxlVmlldy5zaG93U2VsZlRpbWVBc1BlcmNlbnQpCi0gICAgICAgICAgICBkYXRhLnNlbGYg
PSBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLnNlbGZUaW1lKTsKLSAgICAgICAgaWYgKCF0aGlz
LnByb2ZpbGVWaWV3LnNob3dUb3RhbFRpbWVBc1BlcmNlbnQpCi0gICAgICAgICAgICBkYXRhLnRv
dGFsID0gTnVtYmVyLmJ5dGVzVG9TdHJpbmcodGhpcy50b3RhbFRpbWUpOwotICAgICAgICBpZiAo
IXRoaXMucHJvZmlsZVZpZXcuc2hvd0F2ZXJhZ2VUaW1lQXNQZXJjZW50KQotICAgICAgICAgICAg
ZGF0YS5hdmVyYWdlID0gTnVtYmVyLmJ5dGVzVG9TdHJpbmcodGhpcy5hdmVyYWdlVGltZSk7Ci0K
LSAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgfSk7Ci19CkluZGV4OiBUb29scy9DSVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvaW5kZXguaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvTGVha3NWaWV3ZXIvaW5kZXguaHRtbAkocmV2aXNpb24gMjY5MTExKQorKysg
VG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtz
Vmlld2VyL2luZGV4Lmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw4MSArMCwwIEBACi08IS0tCi1D
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotYXJlIG1ldDoKLTEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0yLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi1USEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi1QVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLUJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLUNP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi1TVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLUlOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi1DT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLS0+Ci0K
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8dGl0bGU+TGVha3MgVmlld2Vy
PC90aXRsZT4KLSAgICA8bGluayByZWw9c3R5bGVzaGVldCBocmVmPSJodHRwczovL3N2bi53ZWJr
aXQub3JnL3JlcG9zaXRvcnkvd2Via2l0LyFzdm4vYmMvODA1NjUvdHJ1bmsvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIj4KLSAgICA8bGluayByZWw9c3R5
bGVzaGVldCBocmVmPUxlYWtzVmlld2VyLmNzcz4KLQotICAgIDxzY3JpcHQgc3JjPVdlYkluc3Bl
Y3RvclNoaW1zLmpzPjwvc2NyaXB0PgotCi0gICAgPCEtLSBUaGUgb3JkZXIgaGVyZSBtYXRjaGVz
IGluc3BlY3Rvci5odG1sLiAtLT4KLSAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zdm4ud2Via2l0
Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC8hc3ZuL2JjLzgwNTY1L3RydW5rL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0iaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC8hc3ZuL2JjLzgw
NTY1L3RydW5rL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdHJlZW91dGxpbmUu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3N2bi53ZWJraXQub3JnL3Jl
cG9zaXRvcnkvd2Via2l0LyFzdm4vYmMvODA1NjUvdHJ1bmsvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9PYmplY3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJodHRw
czovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0LyFzdm4vYmMvODA1NjUvdHJ1bmsv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9WaWV3LmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC8h
c3ZuL2JjLzgwNTY1L3RydW5rL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGFu
ZWwuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3N2bi53ZWJraXQub3Jn
L3JlcG9zaXRvcnkvd2Via2l0LyFzdm4vYmMvODA1NjUvdHJ1bmsvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EYXRhR3JpZC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9
Imh0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvIXN2bi9iYy84MDU2NS90
cnVuay9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGViYXJUcmVlRWxlbWVu
dC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vc3ZuLndlYmtpdC5vcmcv
cmVwb3NpdG9yeS93ZWJraXQvIXN2bi9iYy84MDU2NS90cnVuay9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1N0YXR1c0JhckJ1dHRvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9Imh0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvIXN2bi9iYy84
MDU2NS90cnVuay9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFu
ZWwuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3N2bi53ZWJraXQub3Jn
L3JlcG9zaXRvcnkvd2Via2l0LyFzdm4vYmMvODA1NjUvdHJ1bmsvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0iaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC8hc3Zu
L2JjLzgwNTY1L3RydW5rL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQm90dG9t
VXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iaHR0
cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC8hc3ZuL2JjLzgwNTY1L3RydW5r
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVG9wRG93blByb2ZpbGVEYXRhR3Jp
ZFRyZWUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3N2bi53ZWJraXQu
b3JnL3JlcG9zaXRvcnkvd2Via2l0LyFzdm4vYmMvODA1NjUvdHJ1bmsvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcyI+PC9zY3JpcHQ+Ci0KLSAgICA8c2Ny
aXB0PgotICAgICAgICAvLyBOb3cgdGhhdCBhbGwgdGhlIEluc3BlY3RvciBmaWxlcyBoYXZlIGxv
YWRlZCB3ZSBjYW4gYXBwbHkgb3VyIG1vbmtleSBwYXRjaGVzLgotICAgICAgICBtb25rZXlQYXRj
aEluc3BlY3Rvck9iamVjdHMoKTsKLSAgICA8L3NjcmlwdD4KLQotICAgIDxzY3JpcHQgc3JjPUxl
YWtzTG9hZGVyLmpzPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPUxlYWtzUGFyc2VyLmpzPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPUxlYWtzUGFyc2VySW1wbC5qcz48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz1MZWFrc1ZpZXdlci5qcz48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz1S
ZWNlbnRCdWlsZHNMb2FkZXIuanM+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9VXRpbGl0aWVz
LmpzPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci0gICAgPGRpdiBpZD1tYWluLXBhbmVscz48
L2Rpdj4KLSAgICA8ZGl2IGlkPW1haW4tc3RhdHVzLWJhciBjbGFzcz1zdGF0dXMtYmFyPgotICAg
ICAgICA8ZGl2IGlkPWxvYWRpbmctaW5kaWNhdG9yIGNsYXNzPWhpZGRlbj4KLSAgICAgICAgICAg
IDxpbWcgaWQ9c3Bpbm5lciBzcmM9Imh0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93
ZWJraXQvIXN2bi9iYy84MDU2NS90cnVuay9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0ltYWdlcy9zcGlubmVyLmdpZiI+Ci0gICAgICAgICAgICA8c3BhbiBpZD1sb2FkaW5nLWlu
ZGljYXRvci1sYWJlbD5Mb2FkaW5nJmhlbGxpcDs8L3NwYW4+Ci0gICAgICAgIDwvZGl2PgotICAg
IDwvZGl2PgotICAgIDxkaXYgaWQ9dXJsLXByb21wdC1jb250YWluZXIgY2xhc3M9aGlkZGVuPgot
ICAgICAgICA8ZGl2IGlkPXVybC1wcm9tcHQ+Ci0gICAgICAgICAgICA8cD5FbnRlciB0aGUgVVJM
IG9mIGEgYnVpbGQgcmVzdWx0cyBwYWdlIG9yIGxlYWtzIGZpbGU6PC9wPgotICAgICAgICAgICAg
PGlucHV0IGlkPXVybCB0eXBlPXVybD48YnV0dG9uIG9uY2xpY2s9J0xlYWtzVmlld2VyLnVybFBy
b21wdEJ1dHRvbkNsaWNrZWQoZXZlbnQpJz5GZXRjaCBsZWFrczwvYnV0dG9uPgotICAgICAgICAg
ICAgPHA+T3IgY2hvb3NlIGEgcmVjZW50IGJ1aWxkOjwvcD4KLSAgICAgICAgICAgIDxkaXYgaWQ9
cmVjZW50LWJ1aWxkcy1jb250YWluZXI+Ci0gICAgICAgICAgICAgICAgPHAgaWQ9cmVjZW50LWJ1
aWxkcy1sb2FkaW5nLWluZGljYXRvcj5Mb2FkaW5nIGJ1aWxkcyZoZWxsaXA7PC9wPgotICAgICAg
ICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotPC9ib2R5PgotPC9odG1s
PgpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9mYXZpY29uLmljbwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2Zhdmlj
b24uaWNvCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2Zhdmljb24uaWNvCShub25leGlz
dGVudCkKQEAgLTEgKzAsMCBAQAotAAABAAEAICAQAAEABADoAgAAFgAAACgAAAAgAAAAQAAAAAEA
BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdLh4AKSwpAEJFQwAxTjIAPmE/AFlcWgA+cD8AY4Bj
AHJ7cwCOmY8ArLGtAMHFwQDT1tQA3eDeAPz//QAAAAAA//7u7u7u61Xu7u7u7u7///7u7u7u7lJV
Ut7u7u7u7u/+7u7u7uglIiUu7u7u7u7u7u7u7u7RVe6yW+7u7u7u7u7u7u7uUSvu5VXu7u7u7u7u
7u68lxIu2uhV7u7u7u7u7u6RFDcSLsXqVe7u7u7u7u7oEUMDEizu5VXu7u7u7u7uoQZmZBFY7tJZ
7u7u7u7u7iFkZmASIlglHu7u7u7u7uwQRmQAARVVUa7u7u7u7u7qEGZAMxUiERju7u7u7u7u6BBm
ZEYaMSU57u7u7u7u7uoRZmRDNn7uxJ7u7u7u7u7sITZmYCvu7u1J7u7u7u7u7lEQZAC+7u7utL7u
7u7u7u6iEREUnu7u7uTe7u7u7u7u6iIRjUnu7u6X7u7u7u7u7u7qru62ru7ueu7u7u7u7u7u7u7u
6kmaqk7u7u7u7u7u7u7u7u6nd0RJ7u7u7u7u7u7u7u7u7u7sRJ7u7u7u7u7u7u7u7u7u7tRJ7u7u
7u7u7u7u7u7u7u7tRJ7u7u7u7u7u7u7u7u7u7tRH7u7uXu7u7u7u7u7u7u7tc57uol3u7u7u7u7u
7u7u7tRI1Vru7u7u7u7u7u7u7u7tcFru7u7u7u7u7u7u7u7u5Vvu7u7u7u7u7u7u7u7u6SXe7u7v
/u7u7u7u7u7u7oW+7u7u7//u7u7u7u7u7u7e7u7u7//gAAAPgAAAAYAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABwAAABwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZ2FyZGVuLW8tbWF0aWMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1vLW1hdGljLmh0bWwJKHJldmlzaW9uIDI2OTExMSkK
KysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvZ2FyZGVuLW8tbWF0aWMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDcwICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi1hcmUgbWV0
OgotMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLTIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi1BTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLVRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLVBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLVNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLUNPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi1BUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi1USEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLVRoZSBmYXZpY29ucyBhcmUgZnJvbSB0aGUgYXdl
c29tZSBmYW1mYW1mYW0uY29tLCB3aGljaCBpcyB0aGUgd2Vic2l0ZSBvZiBNYXJrCi1KYW1lcywg
YSB3ZWIgZGV2ZWxvcGVyIGZyb20gQmlybWluZ2hhbSwgVUsuCi0tLT4KLTxodG1sPgotPGhlYWQ+
Ci08bWV0YSBodHRwLWVxdWl2PSJYLVdlYktpdC1DU1AiIGNvbnRlbnQ9ImRlZmF1bHQtc3JjICdu
b25lJzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0LXNy
YyAnc2VsZicgZmlsZTogaHR0cHM6Ly93ZWJraXQub3JnOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHlsZS1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJyBmaWxl
OiBodHRwczovL3dlYmtpdC5vcmc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGltZy1zcmMgJ3NlbGYnIGh0dHBzOi8vd2Via2l0Lm9yZyBodHRwczovL2J1aWxkLndl
YmtpdC5vcmc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlh
LXNyYyAnc2VsZicgaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS1zcmMgJ3NlbGYnIGh0dHBzOi8vYnVpbGQud2Vi
a2l0Lm9yZyBodHRwczovL3Jlc3VsdHMud2Via2l0Lm9yZzsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29ubmVjdC1zcmMgJ3NlbGYnIGh0dHBzOi8vdHJhYy53ZWJr
aXQub3JnIGh0dHBzOi8vYnVpbGQud2Via2l0Lm9yZyI+Ci08dGl0bGU+R2FyZGVuLU8tTWF0aWM8
L3RpdGxlPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3dlYmtpdC5vcmcv
YWpheC9saWJzL2pxdWVyeXVpLzEuOC4xNS90aGVtZXMvYmFzZS9qcXVlcnktdWkubWluLmNzcyI+
Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlcy9jb21tb24uY3NzIj4KLTxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGVzL29uZWJhci5jc3MiPgotPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvZmFpbHVyZXMuY3NzIj4KLTxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0ic3R5bGVzL3Jlc3VsdHMuY3NzIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0ic3R5bGVzL25vdGlmaWNhdGlvbnMuY3NzIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0ic3R5bGVzL3BlcmYuY3NzIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5
bGVzL3BpeGVsem9vbWVyLmNzcyI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJodHRw
czovL3dlYmtpdC5vcmcvYWpheC9saWJzL2pxdWVyeS9qcXVlcnktMS42LjIubWluLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJodHRwczovL3dlYmtpdC5vcmcvYWpheC9saWJzL2pxdWVyeXVp
LzEuOC4xNS91aS9qcXVlcnktdWkubWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3Jp
cHRzL2Jhc2UuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvY29uZmlnLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL25ldC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0ic2NyaXB0cy9UcmFjLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL0J1
Z3ppbGxhLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2J1aWxkZXJzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2NoZWNrb3V0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSJzY3JpcHRzL3Jlc3VsdHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNj
cmlwdHMvdWkuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvbW9kZWwuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvYWN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0ic2NyaXB0cy91aS9mYWlsdXJlcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0ic2NyaXB0cy91aS9ub3RpZmljYXRpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJz
Y3JpcHRzL3VpL3BlcmYuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvcmVz
dWx0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9jb250cm9sbGVycy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9waXhlbHpvb21lci5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9nYXJkZW4tby1tYXRpYy5qcyI+PC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1vLW1hdGlj
Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLUxG
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvaW1hZ2VzL2Zh
dmljb24tZ3JlZW4ucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvaW1hZ2VzL2Zhdmljb24tZ3Jl
ZW4ucG5nCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2ltYWdlcy9mYXZpY29uLWdyZWVu
LnBuZwkobm9uZXhpc3RlbnQpCkBAIC0xLDUgKzAsMCBAQAotiVBORw0KLRoKLQAAAA1JSERSAAAA
EAAAABAIBgAAAB/z/2EAAAKNSURBVHgBpJNDg50xFIb7O+6HTG3b2NS6Y9u2bdu2bds2atvm29T2
Is5zfGYB+K/x3YVK9665Ci3tW+1lWzafEKtf/UBYu/yBsHrpCWHlUvsjZYvm/lKAUud2UemWDZfN
WqSROhmBgpPp70byRDh0qo9hTy65vCebiP5QANUqKt607mHQgCMqzxUifioErgOW78bbffm5Avh2
WWFNPPdwQzwn+pUAuZbNc8Qb1l2i8LuPNn36sOjRgUmXFszoMKfDulsXZWfy4N1mgeUR7KXlYeyc
TwKkG9Y5GDVKvtNM4XegUac6DNpVYdCmAuM2VTRcqIBDpyHKqRCF7H1YEMg6fBIgVrv8RPJkOGIn
g2HRrQ3DDjUKLSrDsJWOFmU0XawGAFx+eAHRw76IH/CFiBd74pOAg2ULHhefyoRTnwlMOzWoJUWY
uD0Co2ZVNF6oAgC8fPUC0UN+cGjWRsFkMnhH5vEnAXvyyePCkxlw7DGCU48p7j27CwC49eTGJzii
3wvG1bKwb9BE4WQSeJsvBWSTE4kjwYgZ84dZqxo8u63x8Pl9AMCr168Q0esB/UpJmFABkX3uiOn0
BLFiPruwPY13UCs6hLJTObBuVoNxgyLc280xfXMM0f0+0KuQgEG5FMwq5VA2k4EjsbtBLJnPQdwQ
y81ZSVPj2WKCkhNZsKxTgmmNHIyqpGFYTsc7WBal0+lwrNIGbyy4RIyZOV8V0tJgVlTEh3no2qCP
ciokqs8T9nUasKtRQxR1oYzC9pUa4PQEDyks+sNSnu3DihJX5rIwaQ9iejyROxqL3JFYRHS64lDk
dvAGgsvEiBH9ZTMRZ3YucWDsiQ1zgjcVvNlnuQKpz0AbbwNxrXyONNbMRBEGAGfQrOV9P8nEAAAA
AElFTkSuQmCCClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9pbWFn
ZXMvZmF2aWNvbi1yZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvaW1hZ2VzL2Zhdmljb24t
cmVkLnBuZwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9pbWFnZXMvZmF2aWNvbi1yZWQu
cG5nCShub25leGlzdGVudCkKQEAgLTEsNSArMCwwIEBACi2JUE5HDQotGgotAAAADUlIRFIAAAAQ
AAAAEAgGAAAAH/P/YQAAAi1JREFUeAGlkwNw3zEUx19t23YPs23b3mHezpxtb4fZxmm2zdq23SZ5
afL3rzj1exfn+3mhEeccuqJ2ALZ7TQhyPp8jLkZET5FApCKRLiPD6457L6d3Ci0gu1bP4MhP1BuZ
e5mHhIKpvb26v6YaGhITwbihuhCRrXM/fOteO0DLzlXCjJea3f1trMPDgBVkA4okZezlD8beAVCT
kAhNKf/rkbElfqcf3tMBmrevDEbE9y2e/t424eHQ8vEZSFlvOgtSdVuWAyAH80GjoTouHuoSfxcw
xEGh5x5nGIMQY3Rhg7GF3iygXBi0QorAKIeGl4/BPjIauK2LNyVkIQipAJTSRRZhYtl5mSojMgGg
qAAgYcBaEJoz0sEhMhYIIYsMAT5mjo5AczOlURdRK2lkRN3flJYOZo7OQAn10QFEAzjjWqMuIkmJ
02+BqBMyBBCJUgIGKyD5zWUV4rQDpFEXsfHDS6h7eEMXHUVp6hcIDWVlMmi+4QotrlTF/QMT70Dd
ZFnaL98AtlPnqYxM9jEEi8BgKPnzXW77ig5ACLnaUl5QUBkfB9bDx+kgFSf2Q/mJfSqjbDuOnwil
cX+gMje1QACuKh5SwqIRM5CxS44xvW2cxCk3ZWaoDkyOWwQFq1KZMOd8flaPiEuGv0q61+4p/5k1
YAZDPGHp7O3lEtsdLBydQA43VVZA8e+vUJmXJp4yrhv5JrndU9bp6+SeIYg4H5n8TEz5mRCvj3qb
2v4zdUWt5qKyRh4qlXIAAAAASUVORK5CYIIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCklu
ZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL2ltYWdlcy9wYXJ0eXRpbWUuZ2lmCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
aW1hZ2VzL3BhcnR5dGltZS5naWYJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvaW1hZ2Vz
L3BhcnR5dGltZS5naWYJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMTUgKzAsMCBAQAotR0lGODlhLAFo
AdU/ABNonKBVnqPU8zOjVuOTn+YsJraJsmq775Wy0PrcCGCMnqcNF+xsU/eUahBPctKx0WAKLV7T
9//Mj8dhCRHjTy3vqg+iWWWN11hsstv21/RYWHEvhal7zPjI3fX7x6KoRybQ0dxIk8v7ssqr2yeF
K3Tn501gzo6V1aGxkw7z1NlPq9WqnGUwjM3ys/JTtusVMFroIUD889EXdTkkDCBcXiR0lcDzk9Ly
lu/Zs/DV7+nck993nvDu//757vr///////8h/wtORVRTQ0FQRTIuMAMBAAAAIfkEBRQAPwAsAAAA
ACwBaAEABv9An3BILBqPyKRyyWw6n0gedEqtWq/YrHbLvUq71S94TC6bz+i0es1uu99wbs83j9vv
+Lx+yxPv/4CBgm19Pn6DiImKi4yNjo+QcXVEk5GWl5dzlVp+hZifoKGio6SlpqeoipM9FhMTD2Y5
MjIaMpt0t6m6u0UpC78wE0SHVzEKLQMmJgObGSApKbzRvF8WwAsTuVk9MiYnJ7ZEKQYiIgQg0ui7
rr91PNlh3MkyYikENuQiFun7qBMEYu6IXYn3rU6GcSLuPVNkgMY7fqj8PDTirlKMYVL6FPJEZwiC
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
X2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9pbmRl
eC5odG1sCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4Lmh0bWwJKG5vbmV4aXN0
ZW50KQpAQCAtMSw2MSArMCwwIEBACi08IS0tCi1Db3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotYXJlIG1ldDoK
LTEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0yLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi1USEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi1QVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLUJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLUNPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi1TVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LUlOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi1DT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLS0+Ci0KLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlcy9UZXN0RmFpbHVy
ZXMuY3NzIj48L2xpbms+Ci0gICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vd2Via2l0Lm9yZy9hamF4
L2xpYnMvanF1ZXJ5L2pxdWVyeS0xLjYuMi5taW4uanMiPjwvc2NyaXB0PgotCi0gICAgPHNjcmlw
dCBzcmM9InNjcmlwdHMvY29uZmlnLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0ic2Ny
aXB0cy9iYXNlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0ic2NyaXB0cy9uZXQuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJzY3JpcHRzL1RyYWMuanMiPjwvc2NyaXB0Pgot
Ci0gICAgPHNjcmlwdCBzcmM9InNjcmlwdHMvVXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0ic2NyaXB0cy9OZXdCdWdGb3JtLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0ic2NyaXB0cy9UZXN0UmVsYXRlZEJ1Z0Zvcm0uanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSJzY3JpcHRzL0ZhaWxpbmdUZXN0c0J1Z0Zvcm0uanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSJzY3JpcHRzL0ZsYWt5VGVzdEJ1Z0Zvcm0uanMiPjwvc2NyaXB0PgotCi0gICAg
PHNjcmlwdCBzcmM9InNjcmlwdHMvQnVnemlsbGEuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQg
c3JjPSJzY3JpcHRzL0J1aWxkYm90LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0ic2Ny
aXB0cy9CdWlsZGVyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0ic2NyaXB0cy9GbGFr
eUxheW91dFRlc3REZXRlY3Rvci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InNjcmlw
dHMvTGF5b3V0VGVzdEhpc3RvcnlBbmFseXplci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9InNjcmlwdHMvTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSJzY3JpcHRzL05SV1RSZXN1bHRzUGFyc2VyLmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0ic2NyaXB0cy9PUldUUmVzdWx0c1BhcnNlci5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCBzcmM9InNjcmlwdHMvUGVyc2lzdGVudENhY2hlLmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0ic2NyaXB0cy9WaWV3Q29udHJvbGxlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9InNjcmlwdHMvV2ViS2l0QnVnemlsbGEuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSJzY3JpcHRzL1dlYktpdEJ1aWxkYm90LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
PgotICAgICAgICB2YXIgdmlld0NvbnRyb2xsZXIgPSBuZXcgVmlld0NvbnRyb2xsZXIobmV3IFdl
YktpdEJ1aWxkYm90KCkpOwotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08L2JvZHk+
Ci08L2h0bWw+CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3JlYmFzZWxpbmUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL3JlYmFzZWxpbmUuaHRtbAkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9yZWJh
c2VsaW5lLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NiArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTwhLS0KLUNvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotYXJlIG1ldDoKLTEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0yLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi1USEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi1QVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLUJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLUNPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi1TVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLUlOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi1D
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLS0+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPkdhcmRlbi1PLU1hdGljIFJlYmFzZWxp
bmU8L3RpdGxlPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvbWFpbi5jc3Mi
PgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3dlYmtpdC5vcmcvYWpheC9s
aWJzL2pxdWVyeXVpL2pxdWVyeS11aS0xLjguMTUuY3NzIj4KLTwvaGVhZD4KLTxib2R5PgotPHNj
cmlwdCBzcmM9Imh0dHBzOi8vd2Via2l0Lm9yZy9hamF4L2xpYnMvanF1ZXJ5L2pxdWVyeS0xLjYu
Mi5taW4uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Imh0dHBzOi8vd2Via2l0Lm9yZy9hamF4
L2xpYnMvanF1ZXJ5dWkvMS44LjE1L3VpL2pxdWVyeS11aS5taW4uanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9InNjcmlwdHMvY29uZmlnLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3Jp
cHRzL2Jhc2UuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvbmV0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2NoZWNrb3V0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSJzY3JpcHRzL3Jlc3VsdHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlw
dHMvdWkuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvcmVzdWx0cy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9tb2RlbC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0ic2NyaXB0cy9jb250cm9sbGVycy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
c2NyaXB0cy9jb250cm9sbGVycy9yZWJhc2VsaW5lLmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvcnVuLXVuaXR0ZXN0cy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvcnVuLXVuaXR0ZXN0cy5odG1sCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3J1
bi11bml0dGVzdHMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwMyArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTwhLS0KLUNvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotYXJlIG1ldDoKLTEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0yLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi1USEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi1QVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LUJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLUNPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi1TVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLUlOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi1DT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotLS0+Ci08aHRtbD4KLTxoZWFkPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi8uLi9Tb3VyY2UvVGhpcmRQYXJ0eS9xdW5pdC9xdW5pdC9xdW5pdC5j
c3MiPgotPHNjcmlwdCBzcmM9Imh0dHBzOi8vd2Via2l0Lm9yZy9hamF4L2xpYnMvanF1ZXJ5L2px
dWVyeS0xLjYuMi5taW4uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Imh0dHBzOi8vd2Via2l0
Lm9yZy9hamF4L2xpYnMvanF1ZXJ5dWkvanF1ZXJ5LXVpLTEuOC4xNS5taW4uanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL1NvdXJjZS9UaGlyZFBhcnR5L3F1bml0L3F1
bml0L3F1bml0LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGgxIGlkPSJxdW5pdC1o
ZWFkZXIiPlRlc3RGYWlsdXJlcyBKYXZhU2NyaXB0IFVuaXQgVGVzdHM8L2gxPgotPGgyIGlkPSJx
dW5pdC1iYW5uZXIiPjwvaDI+Ci08ZGl2IGlkPSJxdW5pdC10ZXN0cnVubmVyLXRvb2xiYXIiPjwv
ZGl2PgotPGgyIGlkPSJxdW5pdC11c2VyQWdlbnQiPjwvaDI+Ci08b2wgaWQ9InF1bml0LXRlc3Rz
Ij48L29sPgotCi08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlcy9yZXN1bHRzLmNz
cyI+Ci0KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2Jhc2UuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9InNjcmlwdHMvY29uZmlnLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2Jh
c2VfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL25ldC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9uZXRfdW5pdHRlc3RzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL1RyYWMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
InNjcmlwdHMvdHJhY191bml0dGVzdHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlw
dHMvQnVnemlsbGEuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvYnVnemlsbGFf
dW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2J1aWxkZXJzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2J1aWxkZXJzX3VuaXR0ZXN0cy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9jaGVja291dC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0ic2NyaXB0cy9jaGVja291dF91bml0dGVzdHMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9InNjcmlwdHMvcmVzdWx0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2Ny
aXB0cy9yZXN1bHRzX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0
cy91aS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy91aS9hY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL3VpL2FjdGlvbnNfdW5pdHRlc3RzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL3VpL2ZhaWx1cmVzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSJzY3JpcHRzL3VpL2ZhaWx1cmVzX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy91aS9yZXN1bHRzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJzY3JpcHRzL2NvbnRyb2xsZXJzLmpzIj48L3NjcmlwdD4gPCEtLSBUaGlzIHNjcmlwdCBp
cyBzbGlnaHRseSBvZiBvcmRlci4gLS0+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy91aS9yZXN1bHRz
X3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy91aV91bml0dGVz
dHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvbW9kZWwuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvbW9kZWxfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSJzY3JpcHRzL3VpL25vdGlmaWNhdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9InNjcmlwdHMvdWkvbm90aWZpY2F0aW9uc191bml0dGVzdHMuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvcGVyZi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
c2NyaXB0cy91aS9wZXJmX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2Ny
aXB0cy9jb250cm9sbGVyc191bml0dGVzdHMuanMiPjwvc2NyaXB0PgotCi08IS0tIEZJWE1FOiBX
ZSBzaG91bGQgaGF2ZSB0ZXN0cyBmb3IgdGhlc2UgZmlsZXMhIC0tPgotPHNjcmlwdCBzcmM9InNj
cmlwdHMvQnVnemlsbGEuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvV2ViS2l0
QnVnemlsbGEuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0ic2NyaXB0cy9VdGlsaXRpZXMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvVXRpbGl0aWVzX3VuaXR0ZXN0cy5q
cyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL05ld0J1Z0Zvcm0uanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvTmV3QnVnRm9ybV91bml0dGVzdHMuanMiPjwvc2Ny
aXB0PgotCi08c2NyaXB0IHNyYz0ic2NyaXB0cy9UZXN0UmVsYXRlZEJ1Z0Zvcm0uanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvVGVzdFJlbGF0ZWRCdWdGb3JtX3VuaXR0ZXN0cy5q
cyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL0ZhaWxpbmdUZXN0c0J1Z0Zvcm0u
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvRmFpbGluZ1Rlc3RzQnVnRm9ybV91
bml0dGVzdHMuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0ic2NyaXB0cy9GbGFreVRlc3RC
dWdGb3JtLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL0ZsYWt5VGVzdEJ1Z0Zv
cm1fdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9InNjcmlwdHMvRmxha3lM
YXlvdXRUZXN0RGV0ZWN0b3IuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvRmxh
a3lMYXlvdXRUZXN0RGV0ZWN0b3JfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBz
cmM9InNjcmlwdHMvQnVpbGRib3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMv
QnVpbGRib3RfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9InNjcmlwdHMv
QnVpbGRlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9CdWlsZGVyX3VuaXR0
ZXN0cy5qcyI+PC9zY3JpcHQ+Ci0KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IFRvb2xzL0NJU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy9CdWd6aWxsYS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvQnVnemlsbGEu
anMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9CdWd6aWxsYS5qcwkobm9u
ZXhpc3RlbnQpCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIgYnVnemlsbGEgPSBi
dWd6aWxsYSB8fCB7fTsKLQotKGZ1bmN0aW9uKCkgewotCi12YXIga09wZW5TdGF0dXNlcyA9IHsK
LSAgICBVTkNPTkZJUk1FRDogdHJ1ZSwKLSAgICBORVc6IHRydWUsCi0gICAgQVNTSUdORUQ6IHRy
dWUsCi0gICAgUkVPUEVORUQ6IHRydWUsCi19OwotCi1mdW5jdGlvbiBjcmVhdGVEZXRhY2hlZEZy
YWdtZW50KGh0bWxGcmFnbWVudCkKLXsKLSAgICAvLyBTdGVwIDE6IENyZWF0ZSBhIGRldGFjaGVk
IERvY3VtZW50IHRvIHBlcmZvcm0gdGhlIHBhcnNpbmcuCi0gICAgdmFyIGRldGFjaGVkRG9jdW1l
bnQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoKTsKLQotICAg
IC8vIFN0ZXAgMjogQ3JlYXRlIGEgZGV0YWNoZWQgRWxlbWVudCBhc3NvY2lhdGVkIHdpdGggdGhl
IGRldGFjaGVkIERvY3VtZW50LgotICAgIHZhciBjb250YWluZXIgPSBkZXRhY2hlZERvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotCi0gICAgLy8gU3RlcCAzOiBQdWxsIHRoZSB0cmlnZ2Vy
LgotICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBodG1sRnJhZ21lbnQ7Ci0gICAgcmV0dXJuIGNv
bnRhaW5lcjsKLX0KLQotdmFyIGdfc2VhcmNoQ2FjaGUgPSBuZXcgYmFzZS5Bc3luY2hyb25vdXND
YWNoZShmdW5jdGlvbihxdWVyeSwgY2FsbGJhY2spIHsKLSAgICB2YXIgdXJsID0gY29uZmlnLmtC
dWd6aWxsYVVSTCArICcvYnVnbGlzdC5jZ2k/JyArICQucGFyYW0oewotICAgICAgICBjdHlwZTog
J3JzcycsCi0gICAgICAgIG9yZGVyOiAnYnVncy5idWdfaWQgZGVzYycsCi0gICAgICAgIHF1aWNr
c2VhcmNoOiBxdWVyeSwKLSAgICB9KTsKLQotICAgIG5ldC5nZXQodXJsLCBmdW5jdGlvbihyZXNw
b25zZVhNTCkgewotICAgICAgICB2YXIgZW50cmllcyA9IHJlc3BvbnNlWE1MLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdlbnRyeScpOwotICAgICAgICB2YXIgcmVzdWx0cyA9IEFycmF5LnByb3RvdHlw
ZS5tYXAuY2FsbChlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkgewotICAgICAgICAgICAgdmFyIGh0
bWxGcmFnbWVudCA9IGVudHJ5LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzdW1tYXJ5JylbMF0udGV4
dENvbnRlbnQ7Ci0gICAgICAgICAgICB2YXIgZnJhZ21lbnQgPSBjcmVhdGVEZXRhY2hlZEZyYWdt
ZW50KGh0bWxGcmFnbWVudCk7Ci0gICAgICAgICAgICB2YXIgc3RhdHVzUm93ID0gZnJhZ21lbnQu
cXVlcnlTZWxlY3RvcigndHIuYnpfZmVlZF9idWdfc3RhdHVzJyk7Ci0gICAgICAgICAgICByZXR1
cm4gewotICAgICAgICAgICAgICAgIHRpdGxlOiBlbnRyeS5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
dGl0bGUnKVswXS50ZXh0Q29udGVudCwKLSAgICAgICAgICAgICAgICB1cmw6IGVudHJ5LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCdpZCcpWzBdLnRleHRDb250ZW50LAotICAgICAgICAgICAgICAgIHN0
YXR1czogc3RhdHVzUm93LmNlbGxzWzFdLnRleHRDb250ZW50LAotICAgICAgICAgICAgfTsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIGNhbGxiYWNrKHJlc3VsdHMpOwotICAgIH0pOwotfSk7Ci0KLWJ1
Z3ppbGxhLmJ1Z1VSTCA9IGZ1bmN0aW9uKGJ1Z051bWJlcikKLXsKLSAgICByZXR1cm4gY29uZmln
LmtCdWd6aWxsYVVSTCArICcvc2hvd19idWcuY2dpP2lkPScgKyBidWdOdW1iZXI7Ci19OwotCi1i
dWd6aWxsYS5xdWlja1NlYXJjaCA9IGZ1bmN0aW9uKHF1ZXJ5LCBjYWxsYmFjaykKLXsKLSAgICBn
X3NlYXJjaENhY2hlLmdldChxdWVyeSwgY2FsbGJhY2spOwotfTsKLQotYnVnemlsbGEuaXNPcGVu
U3RhdHVzID0gZnVuY3Rpb24oc3RhdHVzKQotewotICAgIHJldHVybiBzdGF0dXMgaW4ga09wZW5T
dGF0dXNlczsKLX07Ci0KLS8vIFRoaXMgdmFsdWUgaXMgYnVpbHQtaW4gdG8gYWxsIEJ1Z3ppbGxh
IGluc3RhbGxhdGlvbnMuIFNlZSA8aHR0cDovL3dlYmtpdC5vcmcvYi82MTY2MD4uCi1idWd6aWxs
YS5rTWF4aW11bUJ1Z1RpdGxlTGVuZ3RoID0gMjU1OwotCi19KSgpOwpJbmRleDogVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL0J1aWxkYm90LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9CdWlsZGJv
dC5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxkYm90LmpzCShu
b25leGlzdGVudCkKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIEJ1aWxk
Ym90KGJhc2VVUkwpIHsKLSAgICB0aGlzLmJhc2VVUkwgPSBiYXNlVVJMOwotICAgIHRoaXMuX2Nh
Y2hlID0ge307Ci19Ci0KLUJ1aWxkYm90LnByb3RvdHlwZSA9IHsKLSAgICBfYnVpbGRlcnM6IHt9
LAotICAgIF9yZXN1bHRzRGlyZWN0b3J5OiAncmVzdWx0cy8nLAotCi0gICAgYnVpbGRVUkw6IGZ1
bmN0aW9uKGJ1aWxkZXJOYW1lLCBidWlsZE5hbWUpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmFz
ZVVSTCArICdidWlsZGVycy8nICsgYnVpbGRlck5hbWUgKyAnL2J1aWxkcy8nICsgYnVpbGROYW1l
OwotICAgIH0sCi0KLSAgICBidWlsZGVyTmFtZWQ6IGZ1bmN0aW9uKG5hbWUpIHsKLSAgICAgICAg
aWYgKCEobmFtZSBpbiB0aGlzLl9idWlsZGVycykpCi0gICAgICAgICAgICB0aGlzLl9idWlsZGVy
c1tuYW1lXSA9IG5ldyBCdWlsZGVyKG5hbWUsIHRoaXMpOwotICAgICAgICByZXR1cm4gdGhpcy5f
YnVpbGRlcnNbbmFtZV07Ci0gICAgfSwKLQotICAgIGdldFRlc3RlcnM6IGZ1bmN0aW9uKGNhbGxi
YWNrKSB7Ci0gICAgICAgIHZhciBjYWNoZUtleSA9ICdnZXRUZXN0ZXJzJzsKLSAgICAgICAgaWYg
KGNhY2hlS2V5IGluIHRoaXMuX2NhY2hlKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9i
dWlsZGVyc0Zvck5hbWVzKHRoaXMuX2NhY2hlW2NhY2hlS2V5XSkpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBnZXRS
ZXNvdXJjZSh0aGlzLmJhc2VVUkwgKyB0aGlzLl9yZXN1bHRzRGlyZWN0b3J5LCBmdW5jdGlvbih4
aHIpIHsKLSAgICAgICAgICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaHRt
bCcpOwotICAgICAgICAgICAgcm9vdC5pbm5lckhUTUwgPSB4aHIucmVzcG9uc2VUZXh0OwotICAg
ICAgICAgICAgdmFyIG5hbWVzID0gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKHJvb3QucXVlcnlT
ZWxlY3RvckFsbCgndGQ6Zmlyc3QtY2hpbGQgPiBhID4gYicpLCBmdW5jdGlvbihlbGVtKSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uaW5uZXJUZXh0LnJlcGxhY2UoL1wvJC8sICcnKTsK
LSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBzZWxmLl9jYWNoZVtjYWNoZUtleV0gPSBu
YW1lczsKLSAgICAgICAgICAgIGNhbGxiYWNrKHNlbGYuX2J1aWxkZXJzRm9yTmFtZXMobmFtZXMp
KTsKLSAgICAgICAgfSk7Ci0gICAgfSwKLQotICAgIC8vIFJldHVybnMgYW4gb2JqZWN0IHdpdGgg
YXQgbGVhc3QgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgotICAgIC8vICAgcmV2aXNpb246IHNv
dXJjZSByZXZpc2lvbiBudW1iZXIgZm9yIHRoaXMgYnVpbGQgKGludGVnZXIpCi0gICAgLy8gICBi
dWlsZE51bWJlcjogbnVtYmVyIG9mIHRoaXMgYnVpbGQgKGludGVnZXIpCi0gICAgcGFyc2VCdWls
ZE5hbWU6IGZ1bmN0aW9uKGJ1aWxkTmFtZSkgewotICAgICAgICB0aHJvdyAiRGVyaXZlZCBjbGFz
c2VzIG11c3QgaW1wbGVtZW50IjsKLSAgICB9LAotCi0gICAgcmVzdWx0c0RpcmVjdG9yeVVSTDog
ZnVuY3Rpb24oYnVpbGRlck5hbWUsIGJ1aWxkTmFtZSkgewotICAgICAgICByZXR1cm4gdGhpcy5i
YXNlVVJMICsgdGhpcy5fcmVzdWx0c0RpcmVjdG9yeSArIGVuY29kZVVSSUNvbXBvbmVudChidWls
ZGVyTmFtZSkgKyAnLycgKyBlbmNvZGVVUklDb21wb25lbnQoYnVpbGROYW1lKSArICcvJzsKLSAg
ICB9LAotCi0gICAgX2J1aWxkZXJzRm9yTmFtZXM6IGZ1bmN0aW9uKG5hbWVzKSB7Ci0gICAgICAg
IHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgcmV0dXJuIG5hbWVzLm1hcChmdW5jdGlvbihuYW1l
KSB7IHJldHVybiBzZWxmLmJ1aWxkZXJOYW1lZChuYW1lKSB9KTsKLSAgICB9LAotfTsKSW5kZXg6
IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy9CdWlsZGJvdF91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9zY3JpcHRzL0J1aWxkYm90X3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gMjY5MTExKQorKysg
VG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zY3JpcHRzL0J1aWxkYm90X3VuaXR0ZXN0cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0x
LDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24oKSB7Ci0KLW1vZHVsZSgnQnVpbGRi
b3QnKTsKLQotdGVzdCgncmVzdWx0c0RpcmVjdG9yeVVSTCBpcyBVUkktZW5jb2RlZCcsIDEsIGZ1
bmN0aW9uKCkgewotICAgIHZhciBidWlsZGJvdCA9IG5ldyBCdWlsZGJvdCgnaHR0cDovL2J1aWxk
LmV4YW1wbGUuY29tLycpOwotICAgIGVxdWFsKGJ1aWxkYm90LnJlc3VsdHNEaXJlY3RvcnlVUkwo
J1dpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyknLCAncjEwICg1KScpLCAnaHR0cDovL2J1aWxkLmV4
YW1wbGUuY29tL3Jlc3VsdHMvV2luZG93cyUyMDclMjBSZWxlYXNlJTIwKFRlc3RzKS9yMTAlMjAo
NSkvJyk7Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9CdWlsZGVyLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9CdWlsZGVyLmpzCShyZXZpc2lvbiAyNjkxMTEp
CisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvQnVpbGRlci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDI0MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotZnVuY3Rpb24gQnVpbGRlcihuYW1lLCBidWlsZGJvdCkgewot
ICAgIHRoaXMubmFtZSA9IG5hbWU7Ci0gICAgdGhpcy5idWlsZGJvdCA9IGJ1aWxkYm90OwotICAg
IHRoaXMuX2NhY2hlID0ge307Ci19Ci0KLUJ1aWxkZXIucHJvdG90eXBlID0gewotICAgIGJ1aWxk
VVJMOiBmdW5jdGlvbihidWlsZE5hbWUpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRib3Qu
YnVpbGRVUkwodGhpcy5uYW1lLCBidWlsZE5hbWUpOwotICAgIH0sCi0KLSAgICBmYWlsdXJlRGlh
Z25vc2lzVGV4dEFuZFVSTDogZnVuY3Rpb24oYnVpbGROYW1lLCB0ZXN0TmFtZSwgdGVzdFJlc3Vs
dCkgewotICAgICAgICB2YXIgdXJsU3RlbSA9IHRoaXMucmVzdWx0c0RpcmVjdG9yeVVSTChidWls
ZE5hbWUpICsgdGVzdE5hbWUucmVwbGFjZSgvXC5bXi5dKyQvLCAnJyk7Ci0gICAgICAgIHZhciBk
aWFnbm9zdGljSW5mbyA9IHsKLSAgICAgICAgICAgIGZhaWw6IHsKLSAgICAgICAgICAgICAgICB0
ZXh0OiAncHJldHR5IGRpZmYnLAotICAgICAgICAgICAgICAgIHVybDogdXJsU3RlbSArICctcHJl
dHR5LWRpZmYuaHRtbCcsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgZmxha3k6IHsKLSAg
ICAgICAgICAgICAgICB0ZXh0OiAncHJldHR5IGRpZmYgKGZsYWt5KScsCi0gICAgICAgICAgICAg
ICAgdXJsOiB1cmxTdGVtICsgJy1wcmV0dHktZGlmZi5odG1sJywKLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICB0aW1lb3V0OiB7Ci0gICAgICAgICAgICAgICAgdGV4dDogJ3RpbWVkIG91dCcs
Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgY3Jhc2g6IHsKLSAgICAgICAgICAgICAgICB0
ZXh0OiAnY3Jhc2ggbG9nJywKLSAgICAgICAgICAgICAgICB1cmw6IHVybFN0ZW0gKyAnLWNyYXNo
LWxvZy50eHQnLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICd3ZWJwcm9jZXNzIGNyYXNo
JzogewotICAgICAgICAgICAgICAgIHRleHQ6ICd3ZWIgcHJvY2VzcyBjcmFzaCBsb2cnLAotICAg
ICAgICAgICAgICAgIHVybDogdXJsU3RlbSArICctY3Jhc2gtbG9nLnR4dCcsCi0gICAgICAgICAg
ICB9LAotICAgICAgICB9OwotCi0gICAgICAgIHJldHVybiBkaWFnbm9zdGljSW5mb1t0ZXN0UmVz
dWx0LmZhaWx1cmVUeXBlXTsKLSAgICB9LAotCi0gICAgZ2V0QnVpbGROYW1lczogZnVuY3Rpb24o
Y2FsbGJhY2spIHsKLSAgICAgICAgdGhpcy5fZ2V0QnVpbGROYW1lc0Zyb21SZXN1bHRzRGlyZWN0
b3J5KHRoaXMuYnVpbGRib3QuYmFzZVVSTCArICdyZXN1bHRzLycgKyB0aGlzLm5hbWUsIGNhbGxi
YWNrKTsKLSAgICB9LAotCi0gICAgZ2V0TW9zdFJlY2VudENvbXBsZXRlZEJ1aWxkTnVtYmVyOiBm
dW5jdGlvbihjYWxsYmFjaykgewotICAgICAgICB2YXIgY2FjaGVLZXkgPSAnZ2V0TW9zdFJlY2Vu
dENvbXBsZXRlZEJ1aWxkTnVtYmVyJzsKLSAgICAgICAgaWYgKGNhY2hlS2V5IGluIHRoaXMuX2Nh
Y2hlKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9jYWNoZVtjYWNoZUtleV0pOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwot
ICAgICAgICBnZXRSZXNvdXJjZShzZWxmLmJ1aWxkYm90LmJhc2VVUkwgKyAnanNvbi9idWlsZGVy
cy8nICsgc2VsZi5uYW1lLCBmdW5jdGlvbih4aHIpIHsKLSAgICAgICAgICAgIHZhciBkYXRhID0g
SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKLQotICAgICAgICAgICAgdmFyIGN1cnJlbnRC
dWlsZHMgPSB7fTsKLSAgICAgICAgICAgIGlmICgnY3VycmVudEJ1aWxkcycgaW4gZGF0YSkKLSAg
ICAgICAgICAgICAgICBkYXRhLmN1cnJlbnRCdWlsZHMuZm9yRWFjaChmdW5jdGlvbihidWlsZE51
bWJlcikgeyBjdXJyZW50QnVpbGRzW2J1aWxkTnVtYmVyXSA9IHRydWUgfSk7Ci0KLSAgICAgICAg
ICAgIGZvciAodmFyIGkgPSBkYXRhLmNhY2hlZEJ1aWxkcy5sZW5ndGggLSAxOyBpID49IDA7IC0t
aSkgewotICAgICAgICAgICAgICAgIGlmIChkYXRhLmNhY2hlZEJ1aWxkc1tpXSBpbiBjdXJyZW50
QnVpbGRzKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAg
IHNlbGYuX2NhY2hlW2NhY2hlS2V5XSA9IGRhdGEuY2FjaGVkQnVpbGRzW2ldOwotICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKGRhdGEuY2FjaGVkQnVpbGRzW2ldKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNlbGYuX2NhY2hlW2NhY2hlS2V5
XSA9IC0xOwotICAgICAgICAgICAgY2FsbGJhY2soc2VsZi5fY2FjaGVbY2FjaGVLZXldKTsKLSAg
ICAgICAgfSwKLSAgICAgICAgZnVuY3Rpb24oeGhyKSB7Ci0gICAgICAgICAgICBzZWxmLl9jYWNo
ZVtjYWNoZUtleV0gPSAtMTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHNlbGYuX2NhY2hlW2NhY2hl
S2V5XSk7Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBnZXROdW1iZXJPZkZhaWxpbmdUZXN0
czogZnVuY3Rpb24oYnVpbGROdW1iZXIsIGNhbGxiYWNrKSB7Ci0gICAgICAgIHZhciBjYWNoZUtl
eSA9IHRoaXMubmFtZSArICdfZ2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHNfJyArIGJ1aWxkTnVtYmVy
OwotICAgICAgICBjb25zdCBjdXJyZW50Q2FjaGVkRGF0YVZlcnNpb24gPSAzOwotICAgICAgICBp
ZiAoUGVyc2lzdGVudENhY2hlLmNvbnRhaW5zKGNhY2hlS2V5KSkgewotICAgICAgICAgICAgdmFy
IGNhY2hlZERhdGEgPSBQZXJzaXN0ZW50Q2FjaGUuZ2V0KGNhY2hlS2V5KTsKLSAgICAgICAgICAg
IGlmIChjYWNoZWREYXRhLnZlcnNpb24gPT09IGN1cnJlbnRDYWNoZWREYXRhVmVyc2lvbikgewot
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKGNhY2hlZERhdGEuZmFpbHVyZUNvdW50LCBjYWNoZWRE
YXRhLnRvb01hbnlGYWlsdXJlcyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9IHsgZmFpbHVyZUNvdW50OiAt
MSwgdG9vTWFueUZhaWx1cmVzOiBmYWxzZSwgdmVyc2lvbjogY3VycmVudENhY2hlZERhdGFWZXJz
aW9uIH07Ci0KLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBzZWxmLl9nZXRCdWls
ZEpTT04oYnVpbGROdW1iZXIsIGZ1bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgICAgIHZhciBsYXlv
dXRUZXN0U3RlcCA9IGRhdGEuc3RlcHMuZmluZEZpcnN0KGZ1bmN0aW9uKHN0ZXApIHsgcmV0dXJu
IHN0ZXAubmFtZSA9PT0gJ2xheW91dC10ZXN0JzsgfSk7Ci0gICAgICAgICAgICBpZiAoIWxheW91
dFRlc3RTdGVwKSB7Ci0gICAgICAgICAgICAgICAgUGVyc2lzdGVudENhY2hlLnNldChjYWNoZUtl
eSwgcmVzdWx0KTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQuZmFpbHVyZUNvdW50
LCByZXN1bHQudG9vTWFueUZhaWx1cmVzKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghKCdpc0ZpbmlzaGVkJyBpbiBsYXlvdXRUZXN0
U3RlcCkpIHsKLSAgICAgICAgICAgICAgICAvLyBydW4td2Via2l0LXRlc3RzIG5ldmVyIGV2ZW4g
cmFuLCBvciBkaWRuJ3QgZmluaXNoIHJ1bm5pbmcuCi0gICAgICAgICAgICAgICAgUGVyc2lzdGVu
dENhY2hlLnNldChjYWNoZUtleSwgcmVzdWx0KTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhy
ZXN1bHQuZmFpbHVyZUNvdW50LCByZXN1bHQudG9vTWFueUZhaWx1cmVzKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghKCdyZXN1bHRz
JyBpbiBsYXlvdXRUZXN0U3RlcCkgfHwgbGF5b3V0VGVzdFN0ZXAucmVzdWx0c1swXSA9PT0gMCkg
ewotICAgICAgICAgICAgICAgIGlmICghKCd0aW1lcycgaW4gbGF5b3V0VGVzdFN0ZXApIHx8IGxh
eW91dFRlc3RTdGVwLnRpbWVzLmxlbmd0aCA8IDIgfHwgbGF5b3V0VGVzdFN0ZXAudGltZXNbMV0g
LSBsYXlvdXRUZXN0U3RlcC50aW1lc1swXSA8IHNlbGYuX21pbmltdW1TdWNjZXNzZnVsTGF5b3V0
VGVzdFN0ZXBSdW5UaW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEVpdGhlciBzb21ldGhp
bmcgY2F1c2VkIHRoZSBzdGFydC9zdG9wIHRpbWVzIG5vdCB0byBiZSByZWNvcmRlZCwgb3IKLSAg
ICAgICAgICAgICAgICAgICAgLy8gcnVuLXdlYmtpdC10ZXN0cyByYW4gc28gcXVpY2tseSB0aGF0
IHdlIGNhbid0IGJlbGlldmUgdGhlcmUgd2Fzbid0IGFuIGVycm9yCi0gICAgICAgICAgICAgICAg
ICAgIC8vIChlLmcuLCBhIGJ1ZyBpbiB0aGUgc2NyaXB0IHRoYXQgbWFkZSBpdCBub3QgZmluZCBh
bnkgdGVzdHMgdG8gcnVuKS4KLSAgICAgICAgICAgICAgICAgICAgUGVyc2lzdGVudENhY2hlLnNl
dChjYWNoZUtleSwgcmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0
LmZhaWx1cmVDb3VudCwgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBBbGwg
dGVzdHMgcGFzc2VkLgotICAgICAgICAgICAgICAgIHJlc3VsdC5mYWlsdXJlQ291bnQgPSAwOwot
ICAgICAgICAgICAgICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0g
ICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0LmZhaWx1cmVDb3VudCwgcmVzdWx0LnRvb01h
bnlGYWlsdXJlcyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBpZiAobGF5b3V0VGVzdFN0ZXAucmVzdWx0c1swXSA9PT0gNCkgewotICAgICAg
ICAgICAgICAgIC8vIFRoaXMgYnVpbGQgc3RlcCB3YXMgaW50ZXJydXB0ZWQgKHBlcmhhcHMgZHVl
IHRvIHRoZSBidWlsZCBzbGF2ZSByZXN0YXJ0aW5nKS4KLSAgICAgICAgICAgICAgICBQZXJzaXN0
ZW50Q2FjaGUuc2V0KGNhY2hlS2V5LCByZXN1bHQpOwotICAgICAgICAgICAgICAgIGNhbGxiYWNr
KHJlc3VsdC5mYWlsdXJlQ291bnQsIHJlc3VsdC50b29NYW55RmFpbHVyZXMpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKC9FeGl0aW5n
IGVhcmx5Ly50ZXN0KGxheW91dFRlc3RTdGVwLnJlc3VsdHNbMV1bMF0pKQotICAgICAgICAgICAg
ICAgIHJlc3VsdC50b29NYW55RmFpbHVyZXMgPSB0cnVlOwotCi0gICAgICAgICAgICByZXN1bHQu
ZmFpbHVyZUNvdW50ID0gbGF5b3V0VGVzdFN0ZXAucmVzdWx0c1sxXS5yZWR1Y2UoZnVuY3Rpb24o
c3VtLCBvdXRwdXRMaW5lKSB7Ci0gICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gL14oXGQrKVxz
Ly5leGVjKG91dHB1dExpbmUpOwotICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzdW07Ci0gICAgICAgICAgICAgICAgLy8gRG9uJ3QgY291bnQg
bGVha3MsIG5ldyB0ZXN0cywgb3IgcGFzc2VzIGFzIGZhaWx1cmVzLgotICAgICAgICAgICAgICAg
IGlmIChvdXRwdXRMaW5lLmNvbnRhaW5zKCdsZWFrJykgfHwgb3V0cHV0TGluZS5jb250YWlucygn
d2VyZSBuZXcnKSB8fCBvdXRwdXRMaW5lLmNvbnRhaW5zKCduZXcgcGFzc2VzJykpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzdW07Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN1bSArIHBh
cnNlSW50KG1hdGNoWzFdLCAxMCk7Ci0gICAgICAgICAgICB9LCAwKTsKLQotICAgICAgICAgICAg
aWYgKCFyZXN1bHQuZmFpbHVyZUNvdW50KSB7Ci0gICAgICAgICAgICAgICAgLy8gcnVuLXdlYmtp
dC10ZXN0cyBleGl0ZWQgd2l0aCBhIG5vbi16ZXJvIGV4aXQgc3RhdHVzLCBidXQgd2UKLSAgICAg
ICAgICAgICAgICAvLyBkaWRuJ3QgZmluZCBhbnkgb3V0cHV0IGFib3V0IHRoZSBudW1iZXIgb2Yg
ZmFpbGVkIHRlc3RzLgotICAgICAgICAgICAgICAgIC8vIFNvbWV0aGluZyBtdXN0IGhhdmUgZ29u
ZSB3cm9uZyAoZS5nLiwgcnVuLXdlYmtpdC10ZXN0cyB0aW1lZAotICAgICAgICAgICAgICAgIC8v
IG91dCBhbmQgd2FzIGtpbGxlZCBieSBidWlsZGJvdCkuCi0gICAgICAgICAgICAgICAgcmVzdWx0
LmZhaWx1cmVDb3VudCA9IC0xOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBQZXJzaXN0
ZW50Q2FjaGUuc2V0KGNhY2hlS2V5LCByZXN1bHQpOwotICAgICAgICAgICAgY2FsbGJhY2socmVz
dWx0LmZhaWx1cmVDb3VudCwgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyk7Ci0gICAgICAgIH0pOwot
ICAgIH0sCi0KLSAgICBnZXRPbGRCdWlsZE5hbWVzOiBmdW5jdGlvbihjYWxsYmFjaykgewotICAg
ICAgICB0aGlzLl9nZXRCdWlsZE5hbWVzRnJvbVJlc3VsdHNEaXJlY3RvcnkodGhpcy5idWlsZGJv
dC5iYXNlVVJMICsgJ29sZC1yZXN1bHRzLycgKyB0aGlzLm5hbWUsIGNhbGxiYWNrKTsKLSAgICB9
LAotCi0gICAgcmVzdWx0c0RpcmVjdG9yeVVSTDogZnVuY3Rpb24oYnVpbGROYW1lKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLmJ1aWxkYm90LnJlc3VsdHNEaXJlY3RvcnlVUkwodGhpcy5uYW1lLCBi
dWlsZE5hbWUpOwotICAgIH0sCi0KLSAgICByZXN1bHRzUGFnZVVSTDogZnVuY3Rpb24oYnVpbGRO
YW1lKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJlc3VsdHNEaXJlY3RvcnlVUkwoYnVpbGROYW1l
KSArICdyZXN1bHRzLmh0bWwnOwotICAgIH0sCi0KLSAgICBfZ2V0QnVpbGRKU09OOiBmdW5jdGlv
bihidWlsZE51bWJlciwgY2FsbGJhY2spIHsKLSAgICAgICAgdmFyIGNhY2hlS2V5ID0gJ2dldEJ1
aWxkSlNPTl8nICsgYnVpbGROdW1iZXI7Ci0gICAgICAgIGlmIChjYWNoZUtleSBpbiB0aGlzLl9j
YWNoZSkgewotICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fY2FjaGVbY2FjaGVLZXldKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsK
LSAgICAgICAgZ2V0UmVzb3VyY2Uoc2VsZi5idWlsZGJvdC5iYXNlVVJMICsgJ2pzb24vYnVpbGRl
cnMvJyArIHNlbGYubmFtZSArICcvYnVpbGRzLycgKyBidWlsZE51bWJlciwgZnVuY3Rpb24oeGhy
KSB7Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7
Ci0gICAgICAgICAgICBzZWxmLl9jYWNoZVtjYWNoZUtleV0gPSBkYXRhOwotICAgICAgICAgICAg
Y2FsbGJhY2soZGF0YSk7Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBfZ2V0QnVpbGROYW1l
c0Zyb21SZXN1bHRzRGlyZWN0b3J5OiBmdW5jdGlvbihkaXJlY3RvcnlVUkwsIGNhbGxiYWNrKSB7
Ci0gICAgICAgIHZhciBjYWNoZUtleSA9ICdfZ2V0QnVpbGROYW1lc0Zyb21SZXN1bHRzRGlyZWN0
b3J5LicgKyBkaXJlY3RvcnlVUkw7Ci0gICAgICAgIGlmIChjYWNoZUtleSBpbiB0aGlzLl9jYWNo
ZSkgewotICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fY2FjaGVbY2FjaGVLZXldKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLQot
ICAgICAgICBmdW5jdGlvbiBidWlsZE5hbWVzRnJvbURpcmVjdG9yeVhIUih4aHIpIHsKLSAgICAg
ICAgICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaHRtbCcpOwotICAgICAg
ICAgICAgcm9vdC5pbm5lckhUTUwgPSB4aHIucmVzcG9uc2VUZXh0OwotCi0gICAgICAgICAgICB2
YXIgYnVpbGROYW1lcyA9IEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChyb290LnF1ZXJ5U2VsZWN0
b3JBbGwoJ3RkOmZpcnN0LWNoaWxkID4gYSA+IGInKSwgZnVuY3Rpb24oZWxlbSkgewotICAgICAg
ICAgICAgICAgIHJldHVybiBlbGVtLmlubmVyVGV4dC5yZXBsYWNlKC9cLyQvLCAnJyk7Ci0gICAg
ICAgICAgICB9KS5maWx0ZXIoZnVuY3Rpb24oZmlsZW5hbWUpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5idWlsZGJvdC5wYXJzZUJ1aWxkTmFtZShmaWxlbmFtZSk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgIGJ1aWxkTmFtZXMucmV2ZXJzZSgpOwotCi0gICAgICAgICAgICBy
ZXR1cm4gYnVpbGROYW1lczsKLSAgICAgICAgfQotCi0gICAgICAgIGdldFJlc291cmNlKGRpcmVj
dG9yeVVSTCwgZnVuY3Rpb24oeGhyKSB7Ci0gICAgICAgICAgICB2YXIgYnVpbGROYW1lcyA9IGJ1
aWxkTmFtZXNGcm9tRGlyZWN0b3J5WEhSKHhocik7Ci0gICAgICAgICAgICBzZWxmLl9jYWNoZVtj
YWNoZUtleV0gPSBidWlsZE5hbWVzOwotICAgICAgICAgICAgY2FsbGJhY2soYnVpbGROYW1lcyk7
Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICAvLyBBbnkgc3VjY2Vzc2Z1bCBydW5zIG9mIHJ1
bi13ZWJraXQtdGVzdHMgdGhhdCB0b29rIGxlc3MgdGhhbiB0aGlzIG51bWJlciBvZiBzZWNvbmRz
IGFyZQotICAgIC8vIGFzc3VtZWQgdG8gYmUgZXJyb3JzLgotICAgIF9taW5pbXVtU3VjY2Vzc2Z1
bExheW91dFRlc3RTdGVwUnVuVGltZTogMjAsCi19OwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1
aWxkZXJfdW5pdHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9CdWlsZGVy
X3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxk
ZXJfdW5pdHRlc3RzLmpzCShub25leGlzdGVudCkKQEAgLTEsMjY5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0oZnVuY3Rpb24oKSB7Ci0KLW1vZHVsZSgiQnVpbGRlciIpOwotCi1mdW5jdGlvbiBydW5H
ZXROdW1iZXJPZkZhaWxpbmdUZXN0c1Rlc3QoanNvbkRhdGEsIGNhbGxiYWNrKSB7Ci0gICAgdmFy
IG1vY2tCdWlsZGJvdCA9IHt9OwotICAgIG1vY2tCdWlsZGJvdC5iYXNlVVJMID0gJ2h0dHA6Ly9l
eGFtcGxlLmNvbS8nOwotCi0gICAgdmFyIGJ1aWxkZXIgPSBuZXcgQnVpbGRlcigndGVzdCBidWls
ZGVyJywgbW9ja0J1aWxkYm90KTsKLQotICAgIHZhciByZWFsR2V0UmVzb3VyY2UgPSB3aW5kb3cu
Z2V0UmVzb3VyY2U7Ci0gICAgd2luZG93LmdldFJlc291cmNlID0gZnVuY3Rpb24odXJsLCBzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHsKLSAgICAgICAgdmFyIG1vY2tYSFIgPSB7fTsK
LSAgICAgICAgbW9ja1hIUi5yZXNwb25zZVRleHQgPSBKU09OLnN0cmluZ2lmeShqc29uRGF0YSk7
Ci0KLSAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRlciBmb3IgdGhpcyBjYWxsYmFj
ayB0byBoYXBwZW4KLSAgICAgICAgLy8gYXN5bmNocm9ub3VzbHksIHRvIG1hdGNoIHdoYXQgaGFw
cGVucyBmb3IgcmVhbCByZXF1ZXN0cy4KLSAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKG1vY2tYSFIp
OwotICAgIH07Ci0KLSAgICAvLyBGSVhNRTogSXQncyBsYW1lIHRvIGJlIG1vZGlmeWluZyBzaW5n
bGV0b25zIGxpa2UgdGhpcy4gV2Ugc2hvdWxkIGdldCByaWQKLSAgICAvLyBvZiBvdXIgc2luZ2xl
dG9uIHVzYWdlIGVudGlyZWx5IQotICAgIG9rKCEoIlBlcnNpc3RlbnRDYWNoZSIgaW4gd2luZG93
KSk7Ci0gICAgd2luZG93LlBlcnNpc3RlbnRDYWNoZSA9IHsKLSAgICAgICAgY29udGFpbnM6IGZ1
bmN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0sCi0gICAgICAgIHNldDogZnVuY3Rpb24oKSB7IH0s
Ci0gICAgICAgIGdldDogZnVuY3Rpb24oKSB7IH0sCi0gICAgfTsKLQotICAgIGJ1aWxkZXIuZ2V0
TnVtYmVyT2ZGYWlsaW5nVGVzdHMoMSwgY2FsbGJhY2spOwotCi0gICAgd2luZG93LmdldFJlc291
cmNlID0gcmVhbEdldFJlc291cmNlOwotICAgIGVxdWFsKHdpbmRvdy5nZXRSZXNvdXJjZSwgcmVh
bEdldFJlc291cmNlKTsKLSAgICBkZWxldGUgd2luZG93LlBlcnNpc3RlbnRDYWNoZTsKLX0KLQot
dGVzdCgiZ2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHMgc2hvdWxkbid0IGluY2x1ZGUgbGVha3MiLCA0
LCBmdW5jdGlvbigpIHsKLSAgICBjb25zdCBqc29uRGF0YSA9IHsKLSAgICAgICAgc3RlcHM6IFsK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkOiB0cnVlLAotICAgICAg
ICAgICAgICAgIGlzU3RhcnRlZDogdHJ1ZSwKLSAgICAgICAgICAgICAgICBuYW1lOiAnbGF5b3V0
LXRlc3QnLAotICAgICAgICAgICAgICAgIHJlc3VsdHM6IFsKLSAgICAgICAgICAgICAgICAgICAg
MiwKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgIjIxNzgg
dG90YWwgbGVha3MgZm91bmQhIiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAiMiB0ZXN0IGNh
c2VzICg8MSUpIGhhZCBpbmNvcnJlY3QgbGF5b3V0IiwgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAiMiB0ZXN0IGNhc2VzICg8MSUpIGNyYXNoZWQiLAotICAgICAgICAgICAgICAgICAgICBdLAot
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgdGltZXM6IFsKLSAgICAgICAgICAg
ICAgICAgICAgMTMxMDU5OTIwNC4xMjMxMjI5LAotICAgICAgICAgICAgICAgICAgICAxMzEwNjAw
MTUyLjk3MzY1OSwKLSAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICB9LAotICAgICAgICBd
LAotICAgIH07Ci0KLSAgICBydW5HZXROdW1iZXJPZkZhaWxpbmdUZXN0c1Rlc3QoanNvbkRhdGEs
IGZ1bmN0aW9uKGZhaWx1cmVDb3VudCwgdG9vTWFueUZhaWx1cmVzKSB7Ci0gICAgICAgIGVxdWFs
KGZhaWx1cmVDb3VudCwgNCk7Ci0gICAgICAgIGVxdWFsKHRvb01hbnlGYWlsdXJlcywgZmFsc2Up
OwotICAgIH0pOwotfSk7Ci0KLXRlc3QoImdldE51bWJlck9mRmFpbGluZ1Rlc3RzIGRldGVjdHMg
c3B1cmlvdXMgcnVuLXdlYmtpdC10ZXN0cyBmYWlsdXJlcyIsIDQsIGZ1bmN0aW9uKCkgewotICAg
IGNvbnN0IGpzb25EYXRhID0gewotICAgICAgICBzdGVwczogWwotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGlzRmluaXNoZWQ6IHRydWUsIAotICAgICAgICAgICAgICAgIGlzU3RhcnRl
ZDogdHJ1ZSwgCi0gICAgICAgICAgICAgICAgbmFtZTogImxheW91dC10ZXN0IiwgCi0gICAgICAg
ICAgICAgICAgcmVzdWx0czogWwotICAgICAgICAgICAgICAgICAgICAyLCAKLSAgICAgICAgICAg
ICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgImxheW91dC10ZXN0IgotICAgICAg
ICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgXSwgCi0gICAgICAgICAgICAgICAgc3Rl
cF9udW1iZXI6IDcsIAotICAgICAgICAgICAgICAgIHRleHQ6IFsKLSAgICAgICAgICAgICAgICAg
ICAgImxheW91dC10ZXN0IgotICAgICAgICAgICAgICAgIF0sIAotICAgICAgICAgICAgICAgIHRp
bWVzOiBbCi0gICAgICAgICAgICAgICAgICAgIDEzMTA0Mzc3MzYuMDA0OTQsIAotICAgICAgICAg
ICAgICAgICAgICAxMzEwNDQwMTE4LjAzODAyMwotICAgICAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICB9LCAKLSAgICAgICAgXSwKLSAgICB9OwotCi0gICAgcnVuR2V0TnVtYmVyT2ZGYWlsaW5n
VGVzdHNUZXN0KGpzb25EYXRhLCBmdW5jdGlvbihmYWlsdXJlQ291bnQsIHRvb01hbnlGYWlsdXJl
cykgewotICAgICAgICBlcXVhbChmYWlsdXJlQ291bnQsIC0xKTsKLSAgICAgICAgZXF1YWwodG9v
TWFueUZhaWx1cmVzLCBmYWxzZSk7Ci0gICAgfSk7Ci19KTsKLQotdGVzdCgiZ2V0TnVtYmVyT2ZG
YWlsaW5nVGVzdHMgdW5kZXJzdGFuZHMgTlJXVCBleGl0aW5nIGVhcmx5IGR1ZSB0byB0b28gbWFu
eSBmYWlsdXJlcyIsIDQsIGZ1bmN0aW9uKCkgewotICAgIGNvbnN0IGpzb25EYXRhID0gewotICAg
ICAgICBzdGVwczogWwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlzRmluaXNoZWQ6
IHRydWUsIAotICAgICAgICAgICAgICAgIGlzU3RhcnRlZDogdHJ1ZSwgCi0gICAgICAgICAgICAg
ICAgbmFtZTogImxheW91dC10ZXN0IiwgCi0gICAgICAgICAgICAgICAgcmVzdWx0czogWwotICAg
ICAgICAgICAgICAgICAgMiwgCi0gICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAg
ICAgICAgIjIwMTEtMDctMTMgMDQ6Mzg6NDYsMzE1IDExMjQ3IG1hbmFnZXIucHk6NzgwIFdBUk5J
TkcgRXhpdGluZyBlYXJseSBhZnRlciAyMCBjcmFzaGVzIGFuZCAwIHRpbWVvdXRzLiAyMjUxIHRl
c3RzIHJ1bi4iLCAKLSAgICAgICAgICAgICAgICAgICAgICAiMjAgZmFpbGVkIgotICAgICAgICAg
ICAgICAgICAgXQotICAgICAgICAgICAgICAgIF0sIAotICAgICAgICAgICAgICAgIHN0ZXBfbnVt
YmVyOiA0LCAKLSAgICAgICAgICAgICAgICB0ZXh0OiBbCi0gICAgICAgICAgICAgICAgICAgICIy
MDExLTA3LTEzIDA0OjM4OjQ2LDMxNSAxMTI0NyBtYW5hZ2VyLnB5Ojc4MCBXQVJOSU5HIEV4aXRp
bmcgZWFybHkgYWZ0ZXIgMjAgY3Jhc2hlcyBhbmQgMCB0aW1lb3V0cy4gMjI1MSB0ZXN0cyBydW4u
IiwgCi0gICAgICAgICAgICAgICAgICAgICIyMCBmYWlsZWQiCi0gICAgICAgICAgICAgICAgXSwg
Ci0gICAgICAgICAgICAgICAgdGltZXM6IFsKLSAgICAgICAgICAgICAgICAgICAgMTMxMDU1NzEx
NS43OTMwODIsIAotICAgICAgICAgICAgICAgICAgICAxMzEwNTU3MTI5LjgzMjEwNAotICAgICAg
ICAgICAgICAgIF0KLSAgICAgICAgICAgIH0sIAotICAgICAgICBdLAotICAgIH07Ci0KLSAgICBy
dW5HZXROdW1iZXJPZkZhaWxpbmdUZXN0c1Rlc3QoanNvbkRhdGEsIGZ1bmN0aW9uKGZhaWx1cmVD
b3VudCwgdG9vTWFueUZhaWx1cmVzKSB7Ci0gICAgICAgIGVxdWFsKGZhaWx1cmVDb3VudCwgMjAp
OwotICAgICAgICBlcXVhbCh0b29NYW55RmFpbHVyZXMsIHRydWUpOwotICAgIH0pOwotfSk7Ci0K
LXRlc3QoImdldE51bWJlck9mRmFpbGluZ1Rlc3RzIHRyZWF0cyBidWlsZCBzdGVwIGludGVycnVw
dGlvbnMgYXMgZXJyb3JzIiwgNCwgZnVuY3Rpb24oKSB7Ci0gICAgY29uc3QganNvbkRhdGEgPSB7
Ci0gICAgICAgIHN0ZXBzOiBbCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaXNGaW5p
c2hlZDogdHJ1ZSwKLSAgICAgICAgICAgICAgICBpc1N0YXJ0ZWQ6IHRydWUsCi0gICAgICAgICAg
ICAgICAgbmFtZTogImxheW91dC10ZXN0IiwKLSAgICAgICAgICAgICAgICByZXN1bHRzOiBbCi0g
ICAgICAgICAgICAgICAgICA0LAotICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg
ICAgICAgICJpbnRlcnJ1cHRlZCIsCi0gICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICAgICBzdGVwX251bWJlcjogNSwKLSAgICAgICAgICAgICAgICB0
ZXh0OiBbCi0gICAgICAgICAgICAgICAgICAgICJsYXlvdXQtdGVzdCIsCi0gICAgICAgICAgICAg
ICAgICAgICJpbnRlcnJ1cHRlZCIsCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAg
ICB0aW1lczogWwotICAgICAgICAgICAgICAgICAgICAxMzEwNTk5MjA0LjEyMzEyMjksCi0gICAg
ICAgICAgICAgICAgICAgIDEzMTA2MDAxNTIuOTczNjU5LAotICAgICAgICAgICAgICAgIF0KLSAg
ICAgICAgICAgIH0sCi0gICAgICAgIF0sCi0gICAgfTsKLQotICAgIHJ1bkdldE51bWJlck9mRmFp
bGluZ1Rlc3RzVGVzdChqc29uRGF0YSwgZnVuY3Rpb24oZmFpbHVyZUNvdW50LCB0b29NYW55RmFp
bHVyZXMpIHsKLSAgICAgICAgZXF1YWwoZmFpbHVyZUNvdW50LCAtMSk7Ci0gICAgICAgIGVxdWFs
KHRvb01hbnlGYWlsdXJlcywgZmFsc2UpOwotICAgIH0pOwotfSk7Ci0KLXRlc3QoImdldE51bWJl
ck9mRmFpbGluZ1Rlc3RzIHRyZWF0cyB1bmZpbmlzaGVkIHRlc3QgcnVucyBhcyBlcnJvcnMiLCA0
LCBmdW5jdGlvbigpIHsKLSAgICBjb25zdCBqc29uRGF0YSA9IHsKLSAgICAgICAgc3RlcHM6IFsK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpc1N0YXJ0ZWQ6IHRydWUsIAotICAgICAg
ICAgICAgICAgIG5hbWU6ICJsYXlvdXQtdGVzdCIsIAotICAgICAgICAgICAgICAgIHN0ZXBfbnVt
YmVyOiA1LCAKLSAgICAgICAgICAgICAgICB0ZXh0OiBbCi0gICAgICAgICAgICAgICAgICAgICJs
YXlvdXQtdGVzdHMgcnVubmluZyIKLSAgICAgICAgICAgICAgICBdLCAKLSAgICAgICAgICAgICAg
ICB0aW1lczogWwotICAgICAgICAgICAgICAgICAgICAxMzEyOTg5Mjk1LjUxODQ4MSwgCi0gICAg
ICAgICAgICAgICAgICAgIG51bGwKLSAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICB9LCAK
LSAgICAgICAgXSwKLSAgICB9OwotCi0gICAgcnVuR2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHNUZXN0
KGpzb25EYXRhLCBmdW5jdGlvbihmYWlsdXJlQ291bnQsIHRvb01hbnlGYWlsdXJlcykgewotICAg
ICAgICBlcXVhbChmYWlsdXJlQ291bnQsIC0xKTsKLSAgICAgICAgZXF1YWwodG9vTWFueUZhaWx1
cmVzLCBmYWxzZSk7Ci0gICAgfSk7Ci19KTsKLQotdGVzdCgiZ2V0TnVtYmVyT2ZGYWlsaW5nVGVz
dHMgdHJlYXRzIHN1Y2Nlc3NmdWwgYnV0IHVuYmVsaWV2YWJseSBzaG9ydCB0ZXN0IHJ1bnMgYXMg
ZXJyb3JzIiwgNCwgZnVuY3Rpb24oKSB7Ci0gICAgY29uc3QganNvbkRhdGEgPSB7Ci0gICAgICAg
IHN0ZXBzOiBbCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaXNGaW5pc2hlZDogdHJ1
ZSwgCi0gICAgICAgICAgICAgICAgaXNTdGFydGVkOiB0cnVlLCAKLSAgICAgICAgICAgICAgICBu
YW1lOiAibGF5b3V0LXRlc3QiLCAKLSAgICAgICAgICAgICAgICBzdGVwX251bWJlcjogNywgCi0g
ICAgICAgICAgICAgICAgdGV4dDogWwotICAgICAgICAgICAgICAgICAgICAibGF5b3V0LXRlc3Qi
Ci0gICAgICAgICAgICAgICAgXSwgCi0gICAgICAgICAgICAgICAgdGltZXM6IFsKLSAgICAgICAg
ICAgICAgICAgICAgMTMxMTI4ODc5Ny43MjA3MDE5LCAKLSAgICAgICAgICAgICAgICAgICAgMTMx
MTI4ODgwMi43NzkxOTQxCi0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfSwgCi0gICAg
ICAgIF0sCi0gICAgfTsKLQotICAgIHJ1bkdldE51bWJlck9mRmFpbGluZ1Rlc3RzVGVzdChqc29u
RGF0YSwgZnVuY3Rpb24oZmFpbHVyZUNvdW50LCB0b29NYW55RmFpbHVyZXMpIHsKLSAgICAgICAg
ZXF1YWwoZmFpbHVyZUNvdW50LCAtMSk7Ci0gICAgICAgIGVxdWFsKHRvb01hbnlGYWlsdXJlcywg
ZmFsc2UpOwotICAgIH0pOwotfSk7Ci0KLXRlc3QoImdldE51bWJlck9mRmFpbGluZ1Rlc3RzIGRv
ZXNuJ3QgY2FyZSBpZiBhIGZhaWxpbmcgcnVuIGlzIHVuYmVsaWV2YWJseSBzaG9ydCIsIDQsIGZ1
bmN0aW9uKCkgewotICAgIGNvbnN0IGpzb25EYXRhID0gewotICAgICAgICBzdGVwczogWwotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGlzRmluaXNoZWQ6IHRydWUsIAotICAgICAgICAg
ICAgICAgIGlzU3RhcnRlZDogdHJ1ZSwgCi0gICAgICAgICAgICAgICAgbmFtZTogImxheW91dC10
ZXN0IiwgCi0gICAgICAgICAgICAgICAgcmVzdWx0czogWwotICAgICAgICAgICAgICAgICAgMiwg
Ci0gICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgIjIwMTEtMDctMTMg
MDQ6Mzg6NDYsMzE1IDExMjQ3IG1hbmFnZXIucHk6NzgwIFdBUk5JTkcgRXhpdGluZyBlYXJseSBh
ZnRlciAyMCBjcmFzaGVzIGFuZCAwIHRpbWVvdXRzLiAyMjUxIHRlc3RzIHJ1bi4iLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAiMjAgZmFpbGVkIgotICAgICAgICAgICAgICAgICAgXQotICAgICAg
ICAgICAgICAgIF0sIAotICAgICAgICAgICAgICAgIHN0ZXBfbnVtYmVyOiA0LCAKLSAgICAgICAg
ICAgICAgICB0ZXh0OiBbCi0gICAgICAgICAgICAgICAgICAgICIyMDExLTA3LTEzIDA0OjM4OjQ2
LDMxNSAxMTI0NyBtYW5hZ2VyLnB5Ojc4MCBXQVJOSU5HIEV4aXRpbmcgZWFybHkgYWZ0ZXIgMjAg
Y3Jhc2hlcyBhbmQgMCB0aW1lb3V0cy4gMjI1MSB0ZXN0cyBydW4uIiwgCi0gICAgICAgICAgICAg
ICAgICAgICIyMCBmYWlsZWQiCi0gICAgICAgICAgICAgICAgXSwgCi0gICAgICAgICAgICAgICAg
dGltZXM6IFsKLSAgICAgICAgICAgICAgICAgICAgMTMxMDU1NzExNS43OTMwODIsIAotICAgICAg
ICAgICAgICAgICAgICAxMzEwNTU3MTE5LjgzMjEwNAotICAgICAgICAgICAgICAgIF0KLSAgICAg
ICAgICAgIH0sIAotICAgICAgICBdLAotICAgIH07Ci0KLSAgICBydW5HZXROdW1iZXJPZkZhaWxp
bmdUZXN0c1Rlc3QoanNvbkRhdGEsIGZ1bmN0aW9uKGZhaWx1cmVDb3VudCwgdG9vTWFueUZhaWx1
cmVzKSB7Ci0gICAgICAgIGVxdWFsKGZhaWx1cmVDb3VudCwgMjApOwotICAgICAgICBlcXVhbCh0
b29NYW55RmFpbHVyZXMsIHRydWUpOwotICAgIH0pOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29s
cy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3NjcmlwdHMvRmFpbGluZ1Rlc3RzQnVnRm9ybS5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
SVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L3NjcmlwdHMvRmFpbGluZ1Rlc3RzQnVnRm9ybS5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9v
bHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9zY3JpcHRzL0ZhaWxpbmdUZXN0c0J1Z0Zvcm0uanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwx
MjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIEZhaWxpbmdUZXN0c0J1Z0Zvcm0odGVz
dGVyLCBmYWlsaW5nQnVpbGROYW1lLCBwYXNzaW5nQnVpbGROYW1lLCBmYWlsaW5nVGVzdHMpIHsK
LSAgICBUZXN0UmVsYXRlZEJ1Z0Zvcm0uY2FsbCh0aGlzLCB0ZXN0ZXIpOwotCi0gICAgdGhpcy5f
ZmFpbGluZ0J1aWxkTmFtZSA9IGZhaWxpbmdCdWlsZE5hbWU7Ci0gICAgdGhpcy5fcGFzc2luZ0J1
aWxkTmFtZSA9IHBhc3NpbmdCdWlsZE5hbWU7Ci0gICAgdGhpcy5fZmFpbGluZ1Rlc3RzID0gZmFp
bGluZ1Rlc3RzOwotCi0gICAgdGhpcy5kZXNjcmlwdGlvbiA9IHRoaXMuX2NyZWF0ZUJ1Z0Rlc2Ny
aXB0aW9uKCk7Ci0gICAgLy8gRklYTUU6IFdoZW4gYSBuZXdseS1hZGRlZCB0ZXN0IGhhcyBiZWVu
IGZhaWxpbmcgc2luY2UgaXRzIGludHJvZHVjdGlvbiwgaXQgaXNuJ3QgcmVhbGx5IGEKLSAgICAv
LyAicmVncmVzc2lvbiIuIFdlIHNob3VsZCB1c2UgZGlmZmVyZW50IGtleXdvcmRzIGluIHRoYXQg
Y2FzZS4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNjE2NDU+Ci0gICAgdGhpcy5rZXl3b3JkcyArPSAn
LCAnICsgV2ViS2l0QnVnemlsbGEuS2V5d29yZC5SZWdyZXNzaW9uOwotICAgIHRoaXMudGl0bGUg
PSB0aGlzLl9jcmVhdGVCdWdUaXRsZSgpOwotICAgIHRoaXMudXJsID0gdGhpcy5fZmFpbGluZ1Jl
c3VsdHNIVE1MVVJMKCk7Ci19Ci0KLUZhaWxpbmdUZXN0c0J1Z0Zvcm0ucHJvdG90eXBlID0gewot
ICAgIF9jcmVhdGVCdWdEZXNjcmlwdGlvbjogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBmaXJz
dFN1c3BlY3RSZXZpc2lvbiA9IHRoaXMuX3Bhc3NpbmdSZXZpc2lvbigpID8gdGhpcy5fcGFzc2lu
Z1JldmlzaW9uKCkgKyAxIDogdGhpcy5fZmFpbGluZ1JldmlzaW9uKCk7Ci0gICAgICAgIHZhciBs
YXN0U3VzcGVjdFJldmlzaW9uID0gdGhpcy5fZmFpbGluZ1JldmlzaW9uKCk7Ci0KLSAgICAgICAg
dmFyIGVuZE9mRmlyc3RTZW50ZW5jZTsKLSAgICAgICAgaWYgKHRoaXMuX3Bhc3NpbmdCdWlsZE5h
bWUpIHsKLSAgICAgICAgICAgIGVuZE9mRmlyc3RTZW50ZW5jZSA9ICdzdGFydGVkIGZhaWxpbmcg
b24gJyArIHRoaXMuX3Rlc3Rlci5uYW1lOwotICAgICAgICAgICAgaWYgKGZpcnN0U3VzcGVjdFJl
dmlzaW9uID09PSBsYXN0U3VzcGVjdFJldmlzaW9uKQotICAgICAgICAgICAgICAgIGVuZE9mRmly
c3RTZW50ZW5jZSArPSAnIGluIHInICsgZmlyc3RTdXNwZWN0UmV2aXNpb24gKyAnIDwnICsgdHJh
Yy5jaGFuZ2VzZXRVUkwoZmlyc3RTdXNwZWN0UmV2aXNpb24pICsgJz4nOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIGVuZE9mRmlyc3RTZW50ZW5jZSArPSAnIGJldHdlZW4gcicg
KyBmaXJzdFN1c3BlY3RSZXZpc2lvbiArICcgYW5kIHInICsgbGFzdFN1c3BlY3RSZXZpc2lvbiAr
ICcgKGluY2x1c2l2ZSknOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGVuZE9mRmlyc3RT
ZW50ZW5jZSA9ICh0aGlzLl9mYWlsaW5nVGVzdHMubGVuZ3RoID09PSAxID8gJ2hhcycgOiAnaGF2
ZScpICsgJyBiZWVuIGZhaWxpbmcgb24gJyArIHRoaXMuX3Rlc3Rlci5uYW1lICsgJyBzaW5jZSBh
dCBsZWFzdCByJyArIGZpcnN0U3VzcGVjdFJldmlzaW9uICsgJyA8JyArIHRyYWMuY2hhbmdlc2V0
VVJMKGZpcnN0U3VzcGVjdFJldmlzaW9uKSArICc+JzsKLSAgICAgICAgdmFyIGRlc2NyaXB0aW9u
OwotICAgICAgICBpZiAodGhpcy5fZmFpbGluZ1Rlc3RzLmxlbmd0aCA9PT0gMSkKLSAgICAgICAg
ICAgIGRlc2NyaXB0aW9uID0gdGhpcy5fZmFpbGluZ1Rlc3RzWzBdICsgJyAnICsgZW5kT2ZGaXJz
dFNlbnRlbmNlICsgJy5cblxuJzsKLSAgICAgICAgZWxzZSBpZiAodGhpcy5fZmFpbGluZ1Rlc3Rz
Lmxlbmd0aCA9PT0gMikKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGhpcy5fZmFpbGluZ1Rl
c3RzLmpvaW4oJyBhbmQgJykgKyAnICcgKyBlbmRPZkZpcnN0U2VudGVuY2UgKyAnLlxuXG4nOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gJ1RoZSBmb2xsb3dpbmcg
dGVzdHMgJyArIGVuZE9mRmlyc3RTZW50ZW5jZSArICc6XG5cbicKLSAgICAgICAgICAgICAgICAr
IHRoaXMuX2ZhaWxpbmdUZXN0cy5tYXAoZnVuY3Rpb24odGVzdCkgeyByZXR1cm4gJyAgICAnICsg
dGVzdCB9KS5qb2luKCdcbicpCi0gICAgICAgICAgICAgICAgKyAnXG5cbic7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGZpcnN0U3VzcGVjdFJldmlzaW9uICE9PSBsYXN0U3VzcGVjdFJldmlzaW9u
KQotICAgICAgICAgICAgZGVzY3JpcHRpb24gKz0gdHJhYy5sb2dVUkwoJ3RydW5rJywgZmlyc3RT
dXNwZWN0UmV2aXNpb24sIGxhc3RTdXNwZWN0UmV2aXNpb24pICsgJ1xuXG4nOwotICAgICAgICBp
ZiAodGhpcy5fcGFzc2luZ0J1aWxkTmFtZSkKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uICs9IHRo
aXMuX3Rlc3Rlci5yZXN1bHRzUGFnZVVSTCh0aGlzLl9wYXNzaW5nQnVpbGROYW1lKSArICcgcGFz
c2VkXG4nOwotICAgICAgICBkZXNjcmlwdGlvbiArPSB0aGlzLl9mYWlsaW5nUmVzdWx0c0hUTUxV
UkwoKSArICcgZmFpbGVkXG4nOwotCi0gICAgICAgIHJldHVybiBkZXNjcmlwdGlvbjsKLSAgICB9
LAotCi0gICAgX2NyZWF0ZUJ1Z1RpdGxlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgLy8gRklYTUU6
IFdoZW4gYSBuZXdseS1hZGRlZCB0ZXN0IGhhcyBiZWVuIGZhaWxpbmcgc2luY2UgaXRzIGludHJv
ZHVjdGlvbiwgaXQgaXNuJ3QgcmVhbGx5IGEKLSAgICAgICAgLy8gInJlZ3Jlc3Npb24iLiBXZSBz
aG91bGQgdXNlIGEgZGlmZmVyZW50IHRpdGxlIGluIHRoYXQgY2FzZS4gPGh0dHA6Ly93ZWJraXQu
b3JnL2IvNjE2NDU+Ci0KLSAgICAgICAgdmFyIHRpdGxlUHJlZml4ID0gJ1JFR1JFU1NJT04gKCcg
KyB0aGlzLl9yZWdyZXNzaW9uUmFuZ2VTdHJpbmcoKSArICcpOiAnOwotICAgICAgICB2YXIgdGl0
bGVTdWZmaXggPSAnIGZhaWxpbmcgb24gJyArIHRoaXMuX3Rlc3Rlci5uYW1lOwotICAgICAgICB2
YXIgdGl0bGUgPSB0aXRsZVByZWZpeCArIHRoaXMuX2ZhaWxpbmdUZXN0cy5qb2luKCcsICcpICsg
dGl0bGVTdWZmaXg7Ci0KLSAgICAgICAgaWYgKHRpdGxlLmxlbmd0aCA8PSBidWd6aWxsYS5rTWF4
aW11bUJ1Z1RpdGxlTGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIHRpdGxlOwotCi0gICAgICAg
IHZhciBwYXRoUHJlZml4ID0gbG9uZ2VzdENvbW1vblBhdGhQcmVmaXgodGhpcy5fZmFpbGluZ1Rl
c3RzKTsKLSAgICAgICAgaWYgKHBhdGhQcmVmaXgpIHsKLSAgICAgICAgICAgIHRpdGxlID0gdGl0
bGVQcmVmaXggKyB0aGlzLl9mYWlsaW5nVGVzdHMubGVuZ3RoICsgJyAnICsgcGF0aFByZWZpeCAr
ICcgdGVzdHMnICsgdGl0bGVTdWZmaXg7Ci0gICAgICAgICAgICBpZiAodGl0bGUubGVuZ3RoIDw9
IGJ1Z3ppbGxhLmtNYXhpbXVtQnVnVGl0bGVMZW5ndGgpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHRpdGxlOwotICAgICAgICB9Ci0KLSAgICAgICAgdGl0bGUgPSB0aXRsZVByZWZpeCArIHRoaXMu
X2ZhaWxpbmdUZXN0cy5sZW5ndGggKyAnIHRlc3RzJyArIHRpdGxlU3VmZml4OwotCi0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRpdGxlLmxlbmd0aCA8PSBidWd6aWxsYS5rTWF4aW11bUJ1Z1RpdGxl
TGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIHRpdGxlOwotICAgIH0sCi0KLSAgICBfZmFpbGluZ1Jl
c3VsdHNIVE1MVVJMOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Rlc3Rlci5y
ZXN1bHRzUGFnZVVSTCh0aGlzLl9mYWlsaW5nQnVpbGROYW1lKTsKLSAgICB9LAotCi0gICAgX2Zh
aWxpbmdSZXZpc2lvbjogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90ZXN0ZXIu
YnVpbGRib3QucGFyc2VCdWlsZE5hbWUodGhpcy5fZmFpbGluZ0J1aWxkTmFtZSkucmV2aXNpb247
Ci0gICAgfSwKLQotICAgIF9wYXNzaW5nUmV2aXNpb246IGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAoIXRoaXMuX3Bhc3NpbmdCdWlsZE5hbWUpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX3Rlc3Rlci5idWlsZGJvdC5wYXJzZUJ1aWxkTmFtZSh0aGlzLl9w
YXNzaW5nQnVpbGROYW1lKS5yZXZpc2lvbjsKLSAgICB9LAotCi0gICAgX3JlZ3Jlc3Npb25SYW5n
ZVN0cmluZzogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBmYWlsaW5nUmV2aXNpb24gPSB0aGlz
Ll9mYWlsaW5nUmV2aXNpb24oKTsKLSAgICAgICAgdmFyIHBhc3NpbmdSZXZpc2lvbiA9IHRoaXMu
X3Bhc3NpbmdSZXZpc2lvbigpOwotICAgICAgICBpZiAoIXBhc3NpbmdSZXZpc2lvbiB8fCBmYWls
aW5nUmV2aXNpb24gLSBwYXNzaW5nUmV2aXNpb24gPD0gMSkKLSAgICAgICAgICAgIHJldHVybiAn
cicgKyBmYWlsaW5nUmV2aXNpb247Ci0gICAgICAgIHJldHVybiAncicgKyBwYXNzaW5nUmV2aXNp
b24gKyAnLXInICsgZmFpbGluZ1JldmlzaW9uOwotICAgIH0sCi19OwotCi1GYWlsaW5nVGVzdHNC
dWdGb3JtLnByb3RvdHlwZS5fX3Byb3RvX18gPSBUZXN0UmVsYXRlZEJ1Z0Zvcm0ucHJvdG90eXBl
OwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0ZhaWxpbmdUZXN0c0J1Z0Zvcm1fdW5pdHRlc3RzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GYWlsaW5nVGVzdHNCdWdGb3JtX3VuaXR0
ZXN0cy5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0ZhaWxpbmdUZXN0
c0J1Z0Zvcm1fdW5pdHRlc3RzLmpzCShub25leGlzdGVudCkKQEAgLTEsMTYwICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0oZnVuY3Rpb24oKSB7Ci0KLW1vZHVsZSgnRmFpbGluZ1Rlc3RzQnVnRm9ybScp
OwotCi1mdW5jdGlvbiBjcmVhdGVUZXN0Rm9ybSh0ZXN0ZXJOYW1lLCBmYWlsaW5nQnVpbGROYW1l
LCBwYXNzaW5nQnVpbGROYW1lLCBmYWlsaW5nVGVzdHMpIHsKLSAgICB2YXIgbW9ja0J1aWxkYm90
ID0ge307Ci0gICAgbW9ja0J1aWxkYm90LnBhcnNlQnVpbGROYW1lID0gZnVuY3Rpb24oYnVpbGRO
YW1lKSB7Ci0gICAgICAgIHZhciBtYXRjaCA9IC8oXGQrKS8uZXhlYyhidWlsZE5hbWUpOwotICAg
ICAgICByZXR1cm4gewotICAgICAgICAgICAgcmV2aXNpb246IHBhcnNlSW50KG1hdGNoWzFdLCAx
MCksCi0gICAgICAgICAgICBidWlsZE51bWJlcjogcGFyc2VJbnQobWF0Y2hbMl0sIDEwKSwKLSAg
ICAgICAgfTsKLSAgICB9OwotCi0gICAgdmFyIG1vY2tCdWlsZGVyID0ge307Ci0gICAgbW9ja0J1
aWxkZXIubmFtZSA9IHRlc3Rlck5hbWU7Ci0gICAgbW9ja0J1aWxkZXIuYnVpbGRib3QgPSBtb2Nr
QnVpbGRib3Q7Ci0gICAgbW9ja0J1aWxkZXIucmVzdWx0c1BhZ2VVUkwgPSBmdW5jdGlvbihidWls
ZE5hbWUpIHsKLSAgICAgICAgcmV0dXJuICdbUkVTVUxUUyBQQUdFIFVSTCAnICsgdGhpcy5uYW1l
ICsgJywgJyArIGJ1aWxkTmFtZSArICddJzsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV3IEZhaWxp
bmdUZXN0c0J1Z0Zvcm0obW9ja0J1aWxkZXIsIGZhaWxpbmdCdWlsZE5hbWUsIHBhc3NpbmdCdWls
ZE5hbWUsIGZhaWxpbmdUZXN0cyk7Ci19Ci0KLXRlc3QoJ2tleXdvcmRzIGFyZSBzZXQnLCAxLCBm
dW5jdGlvbigpIHsKLSAgICB2YXIgZm9ybSA9IGNyZWF0ZVRlc3RGb3JtKCdXaW5kb3dzIDcgUmVs
ZWFzZSAoVGVzdHMpJywgJ3IxMCAoNSknLCAncjggKDIpJywgWydjc3MxL2Jhc2ljL2NsYXNzX2Fz
X3NlbGVjdG9yLmh0bWwnXSk7Ci0KLSAgICBkZWVwRXF1YWwoZm9ybS5rZXl3b3Jkcy5zcGxpdCgn
LCAnKSwgW1dlYktpdEJ1Z3ppbGxhLktleXdvcmQuTGF5b3V0VGVzdEZhaWx1cmUsIFdlYktpdEJ1
Z3ppbGxhLktleXdvcmQuTWFraW5nQm90c1JlZCwgV2ViS2l0QnVnemlsbGEuS2V5d29yZC5SZWdy
ZXNzaW9uXSk7Ci19KTsKLQotY29uc3QgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgZmFp
bGluZ0J1aWxkTmFtZTogJ3IxMCAoNSknLAotICAgICAgICBmYWlsaW5nVGVzdHM6IFsKLSAgICAg
ICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwnLAotICAgICAgICBdLAot
ICAgICAgICBleHBlY3RlZERlc2NyaXB0aW9uOiAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rv
ci5odG1sIGhhcyBiZWVuIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSBzaW5j
ZSBhdCBsZWFzdCByMTAgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEwPi5cblxu
W1JFU1VMVFMgUEFHRSBVUkwgV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSwgcjEwICg1KV0gZmFp
bGVkXG4nLAotICAgICAgICBleHBlY3RlZFRpdGxlOiAnUkVHUkVTU0lPTiAocjEwKTogY3NzMS9i
YXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2Ug
KFRlc3RzKScsCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIGZhaWxpbmdCdWlsZE5hbWU6ICdyMTAg
KDUpJywKLSAgICAgICAgcGFzc2luZ0J1aWxkTmFtZTogJ3I5ICgzKScsCi0gICAgICAgIGZhaWxp
bmdUZXN0czogWwotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRt
bCcsCi0gICAgICAgIF0sCi0gICAgICAgIGV4cGVjdGVkRGVzY3JpcHRpb246ICdjc3MxL2Jhc2lj
L2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgc3RhcnRlZCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxl
YXNlIChUZXN0cykgaW4gcjEwIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMD4u
XG5cbltSRVNVTFRTIFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHI5ICgzKV0g
cGFzc2VkXG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByMTAg
KDUpXSBmYWlsZWRcbicsCi0gICAgICAgIGV4cGVjdGVkVGl0bGU6ICdSRUdSRVNTSU9OIChyMTAp
OiBjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgZmFpbGluZyBvbiBXaW5kb3dzIDcg
UmVsZWFzZSAoVGVzdHMpJywKLSAgICB9LAotICAgIHsKLSAgICAgICAgZmFpbGluZ0J1aWxkTmFt
ZTogJ3IxMCAoNSknLAotICAgICAgICBwYXNzaW5nQnVpbGROYW1lOiAncjggKDIpJywKLSAgICAg
ICAgZmFpbGluZ1Rlc3RzOiBbCi0gICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxl
Y3Rvci5odG1sJywKLSAgICAgICAgXSwKLSAgICAgICAgZXhwZWN0ZWREZXNjcmlwdGlvbjogJ2Nz
czEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCBzdGFydGVkIGZhaWxpbmcgb24gV2luZG93
cyA3IFJlbGVhc2UgKFRlc3RzKSBiZXR3ZWVuIHI5IGFuZCByMTAgKGluY2x1c2l2ZSkuXG5cbmh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvbG9nL3RydW5rP3Jldj0xMCZzdG9wX3Jldj05JmxpbWl0PTNc
blxuW1JFU1VMVFMgUEFHRSBVUkwgV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSwgcjggKDIpXSBw
YXNzZWRcbltSRVNVTFRTIFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHIxMCAo
NSldIGZhaWxlZFxuJywKLSAgICAgICAgZXhwZWN0ZWRUaXRsZTogJ1JFR1JFU1NJT04gKHI4LXIx
MCk6IGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCBmYWlsaW5nIG9uIFdpbmRvd3Mg
NyBSZWxlYXNlIChUZXN0cyknLAotICAgIH0sCi0gICAgewotICAgICAgICBmYWlsaW5nQnVpbGRO
YW1lOiAncjEwICg1KScsCi0gICAgICAgIHBhc3NpbmdCdWlsZE5hbWU6ICdyOCAoMiknLAotICAg
ICAgICBmYWlsaW5nVGVzdHM6IFsKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3Nl
bGVjdG9yLmh0bWwnLAotICAgICAgICAgICAgJ2Zhc3QvY3NzL2V4LWFmdGVyLWZvbnQtdmFyaWFu
dC5odG1sJywKLSAgICAgICAgXSwKLSAgICAgICAgZXhwZWN0ZWREZXNjcmlwdGlvbjogJ2NzczEv
YmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCBhbmQgZmFzdC9jc3MvZXgtYWZ0ZXItZm9udC12
YXJpYW50Lmh0bWwgc3RhcnRlZCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cykg
YmV0d2VlbiByOSBhbmQgcjEwIChpbmNsdXNpdmUpLlxuXG5odHRwOi8vdHJhYy53ZWJraXQub3Jn
L2xvZy90cnVuaz9yZXY9MTAmc3RvcF9yZXY9OSZsaW1pdD0zXG5cbltSRVNVTFRTIFBBR0UgVVJM
IFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHI4ICgyKV0gcGFzc2VkXG5bUkVTVUxUUyBQQUdF
IFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByMTAgKDUpXSBmYWlsZWRcbicsCi0gICAg
ICAgIGV4cGVjdGVkVGl0bGU6ICdSRUdSRVNTSU9OIChyOC1yMTApOiBjc3MxL2Jhc2ljL2NsYXNz
X2FzX3NlbGVjdG9yLmh0bWwsIGZhc3QvY3NzL2V4LWFmdGVyLWZvbnQtdmFyaWFudC5odG1sIGZh
aWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKScsCi0gICAgfSwKLSAgICB7Ci0gICAg
ICAgIGZhaWxpbmdCdWlsZE5hbWU6ICdyMTAgKDUpJywKLSAgICAgICAgcGFzc2luZ0J1aWxkTmFt
ZTogJ3I4ICgyKScsCi0gICAgICAgIGZhaWxpbmdUZXN0czogWwotICAgICAgICAgICAgJ2NzczEv
YmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IxLmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMv
Y2xhc3NfYXNfc2VsZWN0b3IyLmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3Nf
YXNfc2VsZWN0b3IzLmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2Vs
ZWN0b3I0Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I1
Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I2Lmh0bWwn
LAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I3Lmh0bWwnLAotICAg
ICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I4Lmh0bWwnLAotICAgICAgICBd
LAotICAgICAgICBleHBlY3RlZERlc2NyaXB0aW9uOiAnVGhlIGZvbGxvd2luZyB0ZXN0cyBzdGFy
dGVkIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSBiZXR3ZWVuIHI5IGFuZCBy
MTAgKGluY2x1c2l2ZSk6XG5cbiAgICBjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yMS5odG1s
XG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjIuaHRtbFxuICAgIGNzczEvYmFzaWMv
Y2xhc3NfYXNfc2VsZWN0b3IzLmh0bWxcbiAgICBjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9y
NC5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjUuaHRtbFxuICAgIGNzczEv
YmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I2Lmh0bWxcbiAgICBjc3MxL2Jhc2ljL2NsYXNzX2FzX3Nl
bGVjdG9yNy5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjguaHRtbFxuXG5o
dHRwOi8vdHJhYy53ZWJraXQub3JnL2xvZy90cnVuaz9yZXY9MTAmc3RvcF9yZXY9OSZsaW1pdD0z
XG5cbltSRVNVTFRTIFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHI4ICgyKV0g
cGFzc2VkXG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByMTAg
KDUpXSBmYWlsZWRcbicsCi0gICAgICAgIGV4cGVjdGVkVGl0bGU6ICdSRUdSRVNTSU9OIChyOC1y
MTApOiA4IGNzczEvYmFzaWMgdGVzdHMgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVz
dHMpJywKLSAgICB9LAotICAgIHsKLSAgICAgICAgZmFpbGluZ0J1aWxkTmFtZTogJ3IxMCAoNSkn
LAotICAgICAgICBwYXNzaW5nQnVpbGROYW1lOiAncjggKDIpJywKLSAgICAgICAgZmFpbGluZ1Rl
c3RzOiBbCi0gICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjEuaHRtbCcs
Ci0gICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjIuaHRtbCcsCi0gICAg
ICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjMuaHRtbCcsCi0gICAgICAgICAg
ICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjQuaHRtbCcsCi0gICAgICAgICAgICAnY3Nz
MS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjUuaHRtbCcsCi0gICAgICAgICAgICAnY3NzMS9iYXNp
Yy9jbGFzc19hc19zZWxlY3RvcjYuaHRtbCcsCi0gICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFz
c19hc19zZWxlY3RvcjcuaHRtbCcsCi0gICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19z
ZWxlY3RvcjguaHRtbCcsCi0gICAgICAgICAgICAnY3NzMS9jbGFzc19hc19zZWxlY3RvcjkuaHRt
bCcsCi0gICAgICAgIF0sCi0gICAgICAgIGV4cGVjdGVkVGl0bGU6ICdSRUdSRVNTSU9OIChyOC1y
MTApOiA5IGNzczEgdGVzdHMgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJywK
LSAgICB9LAotICAgIHsKLSAgICAgICAgZmFpbGluZ0J1aWxkTmFtZTogJ3IxMCAoNSknLAotICAg
ICAgICBwYXNzaW5nQnVpbGROYW1lOiAncjggKDIpJywKLSAgICAgICAgZmFpbGluZ1Rlc3RzOiBb
Ci0gICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjEuaHRtbCcsCi0gICAg
ICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjIuaHRtbCcsCi0gICAgICAgICAg
ICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjMuaHRtbCcsCi0gICAgICAgICAgICAnY3Nz
MS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjQuaHRtbCcsCi0gICAgICAgICAgICAnY3NzMS9iYXNp
Yy9jbGFzc19hc19zZWxlY3RvcjUuaHRtbCcsCi0gICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFz
c19hc19zZWxlY3RvcjYuaHRtbCcsCi0gICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19z
ZWxlY3RvcjcuaHRtbCcsCi0gICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rv
cjguaHRtbCcsCi0gICAgICAgICAgICAnY3NzMS9jbGFzc19hc19zZWxlY3RvcjkuaHRtbCcsCi0g
ICAgICAgICAgICAnZmFzdC9jc3MvZXgtYWZ0ZXItZm9udC12YXJpYW50Lmh0bWwnLAotICAgICAg
ICBdLAotICAgICAgICBleHBlY3RlZFRpdGxlOiAnUkVHUkVTU0lPTiAocjgtcjEwKTogMTAgdGVz
dHMgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJywKLSAgICB9LAotXTsKLQot
dGVzdCgndGl0bGVzJywgNywgZnVuY3Rpb24oKSB7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
ZXN0Q2FzZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIGZvcm0gPSBjcmVhdGVUZXN0Rm9y
bSgnV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKScsIHRlc3RDYXNlc1tpXS5mYWlsaW5nQnVpbGRO
YW1lLCB0ZXN0Q2FzZXNbaV0ucGFzc2luZ0J1aWxkTmFtZSwgdGVzdENhc2VzW2ldLmZhaWxpbmdU
ZXN0cyk7Ci0gICAgICAgIGVxdWFsKGZvcm0udGl0bGUsIHRlc3RDYXNlc1tpXS5leHBlY3RlZFRp
dGxlKTsKLSAgICB9Ci19KTsKLQotdGVzdCgnZGVzY3JpcHRpb25zJywgNSwgZnVuY3Rpb24oKSB7
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0Q2FzZXMubGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgaWYgKCEoJ2V4cGVjdGVkRGVzY3JpcHRpb24nIGluIHRlc3RDYXNlc1tpXSkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgdmFyIGZvcm0gPSBjcmVhdGVUZXN0Rm9ybSgnV2luZG93
cyA3IFJlbGVhc2UgKFRlc3RzKScsIHRlc3RDYXNlc1tpXS5mYWlsaW5nQnVpbGROYW1lLCB0ZXN0
Q2FzZXNbaV0ucGFzc2luZ0J1aWxkTmFtZSwgdGVzdENhc2VzW2ldLmZhaWxpbmdUZXN0cyk7Ci0g
ICAgICAgIGVxdWFsKGZvcm0uZGVzY3JpcHRpb24sIHRlc3RDYXNlc1tpXS5leHBlY3RlZERlc2Ny
aXB0aW9uKTsKLSAgICB9Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GbGFr
eUxheW91dFRlc3REZXRlY3Rvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvRmxh
a3lMYXlvdXRUZXN0RGV0ZWN0b3IuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy9GbGFreUxheW91dFRlc3REZXRlY3Rvci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDExNSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotZnVuY3Rpb24gRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IoKSB7
Ci0gICAgdGhpcy5fdGVzdHMgPSB7fTsKLSAgICB0aGlzLl9idWlsZENvdW50ID0gMDsKLX0KLQot
Rmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IucHJvdG90eXBlID0gewotICAgIGluY29ycG9yYXRlVGVz
dFJlc3VsdHM6IGZ1bmN0aW9uKGJ1aWxkTmFtZSwgZmFpbGluZ1Rlc3RzLCB0b29NYW55RmFpbHVy
ZXMpIHsKLSAgICAgICAgdmFyIG5ld0ZsYWt5VGVzdHMgPSBbXTsKLQotICAgICAgICBpZiAodG9v
TWFueUZhaWx1cmVzKSB7Ci0gICAgICAgICAgICAvLyBTb21ldGhpbmcgd2FzIGdvaW5nIGhvcnJp
Ymx5IHdyb25nIGR1cmluZyB0aGlzIHRlc3QgcnVuLiBXZSBzaG91bGRuJ3QgYXNzdW1lIHRoYXQg
YW55Ci0gICAgICAgICAgICAvLyBwYXNzZXMvZmFpbHVyZXMgYXJlIGR1ZSB0byBmbGFraW5lc3Mu
Ci0gICAgICAgICAgICByZXR1cm4gbmV3Rmxha3lUZXN0czsKLSAgICAgICAgfQotCi0gICAgICAg
ICsrdGhpcy5fYnVpbGRDb3VudDsKLQotICAgICAgICAvLyBSZWNvcmQgZmFpbGluZyB0ZXN0cy4K
LSAgICAgICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gZmFpbGluZ1Rlc3RzKSB7Ci0gICAgICAgICAg
ICBpZiAoISh0ZXN0TmFtZSBpbiB0aGlzLl90ZXN0cykpIHsKLSAgICAgICAgICAgICAgIGlmICh0
aGlzLl9idWlsZENvdW50ID4gdGhpcy5fbWF4aW11bUZhaWxPclBhc3NDb3VudCkgewotICAgICAg
ICAgICAgICAgICAgIC8vIFRoaXMgdGVzdCBoYXNuJ3QgZmFpbGVkIGluIHRoZSBfbWF4aW11bUZh
aWxPclBhc3NDb3VudCBtb3N0IHJlY2VudCBidWlsZHMsIHNvCi0gICAgICAgICAgICAgICAgICAg
Ly8gZG9uJ3QgY29uc2lkZXIgaXQgdG8gYmUgZmxha3kuIEluIGZhY3QsIHdlIGRvbid0IGhhdmUg
dG8gdHJhY2sgaXQgYXQgYWxsIQotICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdGhpcy5fdGVzdHNbdGVzdE5hbWVdID0gewot
ICAgICAgICAgICAgICAgICAgICBzdGF0ZTogdGhpcy5fc3RhdGVzLkxhc3RTZWVuRmFpbGluZywK
LSAgICAgICAgICAgICAgICAgICAgY291bnQ6IDAsCi0gICAgICAgICAgICAgICAgICAgIGhpc3Rv
cnk6IFtdLAotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IHZhciB0ZXN0RGF0YSA9IHRoaXMuX3Rlc3RzW3Rlc3ROYW1lXTsKLSAgICAgICAgICAgIHRlc3RE
YXRhLmhpc3RvcnkucHVzaCh7IGJ1aWxkOiBidWlsZE5hbWUsIHJlc3VsdDogZmFpbGluZ1Rlc3Rz
W3Rlc3ROYW1lXSB9KTsKLQotICAgICAgICAgICAgaWYgKHRlc3REYXRhLnN0YXRlID09PSB0aGlz
Ll9zdGF0ZXMuTGFzdFNlZW5GYWlsaW5nKSB7Ci0gICAgICAgICAgICAgICAgKyt0ZXN0RGF0YS5j
b3VudDsKLSAgICAgICAgICAgICAgICBpZiAodGVzdERhdGEuY291bnQgPiB0aGlzLl9tYXhpbXVt
RmFpbE9yUGFzc0NvdW50KQotICAgICAgICAgICAgICAgICAgICB0ZXN0RGF0YS5zdGF0ZSA9IHRo
aXMuX3N0YXRlcy5Ob3RGbGFreTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdERhdGEuc3Rh
dGUgPT09IHRoaXMuX3N0YXRlcy5MYXN0U2VlblBhc3NpbmcpIHsKLSAgICAgICAgICAgICAgICB0
ZXN0RGF0YS5zdGF0ZSA9IHRoaXMuX3N0YXRlcy5Qb3NzaWJseUZsYWt5OwotICAgICAgICAgICAg
ICAgIG5ld0ZsYWt5VGVzdHMucHVzaCh0ZXN0TmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBSZWNvcmQgcGFzc2luZyB0ZXN0cy4KLSAgICAgICAgZm9yICh2YXIg
dGVzdE5hbWUgaW4gdGhpcy5fdGVzdHMpIHsKLSAgICAgICAgICAgIGlmICh0ZXN0TmFtZSBpbiBm
YWlsaW5nVGVzdHMpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHZh
ciB0ZXN0RGF0YSA9IHRoaXMuX3Rlc3RzW3Rlc3ROYW1lXTsKLSAgICAgICAgICAgIHRlc3REYXRh
Lmhpc3RvcnkucHVzaCh7IGJ1aWxkOiBidWlsZE5hbWUsIHJlc3VsdDogeyBmYWlsdXJlVHlwZTog
J3Bhc3MnIH0gfSk7Ci0KLSAgICAgICAgICAgIGlmICh0ZXN0RGF0YS5zdGF0ZSA9PT0gdGhpcy5f
c3RhdGVzLkxhc3RTZWVuUGFzc2luZykgewotICAgICAgICAgICAgICAgICsrdGVzdERhdGEuY291
bnQ7Ci0gICAgICAgICAgICAgICAgaWYgKHRlc3REYXRhLmNvdW50ID4gdGhpcy5fbWF4aW11bUZh
aWxPclBhc3NDb3VudCkKLSAgICAgICAgICAgICAgICAgICAgdGVzdERhdGEuc3RhdGUgPSB0aGlz
Ll9zdGF0ZXMuTm90Rmxha3k7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHRlc3REYXRhLnN0YXRl
ID09PSB0aGlzLl9zdGF0ZXMuTGFzdFNlZW5GYWlsaW5nKSB7Ci0gICAgICAgICAgICAgICAgdGVz
dERhdGEuc3RhdGUgPSB0aGlzLl9zdGF0ZXMuTGFzdFNlZW5QYXNzaW5nOwotICAgICAgICAgICAg
ICAgIHRlc3REYXRhLmNvdW50ID0gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiBuZXdGbGFreVRlc3RzOwotICAgIH0sCi0KLSAgICBhbGxGYWlsdXJlczogZnVu
Y3Rpb24odGVzdE5hbWUpIHsKLSAgICAgICAgaWYgKCEodGVzdE5hbWUgaW4gdGhpcy5fdGVzdHMp
KQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMuX3Rlc3Rz
W3Rlc3ROYW1lXS5oaXN0b3J5LmZpbHRlcihmdW5jdGlvbihoaXN0b3J5SXRlbSkgeyByZXR1cm4g
aGlzdG9yeUl0ZW0ucmVzdWx0LmZhaWx1cmVUeXBlICE9PSAncGFzcycgfSk7Ci0gICAgfSwKLQot
ICAgIGdldCBwb3NzaWJseUZsYWt5VGVzdHMoKSB7Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsK
LSAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHNlbGYuX3Rlc3RzKS5maWx0ZXIoZnVuY3Rpb24o
dGVzdE5hbWUpIHsgcmV0dXJuIHNlbGYuX3Rlc3RzW3Rlc3ROYW1lXS5zdGF0ZSA9PT0gc2VsZi5f
c3RhdGVzLlBvc3NpYmx5Rmxha3kgfSk7Ci0gICAgfSwKLQotICAgIC8vIElmIGEgdGVzdCBoYXMg
cmVjZW50bHkgZmFpbGVkIG9yIHBhc3NlZCBtb3JlIHRoYW4gdGhpcyBudW1iZXIgb2YgdGltZXMg
aW4gYSByb3cgd2UgZG9uJ3QKLSAgICAvLyBjb25zaWRlciBpdCB0byBiZSBmbGFreS4KLSAgICBf
bWF4aW11bUZhaWxPclBhc3NDb3VudDogOSwKLQotICAgIF9zdGF0ZXM6IHsKLSAgICAgICAgTGFz
dFNlZW5GYWlsaW5nOiAwLAotICAgICAgICBMYXN0U2VlblBhc3Npbmc6IDEsCi0gICAgICAgIFBv
c3NpYmx5Rmxha3k6IDIsCi0gICAgICAgIE5vdEZsYWt5OiAzLAotICAgIH0sCi19OwpJbmRleDog
VG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zY3JpcHRzL0ZsYWt5TGF5b3V0VGVzdERldGVjdG9yX3VuaXR0ZXN0cy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3JfdW5pdHRl
c3RzLmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvRmxha3lMYXlvdXRU
ZXN0RGV0ZWN0b3JfdW5pdHRlc3RzLmpzCShub25leGlzdGVudCkKQEAgLTEsMTY4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0oZnVuY3Rpb24oKSB7Ci0KLW1vZHVsZSgnRmxha3lMYXlvdXRUZXN0RGV0
ZWN0b3InKTsKLQotY29uc3QgcnVucyA9IFsKLSAgICB7Ci0gICAgICAgIGJ1aWxkTmFtZTogJ2J1
aWxkNicsCi0gICAgICAgIGZhaWxpbmdUZXN0czogewotICAgICAgICAgICAgYjogJ2ZhaWwnLAot
ICAgICAgICB9LAotICAgICAgICB0b29NYW55RmFpbHVyZXM6IGZhbHNlLAotICAgIH0sCi0gICAg
ewotICAgICAgICBidWlsZE5hbWU6ICdidWlsZDUnLAotICAgICAgICBmYWlsaW5nVGVzdHM6IHsK
LSAgICAgICAgICAgIGE6ICdmYWlsJywKLSAgICAgICAgICAgIGI6ICdmYWlsJywKLSAgICAgICAg
fSwKLSAgICAgICAgdG9vTWFueUZhaWx1cmVzOiBmYWxzZSwKLSAgICB9LAotICAgIHsKLSAgICAg
ICAgYnVpbGROYW1lOiAnYnVpbGQ0JywKLSAgICAgICAgZmFpbGluZ1Rlc3RzOiB7Ci0gICAgICAg
ICAgICBiOiAnZmFpbCcsCi0gICAgICAgIH0sCi0gICAgICAgIHRvb01hbnlGYWlsdXJlczogZmFs
c2UsCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIGJ1aWxkTmFtZTogJ2J1aWxkMycsCi0gICAgICAg
IGZhaWxpbmdUZXN0czogewotICAgICAgICAgICAgYTogJ2NyYXNoJywKLSAgICAgICAgICAgIGI6
ICdmYWlsJywKLSAgICAgICAgfSwKLSAgICAgICAgdG9vTWFueUZhaWx1cmVzOiBmYWxzZSwKLSAg
ICB9LAotICAgIHsKLSAgICAgICAgYnVpbGROYW1lOiAnYnVpbGQyJywKLSAgICAgICAgZmFpbGlu
Z1Rlc3RzOiB7Ci0gICAgICAgICAgICBhOiAnZmFpbCcsCi0gICAgICAgIH0sCi0gICAgICAgIHRv
b01hbnlGYWlsdXJlczogZmFsc2UsCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIGJ1aWxkTmFtZTog
J2J1aWxkMScsCi0gICAgICAgIGZhaWxpbmdUZXN0czoge30sCi0gICAgICAgIHRvb01hbnlGYWls
dXJlczogZmFsc2UsCi0gICAgfSwKLV07Ci0KLXRlc3QoJ3Bvc3NpYmx5Rmxha3lUZXN0cycsIDEs
IGZ1bmN0aW9uKCkgewotICAgIHZhciBkZXRlY3RvciA9IG5ldyBGbGFreUxheW91dFRlc3REZXRl
Y3RvcigpOwotICAgIHJ1bnMuZm9yRWFjaChmdW5jdGlvbihydW4pIHsgZGV0ZWN0b3IuaW5jb3Jw
b3JhdGVUZXN0UmVzdWx0cyhydW4uYnVpbGROYW1lLCBydW4uZmFpbGluZ1Rlc3RzLCBydW4udG9v
TWFueUZhaWx1cmVzKSB9KTsKLQotICAgIGRlZXBFcXVhbChkZXRlY3Rvci5wb3NzaWJseUZsYWt5
VGVzdHMsIFsnYSddKTsKLX0pOwotCi10ZXN0KCdhbGxGYWlsdXJlcycsIDMsIGZ1bmN0aW9uKCkg
ewotICAgIHZhciBkZXRlY3RvciA9IG5ldyBGbGFreUxheW91dFRlc3REZXRlY3RvcigpOwotICAg
IHJ1bnMuZm9yRWFjaChmdW5jdGlvbihydW4pIHsgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVz
dWx0cyhydW4uYnVpbGROYW1lLCBydW4uZmFpbGluZ1Rlc3RzLCBydW4udG9vTWFueUZhaWx1cmVz
KSB9KTsKLQotICAgIGRlZXBFcXVhbChkZXRlY3Rvci5hbGxGYWlsdXJlcygnYScpLCBbCi0gICAg
ICAgIHsgYnVpbGQ6ICdidWlsZDUnLCByZXN1bHQ6ICdmYWlsJyB9LAotICAgICAgICB7IGJ1aWxk
OiAnYnVpbGQzJywgcmVzdWx0OiAnY3Jhc2gnIH0sCi0gICAgICAgIHsgYnVpbGQ6ICdidWlsZDIn
LCByZXN1bHQ6ICdmYWlsJyB9LAotICAgIF0pOwotCi0gICAgZGVlcEVxdWFsKGRldGVjdG9yLmFs
bEZhaWx1cmVzKCdiJyksIFsKLSAgICAgICAgeyBidWlsZDogJ2J1aWxkNicsIHJlc3VsdDogJ2Zh
aWwnIH0sCi0gICAgICAgIHsgYnVpbGQ6ICdidWlsZDUnLCByZXN1bHQ6ICdmYWlsJyB9LAotICAg
ICAgICB7IGJ1aWxkOiAnYnVpbGQ0JywgcmVzdWx0OiAnZmFpbCcgfSwKLSAgICAgICAgeyBidWls
ZDogJ2J1aWxkMycsIHJlc3VsdDogJ2ZhaWwnIH0sCi0gICAgXSk7Ci0KLSAgICBlcXVhbChkZXRl
Y3Rvci5hbGxGYWlsdXJlcygnYycpLCBudWxsKTsKLX0pOwotCi10ZXN0KCdmYWlsaW5nIG1hbnkg
dGltZXMgaW4gYSByb3cgc2hvdWxkIG5vdCBjb3VudCBhcyBmbGFreScsIDMsIGZ1bmN0aW9uKCkg
ewotICAgIHZhciBkZXRlY3RvciA9IG5ldyBGbGFreUxheW91dFRlc3REZXRlY3RvcigpOwotICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKLSAgICAgICAgZGV0ZWN0b3IuaW5jb3Jwb3Jh
dGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7IGE6ICdmYWlsJyB9LCBmYWxzZSk7Ci0KLSAgICBkZWVw
RXF1YWwoZGV0ZWN0b3IucG9zc2libHlGbGFreVRlc3RzLCBbXSk7Ci0KLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDM7ICsraSkKLSAgICAgICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0
cygnYnVpbGQnLCB7fSwgZmFsc2UpOwotCi0gICAgZGVlcEVxdWFsKGRldGVjdG9yLnBvc3NpYmx5
Rmxha3lUZXN0cywgW10pOwotCi0gICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygn
YnVpbGQnLCB7IGE6ICdmYWlsJyB9LCBmYWxzZSk7Ci0KLSAgICBkZWVwRXF1YWwoZGV0ZWN0b3Iu
cG9zc2libHlGbGFreVRlc3RzLCBbXSk7Ci19KTsKLQotdGVzdCgnZmFpbGluZyBhZnRlciBwYXNz
aW5nIG1hbnkgdGltZXMgaW4gYSByb3cgc2hvdWxkIG5vdCBjb3VudCBhcyBmbGFreScsIDMsIGZ1
bmN0aW9uKCkgewotICAgIHZhciBkZXRlY3RvciA9IG5ldyBGbGFreUxheW91dFRlc3REZXRlY3Rv
cigpOwotICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywgeyBhOiAn
ZmFpbCcgfSwgZmFsc2UpOwotCi0gICAgZGVlcEVxdWFsKGRldGVjdG9yLnBvc3NpYmx5Rmxha3lU
ZXN0cywgW10pOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKQotICAgICAgICBk
ZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHt9LCBmYWxzZSk7Ci0KLSAg
ICBkZWVwRXF1YWwoZGV0ZWN0b3IucG9zc2libHlGbGFreVRlc3RzLCBbXSk7Ci0KLSAgICBkZXRl
Y3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHsgYTogJ2ZhaWwnIH0sIGZhbHNl
KTsKLQotICAgIGRlZXBFcXVhbChkZXRlY3Rvci5wb3NzaWJseUZsYWt5VGVzdHMsIFtdKTsKLX0p
OwotCi10ZXN0KCdmbGFraW5nIG5vdyBzaG91bGQgb3ZlcnJpZGUgbWFueSBwYXN0IGZhaWx1cmVz
JywgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRldGVjdG9yID0gbmV3IEZsYWt5TGF5b3V0VGVz
dERldGVjdG9yKCk7Ci0gICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQn
LCB7IGE6ICdmYWlsJyB9LCBmYWxzZSk7Ci0gICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVz
dWx0cygnYnVpbGQnLCB7fSwgZmFsc2UpOwotICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJl
c3VsdHMoJ2J1aWxkJywgeyBhOiAnZmFpbCcgfSwgZmFsc2UpOwotICAgIGRldGVjdG9yLmluY29y
cG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywge30sIGZhbHNlKTsKLSAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDEwOyArK2kpCi0gICAgICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMo
J2J1aWxkJywgeyBhOiAnZmFpbCcgfSwgZmFsc2UpOwotICAgIGRlZXBFcXVhbChkZXRlY3Rvci5w
b3NzaWJseUZsYWt5VGVzdHMsIFsnYSddKTsKLX0pOwotCi10ZXN0KCdwYXNzaW5nIG5vdyBzaG91
bGQgb3ZlcnJpZGUgcGFzdCBmbGFraW5lc3MnLCAxLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZGV0
ZWN0b3IgPSBuZXcgRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IoKTsKLSAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDEwOyArK2kpCi0gICAgICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMo
J2J1aWxkJywge30sIGZhbHNlKTsKLSAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRz
KCdidWlsZCcsIHsgYTogJ2ZhaWwnIH0sIGZhbHNlKTsKLSAgICBkZXRlY3Rvci5pbmNvcnBvcmF0
ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHt9LCBmYWxzZSk7Ci0gICAgZGV0ZWN0b3IuaW5jb3Jwb3Jh
dGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7IGE6ICdmYWlsJyB9LCBmYWxzZSk7Ci0gICAgZGV0ZWN0
b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7fSwgZmFsc2UpOwotICAgIGRlZXBF
cXVhbChkZXRlY3Rvci5wb3NzaWJseUZsYWt5VGVzdHMsIFtdKTsKLX0pOwotCi10ZXN0KCd0b28g
bWFueSBmYWlsdXJlcyBub3cgc2hvdWxkIG5vdCBvdmVycmlkZSBwYXN0IGZsYWtpbmVzcycsIDEs
IGZ1bmN0aW9uKCkgewotICAgIHZhciBkZXRlY3RvciA9IG5ldyBGbGFreUxheW91dFRlc3REZXRl
Y3RvcigpOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKLSAgICAgICAgZGV0ZWN0
b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7fSwgdHJ1ZSk7Ci0gICAgZGV0ZWN0
b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7IGE6ICdmYWlsJyB9LCBmYWxzZSk7
Ci0gICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7fSwgZmFsc2Up
OwotICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywgeyBhOiAnZmFp
bCcgfSwgZmFsc2UpOwotICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxk
Jywge30sIGZhbHNlKTsKLSAgICBkZWVwRXF1YWwoZGV0ZWN0b3IucG9zc2libHlGbGFreVRlc3Rz
LCBbJ2EnXSk7Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GbGFreVRlc3RC
dWdGb3JtLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GbGFreVRlc3RCdWdGb3Jt
LmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvRmxha3lUZXN0QnVnRm9y
bS5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlv
biBGbGFreVRlc3RCdWdGb3JtKHRlc3RlciwgZmFpbGluZ0J1aWxkTmFtZXMsIGZhaWxpbmdUZXN0
LCBvbGRlc3RBbmFseXplZEJ1aWxkLCBuZXdlc3RBbmFseXplZEJ1aWxkLCBhbmFseXplZEJ1aWxk
Q291bnQpIHsKLSAgICBUZXN0UmVsYXRlZEJ1Z0Zvcm0uY2FsbCh0aGlzLCB0ZXN0ZXIpOwotCi0g
ICAgdGhpcy5fZmFpbGluZ0J1aWxkTmFtZXMgPSBmYWlsaW5nQnVpbGROYW1lczsKLSAgICB0aGlz
Ll9mYWlsaW5nVGVzdCA9IGZhaWxpbmdUZXN0OwotICAgIHRoaXMuX29sZGVzdEFuYWx5emVkQnVp
bGQgPSBvbGRlc3RBbmFseXplZEJ1aWxkOwotICAgIHRoaXMuX25ld2VzdEFuYWx5emVkQnVpbGQg
PSBuZXdlc3RBbmFseXplZEJ1aWxkOwotICAgIHRoaXMuX2FuYWx5emVkQnVpbGRDb3VudCA9IGFu
YWx5emVkQnVpbGRDb3VudDsKLQotICAgIHRoaXMuZGVzY3JpcHRpb24gPSB0aGlzLl9jcmVhdGVC
dWdEZXNjcmlwdGlvbigpOwotICAgIHRoaXMudGl0bGUgPSB0aGlzLl9jcmVhdGVCdWdUaXRsZSgp
OwotICAgIHRoaXMudXJsID0gdGhpcy5fdGVzdGVyLnJlc3VsdHNQYWdlVVJMKHRoaXMuX2ZhaWxp
bmdCdWlsZE5hbWVzWzBdKTsKLX0KLQotRmxha3lUZXN0QnVnRm9ybS5wcm90b3R5cGUgPSB7Ci0g
ICAgX2NyZWF0ZUJ1Z0Rlc2NyaXB0aW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHNlbGYg
PSB0aGlzOwotCi0gICAgICAgIHZhciByZXN1bHQgPSBzZWxmLl9mYWlsaW5nVGVzdAotICAgICAg
ICAgICAgKyAnIGZhaWxlZCAnICsgc2VsZi5fZmFpbGluZ0J1aWxkTmFtZXMubGVuZ3RoICsgJyBv
dXQgb2YgJyArIHNlbGYuX2FuYWx5emVkQnVpbGRDb3VudCArICcgdGltZXMnCi0gICAgICAgICAg
ICArICcgb24gJyArIHNlbGYuX3Rlc3Rlci5uYW1lCi0gICAgICAgICAgICArICcgYmV0d2VlbiBy
JyArIHNlbGYuX3Rlc3Rlci5idWlsZGJvdC5wYXJzZUJ1aWxkTmFtZShzZWxmLl9vbGRlc3RBbmFs
eXplZEJ1aWxkKS5yZXZpc2lvbgotICAgICAgICAgICAgKyAnIGFuZCByJyArIHNlbGYuX3Rlc3Rl
ci5idWlsZGJvdC5wYXJzZUJ1aWxkTmFtZShzZWxmLl9uZXdlc3RBbmFseXplZEJ1aWxkKS5yZXZp
c2lvbgotICAgICAgICAgICAgKyAnIChpbmNsdXNpdmUpLlxuXG4nOwotCi0gICAgICAgIHJlc3Vs
dCArPSAnRmFpbHVyZXM6XG5cbic7Ci0gICAgICAgIHJlc3VsdCArPSBzZWxmLl9mYWlsaW5nQnVp
bGROYW1lcy5tYXAoZnVuY3Rpb24oYnVpbGROYW1lKSB7Ci0gICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fdGVzdGVyLnJlc3VsdHNQYWdlVVJMKGJ1aWxkTmFtZSkgKyAnXG4nOwotICAgICAgICB9KS5q
b2luKCcnKTsKLQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0sCi0KLSAgICBfY3JlYXRl
QnVnVGl0bGU6IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gdGhpcy5fZmFpbGluZ1Rlc3Qg
KyAnIHNvbWV0aW1lcyBmYWlscyBvbiAnICsgdGhpcy5fdGVzdGVyLm5hbWU7Ci0gICAgfSwKLX07
Ci0KLUZsYWt5VGVzdEJ1Z0Zvcm0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFRlc3RSZWxhdGVkQnVn
Rm9ybS5wcm90b3R5cGU7CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvRmxha3lUZXN0QnVnRm9ybV91
bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0ZsYWt5VGVzdEJ1Z0Zv
cm1fdW5pdHRlc3RzLmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvRmxh
a3lUZXN0QnVnRm9ybV91bml0dGVzdHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw4NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotKGZ1bmN0aW9uKCkgewotCi1tb2R1bGUoJ0ZsYWt5VGVzdEJ1Z0Zvcm0n
KTsKLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZvcm0oZmFpbGluZ0J1aWxkTmFtZXMsIGZhaWxpbmdU
ZXN0LCBvbGRlc3RBbmFseXplZEJ1aWxkLCBuZXdlc3RBbmFseXplZEJ1aWxkLCBhbmFseXplZEJ1
aWxkQ291bnQpIHsKLSAgICB2YXIgbW9ja0J1aWxkYm90ID0ge307Ci0gICAgbW9ja0J1aWxkYm90
LnBhcnNlQnVpbGROYW1lID0gZnVuY3Rpb24oYnVpbGROYW1lKSB7Ci0gICAgICAgIHZhciBtYXRj
aCA9IC8oXGQrKS8uZXhlYyhidWlsZE5hbWUpOwotICAgICAgICByZXR1cm4gewotICAgICAgICAg
ICAgcmV2aXNpb246IHBhcnNlSW50KG1hdGNoWzFdLCAxMCksCi0gICAgICAgICAgICBidWlsZE51
bWJlcjogcGFyc2VJbnQobWF0Y2hbMl0sIDEwKSwKLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAg
dmFyIG1vY2tCdWlsZGVyID0ge307Ci0gICAgbW9ja0J1aWxkZXIubmFtZSA9ICdbQlVJTERFUiBO
QU1FXSc7Ci0gICAgbW9ja0J1aWxkZXIuYnVpbGRib3QgPSBtb2NrQnVpbGRib3Q7Ci0gICAgbW9j
a0J1aWxkZXIucmVzdWx0c1BhZ2VVUkwgPSBmdW5jdGlvbihidWlsZE5hbWUpIHsKLSAgICAgICAg
cmV0dXJuICdbUkVTVUxUUyBQQUdFIFVSTCAnICsgdGhpcy5uYW1lICsgJywgJyArIGJ1aWxkTmFt
ZSArICddJzsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV3IEZsYWt5VGVzdEJ1Z0Zvcm0obW9ja0J1
aWxkZXIsIGZhaWxpbmdCdWlsZE5hbWVzLCBmYWlsaW5nVGVzdCwgb2xkZXN0QW5hbHl6ZWRCdWls
ZCwgbmV3ZXN0QW5hbHl6ZWRCdWlsZCwgYW5hbHl6ZWRCdWlsZENvdW50KTsKLX0KLQotY29uc3Qg
dGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgb2xkZXN0QW5hbHl6ZWRCdWlsZDogJ3IxICgx
KScsCi0gICAgICAgIG5ld2VzdEFuYWx5emVkQnVpbGQ6ICdyMTUgKDgpJywKLSAgICAgICAgYW5h
bHl6ZWRCdWlsZENvdW50OiA4LAotICAgICAgICBmYWlsaW5nQnVpbGROYW1lczogWwotICAgICAg
ICAgICAgJ3IxMCAoNSknLAotICAgICAgICAgICAgJ3I4ICgyKScsCi0gICAgICAgIF0sCi0gICAg
ICAgIGZhaWxpbmdUZXN0OiAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sJywKLSAg
ICAgICAgZXhwZWN0ZWREZXNjcmlwdGlvbjogJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3Iu
aHRtbCBmYWlsZWQgMiBvdXQgb2YgOCB0aW1lcyBvbiBbQlVJTERFUiBOQU1FXSBiZXR3ZWVuIHIx
IGFuZCByMTUgKGluY2x1c2l2ZSkuXG5cbkZhaWx1cmVzOlxuXG5bUkVTVUxUUyBQQUdFIFVSTCBb
QlVJTERFUiBOQU1FXSwgcjEwICg1KV1cbltSRVNVTFRTIFBBR0UgVVJMIFtCVUlMREVSIE5BTUVd
LCByOCAoMildXG4nLAotICAgICAgICBleHBlY3RlZFRpdGxlOiAnY3NzMS9iYXNpYy9jbGFzc19h
c19zZWxlY3Rvci5odG1sIHNvbWV0aW1lcyBmYWlscyBvbiBbQlVJTERFUiBOQU1FXScsCi0gICAg
ICAgIGV4cGVjdGVkVVJMOiAnW1JFU1VMVFMgUEFHRSBVUkwgW0JVSUxERVIgTkFNRV0sIHIxMCAo
NSldJywKLSAgICB9LAotXTsKLQotdGVzdCgndGl0bGVzJywgMSwgZnVuY3Rpb24oKSB7Ci0gICAg
dGVzdENhc2VzLmZvckVhY2goZnVuY3Rpb24odGVzdENhc2UpIHsKLSAgICAgICAgdmFyIGZvcm0g
PSBjcmVhdGVUZXN0Rm9ybSh0ZXN0Q2FzZS5mYWlsaW5nQnVpbGROYW1lcywgdGVzdENhc2UuZmFp
bGluZ1Rlc3QsIHRlc3RDYXNlLm9sZGVzdEFuYWx5emVkQnVpbGQsIHRlc3RDYXNlLm5ld2VzdEFu
YWx5emVkQnVpbGQsIHRlc3RDYXNlLmFuYWx5emVkQnVpbGRDb3VudCk7Ci0gICAgICAgIGVxdWFs
KGZvcm0udGl0bGUsIHRlc3RDYXNlLmV4cGVjdGVkVGl0bGUpOwotICAgIH0pOwotfSk7Ci0KLXRl
c3QoJ2Rlc2NyaXB0aW9ucycsIDEsIGZ1bmN0aW9uKCkgewotICAgIHRlc3RDYXNlcy5mb3JFYWNo
KGZ1bmN0aW9uKHRlc3RDYXNlKSB7Ci0gICAgICAgIHZhciBmb3JtID0gY3JlYXRlVGVzdEZvcm0o
dGVzdENhc2UuZmFpbGluZ0J1aWxkTmFtZXMsIHRlc3RDYXNlLmZhaWxpbmdUZXN0LCB0ZXN0Q2Fz
ZS5vbGRlc3RBbmFseXplZEJ1aWxkLCB0ZXN0Q2FzZS5uZXdlc3RBbmFseXplZEJ1aWxkLCB0ZXN0
Q2FzZS5hbmFseXplZEJ1aWxkQ291bnQpOwotICAgICAgICBlcXVhbChmb3JtLmRlc2NyaXB0aW9u
LCB0ZXN0Q2FzZS5leHBlY3RlZERlc2NyaXB0aW9uKTsKLSAgICB9KTsKLX0pOwotCi10ZXN0KCdV
UkxzJywgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdGVzdENhc2VzLmZvckVhY2goZnVuY3Rpb24odGVz
dENhc2UpIHsKLSAgICAgICAgdmFyIGZvcm0gPSBjcmVhdGVUZXN0Rm9ybSh0ZXN0Q2FzZS5mYWls
aW5nQnVpbGROYW1lcywgdGVzdENhc2UuZmFpbGluZ1Rlc3QsIHRlc3RDYXNlLm9sZGVzdEFuYWx5
emVkQnVpbGQsIHRlc3RDYXNlLm5ld2VzdEFuYWx5emVkQnVpbGQsIHRlc3RDYXNlLmFuYWx5emVk
QnVpbGRDb3VudCk7Ci0gICAgICAgIGVxdWFsKGZvcm0udXJsLCB0ZXN0Q2FzZS5leHBlY3RlZFVS
TCk7Ci0gICAgfSk7Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9MYXlvdXRU
ZXN0SGlzdG9yeUFuYWx5emVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9MYXlv
dXRUZXN0SGlzdG9yeUFuYWx5emVyLmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvTGF5b3V0VGVzdEhpc3RvcnlBbmFseXplci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE4
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotZnVuY3Rpb24gTGF5b3V0VGVzdEhpc3RvcnlBbmFseXpl
cihidWlsZGVyKSB7Ci0gICAgdGhpcy5fYnVpbGRlciA9IGJ1aWxkZXI7Ci0gICAgdGhpcy5fZmxh
a2luZXNzRGV0ZWN0b3IgPSBuZXcgRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IoKTsKLSAgICB0aGlz
Ll9oaXN0b3J5ID0ge307Ci0gICAgdGhpcy5fbG9hZGVyID0gbmV3IExheW91dFRlc3RSZXN1bHRz
TG9hZGVyKGJ1aWxkZXIpOwotICAgIHRoaXMuX3Rlc3RSdW5zU2luY2VMYXN0SW50ZXJlc3RpbmdD
aGFuZ2UgPSAwOwotfQotCi1MYXlvdXRUZXN0SGlzdG9yeUFuYWx5emVyLnByb3RvdHlwZSA9IHsK
LSAgICAvKgotICAgICAqIFBlcmlvZGljYWxseSBjYWxscyBjYWxsYmFjayB1bnRpbCBhbGwgY3Vy
cmVudCBmYWlsdXJlcyBoYXZlIGJlZW4gZXhwbGFpbmVkLiBDYWxsYmFjayBpcwotICAgICAqIHBh
c3NlZCBhbiBvYmplY3QgbGlrZSB0aGUgZm9sbG93aW5nOgotICAgICAqIHsKLSAgICAgKiAgICAg
J2hpc3RvcnknOiB7Ci0gICAgICogICAgICAgICAncjEyMzQ3ICg2ODEpJzogewotICAgICAqICAg
ICAgICAgICAgICd0b29NYW55RmFpbHVyZXMnOiBmYWxzZSwKLSAgICAgKiAgICAgICAgICAgICAn
dGVzdHMnOiB7Ci0gICAgICogICAgICAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3Nl
bGVjdG9yMi5odG1sJzogJ2ZhaWwnLAotICAgICAqICAgICAgICAgICAgIH0sCi0gICAgICogICAg
ICAgICB9LAotICAgICAqICAgICAgICAgJ3IxMjM0NiAoNjgwKSc6IHsKLSAgICAgKiAgICAgICAg
ICAgICAndG9vTWFueUZhaWx1cmVzJzogZmFsc2UsCi0gICAgICogICAgICAgICAgICAgJ3Rlc3Rz
Jzoge30sCi0gICAgICogICAgICAgICB9LAotICAgICAqICAgICAgICAgJ3IxMjM0NSAoNjc5KSc6
IHsKLSAgICAgKiAgICAgICAgICAgICAndG9vTWFueUZhaWx1cmVzJzogZmFsc2UsCi0gICAgICog
ICAgICAgICAgICAgJ3Rlc3RzJzogewotICAgICAqICAgICAgICAgICAgICAgICAnY3NzMS9iYXNp
Yy9jbGFzc19hc19zZWxlY3Rvci5odG1sJzogJ2NyYXNoJywKLSAgICAgKiAgICAgICAgICAgICB9
LAotICAgICAqICAgICAgICAgfSwKLSAgICAgKiAgICAgfSwKLSAgICAgKiAgICAgJ3Bvc3NpYmx5
Rmxha3knOiB7Ci0gICAgICogICAgICAgICAnZmFzdC93b3JrZXJzL3dvcmtlci10ZXN0Lmh0bWwn
OiBbCi0gICAgICogICAgICAgICAgICAgeyAnYnVpbGQnOiAncjEyMzQ0ICg2NzgpJywgJ3Jlc3Vs
dCc6ICdmYWlsJyB9LAotICAgICAqICAgICAgICAgICAgIHsgJ2J1aWxkJzogJ3IxMjM0MCAoNjc2
KScsICdyZXN1bHQnOiAnY3Jhc2gnIH0sCi0gICAgICogICAgICAgICBdLAotICAgICAqICAgICB9
LAotICAgICAqIH0KLSAgICAgKiBFYWNoIGJ1aWxkIGNvbnRhaW5zIGp1c3QgdGhlIGZhaWx1cmVz
IHRoYXQgYSkgYXJlIHN0aWxsIG9jY3VycmluZyBvbiB0aGUgYm90cywgYW5kIGIpIHdlcmUgbmV3
Ci0gICAgICogaW4gdGhhdCBidWlsZC4KLSAgICAgKi8KLSAgICBzdGFydDogZnVuY3Rpb24oY2Fs
bGJhY2spIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBzZWxmLl9idWlsZGVy
LmdldEJ1aWxkTmFtZXMoZnVuY3Rpb24oYnVpbGROYW1lcykgewotICAgICAgICAgICAgc2VsZi5f
YW5hbHl6ZUJ1aWxkcyhidWlsZE5hbWVzLCBjYWxsYmFjaywgZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgc2VsZi5fYnVpbGRlci5nZXRPbGRCdWlsZE5hbWVzKGZ1bmN0aW9uKG9sZEJ1aWxk
TmFtZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fYW5hbHl6ZUJ1aWxkcyhvbGRCdWls
ZE5hbWVzLCBjYWxsYmFjayk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgfSk7Ci0gICAgfSwKLQotICAgIF9hbmFseXplQnVpbGRzOiBmdW5jdGlvbihidWls
ZE5hbWVzLCBjYWxsYmFjaywgYW5hbHl6ZWRBbGxCdWlsZHNDYWxsYmFjaykgewotICAgICAgICB2
YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIGZ1bmN0aW9uIGlubmVyKGJ1aWxkSW5kZXgpIHsKLSAg
ICAgICAgICAgIHNlbGYuX2luY29ycG9yYXRlQnVpbGRIaXN0b3J5KGJ1aWxkTmFtZXMsIGJ1aWxk
SW5kZXgsIGZ1bmN0aW9uKGNhbGxBZ2FpbikgewotICAgICAgICAgICAgICAgIHZhciBkYXRhID0g
ewotICAgICAgICAgICAgICAgICAgICBoaXN0b3J5OiBzZWxmLl9oaXN0b3J5LAotICAgICAgICAg
ICAgICAgICAgICBwb3NzaWJseUZsYWt5OiB7fSwKLSAgICAgICAgICAgICAgICB9OwotICAgICAg
ICAgICAgICAgIHNlbGYuX2ZsYWtpbmVzc0RldGVjdG9yLnBvc3NpYmx5Rmxha3lUZXN0cy5mb3JF
YWNoKGZ1bmN0aW9uKHRlc3ROYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEucG9zc2li
bHlGbGFreVt0ZXN0TmFtZV0gPSBzZWxmLl9mbGFraW5lc3NEZXRlY3Rvci5hbGxGYWlsdXJlcyh0
ZXN0TmFtZSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgICAgICB2YXIgbmV4
dEluZGV4ID0gYnVpbGRJbmRleCArIDE7Ci0gICAgICAgICAgICAgICAgdmFyIGFuYWx5emVkQWxs
QnVpbGRzID0gbmV4dEluZGV4ID49IGJ1aWxkTmFtZXMubGVuZ3RoOwotICAgICAgICAgICAgICAg
IHZhciBoYXZlTW9yZURhdGFUb0ZldGNoID0gIWFuYWx5emVkQWxsQnVpbGRzIHx8IGFuYWx5emVk
QWxsQnVpbGRzQ2FsbGJhY2s7Ci0KLSAgICAgICAgICAgICAgICB2YXIgY2FsbGJhY2tSZXF1ZXN0
ZWRTdG9wID0gIWNhbGxiYWNrKGRhdGEsIGhhdmVNb3JlRGF0YVRvRmV0Y2gpOwotICAgICAgICAg
ICAgICAgIGlmIChjYWxsYmFja1JlcXVlc3RlZFN0b3ApCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICAgICAgICAgIGlmICghY2FsbEFnYWluKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBpZiAoYW5hbHl6ZWRBbGxCdWlsZHMpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGFuYWx5emVkQWxsQnVpbGRzQ2FsbGJhY2spCi0gICAg
ICAgICAgICAgICAgICAgICAgICBhbmFseXplZEFsbEJ1aWxkc0NhbGxiYWNrKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBpbm5lcihuZXh0SW5kZXgpIH0sIDApOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAgICAgaW5uZXIoMCk7Ci0gICAgfSwKLQotICAgIF9p
bmNvcnBvcmF0ZUJ1aWxkSGlzdG9yeTogZnVuY3Rpb24oYnVpbGROYW1lcywgYnVpbGRJbmRleCwg
Y2FsbGJhY2spIHsKLSAgICAgICAgdmFyIHByZXZpb3VzQnVpbGROYW1lID0gT2JqZWN0LmtleXMo
dGhpcy5faGlzdG9yeSkubGFzdCgpOwotICAgICAgICB2YXIgbmV4dEJ1aWxkTmFtZSA9IGJ1aWxk
TmFtZXNbYnVpbGRJbmRleF07Ci0KLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBz
ZWxmLl9sb2FkZXIuc3RhcnQobmV4dEJ1aWxkTmFtZSwgZnVuY3Rpb24odGVzdHMsIHRvb01hbnlG
YWlsdXJlcykgewotICAgICAgICAgICAgaWYgKHRvb01hbnlGYWlsdXJlcykgewotICAgICAgICAg
ICAgICAgIHZhciBmaXJzdEJ1aWxkTmFtZSA9IE9iamVjdC5rZXlzKHNlbGYuX2hpc3RvcnkpWzBd
OwotICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmaXJzdCAoaS5lLiwgY3VycmVudCBvciBtb3N0
IHJlY2VudCkgYnVpbGQgZXhpdGVkIGVhcmx5IGR1ZSB0byB0b28gbWFueQotICAgICAgICAgICAg
ICAgIC8vIGZhaWx1cmVzLCB3ZSB3YW50IHRvIHByb2Nlc3Mgb3RoZXIgdG9vLW1hbnktZmFpbHVy
ZXMgYnVpbGRzIG5vcm1hbGx5IHRvIHRyeSB0bwotICAgICAgICAgICAgICAgIC8vIGZpZ3VyZSBv
dXQgd2hlbiB0aGUgdG9vLW1hbnktZmFpbHVyZXMgc3RhcnRlZCBvY2N1cnJpbmcuIElmIHRoZSBm
aXJzdC9jdXJyZW50Ci0gICAgICAgICAgICAgICAgLy8gYnVpbGQgZGlkIG5vdCBleGl0IGR1ZSB0
byB0b28gbWFueSBmYWlsdXJlcywgdGhlbiB0b28tbWFueS1mYWlsdXJlcyBidWlsZHMgd2lsbAot
ICAgICAgICAgICAgICAgIC8vIG9ubHkgY29uZnVzZSBvdXIgYW5hbHlzaXMgKHNpbmNlIHRoZXkg
cnVuIGEgc2VtaS1hcmJpdHJhcnkgc3Vic2V0IG9mIHRlc3RzKSwgc28KLSAgICAgICAgICAgICAg
ICAvLyB3ZSBzaG91bGQganVzdCBza2lwIHRoZW0gZW50aXJlbHkuCi0gICAgICAgICAgICAgICAg
aWYgKGZpcnN0QnVpbGROYW1lICYmICFzZWxmLl9oaXN0b3J5W2ZpcnN0QnVpbGROYW1lXS50b29N
YW55RmFpbHVyZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICsrc2VsZi5fdGVzdFJ1bnNTaW5jZUxhc3RJbnRlcmVzdGluZ0NoYW5n
ZTsKLQotICAgICAgICAgICAgdmFyIGhpc3RvcnlJdGVtID0gewotICAgICAgICAgICAgICAgIHRv
b01hbnlGYWlsdXJlczogdG9vTWFueUZhaWx1cmVzLAotICAgICAgICAgICAgICAgIHRlc3RzOiB7
fSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBzZWxmLl9oaXN0b3J5W25leHRCdWlsZE5h
bWVdID0gaGlzdG9yeUl0ZW07Ci0KLSAgICAgICAgICAgIHZhciBwcmV2aW91c0hpc3RvcnlJdGVt
OwotICAgICAgICAgICAgaWYgKHByZXZpb3VzQnVpbGROYW1lKQotICAgICAgICAgICAgICAgIHBy
ZXZpb3VzSGlzdG9yeUl0ZW0gPSBzZWxmLl9oaXN0b3J5W3ByZXZpb3VzQnVpbGROYW1lXTsKLQot
ICAgICAgICAgICAgdmFyIG5ld0ZsYWt5VGVzdHMgPSBzZWxmLl9mbGFraW5lc3NEZXRlY3Rvci5p
bmNvcnBvcmF0ZVRlc3RSZXN1bHRzKG5leHRCdWlsZE5hbWUsIHRlc3RzLCB0b29NYW55RmFpbHVy
ZXMpOwotICAgICAgICAgICAgaWYgKG5ld0ZsYWt5VGVzdHMubGVuZ3RoKSB7Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fdGVzdFJ1bnNTaW5jZUxhc3RJbnRlcmVzdGluZ0NoYW5nZSA9IDA7Ci0gICAg
ICAgICAgICAgICAgLy8gUmVtb3ZlIGFsbCBwb3NzaWJseSBmbGFreSB0ZXN0cyBmcm9tIHRoZSBm
YWlsdXJlIGhpc3RvcnksIHNpbmNlIHdoZW4gdGhleSBmYWlsZWQKLSAgICAgICAgICAgICAgICAv
LyBpcyBubyBsb25nZXIgbWVhbmluZ2Z1bC4KLSAgICAgICAgICAgICAgICBuZXdGbGFreVRlc3Rz
LmZvckVhY2goZnVuY3Rpb24odGVzdE5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh2
YXIgYnVpbGROYW1lIGluIHNlbGYuX2hpc3RvcnkpCi0gICAgICAgICAgICAgICAgICAgICAgICBk
ZWxldGUgc2VsZi5faGlzdG9yeVtidWlsZE5hbWVdLnRlc3RzW3Rlc3ROYW1lXTsKLSAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZm9yICh2YXIgdGVzdE5h
bWUgaW4gdGVzdHMpIHsKLSAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNIaXN0b3J5SXRlbSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoISh0ZXN0TmFtZSBpbiBwcmV2aW91c0hpc3RvcnlJ
dGVtLnRlc3RzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgICAgICBkZWxldGUgcHJldmlvdXNIaXN0b3J5SXRlbS50ZXN0c1t0ZXN0TmFtZV07Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGhpc3RvcnlJdGVtLnRlc3RzW3Rlc3RO
YW1lXSA9IHRlc3RzW3Rlc3ROYW1lXTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFy
IHByZXZpb3VzVW5leHBsYWluZWRGYWlsdXJlc0NvdW50ID0gcHJldmlvdXNCdWlsZE5hbWUgPyBP
YmplY3Qua2V5cyhzZWxmLl9oaXN0b3J5W3ByZXZpb3VzQnVpbGROYW1lXS50ZXN0cykubGVuZ3Ro
IDogMDsKLSAgICAgICAgICAgIHZhciB1bmV4cGxhaW5lZEZhaWx1cmVzQ291bnQgPSBPYmplY3Qu
a2V5cyhzZWxmLl9oaXN0b3J5W25leHRCdWlsZE5hbWVdLnRlc3RzKS5sZW5ndGg7Ci0KLSAgICAg
ICAgICAgIGlmIChwcmV2aW91c1VuZXhwbGFpbmVkRmFpbHVyZXNDb3VudCAmJiAhdW5leHBsYWlu
ZWRGYWlsdXJlc0NvdW50KQotICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RSdW5zU2luY2VMYXN0
SW50ZXJlc3RpbmdDaGFuZ2UgPSAwOwotCi0gICAgICAgICAgICBjb25zdCBtaW5pbXVtUmVxdWly
ZWRUZXN0UnVuc1dpdGhvdXRJbnRlcmVzdGluZ0NoYW5nZXMgPSA1OwotICAgICAgICAgICAgY2Fs
bGJhY2sodW5leHBsYWluZWRGYWlsdXJlc0NvdW50IHx8IHNlbGYuX3Rlc3RSdW5zU2luY2VMYXN0
SW50ZXJlc3RpbmdDaGFuZ2UgPCBtaW5pbXVtUmVxdWlyZWRUZXN0UnVuc1dpdGhvdXRJbnRlcmVz
dGluZ0NoYW5nZXMpOwotICAgICAgICB9LAotICAgICAgICBmdW5jdGlvbih0ZXN0cykgewotICAg
ICAgICAgICAgLy8gU29tZSB0ZXN0cyBmYWlsZWQsIGJ1dCB3ZSBjb3VsZG4ndCBmZXRjaCByZXN1
bHRzLmh0bWwgKHBlcmhhcHMgYmVjYXVzZSB0aGUgdGVzdAotICAgICAgICAgICAgLy8gcnVuIGFi
b3J0ZWQgZWFybHkgZm9yIHNvbWUgcmVhc29uKS4gSnVzdCBza2lwIHRoaXMgYnVpbGQgZW50aXJl
bHkuCi0gICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKLSAgICAgICAgfSk7Ci0gICAgfSwKLX07
CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0xheW91dFRlc3RSZXN1bHRzTG9hZGVyLmpzCShyZXZp
c2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIu
anMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9u
IExheW91dFRlc3RSZXN1bHRzTG9hZGVyKGJ1aWxkZXIpIHsKLSAgICB0aGlzLl9idWlsZGVyID0g
YnVpbGRlcjsKLX0KLQotTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIucHJvdG90eXBlID0gewotICAg
IHN0YXJ0OiBmdW5jdGlvbihidWlsZE5hbWUsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7Ci0g
ICAgICAgIHZhciBjYWNoZUtleSA9ICdMYXlvdXRUZXN0UmVzdWx0c0xvYWRlci4nICsgdGhpcy5f
YnVpbGRlci5uYW1lICsgJy4nICsgYnVpbGROYW1lOwotICAgICAgICBjb25zdCBjdXJyZW50Q2Fj
aGVkRGF0YVZlcnNpb24gPSA4OwotICAgICAgICBpZiAoUGVyc2lzdGVudENhY2hlLmNvbnRhaW5z
KGNhY2hlS2V5KSkgewotICAgICAgICAgICAgdmFyIGNhY2hlZERhdGEgPSBQZXJzaXN0ZW50Q2Fj
aGUuZ2V0KGNhY2hlS2V5KTsKLSAgICAgICAgICAgIGlmIChjYWNoZWREYXRhLnZlcnNpb24gPT09
IGN1cnJlbnRDYWNoZWREYXRhVmVyc2lvbikgewotICAgICAgICAgICAgICAgIGlmIChjYWNoZWRE
YXRhLmVycm9yKQotICAgICAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrKGNhY2hlZERhdGEu
dGVzdHMsIGNhY2hlZERhdGEudG9vTWFueUZhaWx1cmVzKTsKLSAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGNhY2hlZERhdGEudGVzdHMsIGNhY2hlZERh
dGEudG9vTWFueUZhaWx1cmVzKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcmVzdWx0ID0geyB0ZXN0czoge30sIHRvb01h
bnlGYWlsdXJlczogZmFsc2UsIGVycm9yOiBmYWxzZSwgdmVyc2lvbjogY3VycmVudENhY2hlZERh
dGFWZXJzaW9uIH07Ci0KLSAgICAgICAgZnVuY3Rpb24gY2FjaGVQYXJzZVJlc3VsdHNBbmRDYWxs
Q2FsbGJhY2socGFyc2VSZXN1bHQpIHsKLSAgICAgICAgICAgIHJlc3VsdC50ZXN0cyA9IHBhcnNl
UmVzdWx0LnRlc3RzOwotICAgICAgICAgICAgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyA9IHBhcnNl
UmVzdWx0LnRvb01hbnlGYWlsdXJlczsKLQotICAgICAgICAgICAgUGVyc2lzdGVudENhY2hlLnNl
dChjYWNoZUtleSwgcmVzdWx0KTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC50ZXN0cywg
cmVzdWx0LnRvb01hbnlGYWlsdXJlcyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgc2VsZiA9
IHRoaXM7Ci0gICAgICAgIHNlbGYuX2ZldGNoQW5kUGFyc2VOUldUUmVzdWx0cyhidWlsZE5hbWUs
IGNhY2hlUGFyc2VSZXN1bHRzQW5kQ2FsbENhbGxiYWNrLCBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIHNlbGYuX2ZldGNoQW5kUGFyc2VPUldUUmVzdWx0cyhidWlsZE5hbWUsIGNhY2hlUGFyc2VS
ZXN1bHRzQW5kQ2FsbENhbGxiYWNrLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAvLyBX
ZSBjb3VsZG4ndCBmZXRjaCByZXN1bHRzIGZvciB0aGlzIGJ1aWxkLgotICAgICAgICAgICAgICAg
IHJlc3VsdC5lcnJvciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgUGVyc2lzdGVudENhY2hlLnNl
dChjYWNoZUtleSwgcmVzdWx0KTsKLSAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrKHJlc3Vs
dC50ZXN0cywgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgfSk7Ci0gICAgfSwKLQotICAgIF9mZXRjaEFuZFBhcnNlTlJXVFJlc3VsdHM6IGZ1bmN0aW9u
KGJ1aWxkTmFtZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7Ci0gICAgICAgIGdl
dFJlc291cmNlKHRoaXMuX2J1aWxkZXIucmVzdWx0c0RpcmVjdG9yeVVSTChidWlsZE5hbWUpICsg
J2Z1bGxfcmVzdWx0cy5qc29uJywgZnVuY3Rpb24oeGhyKSB7Ci0gICAgICAgICAgICBzdWNjZXNz
Q2FsbGJhY2soKG5ldyBOUldUUmVzdWx0c1BhcnNlcigpKS5wYXJzZSh4aHIucmVzcG9uc2VUZXh0
KSk7Ci0gICAgICAgIH0sCi0gICAgICAgIGZ1bmN0aW9uKHhocikgewotICAgICAgICAgICAgZXJy
b3JDYWxsYmFjaygpOwotICAgICAgICB9KTsKLSAgICB9LAotCi0gICAgX2ZldGNoQW5kUGFyc2VP
UldUUmVzdWx0czogZnVuY3Rpb24oYnVpbGROYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2spIHsKLSAgICAgICAgdmFyIHBhcnNlZEJ1aWxkTmFtZSA9IHRoaXMuX2J1aWxkZXIuYnVp
bGRib3QucGFyc2VCdWlsZE5hbWUoYnVpbGROYW1lKTsKLQotICAgICAgICAvLyBodHRwOi8vd2Vi
a2l0Lm9yZy9iLzYyMzgwIHdhcyBmaXhlZCBpbiByODk2MTAuCi0gICAgICAgIHZhciByZXN1bHRz
SFRNTFN1cHBvcnRzVG9vTWFueUZhaWx1cmVzSW5mbyA9IHBhcnNlZEJ1aWxkTmFtZS5yZXZpc2lv
biA+PSA4OTYxMDsKLQotICAgICAgICB2YXIgcmVzdWx0ID0geyB0ZXN0czoge30sIHRvb01hbnlG
YWlsdXJlczogZmFsc2UgfTsKLQotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICAgICAg
ZnVuY3Rpb24gZmV0Y2hBbmRQYXJzZVJlc3VsdHNIVE1MKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjaykgewotICAgICAgICAgICAgZ2V0UmVzb3VyY2Uoc2VsZi5fYnVpbGRlci5yZXN1bHRz
UGFnZVVSTChidWlsZE5hbWUpLCBmdW5jdGlvbih4aHIpIHsKLSAgICAgICAgICAgICAgICB2YXIg
cGFyc2VSZXN1bHQgPSAobmV3IE9SV1RSZXN1bHRzUGFyc2VyKCkpLnBhcnNlKHhoci5yZXNwb25z
ZVRleHQpOwotICAgICAgICAgICAgICAgIHJlc3VsdC50ZXN0cyA9IHBhcnNlUmVzdWx0LnRlc3Rz
OwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHRzSFRNTFN1cHBvcnRzVG9vTWFueUZhaWx1cmVz
SW5mbykKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyA9IHBhcnNl
UmVzdWx0LnRvb01hbnlGYWlsdXJlczsKLSAgICAgICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2so
KTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBmdW5jdGlvbih4aHIpIHsKLSAgICAgICAg
ICAgICAgICAvLyBXZSBmYWlsZWQgdG8gZmV0Y2ggcmVzdWx0cy5odG1sLgotICAgICAgICAgICAg
ICAgIGVycm9yQ2FsbGJhY2soKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZnVuY3Rpb24gZmV0Y2hOdW1iZXJPZkZhaWxpbmdUZXN0cyhzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spIHsKLSAgICAgICAgICAgIHNlbGYuX2J1aWxkZXIuZ2V0TnVtYmVyT2ZGYWls
aW5nVGVzdHMocGFyc2VkQnVpbGROYW1lLmJ1aWxkTnVtYmVyLCBmdW5jdGlvbihmYWlsaW5nVGVz
dENvdW50LCB0b29NYW55RmFpbHVyZXMpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQudG9vTWFu
eUZhaWx1cmVzID0gdG9vTWFueUZhaWx1cmVzOwotCi0gICAgICAgICAgICAgICAgaWYgKGZhaWxp
bmdUZXN0Q291bnQgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBudW1iZXIgb2Yg
ZmFpbGluZyB0ZXN0cyBjb3VsZG4ndCBiZSBkZXRlcm1pbmVkLgotICAgICAgICAgICAgICAgICAg
ICBlcnJvckNhbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2soZmFpbGluZ1Rlc3RD
b3VudCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChyZXN1bHRz
SFRNTFN1cHBvcnRzVG9vTWFueUZhaWx1cmVzSW5mbykgewotICAgICAgICAgICAgZmV0Y2hBbmRQ
YXJzZVJlc3VsdHNIVE1MKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHN1Y2Nlc3NDYWxs
YmFjayhyZXN1bHQpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgIGZldGNoTnVtYmVyT2ZGYWlsaW5nVGVzdHMoZnVuY3Rpb24oZmFpbGlu
Z1Rlc3RDb3VudCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIWZhaWxpbmdUZXN0Q291bnQp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFsbCB0ZXN0cyBwYXNzZWQsIHNvIG5vIHJl
c3VsdHMuaHRtbCB3YXMgZ2VuZXJhdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vz
c0NhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAvLyBTb21ldGhpbmcgd2Vu
dCB3cm9uZyB3aXRoIGZldGNoaW5nIHJlc3VsdHMuCi0gICAgICAgICAgICAgICAgICAgIGVycm9y
Q2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICB9LCBlcnJvckNhbGxiYWNrKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZmV0Y2hO
dW1iZXJPZkZhaWxpbmdUZXN0cyhmdW5jdGlvbihmYWlsaW5nVGVzdENvdW50KSB7Ci0gICAgICAg
ICAgICBpZiAoIWZhaWxpbmdUZXN0Q291bnQpIHsKLSAgICAgICAgICAgICAgICAvLyBBbGwgdGVz
dHMgcGFzc2VkLgotICAgICAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhyZXN1bHQpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gRmlu
ZCBvdXQgd2hpY2ggdGVzdHMgZmFpbGVkLgotICAgICAgICAgICAgZmV0Y2hBbmRQYXJzZVJlc3Vs
dHNIVE1MKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhyZXN1
bHQpOwotICAgICAgICAgICAgfSwgZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIH0sIGVycm9yQ2Fs
bGJhY2spOwotICAgIH0sCi19OwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL05SV1RSZXN1bHRzUGFy
c2VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9OUldUUmVzdWx0c1BhcnNlci5q
cwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL05SV1RSZXN1bHRzUGFyc2Vy
LmpzCShub25leGlzdGVudCkKQEAgLTEsOTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9u
IE5SV1RSZXN1bHRzUGFyc2VyKCkgewotfQotCi1OUldUUmVzdWx0c1BhcnNlci5wcm90b3R5cGUg
PSB7Ci0gICAgcGFyc2U6IGZ1bmN0aW9uKHVuZXhwZWN0ZWRSZXN1bHRzSlMpIHsKLSAgICAgICAg
dmFyIGRhdGE7Ci0gICAgICAgIGZ1bmN0aW9uIEFERF9SRVNVTFRTKHgpIHsKLSAgICAgICAgICAg
IGRhdGEgPSB4OwotICAgICAgICB9Ci0KLSAgICAgICAgZXZhbCh1bmV4cGVjdGVkUmVzdWx0c0pT
KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YSk7Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9
IHsgdGVzdHM6IHt9LCB0b29NYW55RmFpbHVyZXM6IGRhdGEuaW50ZXJydXB0ZWQgfTsKLQotICAg
ICAgICBmdW5jdGlvbiBmb3JFYWNoVGVzdCh0cmVlLCBoYW5kbGVyLCBvcHRfcHJlZml4KSB7Ci0g
ICAgICAgICAgICB2YXIgcHJlZml4ID0gb3B0X3ByZWZpeCB8fCAnJzsKLQotICAgICAgICAgICAg
Zm9yICh2YXIga2V5IGluIHRyZWUpIHsKLSAgICAgICAgICAgICAgICB2YXIgbmV3UHJlZml4ID0g
cHJlZml4ID8gKHByZWZpeCArICcvJyArIGtleSkgOiBrZXk7Ci0gICAgICAgICAgICAgICAgaWYg
KCdhY3R1YWwnIGluIHRyZWVba2V5XSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgdGVzdE9i
amVjdCA9IHRyZWVba2V5XTsKLSAgICAgICAgICAgICAgICAgICAgdGVzdE9iamVjdC5uYW1lID0g
bmV3UHJlZml4OwotICAgICAgICAgICAgICAgICAgICBoYW5kbGVyKHRlc3RPYmplY3QpOwotICAg
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBmb3JFYWNoVGVzdCh0cmVl
W2tleV0sIGhhbmRsZXIsIG5ld1ByZWZpeCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICBmdW5jdGlvbiBpc0ZhaWx1cmVFeHBlY3RlZChleHBlY3RlZCwgYWN0dWFsKSB7Ci0g
ICAgICAgICAgICBpZiAoYWN0dWFsID09PSAnU0tJUCcpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICAgICAgICAgIHZhciBleHBlY3RlZEFycmF5ID0gZXhwZWN0ZWQuc3BsaXQo
JyAnKTsKLSAgICAgICAgICAgIHZhciBhY3R1YWxBcnJheSA9IGFjdHVhbC5zcGxpdCgnICcpOwot
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3R1YWxBcnJheS5sZW5ndGg7IGkrKykg
ewotICAgICAgICAgICAgICAgIHZhciBhY3R1YWxWYWx1ZSA9IGFjdHVhbEFycmF5W2ldOwotICAg
ICAgICAgICAgICAgIGlmIChleHBlY3RlZEFycmF5LmNvbnRhaW5zKGFjdHVhbFZhbHVlKSkKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVk
QXJyYXkuY29udGFpbnMoJ0ZBSUwnKSAmJiBbJ0lNQUdFJywgJ1RFWFQnLCAnSU1BR0UrVEVYVCdd
LmNvbnRhaW5zKGFjdHVhbFZhbHVlKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGNvbnZlcnROUldU
UmVzdWx0U3RyaW5nKG5yd3RSZXN1bHQpIHsKLSAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9u
cyA9IHsKLSAgICAgICAgICAgICAgICBDUkFTSDogJ2NyYXNoJywKLSAgICAgICAgICAgICAgICAn
SU1BR0UrVEVYVCc6ICdmYWlsJywKLSAgICAgICAgICAgICAgICBJTUFHRTogJ2ZhaWwnLAotICAg
ICAgICAgICAgICAgIFRFWFQ6ICdmYWlsJywKLSAgICAgICAgICAgICAgICBUSU1FT1VUOiAndGlt
ZW91dCcsCi0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBpZiAobnJ3dFJlc3VsdCBpbiB0
cmFuc2xhdGlvbnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uc1tucnd0UmVz
dWx0XTsKLQotICAgICAgICAgICAgaWYgKG5yd3RSZXN1bHQuY29udGFpbnMoJyAnKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gJ2ZsYWt5JzsKLQotICAgICAgICAgICAgcmV0dXJuICd1bmtub3du
IGZhaWx1cmUgdHlwZSAnICsgbnJ3dFJlc3VsdDsKLSAgICAgICAgfQotCi0gICAgICAgIGZvckVh
Y2hUZXN0KGRhdGEudGVzdHMsIGZ1bmN0aW9uKHRlc3QpIHsKLSAgICAgICAgICAgIGlmIChpc0Zh
aWx1cmVFeHBlY3RlZCh0ZXN0LmV4cGVjdGVkLCB0ZXN0LmFjdHVhbCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgcmVzdWx0LnRlc3RzW3Rlc3QubmFtZV0gPSB7IGZhaWx1
cmVUeXBlOiBjb252ZXJ0TlJXVFJlc3VsdFN0cmluZyh0ZXN0LmFjdHVhbCkgfTsKLSAgICAgICAg
fSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAotfTsKSW5kZXg6IFRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9OZXdCdWdGb3JtLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9OZXdC
dWdGb3JtLmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvTmV3QnVnRm9y
bS5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlv
biBOZXdCdWdGb3JtKCkgewotfQotCi1OZXdCdWdGb3JtLnByb3RvdHlwZSA9IHsKLSAgICBkb21F
bGVtZW50OiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGZvcm1EYXRhID0ge307Ci0KLSAgICAg
ICAgaWYgKHRoaXMuY29tcG9uZW50KQotICAgICAgICAgICAgZm9ybURhdGEuY29tcG9uZW50ID0g
dGhpcy5jb21wb25lbnQ7Ci0gICAgICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uKQotICAgICAgICAg
ICAgZm9ybURhdGEuY29tbWVudCA9IHRoaXMuZGVzY3JpcHRpb247Ci0gICAgICAgIGlmICh0aGlz
LmtleXdvcmRzKQotICAgICAgICAgICAgZm9ybURhdGEua2V5d29yZHMgPSB0aGlzLmtleXdvcmRz
OwotICAgICAgICBpZiAodGhpcy5vcGVyYXRpbmdTeXN0ZW0pCi0gICAgICAgICAgICBmb3JtRGF0
YS5vcF9zeXMgPSB0aGlzLm9wZXJhdGluZ1N5c3RlbTsKLSAgICAgICAgaWYgKHRoaXMucGxhdGZv
cm0pCi0gICAgICAgICAgICBmb3JtRGF0YS5yZXBfcGxhdGZvcm0gPSB0aGlzLnBsYXRmb3JtOwot
ICAgICAgICBpZiAodGhpcy5wcm9kdWN0KQotICAgICAgICAgICAgZm9ybURhdGEucHJvZHVjdCA9
IHRoaXMucHJvZHVjdDsKLSAgICAgICAgaWYgKHRoaXMudGl0bGUpCi0gICAgICAgICAgICBmb3Jt
RGF0YS5zaG9ydF9kZXNjID0gdGhpcy50aXRsZTsKLSAgICAgICAgaWYgKHRoaXMudXJsKQotICAg
ICAgICAgICAgZm9ybURhdGEuYnVnX2ZpbGVfbG9jID0gdGhpcy51cmw7Ci0gICAgICAgIGlmICh0
aGlzLnZlcnNpb24pCi0gICAgICAgICAgICBmb3JtRGF0YS52ZXJzaW9uID0gdGhpcy52ZXJzaW9u
OwotCi0gICAgICAgIHZhciBmb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZm9ybScpOwot
ICAgICAgICBmb3JtLm1ldGhvZCA9ICdQT1NUJzsKLSAgICAgICAgZm9ybS5hY3Rpb24gPSBjb25m
aWcua0J1Z3ppbGxhVVJMICsgJy9lbnRlcl9idWcuY2dpJzsKLQotICAgICAgICBmb3IgKHZhciBr
ZXkgaW4gZm9ybURhdGEpIHsKLSAgICAgICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2lucHV0Jyk7Ci0gICAgICAgICAgICBpbnB1dC50eXBlID0gJ2hpZGRlbic7Ci0g
ICAgICAgICAgICBpbnB1dC5uYW1lID0ga2V5OwotICAgICAgICAgICAgaW5wdXQudmFsdWUgPSBm
b3JtRGF0YVtrZXldOwotICAgICAgICAgICAgZm9ybS5hcHBlbmRDaGlsZChpbnB1dCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gZm9ybTsKLSAgICB9LAotfTsKSW5kZXg6IFRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9OZXdCdWdGb3JtX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvTmV3QnVnRm9ybV91bml0dGVzdHMuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xz
L0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9OZXdCdWdGb3JtX3VuaXR0ZXN0cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDgx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24oKSB7Ci0KLW1vZHVsZSgnTmV3QnVnRm9y
bScpOwotCi1jb25zdCB0ZXN0Rm9ybURhdGEgPSB7Ci0gICAgY29tcG9uZW50OiB7IGZvcm1OYW1l
OiAnY29tcG9uZW50JywgdmFsdWU6ICdUb29scyAvIFRlc3RzJyB9LAotICAgIGRlc2NyaXB0aW9u
OiB7IGZvcm1OYW1lOiAnY29tbWVudCcsIHZhbHVlOiAnVGhpcyBpcyBhIGRlc2NyaXB0aW9uXG5c
bndpdGhcbm5ld2xpbmVzJyB9LAotICAgIGtleXdvcmRzOiB7IGZvcm1OYW1lOiAna2V5d29yZHMn
LCB2YWx1ZTogJ1F0LCBQbGF0Zm9ybU9ubHknIH0sCi0gICAgb3BlcmF0aW5nU3lzdGVtOiB7IGZv
cm1OYW1lOiAnb3Bfc3lzJywgdmFsdWU6ICdXaW5kb3dzIDcnIH0sCi0gICAgcGxhdGZvcm06IHsg
Zm9ybU5hbWU6ICdyZXBfcGxhdGZvcm0nLCB2YWx1ZTogJ1BDJyB9LAotICAgIHByb2R1Y3Q6IHsg
Zm9ybU5hbWU6ICdwcm9kdWN0JywgdmFsdWU6ICdXZWJLaXQnIH0sCi0gICAgdGl0bGU6IHsgZm9y
bU5hbWU6ICdzaG9ydF9kZXNjJywgdmFsdWU6ICdUaGlzIGlzIGEgYnVnIHRpdGxlJyB9LAotICAg
IHVybDogeyBmb3JtTmFtZTogJ2J1Z19maWxlX2xvYycsIHZhbHVlOiAnaHR0cDovL2V4YW1wbGUu
Y29tL3BhdGg/cXVlcnk9Zm9vI2FuY2hvcicgfSwKLSAgICB2ZXJzaW9uOiB7IGZvcm1OYW1lOiAn
dmVyc2lvbicsIHZhbHVlOiAnNTI4KyAoTmlnaHRseSBCdWlsZCknIH0sCi19OwotCi1mdW5jdGlv
biBjcmVhdGVUZXN0Rm9ybSgpIHsKLSAgICB2YXIgZm9ybSA9IG5ldyBOZXdCdWdGb3JtKCk7Ci0g
ICAgZm9yICh2YXIga2V5IGluIHRlc3RGb3JtRGF0YSkgewotICAgICAgICBmb3JtW2tleV0gPSB0
ZXN0Rm9ybURhdGFba2V5XS52YWx1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZvcm07Ci19Ci0KLXRl
c3QoJ3Byb3BlcnRpZXMgYXJlIHNldCcsIDksIGZ1bmN0aW9uKCkgewotICAgIHZhciBmb3JtID0g
Y3JlYXRlVGVzdEZvcm0oKTsKLQotICAgIGZvciAodmFyIGtleSBpbiB0ZXN0Rm9ybURhdGEpIHsK
LSAgICAgICAgZXF1YWwoZm9ybVtrZXldLCB0ZXN0Rm9ybURhdGFba2V5XS52YWx1ZSk7Ci0gICAg
fQotfSk7Ci0KLXRlc3QoJ2RvbUVsZW1lbnQoKSBwb3N0cyB0byBlbnRlcl9idWcuY2dpJywgMywg
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGZvcm1FbGVtZW50ID0gY3JlYXRlVGVzdEZvcm0oKS5kb21F
bGVtZW50KCk7Ci0gICAgZXF1YWwoZm9ybUVsZW1lbnQudGFnTmFtZSwgJ0ZPUk0nKTsKLSAgICBl
cXVhbChmb3JtRWxlbWVudC5tZXRob2QsICdwb3N0Jyk7Ci0gICAgZXF1YWwoZm9ybUVsZW1lbnQu
YWN0aW9uLCAnaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvZW50ZXJfYnVnLmNnaScpOwotfSk7Ci0K
LXRlc3QoJ2RvbUVsZW1lbnQoKSBjb250YWlucyBvbmx5IGhpZGRlbiBpbnB1dCBlbGVtZW50cycs
IDksIGZ1bmN0aW9uKCkgewotICAgIHZhciBlbGVtZW50cyA9IGNyZWF0ZVRlc3RGb3JtKCkuZG9t
RWxlbWVudCgpLmVsZW1lbnRzOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgZXF1YWwoZWxlbWVudHNbaV0udHlwZSwgJ2hpZGRlbicpOwot
ICAgIH0KLX0pOwotCi10ZXN0KCdkb21FbGVtZW50KCkgY29udGFpbnMgYWxsIGZvcm0gdmFsdWVz
JywgOSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGZvcm1FbGVtZW50ID0gY3JlYXRlVGVzdEZvcm0o
KS5kb21FbGVtZW50KCk7Ci0KLSAgICBmb3IgKHZhciBrZXkgaW4gdGVzdEZvcm1EYXRhKSB7Ci0g
ICAgICAgIHZhciBkYXRhID0gdGVzdEZvcm1EYXRhW2tleV07Ci0gICAgICAgIGVxdWFsKGZvcm1F
bGVtZW50W2RhdGEuZm9ybU5hbWVdLnZhbHVlLCBkYXRhLnZhbHVlLCBrZXkpOwotICAgIH0KLX0p
OwotCi19KSgpOwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL09SV1RSZXN1bHRzUGFyc2VyLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9PUldUUmVzdWx0c1BhcnNlci5qcwkocmV2aXNp
b24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL09SV1RSZXN1bHRzUGFyc2VyLmpzCShub25l
eGlzdGVudCkKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIE9SV1RSZXN1
bHRzUGFyc2VyKCkgewotfQotCi1PUldUUmVzdWx0c1BhcnNlci5wcm90b3R5cGUgPSB7Ci0gICAg
cGFyc2U6IGZ1bmN0aW9uKHJlc3VsdHNIVE1MU3RyaW5nKSB7Ci0gICAgICAgIHZhciByZXN1bHQg
PSB7IHRlc3RzOiB7fSwgdG9vTWFueUZhaWx1cmVzOiBmYWxzZSB9OwotCi0gICAgICAgIHZhciBy
b290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaHRtbCcpOwotICAgICAgICByb290LmlubmVy
SFRNTCA9IHJlc3VsdHNIVE1MU3RyaW5nOwotCi0gICAgICAgIC8vIE5vdGUgdGhhdCBzb21lIG9s
ZCByZXN1bHRzLmh0bWwgZmlsZXMgd29uJ3QgY29udGFpbiB0aGlzIGVsZW1lbnQgZXZlbiBpZiB3
ZSBoYWQgdG8gc3RvcAotICAgICAgICAvLyBydW5uaW5nIGVhcmx5IGR1ZSB0byB0b28gbWFueSBm
YWlsdXJlcy4gT3VyIGNhbGxlciB3aWxsIGhhdmUgdG8gZmlndXJlIHRoYXQgb3V0Ci0gICAgICAg
IC8vIHRoZW1zZWx2ZXMuCi0gICAgICAgIHJlc3VsdC50b29NYW55RmFpbHVyZXMgPSByb290Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N0b3BwZWQtcnVubmluZy1lYXJseS1tZXNzYWdlJykubGVu
Z3RoID4gMDsKLQotICAgICAgICBmdW5jdGlvbiBwYXJzZVJlc3VsdFRhYmxlKHJlZ2V4KSB7Ci0g
ICAgICAgICAgICB2YXIgcGFyYWdyYXBoID0gQXJyYXkucHJvdG90eXBlLmZpbmRGaXJzdC5jYWxs
KHJvb3QucXVlcnlTZWxlY3RvckFsbCgncCcpLCBmdW5jdGlvbihwYXJhZ3JhcGgpIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gcmVnZXgudGVzdChwYXJhZ3JhcGguaW5uZXJUZXh0KTsKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgaWYgKCFwYXJhZ3JhcGgpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIFtdOwotICAgICAgICAgICAgdmFyIHRhYmxlID0gcGFyYWdyYXBoLm5leHRFbGVtZW50
U2libGluZzsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhYmxlLm5vZGVOYW1lID09PSAn
VEFCTEUnKTsKLSAgICAgICAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwodGFi
bGUucm93cywgZnVuY3Rpb24ocm93KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGxpbmtzID0gcm93
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhJyk7Ci0gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9
IHsKLSAgICAgICAgICAgICAgICAgICAgbmFtZTogbGlua3NbMF0uaW5uZXJUZXh0LAotICAgICAg
ICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBsaW5rcy5s
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2ggPSAvXmNyYXNoIGxv
ZyBcKCguKilcKSQvLmV4ZWMobGlua3NbaV0uaW5uZXJUZXh0KTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFtYXRjaCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuY3Jhc2hpbmdTeW1ib2wgPSBtYXRjaFsxXTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIHBhcnNl
UmVzdWx0VGFibGUoL2RpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgcmVzdWx0cy8pLmZvckVhY2goZnVu
Y3Rpb24odGVzdERhdGEpIHsKLSAgICAgICAgICAgIHJlc3VsdC50ZXN0c1t0ZXN0RGF0YS5uYW1l
XSA9IHsgZmFpbHVyZVR5cGU6ICdmYWlsJyB9OwotICAgICAgICB9KTsKLSAgICAgICAgcGFyc2VS
ZXN1bHRUYWJsZSgvdGltZWQgb3V0LykuZm9yRWFjaChmdW5jdGlvbih0ZXN0RGF0YSkgewotICAg
ICAgICAgICAgcmVzdWx0LnRlc3RzW3Rlc3REYXRhLm5hbWVdID0geyBmYWlsdXJlVHlwZTogJ3Rp
bWVvdXQnIH07Ci0gICAgICAgIH0pOwotICAgICAgICBwYXJzZVJlc3VsdFRhYmxlKC90b29sIHRv
IGNyYXNoLykuZm9yRWFjaChmdW5jdGlvbih0ZXN0RGF0YSkgewotICAgICAgICAgICAgcmVzdWx0
LnRlc3RzW3Rlc3REYXRhLm5hbWVdID0gewotICAgICAgICAgICAgICAgIGZhaWx1cmVUeXBlOiAn
Y3Jhc2gnLAotICAgICAgICAgICAgICAgIGNyYXNoaW5nU3ltYm9sOiB0ZXN0RGF0YS5jcmFzaGlu
Z1N5bWJvbCwKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0pOwotICAgICAgICBwYXJzZVJlc3Vs
dFRhYmxlKC9XZWIgcHJvY2VzcyB0byBjcmFzaC8pLmZvckVhY2goZnVuY3Rpb24odGVzdERhdGEp
IHsKLSAgICAgICAgICAgIHJlc3VsdC50ZXN0c1t0ZXN0RGF0YS5uYW1lXSA9IHsKLSAgICAgICAg
ICAgICAgICBmYWlsdXJlVHlwZTogJ3dlYnByb2Nlc3MgY3Jhc2gnLAotICAgICAgICAgICAgICAg
IGNyYXNoaW5nU3ltYm9sOiB0ZXN0RGF0YS5jcmFzaGluZ1N5bWJvbCwKLSAgICAgICAgICAgIH07
Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKLX07CkluZGV4
OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvUGVyc2lzdGVudENhY2hlLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9QZXJzaXN0ZW50Q2FjaGUuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xz
L0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9QZXJzaXN0ZW50Q2FjaGUuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw4OCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotdmFyIFBlcnNpc3RlbnRDYWNoZSA9IHsKLSAgICBjb250YWluczog
ZnVuY3Rpb24oa2V5KSB7Ci0gICAgICAgIHJldHVybiBrZXkgaW4gbG9jYWxTdG9yYWdlOwotICAg
IH0sCi0KLSAgICBnZXQ6IGZ1bmN0aW9uKGtleSkgewotICAgICAgICB2YXIgc3RyaW5nID0gbG9j
YWxTdG9yYWdlW2tleV07Ci0gICAgICAgIGlmICghc3RyaW5nKQotICAgICAgICAgICAgcmV0dXJu
IHN0cmluZzsKLQotICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgdXBkYXRlIHRoZSBkYXRlIHN0
b3JlZCB3aXRoIHRoZSB2YWx1ZSBoZXJlIHRvIG1ha2UgdGhpcyBtb3JlIG9mIGFuIE1SVQotICAg
ICAgICAvLyBjYWNoZSAoaW5zdGVhZCBvZiBtb3N0LXJlY2VudGx5LXN0b3JlZCksIGJ1dCB0aGF0
IHdvdWxkIHJlc3VsdCBpbiBleHRyYSBkaXNrIGFjY2VzcyB0aGF0Ci0gICAgICAgIC8vIG1pZ2h0
IG5vdCBiZSBzbyBncmVhdC4KLSAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UodGhpcy5fcGFyc2VE
YXRlQW5kSlNPTkZyb21TdHJpbmcoc3RyaW5nKS5qc29uKTsKLSAgICB9LAotCi0gICAgc2V0OiBm
dW5jdGlvbihrZXksIHZhbHVlKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBsb2NhbFN0
b3JhZ2Vba2V5XSA9IHRoaXMuX2FkZERhdGVUb0pTT05TdHJpbmcoSlNPTi5zdHJpbmdpZnkodmFs
dWUpKTsKLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgaWYgKGUuY29kZSAhPT0g
MjIpIC8vIFFVT1RBX0VYQ0VFREVEX0VSUgotICAgICAgICAgICAgICAgIHRocm93IGU7Ci0KLSAg
ICAgICAgICAgIC8vIFdlJ3ZlIHJ1biBvdXQgb2Ygc3BhY2UgaW4gbG9jYWxTdG9yYWdlLiBMZXQn
cyBqdXN0IHRocm93IGF3YXkgZXZlcnl0aGluZyBhbmQgdHJ5Ci0gICAgICAgICAgICAvLyBhZ2Fp
bi4KLSAgICAgICAgICAgIHRoaXMuX2VtcHR5Q2FjaGUoKTsKLSAgICAgICAgICAgIHRoaXMuc2V0
KGtleSwgdmFsdWUpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHBydW5lOiBmdW5jdGlvbigp
IHsKLSAgICAgICAgdmFyIG5vdyA9IERhdGUubm93KCk7Ci0gICAgICAgIGZvciAodmFyIGtleSBp
biBsb2NhbFN0b3JhZ2UpIHsKLSAgICAgICAgICAgIHZhciBkYXRlID0gdGhpcy5fcGFyc2VEYXRl
QW5kSlNPTkZyb21TdHJpbmcobG9jYWxTdG9yYWdlW2tleV0pLmRhdGU7Ci0gICAgICAgICAgICBp
ZiAobm93IC0gZGF0ZSA8PSB0aGlzLl9kYXRhQWdlTGltaXRNUykKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGRlbGV0ZSBsb2NhbFN0b3JhZ2Vba2V5XTsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuc2V0KHRoaXMuX2xhc3RQcnVuZURhdGVLZXksIG5vdyk7Ci0gICAg
fSwKLQotICAgIF9hZGREYXRlVG9KU09OU3RyaW5nOiBmdW5jdGlvbihqc29uU3RyaW5nKSB7Ci0g
ICAgICAgIHJldHVybiBEYXRlLm5vdygpICsgdGhpcy5fZGF0ZUFuZEpTT05TZXBhcmF0b3IgKyBq
c29uU3RyaW5nOwotICAgIH0sCi0KLSAgICBfZGF0YUFnZUxpbWl0TVM6IDEwMDAgKiA2MCAqIDYw
ICogMjQgKiAxLjEsIC8vIEp1c3Qgb3ZlciBvbmUgZGF5Ci0KLSAgICBfZGF0ZUFuZEpTT05TZXBh
cmF0b3I6ICc6ICcsCi0KLSAgICBfZW1wdHlDYWNoZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZv
ciAodmFyIGtleSBpbiBsb2NhbFN0b3JhZ2UpCi0gICAgICAgICAgICBkZWxldGUgbG9jYWxTdG9y
YWdlW2tleV07Ci0gICAgfSwKLQotICAgIF9wYXJzZURhdGVBbmRKU09ORnJvbVN0cmluZzogZnVu
Y3Rpb24oc3RyaW5nKSB7Ci0gICAgICAgIHZhciBzZXBhcmF0b3JJbmRleCA9IHN0cmluZy5pbmRl
eE9mKHRoaXMuX2RhdGVBbmRKU09OU2VwYXJhdG9yKTsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAg
ICAgICAgIGRhdGU6IG5ldyBEYXRlKHBhcnNlSW50KHN0cmluZy5zdWJzdHJpbmcoMCwgc2VwYXJh
dG9ySW5kZXgpLCAxMCkpLAotICAgICAgICAgICAganNvbjogc3RyaW5nLnN1YnN0cmluZyhzZXBh
cmF0b3JJbmRleCArIHRoaXMuX2RhdGVBbmRKU09OU2VwYXJhdG9yLmxlbmd0aCksCi0gICAgICAg
IH07Ci0gICAgfSwKLX07CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvVGVzdFJlbGF0ZWRCdWdGb3Jt
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9UZXN0UmVsYXRlZEJ1Z0Zvcm0uanMJ
KHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9UZXN0UmVsYXRlZEJ1Z0Zvcm0u
anMJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotZnVuY3Rpb24g
VGVzdFJlbGF0ZWRCdWdGb3JtKHRlc3RlcikgewotICAgIE5ld0J1Z0Zvcm0uY2FsbCh0aGlzKTsK
LQotICAgIHRoaXMuX3Rlc3RlciA9IHRlc3RlcjsKLQotICAgIHRoaXMuY29tcG9uZW50ID0gV2Vi
S2l0QnVnemlsbGEuQ29tcG9uZW50LlRvb2xzVGVzdHM7Ci0gICAgdGhpcy5rZXl3b3JkcyA9IFsK
LSAgICAgICAgV2ViS2l0QnVnemlsbGEuS2V5d29yZC5MYXlvdXRUZXN0RmFpbHVyZSwKLSAgICAg
ICAgV2ViS2l0QnVnemlsbGEuS2V5d29yZC5NYWtpbmdCb3RzUmVkLAotICAgIF0uam9pbignLCAn
KTsKLSAgICB0aGlzLm9wZXJhdGluZ1N5c3RlbSA9IHRoaXMuX2NvbXB1dGVPcGVyYXRpbmdTeXN0
ZW0oKTsKLSAgICB0aGlzLnBsYXRmb3JtID0gdGhpcy5fY29tcHV0ZVBsYXRmb3JtKCk7Ci0gICAg
dGhpcy5wcm9kdWN0ID0gV2ViS2l0QnVnemlsbGEuUHJvZHVjdC5XZWJLaXQ7Ci0gICAgdGhpcy52
ZXJzaW9uID0gV2ViS2l0QnVnemlsbGEuVmVyc2lvbi5OaWdodGx5OwotfQotCi1UZXN0UmVsYXRl
ZEJ1Z0Zvcm0ucHJvdG90eXBlID0gewotICAgIGRvbUVsZW1lbnQ6IGZ1bmN0aW9uKCkgewotICAg
ICAgICB2YXIgZm9ybSA9IE5ld0J1Z0Zvcm0ucHJvdG90eXBlLmRvbUVsZW1lbnQuY2FsbCh0aGlz
KTsKLSAgICAgICAgZm9ybS5jbGFzc05hbWUgPSAnbmV3LWJ1Zy1mb3JtJzsKLSAgICAgICAgZm9y
bS50YXJnZXQgPSAnX2JsYW5rJzsKLSAgICAgICAgcmV0dXJuIGZvcm07Ci0gICAgfSwKLQotICAg
IF9jb21wdXRlT3BlcmF0aW5nU3lzdGVtOiBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKC9XaW5k
b3dzIDcvLnRlc3QodGhpcy5fdGVzdGVyLm5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIFdlYktp
dEJ1Z3ppbGxhLk9wZXJhdGluZ1N5c3RlbS5XaW5kb3dzNzsKLSAgICAgICAgaWYgKC9XaW5kb3dz
IFhQLy50ZXN0KHRoaXMuX3Rlc3Rlci5uYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXRC
dWd6aWxsYS5PcGVyYXRpbmdTeXN0ZW0uV2luZG93c1hQOwotICAgICAgICBpZiAoL1Nub3dMZW9w
YXJkLy50ZXN0KHRoaXMuX3Rlc3Rlci5uYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXRC
dWd6aWxsYS5PcGVyYXRpbmdTeXN0ZW0uU25vd0xlb3BhcmQ7Ci0gICAgICAgIGlmICgvTGVvcGFy
ZC8udGVzdCh0aGlzLl90ZXN0ZXIubmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gV2ViS2l0QnVn
emlsbGEuT3BlcmF0aW5nU3lzdGVtLkxlb3BhcmQ7Ci0gICAgICAgIHJldHVybiAnJzsKLSAgICB9
LAotCi0gICAgX2NvbXB1dGVQbGF0Zm9ybTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICgvV2lu
ZG93cy8udGVzdCh0aGlzLl90ZXN0ZXIubmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gV2ViS2l0
QnVnemlsbGEuUGxhdGZvcm0uUEM7Ci0gICAgICAgIGlmICgvTGVvcGFyZC8udGVzdCh0aGlzLl90
ZXN0ZXIubmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gV2ViS2l0QnVnemlsbGEuUGxhdGZvcm0u
TWFjaW50b3NoOwotICAgICAgICByZXR1cm4gJyc7Ci0gICAgfSwKLX07Ci0KLVRlc3RSZWxhdGVk
QnVnRm9ybS5wcm90b3R5cGUuX19wcm90b19fID0gTmV3QnVnRm9ybS5wcm90b3R5cGU7CkluZGV4
OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvVGVzdFJlbGF0ZWRCdWdGb3JtX3VuaXR0ZXN0cy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvVGVzdFJlbGF0ZWRCdWdGb3JtX3VuaXR0ZXN0cy5qcwko
cmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1Rlc3RSZWxhdGVkQnVnRm9ybV91
bml0dGVzdHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw5NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
KGZ1bmN0aW9uKCkgewotCi1tb2R1bGUoJ1Rlc3RSZWxhdGVkQnVnRm9ybScpOwotCi1mdW5jdGlv
biBjcmVhdGVUZXN0Rm9ybSh0ZXN0ZXJOYW1lKSB7Ci0gICAgdmFyIG1vY2tCdWlsZGJvdCA9IHt9
OwotICAgIG1vY2tCdWlsZGJvdC5wYXJzZUJ1aWxkTmFtZSA9IGZ1bmN0aW9uKGJ1aWxkTmFtZSkg
ewotICAgICAgICB2YXIgbWF0Y2ggPSAvKFxkKykvLmV4ZWMoYnVpbGROYW1lKTsKLSAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgICAgIHJldmlzaW9uOiBwYXJzZUludChtYXRjaFsxXSwgMTApLAot
ICAgICAgICAgICAgYnVpbGROdW1iZXI6IHBhcnNlSW50KG1hdGNoWzJdLCAxMCksCi0gICAgICAg
IH07Ci0gICAgfTsKLQotICAgIHZhciBtb2NrQnVpbGRlciA9IHt9OwotICAgIG1vY2tCdWlsZGVy
Lm5hbWUgPSB0ZXN0ZXJOYW1lOwotICAgIG1vY2tCdWlsZGVyLmJ1aWxkYm90ID0gbW9ja0J1aWxk
Ym90OwotICAgIG1vY2tCdWlsZGVyLnJlc3VsdHNQYWdlVVJMID0gZnVuY3Rpb24oYnVpbGROYW1l
KSB7Ci0gICAgICAgIHJldHVybiAnW1JFU1VMVFMgUEFHRSBVUkwgJyArIHRoaXMubmFtZSArICcs
ICcgKyBidWlsZE5hbWUgKyAnXSc7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ldyBUZXN0UmVsYXRl
ZEJ1Z0Zvcm0obW9ja0J1aWxkZXIpOwotfQotCi10ZXN0KCdjb21wb25lbnQgYW5kIGtleXdvcmRz
IGFyZSBzZXQnLCAyLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZm9ybSA9IGNyZWF0ZVRlc3RGb3Jt
KCdXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJyk7Ci0KLSAgICBlcXVhbChmb3JtLmNvbXBvbmVu
dCwgV2ViS2l0QnVnemlsbGEuQ29tcG9uZW50LlRvb2xzVGVzdHMpOwotICAgIGRlZXBFcXVhbChm
b3JtLmtleXdvcmRzLnNwbGl0KCcsICcpLCBbV2ViS2l0QnVnemlsbGEuS2V5d29yZC5MYXlvdXRU
ZXN0RmFpbHVyZSwgV2ViS2l0QnVnemlsbGEuS2V5d29yZC5NYWtpbmdCb3RzUmVkXSk7Ci19KTsK
LQotY29uc3QgdGVzdGVycyA9IHsKLSAgICAnR1RLIExpbnV4IDMyLWJpdCBSZWxlYXNlJzogewot
ICAgICAgICBvcGVyYXRpbmdTeXN0ZW06ICcnLAotICAgICAgICBwbGF0Zm9ybTogJycsCi0gICAg
fSwKLSAgICAnTGVvcGFyZCBJbnRlbCBSZWxlYXNlIChUZXN0cyknOiB7Ci0gICAgICAgIG9wZXJh
dGluZ1N5c3RlbTogV2ViS2l0QnVnemlsbGEuT3BlcmF0aW5nU3lzdGVtLkxlb3BhcmQsCi0gICAg
ICAgIHBsYXRmb3JtOiBXZWJLaXRCdWd6aWxsYS5QbGF0Zm9ybS5NYWNpbnRvc2gsCi0gICAgfSwK
LSAgICAnU25vd0xlb3BhcmQgSW50ZWwgUmVsZWFzZSAoVGVzdHMpJzogewotICAgICAgICBvcGVy
YXRpbmdTeXN0ZW06IFdlYktpdEJ1Z3ppbGxhLk9wZXJhdGluZ1N5c3RlbS5Tbm93TGVvcGFyZCwK
LSAgICAgICAgcGxhdGZvcm06IFdlYktpdEJ1Z3ppbGxhLlBsYXRmb3JtLk1hY2ludG9zaCwKLSAg
ICB9LAotICAgICdXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJzogewotICAgICAgICBvcGVyYXRp
bmdTeXN0ZW06IFdlYktpdEJ1Z3ppbGxhLk9wZXJhdGluZ1N5c3RlbS5XaW5kb3dzNywKLSAgICAg
ICAgcGxhdGZvcm06IFdlYktpdEJ1Z3ppbGxhLlBsYXRmb3JtLlBDLAotICAgIH0sCi0gICAgJ1dp
bmRvd3MgWFAgRGVidWcgKFRlc3RzKSc6IHsKLSAgICAgICAgb3BlcmF0aW5nU3lzdGVtOiBXZWJL
aXRCdWd6aWxsYS5PcGVyYXRpbmdTeXN0ZW0uV2luZG93c1hQLAotICAgICAgICBwbGF0Zm9ybTog
V2ViS2l0QnVnemlsbGEuUGxhdGZvcm0uUEMsCi0gICAgfSwKLX07Ci0KLXRlc3QoJ29wZXJhdGlu
ZyBzeXN0ZW0gaXMgZGVkdWNlZCcsIDUsIGZ1bmN0aW9uKCkgewotICAgIGZvciAodmFyIG5hbWUg
aW4gdGVzdGVycykgewotICAgICAgICB2YXIgZm9ybSA9IGNyZWF0ZVRlc3RGb3JtKG5hbWUpOwot
ICAgICAgICBlcXVhbChmb3JtLm9wZXJhdGluZ1N5c3RlbSwgdGVzdGVyc1tuYW1lXS5vcGVyYXRp
bmdTeXN0ZW0pOwotICAgIH0KLX0pOwotCi10ZXN0KCdwbGF0Zm9ybSBpcyBkZWR1Y2VkJywgNSwg
ZnVuY3Rpb24oKSB7Ci0gICAgZm9yICh2YXIgbmFtZSBpbiB0ZXN0ZXJzKSB7Ci0gICAgICAgIHZh
ciBmb3JtID0gY3JlYXRlVGVzdEZvcm0obmFtZSk7Ci0gICAgICAgIGVxdWFsKGZvcm0ucGxhdGZv
cm0sIHRlc3RlcnNbbmFtZV0ucGxhdGZvcm0pOwotICAgIH0KLX0pOwotCi19KSgpOwpJbmRleDog
VG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zY3JpcHRzL1RyYWMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1Ry
YWMuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9UcmFjLmpzCShub25l
eGlzdGVudCkKQEAgLTEsMTc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIgdHJhYyA9IHRyYWMg
fHwge307Ci0KLShmdW5jdGlvbigpIHsKLQotZnVuY3Rpb24gZmluZFVzaW5nUmVnRXhwKHN0cmlu
ZywgcmVnZXhwKQotewotICAgIHZhciBtYXRjaCA9IHJlZ2V4cC5leGVjKHN0cmluZyk7Ci0gICAg
aWYgKG1hdGNoKQotICAgICAgICByZXR1cm4gbWF0Y2hbMV07Ci0gICAgcmV0dXJuIG51bGw7Ci19
Ci0KLWZ1bmN0aW9uIGZpbmRSZXZpZXdlcihtZXNzYWdlKQotewotICAgIHZhciByZWdleHAgPSAv
UmV2aWV3ZWQgYnkgKFteLl0rKS87Ci0gICAgcmV0dXJuIGZpbmRVc2luZ1JlZ0V4cChtZXNzYWdl
LCByZWdleHApOwotfQotCi1mdW5jdGlvbiBmaW5kQXV0aG9yKG1lc3NhZ2UpCi17Ci0gICAgdmFy
IHJlZ2V4cCA9IC9QYXRjaCBieSAoW148XSspIDwvOwotICAgIHJldHVybiBmaW5kVXNpbmdSZWdF
eHAobWVzc2FnZSwgcmVnZXhwKTsKLX0KLQotZnVuY3Rpb24gZmluZEJ1Z0lEKG1lc3NhZ2UpCi17
Ci0gICAgdmFyIHJlZ2V4cCA9IC9cL3Nob3dfYnVnLmNnaVw/aWQ9KFxkKykvOwotICAgIHJldHVy
biBwYXJzZUludChmaW5kVXNpbmdSZWdFeHAobWVzc2FnZSwgcmVnZXhwKSwgMTApOwotfQotCi1m
dW5jdGlvbiBmaW5kUmV2aXNpb24odGl0bGUpCi17Ci0gICAgdmFyIHJlZ2V4cCA9IC9eUmV2aXNp
b24gKFxkKyk6LzsKLSAgICByZXR1cm4gcGFyc2VJbnQoZmluZFVzaW5nUmVnRXhwKHRpdGxlLCBy
ZWdleHApLCAxMCk7Ci19Ci0KLWZ1bmN0aW9uIGZpbmRTdW1tYXJ5KG1lc3NhZ2UpCi17Ci0gICAg
dmFyIGxpbmVzID0gbWVzc2FnZS5zcGxpdCgnXG4nKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGxpbmVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBsaW5lID0gbGluZXNbaV0KLSAgICAg
ICAgaWYgKGZpbmRCdWdJRChsaW5lKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBp
ZiAoZmluZFJldmlld2VyKGxpbmUpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIC8v
IE9sZC1zdHlsZSBjb21taXQgbWVzc2FnZS4KLSAgICAgICAgaWYgKC9eXGRcZFxkXGQtXGRcZC1c
ZFxkLy5leGVjKGxpbmUpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChsaW5l
Lmxlbmd0aCA+IDApCi0gICAgICAgICAgICByZXR1cm4gbGluZTsKLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIGZpbmRSZXZlcnQobWVzc2FnZSkKLXsKLSAgICB2YXIgcmVnZXhwID0gLyg/OnJvbGxpbmcg
b3V0fHJldmVydGluZykgcihcZCspXC4vOwotICAgIHZhciByZXZpc2lvbiA9IGZpbmRVc2luZ1Jl
Z0V4cChtZXNzYWdlLCByZWdleHApOwotICAgIGlmICghcmV2aXNpb24pCi0gICAgICAgIHJldHVy
biB1bmRlZmluZWQ7Ci0gICAgcmV0dXJuIHBhcnNlSW50KHJldmlzaW9uLCAxMCk7Ci19Ci0KLS8v
IEZJWE1FOiBDb25zaWRlciBleHBvc2luZyB0aGlzIG1ldGhvZCBmb3IgdW5pdCB0ZXN0aW5nLgot
ZnVuY3Rpb24gcGFyc2VDb21taXREYXRhKHJlc3BvbnNlWE1MKQotewotICAgIHZhciBjb21taXRz
ID0gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKHJlc3BvbnNlWE1MLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCdpdGVtJyksIGZ1bmN0aW9uKGl0ZW0pIHsKLSAgICAgICAgdmFyIHRpdGxlID0gaXRlbS5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgndGl0bGUnKVswXS50ZXh0Q29udGVudDsKLSAgICAgICAgdmFy
IGF1dGhvciA9IGl0ZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2F1dGhvcicpWzBdIHx8IGl0ZW0u
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RjOmNyZWF0b3InKVswXTsKLSAgICAgICAgYXV0aG9yID0g
YXV0aG9yLnRleHRDb250ZW50OwotICAgICAgICB2YXIgdGltZSA9IGl0ZW0uZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ3B1YkRhdGUnKVswXS50ZXh0Q29udGVudDsKLQotICAgICAgICAvLyBGSVhNRTog
VGhpcyBpc24ndCBhIHZlcnkgaGlnaC1maWRlbGl0eSByZXByb2R1Y3Rpb24gb2YgdGhlIGNvbW1p
dCBtZXNzYWdlLAotICAgICAgICAvLyBidXQgaXQncyBnb29kIGVub3VnaCBmb3Igb3VyIHB1cnBv
c2VzLgotICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7Ci0gICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBpdGVtLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCdkZXNjcmlwdGlvbicpWzBdLnRleHRDb250ZW50OwotICAgICAgICB2YXIgbWVzc2FnZSA9
IGNvbnRhaW5lci5pbm5lclRleHQ7Ci0KLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICdy
ZXZpc2lvbic6IGZpbmRSZXZpc2lvbih0aXRsZSksCi0gICAgICAgICAgICAndGl0bGUnOiB0aXRs
ZSwKLSAgICAgICAgICAgICd0aW1lJzogdGltZSwKLSAgICAgICAgICAgICdzdW1tYXJ5JzogZmlu
ZFN1bW1hcnkobWVzc2FnZSksCi0gICAgICAgICAgICAnYXV0aG9yJzogZmluZEF1dGhvcihtZXNz
YWdlKSB8fCBhdXRob3IsCi0gICAgICAgICAgICAncmV2aWV3ZXInOiBmaW5kUmV2aWV3ZXIobWVz
c2FnZSksCi0gICAgICAgICAgICAnYnVnSUQnOiBmaW5kQnVnSUQobWVzc2FnZSksCi0gICAgICAg
ICAgICAnbWVzc2FnZSc6IG1lc3NhZ2UsCi0gICAgICAgICAgICAncmV2ZXJ0ZWRSZXZpc2lvbic6
IGZpbmRSZXZlcnQobWVzc2FnZSksCi0gICAgICAgIH07Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4g
Y29tbWl0czsKLX0KLQotdmFyIGdfY2FjaGUgPSBuZXcgYmFzZS5Bc3luY2hyb25vdXNDYWNoZShm
dW5jdGlvbihrZXksIGNhbGxiYWNrKSB7Ci0gICAgdmFyIGV4cGxvZGVkS2V5ID0ga2V5LnNwbGl0
KCdcbicpOwotCi0gICAgdmFyIHBhdGggPSBleHBsb2RlZEtleVswXTsKLSAgICB2YXIgc3RhcnRS
ZXZpc2lvbiA9IGV4cGxvZGVkS2V5WzFdOwotICAgIHZhciBlbmRSZXZpc2lvbiA9IGV4cGxvZGVk
S2V5WzJdOwotCi0gICAgdmFyIHVybCA9IHRyYWMubG9nVVJMKHBhdGgsIHN0YXJ0UmV2aXNpb24s
IGVuZFJldmlzaW9uLCB0cnVlLCB0cnVlKTsKLQotICAgIG5ldC5nZXQodXJsLCBmdW5jdGlvbihj
b21taXREYXRhKSB7Ci0gICAgICAgIGNhbGxiYWNrKHBhcnNlQ29tbWl0RGF0YShjb21taXREYXRh
KSk7Ci0gICAgfSk7Ci19KTsKLQotdHJhYy5jaGFuZ2VzZXRVUkwgPSBmdW5jdGlvbihyZXZpc2lv
bikKLXsKLSAgICByZXR1cm4gY29uZmlnLmtUcmFjVVJMICsgJy9jaGFuZ2VzZXQvJyArIHJldmlz
aW9uOwotfTsKLQotdHJhYy5sb2dVUkwgPSBmdW5jdGlvbihwYXRoLCBzdGFydFJldmlzaW9uLCBl
bmRSZXZpc2lvbiwgc2hvd0Z1bGxDb21taXRMb2dzLCBmb3JtYXRBc1JTUykKLXsKLSAgICB2YXIg
cXVlcnlQYXJhbWV0ZXJzID0gewotICAgICAgICByZXY6IGVuZFJldmlzaW9uLAotICAgICAgICBz
dG9wX3Jldjogc3RhcnRSZXZpc2lvbiwKLSAgICAgICAgLy8gVHJhYyByZXF1aXJlcyBsaW1pdCB0
byBiZSAxIG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIHJldmlzaW9ucyB3ZSBhY3R1YWxseSB3YW50
IHRvIHNob3cuCi0gICAgICAgIC8vIFNlZSA8aHR0cDovL3RyYWMuZWRnZXdhbGwub3JnL3RpY2tl
dC8xMDMxNz4uCi0gICAgICAgIGxpbWl0OiBlbmRSZXZpc2lvbiAtIHN0YXJ0UmV2aXNpb24gKyAy
LAotICAgIH07Ci0KLSAgICBpZiAoc2hvd0Z1bGxDb21taXRMb2dzKQotICAgICAgICBxdWVyeVBh
cmFtZXRlcnMudmVyYm9zZSA9ICdvbic7Ci0gICAgaWYgKGZvcm1hdEFzUlNTKQotICAgICAgICBx
dWVyeVBhcmFtZXRlcnMuZm9ybWF0ID0gJ3Jzcyc7Ci0KLSAgICByZXR1cm4gY29uZmlnLmtUcmFj
VVJMICsgJy9sb2cvJyArIHBhdGggKyAnPycgKyAkLnBhcmFtKHF1ZXJ5UGFyYW1ldGVycyk7Ci19
OwotCi10cmFjLnJlY2VudENvbW1pdERhdGEgPSBmdW5jdGlvbihwYXRoLCBsaW1pdCwgY2FsbGJh
Y2spCi17Ci0gICAgdmFyIHVybCA9IGNvbmZpZy5rVHJhY1VSTCArICcvbG9nLycgKyBwYXRoICsg
Jz8nICsgJC5wYXJhbSh7Ci0gICAgICAgICd2ZXJib3NlJzogJ29uJywKLSAgICAgICAgJ2Zvcm1h
dCc6ICdyc3MnLAotICAgICAgICAnbGltaXQnOiBsaW1pdCwKLSAgICB9KTsKLQotICAgIG5ldC5n
ZXQodXJsLCBmdW5jdGlvbihjb21taXREYXRhKSB7Ci0gICAgICAgIGNhbGxiYWNrKHBhcnNlQ29t
bWl0RGF0YShjb21taXREYXRhKSk7Ci0gICAgfSk7Ci19OwotCi10cmFjLmNvbW1pdERhdGFGb3JS
ZXZpc2lvblJhbmdlID0gZnVuY3Rpb24ocGF0aCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24s
IGNhbGxiYWNrKQotewotICAgIHZhciBrZXkgPSBbcGF0aCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2
aXNpb25dLmpvaW4oJ1xuJyk7Ci0gICAgZ19jYWNoZS5nZXQoa2V5LCBjYWxsYmFjayk7Ci19Owot
Ci19KSgpOwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1V0aWxpdGllcy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvVXRpbGl0aWVzLmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29s
cy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3NjcmlwdHMvVXRpbGl0aWVzLmpzCShub25leGlzdGVudCkKQEAgLTEsMTc4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi1mdW5jdGlvbiBjcmVhdGVEZXNjcmlwdGlvbkxpc3QoaXRlbXMpIHsKLSAg
ICB2YXIgbGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RsJyk7Ci0gICAgaXRlbXMuZm9y
RWFjaChmdW5jdGlvbihwYWlyKSB7Ci0gICAgICAgIHZhciBkdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2R0Jyk7Ci0gICAgICAgIGR0LmFwcGVuZENoaWxkKHBhaXJbMF0pOwotICAgICAgICB2
YXIgZGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkZCcpOwotICAgICAgICBkZC5hcHBlbmRD
aGlsZChwYWlyWzFdKTsKLSAgICAgICAgbGlzdC5hcHBlbmRDaGlsZChkdCk7Ci0gICAgICAgIGxp
c3QuYXBwZW5kQ2hpbGQoZGQpOwotICAgIH0pOwotICAgIHJldHVybiBsaXN0OwotfQotCi1mdW5j
dGlvbiBmZXRjaFJlc291cmNlKHVybCwgbWV0aG9kLCBxdWVyeVBhcmFtZXRlcnMsIGNhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKSB7Ci0gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwot
ICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHRo
aXMucmVhZHlTdGF0ZSAhPT0gNCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgLy8gQWxs
b3cgYSBzdGF0dXMgb2YgMCBmb3IgZWFzaWVyIHRlc3Rpbmcgd2l0aCBsb2NhbCBmaWxlcy4KLSAg
ICAgICAgaWYgKCF0aGlzLnN0YXR1cyB8fCB0aGlzLnN0YXR1cyA9PT0gMjAwKQotICAgICAgICAg
ICAgY2FsbGJhY2sodGhpcyk7Ci0gICAgICAgIGVsc2UgaWYgKGVycm9yQ2FsbGJhY2spCi0gICAg
ICAgICAgICBlcnJvckNhbGxiYWNrKHRoaXMpOwotICAgIH07Ci0KLSAgICBpZiAobWV0aG9kID09
PSAnR0VUJyAmJiBxdWVyeVBhcmFtZXRlcnMpCi0gICAgICAgIHVybCA9IGFkZFF1ZXJ5UGFyYW1l
dGVyc1RvVVJMKHVybCwgcXVlcnlQYXJhbWV0ZXJzKTsKLQotICAgIHhoci5vcGVuKG1ldGhvZCwg
dXJsKTsKLQotICAgIGlmIChtZXRob2QgPT09ICdHRVQnKSB7Ci0gICAgICAgIHhoci5zZW5kKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2YXIgZGF0YSA9IHVybEVuY29kZVF1ZXJ5
UGFyYW1ldGVycyhxdWVyeVBhcmFtZXRlcnMpOwotICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdD
b250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7Ci0gICAg
eGhyLnNlbmQoZGF0YSk7Ci19Ci0KLWZ1bmN0aW9uIGdldFJlc291cmNlKHVybCwgY2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spIHsKLSAgICBmZXRjaFJlc291cmNlKHVybCwgJ0dFVCcsIG51bGwsIGNh
bGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gdXJsRW5jb2RlUXVlcnlQYXJh
bWV0ZXJzKHF1ZXJ5UGFyYW1ldGVycykgewotICAgIHZhciBlbmNvZGVkUGFyYW1ldGVycyA9IE9i
amVjdC5rZXlzKHF1ZXJ5UGFyYW1ldGVycykubWFwKGZ1bmN0aW9uKGtleSkgewotICAgICAgICBy
ZXR1cm4ga2V5ICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5UGFyYW1ldGVyc1trZXld
KTsKLSAgICB9KTsKLSAgICByZXR1cm4gZW5jb2RlZFBhcmFtZXRlcnMuam9pbignJicpOwotfQot
Ci1mdW5jdGlvbiBhZGRRdWVyeVBhcmFtZXRlcnNUb1VSTCh1cmwsIHF1ZXJ5UGFyYW1ldGVycykg
ewotICAgIGlmICh1cmwuaW5kZXhPZignPycpIDwgMCkKLSAgICAgICAgdXJsICs9ICc/JzsKLSAg
ICBlbHNlCi0gICAgICAgIHVybCArPSAnJic7Ci0KLSAgICByZXR1cm4gdXJsICsgdXJsRW5jb2Rl
UXVlcnlQYXJhbWV0ZXJzKHF1ZXJ5UGFyYW1ldGVycyk7Ci19Ci0KLWZ1bmN0aW9uIGxvbmdlc3RD
b21tb25QYXRoUHJlZml4KHBhdGhzKSB7Ci0gICAgY29uc3Qgc2VwYXJhdG9yID0gJy8nOwotCi0g
ICAgdmFyIHNwbGl0UGF0aHMgPSBwYXRocy5tYXAoZnVuY3Rpb24ocGF0aCkgeyByZXR1cm4gcGF0
aC5zcGxpdChzZXBhcmF0b3IpIH0pOwotICAgIHZhciBmaXJzdFNwbGl0UGF0aCA9IHNwbGl0UGF0
aHMuc2hpZnQoKTsKLQotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGZpcnN0U3BsaXRQYXRoLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmICghc3BsaXRQYXRo
cy5ldmVyeShmdW5jdGlvbihzcGxpdFBhdGgpIHsgcmV0dXJuIHNwbGl0UGF0aFtpXSA9PT0gZmly
c3RTcGxpdFBhdGhbaV0gfSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgcmVzdWx0LnB1
c2goZmlyc3RTcGxpdFBhdGhbaV0pOwotICAgIH0KLQotICAgIGlmICghcmVzdWx0Lmxlbmd0aCkK
LSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgcmV0dXJuIHJlc3VsdC5qb2luKHNlcGFyYXRvcik7
Ci19Ci0KLWZ1bmN0aW9uIHJlbW92ZVBhdGhFeHRlbnNpb24oc3RyaW5nKSB7Ci0gICAgdmFyIGRv
dEluZGV4ID0gc3RyaW5nLmxhc3RJbmRleE9mKCcuJyk7Ci0gICAgaWYgKGRvdEluZGV4IDwgMCkK
LSAgICAgICAgcmV0dXJuIHN0cmluZzsKLSAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZygwLCBk
b3RJbmRleCk7Ci19Ci0KLWZ1bmN0aW9uIHNvcnRlZChhcnJheSwgc29ydEZ1bmN0aW9uKSB7Ci0g
ICAgdmFyIG5ld0FycmF5ID0gYXJyYXkuc2xpY2UoKTsKLSAgICBuZXdBcnJheS5zb3J0KHNvcnRG
dW5jdGlvbik7Ci0gICAgcmV0dXJuIG5ld0FycmF5OwotfQotCi1BcnJheS5wcm90b3R5cGUuY29u
dGFpbnMgPSBmdW5jdGlvbih2YWx1ZSkgewotICAgIHJldHVybiB0aGlzLmluZGV4T2YodmFsdWUp
ID49IDA7Ci19Ci0KLUFycmF5LnByb3RvdHlwZS5maW5kRmlyc3QgPSBmdW5jdGlvbihwcmVkaWNh
dGUpIHsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgaWYgKHByZWRpY2F0ZSh0aGlzW2ldKSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzW2ldOwot
ICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLX0KLQotQXJyYXkucHJvdG90eXBlLmZpbmRMYXN0ID0g
ZnVuY3Rpb24ocHJlZGljYXRlKSB7Ci0gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsg
aSA+PSAwOyAtLWkpIHsKLSAgICAgICAgaWYgKHByZWRpY2F0ZSh0aGlzW2ldKSkKLSAgICAgICAg
ICAgIHJldHVybiB0aGlzW2ldOwotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLX0KLQotQXJyYXku
cHJvdG90eXBlLmxhc3QgPSBmdW5jdGlvbigpIHsKLSAgICBpZiAoIXRoaXMubGVuZ3RoKQotICAg
ICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgIHJldHVybiB0aGlzW3RoaXMubGVuZ3RoIC0gMV07
Ci19Ci0KLUVsZW1lbnQucHJvdG90eXBlLmhhc1N0eWxlQ2xhc3MgPSBmdW5jdGlvbihrbGFzcykg
ewotICAgIHZhciByZWdleCA9IG5ldyBSZWdFeHAoJ1xcYicgKyBrbGFzcyArICdcXGInKTsKLSAg
ICByZXR1cm4gcmVnZXgudGVzdCh0aGlzLmNsYXNzTmFtZSk7Ci19Ci0KLUVsZW1lbnQucHJvdG90
eXBlLmFkZFN0eWxlQ2xhc3MgPSBmdW5jdGlvbihrbGFzcykgewotICAgIGlmICh0aGlzLmhhc1N0
eWxlQ2xhc3Moa2xhc3MpKQotICAgICAgICByZXR1cm47Ci0gICAgdGhpcy5jbGFzc05hbWUgKz0g
JyAnICsga2xhc3M7Ci19Ci0KLUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZVN0eWxlQ2xhc3MgPSBm
dW5jdGlvbihrbGFzcykgewotICAgIHZhciByZWdleCA9IG5ldyBSZWdFeHAoJ1xcYicgKyBrbGFz
cyArICdcXGInLCAnZycpOwotICAgIHRoaXMuY2xhc3NOYW1lID0gdGhpcy5jbGFzc05hbWUucmVw
bGFjZShyZWdleCwgJycpOwotfQotCi1FbGVtZW50LnByb3RvdHlwZS50b2dnbGVTdHlsZUNsYXNz
ID0gZnVuY3Rpb24oa2xhc3MpIHsKLSAgICBpZiAodGhpcy5oYXNTdHlsZUNsYXNzKGtsYXNzKSkK
LSAgICAgICAgdGhpcy5yZW1vdmVTdHlsZUNsYXNzKGtsYXNzKTsKLSAgICBlbHNlCi0gICAgICAg
IHRoaXMuYWRkU3R5bGVDbGFzcyhrbGFzcyk7Ci19Ci0KLU5vZGUucHJvdG90eXBlLmFwcGVuZENo
aWxkcmVuID0gZnVuY3Rpb24oY2hpbGRyZW4pIHsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNo
aWxkcmVuLmxlbmd0aDsgKytpKQotICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGNoaWxkcmVuW2ld
KTsKLX0KLQotTm9kZS5wcm90b3R5cGUucmVtb3ZlQWxsQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsK
LSAgICB3aGlsZSAodGhpcy5maXJzdENoaWxkKQotICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKHRo
aXMuZmlyc3RDaGlsZCk7Ci19Ci0KLVN0cmluZy5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlv
bihzdWJzdHJpbmcpIHsKLSAgICByZXR1cm4gdGhpcy5pbmRleE9mKHN1YnN0cmluZykgPj0gMDsK
LX0KSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9VdGlsaXRpZXNfdW5pdHRlc3RzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9VdGlsaXRpZXNfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiAy
NjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvVXRpbGl0aWVzX3VuaXR0ZXN0cy5qcwkobm9uZXhp
c3RlbnQpCkBAIC0xLDEyNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1bmN0aW9uKCkgewotCi1t
b2R1bGUoJ1V0aWxpdGllcycpOwotCi10ZXN0KCdoYXNTdHlsZUNsYXNzJywgMTEsIGZ1bmN0aW9u
KCkgewotICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0K
LSAgICBvayghZWxlbWVudC5oYXNTdHlsZUNsYXNzKCdmb28nKSk7Ci0gICAgb2soIWVsZW1lbnQu
aGFzU3R5bGVDbGFzcygnYmFyJykpOwotCi0gICAgZWxlbWVudC5jbGFzc05hbWUgPSAnZm9vJzsK
LSAgICBvayhlbGVtZW50Lmhhc1N0eWxlQ2xhc3MoJ2ZvbycpKQotICAgIG9rKCFlbGVtZW50Lmhh
c1N0eWxlQ2xhc3MoJ2JhcicpKTsKLQotICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2ZvbyBmb28n
OwotICAgIG9rKGVsZW1lbnQuaGFzU3R5bGVDbGFzcygnZm9vJykpCi0gICAgb2soIWVsZW1lbnQu
aGFzU3R5bGVDbGFzcygnYmFyJykpOwotCi0gICAgZWxlbWVudC5jbGFzc05hbWUgPSAnZm9vIGJh
cic7Ci0gICAgb2soZWxlbWVudC5oYXNTdHlsZUNsYXNzKCdmb28nKSkKLSAgICBvayhlbGVtZW50
Lmhhc1N0eWxlQ2xhc3MoJ2JhcicpKTsKLSAgICBvayghZWxlbWVudC5oYXNTdHlsZUNsYXNzKCdi
YXonKSk7Ci0KLSAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdmb29kJzsKLSAgICBvayghZWxlbWVu
dC5oYXNTdHlsZUNsYXNzKCdmb28nKSk7Ci0gICAgb2soZWxlbWVudC5oYXNTdHlsZUNsYXNzKCdm
b29kJykpOwotfSk7Ci0KLXRlc3QoJ2FkZFN0eWxlQ2xhc3MnLCA0LCBmdW5jdGlvbigpIHsKLSAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotCi0gICAgZWxl
bWVudC5hZGRTdHlsZUNsYXNzKCdmb28nKTsKLSAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwg
JyBmb28nKTsKLQotICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygnZm9vJyk7Ci0gICAgZXF1YWwo
ZWxlbWVudC5jbGFzc05hbWUsICcgZm9vJyk7Ci0KLSAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3Mo
J2JhcicpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnIGZvbyBiYXInKTsKLQotICAg
IGVsZW1lbnQuYWRkU3R5bGVDbGFzcygnZm9vJyk7Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFzc05h
bWUsICcgZm9vIGJhcicpOwotfSk7Ci0KLXRlc3QoJ3JlbW92ZVN0eWxlQ2xhc3MnLCA4LCBmdW5j
dGlvbigpIHsKLSAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OwotCi0gICAgZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCdmb28nKTsKLSAgICBlcXVhbChlbGVt
ZW50LmNsYXNzTmFtZSwgJycpOwotCi0gICAgZWxlbWVudC5jbGFzc05hbWUgPSAnZm9vJzsKLSAg
ICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoJ2ZvbycpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xh
c3NOYW1lLCAnJyk7Ci0KLSAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICcgZm9vJzsKLSAgICBlbGVt
ZW50LnJlbW92ZVN0eWxlQ2xhc3MoJ2ZvbycpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1l
LCAnICcpOwotCi0gICAgZWxlbWVudC5jbGFzc05hbWUgPSAnZm9vIGZvbyc7Ci0gICAgZWxlbWVu
dC5yZW1vdmVTdHlsZUNsYXNzKCdmb28nKTsKLSAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwg
JyAnKTsKLQotICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2ZvbyBiYXInOwotICAgIGVsZW1lbnQu
cmVtb3ZlU3R5bGVDbGFzcygnZm9vJyk7Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICcg
YmFyJyk7Ci0KLSAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdmb28gYmFyIGZvbyBiYXInOwotICAg
IGVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygnYmFyJyk7Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFz
c05hbWUsICdmb28gIGZvbyAnKTsKLQotICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2Zvb2QnOwot
ICAgIGVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygnZm9vJyk7Ci0gICAgZXF1YWwoZWxlbWVudC5j
bGFzc05hbWUsICdmb29kJyk7Ci0KLSAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdmb28nOwotICAg
IGVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygnZm9vZCcpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xh
c3NOYW1lLCAnZm9vJyk7Ci19KTsKLQotdGVzdCgndG9nZ2xlU3R5bGVDbGFzcycsIDUsIGZ1bmN0
aW9uKCkgewotICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
Ci0KLSAgICBlbGVtZW50LnRvZ2dsZVN0eWxlQ2xhc3MoJ2ZvbycpOwotICAgIGVxdWFsKGVsZW1l
bnQuY2xhc3NOYW1lLCAnIGZvbycpOwotCi0gICAgZWxlbWVudC50b2dnbGVTdHlsZUNsYXNzKCdm
b28nKTsKLSAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJyAnKTsKLQotICAgIGVsZW1lbnQu
Y2xhc3NOYW1lID0gJ2Jhcic7Ci0gICAgZWxlbWVudC50b2dnbGVTdHlsZUNsYXNzKCdmb28nKTsK
LSAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJ2JhciBmb28nKTsKLQotICAgIGVsZW1lbnQu
Y2xhc3NOYW1lID0gJ2Zvb2QnOwotICAgIGVsZW1lbnQudG9nZ2xlU3R5bGVDbGFzcygnZm9vJyk7
Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICdmb29kIGZvbycpOwotCi0gICAgZWxlbWVu
dC5jbGFzc05hbWUgPSAnZm9vJzsKLSAgICBlbGVtZW50LnRvZ2dsZVN0eWxlQ2xhc3MoJ2Zvb2Qn
KTsKLSAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJ2ZvbyBmb29kJyk7Ci19KTsKLQotfSko
KTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9WaWV3Q29udHJvbGxlci5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvVmlld0NvbnRyb2xsZXIuanMJKHJldmlzaW9uIDI2OTExMSkKKysr
IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy9WaWV3Q29udHJvbGxlci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDQz
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotZnVuY3Rpb24gVmlld0NvbnRyb2xsZXIoYnVpbGRib3Qp
IHsKLSAgICB0aGlzLl9idWlsZGJvdCA9IGJ1aWxkYm90OwotICAgIHRoaXMuX25hdmlnYXRpb25J
RCA9IDA7Ci0KLSAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgYWRkRXZlbnRMaXN0ZW5lcignbG9h
ZCcsIGZ1bmN0aW9uKCkgeyBzZWxmLmxvYWRlZCgpIH0sIGZhbHNlKTsKLSAgICBhZGRFdmVudExp
c3RlbmVyKCdoYXNoY2hhbmdlJywgZnVuY3Rpb24oKSB7IHNlbGYucGFyc2VIYXNoKGxvY2F0aW9u
Lmhhc2gpIH0sIGZhbHNlKTsKLX0KLQotVmlld0NvbnRyb2xsZXIucHJvdG90eXBlID0gewotICAg
IGxvYWRlZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRoaXMuX2hlYWRlciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2gxJyk7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhp
cy5faGVhZGVyKTsKLSAgICAgICAgdGhpcy5fbWFpbkNvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
dGhpcy5fbWFpbkNvbnRlbnRFbGVtZW50KTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZCh0aGlzLl9kb21Gb3JBdXhpbGlhcnlVSUVsZW1lbnRzKCkpOwotCi0gICAgICAgIHRoaXMu
cGFyc2VIYXNoKGxvY2F0aW9uLmhhc2gpOwotICAgIH0sCi0KLSAgICBwYXJzZUhhc2g6IGZ1bmN0
aW9uKGhhc2gpIHsKLSAgICAgICAgKyt0aGlzLl9uYXZpZ2F0aW9uSUQ7Ci0KLSAgICAgICAgdmFy
IG1hdGNoID0gLyNcLyguKikvLmV4ZWMoaGFzaCk7Ci0gICAgICAgIGlmIChtYXRjaCkKLSAgICAg
ICAgICAgIHRoaXMuX2Rpc3BsYXlCdWlsZGVyKHRoaXMuX2J1aWxkYm90LmJ1aWxkZXJOYW1lZChk
ZWNvZGVVUklDb21wb25lbnQobWF0Y2hbMV0pKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHRoaXMuX2Rpc3BsYXlUZXN0ZXJzKCk7Ci0gICAgfSwKLQotICAgIF9kaXNwbGF5QnVpbGRlcjog
ZnVuY3Rpb24oYnVpbGRlcikgewotICAgICAgICB0aGlzLl9zZXRUaXRsZShidWlsZGVyLm5hbWUp
OwotICAgICAgICB0aGlzLl9tYWluQ29udGVudEVsZW1lbnQucmVtb3ZlQWxsQ2hpbGRyZW4oKTsK
LQotICAgICAgICB2YXIgbmF2aWdhdGlvbklEID0gdGhpcy5fbmF2aWdhdGlvbklEOwotCi0gICAg
ICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgKG5ldyBMYXlvdXRUZXN0SGlzdG9yeUFuYWx5
emVyKGJ1aWxkZXIpKS5zdGFydChmdW5jdGlvbihkYXRhLCBzdGlsbEZldGNoaW5nRGF0YSkgewot
ICAgICAgICAgICAgaWYgKHNlbGYuX25hdmlnYXRpb25JRCAhPT0gbmF2aWdhdGlvbklEKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gVGhlIHVzZXIgaGFzIG5hdmlnYXRlZCBzb21ld2hlcmUgZWxzZS4g
U3RvcCBsb2FkaW5nIGRhdGEgYWJvdXQgdGhpcyB0ZXN0ZXIuCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgbGlzdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ29sJyk7Ci0gICAgICAgICAgICBsaXN0LmlkID0gJ2ZhaWx1cmUt
aGlzdG9yeSc7Ci0KLSAgICAgICAgICAgIHZhciBidWlsZE5hbWVzID0gT2JqZWN0LmtleXMoZGF0
YS5oaXN0b3J5KQotICAgICAgICAgICAgYnVpbGROYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKGJ1aWxk
TmFtZSwgYnVpbGRJbmRleCwgYnVpbGROYW1lQXJyYXkpIHsKLSAgICAgICAgICAgICAgICB2YXIg
ZmFpbGluZ1Rlc3ROYW1lcyA9IE9iamVjdC5rZXlzKGRhdGEuaGlzdG9yeVtidWlsZE5hbWVdLnRl
c3RzKTsKLSAgICAgICAgICAgICAgICBpZiAoIWZhaWxpbmdUZXN0TmFtZXMubGVuZ3RoKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7Ci0gICAgICAgICAgICAgICAgbGlzdC5hcHBlbmRD
aGlsZChpdGVtKTsKLQotICAgICAgICAgICAgICAgIHZhciB0ZXN0TGlzdCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ29sJyk7Ci0gICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZCh0ZXN0
TGlzdCk7Ci0KLSAgICAgICAgICAgICAgICB0ZXN0TGlzdC5jbGFzc05hbWUgPSAndGVzdC1saXN0
JzsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiBkYXRhLmhpc3RvcnlbYnVp
bGROYW1lXS50ZXN0cykgewotICAgICAgICAgICAgICAgICAgICB2YXIgdGVzdEl0ZW0gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwotICAgICAgICAgICAgICAgICAgICB0ZXN0SXRlbS5h
cHBlbmRDaGlsZChzZWxmLl9kb21Gb3JGYWlsZWRUZXN0KGJ1aWxkZXIsIGJ1aWxkTmFtZSwgdGVz
dE5hbWUsIGRhdGEuaGlzdG9yeVtidWlsZE5hbWVdLnRlc3RzW3Rlc3ROYW1lXSkpOwotICAgICAg
ICAgICAgICAgICAgICB0ZXN0TGlzdC5hcHBlbmRDaGlsZCh0ZXN0SXRlbSk7Ci0gICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaGlzdG9yeVtidWlsZE5hbWVdLnRv
b01hbnlGYWlsdXJlcykgewotICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3AnKTsKLSAgICAgICAgICAgICAgICAgICAgcC5jbGFzc05hbWUgPSAnaW5m
byc7Ci0gICAgICAgICAgICAgICAgICAgIHAuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJ3J1bi13ZWJraXQtdGVzdHMgZXhpdGVkIGVhcmx5IGR1ZSB0byB0b28gbWFueSBmYWls
dXJlcy9jcmFzaGVzL3RpbWVvdXRzJykpOwotICAgICAgICAgICAgICAgICAgICBpdGVtLmFwcGVu
ZENoaWxkKHApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHZhciBwYXNz
aW5nQnVpbGROYW1lOwotICAgICAgICAgICAgICAgIGlmIChidWlsZEluZGV4ICsgMSA8IGJ1aWxk
TmFtZUFycmF5Lmxlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAgcGFzc2luZ0J1aWxkTmFtZSA9
IGJ1aWxkTmFtZUFycmF5W2J1aWxkSW5kZXggKyAxXTsKLQotICAgICAgICAgICAgICAgIGl0ZW0u
YXBwZW5kQ2hpbGQoc2VsZi5fZG9tRm9yUmVncmVzc2lvblJhbmdlKGJ1aWxkZXIsIGJ1aWxkTmFt
ZSwgcGFzc2luZ0J1aWxkTmFtZSwgZmFpbGluZ1Rlc3ROYW1lcykpOwotCi0gICAgICAgICAgICAg
ICAgaWYgKHBhc3NpbmdCdWlsZE5hbWUgfHwgIXN0aWxsRmV0Y2hpbmdEYXRhKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHZhciBidWdGb3JtID0gbmV3IEZhaWxpbmdUZXN0c0J1Z0Zvcm0oYnVpbGRl
ciwgYnVpbGROYW1lLCBwYXNzaW5nQnVpbGROYW1lLCBmYWlsaW5nVGVzdE5hbWVzKTsKLSAgICAg
ICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChzZWxmLl9kb21Gb3JOZXdBbmRFeGlzdGlu
Z0J1Z3MoYnVpbGRlciwgZmFpbGluZ1Rlc3ROYW1lcywgYnVnRm9ybSkpCi0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIHNlbGYuX21haW5Db250ZW50RWxl
bWVudC5yZW1vdmVBbGxDaGlsZHJlbigpOwotICAgICAgICAgICAgc2VsZi5fbWFpbkNvbnRlbnRF
bGVtZW50LmFwcGVuZENoaWxkKGxpc3QpOwotICAgICAgICAgICAgc2VsZi5fbWFpbkNvbnRlbnRF
bGVtZW50LmFwcGVuZENoaWxkKHNlbGYuX2RvbUZvclBvc3NpYmx5Rmxha3lUZXN0cyhidWlsZGVy
LCBkYXRhLnBvc3NpYmx5Rmxha3ksIGJ1aWxkTmFtZXMpKTsKLQotICAgICAgICAgICAgaWYgKCFz
dGlsbEZldGNoaW5nRGF0YSkKLSAgICAgICAgICAgICAgICBQZXJzaXN0ZW50Q2FjaGUucHJ1bmUo
KTsKLQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAg
ICBfZGlzcGxheVRlc3RlcnM6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLl9zZXRUaXRsZSgn
VGVzdGVycycpOwotICAgICAgICB0aGlzLl9tYWluQ29udGVudEVsZW1lbnQucmVtb3ZlQWxsQ2hp
bGRyZW4oKTsKLQotICAgICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Vs
Jyk7Ci0gICAgICAgIHRoaXMuX21haW5Db250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChsaXN0KTsK
LQotICAgICAgICB2YXIgbGF0ZXN0QnVpbGRJbmZvcyA9IFtdOwotICAgICAgICB2YXIgbmF2aWdh
dGlvbklEID0gdGhpcy5fbmF2aWdhdGlvbklEOwotCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUxp
c3QoKSB7Ci0gICAgICAgICAgICBsYXRlc3RCdWlsZEluZm9zLnNvcnQoZnVuY3Rpb24oYSwgYikg
eyByZXR1cm4gYS50ZXN0ZXIubmFtZS5sb2NhbGVDb21wYXJlKGIudGVzdGVyLm5hbWUpIH0pOwot
ICAgICAgICAgICAgbGlzdC5yZW1vdmVBbGxDaGlsZHJlbigpOwotICAgICAgICAgICAgbGF0ZXN0
QnVpbGRJbmZvcy5mb3JFYWNoKGZ1bmN0aW9uKGJ1aWxkSW5mbykgewotICAgICAgICAgICAgICAg
IHZhciBsaW5rID0gYmFzZS5jcmVhdGVMaW5rTm9kZSgnIy8nICsgYnVpbGRJbmZvLnRlc3Rlci5u
YW1lLCBidWlsZEluZm8udGVzdGVyLm5hbWUpCi0gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwotICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5k
Q2hpbGQobGluayk7Ci0gICAgICAgICAgICAgICAgaWYgKGJ1aWxkSW5mby50b29NYW55RmFpbHVy
ZXMpCi0gICAgICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoJyAodG9vIG1hbnkgZmFpbHVyZXMvY3Jhc2hlcy90aW1lb3V0cyknKSk7Ci0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCcgKCcgKyBidWlsZEluZm8uZmFpbHVyZUNvdW50ICsgJyBm
YWlsaW5nIHRlc3QnICsgKGJ1aWxkSW5mby5mYWlsdXJlQ291bnQgPiAxID8gJ3MnIDogJycpICsg
JyknKSk7Ci0gICAgICAgICAgICAgICAgbGlzdC5hcHBlbmRDaGlsZChpdGVtKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICB0
aGlzLl9idWlsZGJvdC5nZXRUZXN0ZXJzKGZ1bmN0aW9uKHRlc3RlcnMpIHsKLSAgICAgICAgICAg
IGlmIChzZWxmLl9uYXZpZ2F0aW9uSUQgIT09IG5hdmlnYXRpb25JRCkgewotICAgICAgICAgICAg
ICAgIC8vIFRoZSB1c2VyIGhhcyBuYXZpZ2F0ZWQgc29tZXdoZXJlIGVsc2UuCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVzdGVycy5mb3JFYWNo
KGZ1bmN0aW9uKHRlc3RlcikgewotICAgICAgICAgICAgICAgIHRlc3Rlci5nZXRNb3N0UmVjZW50
Q29tcGxldGVkQnVpbGROdW1iZXIoZnVuY3Rpb24oYnVpbGROdW1iZXIpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHNlbGYuX25hdmlnYXRpb25JRCAhPT0gbmF2aWdhdGlvbklEKQotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICBpZiAoYnVpbGRO
dW1iZXIgPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
ICAgICAgICB0ZXN0ZXIuZ2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHMoYnVpbGROdW1iZXIsIGZ1bmN0
aW9uKGZhaWx1cmVDb3VudCwgdG9vTWFueUZhaWx1cmVzKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoc2VsZi5fbmF2aWdhdGlvbklEICE9PSBuYXZpZ2F0aW9uSUQpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZh
aWx1cmVDb3VudCA8PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxhdGVzdEJ1aWxkSW5mb3MucHVzaCh7IHRlc3RlcjogdGVz
dGVyLCBmYWlsdXJlQ291bnQ6IGZhaWx1cmVDb3VudCwgdG9vTWFueUZhaWx1cmVzOiB0b29NYW55
RmFpbHVyZXMgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVMaXN0KCk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBfZG9tRm9yUmVncmVzc2lvblJhbmdlOiBmdW5j
dGlvbihidWlsZGVyLCBmYWlsaW5nQnVpbGROYW1lLCBwYXNzaW5nQnVpbGROYW1lLCBmYWlsaW5n
VGVzdE5hbWVzKSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCk7Ci0KLSAgICAgICAgdmFyIGRsSXRlbXMgPSBbCi0gICAgICAgICAgICBbZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0ZhaWxlZCcpLCB0aGlzLl9kb21Gb3JCdWlsZE5hbWUoYnVp
bGRlciwgZmFpbGluZ0J1aWxkTmFtZSldLAotICAgICAgICBdOwotICAgICAgICBpZiAocGFzc2lu
Z0J1aWxkTmFtZSkKLSAgICAgICAgICAgIGRsSXRlbXMucHVzaChbZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJ1Bhc3NlZCcpLCB0aGlzLl9kb21Gb3JCdWlsZE5hbWUoYnVpbGRlciwgcGFzc2luZ0J1
aWxkTmFtZSldKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKGNyZWF0ZURlc2NyaXB0aW9u
TGlzdChkbEl0ZW1zKSk7Ci0KLSAgICAgICAgaWYgKCFwYXNzaW5nQnVpbGROYW1lKQotICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgICAgICB2YXIgZmlyc3RTdXNwZWN0UmV2aXNpb24g
PSB0aGlzLl9idWlsZGJvdC5wYXJzZUJ1aWxkTmFtZShwYXNzaW5nQnVpbGROYW1lKS5yZXZpc2lv
biArIDE7Ci0gICAgICAgIHZhciBsYXN0U3VzcGVjdFJldmlzaW9uID0gdGhpcy5fYnVpbGRib3Qu
cGFyc2VCdWlsZE5hbWUoZmFpbGluZ0J1aWxkTmFtZSkucmV2aXNpb247Ci0KLSAgICAgICAgaWYg
KGZpcnN0U3VzcGVjdFJldmlzaW9uID09PSBsYXN0U3VzcGVjdFJldmlzaW9uKQotICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLQotICAgICAgICB2YXIgc3VzcGVjdHNDb250YWluZXIgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKHN1
c3BlY3RzQ29udGFpbmVyKTsKLQotICAgICAgICB2YXIgbGluayA9IGJhc2UuY3JlYXRlTGlua05v
ZGUodHJhYy5sb2dVUkwoJ3RydW5rJywgZmlyc3RTdXNwZWN0UmV2aXNpb24sIGxhc3RTdXNwZWN0
UmV2aXNpb24sIHRydWUpLCAnVmlldyByZWdyZXNzaW9uIHJhbmdlIGluIFRyYWMnKTsKLSAgICAg
ICAgcmVzdWx0LmFwcGVuZENoaWxkKGxpbmspOwotCi0gICAgICAgIHN1c3BlY3RzQ29udGFpbmVy
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdTZWFyY2hpbmcgZm9yIHN1c3Bl
Y3QgcmV2aXNpb25zXHUyMDI2JykpOwotCi0gICAgICAgIC8vIEZJWE1FOiBNYXliZSBzb21lIG9m
IHRoaXMgY29kZSBzaG91bGQgZ28gaW4gTGF5b3V0VGVzdEhpc3RvcnlBbmFseXplciwgb3Igc29t
ZSBvdGhlciBjbGFzcz8KLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICB0cmFjLmNv
bW1pdERhdGFGb3JSZXZpc2lvblJhbmdlKCd0cnVuaycsIGZpcnN0U3VzcGVjdFJldmlzaW9uLCBs
YXN0U3VzcGVjdFJldmlzaW9uLCBmdW5jdGlvbihjb21taXRzKSB7Ci0gICAgICAgICAgICB2YXIg
ZmFpbGluZ1Rlc3ROYW1lc1dpdGhvdXRFeHRlbnNpb25zID0gZmFpbGluZ1Rlc3ROYW1lcy5tYXAo
cmVtb3ZlUGF0aEV4dGVuc2lvbik7Ci0gICAgICAgICAgICB2YXIgc3VzcGVjdENvbW1pdHMgPSBj
b21taXRzLmZpbHRlcihmdW5jdGlvbihjb21taXQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFpbGluZ1Rlc3ROYW1lc1dpdGhvdXRFeHRlbnNpb25zLnNvbWUoZnVuY3Rpb24odGVzdE5hbWUp
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1pdC5tZXNzYWdlLmNvbnRhaW5zKHRl
c3ROYW1lKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAg
ICAgICBzdXNwZWN0c0NvbnRhaW5lci5yZW1vdmVBbGxDaGlsZHJlbigpOwotCi0gICAgICAgICAg
ICBpZiAoIXN1c3BlY3RDb21taXRzLmxlbmd0aCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgIHZhciB0aXRsZSA9ICdTdXNwZWN0IHJldmlzaW9uJyArIChzdXNwZWN0Q29t
bWl0cy5sZW5ndGggPiAxID8gJ3MnIDogJycpICsgJzonOwotICAgICAgICAgICAgc3VzcGVjdHND
b250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGl0bGUpKTsKLQot
ICAgICAgICAgICAgdmFyIGxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpOwotICAg
ICAgICAgICAgc3VzcGVjdHNDb250YWluZXIuYXBwZW5kQ2hpbGQobGlzdCk7Ci0gICAgICAgICAg
ICBsaXN0LmNsYXNzTmFtZSA9ICdzdXNwZWN0LXJldmlzaW9ucy1saXN0JzsKLQotICAgICAgICAg
ICAgZnVuY3Rpb24gY29tcGFyZUNvbW1pdHMoYSwgYikgewotICAgICAgICAgICAgICAgIHJldHVy
biBiLnJldmlzaW9uIC0gYS5yZXZpc2lvbjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
bGlzdC5hcHBlbmRDaGlsZHJlbihzb3J0ZWQoc3VzcGVjdENvbW1pdHMsIGNvbXBhcmVDb21taXRz
KS5tYXAoZnVuY3Rpb24oY29tbWl0KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwotICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hp
bGQoYmFzZS5jcmVhdGVMaW5rTm9kZSh0cmFjLmNoYW5nZXNldFVSTChjb21taXQucmV2aXNpb24p
LCBjb21taXQudGl0bGUpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTsKLSAgICAgICAg
ICAgIH0pKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAot
Ci0gICAgX2RvbUZvckF1eGlsaWFyeVVJRWxlbWVudHM6IGZ1bmN0aW9uKCkgewotICAgICAgICB2
YXIgYXNpZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhc2lkZScpOwotICAgICAgICBhc2lk
ZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnU29tZXRoaW5nIG5vdCB3b3Jr
aW5nPyBIYXZlIGFuIGlkZWEgdG8gaW1wcm92ZSB0aGlzIHBhZ2U/ICcpKTsKLSAgICAgICAgdmFy
IHF1ZXJ5UGFyYW1ldGVycyA9IHsKLSAgICAgICAgICAgIHByb2R1Y3Q6ICdXZWJLaXQnLAotICAg
ICAgICAgICAgY29tcG9uZW50OiAnVG9vbHMgLyBUZXN0cycsCi0gICAgICAgICAgICB2ZXJzaW9u
OiAnNTI4KyAoTmlnaHRseSBidWlsZCknLAotICAgICAgICAgICAgYnVnX2ZpbGVfbG9jOiBsb2Nh
dGlvbi5ocmVmLAotICAgICAgICAgICAgY2M6ICdhcm9iZW5AYXBwbGUuY29tJywKLSAgICAgICAg
ICAgIHNob3J0X2Rlc2M6ICdUZXN0RmFpbHVyZXMgcGFnZSBuZWVkcyBtb3JlIHVuaWNvcm5zIScs
Ci0gICAgICAgIH07Ci0gICAgICAgIGFzaWRlLmFwcGVuZENoaWxkKGJhc2UuY3JlYXRlTGlua05v
ZGUoYWRkUXVlcnlQYXJhbWV0ZXJzVG9VUkwoY29uZmlnLmtCdWd6aWxsYVVSTCArICcvZW50ZXJf
YnVnLmNnaScsIHF1ZXJ5UGFyYW1ldGVycyksICdGaWxlIGEgYnVnIScsICdfYmxhbmsnKSk7Ci0g
ICAgICAgIHJldHVybiBhc2lkZTsKLSAgICB9LAotCi0gICAgX2RvbUZvckJ1aWxkTmFtZTogZnVu
Y3Rpb24oYnVpbGRlciwgYnVpbGROYW1lKSB7Ci0gICAgICAgIHZhciBwYXJzZWQgPSB0aGlzLl9i
dWlsZGJvdC5wYXJzZUJ1aWxkTmFtZShidWlsZE5hbWUpOwotCi0gICAgICAgIHZhciBzb3VyY2VM
aW5rID0gYmFzZS5jcmVhdGVMaW5rTm9kZSgnaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LycgKyBwYXJzZWQucmV2aXNpb24sICdyJyArIHBhcnNlZC5yZXZpc2lvbik7Ci0gICAgICAg
IHZhciBidWlsZExpbmsgPSBiYXNlLmNyZWF0ZUxpbmtOb2RlKGJ1aWxkZXIuYnVpbGRVUkwocGFy
c2VkLmJ1aWxkTnVtYmVyKSwgcGFyc2VkLmJ1aWxkTnVtYmVyKTsKLSAgICAgICAgdmFyIHJlc3Vs
dHNMaW5rID0gYmFzZS5jcmVhdGVMaW5rTm9kZShidWlsZGVyLnJlc3VsdHNQYWdlVVJMKGJ1aWxk
TmFtZSksICdyZXN1bHRzLmh0bWwnKTsKLQotICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQu
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoc291
cmNlTGluayk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnICgnKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChidWlsZExpbmspOwotICAg
ICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJykgKCcpKTsK
LSAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKHJlc3VsdHNMaW5rKTsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcpJykpOwotCi0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgfSwKLQotICAgIF9kb21Gb3JGYWlsZWRUZXN0OiBmdW5jdGlvbihi
dWlsZGVyLCBidWlsZE5hbWUsIHRlc3ROYW1lLCB0ZXN0UmVzdWx0KSB7Ci0gICAgICAgIHZhciBy
ZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXN0TmFtZSArICc6ICcpKTsK
LSAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKHRoaXMuX2RvbUZvckZhaWx1cmVEaWFnbm9zaXMo
YnVpbGRlciwgYnVpbGROYW1lLCB0ZXN0TmFtZSwgdGVzdFJlc3VsdCkpOwotICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgIH0sCi0KLSAgICBfZG9tRm9yRmFpbHVyZURpYWdub3NpczogZnVuY3Rp
b24oYnVpbGRlciwgYnVpbGROYW1lLCB0ZXN0TmFtZSwgdGVzdFJlc3VsdCkgewotICAgICAgICB2
YXIgZGlhZ25vc3RpY0luZm8gPSBidWlsZGVyLmZhaWx1cmVEaWFnbm9zaXNUZXh0QW5kVVJMKGJ1
aWxkTmFtZSwgdGVzdE5hbWUsIHRlc3RSZXN1bHQpOwotICAgICAgICBpZiAoIWRpYWdub3N0aWNJ
bmZvKQotICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRlc3RSZXN1
bHQuZmFpbHVyZVR5cGUpOwotCi0gICAgICAgIHZhciB0ZXh0QW5kQ3Jhc2hpbmdTeW1ib2wgPSBk
b2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgICAgIHRleHRBbmRDcmFzaGlu
Z1N5bWJvbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShkaWFnbm9zdGljSW5m
by50ZXh0KSk7Ci0gICAgICAgIGlmICh0ZXN0UmVzdWx0LmNyYXNoaW5nU3ltYm9sKSB7Ci0gICAg
ICAgICAgICB2YXIgY29kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NvZGUnKTsKLSAgICAg
ICAgICAgIGNvZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGVzdFJlc3Vs
dC5jcmFzaGluZ1N5bWJvbCkpOwotICAgICAgICAgICAgdGV4dEFuZENyYXNoaW5nU3ltYm9sLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcgKCcpKTsKLSAgICAgICAgICAgIHRl
eHRBbmRDcmFzaGluZ1N5bWJvbC5hcHBlbmRDaGlsZChjb2RlKTsKLSAgICAgICAgICAgIHRleHRB
bmRDcmFzaGluZ1N5bWJvbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnKScp
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghKCd1cmwnIGluIGRpYWdub3N0aWNJbmZvKSkK
LSAgICAgICAgICAgIHJldHVybiB0ZXh0QW5kQ3Jhc2hpbmdTeW1ib2w7Ci0KLSAgICAgICAgcmV0
dXJuIGJhc2UuY3JlYXRlTGlua05vZGUoZGlhZ25vc3RpY0luZm8udXJsLCB0ZXh0QW5kQ3Jhc2hp
bmdTeW1ib2wpOwotICAgIH0sCi0KLSAgICBfZG9tRm9yTmV3QW5kRXhpc3RpbmdCdWdzOiBmdW5j
dGlvbih0ZXN0ZXIsIGZhaWxpbmdUZXN0cywgYnVnRm9ybSkgewotICAgICAgICB2YXIgcmVzdWx0
ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotCi0gICAgICAgIHZhciBjb250
YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmRDaGlsZChjb250YWluZXIpOwotCi0gICAgICAgIGNvbnRhaW5lci5jbGFzc05hbWUgPSAnZXhp
c3RpbmctYW5kLW5ldy1idWdzJzsKLQotICAgICAgICB2YXIgYnVnc0NvbnRhaW5lciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQo
YnVnc0NvbnRhaW5lcik7Ci0KLSAgICAgICAgYnVnc0NvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnU2VhcmNoaW5nIGZvciBidWdzIHJlbGF0ZWQgdG8gJyArIChm
YWlsaW5nVGVzdHMubGVuZ3RoID4gMSA/ICd0aGVzZSB0ZXN0cycgOiAndGhpcyB0ZXN0JykgKyAn
XHUyMDI2JykpOwotCi0gICAgICAgIGJ1Z3ppbGxhLnF1aWNrU2VhcmNoKCdBTEwgJyArIGZhaWxp
bmdUZXN0cy5qb2luKCd8JyksIGZ1bmN0aW9uKGJ1Z3MpIHsKLSAgICAgICAgICAgIGlmICghYnVn
cy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBidWdzQ29udGFpbmVyLnBhcmVudE5vZGUucmVt
b3ZlQ2hpbGQoYnVnc0NvbnRhaW5lcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICB3aGlsZSAoYnVnc0NvbnRhaW5lci5maXJzdENoaWxkKQot
ICAgICAgICAgICAgICAgIGJ1Z3NDb250YWluZXIucmVtb3ZlQ2hpbGQoYnVnc0NvbnRhaW5lci5m
aXJzdENoaWxkKTsKLQotICAgICAgICAgICAgYnVnc0NvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnRXhpc3RpbmcgYnVncyByZWxhdGVkIHRvICcgKyAoZmFpbGlu
Z1Rlc3RzLmxlbmd0aCA+IDEgPyAndGhlc2UgdGVzdHMnIDogJ3RoaXMgdGVzdCcpICsgJzonKSk7
Ci0KLSAgICAgICAgICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwnKTsK
LSAgICAgICAgICAgIGJ1Z3NDb250YWluZXIuYXBwZW5kQ2hpbGQobGlzdCk7Ci0KLSAgICAgICAg
ICAgIGxpc3QuY2xhc3NOYW1lID0gJ2V4aXN0aW5nLWJ1Z3MtbGlzdCc7Ci0KLSAgICAgICAgICAg
IGZ1bmN0aW9uIGJ1Z1RvTGlzdEl0ZW0oYnVnKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGxpbmsg
PSBiYXNlLmNyZWF0ZUxpbmtOb2RlKGJ1Zy51cmwsIGJ1Zy50aXRsZSk7Ci0gICAgICAgICAgICAg
ICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwotICAgICAgICAgICAg
ICAgIGl0ZW0uYXBwZW5kQ2hpbGQobGluayk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gaXRl
bTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIG9wZW5CdWdzID0gYnVncy5maWx0
ZXIoZnVuY3Rpb24oYnVnKSB7IHJldHVybiBidWd6aWxsYS5pc09wZW5TdGF0dXMoYnVnLnN0YXR1
cykgfSk7Ci0gICAgICAgICAgICB2YXIgY2xvc2VkQnVncyA9IGJ1Z3MuZmlsdGVyKGZ1bmN0aW9u
KGJ1ZykgeyByZXR1cm4gIWJ1Z3ppbGxhLmlzT3BlblN0YXR1cyhidWcuc3RhdHVzKSB9KTsKLQot
ICAgICAgICAgICAgbGlzdC5hcHBlbmRDaGlsZHJlbihvcGVuQnVncy5tYXAoYnVnVG9MaXN0SXRl
bSkpOwotCi0gICAgICAgICAgICBpZiAoIWNsb3NlZEJ1Z3MubGVuZ3RoKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdsaScpOwotICAgICAgICAgICAgbGlzdC5hcHBlbmRDaGlsZChpdGVtKTsKLQotICAgICAg
ICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnQ2xvc2VkIGJ1
Z3M6JykpOwotCi0gICAgICAgICAgICB2YXIgY2xvc2VkTGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3VsJyk7Ci0gICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGNsb3NlZExpc3QpOwot
Ci0gICAgICAgICAgICBjbG9zZWRMaXN0LmFwcGVuZENoaWxkcmVuKGNsb3NlZEJ1Z3MubWFwKGJ1
Z1RvTGlzdEl0ZW0pKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdmFyIGZvcm0gPSBidWdGb3Jt
LmRvbUVsZW1lbnQoKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKGZvcm0pOwotCi0gICAg
ICAgIHZhciBsaW5rVGV4dCA9ICdGaWxlIGJ1ZyBmb3IgJyArIChmYWlsaW5nVGVzdHMubGVuZ3Ro
ID4gMSA/ICd0aGVzZSBmYWlsdXJlcycgOiAndGhpcyBmYWlsdXJlJyk7Ci0gICAgICAgIHZhciBs
aW5rID0gYmFzZS5jcmVhdGVMaW5rTm9kZSgnIycsIGxpbmtUZXh0KTsKLSAgICAgICAgbGluay5h
ZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2ZW50KSB7IGZvcm0uc3VibWl0KCk7
IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IH0pOwotCi0gICAgICAgIGNvbnRhaW5lci5hcHBlbmRD
aGlsZChsaW5rKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAotCi0gICAgX2RvbUZv
clBvc3NpYmx5Rmxha3lUZXN0czogZnVuY3Rpb24oYnVpbGRlciwgcG9zc2libHlGbGFreVRlc3RE
YXRhLCBhbGxCdWlsZHMpIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZURv
Y3VtZW50RnJhZ21lbnQoKTsKLSAgICAgICAgdmFyIGZsYWt5VGVzdHMgPSBPYmplY3Qua2V5cyhw
b3NzaWJseUZsYWt5VGVzdERhdGEpOwotICAgICAgICBpZiAoIWZsYWt5VGVzdHMubGVuZ3RoKQot
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgICAgICB2YXIgZmxha3lIZWFkZXIgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdoMicpOwotICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQo
Zmxha3lIZWFkZXIpOwotICAgICAgICBmbGFreUhlYWRlci5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgnUG9zc2libHkgRmxha3kgVGVzdHMnKSk7Ci0KLSAgICAgICAgdmFyIGZs
YWt5TGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29sJyk7Ci0gICAgICAgIHJlc3VsdC5h
cHBlbmRDaGlsZChmbGFreUxpc3QpOwotCi0gICAgICAgIGZsYWt5TGlzdC5pZCA9ICdwb3NzaWJs
eS1mbGFreS10ZXN0cyc7Ci0KLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBmbGFr
eUxpc3QuYXBwZW5kQ2hpbGRyZW4oc29ydGVkKGZsYWt5VGVzdHMpLm1hcChmdW5jdGlvbih0ZXN0
TmFtZSkgewotICAgICAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCds
aScpOwotCi0gICAgICAgICAgICB2YXIgZGlzY2xvc3VyZVRyaWFuZ2xlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc3BhbicpOwotICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkaXNjbG9z
dXJlVHJpYW5nbGUpOwotCi0gICAgICAgICAgICBkaXNjbG9zdXJlVHJpYW5nbGUuY2xhc3NOYW1l
ID0gJ2Rpc2Nsb3N1cmUtdHJpYW5nbGUnOwotICAgICAgICAgICAgY29uc3QgYmxhY2tSaWdodFBv
aW50aW5nU21hbGxUcmlhbmdsZSA9ICdcdTI1YjgnOwotICAgICAgICAgICAgZGlzY2xvc3VyZVRy
aWFuZ2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGJsYWNrUmlnaHRQb2lu
dGluZ1NtYWxsVHJpYW5nbGUpKTsKLQotICAgICAgICAgICAgdmFyIGZhaWx1cmVzID0gcG9zc2li
bHlGbGFreVRlc3REYXRhW3Rlc3ROYW1lXTsKLQotICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXN0TmFtZSArICcgKGZhaWxlZCAnICsgZmFpbHVy
ZXMubGVuZ3RoICsgJyBvdXQgb2YgJyArIGFsbEJ1aWxkcy5sZW5ndGggKyAnIHRpbWVzKScpKTsK
LQotICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOwotICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChjb250YWluZXIpOwotCi0gICAgICAg
ICAgICBjb250YWluZXIuY2xhc3NOYW1lID0gJ2V4cGFuZGFibGUnOwotCi0gICAgICAgICAgICBk
aXNjbG9zdXJlVHJpYW5nbGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICBpdGVtLnRvZ2dsZVN0eWxlQ2xhc3MoJ2V4cGFuZGVkJyk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFpdGVtLmhhc1N0eWxlQ2xhc3MoJ2V4cGFuZGVkJykpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGlmICghY29udGFpbmVyLmZp
cnN0Q2hpbGQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGZhaWx1cmVMaXN0ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnb2wnKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmFw
cGVuZENoaWxkKGZhaWx1cmVMaXN0KTsKLQotICAgICAgICAgICAgICAgICAgICBmYWlsdXJlTGlz
dC5jbGFzc05hbWUgPSAnZmxha2luZXNzLWV4YW1wbGVzLWxpc3QnOwotCi0gICAgICAgICAgICAg
ICAgICAgIGZhaWx1cmVMaXN0LmFwcGVuZENoaWxkcmVuKGZhaWx1cmVzLm1hcChmdW5jdGlvbiho
aXN0b3J5SXRlbSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdsaScpOwotICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5hcHBl
bmRDaGlsZChzZWxmLl9kb21Gb3JCdWlsZE5hbWUoYnVpbGRlciwgaGlzdG9yeUl0ZW0uYnVpbGQp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoJzogJykpOwotICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRD
aGlsZChzZWxmLl9kb21Gb3JGYWlsdXJlRGlhZ25vc2lzKGJ1aWxkZXIsIGhpc3RvcnlJdGVtLmJ1
aWxkLCB0ZXN0TmFtZSwgaGlzdG9yeUl0ZW0ucmVzdWx0KSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gaXRlbTsKLSAgICAgICAgICAgICAgICAgICAgfSkpOwotCi0gICAgICAgICAg
ICAgICAgICAgIHZhciBmYWlsaW5nQnVpbGROYW1lcyA9IGZhaWx1cmVzLm1hcChmdW5jdGlvbiho
aXN0b3J5SXRlbSkgeyByZXR1cm4gaGlzdG9yeUl0ZW0uYnVpbGQgfSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciBidWdGb3JtID0gbmV3IEZsYWt5VGVzdEJ1Z0Zvcm0oYnVpbGRlciwgZmFpbGlu
Z0J1aWxkTmFtZXMsIHRlc3ROYW1lLCBhbGxCdWlsZHMubGFzdCgpLCBhbGxCdWlsZHNbMF0sIGFs
bEJ1aWxkcy5sZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hp
bGQoc2VsZi5fZG9tRm9yTmV3QW5kRXhpc3RpbmdCdWdzKGJ1aWxkZXIsIFt0ZXN0TmFtZV0sIGJ1
Z0Zvcm0pKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAg
ICAgcmV0dXJuIGl0ZW07Ci0gICAgICAgIH0pKTsKLQotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0sCi0KLSAgICBfc2V0VGl0bGU6IGZ1bmN0aW9uKHRpdGxlKSB7Ci0gICAgICAgIGRvY3Vt
ZW50LnRpdGxlID0gdGl0bGU7Ci0gICAgICAgIHRoaXMuX2hlYWRlci50ZXh0Q29udGVudCA9IHRp
dGxlOwotICAgIH0sCi19OwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1dlYktpdEJ1Z3ppbGxhLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9XZWJLaXRCdWd6aWxsYS5qcwkocmV2aXNp
b24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1dlYktpdEJ1Z3ppbGxhLmpzCShub25leGlz
dGVudCkKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWNvbnN0IFdlYktpdEJ1Z3ppbGxh
ID0gewotICAgIENvbXBvbmVudDogewotICAgICAgICBUb29sc1Rlc3RzOiAnVG9vbHMgLyBUZXN0
cycsCi0gICAgfSwKLQotICAgIEtleXdvcmQ6IHsKLSAgICAgICAgTGF5b3V0VGVzdEZhaWx1cmU6
ICdMYXlvdXRUZXN0RmFpbHVyZScsCi0gICAgICAgIE1ha2luZ0JvdHNSZWQ6ICdNYWtpbmdCb3Rz
UmVkJywKLSAgICAgICAgUmVncmVzc2lvbjogJ1JlZ3Jlc3Npb24nLAotICAgIH0sCi0KLSAgICBP
cGVyYXRpbmdTeXN0ZW06IHsKLSAgICAgICAgTGVvcGFyZDogJ01hYyBPUyBYIDEwLjUnLAotICAg
ICAgICBTbm93TGVvcGFyZDogJ01hYyBPUyBYIDEwLjYnLAotICAgICAgICBXaW5kb3dzNzogJ1dp
bmRvd3MgNycsCi0gICAgICAgIFdpbmRvd3NYUDogJ1dpbmRvd3MgWFAnLAotICAgIH0sCi0KLSAg
ICBQbGF0Zm9ybTogewotICAgICAgICBNYWNpbnRvc2g6ICdNYWNpbnRvc2gnLAotICAgICAgICBQ
QzogJ1BDJywKLSAgICB9LAotCi0gICAgUHJvZHVjdDogewotICAgICAgICBXZWJLaXQ6ICdXZWJL
aXQnLAotICAgIH0sCi0KLSAgICBWZXJzaW9uOiB7Ci0gICAgICAgIE5pZ2h0bHk6ICc1MjgrIChO
aWdodGx5IGJ1aWxkKScsCi0gICAgfSwKLX07CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvV2ViS2l0
QnVpbGRib3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1dlYktpdEJ1aWxkYm90
LmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvV2ViS2l0QnVpbGRib3Qu
anMJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotZnVuY3Rpb24g
V2ViS2l0QnVpbGRib3QoKSB7Ci0gICAgQnVpbGRib3QuY2FsbCh0aGlzLCAnaHR0cHM6Ly9idWls
ZC53ZWJraXQub3JnLycpOwotfQotCi1XZWJLaXRCdWlsZGJvdC5wcm90b3R5cGUgPSB7Ci0gICAg
cGFyc2VCdWlsZE5hbWU6IGZ1bmN0aW9uKGJ1aWxkTmFtZSkgewotICAgICAgICB2YXIgbWF0Y2gg
PSAvXnIoXGQrKSBcKChcZCspXCkkLy5leGVjKGJ1aWxkTmFtZSk7Ci0gICAgICAgIGlmICghbWF0
Y2gpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAg
ICAgIHJldmlzaW9uOiBwYXJzZUludChtYXRjaFsxXSwgMTApLAotICAgICAgICAgICAgYnVpbGRO
dW1iZXI6IHBhcnNlSW50KG1hdGNoWzJdLCAxMCksCi0gICAgICAgIH07Ci0gICAgfSwKLX07Ci0K
LVdlYktpdEJ1aWxkYm90LnByb3RvdHlwZS5fX3Byb3RvX18gPSBCdWlsZGJvdC5wcm90b3R5cGU7
CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvYmFzZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvYmFzZS5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2Jhc2Uu
anMJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIgYmFz
ZSA9IGJhc2UgfHwge307Ci0KLShmdW5jdGlvbigpewotCi0vLyBTYWZhcmkgNS4xIGxhY2tzIEZ1
bmN0aW9uLnByb3RvdHlwZS5iaW5kLgotaWYgKCEoJ2JpbmQnIGluIEZ1bmN0aW9uLnByb3RvdHlw
ZSkpIHsKLSAgICBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKHRoaXNPYmplY3Qp
IHsKLSAgICAgICAgdmFyIG1ldGhvZCA9IHRoaXM7Ci0gICAgICAgIHZhciBib3VuZEFyZ3VtZW50
cyA9IFtdOwotICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgYm91bmRBcmd1bWVudHMucHVzaChhcmd1bWVudHNbaV0pOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciBhY3R1
YWxQYXJhbWV0ZXJzID0gW107Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJvdW5k
QXJndW1lbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYWN0dWFsUGFyYW1ldGVy
cy5wdXNoKGJvdW5kQXJndW1lbnRzW2ldKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgYWN0dWFsUGFyYW1ldGVycy5wdXNoKGFyZ3VtZW50c1tpXSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICByZXR1cm4gbWV0aG9kLmFwcGx5KHRoaXNPYmplY3QsIGFjdHVhbFBhcmFtZXRl
cnMpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1iYXNlLmFzSW50ZWdlciA9IGZ1bmN0aW9uKHN0
cmluZ09ySW50ZWdlcikKLXsKLSAgICBpZiAodHlwZW9mIHN0cmluZ09ySW50ZWdlciA9PSAnc3Ry
aW5nJykKLSAgICAgICAgcmV0dXJuIHBhcnNlSW50KHN0cmluZ09ySW50ZWdlcik7Ci0gICAgcmV0
dXJuIHN0cmluZ09ySW50ZWdlcjsKLX07Ci0KLWJhc2UuZW5kc1dpdGggPSBmdW5jdGlvbihzdHJp
bmcsIHN1ZmZpeCkKLXsKLSAgICBpZiAoc3VmZml4Lmxlbmd0aCA+IHN0cmluZy5sZW5ndGgpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2YXIgZXhwZWN0ZWRJbmRleCA9IHN0cmluZy5sZW5n
dGggLSBzdWZmaXgubGVuZ3RoOwotICAgIHJldHVybiBzdHJpbmcubGFzdEluZGV4T2Yoc3VmZml4
KSA9PSBleHBlY3RlZEluZGV4OwotfTsKLQotYmFzZS5yZXBlYXRTdHJpbmcgPSBmdW5jdGlvbihz
dHJpbmcsIGNvdW50KQotewotICAgIHJldHVybiBuZXcgQXJyYXkoY291bnQgKyAxKS5qb2luKHN0
cmluZyk7Ci19OwotCi1iYXNlLmpvaW5QYXRoID0gZnVuY3Rpb24ocGFyZW50LCBjaGlsZCkKLXsK
LSAgICBpZiAocGFyZW50Lmxlbmd0aCA9PSAwKQotICAgICAgICByZXR1cm4gY2hpbGQ7Ci0gICAg
cmV0dXJuIHBhcmVudCArICcvJyArIGNoaWxkOwotfTsKLQotYmFzZS5kaXJOYW1lID0gZnVuY3Rp
b24ocGF0aCkKLXsKLSAgICB2YXIgZGlyZWN0b3J5SW5kZXggPSBwYXRoLmxhc3RJbmRleE9mKCcv
Jyk7Ci0gICAgaWYgKGRpcmVjdG9yeUluZGV4ID09IC0xKQotICAgICAgICByZXR1cm4gcGF0aDsK
LSAgICByZXR1cm4gcGF0aC5zdWJzdHIoMCwgZGlyZWN0b3J5SW5kZXgpOwotfTsKLQotYmFzZS50
cmltRXh0ZW5zaW9uID0gZnVuY3Rpb24odXJsKQotewotICAgIHZhciBpbmRleCA9IHVybC5sYXN0
SW5kZXhPZignLicpOwotICAgIGlmIChpbmRleCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIHVybDsK
LSAgICByZXR1cm4gdXJsLnN1YnN0cigwLCBpbmRleCk7Ci19Ci0KLWJhc2UudW5pcXVpZnlBcnJh
eSA9IGZ1bmN0aW9uKGFycmF5KQotewotICAgIHZhciBzZWVuID0ge307Ci0gICAgdmFyIHJlc3Vs
dCA9IFtdOwotICAgICQuZWFjaChhcnJheSwgZnVuY3Rpb24oaW5kZXgsIHZhbHVlKSB7Ci0gICAg
ICAgIGlmIChzZWVuW3ZhbHVlXSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc2Vlblt2
YWx1ZV0gPSB0cnVlOwotICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7Ci0gICAgfSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX07Ci0KLWJhc2UuZmxhdHRlbkFycmF5ID0gZnVuY3Rpb24oYXJyYXlP
ZkFycmF5cykKLXsKLSAgICBpZiAoIWFycmF5T2ZBcnJheXMubGVuZ3RoKQotICAgICAgICByZXR1
cm4gW107Ci0gICAgcmV0dXJuIGFycmF5T2ZBcnJheXMucmVkdWNlKGZ1bmN0aW9uKGxlZnQsIHJp
Z2h0KSB7Ci0gICAgICAgIHJldHVybiBsZWZ0LmNvbmNhdChyaWdodCk7ICAKLSAgICB9KTsKLX07
Ci0KLWJhc2UuZmlsdGVyRGljdGlvbmFyeSA9IGZ1bmN0aW9uKGRpY3Rpb25hcnksIHByZWRpY2F0
ZSkKLXsKLSAgICB2YXIgcmVzdWx0ID0ge307Ci0KLSAgICBmb3IgKHZhciBrZXkgaW4gZGljdGlv
bmFyeSkgewotICAgICAgICBpZiAocHJlZGljYXRlKGtleSkpCi0gICAgICAgICAgICByZXN1bHRb
a2V5XSA9IGRpY3Rpb25hcnlba2V5XTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfTsK
LQotYmFzZS5tYXBEaWN0aW9uYXJ5ID0gZnVuY3Rpb24oZGljdGlvbmFyeSwgZnVuY3RvcikKLXsK
LSAgICB2YXIgcmVzdWx0ID0ge307Ci0KLSAgICBmb3IgKHZhciBrZXkgaW4gZGljdGlvbmFyeSkg
ewotICAgICAgICB2YXIgdmFsdWUgPSBmdW5jdG9yKGRpY3Rpb25hcnlba2V5XSk7Ci0gICAgICAg
IGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKQotICAgICAgICAgICAgcmVzdWx0W2tl
eV0gPSB2YWx1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfTsKLQotYmFzZS5maWx0
ZXJUcmVlID0gZnVuY3Rpb24odHJlZSwgaXNMZWFmLCBwcmVkaWNhdGUpCi17Ci0gICAgdmFyIGZp
bHRlcmVkVHJlZSA9IHt9OwotCi0gICAgZnVuY3Rpb24gd2Fsa1N1YnRyZWUoc3VidHJlZSwgZGly
ZWN0b3J5KQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgY2hpbGROYW1lIGluIHN1YnRyZWUpIHsK
LSAgICAgICAgICAgIHZhciBjaGlsZCA9IHN1YnRyZWVbY2hpbGROYW1lXTsKLSAgICAgICAgICAg
IHZhciBjaGlsZFBhdGggPSBiYXNlLmpvaW5QYXRoKGRpcmVjdG9yeSwgY2hpbGROYW1lKTsKLSAg
ICAgICAgICAgIGlmIChpc0xlYWYoY2hpbGQpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByZWRp
Y2F0ZShjaGlsZCkpCi0gICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkVHJlZVtjaGlsZFBhdGhd
ID0gY2hpbGQ7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB3YWxrU3VidHJlZShjaGlsZCwgY2hpbGRQYXRoKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHdhbGtTdWJ0cmVlKHRyZWUsICcnKTsKLSAgICByZXR1cm4gZmlsdGVyZWRUcmVlOwot
fTsKLQotYmFzZS5mb3JFYWNoRGlyZWN0b3J5ID0gZnVuY3Rpb24ocGF0aExpc3QsIGNhbGxiYWNr
KQotewotICAgIHZhciBwYXRoc0J5RGlyZWN0b3J5ID0ge307Ci0gICAgcGF0aExpc3QuZm9yRWFj
aChmdW5jdGlvbihwYXRoKSB7Ci0gICAgICAgIHZhciBkaXJlY3RvcnkgPSBiYXNlLmRpck5hbWUo
cGF0aCk7Ci0gICAgICAgIHBhdGhzQnlEaXJlY3RvcnlbZGlyZWN0b3J5XSA9IHBhdGhzQnlEaXJl
Y3RvcnlbZGlyZWN0b3J5XSB8fCBbXTsKLSAgICAgICAgcGF0aHNCeURpcmVjdG9yeVtkaXJlY3Rv
cnldLnB1c2gocGF0aCk7Ci0gICAgfSk7Ci0gICAgT2JqZWN0LmtleXMocGF0aHNCeURpcmVjdG9y
eSkuc29ydCgpLmZvckVhY2goZnVuY3Rpb24oZGlyZWN0b3J5KSB7Ci0gICAgICAgIHZhciBwYXRo
cyA9IHBhdGhzQnlEaXJlY3RvcnlbZGlyZWN0b3J5XTsKLSAgICAgICAgY2FsbGJhY2soZGlyZWN0
b3J5ICsgJyAoJyArIHBhdGhzLmxlbmd0aCArICcgdGVzdHMpJywgcGF0aHMpOwotICAgIH0pOwot
fTsKLQotYmFzZS5wYXJzZUpTT05QID0gZnVuY3Rpb24oanNvbnApCi17Ci0gICAgdmFyIHN0YXJ0
SW5kZXggPSBqc29ucC5pbmRleE9mKCcoJykgKyAxOwotICAgIHZhciBlbmRJbmRleCA9IGpzb25w
Lmxhc3RJbmRleE9mKCcpJyk7Ci0gICAgaWYgKHN0YXJ0SW5kZXggPT0gMCB8fCBlbmRJbmRleCA9
PSAtMSkKLSAgICAgICAgcmV0dXJuIHt9OwotICAgIHJldHVybiBKU09OLnBhcnNlKGpzb25wLnN1
YnN0cihzdGFydEluZGV4LCBlbmRJbmRleCAtIHN0YXJ0SW5kZXgpKTsKLX07Ci0KLWJhc2UuUmVx
dWVzdFRyYWNrZXIgPSBmdW5jdGlvbihyZXF1ZXN0c0luRmxpZ2h0LCBjYWxsYmFjaywgYXJncykK
LXsKLSAgICB0aGlzLl9yZXF1ZXN0c0luRmxpZ2h0ID0gcmVxdWVzdHNJbkZsaWdodDsKLSAgICB0
aGlzLl9jYWxsYmFjayA9IGNhbGxiYWNrOwotICAgIHRoaXMuX2FyZ3MgPSBhcmdzIHx8IFtdOwot
ICAgIHRoaXMuX3RyeUNhbGxiYWNrKCk7Ci19OwotCi1iYXNlLlJlcXVlc3RUcmFja2VyLnByb3Rv
dHlwZSA9IHsKLSAgICBfdHJ5Q2FsbGJhY2s6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlm
ICghdGhpcy5fcmVxdWVzdHNJbkZsaWdodCAmJiB0aGlzLl9jYWxsYmFjaykKLSAgICAgICAgICAg
IHRoaXMuX2NhbGxiYWNrLmFwcGx5KG51bGwsIHRoaXMuX2FyZ3MpOwotICAgIH0sCi0gICAgcmVx
dWVzdENvbXBsZXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICAtLXRoaXMuX3JlcXVlc3Rz
SW5GbGlnaHQ7Ci0gICAgICAgIHRoaXMuX3RyeUNhbGxiYWNrKCk7Ci0gICAgfQotfQotCi1iYXNl
LmNhbGxJblBhcmFsbGVsID0gZnVuY3Rpb24oZnVuY3Rpb25MaXN0LCBjYWxsYmFjaykKLXsKLSAg
ICB2YXIgcmVxdWVzdFRyYWNrZXIgPSBuZXcgYmFzZS5SZXF1ZXN0VHJhY2tlcihmdW5jdGlvbkxp
c3QubGVuZ3RoLCBjYWxsYmFjayk7Ci0KLSAgICAkLmVhY2goZnVuY3Rpb25MaXN0LCBmdW5jdGlv
bihpbmRleCwgZnVuYykgewotICAgICAgICBmdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
cmVxdWVzdFRyYWNrZXIucmVxdWVzdENvbXBsZXRlKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwot
fTsKLQotYmFzZS5jYWxsSW5TZXF1ZW5jZSA9IGZ1bmN0aW9uKGZ1bmMsIGFyZ3VtZW50TGlzdCwg
Y2FsbGJhY2spCi17Ci0gICAgdmFyIG5leHRJbmRleCA9IDA7Ci0KLSAgICBmdW5jdGlvbiBjYWxs
TmV4dCgpCi0gICAgewotICAgICAgICBpZiAobmV4dEluZGV4ID49IGFyZ3VtZW50TGlzdC5sZW5n
dGgpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBmdW5jKGFyZ3VtZW50TGlzdFtuZXh0SW5kZXgrK10sIGNhbGxOZXh0
KTsKLSAgICB9Ci0KLSAgICBjYWxsTmV4dCgpOwotfTsKLQotYmFzZS5DYWxsYmFja0l0ZXJhdG9y
ID0gZnVuY3Rpb24oY2FsbGJhY2ssIGxpc3RPZkFyZ3VtZW50QXJyYXlzKQotewotICAgIHRoaXMu
X2NhbGxiYWNrID0gY2FsbGJhY2s7Ci0gICAgdGhpcy5fbmV4dEluZGV4ID0gMDsKLSAgICB0aGlz
Ll9saXN0T2ZBcmd1bWVudEFycmF5cyA9IGxpc3RPZkFyZ3VtZW50QXJyYXlzOwotfTsKLQotYmFz
ZS5DYWxsYmFja0l0ZXJhdG9yLnByb3RvdHlwZS5oYXNOZXh0ID0gZnVuY3Rpb24oKQotewotICAg
IHJldHVybiB0aGlzLl9uZXh0SW5kZXggPCB0aGlzLl9saXN0T2ZBcmd1bWVudEFycmF5cy5sZW5n
dGg7Ci19OwotCi1iYXNlLkNhbGxiYWNrSXRlcmF0b3IucHJvdG90eXBlLmhhc1ByZXZpb3VzID0g
ZnVuY3Rpb24oKQotewotICAgIHJldHVybiB0aGlzLl9uZXh0SW5kZXggLSAyID49IDA7Ci19Owot
Ci1iYXNlLkNhbGxiYWNrSXRlcmF0b3IucHJvdG90eXBlLmNhbGxOZXh0ID0gZnVuY3Rpb24oKQot
ewotICAgIGlmICghdGhpcy5oYXNOZXh0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICB2YXIgYXJn
cyA9IHRoaXMuX2xpc3RPZkFyZ3VtZW50QXJyYXlzW3RoaXMuX25leHRJbmRleF07Ci0gICAgdGhp
cy5fbmV4dEluZGV4Kys7Ci0gICAgdGhpcy5fY2FsbGJhY2suYXBwbHkobnVsbCwgYXJncyk7Ci19
OwotCi1iYXNlLkNhbGxiYWNrSXRlcmF0b3IucHJvdG90eXBlLmNhbGxQcmV2aW91cyA9IGZ1bmN0
aW9uKCkKLXsKLSAgICBpZiAoIXRoaXMuaGFzUHJldmlvdXMoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHZhciBhcmdzID0gdGhpcy5fbGlzdE9mQXJndW1lbnRBcnJheXNbdGhpcy5fbmV4dEluZGV4
IC0gMl07Ci0gICAgdGhpcy5fbmV4dEluZGV4LS07Ci0gICAgdGhpcy5fY2FsbGJhY2suYXBwbHko
bnVsbCwgYXJncyk7Ci19OwotCi1iYXNlLkFzeW5jaHJvbm91c0NhY2hlID0gZnVuY3Rpb24oZmV0
Y2gpCi17Ci0gICAgdGhpcy5fZmV0Y2ggPSBmZXRjaDsKLSAgICB0aGlzLl9kYXRhQ2FjaGUgPSB7
fTsKLSAgICB0aGlzLl9jYWxsYmFja0NhY2hlID0ge307Ci19OwotCi1iYXNlLkFzeW5jaHJvbm91
c0NhY2hlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihrZXksIGNhbGxiYWNrKQotewotICAgIHZh
ciBzZWxmID0gdGhpczsKLQotICAgIGlmIChzZWxmLl9kYXRhQ2FjaGVba2V5XSkgewotICAgICAg
ICAvLyBGSVhNRTogQ29uc2lkZXIgYWx3YXlzIGNhbGxpbmcgY2FsbGJhY2sgYXN5bmNocm9ub3Vz
bHkuCi0gICAgICAgIGNhbGxiYWNrKHNlbGYuX2RhdGFDYWNoZVtrZXldKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChrZXkgaW4gc2VsZi5fY2FsbGJhY2tDYWNoZSkgewotICAg
ICAgICBzZWxmLl9jYWxsYmFja0NhY2hlW2tleV0ucHVzaChjYWxsYmFjayk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBzZWxmLl9jYWxsYmFja0NhY2hlW2tleV0gPSBbY2FsbGJhY2td
OwotCi0gICAgc2VsZi5fZmV0Y2guY2FsbChudWxsLCBrZXksIGZ1bmN0aW9uKGRhdGEpIHsKLSAg
ICAgICAgc2VsZi5fZGF0YUNhY2hlW2tleV0gPSBkYXRhOwotCi0gICAgICAgIHZhciBjYWxsYmFj
a0xpc3QgPSBzZWxmLl9jYWxsYmFja0NhY2hlW2tleV07Ci0gICAgICAgIGRlbGV0ZSBzZWxmLl9j
YWxsYmFja0NhY2hlW2tleV07Ci0KLSAgICAgICAgY2FsbGJhY2tMaXN0LmZvckVhY2goZnVuY3Rp
b24oY2FjaGVkQ2FsbGJhY2spIHsKLSAgICAgICAgICAgIGNhY2hlZENhbGxiYWNrKGRhdGEpOwot
ICAgICAgICB9KTsKLSAgICB9KTsKLX07Ci0KLWJhc2UuQXN5bmNocm9ub3VzQ2FjaGUucHJvdG90
eXBlLmNsZWFyID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX2RhdGFDYWNoZSA9IHt9OwotICAg
IHRoaXMuX2NhbGxiYWNrQ2FjaGUgPSB7fTsKLX0KLQotLyoKLSAgICBNYWludGFpbnMgYSBkaWN0
aW9uYXJ5IG9mIGl0ZW1zLCB0cmFja2luZyB0aGVpciB1cGRhdGVzIGFuZCByZW1vdmluZyBpdGVt
cyB0aGF0IGhhdmVuJ3QgYmVlbiB1cGRhdGVkLgotICAgIEFuICJ1cGRhdGUiIGlzIGEgY2FsbCB0
byB0aGUgInVwZGF0ZSIgbWV0aG9kLgotICAgIFRvIHJlbW92ZSBzdGFsZSBpdGVtcywgY2FsbCB0
aGUgInJlbW92ZSIgbWV0aG9kLiBJdCB3aWxsIHJlbW92ZSBhbGwKLSAgICBpdGVtcyB0aGF0IGhh
dmUgbm90IGJlZW4gYmVlbiB1cGRhdGVkIHNpbmNlIHRoZSBsYXN0IGNhbGwgb2YgInJlbW92ZSIu
Ci0qLwotYmFzZS5VcGRhdGVUcmFja2VyID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX2l0ZW1z
ID0ge307Ci0gICAgdGhpcy5fdXBkYXRlZCA9IHt9OwotfQotCi1iYXNlLlVwZGF0ZVRyYWNrZXIu
cHJvdG90eXBlID0gewotICAgIC8qCi0gICAgICAgIFVwZGF0ZSBhbiB7a2V5fS97aXRlbX0gcGFp
ci4gWW91IGNhbiBtYWtlIHRoZSBkaWN0aW9uYXJ5IGFjdCBhcyBhIHNldCBhbmQKLSAgICAgICAg
c2tpcCB0aGUge2l0ZW19LCBpbiB3aGljaCBjYXNlIHRoZSB7a2V5fSBpcyBhbHNvIHRoZSB7aXRl
bX0uCi0gICAgKi8KLSAgICB1cGRhdGU6IGZ1bmN0aW9uKGtleSwgb2JqZWN0KQotICAgIHsKLSAg
ICAgICAgb2JqZWN0ID0gb2JqZWN0IHx8IGtleTsKLSAgICAgICAgdGhpcy5faXRlbXNba2V5XSA9
IG9iamVjdDsKLSAgICAgICAgdGhpcy5fdXBkYXRlZFtrZXldID0gMTsKLSAgICB9LAotICAgIGV4
aXN0czogZnVuY3Rpb24oa2V5KQotICAgIHsKLSAgICAgICAgcmV0dXJuICEhdGhpcy5nZXQoa2V5
KTsKLSAgICB9LAotICAgIGdldDogZnVuY3Rpb24oa2V5KQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX2l0ZW1zW2tleV07Ci0gICAgfSwKLSAgICBsZW5ndGg6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9pdGVtcykubGVuZ3RoOwotICAgIH0s
Ci0gICAgLyoKLSAgICAgICAgQ2FsbGJhY2sgcGFyYW1ldGVycyBhcmU6Ci0gICAgICAgIC0gaXRl
bQotICAgICAgICAtIGtleQotICAgICAgICAtIHVwZGF0ZWQsIHdoaWNoIGlzIHRydWUgaWYgdGhl
IGl0ZW0gd2FzIHVwZGF0ZWQgYWZ0ZXIgbGFzdCBwdXJnZSgpIGNhbGwuCi0gICAgKi8KLSAgICBm
b3JFYWNoOiBmdW5jdGlvbihjYWxsYmFjaywgdGhpc09iamVjdCkKLSAgICB7Ci0gICAgICAgIGlm
ICghY2FsbGJhY2spCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgT2JqZWN0LmtleXMo
dGhpcy5faXRlbXMpLnNvcnQoKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkgewotICAgICAgICAgICAg
dmFyIGl0ZW0gPSB0aGlzLl9pdGVtc1trZXldOwotICAgICAgICAgICAgY2FsbGJhY2suY2FsbCh0
aGlzT2JqZWN0IHx8IGl0ZW0sIGl0ZW0sIGtleSwgISF0aGlzLl91cGRhdGVkW2tleV0pOwotICAg
ICAgICB9LCB0aGlzKTsKLSAgICB9LAotICAgIHB1cmdlOiBmdW5jdGlvbihyZW1vdmVDYWxsYmFj
aywgdGhpc09iamVjdCkgewotICAgICAgICByZW1vdmVDYWxsYmFjayA9IHJlbW92ZUNhbGxiYWNr
IHx8IGZ1bmN0aW9uKCkge307Ci0gICAgICAgIHRoaXMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBr
ZXksIHVwZGF0ZWQpIHsKLSAgICAgICAgICAgIGlmICh1cGRhdGVkKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIHJlbW92ZUNhbGxiYWNrLmNhbGwodGhpc09iamVjdCB8fCBp
dGVtLCBpdGVtKTsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9pdGVtc1trZXldOwotICAgICAg
ICB9LCB0aGlzKTsKLSAgICAgICAgdGhpcy5fdXBkYXRlZCA9IHt9OwotICAgIH0KLX0KLQotLy8g
QmFzZWQgb24gaHR0cDovL3NyYy5jaHJvbWl1bS5vcmcvdmlld3ZjL2Nocm9tZS90cnVuay9zcmMv
Y2hyb21lL2Jyb3dzZXIvcmVzb3VyY2VzL3NoYXJlZC9qcy9jci91aS5qcwotYmFzZS5leHRlbmRz
ID0gZnVuY3Rpb24oYmFzZSwgcHJvdG90eXBlKQotewotICAgIHZhciBleHRlbmRlZCA9IGZ1bmN0
aW9uKCkgewotICAgICAgICB2YXIgZWxlbWVudCA9IHR5cGVvZiBiYXNlID09ICdzdHJpbmcnID8g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChiYXNlKSA6IGJhc2UuY2FsbCh0aGlzKTsKLSAgICAgICAg
ZXh0ZW5kZWQucHJvdG90eXBlLl9fcHJvdG9fXyA9IGVsZW1lbnQuX19wcm90b19fOwotICAgICAg
ICBlbGVtZW50Ll9fcHJvdG9fXyA9IGV4dGVuZGVkLnByb3RvdHlwZTsKLSAgICAgICAgdmFyIHNp
bmdsZXRvbiA9IGVsZW1lbnQuaW5pdCAmJiBlbGVtZW50LmluaXQuYXBwbHkoZWxlbWVudCwgYXJn
dW1lbnRzKTsKLSAgICAgICAgaWYgKHNpbmdsZXRvbikKLSAgICAgICAgICAgIHJldHVybiBzaW5n
bGV0b247Ci0gICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0KLQotICAgIGV4dGVuZGVkLnBy
b3RvdHlwZSA9IHByb3RvdHlwZTsKLSAgICByZXR1cm4gZXh0ZW5kZWQ7Ci19Ci0KLWZ1bmN0aW9u
IGNyZWF0ZVJlbGF0aXZlVGltZURlc2NyaXB0b3IoZGl2aXNvckluTWlsbGlzZWNvbmRzLCB1bml0
KQotewotICAgIHJldHVybiBmdW5jdGlvbihkZWx0YSkgewotICAgICAgICB2YXIgZGVsdGFJblVu
aXRzID0gZGVsdGEgLyBkaXZpc29ySW5NaWxsaXNlY29uZHM7Ci0gICAgICAgIHJldHVybiAoZGVs
dGFJblVuaXRzKS50b0ZpeGVkKDApICsgJyAnICsgdW5pdCArIChkZWx0YUluVW5pdHMgPj0gMS41
ID8gJ3MnIDogJycpICsgJyBhZ28nOwotICAgIH0KLX0KLQotdmFyIGtNaW51dGVJbk1pbGxpc2Vj
b25kcyA9IDYwICogMTAwMDsKLXZhciBrUmVsYXRpdmVUaW1lU2xvdHMgPSBbCi0gICAgewotICAg
ICAgICBtYXhNaWxsaXNlY29uZHM6IGtNaW51dGVJbk1pbGxpc2Vjb25kcywKLSAgICAgICAgZGVz
Y3JpYmU6IGZ1bmN0aW9uKGRlbHRhKSB7IHJldHVybiAnSnVzdCBub3cnOyB9Ci0gICAgfSwKLSAg
ICB7Ci0gICAgICAgIG1heE1pbGxpc2Vjb25kczogNjAgKiBrTWludXRlSW5NaWxsaXNlY29uZHMs
Ci0gICAgICAgIGRlc2NyaWJlOiBjcmVhdGVSZWxhdGl2ZVRpbWVEZXNjcmlwdG9yKGtNaW51dGVJ
bk1pbGxpc2Vjb25kcywgJ21pbnV0ZScpCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG1heE1pbGxp
c2Vjb25kczogMjQgKiA2MCAqIGtNaW51dGVJbk1pbGxpc2Vjb25kcywKLSAgICAgICAgZGVzY3Jp
YmU6IGNyZWF0ZVJlbGF0aXZlVGltZURlc2NyaXB0b3IoNjAgKiBrTWludXRlSW5NaWxsaXNlY29u
ZHMsICdob3VyJykKLSAgICB9LAotICAgIHsKLSAgICAgICAgbWF4TWlsbGlzZWNvbmRzOiBOdW1i
ZXIuTUFYX1ZBTFVFLAotICAgICAgICBkZXNjcmliZTogY3JlYXRlUmVsYXRpdmVUaW1lRGVzY3Jp
cHRvcigyNCAqIDYwICoga01pbnV0ZUluTWlsbGlzZWNvbmRzLCAnZGF5JykKLSAgICB9Ci1dOwot
Ci0vKgotICAgIFJlcHJlc2VudCB0aW1lIGFzIGRlc2NyaXB0aXZlIHRleHQsIHJlbGF0aXZlIHRv
IG5vdyBhbmQgZ3JhZHVhbGx5IGRlY3JlYXNpbmcgaW4gcHJlY2lzaW9uOgotICAgICAgICBkZWx0
YSA8IDEgbWludXRlcyA9PiBKdXN0IE5vdwotICAgICAgICBkZWx0YSA8IDYwIG1pbnV0ZXMgPT4g
WCBtaW51dGVbc10gYWdvCi0gICAgICAgIGRlbHRhIDwgMjQgaG91cnMgPT4gWCBob3VyW3NdIGFn
bwotICAgICAgICBkZWx0YSA8IGluZiA9PiBYIGRheVtzXSBhZ28KLSovCi1iYXNlLnJlbGF0aXZp
emVUaW1lID0gZnVuY3Rpb24odGltZSkKLXsKLSAgICB2YXIgcmVzdWx0OwotICAgIHZhciBkZWx0
YSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gdGltZTsKLSAgICBrUmVsYXRpdmVUaW1lU2xvdHMu
c29tZShmdW5jdGlvbihzbG90KSB7Ci0gICAgICAgIGlmIChkZWx0YSA+PSBzbG90Lm1heE1pbGxp
c2Vjb25kcykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICByZXN1bHQgPSBz
bG90LmRlc2NyaWJlKGRlbHRhKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotYmFzZS5nZXRVUkxQYXJhbWV0ZXIgPSBmdW5jdGlvbihuYW1l
KQotewotICAgIHZhciBtYXRjaCA9IFJlZ0V4cChuYW1lICsgJz0nICsgJyguKz8pKCZ8JCknKS5l
eGVjKGxvY2F0aW9uLnNlYXJjaCk7Ci0gICAgaWYgKCFtYXRjaCkKLSAgICAgICAgcmV0dXJuIG51
bGw7Ci0gICAgcmV0dXJuIGRlY29kZVVSSShtYXRjaFsxXSkKLX0KLQotYmFzZS51bmRlcnNjb3Jl
ZEJ1aWxkZXJOYW1lID0gZnVuY3Rpb24oYnVpbGRlck5hbWUpCi17Ci0gICAgcmV0dXJuIGJ1aWxk
ZXJOYW1lLnJlcGxhY2UoL1sgLigpXS9nLCAnXycpOwotfQotCi1iYXNlLmNyZWF0ZUxpbmtOb2Rl
ID0gZnVuY3Rpb24odXJsLCB0ZXh0Q29udGVudCwgb3B0X3RhcmdldCkKLXsKLSAgICB2YXIgbGlu
ayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKLSAgICBsaW5rLmhyZWYgPSB1cmw7Ci0g
ICAgaWYgKG9wdF90YXJnZXQpCi0gICAgICAgIGxpbmsudGFyZ2V0ID0gb3B0X3RhcmdldDsKLSAg
ICBsaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHRDb250ZW50KSk7
Ci0gICAgcmV0dXJuIGxpbms7Ci19Ci0KLX0pKCk7CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvYmFz
ZV91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2Jhc2VfdW5pdHRl
c3RzLmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvYmFzZV91bml0dGVz
dHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0oZnVu
Y3Rpb24gKCkgewotCi1tb2R1bGUoImJhc2UiKTsKLQotdGVzdCgiYmluZCIsIDMsIGZ1bmN0aW9u
KCkgewotICAgIGZ1bmN0aW9uIGZ1bmMoYSwgYikgewotICAgICAgICBlcXVhbHModGhpcy5wcm9w
LCA1KTsKLSAgICAgICAgZXF1YWxzKGEsICJiYW5hbmEiKTsKLSAgICAgICAgZGVlcEVxdWFsKGIs
IFsyLCAzLCA0XSk7Ci0gICAgfQotCi0gICAgdmFyIHRoaXNPYmplY3QgPSB7Ci0gICAgICAgICJw
cm9wIjogNQotICAgIH07Ci0KLSAgICB2YXIgYm91bmQgPSBmdW5jLmJpbmQodGhpc09iamVjdCwg
ImJhbmFuYSIpOwotICAgIGJvdW5kKFsyLCAzLCA0XSk7Ci19KTsKLQotCi10ZXN0KCJqb2luUGF0
aCIsIDEsIGZ1bmN0aW9uKCkgewotICAgIHZhciB2YWx1ZSA9IGJhc2Uuam9pblBhdGgoInBhdGgv
dG8iLCAidGVzdC5odG1sIik7Ci0gICAgZXF1YWxzKHZhbHVlLCAicGF0aC90by90ZXN0Lmh0bWwi
KTsKLX0pOwotCi10ZXN0KCJlbmRzV2l0aCIsIDksIGZ1bmN0aW9uKCkgewotICAgIG9rKGJhc2Uu
ZW5kc1dpdGgoInh5eiIsICIiKSk7Ci0gICAgb2soYmFzZS5lbmRzV2l0aCgieHl6IiwgInoiKSk7
Ci0gICAgb2soYmFzZS5lbmRzV2l0aCgieHl6IiwgInl6IikpOwotICAgIG9rKGJhc2UuZW5kc1dp
dGgoInh5eiIsICJ4eXoiKSk7Ci0gICAgb2soIWJhc2UuZW5kc1dpdGgoInh5eiIsICJ3eHl6Iikp
OwotICAgIG9rKCFiYXNlLmVuZHNXaXRoKCJ4eXoiLCAiZ3d4eXoiKSk7Ci0gICAgb2soYmFzZS5l
bmRzV2l0aCgiIiwgIiIpKTsKLSAgICBvayghYmFzZS5lbmRzV2l0aCgiIiwgInoiKSk7Ci0gICAg
b2soIWJhc2UuZW5kc1dpdGgoInh5eHkiLCAieXgiKSk7Ci19KTsKLQotdGVzdCgidHJpbUV4dGVu
c2lvbiIsIDYsIGZ1bmN0aW9uKCkgewotICAgIGVxdWFscyhiYXNlLnRyaW1FeHRlbnNpb24oInh5
eiIpLCAieHl6Iik7Ci0gICAgZXF1YWxzKGJhc2UudHJpbUV4dGVuc2lvbigieHkueiIpLCAieHki
KTsKLSAgICBlcXVhbHMoYmFzZS50cmltRXh0ZW5zaW9uKCJ4Lnl6IiksICJ4Iik7Ci0gICAgZXF1
YWxzKGJhc2UudHJpbUV4dGVuc2lvbigieC55LnoiKSwgIngueSIpOwotICAgIGVxdWFscyhiYXNl
LnRyaW1FeHRlbnNpb24oIi54eXoiKSwgIiIpOwotICAgIGVxdWFscyhiYXNlLnRyaW1FeHRlbnNp
b24oIiIpLCAiIik7Ci19KTsKLQotdGVzdCgiam9pblBhdGggd2l0aCBlbXB0eSBwYXJlbnQiLCAx
LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgdmFsdWUgPSBiYXNlLmpvaW5QYXRoKCIiLCAidGVzdC5o
dG1sIik7Ci0gICAgZXF1YWxzKHZhbHVlLCAidGVzdC5odG1sIik7Ci19KTsKLQotdGVzdCgiZGly
TmFtZSIsIDMsIGZ1bmN0aW9uKCkgewotICAgIGVxdWFscyhiYXNlLmRpck5hbWUoImZvby5odG1s
IiksICJmb28uaHRtbCIpOwotICAgIGVxdWFscyhiYXNlLmRpck5hbWUoImZvby9iYXIuaHRtbCIp
LCAiZm9vIik7Ci0gICAgZXF1YWxzKGJhc2UuZGlyTmFtZSgiZm9vL2Jhci9iYXouaHRtbCIpLCAi
Zm9vL2JhciIpOwotfSk7Ci0KLXRlc3QoInVuaXF1aWZ5QXJyYXkiLCA1LCBmdW5jdGlvbigpIHsK
LSAgICBkZWVwRXF1YWwoYmFzZS51bmlxdWlmeUFycmF5KFtdKSwgW10pOwotICAgIGRlZXBFcXVh
bChiYXNlLnVuaXF1aWZ5QXJyYXkoWyJhIl0pLCBbImEiXSk7Ci0gICAgZGVlcEVxdWFsKGJhc2Uu
dW5pcXVpZnlBcnJheShbImEiLCAiYiJdKSwgWyJhIiwgImIiXSk7Ci0gICAgZGVlcEVxdWFsKGJh
c2UudW5pcXVpZnlBcnJheShbImEiLCAiYiIsICJiIl0pLCBbImEiLCAiYiJdKTsKLSAgICBkZWVw
RXF1YWwoYmFzZS51bmlxdWlmeUFycmF5KFsiYSIsICJiIiwgImIiLCAiYSJdKSwgWyJhIiwgImIi
XSk7Ci19KTsKLQotdGVzdCgiZmxhdHRlbkFycmF5IiwgNSwgZnVuY3Rpb24oKSB7Ci0gICAgZGVl
cEVxdWFsKGJhc2UuZmxhdHRlbkFycmF5KFtdKSwgW10pOwotICAgIGRlZXBFcXVhbChiYXNlLmZs
YXR0ZW5BcnJheShbWyJhIl1dKSwgWyJhIl0pOwotICAgIGRlZXBFcXVhbChiYXNlLmZsYXR0ZW5B
cnJheShbWyJhIl0sIFsiYiJdXSksIFsiYSIsICJiIl0pOwotICAgIGRlZXBFcXVhbChiYXNlLmZs
YXR0ZW5BcnJheShbWyJhIl0sIFsiYiIsICJjIl1dKSwgWyJhIiwgImIiLCAiYyJdKTsKLSAgICBk
ZWVwRXF1YWwoYmFzZS5mbGF0dGVuQXJyYXkoW1siYSJdLCBbXSwgWyJiIl1dKSwgWyJhIiwgImIi
XSk7Ci19KTsKLQotdGVzdCgiY2FsbEluUGFyYWxsZWwiLCA0LCBmdW5jdGlvbigpIHsKLSAgICB2
YXIgZXhwZWN0ZWRDYWxsID0gW3RydWUsIHRydWUsIHRydWVdOwotICAgIHZhciBleHBlY3RDb21w
bGV0aW9uQ2FsbGJhY2sgPSB0cnVlOwotCi0gICAgYmFzZS5jYWxsSW5QYXJhbGxlbChbCi0gICAg
ICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBvayhleHBlY3RlZENhbGxbMF0p
OwotICAgICAgICAgICAgZXhwZWN0ZWRDYWxsWzBdID0gZmFsc2U7Ci0gICAgICAgICAgICBjYWxs
YmFjaygpOwotICAgICAgICB9LAotICAgICAgICBmdW5jdGlvbihjYWxsYmFjaykgewotICAgICAg
ICAgICAgb2soZXhwZWN0ZWRDYWxsWzFdKTsKLSAgICAgICAgICAgIGV4cGVjdGVkQ2FsbFsxXSA9
IGZhbHNlOwotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgfSwKLSAgICAgICAgZnVu
Y3Rpb24oY2FsbGJhY2spIHsKLSAgICAgICAgICAgIG9rKGV4cGVjdGVkQ2FsbFsyXSk7Ci0gICAg
ICAgICAgICBleHBlY3RlZENhbGxbMl0gPSBmYWxzZTsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7
Ci0gICAgICAgIH0sCi0gICAgXSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIG9rKGV4cGVjdENvbXBs
ZXRpb25DYWxsYmFjayk7Ci0gICAgICAgIGV4cGVjdENvbXBsZXRpb25DYWxsYmFjayA9IGZhbHNl
OwotICAgIH0pCi19KTsKLQotdGVzdCgiY2FsbEluU2VxdWVuY2UiLCA3LCBmdW5jdGlvbigpIHsK
LSAgICB2YXIgZXhwZWN0ZWRBcmcgPSA0MjsKLSAgICB2YXIgZXhwZWN0Q29tcGxldGlvbkNhbGxi
YWNrID0gdHJ1ZTsKLQotICAgIGJhc2UuY2FsbEluU2VxdWVuY2UoZnVuY3Rpb24oYXJnLCBjYWxs
YmFjaykgewotICAgICAgICBvayhhcmcgPCA0NSk7Ci0gICAgICAgIGVxdWFscyhhcmcsIGV4cGVj
dGVkQXJnKyspOwotICAgICAgICBjYWxsYmFjaygpOwotICAgIH0sIFs0MiwgNDMsIDQ0XSwgZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIG9rKGV4cGVjdENvbXBsZXRpb25DYWxsYmFjayk7Ci0gICAgICAg
IGV4cGVjdENvbXBsZXRpb25DYWxsYmFjayA9IGZhbHNlOwotICAgIH0pCi19KTsKLQotdGVzdCgi
UmVxdWVzdFRyYWNrZXIiLCA1LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgcmVhZHkgPSBmYWxzZTsK
LSAgICB2YXIgdHJhY2tlciA9IG5ldyBiYXNlLlJlcXVlc3RUcmFja2VyKDEsIGZ1bmN0aW9uKCkg
ewotICAgICAgICBvayhyZWFkeSk7Ci0gICAgfSk7Ci0gICAgcmVhZHkgPSB0cnVlOwotICAgIHRy
YWNrZXIucmVxdWVzdENvbXBsZXRlKCk7Ci0gICAgcmVhZHkgPSBmYWxzZTsKLQotICAgIHRyYWNr
ZXIgPSBuZXcgYmFzZS5SZXF1ZXN0VHJhY2tlcigyLCBmdW5jdGlvbihwYXJhbWV0ZXIpIHsKLSAg
ICAgICAgb2socmVhZHkpOwotICAgICAgICBlcXVhbHMocGFyYW1ldGVyLCAnYXJndW1lbnQnKTsK
LSAgICB9LCBbJ2FyZ3VtZW50J10pOwotICAgIHRyYWNrZXIucmVxdWVzdENvbXBsZXRlKCk7Ci0g
ICAgcmVhZHkgPSB0cnVlOwotICAgIHRyYWNrZXIucmVxdWVzdENvbXBsZXRlKCk7Ci0gICAgcmVh
ZHkgPSBmYWxzZTsKLQotICAgIHRyYWNrZXIgPSBuZXcgYmFzZS5SZXF1ZXN0VHJhY2tlcigwLCBm
dW5jdGlvbigpIHsKLSAgICAgICAgb2sodHJ1ZSk7Ci0gICAgfSk7Ci0gICAgdHJhY2tlci5yZXF1
ZXN0Q29tcGxldGUoKTsKLQotICAgIHRyYWNrZXIgPSBuZXcgYmFzZS5SZXF1ZXN0VHJhY2tlcigw
KTsKLSAgICB0cmFja2VyLnJlcXVlc3RDb21wbGV0ZSgpOwotICAgIC8vIFNob3VsZCBub3QgYmFy
Zi4KLSAgICBvayh0cnVlKTsKLX0pOwotCi10ZXN0KCJDYWxsYmFja0l0ZXJhdG9yIiwgMjIsIGZ1
bmN0aW9uKCkgewotICAgIHZhciBleHBlY3RlZCA9IDA7Ci0gICAgdmFyIGl0ZXJhdG9yID0gbmV3
IGJhc2UuQ2FsbGJhY2tJdGVyYXRvcihmdW5jdGlvbihhLCBiKSB7Ci0gICAgICAgIGVxdWFscyhh
LCAnQXJnQScgKyBleHBlY3RlZCk7Ci0gICAgICAgIGVxdWFscyhiLCAnQXJnQicgKyBleHBlY3Rl
ZCk7Ci0gICAgICAgICsrZXhwZWN0ZWQ7Ci0gICAgfSwgWwotICAgICAgICBbJ0FyZ0EwJywgJ0Fy
Z0IwJ10sCi0gICAgICAgIFsnQXJnQTEnLCAnQXJnQjEnXSwKLSAgICAgICAgWydBcmdBMicsICdB
cmdCMiddLAotICAgIF0pOwotICAgIG9rKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICBvayghaXRl
cmF0b3IuaGFzUHJldmlvdXMoKSkKLSAgICBpdGVyYXRvci5jYWxsTmV4dCgpOwotICAgIG9rKGl0
ZXJhdG9yLmhhc05leHQoKSkKLSAgICBvayghaXRlcmF0b3IuaGFzUHJldmlvdXMoKSkKLSAgICBp
dGVyYXRvci5jYWxsTmV4dCgpOwotICAgIG9rKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICBvayhp
dGVyYXRvci5oYXNQcmV2aW91cygpKQotICAgIGl0ZXJhdG9yLmNhbGxOZXh0KCk7Ci0gICAgb2so
IWl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICBvayhpdGVyYXRvci5oYXNQcmV2aW91cygpKQotICAg
IGV4cGVjdGVkID0gMTsKLSAgICBpdGVyYXRvci5jYWxsUHJldmlvdXMoKTsKLSAgICBvayhpdGVy
YXRvci5oYXNOZXh0KCkpCi0gICAgb2soaXRlcmF0b3IuaGFzUHJldmlvdXMoKSkKLSAgICBleHBl
Y3RlZCA9IDA7Ci0gICAgaXRlcmF0b3IuY2FsbFByZXZpb3VzKCk7Ci0gICAgb2soaXRlcmF0b3Iu
aGFzTmV4dCgpKQotICAgIG9rKCFpdGVyYXRvci5oYXNQcmV2aW91cygpKQotfSk7Ci0KLXRlc3Qo
ImZpbHRlckRpY3Rpb25hcnkiLCAzLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZGljdGlvbmFyeSA9
IHsKLSAgICAgICAgJ2Zvbyc6IDQzLAotICAgICAgICAnYmFyJzogMTEKLSAgICB9OwotICAgIGRl
ZXBFcXVhbChiYXNlLmZpbHRlckRpY3Rpb25hcnkoZGljdGlvbmFyeSwgZnVuY3Rpb24oKSB7IHJl
dHVybiB0cnVlOyB9KSwgewotICAgICAgICAiZm9vIjogNDMsCi0gICAgICAgICJiYXIiOiAxMQot
ICAgIH0pOwotICAgIGRlZXBFcXVhbChiYXNlLmZpbHRlckRpY3Rpb25hcnkoZGljdGlvbmFyeSwg
ZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfSksIHsgfSk7Ci0gICAgZGVlcEVxdWFsKGJhc2Uu
ZmlsdGVyRGljdGlvbmFyeShkaWN0aW9uYXJ5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIGtleSA9
PSAnZm9vJzsgfSksIHsKLSAgICAgICAgImZvbyI6IDQzCi0gICAgfSk7Ci19KTsKLQotdGVzdCgi
bWFwRGljdGlvbmFyeSIsIDMsIGZ1bmN0aW9uKCkgewotICAgIGRlZXBFcXVhbChiYXNlLm1hcERp
Y3Rpb25hcnkoe30sIGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZSAtIDEwOyB9KSwge30p
OwotICAgIHZhciBkaWN0aW9uYXJ5ID0gewotICAgICAgICAnZm9vJzogNDMsCi0gICAgICAgICdi
YXInOiAxMQotICAgIH07Ci0gICAgZGVlcEVxdWFsKGJhc2UubWFwRGljdGlvbmFyeShkaWN0aW9u
YXJ5LCBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWUgLSAxMDsgfSksIHsKLSAgICAgICAg
ImZvbyI6IDMzLAotICAgICAgICAiYmFyIjogMQotICAgIH0pOwotICAgIGRlZXBFcXVhbChiYXNl
Lm1hcERpY3Rpb25hcnkoZGljdGlvbmFyeSwgZnVuY3Rpb24odmFsdWUpIHsKLSAgICAgICAgaWYg
KHZhbHVlID4gMjApCi0gICAgICAgICAgICByZXR1cm4gdmFsdWUgLSAyMDsKLSAgICB9KSwgewot
ICAgICAgICAiZm9vIjogMjMsCi0gICAgfSk7Ci19KTsKLQotdGVzdCgiZmlsdGVyVHJlZSIsIDIs
IGZ1bmN0aW9uKCkgewotICAgIHZhciB0cmVlID0gewotICAgICAgICAncGF0aCc6IHsKLSAgICAg
ICAgICAgICd0byc6IHsKLSAgICAgICAgICAgICAgICAndGVzdC5odG1sJzogewotICAgICAgICAg
ICAgICAgICAgICAnYWN0dWFsJzogJ1BBU1MnLAotICAgICAgICAgICAgICAgICAgICAnZXhwZWN0
ZWQnOiAnRkFJTCcKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAg
ICAgJ2Fub3RoZXIuaHRtbCc6IHsKLSAgICAgICAgICAgICAgICAnYWN0dWFsJzogJ1RFWFQnLAot
ICAgICAgICAgICAgICAgICdleHBlY3RlZCc6ICdQQVNTJwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNMZWFmKG5vZGUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gISFub2RlLmFjdHVhbDsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBhY3R1YWxJc1RleHQo
bm9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBub2RlLmFjdHVhbCA9PSAnVEVYVCc7Ci0gICAg
fQotCi0gICAgdmFyIGFsbCA9IGJhc2UuZmlsdGVyVHJlZSh0cmVlLCBpc0xlYWYsIGZ1bmN0aW9u
KCkgeyByZXR1cm4gdHJ1ZSB9KTsKLSAgICBkZWVwRXF1YWwoYWxsLCB7Ci0gICAgICAgICdwYXRo
L3RvL3Rlc3QuaHRtbCc6IHsKLSAgICAgICAgICAgICdhY3R1YWwnOiAnUEFTUycsCi0gICAgICAg
ICAgICAnZXhwZWN0ZWQnOiAnRkFJTCcKLSAgICAgICAgfSwKLSAgICAgICAgJ3BhdGgvYW5vdGhl
ci5odG1sJzogewotICAgICAgICAgICAgJ2FjdHVhbCc6ICdURVhUJywKLSAgICAgICAgICAgICdl
eHBlY3RlZCc6ICdQQVNTJwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICB2YXIgdGV4dCA9IGJh
c2UuZmlsdGVyVHJlZSh0cmVlLCBpc0xlYWYsIGFjdHVhbElzVGV4dCk7Ci0gICAgZGVlcEVxdWFs
KHRleHQsIHsKLSAgICAgICAgJ3BhdGgvYW5vdGhlci5odG1sJzogewotICAgICAgICAgICAgJ2Fj
dHVhbCc6ICdURVhUJywKLSAgICAgICAgICAgICdleHBlY3RlZCc6ICdQQVNTJwotICAgICAgICB9
Ci0gICAgfSk7Ci19KTsKLQotdGVzdCgiVXBkYXRlVHJhY2tlciIsIDIwLCBmdW5jdGlvbigpIHsK
LSAgICB2YXIgZGljdDsKLQotICAgIGZ1bmN0aW9uIGR1bXBLZXlzKCkKLSAgICB7Ci0gICAgICAg
IHZhciB1cGRhdGVzID0gW10KLSAgICAgICAgZGljdC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGtl
eSwgdXBkYXRlZCkgewotICAgICAgICAgICAgdXBkYXRlcy5wdXNoKGtleSk7Ci0gICAgICAgIH0p
OwotICAgICAgICByZXR1cm4gdXBkYXRlczsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBkdW1wVXBk
YXRlZEtleXMoKQotICAgIHsKLSAgICAgICAgdmFyIHVwZGF0ZXMgPSBbXQotICAgICAgICBkaWN0
LmZvckVhY2goZnVuY3Rpb24oaXRlbSwga2V5LCB1cGRhdGVkKSB7Ci0gICAgICAgICAgICB1cGRh
dGVkICYmIHVwZGF0ZXMucHVzaChrZXkpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHVw
ZGF0ZXM7Ci0gICAgfQotCi0KLSAgICBkaWN0ID0gbmV3IGJhc2UuVXBkYXRlVHJhY2tlcigpOwot
ICAgIGRpY3QudXBkYXRlKCI1Iiwge30pOwotICAgIGRlZXBFcXVhbChkdW1wVXBkYXRlZEtleXMo
KSwgWyI1Il0pOwotICAgIGRpY3QudXBkYXRlKCI2Iiwge30pOwotICAgIGRpY3QudXBkYXRlKCI3
Iiwge30pOwotICAgIGRlZXBFcXVhbChkdW1wVXBkYXRlZEtleXMoKSwgWyI1IiwgIjYiLCAiNyJd
KTsKLSAgICBkZWVwRXF1YWwoZGljdC5nZXQoIjYiKSwge30pOwotICAgIG9rKGRpY3QuZXhpc3Rz
KCI3IikpOwotICAgIGRpY3QucHVyZ2UoKTsKLSAgICBkZWVwRXF1YWwoZHVtcFVwZGF0ZWRLZXlz
KCksIFtdKTsKLSAgICBkZWVwRXF1YWwoZHVtcEtleXMoKSwgWyI1IiwgIjYiLCAiNyJdKTsKLSAg
ICBkaWN0LnVwZGF0ZSgiNSIsIHt9KTsKLSAgICBkZWVwRXF1YWwoZHVtcFVwZGF0ZWRLZXlzKCks
IFsiNSJdKTsKLSAgICBkaWN0LnVwZGF0ZSgiNCIsIHt9KTsKLSAgICBkZWVwRXF1YWwoZHVtcFVw
ZGF0ZWRLZXlzKCksIFsiNCIsICI1Il0pOwotICAgIGRlZXBFcXVhbChkdW1wS2V5cygpLCBbIjQi
LCAiNSIsICI2IiwgIjciXSk7Ci0gICAgZGljdC5wdXJnZSgpOwotICAgIGRlZXBFcXVhbChkdW1w
S2V5cygpLCBbIjQiLCAiNSJdKTsKLSAgICBkZWVwRXF1YWwoZHVtcFVwZGF0ZWRLZXlzKCksIFtd
KTsKLSAgICBkaWN0LnB1cmdlKCk7Ci0gICAgZGVlcEVxdWFsKGR1bXBLZXlzKCksIFtdKTsKLQot
ICAgIHZhciByZW1vdmVDb3VudCA9IDA7Ci0gICAgZGljdC51cGRhdGUoIm9uZSIpOwotICAgIGRl
ZXBFcXVhbChkdW1wVXBkYXRlZEtleXMoKSwgWyJvbmUiXSk7Ci0gICAgZGljdC51cGRhdGUoInR3
byIpOwotICAgIGRlZXBFcXVhbChkdW1wVXBkYXRlZEtleXMoKSwgWyJvbmUiLCAidHdvIl0pOwot
ICAgIGRpY3QudXBkYXRlKCJ0aHJlZSIpOwotICAgIGRpY3QucHVyZ2UoKTsKLSAgICBkZWVwRXF1
YWwoZHVtcEtleXMoKSwgWyJvbmUiLCAidGhyZWUiLCAidHdvIl0pOwotICAgIGRpY3QudXBkYXRl
KCJ0d28iKTsKLSAgICBkaWN0LnB1cmdlKGZ1bmN0aW9uKCkgewotICAgICAgICByZW1vdmVDb3Vu
dCsrOwotICAgIH0pOwotICAgIGRlZXBFcXVhbChkdW1wS2V5cygpLCBbInR3byJdKTsKLSAgICBl
cXVhbChyZW1vdmVDb3VudCwgMik7Ci0gICAgZGljdC51cGRhdGUoImZvdXIiKTsKLSAgICB2YXIg
cmVtb3ZlQ291bnRlciA9IHsgY291bnQ6IDAgfTsKLSAgICBkaWN0LnB1cmdlKGZ1bmN0aW9uKCkg
ewotICAgICAgICB0aGlzLmNvdW50Kys7Ci0gICAgfSwgcmVtb3ZlQ291bnRlcik7Ci0gICAgZXF1
YWwocmVtb3ZlQ291bnRlci5jb3VudCwgMSk7Ci0gICAgZGljdC5wdXJnZShmdW5jdGlvbigpIHsK
LSAgICAgICAgZXF1YWwoU3RyaW5nKHRoaXMpLCAiZm91ciIpOwotICAgIH0pOwotCi0gICAgZGlj
dCA9IG5ldyBiYXNlLlVwZGF0ZVRyYWNrZXIoKTsKLSAgICBkaWN0LnVwZGF0ZSgib25lIik7Ci0g
ICAgdmFyIHRoaXNPYmplY3QgPSB7fQotICAgIGRpY3QuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7
Ci0gICAgICAgIGVxdWFsKHRoaXMsIHRoaXNPYmplY3QpOwotICAgIH0sIHRoaXNPYmplY3QpOwot
Ci19KTsKLQotdGVzdCgiZXh0ZW5kcyIsIDE0LCBmdW5jdGlvbigpIHsKLQotICAgIHZhciBMaWtl
RGl2ID0gYmFzZS5leHRlbmRzKCJkaXYiLCB7Ci0gICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9ICJhd2Vzb21lIjsKLSAgICAgICAgfSwKLSAg
ICAgICAgbWV0aG9kOiBmdW5jdGlvbihtc2cpIHsKLSAgICAgICAgICAgIHJldHVybiA0MjsKLSAg
ICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIExpa2VMaWtlRGl2ID0gYmFzZS5leHRlbmRzKExp
a2VEaXYsIHsKLSAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0aGlzLmNs
YXNzTmFtZSA9ICJsaWtlIjsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIExpa2VQID0g
YmFzZS5leHRlbmRzKCJwIiwgewotICAgICAgICBpbml0OiBmdW5jdGlvbihjb250ZW50KSB7Ci0g
ICAgICAgICAgICB0aGlzLnRleHRDb250ZW50ID0gY29udGVudAotICAgICAgICB9Ci0gICAgfSk7
Ci0KLSAgICB2YXIgTGlrZVByb2dyZXNzID0gYmFzZS5leHRlbmRzKCJwcm9ncmVzcyIsIHsKLSAg
ICAgICAgaW5pdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0aGlzLm1heCA9IDEwMDsKLSAg
ICAgICAgICAgIHRoaXMudmFsdWUgPSAxMDsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFy
IExpa2VMaWtlUHJvZ3Jlc3MgPSBiYXNlLmV4dGVuZHMoTGlrZVByb2dyZXNzLCB7Ci0gICAgICAg
IGNvbXBsZXRlZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0aGlzLnZhbHVlID0gMTAwOwot
ICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5ldyBM
aWtlRGl2KCkpOwotICAgIGVxdWFscyhkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZC50YWdOYW1lLCAi
RElWIik7Ci0gICAgZXF1YWxzKGRvY3VtZW50LmJvZHkubGFzdENoaWxkLmlubmVySFRNTCwgImF3
ZXNvbWUiKTsKLSAgICBlcXVhbHMoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQubWV0aG9kKCksIDQy
KTsKLSAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmJvZHkubGFzdENoaWxk
KTsKLQotICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobmV3IExpa2VMaWtlRGl2KCkpOwot
ICAgIGVxdWFscyhkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZC50YWdOYW1lLCAiRElWIik7Ci0gICAg
ZXF1YWxzKGRvY3VtZW50LmJvZHkubGFzdENoaWxkLmlubmVySFRNTCwgImF3ZXNvbWUiKTsKLSAg
ICBlcXVhbHMoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQubWV0aG9kKCksIDQyKTsKLSAgICBlcXVh
bHMoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQuY2xhc3NOYW1lLCAibGlrZSIpOwotICAgIGRvY3Vt
ZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQpOwotCi0gICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChuZXcgTGlrZVAoInN1cGVyIikpOwotICAgIGVxdWFscyhk
b2N1bWVudC5ib2R5Lmxhc3RDaGlsZC50YWdOYW1lLCAiUCIpOwotICAgIGVxdWFscyhkb2N1bWVu
dC5ib2R5Lmxhc3RDaGlsZC5pbm5lckhUTUwsICJzdXBlciIpOwotICAgIHJhaXNlcyhmdW5jdGlv
bigpIHsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQubWV0aG9kKCk7Ci0gICAgfSk7
Ci0gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZCk7
Ci0KLSAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5ldyBMaWtlUHJvZ3Jlc3MoKSk7Ci0g
ICAgZXF1YWxzKGRvY3VtZW50LmJvZHkubGFzdENoaWxkLnRhZ05hbWUsICJQUk9HUkVTUyIpOwot
ICAgIC8vIFNhZmFyaSA1LjEgbGFja3MgdGhlIDxwcm9ncmVzcz4gZWxlbWVudC4KLSAgICAvLyBl
cXVhbHMoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQucG9zaXRpb24sIDAuMSk7Ci0gICAgZXF1YWxz
KGRvY3VtZW50LmJvZHkubGFzdENoaWxkLmlubmVySFRNTCwgIiIpOwotICAgIHJhaXNlcyhmdW5j
dGlvbigpIHsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQubWV0aG9kKCk7Ci0gICAg
fSk7Ci0gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5ib2R5Lmxhc3RDaGls
ZCk7Ci0KLSAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5ldyBMaWtlTGlrZVByb2dyZXNz
KCkpOwotICAgIGVxdWFscyhkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZC50YWdOYW1lLCAiUFJPR1JF
U1MiKTsKLSAgICAvLyBTYWZhcmkgNS4xIGxhY2tzIHRoZSA8cHJvZ3Jlc3M+IGVsZW1lbnQuCi0g
ICAgLy8gZXF1YWxzKGRvY3VtZW50LmJvZHkubGFzdENoaWxkLnBvc2l0aW9uLCAwLjEpOwotICAg
IGRvY3VtZW50LmJvZHkubGFzdENoaWxkLmNvbXBsZXRlZCgpOwotICAgIC8vIFNhZmFyaSA1LjEg
bGFja3MgdGhlIDxwcm9ncmVzcz4gZWxlbWVudC4KLSAgICAvLyBlcXVhbHMoZG9jdW1lbnQuYm9k
eS5sYXN0Q2hpbGQucG9zaXRpb24sIDEpOwotICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQo
ZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQpOwotfSk7Ci0KLXRlc3QoInJlbGF0aXZpemVUaW1lIiwg
MTQsIGZ1bmN0aW9uKCkgewotICAgIHZhciB0aW1lID0gbmV3IERhdGUoKTsKLSAgICBlcXVhbHMo
YmFzZS5yZWxhdGl2aXplVGltZSh0aW1lKSwgIkp1c3Qgbm93Iik7Ci0gICAgdGltZS5zZXRNaW51
dGVzKHRpbWUuZ2V0TWludXRlcygpIC0gMSk7Ci0gICAgZXF1YWxzKGJhc2UucmVsYXRpdml6ZVRp
bWUodGltZSksICIxIG1pbnV0ZSBhZ28iKTsKLSAgICB0aW1lLnNldE1pbnV0ZXModGltZS5nZXRN
aW51dGVzKCkgLSAxKTsKLSAgICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGltZSh0aW1lKSwgIjIg
bWludXRlcyBhZ28iKTsKLSAgICB0aW1lLnNldE1pbnV0ZXModGltZS5nZXRNaW51dGVzKCkgLSAx
KTsKLSAgICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGltZSh0aW1lKSwgIjMgbWludXRlcyBhZ28i
KTsKLSAgICB0aW1lLnNldE1pbnV0ZXModGltZS5nZXRNaW51dGVzKCkgLSA1Nik7Ci0gICAgZXF1
YWxzKGJhc2UucmVsYXRpdml6ZVRpbWUodGltZSksICI1OSBtaW51dGVzIGFnbyIpOwotICAgIHRp
bWUuc2V0TWludXRlcyh0aW1lLmdldE1pbnV0ZXMoKSAtIDEpOwotICAgIGVxdWFscyhiYXNlLnJl
bGF0aXZpemVUaW1lKHRpbWUpLCAiMSBob3VyIGFnbyIpOwotICAgIHRpbWUuc2V0TWludXRlcyh0
aW1lLmdldE1pbnV0ZXMoKSAtIDI5KTsKLSAgICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGltZSh0
aW1lKSwgIjEgaG91ciBhZ28iKTsKLSAgICB0aW1lLnNldE1pbnV0ZXModGltZS5nZXRNaW51dGVz
KCkgLSAyKTsKLSAgICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGltZSh0aW1lKSwgIjIgaG91cnMg
YWdvIik7Ci0gICAgdGltZS5zZXRNaW51dGVzKHRpbWUuZ2V0TWludXRlcygpIC0gMjkpOwotICAg
IGVxdWFscyhiYXNlLnJlbGF0aXZpemVUaW1lKHRpbWUpLCAiMiBob3VycyBhZ28iKTsKLSAgICB0
aW1lLnNldEhvdXJzKHRpbWUuZ2V0SG91cnMoKSAtIDEpOwotICAgIGVxdWFscyhiYXNlLnJlbGF0
aXZpemVUaW1lKHRpbWUpLCAiMyBob3VycyBhZ28iKTsKLSAgICB0aW1lLnNldEhvdXJzKHRpbWUu
Z2V0SG91cnMoKSAtIDIwKTsKLSAgICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGltZSh0aW1lKSwg
IjIzIGhvdXJzIGFnbyIpOwotICAgIHRpbWUuc2V0SG91cnModGltZS5nZXRIb3VycygpIC0gMSk7
Ci0gICAgZXF1YWxzKGJhc2UucmVsYXRpdml6ZVRpbWUodGltZSksICIxIGRheSBhZ28iKTsKLSAg
ICB0aW1lLnNldERhdGUodGltZS5nZXREYXRlKCkgLSAxKTsKLSAgICBlcXVhbHMoYmFzZS5yZWxh
dGl2aXplVGltZSh0aW1lKSwgIjIgZGF5cyBhZ28iKTsKLSAgICB0aW1lLnNldERhdGUodGltZS5n
ZXREYXRlKCkgLSA5OTgpOwotICAgIGVxdWFscyhiYXNlLnJlbGF0aXZpemVUaW1lKHRpbWUpLCAi
MTAwMCBkYXlzIGFnbyIpOwotfSk7Ci0KLXRlc3QoImdldFVSTFBhcmFtZXRlciIsIDEsIGZ1bmN0
aW9uKCkgewotICAgIG9rKCFiYXNlLmdldFVSTFBhcmFtZXRlcignbm9uLWV4aXN0YW50JykpOwot
fSk7Ci0KLXRlc3QoInBhcnNlSlNPTlAiLCAyLCBmdW5jdGlvbigpIHsKLSAgICBkZWVwRXF1YWwo
YmFzZS5wYXJzZUpTT05QKCIiKSwge30pOwotICAgIGRlZXBFcXVhbChiYXNlLnBhcnNlSlNPTlAo
J3AoeyJrZXkiOiAidmFsdWUifSknKSwgeyJrZXkiOiAidmFsdWUifSk7Ci19KTsKLQotfSkoKTsK
SW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9idWd6aWxsYV91bml0dGVzdHMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zY3JpcHRzL2J1Z3ppbGxhX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gMjY5MTEx
KQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2J1Z3ppbGxhX3VuaXR0ZXN0cy5qcwkobm9uZXhpc3RlbnQp
CkBAIC0xLDIzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbiAoKSB7Ci0KLW1vZHVs
ZSgiYnVnemlsbGEiKTsKLQotdmFyIGtFeGFtcGxlUmVzcG9uc2VYTUwgPQotICAgICc8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PicgKwotICAgICc8ZmVlZCB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIj4nICsKLSAgICAnICA8dGl0bGU+QnVnemlsbGEgQnVn
czwvdGl0bGU+JyArCi0gICAgJyAgPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHR5cGU9InRleHQvaHRt
bCInICsKLSAgICAnICAgICAgICBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9idWdsaXN0
LmNnaT9idWdfc3RhdHVzPVJFT1BFTkVEJmFtcDtidWdfc3RhdHVzPU5FVyZhbXA7YnVnX3N0YXR1
cz1BU1NJR05FRCZhbXA7YnVnX3N0YXR1cz1VTkNPTkZJUk1FRCZhbXA7ZmllbGQtMS0wLTA9YnVn
X3N0YXR1cyZhbXA7ZmllbGQwLTAtMD1wcm9kdWN0JmFtcDtmaWVsZDAtMC0xPWNvbXBvbmVudCZh
bXA7ZmllbGQwLTAtMj1zaG9ydF9kZXNjJmFtcDtmaWVsZDAtMC0zPXN0YXR1c193aGl0ZWJvYXJk
JmFtcDtmaWVsZDAtMC00PWxvbmdkZXNjJmFtcDtxdWVyeV9mb3JtYXQ9YWR2YW5jZWQmYW1wO3Jl
bWFjdGlvbj0mYW1wO3R5cGUtMS0wLTA9YW55ZXhhY3QmYW1wO3R5cGUwLTAtMD1zdWJzdHJpbmcm
YW1wO3R5cGUwLTAtMT1zdWJzdHJpbmcmYW1wO3R5cGUwLTAtMj1zdWJzdHJpbmcmYW1wO3R5cGUw
LTAtMz1zdWJzdHJpbmcmYW1wO3R5cGUwLTAtND1zdWJzdHJpbmcmYW1wO3ZhbHVlLTEtMC0wPVJF
T1BFTkVEJTJDTkVXJTJDQVNTSUdORUQlMkNVTkNPTkZJUk1FRCZhbXA7dmFsdWUwLTAtMD1nYXJk
ZW4tby1tYXRpYyZhbXA7dmFsdWUwLTAtMT1nYXJkZW4tby1tYXRpYyZhbXA7dmFsdWUwLTAtMj1n
YXJkZW4tby1tYXRpYyZhbXA7dmFsdWUwLTAtMz1nYXJkZW4tby1tYXRpYyZhbXA7dmFsdWUwLTAt
ND1nYXJkZW4tby1tYXRpYyIvPicgKwotICAgICcgIDxsaW5rIHJlbD0ic2VsZiIgdHlwZT0iYXBw
bGljYXRpb24vYXRvbSt4bWwiJyArCi0gICAgJyAgICAgICAgaHJlZj0iaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvYnVnbGlzdC5jZ2k/YnVnX3N0YXR1cz1SRU9QRU5FRCZhbXA7YnVnX3N0YXR1cz1O
RVcmYW1wO2J1Z19zdGF0dXM9QVNTSUdORUQmYW1wO2J1Z19zdGF0dXM9VU5DT05GSVJNRUQmYW1w
O2N0eXBlPWF0b20mYW1wO2ZpZWxkLTEtMC0wPWJ1Z19zdGF0dXMmYW1wO2ZpZWxkMC0wLTA9cHJv
ZHVjdCZhbXA7ZmllbGQwLTAtMT1jb21wb25lbnQmYW1wO2ZpZWxkMC0wLTI9c2hvcnRfZGVzYyZh
bXA7ZmllbGQwLTAtMz1zdGF0dXNfd2hpdGVib2FyZCZhbXA7ZmllbGQwLTAtND1sb25nZGVzYyZh
bXA7cXVlcnlfZm9ybWF0PWFkdmFuY2VkJmFtcDtyZW1hY3Rpb249JmFtcDt0eXBlLTEtMC0wPWFu
eWV4YWN0JmFtcDt0eXBlMC0wLTA9c3Vic3RyaW5nJmFtcDt0eXBlMC0wLTE9c3Vic3RyaW5nJmFt
cDt0eXBlMC0wLTI9c3Vic3RyaW5nJmFtcDt0eXBlMC0wLTM9c3Vic3RyaW5nJmFtcDt0eXBlMC0w
LTQ9c3Vic3RyaW5nJmFtcDt2YWx1ZS0xLTAtMD1SRU9QRU5FRCUyQ05FVyUyQ0FTU0lHTkVEJTJD
VU5DT05GSVJNRUQmYW1wO3ZhbHVlMC0wLTA9Z2FyZGVuLW8tbWF0aWMmYW1wO3ZhbHVlMC0wLTE9
Z2FyZGVuLW8tbWF0aWMmYW1wO3ZhbHVlMC0wLTI9Z2FyZGVuLW8tbWF0aWMmYW1wO3ZhbHVlMC0w
LTM9Z2FyZGVuLW8tbWF0aWMmYW1wO3ZhbHVlMC0wLTQ9Z2FyZGVuLW8tbWF0aWMiLz4nICsKLSAg
ICAnICA8dXBkYXRlZD4yMDExLTA4LTA0VDAwOjIyOjQ5WjwvdXBkYXRlZD4nICsKLSAgICAnICA8
aWQ+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYnVnbGlzdC5jZ2k/YnVnX3N0YXR1cz1SRU9QRU5F
RCZhbXA7YnVnX3N0YXR1cz1ORVcmYW1wO2J1Z19zdGF0dXM9QVNTSUdORUQmYW1wO2J1Z19zdGF0
dXM9VU5DT05GSVJNRUQmYW1wO2N0eXBlPWF0b20mYW1wO2ZpZWxkLTEtMC0wPWJ1Z19zdGF0dXMm
YW1wO2ZpZWxkMC0wLTA9cHJvZHVjdCZhbXA7ZmllbGQwLTAtMT1jb21wb25lbnQmYW1wO2ZpZWxk
MC0wLTI9c2hvcnRfZGVzYyZhbXA7ZmllbGQwLTAtMz1zdGF0dXNfd2hpdGVib2FyZCZhbXA7Zmll
bGQwLTAtND1sb25nZGVzYyZhbXA7cXVlcnlfZm9ybWF0PWFkdmFuY2VkJmFtcDtyZW1hY3Rpb249
JmFtcDt0eXBlLTEtMC0wPWFueWV4YWN0JmFtcDt0eXBlMC0wLTA9c3Vic3RyaW5nJmFtcDt0eXBl
MC0wLTE9c3Vic3RyaW5nJmFtcDt0eXBlMC0wLTI9c3Vic3RyaW5nJmFtcDt0eXBlMC0wLTM9c3Vi
c3RyaW5nJmFtcDt0eXBlMC0wLTQ9c3Vic3RyaW5nJmFtcDt2YWx1ZS0xLTAtMD1SRU9QRU5FRCUy
Q05FVyUyQ0FTU0lHTkVEJTJDVU5DT05GSVJNRUQmYW1wO3ZhbHVlMC0wLTA9Z2FyZGVuLW8tbWF0
aWMmYW1wO3ZhbHVlMC0wLTE9Z2FyZGVuLW8tbWF0aWMmYW1wO3ZhbHVlMC0wLTI9Z2FyZGVuLW8t
bWF0aWMmYW1wO3ZhbHVlMC0wLTM9Z2FyZGVuLW8tbWF0aWMmYW1wO3ZhbHVlMC0wLTQ9Z2FyZGVu
LW8tbWF0aWM8L2lkPicgKwotICAgICcnICsKLSAgICAnICA8ZW50cnk+JyArCi0gICAgJyAgICA8
dGl0bGU+W0J1ZyA2NTY1NF0gQWRkIG1pc3NpbmcgbGljZW5zZSBibG9ja3MgdG8gZ2FyZGVuLW8t
bWF0aWM8L3RpdGxlPicgKwotICAgICcgICAgPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHR5cGU9InRl
eHQvaHRtbCInICsKLSAgICAnICAgICAgICAgIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTY1NCIvPicgKwotICAgICcgICAgPGlkPmh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTY1NDwvaWQ+JyArCi0gICAgJyAgICA8YXV0aG9y
PicgKwotICAgICcgICAgICA8bmFtZT5BZGFtIEJhcnRoPC9uYW1lPicgKwotICAgICcgICAgPC9h
dXRob3I+JyArCi0gICAgJyAgICA8dXBkYXRlZD4yMDExLTA4LTA0VDAwOjIyOjI2WjwvdXBkYXRl
ZD4gJyArCi0gICAgJyAgICA8c3VtbWFyeSB0eXBlPSJodG1sIj4nICsKLSAgICAnICAgICAgJyAr
Ci0gICAgJyAgICAgICZsdDt0YWJsZSZndDsnICsKLSAgICAnICAgICAgJmx0O3RyJmd0OycgKwot
ICAgICcgICAgICAgICZsdDt0aCZndDtGaWVsZCZsdDsvdGgmZ3Q7Jmx0O3RoJmd0O1ZhbHVlJmx0
Oy90aCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7Ynpf
ZmVlZF9wcm9kdWN0JnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtQcm9kdWN0
Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7V2ViS2l0Jmx0Oy90ZCZndDsn
ICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9jb21w
b25lbnQmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O0NvbXBvbmVudCZsdDsv
dGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O05ldyBCdWdzJmx0Oy90ZCZndDsnICsK
LSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9hc3NpZ25l
ZSZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7QXNzaWduZWUmbHQ7L3RkJmd0
OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtBZGFtIEJhcnRoJmx0Oy90ZCZndDsnICsKLSAg
ICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9yZXBvcnRlciZx
dW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7UmVwb3J0ZXImbHQ7L3RkJmd0Oycg
KwotICAgICcgICAgICAgICZsdDt0ZCZndDtBZGFtIEJhcnRoJmx0Oy90ZCZndDsnICsKLSAgICAn
ICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9idWdfc3RhdHVzJnF1
b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtTdGF0dXMmbHQ7L3RkJmd0OycgKwot
ICAgICcgICAgICAgICZsdDt0ZCZndDtORVcmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7
L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX3Jlc29sdXRpb24mcXVvdDsmZ3Q7JyAr
Ci0gICAgJyAgICAgICAgJmx0O3RkJmd0O1Jlc29sdXRpb24gJmx0Oy90ZCZndDsnICsKLSAgICAn
ICAgICAgICAmbHQ7dGQmZ3Q7Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsm
bHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9wcmlvcml0eSZxdW90OyZndDsnICsKLSAgICAnICAg
ICAgICAmbHQ7dGQmZ3Q7UHJpb3JpdHkmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0
ZCZndDtQMiZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNz
PSZxdW90O2J6X2ZlZWRfc2V2ZXJpdHkmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3Rk
Jmd0O1NldmVyaXR5ICZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O05vcm1h
bCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90
O2J6X2ZlZWRfY3JlYXRpb25fZGF0ZSZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQm
Z3Q7T3BlbmVkJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7MTY6MjE6NTIm
bHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDti
el9mZWVkX2NoYW5nZWRfZGF0ZSZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7
Q2hhbmdlZCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0OzE2OjIyOjI2Jmx0
Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsnICsKLSAgICAnICAgICAgJmx0Oy90
YWJsZSZndDsnICsKLSAgICAnICAgIDwvc3VtbWFyeT4nICsKLSAgICAnICA8L2VudHJ5PicgKwot
ICAgICcgIDxlbnRyeT4nICsKLSAgICAnICAgIDx0aXRsZT5bQnVnIDY1NjUzXSBnYXJkZW4tby1t
YXRpYyBuZWVkcyBhIHdheSB0byBtb2NrIG91dCB0aGUgbmV0d29yazwvdGl0bGU+JyArCi0gICAg
JyAgICA8bGluayByZWw9ImFsdGVybmF0ZSIgdHlwZT0idGV4dC9odG1sIicgKwotICAgICcgICAg
ICAgICAgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjUz
Ii8+JyArCi0gICAgJyAgICA8aWQ+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY1NjUzPC9pZD4nICsKLSAgICAnICAgIDxhdXRob3I+JyArCi0gICAgJyAgICAgIDxuYW1l
PkFkYW0gQmFydGg8L25hbWU+JyArCi0gICAgJyAgICA8L2F1dGhvcj4nICsKLSAgICAnICAgIDx1
cGRhdGVkPjIwMTEtMDgtMDRUMDA6MjI6NDlaPC91cGRhdGVkPiAnICsKLSAgICAnICAgIDxzdW1t
YXJ5IHR5cGU9Imh0bWwiPicgKwotICAgICcgICAgICAnICsKLSAgICAnICAgICAgJmx0O3RhYmxl
Jmd0OycgKwotICAgICcgICAgICAmbHQ7dHImZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RoJmd0
O0ZpZWxkJmx0Oy90aCZndDsmbHQ7dGgmZ3Q7VmFsdWUmbHQ7L3RoJmd0OycgKwotICAgICcgICAg
ICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX3Byb2R1Y3QmcXVvdDsmZ3Q7
JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1Byb2R1Y3QmbHQ7L3RkJmd0OycgKwotICAgICcg
ICAgICAgICZsdDt0ZCZndDtXZWJLaXQmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3Ry
Jmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX2NvbXBvbmVudCZxdW90OyZndDsnICsKLSAg
ICAnICAgICAgICAmbHQ7dGQmZ3Q7Q29tcG9uZW50Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAg
ICAmbHQ7dGQmZ3Q7TmV3IEJ1Z3MmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0
OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX2Fzc2lnbmVlJnF1b3Q7Jmd0OycgKwotICAgICcg
ICAgICAgICZsdDt0ZCZndDtBc3NpZ25lZSZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0
O3RkJmd0O0FkYW0gQmFydGgmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZs
dDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX3JlcG9ydGVyJnF1b3Q7Jmd0OycgKwotICAgICcgICAg
ICAgICZsdDt0ZCZndDtSZXBvcnRlciZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3Rk
Jmd0O0FkYW0gQmFydGgmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0
ciBjbGFzcz0mcXVvdDtiel9mZWVkX2J1Z19zdGF0dXMmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAg
ICAgJmx0O3RkJmd0O1N0YXR1cyZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0
O05FVyZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZx
dW90O2J6X2ZlZWRfcmVzb2x1dGlvbiZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQm
Z3Q7UmVzb2x1dGlvbiAmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDsmbHQ7
L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9m
ZWVkX3ByaW9yaXR5JnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtQcmlvcml0
eSZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1AyJmx0Oy90ZCZndDsnICsK
LSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9zZXZlcml0
eSZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7U2V2ZXJpdHkgJmx0Oy90ZCZn
dDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7Tm9ybWFsJmx0Oy90ZCZndDsnICsKLSAgICAn
ICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9jcmVhdGlvbl9kYXRl
JnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtPcGVuZWQmbHQ7L3RkJmd0Oycg
KwotICAgICcgICAgICAgICZsdDt0ZCZndDsxNjoxNjo0NCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAg
ICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfY2hhbmdlZF9kYXRlJnF1
b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtDaGFuZ2VkJmx0Oy90ZCZndDsnICsK
LSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7MTY6MjI6NDkmbHQ7L3RkJmd0OycgKwotICAgICcgICAg
ICAmbHQ7L3RyJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RhYmxlJmd0OycgKwotICAgICcgICAg
PC9zdW1tYXJ5PicgKwotICAgICcgIDwvZW50cnk+JyArCi0gICAgJyAgPGVudHJ5PicgKwotICAg
ICcgICAgPHRpdGxlPltCdWcgNjU2NTBdIFVzZSBmYWlsdXJlSW5mbyBtb3JlIHBlcnZhc2l2ZWx5
IGluIGdhcmRlbi1vLW1hdGljPC90aXRsZT4nICsKLSAgICAnICAgIDxsaW5rIHJlbD0iYWx0ZXJu
YXRlIiB0eXBlPSJ0ZXh0L2h0bWwiJyArCi0gICAgJyAgICAgICAgICBocmVmPSJodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTAiLz4nICsKLSAgICAnICAgIDxpZD5o
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTA8L2lkPicgKwotICAg
ICcgICAgPGF1dGhvcj4nICsKLSAgICAnICAgICAgPG5hbWU+QWRhbSBCYXJ0aDwvbmFtZT4nICsK
LSAgICAnICAgIDwvYXV0aG9yPicgKwotICAgICcgICAgPHVwZGF0ZWQ+MjAxMS0wOC0wM1QyMzo0
MDozNFo8L3VwZGF0ZWQ+ICcgKwotICAgICcgICAgPHN1bW1hcnkgdHlwZT0iaHRtbCI+JyArCi0g
ICAgJyAgICAgICcgKwotICAgICcgICAgICAmbHQ7dGFibGUmZ3Q7JyArCi0gICAgJyAgICAgICZs
dDt0ciZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGgmZ3Q7RmllbGQmbHQ7L3RoJmd0OyZsdDt0
aCZndDtWYWx1ZSZsdDsvdGgmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNs
YXNzPSZxdW90O2J6X2ZlZWRfcHJvZHVjdCZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7
dGQmZ3Q7UHJvZHVjdCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1dlYktp
dCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90
O2J6X2ZlZWRfY29tcG9uZW50JnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtD
b21wb25lbnQmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtOZXcgQnVncyZs
dDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6
X2ZlZWRfYXNzaWduZWUmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O0Fzc2ln
bmVlJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7QWRhbSBCYXJ0aCZsdDsv
dGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2Zl
ZWRfcmVwb3J0ZXImcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1JlcG9ydGVy
Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7QWRhbSBCYXJ0aCZsdDsvdGQm
Z3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRf
YnVnX3N0YXR1cyZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7U3RhdHVzJmx0
Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7TkVXJmx0Oy90ZCZndDsnICsKLSAg
ICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9yZXNvbHV0aW9u
JnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtSZXNvbHV0aW9uICZsdDsvdGQm
Z3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0OyZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAg
ICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfcHJpb3JpdHkmcXVvdDsmZ3Q7
JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1ByaW9yaXR5Jmx0Oy90ZCZndDsnICsKLSAgICAn
ICAgICAgICAmbHQ7dGQmZ3Q7UDImbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0
OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX3NldmVyaXR5JnF1b3Q7Jmd0OycgKwotICAgICcg
ICAgICAgICZsdDt0ZCZndDtTZXZlcml0eSAmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZs
dDt0ZCZndDtOb3JtYWwmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0
ciBjbGFzcz0mcXVvdDtiel9mZWVkX2NyZWF0aW9uX2RhdGUmcXVvdDsmZ3Q7JyArCi0gICAgJyAg
ICAgICAgJmx0O3RkJmd0O09wZW5lZCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3Rk
Jmd0OzE1OjM1OjU1Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIg
Y2xhc3M9JnF1b3Q7YnpfZmVlZF9jaGFuZ2VkX2RhdGUmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAg
ICAgJmx0O3RkJmd0O0NoYW5nZWQmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZn
dDsxNTo0MDozNCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7JyArCi0gICAg
JyAgICAgICZsdDsvdGFibGUmZ3Q7JyArCi0gICAgJyAgICA8L3N1bW1hcnk+JyArCi0gICAgJyAg
PC9lbnRyeT4nICsKLSAgICAnPC9mZWVkPicKLQotdGVzdCgicXVpY2tTZWFyY2giLCAzLCBmdW5j
dGlvbigpIHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5ldHdvcmtTaW11bGF0b3IoKTsKLQot
ICAgIHZhciByZXF1ZXN0ZWRVUkxzID0gW107Ci0gICAgc2ltdWxhdG9yLmdldCA9IGZ1bmN0aW9u
KHVybCwgY2FsbGJhY2spCi0gICAgewotICAgICAgICByZXF1ZXN0ZWRVUkxzLnB1c2godXJsKTsK
LSAgICAgICAgc2ltdWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICB2YXIgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpOwotICAgICAgICAgICAgdmFyIHJlc3Bv
bnNlRE9NID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhrRXhhbXBsZVJlc3BvbnNlWE1MLCAiYXBw
bGljYXRpb24veG1sIik7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXNwb25zZURPTSk7Ci0gICAg
ICAgIH0pOwotICAgIH07Ci0KLSAgICBzaW11bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsKLSAg
ICAgICAgYnVnemlsbGEucXVpY2tTZWFyY2goJ2dhcmRlbi1vLW1hdGljJywgZnVuY3Rpb24oYnVn
cykgewotICAgICAgICAgICAgZGVlcEVxdWFsKGJ1Z3MsIFt7Ci0gICAgICAgICAgICAgICAgInRp
dGxlIjogIltCdWcgNjU2NTRdIEFkZCBtaXNzaW5nIGxpY2Vuc2UgYmxvY2tzIHRvIGdhcmRlbi1v
LW1hdGljIiwKLSAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTY1NCIsCi0gICAgICAgICAgICAgICAgInN0YXR1cyI6ICJORVci
Ci0gICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgInRpdGxlIjogIltCdWcgNjU2NTNd
IGdhcmRlbi1vLW1hdGljIG5lZWRzIGEgd2F5IHRvIG1vY2sgb3V0IHRoZSBuZXR3b3JrIiwKLSAg
ICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NTY1MyIsCi0gICAgICAgICAgICAgICAgInN0YXR1cyI6ICJORVciCi0gICAgICAgICAg
ICB9LCB7Ci0gICAgICAgICAgICAgICAgInRpdGxlIjogIltCdWcgNjU2NTBdIFVzZSBmYWlsdXJl
SW5mbyBtb3JlIHBlcnZhc2l2ZWx5IGluIGdhcmRlbi1vLW1hdGljIiwKLSAgICAgICAgICAgICAg
ICAidXJsIjogImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTY1MCIs
Ci0gICAgICAgICAgICAgICAgInN0YXR1cyI6ICJORVciCi0gICAgICAgICAgICB9XSk7Ci0gICAg
ICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVlcEVxdWFsKHJlcXVlc3RlZFVSTHMsIFsKLSAgICAg
ICAgImh0dHBzOi8vYnVncy53ZWJraXQub3JnL2J1Z2xpc3QuY2dpP2N0eXBlPXJzcyZvcmRlcj1i
dWdzLmJ1Z19pZCtkZXNjJnF1aWNrc2VhcmNoPWdhcmRlbi1vLW1hdGljIiwKLSAgICBdKTsKLX0p
OwotCi10ZXN0KCJpc09wZW5TdGF0dXMiLCA2LCBmdW5jdGlvbigpIHsKLSAgICBvayhidWd6aWxs
YS5pc09wZW5TdGF0dXMoJ1VOQ09ORklSTUVEJykpOwotICAgIG9rKGJ1Z3ppbGxhLmlzT3BlblN0
YXR1cygnTkVXJykpOwotICAgIG9rKGJ1Z3ppbGxhLmlzT3BlblN0YXR1cygnQVNTSUdORUQnKSk7
Ci0gICAgb2soYnVnemlsbGEuaXNPcGVuU3RhdHVzKCdSRU9QRU5FRCcpKTsKLSAgICBvayghYnVn
emlsbGEuaXNPcGVuU3RhdHVzKCdGSVhFRCcpKTsKLSAgICBvayghYnVnemlsbGEuaXNPcGVuU3Rh
dHVzKCdWRVJJRklFRCcpKTsKLX0pOwotCi19KSgpOwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2J1
aWxkZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9idWlsZGVycy5qcwkocmV2
aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2J1aWxkZXJzLmpzCShub25leGlzdGVu
dCkKQEAgLTEsMTkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIGJ1aWxkZXJzID0gYnVpbGRl
cnMgfHwge307Ci0KLShmdW5jdGlvbigpIHsKLQotdmFyIGtVcGRhdGVTdGVwTmFtZSA9ICd1cGRh
dGUnOwotdmFyIGtVcGRhdGVTY3JpcHRzU3RlcE5hbWUgPSAndXBkYXRlX3NjcmlwdHMnOwotdmFy
IGtDb21waWxlU3RlcE5hbWUgPSAnY29tcGlsZSc7Ci12YXIga1dlYktpdFRlc3RzU3RlcE5hbWVz
ID0gWyd3ZWJraXRfdGVzdHMnLCAnbGF5b3V0LXRlc3QnXTsKLQotdmFyIGtDcmFzaGVkT3JIdW5n
T3V0cHV0TWFya2VyID0gJ2NyYXNoZWQgb3IgaHVuZyc7Ci0KLWZ1bmN0aW9uIGJ1aWxkQm90VVJM
KHBsYXRmb3JtKQotewotICAgIHJldHVybiBjb25maWcua1BsYXRmb3Jtc1twbGF0Zm9ybV0uYnVp
bGRDb25zb2xlVVJMOwotfQotCi1mdW5jdGlvbiB1cmxGb3JCdWlsZGVySW5mbyhwbGF0Zm9ybSwg
YnVpbGRlck5hbWUpCi17Ci0gICAgcmV0dXJuIGJ1aWxkQm90VVJMKHBsYXRmb3JtKSArICcvanNv
bi9idWlsZGVycy8nICsgZW5jb2RlVVJJQ29tcG9uZW50KGJ1aWxkZXJOYW1lKSArICcvJzsKLX0K
LQotZnVuY3Rpb24gdXJsRm9yQnVpbGRJbmZvKHBsYXRmb3JtLCBidWlsZGVyTmFtZSwgYnVpbGRO
dW1iZXIpCi17Ci0gICAgcmV0dXJuIGJ1aWxkQm90VVJMKHBsYXRmb3JtKSArICcvanNvbi9idWls
ZGVycy8nICsgZW5jb2RlVVJJQ29tcG9uZW50KGJ1aWxkZXJOYW1lKSArICcvYnVpbGRzLycgKyBl
bmNvZGVVUklDb21wb25lbnQoYnVpbGROdW1iZXIpOwotfQotCi1mdW5jdGlvbiBkaWRGYWlsKHN0
ZXApCi17Ci0gICAgaWYgKGtXZWJLaXRUZXN0c1N0ZXBOYW1lcy5pbmRleE9mKHN0ZXAubmFtZSkg
IT0gLTEpIHsKLSAgICAgICAgLy8gcnVuLXdlYmtpdC10ZXN0cyBmYWlscyB0byBnZW5lcmF0ZSB0
ZXN0IGNvdmVyYWdlIHdoZW4gaXQgY3Jhc2hlcyBvciBoYW5ncy4KLSAgICAgICAgLy8gRklYTUU6
IERvIGJ1aWxkLndlYmtpdC5vcmcgYm90cyBvdXRwdXQgdGhpcyBtYXJrZXIgd2hlbiB0aGUgdGVz
dHMgZmFpbCB0byBydW4/Ci0gICAgICAgIHJldHVybiBzdGVwLnRleHQuaW5kZXhPZihrQ3Jhc2hl
ZE9ySHVuZ091dHB1dE1hcmtlcikgIT0gLTE7Ci0gICAgfQotICAgIC8vIFRoZSBmaXJzdCBpdGVt
IGluIHN0ZXAucmVzdWx0cyBpcyB0aGUgc3VjY2VzcyBvZiB0aGUgc3RlcDoKLSAgICAvLyAwID09
IHBhc3MsIDEgPT0gd2FybmluZywgMiA9PSBmYWlsCi0gICAgcmV0dXJuIHN0ZXAucmVzdWx0c1sw
XSA9PSAyOwotfQotCi1mdW5jdGlvbiBmYWlsaW5nU3RlcHMoYnVpbGRJbmZvKQotewotICAgIHJl
dHVybiBidWlsZEluZm8uc3RlcHMuZmlsdGVyKGRpZEZhaWwpOwotfQotCi1mdW5jdGlvbiBtb3N0
UmVjZW50Q29tcGxldGVkQnVpbGROdW1iZXIoaW5kaXZpZHVhbEJ1aWxkZXJTdGF0dXMpCi17Ci0g
ICAgaWYgKCFpbmRpdmlkdWFsQnVpbGRlclN0YXR1cykKLSAgICAgICAgcmV0dXJuIG51bGw7Ci0K
LSAgICBmb3IgKHZhciBpID0gaW5kaXZpZHVhbEJ1aWxkZXJTdGF0dXMuY2FjaGVkQnVpbGRzLmxl
bmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIHZhciBidWlsZE51bWJlciA9IGluZGl2
aWR1YWxCdWlsZGVyU3RhdHVzLmNhY2hlZEJ1aWxkc1tpXTsKLSAgICAgICAgaWYgKGluZGl2aWR1
YWxCdWlsZGVyU3RhdHVzLmN1cnJlbnRCdWlsZHMuaW5kZXhPZihidWlsZE51bWJlcikgPT0gLTEp
Ci0gICAgICAgICAgICByZXR1cm4gYnVpbGROdW1iZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51
bGw7Ci19Ci0KLXZhciBnX2J1aWxkSW5mb0NhY2hlID0gbmV3IGJhc2UuQXN5bmNocm9ub3VzQ2Fj
aGUoZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykgewotICAgIHZhciBleHBsb2RlZEtleSA9IGtleS5z
cGxpdCgnXG4nKTsKLSAgICBuZXQuZ2V0KHVybEZvckJ1aWxkSW5mbyhleHBsb2RlZEtleVswXSwg
ZXhwbG9kZWRLZXlbMV0sIGV4cGxvZGVkS2V5WzJdKSwgY2FsbGJhY2spOwotfSk7Ci0KLWJ1aWxk
ZXJzLmNsZWFyQnVpbGRJbmZvQ2FjaGUgPSBmdW5jdGlvbigpCi17Ci0gICAgZ19idWlsZEluZm9D
YWNoZS5jbGVhcigpOwotfQotCi1mdW5jdGlvbiBmZXRjaE1vc3RSZWNlbnRCdWlsZEluZm9CeUJ1
aWxkZXIocGxhdGZvcm0sIGNhbGxiYWNrKQotewotICAgIG5ldC5nZXQoYnVpbGRCb3RVUkwocGxh
dGZvcm0pICsgJy9qc29uL2J1aWxkZXJzJywgZnVuY3Rpb24oYnVpbGRlclN0YXR1cykgewotICAg
ICAgICB2YXIgYnVpbGRJbmZvQnlCdWlsZGVyID0ge307Ci0gICAgICAgIHZhciBidWlsZGVyTmFt
ZXMgPSBPYmplY3Qua2V5cyhidWlsZGVyU3RhdHVzKTsKLSAgICAgICAgdmFyIHJlcXVlc3RUcmFj
a2VyID0gbmV3IGJhc2UuUmVxdWVzdFRyYWNrZXIoYnVpbGRlck5hbWVzLmxlbmd0aCwgY2FsbGJh
Y2ssIFtidWlsZEluZm9CeUJ1aWxkZXJdKTsKLSAgICAgICAgYnVpbGRlck5hbWVzLmZvckVhY2go
ZnVuY3Rpb24oYnVpbGRlck5hbWUpIHsKLSAgICAgICAgICAgIGlmICghY29uZmlnLmJ1aWxkZXJB
cHBsaWVzKGJ1aWxkZXJOYW1lKSkgewotICAgICAgICAgICAgICAgIHJlcXVlc3RUcmFja2VyLnJl
cXVlc3RDb21wbGV0ZSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgdmFyIGJ1aWxkTnVtYmVyID0gbW9zdFJlY2VudENvbXBsZXRlZEJ1aWxk
TnVtYmVyKGJ1aWxkZXJTdGF0dXNbYnVpbGRlck5hbWVdKTsKLSAgICAgICAgICAgIGlmICghYnVp
bGROdW1iZXIpIHsKLSAgICAgICAgICAgICAgICBidWlsZEluZm9CeUJ1aWxkZXJbYnVpbGRlck5h
bWVdID0gbnVsbDsKLSAgICAgICAgICAgICAgICByZXF1ZXN0VHJhY2tlci5yZXF1ZXN0Q29tcGxl
dGUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGdfYnVpbGRJbmZvQ2FjaGUuZ2V0KHBsYXRmb3JtICsgJ1xuJyArIGJ1aWxkZXJOYW1lICsg
J1xuJyArIGJ1aWxkTnVtYmVyLCBmdW5jdGlvbihidWlsZEluZm8pIHsKLSAgICAgICAgICAgICAg
ICBidWlsZEluZm9CeUJ1aWxkZXJbYnVpbGRlck5hbWVdID0gYnVpbGRJbmZvOwotICAgICAgICAg
ICAgICAgIHJlcXVlc3RUcmFja2VyLnJlcXVlc3RDb21wbGV0ZSgpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi1idWlsZGVycy5idWlsZGVySW5mbyA9IGZ1bmN0
aW9uKHBsYXRmb3JtLCBidWlsZGVyTmFtZSwgY2FsbGJhY2spCi17Ci0gICAgdmFyIGJ1aWxkZXJJ
bmZvVVJMID0gdXJsRm9yQnVpbGRlckluZm8ocGxhdGZvcm0sIGJ1aWxkZXJOYW1lKTsKLSAgICBu
ZXQuZ2V0KGJ1aWxkZXJJbmZvVVJMLCBjYWxsYmFjayk7Ci19OwotCi1idWlsZGVycy5jYWNoZWRC
dWlsZEluZm9zID0gZnVuY3Rpb24ocGxhdGZvcm0sIGJ1aWxkZXJOYW1lLCBjYWxsYmFjaykKLXsK
LSAgICB2YXIgYnVpbGRlckluZm9VUkwgPSB1cmxGb3JCdWlsZGVySW5mbyhwbGF0Zm9ybSwgYnVp
bGRlck5hbWUpOwotICAgIG5ldC5nZXQoYnVpbGRlckluZm9VUkwsIGZ1bmN0aW9uKGJ1aWxkZXJJ
bmZvKSB7Ci0gICAgICAgIHZhciBzZWxlY3RVUkwgPSB1cmxGb3JCdWlsZGVySW5mbyhwbGF0Zm9y
bSwgYnVpbGRlck5hbWUpICsgJ2J1aWxkcyc7Ci0gICAgICAgIHZhciBzdGFydCA9IE1hdGgubWF4
KDAsIGJ1aWxkZXJJbmZvLmNhY2hlZEJ1aWxkcy5sZW5ndGggLSBjb25maWcua0J1aWxkTnVtYmVy
TGltaXQpOwotICAgICAgICB2YXIgc2VsZWN0UGFyYW1zID0geyBzZWxlY3QgOiBidWlsZGVySW5m
by5jYWNoZWRCdWlsZHMuc2xpY2Uoc3RhcnQpIH07Ci0gICAgICAgIHZhciB0cmFkaXRpb25hbEVu
Y29kaW5nID0gdHJ1ZTsKLSAgICAgICAgc2VsZWN0VVJMICs9ICc/JyArICQucGFyYW0oc2VsZWN0
UGFyYW1zLCB0cmFkaXRpb25hbEVuY29kaW5nKTsKLSAgICAgICAgbmV0LmdldChzZWxlY3RVUkws
IGNhbGxiYWNrKTsKLSAgICB9KTsKLX0KLQotYnVpbGRlcnMucmVjZW50QnVpbGRJbmZvcyA9IGZ1
bmN0aW9uKGNhbGxiYWNrKQotewotICAgIGZldGNoTW9zdFJlY2VudEJ1aWxkSW5mb0J5QnVpbGRl
cihjb25maWcuY3VycmVudFBsYXRmb3JtLCBmdW5jdGlvbihidWlsZEluZm9CeUJ1aWxkZXIpIHsK
LSAgICAgICAgdmFyIGJ1aWxkSW5mbyA9IHt9OwotICAgICAgICAkLmVhY2goYnVpbGRJbmZvQnlC
dWlsZGVyLCBmdW5jdGlvbihidWlsZGVyTmFtZSwgdGhpc0J1aWxkSW5mbykgewotICAgICAgICAg
ICAgaWYgKCFidWlsZEluZm8pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBidWlsZEluZm9bYnVpbGRlck5hbWVdID0gdGhpc0J1aWxkSW5mbzsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIGNhbGxiYWNrKGJ1aWxkSW5mbyk7Ci0gICAgfSk7Ci19OwotCi1i
dWlsZGVycy5idWlsZGVyc0ZhaWxpbmdOb25MYXlvdXRUZXN0cyA9IGZ1bmN0aW9uKGNhbGxiYWNr
KQotewotICAgIGZldGNoTW9zdFJlY2VudEJ1aWxkSW5mb0J5QnVpbGRlcihjb25maWcuY3VycmVu
dFBsYXRmb3JtLCBmdW5jdGlvbihidWlsZEluZm9CeUJ1aWxkZXIpIHsKLSAgICAgICAgdmFyIGZh
aWx1cmVMaXN0ID0ge307Ci0gICAgICAgICQuZWFjaChidWlsZEluZm9CeUJ1aWxkZXIsIGZ1bmN0
aW9uKGJ1aWxkZXJOYW1lLCBidWlsZEluZm8pIHsKLSAgICAgICAgICAgIGlmICghYnVpbGRJbmZv
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHZhciBmYWlsdXJlcyA9IGZh
aWxpbmdTdGVwcyhidWlsZEluZm8pOwotICAgICAgICAgICAgaWYgKGZhaWx1cmVzLmxlbmd0aCkK
LSAgICAgICAgICAgICAgICBmYWlsdXJlTGlzdFtidWlsZGVyTmFtZV0gPSBmYWlsdXJlcy5tYXAo
ZnVuY3Rpb24oZmFpbHVyZSkgeyByZXR1cm4gZmFpbHVyZS5uYW1lOyB9KTsKLSAgICAgICAgfSk7
Ci0gICAgICAgIGNhbGxiYWNrKGZhaWx1cmVMaXN0KTsKLSAgICB9KTsKLX07Ci0KLWJ1aWxkZXJz
LnBlcmZCdWlsZGVycyA9IGZ1bmN0aW9uKGNhbGxiYWNrKQotewotICAgIGZldGNoTW9zdFJlY2Vu
dEJ1aWxkSW5mb0J5QnVpbGRlcihjb25maWcuY3VycmVudFBsYXRmb3JtLCBmdW5jdGlvbihidWls
ZEluZm9CeUJ1aWxkZXIpIHsKLSAgICAgICAgdmFyIHBlcmZUZXN0TWFwID0ge307Ci0gICAgICAg
ICQuZWFjaChidWlsZEluZm9CeUJ1aWxkZXIsIGZ1bmN0aW9uKGJ1aWxkZXJOYW1lLCBidWlsZElu
Zm8pIHsKLSAgICAgICAgICAgIGlmICghYnVpbGRJbmZvIHx8IGJ1aWxkZXJOYW1lLmluZGV4T2Yo
J1BlcmYnKSA9PSAtMSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGJ1
aWxkSW5mby5zdGVwcy5mb3JFYWNoKGZ1bmN0aW9uKHN0ZXApIHsKLSAgICAgICAgICAgICAgICAv
LyBGSVhNRTogSWYgdGhlIGNvbXBpbGUgaXMgYnJva2VuLCBncmFiIGFuIG9sZGVyIGJ1aWxkLgot
ICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjb21waWxlL3VwZGF0ZSBpcyBicm9rZW4sIG5vIHN0
ZXBzIHdpbGwgaGF2ZSBhIHJlc3VsdHMgdXJsLgotICAgICAgICAgICAgICAgIGlmICghc3RlcC51
cmxzLnJlc3VsdHMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICBpZiAoIXBlcmZUZXN0TWFwW3N0ZXAubmFtZV0pCi0gICAgICAgICAgICAgICAgICAgIHBlcmZU
ZXN0TWFwW3N0ZXAubmFtZV0gPSBbXTsKLSAgICAgICAgICAgICAgICBwZXJmVGVzdE1hcFtzdGVw
Lm5hbWVdLnB1c2goeyBidWlsZGVyOiBidWlsZGVyTmFtZSwgdXJsOiBzdGVwLnVybHMucmVzdWx0
cyB9KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICAgICAgY2FsbGJhY2socGVy
ZlRlc3RNYXApOwotICAgIH0pOwotfQotCi19KSgpOwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2J1
aWxkZXJzX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvYnVpbGRl
cnNfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvYnVp
bGRlcnNfdW5pdHRlc3RzLmpzCShub25leGlzdGVudCkKQEAgLTEsMTE5NyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLShmdW5jdGlvbiAoKSB7Ci0KLW1vZHVsZSgiYnVpbGRlcnMiKTsKLQotdmFyIGtF
eGFtcGxlQnVpbGRlclN0YXR1c0pTT04gPSAgewotICAgICJXZWJLaXQgTGludXgiOiB7Ci0gICAg
ICAgICJiYXNlZGlyIjogIldlYktpdF9MaW51eCIsCi0gICAgICAgICJjYWNoZWRCdWlsZHMiOiBb
MTE0NTksIDExNDYwLCAxMTQ2MSwgMTE0NjJdLAotICAgICAgICAiY2F0ZWdvcnkiOiAiNndlYmtp
dCBsaW51eCBsYXRlc3QiLAotICAgICAgICAiY3VycmVudEJ1aWxkcyI6IFsxMTQ2Ml0sCi0gICAg
ICAgICJwZW5kaW5nQnVpbGRzIjogMCwKLSAgICAgICAgInNsYXZlcyI6IFsidm0xMjQtbTEiXSwK
LSAgICAgICAgInN0YXRlIjogImJ1aWxkaW5nIgotICAgIH0sCi0gICAgIldlYktpdCBNYWMxMC42
IjogewotICAgICAgICAiYmFzZWRpciI6ICJXZWJLaXRfTGludXgiLAotICAgICAgICAiY2FjaGVk
QnVpbGRzIjogWzExNDU5LCAxMTQ2MCwgMTE0NjEsIDExNDYyXSwKLSAgICAgICAgImNhdGVnb3J5
IjogIjZ3ZWJraXQgbGludXggbGF0ZXN0IiwKLSAgICAgICAgImN1cnJlbnRCdWlsZHMiOiBbMTE0
NjEsIDExNDYyXSwKLSAgICAgICAgInBlbmRpbmdCdWlsZHMiOiAwLAotICAgICAgICAic2xhdmVz
IjogWyJ2bTEyNC1tMSJdLAotICAgICAgICAic3RhdGUiOiAiYnVpbGRpbmciCi0gICAgfSwKLSAg
ICAiV2ViS2l0IEFTQU4iOiB7Ci0gICAgICAgICJiYXNlZGlyIjogIldlYktpdF9MaW51eCIsCi0g
ICAgICAgICJjYWNoZWRCdWlsZHMiOiBbMTE0NTksIDExNDYwLCAxMTQ2MSwgMTE0NjJdLAotICAg
ICAgICAiY2F0ZWdvcnkiOiAiNndlYmtpdCBsaW51eCBsYXRlc3QiLAotICAgICAgICAiY3VycmVu
dEJ1aWxkcyI6IFsxMTQ2MSwgMTE0NjJdLAotICAgICAgICAicGVuZGluZ0J1aWxkcyI6IDAsCi0g
ICAgICAgICJzbGF2ZXMiOiBbInZtMTI0LW0xIl0sCi0gICAgICAgICJzdGF0ZSI6ICJidWlsZGlu
ZyIKLSAgICB9LAotfTsKLQotdmFyIGtFeGFtcGxlV2ViS2l0RG90T3JnQnVpbGRlclN0YXR1c0pT
T04gPSAgewotICAgICJBcHBsZSBMaW9uIFJlbGVhc2UgV0syIChUZXN0cykiOiB7Ci0gICAgICAg
ICJiYXNlZGlyIjogIldlYktpdF9MaW51eCIsCi0gICAgICAgICJjYWNoZWRCdWlsZHMiOiBbMTE0
NTksIDExNDYwLCAxMTQ2MSwgMTE0NjJdLAotICAgICAgICAiY2F0ZWdvcnkiOiAiNndlYmtpdCBs
aW51eCBsYXRlc3QiLAotICAgICAgICAiY3VycmVudEJ1aWxkcyI6IFsxMTQ2Ml0sCi0gICAgICAg
ICJwZW5kaW5nQnVpbGRzIjogMCwKLSAgICAgICAgInNsYXZlcyI6IFsidm0xMjQtbTEiXSwKLSAg
ICAgICAgInN0YXRlIjogImJ1aWxkaW5nIgotICAgIH0sCi0gICAgIkdUSyBMaW51eCA2NC1iaXQg
RGVidWciOiB7Ci0gICAgICAgICJiYXNlZGlyIjogIldlYktpdF9MaW51eCIsCi0gICAgICAgICJj
YWNoZWRCdWlsZHMiOiBbMTE0NTksIDExNDYwLCAxMTQ2MSwgMTE0NjJdLAotICAgICAgICAiY2F0
ZWdvcnkiOiAiNndlYmtpdCBsaW51eCBsYXRlc3QiLAotICAgICAgICAiY3VycmVudEJ1aWxkcyI6
IFsxMTQ2MSwgMTE0NjJdLAotICAgICAgICAicGVuZGluZ0J1aWxkcyI6IDAsCi0gICAgICAgICJz
bGF2ZXMiOiBbInZtMTI0LW0xIl0sCi0gICAgICAgICJzdGF0ZSI6ICJidWlsZGluZyIKLSAgICB9
LAotICAgICJRdCBMaW51eCBSZWxlYXNlIjogewotICAgICAgICAiYmFzZWRpciI6ICJXZWJLaXRf
TGludXgiLAotICAgICAgICAiY2FjaGVkQnVpbGRzIjogWzExNDU5LCAxMTQ2MCwgMTE0NjEsIDEx
NDYyXSwKLSAgICAgICAgImNhdGVnb3J5IjogIjZ3ZWJraXQgbGludXggbGF0ZXN0IiwKLSAgICAg
ICAgImN1cnJlbnRCdWlsZHMiOiBbMTE0NjEsIDExNDYyXSwKLSAgICAgICAgInBlbmRpbmdCdWls
ZHMiOiAwLAotICAgICAgICAic2xhdmVzIjogWyJ2bTEyNC1tMSJdLAotICAgICAgICAic3RhdGUi
OiAiYnVpbGRpbmciCi0gICAgfSwKLX07Ci0KLXZhciBrRXhhbXBsZUJ1aWxkSW5mb0pTT04gPSB7
Ci0gICAgImJsYW1lIjogWyJhYmFydGhAd2Via2l0Lm9yZyJdLAotICAgICJidWlsZGVyTmFtZSI6
ICJXZWJLaXQgTGludXgiLAotICAgICJjaGFuZ2VzIjogWyJGaWxlczpcbiBUb29scy9DSVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4u
anNcbiBUb29scy9DaGFuZ2VMb2dcbkF0OiBUaHUgMDQgQXVnIDIwMTEgMDA6NTA6MzhcbkNoYW5n
ZWQgQnk6IGFiYXJ0aEB3ZWJraXQub3JnXG5Db21tZW50czogRml4IHR5cGVzLiAgU2FkbHksIG1h
aW4uanMgaGFzIG5vIHRlc3QgY292ZXJhZ2UuICAoSSBuZWVkIHRvIHRoaW5rXG5hYm91dCBob3cg
dG8gdGVzdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuKVxuXG4qIENJU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qczpQcm9wZXJ0aWVz
OiBcblxuXG4iLCAiRmlsZXM6XG4gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nXG4gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9pbnNldC1ib3gtc2hhZG93cy1l
eHBlY3RlZC5wbmdcbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBh
aW50L3NoYWRvdy1tdWx0aXBsZS1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmlj
dC1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC12ZXJ0aWNhbC1leHBlY3Rl
ZC5wbmdcbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3No
YWRvdy1tdWx0aXBsZS12ZXJ0aWNhbC1leHBlY3RlZC5wbmdcbkF0OiBUaHUgMDQgQXVnIDIwMTEg
MDA6NTA6MzhcbkNoYW5nZWQgQnk6IGFiYXJ0aEB3ZWJraXQub3JnXG5Db21tZW50czogVXBkYXRl
IGJhc2VsaW5lcyBhZnRlciA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIzNDA+
LlxuXG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2JveC1zaGFkb3cvaW5zZXQtYm94LXNo
YWRvd3MtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50
L3NoYWRvdy1tdWx0aXBsZS1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hy
b21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LWhvcml6b250YWwt
ZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRv
dy1tdWx0aXBsZS1zdHJpY3QtdmVydGljYWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJv
bWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS12ZXJ0aWNhbC1leHBlY3RlZC5w
bmc6UHJvcGVydGllczogXG5cblxuIl0sCi0gICAgImN1cnJlbnRTdGVwIjogbnVsbCwKLSAgICAi
ZXRhIjogbnVsbCwKLSAgICAibG9ncyI6IFsKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVp
bGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgv
YnVpbGRzLzExNDYxL3N0ZXBzL3VwZGF0ZV9zY3JpcHRzL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAg
WyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVp
bGRlcnMvV2ViS2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3VwZGF0ZS9sb2dzL3N0ZGlv
Il0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9t
aXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy9jb21w
aWxlL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21p
dW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVpbGRzLzEx
NDYxL3N0ZXBzL3Rlc3Rfc2hlbGxfdGVzdHMvbG9ncy9zdGRpbyJdLAotICAgICAgICBbInN0ZGlv
IiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9X
ZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvd2Via2l0X3VuaXRfdGVzdHMvbG9ncy9z
dGRpbyJdLAotICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9j
aHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMv
d2Via2l0X3Rlc3RzL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVp
bGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgv
YnVpbGRzLzExNDYxL3N0ZXBzL2FyY2hpdmVfd2Via2l0X3Rlc3RzX3Jlc3VsdHMvbG9ncy9zdGRp
byJdLAotICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJv
bWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvd2Vi
a2l0X2dwdV90ZXN0cy9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1
aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4
L2J1aWxkcy8xMTQ2MS9zdGVwcy9hcmNoaXZlX3dlYmtpdF90ZXN0c19ncHVfcmVzdWx0cy9sb2dz
L3N0ZGlvIl0KLSAgICBdLAotICAgICJudW1iZXIiOiAxMTQ2MSwKLSAgICAicHJvcGVydGllcyI6
IFsKLSAgICAgICAgWyJibGFtZWxpc3QiLCBbImFiYXJ0aEB3ZWJraXQub3JnIl0sICJCdWlsZCJd
LAotICAgICAgICBbImJyYW5jaCIsICJ0cnVuayIsICJCdWlsZCJdLAotICAgICAgICBbImJ1aWxk
ZXJuYW1lIiwgIldlYktpdCBMaW51eCIsICJCdWlsZCJdLAotICAgICAgICBbImJ1aWxkbnVtYmVy
IiwgMTE0NjEsICJCdWlsZCJdLAotICAgICAgICBbImdvdF9yZXZpc2lvbiIsICI5NTM5NSIsICJT
b3VyY2UiXSwKLSAgICAgICAgWyJnb3Rfd2Via2l0X3JldmlzaW9uIiwgIjkyMzU4IiwgIlNvdXJj
ZSJdLAotICAgICAgICBbImd0ZXN0X2ZpbHRlciIsIG51bGwsICJGYWN0b3J5Il0sCi0gICAgICAg
IFsibWFzdGVybmFtZSIsICJjaHJvbWl1bS53ZWJraXQiLCAibWFzdGVyLmNmZyJdLAotICAgICAg
ICBbInJldmlzaW9uIiwgIjkyMzU4IiwgIkJ1aWxkIl0sCi0gICAgICAgIFsic2NoZWR1bGVyIiwg
InM2X3dlYmtpdF9yZWwiLCAiU2NoZWR1bGVyIl0sCi0gICAgICAgIFsic2xhdmVuYW1lIiwgInZt
MTI0LW0xIiwgIkJ1aWxkU2xhdmUiXQotICAgIF0sCi0gICAgInJlYXNvbiI6ICIiLAotICAgICJy
ZXF1ZXN0cyI6IFt7Ci0gICAgICAgICJidWlsZGVyTmFtZSI6ICJXZWJLaXQgTGludXgiLAotICAg
ICAgICAiYnVpbGRzIjogWzExNDYxXSwKLSAgICAgICAgInNvdXJjZSI6IHsKLSAgICAgICAgICAg
ICJicmFuY2giOiAidHJ1bmsiLAotICAgICAgICAgICAgImNoYW5nZXMiOiBbewotICAgICAgICAg
ICAgICAgICJicmFuY2giOiAidHJ1bmsiLAotICAgICAgICAgICAgICAgICJjYXRlZ29yeSI6IG51
bGwsCi0gICAgICAgICAgICAgICAgImNvbW1lbnRzIjogIkZpeCB0eXBlcy4gIFNhZGx5LCBtYWlu
LmpzIGhhcyBubyB0ZXN0IGNvdmVyYWdlLiAgKEkgbmVlZCB0byB0aGlua1xuYWJvdXQgaG93IHRv
IHRlc3QgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlLilcblxuKiBDSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanM6IiwKLSAgICAgICAg
ICAgICAgICAiZmlsZXMiOiBbIlRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qcyIsICJUb29scy9DaGFuZ2VMb2ciXSwK
LSAgICAgICAgICAgICAgICAibnVtYmVyIjogNDM3MDcsCi0gICAgICAgICAgICAgICAgInByb3Bl
cnRpZXMiOiBbXSwKLSAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICIiLAotICAgICAgICAg
ICAgICAgICJyZXZpc2lvbiI6ICI5MjM1NyIsCi0gICAgICAgICAgICAgICAgInJldmxpbmsiOiAi
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIzNTciLAotICAgICAgICAgICAgICAg
ICJ3aGVuIjogMTMxMjQ0NDIzOC44NTUwODEsCi0gICAgICAgICAgICAgICAgIndobyI6ICJhYmFy
dGhAd2Via2l0Lm9yZyIKLSAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAiYnJhbmNo
IjogInRydW5rIiwKLSAgICAgICAgICAgICAgICAiY2F0ZWdvcnkiOiBudWxsLAotICAgICAgICAg
ICAgICAgICJjb21tZW50cyI6ICJVcGRhdGUgYmFzZWxpbmVzIGFmdGVyIDxodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC85MjM0MD4uXG5cbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zh
c3QvYm94LXNoYWRvdy9pbnNldC1ib3gtc2hhZG93cy1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3Jt
L2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhw
ZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1t
dWx0aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9t
aXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC12ZXJ0aWNhbC1leHBl
Y3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11
bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZzoiLAotICAgICAgICAgICAgICAgICJmaWxlcyI6
IFsiTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LW1hYy9mYXN0L2JveC1zaGFkb3cvaW5zZXQtYm94LXNoYWRvd3MtZXhwZWN0ZWQucG5nIiwgIkxh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRp
cGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5nIiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC1ob3Jpem9udGFsLWV4
cGVjdGVkLnBuZyIsICJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBh
aW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtdmVydGljYWwtZXhwZWN0ZWQucG5nIiwgIkxheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxl
LXZlcnRpY2FsLWV4cGVjdGVkLnBuZyJdLAotICAgICAgICAgICAgICAgICJudW1iZXIiOiA0Mzcw
OCwKLSAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFtdLAotICAgICAgICAgICAgICAgICJy
ZXBvc2l0b3J5IjogIiIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjkyMzU4IiwKLSAg
ICAgICAgICAgICAgICAicmV2bGluayI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC85MjM1OCIsCi0gICAgICAgICAgICAgICAgIndoZW4iOiAxMzEyNDQ0MjM4Ljg1NTUzOCwKLSAg
ICAgICAgICAgICAgICAid2hvIjogImFiYXJ0aEB3ZWJraXQub3JnIgotICAgICAgICAgICAgfV0s
Ci0gICAgICAgICAgICAiaGFzUGF0Y2giOiBmYWxzZSwKLSAgICAgICAgICAgICJyZXZpc2lvbiI6
ICI5MjM1OCIKLSAgICAgICAgfSwKLSAgICAgICAgInN1Ym1pdHRlZEF0IjogMTMxMjQ0NDI5OC45
ODk4MTgKLSAgICB9XSwKLSAgICAicmVzdWx0cyI6IDIsCi0gICAgInNsYXZlIjogInZtMTI0LW0x
IiwKLSAgICAic291cmNlU3RhbXAiOiB7Ci0gICAgICAgICJicmFuY2giOiAidHJ1bmsiLAotICAg
ICAgICAiY2hhbmdlcyI6IFt7Ci0gICAgICAgICAgICAiYnJhbmNoIjogInRydW5rIiwKLSAgICAg
ICAgICAgICJjYXRlZ29yeSI6IG51bGwsCi0gICAgICAgICAgICAiY29tbWVudHMiOiAiRml4IHR5
cGVzLiAgU2FkbHksIG1haW4uanMgaGFzIG5vIHRlc3QgY292ZXJhZ2UuICAoSSBuZWVkIHRvIHRo
aW5rXG5hYm91dCBob3cgdG8gdGVzdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuKVxuXG4qIENJU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFp
bi5qczoiLAotICAgICAgICAgICAgImZpbGVzIjogWyJUb29scy9DSVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanMiLCAiVG9vbHMv
Q2hhbmdlTG9nIl0sCi0gICAgICAgICAgICAibnVtYmVyIjogNDM3MDcsCi0gICAgICAgICAgICAi
cHJvcGVydGllcyI6IFtdLAotICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiIiwKLSAgICAgICAg
ICAgICJyZXZpc2lvbiI6ICI5MjM1NyIsCi0gICAgICAgICAgICAicmV2bGluayI6ICJodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM1NyIsCi0gICAgICAgICAgICAid2hlbiI6IDEz
MTI0NDQyMzguODU1MDgxLAotICAgICAgICAgICAgIndobyI6ICJhYmFydGhAd2Via2l0Lm9yZyIK
LSAgICAgICAgfSwgewotICAgICAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCi0gICAgICAgICAg
ICAiY2F0ZWdvcnkiOiBudWxsLAotICAgICAgICAgICAgImNvbW1lbnRzIjogIlVwZGF0ZSBiYXNl
bGluZXMgYWZ0ZXIgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzQwPi5cblxu
KiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJveC1zaGFkb3dz
LWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFk
b3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVt
LW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC1ob3Jpem9udGFsLWV4cGVj
dGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVs
dGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0t
bWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5nOiIs
Ci0gICAgICAgICAgICAiZmlsZXMiOiBbIkxheW91dFRlc3RzL0NoYW5nZUxvZyIsICJMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJveC1zaGFk
b3dzLWV4cGVjdGVkLnBuZyIsICJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFz
dC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZyIsICJMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBs
ZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2Fs
LWV4cGVjdGVkLnBuZyIsICJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9y
ZXBhaW50L3NoYWRvdy1tdWx0aXBsZS12ZXJ0aWNhbC1leHBlY3RlZC5wbmciXSwKLSAgICAgICAg
ICAgICJudW1iZXIiOiA0MzcwOCwKLSAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogW10sCi0gICAg
ICAgICAgICAicmVwb3NpdG9yeSI6ICIiLAotICAgICAgICAgICAgInJldmlzaW9uIjogIjkyMzU4
IiwKLSAgICAgICAgICAgICJyZXZsaW5rIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzkyMzU4IiwKLSAgICAgICAgICAgICJ3aGVuIjogMTMxMjQ0NDIzOC44NTU1MzgsCi0gICAg
ICAgICAgICAid2hvIjogImFiYXJ0aEB3ZWJraXQub3JnIgotICAgICAgICB9XSwKLSAgICAgICAg
Imhhc1BhdGNoIjogZmFsc2UsCi0gICAgICAgICJyZXZpc2lvbiI6ICI5MjM1OCIKLSAgICB9LAot
ICAgICJzdGVwcyI6IFt7Ci0gICAgICAgICJldGEiOiBudWxsLAotICAgICAgICAiZXhwZWN0YXRp
b25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAyMjk3LCAyMzAwLjY1NzEwMTQwODM3ODRd
Ci0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3Rh
cnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJo
dHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0
JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3VwZGF0ZV9zY3JpcHRzL2xvZ3Mvc3RkaW8iXQot
ICAgICAgICBdLAotICAgICAgICAibmFtZSI6ICJ1cGRhdGVfc2NyaXB0cyIsCi0gICAgICAgICJy
ZXN1bHRzIjogWzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0
ZXBfbnVtYmVyIjogMCwKLSAgICAgICAgInRleHQiOiBbInVwZGF0ZV9zY3JpcHRzIl0sCi0gICAg
ICAgICJ0aW1lcyI6IFsxMzEyNDQ0Mjk5LjEwMjgzNCwgMTMxMjQ0NDMwOS4yNzAzMjRdLAotICAg
ICAgICAidXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAg
ImV4cGVjdGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMjA0NTMsIDE3NTgwLjUw
MDIzODk2NDVdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAg
ICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJz
dGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRl
cnMvV2ViS2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3VwZGF0ZS9sb2dzL3N0ZGlvIl0g
XSwKLSAgICAgICAgIm5hbWUiOiAidXBkYXRlIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMCwgW11d
LAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiAxLAot
ICAgICAgICAidGV4dCI6IFsidXBkYXRlIiwgInI5NTM5NSIsICJ3ZWJraXQgcjkyMzU4Il0sCi0g
ICAgICAgICJ0aW1lcyI6IFsxMzEyNDQ0MzA5LjI3MDc2MywgMTMxMjQ0NDM5OC40NjgxMzldLAot
ICAgICAgICAidXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAg
ICAgImV4cGVjdGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMTczMTYsIDI2NTIu
NDg1MDQ5OTU4OTQ1Nl0KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAot
ICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAgICAg
ICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRi
dWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvY29tcGlsZS9sb2dzL3N0
ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAiY29tcGlsZSIsCi0gICAgICAgICJy
ZXN1bHRzIjogWzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0
ZXBfbnVtYmVyIjogMiwKLSAgICAgICAgInRleHQiOiBbImNvbXBpbGUiXSwKLSAgICAgICAgInRp
bWVzIjogWzEzMTI0NDQzOTguNDY4NTUsIDEzMTI0NDQ0NDEuNjg4MzhdLAotICAgICAgICAidXJs
cyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4cGVjdGF0
aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgOTE5ODAsIDkyMDAyLjEyNjI4MzI1MjUx
XQotICAgICAgICBdLAotICAgICAgICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAgICAgICJpc1N0
YXJ0ZWQiOiB0cnVlLAotICAgICAgICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsic3RkaW8iLCAi
aHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktp
dCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy90ZXN0X3NoZWxsX3Rlc3RzL2xvZ3Mvc3RkaW8i
XQotICAgICAgICBdLAotICAgICAgICAibmFtZSI6ICJ0ZXN0X3NoZWxsX3Rlc3RzIiwKLSAgICAg
ICAgInJlc3VsdHMiOiBbMCwgW11dLAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAg
ICAic3RlcF9udW1iZXIiOiAzLAotICAgICAgICAidGV4dCI6IFsidGVzdF9zaGVsbF90ZXN0cyIs
ICIxIGRpc2FibGVkIiwgIjIgZmxha3kiXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ0NDEu
Njg4NzU2LCAxMzEyNDQ0NDUxLjc0OTA4XSwKLSAgICAgICAgInVybHMiOiB7fQotICAgIH0sIHsK
LSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbCi0gICAgICAg
ICAgICBbIm91dHB1dCIsIDIwNzcyLCAyMDc3Mi42Mzg1MDM0NDMwODZdCi0gICAgICAgIF0sCi0g
ICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCi0g
ICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hy
b21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVpbGRz
LzExNDYxL3N0ZXBzL3dlYmtpdF91bml0X3Rlc3RzL2xvZ3Mvc3RkaW8iXQotICAgICAgICBdLAot
ICAgICAgICAibmFtZSI6ICJ3ZWJraXRfdW5pdF90ZXN0cyIsCi0gICAgICAgICJyZXN1bHRzIjog
WzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVtYmVy
IjogNCwKLSAgICAgICAgInRleHQiOiBbIndlYmtpdF91bml0X3Rlc3RzIiwgIjEgZGlzYWJsZWQi
XSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ0NTEuNzQ5NTc0LCAxMzEyNDQ0NDUyLjMwNjE0
M10sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxsLAot
ICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAyNDc3NDA2
LCAyNDk4OTE1LjYxNDYyNzU0OTRdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjog
dHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAg
ICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0u
d2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3dlYmtpdF90
ZXN0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAid2Via2l0X3Rl
c3RzIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMiwgWyJ3ZWJraXRfdGVzdHMiXV0sCi0gICAgICAg
ICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDUsCi0gICAgICAgICJ0
ZXh0IjogWyJ3ZWJraXRfdGVzdHMiLCAiMjAxNCBmaXhhYmxlIiwgIigzNzAgc2tpcHBlZCkiLCAi
ZmFpbGVkIDEiLCAiPGRpdiBjbGFzcz1cIkJ1aWxkUmVzdWx0SW5mb1wiPiIsICI8YSBocmVmPVwi
aHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcvP3N1aXRlPWxheW91dC10ZXN0cyZhbXA7dGVzdD1m
YXN0L2JveC1zaGFkb3cvYm94LXNoYWRvdy1jbGlwcGVkLXNsaWNlcy5odG1sXCI+IiwgIjxhYmJy
IHRpdGxlPVwiZmFzdC9ib3gtc2hhZG93L2JveC1zaGFkb3ctY2xpcHBlZC1zbGljZXMuaHRtbFwi
PmJveC1zaGFkb3ctY2xpcHBlZC1zbGljZXMuaHRtbDwvYWJicj4iLCAiPC9hPiIsICI8L2Rpdj4i
XSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ0NTIuMzA2Njk1LCAxMzEyNDQ0NzY4Ljg4ODI2
Nl0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxsLAot
ICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAyNjY4ODQ1
LCAyNjcyNzQ2LjM3MjM2MzI1NF0KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0
cnVlLAotICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAg
ICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53
ZWJraXRidWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvYXJjaGl2ZV93
ZWJraXRfdGVzdHNfcmVzdWx0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5h
bWUiOiAiYXJjaGl2ZV93ZWJraXRfdGVzdHNfcmVzdWx0cyIsCi0gICAgICAgICJyZXN1bHRzIjog
WzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVtYmVy
IjogNiwKLSAgICAgICAgInRleHQiOiBbImFyY2hpdmVkIHdlYmtpdF90ZXN0cyByZXN1bHRzIl0s
Ci0gICAgICAgICJ0aW1lcyI6IFsxMzEyNDQ0NzY4Ljg4ODc0NiwgMTMxMjQ0NDc4MS40NDQzOTld
LAotICAgICAgICAidXJscyI6IHsKLSAgICAgICAgICAgICJsYXlvdXQgdGVzdCByZXN1bHRzIjog
Imh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvYnVpbGRib3QvbGF5b3V0X3Rlc3RfcmVzdWx0cy9X
ZWJLaXRfTGludXhcci85NTM5NVxyTm9uZSIKLSAgICAgICAgfQotICAgIH0sIHsKLSAgICAgICAg
ImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbCi0gICAgICAgICAgICBbIm91
dHB1dCIsIDIxMDk1OCwgMjA4MTM4LjQ5NjUxODI5OTNdCi0gICAgICAgIF0sCi0gICAgICAgICJp
c0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJs
b2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3Jn
L3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0
ZXBzL3dlYmtpdF9ncHVfdGVzdHMvbG9ncy9zdGRpbyJdCi0gICAgICAgIF0sCi0gICAgICAgICJu
YW1lIjogIndlYmtpdF9ncHVfdGVzdHMiLAotICAgICAgICAicmVzdWx0cyI6IFsyLCBbIndlYmtp
dF9ncHVfdGVzdHMiXV0sCi0gICAgICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVw
X251bWJlciI6IDcsCi0gICAgICAgICJ0ZXh0IjogWyJ3ZWJraXRfZ3B1X3Rlc3RzIiwgIjE0OCBm
aXhhYmxlIiwgIigyNCBza2lwcGVkKSIsICJmYWlsZWQgMSIsICI8ZGl2IGNsYXNzPVwiQnVpbGRS
ZXN1bHRJbmZvXCI+IiwgIjxhIGhyZWY9XCJodHRwOi8vaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5v
cmcvP3N1aXRlPWxheW91dC10ZXN0cyZhbXA7dGVzdD1jb21wb3NpdGluZy9zY2FsaW5nL3RpbGVk
LWxheWVyLXJlY3Vyc2lvbi5odG1sXCI+IiwgIjxhYmJyIHRpdGxlPVwiY29tcG9zaXRpbmcvc2Nh
bGluZy90aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbFwiPnRpbGVkLWxheWVyLXJlY3Vyc2lvbi5o
dG1sPC9hYmJyPiIsICI8L2E+IiwgIjwvZGl2PiJdLAotICAgICAgICAidGltZXMiOiBbMTMxMjQ0
NDc4MS40NDQ5MDMsIDEzMTI0NDQ5NjYuODU2MDc0XSwKLSAgICAgICAgInVybHMiOiB7fQotICAg
IH0sIHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbCi0g
ICAgICAgICAgICBbIm91dHB1dCIsIDE0ODgyNSwgMTQ3ODIyLjEwNzQyNzcwNzJdCi0gICAgICAg
IF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRy
dWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVp
bGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgv
YnVpbGRzLzExNDYxL3N0ZXBzL2FyY2hpdmVfd2Via2l0X3Rlc3RzX2dwdV9yZXN1bHRzL2xvZ3Mv
c3RkaW8iXQotICAgICAgICBdLAotICAgICAgICAibmFtZSI6ICJhcmNoaXZlX3dlYmtpdF90ZXN0
c19ncHVfcmVzdWx0cyIsCi0gICAgICAgICJyZXN1bHRzIjogWzAsIFtdXSwKLSAgICAgICAgInN0
YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVtYmVyIjogOCwKLSAgICAgICAgInRleHQi
OiBbImFyY2hpdmVkIHdlYmtpdF90ZXN0cyBncHUgcmVzdWx0cyJdLAotICAgICAgICAidGltZXMi
OiBbMTMxMjQ0NDk2Ni44NTY1NzUsIDEzMTI0NDQ5NzAuNDU4NjU1XSwKLSAgICAgICAgInVybHMi
OiB7Ci0gICAgICAgICAgICAibGF5b3V0IHRlc3QgZ3B1IHJlc3VsdHMiOiAiaHR0cDovL2J1aWxk
LmNocm9taXVtLm9yZy9idWlsZGJvdC9sYXlvdXRfdGVzdF9yZXN1bHRzL1dlYktpdF9MaW51eF8t
X0dQVVxyLzk1Mzk1XHJOb25lIgotICAgICAgICB9Ci0gICAgfV0sCi0gICAgInRleHQiOiBbImZh
aWxlZCIsICJ3ZWJraXRfdGVzdHMiLCAid2Via2l0X2dwdV90ZXN0cyJdLAotICAgICJ0aW1lcyI6
IFsxMzEyNDQ0Mjk5LjEwMjE2LCAxMzEyNDQ0OTcwLjQ1OTEzOF0KLX07Ci0KLXZhciBrRXhhbXBs
ZUJ1aWxkSW5mb1dpdGhXZWJLaXRUZXN0Q3Jhc2hKU09OID0gewotICAgICJibGFtZSI6IFsiYXN2
aXRraW5lQGNocm9taXVtLm9yZyIsICJkZXJhdEBjaHJvbWl1bS5vcmciLCAibmlybmltZXNoQGNo
cm9taXVtLm9yZyJdLAotICAgICJidWlsZGVyTmFtZSI6ICJXZWJLaXQgV2luIChkZXBzKShkYmcp
KDIpIiwKLSAgICAiY3VycmVudFN0ZXAiOiBudWxsLAotICAgICJldGEiOiBudWxsLAotICAgICJs
b2dzIjogWwotICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9j
aHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBXaW4lMjAlMjhkZXBzJTI5JTI4ZGJnJTI5
JTI4MiUyOS9idWlsZHMvNzY1My9zdGVwcy9zdm5raWxsL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAg
WyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVp
bGRlcnMvV2ViS2l0JTIwV2luJTIwJTI4ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2
NTMvc3RlcHMvdXBkYXRlX3NjcmlwdHMvbG9ncy9zdGRpbyJdLAotICAgICAgICBbInN0ZGlvIiwg
Imh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJL
aXQlMjBXaW4lMjAlMjhkZXBzJTI5JTI4ZGJnJTI5JTI4MiUyOS9idWlsZHMvNzY1My9zdGVwcy90
YXNra2lsbC9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNo
cm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMFdpbiUyMCUyOGRl
cHMlMjklMjhkYmclMjklMjgyJTI5L2J1aWxkcy83NjUzL3N0ZXBzL3VwZGF0ZS9sb2dzL3N0ZGlv
Il0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9t
aXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMFdpbiUyMCUyOGRlcHMlMjklMjhkYmclMjklMjgy
JTI5L2J1aWxkcy83NjUzL3N0ZXBzL2V4dHJhY3RfYnVpbGQvbG9ncy9zdGRpbyJdLAotICAgICAg
ICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRi
dWlsZGVycy9XZWJLaXQlMjBXaW4lMjAlMjhkZXBzJTI5JTI4ZGJnJTI5JTI4MiUyOS9idWlsZHMv
NzY1My9zdGVwcy93ZWJraXRfdGVzdHMvbG9ncy9zdGRpbyJdLAotICAgICAgICBbInN0ZGlvIiwg
Imh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJL
aXQlMjBXaW4lMjAlMjhkZXBzJTI5JTI4ZGJnJTI5JTI4MiUyOS9idWlsZHMvNzY1My9zdGVwcy9h
cmNoaXZlX3dlYmtpdF90ZXN0c19yZXN1bHRzL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRp
byIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMv
V2ViS2l0JTIwV2luJTIwJTI4ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMvc3Rl
cHMvd2Via2l0X2dwdV90ZXN0cy9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0
cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUy
MFdpbiUyMCUyOGRlcHMlMjklMjhkYmclMjklMjgyJTI5L2J1aWxkcy83NjUzL3N0ZXBzL2FyY2hp
dmVfd2Via2l0X3Rlc3RzX2dwdV9yZXN1bHRzL2xvZ3Mvc3RkaW8iXQotICAgIF0sCi0gICAgIm51
bWJlciI6IDc2NTMsCi0gICAgInByb3BlcnRpZXMiOiBbCi0gICAgICAgIFsiYmxhbWVsaXN0Iiwg
WyJhc3ZpdGtpbmVAY2hyb21pdW0ub3JnIiwgImRlcmF0QGNocm9taXVtLm9yZyIsICJuaXJuaW1l
c2hAY2hyb21pdW0ub3JnIl0sICJCdWlsZCJdLAotICAgICAgICBbImJyYW5jaCIsICJzcmMiLCAi
QnVpbGQiXSwKLSAgICAgICAgWyJidWlsZGVybmFtZSIsICJXZWJLaXQgV2luIChkZXBzKShkYmcp
KDIpIiwgIkJ1aWxkZXIiXSwKLSAgICAgICAgWyJidWlsZG51bWJlciIsIDc2NTMsICJCdWlsZCJd
LAotICAgICAgICBbImdvdF9yZXZpc2lvbiIsICIxMDQ5MzkiLCAiU291cmNlIl0sCi0gICAgICAg
IFsiZ3Rlc3RfZmlsdGVyIiwgbnVsbCwgIkZhY3RvcnkiXSwKLSAgICAgICAgWyJtYXN0ZXJuYW1l
IiwgImNocm9taXVtLndlYmtpdCIsICJtYXN0ZXIuY2ZnIl0sCi0gICAgICAgIFsicHJvamVjdCIs
ICIiLCAiQnVpbGQiXSwKLSAgICAgICAgWyJyZXBvc2l0b3J5IiwgInN2bjovL3N2bi1taXJyb3Iu
Z29sby5jaHJvbWl1bS5vcmcvY2hyb21lL3RydW5rIiwgIkJ1aWxkIl0sCi0gICAgICAgIFsicmV2
aXNpb24iLCAiMTA0OTM5IiwgIkJ1aWxkIl0sCi0gICAgICAgIFsic2NoZWR1bGVyIiwgInMxX2No
cm9taXVtX2RiZ19kZXAiLCAiU2NoZWR1bGVyIl0sCi0gICAgICAgIFsic2xhdmVuYW1lIiwgInZt
MTE0LW0xIiwgIkJ1aWxkU2xhdmUiXQotICAgIF0sCi0gICAgInJlYXNvbiI6ICJkb3duc3RyZWFt
IiwKLSAgICAicmVzdWx0cyI6IDIsCi0gICAgInNsYXZlIjogInZtMTE0LW0xIiwKLSAgICAic291
cmNlU3RhbXAiOiB7Ci0gICAgICAgICJicmFuY2giOiAic3JjIiwKLSAgICAgICAgImNoYW5nZXMi
OiBbewotICAgICAgICAgICAgImF0IjogIlR1ZSAxMSBPY3QgMjAxMSAxMjoxODo0MCIsCi0gICAg
ICAgICAgICAiYnJhbmNoIjogInNyYyIsCi0gICAgICAgICAgICAiY2F0ZWdvcnkiOiBudWxsLAot
ICAgICAgICAgICAgImNvbW1lbnRzIjogIkRpc2FibGUgcHJlZnMuUHJlZnNUZXN0LnRlc3RHZW9s
b2NhdGlvblByZWYgb24gd2luXG5cblRCUj1kZW5uaXNqZWZmcmV5QGNocm9taXVtLm9yZ1xuQlVH
PTk5ODY1XG5URVNUPVxuXG5SZXZpZXcgVVJMOiBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5v
cmcvODIzNDAwNyIsCi0gICAgICAgICAgICAiZmlsZXMiOiBbewotICAgICAgICAgICAgICAgICJu
YW1lIjogImNocm9tZS90ZXN0L2Z1bmN0aW9uYWwvUFlBVVRPX1RFU1RTIiwKLSAgICAgICAgICAg
ICAgICAidXJsIjogbnVsbAotICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAibnVtYmVyIjog
MTM5NywKLSAgICAgICAgICAgICJwcm9qZWN0IjogIiIsCi0gICAgICAgICAgICAicHJvcGVydGll
cyI6IFtdLAotICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAic3ZuOi8vc3ZuLW1pcnJvci5nb2xv
LmNocm9taXVtLm9yZy9jaHJvbWUvdHJ1bmsiLAotICAgICAgICAgICAgInJldiI6ICIxMDQ5MzYi
LAotICAgICAgICAgICAgInJldmlzaW9uIjogIjEwNDkzNiIsCi0gICAgICAgICAgICAicmV2bGlu
ayI6ICJodHRwOi8vc3JjLmNocm9taXVtLm9yZy92aWV3dmMvY2hyb21lP3ZpZXc9cmV2JnJldmlz
aW9uPTEwNDkzNiIsCi0gICAgICAgICAgICAid2hlbiI6IDEzMTgzNjA3MjAsCi0gICAgICAgICAg
ICAid2hvIjogIm5pcm5pbWVzaEBjaHJvbWl1bS5vcmciCi0gICAgICAgIH0sIHsKLSAgICAgICAg
ICAgICJhdCI6ICJUdWUgMTEgT2N0IDIwMTEgMTI6MjM6MTEiLAotICAgICAgICAgICAgImJyYW5j
aCI6ICJzcmMiLAotICAgICAgICAgICAgImNhdGVnb3J5IjogbnVsbCwKLSAgICAgICAgICAgICJj
b21tZW50cyI6ICJhdXJhOiBHZXQgcmlkIG9mIHNvbWUgdW5uZWVkZWQgc3R1YnMuXG5cbk1vc3Qg
b2YgdGhlc2UgYXJlIGZvciBkaWFsb2dzIHRoYXQgYWxyZWFkeSBoYWQgV2ViVUlcbmltcGxlbWVu
dGF0aW9ucy5cblxuQlVHPTk5NzE4XG5URVNUPWJ1aWx0IHdpdGggdXNlX2F1cmE9MVxuXG5SZXZp
ZXcgVVJMOiBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvODIxODAyNyIsCi0gICAgICAg
ICAgICAiZmlsZXMiOiBbewotICAgICAgICAgICAgICAgICJuYW1lIjogImNocm9tZS9icm93c2Vy
L3VpL2xvZ2luL2xvZ2luX3Byb21wdF91aS5jYyIsCi0gICAgICAgICAgICAgICAgInVybCI6IG51
bGwKLSAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJjaHJvbWUvYnJv
d3Nlci91aS92aWV3cy9zdHVic19hdXJhLmNjIiwKLSAgICAgICAgICAgICAgICAidXJsIjogbnVs
bAotICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICJuYW1lIjogImNocm9tZS9jaHJv
bWVfYnJvd3Nlci5neXBpIiwKLSAgICAgICAgICAgICAgICAidXJsIjogbnVsbAotICAgICAgICAg
ICAgfSwgewotICAgICAgICAgICAgICAgICJuYW1lIjogImNocm9tZS9jb21tb24vdXJsX2NvbnN0
YW50cy5jYyIsCi0gICAgICAgICAgICAgICAgInVybCI6IG51bGwKLSAgICAgICAgICAgIH0sIHsK
LSAgICAgICAgICAgICAgICAibmFtZSI6ICJjaHJvbWUvY29tbW9uL3VybF9jb25zdGFudHMuaCIs
Ci0gICAgICAgICAgICAgICAgInVybCI6IG51bGwKLSAgICAgICAgICAgIH1dLAotICAgICAgICAg
ICAgIm51bWJlciI6IDEzOTgsCi0gICAgICAgICAgICAicHJvamVjdCI6ICIiLAotICAgICAgICAg
ICAgInByb3BlcnRpZXMiOiBbXSwKLSAgICAgICAgICAgICJyZXBvc2l0b3J5IjogInN2bjovL3N2
bi1taXJyb3IuZ29sby5jaHJvbWl1bS5vcmcvY2hyb21lL3RydW5rIiwKLSAgICAgICAgICAgICJy
ZXYiOiAiMTA0OTM3IiwKLSAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxMDQ5MzciLAotICAgICAg
ICAgICAgInJldmxpbmsiOiAiaHR0cDovL3NyYy5jaHJvbWl1bS5vcmcvdmlld3ZjL2Nocm9tZT92
aWV3PXJldiZyZXZpc2lvbj0xMDQ5MzciLAotICAgICAgICAgICAgIndoZW4iOiAxMzE4MzYwOTkx
LAotICAgICAgICAgICAgIndobyI6ICJkZXJhdEBjaHJvbWl1bS5vcmciCi0gICAgICAgIH0sIHsK
LSAgICAgICAgICAgICJhdCI6ICJUdWUgMTEgT2N0IDIwMTEgMTI6MzQ6MTAiLAotICAgICAgICAg
ICAgImJyYW5jaCI6ICJzcmMiLAotICAgICAgICAgICAgImNhdGVnb3J5IjogbnVsbCwKLSAgICAg
ICAgICAgICJjb21tZW50cyI6ICJBZGQgV2luZG93cyBtYW5pZmVzdCBmb3Igdmlld3NfZXhhbXBs
ZXMuXG5cblRoaXMgYWxsb3dzIHZpZXdzX2V4YW1wbGVzIHRvIHVzZSB0aGVtZWQgY29udHJvbHMg
YW5kIGZpeGVzXG5hIHByb2JsZW0gd2l0aCBjb21ibyBib3ggZHJvcCBkb3duIG1lbnVzIG5vdCBi
ZWluZyBzaG93bi5cblxuTWFuaWZlc3QgZmlsZSBjb3BpZWQgZnJvbSBjaHJvbWUvYXBwL2Nocm9t
ZS5leGUubWFuaWZlc3QuXG5cbkJVRz1ub25lXG5URVNUPW1hbnVhbFxuXG5SZXZpZXcgVVJMOiBo
dHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvODIyNzAxNyIsCi0gICAgICAgICAgICAiZmls
ZXMiOiBbewotICAgICAgICAgICAgICAgICJuYW1lIjogInZpZXdzL2V4YW1wbGVzL3ZpZXdzX2V4
YW1wbGVzLmV4ZS5tYW5pZmVzdCIsCi0gICAgICAgICAgICAgICAgInVybCI6IG51bGwKLSAgICAg
ICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJ2aWV3cy92aWV3cy5neXAiLAot
ICAgICAgICAgICAgICAgICJ1cmwiOiBudWxsCi0gICAgICAgICAgICB9XSwKLSAgICAgICAgICAg
ICJudW1iZXIiOiAxNDAwLAotICAgICAgICAgICAgInByb2plY3QiOiAiIiwKLSAgICAgICAgICAg
ICJwcm9wZXJ0aWVzIjogW10sCi0gICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJzdm46Ly9zdm4t
bWlycm9yLmdvbG8uY2hyb21pdW0ub3JnL2Nocm9tZS90cnVuayIsCi0gICAgICAgICAgICAicmV2
IjogIjEwNDkzOSIsCi0gICAgICAgICAgICAicmV2aXNpb24iOiAiMTA0OTM5IiwKLSAgICAgICAg
ICAgICJyZXZsaW5rIjogImh0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9jaHJvbWU/dmll
dz1yZXYmcmV2aXNpb249MTA0OTM5IiwKLSAgICAgICAgICAgICJ3aGVuIjogMTMxODM2MTY1MCwK
LSAgICAgICAgICAgICJ3aG8iOiAiYXN2aXRraW5lQGNocm9taXVtLm9yZyIKLSAgICAgICAgfV0s
Ci0gICAgICAgICJoYXNQYXRjaCI6IGZhbHNlLAotICAgICAgICAicHJvamVjdCI6ICIiLAotICAg
ICAgICAicmVwb3NpdG9yeSI6ICJzdm46Ly9zdm4tbWlycm9yLmdvbG8uY2hyb21pdW0ub3JnL2No
cm9tZS90cnVuayIsCi0gICAgICAgICJyZXZpc2lvbiI6ICIxMDQ5MzkiCi0gICAgfSwKLSAgICAi
c3RlcHMiOiBbewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4cGVjdGF0aW9ucyI6
IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMTQ0NCwgMTQ0NC4wXQotICAgICAgICBdLAotICAg
ICAgICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAgICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAotICAg
ICAgICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9t
aXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMFdpbiUyMCUyOGRlcHMl
MjklMjhkYmclMjklMjgyJTI5L2J1aWxkcy83NjUzL3N0ZXBzL3N2bmtpbGwvbG9ncy9zdGRpbyJd
Ci0gICAgICAgIF0sCi0gICAgICAgICJuYW1lIjogInN2bmtpbGwiLAotICAgICAgICAicmVzdWx0
cyI6IFswLCBbXV0sCi0gICAgICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251
bWJlciI6IDAsCi0gICAgICAgICJ0ZXh0IjogWyJzdm5raWxsIl0sCi0gICAgICAgICJ0aW1lcyI6
IFsxMzE4MzY0MjEwLjA2OTc3MDEsIDEzMTgzNjQyMTAuNDYzNjQ5XSwKLSAgICAgICAgInVybHMi
OiB7fQotICAgIH0sIHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlv
bnMiOiBbCi0gICAgICAgICAgICBbIm91dHB1dCIsIDI5MTYsIDI3NTcuMTU4MDk2NzgzMDgxOV0K
LSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAotICAgICAgICAiaXNTdGFy
dGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAgICAgICBbInN0ZGlvIiwgImh0
dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQl
MjBXaW4lMjAlMjhkZXBzJTI5JTI4ZGJnJTI5JTI4MiUyOS9idWlsZHMvNzY1My9zdGVwcy91cGRh
dGVfc2NyaXB0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAidXBk
YXRlX3NjcmlwdHMiLAotICAgICAgICAicmVzdWx0cyI6IFswLCBbXV0sCi0gICAgICAgICJzdGF0
aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDEsCi0gICAgICAgICJ0ZXh0Ijog
WyJ1cGRhdGVfc2NyaXB0cyJdLAotICAgICAgICAidGltZXMiOiBbMTMxODM2NDIxMC40NjQyOTks
IDEzMTgzNjQyMzQuNzQxNTc1XSwKLSAgICAgICAgInVybHMiOiB7fQotICAgIH0sIHsKLSAgICAg
ICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbCi0gICAgICAgICAgICBb
Im91dHB1dCIsIDQ1NDQsIDQ1NDMuOTY4NzQ5OTY5MTI5OV0KLSAgICAgICAgXSwKLSAgICAgICAg
ImlzRmluaXNoZWQiOiB0cnVlLAotICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAg
ImxvZ3MiOiBbCi0gICAgICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5v
cmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBXaW4lMjAlMjhkZXBzJTI5JTI4
ZGJnJTI5JTI4MiUyOS9idWlsZHMvNzY1My9zdGVwcy90YXNra2lsbC9sb2dzL3N0ZGlvIl0KLSAg
ICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAidGFza2tpbGwiLAotICAgICAgICAicmVzdWx0cyI6
IFswLCBbXV0sCi0gICAgICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJl
ciI6IDIsCi0gICAgICAgICJ0ZXh0IjogWyJ0YXNra2lsbCJdLAotICAgICAgICAidGltZXMiOiBb
MTMxODM2NDIzNC43NDIyNjUsIDEzMTgzNjQyNDUuODQyMDA2XSwKLSAgICAgICAgInVybHMiOiB7
fQotICAgIH0sIHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMi
OiBbCi0gICAgICAgICAgICBbIm91dHB1dCIsIDEwMTk3NzMsIDIyODI2LjEwNDU3MjU2ODgzOF0K
LSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAotICAgICAgICAiaXNTdGFy
dGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAgICAgICBbInN0ZGlvIiwgImh0
dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQl
MjBXaW4lMjAlMjhkZXBzJTI5JTI4ZGJnJTI5JTI4MiUyOS9idWlsZHMvNzY1My9zdGVwcy91cGRh
dGUvbG9ncy9zdGRpbyJdCi0gICAgICAgIF0sCi0gICAgICAgICJuYW1lIjogInVwZGF0ZSIsCi0g
ICAgICAgICJyZXN1bHRzIjogWzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAg
ICAgICAgInN0ZXBfbnVtYmVyIjogMywKLSAgICAgICAgInRleHQiOiBbInVwZGF0ZSIsICJyMTA0
OTM5Il0sCi0gICAgICAgICJ0aW1lcyI6IFsxMzE4MzY0MjQ1Ljg0MzAwOCwgMTMxODM2NjM3MC45
NDY3NTldLAotICAgICAgICAidXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVs
bCwKLSAgICAgICAgImV4cGVjdGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMTk4
MjksIDE5NjIwLjQzNzUwMDAwMzg0Ml0KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQi
OiB0cnVlLAotICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0g
ICAgICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1
bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBXaW4lMjAlMjhkZXBzJTI5JTI4ZGJnJTI5JTI4MiUy
OS9idWlsZHMvNzY1My9zdGVwcy9leHRyYWN0X2J1aWxkL2xvZ3Mvc3RkaW8iXQotICAgICAgICBd
LAotICAgICAgICAibmFtZSI6ICJleHRyYWN0X2J1aWxkIiwKLSAgICAgICAgInJlc3VsdHMiOiBb
MSwgW11dLAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIi
OiA0LAotICAgICAgICAidGV4dCI6IFsiZXh0cmFjdF9idWlsZCIsICJ3YXJuaW5ncyJdLAotICAg
ICAgICAidGltZXMiOiBbMTMxODM2NjM3MC45NDc3MSwgMTMxODM2NjQwNC41NTI3ODNdLAotICAg
ICAgICAidXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAg
ImV4cGVjdGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMjY4NSwgMTMyMDYyNC40
ODE3NjgzNzUzXQotICAgICAgICBdLAotICAgICAgICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAg
ICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAotICAgICAgICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsi
c3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxk
ZXJzL1dlYktpdCUyMFdpbiUyMCUyOGRlcHMlMjklMjhkYmclMjklMjgyJTI5L2J1aWxkcy83NjUz
L3N0ZXBzL3dlYmtpdF90ZXN0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5h
bWUiOiAid2Via2l0X3Rlc3RzIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMiwgWyJ3ZWJraXRfdGVz
dHMiXV0sCi0gICAgICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6
IDUsCi0gICAgICAgICJ0ZXh0IjogWyJ3ZWJraXRfdGVzdHMiLCAiPz8gZml4YWJsZSIsICIoMCBz
a2lwcGVkKSIsICJjcmFzaGVkIG9yIGh1bmciXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTgzNjY0
MDQuNTUzNzAyMSwgMTMxODM2NjQwNS4yNTY0ODA5XSwKLSAgICAgICAgInVybHMiOiB7fQotICAg
IH0sIHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbCi0g
ICAgICAgICAgICBbIm91dHB1dCIsIDM3MzYsIDYwNjc0Ny41ODMyMTg1NDI2M10KLSAgICAgICAg
XSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAotICAgICAgICAiaXNTdGFydGVkIjogdHJ1
ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWls
ZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBXaW4lMjAl
MjhkZXBzJTI5JTI4ZGJnJTI5JTI4MiUyOS9idWlsZHMvNzY1My9zdGVwcy9hcmNoaXZlX3dlYmtp
dF90ZXN0c19yZXN1bHRzL2xvZ3Mvc3RkaW8iXQotICAgICAgICBdLAotICAgICAgICAibmFtZSI6
ICJhcmNoaXZlX3dlYmtpdF90ZXN0c19yZXN1bHRzIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMiwg
WyJhcmNoaXZlX3dlYmtpdF90ZXN0c19yZXN1bHRzIl1dLAotICAgICAgICAic3RhdGlzdGljcyI6
IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiA2LAotICAgICAgICAidGV4dCI6IFsiYXJjaGl2
ZWQgd2Via2l0X3Rlc3RzIHJlc3VsdHMiLCAiZmFpbGVkIl0sCi0gICAgICAgICJ0aW1lcyI6IFsx
MzE4MzY2NDA1LjI1NzM3MzEsIDEzMTgzNjY0MDYuNTA1ODE1XSwKLSAgICAgICAgInVybHMiOiB7
Ci0gICAgICAgICAgICAibGF5b3V0IHRlc3QgcmVzdWx0cyI6ICJodHRwOi8vYnVpbGQuY2hyb21p
dW0ub3JnL2J1aWxkYm90L2xheW91dF90ZXN0X3Jlc3VsdHMvV2ViS2l0X1dpbl9fZGVwc19fZGJn
X18yX1xyLzBcck5vbmUiCi0gICAgICAgIH0KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxs
LAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAyNzUx
LCAxMjQ0MzQuOTI2NjE0MDYwMl0KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0
cnVlLAotICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAg
ICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53
ZWJraXRidWlsZGVycy9XZWJLaXQlMjBXaW4lMjAlMjhkZXBzJTI5JTI4ZGJnJTI5JTI4MiUyOS9i
dWlsZHMvNzY1My9zdGVwcy93ZWJraXRfZ3B1X3Rlc3RzL2xvZ3Mvc3RkaW8iXQotICAgICAgICBd
LAotICAgICAgICAibmFtZSI6ICJ3ZWJraXRfZ3B1X3Rlc3RzIiwKLSAgICAgICAgInJlc3VsdHMi
OiBbMiwgWyJ3ZWJraXRfZ3B1X3Rlc3RzIl1dLAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAot
ICAgICAgICAic3RlcF9udW1iZXIiOiA3LAotICAgICAgICAidGV4dCI6IFsid2Via2l0X2dwdV90
ZXN0cyIsICI/PyBmaXhhYmxlIiwgIigwIHNraXBwZWQpIiwgImNyYXNoZWQgb3IgaHVuZyJdLAot
ICAgICAgICAidGltZXMiOiBbMTMxODM2NjQwNi41MDY3MTEsIDEzMTgzNjY0MDcuMTc5NTg1XSwK
LSAgICAgICAgInVybHMiOiB7fQotICAgIH0sIHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAg
ICAgICJleHBlY3RhdGlvbnMiOiBbCi0gICAgICAgICAgICBbIm91dHB1dCIsIDM3NjAsIDM1NzA5
LjQwNzgwMDk1ODM3NV0KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAot
ICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAgICAg
ICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRi
dWlsZGVycy9XZWJLaXQlMjBXaW4lMjAlMjhkZXBzJTI5JTI4ZGJnJTI5JTI4MiUyOS9idWlsZHMv
NzY1My9zdGVwcy9hcmNoaXZlX3dlYmtpdF90ZXN0c19ncHVfcmVzdWx0cy9sb2dzL3N0ZGlvIl0K
LSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAiYXJjaGl2ZV93ZWJraXRfdGVzdHNfZ3B1X3Jl
c3VsdHMiLAotICAgICAgICAicmVzdWx0cyI6IFsyLCBbImFyY2hpdmVfd2Via2l0X3Rlc3RzX2dw
dV9yZXN1bHRzIl1dLAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAgICAic3RlcF9u
dW1iZXIiOiA4LAotICAgICAgICAidGV4dCI6IFsiYXJjaGl2ZWQgd2Via2l0X3Rlc3RzIGdwdSBy
ZXN1bHRzIiwgImZhaWxlZCJdLAotICAgICAgICAidGltZXMiOiBbMTMxODM2NjQwNy4xODA0ODkx
LCAxMzE4MzY2NDA4LjA3MTUwMV0sCi0gICAgICAgICJ1cmxzIjogewotICAgICAgICAgICAgImxh
eW91dCB0ZXN0IGdwdSByZXN1bHRzIjogImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvYnVpbGRi
b3QvbGF5b3V0X3Rlc3RfcmVzdWx0cy9XZWJLaXRfV2luX19kZXBzX19kYmdfXzJfXy1fR1BVXHIv
MFxyTm9uZSIKLSAgICAgICAgfQotICAgIH1dLAotICAgICJ0ZXh0IjogWyJmYWlsZWQiLCAid2Vi
a2l0X3Rlc3RzIiwgImFyY2hpdmVfd2Via2l0X3Rlc3RzX3Jlc3VsdHMiLCAid2Via2l0X2dwdV90
ZXN0cyIsICJhcmNoaXZlX3dlYmtpdF90ZXN0c19ncHVfcmVzdWx0cyJdLAotICAgICJ0aW1lcyI6
IFsxMzE4MzY0MjEwLjA2NjUyNCwgMTMxODM2NjQwOC4wNzMyMTE5XQotfTsKLQotdmFyIGtFeGFt
cGxlQnVpbGRJbmZvV2l0aFRhc2tLaWxsV2FybmluZyA9IHsKLSAgICAiYmxhbWUiOiBbImFzdml0
a2luZUBjaHJvbWl1bS5vcmciLCAiZGVyYXRAY2hyb21pdW0ub3JnIiwgIm5pcm5pbWVzaEBjaHJv
bWl1bS5vcmciXSwKLSAgICAiYnVpbGRlck5hbWUiOiAiV2ViS2l0IFdpbiAoZGVwcykoZGJnKSgy
KSIsCi0gICAgImN1cnJlbnRTdGVwIjogbnVsbCwKLSAgICAiZXRhIjogbnVsbCwKLSAgICAibG9n
cyI6IFsKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hy
b21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwV2luJTIwJTI4ZGVwcyUyOSUyOGRiZyUyOSUy
ODIlMjkvYnVpbGRzLzc2NTMvc3RlcHMvc3Zua2lsbC9sb2dzL3N0ZGlvIl0sCi0gICAgXSwKLSAg
ICAibnVtYmVyIjogNzY1MywKLSAgICAicHJvcGVydGllcyI6IFsKLSAgICAgICAgWyJibGFtZWxp
c3QiLCBbImFzdml0a2luZUBjaHJvbWl1bS5vcmciLCAiZGVyYXRAY2hyb21pdW0ub3JnIiwgIm5p
cm5pbWVzaEBjaHJvbWl1bS5vcmciXSwgIkJ1aWxkIl0sCi0gICAgICAgIFsiYnJhbmNoIiwgInNy
YyIsICJCdWlsZCJdLAotICAgICAgICBbImJ1aWxkZXJuYW1lIiwgIldlYktpdCBXaW4gKGRlcHMp
KGRiZykoMikiLCAiQnVpbGRlciJdLAotICAgICAgICBbImJ1aWxkbnVtYmVyIiwgNzY1MywgIkJ1
aWxkIl0sCi0gICAgICAgIFsiZ290X3JldmlzaW9uIiwgIjEwNDkzOSIsICJTb3VyY2UiXSwKLSAg
ICAgICAgWyJndGVzdF9maWx0ZXIiLCBudWxsLCAiRmFjdG9yeSJdLAotICAgICAgICBbIm1hc3Rl
cm5hbWUiLCAiY2hyb21pdW0ud2Via2l0IiwgIm1hc3Rlci5jZmciXSwKLSAgICAgICAgWyJwcm9q
ZWN0IiwgIiIsICJCdWlsZCJdLAotICAgICAgICBbInJlcG9zaXRvcnkiLCAic3ZuOi8vc3ZuLW1p
cnJvci5nb2xvLmNocm9taXVtLm9yZy9jaHJvbWUvdHJ1bmsiLCAiQnVpbGQiXSwKLSAgICAgICAg
WyJyZXZpc2lvbiIsICIxMDQ5MzkiLCAiQnVpbGQiXSwKLSAgICAgICAgWyJzY2hlZHVsZXIiLCAi
czFfY2hyb21pdW1fZGJnX2RlcCIsICJTY2hlZHVsZXIiXSwKLSAgICAgICAgWyJzbGF2ZW5hbWUi
LCAidm0xMTQtbTEiLCAiQnVpbGRTbGF2ZSJdCi0gICAgXSwKLSAgICAicmVhc29uIjogImRvd25z
dHJlYW0iLAotICAgICJyZXN1bHRzIjogMiwKLSAgICAic2xhdmUiOiAidm0xMTQtbTEiLAotICAg
ICJzb3VyY2VTdGFtcCI6IHsKLSAgICAgICAgImJyYW5jaCI6ICJzcmMiLAotICAgICAgICAiY2hh
bmdlcyI6IFt7Ci0gICAgICAgICAgICAiYXQiOiAiVHVlIDExIE9jdCAyMDExIDEyOjE4OjQwIiwK
LSAgICAgICAgICAgICJicmFuY2giOiAic3JjIiwKLSAgICAgICAgICAgICJjYXRlZ29yeSI6IG51
bGwsCi0gICAgICAgICAgICAiY29tbWVudHMiOiAiRGlzYWJsZSBwcmVmcy5QcmVmc1Rlc3QudGVz
dEdlb2xvY2F0aW9uUHJlZiBvbiB3aW5cblxuVEJSPWRlbm5pc2plZmZyZXlAY2hyb21pdW0ub3Jn
XG5CVUc9OTk4NjVcblRFU1Q9XG5cblJldmlldyBVUkw6IGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9t
aXVtLm9yZy84MjM0MDA3IiwKLSAgICAgICAgICAgICJmaWxlcyI6IFt7Ci0gICAgICAgICAgICAg
ICAgIm5hbWUiOiAiY2hyb21lL3Rlc3QvZnVuY3Rpb25hbC9QWUFVVE9fVEVTVFMiLAotICAgICAg
ICAgICAgICAgICJ1cmwiOiBudWxsCi0gICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICJudW1i
ZXIiOiAxMzk3LAotICAgICAgICAgICAgInByb2plY3QiOiAiIiwKLSAgICAgICAgICAgICJwcm9w
ZXJ0aWVzIjogW10sCi0gICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJzdm46Ly9zdm4tbWlycm9y
LmdvbG8uY2hyb21pdW0ub3JnL2Nocm9tZS90cnVuayIsCi0gICAgICAgICAgICAicmV2IjogIjEw
NDkzNiIsCi0gICAgICAgICAgICAicmV2aXNpb24iOiAiMTA0OTM2IiwKLSAgICAgICAgICAgICJy
ZXZsaW5rIjogImh0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9jaHJvbWU/dmlldz1yZXYm
cmV2aXNpb249MTA0OTM2IiwKLSAgICAgICAgICAgICJ3aGVuIjogMTMxODM2MDcyMCwKLSAgICAg
ICAgICAgICJ3aG8iOiAibmlybmltZXNoQGNocm9taXVtLm9yZyIKLSAgICAgICAgfV0sCi0gICAg
ICAgICJoYXNQYXRjaCI6IGZhbHNlLAotICAgICAgICAicHJvamVjdCI6ICIiLAotICAgICAgICAi
cmVwb3NpdG9yeSI6ICJzdm46Ly9zdm4tbWlycm9yLmdvbG8uY2hyb21pdW0ub3JnL2Nocm9tZS90
cnVuayIsCi0gICAgICAgICJyZXZpc2lvbiI6ICIxMDQ5MzkiCi0gICAgfSwKLSAgICAic3RlcHMi
OiBbewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4cGVjdGF0aW9ucyI6IFtbIm91
dHB1dCIsMTc3NiwxNTM0LjA2MjUwMTQyNjc4NjJdXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0
cnVlLAotICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbWyJzdGRp
byIsImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9Y
UCUyMFBlcmYvYnVpbGRzLzEwMjY4L3N0ZXBzL3Rhc2traWxsL2xvZ3Mvc3RkaW8iXV0sCi0gICAg
ICAgICJuYW1lIjogInRhc2traWxsIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMSxbXV0sCi0gICAg
ICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDIsCi0gICAgICAg
ICJ0ZXh0IjogWyJ0YXNra2lsbCIsIndhcm5pbmciXSwKLSAgICAgICAgInRpbWVzIjogWzEzMzk0
MzgyMTQuMTc3MzYyLDEzMzk0MzgyMjIuNTU1NTcyXSwKLSAgICAgICAgInVybHMiOiB7fQotICAg
IH1dLAotICAgICJ0ZXh0IjogWyJmYWlsZWQiLCAid2Via2l0X3Rlc3RzIiwgImFyY2hpdmVfd2Vi
a2l0X3Rlc3RzX3Jlc3VsdHMiLCAid2Via2l0X2dwdV90ZXN0cyIsICJhcmNoaXZlX3dlYmtpdF90
ZXN0c19ncHVfcmVzdWx0cyJdLAotICAgICJ0aW1lcyI6IFsxMzE4MzY0MjEwLjA2NjUyNCwgMTMx
ODM2NjQwOC4wNzMyMTE5XQotfTsKLQotCi12YXIga0V4YW1wbGVQZXJmQnVpbGRlclN0YXR1c0pT
T04gPSAgewotICAgICJXZWJLaXQgTGludXgiOiB7Ci0gICAgICAgICJiYXNlZGlyIjogIldlYktp
dF9MaW51eCIsCi0gICAgICAgICJjYWNoZWRCdWlsZHMiOiBbMTE0NTksIDExNDYwLCAxMTQ2MSwg
MTE0NjJdLAotICAgICAgICAiY2F0ZWdvcnkiOiAiNndlYmtpdCBsaW51eCBsYXRlc3QiLAotICAg
ICAgICAiY3VycmVudEJ1aWxkcyI6IFsxMTQ2Ml0sCi0gICAgICAgICJwZW5kaW5nQnVpbGRzIjog
MCwKLSAgICAgICAgInNsYXZlcyI6IFsidm0xMjQtbTEiXSwKLSAgICAgICAgInN0YXRlIjogImJ1
aWxkaW5nIgotICAgIH0sCi0gICAgIk1hYzEwLjYgUGVyZiI6IHsKLSAgICAgICAgImJhc2VkaXIi
OiAiTWFjMTBfNl9QZXJmIiwKLSAgICAgICAgImNhY2hlZEJ1aWxkcyI6IFsxMTQ1OSwgMTE0NjAs
IDExNDYxLCAxMTQ2Ml0sCi0gICAgICAgICJjYXRlZ29yeSI6ICI2d2Via2l0IGxpbnV4IGxhdGVz
dCIsCi0gICAgICAgICJjdXJyZW50QnVpbGRzIjogWzExNDYxLCAxMTQ2Ml0sCi0gICAgICAgICJw
ZW5kaW5nQnVpbGRzIjogMCwKLSAgICAgICAgInNsYXZlcyI6IFsidm0xMjQtbTEiXSwKLSAgICAg
ICAgInN0YXRlIjogImJ1aWxkaW5nIgotICAgIH0sCi19OwotCi12YXIga0V4YW1wbGVQZXJmQnVp
bGRJbmZvSlNPTiA9IHsKLSAgICAiYmxhbWUiOiBbImFiYXJ0aEB3ZWJraXQub3JnIl0sCi0gICAg
ImJ1aWxkZXJOYW1lIjogIk1hYzEwLjYgUGVyZiIsCi0gICAgImNoYW5nZXMiOiBbIkZpbGVzOlxu
IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvbWFpbi5qc1xuIFRvb2xzL0NoYW5nZUxvZ1xuQXQ6IFRodSAwNCBBdWcgMjAxMSAw
MDo1MDozOFxuQ2hhbmdlZCBCeTogYWJhcnRoQHdlYmtpdC5vcmdcbkNvbW1lbnRzOiBGaXggdHlw
ZXMuICBTYWRseSwgbWFpbi5qcyBoYXMgbm8gdGVzdCBjb3ZlcmFnZS4gIChJIG5lZWQgdG8gdGhp
bmtcbmFib3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFydCBvZiB0aGUgY29kZS4pXG5cbiogQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWlu
LmpzOlByb3BlcnRpZXM6IFxuXG5cbiIsICJGaWxlczpcbiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2dc
biBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0
LWJveC1zaGFkb3dzLWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5n
XG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ct
bXVsdGlwbGUtc3RyaWN0LWhvcml6b250YWwtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZl
cnRpY2FsLWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9m
YXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZ1xuQXQ6IFRo
dSAwNCBBdWcgMjAxMSAwMDo1MDozOFxuQ2hhbmdlZCBCeTogYWJhcnRoQHdlYmtpdC5vcmdcbkNv
bW1lbnRzOiBVcGRhdGUgYmFzZWxpbmVzIGFmdGVyIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC85MjM0MD4uXG5cbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRv
dy9pbnNldC1ib3gtc2hhZG93cy1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1h
Yy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5nOlxu
KiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJp
Y3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0
L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC12ZXJ0aWNhbC1leHBlY3RlZC5wbmc6XG4q
IHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRp
Y2FsLWV4cGVjdGVkLnBuZzpQcm9wZXJ0aWVzOiBcblxuXG4iXSwKLSAgICAiY3VycmVudFN0ZXAi
OiBudWxsLAotICAgICJldGEiOiBudWxsLAotICAgICJsb2dzIjogWwotICAgICAgICBbInN0ZGlv
IiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9X
ZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvdXBkYXRlX3NjcmlwdHMvbG9ncy9zdGRp
byJdLAotICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJv
bWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvdXBk
YXRlL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21p
dW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVpbGRzLzEx
NDYxL3N0ZXBzL2NvbXBpbGUvbG9ncy9zdGRpbyJdLAotICAgICAgICBbInN0ZGlvIiwgImh0dHA6
Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBM
aW51eC9idWlsZHMvMTE0NjEvc3RlcHMvdGVzdF9zaGVsbF90ZXN0cy9sb2dzL3N0ZGlvIl0sCi0g
ICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndl
YmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy93ZWJraXRfdW5p
dF90ZXN0cy9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNo
cm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxk
cy8xMTQ2MS9zdGVwcy93ZWJraXRfdGVzdHMvbG9ncy9zdGRpbyJdLAotICAgICAgICBbInN0ZGlv
IiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9X
ZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvYXJjaGl2ZV93ZWJraXRfdGVzdHNfcmVz
dWx0cy9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9t
aXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8x
MTQ2MS9zdGVwcy93ZWJraXRfZ3B1X3Rlc3RzL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRp
byIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMv
V2ViS2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL2FyY2hpdmVfd2Via2l0X3Rlc3RzX2dw
dV9yZXN1bHRzL2xvZ3Mvc3RkaW8iXQotICAgIF0sCi0gICAgIm51bWJlciI6IDExNDYxLAotICAg
ICJwcm9wZXJ0aWVzIjogWwotICAgICAgICBbImJsYW1lbGlzdCIsIFsiYWJhcnRoQHdlYmtpdC5v
cmciXSwgIkJ1aWxkIl0sCi0gICAgICAgIFsiYnJhbmNoIiwgInRydW5rIiwgIkJ1aWxkIl0sCi0g
ICAgICAgIFsiYnVpbGRlcm5hbWUiLCAiV2ViS2l0IExpbnV4IiwgIkJ1aWxkIl0sCi0gICAgICAg
IFsiYnVpbGRudW1iZXIiLCAxMTQ2MSwgIkJ1aWxkIl0sCi0gICAgICAgIFsiZ290X3JldmlzaW9u
IiwgIjk1Mzk1IiwgIlNvdXJjZSJdLAotICAgICAgICBbImdvdF93ZWJraXRfcmV2aXNpb24iLCAi
OTIzNTgiLCAiU291cmNlIl0sCi0gICAgICAgIFsiZ3Rlc3RfZmlsdGVyIiwgbnVsbCwgIkZhY3Rv
cnkiXSwKLSAgICAgICAgWyJtYXN0ZXJuYW1lIiwgImNocm9taXVtLndlYmtpdCIsICJtYXN0ZXIu
Y2ZnIl0sCi0gICAgICAgIFsicmV2aXNpb24iLCAiOTIzNTgiLCAiQnVpbGQiXSwKLSAgICAgICAg
WyJzY2hlZHVsZXIiLCAiczZfd2Via2l0X3JlbCIsICJTY2hlZHVsZXIiXSwKLSAgICAgICAgWyJz
bGF2ZW5hbWUiLCAidm0xMjQtbTEiLCAiQnVpbGRTbGF2ZSJdCi0gICAgXSwKLSAgICAicmVhc29u
IjogIiIsCi0gICAgInJlcXVlc3RzIjogW3sKLSAgICAgICAgImJ1aWxkZXJOYW1lIjogIldlYktp
dCBMaW51eCIsCi0gICAgICAgICJidWlsZHMiOiBbMTE0NjFdLAotICAgICAgICAic291cmNlIjog
ewotICAgICAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCi0gICAgICAgICAgICAiY2hhbmdlcyI6
IFt7Ci0gICAgICAgICAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCi0gICAgICAgICAgICAgICAg
ImNhdGVnb3J5IjogbnVsbCwKLSAgICAgICAgICAgICAgICAiY29tbWVudHMiOiAiRml4IHR5cGVz
LiAgU2FkbHksIG1haW4uanMgaGFzIG5vIHRlc3QgY292ZXJhZ2UuICAoSSBuZWVkIHRvIHRoaW5r
XG5hYm91dCBob3cgdG8gdGVzdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuKVxuXG4qIENJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5q
czoiLAotICAgICAgICAgICAgICAgICJmaWxlcyI6IFsiVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzIiwgIlRvb2xz
L0NoYW5nZUxvZyJdLAotICAgICAgICAgICAgICAgICJudW1iZXIiOiA0MzcwNywKLSAgICAgICAg
ICAgICAgICAicHJvcGVydGllcyI6IFtdLAotICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5Ijog
IiIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjkyMzU3IiwKLSAgICAgICAgICAgICAg
ICAicmV2bGluayI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM1NyIsCi0g
ICAgICAgICAgICAgICAgIndoZW4iOiAxMzEyNDQ0MjM4Ljg1NTA4MSwKLSAgICAgICAgICAgICAg
ICAid2hvIjogImFiYXJ0aEB3ZWJraXQub3JnIgotICAgICAgICAgICAgfSwgewotICAgICAgICAg
ICAgICAgICJicmFuY2giOiAidHJ1bmsiLAotICAgICAgICAgICAgICAgICJjYXRlZ29yeSI6IG51
bGwsCi0gICAgICAgICAgICAgICAgImNvbW1lbnRzIjogIlVwZGF0ZSBiYXNlbGluZXMgYWZ0ZXIg
PGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzQwPi5cblxuKiBwbGF0Zm9ybS9j
aHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJveC1zaGFkb3dzLWV4cGVjdGVkLnBu
ZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUt
aG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3Jl
cGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZzpcbiog
cGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0
LXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVw
YWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5nOiIsCi0gICAgICAgICAg
ICAgICAgImZpbGVzIjogWyJMYXlvdXRUZXN0cy9DaGFuZ2VMb2ciLCAiTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9pbnNldC1ib3gtc2hhZG93cy1leHBl
Y3RlZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWlu
dC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmciLCAiTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0
LWhvcml6b250YWwtZXhwZWN0ZWQucG5nIiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC12ZXJ0aWNhbC1leHBlY3Rl
ZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9z
aGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5nIl0sCi0gICAgICAgICAgICAgICAg
Im51bWJlciI6IDQzNzA4LAotICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogW10sCi0gICAg
ICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiIiwKLSAgICAgICAgICAgICAgICAicmV2aXNpb24i
OiAiOTIzNTgiLAotICAgICAgICAgICAgICAgICJyZXZsaW5rIjogImh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzkyMzU4IiwKLSAgICAgICAgICAgICAgICAid2hlbiI6IDEzMTI0NDQy
MzguODU1NTM4LAotICAgICAgICAgICAgICAgICJ3aG8iOiAiYWJhcnRoQHdlYmtpdC5vcmciCi0g
ICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICJoYXNQYXRjaCI6IGZhbHNlLAotICAgICAgICAg
ICAgInJldmlzaW9uIjogIjkyMzU4IgotICAgICAgICB9LAotICAgICAgICAic3VibWl0dGVkQXQi
OiAxMzEyNDQ0Mjk4Ljk4OTgxOAotICAgIH1dLAotICAgICJyZXN1bHRzIjogMiwKLSAgICAic2xh
dmUiOiAidm0xMjQtbTEiLAotICAgICJzb3VyY2VTdGFtcCI6IHsKLSAgICAgICAgImJyYW5jaCI6
ICJ0cnVuayIsCi0gICAgICAgICJjaGFuZ2VzIjogW3sKLSAgICAgICAgICAgICJicmFuY2giOiAi
dHJ1bmsiLAotICAgICAgICAgICAgImNhdGVnb3J5IjogbnVsbCwKLSAgICAgICAgICAgICJjb21t
ZW50cyI6ICJGaXggdHlwZXMuICBTYWRseSwgbWFpbi5qcyBoYXMgbm8gdGVzdCBjb3ZlcmFnZS4g
IChJIG5lZWQgdG8gdGhpbmtcbmFib3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFydCBvZiB0aGUgY29k
ZS4pXG5cbiogQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9tYWluLmpzOiIsCi0gICAgICAgICAgICAiZmlsZXMiOiBbIlRvb2xzL0NJU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFp
bi5qcyIsICJUb29scy9DaGFuZ2VMb2ciXSwKLSAgICAgICAgICAgICJudW1iZXIiOiA0MzcwNywK
LSAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogW10sCi0gICAgICAgICAgICAicmVwb3NpdG9yeSI6
ICIiLAotICAgICAgICAgICAgInJldmlzaW9uIjogIjkyMzU3IiwKLSAgICAgICAgICAgICJyZXZs
aW5rIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzU3IiwKLSAgICAgICAg
ICAgICJ3aGVuIjogMTMxMjQ0NDIzOC44NTUwODEsCi0gICAgICAgICAgICAid2hvIjogImFiYXJ0
aEB3ZWJraXQub3JnIgotICAgICAgICB9LCB7Ci0gICAgICAgICAgICAiYnJhbmNoIjogInRydW5r
IiwKLSAgICAgICAgICAgICJjYXRlZ29yeSI6IG51bGwsCi0gICAgICAgICAgICAiY29tbWVudHMi
OiAiVXBkYXRlIGJhc2VsaW5lcyBhZnRlciA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvOTIzNDA+LlxuXG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2JveC1zaGFkb3cvaW5z
ZXQtYm94LXNoYWRvd3MtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFz
dC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZzpcbiogcGxh
dGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LWhv
cml6b250YWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBh
aW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtdmVydGljYWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0
Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS12ZXJ0aWNhbC1l
eHBlY3RlZC5wbmc6IiwKLSAgICAgICAgICAgICJmaWxlcyI6IFsiTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2JveC1zaGFkb3cv
aW5zZXQtYm94LXNoYWRvd3MtZXhwZWN0ZWQucG5nIiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0
ZWQucG5nIiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQv
c2hhZG93LW11bHRpcGxlLXN0cmljdC1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZyIsICJMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1z
dHJpY3QtdmVydGljYWwtZXhwZWN0ZWQucG5nIiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBu
ZyJdLAotICAgICAgICAgICAgIm51bWJlciI6IDQzNzA4LAotICAgICAgICAgICAgInByb3BlcnRp
ZXMiOiBbXSwKLSAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIiIsCi0gICAgICAgICAgICAicmV2
aXNpb24iOiAiOTIzNTgiLAotICAgICAgICAgICAgInJldmxpbmsiOiAiaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvOTIzNTgiLAotICAgICAgICAgICAgIndoZW4iOiAxMzEyNDQ0MjM4
Ljg1NTUzOCwKLSAgICAgICAgICAgICJ3aG8iOiAiYWJhcnRoQHdlYmtpdC5vcmciCi0gICAgICAg
IH1dLAotICAgICAgICAiaGFzUGF0Y2giOiBmYWxzZSwKLSAgICAgICAgInJldmlzaW9uIjogIjky
MzU4IgotICAgIH0sCi0gICAgInN0ZXBzIjogW3sKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAg
ICAgICJleHBlY3RhdGlvbnMiOiBbCi0gICAgICAgICAgICBbIm91dHB1dCIsIDIyOTcsIDIzMDAu
NjU3MTAxNDA4Mzc4NF0KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAot
ICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAgICAg
ICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRi
dWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvdXBkYXRlX3NjcmlwdHMv
bG9ncy9zdGRpbyJdCi0gICAgICAgIF0sCi0gICAgICAgICJuYW1lIjogInVwZGF0ZV9zY3JpcHRz
IiwKLSAgICAgICAgInJlc3VsdHMiOiBbMCwgW11dLAotICAgICAgICAic3RhdGlzdGljcyI6IHt9
LAotICAgICAgICAic3RlcF9udW1iZXIiOiAwLAotICAgICAgICAidGV4dCI6IFsidXBkYXRlX3Nj
cmlwdHMiXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQyOTkuMTAyODM0LCAxMzEyNDQ0MzA5
LjI3MDMyNF0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBu
dWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAy
MDQ1MywgMTc1ODAuNTAwMjM4OTY0NV0KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQi
OiB0cnVlLAotICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0g
ICAgICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1
bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvdXBkYXRl
L2xvZ3Mvc3RkaW8iXQotICAgICAgICBdLAotICAgICAgICAibmFtZSI6ICJ1cGRhdGUiLAotICAg
ICAgICAicmVzdWx0cyI6IFswLCBbXV0sCi0gICAgICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAg
ICAgICJzdGVwX251bWJlciI6IDEsCi0gICAgICAgICJ0ZXh0IjogWyJ1cGRhdGUiLCAicjk1Mzk1
IiwgIndlYmtpdCByOTIzNTgiXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQzMDkuMjcwNzYz
LCAxMzEyNDQ0Mzk4LjQ2ODEzOV0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAg
ICAgICJldGEiOiBudWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAg
WyJvdXRwdXQiLCAxNzMxNiwgMjY1Mi40ODUwNDk5NTg5NDU2XQotICAgICAgICBdLAotICAgICAg
ICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAgICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAotICAgICAg
ICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVt
Lm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2
MS9zdGVwcy9jb21waWxlL2xvZ3Mvc3RkaW8iXQotICAgICAgICBdLAotICAgICAgICAibmFtZSI6
ICJjb21waWxlIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMCwgW11dLAotICAgICAgICAic3RhdGlz
dGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiAyLAotICAgICAgICAidGV4dCI6IFsi
Y29tcGlsZSJdLAotICAgICAgICAidGltZXMiOiBbMTMxMjQ0NDM5OC40Njg1NSwgMTMxMjQ0NDQ0
MS42ODgzOF0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBu
dWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCA5
MTk4MCwgOTIwMDIuMTI2MjgzMjUyNTFdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVk
IjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwot
ICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21p
dW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3Rlc3Rf
c2hlbGxfdGVzdHMvbG9ncy9zdGRpbyJdCi0gICAgICAgIF0sCi0gICAgICAgICJuYW1lIjogInRl
c3Rfc2hlbGxfdGVzdHMiLAotICAgICAgICAicmVzdWx0cyI6IFswLCBbXV0sCi0gICAgICAgICJz
dGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDMsCi0gICAgICAgICJ0ZXh0
IjogWyJ0ZXN0X3NoZWxsX3Rlc3RzIiwgIjEgZGlzYWJsZWQiLCAiMiBmbGFreSJdLAotICAgICAg
ICAidGltZXMiOiBbMTMxMjQ0NDQ0MS42ODg3NTYsIDEzMTI0NDQ0NTEuNzQ5MDhdLAotICAgICAg
ICAidXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4
cGVjdGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMjA3NzIsIDIwNzcyLjYzODUw
MzQ0MzA4Nl0KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAotICAgICAg
ICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAgICAgICBbInN0
ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVy
cy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvd2Via2l0X3VuaXRfdGVzdHMvbG9n
cy9zdGRpbyJdCi0gICAgICAgIF0sCi0gICAgICAgICJuYW1lIjogIndlYmtpdF91bml0X3Rlc3Rz
IiwKLSAgICAgICAgInJlc3VsdHMiOiBbMCwgW11dLAotICAgICAgICAic3RhdGlzdGljcyI6IHt9
LAotICAgICAgICAic3RlcF9udW1iZXIiOiA0LAotICAgICAgICAidGV4dCI6IFsid2Via2l0X3Vu
aXRfdGVzdHMiLCAiMSBkaXNhYmxlZCJdLAotICAgICAgICAidGltZXMiOiBbMTMxMjQ0NDQ1MS43
NDk1NzQsIDEzMTI0NDQ0NTIuMzA2MTQzXSwKLSAgICAgICAgInVybHMiOiB7fQotICAgIH0sIHsK
LSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbCi0gICAgICAg
ICAgICBbIm91dHB1dCIsIDI0Nzc0MDYsIDI0OTg5MTUuNjE0NjI3NTQ5NF0KLSAgICAgICAgXSwK
LSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAotICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwK
LSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5j
aHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWls
ZHMvMTE0NjEvc3RlcHMvd2Via2l0X3Rlc3RzL2xvZ3Mvc3RkaW8iXQotICAgICAgICBdLAotICAg
ICAgICAibmFtZSI6ICJ3ZWJraXRfdGVzdHMiLAotICAgICAgICAicmVzdWx0cyI6IFsyLCBbIndl
YmtpdF90ZXN0cyJdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBf
bnVtYmVyIjogNSwKLSAgICAgICAgInRleHQiOiBbIndlYmtpdF90ZXN0cyIsICIyMDE0IGZpeGFi
bGUiLCAiKDM3MCBza2lwcGVkKSIsICJmYWlsZWQgMSIsICI8ZGl2IGNsYXNzPVwiQnVpbGRSZXN1
bHRJbmZvXCI+IiwgIjxhIGhyZWY9XCJodHRwczovL3Jlc3VsdHMud2Via2l0Lm9yZy8/c3VpdGU9
bGF5b3V0LXRlc3RzJmFtcDt0ZXN0PWZhc3QvYm94LXNoYWRvdy9ib3gtc2hhZG93LWNsaXBwZWQt
c2xpY2VzLmh0bWxcIj4iLCAiPGFiYnIgdGl0bGU9XCJmYXN0L2JveC1zaGFkb3cvYm94LXNoYWRv
dy1jbGlwcGVkLXNsaWNlcy5odG1sXCI+Ym94LXNoYWRvdy1jbGlwcGVkLXNsaWNlcy5odG1sPC9h
YmJyPiIsICI8L2E+IiwgIjwvZGl2PiJdLAotICAgICAgICAidGltZXMiOiBbMTMxMjQ0NDQ1Mi4z
MDY2OTUsIDEzMTI0NDQ3NjguODg4MjY2XSwKLSAgICAgICAgInVybHMiOiB7fQotICAgIH0sIHsK
LSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbCi0gICAgICAg
ICAgICBbIm91dHB1dCIsIDI2Njg4NDUsIDI2NzI3NDYuMzcyMzYzMjU0XQotICAgICAgICBdLAot
ICAgICAgICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAgICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAot
ICAgICAgICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNo
cm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxk
cy8xMTQ2MS9zdGVwcy9hcmNoaXZlX3dlYmtpdF90ZXN0c19yZXN1bHRzL2xvZ3Mvc3RkaW8iXQot
ICAgICAgICBdLAotICAgICAgICAibmFtZSI6ICJkdW1teV9wZXJmX3Rlc3RfMSIsCi0gICAgICAg
ICJyZXN1bHRzIjogWzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAg
InN0ZXBfbnVtYmVyIjogNiwKLSAgICAgICAgInRleHQiOiBbImFyY2hpdmVkIHdlYmtpdF90ZXN0
cyByZXN1bHRzIl0sCi0gICAgICAgICJ0aW1lcyI6IFsxMzEyNDQ0NzY4Ljg4ODc0NiwgMTMxMjQ0
NDc4MS40NDQzOTldLAotICAgICAgICAidXJscyI6IHsKLSAgICAgICAgICAgICJyZXN1bHRzIjog
Imh0dHA6Ly9kdW1teXVybDEiCi0gICAgICAgIH0KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBu
dWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAy
MTA5NTgsIDIwODEzOC40OTY1MTgyOTkzXQotICAgICAgICBdLAotICAgICAgICAiaXNGaW5pc2hl
ZCI6IHRydWUsCi0gICAgICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAotICAgICAgICAibG9ncyI6IFsK
LSAgICAgICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9t
aXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy93ZWJr
aXRfZ3B1X3Rlc3RzL2xvZ3Mvc3RkaW8iXQotICAgICAgICBdLAotICAgICAgICAibmFtZSI6ICJ3
ZWJraXRfZ3B1X3Rlc3RzIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMiwgWyJ3ZWJraXRfZ3B1X3Rl
c3RzIl1dLAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIi
OiA3LAotICAgICAgICAidGV4dCI6IFsid2Via2l0X2dwdV90ZXN0cyIsICIxNDggZml4YWJsZSIs
ICIoMjQgc2tpcHBlZCkiLCAiZmFpbGVkIDEiLCAiPGRpdiBjbGFzcz1cIkJ1aWxkUmVzdWx0SW5m
b1wiPiIsICI8YSBocmVmPVwiaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcvP3N1aXRlPWxheW91
dC10ZXN0cyZhbXA7dGVzdD1jb21wb3NpdGluZy9zY2FsaW5nL3RpbGVkLWxheWVyLXJlY3Vyc2lv
bi5odG1sXCI+IiwgIjxhYmJyIHRpdGxlPVwiY29tcG9zaXRpbmcvc2NhbGluZy90aWxlZC1sYXll
ci1yZWN1cnNpb24uaHRtbFwiPnRpbGVkLWxheWVyLXJlY3Vyc2lvbi5odG1sPC9hYmJyPiIsICI8
L2E+IiwgIjwvZGl2PiJdLAotICAgICAgICAidGltZXMiOiBbMTMxMjQ0NDc4MS40NDQ5MDMsIDEz
MTI0NDQ5NjYuODU2MDc0XSwKLSAgICAgICAgInVybHMiOiB7fQotICAgIH0sIHsKLSAgICAgICAg
ImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbCi0gICAgICAgICAgICBbIm91
dHB1dCIsIDE0ODgyNSwgMTQ3ODIyLjEwNzQyNzcwNzJdCi0gICAgICAgIF0sCi0gICAgICAgICJp
c0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJs
b2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3Jn
L3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0
ZXBzL2FyY2hpdmVfd2Via2l0X3Rlc3RzX2dwdV9yZXN1bHRzL2xvZ3Mvc3RkaW8iXQotICAgICAg
ICBdLAotICAgICAgICAibmFtZSI6ICJkdW1teV9wZXJmX3Rlc3RfMiIsCi0gICAgICAgICJyZXN1
bHRzIjogWzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBf
bnVtYmVyIjogOCwKLSAgICAgICAgInRleHQiOiBbImFyY2hpdmVkIHdlYmtpdF90ZXN0cyBncHUg
cmVzdWx0cyJdLAotICAgICAgICAidGltZXMiOiBbMTMxMjQ0NDk2Ni44NTY1NzUsIDEzMTI0NDQ5
NzAuNDU4NjU1XSwKLSAgICAgICAgInVybHMiOiB7Ci0gICAgICAgICAgICAicmVzdWx0cyI6ICJo
dHRwOi8vZHVtbXl1cmwyIgotICAgICAgICB9Ci0gICAgfV0sCi0gICAgInRleHQiOiBbImZhaWxl
ZCIsICJ3ZWJraXRfdGVzdHMiLCAid2Via2l0X2dwdV90ZXN0cyJdLAotICAgICJ0aW1lcyI6IFsx
MzEyNDQ0Mjk5LjEwMjE2LCAxMzEyNDQ0OTcwLjQ1OTEzOF0KLX07Ci0KLXRlc3QoImJ1aWxkZXJz
RmFpbGluZyIsIDMsIGZ1bmN0aW9uKCkgewotICAgIHZhciBzaW11bGF0b3IgPSBuZXcgTmV0d29y
a1NpbXVsYXRvcigpOwotICAgIGJ1aWxkZXJzLmNsZWFyQnVpbGRJbmZvQ2FjaGUoKTsKLQotICAg
IHZhciBmYWlsaW5nQnVpbGRJbmZvSlNPTiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoa0V4
YW1wbGVCdWlsZEluZm9KU09OKSk7Ci0gICAgZmFpbGluZ0J1aWxkSW5mb0pTT04ubnVtYmVyID0g
MTE0NjA7Ci0gICAgZmFpbGluZ0J1aWxkSW5mb0pTT04uc3RlcHNbMl0ucmVzdWx0c1swXSA9IDE7
Ci0KLSAgICB2YXIgcmVxdWVzdGVkVVJMcyA9IFtdOwotICAgIHNpbXVsYXRvci5nZXQgPSBmdW5j
dGlvbih1cmwsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgcmVxdWVzdGVkVVJMcy5wdXNoKHVy
bCk7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgaWYgKC9cL2pzb25cL2J1aWxkZXJzJC8uZXhlYyh1cmwpKQotICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKGtFeGFtcGxlQnVpbGRlclN0YXR1c0pTT04pOwotICAgICAgICAgICAgZWxz
ZSBpZiAoL1dlYktpdCUyMExpbnV4Ly5leGVjKHVybCkpCi0gICAgICAgICAgICAgICAgY2FsbGJh
Y2soa0V4YW1wbGVCdWlsZEluZm9KU09OKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKC9XZWJLaXQl
MjBNYWMxMFwuNi8uZXhlYyh1cmwpKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhaWxpbmdC
dWlsZEluZm9KU09OKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKC9XZWJLaXQlMjBBU0FOLy5leGVj
KHVybCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soZmFpbGluZ0J1aWxkSW5mb0pTT04pOwot
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgb2soZmFsc2UsICJVbmV4cGVjdGVk
IFVSTDogIiArIHVybCk7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9u
KCkgewotICAgICAgICBidWlsZGVycy5idWlsZGVyc0ZhaWxpbmdOb25MYXlvdXRUZXN0cyhmdW5j
dGlvbihidWlsZGVyTmFtZUxpc3QpIHsKLSAgICAgICAgICAgIGRlZXBFcXVhbChidWlsZGVyTmFt
ZUxpc3QsIHsKLSAgICAgICAgICAgICAgICAiV2ViS2l0IExpbnV4IjogWwotICAgICAgICAgICAg
ICAgICAgICAid2Via2l0X2dwdV90ZXN0cyIKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAg
ICAgICAgICJXZWJLaXQgTWFjMTAuNiI6IFsKLSAgICAgICAgICAgICAgICAgICAgIndlYmtpdF9n
cHVfdGVzdHMiCi0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0p
OwotICAgIH0pOwotCi0gICAgZGVlcEVxdWFsKHJlcXVlc3RlZFVSTHMsIFsKLSAgICAgICJodHRw
Oi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L2pzb24vYnVpbGRlcnMiLAot
ICAgICAgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvanNvbi9i
dWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEiLAotICAgICAgImh0dHA6Ly9idWls
ZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvanNvbi9idWlsZGVycy9XZWJLaXQlMjBN
YWMxMC42L2J1aWxkcy8xMTQ2MCIsCi0gICAgXSk7Ci19KTsKLQotdGVzdCgiYnVpbGRlcnNGYWls
aW5nIChBcHBsZSkiLCAzLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5l
dHdvcmtTaW11bGF0b3IoKTsKLSAgICBidWlsZGVycy5jbGVhckJ1aWxkSW5mb0NhY2hlKCk7Ci0K
LSAgICBjb25maWcuY3VycmVudFBsYXRmb3JtID0gJ2FwcGxlJzsKLQotICAgIHZhciBmYWlsaW5n
QnVpbGRJbmZvSlNPTiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoa0V4YW1wbGVCdWlsZElu
Zm9KU09OKSk7Ci0gICAgZmFpbGluZ0J1aWxkSW5mb0pTT04ubnVtYmVyID0gMTE0NjA7Ci0gICAg
ZmFpbGluZ0J1aWxkSW5mb0pTT04uc3RlcHNbMl0ucmVzdWx0c1swXSA9IDE7Ci0KLSAgICB2YXIg
cmVxdWVzdGVkVVJMcyA9IFtdOwotICAgIHNpbXVsYXRvci5nZXQgPSBmdW5jdGlvbih1cmwsIGNh
bGxiYWNrKQotICAgIHsKLSAgICAgICAgcmVxdWVzdGVkVVJMcy5wdXNoKHVybCk7Ci0gICAgICAg
IHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYg
KC9cL2pzb25cL2J1aWxkZXJzJC8uZXhlYyh1cmwpKQotICAgICAgICAgICAgICAgIGNhbGxiYWNr
KGtFeGFtcGxlV2ViS2l0RG90T3JnQnVpbGRlclN0YXR1c0pTT04pOwotICAgICAgICAgICAgZWxz
ZSBpZiAoL0FwcGxlJTIwTGlvbiUyMFJlbGVhc2UlMjBXSzIlMjBcKFRlc3RzXCkvLmV4ZWModXJs
KSkKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhrRXhhbXBsZUJ1aWxkSW5mb0pTT04pOwotICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgb2soZmFsc2UsICJVbmV4cGVjdGVkIFVS
TDogIiArIHVybCk7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkg
ewotICAgICAgICBidWlsZGVycy5idWlsZGVyc0ZhaWxpbmdOb25MYXlvdXRUZXN0cyhmdW5jdGlv
bihidWlsZGVyTmFtZUxpc3QpIHsKLSAgICAgICAgICAgIGRlZXBFcXVhbChidWlsZGVyTmFtZUxp
c3QsIHsKLSAgICAgICAgICAgICAgICAiQXBwbGUgTGlvbiBSZWxlYXNlIFdLMiAoVGVzdHMpIjog
WwotICAgICAgICAgICAgICAgICAgICAid2Via2l0X2dwdV90ZXN0cyIKLSAgICAgICAgICAgICAg
ICBdCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBkZWVwRXF1
YWwocmVxdWVzdGVkVVJMcywgWwotICAgICAgICAiaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL2pz
b24vYnVpbGRlcnMiLAotICAgICAgICAiaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL2pzb24vYnVp
bGRlcnMvQXBwbGUlMjBMaW9uJTIwUmVsZWFzZSUyMFdLMiUyMChUZXN0cykvYnVpbGRzLzExNDYx
IgotICAgIF0pOwotCi0gICAgY29uZmlnLmN1cnJlbnRQbGF0Zm9ybSA9ICdjaHJvbWl1bSc7Ci19
KTsKLQotCi10ZXN0KCJidWlsZGVyc0ZhaWxpbmcgKHJ1bi13ZWJraXQtdGVzdHMgY3Jhc2gpIiwg
MywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHNpbXVsYXRvciA9IG5ldyBOZXR3b3JrU2ltdWxhdG9y
KCk7Ci0gICAgYnVpbGRlcnMuY2xlYXJCdWlsZEluZm9DYWNoZSgpOwotCi0gICAgdmFyIGJ1aWxk
ZXJTdGF0dXNKU09OID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShrRXhhbXBsZUJ1aWxkZXJT
dGF0dXNKU09OKSk7Ci0gICAgZGVsZXRlIGJ1aWxkZXJTdGF0dXNKU09OWydXZWJLaXQgTWFjMTAu
NiddOwotICAgIGJ1aWxkZXJTdGF0dXNKU09OWydXZWJLaXQgTGludXgnXS5jYWNoZWRCdWlsZHMg
PSBbMjE0NjBdOwotICAgIGJ1aWxkZXJTdGF0dXNKU09OWydXZWJLaXQgTGludXgnXS5jdXJyZW50
QnVpbGRzID0gW107Ci0KLSAgICB2YXIgZmFpbGluZ0J1aWxkSW5mb0pTT04gPSBKU09OLnBhcnNl
KEpTT04uc3RyaW5naWZ5KGtFeGFtcGxlQnVpbGRJbmZvV2l0aFdlYktpdFRlc3RDcmFzaEpTT04p
KTsKLSAgICBmYWlsaW5nQnVpbGRJbmZvSlNPTi5udW1iZXIgPSAyMTQ2MDsKLQotICAgIHZhciBy
ZXF1ZXN0ZWRVUkxzID0gW107Ci0gICAgc2ltdWxhdG9yLmdldCA9IGZ1bmN0aW9uKHVybCwgY2Fs
bGJhY2spCi0gICAgewotICAgICAgICByZXF1ZXN0ZWRVUkxzLnB1c2godXJsKTsKLSAgICAgICAg
c2ltdWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAo
L1wvanNvblwvYnVpbGRlcnMkLy5leGVjKHVybCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2so
YnVpbGRlclN0YXR1c0pTT04pOwotICAgICAgICAgICAgZWxzZSBpZiAoL1dlYktpdCUyMExpbnV4
Ly5leGVjKHVybCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soZmFpbGluZ0J1aWxkSW5mb0pT
T04pOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgb2soZmFsc2UsICJVbmV4
cGVjdGVkIFVSTDogIiArIHVybCk7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1
bmN0aW9uKCkgewotICAgICAgICBidWlsZGVycy5idWlsZGVyc0ZhaWxpbmdOb25MYXlvdXRUZXN0
cyhmdW5jdGlvbihidWlsZGVyTmFtZUxpc3QpIHsKLSAgICAgICAgICAgIGRlZXBFcXVhbChidWls
ZGVyTmFtZUxpc3QsIHsKLSAgICAgICAgICAgICAgICAiV2ViS2l0IExpbnV4IjogWwotICAgICAg
ICAgICAgICAgICAgICAid2Via2l0X3Rlc3RzIiwKLSAgICAgICAgICAgICAgICAgICAgImFyY2hp
dmVfd2Via2l0X3Rlc3RzX3Jlc3VsdHMiLAotICAgICAgICAgICAgICAgICAgICAid2Via2l0X2dw
dV90ZXN0cyIsCi0gICAgICAgICAgICAgICAgICAgICJhcmNoaXZlX3dlYmtpdF90ZXN0c19ncHVf
cmVzdWx0cyIKLSAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7
Ci0gICAgfSk7Ci0KLSAgICBkZWVwRXF1YWwocmVxdWVzdGVkVVJMcywgWwotICAgICAgImh0dHA6
Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvanNvbi9idWlsZGVycyIsCi0g
ICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC9qc29uL2J1
aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8yMTQ2MCIsCi0gICAgXSk7Ci19KTsKLQotdGVz
dCgiYnVpbGRlcnNGYWlsaW5nICh0YXNra2lsbCB3YXJuaW5nKSIsIDMsIGZ1bmN0aW9uKCkgewot
ICAgIHZhciBzaW11bGF0b3IgPSBuZXcgTmV0d29ya1NpbXVsYXRvcigpOwotICAgIGJ1aWxkZXJz
LmNsZWFyQnVpbGRJbmZvQ2FjaGUoKTsKLQotICAgIHZhciBidWlsZGVyU3RhdHVzSlNPTiA9IEpT
T04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoa0V4YW1wbGVCdWlsZGVyU3RhdHVzSlNPTikpOwotICAg
IGRlbGV0ZSBidWlsZGVyU3RhdHVzSlNPTlsnV2ViS2l0IE1hYzEwLjYnXTsKLSAgICBidWlsZGVy
U3RhdHVzSlNPTlsnV2ViS2l0IExpbnV4J10uY2FjaGVkQnVpbGRzID0gWzIxNDYwXTsKLSAgICBi
dWlsZGVyU3RhdHVzSlNPTlsnV2ViS2l0IExpbnV4J10uY3VycmVudEJ1aWxkcyA9IFtdOwotCi0g
ICAgdmFyIGZhaWxpbmdCdWlsZEluZm9KU09OID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShr
RXhhbXBsZUJ1aWxkSW5mb1dpdGhUYXNrS2lsbFdhcm5pbmcpKTsKLSAgICBmYWlsaW5nQnVpbGRJ
bmZvSlNPTi5udW1iZXIgPSAyMTQ2MDsKLQotICAgIHZhciByZXF1ZXN0ZWRVUkxzID0gW107Ci0g
ICAgc2ltdWxhdG9yLmdldCA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spCi0gICAgewotICAgICAg
ICByZXF1ZXN0ZWRVUkxzLnB1c2godXJsKTsKLSAgICAgICAgc2ltdWxhdG9yLnNjaGVkdWxlQ2Fs
bGJhY2soZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAoL1wvanNvblwvYnVpbGRlcnMkLy5l
eGVjKHVybCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soYnVpbGRlclN0YXR1c0pTT04pOwot
ICAgICAgICAgICAgZWxzZSBpZiAoL1dlYktpdCUyMExpbnV4Ly5leGVjKHVybCkpCi0gICAgICAg
ICAgICAgICAgY2FsbGJhY2soZmFpbGluZ0J1aWxkSW5mb0pTT04pOwotICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgb2soZmFsc2UsICJVbmV4cGVjdGVkIFVSTDogIiArIHVybCk7
Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7
Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICBi
dWlsZGVycy5idWlsZGVyc0ZhaWxpbmdOb25MYXlvdXRUZXN0cyhmdW5jdGlvbihidWlsZGVyTmFt
ZUxpc3QpIHsKLSAgICAgICAgICAgIGRlZXBFcXVhbChidWlsZGVyTmFtZUxpc3QsIHt9KTsKLSAg
ICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBkZWVwRXF1YWwocmVxdWVzdGVkVVJMcywgWwotICAg
ICAgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvanNvbi9idWls
ZGVycyIsCi0gICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtp
dC9qc29uL2J1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8yMTQ2MCIsCi0gICAgXSk7Ci19
KTsKLQotdGVzdCgiYnVpbGRlcnMucGVyZkJ1aWxkZXJzIiwgMiwgZnVuY3Rpb24oKSB7Ci0gICAg
dmFyIHNpbXVsYXRvciA9IG5ldyBOZXR3b3JrU2ltdWxhdG9yKCk7Ci0gICAgYnVpbGRlcnMuY2xl
YXJCdWlsZEluZm9DYWNoZSgpOwotCi0gICAgdmFyIGJ1aWxkZXJTdGF0dXNKU09OID0gSlNPTi5w
YXJzZShKU09OLnN0cmluZ2lmeShrRXhhbXBsZVBlcmZCdWlsZGVyU3RhdHVzSlNPTikpOwotICAg
IHZhciBmYWlsaW5nQnVpbGRJbmZvSlNPTiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoa0V4
YW1wbGVQZXJmQnVpbGRJbmZvSlNPTikpOwotCi0gICAgdmFyIHJlcXVlc3RlZFVSTHMgPSBbXTsK
LSAgICBzaW11bGF0b3IuZ2V0ID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykKLSAgICB7Ci0gICAg
ICAgIHJlcXVlc3RlZFVSTHMucHVzaCh1cmwpOwotICAgICAgICBzaW11bGF0b3Iuc2NoZWR1bGVD
YWxsYmFjayhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICgvXC9qc29uXC9idWlsZGVycyQv
LmV4ZWModXJsKSkKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhidWlsZGVyU3RhdHVzSlNPTik7
Ci0gICAgICAgICAgICBlbHNlIGlmICgvTWFjMTAuNiUyMFBlcmYvLmV4ZWModXJsKSkKLSAgICAg
ICAgICAgICAgICBjYWxsYmFjayhmYWlsaW5nQnVpbGRJbmZvSlNPTik7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQot
ICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICBidWlsZGVycy5wZXJm
QnVpbGRlcnMoZnVuY3Rpb24oYnVpbGRlck5hbWVMaXN0KSB7Ci0gICAgICAgICAgICBkZWVwRXF1
YWwoYnVpbGRlck5hbWVMaXN0LCB7Ci0gICAgICAgICAgICAgICAgImR1bW15X3BlcmZfdGVzdF8x
IjogWwotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiYnVp
bGRlciI6ICJNYWMxMC42IFBlcmYiLAotICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJo
dHRwOi8vZHVtbXl1cmwxIgotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICAgICAiZHVtbXlfcGVyZl90ZXN0XzIiOiBbCi0gICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyIjogIk1hYzEwLjYgUGVy
ZiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHA6Ly9kdW1teXVybDIiCi0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICB9KTsK
LSAgICAgICAgfSk7Ci0gICAgfSk7Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9jaGVja291dC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY2hlY2tvdXQuanMJ
KHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jaGVja291dC5qcwkobm9uZXhp
c3RlbnQpCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIGNoZWNrb3V0ID0gY2hl
Y2tvdXQgfHwge307Ci0KLShmdW5jdGlvbigpIHsKLQotdmFyIGtXZWJLaXRUcnVuayA9ICdodHRw
czovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rLyc7Ci0KLXZhciBnX2hh
dmVTZWVuQ2hlY2tvdXRBdmFpbGFibGUgPSBmYWxzZTsKLQotZnVuY3Rpb24gY2FsbElmQ2hlY2tv
dXRBdmFpbGFibGUoY2FsbGJhY2ssIGNoZWNrb3V0VW5hdmFpbGFibGUpCi17Ci0gICAgaWYgKGdf
aGF2ZVNlZW5DaGVja291dEF2YWlsYWJsZSkgewotICAgICAgICBjYWxsYmFjaygpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGNoZWNrb3V0LmlzQXZhaWxhYmxlKGZ1bmN0aW9uKGlzQXZh
aWxhYmxlKSB7Ci0gICAgICAgIGlmIChpc0F2YWlsYWJsZSkgewotICAgICAgICAgICAgZ19oYXZl
U2VlbkNoZWNrb3V0QXZhaWxhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNoZWNrb3V0VW5hdmFp
bGFibGUpCi0gICAgICAgICAgICBjaGVja291dFVuYXZhaWxhYmxlKCk7Ci0gICAgfSk7Ci19Ci0K
LWNoZWNrb3V0LnN1YnZlcnNpb25VUkxGb3JUZXN0ID0gZnVuY3Rpb24odGVzdE5hbWUpCi17Ci0g
ICAgcmV0dXJuIGtXZWJLaXRUcnVuayArICdMYXlvdXRUZXN0cy8nICsgdGVzdE5hbWU7Ci19Owot
Ci1jaGVja291dC5pc0F2YWlsYWJsZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKQotewotICAgIG5ldC5h
amF4KHsKLSAgICAgICAgdXJsOiAnL3BpbmcnLAotICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpOwotICAgICAgICB9LAotICAgICAgICBlcnJv
cjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7Ci0gICAgICAgIH0s
Ci0gICAgfSk7Ci19OwotCi1jaGVja291dC5yZXZlcnQgPSBmdW5jdGlvbihyZXZpc2lvbiwgcmVh
c29uLCBjYWxsYmFjaywgY2hlY2tvdXRVbmF2YWlsYWJsZSkKLXsKLSAgICBjYWxsSWZDaGVja291
dEF2YWlsYWJsZShmdW5jdGlvbigpIHsKLSAgICAgICAgbmV0LnBvc3QoJy9yZXZlcnQ/JyArICQu
cGFyYW0oewotICAgICAgICAgICAgJ3JldmlzaW9uJzogcmV2aXNpb24sCi0gICAgICAgICAgICAn
cmVhc29uJzogcmVhc29uCi0gICAgICAgIH0pLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNh
bGxiYWNrKCk7Ci0gICAgICAgIH0pOwotICAgIH0sIGNoZWNrb3V0VW5hdmFpbGFibGUpOwotfTsK
LQotY2hlY2tvdXQucmViYXNlbGluZSA9IGZ1bmN0aW9uKGZhaWx1cmVJbmZvTGlzdCwgY2FsbGJh
Y2ssIHByb2dyZXNzQ2FsbGJhY2ssIGNoZWNrb3V0VW5hdmFpbGFibGUpCi17Ci0gICAgY2FsbElm
Q2hlY2tvdXRBdmFpbGFibGUoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB0ZXN0cyA9IHt9Owot
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZhaWx1cmVJbmZvTGlzdC5sZW5ndGg7IGkrKykg
ewotICAgICAgICAgICAgdmFyIGZhaWx1cmVJbmZvID0gZmFpbHVyZUluZm9MaXN0W2ldOwotICAg
ICAgICAgICAgdGVzdHNbZmFpbHVyZUluZm8udGVzdE5hbWVdID0gdGVzdHNbZmFpbHVyZUluZm8u
dGVzdE5hbWVdIHx8IHt9OwotICAgICAgICAgICAgdGVzdHNbZmFpbHVyZUluZm8udGVzdE5hbWVd
W2ZhaWx1cmVJbmZvLmJ1aWxkZXJOYW1lXSA9IAotICAgICAgICAgICAgICAgIGJhc2UudW5pcXVp
ZnlBcnJheShiYXNlLmZsYXR0ZW5BcnJheShmYWlsdXJlSW5mby5mYWlsdXJlVHlwZUxpc3QubWFw
KHJlc3VsdHMuZmFpbHVyZVR5cGVUb0V4dGVuc2lvbkxpc3QpKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgbmV0LnBvc3QoJy9yZWJhc2VsaW5lYWxsJywgSlNPTi5zdHJpbmdpZnkodGVzdHMpLCBmdW5j
dGlvbigpIHsgY2FsbGJhY2soKSB9KTsKLSAgICB9LCBjaGVja291dFVuYXZhaWxhYmxlKTsKLX07
Ci0KLX0pKCk7CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY2hlY2tvdXRfdW5pdHRlc3RzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jaGVja291dF91bml0dGVzdHMuanMJKHJldmlz
aW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jaGVja291dF91bml0dGVzdHMuanMJKG5v
bmV4aXN0ZW50KQpAQCAtMSw5MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbiAoKSB7
Ci0KLW1vZHVsZSgiY2hlY2tvdXQiKTsKLQotdGVzdCgic3VidmVyc2lvblVSTEZvclRlc3QiLCAx
LCBmdW5jdGlvbigpIHsKLSAgICBlcXVhbHMoY2hlY2tvdXQuc3VidmVyc2lvblVSTEZvclRlc3Qo
InBhdGgvdG8vdGVzdC5odG1sIiksICJodHRwczovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkv
d2Via2l0L3RydW5rL0xheW91dFRlc3RzL3BhdGgvdG8vdGVzdC5odG1sIik7Ci19KTsKLQotdGVz
dCgicmViYXNlbGluZSIsIDMsIGZ1bmN0aW9uKCkgewotICAgIHZhciBzaW11bGF0b3IgPSBuZXcg
TmV0d29ya1NpbXVsYXRvcigpOwotCi0gICAgdmFyIHJlcXVlc3RzID0gW107Ci0gICAgc2ltdWxh
dG9yLnBvc3QgPSBmdW5jdGlvbih1cmwsIGJvZHksIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAg
cmVxdWVzdHMucHVzaChbdXJsLCBib2R5XSk7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNh
bGxiYWNrKGNhbGxiYWNrKTsKLSAgICB9OwotICAgIHNpbXVsYXRvci5hamF4ID0gZnVuY3Rpb24o
b3B0aW9ucykKLSAgICB7Ci0gICAgICAgIGlmIChvcHRpb25zLnVybC5pbmRleE9mKCcvcGluZycp
ID09IC0xKQotICAgICAgICAgICAgb2soZmFsc2UsICdSZWNlaXZlZCBub24tcGluZyBhamF4IHJl
cXVlc3Q6ICcgKyBvcHRpb25zLnVybCk7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxi
YWNrKG9wdGlvbnMuc3VjY2Vzcyk7Ci0gICAgfTsKLQotICAgIHZhciBrRXhwZWN0ZWRUZXN0TmFt
ZVByb2dyZXNzU3RhY2sgPSBbCi0gICAgICAgICdmYXN0L3Rlc3QuaHRtbCcsCi0gICAgICAgICdh
bm90aGVyL3Rlc3Quc3ZnJywKLSAgICAgICAgJ2Fub3RoZXIvdGVzdC5zdmcnLCAvLyBUaGlzIGlz
IHRoZSBmaXJzdCBvbmUuCi0gICAgXTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9u
KCkgewotICAgICAgICBjaGVja291dC5yZWJhc2VsaW5lKFt7Ci0gICAgICAgICAgICAnYnVpbGRl
ck5hbWUnOiAnV2ViS2l0IExpbnV4JywKLSAgICAgICAgICAgICd0ZXN0TmFtZSc6ICdhbm90aGVy
L3Rlc3Quc3ZnJywKLSAgICAgICAgICAgICdmYWlsdXJlVHlwZUxpc3QnOiBbJ0lNQUdFJ10sCi0g
ICAgICAgIH0sIHsKLSAgICAgICAgICAgICdidWlsZGVyTmFtZSc6ICdXZWJLaXQgTWFjMTAuNics
Ci0gICAgICAgICAgICAndGVzdE5hbWUnOiAnYW5vdGhlci90ZXN0LnN2ZycsCi0gICAgICAgICAg
ICAnZmFpbHVyZVR5cGVMaXN0JzogWydJTUFHRScsICdURVhUJywgJ0lNQUdFK1RFWFQnXSwKLSAg
ICAgICAgfSwgewotICAgICAgICAgICAgJ2J1aWxkZXJOYW1lJzogJ1dlYmtpdCBXaW43JywKLSAg
ICAgICAgICAgICd0ZXN0TmFtZSc6ICdmYXN0L3Rlc3QuaHRtbCcsCi0gICAgICAgICAgICAnZmFp
bHVyZVR5cGVMaXN0JzogWydJTUFHRStURVhUJ10sCi0gICAgICAgIH1dLCBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIG9rKHRydWUpOwotICAgICAgICB9LCBmdW5jdGlvbihmYWlsdXJlSW5mbykg
ewotICAgICAgICAgICAgZXF1YWxzKGZhaWx1cmVJbmZvLnRlc3ROYW1lLCBrRXhwZWN0ZWRUZXN0
TmFtZVByb2dyZXNzU3RhY2sucG9wKCkpOwotICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIG9rKGZhbHNlLCAnQ2hlY2tvdXQgc2hvdWxkIGJlIGF2YWlsYWJsZS4nKTsKLSAgICAg
ICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBkZWVwRXF1YWwocmVxdWVzdHMsIFsKLSAgICAgICAgWyIv
cmViYXNlbGluZWFsbCIsCi0gICAgICAgICBKU09OLnN0cmluZ2lmeSh7Ci0gICAgICAgICAgICAg
ImFub3RoZXIvdGVzdC5zdmciOiB7Ci0gICAgICAgICAgICAgICAgICJXZWJLaXQgTGludXgiOiBb
InBuZyJdLCAKLSAgICAgICAgICAgICAgICAgIldlYktpdCBNYWMxMC42IjogWyJwbmciLCJ0eHQi
XX0sCi0gICAgICAgICAgICAgImZhc3QvdGVzdC5odG1sIjogewotICAgICAgICAgICAgICAgICAi
V2Via2l0IFdpbjciOiBbInR4dCIsInBuZyJdCi0gICAgICAgICAgICAgfX0pXQotICAgIF0pOwot
fSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY29uZmlnLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvc2NyaXB0cy9jb25maWcuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xz
L0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9jb25maWcuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNTYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi12YXIgY29uZmlnID0gY29uZmlnIHx8IHt9OwotCi0oZnVuY3Rpb24oKSB7Ci0K
LWNvbmZpZy5rQnVpbGROdW1iZXJMaW1pdCA9IDIwOwotCi1jb25maWcua1BsYXRmb3JtcyA9IHsK
LSAgICAnYXBwbGUnIDogewotICAgICAgICBsYWJlbCA6ICdBcHBsZScsCi0gICAgICAgIGJ1aWxk
Q29uc29sZVVSTDogJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZycsCi0gICAgICAgIGxheW91dFRl
c3RSZXN1bHRzVVJMOiAnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL3Jlc3VsdHMnLAotICAgICAg
ICB3YXRlcmZhbGxVUkw6ICdodHRwczovL2J1aWxkLndlYmtpdC5vcmcvd2F0ZXJmYWxsJywKLSAg
ICAgICAgYnVpbGRlcnM6IHsKLSAgICAgICAgICAgICdBcHBsZSBMaW9uIFJlbGVhc2UgV0sxIChU
ZXN0cyknIDoge3ZlcnNpb246ICdsaW9uJyB9LAotICAgICAgICAgICAgJ0FwcGxlIExpb24gRGVi
dWcgV0sxIChUZXN0cyknIDoge3ZlcnNpb246ICdsaW9uJywgZGVidWc6IHRydWV9LAotICAgICAg
ICAgICAgJ0FwcGxlIExpb24gUmVsZWFzZSBXSzIgKFRlc3RzKScgOiB7dmVyc2lvbjogJ2xpb24n
IH0sCi0gICAgICAgICAgICAnQXBwbGUgTGlvbiBEZWJ1ZyBXSzIgKFRlc3RzKScgOiB7dmVyc2lv
bjogJ2xpb24nLCBkZWJ1ZzogdHJ1ZX0sCi0gICAgICAgICAgICAnQXBwbGUgTW91bnRhaW5MaW9u
IFJlbGVhc2UgV0sxIChUZXN0cyknIDoge3ZlcnNpb246ICdtb3VudGFpbmxpb24nIH0sCi0gICAg
ICAgICAgICAnQXBwbGUgTW91bnRhaW5MaW9uIERlYnVnIFdLMSAoVGVzdHMpJyA6IHt2ZXJzaW9u
OiAnbW91bnRhaW5saW9uJywgZGVidWc6IHRydWV9LAotICAgICAgICAgICAgJ0FwcGxlIE1vdW50
YWluTGlvbiBSZWxlYXNlIFdLMiAoVGVzdHMpJyA6IHt2ZXJzaW9uOiAnbW91bnRhaW5saW9uJyB9
LAotICAgICAgICAgICAgJ0FwcGxlIE1vdW50YWluTGlvbiBEZWJ1ZyBXSzIgKFRlc3RzKScgOiB7
dmVyc2lvbjogJ21vdW50YWlubGlvbicsIGRlYnVnOiB0cnVlfSwKLSAgICAgICAgICAgIC8vICdB
cHBsZSBXaW4gWFAgRGVidWcgKFRlc3RzKScgOiB7dmVyc2lvbjogJ3hwJyxkZWJ1ZzogdHJ1ZX0s
Ci0gICAgICAgICAgICAvLyAnQXBwbGUgV2luIDcgUmVsZWFzZSAoVGVzdHMpJyA6IHt2ZXJzaW9u
OiAnd2luNyd9LAotICAgICAgICB9LAotICAgICAgICBoYXZlQnVpbGRlckFjY3VtdWxhdGVkUmVz
dWx0cyA6IGZhbHNlLAotICAgICAgICB1c2VEaXJlY3RvcnlMaXN0aW5nRm9yT2xkQnVpbGRzOiBm
YWxzZSwKLSAgICAgICAgdXNlRmxha2luZXNzRGFzaGJvYXJkOiBmYWxzZSwKLSAgICAgICAgcmVz
dWx0c0RpcmVjdG9yeU5hbWVGcm9tQnVpbGRlck5hbWU6IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKSB7
Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGJ1aWxkZXJOYW1lKTsKLSAg
ICAgICAgfSwKLSAgICAgICAgcmVzdWx0c0RpcmVjdG9yeUZvckJ1aWxkTnVtYmVyOiBmdW5jdGlv
bihidWlsZE51bWJlciwgcmV2aXNpb24pIHsKLSAgICAgICAgICAgIHJldHVybiBlbmNvZGVVUklD
b21wb25lbnQoJ3InICsgcmV2aXNpb24gKyAnICgnICsgYnVpbGROdW1iZXIgKyAnKScpOwotICAg
ICAgICB9LAotICAgICAgICBfYnVpbGRlckFwcGxpZXM6IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKSB7
Ci0gICAgICAgICAgICByZXR1cm4gYnVpbGRlck5hbWUuaW5kZXhPZignQXBwbGUnKSAhPT0gLTE7
Ci0gICAgICAgIH0sCi0gICAgfSwKLSAgICAnZ3RrJyA6IHsKLSAgICAgICAgbGFiZWwgOiAnR1RL
JywKLSAgICAgICAgYnVpbGRDb25zb2xlVVJMOiAnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnJywK
LSAgICAgICAgbGF5b3V0VGVzdFJlc3VsdHNVUkw6ICdodHRwczovL2J1aWxkLndlYmtpdC5vcmcv
cmVzdWx0cycsCi0gICAgICAgIHdhdGVyZmFsbFVSTDogJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9y
Zy93YXRlcmZhbGwnLAotICAgICAgICBidWlsZGVyczogewotICAgICAgICAgICAgJ0dUSyBMaW51
eCA2NC1iaXQgUmVsZWFzZSAoVGVzdHMpJyA6IHt2ZXJzaW9uOiAnNjQtYml0IHJlbGVhc2UnfSwK
LSAgICAgICAgICAgICdHVEsgTGludXggNjQtYml0IERlYnVnIChUZXN0cyknIDoge3ZlcnNpb246
ICc2NC1iaXQgZGVidWcnLCBkZWJ1ZzogdHJ1ZX0sCi0gICAgICAgIH0sCi0gICAgICAgIGhhdmVC
dWlsZGVyQWNjdW11bGF0ZWRSZXN1bHRzIDogZmFsc2UsCi0gICAgICAgIHVzZURpcmVjdG9yeUxp
c3RpbmdGb3JPbGRCdWlsZHM6IGZhbHNlLAotICAgICAgICB1c2VGbGFraW5lc3NEYXNoYm9hcmQ6
IGZhbHNlLAotICAgICAgICByZXN1bHRzRGlyZWN0b3J5TmFtZUZyb21CdWlsZGVyTmFtZTogZnVu
Y3Rpb24oYnVpbGRlck5hbWUpIHsKLSAgICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25l
bnQoYnVpbGRlck5hbWUpOwotICAgICAgICB9LAotICAgICAgICByZXN1bHRzRGlyZWN0b3J5Rm9y
QnVpbGROdW1iZXI6IGZ1bmN0aW9uKGJ1aWxkTnVtYmVyLCByZXZpc2lvbikgewotICAgICAgICAg
ICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCgncicgKyByZXZpc2lvbiArICcgKCcgKyBidWls
ZE51bWJlciArICcpJyk7Ci0gICAgICAgIH0sCi0gICAgICAgIF9idWlsZGVyQXBwbGllczogZnVu
Y3Rpb24oYnVpbGRlck5hbWUpIHsKLSAgICAgICAgICAgIHJldHVybiBidWlsZGVyTmFtZS5pbmRl
eE9mKCdHVEsnKSAhPT0gLTE7Ci0gICAgICAgIH0sCi0gICAgfSwKLSAgICAnd3BlJyA6IHsKLSAg
ICAgICAgbGFiZWwgOiAnV1BFJywKLSAgICAgICAgYnVpbGRDb25zb2xlVVJMOiAnaHR0cHM6Ly9i
dWlsZC53ZWJraXQub3JnJywKLSAgICAgICAgbGF5b3V0VGVzdFJlc3VsdHNVUkw6ICdodHRwczov
L2J1aWxkLndlYmtpdC5vcmcvcmVzdWx0cycsCi0gICAgICAgIHdhdGVyZmFsbFVSTDogJ2h0dHBz
Oi8vYnVpbGQud2Via2l0Lm9yZy93YXRlcmZhbGwnLAotICAgICAgICBidWlsZGVyczogewotICAg
ICAgICAgICAgJ1dQRSBMaW51eCA2NC1iaXQgUmVsZWFzZSAoVGVzdHMpJyA6IHt2ZXJzaW9uOiAn
NjQtYml0IHJlbGVhc2UnfSwKLSAgICAgICAgfSwKLSAgICAgICAgaGF2ZUJ1aWxkZXJBY2N1bXVs
YXRlZFJlc3VsdHMgOiBmYWxzZSwKLSAgICAgICAgdXNlRGlyZWN0b3J5TGlzdGluZ0Zvck9sZEJ1
aWxkczogZmFsc2UsCi0gICAgICAgIHVzZUZsYWtpbmVzc0Rhc2hib2FyZDogZmFsc2UsCi0gICAg
ICAgIHJlc3VsdHNEaXJlY3RvcnlOYW1lRnJvbUJ1aWxkZXJOYW1lOiBmdW5jdGlvbihidWlsZGVy
TmFtZSkgewotICAgICAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChidWlsZGVyTmFt
ZSk7Ci0gICAgICAgIH0sCi0gICAgICAgIHJlc3VsdHNEaXJlY3RvcnlGb3JCdWlsZE51bWJlcjog
ZnVuY3Rpb24oYnVpbGROdW1iZXIsIHJldmlzaW9uKSB7Ci0gICAgICAgICAgICByZXR1cm4gZW5j
b2RlVVJJQ29tcG9uZW50KCdyJyArIHJldmlzaW9uICsgJyAoJyArIGJ1aWxkTnVtYmVyICsgJykn
KTsKLSAgICAgICAgfSwKLSAgICAgICAgX2J1aWxkZXJBcHBsaWVzOiBmdW5jdGlvbihidWlsZGVy
TmFtZSkgewotICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXJOYW1lLmluZGV4T2YoJ1dQRScpICE9
PSAtMTsKLSAgICAgICAgfSwKLSAgICB9LAotfTsKLQotY29uZmlnLmtUcmFjVVJMID0gJ2h0dHBz
Oi8vdHJhYy53ZWJraXQub3JnJzsKLWNvbmZpZy5rQnVnemlsbGFVUkwgPSAnaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcnOwotCi1jb25maWcua1JldmlzaW9uQXR0ciA9ICdkYXRhLXJldmlzaW9uJzsK
LWNvbmZpZy5rVGVzdE5hbWVBdHRyID0gJ2RhdGEtdGVzdC1uYW1lJzsKLWNvbmZpZy5rQnVpbGRl
ck5hbWVBdHRyID0gJ2RhdGEtYnVpbGRlci1uYW1lJzsKLWNvbmZpZy5rRmFpbHVyZUNvdW50QXR0
ciA9ICdkYXRhLWZhaWx1cmUtY291bnQnOwotY29uZmlnLmtGYWlsdXJlVHlwZXNBdHRyID0gJ2Rh
dGEtZmFpbHVyZS10eXBlcyc7Ci1jb25maWcua0luZm9iYXJUeXBlQXR0ciA9ICdkYXRhLWluZm9i
YXItdHlwZSc7Ci0KLXZhciBrVGVuTWludXRlc0luTWlsbGlzZWNvbmRzID0gMTAgKiA2MCAqIDEw
MDA7Ci1jb25maWcua1VwZGF0ZUZyZXF1ZW5jeSA9IGtUZW5NaW51dGVzSW5NaWxsaXNlY29uZHM7
Ci1jb25maWcua1JlbGF0aXZlVGltZVVwZGF0ZUZyZXF1ZW5jeSA9IDEwMDAgKiA2MDsKLQotY29u
ZmlnLmtFeHBlcmltZW50YWxGZWF0dXJlcyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc2VhcmNo
KCdlbmFibGVFeHBlcmltZW50cz0xJykgIT0gLTE7Ci0KLWNvbmZpZy5jdXJyZW50UGxhdGZvcm0g
PSBiYXNlLmdldFVSTFBhcmFtZXRlcigncGxhdGZvcm0nKSB8fCAnYXBwbGUnOwotCi0vLyBGSVhN
RTogV2Ugc2hvdWxkIGFkZCBhIHdheSB0byByZXN0cmljdCB0aGUgcmVzdWx0cyB0byBhIHN1YnNl
dCBvZiB0aGUgYnVpbGRlcnMKLS8vIChvciBtYXliZSBqdXN0IGEgc2luZ2xlIGJ1aWxkZXIpIGlu
IHRoZSBVSSBhcyB3ZWxsIGFzIHZpYSBhbiBVUkwgcGFyYW1ldGVyLgotY29uZmlnLmN1cnJlbnRC
dWlsZGVyID0gYmFzZS5nZXRVUkxQYXJhbWV0ZXIoJ2J1aWxkZXInKTsKLQotY29uZmlnLmN1cnJl
bnRCdWlsZGVycyA9IGZ1bmN0aW9uKCkgewotICAgIHZhciBjdXJyZW50X2J1aWxkZXJzID0ge307
Ci0gICAgaWYgKGNvbmZpZy5jdXJyZW50QnVpbGRlcikgewotICAgICAgICBjdXJyZW50X2J1aWxk
ZXJzW2NvbmZpZy5jdXJyZW50QnVpbGRlcl0gPSBjb25maWcua1BsYXRmb3Jtc1tjb25maWcuY3Vy
cmVudFBsYXRmb3JtXS5idWlsZGVyc1tjb25maWcuY3VycmVudEJ1aWxkZXJdOwotICAgICAgICBy
ZXR1cm4gY3VycmVudF9idWlsZGVyczsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gY29u
ZmlnLmtQbGF0Zm9ybXNbY29uZmlnLmN1cnJlbnRQbGF0Zm9ybV0uYnVpbGRlcnM7Ci0gICAgfQot
fTsKLQotY29uZmlnLmJ1aWxkZXJBcHBsaWVzID0gZnVuY3Rpb24oYnVpbGRlck5hbWUpIHsKLSAg
ICBpZiAoY29uZmlnLmN1cnJlbnRCdWlsZGVyKQotICAgICAgICByZXR1cm4gYnVpbGRlck5hbWUg
PT0gY29uZmlnLmN1cnJlbnRCdWlsZGVyOwotICAgIHJldHVybiBjb25maWcua1BsYXRmb3Jtc1tj
b25maWcuY3VycmVudFBsYXRmb3JtXS5fYnVpbGRlckFwcGxpZXMoYnVpbGRlck5hbWUpOwotfTsK
LQotY29uZmlnLnNldFBsYXRmb3JtID0gZnVuY3Rpb24ocGxhdGZvcm0pIHsKLSAgICBpZiAoIXRo
aXMua1BsYXRmb3Jtc1twbGF0Zm9ybV0pIHsKLSAgICAgICAgd2luZG93LmNvbnNvbGUubG9nKHBs
YXRmb3JtICsgJyBpcyBub3QgYSByZWNvZ25pemVkIHBsYXRmb3JtJyk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY29uZmlnLmN1cnJlbnRQbGF0Zm9ybSA9IHBsYXRmb3JtOwotfTsKLQot
Y29uZmlnLnVzZUxvY2FsUmVzdWx0cyA9IEJvb2xlYW4oYmFzZS5nZXRVUkxQYXJhbWV0ZXIoJ3Vz
ZUxvY2FsUmVzdWx0cycpKSB8fCBmYWxzZTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9jb250cm9sbGVycy9yZWJhc2VsaW5lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9jb250cm9sbGVycy9yZWJhc2VsaW5lLmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9D
SVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L3NjcmlwdHMvY29udHJvbGxlcnMvcmViYXNlbGluZS5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDQw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1bmN0aW9uKCkgewotCi0kKGZ1bmN0aW9uKCkgewot
ICAgIG1vZGVsLnVwZGF0ZVJlc3VsdHNCeUJ1aWxkZXIoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZh
ciByZXN1bHRzVmlldyA9IG5ldyB1aS5yZXN1bHRzLlZpZXcoewotICAgICAgICAgICAgZmV0Y2hS
ZXN1bHRzVVJMczogcmVzdWx0cy5mZXRjaFJlc3VsdHNVUkxzCi0gICAgICAgIH0pOwotCi0gICAg
ICAgIHZhciBmYWlsdXJlc0J5VGVzdCA9IHJlc3VsdHMuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCht
b2RlbC5zdGF0ZS5yZXN1bHRzQnlCdWlsZGVyKTsKLSAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBu
ZXcgY29udHJvbGxlcnMuUmVzdWx0c0RldGFpbHMocmVzdWx0c1ZpZXcsIGZhaWx1cmVzQnlUZXN0
KTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyZXN1bHRzVmlldyk7Ci0gICAg
fSk7Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jb250cm9sbGVycy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY29udHJvbGxlcnMuanMJKHJldmlzaW9uIDI2
OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jb250cm9sbGVycy5qcwkobm9uZXhpc3RlbnQpCkBA
IC0xLDM0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXZhciBjb250cm9sbGVycyA9IGNvbnRyb2xs
ZXJzIHx8IHt9OwotCi0oZnVuY3Rpb24oKXsKLQotdmFyIGtDaGVja291dFVuYXZhaWxhYmxlTWVz
c2FnZSA9ICdGYWlsZWQhIEdhcmRlbi1vLW1hdGljIG5lZWRzIGEgbG9jYWwgc2VydmVyIHRvIG1v
ZGlmeSB5b3VyIHdvcmtpbmcgY29weS4gUGxlYXNlIHJ1biAid2Via2l0LXBhdGNoIGdhcmRlbi1v
LW1hdGljIiBzdGFydCB0aGUgbG9jYWwgc2VydmVyLic7Ci0KLS8vIEZJWE1FOiBXaGVyZSBzaG91
bGQgdGhpcyBmdW5jdGlvbiBnbz8KLWZ1bmN0aW9uIHJlYmFzZWxpbmVXaXRoU3RhdHVzVXBkYXRl
cyhmYWlsdXJlSW5mb0xpc3QsIHJlc3VsdHNCeVRlc3QpCi17Ci0gICAgdmFyIHN0YXR1c1ZpZXcg
PSBuZXcgdWkuU3RhdHVzQXJlYSgnUmViYXNlbGluZScpOwotICAgIHZhciBpZCA9IHN0YXR1c1Zp
ZXcubmV3SWQoKTsKLQotICAgIHZhciBmYWlsdXJlc1RvUmViYXNlbGluZSA9IFtdOwotICAgIHZh
ciB0ZXN0TmFtZXNMb2dnZWQgPSBbXTsKLSAgICBmYWlsdXJlSW5mb0xpc3QuZm9yRWFjaChmdW5j
dGlvbihmYWlsdXJlSW5mbykgewotICAgICAgICBpZiAoaXNBbnlSZWZ0ZXN0KGZhaWx1cmVJbmZv
LnRlc3ROYW1lLCByZXN1bHRzQnlUZXN0KSkgewotICAgICAgICAgICAgaWYgKHRlc3ROYW1lc0xv
Z2dlZC5pbmRleE9mKGZhaWx1cmVJbmZvLnRlc3ROYW1lKSA9PSAtMSkgewotICAgICAgICAgICAg
ICAgIHN0YXR1c1ZpZXcuYWRkTWVzc2FnZShpZCwgZmFpbHVyZUluZm8udGVzdE5hbWUgKyAnIGlz
IGEgcmVmIHRlc3QsIHNraXBwaW5nJyk7Ci0gICAgICAgICAgICAgICAgdGVzdE5hbWVzTG9nZ2Vk
LnB1c2goZmFpbHVyZUluZm8udGVzdE5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgZmFpbHVyZXNUb1JlYmFzZWxpbmUucHVzaChmYWlsdXJlSW5mbyk7
Ci0gICAgICAgICAgICBpZiAodGVzdE5hbWVzTG9nZ2VkLmluZGV4T2YoZmFpbHVyZUluZm8udGVz
dE5hbWUpID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgc3RhdHVzVmlldy5hZGRNZXNzYWdlKGlk
LCAnUmViYXNlbGluaW5nICcgKyBmYWlsdXJlSW5mby50ZXN0TmFtZSArICcuLi4nKTsKLSAgICAg
ICAgICAgICAgICB0ZXN0TmFtZXNMb2dnZWQucHVzaChmYWlsdXJlSW5mby50ZXN0TmFtZSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICAKLSAgICBpZiAoZmFpbHVyZXNU
b1JlYmFzZWxpbmUubGVuZ3RoKSB7Ci0gICAgICAgIGNoZWNrb3V0LnJlYmFzZWxpbmUoZmFpbHVy
ZXNUb1JlYmFzZWxpbmUsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgc3RhdHVzVmlldy5hZGRG
aW5hbE1lc3NhZ2UoaWQsICdSZWJhc2VsaW5lIGRvbmUhIFBsZWFzZSBsYW5kIHdpdGggIndlYmtp
dC1wYXRjaCBsYW5kLWNvd2hhbmQiLicpOwotICAgICAgICB9LCBmdW5jdGlvbihmYWlsdXJlSW5m
bykgewotICAgICAgICAgICAgc3RhdHVzVmlldy5hZGRNZXNzYWdlKGlkLCBmYWlsdXJlSW5mby50
ZXN0TmFtZSArICcgb24gJyArIHVpLmRpc3BsYXlOYW1lRm9yQnVpbGRlcihmYWlsdXJlSW5mby5i
dWlsZGVyTmFtZSkpOwotICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHN0YXR1
c1ZpZXcuYWRkRmluYWxNZXNzYWdlKGlkLCBrQ2hlY2tvdXRVbmF2YWlsYWJsZU1lc3NhZ2UpOwot
ICAgICAgICB9KTsKLSAgICB9IGVsc2UgewotICAgICAgICBzdGF0dXNWaWV3LmFkZEZpbmFsTWVz
c2FnZShpZCwgJ05vIG5vbi1yZWZ0ZXN0cyBsZWZ0IHRvIHJlYmFzZWxpbmUhJykKLSAgICB9Ci19
Ci0KLS8vIEZJWE1FOiBUaGlzIGlzIGR1cGxpY2F0ZWQgZnJvbSB1aS9yZXN1bHRzLmpzIDooLgot
ZnVuY3Rpb24gaXNBbnlSZWZ0ZXN0KHRlc3ROYW1lLCByZXN1bHRzQnlUZXN0KQotewotICAgIHJl
dHVybiBPYmplY3Qua2V5cyhyZXN1bHRzQnlUZXN0W3Rlc3ROYW1lXSkubWFwKGZ1bmN0aW9uKGJ1
aWxkZXIpIHsKLSAgICAgICAgcmV0dXJuIHJlc3VsdHNCeVRlc3RbdGVzdE5hbWVdW2J1aWxkZXJd
OwotICAgIH0pLnNvbWUoZnVuY3Rpb24ocmVzdWx0Tm9kZSkgewotICAgICAgICByZXR1cm4gcmVz
dWx0Tm9kZS5yZWZ0ZXN0X3R5cGUgJiYgcmVzdWx0Tm9kZS5yZWZ0ZXN0X3R5cGUubGVuZ3RoOwot
ICAgIH0pOwotfQotCi0vLyBGSVhNRTogV2hlcmUgc2hvdWxkIHRoaXMgZnVuY3Rpb24gZ28/Ci1m
dW5jdGlvbiB1cGRhdGVFeHBlY3RhdGlvbnNXaXRoU3RhdHVzVXBkYXRlcyhmYWlsdXJlSW5mb0xp
c3QpCi17Ci0gICAgdmFyIHN0YXR1c1ZpZXcgPSBuZXcgdWkuU3RhdHVzQXJlYSgnRXhwZWN0YXRp
b25zIFVwZGF0ZScpOwotICAgIHZhciBpZCA9IHN0YXR1c1ZpZXcubmV3SWQoKTsKLQotICAgIHZh
ciB0ZXN0TmFtZXMgPSBiYXNlLnVuaXF1aWZ5QXJyYXkoZmFpbHVyZUluZm9MaXN0Lm1hcChmdW5j
dGlvbihmYWlsdXJlSW5mbykgeyByZXR1cm4gZmFpbHVyZUluZm8udGVzdE5hbWU7IH0pKTsKLSAg
ICB2YXIgdGVzdE5hbWUgPSB0ZXN0TmFtZXMubGVuZ3RoID09IDEgPyB0ZXN0TmFtZXNbMF0gOiB0
ZXN0TmFtZXMubGVuZ3RoICsgJyB0ZXN0cyc7Ci0gICAgc3RhdHVzVmlldy5hZGRNZXNzYWdlKGlk
LCAnVXBkYXRpbmcgZXhwZWN0YXRpb25zIG9mICcgKyB0ZXN0TmFtZSArICcuLi4nKTsKLQotICAg
IGNoZWNrb3V0LnVwZGF0ZUV4cGVjdGF0aW9ucyhmYWlsdXJlSW5mb0xpc3QsIGZ1bmN0aW9uKCkg
ewotICAgICAgICBzdGF0dXNWaWV3LmFkZEZpbmFsTWVzc2FnZShpZCwgJ0V4cGVjdGF0aW9ucyB1
cGRhdGUgZG9uZSEgUGxlYXNlIGxhbmQgd2l0aCAid2Via2l0LXBhdGNoIGxhbmQtY293aGFuZCIu
Jyk7Ci0gICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHN0YXR1c1ZpZXcuYWRkRmluYWxNZXNz
YWdlKGlkLCBrQ2hlY2tvdXRVbmF2YWlsYWJsZU1lc3NhZ2UpOwotICAgIH0pOwotfQotCi1jb250
cm9sbGVycy5SZXN1bHRzRGV0YWlscyA9IGJhc2UuZXh0ZW5kcyhPYmplY3QsIHsKLSAgICBpbml0
OiBmdW5jdGlvbih2aWV3LCByZXN1bHRzQnlUZXN0KQotICAgIHsKLSAgICAgICAgdGhpcy5fdmll
dyA9IHZpZXc7Ci0gICAgICAgIHRoaXMuX3Jlc3VsdHNCeVRlc3QgPSByZXN1bHRzQnlUZXN0Owot
ICAgICAgICB0aGlzLl92aWV3LnNldFJlc3VsdHNCeVRlc3QocmVzdWx0c0J5VGVzdCk7Ci0KLSAg
ICAgICAgdGhpcy5fdmlldy5maXJzdFJlc3VsdCgpOwotCi0gICAgICAgICQodGhpcy5fdmlldyku
YmluZCgnbmV4dCcsIHRoaXMub25OZXh0LmJpbmQodGhpcykpOwotICAgICAgICAkKHRoaXMuX3Zp
ZXcpLmJpbmQoJ3ByZXZpb3VzJywgdGhpcy5vblByZXZpb3VzLmJpbmQodGhpcykpOwotICAgICAg
ICAkKHRoaXMuX3ZpZXcpLmJpbmQoJ3JlYmFzZWxpbmUnLCB0aGlzLm9uUmViYXNlbGluZS5iaW5k
KHRoaXMpKTsKLSAgICAgICAgJCh0aGlzLl92aWV3KS5iaW5kKCdleHBlY3RmYWlsdXJlJywgdGhp
cy5vblVwZGF0ZUV4cGVjdGF0aW9ucy5iaW5kKHRoaXMpKTsKLSAgICB9LAotICAgIG9uTmV4dDog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fdmlldy5uZXh0UmVzdWx0KCk7Ci0gICAg
fSwKLSAgICBvblByZXZpb3VzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl92aWV3
LnByZXZpb3VzUmVzdWx0KCk7Ci0gICAgfSwKLSAgICBfZmFpbHVyZUluZm9MaXN0OiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICB2YXIgdGVzdE5hbWUgPSB0aGlzLl92aWV3LmN1cnJlbnRUZXN0
TmFtZSgpOwotICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fcmVzdWx0c0J5VGVzdFt0
ZXN0TmFtZV0pLm1hcChmdW5jdGlvbihidWlsZGVyTmFtZSkgewotICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdHMuZmFpbHVyZUluZm9Gb3JUZXN0QW5kQnVpbGRlcih0aGlzLl9yZXN1bHRzQnlUZXN0
LCB0ZXN0TmFtZSwgYnVpbGRlck5hbWUpOwotICAgICAgICB9LmJpbmQodGhpcykpOwotICAgIH0s
Ci0gICAgb25SZWJhc2VsaW5lOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZWJhc2VsaW5l
V2l0aFN0YXR1c1VwZGF0ZXModGhpcy5fZmFpbHVyZUluZm9MaXN0KCksIHRoaXMuX3Jlc3VsdHNC
eVRlc3QpOwotICAgICAgICB0aGlzLl92aWV3Lm5leHRUZXN0KCk7Ci0gICAgfSwKLSAgICBvblVw
ZGF0ZUV4cGVjdGF0aW9uczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdXBkYXRlRXhwZWN0
YXRpb25zV2l0aFN0YXR1c1VwZGF0ZXModGhpcy5fZmFpbHVyZUluZm9MaXN0KCkpOwotICAgIH0K
LX0pOwotCi1jb250cm9sbGVycy5FeHBlY3RlZEZhaWx1cmVzID0gYmFzZS5leHRlbmRzKE9iamVj
dCwgewotICAgIGluaXQ6IGZ1bmN0aW9uKG1vZGVsLCB2aWV3LCBkZWxlZ2F0ZSkKLSAgICB7Ci0g
ICAgICAgIHRoaXMuX21vZGVsID0gbW9kZWw7Ci0gICAgICAgIHRoaXMuX3ZpZXcgPSB2aWV3Owot
ICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIH0sCi0gICAgdXBkYXRlOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgZXhwZWN0ZWRGYWlsdXJlcyA9IHJlc3VsdHMu
ZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCh0aGlzLl9tb2RlbC5yZXN1bHRzQnlCdWlsZGVyKTsKLSAg
ICAgICAgdmFyIGZhaWxpbmdUZXN0c0xpc3QgPSBPYmplY3Qua2V5cyhleHBlY3RlZEZhaWx1cmVz
KTsKLQotICAgICAgICAkKHRoaXMuX3ZpZXcpLmVtcHR5KCk7Ci0gICAgICAgIGJhc2UuZm9yRWFj
aERpcmVjdG9yeShmYWlsaW5nVGVzdHNMaXN0LCBmdW5jdGlvbihsYWJlbCwgdGVzdHNGYWlsaW5n
SW5EaXJlY3RvcnkpIHsKLSAgICAgICAgICAgIHZhciBsaXN0SXRlbSA9IG5ldyB1aS5mYWlsdXJl
cy5MaXN0SXRlbShsYWJlbCwgdGVzdHNGYWlsaW5nSW5EaXJlY3RvcnkpOwotICAgICAgICAgICAg
dGhpcy5fdmlldy5hcHBlbmRDaGlsZChsaXN0SXRlbSk7Ci0gICAgICAgICAgICAkKGxpc3RJdGVt
KS5iaW5kKCdleGFtaW5lJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5vbkV4
YW1pbmUodGVzdHNGYWlsaW5nSW5EaXJlY3RvcnkpOwotICAgICAgICAgICAgfS5iaW5kKHRoaXMp
KTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotICAgIG9uRXhhbWluZTogZnVuY3Rp
b24oZmFpbGluZ1Rlc3RzTGlzdCkKLSAgICB7Ci0gICAgICAgIHZhciByZXN1bHRzVmlldyA9IG5l
dyB1aS5yZXN1bHRzLlZpZXcoewotICAgICAgICAgICAgZmV0Y2hSZXN1bHRzVVJMczogcmVzdWx0
cy5mZXRjaFJlc3VsdHNVUkxzCi0gICAgICAgIH0pOwotICAgICAgICB2YXIgZmFpbHVyZXNCeVRl
c3QgPSBiYXNlLmZpbHRlckRpY3Rpb25hcnkoCi0gICAgICAgICAgICByZXN1bHRzLmV4cGVjdGVk
RmFpbHVyZXNCeVRlc3QodGhpcy5fbW9kZWwucmVzdWx0c0J5QnVpbGRlciksCi0gICAgICAgICAg
ICBmdW5jdGlvbihrZXkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFpbGluZ1Rlc3RzTGlz
dC5pbmRleE9mKGtleSkgIT0gLTE7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgdmFyIGNvbnRy
b2xsZXIgPSBuZXcgY29udHJvbGxlcnMuUmVzdWx0c0RldGFpbHMocmVzdWx0c1ZpZXcsIGZhaWx1
cmVzQnlUZXN0KTsKLSAgICAgICAgdGhpcy5fZGVsZWdhdGUuc2hvd1Jlc3VsdHMocmVzdWx0c1Zp
ZXcpOwotICAgIH0KLX0pOwotCi12YXIgRmFpbHVyZVN0cmVhbUNvbnRyb2xsZXIgPSBiYXNlLmV4
dGVuZHMoT2JqZWN0LCB7Ci0gICAgX3Jlc3VsdHNGaWx0ZXI6IG51bGwsCi0gICAgX2tleUZvcjog
ZnVuY3Rpb24oZmFpbHVyZUFuYWx5c2lzKSB7IHRocm93ICJOb3QgaW1wbGVtZW50ZWQhIjsgfSwK
LSAgICBfY3JlYXRlRmFpbHVyZVZpZXc6IGZ1bmN0aW9uKGZhaWx1cmVBbmFseXNpcykgeyB0aHJv
dyAiTm90IGltcGxlbWVudGVkISI7IH0sCi0KLSAgICBpbml0OiBmdW5jdGlvbihtb2RlbCwgdmll
dywgZGVsZWdhdGUpCi0gICAgewotICAgICAgICB0aGlzLl9tb2RlbCA9IG1vZGVsOwotICAgICAg
ICB0aGlzLl92aWV3ID0gdmlldzsKLSAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
LSAgICAgICAgdGhpcy5fdGVzdEZhaWx1cmVzID0gbmV3IGJhc2UuVXBkYXRlVHJhY2tlcigpOwot
ICAgIH0sCi0gICAgdXBkYXRlOiBmdW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpCi0gICAgewotICAg
ICAgICB2YXIga2V5ID0gdGhpcy5fa2V5Rm9yKGZhaWx1cmVBbmFseXNpcyk7Ci0gICAgICAgIHZh
ciBmYWlsdXJlID0gdGhpcy5fdGVzdEZhaWx1cmVzLmdldChrZXkpOwotICAgICAgICBpZiAoIWZh
aWx1cmUpIHsKLSAgICAgICAgICAgIGZhaWx1cmUgPSB0aGlzLl9jcmVhdGVGYWlsdXJlVmlldyhm
YWlsdXJlQW5hbHlzaXMpOwotICAgICAgICAgICAgdGhpcy5fdmlldy5hZGQoZmFpbHVyZSk7Ci0g
ICAgICAgICAgICAkKGZhaWx1cmUpLmJpbmQoJ2V4YW1pbmUnLCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgICAgICB0aGlzLm9uRXhhbWluZShmYWlsdXJlKTsKLSAgICAgICAgICAgIH0uYmluZCh0
aGlzKSk7Ci0gICAgICAgICAgICAkKGZhaWx1cmUpLmJpbmQoJ3JlYmFzZWxpbmUnLCBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICB0aGlzLm9uUmViYXNlbGluZShmYWlsdXJlKTsKLSAgICAg
ICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgICAgICAgICAkKGZhaWx1cmUpLmJpbmQoJ2V4cGVj
dGZhaWx1cmUnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB0aGlzLm9uVXBkYXRlRXhw
ZWN0YXRpb25zKGZhaWx1cmUpOwotICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICAgICAg
fQotICAgICAgICBmYWlsdXJlLmFkZEZhaWx1cmVBbmFseXNpcyhmYWlsdXJlQW5hbHlzaXMpOwot
ICAgICAgICB0aGlzLl90ZXN0RmFpbHVyZXMudXBkYXRlKGtleSwgZmFpbHVyZSk7Ci0gICAgICAg
IHJldHVybiBmYWlsdXJlOwotICAgIH0sCi0gICAgcHVyZ2U6IGZ1bmN0aW9uKCkgewotICAgICAg
ICB0aGlzLl90ZXN0RmFpbHVyZXMucHVyZ2UoZnVuY3Rpb24oZmFpbHVyZSkgewotICAgICAgICAg
ICAgZmFpbHVyZS5kaXNtaXNzKCk7Ci0gICAgICAgIH0pOwotICAgICAgICB0aGlzLl90ZXN0RmFp
bHVyZXMuZm9yRWFjaChmdW5jdGlvbihmYWlsdXJlKSB7Ci0gICAgICAgICAgICBmYWlsdXJlLnB1
cmdlKCk7Ci0gICAgICAgIH0pOwotICAgIH0sCi0gICAgb25FeGFtaW5lOiBmdW5jdGlvbihmYWls
dXJlcykKLSAgICB7Ci0gICAgICAgIHZhciByZXN1bHRzVmlldyA9IG5ldyB1aS5yZXN1bHRzLlZp
ZXcoewotICAgICAgICAgICAgZmV0Y2hSZXN1bHRzVVJMczogcmVzdWx0cy5mZXRjaFJlc3VsdHNV
UkxzCi0gICAgICAgIH0pOwotCi0gICAgICAgIHZhciB0ZXN0TmFtZUxpc3QgPSBmYWlsdXJlcy50
ZXN0TmFtZUxpc3QoKTsKLSAgICAgICAgdmFyIGZhaWx1cmVzQnlUZXN0ID0gYmFzZS5maWx0ZXJE
aWN0aW9uYXJ5KAotICAgICAgICAgICAgdGhpcy5fcmVzdWx0c0ZpbHRlcih0aGlzLl9tb2RlbC5y
ZXN1bHRzQnlCdWlsZGVyKSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGtleSkgewotICAgICAgICAg
ICAgICAgIHJldHVybiB0ZXN0TmFtZUxpc3QuaW5kZXhPZihrZXkpICE9IC0xOwotICAgICAgICAg
ICAgfSk7Ci0KLSAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBuZXcgY29udHJvbGxlcnMuUmVzdWx0
c0RldGFpbHMocmVzdWx0c1ZpZXcsIGZhaWx1cmVzQnlUZXN0KTsKLSAgICAgICAgdGhpcy5fZGVs
ZWdhdGUuc2hvd1Jlc3VsdHMocmVzdWx0c1ZpZXcpOwotICAgIH0sCi0gICAgX3RvRmFpbHVyZUlu
Zm9MaXN0OiBmdW5jdGlvbihmYWlsdXJlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBiYXNlLmZs
YXR0ZW5BcnJheShmYWlsdXJlcy50ZXN0TmFtZUxpc3QoKS5tYXAobW9kZWwudW5leHBlY3RlZEZh
aWx1cmVJbmZvRm9yVGVzdE5hbWUpKTsKLSAgICB9LAotICAgIG9uUmViYXNlbGluZTogZnVuY3Rp
b24oZmFpbHVyZXMpCi0gICAgewotICAgICAgICB2YXIgdGVzdE5hbWVMaXN0ID0gZmFpbHVyZXMu
dGVzdE5hbWVMaXN0KCk7Ci0gICAgICAgIHZhciBmYWlsdXJlc0J5VGVzdCA9IGJhc2UuZmlsdGVy
RGljdGlvbmFyeSgKLSAgICAgICAgICAgIHRoaXMuX3Jlc3VsdHNGaWx0ZXIodGhpcy5fbW9kZWwu
cmVzdWx0c0J5QnVpbGRlciksCi0gICAgICAgICAgICBmdW5jdGlvbihrZXkpIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdGVzdE5hbWVMaXN0LmluZGV4T2Yoa2V5KSAhPSAtMTsKLSAgICAgICAg
ICAgIH0pOwotCi0gICAgICAgIHJlYmFzZWxpbmVXaXRoU3RhdHVzVXBkYXRlcyh0aGlzLl90b0Zh
aWx1cmVJbmZvTGlzdChmYWlsdXJlcyksIGZhaWx1cmVzQnlUZXN0KTsKLSAgICB9LAotICAgIG9u
VXBkYXRlRXhwZWN0YXRpb25zOiBmdW5jdGlvbihmYWlsdXJlcykKLSAgICB7Ci0gICAgICAgIHVw
ZGF0ZUV4cGVjdGF0aW9uc1dpdGhTdGF0dXNVcGRhdGVzKHRoaXMuX3RvRmFpbHVyZUluZm9MaXN0
KGZhaWx1cmVzKSk7Ci0gICAgfQotfSk7Ci0KLWNvbnRyb2xsZXJzLlVuZXhwZWN0ZWRGYWlsdXJl
cyA9IGJhc2UuZXh0ZW5kcyhGYWlsdXJlU3RyZWFtQ29udHJvbGxlciwgewotICAgIF9yZXN1bHRz
RmlsdGVyOiByZXN1bHRzLnVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCwKLQotICAgIF9pbXBsaWVk
Rmlyc3RGYWlsaW5nUmV2aXNpb246IGZ1bmN0aW9uKGZhaWx1cmVBbmFseXNpcykKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBmYWlsdXJlQW5hbHlzaXMubmV3ZXN0UGFzc2luZ1JldmlzaW9uICsgMTsK
LSAgICB9LAotICAgIF9rZXlGb3I6IGZ1bmN0aW9uKGZhaWx1cmVBbmFseXNpcykKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBmYWlsdXJlQW5hbHlzaXMubmV3ZXN0UGFzc2luZ1JldmlzaW9uICsgIisi
ICsgZmFpbHVyZUFuYWx5c2lzLm9sZGVzdEZhaWxpbmdSZXZpc2lvbjsKLSAgICB9LAotICAgIF9j
cmVhdGVGYWlsdXJlVmlldzogZnVuY3Rpb24oZmFpbHVyZUFuYWx5c2lzKQotICAgIHsKLSAgICAg
ICAgdmFyIGZhaWx1cmUgPSBuZXcgdWkubm90aWZpY2F0aW9ucy5GYWlsaW5nVGVzdHNTdW1tYXJ5
KCk7Ci0gICAgICAgIG1vZGVsLmNvbW1pdERhdGFMaXN0Rm9yUmV2aXNpb25SYW5nZSh0aGlzLl9p
bXBsaWVkRmlyc3RGYWlsaW5nUmV2aXNpb24oZmFpbHVyZUFuYWx5c2lzKSwgZmFpbHVyZUFuYWx5
c2lzLm9sZGVzdEZhaWxpbmdSZXZpc2lvbikuZm9yRWFjaChmdW5jdGlvbihjb21taXREYXRhKSB7
Ci0gICAgICAgICAgICB2YXIgc3VzcGljaW91c0NvbW1pdCA9IGZhaWx1cmUuYWRkQ29tbWl0RGF0
YShjb21taXREYXRhKTsKLSAgICAgICAgICAgICQoc3VzcGljaW91c0NvbW1pdCkuYmluZCgncmV2
ZXJ0JywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5vblJldmVydChjb21taXRE
YXRhLnJldmlzaW9uLCBmYWlsdXJlLnRlc3ROYW1lTGlzdCgpKTsKLSAgICAgICAgICAgIH0uYmlu
ZCh0aGlzKSk7Ci0gICAgICAgICAgICAkKGZhaWx1cmUpLmJpbmQoJ2JsYW1lJywgZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5vbkJsYW1lKGZhaWx1cmUsIGNvbW1pdERhdGEpOwot
ICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICAgICAgfSwgdGhpcyk7Ci0KLSAgICAgICAg
cmV0dXJuIGZhaWx1cmU7Ci0gICAgfSwKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKGZhaWx1cmVBbmFs
eXNpcykKLSAgICB7Ci0gICAgICAgIHZhciBmYWlsdXJlID0gRmFpbHVyZVN0cmVhbUNvbnRyb2xs
ZXIucHJvdG90eXBlLnVwZGF0ZS5jYWxsKHRoaXMsIGZhaWx1cmVBbmFseXNpcyk7Ci0gICAgICAg
IGZhaWx1cmUudXBkYXRlQnVpbGRlclJlc3VsdHMobW9kZWwuYnVpbGRlcnNJbkZsaWdodEZvclJl
dmlzaW9uKHRoaXMuX2ltcGxpZWRGaXJzdEZhaWxpbmdSZXZpc2lvbihmYWlsdXJlQW5hbHlzaXMp
KSk7Ci0gICAgfSwKLSAgICBsZW5ndGg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl90ZXN0RmFpbHVyZXMubGVuZ3RoKCk7Ci0gICAgfSwKLSAgICBvbkJsYW1lOiBmdW5j
dGlvbihmYWlsdXJlLCBjb21taXREYXRhKQotICAgIHsKLSAgICAgICAgZmFpbHVyZS5waW5Ub0Nv
bW1pdERhdGEoY29tbWl0RGF0YSk7Ci0gICAgICAgICQoJy5hY3Rpb24nLCBmYWlsdXJlKS5lYWNo
KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXNuJ3QgdGhlIHJpZ2h0
IHdheSBvZiBmaW5kaW5nIGFuZCBkaXNhYmxpbmcgdGhpcyBhY3Rpb24uCi0gICAgICAgICAgICBp
ZiAodGhpcy50ZXh0Q29udGVudCA9PSAnQmxhbWUnKQotICAgICAgICAgICAgICAgIHRoaXMuZGlz
YWJsZWQgPSB0cnVlOwotICAgICAgICB9KTsKLSAgICB9LAotICAgIG9uUmV2ZXJ0OiBmdW5jdGlv
bihyZXZpc2lvbiwgdGVzdE5hbWVMaXN0KQotICAgIHsKLSAgICAgICAgY2hlY2tvdXQucmV2ZXJ0
KHJldmlzaW9uLCB1aS5yZXZlcnRSZWFzb25Gb3JUZXN0TmFtZUxpc3QodGVzdE5hbWVMaXN0KSwg
JC5ub29wLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2
ZSBhIGJldHRlciBlcnJvciBVSS4KLSAgICAgICAgICAgIGFsZXJ0KGtDaGVja291dFVuYXZhaWxh
YmxlTWVzc2FnZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLX0pOwotCi1jb250cm9sbGVycy5GYWls
dXJlcyA9IGJhc2UuZXh0ZW5kcyhGYWlsdXJlU3RyZWFtQ29udHJvbGxlciwgewotICAgIF9yZXN1
bHRzRmlsdGVyOiByZXN1bHRzLmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QsCi0KLSAgICBfa2V5Rm9y
OiBmdW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpCi0gICAgewotICAgICAgICByZXR1cm4gYmFzZS5k
aXJOYW1lKGZhaWx1cmVBbmFseXNpcy50ZXN0TmFtZSk7Ci0gICAgfSwKLSAgICBfY3JlYXRlRmFp
bHVyZVZpZXc6IGZ1bmN0aW9uKGZhaWx1cmVBbmFseXNpcykKLSAgICB7Ci0gICAgICAgIHJldHVy
biBuZXcgdWkubm90aWZpY2F0aW9ucy5GYWlsaW5nVGVzdHMoKTsKLSAgICB9LAotfSk7Ci0KLWNv
bnRyb2xsZXJzLkZhaWxpbmdCdWlsZGVycyA9IGJhc2UuZXh0ZW5kcyhPYmplY3QsIHsKLSAgICBp
bml0OiBmdW5jdGlvbih2aWV3LCBtZXNzYWdlKQotICAgIHsKLSAgICAgICAgdGhpcy5fdmlldyA9
IHZpZXc7Ci0gICAgICAgIHRoaXMuX21lc3NhZ2UgPSBtZXNzYWdlOwotICAgICAgICB0aGlzLl9u
b3RpZmljYXRpb24gPSBudWxsOwotICAgIH0sCi0gICAgaGFzRmFpbHVyZXM6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiAhIXRoaXMuX25vdGlmaWNhdGlvbjsKLSAgICB9LAotICAg
IHVwZGF0ZTogZnVuY3Rpb24oZmFpbHVyZXNMaXN0KQotICAgIHsKLSAgICAgICAgaWYgKE9iamVj
dC5rZXlzKGZhaWx1cmVzTGlzdCkubGVuZ3RoID09IDApIHsKLSAgICAgICAgICAgIGlmICh0aGlz
Ll9ub3RpZmljYXRpb24pIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb24uZGlz
bWlzcygpOwotICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbiA9IG51bGw7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCF0
aGlzLl9ub3RpZmljYXRpb24pIHsKLSAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbiA9IG5l
dyB1aS5ub3RpZmljYXRpb25zLkJ1aWxkZXJzRmFpbGluZyh0aGlzLl9tZXNzYWdlKTsKLSAgICAg
ICAgICAgIHRoaXMuX3ZpZXcuYWRkKHRoaXMuX25vdGlmaWNhdGlvbik7Ci0gICAgICAgIH0KLSAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm92aWRlIHJlZ3Jlc3Npb24gcmFuZ2VzIGZvciB0
aGUgZmFpbGluZyBidWlsZGVycy4KLSAgICAgICAgLy8gVGhpcyBkb2Vzbid0IHNlZW0gdG8gaGFw
cGVuIG9mdGVuIGVub3VnaCB0byB3b3JyeSB0b28gbXVjaCBhYm91dCB0aGF0LCBob3dldmVyLgot
ICAgICAgICB0aGlzLl9ub3RpZmljYXRpb24uc2V0RmFpbGluZ0J1aWxkZXJzKGZhaWx1cmVzTGlz
dCk7Ci0gICAgfQotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY29udHJvbGxl
cnNfdW5pdHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jb250cm9sbGVy
c191bml0dGVzdHMuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jb250
cm9sbGVyc191bml0dGVzdHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0oZnVuY3Rpb24gKCkgewotCi12YXIga0V4YW1wbGVSZXN1bHRzQnlCdWlsZGVy
ID0gewotICAgICJNb2NrIEJ1aWxkZXIiOiB1bml0dGVzdC5rRXhhbXBsZVJlc3VsdHNKU09OLAot
fTsKLQotbW9kdWxlKCJjb250cm9sbGVycyIpOwotCi10ZXN0KCJVbmV4cGVjdGVkRmFpbHVyZXMi
LCAzLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5ldHdvcmtTaW11bGF0
b3IoKTsKLQotICAgIHNpbXVsYXRvci5wcm9iZSA9IGZ1bmN0aW9uKCkgewotICAgIH07Ci0KLSAg
ICBzaW11bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIG1vY2tWaWV3ID0g
e307Ci0gICAgICAgIHZhciBtb2NrU3RhdGUgPSB7Ci0gICAgICAgICAgICByZXN1bHRzQnlCdWls
ZGVyOiBrRXhhbXBsZVJlc3VsdHNCeUJ1aWxkZXIKLSAgICAgICAgfTsKLSAgICAgICAgdmFyIGV4
cGVjdGVkUmVzdWx0c0J5VGVzdCA9IG51bGw7Ci0gICAgICAgIHZhciBtb2NrRGVsZWdhdGUgPSB7
Ci0gICAgICAgICAgICBzaG93UmVzdWx0czogZnVuY3Rpb24ocmVzdWx0c1ZpZXcpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgZGVlcEVxdWFsKHJlc3VsdHNWaWV3Ll9yZXN1bHRzQnlU
ZXN0LCBleHBlY3RlZFJlc3VsdHNCeVRlc3QpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIHZhciBjb250cm9sbGVyID0gY29udHJvbGxlcnMuVW5leHBlY3RlZEZhaWx1cmVzKG1v
Y2tTdGF0ZSwgbW9ja1ZpZXcsIG1vY2tEZWxlZ2F0ZSk7Ci0KLSAgICAgICAgdmFyIHRlc3ROYW1l
TGlzdCA9IG51bGw7Ci0gICAgICAgIHZhciBtb2NrRmFpbHVyZXMgPSB7Ci0gICAgICAgICAgICB0
ZXN0TmFtZUxpc3Q6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGVzdE5hbWVMaXN0OyB9Ci0gICAgICAg
IH07Ci0KLSAgICAgICAgdGVzdE5hbWVMaXN0ID0gWyJzY3JvbGxiYXJzL2N1c3RvbS1zY3JvbGxi
YXItd2l0aC1pbmNvbXBsZXRlLXN0eWxlLmh0bWwiXTsKLSAgICAgICAgZXhwZWN0ZWRSZXN1bHRz
QnlUZXN0ID0ge307Ci0gICAgICAgIGNvbnRyb2xsZXIub25FeGFtaW5lKG1vY2tGYWlsdXJlcyk7
Ci0KLSAgICAgICAgdGVzdE5hbWVMaXN0ID0gWyJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRt
bCJdOwotICAgICAgICBleHBlY3RlZFJlc3VsdHNCeVRlc3QgPSB7Ci0gICAgICAgICAgInVzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIjogewotICAgICAgICAgICAgIk1vY2sgQnVpbGRlciI6
IHsKLSAgICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1MiLAotICAgICAgICAgICAgICAiYWN0
dWFsIjogIlRFWFQiCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9OwotICAg
ICAgICBjb250cm9sbGVyLm9uRXhhbWluZShtb2NrRmFpbHVyZXMpOwotICAgIH0pOwotfSk7Ci0K
LXRlc3QoImNvbnRyb2xsZXJzLkZhaWxpbmdCdWlsZGVycyIsIDMsIGZ1bmN0aW9uKCkgewotICAg
IHZhciBNb2NrVmlldyA9IGJhc2UuZXh0ZW5kcygnZGl2JywgewotICAgICAgICBhZGQ6IGZ1bmN0
aW9uKG5vZGUpIHsKLSAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobm9kZSk7Ci0gICAgICAg
IH0KLSAgICB9KQotICAgIHZhciB2aWV3ID0gbmV3IE1vY2tWaWV3KCk7Ci0gICAgdmFyIGZhaWxp
bmdCdWlsZGVycyA9IG5ldyBjb250cm9sbGVycy5GYWlsaW5nQnVpbGRlcnModmlldywgJ2R1bW15
IG1lc3NhZ2UnKTsKLSAgICBvayghZmFpbGluZ0J1aWxkZXJzLmhhc0ZhaWx1cmVzKCkpOwotCi0g
ICAgZmFpbGluZ0J1aWxkZXJzLnVwZGF0ZSh7J0R1bW15QnVpbGRlcic6IFsnd2Via2l0X3Rlc3Rz
J119KTsKLSAgICBvayhmYWlsaW5nQnVpbGRlcnMuaGFzRmFpbHVyZXMoKSk7Ci0KLSAgICBlcXVh
bCh2aWV3Lm91dGVySFRNTCwgJzxkaXY+JyArCi0gICAgICAgICc8bGkgc3R5bGU9Im9wYWNpdHk6
IDA7ICI+JyArCi0gICAgICAgICAgICAnPGRpdiBjbGFzcz0iaG93Ij48dGltZSBjbGFzcz0icmVs
YXRpdmUiPjwvdGltZT48L2Rpdj4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJ3aGF0Ij4n
ICsKLSAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0icHJvYmxlbSI+ZHVtbXkgbWVzc2FnZTon
ICsKLSAgICAgICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iZWZmZWN0cyI+JyArCi0gICAgICAg
ICAgICAgICAgICAgICAgICAnPGxpIGNsYXNzPSJidWlsZGVyIj48YSBjbGFzcz0iZmFpbGluZy1i
dWlsZGVyIiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9w
L2Nocm9taXVtLndlYmtpdC93YXRlcmZhbGw/YnVpbGRlcj1EdW1teUJ1aWxkZXIiPicgKwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0idmVyc2lvbiI+RHVtbXlCdWls
ZGVyPC9zcGFuPjxzcGFuIGNsYXNzPSJmYWlsdXJlcyI+IHdlYmtpdF90ZXN0czwvc3Bhbj48L2E+
JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnPC9saT4nICsKLSAgICAgICAgICAgICAgICAg
ICAgJzwvdWw+JyArCi0gICAgICAgICAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAgICAgICAg
ICc8dWwgY2xhc3M9ImNhdXNlcyI+PC91bD4nICsKLSAgICAgICAgICAgICc8L2Rpdj4nICsKLSAg
ICAgICAgJzwvbGk+JyArCi0gICAgJzwvZGl2PicpCi19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xz
L0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9nYXJkZW4tby1tYXRpYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Njcmlw
dHMvZ2FyZGVuLW8tbWF0aWMuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9nYXJkZW4tby1tYXRpYy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE1MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLShmdW5jdGlvbigpIHsKLQotdmFyIGdfaW5mbyA9IG51bGw7Ci12YXIgZ19yZXZp
c2lvbkhpbnQgPSBudWxsOwotCi12YXIgZ191cGRhdGVUaW1lcklkID0gMDsKLXZhciBnX2J1aWxk
ZXJzRmFpbGluZyA9IG51bGw7Ci0KLXZhciBnX3VuZXhwZWN0ZWRGYWlsdXJlc0NvbnRyb2xsZXIg
PSBudWxsOwotdmFyIGdfZmFpbHVyZXNDb250cm9sbGVyID0gbnVsbDsKLQotdmFyIGdfbm9uTGF5
b3V0VGVzdEZhaWx1cmVCdWlsZGVycyA9IG51bGw7Ci0KLWZ1bmN0aW9uIHVwZGF0ZVBhcnR5VGlt
ZSgpCi17Ci0gICAgaWYgKCFnX3VuZXhwZWN0ZWRGYWlsdXJlc0NvbnRyb2xsZXIubGVuZ3RoKCkg
JiYgIWdfbm9uTGF5b3V0VGVzdEZhaWx1cmVCdWlsZGVycy5oYXNGYWlsdXJlcygpKQotICAgICAg
ICAkKCcjb25lYmFyJykuYWRkQ2xhc3MoJ3BhcnR5dGltZScpOwotICAgIGVsc2UKLSAgICAgICAg
JCgnI29uZWJhcicpLnJlbW92ZUNsYXNzKCdwYXJ0eXRpbWUnKTsKLX0KLQotZnVuY3Rpb24gdXBk
YXRlKCkKLXsKLSAgICBpZiAoZ19yZXZpc2lvbkhpbnQpCi0gICAgICAgIGdfcmV2aXNpb25IaW50
LmRpc21pc3MoKTsKLQotICAgIHZhciBndGVzdElmcmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoJyNjaHJvbWl1bS1ndGVzdHMgaWZyYW1lJyk7Ci0gICAgaWYgKGd0ZXN0SWZyYW1lKQotICAg
ICAgICBndGVzdElmcmFtZS5zcmMgPSBndGVzdElmcmFtZS5zcmM7Ci0KLSAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgYSBidXR0b24gd2l0aCBhIHByb2dyZXNzIGVsZW1lbnQuCi0gICAgdmFy
IG51bWJlck9mVGVzdHNBbmFseXplZCA9IDA7Ci0gICAgdmFyIHVwZGF0aW5nID0gbmV3IHVpLm5v
dGlmaWNhdGlvbnMuSW5mbygnTG9hZGluZyBjb21taXQgZGF0YSAuLi4nKTsKLQotICAgIGdfaW5m
by5hZGQodXBkYXRpbmcpOwotCi0gICAgYnVpbGRlcnMuYnVpbGRlcnNGYWlsaW5nTm9uTGF5b3V0
VGVzdHMoZnVuY3Rpb24oZmFpbHVyZXNMaXN0KSB7Ci0gICAgICAgIGdfbm9uTGF5b3V0VGVzdEZh
aWx1cmVCdWlsZGVycy51cGRhdGUoZmFpbHVyZXNMaXN0KTsKLSAgICAgICAgdXBkYXRlUGFydHlU
aW1lKCk7Ci0gICAgfSk7Ci0KLSAgICBiYXNlLmNhbGxJblBhcmFsbGVsKFttb2RlbC51cGRhdGVS
ZWNlbnRDb21taXRzLCBtb2RlbC51cGRhdGVSZXN1bHRzQnlCdWlsZGVyXSwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGlmIChnX2ZhaWx1cmVzQ29udHJvbGxlcikKLSAgICAgICAgICAgIGdfZmFpbHVy
ZXNDb250cm9sbGVyLnVwZGF0ZSgpOwotCi0gICAgICAgIHVwZGF0aW5nLnVwZGF0ZSgnQW5hbHl6
aW5nIHRlc3QgZmFpbHVyZXMgLi4uJyk7Ci0KLSAgICAgICAgbW9kZWwuYW5hbHl6ZVVuZXhwZWN0
ZWRGYWlsdXJlcyhmdW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpIHsKLSAgICAgICAgICAgIHVwZGF0
aW5nLnVwZGF0ZSgnQW5hbHl6aW5nIHRlc3QgZmFpbHVyZXMgLi4uICcgKyArK251bWJlck9mVGVz
dHNBbmFseXplZCArICcgdGVzdHMgYW5hbHl6ZWQuJyk7Ci0gICAgICAgICAgICBnX3VuZXhwZWN0
ZWRGYWlsdXJlc0NvbnRyb2xsZXIudXBkYXRlKGZhaWx1cmVBbmFseXNpcyk7Ci0gICAgICAgIH0s
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdXBkYXRlUGFydHlUaW1lKCk7Ci0gICAgICAgICAg
ICBnX3VuZXhwZWN0ZWRGYWlsdXJlc0NvbnRyb2xsZXIucHVyZ2UoKTsKLQotICAgICAgICAgICAg
T2JqZWN0LmtleXMoY29uZmlnLmN1cnJlbnRCdWlsZGVycygpKS5mb3JFYWNoKGZ1bmN0aW9uKGJ1
aWxkZXJOYW1lKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtb2RlbC5zdGF0ZS5yZXN1bHRzQnlC
dWlsZGVyW2J1aWxkZXJOYW1lXSkKLSAgICAgICAgICAgICAgICAgICAgZ19pbmZvLmFkZChuZXcg
dWkubm90aWZpY2F0aW9ucy5JbmZvKCdDb3VsZCBub3QgZmluZCB0ZXN0IHJlc3VsdHMgZm9yICcg
KyBidWlsZGVyTmFtZSArICcgaW4gdGhlIGxhc3QgJyArIGNvbmZpZy5rQnVpbGROdW1iZXJMaW1p
dCArICcgcnVucy4nKSk7ICAgICAgICAgICAgCi0gICAgICAgICAgICB9KTsKLQotICAgICAgICAg
ICAgdXBkYXRpbmcuZGlzbWlzcygpOwotCi0gICAgICAgICAgICBnX3JldmlzaW9uSGludCA9IG5l
dyB1aS5ub3RpZmljYXRpb25zLkluZm8oJycpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB2
YXIgbGF0ZXN0UmV2aXNpb25TcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwot
ICAgICAgICAgICAgbGF0ZXN0UmV2aXNpb25TcGFuLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCdMYXRlc3QgcmV2aXNpb24gcHJvY2Vzc2VkIGJ5IGV2ZXJ5IGJvdDogJykpOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICB2YXIgbGF0ZXN0UmV2aXNpb24gPSBtb2RlbC5sYXRl
c3RSZXZpc2lvbldpdGhOb0J1aWxkZXJzSW5GbGlnaHQoKTsKLSAgICAgICAgICAgIGxhdGVzdFJl
dmlzaW9uU3Bhbi5hcHBlbmRDaGlsZChiYXNlLmNyZWF0ZUxpbmtOb2RlKHRyYWMuY2hhbmdlc2V0
VVJMKGxhdGVzdFJldmlzaW9uKSwgbGF0ZXN0UmV2aXNpb24pKTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgdmFyIHRvdFJldmlzaW9uID0gbW9kZWwubGF0ZXN0UmV2aXNpb24oKTsKLSAgICAg
ICAgICAgIGxhdGVzdFJldmlzaW9uU3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnICh0cnVuayBpcyBhdCAnKSk7Ci0gICAgICAgICAgICBsYXRlc3RSZXZpc2lvblNwYW4u
YXBwZW5kQ2hpbGQoYmFzZS5jcmVhdGVMaW5rTm9kZSh0cmFjLmNoYW5nZXNldFVSTCh0b3RSZXZp
c2lvbiksIHRvdFJldmlzaW9uKSk7Ci0gICAgICAgICAgICBsYXRlc3RSZXZpc2lvblNwYW4uYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJyknKSk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGdfcmV2aXNpb25IaW50LnVwZGF0ZVdpdGhOb2RlKGxhdGVzdFJldmlzaW9uU3Bh
bik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGdfaW5mby5hZGQoZ19yZXZpc2lvbkhpbnQp
OwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24o
KSB7Ci0gICAgZ191cGRhdGVUaW1lcklkID0gd2luZG93LnNldEludGVydmFsKHVwZGF0ZSwgY29u
ZmlnLmtVcGRhdGVGcmVxdWVuY3kpOwotCi0gICAgcGl4ZWx6b29tZXIuaW5zdGFsbEV2ZW50TGlz
dGVuZXJzKCk7Ci0KLSAgICBvbmViYXIgPSBuZXcgdWkub25lYmFyKCk7Ci0gICAgb25lYmFyLmF0
dGFjaCgpOwotCi0gICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBiZWxvbmcgaGVyZS4KLSAgICB2
YXIgb25lYmFyQ29udHJvbGxlciA9IHsKLSAgICAgICAgc2hvd1Jlc3VsdHM6IGZ1bmN0aW9uKHJl
c3VsdHNWaWV3KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0c0NvbnRhaW5lciA9
IG9uZWJhci5yZXN1bHRzKCk7Ci0gICAgICAgICAgICAkKHJlc3VsdHNDb250YWluZXIpLmVtcHR5
KCkuYXBwZW5kKHJlc3VsdHNWaWV3KTsKLSAgICAgICAgICAgIG9uZWJhci5zZWxlY3QoJ3Jlc3Vs
dHMnKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB2YXIgdW5leHBlY3RlZEZhaWx1cmVzVmll
dyA9IG5ldyB1aS5ub3RpZmljYXRpb25zLlN0cmVhbSgpOwotICAgIGdfdW5leHBlY3RlZEZhaWx1
cmVzQ29udHJvbGxlciA9IG5ldyBjb250cm9sbGVycy5VbmV4cGVjdGVkRmFpbHVyZXMobW9kZWwu
c3RhdGUsIHVuZXhwZWN0ZWRGYWlsdXJlc1ZpZXcsIG9uZWJhckNvbnRyb2xsZXIpOwotCi0gICAg
Z19pbmZvID0gbmV3IHVpLm5vdGlmaWNhdGlvbnMuU3RyZWFtKCk7Ci0gICAgZ19ub25MYXlvdXRU
ZXN0RmFpbHVyZUJ1aWxkZXJzID0gbmV3IGNvbnRyb2xsZXJzLkZhaWxpbmdCdWlsZGVycyhnX2lu
Zm8sICdOb24tbGF5b3V0IHRlc3QgZmFpbHVyZXMnKTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSBhbiBBY3Rpb24gb2JqZWN0LgotICAgIHZhciB1cGRhdGVCdXR0b24gPSBkb2N1bWVu
dC5ib2R5Lmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKSwgZG9j
dW1lbnQuYm9keS5maXJzdENoaWxkKTsKLSAgICB1cGRhdGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB1cGRhdGUpOwotICAgIHVwZGF0ZUJ1dHRvbi50ZXh0Q29udGVudCA9ICd1cGRh
dGUnOwotCi0gICAgdmFyIHVuZXhwZWN0ZWQgPSBvbmViYXIudW5leHBlY3RlZCgpOwotICAgIHVu
ZXhwZWN0ZWQuYXBwZW5kQ2hpbGQodXBkYXRlQnV0dG9uKTsKLSAgICB1bmV4cGVjdGVkLmFwcGVu
ZENoaWxkKGdfaW5mbyk7Ci0gICAgdW5leHBlY3RlZC5hcHBlbmRDaGlsZCh1bmV4cGVjdGVkRmFp
bHVyZXNWaWV3KTsKLQotICAgIHZhciBleHBlY3RlZCA9IG9uZWJhci5leHBlY3RlZCgpOwotICAg
IGlmIChleHBlY3RlZCkgewotICAgICAgICB2YXIgZmFpbHVyZXNWaWV3ID0gbmV3IHVpLmZhaWx1
cmVzLkxpc3QoKTsKLSAgICAgICAgZ19mYWlsdXJlc0NvbnRyb2xsZXIgPSBuZXcgY29udHJvbGxl
cnMuRXhwZWN0ZWRGYWlsdXJlcyhtb2RlbC5zdGF0ZSwgZmFpbHVyZXNWaWV3LCBvbmViYXJDb250
cm9sbGVyKTsKLSAgICAgICAgZXhwZWN0ZWQuYXBwZW5kQ2hpbGQoZmFpbHVyZXNWaWV3KTsKLSAg
ICB9Ci0KLSAgICBvbmViYXIucGVyZigpLmFwcGVuZENoaWxkKG5ldyB1aS5wZXJmLlZpZXcoKSk7
Ci0KLSAgICB1cGRhdGUoKTsKLX0pOwotCi19KSgpOwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9v
bHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9zY3JpcHRzL2dhcmRlbi1vLW1hdGljLmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVv
bC1zdHlsZQojIyAtMSArMCwwICMjCi1MRgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvbW9kZWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL21vZGVsLmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvbW9k
ZWwuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIg
bW9kZWwgPSBtb2RlbCB8fCB7fTsKLQotKGZ1bmN0aW9uICgpIHsKLQotdmFyIGtDb21taXRMb2dM
ZW5ndGggPSA1MDsKLQotbW9kZWwuc3RhdGUgPSB7fTsKLW1vZGVsLnN0YXRlLmZhaWx1cmVBbmFs
eXNpc0J5VGVzdCA9IHt9OwotbW9kZWwuc3RhdGUucmViYXNlbGluZVF1ZXVlID0gW107Ci1tb2Rl
bC5zdGF0ZS5leHBlY3RhdGlvbnNVcGRhdGVRdWV1ZSA9IFtdOwotCi1mdW5jdGlvbiBmaW5kQW5k
TWFya1JldmVydGVkUmV2aXNpb25zKGNvbW1pdERhdGFMaXN0KQotewotICAgIHZhciByZXZlcnRl
ZFJldmlzaW9ucyA9IHt9OwotICAgICQuZWFjaChjb21taXREYXRhTGlzdCwgZnVuY3Rpb24oaW5k
ZXgsIGNvbW1pdERhdGEpIHsKLSAgICAgICAgaWYgKGNvbW1pdERhdGEucmV2ZXJ0ZWRSZXZpc2lv
bikKLSAgICAgICAgICAgIHJldmVydGVkUmV2aXNpb25zW2NvbW1pdERhdGEucmV2ZXJ0ZWRSZXZp
c2lvbl0gPSB0cnVlOwotICAgIH0pOwotICAgICQuZWFjaChjb21taXREYXRhTGlzdCwgZnVuY3Rp
b24oaW5kZXgsIGNvbW1pdERhdGEpIHsKLSAgICAgICAgaWYgKGNvbW1pdERhdGEucmV2aXNpb24g
aW4gcmV2ZXJ0ZWRSZXZpc2lvbnMpCi0gICAgICAgICAgICBjb21taXREYXRhLndhc1JldmVydGVk
ID0gdHJ1ZTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gZnV6enlGaW5kKHRlc3ROYW1lLCBjb21t
aXREYXRhKQotewotICAgIHZhciBpbmRleE9mTGFzdERvdCA9IHRlc3ROYW1lLmxhc3RJbmRleE9m
KCcuJyk7Ci0gICAgdmFyIHN0ZW0gPSBpbmRleE9mTGFzdERvdCA9PSAtMSA/IHRlc3ROYW1lIDog
dGVzdE5hbWUuc3Vic3RyKDAsIGluZGV4T2ZMYXN0RG90KTsKLSAgICByZXR1cm4gY29tbWl0RGF0
YS5tZXNzYWdlLmluZGV4T2Yoc3RlbSkgIT0gLTE7Ci19Ci0KLWZ1bmN0aW9uIGhldXJpc3RpY2Fs
bHlOYXJyb3dSZWdyZXNzaW9uUmFuZ2UoZmFpbHVyZUFuYWx5c2lzKQotewotICAgIHZhciBjb21t
aXREYXRhTGlzdCA9IG1vZGVsLnN0YXRlLnJlY2VudENvbW1pdHM7Ci0gICAgdmFyIGNvbW1pdERh
dGFJbmRleCA9IGNvbW1pdERhdGFMaXN0Lmxlbmd0aCAtIDE7Ci0KLSAgICBmb3IodmFyIHJldmlz
aW9uID0gZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiArIDE7IHJldmlzaW9u
IDw9IGZhaWx1cmVBbmFseXNpcy5vbGRlc3RGYWlsaW5nUmV2aXNpb247ICsrcmV2aXNpb24pIHsK
LSAgICAgICAgd2hpbGUgKGNvbW1pdERhdGFJbmRleCA+PSAwICYmIGNvbW1pdERhdGFMaXN0W2Nv
bW1pdERhdGFJbmRleF0ucmV2aXNpb24gPCByZXZpc2lvbikKLSAgICAgICAgICAgIC0tY29tbWl0
RGF0YUluZGV4OwotICAgICAgICB2YXIgY29tbWl0RGF0YSA9IGNvbW1pdERhdGFMaXN0W2NvbW1p
dERhdGFJbmRleF07Ci0gICAgICAgIGlmIChjb21taXREYXRhLnJldmlzaW9uICE9IHJldmlzaW9u
KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChmdXp6eUZpbmQoZmFpbHVyZUFu
YWx5c2lzLnRlc3ROYW1lLCBjb21taXREYXRhKSkgewotICAgICAgICAgICAgZmFpbHVyZUFuYWx5
c2lzLm9sZGVzdEZhaWxpbmdSZXZpc2lvbiA9IHJldmlzaW9uOwotICAgICAgICAgICAgZmFpbHVy
ZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiA9IHJldmlzaW9uIC0gMTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotbW9kZWwucXVldWVGb3JSZWJhc2Vs
aW5lID0gZnVuY3Rpb24oZmFpbHVyZUluZm8pCi17Ci0gICAgbW9kZWwuc3RhdGUucmViYXNlbGlu
ZVF1ZXVlLnB1c2goZmFpbHVyZUluZm8pOwotfTsKLQotbW9kZWwudGFrZVJlYmFzZWxpbmVRdWV1
ZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgcXVldWUgPSBtb2RlbC5zdGF0ZS5yZWJhc2VsaW5l
UXVldWU7Ci0gICAgbW9kZWwuc3RhdGUucmViYXNlbGluZVF1ZXVlID0gW107Ci0gICAgcmV0dXJu
IHF1ZXVlOwotfTsKLQotbW9kZWwucXVldWVGb3JFeHBlY3RhdGlvblVwZGF0ZSA9IGZ1bmN0aW9u
KGZhaWx1cmVJbmZvKQotewotICAgIG1vZGVsLnN0YXRlLmV4cGVjdGF0aW9uc1VwZGF0ZVF1ZXVl
LnB1c2goZmFpbHVyZUluZm8pOwotfTsKLQotbW9kZWwudGFrZUV4cGVjdGF0aW9uVXBkYXRlUXVl
dWUgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIHF1ZXVlID0gbW9kZWwuc3RhdGUuZXhwZWN0YXRp
b25zVXBkYXRlUXVldWU7Ci0gICAgbW9kZWwuc3RhdGUuZXhwZWN0YXRpb25zVXBkYXRlUXVldWUg
PSBbXTsKLSAgICByZXR1cm4gcXVldWU7Ci19OwotCi12YXIgZ19jb21taXRJbmRleCA9IHt9Owot
Ci1tb2RlbC51cGRhdGVSZWNlbnRDb21taXRzID0gZnVuY3Rpb24oY2FsbGJhY2spCi17Ci0gICAg
dHJhYy5yZWNlbnRDb21taXREYXRhKCd0cnVuaycsIGtDb21taXRMb2dMZW5ndGgsIGZ1bmN0aW9u
KGNvbW1pdERhdGFMaXN0KSB7Ci0gICAgICAgIG1vZGVsLnN0YXRlLnJlY2VudENvbW1pdHMgPSBj
b21taXREYXRhTGlzdDsKLSAgICAgICAgdXBkYXRlQ29tbWl0SW5kZXgoKTsKLSAgICAgICAgZmlu
ZEFuZE1hcmtSZXZlcnRlZFJldmlzaW9ucyhtb2RlbC5zdGF0ZS5yZWNlbnRDb21taXRzKTsKLSAg
ICAgICAgY2FsbGJhY2soKTsKLSAgICB9KTsKLX07Ci0KLWZ1bmN0aW9uIHVwZGF0ZUNvbW1pdElu
ZGV4KCkKLXsKLSAgICBtb2RlbC5zdGF0ZS5yZWNlbnRDb21taXRzLmZvckVhY2goZnVuY3Rpb24o
Y29tbWl0RGF0YSkgewotICAgICAgICBnX2NvbW1pdEluZGV4W2NvbW1pdERhdGEucmV2aXNpb25d
ID0gY29tbWl0RGF0YTsKLSAgICB9KTsKLX0KLQotbW9kZWwuY29tbWl0RGF0YUxpc3RGb3JSZXZp
c2lvblJhbmdlID0gZnVuY3Rpb24oZnJvbVJldmlzaW9uLCB0b1JldmlzaW9uKQotewotICAgIHZh
ciByZXN1bHQgPSBbXTsKLSAgICBmb3IgKHZhciByZXZpc2lvbiA9IGZyb21SZXZpc2lvbjsgcmV2
aXNpb24gPD0gdG9SZXZpc2lvbjsgKytyZXZpc2lvbikgewotICAgICAgICB2YXIgY29tbWl0RGF0
YSA9IGdfY29tbWl0SW5kZXhbcmV2aXNpb25dOwotICAgICAgICBpZiAoY29tbWl0RGF0YSkKLSAg
ICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbW1pdERhdGEpOwotICAgIH0KLSAgICByZXR1cm4gcmVz
dWx0OwotfTsKLQotbW9kZWwuYnVpbGRlcnNJbkZsaWdodEZvclJldmlzaW9uID0gZnVuY3Rpb24o
cmV2aXNpb24pCi17Ci0gICAgdmFyIGJ1aWxkZXJzID0ge307Ci0gICAgT2JqZWN0LmtleXMobW9k
ZWwuc3RhdGUucmVzdWx0c0J5QnVpbGRlcikuZm9yRWFjaChmdW5jdGlvbihidWlsZGVyTmFtZSkg
ewotICAgICAgICB2YXIgcmVzdWx0cyA9IG1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1aWxkZXJbYnVp
bGRlck5hbWVdOwotICAgICAgICBpZiAocGFyc2VJbnQocmVzdWx0cy5yZXZpc2lvbikgPCByZXZp
c2lvbikKLSAgICAgICAgICAgIGJ1aWxkZXJzW2J1aWxkZXJOYW1lXSA9IHsgYWN0dWFsOiAnQlVJ
TERJTkcnIH07Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGJ1aWxkZXJzOwotfTsKLQotbW9kZWwubGF0
ZXN0UmV2aXNpb24gPSBmdW5jdGlvbigpCi17Ci0gICAgcmV0dXJuIG1vZGVsLnN0YXRlLnJlY2Vu
dENvbW1pdHNbMF0ucmV2aXNpb247Ci19Ci0KLW1vZGVsLmxhdGVzdFJldmlzaW9uV2l0aE5vQnVp
bGRlcnNJbkZsaWdodCA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgcmV2aXNpb24gPSAwOwotICAg
IE9iamVjdC5rZXlzKG1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1aWxkZXIpLmZvckVhY2goZnVuY3Rp
b24oYnVpbGRlck5hbWUpIHsKLSAgICAgICAgdmFyIHJlc3VsdHMgPSBtb2RlbC5zdGF0ZS5yZXN1
bHRzQnlCdWlsZGVyW2J1aWxkZXJOYW1lXTsKLSAgICAgICAgaWYgKCFyZXN1bHRzLnJldmlzaW9u
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgdGVzdGVkUmV2aXNpb24gPSBwYXJz
ZUludChyZXN1bHRzLnJldmlzaW9uKTsKLSAgICAgICAgcmV2aXNpb24gPSByZXZpc2lvbiA/IE1h
dGgubWluKHJldmlzaW9uLCB0ZXN0ZWRSZXZpc2lvbikgOiB0ZXN0ZWRSZXZpc2lvbjsKLSAgICB9
KTsKLSAgICByZXR1cm4gcmV2aXNpb247Ci19Ci0KLW1vZGVsLnVwZGF0ZVJlc3VsdHNCeUJ1aWxk
ZXIgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICB2YXIgcGxhdGZvcm1CdWlsZGVycyA9IGNv
bmZpZy5jdXJyZW50QnVpbGRlcnMoKTsKLSAgICByZXN1bHRzLmZldGNoUmVzdWx0c0J5QnVpbGRl
cihPYmplY3Qua2V5cyhwbGF0Zm9ybUJ1aWxkZXJzKSwgZnVuY3Rpb24ocmVzdWx0c0J5QnVpbGRl
cikgewotICAgICAgICBtb2RlbC5zdGF0ZS5yZXN1bHRzQnlCdWlsZGVyID0gcmVzdWx0c0J5QnVp
bGRlcjsKLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICB9KTsKLX07Ci0KLW1vZGVsLmFuYWx5emVV
bmV4cGVjdGVkRmFpbHVyZXMgPSBmdW5jdGlvbihjYWxsYmFjaywgY29tcGxldGlvbkNhbGxiYWNr
KQotewotICAgIHZhciB1bmV4cGVjdGVkRmFpbHVyZXMgPSByZXN1bHRzLnVuZXhwZWN0ZWRGYWls
dXJlc0J5VGVzdChtb2RlbC5zdGF0ZS5yZXN1bHRzQnlCdWlsZGVyKTsKLQotICAgICQuZWFjaCht
b2RlbC5zdGF0ZS5mYWlsdXJlQW5hbHlzaXNCeVRlc3QsIGZ1bmN0aW9uKHRlc3ROYW1lLCBmYWls
dXJlQW5hbHlzaXMpIHsKLSAgICAgICAgaWYgKCEodGVzdE5hbWUgaW4gdW5leHBlY3RlZEZhaWx1
cmVzKSkKLSAgICAgICAgICAgIGRlbGV0ZSBtb2RlbC5zdGF0ZS5mYWlsdXJlQW5hbHlzaXNCeVRl
c3RbdGVzdE5hbWVdOwotICAgIH0pOwotCi0gICAgdmFyIHRyYWNrZXIgPSBuZXcgYmFzZS5SZXF1
ZXN0VHJhY2tlcihPYmplY3Qua2V5cyh1bmV4cGVjdGVkRmFpbHVyZXMpLmxlbmd0aCwgY29tcGxl
dGlvbkNhbGxiYWNrKTsKLSAgICAkLmVhY2godW5leHBlY3RlZEZhaWx1cmVzLCBmdW5jdGlvbih0
ZXN0TmFtZSwgcmVzdWx0Tm9kZXNCeUJ1aWxkZXIpIHsKLSAgICAgICAgdmFyIGJ1aWxkZXJOYW1l
TGlzdCA9IE9iamVjdC5rZXlzKHJlc3VsdE5vZGVzQnlCdWlsZGVyKTsKLSAgICAgICAgcmVzdWx0
cy51bmlmeVJlZ3Jlc3Npb25SYW5nZXMoYnVpbGRlck5hbWVMaXN0LCB0ZXN0TmFtZSwgZnVuY3Rp
b24ob2xkZXN0RmFpbGluZ1JldmlzaW9uLCBuZXdlc3RQYXNzaW5nUmV2aXNpb24pIHsKLSAgICAg
ICAgICAgIHZhciBmYWlsdXJlQW5hbHlzaXMgPSB7Ci0gICAgICAgICAgICAgICAgJ3Rlc3ROYW1l
JzogdGVzdE5hbWUsCi0gICAgICAgICAgICAgICAgJ3Jlc3VsdE5vZGVzQnlCdWlsZGVyJzogcmVz
dWx0Tm9kZXNCeUJ1aWxkZXIsCi0gICAgICAgICAgICAgICAgJ29sZGVzdEZhaWxpbmdSZXZpc2lv
bic6IG9sZGVzdEZhaWxpbmdSZXZpc2lvbiwKLSAgICAgICAgICAgICAgICAnbmV3ZXN0UGFzc2lu
Z1JldmlzaW9uJzogbmV3ZXN0UGFzc2luZ1JldmlzaW9uLAotICAgICAgICAgICAgfTsKLQotICAg
ICAgICAgICAgaGV1cmlzdGljYWxseU5hcnJvd1JlZ3Jlc3Npb25SYW5nZShmYWlsdXJlQW5hbHlz
aXMpOwotCi0gICAgICAgICAgICB2YXIgcHJldmlvdXNGYWlsdXJlQW5hbHlzaXMgPSBtb2RlbC5z
dGF0ZS5mYWlsdXJlQW5hbHlzaXNCeVRlc3RbdGVzdE5hbWVdOwotICAgICAgICAgICAgaWYgKHBy
ZXZpb3VzRmFpbHVyZUFuYWx5c2lzCi0gICAgICAgICAgICAgICAgJiYgcHJldmlvdXNGYWlsdXJl
QW5hbHlzaXMub2xkZXN0RmFpbGluZ1JldmlzaW9uIDw9IGZhaWx1cmVBbmFseXNpcy5vbGRlc3RG
YWlsaW5nUmV2aXNpb24KLSAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0ZhaWx1cmVBbmFseXNp
cy5uZXdlc3RQYXNzaW5nUmV2aXNpb24gPj0gZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdS
ZXZpc2lvbikgewotICAgICAgICAgICAgICAgIGZhaWx1cmVBbmFseXNpcy5vbGRlc3RGYWlsaW5n
UmV2aXNpb24gPSBwcmV2aW91c0ZhaWx1cmVBbmFseXNpcy5vbGRlc3RGYWlsaW5nUmV2aXNpb247
Ci0gICAgICAgICAgICAgICAgZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiA9
IHByZXZpb3VzRmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lvbjsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgbW9kZWwuc3RhdGUuZmFpbHVyZUFuYWx5c2lzQnlUZXN0W3Rl
c3ROYW1lXSA9IGZhaWx1cmVBbmFseXNpczsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2Fs
bGJhY2soZmFpbHVyZUFuYWx5c2lzKTsKLSAgICAgICAgICAgIHRyYWNrZXIucmVxdWVzdENvbXBs
ZXRlKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfTsKLQotbW9kZWwudW5leHBlY3RlZEZhaWx1
cmVJbmZvRm9yVGVzdE5hbWUgPSBmdW5jdGlvbih0ZXN0TmFtZSkKLXsKLSAgICB2YXIgcmVzdWx0
c0J5VGVzdCA9IHJlc3VsdHMudW5leHBlY3RlZEZhaWx1cmVzQnlUZXN0KG1vZGVsLnN0YXRlLnJl
c3VsdHNCeUJ1aWxkZXIpOwotCi0gICAgcmV0dXJuIE9iamVjdC5rZXlzKHJlc3VsdHNCeVRlc3Rb
dGVzdE5hbWVdKS5tYXAoZnVuY3Rpb24oYnVpbGRlck5hbWUpIHsKLSAgICAgICAgcmV0dXJuIHJl
c3VsdHMuZmFpbHVyZUluZm9Gb3JUZXN0QW5kQnVpbGRlcihyZXN1bHRzQnlUZXN0LCB0ZXN0TmFt
ZSwgYnVpbGRlck5hbWUpOwotICAgIH0pOwotfTsKLQotbW9kZWwuYW5hbHl6ZVVuZXhwZWN0ZWRT
dWNjZXNzZXMgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICB2YXIgdW5leHBlY3RlZFN1Y2Nl
c3NlcyA9IHJlc3VsdHMudW5leHBlY3RlZFN1Y2Nlc3Nlc0J5VGVzdChtb2RlbC5zdGF0ZS5yZXN1
bHRzQnlCdWlsZGVyKTsKLSAgICAkLmVhY2godW5leHBlY3RlZFN1Y2Nlc3NlcywgZnVuY3Rpb24o
dGVzdE5hbWUsIHJlc3VsdE5vZGVzQnlCdWlsZGVyKSB7Ci0gICAgICAgIHZhciBzdWNjZXNzQW5h
bHlzaXMgPSB7Ci0gICAgICAgICAgICAndGVzdE5hbWUnOiB0ZXN0TmFtZSwKLSAgICAgICAgICAg
ICdyZXN1bHROb2Rlc0J5QnVpbGRlcic6IHJlc3VsdE5vZGVzQnlCdWlsZGVyLAotICAgICAgICB9
OwotCi0gICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBsb29raW5nIGF0IHRoZSBoaXN0b3J5IHRv
IHNlZSBob3cgbG9uZyB0aGlzIHRlc3QKLSAgICAgICAgLy8gaGFzIGJlZW4gdW5leHBlY3RlZGx5
IHBhc3NpbmcuCi0KLSAgICAgICAgY2FsbGJhY2soc3VjY2Vzc0FuYWx5c2lzKTsKLSAgICB9KTsK
LX07Ci0KLW1vZGVsLmFuYWx5emVleHBlY3RlZEZhaWx1cmVzID0gZnVuY3Rpb24oY2FsbGJhY2sp
Ci17Ci0gICAgdmFyIGV4cGVjdGVkRmFpbHVyZXMgPSByZXN1bHRzLmV4cGVjdGVkRmFpbHVyZXNC
eVRlc3QobW9kZWwuc3RhdGUucmVzdWx0c0J5QnVpbGRlcik7Ci0gICAgJC5lYWNoKGV4cGVjdGVk
RmFpbHVyZXMsIGZ1bmN0aW9uKHRlc3ROYW1lLCByZXN1bHROb2Rlc0J5QnVpbGRlcikgewotICAg
ICAgICB2YXIgZmFpbHVyZUFuYWx5c2lzID0gewotICAgICAgICAgICAgJ3Rlc3ROYW1lJzogdGVz
dE5hbWUsCi0gICAgICAgICAgICAncmVzdWx0Tm9kZXNCeUJ1aWxkZXInOiByZXN1bHROb2Rlc0J5
QnVpbGRlciwKLSAgICAgICAgfTsKLQotICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgbG9va2lu
ZyBhdCB0aGUgaGlzdG9yeSB0byBzZWUgaG93IGxvbmcgdGhpcyB0ZXN0Ci0gICAgICAgIC8vIGhh
cyBiZWVuIGZhaWxpbmcuCi0KLSAgICAgICAgY2FsbGJhY2soZmFpbHVyZUFuYWx5c2lzKTsKLSAg
ICB9KTsKLX07Ci0KLX0pKCk7CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvbW9kZWxfdW5pdHRlc3Rz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9tb2RlbF91bml0dGVzdHMuanMJKHJl
dmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9tb2RlbF91bml0dGVzdHMuanMJKG5v
bmV4aXN0ZW50KQpAQCAtMSwyNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24gKCkg
ewotCi1tb2R1bGUoIm1vZGVsIik7Ci0KLXZhciBrRXhhbXBsZUNvbW1pdERhdGFYTUwgPQotICAg
ICc8P3htbCB2ZXJzaW9uPSIxLjAiPz5cblxuJyArCi0gICAgJzxyc3MgeG1sbnM6ZGM9Imh0dHA6
Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB2ZXJzaW9uPSIyLjAiPlxuXG4nICsKLSAgICAn
ICBcblxuJyArCi0gICAgJ1xuXG4nICsKLSAgICAnICA8Y2hhbm5lbD5cblxuJyArCi0gICAgJyAg
ICA8dGl0bGU+UmV2aXNpb25zIG9mIC90cnVuazwvdGl0bGU+XG5cbicgKwotICAgICcgICAgPGxp
bms+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9sb2cvdHJ1bms/cmV2PTkyMzYyPC9saW5rPlxuXG4n
ICsKLSAgICAnICAgIDxkZXNjcmlwdGlvbj5UcmFjIExvZyAtIFJldmlzaW9ucyBvZiAvdHJ1bms8
L2Rlc2NyaXB0aW9uPlxuXG4nICsKLSAgICAnICAgIDxsYW5ndWFnZT5lbi1VUzwvbGFuZ3VhZ2U+
XG5cbicgKwotICAgICcgICAgPGdlbmVyYXRvcj5UcmFjIDAuMTEuNzwvZ2VuZXJhdG9yPlxuXG4n
ICsKLSAgICAnICAgIDxpbWFnZT5cblxuJyArCi0gICAgJyAgICAgIDx0aXRsZT5XZWJLaXQ8L3Rp
dGxlPlxuXG4nICsKLSAgICAnICAgICAgPHVybD5odHRwOi8vdHJhYy53ZWJraXQub3JnL2Nocm9t
ZS9zaXRlL2ljb24ucG5nPC91cmw+XG5cbicgKwotICAgICcgICAgICA8bGluaz5odHRwOi8vdHJh
Yy53ZWJraXQub3JnL2xvZy90cnVuaz9yZXY9OTIzNjI8L2xpbms+XG5cbicgKwotICAgICcgICAg
PC9pbWFnZT5cblxuJyArCi0gICAgJyAgICA8aXRlbT5cbicgKwotICAgICcgICAgICAgICAgPGF1
dGhvcj5jb21taXQtcXVldWVAd2Via2l0Lm9yZzwvYXV0aG9yPlxuJyArCi0gICAgJyAgICAgIDxw
dWJEYXRlPldlZCwgMDMgQXVnIDIwMTEgMDQ6MjY6NTIgR01UPC9wdWJEYXRlPlxuJyArCi0gICAg
JyAgICAgIDx0aXRsZT5SZXZpc2lvbiA5MjI1OTogVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHI5MjI1
Ni5cbicgKwotICAgICdodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1NiAuLi48
L3RpdGxlPlxuJyArCi0gICAgJyAgICAgIDxsaW5rPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzkyMjU5L3RydW5rPC9saW5rPlxuJyArCi0gICAgJyAgICAgIDxndWlkIGlzUGVybWFM
aW5rPSJmYWxzZSI+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIyNTkvdHJ1bms8
L2d1aWQ+XG4nICsKLSAgICAnICAgICAgPGRlc2NyaXB0aW9uPiZsdDtwJmd0O1xuJyArCi0gICAg
J1VucmV2aWV3ZWQsIHJldmVydGluZyAmbHQ7YSBjbGFzcz0iY2hhbmdlc2V0IiBocmVmPSJodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1NiIgdGl0bGU9Ik1ha2UgRXZlbnREaXNw
YXRjaE1lZGlhdG9yIFJlZkNvdW50ZWQuIC4uLiImZ3Q7cjkyMjU2Jmx0Oy9hJmd0Oy5cbicgKwot
ICAgICcmbHQ7YSBjbGFzcz0iZXh0LWxpbmsiIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzkyMjU2IiZndDsmbHQ7c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZn
dDtodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1NiZsdDsvYSZndDtcbicgKwot
ICAgICcmbHQ7YSBjbGFzcz0iZXh0LWxpbmsiIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTU5MyImZ3Q7Jmx0O3NwYW4gY2xhc3M9Imljb24iJmd0OyAmbHQ7
L3NwYW4mZ3Q7aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTkzJmx0
Oy9hJmd0O1xuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwot
ICAgICdDYXVzaW5nIHRvbnMgb2YgY3Jhc2hlcyBvbiB0aGUgY2hyb21pdW0gd2luIGJvdHMgKFJl
cXVlc3RlZCBieVxuJyArCi0gICAgJ2phbWVzciBvbiAjd2Via2l0KS5cbicgKwotICAgICcmbHQ7
L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnUGF0Y2ggYnkgU2hlcmlmZiBC
b3QgJmFtcDtsdDsmbHQ7YSBjbGFzcz0ibWFpbC1saW5rIiBocmVmPSJtYWlsdG86d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tIiZndDsmbHQ7c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3Bh
biZndDt3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20mbHQ7L2EmZ3Q7JmFtcDtndDsgb24gMjAx
MS0wOC0wMlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwot
ICAgICcqIGRvbS9FdmVudC5jcHA6XG4nICsKLSAgICAnKiBkb20vRXZlbnQuaDpcbicgKwotICAg
ICcqIGRvbS9FdmVudERpc3BhdGNoZXIuY3BwOlxuJyArCi0gICAgJyhXZWJDb3JlOjpFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQpOlxuJyArCi0gICAgJyogZG9tL0V2ZW50RGlzcGF0Y2hl
ci5oOlxuJyArCi0gICAgJyogZG9tL0tleWJvYXJkRXZlbnQuY3BwOlxuJyArCi0gICAgJyogZG9t
L0tleWJvYXJkRXZlbnQuaDpcbicgKwotICAgICcqIGRvbS9Nb3VzZUV2ZW50LmNwcDpcbicgKwot
ICAgICcqIGRvbS9Nb3VzZUV2ZW50Lmg6XG4nICsKLSAgICAnKiBkb20vTm9kZS5jcHA6XG4nICsK
LSAgICAnKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoRXZlbnQpOlxuJyArCi0gICAgJyhXZWJDb3Jl
OjpOb2RlOjpkaXNwYXRjaEtleUV2ZW50KTpcbicgKwotICAgICcoV2ViQ29yZTo6Tm9kZTo6ZGlz
cGF0Y2hNb3VzZUV2ZW50KTpcbicgKwotICAgICcoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hXaGVl
bEV2ZW50KTpcbicgKwotICAgICcqIGRvbS9XaGVlbEV2ZW50LmNwcDpcbicgKwotICAgICcqIGRv
bS9XaGVlbEV2ZW50Lmg6XG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJzwvZGVzY3Jp
cHRpb24+XG4nICsKLSAgICAnICAgICAgPGNhdGVnb3J5PkxvZzwvY2F0ZWdvcnk+XG4nICsKLSAg
ICAnICAgIDwvaXRlbT48aXRlbT5cbicgKwotICAgICcgICAgICAgICAgPGF1dGhvcj5tYWNwaGVy
c29uQGNocm9taXVtLm9yZzwvYXV0aG9yPlxuXG4nICsKLSAgICAnICAgICAgPHB1YkRhdGU+VGh1
LCAwNCBBdWcgMjAxMSAwMjowOToxOSBHTVQ8L3B1YkRhdGU+XG5cbicgKwotICAgICcgICAgICA8
dGl0bGU+UmV2aXNpb24gOTIyNTY6IFN1cHBvcnQgY2FzdCBiZXR3ZWVuIENTU1ByaW1pdGl2ZVZh
bHVlIGFuZCBFQm94U2l6aW5nLCB1c2UgaW4gLi4uPC90aXRsZT5cblxuJyArCi0gICAgJyAgICAg
IDxsaW5rPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU2L3RydW5rPC9saW5r
PlxuXG4nICsKLSAgICAnICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1Ni90cnVuazwvZ3VpZD5cblxuJyArCi0gICAgJyAg
ICAgIDxkZXNjcmlwdGlvbj4mbHQ7cCZndDtcblxuJyArCi0gICAgJ1N1cHBvcnQgY2FzdCBiZXR3
ZWVuIENTU1ByaW1pdGl2ZVZhbHVlIGFuZCBFQm94U2l6aW5nLCB1c2UgaW4gQ1NTU3R5bGVTZWxl
Y3Rvci5cblxuJyArCi0gICAgJyZsdDthIGNsYXNzPSJleHQtbGluayIgaHJlZj0iaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjU3IiZndDsmbHQ7c3BhbiBjbGFzcz0i
aWNvbiImZ3Q7ICZsdDsvc3BhbiZndDtodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjU2NTcmbHQ7L2EmZ3Q7XG5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG5cbicgKwotICAg
ICcmbHQ7cCZndDtcblxuJyArCi0gICAgJ1Jldmlld2VkIGJ5IFNpbW9uIEZyYXNlci5cblxuJyAr
Ci0gICAgJyZsdDsvcCZndDtcblxuJyArCi0gICAgJyZsdDtwJmd0O1xuXG4nICsKLSAgICAnTm8g
bmV3IHRlc3RzIC8gcmVmYWN0b3Jpbmcgb25seS5cblxuJyArCi0gICAgJyZsdDsvcCZndDtcblxu
JyArCi0gICAgJyZsdDtwJmd0O1xuXG4nICsKLSAgICAnKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVN
YXBwaW5ncy5oOlxuXG4nICsKLSAgICAnKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZSk6XG5cbicgKwotICAgICdJbXBsZW1lbnQgY2FzdCBmcm9tIEVCb3hTaXpp
bmcuXG4nICsKLSAgICAnKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQm94
U2l6aW5nKTpcbicgKwotICAgICdJbXBsZW1lbnQgY2FzdCB0byBFQm94U2l6aW5nLlxuJyArCi0g
ICAgJyogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOlxuJyArCi0gICAgJyhXZWJDb3JlOjpDU1NT
dHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KTpcbicgKwotICAgICdVc2UgYXBwcm9wcmlhdGUg
bWFjcm8gdG8gc2ltcGxpZnkgY29kZSB1c2luZyBjYXN0LlxuJyArCi0gICAgJyZsdDsvcCZndDtc
bicgKwotICAgICc8L2Rlc2NyaXB0aW9uPlxuJyArCi0gICAgJyAgICAgIDxjYXRlZ29yeT5Mb2c8
L2NhdGVnb3J5PlxuJyArCi0gICAgJyAgICA8L2l0ZW0+XG4nICsKLSAgICAnIDwvY2hhbm5lbD5c
bicgKwotICAgICc8L3Jzcz5cbicKLQotdGVzdCgicmViYXNlbGluZVF1ZXVlIiwgMywgZnVuY3Rp
b24oKSB7Ci0gICAgdmFyIHF1ZXVlID0gbW9kZWwudGFrZVJlYmFzZWxpbmVRdWV1ZSgpOwotICAg
IGRlZXBFcXVhbChxdWV1ZSwgW10pOwotICAgIG1vZGVsLnF1ZXVlRm9yUmViYXNlbGluZSgnZmFp
bHVyZUluZm8xJyk7Ci0gICAgbW9kZWwucXVldWVGb3JSZWJhc2VsaW5lKCdmYWlsdXJlSW5mbzIn
KTsKLSAgICB2YXIgcXVldWUgPSBtb2RlbC50YWtlUmViYXNlbGluZVF1ZXVlKCk7Ci0gICAgZGVl
cEVxdWFsKHF1ZXVlLCBbJ2ZhaWx1cmVJbmZvMScsICdmYWlsdXJlSW5mbzInXSk7Ci0gICAgdmFy
IHF1ZXVlID0gbW9kZWwudGFrZVJlYmFzZWxpbmVRdWV1ZSgpOwotICAgIGRlZXBFcXVhbChxdWV1
ZSwgW10pOwotfSk7Ci0KLXRlc3QoInJlYmFzZWxpbmVRdWV1ZSIsIDMsIGZ1bmN0aW9uKCkgewot
ICAgIHZhciBxdWV1ZSA9IG1vZGVsLnRha2VFeHBlY3RhdGlvblVwZGF0ZVF1ZXVlKCk7Ci0gICAg
ZGVlcEVxdWFsKHF1ZXVlLCBbXSk7Ci0gICAgbW9kZWwucXVldWVGb3JFeHBlY3RhdGlvblVwZGF0
ZSgnZmFpbHVyZUluZm8xJyk7Ci0gICAgbW9kZWwucXVldWVGb3JFeHBlY3RhdGlvblVwZGF0ZSgn
ZmFpbHVyZUluZm8yJyk7Ci0gICAgdmFyIHF1ZXVlID0gbW9kZWwudGFrZUV4cGVjdGF0aW9uVXBk
YXRlUXVldWUoKTsKLSAgICBkZWVwRXF1YWwocXVldWUsIFsnZmFpbHVyZUluZm8xJywgJ2ZhaWx1
cmVJbmZvMiddKTsKLSAgICB2YXIgcXVldWUgPSBtb2RlbC50YWtlRXhwZWN0YXRpb25VcGRhdGVR
dWV1ZSgpOwotICAgIGRlZXBFcXVhbChxdWV1ZSwgW10pOwotfSk7Ci0KLXRlc3QoInVwZGF0ZVJl
Y2VudENvbW1pdHMiLCAyLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5l
dHdvcmtTaW11bGF0b3IoKTsKLQotICAgIHNpbXVsYXRvci5nZXQgPSBmdW5jdGlvbih1cmwsIGNh
bGxiYWNrKQotICAgIHsKLSAgICAgICAgc2ltdWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICB2YXIgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpOwotICAgICAg
ICAgICAgdmFyIHJlc3BvbnNlRE9NID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhrRXhhbXBsZUNv
bW1pdERhdGFYTUwsICJhcHBsaWNhdGlvbi94bWwiKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJl
c3BvbnNlRE9NKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0
KGZ1bmN0aW9uKCkgewotICAgICAgICBtb2RlbC51cGRhdGVSZWNlbnRDb21taXRzKGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgdmFyIHJlY2VudENvbW1pdHMgPSBtb2RlbC5zdGF0ZS5yZWNlbnRD
b21taXRzOwotICAgICAgICAgICAgZGVsZXRlIG1vZGVsLnN0YXRlLnJlY2VudENvbW1pdHM7Ci0g
ICAgICAgICAgICAkLmVhY2gocmVjZW50Q29tbWl0cywgZnVuY3Rpb24oaW5kZXgsIGNvbW1pdERh
dGEpIHsKLSAgICAgICAgICAgICAgICBkZWxldGUgY29tbWl0RGF0YS5tZXNzYWdlOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICBkZWVwRXF1YWwocmVjZW50Q29tbWl0cywgW3sKLSAgICAg
ICAgICAgICAgICAicmV2aXNpb24iOiA5MjI1OSwKLSAgICAgICAgICAgICAgICAidGl0bGUiOiAi
UmV2aXNpb24gOTIyNTk6IFVucmV2aWV3ZWQsIHJldmVydGluZyByOTIyNTYuXG5odHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1NiAuLi4iLAotICAgICAgICAgICAgICAgICJ0aW1l
IjogIldlZCwgMDMgQXVnIDIwMTEgMDQ6MjY6NTIgR01UIiwKLSAgICAgICAgICAgICAgICAic3Vt
bWFyeSI6ICJVbnJldmlld2VkLCByZXZlcnRpbmcgcjkyMjU2LiIsCi0gICAgICAgICAgICAgICAg
ImF1dGhvciI6ICJTaGVyaWZmIEJvdCIsCi0gICAgICAgICAgICAgICAgInJldmlld2VyIjogbnVs
bCwKLSAgICAgICAgICAgICAgICAiYnVnSUQiOiA2NTU5MywKLSAgICAgICAgICAgICAgICAicmV2
ZXJ0ZWRSZXZpc2lvbiI6IDkyMjU2Ci0gICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAg
ICJyZXZpc2lvbiI6IDkyMjU2LAotICAgICAgICAgICAgICAgICJ0aXRsZSI6ICJSZXZpc2lvbiA5
MjI1NjogU3VwcG9ydCBjYXN0IGJldHdlZW4gQ1NTUHJpbWl0aXZlVmFsdWUgYW5kIEVCb3hTaXpp
bmcsIHVzZSBpbiAuLi4iLAotICAgICAgICAgICAgICAgICJ0aW1lIjogIlRodSwgMDQgQXVnIDIw
MTEgMDI6MDk6MTkgR01UIiwKLSAgICAgICAgICAgICAgICAic3VtbWFyeSI6ICJTdXBwb3J0IGNh
c3QgYmV0d2VlbiBDU1NQcmltaXRpdmVWYWx1ZSBhbmQgRUJveFNpemluZywgdXNlIGluIENTU1N0
eWxlU2VsZWN0b3IuIiwKLSAgICAgICAgICAgICAgICAiYXV0aG9yIjogIm1hY3BoZXJzb25AY2hy
b21pdW0ub3JnIiwKLSAgICAgICAgICAgICAgICAicmV2aWV3ZXIiOiAiU2ltb24gRnJhc2VyIiwK
LSAgICAgICAgICAgICAgICAiYnVnSUQiOiA2NTY1NywKLSAgICAgICAgICAgICAgICAicmV2ZXJ0
ZWRSZXZpc2lvbiI6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgICAgICAid2FzUmV2ZXJ0ZWQiOiB0
cnVlCi0gICAgICAgICAgICB9XSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfSk7Ci0KLXRlc3Qo
ImNvbW1pdERhdGFMaXN0Rm9yUmV2aXNpb25SYW5nZSIsIDYsIGZ1bmN0aW9uKCkgewotICAgIHZh
ciBzaW11bGF0b3IgPSBuZXcgTmV0d29ya1NpbXVsYXRvcigpOwotCi0gICAgc2ltdWxhdG9yLmdl
dCA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spCi0gICAgewotICAgICAgICBzaW11bGF0b3Iuc2No
ZWR1bGVDYWxsYmFjayhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciBwYXJzZXIgPSBuZXcg
RE9NUGFyc2VyKCk7Ci0gICAgICAgICAgICB2YXIgcmVzcG9uc2VET00gPSBwYXJzZXIucGFyc2VG
cm9tU3RyaW5nKGtFeGFtcGxlQ29tbWl0RGF0YVhNTCwgImFwcGxpY2F0aW9uL3htbCIpOwotICAg
ICAgICAgICAgY2FsbGJhY2socmVzcG9uc2VET00pOwotICAgICAgICB9KTsKLSAgICB9OwotCi0g
ICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIG1vZGVsLnVwZGF0ZVJl
Y2VudENvbW1pdHMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBmdW5jdGlvbiBleHRyYWN0QnVn
SURzKGNvbW1pdERhdGEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNv
bW1pdERhdGEuYnVnSUQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRlZXBFcXVhbCht
b2RlbC5jb21taXREYXRhTGlzdEZvclJldmlzaW9uUmFuZ2UoOTIyNTksIDkyMjU5KS5tYXAoZXh0
cmFjdEJ1Z0lEcyksIFs2NTU5M10pOwotICAgICAgICAgICAgZGVlcEVxdWFsKG1vZGVsLmNvbW1p
dERhdGFMaXN0Rm9yUmV2aXNpb25SYW5nZSg5MjI1NiwgOTIyNTkpLm1hcChleHRyYWN0QnVnSURz
KSwgWzY1NjU3LCA2NTU5M10pOwotICAgICAgICAgICAgZGVlcEVxdWFsKG1vZGVsLmNvbW1pdERh
dGFMaXN0Rm9yUmV2aXNpb25SYW5nZSg5MjI1OSwgOTIyNTYpLm1hcChleHRyYWN0QnVnSURzKSwg
W10pOwotICAgICAgICAgICAgZGVlcEVxdWFsKG1vZGVsLmNvbW1pdERhdGFMaXN0Rm9yUmV2aXNp
b25SYW5nZSgwLCA5MjI1NikubWFwKGV4dHJhY3RCdWdJRHMpLCBbNjU2NTddKTsKLSAgICAgICAg
ICAgIGRlZXBFcXVhbChtb2RlbC5jb21taXREYXRhTGlzdEZvclJldmlzaW9uUmFuZ2UoOTIyNTYs
IDApLm1hcChleHRyYWN0QnVnSURzKSwgW10pOwotICAgICAgICAgICAgZGVsZXRlIG1vZGVsLnN0
YXRlLnJlY2VudENvbW1pdHM7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfSk7Ci0KLXRlc3QoImJ1
aWxkZXJzSW5GbGlnaHRGb3JSZXZpc2lvbiIsIDMsIGZ1bmN0aW9uKCkgewotICAgIHZhciB1bm1v
Y2sgPSBtb2RlbC5zdGF0ZS5yZXN1bHRzQnlCdWlsZGVyOwotICAgIG1vZGVsLnN0YXRlLnJlc3Vs
dHNCeUJ1aWxkZXIgPSB7Ci0gICAgICAgICdNci4gQmVhc2xleSc6IHtyZXZpc2lvbjogJzUnfSwK
LSAgICAgICAgJ01yIERpeG9uJzoge3JldmlzaW9uOiAnMSd9LAotICAgICAgICAnTXIuIFNhYmF0
aW5pJzoge3JldmlzaW9uOiAnNCd9LAotICAgICAgICAnQm9iJzoge3JldmlzaW9uOiAnNid9Ci0g
ICAgfTsKLSAgICBkZWVwRXF1YWwobW9kZWwuYnVpbGRlcnNJbkZsaWdodEZvclJldmlzaW9uKDEp
LCB7fSk7Ci0gICAgZGVlcEVxdWFsKG1vZGVsLmJ1aWxkZXJzSW5GbGlnaHRGb3JSZXZpc2lvbigz
KSwgewotICAgICAgIk1yIERpeG9uIjogewotICAgICAgICAiYWN0dWFsIjogIkJVSUxESU5HIgot
ICAgICAgfQotICAgIH0pOwotICAgIGRlZXBFcXVhbChtb2RlbC5idWlsZGVyc0luRmxpZ2h0Rm9y
UmV2aXNpb24oMTApLCB7Ci0gICAgICAiTXIuIEJlYXNsZXkiOiB7Ci0gICAgICAgICJhY3R1YWwi
OiAiQlVJTERJTkciCi0gICAgICB9LAotICAgICAgIk1yIERpeG9uIjogewotICAgICAgICAiYWN0
dWFsIjogIkJVSUxESU5HIgotICAgICAgfSwKLSAgICAgICJNci4gU2FiYXRpbmkiOiB7Ci0gICAg
ICAgICJhY3R1YWwiOiAiQlVJTERJTkciCi0gICAgICB9LAotICAgICAgIkJvYiI6IHsKLSAgICAg
ICAgImFjdHVhbCI6ICJCVUlMRElORyIKLSAgICAgIH0KLSAgICB9KTsKLSAgICBtb2RlbC5zdGF0
ZS5yZXN1bHRzQnlCdWlsZGVyID0gdW5tb2NrOwotfSk7Ci0KLXRlc3QoImxhdGVzdFJldmlzaW9u
V2l0aE5vQnVpbGRlcnNJbkZsaWdodCIsIDEsIGZ1bmN0aW9uKCkgewotICAgIHZhciB1bm1vY2sg
PSBtb2RlbC5zdGF0ZS5yZXN1bHRzQnlCdWlsZGVyOwotICAgIG1vZGVsLnN0YXRlLnJlc3VsdHNC
eUJ1aWxkZXIgPSB7Ci0gICAgICAgICdNci4gQmVhc2xleSc6IHsgfSwKLSAgICAgICAgJ01yIERp
eG9uJzoge3JldmlzaW9uOiAnMid9LAotICAgICAgICAnTXIuIFNhYmF0aW5pJzoge3JldmlzaW9u
OiAnNCd9LAotICAgICAgICAnQm9iJzoge3JldmlzaW9uOiAnNid9Ci0gICAgfTsKLSAgICBlcXVh
bHMobW9kZWwubGF0ZXN0UmV2aXNpb25XaXRoTm9CdWlsZGVyc0luRmxpZ2h0KCksIDIpOwotICAg
IG1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1aWxkZXIgPSB1bm1vY2s7Ci19KTsKLQotfSkoKTsKSW5k
ZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvc2NyaXB0cy9uZXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRz
L25ldC5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL25ldC5qcwkobm9u
ZXhpc3RlbnQpCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIG5ldCA9IG5ldCB8
fCB7fTsKLQotKGZ1bmN0aW9uICgpIHsKLQotLy8gRklYTUU6IEV4Y2lzZSB0aGlzIGxhc3QgYml0
IG9mIGpxdWVyeSBhamF4IGNvZGUuCi0vLyBUaGVyZSBhcmUgY2FsbGVycyB0aGF0IGRlcGVuZCBv
biBhdXRvbWF0aWNhbGx5IHBhcnNpbmcgdGhlIGNvbnRlbnQgYXMgSlNPTiBvciBYTUwKLS8vIGJh
c2VkIG9mZiB0aGUgY29udGVudC10eXBlLiBJbnN0ZWFkIHdlIHNob3VsZCBhZGQgbmV0Lmpzb24g
YW5kIG5ldC54bWwgZm9yIHRob3NlIGNhc2VzLgotbmV0LmdldCA9IGZ1bmN0aW9uKHVybCwgc3Vj
Y2VzcykKLXsKLSAgICAkLmdldCh1cmwsIHN1Y2Nlc3MpOwotfTsKLQotbmV0LmFqYXggPSBmdW5j
dGlvbihvcHRpb25zKQotewotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAg
ICB2YXIgbWV0aG9kID0gb3B0aW9ucy50eXBlIHx8ICdHRVQnOwotICAgIHZhciBhc3luYyA9IHRy
dWU7Ci0gICAgeGhyLm9wZW4obWV0aG9kLCBvcHRpb25zLnVybCwgYXN5bmMpOwotICAgIHhoci5v
bmxvYWQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHhoci5zdGF0dXMgPT0gMjAwICYmIG9w
dGlvbnMuc3VjY2VzcykKLSAgICAgICAgICAgIG9wdGlvbnMuc3VjY2Vzcyh4aHIucmVzcG9uc2VU
ZXh0KTsKLSAgICAgICAgZWxzZSBpZiAoeGhyLnN0YXR1cyAhPSAyMDAgJiYgb3B0aW9ucy5lcnJv
cikKLSAgICAgICAgICAgIG9wdGlvbnMuZXJyb3IoKTsKLSAgICB9OwotICAgIHhoci5vbmVycm9y
ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmIChvcHRpb25zLmVycm9yKQotICAgICAgICAgICAg
b3B0aW9ucy5lcnJvcigpOwotICAgIH07Ci0gICAgdmFyIGRhdGEgPSBvcHRpb25zLmRhdGEgfHwg
bnVsbDsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoImNvbnRl
bnQtdHlwZSIsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpOwotICAgIHhoci5z
ZW5kKGRhdGEpOwotfTsKLQotbmV0LnBvc3QgPSBmdW5jdGlvbih1cmwsIGRhdGEsIHN1Y2Nlc3Mp
Ci17Ci0gICAgbmV0LmFqYXgoewotICAgICAgICB1cmw6IHVybCwKLSAgICAgICAgdHlwZTogJ1BP
U1QnLAotICAgICAgICBkYXRhOiBkYXRhLAotICAgICAgICBzdWNjZXNzOiBzdWNjZXNzLAotICAg
IH0pOwotCi19OwotCi1uZXQucHJvYmUgPSBmdW5jdGlvbih1cmwsIG9wdGlvbnMpCi17Ci0gICAg
bmV0LmFqYXgoewotICAgICAgICB1cmw6IHVybCwKLSAgICAgICAgdHlwZTogJ0hFQUQnLAotICAg
ICAgICBzdWNjZXNzOiBvcHRpb25zLnN1Y2Nlc3MsCi0gICAgICAgIGVycm9yOiBvcHRpb25zLmVy
cm9yLAotICAgIH0pOwotfTsKLQotLy8gV2UgdXNlIFhNTEh0dHBSZXF1ZXN0IGFuZCBDT1JTIHRv
IGZldGNoIEpTT05QIHJhdGhlciB0aGFuIHVzaW5nIHNjcmlwdCB0YWdzLgotLy8gVGhhdCdzIGJl
dHRlciBmb3Igc2VjdXJpdHkgYW5kIHBlcmZvcm1hbmNlLCBidXQgd2UgbmVlZCB0aGUgc2VydmVy
IHRvIGNvb3BlcmF0ZQotLy8gYnkgc2V0dGluZyBDT1JTIGhlYWRlcnMuCi1uZXQuanNvbnAgPSBm
dW5jdGlvbih1cmwsIGNhbGxiYWNrKQotewotICAgIG5ldC5hamF4KHsKLSAgICAgICAgdXJsOiB1
cmwsCi0gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGpzb25wKSB7Ci0gICAgICAgICAgICBjYWxs
YmFjayhiYXNlLnBhcnNlSlNPTlAoanNvbnApKTsKLSAgICAgICAgfSwKLSAgICAgICAgZXJyb3I6
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgY2FsbGJhY2soe30pOwotICAgICAgICB9LAotICAg
IH0pOwotfTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9uZXRfdW5pdHRlc3RzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9uZXRfdW5pdHRlc3RzLmpzCShyZXZpc2lv
biAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvbmV0X3VuaXR0ZXN0cy5qcwkobm9uZXhpc3Rl
bnQpCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gRXhwb3J0IE5ldHdvcmtTaW11
bGF0b3IgZm9yIHVzZSBieSBvdGhlciB1bml0dGVzdHMuCi1mdW5jdGlvbiBOZXR3b3JrU2ltdWxh
dG9yKCkKLXsKLSAgICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzID0gW107Ci19OwotCi1OZXR3b3Jr
U2ltdWxhdG9yLnByb3RvdHlwZS5zY2hlZHVsZUNhbGxiYWNrID0gZnVuY3Rpb24oY2FsbGJhY2sp
Ci17Ci0gICAgdGhpcy5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKLX07Ci0KLU5l
dHdvcmtTaW11bGF0b3IucHJvdG90eXBlLnJ1blRlc3QgPSBmdW5jdGlvbih0ZXN0Q2FzZSkKLXsK
LSAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgdmFyIHJlYWxOZXQgPSB3aW5kb3cubmV0OwotCi0g
ICAgd2luZG93Lm5ldCA9IHt9OwotICAgIGlmIChzZWxmLnByb2JlKQotICAgICAgICBuZXQucHJv
YmUgPSBzZWxmLnByb2JlOwotICAgIGlmIChzZWxmLmpzb25wKQotICAgICAgICBuZXQuanNvbnAg
PSBzZWxmLmpzb25wOwotICAgIGlmIChzZWxmLmdldCkKLSAgICAgICAgbmV0LmdldCA9IHNlbGYu
Z2V0OwotICAgIGlmIChzZWxmLnBvc3QpCi0gICAgICAgIG5ldC5wb3N0ID0gc2VsZi5wb3N0Owot
ICAgIGlmIChzZWxmLmFqYXgpCi0gICAgICAgIG5ldC5hamF4ID0gc2VsZi5hamF4OwotCi0gICAg
dGVzdENhc2UoKTsKLQotICAgIHdoaWxlICh0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzLmxlbmd0aCkg
ewotICAgICAgICB2YXIgY2FsbGJhY2sgPSB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzLnNoaWZ0KCk7
Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgfQotCi0gICAgd2luZG93Lm5ldCA9IHJlYWxOZXQ7
Ci0gICAgZXF1YWwod2luZG93Lm5ldCwgcmVhbE5ldCwgIkZhaWxlZCB0byByZXN0b3JlIHJlYWwg
YmFzZSEiKTsKLX07Ci0KLShmdW5jdGlvbiAoKSB7Ci0KLW1vZHVsZSgibmV0Iik7Ci0KLS8vIE5v
IHVuaXQgdGVzdHMgeWV0IQotCi19KSgpOwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3BpeGVsem9v
bWVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9waXhlbHpvb21lci5qcwkocmV2
aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3BpeGVsem9vbWVyLmpzCShub25leGlz
dGVudCkKQEAgLTEsMTY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gcGl4ZWx6b29tZXIgaXMg
c2hhcmVkIHdpdGggTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc3VsdHMuaHRtbAotLy8gVW5m
b3J0dWFudGVseSwgdGhlcmUncyBubyBnb29kIHdheSB0byBzaGFyZSBjb2RlIGJldHdlZW4gdGhl
c2UgdHdvIHVzZXMuCi0KLXZhciBwaXhlbHpvb21lciA9IHBpeGVsem9vbWVyIHx8IHt9OwotCi0o
ZnVuY3Rpb24oKSB7Ci0KLXZhciBrWm9vbUZhY3RvciA9IDY7Ci12YXIga0RlbGF5VGltZW91dE1T
ID0gNDAwOwotCi12YXIga1Jlc3VsdFdpZHRoID0gODAwOwotdmFyIGtSZXN1bHRIZWlnaHQgPSA2
MDA7Ci0KLXZhciBrWm9vbWVkUmVzdWx0V2lkdGggPSBrUmVzdWx0V2lkdGggKiBrWm9vbUZhY3Rv
cjsKLXZhciBrWm9vbWVkUmVzdWx0SGVpZ2h0ID0ga1Jlc3VsdEhlaWdodCAqIGtab29tRmFjdG9y
OwotCi1mdW5jdGlvbiBtYXRjaGVzU2VsZWN0b3Iobm9kZSwgc2VsZWN0b3IpCi17Ci0gICAgaWYg
KG5vZGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yKQotICAgICAgICByZXR1cm4gbm9kZS53ZWJraXRN
YXRjaGVzU2VsZWN0b3Ioc2VsZWN0b3IpOwotCi0gICAgaWYgKG5vZGUubW96TWF0Y2hlc1NlbGVj
dG9yKQotICAgICAgICByZXR1cm4gbm9kZS5tb3pNYXRjaGVzU2VsZWN0b3Ioc2VsZWN0b3IpOwot
fQotCi1mdW5jdGlvbiBwYXJlbnRPZlR5cGUobm9kZSwgc2VsZWN0b3IpCi17Ci0gICAgd2hpbGUg
KG5vZGUgPSBub2RlLnBhcmVudE5vZGUpIHsKLSAgICAgICAgaWYgKG1hdGNoZXNTZWxlY3Rvcihu
b2RlLCBzZWxlY3RvcikpCi0gICAgICAgICAgICByZXR1cm4gbm9kZTsKLSAgICB9Ci0gICAgcmV0
dXJuIG51bGw7Ci19Ci0KLWZ1bmN0aW9uIHpvb21JbWFnZUNvbnRhaW5lcih1cmwpCi17Ci0gICAg
dmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIGNvbnRh
aW5lci5jbGFzc05hbWUgPSAnem9vbS1pbWFnZS1jb250YWluZXInOwotCi0gICAgdmFyIHRpdGxl
ID0gdXJsLm1hdGNoKC9cLShbXlwtXSopXC5wbmcvKVsxXTsKLSAgICAKLSAgICB2YXIgbGFiZWwg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICBsYWJlbC5jbGFzc05hbWUgPSAn
bGFiZWwnOwotICAgIGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRp
dGxlKSk7Ci0gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGxhYmVsKTsKLQotICAgIHZhciBpbWFn
ZUNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIGltYWdlQ29u
dGFpbmVyLmNsYXNzTmFtZSA9ICdzY2FsZWQtaW1hZ2UtY29udGFpbmVyJzsKLQotICAgIHZhciBp
bWFnZSA9IG5ldyBJbWFnZSgpOwotICAgIGltYWdlLnNyYyA9IHVybDsKLSAgICBpbWFnZS5zdHls
ZS53aWR0aCA9IGtab29tZWRSZXN1bHRXaWR0aCArICdweCc7Ci0gICAgaW1hZ2Uuc3R5bGUuaGVp
Z2h0ID0ga1pvb21lZFJlc3VsdEhlaWdodCArICdweCc7Ci0gICAgaW1hZ2Uuc3R5bGUuYm9yZGVy
ID0gJzFweCBzb2xpZCBibGFjayc7Ci0gICAgaW1hZ2VDb250YWluZXIuYXBwZW5kQ2hpbGQoaW1h
Z2UpOwotICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpbWFnZUNvbnRhaW5lcik7Ci0KLSAgICBy
ZXR1cm4gY29udGFpbmVyOwotfQotCi1mdW5jdGlvbiBjcmVhdGVDb250YWluZXIoZSkKLXsKLSAg
ICB2YXIgdGJvZHkgPSBwYXJlbnRPZlR5cGUoZS50YXJnZXQsICd0Ym9keScpOwotICAgIHZhciBy
b3cgPSB0Ym9keS5xdWVyeVNlbGVjdG9yKCd0cicpOwotICAgIHZhciBpbWFnZXMgPSByb3cucXVl
cnlTZWxlY3RvckFsbCgnaW1nW3NyYyQ9Ii5wbmciXScpOwotCi0gICAgdmFyIGNvbnRhaW5lciA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIGNvbnRhaW5lci5jbGFzc05hbWUg
PSAncGl4ZWwtem9vbS1jb250YWluZXInOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbWFn
ZXMubGVuZ3RoOyBpKyspCi0gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh6b29tSW1hZ2VD
b250YWluZXIoaW1hZ2VzW2ldLnNyYykpOwotCi0gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChjb250YWluZXIpOwotICAgIGRyYXdBbGwoKTsKLX0KLQotZnVuY3Rpb24gZHJhdyhpbWFnZUNv
bnRhaW5lcikKLXsKLSAgICB2YXIgaW1hZ2UgPSBpbWFnZUNvbnRhaW5lci5xdWVyeVNlbGVjdG9y
KCdpbWcnKTsKLSAgICB2YXIgY29udGFpbmVyQm91bmRzID0gaW1hZ2VDb250YWluZXIuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCk7Ci0gICAgaW1hZ2Uuc3R5bGUubGVmdCA9IChjb250YWluZXJCb3Vu
ZHMud2lkdGggLyAyIC0gcGl4ZWx6b29tZXIuX3BlcmNlbnRYICoga1pvb21lZFJlc3VsdFdpZHRo
KSArICdweCc7Ci0gICAgaW1hZ2Uuc3R5bGUudG9wID0gKGNvbnRhaW5lckJvdW5kcy5oZWlnaHQg
LyAyIC0gcGl4ZWx6b29tZXIuX3BlcmNlbnRZICoga1pvb21lZFJlc3VsdEhlaWdodCkgKyAncHgn
OwotfQotCi1mdW5jdGlvbiBkcmF3QWxsKCkKLXsKLSAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFj
aC5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5waXhlbC16b29tLWNvbnRhaW5lciAu
c2NhbGVkLWltYWdlLWNvbnRhaW5lcicpLCBkcmF3KTsKLX0KLQotZnVuY3Rpb24gaGFuZGxlTW91
c2VPdXQoZSkKLXsKLSAgICBpZiAoZS5yZWxhdGVkVGFyZ2V0ICYmIGUucmVsYXRlZFRhcmdldC50
YWdOYW1lICE9ICdJRlJBTUUnKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBJZiBlLnJlbGF0
ZWRUYXJnZXQgaXMgbnVsbCwgd2UndmUgbW91c2VkIG91dCBvZiB0aGUgZG9jdW1lbnQuCi0gICAg
JCgncGl4ZWwtem9vbS1jb250YWluZXInKS5kZXRhY2goKTsKLX0KLQotZnVuY3Rpb24gaGFuZGxl
TW91c2VNb3ZlKGUpCi17Ci0gICAgaWYgKHBpeGVsem9vbWVyLl9tb3VzZU1vdmVUaW1lb3V0KQot
ICAgICAgICBjbGVhclRpbWVvdXQocGl4ZWx6b29tZXIuX21vdXNlTW92ZVRpbWVvdXQpOwotCi0g
ICAgaWYgKHBhcmVudE9mVHlwZShlLnRhcmdldCwgJy5waXhlbC16b29tLWNvbnRhaW5lcicpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcignLnBpeGVsLXpvb20tY29udGFpbmVyJyk7Ci0KLSAgICB2YXIgcmVzdWx0Q29udGFpbmVy
ID0gKGUudGFyZ2V0LmNsYXNzTmFtZSA9PSAncmVzdWx0LWNvbnRhaW5lcicpID8KLSAgICAgICAg
ZS50YXJnZXQgOiBwYXJlbnRPZlR5cGUoZS50YXJnZXQsICcucmVzdWx0LWNvbnRhaW5lcicpOwot
ICAgIGlmICghcmVzdWx0Q29udGFpbmVyIHx8ICFyZXN1bHRDb250YWluZXIucXVlcnlTZWxlY3Rv
cignaW1nJykpIHsKLSAgICAgICAgJChjb250YWluZXIpLmRldGFjaCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgdmFyIHRhcmdldExvY2F0aW9uID0gZS50YXJnZXQuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCk7Ci0gICAgcGl4ZWx6b29tZXIuX3BlcmNlbnRYID0gKGUuY2xpZW50WCAt
IHRhcmdldExvY2F0aW9uLmxlZnQpIC8gdGFyZ2V0TG9jYXRpb24ud2lkdGg7Ci0gICAgcGl4ZWx6
b29tZXIuX3BlcmNlbnRZID0gKGUuY2xpZW50WSAtIHRhcmdldExvY2F0aW9uLnRvcCkgLyB0YXJn
ZXRMb2NhdGlvbi5oZWlnaHQ7Ci0KLSAgICBpZiAoIWNvbnRhaW5lcikgewotICAgICAgICBpZiAo
cGl4ZWx6b29tZXIuc2hvd09uRGVsYXkpIHsKLSAgICAgICAgICAgIHBpeGVsem9vbWVyLl9tb3Vz
ZU1vdmVUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBj
cmVhdGVDb250YWluZXIoZSk7Ci0gICAgICAgICAgICB9LCBrRGVsYXlUaW1lb3V0TVMpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgY3JlYXRlQ29udGFpbmVyKGUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZHJhd0FsbCgpOwotfQotCi1waXhlbHpv
b21lci5zaG93T25EZWxheSA9IHRydWU7Ci0KLXBpeGVsem9vbWVyLmluc3RhbGxFdmVudExpc3Rl
bmVycyA9IGZ1bmN0aW9uKCkKLXsKLSAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3Vz
ZW1vdmUnLCBoYW5kbGVNb3VzZU1vdmUsIGZhbHNlKTsKLSAgICBkb2N1bWVudC5hZGRFdmVudExp
c3RlbmVyKCdtb3VzZW91dCcsIGhhbmRsZU1vdXNlT3V0LCBmYWxzZSk7Ci19OwotCi19KSgpOwpJ
bmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3Jlc3VsdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL3Jlc3VsdHMuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9y
ZXN1bHRzLmpzCShub25leGlzdGVudCkKQEAgLTEsNjc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
dmFyIHJlc3VsdHMgPSByZXN1bHRzIHx8IHt9OwotCi0oZnVuY3Rpb24oKSB7Ci0KLXZhciBrUmVz
dWx0c05hbWUgPSAnZnVsbF9yZXN1bHRzLmpzb24nOwotCi12YXIga0J1aWxkTGlua1JlZ2V4cCA9
IC9hIGhyZWY9IlxkK1wvIi9nOwotdmFyIGtCdWlsZE51bWJlclJlZ2V4cCA9IC9cZCsvOwotCi12
YXIgUEFTUyA9ICdQQVNTJzsKLXZhciBUSU1FT1VUID0gJ1RJTUVPVVQnOwotdmFyIFRFWFQgPSAn
VEVYVCc7Ci12YXIgQ1JBU0ggPSAnQ1JBU0gnOwotdmFyIElNQUdFID0gJ0lNQUdFJzsKLXZhciBJ
TUFHRV9URVhUID0gJ0lNQUdFK1RFWFQnOwotdmFyIEFVRElPID0gJ0FVRElPJzsKLXZhciBNSVNT
SU5HID0gJ01JU1NJTkcnOwotCi12YXIga0ZhaWxpbmdSZXN1bHRzID0gW1RFWFQsIElNQUdFX1RF
WFQsIEFVRElPXTsKLQotdmFyIGtFeHBlY3RlZEltYWdlU3VmZml4ID0gJy1leHBlY3RlZC5wbmcn
OwotdmFyIGtBY3R1YWxJbWFnZVN1ZmZpeCA9ICctYWN0dWFsLnBuZyc7Ci12YXIga0ltYWdlRGlm
ZlN1ZmZpeCA9ICctZGlmZi5wbmcnOwotdmFyIGtFeHBlY3RlZEF1ZGlvU3VmZml4ID0gJy1leHBl
Y3RlZC53YXYnOwotdmFyIGtBY3R1YWxBdWRpb1N1ZmZpeCA9ICctYWN0dWFsLndhdic7Ci12YXIg
a0V4cGVjdGVkVGV4dFN1ZmZpeCA9ICctZXhwZWN0ZWQudHh0JzsKLXZhciBrQWN0dWFsVGV4dFN1
ZmZpeCA9ICctYWN0dWFsLnR4dCc7Ci12YXIga0RpZmZUZXh0U3VmZml4ID0gJy1kaWZmLnR4dCc7
Ci12YXIga0NyYXNoTG9nU3VmZml4ID0gJy1jcmFzaC1sb2cudHh0JzsKLQotdmFyIGtQTkdFeHRl
bnNpb24gPSAncG5nJzsKLXZhciBrVFhURXh0ZW5zaW9uID0gJ3R4dCc7Ci12YXIga1dBVkV4dGVu
c2lvbiA9ICd3YXYnOwotCi12YXIga1ByZWZlcnJlZFN1ZmZpeE9yZGVyID0gWwotICAgIGtFeHBl
Y3RlZEltYWdlU3VmZml4LAotICAgIGtBY3R1YWxJbWFnZVN1ZmZpeCwKLSAgICBrSW1hZ2VEaWZm
U3VmZml4LAotICAgIGtFeHBlY3RlZFRleHRTdWZmaXgsCi0gICAga0FjdHVhbFRleHRTdWZmaXgs
Ci0gICAga0RpZmZUZXh0U3VmZml4LAotICAgIGtDcmFzaExvZ1N1ZmZpeCwKLSAgICBrRXhwZWN0
ZWRBdWRpb1N1ZmZpeCwKLSAgICBrQWN0dWFsQXVkaW9TdWZmaXgsCi0gICAgLy8gRklYTUU6IEFk
ZCBzdXBwb3J0IGZvciB0aGUgcmVzdCBvZiB0aGUgcmVzdWx0IHR5cGVzLgotXTsKLQotLy8gS2lu
ZHMgb2YgcmVzdWx0cy4KLXJlc3VsdHMua0FjdHVhbEtpbmQgPSAnYWN0dWFsJzsKLXJlc3VsdHMu
a0V4cGVjdGVkS2luZCA9ICdleHBlY3RlZCc7Ci1yZXN1bHRzLmtEaWZmS2luZCA9ICdkaWZmJzsK
LXJlc3VsdHMua1Vua25vd25LaW5kID0gJ3Vua25vd24nOwotCi0vLyBUeXBlcyBvZiB0ZXN0cy4K
LXJlc3VsdHMua0ltYWdlVHlwZSA9ICdpbWFnZScKLXJlc3VsdHMua0F1ZGlvVHlwZSA9ICdhdWRp
bycKLXJlc3VsdHMua1RleHRUeXBlID0gJ3RleHQnCi0vLyBGSVhNRTogVGhlcmUgYXJlIG1vcmUg
dHlwZXMgb2YgdGVzdHMuCi0KLWZ1bmN0aW9uIGxheW91dFRlc3RSZXN1bHRzVVJMKHBsYXRmb3Jt
KQotewotICAgIHJldHVybiBjb25maWcua1BsYXRmb3Jtc1twbGF0Zm9ybV0ubGF5b3V0VGVzdFJl
c3VsdHNVUkw7Ci19Ci0KLWZ1bmN0aW9uIHBvc3NpYmxlU3VmZml4TGlzdEZvcihmYWlsdXJlVHlw
ZUxpc3QpCi17Ci0gICAgdmFyIHN1ZmZpeExpc3QgPSBbXTsKLQotICAgIGZ1bmN0aW9uIHB1c2hJ
bWFnZVN1ZmZpeGVzKCkKLSAgICB7Ci0gICAgICAgIHN1ZmZpeExpc3QucHVzaChrRXhwZWN0ZWRJ
bWFnZVN1ZmZpeCk7Ci0gICAgICAgIHN1ZmZpeExpc3QucHVzaChrQWN0dWFsSW1hZ2VTdWZmaXgp
OwotICAgICAgICBzdWZmaXhMaXN0LnB1c2goa0ltYWdlRGlmZlN1ZmZpeCk7Ci0gICAgfQotCi0g
ICAgZnVuY3Rpb24gcHVzaEF1ZGlvU3VmZml4ZXMoKQotICAgIHsKLSAgICAgICAgc3VmZml4TGlz
dC5wdXNoKGtFeHBlY3RlZEF1ZGlvU3VmZml4KTsKLSAgICAgICAgc3VmZml4TGlzdC5wdXNoKGtB
Y3R1YWxBdWRpb1N1ZmZpeCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcHVzaFRleHRTdWZmaXhl
cygpCi0gICAgewotICAgICAgICBzdWZmaXhMaXN0LnB1c2goa0FjdHVhbFRleHRTdWZmaXgpOwot
ICAgICAgICBzdWZmaXhMaXN0LnB1c2goa0V4cGVjdGVkVGV4dFN1ZmZpeCk7Ci0gICAgICAgIHN1
ZmZpeExpc3QucHVzaChrRGlmZlRleHRTdWZmaXgpOwotICAgICAgICAvLyAnLXdkaWZmLmh0bWwn
LAotICAgICAgICAvLyAnLXByZXR0eS1kaWZmLmh0bWwnLAotICAgIH0KLQotICAgICQuZWFjaChm
YWlsdXJlVHlwZUxpc3QsIGZ1bmN0aW9uKGluZGV4LCBmYWlsdXJlVHlwZSkgewotICAgICAgICBz
d2l0Y2goZmFpbHVyZVR5cGUpIHsKLSAgICAgICAgY2FzZSBJTUFHRToKLSAgICAgICAgICAgIHB1
c2hJbWFnZVN1ZmZpeGVzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBURVhU
OgotICAgICAgICAgICAgcHVzaFRleHRTdWZmaXhlcygpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQVVESU86Ci0gICAgICAgICAgICBwdXNoQXVkaW9TdWZmaXhlcygpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSU1BR0VfVEVYVDoKLSAgICAgICAgICAgIHB1
c2hJbWFnZVN1ZmZpeGVzKCk7Ci0gICAgICAgICAgICBwdXNoVGV4dFN1ZmZpeGVzKCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDUkFTSDoKLSAgICAgICAgICAgIHN1ZmZpeExp
c3QucHVzaChrQ3Jhc2hMb2dTdWZmaXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgTUlTU0lORzoKLSAgICAgICAgICAgIHB1c2hJbWFnZVN1ZmZpeGVzKCk7Ci0gICAgICAgICAg
ICBwdXNoVGV4dFN1ZmZpeGVzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdGhlIHJlc3Qgb2YgdGhl
IHJlc3VsdCB0eXBlcy4KLSAgICAgICAgICAgIC8vICctZXhwZWN0ZWQuaHRtbCcsCi0gICAgICAg
ICAgICAvLyAnLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnLAotICAgICAgICAgICAgLy8gLi4uIGFu
ZCBwb3NzaWJseSBtb3JlLgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9KTsK
LQotICAgIHJldHVybiBiYXNlLnVuaXF1aWZ5QXJyYXkoc3VmZml4TGlzdCk7Ci19Ci0KLXJlc3Vs
dHMuZmFpbHVyZVR5cGVUb0V4dGVuc2lvbkxpc3QgPSBmdW5jdGlvbihmYWlsdXJlVHlwZSkKLXsK
LSAgICBzd2l0Y2goZmFpbHVyZVR5cGUpIHsKLSAgICBjYXNlIElNQUdFOgotICAgICAgICByZXR1
cm4gW2tQTkdFeHRlbnNpb25dOwotICAgIGNhc2UgQVVESU86Ci0gICAgICAgIHJldHVybiBba1dB
VkV4dGVuc2lvbl07Ci0gICAgY2FzZSBURVhUOgotICAgICAgICByZXR1cm4gW2tUWFRFeHRlbnNp
b25dOwotICAgIGNhc2UgTUlTU0lORzoKLSAgICBjYXNlIElNQUdFX1RFWFQ6Ci0gICAgICAgIHJl
dHVybiBba1RYVEV4dGVuc2lvbiwga1BOR0V4dGVuc2lvbl07Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB0aGUgcmVzdCBvZiB0aGUgcmVzdWx0IHR5cGVz
LgotICAgICAgICAvLyAnLWV4cGVjdGVkLmh0bWwnLAotICAgICAgICAvLyAnLWV4cGVjdGVkLW1p
c21hdGNoLmh0bWwnLAotICAgICAgICAvLyAuLi4gYW5kIHBvc3NpYmx5IG1vcmUuCi0gICAgICAg
IHJldHVybiBbXTsKLSAgICB9Ci19OwotCi1yZXN1bHRzLmZhaWx1cmVUeXBlTGlzdCA9IGZ1bmN0
aW9uKGZhaWx1cmVCbG9iKQotewotICAgIHJldHVybiBmYWlsdXJlQmxvYi5zcGxpdCgnICcpOwot
fTsKLQotcmVzdWx0cy5jYW5SZWJhc2VsaW5lID0gZnVuY3Rpb24oZmFpbHVyZVR5cGVMaXN0KQot
ewotICAgIHJldHVybiBmYWlsdXJlVHlwZUxpc3Quc29tZShmdW5jdGlvbihlbGVtZW50KSB7Ci0g
ICAgICAgIHJldHVybiByZXN1bHRzLmZhaWx1cmVUeXBlVG9FeHRlbnNpb25MaXN0KGVsZW1lbnQp
Lmxlbmd0aCA+IDA7Ci0gICAgfSk7Ci19OwotCi1yZXN1bHRzLmRpcmVjdG9yeUZvckJ1aWxkZXIg
PSBmdW5jdGlvbihidWlsZGVyTmFtZSkKLXsKLSAgICByZXR1cm4gY29uZmlnLmtQbGF0Zm9ybXNb
Y29uZmlnLmN1cnJlbnRQbGF0Zm9ybV0ucmVzdWx0c0RpcmVjdG9yeU5hbWVGcm9tQnVpbGRlck5h
bWUoYnVpbGRlck5hbWUpOwotfQotCi1mdW5jdGlvbiByZXN1bHRzRGlyZWN0b3J5VVJMKHBsYXRm
b3JtLCBidWlsZGVyTmFtZSkKLXsKLSAgICBpZiAoY29uZmlnLnVzZUxvY2FsUmVzdWx0cykKLSAg
ICAgICAgcmV0dXJuICcvbG9jYWxyZXN1bHQ/cGF0aD0nOwotICAgIHJldHVybiByZXN1bHRzRGly
ZWN0b3J5TGlzdGluZ1VSTChwbGF0Zm9ybSwgYnVpbGRlck5hbWUpICsgJ3Jlc3VsdHMvbGF5b3V0
LXRlc3QtcmVzdWx0cy8nOwotfQotCi1mdW5jdGlvbiByZXN1bHRzRGlyZWN0b3J5TGlzdGluZ1VS
TChwbGF0Zm9ybSwgYnVpbGRlck5hbWUpCi17Ci0gICAgcmV0dXJuIGxheW91dFRlc3RSZXN1bHRz
VVJMKHBsYXRmb3JtKSArICcvJyArIHJlc3VsdHMuZGlyZWN0b3J5Rm9yQnVpbGRlcihidWlsZGVy
TmFtZSkgKyAnLyc7Ci19Ci0KLWZ1bmN0aW9uIHJlc3VsdHNEaXJlY3RvcnlVUkxGb3JCdWlsZE51
bWJlcihwbGF0Zm9ybSwgYnVpbGRlck5hbWUsIGJ1aWxkTnVtYmVyLCByZXZpc2lvbikKLXsKLSAg
ICByZXR1cm4gcmVzdWx0c0RpcmVjdG9yeUxpc3RpbmdVUkwocGxhdGZvcm0sIGJ1aWxkZXJOYW1l
KSArIGNvbmZpZy5rUGxhdGZvcm1zW3BsYXRmb3JtXS5yZXN1bHRzRGlyZWN0b3J5Rm9yQnVpbGRO
dW1iZXIoYnVpbGROdW1iZXIsIHJldmlzaW9uKSArICcvJzsKLX0KLQotZnVuY3Rpb24gcmVzdWx0
c1N1bW1hcnlVUkwocGxhdGZvcm0sIGJ1aWxkZXJOYW1lKQotewotICAgIHJldHVybiByZXN1bHRz
RGlyZWN0b3J5VVJMKHBsYXRmb3JtLCBidWlsZGVyTmFtZSkgKyBrUmVzdWx0c05hbWU7Ci19Ci0K
LWZ1bmN0aW9uIHJlc3VsdHNTdW1tYXJ5VVJMRm9yQnVpbGROdW1iZXIocGxhdGZvcm0sIGJ1aWxk
ZXJOYW1lLCBidWlsZE51bWJlciwgcmV2aXNpb24pCi17Ci0gICAgcmV0dXJuIHJlc3VsdHNEaXJl
Y3RvcnlVUkxGb3JCdWlsZE51bWJlcihwbGF0Zm9ybSwgYnVpbGRlck5hbWUsIGJ1aWxkTnVtYmVy
LCByZXZpc2lvbikgKyBrUmVzdWx0c05hbWU7Ci19Ci0KLXZhciBnX3Jlc3VsdHNDYWNoZSA9IG5l
dyBiYXNlLkFzeW5jaHJvbm91c0NhY2hlKGZ1bmN0aW9uIChrZXksIGNhbGxiYWNrKSB7Ci0gICAg
bmV0Lmpzb25wKGtleSwgY2FsbGJhY2spOwotfSk7Ci0KLXJlc3VsdHMuUmVzdWx0QW5hbHl6ZXIg
PSBiYXNlLmV4dGVuZHMoT2JqZWN0LCB7Ci0gICAgaW5pdDogZnVuY3Rpb24ocmVzdWx0Tm9kZSkK
LSAgICB7Ci0gICAgICAgIHRoaXMuX2FjdHVhbCA9IHJlc3VsdE5vZGUgPyByZXN1bHRzLmZhaWx1
cmVUeXBlTGlzdChyZXN1bHROb2RlLmFjdHVhbCkgOiBbXTsKLSAgICAgICAgdGhpcy5fZXhwZWN0
ZWQgPSByZXN1bHROb2RlID8gdGhpcy5fYWRkSW1wbGllZEV4cGVjdGF0aW9ucyhyZXN1bHRzLmZh
aWx1cmVUeXBlTGlzdChyZXN1bHROb2RlLmV4cGVjdGVkKSkgOiBbXTsKLSAgICAgICAgdGhpcy5f
d29udGZpeCA9IHJlc3VsdE5vZGUgPyByZXN1bHROb2RlLndvbnRmaXggOiBmYWxzZTsKLSAgICB9
LAotICAgIF9hZGRJbXBsaWVkRXhwZWN0YXRpb25zOiBmdW5jdGlvbihyZXN1bHRzTGlzdCkKLSAg
ICB7Ci0gICAgICAgIGlmIChyZXN1bHRzTGlzdC5pbmRleE9mKCdGQUlMJykgPT0gLTEpCi0gICAg
ICAgICAgICByZXR1cm4gcmVzdWx0c0xpc3Q7Ci0gICAgICAgIHJldHVybiByZXN1bHRzTGlzdC5j
b25jYXQoa0ZhaWxpbmdSZXN1bHRzKTsKLSAgICB9LAotICAgIF9oYXNQYXNzOiBmdW5jdGlvbihy
ZXN1bHRzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMuaW5kZXhPZihQQVNTKSAhPSAt
MTsKLSAgICB9LAotICAgIHVuZXhwZWN0ZWRSZXN1bHRzOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fYWN0dWFsLmZpbHRlcihmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAg
ICAgICAgIHJldHVybiB0aGlzLl9leHBlY3RlZC5pbmRleE9mKHJlc3VsdCkgPT0gLTE7Ci0gICAg
ICAgIH0sIHRoaXMpOwotICAgIH0sCi0gICAgc3VjY2VlZGVkOiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5faGFzUGFzcyh0aGlzLl9hY3R1YWwpOwotICAgIH0sCi0gICAg
ZXhwZWN0ZWRUb1N1Y2NlZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9oYXNQYXNzKHRoaXMuX2V4cGVjdGVkKTsKLSAgICB9LAotICAgIGZsYWt5OiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fYWN0dWFsLmxlbmd0aCA+IDE7Ci0gICAgfSwK
LSAgICB3b250Zml4OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fd29u
dGZpeDsKLSAgICB9LAotICAgIGhhc1VuZXhwZWN0ZWRGYWlsdXJlczogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgdmFyIGRpZmZlcmVuY2UgPSB7fTsKLSAgICAgICAgdGhpcy5fYWN0dWFsLmZv
ckVhY2goZnVuY3Rpb24oYWN0dWFsKSB7Ci0gICAgICAgICAgICBkaWZmZXJlbmNlW2FjdHVhbF0g
PSBhY3R1YWwgIT09IFBBU1M7Ci0gICAgICAgIH0pOwotICAgICAgICB0aGlzLl9leHBlY3RlZC5m
b3JFYWNoKGZ1bmN0aW9uKGV4cGVjdGVkKSB7Ci0gICAgICAgICAgICBpZiAoZXhwZWN0ZWQgIT09
IFBBU1MpCi0gICAgICAgICAgICAgICAgZGVsZXRlIGRpZmZlcmVuY2VbZXhwZWN0ZWRdOwotICAg
ICAgICB9KTsKLSAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGRpZmZlcmVuY2UpLnNvbWUoZnVu
Y3Rpb24oa2V5KSB7Ci0gICAgICAgICAgICByZXR1cm4gZGlmZmVyZW5jZVtrZXldOwotICAgICAg
ICB9KTsKLSAgICB9Ci19KQotCi1mdW5jdGlvbiBpc0V4cGVjdGVkRmFpbHVyZShyZXN1bHROb2Rl
KQotewotICAgIHZhciBhbmFseXplciA9IG5ldyByZXN1bHRzLlJlc3VsdEFuYWx5emVyKHJlc3Vs
dE5vZGUpOwotICAgIHJldHVybiAhYW5hbHl6ZXIuaGFzVW5leHBlY3RlZEZhaWx1cmVzKCkgJiYg
IWFuYWx5emVyLnN1Y2NlZWRlZCgpICYmICFhbmFseXplci5mbGFreSgpICYmICFhbmFseXplci53
b250Zml4KCk7Ci19Ci0KLWZ1bmN0aW9uIGlzVW5leHBlY3RlZEZhaWx1cmUocmVzdWx0Tm9kZSkK
LXsKLSAgICB2YXIgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRBbmFseXplcihyZXN1bHRO
b2RlKTsKLSAgICByZXR1cm4gYW5hbHl6ZXIuaGFzVW5leHBlY3RlZEZhaWx1cmVzKCkgJiYgIWFu
YWx5emVyLnN1Y2NlZWRlZCgpICYmICFhbmFseXplci5mbGFreSgpICYmICFhbmFseXplci53b250
Zml4KCk7Ci19Ci0KLWZ1bmN0aW9uIGlzUmVzdWx0Tm9kZShub2RlKQotewotICAgIHJldHVybiAh
IW5vZGUuYWN0dWFsOwotfQotCi1yZXN1bHRzLmV4cGVjdGVkRmFpbHVyZXMgPSBmdW5jdGlvbihy
ZXN1bHRzVHJlZSkKLXsKLSAgICByZXR1cm4gYmFzZS5maWx0ZXJUcmVlKHJlc3VsdHNUcmVlLnRl
c3RzLCBpc1Jlc3VsdE5vZGUsIGlzRXhwZWN0ZWRGYWlsdXJlKTsKLX07Ci0KLXJlc3VsdHMudW5l
eHBlY3RlZEZhaWx1cmVzID0gZnVuY3Rpb24ocmVzdWx0c1RyZWUpCi17Ci0gICAgcmV0dXJuIGJh
c2UuZmlsdGVyVHJlZShyZXN1bHRzVHJlZS50ZXN0cywgaXNSZXN1bHROb2RlLCBpc1VuZXhwZWN0
ZWRGYWlsdXJlKTsKLX07Ci0KLXJlc3VsdHMudW5leHBlY3RlZFN1Y2Nlc3NlcyA9IGZ1bmN0aW9u
KHJlc3VsdHNUcmVlKQotewotICAgIHJldHVybiBiYXNlLmZpbHRlclRyZWUocmVzdWx0c1RyZWUu
dGVzdHMsIGlzUmVzdWx0Tm9kZSwgZnVuY3Rpb24ocmVzdWx0Tm9kZSkgewotICAgICAgICB2YXIg
YW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRBbmFseXplcihyZXN1bHROb2RlKTsKLSAgICAg
ICAgcmV0dXJuICFhbmFseXplci5leHBlY3RlZFRvU3VjY2VlZCgpICYmIGFuYWx5emVyLnN1Y2Nl
ZWRlZCgpICYmICFhbmFseXplci5mbGFreSgpOwotICAgIH0pOwotfTsKLQotZnVuY3Rpb24gcmVz
dWx0c0J5VGVzdChyZXN1bHRzQnlCdWlsZGVyLCBmaWx0ZXIpCi17Ci0gICAgdmFyIHJlc3VsdHNC
eVRlc3QgPSB7fTsKLQotICAgICQuZWFjaChyZXN1bHRzQnlCdWlsZGVyLCBmdW5jdGlvbihidWls
ZGVyTmFtZSwgcmVzdWx0c1RyZWUpIHsKLSAgICAgICAgJC5lYWNoKGZpbHRlcihyZXN1bHRzVHJl
ZSksIGZ1bmN0aW9uKHRlc3ROYW1lLCByZXN1bHROb2RlKSB7Ci0gICAgICAgICAgICByZXN1bHRz
QnlUZXN0W3Rlc3ROYW1lXSA9IHJlc3VsdHNCeVRlc3RbdGVzdE5hbWVdIHx8IHt9OwotICAgICAg
ICAgICAgaWYgKCFjb25maWcua1BsYXRmb3Jtc1tjb25maWcuY3VycmVudFBsYXRmb3JtXS5oYXZl
QnVpbGRlckFjY3VtdWxhdGVkUmVzdWx0cykKLSAgICAgICAgICAgICAgICByZXN1bHROb2RlLl9i
dWlsZExvY2F0aW9uID0gcmVzdWx0c1RyZWUuX2J1aWxkTG9jYXRpb247Ci0gICAgICAgICAgICBy
ZXN1bHRzQnlUZXN0W3Rlc3ROYW1lXVtidWlsZGVyTmFtZV0gPSByZXN1bHROb2RlOwotICAgICAg
ICB9KTsKLSAgICB9KTsKLQotICAgIHJldHVybiByZXN1bHRzQnlUZXN0OwotfQotCi1yZXN1bHRz
LmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QgPSBmdW5jdGlvbihyZXN1bHRzQnlCdWlsZGVyKQotewot
ICAgIHJldHVybiByZXN1bHRzQnlUZXN0KHJlc3VsdHNCeUJ1aWxkZXIsIHJlc3VsdHMuZXhwZWN0
ZWRGYWlsdXJlcyk7Ci19OwotCi1yZXN1bHRzLnVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCA9IGZ1
bmN0aW9uKHJlc3VsdHNCeUJ1aWxkZXIpCi17Ci0gICAgcmV0dXJuIHJlc3VsdHNCeVRlc3QocmVz
dWx0c0J5QnVpbGRlciwgcmVzdWx0cy51bmV4cGVjdGVkRmFpbHVyZXMpOwotfTsKLQotcmVzdWx0
cy51bmV4cGVjdGVkU3VjY2Vzc2VzQnlUZXN0ID0gZnVuY3Rpb24ocmVzdWx0c0J5QnVpbGRlcikK
LXsKLSAgICByZXR1cm4gcmVzdWx0c0J5VGVzdChyZXN1bHRzQnlCdWlsZGVyLCByZXN1bHRzLnVu
ZXhwZWN0ZWRTdWNjZXNzZXMpOwotfTsKLQotcmVzdWx0cy5mYWlsdXJlSW5mb0ZvclRlc3RBbmRC
dWlsZGVyID0gZnVuY3Rpb24ocmVzdWx0c0J5VGVzdCwgdGVzdE5hbWUsIGJ1aWxkZXJOYW1lKQot
ewotICAgIHZhciBmYWlsdXJlSW5mb0ZvclRlc3QgPSB7Ci0gICAgICAgICd0ZXN0TmFtZSc6IHRl
c3ROYW1lLAotICAgICAgICAnYnVpbGRlck5hbWUnOiBidWlsZGVyTmFtZSwKLSAgICAgICAgJ2Zh
aWx1cmVUeXBlTGlzdCc6IHJlc3VsdHMuZmFpbHVyZVR5cGVMaXN0KHJlc3VsdHNCeVRlc3RbdGVz
dE5hbWVdW2J1aWxkZXJOYW1lXS5hY3R1YWwpLAotICAgIH07Ci0gICAgCi0gICAgaWYgKCFjb25m
aWcua1BsYXRmb3Jtc1tjb25maWcuY3VycmVudFBsYXRmb3JtXS5oYXZlQnVpbGRlckFjY3VtdWxh
dGVkUmVzdWx0cykKLSAgICAgICAgZmFpbHVyZUluZm9Gb3JUZXN0LmJ1aWxkTG9jYXRpb24gPSBy
ZXN1bHRzQnlUZXN0W3Rlc3ROYW1lXVtidWlsZGVyTmFtZV0uX2J1aWxkTG9jYXRpb247Ci0gICAg
Ci0gICAgcmV0dXJuIGZhaWx1cmVJbmZvRm9yVGVzdDsKLX07Ci0KLXJlc3VsdHMuY29sbGVjdFVu
ZXhwZWN0ZWRSZXN1bHRzID0gZnVuY3Rpb24oZGljdGlvbmFyeU9mUmVzdWx0Tm9kZXMpCi17Ci0g
ICAgdmFyIGNvbGxlY3RlZFJlc3VsdHMgPSBbXTsKLSAgICAkLmVhY2goZGljdGlvbmFyeU9mUmVz
dWx0Tm9kZXMsIGZ1bmN0aW9uKGtleSwgcmVzdWx0Tm9kZSkgewotICAgICAgICB2YXIgYW5hbHl6
ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRBbmFseXplcihyZXN1bHROb2RlKTsKLSAgICAgICAgY29s
bGVjdGVkUmVzdWx0cyA9IGNvbGxlY3RlZFJlc3VsdHMuY29uY2F0KGFuYWx5emVyLnVuZXhwZWN0
ZWRSZXN1bHRzKCkpOwotICAgIH0pOwotICAgIHJldHVybiBiYXNlLnVuaXF1aWZ5QXJyYXkoY29s
bGVjdGVkUmVzdWx0cyk7Ci19OwotCi0vLyBDYWxsYmFjayBkYXRhIGlzIFt7IGJ1aWxkTnVtYmVy
OiwgcmV2aXNpb246LCB1cmw6IH1dCi1mdW5jdGlvbiBoaXN0b3JpY2FsUmVzdWx0c0xvY2F0aW9u
cyhwbGF0Zm9ybSwgYnVpbGRlck5hbWUsIGNhbGxiYWNrKQotewotICAgIGlmIChjb25maWcua1Bs
YXRmb3Jtc1twbGF0Zm9ybV0udXNlRGlyZWN0b3J5TGlzdGluZ0Zvck9sZEJ1aWxkcykgewotICAg
ICAgICB2YXIgbGlzdGluZ1VSTCA9IHJlc3VsdHNEaXJlY3RvcnlMaXN0aW5nVVJMKHBsYXRmb3Jt
LCBidWlsZGVyTmFtZSk7Ci0gICAgICAgIG5ldC5nZXQobGlzdGluZ1VSTCwgZnVuY3Rpb24oZGly
ZWN0b3J5TGlzdGluZykgewotICAgICAgICAgICAgdmFyIGhpc3RvcmljYWxSZXN1bHRzRGF0YSA9
IGRpcmVjdG9yeUxpc3RpbmcubWF0Y2goa0J1aWxkTGlua1JlZ2V4cCkubWFwKGZ1bmN0aW9uKGJ1
aWxkTGluaykgewotICAgICAgICAgICAgICAgIHZhciBidWlsZE51bWJlciA9IHBhcnNlSW50KGJ1
aWxkTGluay5tYXRjaChrQnVpbGROdW1iZXJSZWdleHApWzBdKTsKLSAgICAgICAgICAgICAgICB2
YXIgcmV2aXNpb24gPSAwOyAvLyB1bnVzZWQgZm9yIENocm9taXVtLgotICAgICAgICAgICAgICAg
IHZhciByZXN1bHRzRGF0YSA9IHsKLSAgICAgICAgICAgICAgICAgICAgJ2J1aWxkTnVtYmVyJzog
YnVpbGROdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICdyZXZpc2lvbic6IHJldmlzaW9uLAot
ICAgICAgICAgICAgICAgICAgICAndXJsJzogcmVzdWx0c1N1bW1hcnlVUkxGb3JCdWlsZE51bWJl
cihwbGF0Zm9ybSwgYnVpbGRlck5hbWUsIGJ1aWxkTnVtYmVyLCByZXZpc2lvbikKLSAgICAgICAg
ICAgICAgICB9OwotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzRGF0YTsKLSAgICAgICAg
ICAgIH0pLnJldmVyc2UoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FsbGJhY2soaGlz
dG9yaWNhbFJlc3VsdHNEYXRhKTsKLSAgICAgICAgfSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
dmFyIGhpc3RvcmljYWxSZXN1bHRzRGF0YSA9IFtdOwotICAgICAgICBidWlsZGVycy5jYWNoZWRC
dWlsZEluZm9zKHBsYXRmb3JtLCBidWlsZGVyTmFtZSwgZnVuY3Rpb24oY2FjaGVkQnVpbGRJbmZv
cykgewotICAgICAgICAgICAgJC5lYWNoKGNhY2hlZEJ1aWxkSW5mb3MsIGZ1bmN0aW9uKGJ1aWxk
TnVtYmVyLCBidWlsZEluZm8pIHsKLSAgICAgICAgICAgICAgICB2YXIgcmVzdWx0c0RhdGEgPSB7
Ci0gICAgICAgICAgICAgICAgICAgICdidWlsZE51bWJlcic6IGJ1aWxkTnVtYmVyLAotICAgICAg
ICAgICAgICAgICAgICAncmV2aXNpb24nOiBidWlsZEluZm8uc291cmNlU3RhbXAucmV2aXNpb24s
Ci0gICAgICAgICAgICAgICAgICAgICd1cmwnOiByZXN1bHRzU3VtbWFyeVVSTEZvckJ1aWxkTnVt
YmVyKHBsYXRmb3JtLCBidWlsZGVyTmFtZSwgYnVpbGROdW1iZXIsIGJ1aWxkSW5mby5zb3VyY2VT
dGFtcC5yZXZpc2lvbiksCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGhpc3Rv
cmljYWxSZXN1bHRzRGF0YS5wdXNoKHJlc3VsdHNEYXRhKTsKLSAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBjYWxsYmFjayhoaXN0b3JpY2FsUmVzdWx0c0RhdGEucmV2
ZXJzZSgpKTsKLSAgICAgICAgfSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB3YWxrSGlzdG9yeShw
bGF0Zm9ybSwgYnVpbGRlck5hbWUsIHRlc3ROYW1lLCBjYWxsYmFjaykKLXsKLSAgICB2YXIgaW5k
ZXhPZk5leHRLZXlUb0ZldGNoID0gMDsKLSAgICB2YXIga2V5TGlzdCA9IFtdOwotCi0gICAgZnVu
Y3Rpb24gY29udGludWVXYWxrKCkKLSAgICB7Ci0gICAgICAgIGlmIChpbmRleE9mTmV4dEtleVRv
RmV0Y2ggPj0ga2V5TGlzdC5sZW5ndGgpIHsKLSAgICAgICAgICAgIHByb2Nlc3NSZXN1bHROb2Rl
KDAsIG51bGwpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFy
IHJlc3VsdHNVUkwgPSBrZXlMaXN0W2luZGV4T2ZOZXh0S2V5VG9GZXRjaF0udXJsOwotICAgICAg
ICArK2luZGV4T2ZOZXh0S2V5VG9GZXRjaDsKLSAgICAgICAgZ19yZXN1bHRzQ2FjaGUuZ2V0KHJl
c3VsdHNVUkwsIGZ1bmN0aW9uKHJlc3VsdHNUcmVlKSB7Ci0gICAgICAgICAgICBpZiAoJC5pc0Vt
cHR5T2JqZWN0KHJlc3VsdHNUcmVlKSkgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlV2Fsaygp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZh
ciByZXN1bHROb2RlID0gcmVzdWx0cy5yZXN1bHROb2RlRm9yVGVzdChyZXN1bHRzVHJlZSwgdGVz
dE5hbWUpOwotICAgICAgICAgICAgdmFyIHJldmlzaW9uID0gcGFyc2VJbnQocmVzdWx0c1RyZWVb
J3JldmlzaW9uJ10pCi0gICAgICAgICAgICBpZiAoaXNOYU4ocmV2aXNpb24pKQotICAgICAgICAg
ICAgICAgIHJldmlzaW9uID0gMDsKLSAgICAgICAgICAgIHByb2Nlc3NSZXN1bHROb2RlKHJldmlz
aW9uLCByZXN1bHROb2RlKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcHJv
Y2Vzc1Jlc3VsdE5vZGUocmV2aXNpb24sIHJlc3VsdE5vZGUpCi0gICAgewotICAgICAgICB2YXIg
c2hvdWxkQ29udGludWUgPSBjYWxsYmFjayhyZXZpc2lvbiwgcmVzdWx0Tm9kZSk7Ci0gICAgICAg
IGlmICghc2hvdWxkQ29udGludWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNvbnRp
bnVlV2FsaygpOwotICAgIH0KLQotICAgIGhpc3RvcmljYWxSZXN1bHRzTG9jYXRpb25zKHBsYXRm
b3JtLCBidWlsZGVyTmFtZSwgZnVuY3Rpb24ocmVzdWx0c0xvY2F0aW9ucykgewotICAgICAgICBr
ZXlMaXN0ID0gcmVzdWx0c0xvY2F0aW9uczsKLSAgICAgICAgY29udGludWVXYWxrKCk7Ci0gICAg
fSk7Ci19Ci0KLXJlc3VsdHMucmVncmVzc2lvblJhbmdlRm9yRmFpbHVyZSA9IGZ1bmN0aW9uKGJ1
aWxkZXJOYW1lLCB0ZXN0TmFtZSwgY2FsbGJhY2spCi17Ci0gICAgdmFyIG9sZGVzdEZhaWxpbmdS
ZXZpc2lvbiA9IDA7Ci0gICAgdmFyIG5ld2VzdFBhc3NpbmdSZXZpc2lvbiA9IDA7Ci0KLSAgICAv
LyBGSVhNRTogc2hvdWxkIHRyZWF0IHtwbGF0Zm9ybSwgYnVpbGRlck5hbWV9IGFzIGEgdHVwbGUK
LSAgICB3YWxrSGlzdG9yeShjb25maWcuY3VycmVudFBsYXRmb3JtLCBidWlsZGVyTmFtZSwgdGVz
dE5hbWUsIGZ1bmN0aW9uKHJldmlzaW9uLCByZXN1bHROb2RlKSB7Ci0gICAgICAgIGlmICghcmV2
aXNpb24pIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKG9sZGVzdEZhaWxpbmdSZXZpc2lvbiwgbmV3
ZXN0UGFzc2luZ1JldmlzaW9uKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQotICAgICAgICBpZiAoIXJlc3VsdE5vZGUpIHsKLSAgICAgICAgICAgIG5ld2VzdFBhc3NpbmdS
ZXZpc2lvbiA9IHJldmlzaW9uOwotICAgICAgICAgICAgY2FsbGJhY2sob2xkZXN0RmFpbGluZ1Jl
dmlzaW9uLCBuZXdlc3RQYXNzaW5nUmV2aXNpb24pOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc1VuZXhwZWN0ZWRGYWlsdXJlKHJlc3VsdE5vZGUp
KSB7Ci0gICAgICAgICAgICBvbGRlc3RGYWlsaW5nUmV2aXNpb24gPSByZXZpc2lvbjsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICghb2xkZXN0RmFpbGlu
Z1JldmlzaW9uKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7ICAvLyBXZSBuZWVkIHRvIGtlZXAg
bG9va2luZyBmb3IgYSBmYWlsaW5nIHJldmlzaW9uLgotICAgICAgICBuZXdlc3RQYXNzaW5nUmV2
aXNpb24gPSByZXZpc2lvbjsKLSAgICAgICAgY2FsbGJhY2sob2xkZXN0RmFpbGluZ1JldmlzaW9u
LCBuZXdlc3RQYXNzaW5nUmV2aXNpb24pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSk7
Ci19OwotCi1mdW5jdGlvbiBtZXJnZVJlZ3Jlc3Npb25SYW5nZXMocmVncmVzc2lvblJhbmdlcykK
LXsKLSAgICB2YXIgbWVyZ2VkUmFuZ2UgPSB7fTsKLQotICAgIG1lcmdlZFJhbmdlLm9sZGVzdEZh
aWxpbmdSZXZpc2lvbiA9IDA7Ci0gICAgbWVyZ2VkUmFuZ2UubmV3ZXN0UGFzc2luZ1JldmlzaW9u
ID0gMDsKLQotICAgICQuZWFjaChyZWdyZXNzaW9uUmFuZ2VzLCBmdW5jdGlvbihidWlsZGVyTmFt
ZSwgcmFuZ2UpIHsKLSAgICAgICAgaWYgKCFyYW5nZS5vbGRlc3RGYWlsaW5nUmV2aXNpb24gJiYg
IXJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbikKLSAgICAgICAgICAgIHJldHVybgotCi0gICAg
ICAgIGlmICghbWVyZ2VkUmFuZ2Uub2xkZXN0RmFpbGluZ1JldmlzaW9uKQotICAgICAgICAgICAg
bWVyZ2VkUmFuZ2Uub2xkZXN0RmFpbGluZ1JldmlzaW9uID0gcmFuZ2Uub2xkZXN0RmFpbGluZ1Jl
dmlzaW9uOwotICAgICAgICBpZiAoIW1lcmdlZFJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbikK
LSAgICAgICAgICAgIG1lcmdlZFJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiA9IHJhbmdlLm5l
d2VzdFBhc3NpbmdSZXZpc2lvbjsKLQotICAgICAgICBpZiAocmFuZ2Uub2xkZXN0RmFpbGluZ1Jl
dmlzaW9uICYmIHJhbmdlLm9sZGVzdEZhaWxpbmdSZXZpc2lvbiA8IG1lcmdlZFJhbmdlLm9sZGVz
dEZhaWxpbmdSZXZpc2lvbikKLSAgICAgICAgICAgIG1lcmdlZFJhbmdlLm9sZGVzdEZhaWxpbmdS
ZXZpc2lvbiA9IHJhbmdlLm9sZGVzdEZhaWxpbmdSZXZpc2lvbjsKLSAgICAgICAgaWYgKHJhbmdl
Lm5ld2VzdFBhc3NpbmdSZXZpc2lvbiA+IG1lcmdlZFJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lv
bikKLSAgICAgICAgICAgIG1lcmdlZFJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiA9IHJhbmdl
Lm5ld2VzdFBhc3NpbmdSZXZpc2lvbjsKLSAgICB9KTsKLQotICAgIHJldHVybiBtZXJnZWRSYW5n
ZTsKLX0KLQotcmVzdWx0cy51bmlmeVJlZ3Jlc3Npb25SYW5nZXMgPSBmdW5jdGlvbihidWlsZGVy
TmFtZUxpc3QsIHRlc3ROYW1lLCBjYWxsYmFjaykKLXsKLSAgICB2YXIgcmVncmVzc2lvblJhbmdl
cyA9IHt9OwotCi0gICAgdmFyIHRyYWNrZXIgPSBuZXcgYmFzZS5SZXF1ZXN0VHJhY2tlcihidWls
ZGVyTmFtZUxpc3QubGVuZ3RoLCBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIG1lcmdlZFJhbmdl
ID0gbWVyZ2VSZWdyZXNzaW9uUmFuZ2VzKHJlZ3Jlc3Npb25SYW5nZXMpOwotICAgICAgICBjYWxs
YmFjayhtZXJnZWRSYW5nZS5vbGRlc3RGYWlsaW5nUmV2aXNpb24sIG1lcmdlZFJhbmdlLm5ld2Vz
dFBhc3NpbmdSZXZpc2lvbik7Ci0gICAgfSk7Ci0KLSAgICAkLmVhY2goYnVpbGRlck5hbWVMaXN0
LCBmdW5jdGlvbihpbmRleCwgYnVpbGRlck5hbWUpIHsKLSAgICAgICAgcmVzdWx0cy5yZWdyZXNz
aW9uUmFuZ2VGb3JGYWlsdXJlKGJ1aWxkZXJOYW1lLCB0ZXN0TmFtZSwgZnVuY3Rpb24ob2xkZXN0
RmFpbGluZ1JldmlzaW9uLCBuZXdlc3RQYXNzaW5nUmV2aXNpb24pIHsKLSAgICAgICAgICAgIHZh
ciByYW5nZSA9IHt9OwotICAgICAgICAgICAgcmFuZ2Uub2xkZXN0RmFpbGluZ1JldmlzaW9uID0g
b2xkZXN0RmFpbGluZ1JldmlzaW9uOwotICAgICAgICAgICAgcmFuZ2UubmV3ZXN0UGFzc2luZ1Jl
dmlzaW9uID0gbmV3ZXN0UGFzc2luZ1JldmlzaW9uOwotICAgICAgICAgICAgcmVncmVzc2lvblJh
bmdlc1tidWlsZGVyTmFtZV0gPSByYW5nZTsKLSAgICAgICAgICAgIHRyYWNrZXIucmVxdWVzdENv
bXBsZXRlKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfTsKLQotcmVzdWx0cy5jb3VudEZhaWx1
cmVPY2N1cmVuY2VzID0gZnVuY3Rpb24oYnVpbGRlck5hbWVMaXN0LCB0ZXN0TmFtZSwgY2FsbGJh
Y2spCi17Ci0gICAgdmFyIGZhaWx1cmVDb3VudCA9IDA7Ci0KLSAgICB2YXIgdHJhY2tlciA9IG5l
dyBiYXNlLlJlcXVlc3RUcmFja2VyKGJ1aWxkZXJOYW1lTGlzdC5sZW5ndGgsIGZ1bmN0aW9uKCkg
ewotICAgICAgICBjYWxsYmFjayhmYWlsdXJlQ291bnQpOwotICAgIH0pOwotCi0gICAgJC5lYWNo
KGJ1aWxkZXJOYW1lTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGJ1aWxkZXJOYW1lKSB7Ci0gICAgICAg
IHdhbGtIaXN0b3J5KGNvbmZpZy5jdXJyZW50UGxhdGZvcm0sIGJ1aWxkZXJOYW1lLCB0ZXN0TmFt
ZSwgZnVuY3Rpb24ocmV2aXNpb24sIHJlc3VsdE5vZGUpIHsKLSAgICAgICAgICAgIGlmIChpc1Vu
ZXhwZWN0ZWRGYWlsdXJlKHJlc3VsdE5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgKytmYWlsdXJl
Q291bnQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB0cmFja2VyLnJlcXVlc3RDb21wbGV0ZSgpOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9KTsKLSAgICB9KTsKLX07Ci0KLXJlc3VsdHMucmVzdWx0Tm9kZUZvclRl
c3QgPSBmdW5jdGlvbihyZXN1bHRzVHJlZSwgdGVzdE5hbWUpCi17Ci0gICAgdmFyIHRlc3ROYW1l
UGF0aCA9IHRlc3ROYW1lLnNwbGl0KCcvJyk7Ci0gICAgdmFyIGN1cnJlbnROb2RlID0gcmVzdWx0
c1RyZWVbJ3Rlc3RzJ107Ci0gICAgJC5lYWNoKHRlc3ROYW1lUGF0aCwgZnVuY3Rpb24oaW5kZXgs
IHNlZ21lbnROYW1lKSB7Ci0gICAgICAgIGlmICghY3VycmVudE5vZGUpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGN1cnJlbnROb2RlID0gKHNlZ21lbnROYW1lIGluIGN1cnJlbnROb2Rl
KSA/IGN1cnJlbnROb2RlW3NlZ21lbnROYW1lXSA6IG51bGw7Ci0gICAgfSk7Ci0gICAgcmV0dXJu
IGN1cnJlbnROb2RlOwotfTsKLQotcmVzdWx0cy5yZXN1bHRLaW5kID0gZnVuY3Rpb24odXJsKQot
ewotICAgIGlmICgvLWFjdHVhbFwuW2Etel0rJC8udGVzdCh1cmwpKQotICAgICAgICByZXR1cm4g
cmVzdWx0cy5rQWN0dWFsS2luZDsKLSAgICBlbHNlIGlmICgvLWV4cGVjdGVkXC5bYS16XSskLy50
ZXN0KHVybCkpCi0gICAgICAgIHJldHVybiByZXN1bHRzLmtFeHBlY3RlZEtpbmQ7Ci0gICAgZWxz
ZSBpZiAoL2RpZmZcLlthLXpdKyQvLnRlc3QodXJsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMu
a0RpZmZLaW5kOwotICAgIHJldHVybiByZXN1bHRzLmtVbmtub3duS2luZDsKLX0KLQotcmVzdWx0
cy5yZXN1bHRUeXBlID0gZnVuY3Rpb24odXJsKQotewotICAgIGlmICgvXC5wbmckLy50ZXN0KHVy
bCkpCi0gICAgICAgIHJldHVybiByZXN1bHRzLmtJbWFnZVR5cGU7Ci0gICAgaWYgKC9cLndhdiQv
LnRlc3QodXJsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMua0F1ZGlvVHlwZTsKLSAgICByZXR1
cm4gcmVzdWx0cy5rVGV4dFR5cGU7Ci19Ci0KLWZ1bmN0aW9uIHNvcnRSZXN1bHRVUkxzQnlTdWZm
aXgodXJscykKLXsKLSAgICB2YXIgc29ydGVkVVJMcyA9IFtdOwotICAgICQuZWFjaChrUHJlZmVy
cmVkU3VmZml4T3JkZXIsIGZ1bmN0aW9uKGksIHN1ZmZpeCkgewotICAgICAgICAkLmVhY2godXJs
cywgZnVuY3Rpb24oaiwgdXJsKSB7Ci0gICAgICAgICAgICBpZiAoIWJhc2UuZW5kc1dpdGgodXJs
LCBzdWZmaXgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHNvcnRlZFVS
THMucHVzaCh1cmwpOwotICAgICAgICB9KTsKLSAgICB9KTsKLSAgICBpZiAoc29ydGVkVVJMcy5s
ZW5ndGggIT0gdXJscy5sZW5ndGgpCi0gICAgICAgIHRocm93ICJzb3J0UmVzdWx0VVJMc0J5U3Vm
Zml4IGZhaWxlZCB0byByZXR1cm4gdGhlIHNhbWUgbnVtYmVyIG9mIFVSTHMuIgotICAgIHJldHVy
biBzb3J0ZWRVUkxzOwotfQotCi1yZXN1bHRzLmZldGNoUmVzdWx0c1VSTHMgPSBmdW5jdGlvbihm
YWlsdXJlSW5mbywgY2FsbGJhY2spCi17Ci0gICAgdmFyIHRlc3ROYW1lU3RlbSA9IGJhc2UudHJp
bUV4dGVuc2lvbihmYWlsdXJlSW5mby50ZXN0TmFtZSk7Ci0gICAgdmFyIHVybFN0ZW07Ci0gICAg
Ci0gICAgaWYgKGNvbmZpZy5rUGxhdGZvcm1zW2NvbmZpZy5jdXJyZW50UGxhdGZvcm1dLmhhdmVC
dWlsZGVyQWNjdW11bGF0ZWRSZXN1bHRzKQotICAgICAgICB1cmxTdGVtID0gcmVzdWx0c0RpcmVj
dG9yeVVSTChjb25maWcuY3VycmVudFBsYXRmb3JtLCBmYWlsdXJlSW5mby5idWlsZGVyTmFtZSk7
Ci0gICAgZWxzZSAKLSAgICAgICAgdXJsU3RlbSA9IGZhaWx1cmVJbmZvLmJ1aWxkTG9jYXRpb24u
dXJsLnJlcGxhY2Uoa1Jlc3VsdHNOYW1lLCAnJyk7Ci0KLSAgICB2YXIgc3VmZml4TGlzdCA9IHBv
c3NpYmxlU3VmZml4TGlzdEZvcihmYWlsdXJlSW5mby5mYWlsdXJlVHlwZUxpc3QpOwotICAgIHZh
ciByZXN1bHRVUkxzID0gW107Ci0gICAgdmFyIHRyYWNrZXIgPSBuZXcgYmFzZS5SZXF1ZXN0VHJh
Y2tlcihzdWZmaXhMaXN0Lmxlbmd0aCwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGNhbGxiYWNrKHNv
cnRSZXN1bHRVUkxzQnlTdWZmaXgocmVzdWx0VVJMcykpOwotICAgIH0pOwotICAgICQuZWFjaChz
dWZmaXhMaXN0LCBmdW5jdGlvbihpbmRleCwgc3VmZml4KSB7Ci0gICAgICAgIHZhciB1cmwgPSB1
cmxTdGVtICsgdGVzdE5hbWVTdGVtICsgc3VmZml4OwotICAgICAgICBuZXQucHJvYmUodXJsLCB7
Ci0gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXN1
bHRVUkxzLnB1c2godXJsKTsKLSAgICAgICAgICAgICAgICB0cmFja2VyLnJlcXVlc3RDb21wbGV0
ZSgpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgICAgICB0cmFja2VyLnJlcXVlc3RDb21wbGV0ZSgpOwotICAgICAgICAgICAgfSwK
LSAgICAgICAgfSk7Ci0gICAgfSk7Ci19OwotCi1yZXN1bHRzLmZldGNoUmVzdWx0c0ZvckJ1aWxk
ZXIgPSBmdW5jdGlvbihidWlsZGVyTmFtZSwgY2FsbGJhY2spCi17Ci0gICAgdmFyIHJlc3VsdHNV
UkwgPSByZXN1bHRzU3VtbWFyeVVSTChjb25maWcuY3VycmVudFBsYXRmb3JtLCBidWlsZGVyTmFt
ZSk7Ci0gICAgbmV0Lmpzb25wKHJlc3VsdHNVUkwsIGNhbGxiYWNrKTsKLX07Ci0KLXJlc3VsdHMu
ZmV0Y2hSZXN1bHRzRm9yQnVpbGRPbkJ1aWxkZXIgPSBmdW5jdGlvbihidWlsZGVyTmFtZSwgYnVp
bGROdW1iZXIsIHJldmlzaW9uLCBjYWxsYmFjaykKLXsKLSAgICB2YXIgcmVzdWx0c1VSTCA9IHJl
c3VsdHNTdW1tYXJ5VVJMRm9yQnVpbGROdW1iZXIoY29uZmlnLmN1cnJlbnRQbGF0Zm9ybSwgYnVp
bGRlck5hbWUsIGJ1aWxkTnVtYmVyLCByZXZpc2lvbik7Ci0gICAgbmV0Lmpzb25wKHJlc3VsdHNV
UkwsIGNhbGxiYWNrKTsKLX07Ci0KLS8vIExvb2sgZm9yIHRoZSBtb3N0IHJlY2VudCBjb21wbGV0
ZWQgYnVpbGQgdGhhdCBoYXMgZnVsbCByZXN1bHRzLgotcmVzdWx0cy5mZXRjaFJlc3VsdHNGb3JN
b3N0UmVjZW50Q29tcGxldGVkQnVpbGRPbkJ1aWxkZXIgPSBmdW5jdGlvbihidWlsZGVyTmFtZSwg
Y2FsbGJhY2spCi17Ci0gICAgaGlzdG9yaWNhbFJlc3VsdHNMb2NhdGlvbnMoY29uZmlnLmN1cnJl
bnRQbGF0Zm9ybSwgYnVpbGRlck5hbWUsIGZ1bmN0aW9uKGJ1aWxkTG9jYXRpb25zKSB7Ci0gICAg
ICAgIHZhciBjdXJyZW50SW5kZXggPSAwOwotICAgICAgICB2YXIgcmVzdWx0c0NhbGxiYWNrID0g
ZnVuY3Rpb24oYnVpbGRSZXN1bHRzKSB7Ci0gICAgICAgICAgICBpZiAoJC5pc0VtcHR5T2JqZWN0
KGJ1aWxkUmVzdWx0cykpIHsKLSAgICAgICAgICAgICAgICArK2N1cnJlbnRJbmRleDsKLSAgICAg
ICAgICAgICAgICBpZiAoY3VycmVudEluZGV4ID49IGJ1aWxkTG9jYXRpb25zLmxlbmd0aCkgewot
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG5ldC5qc29ucChi
dWlsZExvY2F0aW9uc1tjdXJyZW50SW5kZXhdLnVybCwgcmVzdWx0c0NhbGxiYWNrKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIWNvbmZp
Zy5rUGxhdGZvcm1zW2NvbmZpZy5jdXJyZW50UGxhdGZvcm1dLmhhdmVCdWlsZGVyQWNjdW11bGF0
ZWRSZXN1bHRzKQotICAgICAgICAgICAgICAgIGJ1aWxkUmVzdWx0cy5fYnVpbGRMb2NhdGlvbiA9
IGJ1aWxkTG9jYXRpb25zW2N1cnJlbnRJbmRleF07Ci0gICAgICAgICAgICBjYWxsYmFjayhidWls
ZFJlc3VsdHMpOwotICAgICAgICB9OwotICAgICAgICBuZXQuanNvbnAoYnVpbGRMb2NhdGlvbnNb
Y3VycmVudEluZGV4XS51cmwsIHJlc3VsdHNDYWxsYmFjayk7Ci0gICAgfSk7Ci19OwotCi1yZXN1
bHRzLmZldGNoUmVzdWx0c0J5QnVpbGRlciA9IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lTGlzdCwgY2Fs
bGJhY2spCi17Ci0gICAgdmFyIHJlc3VsdHNCeUJ1aWxkZXIgPSB7fTsKLSAgICBpZiAoY29uZmln
LmtQbGF0Zm9ybXNbY29uZmlnLmN1cnJlbnRQbGF0Zm9ybV0uaGF2ZUJ1aWxkZXJBY2N1bXVsYXRl
ZFJlc3VsdHMpIHsKLSAgICAgICAgdmFyIHRyYWNrZXIgPSBuZXcgYmFzZS5SZXF1ZXN0VHJhY2tl
cihidWlsZGVyTmFtZUxpc3QubGVuZ3RoLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNhbGxi
YWNrKHJlc3VsdHNCeUJ1aWxkZXIpOwotICAgICAgICB9KTsKLSAgICAgICAgJC5lYWNoKGJ1aWxk
ZXJOYW1lTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGJ1aWxkZXJOYW1lKSB7Ci0gICAgICAgICAgICBy
ZXN1bHRzLmZldGNoUmVzdWx0c0ZvckJ1aWxkZXIoYnVpbGRlck5hbWUsIGZ1bmN0aW9uKHJlc3Vs
dHNUcmVlKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyTmFtZV0g
PSByZXN1bHRzVHJlZTsKLSAgICAgICAgICAgICAgICB0cmFja2VyLnJlcXVlc3RDb21wbGV0ZSgp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGJ1
aWxkZXJzLnJlY2VudEJ1aWxkSW5mb3MoZnVuY3Rpb24ocmVjZW50QnVpbGRJbmZvcykgewotICAg
ICAgICAgICAgdmFyIHJlcXVlc3RzSW5GbGlnaHQgPSAwOwotICAgICAgICAgICAgJC5lYWNoKGJ1
aWxkZXJOYW1lTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGJ1aWxkZXJOYW1lKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHJlY2VudEJ1aWxkSW5mb3NbYnVpbGRlck5hbWVdKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiB1c2UgUmVxdWVzdFRyYWNrZXIKLSAgICAgICAgICAgICAgICAgICAg
KytyZXF1ZXN0c0luRmxpZ2h0OwotICAgICAgICAgICAgICAgICAgICByZXN1bHRzLmZldGNoUmVz
dWx0c0Zvck1vc3RSZWNlbnRDb21wbGV0ZWRCdWlsZE9uQnVpbGRlcihidWlsZGVyTmFtZSwgZnVu
Y3Rpb24ocmVzdWx0c1RyZWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRz
VHJlZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzQnlCdWlsZGVyW2J1aWxk
ZXJOYW1lXSA9IHJlc3VsdHNUcmVlOwotICAgICAgICAgICAgICAgICAgICAgICAgLS1yZXF1ZXN0
c0luRmxpZ2h0OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXF1ZXN0c0luRmxpZ2h0
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdHNCeUJ1aWxkZXIp
OwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQotfTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0NJU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy9yZXN1bHRzX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMv
cmVzdWx0c191bml0dGVzdHMuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9yZXN1bHRzX3VuaXR0ZXN0cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDYwOCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLXZhciB1bml0dGVzdCA9IHVuaXR0ZXN0IHx8IHt9OwotCi0oZnVuY3Rpb24g
KCkgewotCi1tb2R1bGUoInJlc3VsdHMiKTsKLQotdW5pdHRlc3Qua0V4YW1wbGVSZXN1bHRzSlNP
TiA9IHsKLSAgICAidGVzdHMiOiB7Ci0gICAgICAgICJzY3JvbGxiYXJzIjogewotICAgICAgICAg
ICAgImN1c3RvbS1zY3JvbGxiYXItd2l0aC1pbmNvbXBsZXRlLXN0eWxlLmh0bWwiOiB7Ci0gICAg
ICAgICAgICAgICAgImV4cGVjdGVkIjogIklNQUdFIiwKLSAgICAgICAgICAgICAgICAiYWN0dWFs
IjogIklNQUdFIgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJleHBlY3RlZC13b250Zml4
IjogewotICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJJTUFHRSIsCi0gICAgICAgICAgICAg
ICAgImFjdHVhbCI6ICJJTUFHRSIsCi0gICAgICAgICAgICAgICAgIndvbnRmaXgiOiB0cnVlCi0g
ICAgICAgICAgICB9LAotICAgICAgICAgICAgInVuZXhwZWN0ZWQtd29udGZpeCI6IHsKLSAgICAg
ICAgICAgICAgICAiZXhwZWN0ZWQiOiAiSU1BR0UiLAotICAgICAgICAgICAgICAgICJhY3R1YWwi
OiAiVEVYVCIsCi0gICAgICAgICAgICAgICAgIndvbnRmaXgiOiB0cnVlCi0gICAgICAgICAgICB9
LAotICAgICAgICAgICAgImZsYWt5LXNjcm9sbGJhci5odG1sIjogewotICAgICAgICAgICAgICAg
ICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlBBU1MgVEVY
VCIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAidW5leHBlY3RlZC1mYWlsaW5nLWZsYWt5
LXNjcm9sbGJhci5odG1sIjogewotICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJURVhUIiwK
LSAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRJTUVPVVQgVEVYVCIKLSAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAidW5leHBlY3RlZC1wYXNzLmh0bWwiOiB7Ci0gICAgICAgICAgICAgICAg
ImV4cGVjdGVkIjogIkZBSUwiLAotICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiUEFTUyIKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInVzZXJzY3JpcHRzIjogewotICAgICAg
ICAgICAgInVzZXItc2NyaXB0LXZpZGVvLWRvY3VtZW50Lmh0bWwiOiB7Ci0gICAgICAgICAgICAg
ICAgImV4cGVjdGVkIjogIkZBSUwiLAotICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIK
LSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ci0gICAg
ICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1MiLAotICAgICAgICAgICAgICAgICJhY3R1YWwi
OiAiVEVYVCIKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICB9LAotICAgICJza2lwcGVk
IjogMzM5LAotICAgICJudW1fcmVncmVzc2lvbnMiOiAxNCwKLSAgICAiaW50ZXJydXB0ZWQiOiBm
YWxzZSwKLSAgICAibGF5b3V0X3Rlc3RzX2RpciI6ICJcL21udFwvZGF0YVwvYlwvYnVpbGRcL3Ns
YXZlXC9XZWJraXRfTGludXhcL2J1aWxkXC9zcmNcL3RoaXJkX3BhcnR5XC9XZWJLaXRcL0xheW91
dFRlc3RzIiwKLSAgICAidmVyc2lvbiI6IDMsCi0gICAgIm51bV9wYXNzZXMiOiAxNTU2NiwKLSAg
ICAiaGFzX3ByZXR0eV9wYXRjaCI6IGZhbHNlLAotICAgICJmaXhhYmxlIjogMTIzMywKLSAgICAi
bnVtX2ZsYWt5IjoxLAotICAgICJ1c2VzX2V4cGVjdGF0aW9uc19maWxlIjogdHJ1ZSwKLSAgICAi
aGFzX3dkaWZmIjogdHJ1ZSwKLSAgICAicmV2aXNpb24iOiAiOTA0MzAiCi19OwotCi10ZXN0KCJS
ZXN1bHRBbmFseXplciIsIDU1LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgYW5hbHl6ZXI7Ci0KLSAg
ICBhbmFseXplciA9IG5ldyByZXN1bHRzLlJlc3VsdEFuYWx5emVyKHtleHBlY3RlZDogJ1BBU1Mn
LCBhY3R1YWw6ICdURVhUJ30pOwotICAgIG9rKGFuYWx5emVyLmV4cGVjdGVkVG9TdWNjZWVkKCkp
OwotICAgIG9rKGFuYWx5emVyLmhhc1VuZXhwZWN0ZWRGYWlsdXJlcygpKTsKLSAgICBkZWVwRXF1
YWwoYW5hbHl6ZXIudW5leHBlY3RlZFJlc3VsdHMoKSwgWydURVhUJ10pOwotICAgIG9rKCFhbmFs
eXplci5zdWNjZWVkZWQoKSk7Ci0gICAgb2soIWFuYWx5emVyLmZsYWt5KCkpOwotCi0gICAgYW5h
bHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRBbmFseXplcih7ZXhwZWN0ZWQ6ICdQQVNTIFRJTUVP
VVQnLCBhY3R1YWw6ICdURVhUJ30pOwotICAgIG9rKGFuYWx5emVyLmV4cGVjdGVkVG9TdWNjZWVk
KCkpOwotICAgIG9rKGFuYWx5emVyLmhhc1VuZXhwZWN0ZWRGYWlsdXJlcygpKTsKLSAgICBkZWVw
RXF1YWwoYW5hbHl6ZXIudW5leHBlY3RlZFJlc3VsdHMoKSwgWydURVhUJ10pOwotICAgIG9rKCFh
bmFseXplci5zdWNjZWVkZWQoKSk7Ci0gICAgb2soIWFuYWx5emVyLmZsYWt5KCkpOwotCi0gICAg
YW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRBbmFseXplcih7ZXhwZWN0ZWQ6ICdURVhUJywg
YWN0dWFsOiAnVEVYVCBUSU1FT1VUJ30pOwotICAgIG9rKCFhbmFseXplci5leHBlY3RlZFRvU3Vj
Y2VlZCgpKTsKLSAgICBvayhhbmFseXplci5oYXNVbmV4cGVjdGVkRmFpbHVyZXMoKSk7Ci0gICAg
ZGVlcEVxdWFsKGFuYWx5emVyLnVuZXhwZWN0ZWRSZXN1bHRzKCksIFsnVElNRU9VVCddKTsKLSAg
ICBvayghYW5hbHl6ZXIuc3VjY2VlZGVkKCkpOwotICAgIG9rKGFuYWx5emVyLmZsYWt5KCkpOwot
Ci0gICAgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRBbmFseXplcih7ZXhwZWN0ZWQ6ICdQ
QVNTJywgYWN0dWFsOiAnVEVYVCBUSU1FT1VUJ30pOwotICAgIG9rKGFuYWx5emVyLmV4cGVjdGVk
VG9TdWNjZWVkKCkpOwotICAgIG9rKGFuYWx5emVyLmhhc1VuZXhwZWN0ZWRGYWlsdXJlcygpKTsK
LSAgICBkZWVwRXF1YWwoYW5hbHl6ZXIudW5leHBlY3RlZFJlc3VsdHMoKSwgWydURVhUJywgJ1RJ
TUVPVVQnXSk7Ci0gICAgb2soIWFuYWx5emVyLnN1Y2NlZWRlZCgpKTsKLSAgICBvayhhbmFseXpl
ci5mbGFreSgpKTsKLQotICAgIGFuYWx5emVyID0gbmV3IHJlc3VsdHMuUmVzdWx0QW5hbHl6ZXIo
e2V4cGVjdGVkOiAnUEFTUyBUSU1FT1VUJywgYWN0dWFsOiAnUEFTUyBUSU1FT1VUJ30pOwotICAg
IG9rKGFuYWx5emVyLmV4cGVjdGVkVG9TdWNjZWVkKCkpOwotICAgIG9rKCFhbmFseXplci5oYXNV
bmV4cGVjdGVkRmFpbHVyZXMoKSk7Ci0gICAgZGVlcEVxdWFsKGFuYWx5emVyLnVuZXhwZWN0ZWRS
ZXN1bHRzKCksIFtdKTsKLSAgICBvayhhbmFseXplci5zdWNjZWVkZWQoKSk7Ci0gICAgb2soYW5h
bHl6ZXIuZmxha3koKSk7Ci0KLSAgICBhbmFseXplciA9IG5ldyByZXN1bHRzLlJlc3VsdEFuYWx5
emVyKHtleHBlY3RlZDogJ1BBU1MgVElNRU9VVCcsIGFjdHVhbDogJ1RJTUVPVVQgUEFTUyd9KTsK
LSAgICBvayhhbmFseXplci5leHBlY3RlZFRvU3VjY2VlZCgpKTsKLSAgICBvayghYW5hbHl6ZXIu
aGFzVW5leHBlY3RlZEZhaWx1cmVzKCkpOwotICAgIGRlZXBFcXVhbChhbmFseXplci51bmV4cGVj
dGVkUmVzdWx0cygpLCBbXSk7Ci0gICAgb2soYW5hbHl6ZXIuc3VjY2VlZGVkKCkpOwotICAgIG9r
KGFuYWx5emVyLmZsYWt5KCkpOwotCi0gICAgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRB
bmFseXplcih7ZXhwZWN0ZWQ6ICdGQUlMJywgYWN0dWFsOiAnVElNRU9VVCd9KTsKLSAgICBvaygh
YW5hbHl6ZXIuZXhwZWN0ZWRUb1N1Y2NlZWQoKSk7Ci0gICAgb2soYW5hbHl6ZXIuaGFzVW5leHBl
Y3RlZEZhaWx1cmVzKCkpOwotICAgIGRlZXBFcXVhbChhbmFseXplci51bmV4cGVjdGVkUmVzdWx0
cygpLCBbJ1RJTUVPVVQnXSk7Ci0gICAgb2soIWFuYWx5emVyLnN1Y2NlZWRlZCgpKTsKLSAgICBv
ayghYW5hbHl6ZXIuZmxha3koKSk7Ci0KLSAgICBhbmFseXplciA9IG5ldyByZXN1bHRzLlJlc3Vs
dEFuYWx5emVyKHtleHBlY3RlZDogJ0ZBSUwnLCBhY3R1YWw6ICdJTUFHRSd9KTsKLSAgICBvaygh
YW5hbHl6ZXIuZXhwZWN0ZWRUb1N1Y2NlZWQoKSk7Ci0gICAgb2soYW5hbHl6ZXIuaGFzVW5leHBl
Y3RlZEZhaWx1cmVzKCkpOwotICAgIGRlZXBFcXVhbChhbmFseXplci51bmV4cGVjdGVkUmVzdWx0
cygpLCBbJ0lNQUdFJ10pOwotICAgIG9rKCFhbmFseXplci5zdWNjZWVkZWQoKSk7Ci0gICAgb2so
IWFuYWx5emVyLmZsYWt5KCkpOwotCi0gICAgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRB
bmFseXplcih7ZXhwZWN0ZWQ6ICdGQUlMJywgYWN0dWFsOiAnQVVESU8nfSk7Ci0gICAgb2soIWFu
YWx5emVyLmV4cGVjdGVkVG9TdWNjZWVkKCkpOwotICAgIG9rKCFhbmFseXplci5oYXNVbmV4cGVj
dGVkRmFpbHVyZXMoKSk7Ci0gICAgZGVlcEVxdWFsKGFuYWx5emVyLnVuZXhwZWN0ZWRSZXN1bHRz
KCksIFtdKTsKLSAgICBvayghYW5hbHl6ZXIuc3VjY2VlZGVkKCkpOwotICAgIG9rKCFhbmFseXpl
ci5mbGFreSgpKTsKLQotICAgIGFuYWx5emVyID0gbmV3IHJlc3VsdHMuUmVzdWx0QW5hbHl6ZXIo
e2V4cGVjdGVkOiAnRkFJTCcsIGFjdHVhbDogJ1RFWFQnfSk7Ci0gICAgb2soIWFuYWx5emVyLmV4
cGVjdGVkVG9TdWNjZWVkKCkpOwotICAgIG9rKCFhbmFseXplci5oYXNVbmV4cGVjdGVkRmFpbHVy
ZXMoKSk7Ci0gICAgZGVlcEVxdWFsKGFuYWx5emVyLnVuZXhwZWN0ZWRSZXN1bHRzKCksIFtdKTsK
LSAgICBvayghYW5hbHl6ZXIuc3VjY2VlZGVkKCkpOwotICAgIG9rKCFhbmFseXplci5mbGFreSgp
KTsKLQotICAgIGFuYWx5emVyID0gbmV3IHJlc3VsdHMuUmVzdWx0QW5hbHl6ZXIoe2V4cGVjdGVk
OiAnRkFJTCcsIGFjdHVhbDogJ0lNQUdFK1RFWFQnfSk7Ci0gICAgb2soIWFuYWx5emVyLmV4cGVj
dGVkVG9TdWNjZWVkKCkpOwotICAgIG9rKCFhbmFseXplci5oYXNVbmV4cGVjdGVkRmFpbHVyZXMo
KSk7Ci0gICAgZGVlcEVxdWFsKGFuYWx5emVyLnVuZXhwZWN0ZWRSZXN1bHRzKCksIFtdKTsKLSAg
ICBvayghYW5hbHl6ZXIuc3VjY2VlZGVkKCkpOwotICAgIG9rKCFhbmFseXplci5mbGFreSgpKTsK
LX0pOwotCi10ZXN0KCJleHBlY3RlZEZhaWx1cmVzIiwgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFy
IGV4cGVjdGVkRmFpbHVyZXMgPSByZXN1bHRzLmV4cGVjdGVkRmFpbHVyZXModW5pdHRlc3Qua0V4
YW1wbGVSZXN1bHRzSlNPTik7Ci0gICAgZGVlcEVxdWFsKGV4cGVjdGVkRmFpbHVyZXMsIHsKLSAg
ICAgICAgInNjcm9sbGJhcnMvY3VzdG9tLXNjcm9sbGJhci13aXRoLWluY29tcGxldGUtc3R5bGUu
aHRtbCI6IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJJTUFHRSIsCi0gICAgICAgICAgICAi
YWN0dWFsIjogIklNQUdFIgotICAgICAgICB9LAotICAgICAgICAidXNlcnNjcmlwdHMvdXNlci1z
Y3JpcHQtdmlkZW8tZG9jdW1lbnQuaHRtbCI6IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJG
QUlMIiwKLSAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKLSAgICAgICAgfQotICAgIH0pOwot
fSk7Ci0KLXRlc3QoInVuZXhwZWN0ZWRGYWlsdXJlcyIsIDEsIGZ1bmN0aW9uKCkgewotICAgIHZh
ciB1bmV4cGVjdGVkRmFpbHVyZXMgPSByZXN1bHRzLnVuZXhwZWN0ZWRGYWlsdXJlcyh1bml0dGVz
dC5rRXhhbXBsZVJlc3VsdHNKU09OKTsKLSAgICBkZWVwRXF1YWwodW5leHBlY3RlZEZhaWx1cmVz
LCB7Ci0gICAgICAgICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCI6IHsKLSAgICAgICAg
ICAgICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKLSAg
ICAgICAgfQotICAgIH0pOwotfSk7Ci0KLXRlc3QoInVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCIs
IDEsIGZ1bmN0aW9uKCkgewotICAgIHZhciB1bmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QgPSByZXN1
bHRzLnVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCh7Ci0gICAgICAgICJNb2NrIEJ1aWxkZXIiOiB1
bml0dGVzdC5rRXhhbXBsZVJlc3VsdHNKU09OCi0gICAgfSk7Ci0gICAgZGVlcEVxdWFsKHVuZXhw
ZWN0ZWRGYWlsdXJlc0J5VGVzdCwgewotICAgICAgICAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0
Lmh0bWwiOiB7Ci0gICAgICAgICAgICAiTW9jayBCdWlsZGVyIjogewotICAgICAgICAgICAgICAg
ICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKLX0pOwotCi10ZXN0KCJ1bmV4cGVjdGVk
U3VjY2Vzc2VzQnlUZXN0IiwgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHVuZXhwZWN0ZWRGYWls
dXJlc0J5VGVzdCA9IHJlc3VsdHMudW5leHBlY3RlZFN1Y2Nlc3Nlc0J5VGVzdCh7Ci0gICAgICAg
ICJNb2NrIEJ1aWxkZXIiOiB1bml0dGVzdC5rRXhhbXBsZVJlc3VsdHNKU09OCi0gICAgfSk7Ci0g
ICAgZGVlcEVxdWFsKHVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCwgewotICAgICAgICAic2Nyb2xs
YmFycy91bmV4cGVjdGVkLXBhc3MuaHRtbCI6IHsKLSAgICAgICAgICAgICJNb2NrIEJ1aWxkZXIi
OiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIkZBSUwiLAotICAgICAgICAgICAgICAg
ICJhY3R1YWwiOiAiUEFTUyIKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pOwotfSk7
Ci0KLXRlc3QoImZhaWx1cmVJbmZvRm9yVGVzdEFuZEJ1aWxkZXIiLCAxLCBmdW5jdGlvbigpIHsK
LSAgICB2YXIgdW5leHBlY3RlZEZhaWx1cmVzQnlUZXN0ID0gcmVzdWx0cy51bmV4cGVjdGVkRmFp
bHVyZXNCeVRlc3QoewotICAgICAgICAiTW9jayBCdWlsZGVyIjogdW5pdHRlc3Qua0V4YW1wbGVS
ZXN1bHRzSlNPTgotICAgIH0pOwotICAgIHZhciBmYWlsdXJlSW5mbyA9IHJlc3VsdHMuZmFpbHVy
ZUluZm9Gb3JUZXN0QW5kQnVpbGRlcih1bmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QsICJ1c2Vyc2Ny
aXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsICJNb2NrIEJ1aWxkZXIiKTsKLSAgICBkZWVwRXF1YWwo
ZmFpbHVyZUluZm8sIHsKLSAgICAgICAgInRlc3ROYW1lIjogInVzZXJzY3JpcHRzL2Fub3RoZXIt
dGVzdC5odG1sIiwKLSAgICAgICAgImJ1aWxkZXJOYW1lIjogIk1vY2sgQnVpbGRlciIsCi0gICAg
ICAgICJmYWlsdXJlVHlwZUxpc3QiOiBbIlRFWFQiXSwKLSAgICB9KTsKLX0pOwotCi10ZXN0KCJy
ZXN1bHRLaW5kIiwgMTIsIGZ1bmN0aW9uKCkgewotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdEtp
bmQoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28tYWN0dWFsLnR4dCIpLCAiYWN0dWFsIik7Ci0gICAg
ZXF1YWxzKHJlc3VsdHMucmVzdWx0S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1leHBlY3Rl
ZC50eHQiKSwgImV4cGVjdGVkIik7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0S2luZCgiaHR0
cDovL2V4YW1wbGUuY29tL2Zvby1kaWZmLnR4dCIpLCAiZGlmZiIpOwotICAgIGVxdWFscyhyZXN1
bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28uYmFyLWFjdHVhbC50eHQiKSwg
ImFjdHVhbCIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxl
LmNvbS9mb28uYmFyLWV4cGVjdGVkLnR4dCIpLCAiZXhwZWN0ZWQiKTsKLSAgICBlcXVhbHMocmVz
dWx0cy5yZXN1bHRLaW5kKCJodHRwOi8vZXhhbXBsZS5jb20vZm9vLmJhci1kaWZmLnR4dCIpLCAi
ZGlmZiIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxlLmNv
bS9mb28tYWN0dWFsLnBuZyIpLCAiYWN0dWFsIik7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0
S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1leHBlY3RlZC5wbmciKSwgImV4cGVjdGVkIik7
Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1k
aWZmLnBuZyIpLCAiZGlmZiIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6
Ly9leGFtcGxlLmNvbS9mb28tcHJldHR5LWRpZmYuaHRtbCIpLCAiZGlmZiIpOwotICAgIGVxdWFs
cyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28td2RpZmYuaHRtbCIp
LCAiZGlmZiIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxl
LmNvbS9mb28teHl6Lmh0bWwiKSwgInVua25vd24iKTsKLX0pOwotCi10ZXN0KCJyZXN1bHRUeXBl
IiwgMTIsIGZ1bmN0aW9uKCkgewotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0dHA6
Ly9leGFtcGxlLmNvbS9mb28tYWN0dWFsLnR4dCIpLCAidGV4dCIpOwotICAgIGVxdWFscyhyZXN1
bHRzLnJlc3VsdFR5cGUoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28tZXhwZWN0ZWQudHh0IiksICJ0
ZXh0Iik7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0VHlwZSgiaHR0cDovL2V4YW1wbGUuY29t
L2Zvby1kaWZmLnR4dCIpLCAidGV4dCIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUo
Imh0dHA6Ly9leGFtcGxlLmNvbS9mb28uYmFyLWFjdHVhbC50eHQiKSwgInRleHQiKTsKLSAgICBl
cXVhbHMocmVzdWx0cy5yZXN1bHRUeXBlKCJodHRwOi8vZXhhbXBsZS5jb20vZm9vLmJhci1leHBl
Y3RlZC50eHQiKSwgInRleHQiKTsKLSAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRUeXBlKCJodHRw
Oi8vZXhhbXBsZS5jb20vZm9vLmJhci1kaWZmLnR4dCIpLCAidGV4dCIpOwotICAgIGVxdWFscyhy
ZXN1bHRzLnJlc3VsdFR5cGUoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28tYWN0dWFsLnBuZyIpLCAi
aW1hZ2UiKTsKLSAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRUeXBlKCJodHRwOi8vZXhhbXBsZS5j
b20vZm9vLWV4cGVjdGVkLnBuZyIpLCAiaW1hZ2UiKTsKLSAgICBlcXVhbHMocmVzdWx0cy5yZXN1
bHRUeXBlKCJodHRwOi8vZXhhbXBsZS5jb20vZm9vLWRpZmYucG5nIiksICJpbWFnZSIpOwotICAg
IGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28tcHJldHR5
LWRpZmYuaHRtbCIpLCAidGV4dCIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0
dHA6Ly9leGFtcGxlLmNvbS9mb28td2RpZmYuaHRtbCIpLCAidGV4dCIpOwotICAgIGVxdWFscyhy
ZXN1bHRzLnJlc3VsdFR5cGUoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28ueHl6IiksICJ0ZXh0Iik7
Ci19KTsKLQotdGVzdCgicmVzdWx0Tm9kZUZvclRlc3QiLCA0LCBmdW5jdGlvbigpIHsKLSAgICBk
ZWVwRXF1YWwocmVzdWx0cy5yZXN1bHROb2RlRm9yVGVzdCh1bml0dGVzdC5rRXhhbXBsZVJlc3Vs
dHNKU09OLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiKSwgewotICAgICAgICAiZXhw
ZWN0ZWQiOiAiUEFTUyIsCi0gICAgICAgICJhY3R1YWwiOiAiVEVYVCIKLSAgICB9KTsKLSAgICBl
cXVhbHMocmVzdWx0cy5yZXN1bHROb2RlRm9yVGVzdCh1bml0dGVzdC5rRXhhbXBsZVJlc3VsdHNK
U09OLCAiZm9vLmh0bWwiKSwgbnVsbCk7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0Tm9kZUZv
clRlc3QodW5pdHRlc3Qua0V4YW1wbGVSZXN1bHRzSlNPTiwgInVzZXJzY3JpcHRzL2Zvby5odG1s
IiksIG51bGwpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdE5vZGVGb3JUZXN0KHVuaXR0ZXN0
LmtFeGFtcGxlUmVzdWx0c0pTT04sICJ1c2Vyc2NyaXB0cy9mb28vYmFyLmh0bWwiKSwgbnVsbCk7
Ci19KTsKLQotdGVzdCgid2Fsa0hpc3RvcnkiLCA2LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2lt
dWxhdG9yID0gbmV3IE5ldHdvcmtTaW11bGF0b3IoKTsKLQotICAgIHZhciBrZXlNYXAgPSB7Ci0g
ICAgICAgICJNb2NrX0J1aWxkZXIiOiB7Ci0gICAgICAgICAgICAiMTExMDgiOiB7Ci0gICAgICAg
ICAgICAgICAgInRlc3RzIjogewotICAgICAgICAgICAgICAgICAgICAidXNlcnNjcmlwdHMiOiB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAiYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1MiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgICJyZXZpc2lvbiI6ICI5MDQzMCIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiMTEx
MDciOnsKLSAgICAgICAgICAgICAgICAidGVzdHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJ1
c2Vyc2NyaXB0cyI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1c2VyLXNjcmlwdC12aWRl
by1kb2N1bWVudC5odG1sIjogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3Rl
ZCI6ICJGQUlMIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQi
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgImFu
b3RoZXItdGVzdC5odG1sIjogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3Rl
ZCI6ICJQQVNTIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQi
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAicmV2aXNpb24iOiAiOTA0MjkiCi0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgIjExMTA2Ijp7Ci0gICAgICAgICAgICAgICAgInRlc3Rz
IjogewotICAgICAgICAgICAgICAgICAgICAidXNlcnNjcmlwdHMiOiB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAiYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImV4cGVjdGVkIjogIlBBU1MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJh
Y3R1YWwiOiAiVEVYVCIKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6
ICI5MDQyNiIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiMTExMDUiOnsKLSAgICAgICAg
ICAgICAgICAidGVzdHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJ1c2Vyc2NyaXB0cyI6IHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICJ1c2VyLXNjcmlwdC12aWRlby1kb2N1bWVudC5odG1s
IjogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJGQUlMIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgICAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjkwNDI0IgotICAgICAgICAgICAgfSwKLSAg
ICAgICAgfSwKLSAgICAgICAgIkFub3RoZXJfQnVpbGRlciI6IHsKLSAgICAgICAgICAgICIyMjIw
MiI6ewotICAgICAgICAgICAgICAgICJ0ZXN0cyI6IHsKLSAgICAgICAgICAgICAgICAgICAgInVz
ZXJzY3JpcHRzIjogewotICAgICAgICAgICAgICAgICAgICAgICAgImFub3RoZXItdGVzdC5odG1s
IjogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICAgICAicmV2aXNpb24iOiAiOTA0MjYiCi0gICAgICAgICAgICB9LAotICAg
ICAgICAgICAgIjIyMjAxIjp7Ci0gICAgICAgICAgICAgICAgInRlc3RzIjogewotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjkwNDI1IgotICAgICAgICAg
ICAgfSwKLSAgICAgICAgfSwKLSAgICB9OwotCi0gICAgc2ltdWxhdG9yLmpzb25wID0gZnVuY3Rp
b24odXJsLCBjYWxsYmFjaykgewotICAgICAgICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxsYmFjayhm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciByZXN1bHQgPSBrZXlNYXBbL1teL10rX0J1aWxk
ZXIvLmV4ZWModXJsKV1bL1xkKy8uZXhlYyh1cmwpXTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJl
c3VsdCA/IHJlc3VsdCA6IHt9KTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHNpbXVsYXRv
ci5nZXQgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKSB7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hl
ZHVsZUNhbGxiYWNrKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKC9Nb2NrX0J1aWxkZXIv
LnRlc3QodXJsKSkKLSAgICAgICAgICAgICAgICBjYWxsYmFjaygnPGEgaHJlZj0iMTExMDEvIj48
L2E+PGEgaHJlZj0iMTExMDIvIj48L2E+PGEgaHJlZj0iMTExMDMvIj48L2E+PGEgaHJlZj0iMTEx
MDQvIj48L2E+PGEgaHJlZj0iMTExMDUvIj48L2E+PGEgaHJlZj0iMTExMDYvIj48L2E+PGEgaHJl
Zj0iMTExMDcvIj48L2E+PGEgaHJlZj0iMTExMDgvIj48L2E+Jyk7Ci0gICAgICAgICAgICBlbHNl
IGlmICgvQW5vdGhlcl9CdWlsZGVyLy50ZXN0KHVybCkpCi0gICAgICAgICAgICAgICAgY2FsbGJh
Y2soJzxhIGhyZWY9IjIyMjAxLyI+PC9hPjxhIGhyZWY9IjIyMjAyLyI+PC9hPicpOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG9rKGZhbHNlLCAnVW5leHBlY3RlZCBVUkw6ICcg
KyB1cmwpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIHJlc3VsdHMucmVncmVzc2lvblJhbmdlRm9yRmFpbHVyZSgiTW9j
ayBCdWlsZGVyIiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgZnVuY3Rpb24ob2xk
ZXN0RmFpbGluZ1JldmlzaW9uLCBuZXdlc3RQYXNzaW5nUmV2aXNpb24pIHsKLSAgICAgICAgICAg
IGVxdWFscyhvbGRlc3RGYWlsaW5nUmV2aXNpb24sIDkwNDI2KTsKLSAgICAgICAgICAgIGVxdWFs
cyhuZXdlc3RQYXNzaW5nUmV2aXNpb24sIDkwNDI0KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAg
cmVzdWx0cy51bmlmeVJlZ3Jlc3Npb25SYW5nZXMoWyJNb2NrIEJ1aWxkZXIiLCAiQW5vdGhlciBC
dWlsZGVyIl0sICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIGZ1bmN0aW9uKG9sZGVz
dEZhaWxpbmdSZXZpc2lvbiwgbmV3ZXN0UGFzc2luZ1JldmlzaW9uKSB7Ci0gICAgICAgICAgICBl
cXVhbHMob2xkZXN0RmFpbGluZ1JldmlzaW9uLCA5MDQyNik7Ci0gICAgICAgICAgICBlcXVhbHMo
bmV3ZXN0UGFzc2luZ1JldmlzaW9uLCA5MDQyNSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHJl
c3VsdHMuY291bnRGYWlsdXJlT2NjdXJlbmNlcyhbIk1vY2sgQnVpbGRlciIsICJBbm90aGVyIEJ1
aWxkZXIiXSwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgZnVuY3Rpb24oZmFpbHVy
ZUNvdW50KSB7Ci0gICAgICAgICAgICBlcXVhbHMoZmFpbHVyZUNvdW50LCA0KTsKLSAgICAgICAg
fSk7Ci0gICAgfSk7Ci19KTsKLQotdGVzdCgid2Fsa0hpc3RvcnkgKG5vIHJldmlzaW9uKSIsIDMs
IGZ1bmN0aW9uKCkgewotICAgIHZhciBzaW11bGF0b3IgPSBuZXcgTmV0d29ya1NpbXVsYXRvcigp
OwotCi0gICAgdmFyIGtleU1hcCA9IHsKLSAgICAgICAgIk1vY2tfQnVpbGRlciI6IHsKLSAgICAg
ICAgICAgICIxMTEwMyI6IHsKLSAgICAgICAgICAgICAgICAidGVzdHMiOiB7Ci0gICAgICAgICAg
ICAgICAgICAgICJ1c2Vyc2NyaXB0cyI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJhbm90
aGVyLXRlc3QuaHRtbCI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQi
OiAiUEFTUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjdHVhbCI6ICJURVhUIgot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIiIKLSAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAiMTExMDIiOnsKLSAgICAgICAgICAgICAgICAidGVzdHMiOiB7Ci0g
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAicmV2aXNpb24iOiAiIgotICAgICAg
ICAgICAgfSwKLSAgICAgICAgfSwKLSAgICB9OwotCi0gICAgc2ltdWxhdG9yLmpzb25wID0gZnVu
Y3Rpb24odXJsLCBjYWxsYmFjaykgewotICAgICAgICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxsYmFj
ayhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciByZXN1bHQgPSBrZXlNYXBbL1teL10rX0J1
aWxkZXIvLmV4ZWModXJsKV1bL1xkKy8uZXhlYyh1cmwpXTsKLSAgICAgICAgICAgIGNhbGxiYWNr
KHJlc3VsdCA/IHJlc3VsdCA6IHt9KTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHNpbXVs
YXRvci5nZXQgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKSB7Ci0gICAgICAgIHNpbXVsYXRvci5z
Y2hlZHVsZUNhbGxiYWNrKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgY2FsbGJhY2soJzxhIGhy
ZWY9IjExMTAxLyI+PC9hPjxhIGhyZWY9IjExMTAyLyI+PC9hPjxhIGhyZWY9IjExMTAzLyI+PC9h
PicpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0KLSAgICBzaW11bGF0b3IucnVuVGVzdChmdW5j
dGlvbigpIHsKLSAgICAgICAgcmVzdWx0cy5yZWdyZXNzaW9uUmFuZ2VGb3JGYWlsdXJlKCJNb2Nr
IEJ1aWxkZXIiLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBmdW5jdGlvbihvbGRl
c3RGYWlsaW5nUmV2aXNpb24sIG5ld2VzdFBhc3NpbmdSZXZpc2lvbikgewotICAgICAgICAgICAg
ZXF1YWxzKG9sZGVzdEZhaWxpbmdSZXZpc2lvbiwgMCk7Ci0gICAgICAgICAgICBlcXVhbHMobmV3
ZXN0UGFzc2luZ1JldmlzaW9uLCAwKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19KTsKLQotdGVz
dCgiY29sbGVjdFVuZXhwZWN0ZWRSZXN1bHRzIiwgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRp
Y3Rpb25hcnlPZlJlc3VsdE5vZGVzID0gewotICAgICAgICAiZm9vIjogewotICAgICAgICAgICAg
ImV4cGVjdGVkIjogIklNQUdFIiwKLSAgICAgICAgICAgICJhY3R1YWwiOiAiSU1BR0UiCi0gICAg
ICAgIH0sCi0gICAgICAgICJiYXIiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIs
Ci0gICAgICAgICAgICAiYWN0dWFsIjogIlBBU1MgVEVYVCIKLSAgICAgICAgfSwKLSAgICAgICAg
ImJheiI6IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJURVhUIiwKLSAgICAgICAgICAgICJh
Y3R1YWwiOiAiSU1BR0UiCi0gICAgICAgIH0sCi0gICAgICAgICJxdXgiOiB7Ci0gICAgICAgICAg
ICAiZXhwZWN0ZWQiOiAiUEFTUyIsCi0gICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAg
ICAgIH0sCi0gICAgICAgICJ0YWNvIjogewotICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1Mi
LAotICAgICAgICAgICAgImFjdHVhbCI6ICJURVhUIgotICAgICAgICB9LAotICAgIH07Ci0KLSAg
ICB2YXIgY29sbGVjdGVkUmVzdWx0cyA9IHJlc3VsdHMuY29sbGVjdFVuZXhwZWN0ZWRSZXN1bHRz
KGRpY3Rpb25hcnlPZlJlc3VsdE5vZGVzKTsKLSAgICBkZWVwRXF1YWwoY29sbGVjdGVkUmVzdWx0
cywgWyJURVhUIiwgIklNQUdFIl0pOwotfSk7Ci0KLXRlc3QoImZhaWx1cmVUeXBlVG9FeHRlbnNp
b25MaXN0IiwgNSwgZnVuY3Rpb24oKSB7Ci0gICAgZGVlcEVxdWFsKHJlc3VsdHMuZmFpbHVyZVR5
cGVUb0V4dGVuc2lvbkxpc3QoJ1RFWFQnKSwgWyd0eHQnXSk7Ci0gICAgZGVlcEVxdWFsKHJlc3Vs
dHMuZmFpbHVyZVR5cGVUb0V4dGVuc2lvbkxpc3QoJ0lNQUdFK1RFWFQnKSwgWyd0eHQnLCAncG5n
J10pOwotICAgIGRlZXBFcXVhbChyZXN1bHRzLmZhaWx1cmVUeXBlVG9FeHRlbnNpb25MaXN0KCdJ
TUFHRScpLCBbJ3BuZyddKTsKLSAgICBkZWVwRXF1YWwocmVzdWx0cy5mYWlsdXJlVHlwZVRvRXh0
ZW5zaW9uTGlzdCgnQ1JBU0gnKSwgW10pOwotICAgIGRlZXBFcXVhbChyZXN1bHRzLmZhaWx1cmVU
eXBlVG9FeHRlbnNpb25MaXN0KCdUSU1FT1VUJyksIFtdKTsKLX0pOwotCi10ZXN0KCJjYW5SZWJh
c2VsaW5lIiwgNiwgZnVuY3Rpb24oKSB7Ci0gICAgb2socmVzdWx0cy5jYW5SZWJhc2VsaW5lKFsn
VEVYVCddKSk7Ci0gICAgb2socmVzdWx0cy5jYW5SZWJhc2VsaW5lKFsnSU1BR0UrVEVYVCcsICdD
UkFTSCddKSk7Ci0gICAgb2socmVzdWx0cy5jYW5SZWJhc2VsaW5lKFsnSU1BR0UnXSkpOwotICAg
IG9rKCFyZXN1bHRzLmNhblJlYmFzZWxpbmUoWydDUkFTSCddKSk7Ci0gICAgb2soIXJlc3VsdHMu
Y2FuUmViYXNlbGluZShbJ1RJTUVPVVQnXSkpOwotICAgIG9rKCFyZXN1bHRzLmNhblJlYmFzZWxp
bmUoW10pKTsKLX0pOwotCi10ZXN0KCJmZXRjaFJlc3VsdHNVUkxzIiwgNSwgZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIHNpbXVsYXRvciA9IG5ldyBOZXR3b3JrU2ltdWxhdG9yKCk7Ci0KLSAgICB2YXIg
cHJvYmVkVVJMcyA9IFtdOwotICAgIHNpbXVsYXRvci5wcm9iZSA9IGZ1bmN0aW9uKHVybCwgb3B0
aW9ucykKLSAgICB7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgcHJvYmVkVVJMcy5wdXNoKHVybCk7Ci0gICAgICAgICAgICBpZiAo
YmFzZS5lbmRzV2l0aCh1cmwsICcudHh0JykpCi0gICAgICAgICAgICAgICAgb3B0aW9ucy5zdWNj
ZXNzLmNhbGwoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKC90YWNvLitwbmckLy50ZXN0KHVybCkp
Ci0gICAgICAgICAgICAgICAgb3B0aW9ucy5zdWNjZXNzLmNhbGwoKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBvcHRpb25zLmVycm9yLmNhbGwoKTsKLSAgICAgICAgfSk7Ci0g
ICAgfTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICByZXN1
bHRzLmZldGNoUmVzdWx0c1VSTHMoewotICAgICAgICAgICAgJ2J1aWxkZXJOYW1lJzogIk1vY2sg
QnVpbGRlciIsCi0gICAgICAgICAgICAndGVzdE5hbWUnOiAidXNlcnNjcmlwdHMvYW5vdGhlci10
ZXN0Lmh0bWwiLAotICAgICAgICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IFsnSU1BR0UnLCAnQ1JB
U0gnXSwKLSAgICAgICAgfSwgZnVuY3Rpb24ocmVzdWx0VVJMcykgewotICAgICAgICAgICAgZGVl
cEVxdWFsKHJlc3VsdFVSTHMsIFsKLSAgICAgICAgICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9t
aXVtLm9yZy9mL2Nocm9taXVtL2xheW91dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3Vs
dHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtY3Jhc2gtbG9n
LnR4dCIKLSAgICAgICAgICAgIF0pOwotICAgICAgICB9KTsKLSAgICAgICAgcmVzdWx0cy5mZXRj
aFJlc3VsdHNVUkxzKHsKLSAgICAgICAgICAgICdidWlsZGVyTmFtZSc6ICJNb2NrIEJ1aWxkZXIi
LAotICAgICAgICAgICAgJ3Rlc3ROYW1lJzogInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1s
IiwKLSAgICAgICAgICAgICdmYWlsdXJlVHlwZUxpc3QnOiBbJ1RJTUVPVVQnXSwKLSAgICAgICAg
fSwgZnVuY3Rpb24ocmVzdWx0VVJMcykgewotICAgICAgICAgICAgZGVlcEVxdWFsKHJlc3VsdFVS
THMsIFtdKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJlc3VsdHMuZmV0Y2hSZXN1bHRzVVJMcyh7
Ci0gICAgICAgICAgICAnYnVpbGRlck5hbWUnOiAiTW9jayBCdWlsZGVyIiwKLSAgICAgICAgICAg
ICd0ZXN0TmFtZSc6ICJ1c2Vyc2NyaXB0cy90YWNvLmh0bWwiLAotICAgICAgICAgICAgJ2ZhaWx1
cmVUeXBlTGlzdCc6IFsnSU1BR0UnLCAnSU1BR0UrVEVYVCddLAotICAgICAgICB9LCBmdW5jdGlv
bihyZXN1bHRVUkxzKSB7Ci0gICAgICAgICAgICBkZWVwRXF1YWwocmVzdWx0VVJMcywgWwotICAg
ICAgICAgICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0
X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3Vz
ZXJzY3JpcHRzL3RhY28tZXhwZWN0ZWQucG5nIiwKLSAgICAgICAgICAgICAgICAiaHR0cDovL2J1
aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xheW91dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWls
ZGVyL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy90YWNvLWFjdHVhbC5w
bmciLAotICAgICAgICAgICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21p
dW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1y
ZXN1bHRzL3VzZXJzY3JpcHRzL3RhY28tZGlmZi5wbmciLAotICAgICAgICAgICAgICAgICJodHRw
Oi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2Nr
X0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL3RhY28tZXhw
ZWN0ZWQudHh0IiwKLSAgICAgICAgICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9m
L2Nocm9taXVtL2xheW91dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3VsdHMvbGF5b3V0
LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy90YWNvLWFjdHVhbC50eHQiLAotICAgICAgICAgICAg
ICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVz
dWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRz
L3RhY28tZGlmZi50eHQiLAotICAgICAgICAgICAgXSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwot
Ci0gICAgZGVlcEVxdWFsKHByb2JlZFVSTHMsIFsKLSAgICAgICAgImh0dHA6Ly9idWlsZC5jaHJv
bWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzL01vY2tfQnVpbGRlci9yZXN1
bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVk
LnBuZyIsCi0gICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5
b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRz
L3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwucG5nIiwKLSAgICAgICAgImh0dHA6Ly9i
dWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzL01vY2tfQnVp
bGRlci9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0
LWRpZmYucG5nIiwKLSAgICAgICAgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1
bS9sYXlvdXRfdGVzdF9yZXN1bHRzL01vY2tfQnVpbGRlci9yZXN1bHRzL2xheW91dC10ZXN0LXJl
c3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWNyYXNoLWxvZy50eHQiLAotICAgICAgICAi
aHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xheW91dF90ZXN0X3Jlc3VsdHMv
TW9ja19CdWlsZGVyL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy90YWNv
LWV4cGVjdGVkLnBuZyIsCi0gICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hy
b21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVz
dC1yZXN1bHRzL3VzZXJzY3JpcHRzL3RhY28tYWN0dWFsLnBuZyIsCi0gICAgICAgICJodHRwOi8v
YnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1
aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL3RhY28tZGlmZi5w
bmciLAotICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xheW91
dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91
c2Vyc2NyaXB0cy90YWNvLWFjdHVhbC50eHQiLAotICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9t
aXVtLm9yZy9mL2Nocm9taXVtL2xheW91dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3Vs
dHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy90YWNvLWV4cGVjdGVkLnR4dCIsCi0g
ICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3Rf
cmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3Jp
cHRzL3RhY28tZGlmZi50eHQiLAotICAgIF0pOwotfSk7Ci0KLXRlc3QoImZldGNoUmVzdWx0c0J5
QnVpbGRlciIsIDUsIGZ1bmN0aW9uKCkgewotICAgIHZhciBzaW11bGF0b3IgPSBuZXcgTmV0d29y
a1NpbXVsYXRvcigpOwotCi0gICAgdmFyIHByb2JlZFVSTHMgPSBbXTsKLSAgICBzaW11bGF0b3Iu
anNvbnAgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgc2ltdWxhdG9y
LnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBwcm9iZWRVUkxzLnB1
c2godXJsKTsKLSAgICAgICAgICAgIGlmIChiYXNlLmVuZHNXaXRoKHVybCwgJ01vY2tCdWlsZGVy
Mi9yMSUyMCgxKS9mdWxsX3Jlc3VsdHMuanNvbicpKQotICAgICAgICAgICAgICAgIGNhbGxiYWNr
KHsnTW9ja0J1aWxkUmVzdWx0cyc6IHRydWV9KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBjYWxsYmFjayh7fSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjb25maWcu
Y3VycmVudFBsYXRmb3JtID0gJ2d0ayc7Ci0KLSAgICB2YXIgb2xkQ2FjaGVkQnVpbGRJbmZvcyA9
IGJ1aWxkZXJzLmNhY2hlZEJ1aWxkSW5mb3M7Ci0gICAgYnVpbGRlcnMuY2FjaGVkQnVpbGRJbmZv
cyA9IGZ1bmN0aW9uKHBsYXRmb3JtLCBidWlsZGVyTmFtZSwgY2FsbGJhY2spIHsKLSAgICAgICAg
Y2FsbGJhY2soCi0gICAgICAgIHsKLSAgICAgICAgICAgIDE6IHsKLSAgICAgICAgICAgICAgICBz
b3VyY2VTdGFtcDogewotICAgICAgICAgICAgICAgICAgICByZXZpc2lvbjogMQotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAyOiB7Ci0gICAgICAgICAgICAg
ICAgc291cmNlU3RhbXA6IHsKLSAgICAgICAgICAgICAgICAgICAgcmV2aXNpb246IDIKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAg
IHZhciBvbGRSZWNlbnRCdWlsZEluZm9zID0gYnVpbGRlcnMucmVjZW50QnVpbGRJbmZvczsKLSAg
ICBidWlsZGVycy5yZWNlbnRCdWlsZEluZm9zID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAgICAg
ICAgY2FsbGJhY2soewotICAgICAgICAgICAgJ01vY2tCdWlsZGVyMSc6IHRydWUsCi0gICAgICAg
ICAgICAnTW9ja0J1aWxkZXIyJzogdHJ1ZQotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgc2lt
dWxhdG9yLnJ1blRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJlc3VsdHMuZmV0Y2hSZXN1bHRz
QnlCdWlsZGVyKFsnTW9ja0J1aWxkZXIxJywgJ01vY2tCdWlsZGVyMiddLCBmdW5jdGlvbihyZXN1
bHRzQnlCdWlsZGVyKSB7Ci0gICAgICAgICAgICBkZWVwRXF1YWwocmVzdWx0c0J5QnVpbGRlciwg
ewotICAgICAgICAgICAgICAgICJNb2NrQnVpbGRlcjIiOiB7Ci0gICAgICAgICAgICAgICAgICAg
ICJNb2NrQnVpbGRSZXN1bHRzIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgIl9idWlsZExv
Y2F0aW9uIjogewotICAgICAgICAgICAgICAgICAgICAgICAgImJ1aWxkTnVtYmVyIjogIjEiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgInJldmlzaW9uIjogMSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL3Jlc3VsdHMvTW9ja0J1aWxk
ZXIyL3IxJTIwKDEpL2Z1bGxfcmVzdWx0cy5qc29uIgotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwot
Ci0gICAgZGVlcEVxdWFsKHByb2JlZFVSTHMsIFsKLSAgICAgICAgImh0dHBzOi8vYnVpbGQud2Vi
a2l0Lm9yZy9yZXN1bHRzL01vY2tCdWlsZGVyMS9yMiUyMCgyKS9mdWxsX3Jlc3VsdHMuanNvbiIs
Ci0gICAgICAgICJodHRwczovL2J1aWxkLndlYmtpdC5vcmcvcmVzdWx0cy9Nb2NrQnVpbGRlcjIv
cjIlMjAoMikvZnVsbF9yZXN1bHRzLmpzb24iLAotICAgICAgICAiaHR0cHM6Ly9idWlsZC53ZWJr
aXQub3JnL3Jlc3VsdHMvTW9ja0J1aWxkZXIxL3IxJTIwKDEpL2Z1bGxfcmVzdWx0cy5qc29uIiwK
LSAgICAgICAgImh0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9yZXN1bHRzL01vY2tCdWlsZGVyMi9y
MSUyMCgxKS9mdWxsX3Jlc3VsdHMuanNvbiIKLSAgICBdKTsKLQotICAgIGJ1aWxkZXJzLmNhY2hl
ZEJ1aWxkSW5mb3MgPSBvbGRDYWNoZWRCdWlsZEluZm9zOwotICAgIGVxdWFsKGJ1aWxkZXJzLmNh
Y2hlZEJ1aWxkSW5mb3MsIG9sZENhY2hlZEJ1aWxkSW5mb3MsICJGYWlsZWQgdG8gcmVzdG9yZSBy
ZWFsIGJhc2UhIik7Ci0KLSAgICBidWlsZGVycy5yZWNlbnRCdWlsZEluZm9zID0gb2xkUmVjZW50
QnVpbGRJbmZvczsKLSAgICBlcXVhbChidWlsZGVycy5yZWNlbnRCdWlsZEluZm9zLCBvbGRSZWNl
bnRCdWlsZEluZm9zLCAiRmFpbGVkIHRvIHJlc3RvcmUgcmVhbCBiYXNlISIpOwotfSk7Ci0KLX0p
KCk7CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvc3VtbWFyeS1tb2NrLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy9zdW1tYXJ5LW1vY2suanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRv
b2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvc2NyaXB0cy9zdW1tYXJ5LW1vY2suanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNjQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24oKSB7Ci0KLWZ1bmN0aW9uIG1pbnV0ZXNBZ28o
bWludXRlcykKLXsKLSAgICB2YXIgdGltZSA9IG5ldyBEYXRlKCk7Ci0gICAgdGltZS5zZXRNaW51
dGVzKHRpbWUuZ2V0TWludXRlcygpIC0gbWludXRlcyk7Ci0gICAgcmV0dXJuIHRpbWU7Ci19Ci0K
LWZ1bmN0aW9uIEN5Y2xlcihpdGVtcywgcmVwZWF0KQotewotICAgIHRoaXMuX2luZGV4ID0gMDsK
LSAgICB0aGlzLl9yZXBlYXQgPSByZXBlYXQgfHwgMTsKLSAgICB0aGlzLl9yZXBlYXRlZCA9IDA7
Ci0gICAgdGhpcy5faXRlbXMgPSBpdGVtczsKLX0KLQotQ3ljbGVyLnByb3RvdHlwZSA9IHsKLSAg
ICBfdXBkYXRlUmVwZWF0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoKyt0aGlzLl9y
ZXBlYXRlZCA+PSB0aGlzLl9yZXBlYXQpIHsKLSAgICAgICAgICAgIHRoaXMuX3JlcGVhdGVkID0g
dGhpcy5fcmVwZWF0OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0gICAgX3VwZGF0ZUluZGV4OiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICBpZiAodGhpcy5fdXBkYXRlUmVwZWF0KCkpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGlmICgrK3RoaXMuX2luZGV4ID49IHRoaXMuX2l0ZW1zLmxlbmd0aCkKLSAg
ICAgICAgICAgIHRoaXMuX2luZGV4ID0gMDsKLSAgICB9LAotICAgIGN5Y2xlOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5faXRlbXNbdGhpcy5faW5kZXhdOwot
ICAgICAgICB0aGlzLl91cGRhdGVJbmRleCgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IH0KLX0KLQotdmFyIHBlb3BsZSA9IG5ldyBDeWNsZXIoWwotICAgICdFdXN0YWNlIEJhZ2dlJywK
LSAgICAnRGljayBEYXN0YXJkbHknLAotICAgICdNYWpvciBHbG9yeScsCi0gICAgJ0Jhcm5leSBS
dWJibGUnLAotICAgICdCdW5ueSBCcmF2bycsCi0gICAgJ1JhY2UgQmFubm9uJywKLV0pOwotCi12
YXIgYnVnVGl0bGVzID0gbmV3IEN5Y2xlcihbCi0gICAgJ1VucmV2aWV3ZWQuIENocm9taXVtIHJl
YmFzZWxpbmVzIGZvciByOTM3OTQuICogLi4uJywKLSAgICAnRml4IGJ1aWxkIHdoZW4gR0NDIDQu
MiBpcyBub3QgaW5zdGFsbGVkLiAqIC4uLiAnLAotICAgICdbUXRdIFVucmV2aWV3ZWQgZ2FyZGVu
aW5nLiAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6IFNraXAgbmV3IHRlc3RzIHVudGlsIC4uLicsCi0g
ICAgJ2dhcmRlbi1vLW1hdGljIG5lZWRzIGEgd2F5IHRvIHJlcG9ydCB3aGVyZSBhbmQgaG93IHRl
c3RzIGFyZSBmYWlsaW5nIGluIC4uLiAnLAotICAgICdSRUdSRVNTSU9OKHI5MDk3MSk6IEZpeCBh
biBhc3NlcnRpb24gZmFpbHVyZSB3aXRoIHRleHRhcmVhIHBsYWNlaG9sZGVyLiAuLi4nLAotICAg
ICdJbmNvcnJlY3QgbGF5b3V0IG9mIDpiZWZvcmUgYW5kIDphZnRlciBjb250ZW50LCB3aXRoIGRp
c3BsYXkgdGFibGUsIC4uLicsCi0gICAgJyBKU0hUTUxJbWFnZUVsZW1lbnQgKGFuZCBhc3NvY2lh
dGVkIE5vZGUpIGlzIGFiYW5kb25lZCB3aGVuIGltYWdlIGxvYWQgaXMgLi4uICcKLV0pOwotCi12
YXIgdGVzdE5hbWVzID0gbmV3IEN5Y2xlcihbCi0gICAgJ2Zhc3QvcnVieS90ZXh0LWVtcGhhc2lz
Lmh0bWwnLAotICAgICdwbHVnaW5zL2Rlc3Ryb3ktZHVyaW5nLW5wcC1uZXcuaHRtbCcsCi0gICAg
J3RhYmxlcy9tb3ppbGxhL2J1Z3MvYnVnNjA3NDkuaHRtbCcsCi0gICAgJ3RhYmxlcy9tb3ppbGxh
L2J1Z3MvYnVnNTE3MjcuaHRtbCcsCi0gICAgJ3RhYmxlcy9tb3ppbGxhL2J1Z3MvYnVnMzM4NTUu
aHRtbCcsCi0gICAgJ3RhYmxlcy9tb3ppbGxhL2J1Z3MvYnVnNTI1MDYuaHRtJywKLSAgICAndGFi
bGVzL21vemlsbGEvYnVncy9idWcxODM1OS5odG1sJywKLSAgICAndGFibGVzL21vemlsbGEvYnVn
cy9idWc0NjM2OC0xLmh0bWwnLAotICAgICd0YWJsZXMvbW96aWxsYS9idWdzL2J1ZzQ2MzY4LTIu
aHRtbCcsCi0gICAgJ3RhYmxlcy9tb3ppbGxhL2J1Z3MvYnVnNTI1MDUuaHRtbCcKLV0pOwotCi12
YXIgYnVpbGRlcnMgPSBuZXcgQ3ljbGVyKE9iamVjdC5rZXlzKGNvbmZpZy5jdXJyZW50QnVpbGRl
cnMoKSksIDMpOwotCi12YXIgZXhwZWN0YXRpb25zID0gbmV3IEN5Y2xlcihbCi0gICAgJ1RFWFQn
LAotICAgICdJTUFHRStURVhUJywKLSAgICAnVElNRU9VVCcsCi0gICAgJ0NSQVNIJwotXSwgNCk7
Ci0KLWZ1bmN0aW9uIGNyZWF0ZVJlc3VsdE5vZGVzQnlCdWlsZGVyKGJ1aWxkZXJGYWlsdXJlQ291
bnQpCi17Ci0gICAgdmFyIHJlc3VsdCA9IHt9OwotICAgIGZvcih2YXIgaSA9IDA7IGkgPCBidWls
ZGVyRmFpbHVyZUNvdW50OyArK2kpCi0gICAgICAgIHJlc3VsdFtidWlsZGVycy5jeWNsZSgpXSA9
IHsgYWN0dWFsOiBleHBlY3RhdGlvbnMuY3ljbGUoKSB9OwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLXZhciBjdXJyZW50UmV2aXNpb24gPSA2NjY2NjsKLXZhciBjdXJyZW50TWludXRlc0FnbyA9
IDA7Ci0KLWZ1bmN0aW9uIGNyZWF0ZUZhaWxpbmdUZXN0c1N1bW1hcnkoY29tbWl0RGF0YUNvdW50
LCBmYWlsdXJlQW5hbHlzaXNDb3VudCwgYnVpbGRlckZhaWx1cmVDb3VudCkKLXsKLSAgICB2YXIg
ZmFpbGluZ1Rlc3RzU3VtbWFyeSA9IG5ldyB1aS5ub3RpZmljYXRpb25zLkZhaWxpbmdUZXN0c1N1
bW1hcnkoKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbW1pdERhdGFDb3VudDsgKytpKQot
ICAgICAgICBmYWlsaW5nVGVzdHNTdW1tYXJ5LmFkZENvbW1pdERhdGEoewotICAgICAgICAgICAg
dGltZTogbWludXRlc0FnbyhjdXJyZW50TWludXRlc0FnbysrKSwKLSAgICAgICAgICAgIHJldmlz
aW9uOiBjdXJyZW50UmV2aXNpb24rKywKLSAgICAgICAgICAgIHN1bW1hcnk6IGJ1Z1RpdGxlcy5j
eWNsZSgpLAotICAgICAgICAgICAgYXV0aG9yOiBwZW9wbGUuY3ljbGUoKSwKLSAgICAgICAgICAg
IHJldmlld2VyOiBwZW9wbGUuY3ljbGUoKQotICAgICAgICB9KTsKLSAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGZhaWx1cmVBbmFseXNpc0NvdW50OyArK2kpCi0gICAgICAgIGZhaWxpbmdUZXN0c1N1
bW1hcnkuYWRkRmFpbHVyZUFuYWx5c2lzKHsKLSAgICAgICAgICAgIHRlc3ROYW1lOiB0ZXN0TmFt
ZXMuY3ljbGUoKSwKLSAgICAgICAgICAgIHJlc3VsdE5vZGVzQnlCdWlsZGVyOiBjcmVhdGVSZXN1
bHROb2Rlc0J5QnVpbGRlcihidWlsZGVyRmFpbHVyZUNvdW50KQotICAgICAgICB9KTsKLSAgICBy
ZXR1cm4gZmFpbGluZ1Rlc3RzU3VtbWFyeTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQnVpbGRlcnNG
YWlsaW5nKGZhaWxpbmdCdWlsZGVyQ291bnQpCi17Ci0gICAgdmFyIGJ1aWxkZXJzRmFpbGluZyA9
IG5ldyB1aS5ub3RpZmljYXRpb25zLkJ1aWxkZXJzRmFpbGluZygpOwotICAgIGJ1aWxkZXJOYW1l
TGlzdCA9IFtdOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmFpbGluZ0J1aWxkZXJDb3VudDsg
KytpKQotICAgICAgICBidWlsZGVyTmFtZUxpc3QucHVzaChidWlsZGVycy5jeWNsZSgpKTsKLSAg
ICBidWlsZGVyc0ZhaWxpbmcuc2V0RmFpbGluZ0J1aWxkZXJzKGJ1aWxkZXJOYW1lTGlzdCk7Ci0g
ICAgcmV0dXJuIGJ1aWxkZXJzRmFpbGluZwotfQotCi0kKGRvY3VtZW50KS5yZWFkeShmdW5jdGlv
bigpIHsKLQotICAgIHZhciBhY3Rpb25zID0gbmV3IHVpLm5vdGlmaWNhdGlvbnMuU3RyZWFtKCk7
Ci0gICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoYWN0aW9ucywgZG9jdW1lbnQuYm9keS5m
aXJzdENoaWxkKTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhbiBBY3Rpb24gb2Jq
ZWN0LgotICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdidXR0b24nKSwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKLSAg
ICBidXR0b24udGV4dENvbnRlbnQgPSAndXBkYXRlJzsKLQotICAgIGFjdGlvbnMuYWRkKGNyZWF0
ZUZhaWxpbmdUZXN0c1N1bW1hcnkoMywgNCwgMSkpOwotICAgIGFjdGlvbnMuYWRkKGNyZWF0ZUZh
aWxpbmdUZXN0c1N1bW1hcnkoMywgMSwgMykpOwotICAgIGFjdGlvbnMuYWRkKGNyZWF0ZUZhaWxp
bmdUZXN0c1N1bW1hcnkoMSwgMjAsIDEpKTsKLSAgICBhY3Rpb25zLmFkZChjcmVhdGVCdWlsZGVy
c0ZhaWxpbmcoMSkpOwotICAgIGFjdGlvbnMuYWRkKGNyZWF0ZUJ1aWxkZXJzRmFpbGluZyg4KSk7
Ci19KTsKLQotfSkoKTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9zdW1t
YXJ5LW1vY2suanMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAg
IyMKLUxGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy90cmFjX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdHJh
Y191bml0dGVzdHMuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy90cmFj
X3VuaXR0ZXN0cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDM0NSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLShmdW5jdGlvbiAoKSB7Ci0KLW1vZHVsZSgidHJhYyIpOwotCi12YXIga0V4YW1wbGVDb21t
aXREYXRhWE1MID0gCi0gICAgJzw/eG1sIHZlcnNpb249IjEuMCI/PlxuXG4nICsKLSAgICAnPHJz
cyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHZlcnNpb249IjIu
MCI+XG5cbicgKwotICAgICcgIFxuXG4nICsKLSAgICAnXG5cbicgKwotICAgICcgIDxjaGFubmVs
PlxuXG4nICsKLSAgICAnICAgIDx0aXRsZT5SZXZpc2lvbnMgb2YgL3RydW5rPC90aXRsZT5cblxu
JyArCi0gICAgJyAgICA8bGluaz5odHRwOi8vdHJhYy53ZWJraXQub3JnL2xvZy90cnVuaz9yZXY9
OTIzNjI8L2xpbms+XG5cbicgKwotICAgICcgICAgPGRlc2NyaXB0aW9uPlRyYWMgTG9nIC0gUmV2
aXNpb25zIG9mIC90cnVuazwvZGVzY3JpcHRpb24+XG5cbicgKwotICAgICcgICAgPGxhbmd1YWdl
PmVuLVVTPC9sYW5ndWFnZT5cblxuJyArCi0gICAgJyAgICA8Z2VuZXJhdG9yPlRyYWMgMC4xMS43
PC9nZW5lcmF0b3I+XG5cbicgKwotICAgICcgICAgPGltYWdlPlxuXG4nICsKLSAgICAnICAgICAg
PHRpdGxlPldlYktpdDwvdGl0bGU+XG5cbicgKwotICAgICcgICAgICA8dXJsPmh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hyb21lL3NpdGUvaWNvbi5wbmc8L3VybD5cblxuJyArCi0gICAgJyAgICAg
IDxsaW5rPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvbG9nL3RydW5rP3Jldj05MjM2MjwvbGluaz5c
blxuJyArCi0gICAgJyAgICA8L2ltYWdlPlxuXG4nICsKLSAgICAnICAgIDxpdGVtPlxuXG4nICsK
LSAgICAnICAgICAgICAgIDxhdXRob3I+bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc8L2F1dGhvcj5c
blxuJyArCi0gICAgJyAgICAgIDxwdWJEYXRlPlRodSwgMDQgQXVnIDIwMTEgMDI6MDk6MTkgR01U
PC9wdWJEYXRlPlxuXG4nICsKLSAgICAnICAgICAgPHRpdGxlPlJldmlzaW9uIDkyMzQyOiBTdXBw
b3J0IGNhc3QgYmV0d2VlbiBDU1NQcmltaXRpdmVWYWx1ZSBhbmQgRUJveFNpemluZywgdXNlIGlu
IC4uLjwvdGl0bGU+XG5cbicgKwotICAgICcgICAgICA8bGluaz5odHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC85MjM0Mi90cnVuazwvbGluaz5cblxuJyArCi0gICAgJyAgICAgIDxndWlk
IGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIz
NDIvdHJ1bms8L2d1aWQ+XG5cbicgKwotICAgICcgICAgICA8ZGVzY3JpcHRpb24+Jmx0O3AmZ3Q7
XG5cbicgKwotICAgICdTdXBwb3J0IGNhc3QgYmV0d2VlbiBDU1NQcmltaXRpdmVWYWx1ZSBhbmQg
RUJveFNpemluZywgdXNlIGluIENTU1N0eWxlU2VsZWN0b3IuXG5cbicgKwotICAgICcmbHQ7YSBj
bGFzcz0iZXh0LWxpbmsiIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NTY1NyImZ3Q7Jmx0O3NwYW4gY2xhc3M9Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjU3Jmx0Oy9hJmd0O1xuXG4n
ICsKLSAgICAnJmx0Oy9wJmd0O1xuXG4nICsKLSAgICAnJmx0O3AmZ3Q7XG5cbicgKwotICAgICdS
ZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuXG5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG5cbicgKwot
ICAgICcmbHQ7cCZndDtcblxuJyArCi0gICAgJ05vIG5ldyB0ZXN0cyAvIHJlZmFjdG9yaW5nIG9u
bHkuXG5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG5cbicgKwotICAgICcmbHQ7cCZndDtcblxuJyAr
Ci0gICAgJyogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDpcblxuJyArCi0gICAgJyhX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOlxuXG4nICsKLSAg
ICAnSW1wbGVtZW50IGNhc3QgZnJvbSBFQm94U2l6aW5nLlxuJyArCi0gICAgJyhXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUJveFNpemluZyk6XG4nICsKLSAgICAnSW1wbGVt
ZW50IGNhc3QgdG8gRUJveFNpemluZy5cbicgKwotICAgICcqIGNzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcDpcbicgKwotICAgICcoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eSk6XG4nICsKLSAgICAnVXNlIGFwcHJvcHJpYXRlIG1hY3JvIHRvIHNpbXBsaWZ5IGNvZGUgdXNp
bmcgY2FzdC5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnPC9kZXNjcmlwdGlvbj5c
bicgKwotICAgICcgICAgICA8Y2F0ZWdvcnk+TG9nPC9jYXRlZ29yeT5cbicgKwotICAgICcgICAg
PC9pdGVtPjxpdGVtPlxuJyArCi0gICAgJyAgICAgICAgICA8YXV0aG9yPmNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPC9hdXRob3I+XG4nICsKLSAgICAnICAgICAgPHB1YkRhdGU+VGh1LCAwNCBBdWcg
MjAxMSAwMjowMTozMSBHTVQ8L3B1YkRhdGU+XG4nICsKLSAgICAnICAgICAgPHRpdGxlPlJldmlz
aW9uIDkyMzQxOiBJbXBsZW1lbnQgRXZlbnRTZW5kZXIuc2NhbGVQYWdlQnkoKSAuLi48L3RpdGxl
PlxuJyArCi0gICAgJyAgICAgIDxsaW5rPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzkyMzQxL3RydW5rPC9saW5rPlxuJyArCi0gICAgJyAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJm
YWxzZSI+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIzNDEvdHJ1bms8L2d1aWQ+
XG4nICsKLSAgICAnICAgICAgPGRlc2NyaXB0aW9uPiZsdDtwJmd0O1xuJyArCi0gICAgJ0ltcGxl
bWVudCBFdmVudFNlbmRlci5zY2FsZVBhZ2VCeSgpXG4nICsKLSAgICAnJmx0O2EgY2xhc3M9ImV4
dC1saW5rIiBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgw
MTMiJmd0OyZsdDtzcGFuIGNsYXNzPSJpY29uIiZndDsgJmx0Oy9zcGFuJmd0O2h0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODAxMyZsdDsvYSZndDtcbicgKwotICAgICcm
bHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnUGF0Y2ggYnkgS2VudGFy
byBIYXJhICZhbXA7bHQ7Jmx0O2EgY2xhc3M9Im1haWwtbGluayIgaHJlZj0ibWFpbHRvOmhhcmFr
ZW5AZ29vZ2xlLmNvbSImZ3Q7Jmx0O3NwYW4gY2xhc3M9Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7
aGFyYWtlbkBnb29nbGUuY29tJmx0Oy9hJmd0OyZhbXA7Z3Q7IG9uIDIwMTEtMDgtMDNcbicgKwot
ICAgICdSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuXG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuJyAr
Ci0gICAgJyZsdDtwJmd0O1xuJyArCi0gICAgJ0ltcGxlbWVudGVkIEV2ZW50U2VuZGVyLnNjYWxl
UGFnZUJ5KGYsIHgsIHkpLCB3aGljaCBzY2FsZXMgYSBwYWdlIGJ5IGEgZmFjdG9yIG9mIGZcbicg
KwotICAgICdhbmQgdGhlbiBzZXRzIGEgc2Nyb2xsIHBvc2l0aW9uIHRvICh4LCB5KS4gRW5hYmxl
ZCB0aGUgdGVzdHMgdGhhdCBoYWQgYmVlbiB3YWl0aW5nXG4nICsKLSAgICAnZm9yIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiBFdmVudFNlbmRlci5zY2FsZVBhZ2VCeShmLCB4LCB5KS5cbicgKwotICAg
ICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnU291cmNlL1dlYktp
dC9jaHJvbWl1bTpcbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4n
ICsKLSAgICAnVGVzdHM6IGNvbXBvc2l0aW5nL3NjYWxpbmcvdGlsZWQtbGF5ZXItcmVjdXJzaW9u
Lmh0bWxcbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O2Jsb2NrcXVvdGUmZ3Q7
XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnZmFzdC9yZXBhaW50L3NjYWxlLXBhZ2Ut
c2hyaW5rLmh0bWxcbicgKwotICAgICdmYXN0L2RvbS9FbGVtZW50L3NjYWxlLXBhZ2UtY2xpZW50
LXJlY3RzLmh0bWxcbicgKwotICAgICdmYXN0L2RvbS9SYW5nZS9zY2FsZS1wYWdlLWNsaWVudC1y
ZWN0cy5odG1sXG4nICsKLSAgICAnZmFzdC9ldmVudHMvc2Nyb2xsLWluLXNjYWxlZC1wYWdlLXdp
dGgtb3ZlcmZsb3ctaGlkZGVuLmh0bWxcbicgKwotICAgICdmYXN0L2RvbS9FbGVtZW50L3NjYWxl
LXBhZ2UtYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbFxuJyArCi0gICAgJ2Zhc3QvZG9tL1Jhbmdl
L3NjYWxlLXBhZ2UtYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbFxuJyArCi0gICAgJyZsdDsvcCZn
dDtcbicgKwotICAgICcmbHQ7L2Jsb2NrcXVvdGUmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4n
ICsKLSAgICAnKiBwdWJsaWMvV2ViVmlldy5oOlxuJyArCi0gICAgJyogc3JjL1dlYlZpZXdJbXBs
LmNwcDpcbicgKwotICAgICcoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2NhbGVQYWdlKTogQSB3cmFw
cGVyIG1ldGhvZCBmb3Igc2NhbGVQYWdlKCkgaW4gV2ViQ29yZS5cbicgKwotICAgICcqIHNyYy9X
ZWJWaWV3SW1wbC5oOlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7cCZndDtc
bicgKwotICAgICdUb29sczpcbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3Am
Z3Q7XG4nICsKLSAgICAnVGVzdHM6IGNvbXBvc2l0aW5nL3NjYWxpbmcvdGlsZWQtbGF5ZXItcmVj
dXJzaW9uLmh0bWxcbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O2Jsb2NrcXVv
dGUmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnZmFzdC9yZXBhaW50L3NjYWxl
LXBhZ2Utc2hyaW5rLmh0bWxcbicgKwotICAgICdmYXN0L2RvbS9FbGVtZW50L3NjYWxlLXBhZ2Ut
Y2xpZW50LXJlY3RzLmh0bWxcbicgKwotICAgICdmYXN0L2RvbS9SYW5nZS9zY2FsZS1wYWdlLWNs
aWVudC1yZWN0cy5odG1sXG4nICsKLSAgICAnZmFzdC9ldmVudHMvc2Nyb2xsLWluLXNjYWxlZC1w
YWdlLXdpdGgtb3ZlcmZsb3ctaGlkZGVuLmh0bWxcbicgKwotICAgICdmYXN0L2RvbS9FbGVtZW50
L3NjYWxlLXBhZ2UtYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbFxuJyArCi0gICAgJ2Zhc3QvZG9t
L1JhbmdlL3NjYWxlLXBhZ2UtYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbFxuJyArCi0gICAgJyZs
dDsvcCZndDtcbicgKwotICAgICcmbHQ7L2Jsb2NrcXVvdGUmZ3Q7XG4nICsKLSAgICAnJmx0O3Am
Z3Q7XG4nICsKLSAgICAnKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHA6
XG4nICsKLSAgICAnKEV2ZW50U2VuZGVyOjpFdmVudFNlbmRlcik6IEFkZGVkIGJpbmRpbmdzIGZv
ciBzY2FsZVBhZ2VCeSgpLlxuJyArCi0gICAgJyhFdmVudFNlbmRlcjo6c2NhbGVQYWdlQnkpOiBB
IHdyYXBwZXIgbWV0aG9kIGZvciBzY2FsZVBhZ2UoKSBpbiBXZWJWaWV3LlxuJyArCi0gICAgJyog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuaDpcbicgKwotICAgICcqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6XG4nICsKLSAgICAnKFRlc3RTaGVsbDo6
cmVzZXRUZXN0Q29udHJvbGxlcik6IFJlc2V0cyB0aGUgc2NhbGUgZmFjdG9yIHRvIDEuXG4nICsK
LSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJyZsdDtwJmd0O1xuJyArCi0gICAgJ0xheW91dFRl
c3RzOlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAg
ICcqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NvbXBvc2l0aW5nL3NjYWxpbmcvdGlsZWQtbGF5
ZXItcmVjdXJzaW9uLWV4cGVjdGVkLnBuZzogQWRkZWQuXG4nICsKLSAgICAnKiBwbGF0Zm9ybS9j
aHJvbWl1bS1saW51eC9mYXN0L3JlcGFpbnQvc2NhbGUtcGFnZS1zaHJpbmstZXhwZWN0ZWQucG5n
OiBBZGRlZC5cbicgKwotICAgICcqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvcmVwYWlu
dC9zY2FsZS1wYWdlLXNocmluay1leHBlY3RlZC50eHQ6IEFkZGVkLlxuJyArCi0gICAgJyogcGxh
dGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1ib3VuZGluZy1j
bGllbnQtcmVjdC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuXG4nICsKLSAgICAnKiBwbGF0Zm9ybS9j
aHJvbWl1bS1tYWMvZmFzdC9kb20vUmFuZ2Uvc2NhbGUtcGFnZS1ib3VuZGluZy1jbGllbnQtcmVj
dC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuXG4nICsKLSAgICAnKiBwbGF0Zm9ybS9jaHJvbWl1bS13
aW4vZmFzdC9kb20vRWxlbWVudC9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0LWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC5cbicgKwotICAgICcqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0
L2RvbS9FbGVtZW50L3NjYWxlLXBhZ2UtY2xpZW50LXJlY3RzLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC5cbicgKwotICAgICcqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9SYW5nZS9zY2Fs
ZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC5cbicgKwot
ICAgICcqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9SYW5nZS9zY2FsZS1wYWdlLWNs
aWVudC1yZWN0cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuXG4nICsKLSAgICAnKiBwbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IEVuYWJsZWQgb25lIHRlc3QuIEVuYWJsZWQg
dHdvIHRlc3RzIGZvciBjaHJvbWl1bS1saW51eC5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsK
LSAgICAnPC9kZXNjcmlwdGlvbj5cbicgKwotICAgICcgICAgICA8Y2F0ZWdvcnk+TG9nPC9jYXRl
Z29yeT5cbicgKwotICAgICcgICAgPC9pdGVtPjxpdGVtPlxuJyArCi0gICAgJyAgICAgICAgICA8
YXV0aG9yPnJuaXdhQHdlYmtpdC5vcmc8L2F1dGhvcj5cbicgKwotICAgICcgICAgICA8cHViRGF0
ZT5UaHUsIDA0IEF1ZyAyMDExIDAxOjQxOjI5IEdNVDwvcHViRGF0ZT5cbicgKwotICAgICcgICAg
ICA8dGl0bGU+UmV2aXNpb24gOTIzMzg6IFJldmVydCBhbiBlcnJvbmVvdXMgcmViYXNlbGluZSBm
cm9tIHI5MjMxNS5cbicgKwotICAgICcqIC4uLjwvdGl0bGU+XG4nICsKLSAgICAnICAgICAgPGxp
bms+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIzMzgvdHJ1bms8L2xpbms+XG4n
ICsKLSAgICAnICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC85MjMzOC90cnVuazwvZ3VpZD5cbicgKwotICAgICcgICAgICA8ZGVz
Y3JpcHRpb24+Jmx0O3AmZ3Q7XG4nICsKLSAgICAnUmV2ZXJ0IGFuIGVycm9uZW91cyByZWJhc2Vs
aW5lIGZyb20gJmx0O2EgY2xhc3M9ImNoYW5nZXNldCIgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvOTIzMTUiIHRpdGxlPSJSZW1vdmUgTGVnYWN5RGVmYXVsdE9wdGlvbmFs
QXJndW1lbnRzIGZsYWcgZnJvbSBuYXZpZ2F0b3IgSURMIGZpbGVzIC4uLiImZ3Q7cjkyMzE1Jmx0
Oy9hJmd0Oy5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsK
LSAgICAnKiBmYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0
OlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICc8L2Rlc2NyaXB0aW9uPlxuJyArCi0g
ICAgJyAgICAgIDxjYXRlZ29yeT5Mb2c8L2NhdGVnb3J5PlxuJyArCi0gICAgJyAgICA8L2l0ZW0+
PGl0ZW0+XG4nICsKLSAgICAnICAgICAgICAgIDxhdXRob3I+bm9hbS5yb3NlbnRoYWxAbm9raWEu
Y29tPC9hdXRob3I+XG4nICsKLSAgICAnICAgICAgPHB1YkRhdGU+VGh1LCAwNCBBdWcgMjAxMSAw
MDoyMjoyMSBHTVQ8L3B1YkRhdGU+XG4nICsKLSAgICAnICAgICAgPHRpdGxlPlJldmlzaW9uIDky
MzM3OiBbUXRdW1RleG1hcF1bUkVHUkVTU0lPTl0gaHR0cDovL3dlYmtpdC5vcmcvYmxvZy1maWxl
cy90cmFuc2Zvcm0tc3R5bGUuaHRtbCAuLi48L3RpdGxlPlxuJyArCi0gICAgJyAgICAgIDxsaW5r
Pmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzM3L3RydW5rPC9saW5rPlxuJyAr
Ci0gICAgJyAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvOTIzMzcvdHJ1bms8L2d1aWQ+XG4nICsKLSAgICAnICAgICAgPGRlc2Ny
aXB0aW9uPiZsdDtwJmd0O1xuJyArCi0gICAgJ1tRdF1bVGV4bWFwXVtSRUdSRVNTSU9OXSAmbHQ7
YSBjbGFzcz0iZXh0LWxpbmsiIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnL2Jsb2ctZmlsZXMvdHJh
bnNmb3JtLXN0eWxlLmh0bWwiJmd0OyZsdDtzcGFuIGNsYXNzPSJpY29uIiZndDsgJmx0Oy9zcGFu
Jmd0O2h0dHA6Ly93ZWJraXQub3JnL2Jsb2ctZmlsZXMvdHJhbnNmb3JtLXN0eWxlLmh0bWwmbHQ7
L2EmZ3Q7IGRvZXNuXCd0IHNob3cgY29tcG9zaXRlZCBjb250ZW50XG4nICsKLSAgICAnJmx0O2Eg
Y2xhc3M9ImV4dC1saW5rIiBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjU2MjkiJmd0OyZsdDtzcGFuIGNsYXNzPSJpY29uIiZndDsgJmx0Oy9zcGFuJmd0O2h0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTYyOSZsdDsvYSZndDtcbicg
KwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnUmV2aWV3
ZWQgYnkgQmVuamFtaW4gUG91bGFpbi5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAn
Jmx0O3AmZ3Q7XG4nICsKLSAgICAnU29tZSBub24tRVMyIGluaXRpYWxpemF0aW9uIHdhcyB3cm9u
Z2Z1bGx5ICNpZmRlZmVkIGluIENQVShYODYpIGFuZCB0aHVzIGNvbXBpbGVkLW91dC5cbicgKwot
ICAgICdXaGVuIHB1dCBpdCBpbiB0aGUgY29ycmVjdCAjaWZkZWYsIGNvbXBvc2l0ZWQgbGF5ZXJz
IHdoaWNoIHJlcXVpcmUgYW4gaW50ZXJtZWRpYXRlIGJ1ZmZlclxuJyArCi0gICAgJ3dvcmsgYWdh
aW4uXG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJyZsdDtwJmd0O1xuJyArCi0gICAg
J05vIG5ldyB0ZXN0cy4gRXhpc3Rpbmcgb3BhY2l0eSB0ZXN0cyBpbiBMYXlvdXRUZXN0cy9jb21w
b3NpdGluZyB0ZXN0IHRoaXMuXG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJyZsdDtw
Jmd0O1xuJyArCi0gICAgJyogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJH
TC5jcHA6XG4nICsKLSAgICAnKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6YmluZCk6XG4nICsK
LSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJzwvZGVzY3JpcHRpb24+XG4nICsKLSAgICAnICAg
ICAgPGNhdGVnb3J5PkxvZzwvY2F0ZWdvcnk+XG4nICsKLSAgICAnICAgIDwvaXRlbT48aXRlbT5c
bicgKwotICAgICcgICAgICAgICAgPGF1dGhvcj5jb21taXQtcXVldWVAd2Via2l0Lm9yZzwvYXV0
aG9yPlxuJyArCi0gICAgJyAgICAgIDxwdWJEYXRlPldlZCwgMDMgQXVnIDIwMTEgMDQ6MjY6NTIg
R01UPC9wdWJEYXRlPlxuJyArCi0gICAgJyAgICAgIDx0aXRsZT5SZXZpc2lvbiA5MjI1OTogVW5y
ZXZpZXdlZCwgcmV2ZXJ0aW5nIHI5MjI1Ni5cbicgKwotICAgICdodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC85MjI1NiAuLi48L3RpdGxlPlxuJyArCi0gICAgJyAgICAgIDxsaW5rPmh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU5L3RydW5rPC9saW5rPlxuJyArCi0g
ICAgJyAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvOTIyNTkvdHJ1bms8L2d1aWQ+XG4nICsKLSAgICAnICAgICAgPGRlc2NyaXB0
aW9uPiZsdDtwJmd0O1xuJyArCi0gICAgJ1VucmV2aWV3ZWQsIHJldmVydGluZyAmbHQ7YSBjbGFz
cz0iY2hhbmdlc2V0IiBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1
NiIgdGl0bGU9Ik1ha2UgRXZlbnREaXNwYXRjaE1lZGlhdG9yIFJlZkNvdW50ZWQuIC4uLiImZ3Q7
cjkyMjU2Jmx0Oy9hJmd0Oy5cbicgKwotICAgICcmbHQ7YSBjbGFzcz0iZXh0LWxpbmsiIGhyZWY9
Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU2IiZndDsmbHQ7c3BhbiBjbGFz
cz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZndDtodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC85MjI1NiZsdDsvYSZndDtcbicgKwotICAgICcmbHQ7YSBjbGFzcz0iZXh0LWxpbmsiIGhyZWY9
Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU5MyImZ3Q7Jmx0O3Nw
YW4gY2xhc3M9Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY1NTkzJmx0Oy9hJmd0O1xuJyArCi0gICAgJyZsdDsvcCZndDtcbicg
KwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICdDYXVzaW5nIHRvbnMgb2YgY3Jhc2hlcyBvbiB0
aGUgY2hyb21pdW0gd2luIGJvdHMgKFJlcXVlc3RlZCBieVxuJyArCi0gICAgJ2phbWVzciBvbiAj
d2Via2l0KS5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsK
LSAgICAnUGF0Y2ggYnkgU2hlcmlmZiBCb3QgJmFtcDtsdDsmbHQ7YSBjbGFzcz0ibWFpbC1saW5r
IiBocmVmPSJtYWlsdG86d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tIiZndDsmbHQ7c3BhbiBj
bGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZndDt3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20m
bHQ7L2EmZ3Q7JmFtcDtndDsgb24gMjAxMS0wOC0wMlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicg
KwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICcqIGRvbS9FdmVudC5jcHA6XG4nICsKLSAgICAn
KiBkb20vRXZlbnQuaDpcbicgKwotICAgICcqIGRvbS9FdmVudERpc3BhdGNoZXIuY3BwOlxuJyAr
Ci0gICAgJyhXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQpOlxuJyArCi0g
ICAgJyogZG9tL0V2ZW50RGlzcGF0Y2hlci5oOlxuJyArCi0gICAgJyogZG9tL0tleWJvYXJkRXZl
bnQuY3BwOlxuJyArCi0gICAgJyogZG9tL0tleWJvYXJkRXZlbnQuaDpcbicgKwotICAgICcqIGRv
bS9Nb3VzZUV2ZW50LmNwcDpcbicgKwotICAgICcqIGRvbS9Nb3VzZUV2ZW50Lmg6XG4nICsKLSAg
ICAnKiBkb20vTm9kZS5jcHA6XG4nICsKLSAgICAnKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoRXZl
bnQpOlxuJyArCi0gICAgJyhXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaEtleUV2ZW50KTpcbicgKwot
ICAgICcoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hNb3VzZUV2ZW50KTpcbicgKwotICAgICcoV2Vi
Q29yZTo6Tm9kZTo6ZGlzcGF0Y2hXaGVlbEV2ZW50KTpcbicgKwotICAgICcqIGRvbS9XaGVlbEV2
ZW50LmNwcDpcbicgKwotICAgICcqIGRvbS9XaGVlbEV2ZW50Lmg6XG4nICsKLSAgICAnJmx0Oy9w
Jmd0O1xuJyArCi0gICAgJzwvZGVzY3JpcHRpb24+XG4nICsKLSAgICAnICAgICAgPGNhdGVnb3J5
PkxvZzwvY2F0ZWdvcnk+XG4nICsKLSAgICAnICAgIDwvaXRlbT5cbicgKwotICAgICcgPC9jaGFu
bmVsPlxuJyArCi0gICAgJzwvcnNzPlxuJwotCi12YXIga0V4YW1wbGVDb21taXREYXRhTGlzdCA9
IFt7Ci0gICAgInJldmlzaW9uIjogOTIzNDIsCi0gICAgInRpdGxlIjogIlJldmlzaW9uIDkyMzQy
OiBTdXBwb3J0IGNhc3QgYmV0d2VlbiBDU1NQcmltaXRpdmVWYWx1ZSBhbmQgRUJveFNpemluZywg
dXNlIGluIC4uLiIsCi0gICAgInRpbWUiOiAiVGh1LCAwNCBBdWcgMjAxMSAwMjowOToxOSBHTVQi
LAotICAgICJzdW1tYXJ5IjogIlN1cHBvcnQgY2FzdCBiZXR3ZWVuIENTU1ByaW1pdGl2ZVZhbHVl
IGFuZCBFQm94U2l6aW5nLCB1c2UgaW4gQ1NTU3R5bGVTZWxlY3Rvci4iLAotICAgICJhdXRob3Ii
OiAibWFjcGhlcnNvbkBjaHJvbWl1bS5vcmciLAotICAgICJyZXZpZXdlciI6ICJTaW1vbiBGcmFz
ZXIiLAotICAgICJidWdJRCI6IDY1NjU3LAotICAgICJyZXZlcnRlZFJldmlzaW9uIjogdW5kZWZp
bmVkCi19LCB7Ci0gICAgInJldmlzaW9uIjogOTIzNDEsCi0gICAgInRpdGxlIjogIlJldmlzaW9u
IDkyMzQxOiBJbXBsZW1lbnQgRXZlbnRTZW5kZXIuc2NhbGVQYWdlQnkoKSAuLi4iLAotICAgICJ0
aW1lIjogIlRodSwgMDQgQXVnIDIwMTEgMDI6MDE6MzEgR01UIiwKLSAgICAic3VtbWFyeSI6ICJJ
bXBsZW1lbnQgRXZlbnRTZW5kZXIuc2NhbGVQYWdlQnkoKSIsCi0gICAgImF1dGhvciI6ICJLZW50
YXJvIEhhcmEiLAotICAgICJyZXZpZXdlciI6ICJEYXJpbiBGaXNoZXIiLAotICAgICJidWdJRCI6
IDU4MDEzLAotICAgICJyZXZlcnRlZFJldmlzaW9uIjogdW5kZWZpbmVkCi19LCB7Ci0gICAgInJl
dmlzaW9uIjogOTIzMzgsCi0gICAgInRpdGxlIjogIlJldmlzaW9uIDkyMzM4OiBSZXZlcnQgYW4g
ZXJyb25lb3VzIHJlYmFzZWxpbmUgZnJvbSByOTIzMTUuXG4qIC4uLiIsCi0gICAgInRpbWUiOiAi
VGh1LCAwNCBBdWcgMjAxMSAwMTo0MToyOSBHTVQiLAotICAgICJzdW1tYXJ5IjogIlJldmVydCBh
biBlcnJvbmVvdXMgcmViYXNlbGluZSBmcm9tIHI5MjMxNS4iLAotICAgICJhdXRob3IiOiAicm5p
d2FAd2Via2l0Lm9yZyIsCi0gICAgInJldmlld2VyIjogbnVsbCwKLSAgICAiYnVnSUQiOiBOYU4s
Ci0gICAgInJldmVydGVkUmV2aXNpb24iOiB1bmRlZmluZWQKLX0sIHsKLSAgICAicmV2aXNpb24i
OiA5MjMzNywKLSAgICAidGl0bGUiOiAiUmV2aXNpb24gOTIzMzc6IFtRdF1bVGV4bWFwXVtSRUdS
RVNTSU9OXSBodHRwOi8vd2Via2l0Lm9yZy9ibG9nLWZpbGVzL3RyYW5zZm9ybS1zdHlsZS5odG1s
IC4uLiIsCi0gICAgInRpbWUiOiAiVGh1LCAwNCBBdWcgMjAxMSAwMDoyMjoyMSBHTVQiLAotICAg
ICJzdW1tYXJ5IjogIltRdF1bVGV4bWFwXVtSRUdSRVNTSU9OXSAgaHR0cDovL3dlYmtpdC5vcmcv
YmxvZy1maWxlcy90cmFuc2Zvcm0tc3R5bGUuaHRtbCBkb2Vzbid0IHNob3cgY29tcG9zaXRlZCBj
b250ZW50IiwKLSAgICAiYXV0aG9yIjogIm5vYW0ucm9zZW50aGFsQG5va2lhLmNvbSIsCi0gICAg
InJldmlld2VyIjogIkJlbmphbWluIFBvdWxhaW4iLAotICAgICJidWdJRCI6IDY1NjI5LAotICAg
ICJyZXZlcnRlZFJldmlzaW9uIjogdW5kZWZpbmVkCi19LCB7Ci0gICAgInJldmlzaW9uIjogOTIy
NTksCi0gICAgInRpdGxlIjogIlJldmlzaW9uIDkyMjU5OiBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjkyMjU2LlxuaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIyNTYgLi4uIiwKLSAg
ICAidGltZSI6ICJXZWQsIDAzIEF1ZyAyMDExIDA0OjI2OjUyIEdNVCIsCi0gICAgInN1bW1hcnki
OiAiVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHI5MjI1Ni4iLAotICAgICJhdXRob3IiOiAiU2hlcmlm
ZiBCb3QiLAotICAgICJyZXZpZXdlciI6IG51bGwsCi0gICAgImJ1Z0lEIjogNjU1OTMsCi0gICAg
InJldmVydGVkUmV2aXNpb24iOiA5MjI1NgotfV07Ci0KLXRlc3QoImNoYW5nZXNldFVSTCIsIDEs
IGZ1bmN0aW9uKCkgewotICAgIGVxdWFscyh0cmFjLmNoYW5nZXNldFVSTCgxMjM0KSwgImh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyMzQiKTsKLX0pOwotCi10ZXN0KCJsb2dVUkwi
LCA0LCBmdW5jdGlvbigpIHsKLSAgICBlcXVhbHModHJhYy5sb2dVUkwoJ3RydW5rJywgMTIzNCwg
MTIzNiwgZmFsc2UsIGZhbHNlKSwgImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvbG9nL3RydW5rP3Jl
dj0xMjM2JnN0b3BfcmV2PTEyMzQmbGltaXQ9NCIpOwotICAgIGVxdWFscyh0cmFjLmxvZ1VSTCgn
dHJ1bmsnLCAxMjM0LCAxMjM0LCB0cnVlLCBmYWxzZSksICJodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2xvZy90cnVuaz9yZXY9MTIzNCZzdG9wX3Jldj0xMjM0JmxpbWl0PTImdmVyYm9zZT1vbiIpOwot
ICAgIGVxdWFscyh0cmFjLmxvZ1VSTCgndHJ1bmsnLCAxMjM2LCAxMjM2LCBmYWxzZSwgdHJ1ZSks
ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2xvZy90cnVuaz9yZXY9MTIzNiZzdG9wX3Jldj0xMjM2
JmxpbWl0PTImZm9ybWF0PXJzcyIpOwotICAgIGVxdWFscyh0cmFjLmxvZ1VSTCgndHJ1bmsnLCAx
MjM0LCAxMjM2LCB0cnVlLCB0cnVlKSwgImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvbG9nL3RydW5r
P3Jldj0xMjM2JnN0b3BfcmV2PTEyMzQmbGltaXQ9NCZ2ZXJib3NlPW9uJmZvcm1hdD1yc3MiKTsK
LX0pOwotCi10ZXN0KCJyZWNlbnRDb21taXREYXRhIiwgMywgZnVuY3Rpb24oKSB7Ci0gICAgdmFy
IHNpbXVsYXRvciA9IG5ldyBOZXR3b3JrU2ltdWxhdG9yKCk7Ci0gICAgc2ltdWxhdG9yLmdldCA9
IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spCi0gICAgewotICAgICAgICBlcXVhbHModXJsLCAnaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9sb2cvdHJ1bms/dmVyYm9zZT1vbiZmb3JtYXQ9cnNzJmxpbWl0
PTEwJyk7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgdmFyIHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTsKLSAgICAgICAgICAgIHZh
ciByZXNwb25zZURPTSA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoa0V4YW1wbGVDb21taXREYXRh
WE1MLCAiYXBwbGljYXRpb24veG1sIik7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXNwb25zZURP
TSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBzaW11bGF0b3IucnVuVGVzdChmdW5jdGlv
bigpIHsKLSAgICAgICAgdHJhYy5yZWNlbnRDb21taXREYXRhKCd0cnVuaycsIDEwLCBmdW5jdGlv
bihjb21taXREYXRhTGlzdCkgewotICAgICAgICAgICAgJC5lYWNoKGNvbW1pdERhdGFMaXN0LCBm
dW5jdGlvbihpbmRleCwgY29tbWl0RGF0YSkgewotICAgICAgICAgICAgICAgIC8vIEluY2x1ZGlu
ZyB0aGUgZW50aXJlIG1lc3NhZ2UgbWFrZXMgdGhlIGRlZXBFcXVhbCBiZWxvdyB0byB1bndpZWxk
eS4KLSAgICAgICAgICAgICAgICBkZWxldGUgY29tbWl0RGF0YS5tZXNzYWdlOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICBkZWVwRXF1YWwoY29tbWl0RGF0YUxpc3QsIGtFeGFtcGxlQ29t
bWl0RGF0YUxpc3QpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0pOwotCi10ZXN0KCJjb21taXRE
YXRhRm9yUmV2aXNpb25SYW5nZSIsIDMsIGZ1bmN0aW9uKCkgewotICAgIHZhciBzaW11bGF0b3Ig
PSBuZXcgTmV0d29ya1NpbXVsYXRvcigpOwotICAgIHNpbXVsYXRvci5nZXQgPSBmdW5jdGlvbih1
cmwsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgZXF1YWxzKHVybCwgJ2h0dHA6Ly90cmFjLndl
YmtpdC5vcmcvbG9nL3RydW5rP3Jldj0xMjM2NSZzdG9wX3Jldj0xMjM0NSZsaW1pdD0yMiZ2ZXJi
b3NlPW9uJmZvcm1hdD1yc3MnKTsKLSAgICAgICAgc2ltdWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2so
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpOwot
ICAgICAgICAgICAgdmFyIHJlc3BvbnNlRE9NID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhrRXhh
bXBsZUNvbW1pdERhdGFYTUwsICJhcHBsaWNhdGlvbi94bWwiKTsKLSAgICAgICAgICAgIGNhbGxi
YWNrKHJlc3BvbnNlRE9NKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5y
dW5UZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICB0cmFjLmNvbW1pdERhdGFGb3JSZXZpc2lvblJh
bmdlKCd0cnVuaycsIDEyMzQ1LCAxMjM2NSwgZnVuY3Rpb24oY29tbWl0RGF0YUxpc3QpIHsKLSAg
ICAgICAgICAgICQuZWFjaChjb21taXREYXRhTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGNvbW1pdERh
dGEpIHsKLSAgICAgICAgICAgICAgICAvLyBJbmNsdWRpbmcgdGhlIGVudGlyZSBtZXNzYWdlIG1h
a2VzIHRoZSBkZWVwRXF1YWwgYmVsb3cgdG8gdW53aWVsZHkuCi0gICAgICAgICAgICAgICAgZGVs
ZXRlIGNvbW1pdERhdGEubWVzc2FnZTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgZGVl
cEVxdWFsKGNvbW1pdERhdGFMaXN0LCBrRXhhbXBsZUNvbW1pdERhdGFMaXN0KTsKLSAgICAgICAg
fSk7Ci0gICAgfSk7Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9hY3Rp
b25zLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9hY3Rpb25zLmpzCShyZXZp
c2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvYWN0aW9ucy5qcwkobm9uZXhpc3Rl
bnQpCkBAIC0xLDEyNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXZhciB1aSA9IHVpIHx8IHt9Owot
dWkuYWN0aW9ucyA9IHVpLmFjdGlvbnMgfHwge307Ci0KLShmdW5jdGlvbigpIHsKLQotdmFyIEFj
dGlvbiA9IGJhc2UuZXh0ZW5kcygnYnV0dG9uJywgewotICAgIGluaXQ6IGZ1bmN0aW9uKCkgewot
ICAgICAgICB0aGlzLl9ldmVudE5hbWUgPSBudWxsOwotICAgICAgICAkKHRoaXMpLmFkZENsYXNz
KCdhY3Rpb24nKTsKLSAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fZXZlbnROYW1lKSB7Ci0gICAgICAg
ICAgICAgICAgJCh0aGlzKS50cmlnZ2VyKHRoaXMuX2V2ZW50TmFtZSk7Ci0gICAgICAgICAgICAg
ICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0uYmlu
ZCh0aGlzKSk7Ci0gICAgfSwKLSAgICBtYWtlRGVmYXVsdDogZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICQodGhpcykuYWRkQ2xhc3MoJ2RlZmF1bHQnKTsKLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAg
fQotfSk7Ci0KLXVpLmFjdGlvbnMuQmxhbWUgPSBiYXNlLmV4dGVuZHMoQWN0aW9uLCB7Ci0gICAg
aW5pdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRoaXMudGV4dENvbnRlbnQgPSAnQmxhbWUnOwot
ICAgICAgICB0aGlzLl9ldmVudE5hbWUgPSAnYmxhbWUnOwotICAgICAgICB0aGlzLnRpdGxlID0g
J0JsYW1lcyB0aGlzIGZhaWx1cmUgb24gdGhpcyByZXZpc2lvbi4nCi0gICAgfQotfSk7Ci0KLXVp
LmFjdGlvbnMuQ2xvc2UgPSBiYXNlLmV4dGVuZHMoQWN0aW9uLCB7Ci0gICAgaW5pdDogZnVuY3Rp
b24oKSB7Ci0gICAgICAgIHRoaXMudGV4dENvbnRlbnQgPSAnQ2xvc2UnOwotICAgICAgICB0aGlz
Ll9ldmVudE5hbWUgPSAnY2xvc2UnOwotICAgIH0KLX0pOwotCi11aS5hY3Rpb25zLlJldmVydCA9
IGJhc2UuZXh0ZW5kcyhBY3Rpb24sIHsKLSAgICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICAgICAg
dGhpcy50ZXh0Q29udGVudCA9ICdSZXZlcnQnOwotICAgICAgICB0aGlzLl9ldmVudE5hbWUgPSAn
cmV2ZXJ0JzsKLSAgICAgICAgdGhpcy50aXRsZSA9ICdSZXZlcnRzIHRoaXMgcmV2aXNpb24uJwot
ICAgIH0KLX0pOwotCi11aS5hY3Rpb25zLkV4YW1pbmUgPSBiYXNlLmV4dGVuZHMoQWN0aW9uLCB7
Ci0gICAgaW5pdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRoaXMudGV4dENvbnRlbnQgPSAnRXhh
bWluZSc7Ci0gICAgICAgIHRoaXMuX2V2ZW50TmFtZSA9ICdleGFtaW5lJzsKLSAgICAgICAgdGhp
cy50aXRsZSA9ICdFeGFtaW5lIHRoZXNlIGZhaWx1cmVzIGluIGRldGFpbC4nCi0gICAgfQotfSk7
Ci0KLXVpLmFjdGlvbnMuUmViYXNlbGluZSA9IGJhc2UuZXh0ZW5kcyhBY3Rpb24sIHsKLSAgICBp
bml0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9ICdSZWJhc2VsaW5l
JzsKLSAgICAgICAgdGhpcy5fZXZlbnROYW1lID0gJ3JlYmFzZWxpbmUnOwotICAgIH0KLX0pOwot
Ci11aS5hY3Rpb25zLkV4cGVjdEZhaWx1cmUgPSBiYXNlLmV4dGVuZHMoQWN0aW9uLCB7Ci0gICAg
aW5pdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRoaXMudGV4dENvbnRlbnQgPSAnRXhwZWN0IEZh
aWx1cmUnOwotICAgICAgICB0aGlzLl9ldmVudE5hbWUgPSAnZXhwZWN0ZmFpbHVyZSc7Ci0gICAg
fQotfSk7Ci0KLXVpLmFjdGlvbnMuTmV4dCA9IGJhc2UuZXh0ZW5kcyhBY3Rpb24sIHsKLSAgICBp
bml0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy5pbm5lckhUTUwgPSAnJiM5NjU0Oyc7Ci0g
ICAgICAgIHRoaXMuX2V2ZW50TmFtZSA9ICduZXh0JzsKLSAgICAgICAgJCh0aGlzKS5hZGRDbGFz
cygnbmV4dCcpOwotICAgIH0KLX0pOwotCi11aS5hY3Rpb25zLlByZXZpb3VzID0gYmFzZS5leHRl
bmRzKEFjdGlvbiwgewotICAgIGluaXQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLmlubmVy
SFRNTCA9ICcmIzk2NjQ7JzsKLSAgICAgICAgdGhpcy5fZXZlbnROYW1lID0gJ3ByZXZpb3VzJzsK
LSAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygncHJldmlvdXMnKTsKLSAgICB9Ci19KTsKLQotdWku
YWN0aW9ucy5MaXN0ID0gYmFzZS5leHRlbmRzKCd1bCcsIHsKLSAgICBpbml0OiBmdW5jdGlvbihh
Y3Rpb25zKSB7Ci0gICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ2FjdGlvbnMnOwotICAgICAgICBp
ZiAoIWFjdGlvbnMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGFjdGlvbnMuZm9yRWFj
aCh0aGlzLmFkZC5iaW5kKHRoaXMpKTsKLSAgICB9LAotICAgIGFkZDogZnVuY3Rpb24oYWN0aW9u
KQotICAgIHsKLSAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScp
OwotICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGFjdGlvbik7Ci0gICAgICAgICQodGhpcykuYXBw
ZW5kKGl0ZW0pOwotICAgIH0KLX0pOwotCi19KSgpOwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3Vp
L2FjdGlvbnNfdW5pdHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9h
Y3Rpb25zX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRz
L3VpL2FjdGlvbnNfdW5pdHRlc3RzLmpzCShub25leGlzdGVudCkKQEAgLTEsNzYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0oZnVuY3Rpb24gKCkgewotCi1tb2R1bGUoJ3VpLmFjdGlvbnMnKTsKLQot
dGVzdCgnQnV0dG9ucycsIDYsIGZ1bmN0aW9uKCkgewotICAgIHZhciBidXR0b25JbmZvcyA9IFt7
Ci0gICAgICAgIHZpZXc6IG5ldyB1aS5hY3Rpb25zLlJldmVydCgpLAotICAgICAgICB0ZXh0OiAn
UmV2ZXJ0JywKLSAgICAgICAgZXZlbnQ6ICdyZXZlcnQnCi0gICAgfSwgewotICAgICAgICB2aWV3
OiBuZXcgdWkuYWN0aW9ucy5FeGFtaW5lKCksCi0gICAgICAgIHRleHQ6ICdFeGFtaW5lJywKLSAg
ICAgICAgZXZlbnQ6ICdleGFtaW5lJwotICAgIH0sIHsKLSAgICAgICAgdmlldzogbmV3IHVpLmFj
dGlvbnMuUmViYXNlbGluZSgpLAotICAgICAgICB0ZXh0OiAnUmViYXNlbGluZScsCi0gICAgICAg
IGV2ZW50OiAncmViYXNlbGluZScKLSAgICB9XTsKLSAgICBidXR0b25JbmZvcy5mb3JFYWNoKGZ1
bmN0aW9uKGJ1dHRvbkluZm8pIHsKLSAgICAgICAgZXF1YWwoYnV0dG9uSW5mby52aWV3LnRleHRD
b250ZW50LCBidXR0b25JbmZvLnRleHQpOwotICAgICAgICBlcXVhbChidXR0b25JbmZvLnZpZXcu
X2V2ZW50TmFtZSwgYnV0dG9uSW5mby5ldmVudCk7Ci0gICAgfSk7Ci19KTsKLQotdGVzdCgnY2xp
Y2snLCAxLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZXhhbWluZSA9IG5ldyB1aS5hY3Rpb25zLkV4
YW1pbmUoKTsKLSAgICAkKGV4YW1pbmUpLmJpbmQoJ2V4YW1pbmUnLCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgb2soJ0V4YW1pbmUgdHJpZ2dlcmVkLicpOwotICAgIH0pOwotICAgICQoZXhhbWluZSku
dHJpZ2dlcignY2xpY2snKTsKLX0pOwotCi10ZXN0KCdkZWZhdWx0JywgMiwgZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIG5leHQgPSBuZXcgdWkuYWN0aW9ucy5OZXh0KCk7Ci0gICAgZXF1YWwobmV4dC5t
YWtlRGVmYXVsdCgpLCBuZXh0KTsKLSAgICBlcXVhbChuZXh0LmNsYXNzTmFtZSwgJ2FjdGlvbiBu
ZXh0IGRlZmF1bHQnKTsKLX0pOwotCi10ZXN0KCdMaXN0JywgMSwgZnVuY3Rpb24oKSB7Ci0gICAg
dmFyIGxpc3QgPSBuZXcgdWkuYWN0aW9ucy5MaXN0KFsKLSAgICAgICAgbmV3IHVpLmFjdGlvbnMu
UmViYXNlbGluZSgpLAotICAgICAgICBuZXcgdWkuYWN0aW9ucy5QcmV2aW91cygpLAotICAgICAg
ICBuZXcgdWkuYWN0aW9ucy5OZXh0KCkKLSAgICBdKTsKLSAgICBlcXVhbChsaXN0LmlubmVySFRN
TCwKLSAgICAgICAgJzxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24iPlJlYmFzZWxpbmU8L2J1dHRv
bj48L2xpPicgKwotICAgICAgICAnPGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiBwcmV2aW91cyI+
XHUyNUMwPC9idXR0b24+PC9saT4nICsKLSAgICAgICAgJzxsaT48YnV0dG9uIGNsYXNzPSJhY3Rp
b24gbmV4dCI+XHUyNUI2PC9idXR0b24+PC9saT4nKTsKLX0pOwotCi19KCkpOwpJbmRleDogVG9v
bHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9zY3JpcHRzL3VpL2ZhaWx1cmVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy91aS9mYWlsdXJlcy5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3Vp
L2ZhaWx1cmVzLmpzCShub25leGlzdGVudCkKQEAgLTEsMTU3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotdmFyIHVpID0gdWkgfHwge307Ci11aS5mYWlsdXJlcyA9IHVpLmZhaWx1cmVzIHx8IHt9Owot
Ci0oZnVuY3Rpb24oKXsKLQotdmFyIGtCdWlsZGluZ1Jlc3VsdCA9ICdCVUlMRElORyc7Ci0KLXVp
LmZhaWx1cmVzLkJ1aWxkZXIgPSBiYXNlLmV4dGVuZHMoJ2EnLCB7Ci0gICAgaW5pdDogZnVuY3Rp
b24oYnVpbGRlck5hbWUsIGZhaWx1cmVzKQotICAgIHsKLSAgICAgICAgdmFyIHBsYXRmb3JtQnVp
bGRlcnMgPSBjb25maWcuY3VycmVudEJ1aWxkZXJzKCk7Ci0gICAgICAgIHZhciBjb25maWd1cmF0
aW9uID0gcGxhdGZvcm1CdWlsZGVyc1tidWlsZGVyTmFtZV07Ci0gICAgICAgIGlmIChjb25maWd1
cmF0aW9uKSB7Ci0gICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbi52ZXJzaW9uKQotICAgICAg
ICAgICAgICAgIHRoaXMuX2FkZFNwYW4oJ3ZlcnNpb24nLCBjb25maWd1cmF0aW9uLnZlcnNpb24p
OwotICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24uaXM2NGJpdCkKLSAgICAgICAgICAgICAg
ICB0aGlzLl9hZGRTcGFuKCdhcmNoaXRlY3R1cmUnLCAnNjQtYml0Jyk7Ci0gICAgICAgICAgICB0
aGlzLl9jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICB0aGlzLl9hZGRTcGFuKCd2ZXJzaW9uJywgYnVpbGRlck5hbWUpOwotCi0gICAgICAg
IHRoaXMuY2xhc3NOYW1lID0gJ2ZhaWxpbmctYnVpbGRlcic7Ci0gICAgICAgIHRoaXMudGFyZ2V0
ID0gJ19ibGFuayc7Ci0gICAgICAgIHRoaXMuaHJlZiA9IHVpLmRpc3BsYXlVUkxGb3JCdWlsZGVy
KGJ1aWxkZXJOYW1lKTsKLSAgICAgICAgaWYgKGZhaWx1cmVzKQotICAgICAgICAgICAgdGhpcy5f
YWRkU3BhbignZmFpbHVyZXMnLCAnICcgKyBmYWlsdXJlcy5qb2luKCcsICcpKTsKLSAgICB9LAot
ICAgIF9hZGRTcGFuOiBmdW5jdGlvbihjbGFzc05hbWUsIHRleHQpCi0gICAgewotICAgICAgICB2
YXIgc3BhbiA9IHRoaXMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3Bhbicp
KTsKLSAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSBjbGFzc05hbWU7Ci0gICAgICAgIHNwYW4udGV4
dENvbnRlbnQgPSB0ZXh0OwotICAgIH0sCi0gICAgZXF1YWxzOiBmdW5jdGlvbihjb25maWd1cmF0
aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZ3VyYXRpb24gJiYgdGhpcy5f
Y29uZmlndXJhdGlvbi5pczY0Yml0ID09IGNvbmZpZ3VyYXRpb24uaXM2NGJpdCAmJiB0aGlzLl9j
b25maWd1cmF0aW9uLnZlcnNpb24gPT0gY29uZmlndXJhdGlvbi52ZXJzaW9uOyAKLSAgICB9Ci19
KTsKLQotZnVuY3Rpb24gY2VsbENvbnRhaW5zQ29uZmlndXJhdGlvbihjZWxsLCBjb25maWd1cmF0
aW9uKQotewotICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGNlbGwuY2hpbGRy
ZW4sIGZ1bmN0aW9uKGNvbmZpZ3VyYXRpb25FbGVtZW50KSB7Ci0gICAgICAgIHJldHVybiBjb25m
aWd1cmF0aW9uRWxlbWVudC5lcXVhbHMgJiYgY29uZmlndXJhdGlvbkVsZW1lbnQuZXF1YWxzKGNv
bmZpZ3VyYXRpb24pOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBjZWxsQnlCdWlsZFR5cGUocm93
LCBjb25maWd1cmF0aW9uKQotewotICAgIHJldHVybiByb3cuY2VsbHNbY29uZmlndXJhdGlvbi5k
ZWJ1ZyA/IDIgOiAxXTsKLX0KLQotdWkuZmFpbHVyZXMuRmFpbHVyZUdyaWQgPSBiYXNlLmV4dGVu
ZHMoJ3RhYmxlJywgewotICAgIGluaXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
Y2xhc3NOYW1lID0gJ2ZhaWx1cmVzJzsKLSAgICAgICAgdmFyIHRpdGxlcyA9IHRoaXMuY3JlYXRl
VEhlYWQoKS5pbnNlcnRSb3coKTsKLSAgICAgICAgdGl0bGVzLmluc2VydENlbGwoKS50ZXh0Q29u
dGVudCA9ICdkZWJ1Zyc7Ci0gICAgICAgIHRpdGxlcy5pbnNlcnRDZWxsKCkudGV4dENvbnRlbnQg
PSAncmVsZWFzZSc7Ci0gICAgICAgIHRpdGxlcy5pbnNlcnRDZWxsKCkudGV4dENvbnRlbnQgPSAn
dHlwZSc7Ci0gICAgICAgIHRoaXMuX2JvZHkgPSB0aGlzLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3Rib2R5JykpOwotICAgICAgICB0aGlzLl9yZXNldCgpOwotICAgIH0sCi0g
ICAgX3Jvd0J5UmVzdWx0OiBmdW5jdGlvbihyZXN1bHQpCi0gICAgewotICAgICAgICB2YXIgcm93
ID0gdGhpcy5fcmVzdWx0Um93c1tyZXN1bHRdOwotICAgICAgICAkKHJvdykuc2hvdygpOwotICAg
ICAgICBpZiAocm93KQotICAgICAgICAgICAgcmV0dXJuIHJvdzsKLQotICAgICAgICByb3cgPSB0
aGlzLl9yZXN1bHRSb3dzW3Jlc3VsdF0gPSB0aGlzLl9ib2R5Lmluc2VydFJvdygwKTsKLSAgICAg
ICAgcm93LmNsYXNzTmFtZSA9IHJlc3VsdDsKLSAgICAgICAgcm93Lmluc2VydENlbGwoKTsKLSAg
ICAgICAgcm93Lmluc2VydENlbGwoKTsKLSAgICAgICAgdmFyIHRpdGxlQ2VsbCA9IHJvdy5pbnNl
cnRDZWxsKCk7Ci0gICAgICAgIHRpdGxlQ2VsbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzcGFuJykpLnRleHRDb250ZW50ID0gcmVzdWx0OwotICAgICAgICByZXR1cm4gcm93
OwotICAgIH0sCi0gICAgdXBkYXRlOiBmdW5jdGlvbihyZXN1bHRzQnlCdWlsZGVyKQotICAgIHsK
LSAgICAgICAgaWYgKHRoaXMuX3BlbmRpbmdSZXNldCkKLSAgICAgICAgICAgIHRoaXMuX3Jlc2V0
KCk7Ci0KLSAgICAgICAgaWYgKCFyZXN1bHRzQnlCdWlsZGVyKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIE9iamVjdC5rZXlzKHJlc3VsdHNCeUJ1aWxkZXIpLmZvckVhY2goZnVuY3Rp
b24oYnVpbGRlck5hbWUpIHsKLSAgICAgICAgICAgIHZhciBjb25maWd1cmF0aW9uID0gY29uZmln
LmtQbGF0Zm9ybXNbY29uZmlnLmN1cnJlbnRQbGF0Zm9ybV0uYnVpbGRlcnNbYnVpbGRlck5hbWVd
OwotICAgICAgICAgICAgaWYgKCFjb25maWd1cmF0aW9uKQotICAgICAgICAgICAgICAgIHRocm93
ICJVbmtub3duIGJ1aWxkZXIgbmFtZTogIiArIGJ1aWxkZXJOYW1lOwotICAgICAgICAgICAgdmFy
IHJvdyA9IHRoaXMuX3Jvd0J5UmVzdWx0KHJlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlck5hbWVdLmFj
dHVhbCk7Ci0gICAgICAgICAgICB2YXIgY2VsbCA9IGNlbGxCeUJ1aWxkVHlwZShyb3csIGNvbmZp
Z3VyYXRpb24pOwotICAgICAgICAgICAgaWYgKGNlbGxDb250YWluc0NvbmZpZ3VyYXRpb24oY2Vs
bCwgY29uZmlndXJhdGlvbikpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
Y2VsbC5hcHBlbmRDaGlsZChuZXcgdWkuZmFpbHVyZXMuQnVpbGRlcihidWlsZGVyTmFtZSkpOwot
ICAgICAgICB9LCB0aGlzKTsKLSAgICB9LAotICAgIHB1cmdlOiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICB0aGlzLl9wZW5kaW5nUmVzZXQgPSB0cnVlOwotICAgIH0sCi0gICAgX3Jlc2V0OiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9wZW5kaW5nUmVzZXQgPSBmYWxzZTsKLSAg
ICAgICAgdGhpcy5fcmVzdWx0Um93cyA9IHt9OwotICAgICAgICAkKHRoaXMuX2JvZHkpLmVtcHR5
KCk7Ci0gICAgICAgIC8vIEFkZCB0aGUgQlVJTERJTkcgcm93IGVhZ2VybHkgc28gdGhhdCBpdCBh
cHBlYXJzIGxhc3QuCi0gICAgICAgIHRoaXMuX3Jvd0J5UmVzdWx0KGtCdWlsZGluZ1Jlc3VsdCk7
Ci0gICAgICAgICQodGhpcy5fcmVzdWx0Um93c1trQnVpbGRpbmdSZXN1bHRdKS5oaWRlKCk7Ci0g
ICAgfQotfSk7Ci0KLXVpLmZhaWx1cmVzLkxpc3RJdGVtID0gYmFzZS5leHRlbmRzKCdsaScsIHsK
LSAgICBpbml0OiBmdW5jdGlvbihncm91cE5hbWUsIGZhaWxpbmdUZXN0c0xpc3QpCi0gICAgewot
ICAgICAgICB0aGlzLl9mYWlsaW5nVGVzdHNMaXN0ID0gZmFpbGluZ1Rlc3RzTGlzdDsKLSAgICAg
ICAgdGhpcy5hcHBlbmRDaGlsZChuZXcgdWkuYWN0aW9ucy5MaXN0KFsKLSAgICAgICAgICAgIG5l
dyB1aS5hY3Rpb25zLkV4YW1pbmUoKS5tYWtlRGVmYXVsdCgpLAotICAgICAgICBdKSk7Ci0gICAg
ICAgIHZhciBsYWJlbCA9IHRoaXMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
bGFiZWwnKSkKLSAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPSBmYWlsaW5nVGVzdHNMaXN0Lmxl
bmd0aCA9PSAxID8gZmFpbGluZ1Rlc3RzTGlzdFswXSA6IGdyb3VwTmFtZTsKLSAgICB9LAotfSk7
Ci0KLXVpLmZhaWx1cmVzLkxpc3QgPSBiYXNlLmV4dGVuZHMoJ3VsJywgewotICAgIGluaXQ6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ2ZhaWx1cmVzJzsKLSAg
ICAgICAgdGhpcy50ZXh0Q29udGVudCA9ICdMb2FkaW5nLi4uJzsKLSAgICB9Ci19KTsKLQotfSko
KTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9mYWlsdXJlcy5qcwpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotTEYKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL2ZhaWx1
cmVzX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvZmFpbHVy
ZXNfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkv
ZmFpbHVyZXNfdW5pdHRlc3RzLmpzCShub25leGlzdGVudCkKQEAgLTEsMTQ1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotKGZ1bmN0aW9uICgpIHsKLQotbW9kdWxlKCd1aS5mYWlsdXJlcycpOwotCi10
ZXN0KCdCdWlsZGVyJywgNiwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbmZpZ3VyYXRpb247Ci0g
ICAgY29uZmlndXJhdGlvbiA9IG5ldyB1aS5mYWlsdXJlcy5CdWlsZGVyKCJXZWJraXQgTGludXgi
LCBbInVwZGF0ZSIsICJ3ZWJraXRfdGVzdHMiXSk7Ci0gICAgZGVlcEVxdWFsKE9iamVjdC5nZXRP
d25Qcm9wZXJ0eU5hbWVzKGNvbmZpZ3VyYXRpb24uX19wcm90b19fKS5zb3J0KCksIFsKLSAgICAg
ICAgJ19hZGRTcGFuJywKLSAgICAgICAgJ2VxdWFscycsCi0gICAgICAgICdpbml0JywKLSAgICBd
KTsKLSAgICBlcXVhbChjb25maWd1cmF0aW9uLm91dGVySFRNTCwgJzxhIGNsYXNzPSJmYWlsaW5n
LWJ1aWxkZXIiIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3Jn
L3AvY2hyb21pdW0ud2Via2l0L3dhdGVyZmFsbD9idWlsZGVyPVdlYmtpdCtMaW51eCI+PHNwYW4g
Y2xhc3M9InZlcnNpb24iPmx1Y2lkPC9zcGFuPjxzcGFuIGNsYXNzPSJhcmNoaXRlY3R1cmUiPjY0
LWJpdDwvc3Bhbj48c3BhbiBjbGFzcz0iZmFpbHVyZXMiPiB1cGRhdGUsIHdlYmtpdF90ZXN0czwv
c3Bhbj48L2E+Jyk7Ci0gICAgY29uZmlndXJhdGlvbiA9IG5ldyB1aS5mYWlsdXJlcy5CdWlsZGVy
KCJXZWJraXQgV2luIik7Ci0gICAgZXF1YWwoY29uZmlndXJhdGlvbi5vdXRlckhUTUwsICc8YSBj
bGFzcz0iZmFpbGluZy1idWlsZGVyIiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL2J1aWxk
LmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC93YXRlcmZhbGw/YnVpbGRlcj1XZWJraXQr
V2luIj48c3BhbiBjbGFzcz0idmVyc2lvbiI+eHA8L3NwYW4+PC9hPicpOwotICAgIGNvbmZpZ3Vy
YXRpb24uX2FkZFNwYW4oJ2ZvbycsICdiYXInKTsKLSAgICBlcXVhbChjb25maWd1cmF0aW9uLm91
dGVySFRNTCwgJzxhIGNsYXNzPSJmYWlsaW5nLWJ1aWxkZXIiIHRhcmdldD0iX2JsYW5rIiBocmVm
PSJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L3dhdGVyZmFsbD9i
dWlsZGVyPVdlYmtpdCtXaW4iPjxzcGFuIGNsYXNzPSJ2ZXJzaW9uIj54cDwvc3Bhbj48c3BhbiBj
bGFzcz0iZm9vIj5iYXI8L3NwYW4+PC9hPicpOwotICAgIG9rKGNvbmZpZ3VyYXRpb24uZXF1YWxz
KHt2ZXJzaW9uOiAneHAnfSkpOwotICAgIG9rKCFjb25maWd1cmF0aW9uLmVxdWFscyh7dmVyc2lv
bjogJ2x1Y2lkJywgaXM2NGJpdDogdHJ1ZX0pKTsKLX0pOwotCi10ZXN0KCdGYWlsdXJlR3JpZCcs
IDEwLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZ3JpZCA9IG5ldyB1aS5mYWlsdXJlcy5GYWlsdXJl
R3JpZCgpOwotICAgIGRlZXBFcXVhbChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhncmlkLl9f
cHJvdG9fXykuc29ydCgpLCBbCi0gICAgICAgICJfcmVzZXQiLAotICAgICAgICAiX3Jvd0J5UmVz
dWx0IiwKLSAgICAgICAgImluaXQiLAotICAgICAgICAicHVyZ2UiLAotICAgICAgICAidXBkYXRl
IgotICAgIF0pOwotICAgIGVxdWFsKGdyaWQub3V0ZXJIVE1MLCAnPHRhYmxlIGNsYXNzPSJmYWls
dXJlcyI+JyArCi0gICAgICAgICc8dGhlYWQ+PHRyPjx0ZD50eXBlPC90ZD48dGQ+cmVsZWFzZTwv
dGQ+PHRkPmRlYnVnPC90ZD48L3RyPjwvdGhlYWQ+JyArCi0gICAgICAgICc8dGJvZHk+PHRyIGNs
YXNzPSJCVUlMRElORyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7ICI+PHRkPjxzcGFuPkJVSUxESU5H
PC9zcGFuPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PC90cj48L3Rib2R5PicgKwotICAgICc8L3Rh
YmxlPicpOwotICAgIHZhciByb3cgPSBncmlkLl9yb3dCeVJlc3VsdCgnVEVYVCcpOwotICAgIGVx
dWFsKGdyaWQub3V0ZXJIVE1MLCAnPHRhYmxlIGNsYXNzPSJmYWlsdXJlcyI+JyArCi0gICAgICAg
ICc8dGhlYWQ+PHRyPjx0ZD50eXBlPC90ZD48dGQ+cmVsZWFzZTwvdGQ+PHRkPmRlYnVnPC90ZD48
L3RyPjwvdGhlYWQ+JyArCi0gICAgICAgICc8dGJvZHk+JyArCi0gICAgICAgICAgICAnPHRyIGNs
YXNzPSJURVhUIj4nICsKLSAgICAgICAgICAgICAgICAnPHRkPjxzcGFuPlRFWFQ8L3NwYW4+PC90
ZD48dGQ+PC90ZD48dGQ+PC90ZD4nICsKLSAgICAgICAgICAgICc8L3RyPicgKwotICAgICAgICAg
ICAgJzx0ciBjbGFzcz0iQlVJTERJTkciIHN0eWxlPSJkaXNwbGF5OiBub25lOyAiPjx0ZD48c3Bh
bj5CVUlMRElORzwvc3Bhbj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+JyArCi0gICAgICAg
ICc8L3Rib2R5PicgKwotICAgICc8L3RhYmxlPicpOwotICAgIGVxdWFsKHJvdy5vdXRlckhUTUws
ICc8dHIgY2xhc3M9IlRFWFQiPjx0ZD48c3Bhbj5URVhUPC9zcGFuPjwvdGQ+PHRkPjwvdGQ+PHRk
PjwvdGQ+PC90cj4nKTsKLSAgICBncmlkLnVwZGF0ZSh7fSk7Ci0gICAgZXF1YWwoZ3JpZC5vdXRl
ckhUTUwsICc8dGFibGUgY2xhc3M9ImZhaWx1cmVzIj4nICsKLSAgICAgICAgJzx0aGVhZD48dHI+
PHRkPnR5cGU8L3RkPjx0ZD5yZWxlYXNlPC90ZD48dGQ+ZGVidWc8L3RkPjwvdHI+PC90aGVhZD4n
ICsKLSAgICAgICAgJzx0Ym9keT4nICsKLSAgICAgICAgICAgICc8dHIgY2xhc3M9IlRFWFQiPicg
KwotICAgICAgICAgICAgICAgICc8dGQ+PHNwYW4+VEVYVDwvc3Bhbj48L3RkPjx0ZD48L3RkPjx0
ZD48L3RkPicgKwotICAgICAgICAgICAgJzwvdHI+JyArCi0gICAgICAgICAgICAnPHRyIGNsYXNz
PSJCVUlMRElORyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7ICI+PHRkPjxzcGFuPkJVSUxESU5HPC9z
cGFuPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PC90cj4nICsKLSAgICAgICAgJzwvdGJvZHk+JyAr
Ci0gICAgJzwvdGFibGU+Jyk7Ci0gICAgcmFpc2VzKGZ1bmN0aW9uKCkgewotICAgICAgICBncmlk
LnVwZGF0ZSh7J0F0YXJpJzoge319KQotICAgIH0pOwotICAgIGdyaWQudXBkYXRlKHsnV2Via2l0
IExpbnV4IChkYmcpJzogeyBhY3R1YWw6ICdURVhUJ319KTsKLSAgICBlcXVhbChncmlkLm91dGVy
SFRNTCwgJzx0YWJsZSBjbGFzcz0iZmFpbHVyZXMiPicgKwotICAgICAgICAnPHRoZWFkPjx0cj48
dGQ+dHlwZTwvdGQ+PHRkPnJlbGVhc2U8L3RkPjx0ZD5kZWJ1ZzwvdGQ+PC90cj48L3RoZWFkPicg
KwotICAgICAgICAnPHRib2R5PicgKwotICAgICAgICAgICAgJzx0ciBjbGFzcz0iVEVYVCIgc3R5
bGU9IiI+JyArCi0gICAgICAgICAgICAgICAgJzx0ZD48c3Bhbj5URVhUPC9zcGFuPjwvdGQ+JyAr
Ci0gICAgICAgICAgICAgICAgJzx0ZD48L3RkPicgKwotICAgICAgICAgICAgICAgICc8dGQ+PGEg
Y2xhc3M9ImZhaWxpbmctYnVpbGRlciIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9idWls
ZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvd2F0ZXJmYWxsP2J1aWxkZXI9V2Via2l0
K0xpbnV4KyhkYmcpIj48c3BhbiBjbGFzcz0idmVyc2lvbiI+bHVjaWQ8L3NwYW4+PHNwYW4gY2xh
c3M9ImFyY2hpdGVjdHVyZSI+NjQtYml0PC9zcGFuPjwvYT48L3RkPicgKwotICAgICAgICAgICAg
JzwvdHI+JyArCi0gICAgICAgICAgICAnPHRyIGNsYXNzPSJCVUlMRElORyIgc3R5bGU9ImRpc3Bs
YXk6IG5vbmU7ICI+PHRkPjxzcGFuPkJVSUxESU5HPC9zcGFuPjwvdGQ+PHRkPjwvdGQ+PHRkPjwv
dGQ+PC90cj4nICsKLSAgICAgICAgJzwvdGJvZHk+JyArCi0gICAgJzwvdGFibGU+Jyk7Ci0gICAg
Z3JpZC51cGRhdGUoeydXZWJraXQgTWFjMTAuNic6IHsgYWN0dWFsOiAnSU1BR0UrVEVYVCd9fSk7
Ci0gICAgZXF1YWwoZ3JpZC5vdXRlckhUTUwsICc8dGFibGUgY2xhc3M9ImZhaWx1cmVzIj4nICsK
LSAgICAgICAgJzx0aGVhZD48dHI+PHRkPnR5cGU8L3RkPjx0ZD5yZWxlYXNlPC90ZD48dGQ+ZGVi
dWc8L3RkPjwvdHI+PC90aGVhZD4nICsKLSAgICAgICAgJzx0Ym9keT4nICsKLSAgICAgICAgICAg
ICc8dHIgY2xhc3M9IklNQUdFK1RFWFQiPicgKwotICAgICAgICAgICAgICAgICc8dGQ+PHNwYW4+
SU1BR0UrVEVYVDwvc3Bhbj48L3RkPicgKwotICAgICAgICAgICAgICAgICc8dGQ+PGEgY2xhc3M9
ImZhaWxpbmctYnVpbGRlciIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9idWlsZC5jaHJv
bWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvd2F0ZXJmYWxsP2J1aWxkZXI9V2Via2l0K01hYzEw
LjYiPjxzcGFuIGNsYXNzPSJ2ZXJzaW9uIj5zbm93bGVvcGFyZDwvc3Bhbj48L2E+PC90ZD4nICsK
LSAgICAgICAgICAgICAgICAnPHRkPjwvdGQ+JyArCi0gICAgICAgICAgICAnPC90cj4nICsKLSAg
ICAgICAgICAgICc8dHIgY2xhc3M9IlRFWFQiIHN0eWxlPSIiPicgKwotICAgICAgICAgICAgICAg
ICc8dGQ+PHNwYW4+VEVYVDwvc3Bhbj48L3RkPicgKwotICAgICAgICAgICAgICAgICc8dGQ+PC90
ZD4nICsKLSAgICAgICAgICAgICAgICAnPHRkPjxhIGNsYXNzPSJmYWlsaW5nLWJ1aWxkZXIiIHRh
cmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0u
d2Via2l0L3dhdGVyZmFsbD9idWlsZGVyPVdlYmtpdCtMaW51eCsoZGJnKSI+PHNwYW4gY2xhc3M9
InZlcnNpb24iPmx1Y2lkPC9zcGFuPjxzcGFuIGNsYXNzPSJhcmNoaXRlY3R1cmUiPjY0LWJpdDwv
c3Bhbj48L2E+PC90ZD4nICsKLSAgICAgICAgICAgICc8L3RyPicgKwotICAgICAgICAgICAgJzx0
ciBjbGFzcz0iQlVJTERJTkciIHN0eWxlPSJkaXNwbGF5OiBub25lOyAiPjx0ZD48c3Bhbj5CVUlM
RElORzwvc3Bhbj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+JyArCi0gICAgICAgICc8L3Ri
b2R5PicgKwotICAgICc8L3RhYmxlPicpOwotICAgIGdyaWQudXBkYXRlKHsnV2Via2l0IE1hYzEw
LjYnOiB7IGFjdHVhbDogJ0lNQUdFK1RFWFQnfX0pOwotICAgIGVxdWFsKGdyaWQub3V0ZXJIVE1M
LCAnPHRhYmxlIGNsYXNzPSJmYWlsdXJlcyI+JyArCi0gICAgICAgICc8dGhlYWQ+PHRyPjx0ZD50
eXBlPC90ZD48dGQ+cmVsZWFzZTwvdGQ+PHRkPmRlYnVnPC90ZD48L3RyPjwvdGhlYWQ+JyArCi0g
ICAgICAgICc8dGJvZHk+JyArCi0gICAgICAgICAgICAnPHRyIGNsYXNzPSJJTUFHRStURVhUIiBz
dHlsZT0iIj4nICsKLSAgICAgICAgICAgICAgICAnPHRkPjxzcGFuPklNQUdFK1RFWFQ8L3NwYW4+
PC90ZD4nICsKLSAgICAgICAgICAgICAgICAnPHRkPjxhIGNsYXNzPSJmYWlsaW5nLWJ1aWxkZXIi
IHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21p
dW0ud2Via2l0L3dhdGVyZmFsbD9idWlsZGVyPVdlYmtpdCtNYWMxMC42Ij48c3BhbiBjbGFzcz0i
dmVyc2lvbiI+c25vd2xlb3BhcmQ8L3NwYW4+PC9hPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAg
Jzx0ZD48L3RkPicgKwotICAgICAgICAgICAgJzwvdHI+JyArCi0gICAgICAgICAgICAnPHRyIGNs
YXNzPSJURVhUIiBzdHlsZT0iIj4nICsKLSAgICAgICAgICAgICAgICAnPHRkPjxzcGFuPlRFWFQ8
L3NwYW4+PC90ZD4nICsKLSAgICAgICAgICAgICAgICAnPHRkPjwvdGQ+JyArCi0gICAgICAgICAg
ICAgICAgJzx0ZD48YSBjbGFzcz0iZmFpbGluZy1idWlsZGVyIiB0YXJnZXQ9Il9ibGFuayIgaHJl
Zj0iaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC93YXRlcmZhbGw/
YnVpbGRlcj1XZWJraXQrTGludXgrKGRiZykiPjxzcGFuIGNsYXNzPSJ2ZXJzaW9uIj5sdWNpZDwv
c3Bhbj48c3BhbiBjbGFzcz0iYXJjaGl0ZWN0dXJlIj42NC1iaXQ8L3NwYW4+PC9hPjwvdGQ+JyAr
Ci0gICAgICAgICAgICAnPC90cj4nICsKLSAgICAgICAgICAgICc8dHIgY2xhc3M9IkJVSUxESU5H
IiBzdHlsZT0iZGlzcGxheTogbm9uZTsgIj48dGQ+PHNwYW4+QlVJTERJTkc8L3NwYW4+PC90ZD48
dGQ+PC90ZD48dGQ+PC90ZD48L3RyPicgKwotICAgICAgICAnPC90Ym9keT4nICsKLSAgICAnPC90
YWJsZT4nKTsKLSAgICBncmlkLnB1cmdlKCk7Ci0gICAgZ3JpZC51cGRhdGUoeydXZWJraXQgTGlu
dXggKGRiZyknOiB7IGFjdHVhbDogJ1RFWFQnfX0pOwotICAgIGVxdWFsKGdyaWQub3V0ZXJIVE1M
LCAnPHRhYmxlIGNsYXNzPSJmYWlsdXJlcyI+JyArCi0gICAgICAgICc8dGhlYWQ+PHRyPjx0ZD50
eXBlPC90ZD48dGQ+cmVsZWFzZTwvdGQ+PHRkPmRlYnVnPC90ZD48L3RyPjwvdGhlYWQ+JyArCi0g
ICAgICAgICc8dGJvZHk+JyArCi0gICAgICAgICAgICAnPHRyIGNsYXNzPSJURVhUIj4nICsKLSAg
ICAgICAgICAgICAgICAnPHRkPjxzcGFuPlRFWFQ8L3NwYW4+PC90ZD4nICsKLSAgICAgICAgICAg
ICAgICAnPHRkPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgJzx0ZD48YSBjbGFzcz0iZmFpbGlu
Zy1idWlsZGVyIiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL2J1aWxkLmNocm9taXVtLm9y
Zy9wL2Nocm9taXVtLndlYmtpdC93YXRlcmZhbGw/YnVpbGRlcj1XZWJraXQrTGludXgrKGRiZyki
PjxzcGFuIGNsYXNzPSJ2ZXJzaW9uIj5sdWNpZDwvc3Bhbj48c3BhbiBjbGFzcz0iYXJjaGl0ZWN0
dXJlIj42NC1iaXQ8L3NwYW4+PC9hPjwvdGQ+JyArCi0gICAgICAgICAgICAnPC90cj4nICsKLSAg
ICAgICAgICAgICc8dHIgY2xhc3M9IkJVSUxESU5HIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgIj48
dGQ+PHNwYW4+QlVJTERJTkc8L3NwYW4+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48L3RyPicgKwot
ICAgICAgICAnPC90Ym9keT4nICsKLSAgICAnPC90YWJsZT4nKTsKLX0pOwotCi19KCkpOwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL2ZhaWx1cmVzX3VuaXR0ZXN0cy5q
cwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotTEYKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL25v
dGlmaWNhdGlvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL25vdGlmaWNh
dGlvbnMuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9ub3RpZmlj
YXRpb25zLmpzCShub25leGlzdGVudCkKQEAgLTEsMjYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
dmFyIHVpID0gdWkgfHwge307Ci11aS5ub3RpZmljYXRpb25zID0gdWkubm90aWZpY2F0aW9ucyB8
fCB7fTsKLQotKGZ1bmN0aW9uKCl7Ci0KLXZhciBrTWF4VGVzdHNQZXJHcm91cCA9IDM7Ci0KLXVp
Lm5vdGlmaWNhdGlvbnMuU3RyZWFtID0gYmFzZS5leHRlbmRzKCdvbCcsIHsKLSAgICBpbml0OiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLmNsYXNzTmFtZSA9ICdub3RpZmljYXRpb25z
JzsKLSAgICB9LAotICAgIGFkZDogZnVuY3Rpb24obm90aWZpY2F0aW9uKQotICAgIHsKLSAgICAg
ICAgdmFyIGluc2VydEJlZm9yZSA9IG51bGw7Ci0gICAgICAgIEFycmF5LnByb3RvdHlwZS5zb21l
LmNhbGwodGhpcy5jaGlsZHJlbiwgZnVuY3Rpb24oZXhpc3RpbmdOb3RpZmljYXRpb24pIHsKLSAg
ICAgICAgICAgIGlmIChleGlzdGluZ05vdGlmaWNhdGlvbi5pbmRleCgpIDwgbm90aWZpY2F0aW9u
LmluZGV4KCkpIHsKLSAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUgPSBleGlzdGluZ05vdGlm
aWNhdGlvbjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSk7Ci0gICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKG5vdGlmaWNhdGlvbiwgaW5zZXJ0
QmVmb3JlKTsKLSAgICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbjsKLSAgICB9Ci19KTsKLQotdWku
bm90aWZpY2F0aW9ucy5Ob3RpZmljYXRpb24gPSBiYXNlLmV4dGVuZHMoJ2xpJywgewotICAgIGlu
aXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2hvdyA9IHRoaXMuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwotICAgICAgICB0aGlzLl9ob3cuY2xh
c3NOYW1lID0gJ2hvdyc7Ci0gICAgICAgIHRoaXMuX3doYXQgPSB0aGlzLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKLSAgICAgICAgdGhpcy5fd2hhdC5jbGFzc05h
bWUgPSAnd2hhdCc7Ci0gICAgICAgIHRoaXMuX2luZGV4ID0gMDsKLSAgICAgICAgJCh0aGlzKS5o
aWRlKCkuZmFkZUluKCdmYXN0Jyk7Ci0gICAgfSwKLSAgICBpbmRleDogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2luZGV4OwotICAgIH0sCi0gICAgc2V0SW5kZXg6IGZ1
bmN0aW9uKGluZGV4KQotICAgIHsKLSAgICAgICAgdGhpcy5faW5kZXggPSBpbmRleDsKLSAgICB9
LAotICAgIGRpc21pc3M6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGVz
ZSBmYWRlIGluL291dCBlZmZlY3RzIGFyZSBsYW1lLgotICAgICAgICAkKHRoaXMpLmZhZGVPdXQo
ZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLnBhcmVudE5vZGUgJiYgdGhp
cy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMpOwotICAgICAgICB9KTsKLSAgICB9LAotfSk7
Ci0KLXVpLm5vdGlmaWNhdGlvbnMuSW5mbyA9IGJhc2UuZXh0ZW5kcyh1aS5ub3RpZmljYXRpb25z
Lk5vdGlmaWNhdGlvbiwgewotICAgIGluaXQ6IGZ1bmN0aW9uKG1lc3NhZ2UpCi0gICAgewotICAg
ICAgICB0aGlzLnVwZGF0ZShtZXNzYWdlKTsKLSAgICB9LAotICAgIHVwZGF0ZTogZnVuY3Rpb24o
bWVzc2FnZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3doYXQudGV4dENvbnRlbnQgPSBtZXNzYWdl
OwotICAgIH0sCi0gICAgdXBkYXRlV2l0aE5vZGU6IGZ1bmN0aW9uKG5vZGUpCi0gICAgewotICAg
ICAgICAkKHRoaXMuX3doYXQpLmVtcHR5KCk7Ci0gICAgICAgIHRoaXMuX3doYXQuYXBwZW5kQ2hp
bGQobm9kZSk7Ci0gICAgfQotfSk7Ci0KLXVpLm5vdGlmaWNhdGlvbnMuRmFpbGluZ1Rlc3RHcm91
cCA9IGJhc2UuZXh0ZW5kcygnbGknLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oZ3JvdXBOYW1lLCB0
ZXN0TmFtZUxpc3QpCi0gICAgewotICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGJhc2UuY3JlYXRl
TGlua05vZGUodWkudXJsRm9yRmxha2luZXNzRGFzaGJvYXJkKHRlc3ROYW1lTGlzdCksIGdyb3Vw
TmFtZSwgJ19ibGFuaycpKTsKLSAgICB9Ci19KTsKLQotdmFyIENhdXNlID0gYmFzZS5leHRlbmRz
KCdsaScsIHsKLSAgICBpbml0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9kZXNj
cmlwdGlvbiA9IHRoaXMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykp
OwotICAgICAgICB0aGlzLl9kZXNjcmlwdGlvbi5jbGFzc05hbWUgPSAnZGVzY3JpcHRpb24nOwot
ICAgIH0KLX0pOwotCi11aS5ub3RpZmljYXRpb25zLlN1c3BpY2lvdXNDb21taXQgPSBiYXNlLmV4
dGVuZHMoQ2F1c2UsIHsKLSAgICBpbml0OiBmdW5jdGlvbihjb21taXREYXRhKQotICAgIHsKLSAg
ICAgICAgdGhpcy5fcmV2aXNpb24gPSBjb21taXREYXRhLnJldmlzaW9uOwotICAgICAgICB0aGlz
Ll9kZXNjcmlwdGlvbi5hcHBlbmRDaGlsZChiYXNlLmNyZWF0ZUxpbmtOb2RlKHRyYWMuY2hhbmdl
c2V0VVJMKGNvbW1pdERhdGEucmV2aXNpb24pLCBjb21taXREYXRhLnJldmlzaW9uLCAnX2JsYW5r
JykpOwotICAgICAgICB0aGlzLl9kZXRhaWxzID0gdGhpcy5fZGVzY3JpcHRpb24uYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKLSAgICAgICAgdGhpcy5fYWRkRGV0
YWlsKCdzdW1tYXJ5JywgY29tbWl0RGF0YSk7Ci0gICAgICAgIHRoaXMuX2FkZERldGFpbCgnYXV0
aG9yJywgY29tbWl0RGF0YSk7Ci0gICAgICAgIHRoaXMuX2FkZERldGFpbCgncmV2aWV3ZXInLCBj
b21taXREYXRhKTsKLSAgICAgICAgdGhpcy5fYWRkRGV0YWlsKCdidWdJRCcsIGNvbW1pdERhdGEs
IGJ1Z3ppbGxhLmJ1Z1VSTCk7Ci0gICAgfSwKLSAgICBoYXNSZXZpc2lvbjogZnVuY3Rpb24ocmV2
aXNpb24pCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmV2aXNpb24gPT0gcmV2aXNpb247
Ci0gICAgfSwKLSAgICBfYWRkRGV0YWlsOiBmdW5jdGlvbihwYXJ0LCBjb21taXREYXRhLCBsaW5r
RnVuY3Rpb24pCi0gICAgewotICAgICAgICB2YXIgY29udGVudCA9IGNvbW1pdERhdGFbcGFydF07
Ci0gICAgICAgIGlmICghY29udGVudCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2
YXIgc3BhbiA9IHRoaXMuX2RldGFpbHMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc3BhbicpKTsKLSAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSBwYXJ0OwotICAgICAgICAKLSAg
ICAgICAgaWYgKGxpbmtGdW5jdGlvbikgewotICAgICAgICAgICAgdmFyIGxpbmsgPSBiYXNlLmNy
ZWF0ZUxpbmtOb2RlKGxpbmtGdW5jdGlvbihjb250ZW50KSwgY29udGVudCwgJ19ibGFuaycpOwot
ICAgICAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZChsaW5rKTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBzcGFuLnRleHRDb250ZW50ID0gY29udGVudDsKLSAgICB9Ci19KTsKLQotdWkubm90
aWZpY2F0aW9ucy5GYWlsdXJlID0gYmFzZS5leHRlbmRzKHVpLm5vdGlmaWNhdGlvbnMuTm90aWZp
Y2F0aW9uLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fdGlt
ZSA9IHRoaXMuX2hvdy5hcHBlbmRDaGlsZChuZXcgdWkuUmVsYXRpdmVUaW1lKCkpOwotICAgICAg
ICB0aGlzLl9wcm9ibGVtID0gdGhpcy5fd2hhdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKSk7Ci0gICAgICAgIHRoaXMuX3Byb2JsZW0uY2xhc3NOYW1lID0gJ3Byb2Js
ZW0nOwotICAgICAgICB0aGlzLl9lZmZlY3RzID0gdGhpcy5fcHJvYmxlbS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpKTsKLSAgICAgICAgdGhpcy5fZWZmZWN0cy5jbGFz
c05hbWUgPSAnZWZmZWN0cyc7Ci0gICAgICAgIHRoaXMuX2NhdXNlcyA9IHRoaXMuX3doYXQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwnKSk7Ci0gICAgICAgIHRoaXMuX2Nh
dXNlcy5jbGFzc05hbWUgPSAnY2F1c2VzJzsKLSAgICB9LAotICAgIGRhdGU6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90aW1lLmRhdGU7Ci0gICAgfQotfSk7Ci0KLXVp
Lm5vdGlmaWNhdGlvbnMuRmFpbGluZ1Rlc3RzID0gYmFzZS5leHRlbmRzKHVpLm5vdGlmaWNhdGlv
bnMuRmFpbHVyZSwgewotICAgIGluaXQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAvLyBGSVhNRTog
Q29udmVydCBhY3Rpb25zIHRvIGEgbGluayBmcm9tIHRlc3QhCi0gICAgICAgIHRoaXMuX3Byb2Js
ZW0uYXBwZW5kQ2hpbGQobmV3IHVpLmFjdGlvbnMuTGlzdChbCi0gICAgICAgICAgICBuZXcgdWku
YWN0aW9ucy5FeGFtaW5lKCkubWFrZURlZmF1bHQoKSwKLSAgICAgICAgICAgIG5ldyB1aS5hY3Rp
b25zLlJlYmFzZWxpbmUoKSwKLSAgICAgICAgXSkpOwotICAgICAgICB0aGlzLl90ZXN0TmFtZUxp
c3QgPSBbXTsKLSAgICB9LAotICAgIHRlc3ROYW1lTGlzdDogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX3Rlc3ROYW1lTGlzdDsKLSAgICB9LAotICAgIGNvbnRhaW5zRmFp
bHVyZUFuYWx5c2lzOiBmdW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5fdGVzdE5hbWVMaXN0LmluZGV4T2YoZmFpbHVyZUFuYWx5c2lzLnRlc3ROYW1l
KSAhPSAtMTsKLSAgICB9LAotICAgIGFkZEZhaWx1cmVBbmFseXNpczogZnVuY3Rpb24oZmFpbHVy
ZUFuYWx5c2lzKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuY29udGFpbnNGYWlsdXJlQW5hbHlz
aXMoZmFpbHVyZUFuYWx5c2lzKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
dGhpcy5fdGVzdE5hbWVMaXN0LnB1c2goZmFpbHVyZUFuYWx5c2lzLnRlc3ROYW1lKTsKLSAgICAg
ICAgJCh0aGlzLl9lZmZlY3RzKS5lbXB0eSgpOwotICAgICAgICB0aGlzLl9mb3JFYWNoVGVzdEdy
b3VwKGZ1bmN0aW9uKGdyb3VwTmFtZSwgdGVzdE5hbWVMaXN0KSB7Ci0gICAgICAgICAgICB0aGlz
Ll9lZmZlY3RzLmFwcGVuZENoaWxkKG5ldyB1aS5ub3RpZmljYXRpb25zLkZhaWxpbmdUZXN0R3Jv
dXAoZ3JvdXBOYW1lLCB0ZXN0TmFtZUxpc3QpKQotICAgICAgICB9LmJpbmQodGhpcykpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotICAgIF9mb3JFYWNoVGVzdEdyb3VwOiBmdW5jdGlv
bihjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHZhciBpbmRpdmlkdWFsVGVzdHMgPSBbXTsKLSAg
ICAgICAgYmFzZS5mb3JFYWNoRGlyZWN0b3J5KHRoaXMuX3Rlc3ROYW1lTGlzdCwgZnVuY3Rpb24o
Z3JvdXBMYWJlbCwgdGVzdHNJbkRpcmVjdG9yeSkgewotICAgICAgICAgICAgaWYgKHRlc3RzSW5E
aXJlY3RvcnkubGVuZ3RoIDw9IGtNYXhUZXN0c1Blckdyb3VwKSB7Ci0gICAgICAgICAgICAgICAg
aW5kaXZpZHVhbFRlc3RzID0gaW5kaXZpZHVhbFRlc3RzLmNvbmNhdCh0ZXN0c0luRGlyZWN0b3J5
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBj
YWxsYmFjayhncm91cExhYmVsLCB0ZXN0c0luRGlyZWN0b3J5KTsKLSAgICAgICAgfSk7Ci0gICAg
ICAgIGluZGl2aWR1YWxUZXN0cy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3ROYW1lKSB7Ci0gICAgICAg
ICAgICBjYWxsYmFjayh0ZXN0TmFtZSwgW3Rlc3ROYW1lXSk7Ci0gICAgICAgIH0pOwotICAgIH0K
LX0pOwotCi11aS5ub3RpZmljYXRpb25zLkZhaWxpbmdUZXN0c1N1bW1hcnkgPSBiYXNlLmV4dGVu
ZHModWkubm90aWZpY2F0aW9ucy5GYWlsaW5nVGVzdHMsIHsKLSAgICBpbml0OiBmdW5jdGlvbigp
IHsKLSAgICAgICAgdGhpcy5fd2hlcmUgPSB0aGlzLl9ob3cuYXBwZW5kQ2hpbGQobmV3IHVpLmZh
aWx1cmVzLkZhaWx1cmVHcmlkKCkpOwotICAgICAgICB0aGlzLl9jb21taXREYXRhUGlubmVkID0g
ZmFsc2U7Ci0gICAgfSwKLSAgICBwdXJnZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRoaXMuX3do
ZXJlLnB1cmdlKCk7Ci0gICAgfSwKLSAgICB1cGRhdGVCdWlsZGVyUmVzdWx0czogZnVuY3Rpb24o
cmVzdWx0Tm9kZXNCeUJ1aWxkZXIpCi0gICAgewotICAgICAgICB0aGlzLl93aGVyZS51cGRhdGUo
cmVzdWx0Tm9kZXNCeUJ1aWxkZXIpOwotICAgIH0sCi0gICAgYWRkRmFpbHVyZUFuYWx5c2lzOiBm
dW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpCi0gICAgewotICAgICAgICB0aGlzLnVwZGF0ZUJ1aWxk
ZXJSZXN1bHRzKGZhaWx1cmVBbmFseXNpcy5yZXN1bHROb2Rlc0J5QnVpbGRlcik7Ci0gICAgICAg
IGlmICghdWkubm90aWZpY2F0aW9ucy5GYWlsaW5nVGVzdHMucHJvdG90eXBlLmFkZEZhaWx1cmVB
bmFseXNpcy5jYWxsKHRoaXMsIGZhaWx1cmVBbmFseXNpcykpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfSwKLSAgICBwaW5Ub0NvbW1pdERhdGE6IGZ1bmN0aW9uKGNvbW1pdERhdGEp
Ci0gICAgewotICAgICAgICBpZiAodGhpcy5fY29tbWl0RGF0YVBpbm5lZCkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgdGhpcy5fY29tbWl0RGF0YVBpbm5lZCA9IHRydWU7Ci0gICAgICAg
ICQodGhpcy5fY2F1c2VzKS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICBpZiAodGhpcy5oYXNSZXZpc2lvbihjb21taXREYXRhLnJldmlzaW9uKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAkKHRoaXMpLmRldGFjaCgpOwotICAgICAgICB9KTsK
LSAgICB9LAotICAgIGFkZENvbW1pdERhdGE6IGZ1bmN0aW9uKGNvbW1pdERhdGEpCi0gICAgewot
ICAgICAgICBpZiAodGhpcy5fY29tbWl0RGF0YVBpbm5lZCkKLSAgICAgICAgICAgIHJldHVybiBu
dWxsOwotICAgICAgICB2YXIgY29tbWl0RGF0YURhdGUgPSBuZXcgRGF0ZShjb21taXREYXRhLnRp
bWUpOwotICAgICAgICBpZiAodGhpcy5fdGltZS5kYXRlID4gY29tbWl0RGF0YURhdGUpOyB7Ci0g
ICAgICAgICAgICB0aGlzLnNldEluZGV4KGNvbW1pdERhdGFEYXRlLmdldFRpbWUoKSk7Ci0gICAg
ICAgICAgICB0aGlzLl90aW1lLnNldERhdGUoY29tbWl0RGF0YURhdGUpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9jYXVzZXMuYXBwZW5kQ2hpbGQobmV3IHVpLm5vdGlmaWNhdGlv
bnMuU3VzcGljaW91c0NvbW1pdChjb21taXREYXRhKSk7Ci0gICAgfQotfSk7Ci0KLXVpLm5vdGlm
aWNhdGlvbnMuQnVpbGRlcnNGYWlsaW5nID0gYmFzZS5leHRlbmRzKHVpLm5vdGlmaWNhdGlvbnMu
RmFpbHVyZSwgewotICAgIGluaXQ6IGZ1bmN0aW9uKG1lc3NhZ2UpCi0gICAgewotICAgICAgICB0
aGlzLl9wcm9ibGVtLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdl
ICsgJzonKSwgdGhpcy5fcHJvYmxlbS5maXJzdENoaWxkKTsKLSAgICB9LAotICAgIHNldEZhaWxp
bmdCdWlsZGVyczogZnVuY3Rpb24oZmFpbHVyZXNMaXN0KQotICAgIHsKLSAgICAgICAgJCh0aGlz
Ll9lZmZlY3RzKS5lbXB0eSgpLmFwcGVuZChPYmplY3Qua2V5cyhmYWlsdXJlc0xpc3QpLm1hcChm
dW5jdGlvbihidWlsZGVyTmFtZSkgewotICAgICAgICAgICAgdmFyIGVmZmVjdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7Ci0gICAgICAgICAgICBlZmZlY3QuY2xhc3NOYW1lID0gJ2J1
aWxkZXInOwotICAgICAgICAgICAgZWZmZWN0LmFwcGVuZENoaWxkKG5ldyB1aS5mYWlsdXJlcy5C
dWlsZGVyKGJ1aWxkZXJOYW1lLCBmYWlsdXJlc0xpc3RbYnVpbGRlck5hbWVdKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gZWZmZWN0OwotICAgICAgICB9KSk7Ci0gICAgfQotfSk7Ci0KLX0pKCk7CgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvbm90aWZpY2F0aW9ucy5qcwpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotTEYKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL25vdGlm
aWNhdGlvbnNfdW5pdHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9u
b3RpZmljYXRpb25zX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL3VpL25vdGlmaWNhdGlvbnNfdW5pdHRlc3RzLmpzCShub25leGlzdGVudCkKQEAgLTEs
MzM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1bmN0aW9uICgpIHsKLQotbW9kdWxlKCd1aS5u
b3RpZmljYXRpb25zJyk7Ci0KLXRlc3QoJ05vdGlmaWNhdGlvbicsIDUsIGZ1bmN0aW9uKCkgewot
ICAgIHZhciBub3RpZmljYXRpb24gPSBuZXcgdWkubm90aWZpY2F0aW9ucy5Ob3RpZmljYXRpb24o
KTsKLSAgICBlcXVhbChub3RpZmljYXRpb24udGFnTmFtZSwgJ0xJJyk7Ci0gICAgZXF1YWwobm90
aWZpY2F0aW9uLmlubmVySFRNTCwgJzxkaXYgY2xhc3M9ImhvdyI+PC9kaXY+PGRpdiBjbGFzcz0i
d2hhdCI+PC9kaXY+Jyk7Ci0gICAgZXF1YWwobm90aWZpY2F0aW9uLmluZGV4KCksIDApOwotICAg
IG5vdGlmaWNhdGlvbi5zZXRJbmRleCgxKTsKLSAgICBlcXVhbChub3RpZmljYXRpb24uaW5kZXgo
KSwgMSk7Ci0gICAgLy8gRklYTUU6IFJlYWxseSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIG1v
Y2svdGVzdCBhbmltYXRlZCByZW1vdmFsLgotICAgIG9rKG5vdGlmaWNhdGlvbi5kaXNtaXNzKTsK
LX0pOwotCi10ZXN0KCdTdHJlYW0nLCAxMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHN0cmVhbSA9
IG5ldyB1aS5ub3RpZmljYXRpb25zLlN0cmVhbSgpOwotICAgIGVxdWFsKHN0cmVhbS50YWdOYW1l
LCAnT0wnKTsKLSAgICBlcXVhbChzdHJlYW0uY2xhc3NOYW1lLCAnbm90aWZpY2F0aW9ucycpOwot
ICAgIGVxdWFsKHN0cmVhbS5jaGlsZEVsZW1lbnRDb3VudCwgMCk7Ci0KLSAgICB2YXIgbm90aWZp
Y2F0aW9uOwotCi0gICAgbm90aWZpY2F0aW9uID0gbmV3IHVpLm5vdGlmaWNhdGlvbnMuSW5mbygn
LW8tbWF0aWMnKTsKLSAgICBub3RpZmljYXRpb24uc2V0SW5kZXgoMik7Ci0gICAgc3RyZWFtLmFk
ZChub3RpZmljYXRpb24pOwotICAgIGVxdWFsKHN0cmVhbS5jaGlsZEVsZW1lbnRDb3VudCwgMSk7
Ci0gICAgZXF1YWwoc3RyZWFtLnRleHRDb250ZW50LCAnLW8tbWF0aWMnKTsKLQotICAgIG5vdGlm
aWNhdGlvbiA9IG5ldyB1aS5ub3RpZmljYXRpb25zLkluZm8oJ2dhcmRlbicpOwotICAgIG5vdGlm
aWNhdGlvbi5zZXRJbmRleCgzKTsKLSAgICBzdHJlYW0uYWRkKG5vdGlmaWNhdGlvbik7Ci0gICAg
ZXF1YWwoc3RyZWFtLmNoaWxkRWxlbWVudENvdW50LCAyKTsKLSAgICBlcXVhbChzdHJlYW0udGV4
dENvbnRlbnQsICdnYXJkZW4tby1tYXRpYycpOwotCi0gICAgbm90aWZpY2F0aW9uID0gbmV3IHVp
Lm5vdGlmaWNhdGlvbnMuSW5mbygnIGlzICcpOwotICAgIG5vdGlmaWNhdGlvbi5zZXRJbmRleCgx
KTsKLSAgICBzdHJlYW0uYWRkKG5vdGlmaWNhdGlvbik7Ci0gICAgZXF1YWwoc3RyZWFtLmNoaWxk
RWxlbWVudENvdW50LCAzKTsKLSAgICBlcXVhbChzdHJlYW0udGV4dENvbnRlbnQsICdnYXJkZW4t
by1tYXRpYyBpcyAnKTsKLQotICAgIG5vdGlmaWNhdGlvbiA9IG5ldyB1aS5ub3RpZmljYXRpb25z
LkluZm8oJ2F3ZXNvbWUhJyk7Ci0gICAgc3RyZWFtLmFkZChub3RpZmljYXRpb24pOwotICAgIGVx
dWFsKHN0cmVhbS5jaGlsZEVsZW1lbnRDb3VudCwgNCk7Ci0gICAgZXF1YWwoc3RyZWFtLnRleHRD
b250ZW50LCAnZ2FyZGVuLW8tbWF0aWMgaXMgYXdlc29tZSEnKTsKLX0pOwotCi10ZXN0KCdJbmZv
JywgMiwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGluZm8gPSBuZXcgdWkubm90aWZpY2F0aW9ucy5J
bmZvKCdpbmZvJyk7Ci0gICAgZXF1YWwoaW5mby50YWdOYW1lLCAnTEknKTsKLSAgICBlcXVhbChp
bmZvLmlubmVySFRNTCwgJzxkaXYgY2xhc3M9ImhvdyI+PC9kaXY+PGRpdiBjbGFzcz0id2hhdCI+
aW5mbzwvZGl2PicpOwotfSk7Ci0KLXRlc3QoJ0ZhaWxpbmdUZXN0R3JvdXAnLCAyLCBmdW5jdGlv
bigpIHsKLSAgICB2YXIgZmFpbGluZ1Rlc3QgPSBuZXcgdWkubm90aWZpY2F0aW9ucy5GYWlsaW5n
VGVzdEdyb3VwKCd0ZXN0JywgWyd0ZXN0Lmh0bWwnXSk7Ci0gICAgZXF1YWwoZmFpbGluZ1Rlc3Qu
dGFnTmFtZSwgJ0xJJyk7Ci0gICAgZXF1YWwoZmFpbGluZ1Rlc3QuaW5uZXJIVE1MLCAnPGEgaHJl
Zj0iaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcvP3N1aXRlPWxheW91dC10ZXN0cyZhbXA7dGVz
dD10ZXN0Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj50ZXN0PC9hPicpOwotfSk7Ci0KLXRlc3QoJ1N1
c3BpY2lvdXNDb21taXQnLCAyLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc3VzcGljaW91c0NvbW1p
dCA9IG5ldyB1aS5ub3RpZmljYXRpb25zLlN1c3BpY2lvdXNDb21taXQoe3JldmlzaW9uOiAxLCBz
dW1tYXJ5OiAic3VtbWFyeSIsIGF1dGhvcjogImF1dGhvciIsIHJldmlld2VyOiAicmV2aWV3ZXIi
fSk7Ci0gICAgZXF1YWwoc3VzcGljaW91c0NvbW1pdC50YWdOYW1lLCAnTEknKTsKLSAgICBlcXVh
bChzdXNwaWNpb3VzQ29tbWl0LmlubmVySFRNTCwKLSAgICAgICAgJzxkaXYgY2xhc3M9ImRlc2Ny
aXB0aW9uIj4nICsKLSAgICAgICAgICAgICc8YSBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xIiB0YXJnZXQ9Il9ibGFuayI+MTwvYT4nICsKLSAgICAgICAgICAgICc8c3Bh
bj4nICsKLSAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9InN1bW1hcnkiPnN1bW1hcnk8L3Nw
YW4+JyArCi0gICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJhdXRob3IiPmF1dGhvcjwvc3Bh
bj4nICsKLSAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9InJldmlld2VyIj5yZXZpZXdlcjwv
c3Bhbj4nICsKLSAgICAgICAgICAgICc8L3NwYW4+JyArCi0gICAgICAgICc8L2Rpdj4nKTsKLX0p
OwotCi10ZXN0KCdGYWlsaW5nVGVzdHNTdW1tYXJ5JywgMTIsIGZ1bmN0aW9uKCkgewotICAgIHZh
ciB0ZXN0RmFpbHVyZXMgPSBuZXcgdWkubm90aWZpY2F0aW9ucy5GYWlsaW5nVGVzdHNTdW1tYXJ5
KCk7Ci0gICAgZXF1YWwodGVzdEZhaWx1cmVzLnRhZ05hbWUsICdMSScpOwotICAgIGVxdWFsKHRl
c3RGYWlsdXJlcy5pbm5lckhUTUwsCi0gICAgICAgICc8ZGl2IGNsYXNzPSJob3ciPicgKwotICAg
ICAgICAgICAgJzx0aW1lIGNsYXNzPSJyZWxhdGl2ZSI+PC90aW1lPicgKwotICAgICAgICAgICAg
Jzx0YWJsZSBjbGFzcz0iZmFpbHVyZXMiPicgKwotICAgICAgICAgICAgICAgICc8dGhlYWQ+PHRy
Pjx0ZD50eXBlPC90ZD48dGQ+cmVsZWFzZTwvdGQ+PHRkPmRlYnVnPC90ZD48L3RyPjwvdGhlYWQ+
JyArCi0gICAgICAgICAgICAgICAgJzx0Ym9keT48dHIgY2xhc3M9IkJVSUxESU5HIiBzdHlsZT0i
ZGlzcGxheTogbm9uZTsgIj48dGQ+PHNwYW4+QlVJTERJTkc8L3NwYW4+PC90ZD48dGQ+PC90ZD48
dGQ+PC90ZD48L3RyPjwvdGJvZHk+JyArCi0gICAgICAgICAgICAnPC90YWJsZT4nICsKLSAgICAg
ICAgJzwvZGl2PicgKwotICAgICAgICAnPGRpdiBjbGFzcz0id2hhdCI+JyArCi0gICAgICAgICAg
ICAnPGRpdiBjbGFzcz0icHJvYmxlbSI+JyArCi0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0i
ZWZmZWN0cyI+PC91bD4nICsKLSAgICAgICAgICAgICAgICAnPHVsIGNsYXNzPSJhY3Rpb25zIj4n
ICsKLSAgICAgICAgICAgICAgICAgICAgJzxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24gZGVmYXVs
dCIgdGl0bGU9IkV4YW1pbmUgdGhlc2UgZmFpbHVyZXMgaW4gZGV0YWlsLiI+RXhhbWluZTwvYnV0
dG9uPjwvbGk+JyArCi0gICAgICAgICAgICAgICAgICAgICc8bGk+PGJ1dHRvbiBjbGFzcz0iYWN0
aW9uIj5SZWJhc2VsaW5lPC9idXR0b24+PC9saT4nICsKLSAgICAgICAgICAgICAgICAnPC91bD4n
ICsKLSAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgICAgICc8dWwgY2xhc3M9ImNhdXNl
cyI+PC91bD4nICsKLSAgICAgICAgJzwvZGl2PicpOwotICAgIHRlc3RGYWlsdXJlcy5hZGRGYWls
dXJlQW5hbHlzaXMoe3Rlc3ROYW1lOiAndGVzdCcsIHJlc3VsdE5vZGVzQnlCdWlsZGVyOiB7fX0p
OwotICAgIGVxdWFsKHRlc3RGYWlsdXJlcy5pbmRleCgpLCAwKTsKLSAgICBlcXVhbCh0ZXN0RmFp
bHVyZXMuaW5uZXJIVE1MLAotICAgICAgICAnPGRpdiBjbGFzcz0iaG93Ij4nICsKLSAgICAgICAg
ICAgICc8dGltZSBjbGFzcz0icmVsYXRpdmUiPjwvdGltZT4nICsKLSAgICAgICAgICAgICc8dGFi
bGUgY2xhc3M9ImZhaWx1cmVzIj4nICsKLSAgICAgICAgICAgICAgICAnPHRoZWFkPjx0cj48dGQ+
dHlwZTwvdGQ+PHRkPnJlbGVhc2U8L3RkPjx0ZD5kZWJ1ZzwvdGQ+PC90cj48L3RoZWFkPicgKwot
ICAgICAgICAgICAgICAgICc8dGJvZHk+PHRyIGNsYXNzPSJCVUlMRElORyIgc3R5bGU9ImRpc3Bs
YXk6IG5vbmU7ICI+PHRkPjxzcGFuPkJVSUxESU5HPC9zcGFuPjwvdGQ+PHRkPjwvdGQ+PHRkPjwv
dGQ+PC90cj48L3Rib2R5PicgKwotICAgICAgICAgICAgJzwvdGFibGU+JyArCi0gICAgICAgICc8
L2Rpdj4nICsKLSAgICAgICAgJzxkaXYgY2xhc3M9IndoYXQiPicgKwotICAgICAgICAgICAgJzxk
aXYgY2xhc3M9InByb2JsZW0iPicgKwotICAgICAgICAgICAgICAgICc8dWwgY2xhc3M9ImVmZmVj
dHMiPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxhIGhyZWY9Imh0dHBzOi8vcmVzdWx0
cy53ZWJraXQub3JnLz9zdWl0ZT1sYXlvdXQtdGVzdHMmYW1wO3Rlc3Q9dGVzdCIgdGFyZ2V0PSJf
YmxhbmsiPnRlc3Q8L2E+PC9saT4nICsKLSAgICAgICAgICAgICAgICAnPC91bD4nICsKLSAgICAg
ICAgICAgICAgICAnPHVsIGNsYXNzPSJhY3Rpb25zIj4nICsKLSAgICAgICAgICAgICAgICAgICAg
JzxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24gZGVmYXVsdCIgdGl0bGU9IkV4YW1pbmUgdGhlc2Ug
ZmFpbHVyZXMgaW4gZGV0YWlsLiI+RXhhbWluZTwvYnV0dG9uPjwvbGk+JyArCi0gICAgICAgICAg
ICAgICAgICAgICc8bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIj5SZWJhc2VsaW5lPC9idXR0b24+
PC9saT4nICsKLSAgICAgICAgICAgICAgICAnPC91bD4nICsKLSAgICAgICAgICAgICc8L2Rpdj4n
ICsKLSAgICAgICAgICAgICc8dWwgY2xhc3M9ImNhdXNlcyI+PC91bD4nICsKLSAgICAgICAgJzwv
ZGl2PicpOwotICAgIG9rKHRlc3RGYWlsdXJlcy5jb250YWluc0ZhaWx1cmVBbmFseXNpcyh7dGVz
dE5hbWU6ICd0ZXN0J30pKTsKLSAgICBvayghdGVzdEZhaWx1cmVzLmNvbnRhaW5zRmFpbHVyZUFu
YWx5c2lzKHt0ZXN0TmFtZTogJ2Zvbyd9KSk7Ci0gICAgdGVzdEZhaWx1cmVzLmFkZEZhaWx1cmVB
bmFseXNpcyh7dGVzdE5hbWU6ICd0ZXN0J30pOwotICAgIGVxdWFsKHRlc3RGYWlsdXJlcy5pbm5l
ckhUTUwsCi0gICAgICAgICc8ZGl2IGNsYXNzPSJob3ciPicgKwotICAgICAgICAgICAgJzx0aW1l
IGNsYXNzPSJyZWxhdGl2ZSI+PC90aW1lPicgKwotICAgICAgICAgICAgJzx0YWJsZSBjbGFzcz0i
ZmFpbHVyZXMiPicgKwotICAgICAgICAgICAgICAgICc8dGhlYWQ+PHRyPjx0ZD50eXBlPC90ZD48
dGQ+cmVsZWFzZTwvdGQ+PHRkPmRlYnVnPC90ZD48L3RyPjwvdGhlYWQ+JyArCi0gICAgICAgICAg
ICAgICAgJzx0Ym9keT48dHIgY2xhc3M9IkJVSUxESU5HIiBzdHlsZT0iZGlzcGxheTogbm9uZTsg
Ij48dGQ+PHNwYW4+QlVJTERJTkc8L3NwYW4+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48L3RyPjwv
dGJvZHk+JyArCi0gICAgICAgICAgICAnPC90YWJsZT4nICsKLSAgICAgICAgJzwvZGl2PicgKwot
ICAgICAgICAnPGRpdiBjbGFzcz0id2hhdCI+JyArCi0gICAgICAgICAgICAnPGRpdiBjbGFzcz0i
cHJvYmxlbSI+JyArCi0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iZWZmZWN0cyI+JyArCi0g
ICAgICAgICAgICAgICAgICAgICc8bGk+PGEgaHJlZj0iaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5v
cmcvP3N1aXRlPWxheW91dC10ZXN0cyZhbXA7dGVzdD10ZXN0IiB0YXJnZXQ9Il9ibGFuayI+dGVz
dDwvYT48L2xpPicgKwotICAgICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgICAg
ICc8dWwgY2xhc3M9ImFjdGlvbnMiPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxidXR0
b24gY2xhc3M9ImFjdGlvbiBkZWZhdWx0IiB0aXRsZT0iRXhhbWluZSB0aGVzZSBmYWlsdXJlcyBp
biBkZXRhaWwuIj5FeGFtaW5lPC9idXR0b24+PC9saT4nICsKLSAgICAgICAgICAgICAgICAgICAg
JzxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24iPlJlYmFzZWxpbmU8L2J1dHRvbj48L2xpPicgKwot
ICAgICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgJzwvZGl2PicgKwotICAgICAg
ICAgICAgJzx1bCBjbGFzcz0iY2F1c2VzIj48L3VsPicgKwotICAgICAgICAnPC9kaXY+Jyk7Ci0g
ICAgZGVlcEVxdWFsKHRlc3RGYWlsdXJlcy50ZXN0TmFtZUxpc3QoKSwgWyd0ZXN0J10pOwotICAg
IHZhciB0aW1lID0gbmV3IERhdGUoKTsKLSAgICB0aW1lLnNldE1pbnV0ZXModGltZS5nZXRNaW51
dGVzKCkgLSAxMCk7Ci0gICAgdGVzdEZhaWx1cmVzLmFkZENvbW1pdERhdGEoe3JldmlzaW9uOiAx
LCB0aW1lOiB0aW1lLCBzdW1tYXJ5OiAic3VtbWFyeSIsIGF1dGhvcjogImF1dGhvciIsIHJldmll
d2VyOiAicmV2aWV3ZXIifSk7Ci0gICAgZXF1YWwodGVzdEZhaWx1cmVzLmluZGV4KCksIHRpbWUu
Z2V0VGltZSgpKTsKLSAgICBlcXVhbCh0ZXN0RmFpbHVyZXMuaW5uZXJIVE1MLAotICAgICAgICAn
PGRpdiBjbGFzcz0iaG93Ij4nICsKLSAgICAgICAgICAgICc8dGltZSBjbGFzcz0icmVsYXRpdmUi
PjEwIG1pbnV0ZXMgYWdvPC90aW1lPicgKwotICAgICAgICAgICAgJzx0YWJsZSBjbGFzcz0iZmFp
bHVyZXMiPicgKwotICAgICAgICAgICAgICAgICc8dGhlYWQ+PHRyPjx0ZD50eXBlPC90ZD48dGQ+
cmVsZWFzZTwvdGQ+PHRkPmRlYnVnPC90ZD48L3RyPjwvdGhlYWQ+JyArCi0gICAgICAgICAgICAg
ICAgJzx0Ym9keT48dHIgY2xhc3M9IkJVSUxESU5HIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgIj48
dGQ+PHNwYW4+QlVJTERJTkc8L3NwYW4+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48L3RyPjwvdGJv
ZHk+JyArCi0gICAgICAgICAgICAnPC90YWJsZT4nICsKLSAgICAgICAgJzwvZGl2PicgKwotICAg
ICAgICAnPGRpdiBjbGFzcz0id2hhdCI+JyArCi0gICAgICAgICAgICAnPGRpdiBjbGFzcz0icHJv
YmxlbSI+JyArCi0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iZWZmZWN0cyI+JyArCi0gICAg
ICAgICAgICAgICAgICAgICc8bGk+PGEgaHJlZj0iaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcv
P3N1aXRlPWxheW91dC10ZXN0cyZhbXA7dGVzdD10ZXN0IiB0YXJnZXQ9Il9ibGFuayI+dGVzdDwv
YT48L2xpPicgKwotICAgICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgICAgICc8
dWwgY2xhc3M9ImFjdGlvbnMiPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxidXR0b24g
Y2xhc3M9ImFjdGlvbiBkZWZhdWx0IiB0aXRsZT0iRXhhbWluZSB0aGVzZSBmYWlsdXJlcyBpbiBk
ZXRhaWwuIj5FeGFtaW5lPC9idXR0b24+PC9saT4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxs
aT48YnV0dG9uIGNsYXNzPSJhY3Rpb24iPlJlYmFzZWxpbmU8L2J1dHRvbj48L2xpPicgKwotICAg
ICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAg
ICAgJzx1bCBjbGFzcz0iY2F1c2VzIj4nICsKLSAgICAgICAgICAgICAgICAnPGxpPicgKwotICAg
ICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZGVzY3JpcHRpb24iPicgKwotICAgICAgICAg
ICAgICAgICAgICAgICAgJzxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzEiIHRhcmdldD0iX2JsYW5rIj4xPC9hPicgKwotICAgICAgICAgICAgICAgICAgICAgICAgJzxz
cGFuPicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0ic3VtbWFy
eSI+c3VtbWFyeTwvc3Bhbj4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4g
Y2xhc3M9ImF1dGhvciI+YXV0aG9yPC9zcGFuPicgKwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICc8c3BhbiBjbGFzcz0icmV2aWV3ZXIiPnJldmlld2VyPC9zcGFuPicgKwotICAgICAgICAg
ICAgICAgICAgICAgICAgJzwvc3Bhbj4nICsKLSAgICAgICAgICAgICAgICAgICAgJzwvZGl2Picg
KwotICAgICAgICAgICAgICAgICc8L2xpPicgKwotICAgICAgICAgICAgJzwvdWw+JyArCi0gICAg
ICAgICc8L2Rpdj4nKTsKLQotICAgIHRlc3RGYWlsdXJlcy5hZGRGYWlsdXJlQW5hbHlzaXMoe3Rl
c3ROYW1lOiAnZm9vJywgcmVzdWx0Tm9kZXNCeUJ1aWxkZXI6IHsnV2Via2l0IExpbnV4IChkYmcp
JzogeyBhY3R1YWw6ICdURVhUJ319fSk7Ci0gICAgZXF1YWwodGVzdEZhaWx1cmVzLmlubmVySFRN
TCwKLSAgICAgICAgJzxkaXYgY2xhc3M9ImhvdyI+JyArCi0gICAgICAgICAgICAnPHRpbWUgY2xh
c3M9InJlbGF0aXZlIj4xMCBtaW51dGVzIGFnbzwvdGltZT4nICsKLSAgICAgICAgICAgICc8dGFi
bGUgY2xhc3M9ImZhaWx1cmVzIj4nICsKLSAgICAgICAgICAgICAgICAnPHRoZWFkPjx0cj48dGQ+
dHlwZTwvdGQ+PHRkPnJlbGVhc2U8L3RkPjx0ZD5kZWJ1ZzwvdGQ+PC90cj48L3RoZWFkPicgKwot
ICAgICAgICAgICAgICAgICc8dGJvZHk+JyArCi0gICAgICAgICAgICAgICAgICAgICc8dHIgY2xh
c3M9IlRFWFQiPicgKwotICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZD48c3Bhbj5URVhUPC9z
cGFuPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnPHRkPjwvdGQ+JyArCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnPHRkPjxhIGNsYXNzPSJmYWlsaW5nLWJ1aWxkZXIiIHRhcmdl
dD0iX2JsYW5rIiBocmVmPSJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Vi
a2l0L3dhdGVyZmFsbD9idWlsZGVyPVdlYmtpdCtMaW51eCsoZGJnKSI+PHNwYW4gY2xhc3M9InZl
cnNpb24iPmx1Y2lkPC9zcGFuPjxzcGFuIGNsYXNzPSJhcmNoaXRlY3R1cmUiPjY0LWJpdDwvc3Bh
bj48L2E+PC90ZD4nICsKLSAgICAgICAgICAgICAgICAgICAgJzwvdHI+JyArCi0gICAgICAgICAg
ICAgICAgICAgICc8dHIgY2xhc3M9IkJVSUxESU5HIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgIj48
dGQ+PHNwYW4+QlVJTERJTkc8L3NwYW4+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48L3RyPicgKwot
ICAgICAgICAgICAgICAgICc8L3Rib2R5PicgKwotICAgICAgICAgICAgJzwvdGFibGU+JyArCi0g
ICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgJzxkaXYgY2xhc3M9IndoYXQiPicgKwotICAgICAg
ICAgICAgJzxkaXYgY2xhc3M9InByb2JsZW0iPicgKwotICAgICAgICAgICAgICAgICc8dWwgY2xh
c3M9ImVmZmVjdHMiPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxhIGhyZWY9Imh0dHBz
Oi8vcmVzdWx0cy53ZWJraXQub3JnLz9zdWl0ZT1sYXlvdXQtdGVzdHMmYW1wO3Rlc3RzPWZvbyIg
dGFyZ2V0PSJfYmxhbmsiPmZvbzwvYT48L2xpPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxp
PjxhIGhyZWY9Imh0dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnLz9zdWl0ZT1sYXlvdXQtdGVzdHMm
YW1wO3Rlc3Q9dGVzdCIgdGFyZ2V0PSJfYmxhbmsiPnRlc3Q8L2E+PC9saT4nICsKLSAgICAgICAg
ICAgICAgICAnPC91bD4nICsKLSAgICAgICAgICAgICAgICAnPHVsIGNsYXNzPSJhY3Rpb25zIj4n
ICsKLSAgICAgICAgICAgICAgICAgICAgJzxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24gZGVmYXVs
dCIgdGl0bGU9IkV4YW1pbmUgdGhlc2UgZmFpbHVyZXMgaW4gZGV0YWlsLiI+RXhhbWluZTwvYnV0
dG9uPjwvbGk+JyArCi0gICAgICAgICAgICAgICAgICAgICc8bGk+PGJ1dHRvbiBjbGFzcz0iYWN0
aW9uIj5SZWJhc2VsaW5lPC9idXR0b24+PC9saT4nICsKLSAgICAgICAgICAgICAgICAnPC91bD4n
ICsKLSAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgICAgICc8dWwgY2xhc3M9ImNhdXNl
cyI+JyArCi0gICAgICAgICAgICAgICAgJzxsaT4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxk
aXYgY2xhc3M9ImRlc2NyaXB0aW9uIj4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8YSBo
cmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xIiB0YXJnZXQ9Il9ibGFuayI+
MTwvYT4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8c3Bhbj4nICsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9InN1bW1hcnkiPnN1bW1hcnk8L3NwYW4+JyAr
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJhdXRob3IiPmF1dGhv
cjwvc3Bhbj4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9InJl
dmlld2VyIj5yZXZpZXdlcjwvc3Bhbj4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8L3Nw
YW4+JyArCi0gICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgICAgICAgICAn
PC9saT4nICsKLSAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAnPC9kaXY+Jyk7Ci0KLSAg
ICB0ZXN0RmFpbHVyZXMudXBkYXRlQnVpbGRlclJlc3VsdHMoeydXZWJraXQgTWFjMTAuNic6IHsg
YWN0dWFsOiAnQlVJTERJTkcnfX0pOwotICAgIGVxdWFsKHRlc3RGYWlsdXJlcy5pbm5lckhUTUws
Ci0gICAgICAgICc8ZGl2IGNsYXNzPSJob3ciPicgKwotICAgICAgICAgICAgJzx0aW1lIGNsYXNz
PSJyZWxhdGl2ZSI+MTAgbWludXRlcyBhZ288L3RpbWU+JyArCi0gICAgICAgICAgICAnPHRhYmxl
IGNsYXNzPSJmYWlsdXJlcyI+JyArCi0gICAgICAgICAgICAgICAgJzx0aGVhZD48dHI+PHRkPnR5
cGU8L3RkPjx0ZD5yZWxlYXNlPC90ZD48dGQ+ZGVidWc8L3RkPjwvdHI+PC90aGVhZD4nICsKLSAg
ICAgICAgICAgICAgICAnPHRib2R5PicgKwotICAgICAgICAgICAgICAgICAgICAnPHRyIGNsYXNz
PSJURVhUIj4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8dGQ+PHNwYW4+VEVYVDwvc3Bh
bj48L3RkPicgKwotICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZD48L3RkPicgKwotICAgICAg
ICAgICAgICAgICAgICAgICAgJzx0ZD48YSBjbGFzcz0iZmFpbGluZy1idWlsZGVyIiB0YXJnZXQ9
Il9ibGFuayIgaHJlZj0iaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtp
dC93YXRlcmZhbGw/YnVpbGRlcj1XZWJraXQrTGludXgrKGRiZykiPjxzcGFuIGNsYXNzPSJ2ZXJz
aW9uIj5sdWNpZDwvc3Bhbj48c3BhbiBjbGFzcz0iYXJjaGl0ZWN0dXJlIj42NC1iaXQ8L3NwYW4+
PC9hPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgICAgICc8L3RyPicgKwotICAgICAgICAgICAg
ICAgICAgICAnPHRyIGNsYXNzPSJCVUlMRElORyIgc3R5bGU9IiI+JyArCi0gICAgICAgICAgICAg
ICAgICAgICAgICAnPHRkPjxzcGFuPkJVSUxESU5HPC9zcGFuPjwvdGQ+JyArCi0gICAgICAgICAg
ICAgICAgICAgICAgICAnPHRkPjxhIGNsYXNzPSJmYWlsaW5nLWJ1aWxkZXIiIHRhcmdldD0iX2Js
YW5rIiBocmVmPSJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L3dh
dGVyZmFsbD9idWlsZGVyPVdlYmtpdCtNYWMxMC42Ij48c3BhbiBjbGFzcz0idmVyc2lvbiI+c25v
d2xlb3BhcmQ8L3NwYW4+PC9hPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnPHRk
PjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgICAgICc8L3RyPicgKwotICAgICAgICAgICAgICAg
ICc8L3Rib2R5PicgKwotICAgICAgICAgICAgJzwvdGFibGU+JyArCi0gICAgICAgICc8L2Rpdj4n
ICsKLSAgICAgICAgJzxkaXYgY2xhc3M9IndoYXQiPicgKwotICAgICAgICAgICAgJzxkaXYgY2xh
c3M9InByb2JsZW0iPicgKwotICAgICAgICAgICAgICAgICc8dWwgY2xhc3M9ImVmZmVjdHMiPicg
KwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxhIGhyZWY9Imh0dHBzOi8vcmVzdWx0cy53ZWJr
aXQub3JnLz9zdWl0ZT1sYXlvdXQtdGVzdHMmYW1wO3Rlc3RzPWZvbyIgdGFyZ2V0PSJfYmxhbmsi
PmZvbzwvYT48L2xpPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxhIGhyZWY9Imh0dHBz
Oi8vcmVzdWx0cy53ZWJraXQub3JnLz9zdWl0ZT1sYXlvdXQtdGVzdHMmYW1wO3Rlc3Q9dGVzdCIg
dGFyZ2V0PSJfYmxhbmsiPnRlc3Q8L2E+PC9saT4nICsKLSAgICAgICAgICAgICAgICAnPC91bD4n
ICsKLSAgICAgICAgICAgICAgICAnPHVsIGNsYXNzPSJhY3Rpb25zIj4nICsKLSAgICAgICAgICAg
ICAgICAgICAgJzxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24gZGVmYXVsdCIgdGl0bGU9IkV4YW1p
bmUgdGhlc2UgZmFpbHVyZXMgaW4gZGV0YWlsLiI+RXhhbWluZTwvYnV0dG9uPjwvbGk+JyArCi0g
ICAgICAgICAgICAgICAgICAgICc8bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIj5SZWJhc2VsaW5l
PC9idXR0b24+PC9saT4nICsKLSAgICAgICAgICAgICAgICAnPC91bD4nICsKLSAgICAgICAgICAg
ICc8L2Rpdj4nICsKLSAgICAgICAgICAgICc8dWwgY2xhc3M9ImNhdXNlcyI+JyArCi0gICAgICAg
ICAgICAgICAgJzxsaT4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImRlc2Ny
aXB0aW9uIj4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8YSBocmVmPSJodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xIiB0YXJnZXQ9Il9ibGFuayI+MTwvYT4nICsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICc8c3Bhbj4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnPHNwYW4gY2xhc3M9InN1bW1hcnkiPnN1bW1hcnk8L3NwYW4+JyArCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJhdXRob3IiPmF1dGhvcjwvc3Bhbj4nICsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9InJldmlld2VyIj5yZXZpZXdl
cjwvc3Bhbj4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8L3NwYW4+JyArCi0gICAgICAg
ICAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgICAgICAgICAnPC9saT4nICsKLSAgICAg
ICAgICAgICc8L3VsPicgKwotICAgICAgICAnPC9kaXY+Jyk7Ci19KTsKLQotdGVzdCgnRmFpbGlu
Z1Rlc3RzU3VtbWFyeSAoZ3JvdXBpbmcpJywgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRlc3RG
YWlsdXJlcyA9IG5ldyB1aS5ub3RpZmljYXRpb25zLkZhaWxpbmdUZXN0c1N1bW1hcnkoKTsKLSAg
ICB0ZXN0RmFpbHVyZXMuYWRkRmFpbHVyZUFuYWx5c2lzKHt0ZXN0TmFtZTogJ3BhdGgvdG8vdGVz
dDEuaHRtbCcsIHJlc3VsdE5vZGVzQnlCdWlsZGVyOiB7fX0pOwotICAgIHRlc3RGYWlsdXJlcy5h
ZGRGYWlsdXJlQW5hbHlzaXMoe3Rlc3ROYW1lOiAncGF0aC90by90ZXN0Mi5odG1sJywgcmVzdWx0
Tm9kZXNCeUJ1aWxkZXI6IHt9fSk7Ci0gICAgdGVzdEZhaWx1cmVzLmFkZEZhaWx1cmVBbmFseXNp
cyh7dGVzdE5hbWU6ICdwYXRoL3RvL3Rlc3QzLmh0bWwnLCByZXN1bHROb2Rlc0J5QnVpbGRlcjog
e319KTsKLSAgICB0ZXN0RmFpbHVyZXMuYWRkRmFpbHVyZUFuYWx5c2lzKHt0ZXN0TmFtZTogJ3Bh
dGgvdG8vdGVzdDQuaHRtbCcsIHJlc3VsdE5vZGVzQnlCdWlsZGVyOiB7fX0pOwotICAgIHRlc3RG
YWlsdXJlcy5hZGRGYWlsdXJlQW5hbHlzaXMoe3Rlc3ROYW1lOiAncGF0aC9hbm90aGVyL3Rlc3Qu
aHRtbCcsIHJlc3VsdE5vZGVzQnlCdWlsZGVyOiB7fX0pOwotICAgIGVxdWFsKHRlc3RGYWlsdXJl
cy5pbm5lckhUTUwsCi0gICAgICAgICc8ZGl2IGNsYXNzPSJob3ciPicgKwotICAgICAgICAgICAg
Jzx0aW1lIGNsYXNzPSJyZWxhdGl2ZSI+PC90aW1lPicgKwotICAgICAgICAgICAgJzx0YWJsZSBj
bGFzcz0iZmFpbHVyZXMiPicgKwotICAgICAgICAgICAgICAgICc8dGhlYWQ+PHRyPjx0ZD50eXBl
PC90ZD48dGQ+cmVsZWFzZTwvdGQ+PHRkPmRlYnVnPC90ZD48L3RyPjwvdGhlYWQ+JyArCi0gICAg
ICAgICAgICAgICAgJzx0Ym9keT48dHIgY2xhc3M9IkJVSUxESU5HIiBzdHlsZT0iZGlzcGxheTog
bm9uZTsgIj48dGQ+PHNwYW4+QlVJTERJTkc8L3NwYW4+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48
L3RyPjwvdGJvZHk+JyArCi0gICAgICAgICAgICAnPC90YWJsZT4nICsKLSAgICAgICAgJzwvZGl2
PicgKwotICAgICAgICAnPGRpdiBjbGFzcz0id2hhdCI+JyArCi0gICAgICAgICAgICAnPGRpdiBj
bGFzcz0icHJvYmxlbSI+JyArCi0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iZWZmZWN0cyI+
JyArCi0gICAgICAgICAgICAgICAgICAgICc8bGk+PGEgaHJlZj0iaHR0cHM6Ly9yZXN1bHRzLndl
YmtpdC5vcmcvP3N1aXRlPWxheW91dC10ZXN0cyZhbXA7dGVzdD1wYXRoJTJGdG8lMkZ0ZXN0MS5o
dG1sJTJDcGF0aCUyRnRvJTJGdGVzdDIuaHRtbCUyQ3BhdGglMkZ0byUyRnRlc3QzLmh0bWwlMkNw
YXRoJTJGdG8lMkZ0ZXN0NC5odG1sIiB0YXJnZXQ9Il9ibGFuayI+cGF0aC90byAoNCB0ZXN0cyk8
L2E+PC9saT4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxsaT48YSBocmVmPSJodHRwczovL3Jl
c3VsdHMud2Via2l0Lm9yZy8/c3VpdGU9bGF5b3V0LXRlc3RzJmFtcDt0ZXN0PXBhdGglMkZhbm90
aGVyJTJGdGVzdC5odG1sIiB0YXJnZXQ9Il9ibGFuayI+cGF0aC9hbm90aGVyL3Rlc3QuaHRtbDwv
YT48L2xpPicgKwotICAgICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgICAgICc8
dWwgY2xhc3M9ImFjdGlvbnMiPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxidXR0b24g
Y2xhc3M9ImFjdGlvbiBkZWZhdWx0IiB0aXRsZT0iRXhhbWluZSB0aGVzZSBmYWlsdXJlcyBpbiBk
ZXRhaWwuIj5FeGFtaW5lPC9idXR0b24+PC9saT4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxs
aT48YnV0dG9uIGNsYXNzPSJhY3Rpb24iPlJlYmFzZWxpbmU8L2J1dHRvbj48L2xpPicgKwotICAg
ICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAg
ICAgJzx1bCBjbGFzcz0iY2F1c2VzIj48L3VsPicgKwotICAgICAgICAnPC9kaXY+Jyk7Ci19KTsK
LQotdGVzdCgnQnVpbGRlcnNGYWlsaW5nJywgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGJ1aWxk
ZXJGYWlsaW5nID0gbmV3IHVpLm5vdGlmaWNhdGlvbnMuQnVpbGRlcnNGYWlsaW5nKCdEaXNhc3Rl
cmlmeWluZycpOwotICAgIGJ1aWxkZXJGYWlsaW5nLnNldEZhaWxpbmdCdWlsZGVycyh7J1dlYmtp
dCBMaW51eCc6IFsnY29tcGlsZSddLCAnV2Via2l0IFdpbjcnOiBbJ3dlYmtpdF90ZXN0cycsICd1
cGRhdGUnXX0pOwotICAgIGVxdWFsKGJ1aWxkZXJGYWlsaW5nLmlubmVySFRNTCwKLSAgICAgICAg
JzxkaXYgY2xhc3M9ImhvdyI+JyArCi0gICAgICAgICAgICAnPHRpbWUgY2xhc3M9InJlbGF0aXZl
Ij48L3RpbWU+JyArCi0gICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgJzxkaXYgY2xhc3M9Indo
YXQiPicgKwotICAgICAgICAgICAgJzxkaXYgY2xhc3M9InByb2JsZW0iPkRpc2FzdGVyaWZ5aW5n
OicgKwotICAgICAgICAgICAgICAgICc8dWwgY2xhc3M9ImVmZmVjdHMiPicgKwotICAgICAgICAg
ICAgICAgICAgICAnPGxpIGNsYXNzPSJidWlsZGVyIj48YSBjbGFzcz0iZmFpbGluZy1idWlsZGVy
IiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9t
aXVtLndlYmtpdC93YXRlcmZhbGw/YnVpbGRlcj1XZWJraXQrTGludXgiPjxzcGFuIGNsYXNzPSJ2
ZXJzaW9uIj5sdWNpZDwvc3Bhbj48c3BhbiBjbGFzcz0iYXJjaGl0ZWN0dXJlIj42NC1iaXQ8L3Nw
YW4+PHNwYW4gY2xhc3M9ImZhaWx1cmVzIj4gY29tcGlsZTwvc3Bhbj48L2E+PC9saT4nICsKLSAg
ICAgICAgICAgICAgICAgICAgJzxsaSBjbGFzcz0iYnVpbGRlciI+PGEgY2xhc3M9ImZhaWxpbmct
YnVpbGRlciIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcv
cC9jaHJvbWl1bS53ZWJraXQvd2F0ZXJmYWxsP2J1aWxkZXI9V2Via2l0K1dpbjciPjxzcGFuIGNs
YXNzPSJ2ZXJzaW9uIj53aW43PC9zcGFuPjxzcGFuIGNsYXNzPSJmYWlsdXJlcyI+IHdlYmtpdF90
ZXN0cywgdXBkYXRlPC9zcGFuPjwvYT48L2xpPicgKwotICAgICAgICAgICAgICAgICc8L3VsPicg
KwotICAgICAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAgICAgJzx1bCBjbGFzcz0iY2F1c2Vz
Ij48L3VsPicgKwotICAgICAgICAnPC9kaXY+Jyk7Ci19KTsKLQotfSgpKTsKClByb3BlcnR5IGNo
YW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9ub3RpZmljYXRpb25zX3VuaXR0ZXN0cy5qcwpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotTEYKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL3BlcmYu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL3BlcmYuanMJKHJldmlzaW9uIDI2
OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9wZXJmLmpzCShub25leGlzdGVudCkKQEAgLTEs
MTY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIHVpID0gdWkgfHwge307Ci11aS5wZXJmID0g
dWkucGVyZiB8fCB7fTsKLQotKGZ1bmN0aW9uKCl7Ci0KLXVpLnBlcmYuUGlja2VyID0gYmFzZS5l
eHRlbmRzKCdzZWxlY3QnLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oaXRlbXMsIG9uQ2hhbmdlLCBv
cHRfdmFsdWVzKQotICAgIHsKLSAgICAgICAgdGhpcy5vbmNoYW5nZSA9IG9uQ2hhbmdlOwotICAg
ICAgICB0aGlzLl92YWx1ZXMgPSBvcHRfdmFsdWVzOwotICAgICAgICBpdGVtcy5mb3JFYWNoKHRo
aXMuX2FwcGVuZEl0ZW0uYmluZCh0aGlzKSk7Ci0gICAgfSwKLSAgICBfYXBwZW5kSXRlbTogZnVu
Y3Rpb24oaXRlbSwgaW5kZXgpCi0gICAgewotICAgICAgICB2YXIgb3B0aW9uID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7Ci0gICAgICAgIG9wdGlvbi5pbm5lckhUTUwgPSBpdGVt
OwotICAgICAgICBpZiAodGhpcy5fdmFsdWVzKQotICAgICAgICAgICAgb3B0aW9uLnZhbHVlID0g
dGhpcy5fdmFsdWVzW2luZGV4XTsKLSAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChvcHRpb24pOwot
ICAgIH0KLX0pOwotCi11aS5wZXJmLlZpZXcgPSBiYXNlLmV4dGVuZHMoJ2RpdicsIHsKLSAgICBp
bml0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLmlkID0gJ3BlcmYtdmlldyc7Ci0g
ICAgICAgIGJ1aWxkZXJzLnBlcmZCdWlsZGVycyh0aGlzLmxvYWRHcmFwaHMuYmluZCh0aGlzKSk7
Ci0KLSAgICAgICAgdmFyIHN0cmVhbSA9IG5ldyB1aS5ub3RpZmljYXRpb25zLlN0cmVhbSgpOwot
ICAgICAgICB2YXIgbm90aWZpY2F0aW9ucyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OwotICAgICAgICB0aGlzLl9ub3RpZmljYXRpb24gPSB1aS5ub3RpZmljYXRpb25zLkluZm8oIkxv
YWRpbmcgbGlzdCBvZiBwZXJmIGRhc2hib2FyZHMuLi4iKTsKLSAgICAgICAgc3RyZWFtLmFwcGVu
ZENoaWxkKHRoaXMuX25vdGlmaWNhdGlvbik7Ci0gICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoc3Ry
ZWFtKTsKLSAgICB9LAotICAgIGxvYWRHcmFwaHM6IGZ1bmN0aW9uKGdyYXBoRGF0YSkKLSAgICB7
Ci0gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbi5kaXNtaXNzKCk7Ci0KLSAgICAgICAgLy8gRklY
TUU6IEFkZCBuZXh0L3ByZXZpb3VzIGJ1dHRvbnMgZm9yIGVhc3kgbmF2aWdhdGlvbiB0aHJvdWdo
IGFsbCB0aGUgZ3JhcGhzLgotICAgICAgICAvLyBGSVhNRTogQWxzbywgc2hvdyB0aGUgbGlzdCBv
ZiBmYWlsaW5nIHBlcmYgYnVpbGRlcnMgYWxvbmcgd2l0aCB3aGljaCBzdGVwcyBhcmUgZmFpbGlu
Zy4KLSAgICAgICAgdGhpcy5fZGF0YSA9IGdyYXBoRGF0YTsKLQotICAgICAgICB0aGlzLl90aXRs
ZUJhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICB0aGlzLl90aXRs
ZUJhci5jbGFzc05hbWUgPSAndGl0bGUtYmFyJzsKLSAgICAgICAgdGhpcy5hcHBlbmRDaGlsZCh0
aGlzLl90aXRsZUJhcik7Ci0KLSAgICAgICAgdmFyIHRlc3RTdWl0ZXMgPSBPYmplY3Qua2V5cyhn
cmFwaERhdGEpOwotICAgICAgICB2YXIgc3VpdGVQaWNrZXIgPSBuZXcgdWkucGVyZi5QaWNrZXIo
dGVzdFN1aXRlcywgdGhpcy5fb25DaGFuZ2VTdWl0ZS5iaW5kKHRoaXMpKTsKLSAgICAgICAgdGhp
cy5fdGl0bGVCYXIuYXBwZW5kQ2hpbGQoc3VpdGVQaWNrZXIpOwotCi0gICAgICAgIHRoaXMuX3Rp
dGxlQmFyLmFwcGVuZENoaWxkKG5ldyB1aS5hY3Rpb25zLkxpc3QoW25ldyB1aS5hY3Rpb25zLlBy
ZXZpb3VzKCksIG5ldyB1aS5hY3Rpb25zLk5leHQoKV0pKTsKLQotICAgICAgICAkKHRoaXMpLmJp
bmQoJ25leHQnLCB0aGlzLl9uZXh0R3JhcGguYmluZCh0aGlzKSk7Ci0gICAgICAgICQodGhpcyku
YmluZCgncHJldmlvdXMnLCB0aGlzLl9wcmV2aW91c0dyYXBoLmJpbmQodGhpcykpOwotCi0gICAg
ICAgIHRoaXMuX3N1aXRlUGlja2VyID0gc3VpdGVQaWNrZXI7Ci0gICAgICAgIHRoaXMuX29uQ2hh
bmdlU3VpdGUoKTsKLSAgICB9LAotICAgIF9vbkNoYW5nZVN1aXRlOiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICB0aGlzLl91cGRhdGVCdWlsZGVyUGlja2VyKCk7Ci0gICAgICAgIHRoaXMuX2Rp
c3BsYXlHcmFwaCgpOwotICAgIH0sCi0gICAgX3VwZGF0ZUJ1aWxkZXJQaWNrZXI6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9idWlsZGVyUGlja2VyKQotICAgICAgICAgICAg
dGhpcy5fdGl0bGVCYXIucmVtb3ZlQ2hpbGQodGhpcy5fYnVpbGRlclBpY2tlcik7Ci0KLSAgICAg
ICAgaWYgKCF0aGlzLl9zdWl0ZVBpY2tlci5sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIHZhciBzZWxlY3RlZFN1aXRlID0gdGhpcy5fc3VpdGVQaWNrZXJbdGhpcy5fc3VpdGVQ
aWNrZXIuc2VsZWN0ZWRJbmRleF0udGV4dDsKLSAgICAgICAgdmFyIGJ1aWxkZXJzID0gW107Ci0g
ICAgICAgIHZhciB1cmxzID0gW107Ci0gICAgICAgIHRoaXMuX2RhdGFbc2VsZWN0ZWRTdWl0ZV0u
Zm9yRWFjaChmdW5jdGlvbihjb25maWcpIHsKLSAgICAgICAgICAgIGJ1aWxkZXJzLnB1c2goY29u
ZmlnLmJ1aWxkZXIpOwotICAgICAgICAgICAgdXJscy5wdXNoKGNvbmZpZy51cmwpOwotICAgICAg
ICB9KTsKLSAgICAgICAgdGhpcy5fYnVpbGRlclBpY2tlciA9IG5ldyB1aS5wZXJmLlBpY2tlcihi
dWlsZGVycywgdGhpcy5fZGlzcGxheUdyYXBoLmJpbmQodGhpcyksIHVybHMpOwotICAgICAgICB0
aGlzLl90aXRsZUJhci5hcHBlbmRDaGlsZCh0aGlzLl9idWlsZGVyUGlja2VyKTsKLSAgICB9LAot
ICAgIF9kaXNwbGF5R3JhcGg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBwb3BPdXRM
aW5rID0gdGhpcy5xdWVyeVNlbGVjdG9yKCcucG9wLW91dCcpOwotICAgICAgICBpZiAoIXBvcE91
dExpbmspIHsKLSAgICAgICAgICAgIHBvcE91dExpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdhJyk7Ci0gICAgICAgICAgICBwb3BPdXRMaW5rLmNsYXNzTmFtZSA9ICdwb3Atb3V0JzsKLSAg
ICAgICAgICAgIHBvcE91dExpbmsudGV4dENvbnRlbnQgPSAnUG9wIG91dCc7Ci0gICAgICAgICAg
ICBwb3BPdXRMaW5rLnRhcmdldCA9ICdfYmxhbmsnOwotICAgICAgICAgICAgdGhpcy5fdGl0bGVC
YXIuYXBwZW5kQ2hpbGQocG9wT3V0TGluayk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgZ3Jh
cGggPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpOwotICAgICAgICBpZiAoIWdyYXBoKSB7
Ci0gICAgICAgICAgICBncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwot
ICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChncmFwaCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoIXRoaXMuX2J1aWxkZXJQaWNrZXIgfHwgIXRoaXMuX2J1aWxkZXJQaWNrZXIubGVuZ3Ro
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciB1cmwgPSB0aGlzLl9idWlsZGVy
UGlja2VyW3RoaXMuX2J1aWxkZXJQaWNrZXIuc2VsZWN0ZWRJbmRleF0udmFsdWU7Ci0gICAgICAg
IHBvcE91dExpbmsuaHJlZiA9IHVybDsKLSAgICAgICAgZ3JhcGguc3JjID0gdXJsOwotICAgIH0s
Ci0gICAgX25leHRHcmFwaDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9i
dWlsZGVyUGlja2VyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLl9i
dWlsZGVyUGlja2VyLnNlbGVjdGVkSW5kZXggPCB0aGlzLl9idWlsZGVyUGlja2VyLmxlbmd0aCAt
IDEpIHsKLSAgICAgICAgICAgIHRoaXMuX2J1aWxkZXJQaWNrZXIuc2VsZWN0ZWRJbmRleCsrOwot
ICAgICAgICAgICAgdGhpcy5fZGlzcGxheUdyYXBoKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy5fc3VpdGVQaWNrZXIuc2VsZWN0ZWRJbmRleCA8
IHRoaXMuX3N1aXRlUGlja2VyLmxlbmd0aCAtIDEpIHsKLSAgICAgICAgICAgIHRoaXMuX3N1aXRl
UGlja2VyLnNlbGVjdGVkSW5kZXgrKzsKLSAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlU3VpdGUo
KTsKLSAgICAgICAgfQotICAgIH0sCi0gICAgX3ByZXZpb3VzR3JhcGg6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIGlmICghdGhpcy5fYnVpbGRlclBpY2tlcikKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBpZiAodGhpcy5fYnVpbGRlclBpY2tlci5zZWxlY3RlZEluZGV4ID4gMCkg
ewotICAgICAgICAgICAgdGhpcy5fYnVpbGRlclBpY2tlci5zZWxlY3RlZEluZGV4LS07Ci0gICAg
ICAgICAgICB0aGlzLl9kaXNwbGF5R3JhcGgoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICh0aGlzLl9zdWl0ZVBpY2tlci5zZWxlY3RlZEluZGV4ID4gMCkg
ewotICAgICAgICAgICAgdGhpcy5fc3VpdGVQaWNrZXIuc2VsZWN0ZWRJbmRleC0tOwotICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlQnVpbGRlclBpY2tlcigpOwotICAgICAgICAgICAgdGhpcy5fYnVp
bGRlclBpY2tlci5zZWxlY3RlZEluZGV4ID0gdGhpcy5fYnVpbGRlclBpY2tlci5sZW5ndGggLSAx
OwotICAgICAgICAgICAgdGhpcy5fZGlzcGxheUdyYXBoKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19
KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9wZXJmX3VuaXR0ZXN0cy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvcGVyZl91bml0dGVzdHMuanMJKHJldmlz
aW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9wZXJmX3VuaXR0ZXN0cy5qcwkobm9u
ZXhpc3RlbnQpCkBAIC0xLDE4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbiAoKSB7
Ci0KLW1vZHVsZSgndWkucGVyZicpOwotCi12YXIga0R1bW15UGVyZkdyYXBoRGF0YSA9IHsKLSAg
ICAiZHVtbXlfcGVyZl90ZXN0XzEiOiBbCi0gICAgICAgIHsKLSAgICAgICAgICAgICJidWlsZGVy
IjogIk1hYzEwLjYgUGVyZiIsCi0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9kdW1teXVybDEi
Ci0gICAgICAgIH0KLSAgICBdLAotICAgICJkdW1teV9wZXJmX3Rlc3RfMiI6IFsKLSAgICAgICAg
ewotICAgICAgICAgICAgImJ1aWxkZXIiOiAiTWFjMTAuNiBQZXJmIiwKLSAgICAgICAgICAgICJ1
cmwiOiAiaHR0cDovL2R1bW15dXJsMiIKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAg
ICAgImJ1aWxkZXIiOiAiTGludXggUGVyZiIsCi0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9k
dW1teXVybDMiCi0gICAgICAgIH0KLSAgICBdCi19OwotCi1hc3luY1Rlc3QoIlZpZXciLCA3LCBm
dW5jdGlvbigpIHsKLSAgICB2YXIgb2xkUGVyZkJ1aWxkZXJzID0gYnVpbGRlcnMucGVyZkJ1aWxk
ZXJzOwotICAgIGJ1aWxkZXJzLnBlcmZCdWlsZGVycyA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7Ci0g
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGNhbGxiYWNrKGtEdW1teVBlcmZHcmFwaERh
dGEpIH0sIDApOwotICAgIH0KLQotICAgIHZhciB2aWV3ID0gbmV3IHVpLnBlcmYuVmlldygpOwot
Ci0gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgZXF1YWwodmlldy5vdXRlckhU
TUwsICc8ZGl2IGlkPSJwZXJmLXZpZXciPicgKwotICAgICAgICAgICAgJzxvbCBjbGFzcz0ibm90
aWZpY2F0aW9ucyI+JyArCi0gICAgICAgICAgICAgICAgJzxsaSBzdHlsZT0ib3BhY2l0eTogMDsg
Ij4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImhvdyI+PC9kaXY+PGRpdiBj
bGFzcz0id2hhdCI+TG9hZGluZyBsaXN0IG9mIHBlcmYgZGFzaGJvYXJkcy4uLjwvZGl2PicgKwot
ICAgICAgICAgICAgICAgICc8L2xpPicgKwotICAgICAgICAgICAgJzwvb2w+JyArCi0gICAgICAg
ICAgICAnPGRpdiBjbGFzcz0idGl0bGUtYmFyIj4nICsKLSAgICAgICAgICAgICAgICAnPHNlbGVj
dD48b3B0aW9uPmR1bW15X3BlcmZfdGVzdF8xPC9vcHRpb24+PG9wdGlvbj5kdW1teV9wZXJmX3Rl
c3RfMjwvb3B0aW9uPjwvc2VsZWN0PicgKwotICAgICAgICAgICAgICAgICc8dWwgY2xhc3M9ImFj
dGlvbnMiPjxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24gcHJldmlvdXMiPlx1MjVDMDwvYnV0dG9u
PjwvbGk+PGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiBuZXh0Ij5cdTI1QjY8L2J1dHRvbj48L2xp
PjwvdWw+JyArCi0gICAgICAgICAgICAgICAgJzxzZWxlY3Q+PG9wdGlvbiB2YWx1ZT0iaHR0cDov
L2R1bW15dXJsMSI+TWFjMTAuNiBQZXJmPC9vcHRpb24+PC9zZWxlY3Q+JyArCi0gICAgICAgICAg
ICAgICAgJzxhIGNsYXNzPSJwb3Atb3V0IiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL2R1
bW15dXJsMSI+UG9wIG91dDwvYT4nICsKLSAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAg
ICAgICc8aWZyYW1lIHNyYz0iaHR0cDovL2R1bW15dXJsMSI+PC9pZnJhbWU+JyArCi0gICAgICAg
ICc8L2Rpdj4nKTsKLQotICAgICAgICB2aWV3Ll9uZXh0R3JhcGgoKTsKLQotICAgICAgICBlcXVh
bCh2aWV3Lm91dGVySFRNTCwgJzxkaXYgaWQ9InBlcmYtdmlldyI+JyArCi0gICAgICAgICAgICAn
PG9sIGNsYXNzPSJub3RpZmljYXRpb25zIj4nICsKLSAgICAgICAgICAgICAgICAnPGxpIHN0eWxl
PSJvcGFjaXR5OiAwOyAiPicgKwotICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iaG93
Ij48L2Rpdj48ZGl2IGNsYXNzPSJ3aGF0Ij5Mb2FkaW5nIGxpc3Qgb2YgcGVyZiBkYXNoYm9hcmRz
Li4uPC9kaXY+JyArCi0gICAgICAgICAgICAgICAgJzwvbGk+JyArCi0gICAgICAgICAgICAnPC9v
bD4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJ0aXRsZS1iYXIiPicgKwotICAgICAgICAg
ICAgICAgICc8c2VsZWN0PjxvcHRpb24+ZHVtbXlfcGVyZl90ZXN0XzE8L29wdGlvbj48b3B0aW9u
PmR1bW15X3BlcmZfdGVzdF8yPC9vcHRpb24+PC9zZWxlY3Q+JyArCi0gICAgICAgICAgICAgICAg
Jzx1bCBjbGFzcz0iYWN0aW9ucyI+PGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiBwcmV2aW91cyI+
XHUyNUMwPC9idXR0b24+PC9saT48bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIG5leHQiPlx1MjVC
NjwvYnV0dG9uPjwvbGk+PC91bD4nICsKLSAgICAgICAgICAgICAgICAnPGEgY2xhc3M9InBvcC1v
dXQiIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vZHVtbXl1cmwyIj5Qb3Agb3V0PC9hPicg
KwotICAgICAgICAgICAgICAgICc8c2VsZWN0PjxvcHRpb24gdmFsdWU9Imh0dHA6Ly9kdW1teXVy
bDIiPk1hYzEwLjYgUGVyZjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Imh0dHA6Ly9kdW1teXVybDMi
PkxpbnV4IFBlcmY8L29wdGlvbj48L3NlbGVjdD4nICsKLSAgICAgICAgICAgICc8L2Rpdj4nICsK
LSAgICAgICAgICAgICc8aWZyYW1lIHNyYz0iaHR0cDovL2R1bW15dXJsMiI+PC9pZnJhbWU+JyAr
Ci0gICAgICAgICc8L2Rpdj4nKTsKLQotICAgICAgICB2aWV3Ll9uZXh0R3JhcGgoKTsKLQotICAg
ICAgICBlcXVhbCh2aWV3Lm91dGVySFRNTCwgJzxkaXYgaWQ9InBlcmYtdmlldyI+JyArCi0gICAg
ICAgICAgICAnPG9sIGNsYXNzPSJub3RpZmljYXRpb25zIj4nICsKLSAgICAgICAgICAgICAgICAn
PGxpIHN0eWxlPSJvcGFjaXR5OiAwOyAiPicgKwotICAgICAgICAgICAgICAgICAgICAnPGRpdiBj
bGFzcz0iaG93Ij48L2Rpdj48ZGl2IGNsYXNzPSJ3aGF0Ij5Mb2FkaW5nIGxpc3Qgb2YgcGVyZiBk
YXNoYm9hcmRzLi4uPC9kaXY+JyArCi0gICAgICAgICAgICAgICAgJzwvbGk+JyArCi0gICAgICAg
ICAgICAnPC9vbD4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJ0aXRsZS1iYXIiPicgKwot
ICAgICAgICAgICAgICAgICc8c2VsZWN0PjxvcHRpb24+ZHVtbXlfcGVyZl90ZXN0XzE8L29wdGlv
bj48b3B0aW9uPmR1bW15X3BlcmZfdGVzdF8yPC9vcHRpb24+PC9zZWxlY3Q+JyArCi0gICAgICAg
ICAgICAgICAgJzx1bCBjbGFzcz0iYWN0aW9ucyI+PGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiBw
cmV2aW91cyI+XHUyNUMwPC9idXR0b24+PC9saT48bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIG5l
eHQiPlx1MjVCNjwvYnV0dG9uPjwvbGk+PC91bD4nICsKLSAgICAgICAgICAgICAgICAnPGEgY2xh
c3M9InBvcC1vdXQiIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vZHVtbXl1cmwzIj5Qb3Ag
b3V0PC9hPicgKwotICAgICAgICAgICAgICAgICc8c2VsZWN0PjxvcHRpb24gdmFsdWU9Imh0dHA6
Ly9kdW1teXVybDIiPk1hYzEwLjYgUGVyZjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Imh0dHA6Ly9k
dW1teXVybDMiPkxpbnV4IFBlcmY8L29wdGlvbj48L3NlbGVjdD4nICsKLSAgICAgICAgICAgICc8
L2Rpdj4nICsKLSAgICAgICAgICAgICc8aWZyYW1lIHNyYz0iaHR0cDovL2R1bW15dXJsMyI+PC9p
ZnJhbWU+JyArCi0gICAgICAgICc8L2Rpdj4nKTsKLQotICAgICAgICB2aWV3Ll9uZXh0R3JhcGgo
KTsKLQotICAgICAgICBlcXVhbCh2aWV3Lm91dGVySFRNTCwgJzxkaXYgaWQ9InBlcmYtdmlldyI+
JyArCi0gICAgICAgICAgICAnPG9sIGNsYXNzPSJub3RpZmljYXRpb25zIj4nICsKLSAgICAgICAg
ICAgICAgICAnPGxpIHN0eWxlPSJvcGFjaXR5OiAwOyAiPicgKwotICAgICAgICAgICAgICAgICAg
ICAnPGRpdiBjbGFzcz0iaG93Ij48L2Rpdj48ZGl2IGNsYXNzPSJ3aGF0Ij5Mb2FkaW5nIGxpc3Qg
b2YgcGVyZiBkYXNoYm9hcmRzLi4uPC9kaXY+JyArCi0gICAgICAgICAgICAgICAgJzwvbGk+JyAr
Ci0gICAgICAgICAgICAnPC9vbD4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJ0aXRsZS1i
YXIiPicgKwotICAgICAgICAgICAgICAgICc8c2VsZWN0PjxvcHRpb24+ZHVtbXlfcGVyZl90ZXN0
XzE8L29wdGlvbj48b3B0aW9uPmR1bW15X3BlcmZfdGVzdF8yPC9vcHRpb24+PC9zZWxlY3Q+JyAr
Ci0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iYWN0aW9ucyI+PGxpPjxidXR0b24gY2xhc3M9
ImFjdGlvbiBwcmV2aW91cyI+XHUyNUMwPC9idXR0b24+PC9saT48bGk+PGJ1dHRvbiBjbGFzcz0i
YWN0aW9uIG5leHQiPlx1MjVCNjwvYnV0dG9uPjwvbGk+PC91bD4nICsKLSAgICAgICAgICAgICAg
ICAnPGEgY2xhc3M9InBvcC1vdXQiIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vZHVtbXl1
cmwzIj5Qb3Agb3V0PC9hPicgKwotICAgICAgICAgICAgICAgICc8c2VsZWN0PjxvcHRpb24gdmFs
dWU9Imh0dHA6Ly9kdW1teXVybDIiPk1hYzEwLjYgUGVyZjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9
Imh0dHA6Ly9kdW1teXVybDMiPkxpbnV4IFBlcmY8L29wdGlvbj48L3NlbGVjdD4nICsKLSAgICAg
ICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgICAgICc8aWZyYW1lIHNyYz0iaHR0cDovL2R1bW15
dXJsMyI+PC9pZnJhbWU+JyArCi0gICAgICAgICc8L2Rpdj4nKTsKLQotICAgICAgICB2aWV3Ll9w
cmV2aW91c0dyYXBoKCk7Ci0KLSAgICAgICAgZXF1YWwodmlldy5vdXRlckhUTUwsICc8ZGl2IGlk
PSJwZXJmLXZpZXciPicgKwotICAgICAgICAgICAgJzxvbCBjbGFzcz0ibm90aWZpY2F0aW9ucyI+
JyArCi0gICAgICAgICAgICAgICAgJzxsaSBzdHlsZT0ib3BhY2l0eTogMDsgIj4nICsKLSAgICAg
ICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImhvdyI+PC9kaXY+PGRpdiBjbGFzcz0id2hhdCI+
TG9hZGluZyBsaXN0IG9mIHBlcmYgZGFzaGJvYXJkcy4uLjwvZGl2PicgKwotICAgICAgICAgICAg
ICAgICc8L2xpPicgKwotICAgICAgICAgICAgJzwvb2w+JyArCi0gICAgICAgICAgICAnPGRpdiBj
bGFzcz0idGl0bGUtYmFyIj4nICsKLSAgICAgICAgICAgICAgICAnPHNlbGVjdD48b3B0aW9uPmR1
bW15X3BlcmZfdGVzdF8xPC9vcHRpb24+PG9wdGlvbj5kdW1teV9wZXJmX3Rlc3RfMjwvb3B0aW9u
Pjwvc2VsZWN0PicgKwotICAgICAgICAgICAgICAgICc8dWwgY2xhc3M9ImFjdGlvbnMiPjxsaT48
YnV0dG9uIGNsYXNzPSJhY3Rpb24gcHJldmlvdXMiPlx1MjVDMDwvYnV0dG9uPjwvbGk+PGxpPjxi
dXR0b24gY2xhc3M9ImFjdGlvbiBuZXh0Ij5cdTI1QjY8L2J1dHRvbj48L2xpPjwvdWw+JyArCi0g
ICAgICAgICAgICAgICAgJzxhIGNsYXNzPSJwb3Atb3V0IiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0i
aHR0cDovL2R1bW15dXJsMiI+UG9wIG91dDwvYT4nICsKLSAgICAgICAgICAgICAgICAnPHNlbGVj
dD48b3B0aW9uIHZhbHVlPSJodHRwOi8vZHVtbXl1cmwyIj5NYWMxMC42IFBlcmY8L29wdGlvbj48
b3B0aW9uIHZhbHVlPSJodHRwOi8vZHVtbXl1cmwzIj5MaW51eCBQZXJmPC9vcHRpb24+PC9zZWxl
Y3Q+JyArCi0gICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICAgICAnPGlmcmFtZSBzcmM9
Imh0dHA6Ly9kdW1teXVybDIiPjwvaWZyYW1lPicgKwotICAgICAgICAnPC9kaXY+Jyk7Ci0KLSAg
ICAgICAgdmlldy5fcHJldmlvdXNHcmFwaCgpOwotCi0gICAgICAgIGVxdWFsKHZpZXcub3V0ZXJI
VE1MLCAnPGRpdiBpZD0icGVyZi12aWV3Ij4nICsKLSAgICAgICAgICAgICc8b2wgY2xhc3M9Im5v
dGlmaWNhdGlvbnMiPicgKwotICAgICAgICAgICAgICAgICc8bGkgc3R5bGU9Im9wYWNpdHk6IDA7
ICI+JyArCi0gICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJob3ciPjwvZGl2PjxkaXYg
Y2xhc3M9IndoYXQiPkxvYWRpbmcgbGlzdCBvZiBwZXJmIGRhc2hib2FyZHMuLi48L2Rpdj4nICsK
LSAgICAgICAgICAgICAgICAnPC9saT4nICsKLSAgICAgICAgICAgICc8L29sPicgKwotICAgICAg
ICAgICAgJzxkaXYgY2xhc3M9InRpdGxlLWJhciI+JyArCi0gICAgICAgICAgICAgICAgJzxzZWxl
Y3Q+PG9wdGlvbj5kdW1teV9wZXJmX3Rlc3RfMTwvb3B0aW9uPjxvcHRpb24+ZHVtbXlfcGVyZl90
ZXN0XzI8L29wdGlvbj48L3NlbGVjdD4nICsKLSAgICAgICAgICAgICAgICAnPHVsIGNsYXNzPSJh
Y3Rpb25zIj48bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIHByZXZpb3VzIj5cdTI1QzA8L2J1dHRv
bj48L2xpPjxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24gbmV4dCI+XHUyNUI2PC9idXR0b24+PC9s
aT48L3VsPicgKwotICAgICAgICAgICAgICAgICc8YSBjbGFzcz0icG9wLW91dCIgdGFyZ2V0PSJf
YmxhbmsiIGhyZWY9Imh0dHA6Ly9kdW1teXVybDEiPlBvcCBvdXQ8L2E+JyArCi0gICAgICAgICAg
ICAgICAgJzxzZWxlY3Q+PG9wdGlvbiB2YWx1ZT0iaHR0cDovL2R1bW15dXJsMSI+TWFjMTAuNiBQ
ZXJmPC9vcHRpb24+PC9zZWxlY3Q+JyArCi0gICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAg
ICAgICAnPGlmcmFtZSBzcmM9Imh0dHA6Ly9kdW1teXVybDEiPjwvaWZyYW1lPicgKwotICAgICAg
ICAnPC9kaXY+Jyk7Ci0KLSAgICAgICAgdmlldy5fcHJldmlvdXNHcmFwaCgpOwotCi0gICAgICAg
IGVxdWFsKHZpZXcub3V0ZXJIVE1MLCAnPGRpdiBpZD0icGVyZi12aWV3Ij4nICsKLSAgICAgICAg
ICAgICc8b2wgY2xhc3M9Im5vdGlmaWNhdGlvbnMiPicgKwotICAgICAgICAgICAgICAgICc8bGkg
c3R5bGU9Im9wYWNpdHk6IDA7ICI+JyArCi0gICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNz
PSJob3ciPjwvZGl2PjxkaXYgY2xhc3M9IndoYXQiPkxvYWRpbmcgbGlzdCBvZiBwZXJmIGRhc2hi
b2FyZHMuLi48L2Rpdj4nICsKLSAgICAgICAgICAgICAgICAnPC9saT4nICsKLSAgICAgICAgICAg
ICc8L29sPicgKwotICAgICAgICAgICAgJzxkaXYgY2xhc3M9InRpdGxlLWJhciI+JyArCi0gICAg
ICAgICAgICAgICAgJzxzZWxlY3Q+PG9wdGlvbj5kdW1teV9wZXJmX3Rlc3RfMTwvb3B0aW9uPjxv
cHRpb24+ZHVtbXlfcGVyZl90ZXN0XzI8L29wdGlvbj48L3NlbGVjdD4nICsKLSAgICAgICAgICAg
ICAgICAnPHVsIGNsYXNzPSJhY3Rpb25zIj48bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIHByZXZp
b3VzIj5cdTI1QzA8L2J1dHRvbj48L2xpPjxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24gbmV4dCI+
XHUyNUI2PC9idXR0b24+PC9saT48L3VsPicgKwotICAgICAgICAgICAgICAgICc8YSBjbGFzcz0i
cG9wLW91dCIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9kdW1teXVybDEiPlBvcCBvdXQ8
L2E+JyArCi0gICAgICAgICAgICAgICAgJzxzZWxlY3Q+PG9wdGlvbiB2YWx1ZT0iaHR0cDovL2R1
bW15dXJsMSI+TWFjMTAuNiBQZXJmPC9vcHRpb24+PC9zZWxlY3Q+JyArCi0gICAgICAgICAgICAn
PC9kaXY+JyArCi0gICAgICAgICAgICAnPGlmcmFtZSBzcmM9Imh0dHA6Ly9kdW1teXVybDEiPjwv
aWZyYW1lPicgKwotICAgICAgICAnPC9kaXY+Jyk7Ci0KLSAgICAgICAgYnVpbGRlcnMucGVyZkJ1
aWxkZXJzID0gb2xkUGVyZkJ1aWxkZXJzOwotICAgICAgICBzdGFydCgpOwotICAgIH0sIDApOwot
fSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvcmVzdWx0cy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvcmVzdWx0cy5qcwkocmV2aXNpb24gMjY5MTExKQor
KysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zY3JpcHRzL3VpL3Jlc3VsdHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NzQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIgdWkgPSB1aSB8fCB7fTsKLXVpLnJlc3VsdHMgPSB1
aS5yZXN1bHRzIHx8IHt9OwotCi0oZnVuY3Rpb24oKXsKLQotdmFyIGtSZXN1bHRzUHJlZmV0Y2hE
ZWxheU1TID0gNTAwOwotCi0vLyBGSVhNRTogUmF0aGVyIHRoYW4gdXNpbmcgdGFibGUsIHNob3Vs
ZCB3ZSBiZSB1c2luZyBzb21ldGhpbmcgZmFuY2llcj8KLXVpLnJlc3VsdHMuQ29tcGFyaXNvbiA9
IGJhc2UuZXh0ZW5kcygndGFibGUnLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgdGhpcy5jbGFzc05hbWUgPSAnY29tcGFyaXNvbic7Ci0gICAgICAgIHRoaXMuaW5uZXJI
VE1MID0gJzx0aGVhZD48dHI+PHRoPkV4cGVjdGVkPC90aD48dGg+QWN0dWFsPC90aD48dGg+RGlm
ZjwvdGg+PC90cj48L3RoZWFkPicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICc8dGJvZHk+
PHRyPjx0ZCBjbGFzcz0iZXhwZWN0ZWQgcmVzdWx0LWNvbnRhaW5lciI+PC90ZD48dGQgY2xhc3M9
ImFjdHVhbCByZXN1bHQtY29udGFpbmVyIj48L3RkPjx0ZCBjbGFzcz0iZGlmZiByZXN1bHQtY29u
dGFpbmVyIj48L3RkPjwvdHI+PC90Ym9keT4nOwotICAgIH0sCi0gICAgX3NlbGVjdG9yRm9yS2lu
ZDogZnVuY3Rpb24oa2luZCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZCkgewotICAgICAg
ICBjYXNlIHJlc3VsdHMua0V4cGVjdGVkS2luZDoKLSAgICAgICAgICAgIHJldHVybiAnLmV4cGVj
dGVkJzsKLSAgICAgICAgY2FzZSByZXN1bHRzLmtBY3R1YWxLaW5kOgotICAgICAgICAgICAgcmV0
dXJuICcuYWN0dWFsJzsKLSAgICAgICAgY2FzZSByZXN1bHRzLmtEaWZmS2luZDoKLSAgICAgICAg
ICAgIHJldHVybiAnLmRpZmYnOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAnLnVua25vd24n
OwotICAgIH0sCi0gICAgdXBkYXRlOiBmdW5jdGlvbihraW5kLCByZXN1bHQpCi0gICAgewotICAg
ICAgICB2YXIgc2VsZWN0b3IgPSB0aGlzLl9zZWxlY3RvckZvcktpbmQoa2luZCk7Ci0gICAgICAg
ICQoc2VsZWN0b3IsIHRoaXMpLmVtcHR5KCkuYXBwZW5kKHJlc3VsdCk7Ci0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgfSwKLX0pOwotCi0vLyBXZSdkIHJlYWxseSBsaWtlIFRleHRSZXN1bHQg
YW5kIEltYWdlUmVzdWx0IHRvIGV4dGVuZCBhIGNvbW1vbiBSZXN1bHQgYmFzZQotLy8gY2xhc3Ms
IGJ1dCB3ZSBjYW4ndCBzZWVtIHRvIGRvIHRoYXQgYmVjYXVzZSB0aGV5IGluaGVyaXQgZnJvbSBk
aWZmZXJlbnQKLS8vIEhUTUxFbGVtZW50cy4gV2UgY291bGQgaGF2ZSB0aGVtIGluaGVyaXQgZnJv
bSA8ZGl2PiwgYnV0IHRoYXQgc2VlbXMgbGFtZS4KLQotdWkucmVzdWx0cy5UZXh0UmVzdWx0ID0g
YmFzZS5leHRlbmRzKCdpZnJhbWUnLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24odXJsKQotICAgIHsK
LSAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAndGV4dC1yZXN1bHQnOwotICAgICAgICB0aGlzLnNy
YyA9IHVybDsKLSAgICB9Ci19KTsKLQotdWkucmVzdWx0cy5JbWFnZVJlc3VsdCA9IGJhc2UuZXh0
ZW5kcygnaW1nJywgewotICAgIGluaXQ6IGZ1bmN0aW9uKHVybCkKLSAgICB7Ci0gICAgICAgIHRo
aXMuY2xhc3NOYW1lID0gJ2ltYWdlLXJlc3VsdCc7Ci0gICAgICAgIHRoaXMuc3JjID0gdXJsOwot
ICAgIH0KLX0pOwotCi11aS5yZXN1bHRzLkF1ZGlvUmVzdWx0ID0gYmFzZS5leHRlbmRzKCdhdWRp
bycsIHsKLSAgICBpbml0OiBmdW5jdGlvbih1cmwpCi0gICAgewotICAgICAgICB0aGlzLmNsYXNz
TmFtZSA9ICdhdWRpby1yZXN1bHQnOwotICAgICAgICB0aGlzLnNyYyA9IHVybDsKLSAgICAgICAg
dGhpcy5jb250cm9scyA9ICdjb250cm9scyc7Ci0gICAgfQotfSk7Ci0KLWZ1bmN0aW9uIGNvbnN0
cnVjdG9yRm9yUmVzdWx0VHlwZSh0eXBlKQotewotICAgIGlmICh0eXBlID09IHJlc3VsdHMua0lt
YWdlVHlwZSkKLSAgICAgICAgcmV0dXJuIHVpLnJlc3VsdHMuSW1hZ2VSZXN1bHQ7Ci0gICAgaWYg
KHR5cGUgPT0gcmVzdWx0cy5rQXVkaW9UeXBlKQotICAgICAgICByZXR1cm4gdWkucmVzdWx0cy5B
dWRpb1Jlc3VsdDsKLSAgICByZXR1cm4gdWkucmVzdWx0cy5UZXh0UmVzdWx0OwotfQotCi11aS5y
ZXN1bHRzLlJlc3VsdHNHcmlkID0gYmFzZS5leHRlbmRzKCdkaXYnLCB7Ci0gICAgaW5pdDogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAncmVzdWx0cy1ncmlkJzsK
LSAgICB9LAotICAgIF9hZGRSZXN1bHQ6IGZ1bmN0aW9uKGNvbXBhcmlzb24sIGNvbnN0cnVjdG9y
LCByZXN1bHRzVVJMc0J5S2luZCwga2luZCkKLSAgICB7Ci0gICAgICAgIHZhciB1cmwgPSByZXN1
bHRzVVJMc0J5S2luZFtraW5kXTsKLSAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGNvbXBhcmlzb24udXBkYXRlKGtpbmQsIG5ldyBjb25zdHJ1Y3Rvcih1cmwp
KTsKLSAgICB9LAotICAgIGFkZENvbXBhcmlzb246IGZ1bmN0aW9uKHJlc3VsdFR5cGUsIHJlc3Vs
dHNVUkxzQnlLaW5kKQotICAgIHsKLSAgICAgICAgdmFyIGNvbXBhcmlzb24gPSBuZXcgdWkucmVz
dWx0cy5Db21wYXJpc29uKCk7Ci0gICAgICAgIHZhciBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9y
Rm9yUmVzdWx0VHlwZShyZXN1bHRUeXBlKTsKLQotICAgICAgICB0aGlzLl9hZGRSZXN1bHQoY29t
cGFyaXNvbiwgY29uc3RydWN0b3IsIHJlc3VsdHNVUkxzQnlLaW5kLCByZXN1bHRzLmtFeHBlY3Rl
ZEtpbmQpOwotICAgICAgICB0aGlzLl9hZGRSZXN1bHQoY29tcGFyaXNvbiwgY29uc3RydWN0b3Is
IHJlc3VsdHNVUkxzQnlLaW5kLCByZXN1bHRzLmtBY3R1YWxLaW5kKTsKLSAgICAgICAgdGhpcy5f
YWRkUmVzdWx0KGNvbXBhcmlzb24sIGNvbnN0cnVjdG9yLCByZXN1bHRzVVJMc0J5S2luZCwgcmVz
dWx0cy5rRGlmZktpbmQpOwotCi0gICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoY29tcGFyaXNvbik7
Ci0gICAgICAgIHJldHVybiBjb21wYXJpc29uOwotICAgIH0sCi0gICAgYWRkUm93OiBmdW5jdGlv
bihyZXN1bHRUeXBlLCB1cmwpCi0gICAgewotICAgICAgICB2YXIgY29uc3RydWN0b3IgPSBjb25z
dHJ1Y3RvckZvclJlc3VsdFR5cGUocmVzdWx0VHlwZSk7Ci0gICAgICAgIHZhciB2aWV3ID0gbmV3
IGNvbnN0cnVjdG9yKHVybCk7Ci0gICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQodmlldyk7Ci0gICAg
ICAgIHJldHVybiB2aWV3OwotICAgIH0sCi0gICAgYWRkUmVzdWx0czogZnVuY3Rpb24ocmVzdWx0
c1VSTHMpCi0gICAgewotICAgICAgICB2YXIgcmVzdWx0c1VSTHNCeVR5cGVBbmRLaW5kID0ge307
Ci0KLSAgICAgICAgcmVzdWx0c1VSTHNCeVR5cGVBbmRLaW5kW3Jlc3VsdHMua0ltYWdlVHlwZV0g
PSB7fTsKLSAgICAgICAgcmVzdWx0c1VSTHNCeVR5cGVBbmRLaW5kW3Jlc3VsdHMua0F1ZGlvVHlw
ZV0gPSB7fTsKLSAgICAgICAgcmVzdWx0c1VSTHNCeVR5cGVBbmRLaW5kW3Jlc3VsdHMua1RleHRU
eXBlXSA9IHt9OwotCi0gICAgICAgIHJlc3VsdHNVUkxzLmZvckVhY2goZnVuY3Rpb24odXJsKSB7
Ci0gICAgICAgICAgICByZXN1bHRzVVJMc0J5VHlwZUFuZEtpbmRbcmVzdWx0cy5yZXN1bHRUeXBl
KHVybCldW3Jlc3VsdHMucmVzdWx0S2luZCh1cmwpXSA9IHVybDsKLSAgICAgICAgfSk7Ci0KLSAg
ICAgICAgJC5lYWNoKHJlc3VsdHNVUkxzQnlUeXBlQW5kS2luZCwgZnVuY3Rpb24ocmVzdWx0VHlw
ZSwgcmVzdWx0c1VSTHNCeUtpbmQpIHsKLSAgICAgICAgICAgIGlmICgkLmlzRW1wdHlPYmplY3Qo
cmVzdWx0c1VSTHNCeUtpbmQpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IGlmIChyZXN1bHRzLmtVbmtub3duS2luZCBpbiByZXN1bHRzVVJMc0J5S2luZCkgewotICAgICAg
ICAgICAgICAgIC8vIFRoaXMgaXMgc29tZXRoaW5nIGxpa2UgImNyYXNoIiB0aGF0IGlzbid0IGEg
Y29tcGFyaXNvbi4KLSAgICAgICAgICAgICAgICB0aGlzLmFkZFJvdyhyZXN1bHRUeXBlLCByZXN1
bHRzVVJMc0J5S2luZFtyZXN1bHRzLmtVbmtub3duS2luZF0pOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuYWRkQ29tcGFyaXNvbihyZXN1
bHRUeXBlLCByZXN1bHRzVVJMc0J5S2luZCk7Ci0gICAgICAgIH0uYmluZCh0aGlzKSk7Ci0KLSAg
ICAgICAgaWYgKCF0aGlzLmNoaWxkcmVuLmxlbmd0aCkKLSAgICAgICAgICAgIHRoaXMudGV4dENv
bnRlbnQgPSAnTm8gcmVzdWx0cyB0byBkaXNwbGF5LicKLSAgICB9Ci19KTsKLQotdWkucmVzdWx0
cy5SZXN1bHRzRGV0YWlscyA9IGJhc2UuZXh0ZW5kcygnZGl2JywgewotICAgIGluaXQ6IGZ1bmN0
aW9uKGRlbGVnYXRlLCBmYWlsdXJlSW5mbykKLSAgICB7Ci0gICAgICAgIHRoaXMuY2xhc3NOYW1l
ID0gJ3Jlc3VsdHMtZGV0YWlsJzsKLSAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
LSAgICAgICAgdGhpcy5fZmFpbHVyZUluZm8gPSBmYWlsdXJlSW5mbzsKLSAgICAgICAgdGhpcy5f
aGF2ZVNob3duT25jZSA9IGZhbHNlOwotICAgIH0sCi0gICAgc2hvdzogZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlmICh0aGlzLl9oYXZlU2hvd25PbmNlKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB0aGlzLl9oYXZlU2hvd25PbmNlID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fZGVsZWdhdGUu
ZmV0Y2hSZXN1bHRzVVJMcyh0aGlzLl9mYWlsdXJlSW5mbywgZnVuY3Rpb24ocmVzdWx0c1VSTHMp
IHsKLSAgICAgICAgICAgIHZhciByZXN1bHRzR3JpZCA9IG5ldyB1aS5yZXN1bHRzLlJlc3VsdHNH
cmlkKCk7Ci0gICAgICAgICAgICByZXN1bHRzR3JpZC5hZGRSZXN1bHRzKHJlc3VsdHNVUkxzKTsK
LQotICAgICAgICAgICAgJCh0aGlzKS5lbXB0eSgpLmFwcGVuZCgKLSAgICAgICAgICAgICAgICBu
ZXcgdWkuYWN0aW9ucy5MaXN0KFsKLSAgICAgICAgICAgICAgICAgICAgbmV3IHVpLmFjdGlvbnMu
UHJldmlvdXMoKSwKLSAgICAgICAgICAgICAgICAgICAgbmV3IHVpLmFjdGlvbnMuTmV4dCgpCi0g
ICAgICAgICAgICAgICAgXSkpLmFwcGVuZChyZXN1bHRzR3JpZCk7Ci0KLQotICAgICAgICB9LmJp
bmQodGhpcykpOwotICAgIH0sCi19KTsKLQotZnVuY3Rpb24gaXNBbnlSZWZ0ZXN0KHRlc3ROYW1l
LCByZXN1bHRzQnlUZXN0KQotewotICAgIHJldHVybiBPYmplY3Qua2V5cyhyZXN1bHRzQnlUZXN0
W3Rlc3ROYW1lXSkubWFwKGZ1bmN0aW9uKGJ1aWxkZXIpIHsKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dHNCeVRlc3RbdGVzdE5hbWVdW2J1aWxkZXJdOwotICAgIH0pLnNvbWUoZnVuY3Rpb24ocmVzdWx0
Tm9kZSkgewotICAgICAgICByZXR1cm4gcmVzdWx0Tm9kZS5yZWZ0ZXN0X3R5cGUgJiYgcmVzdWx0
Tm9kZS5yZWZ0ZXN0X3R5cGUubGVuZ3RoOwotICAgIH0pOwotfQotCi11aS5yZXN1bHRzLkZsYWtp
bmVzc0RhdGEgPSBiYXNlLmV4dGVuZHMoJ2lmcmFtZScsIHsKLSAgICBpbml0OiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICB0aGlzLmNsYXNzTmFtZSA9ICdmbGFraW5lc3MtaWZyYW1lJzsKLSAg
ICAgICAgdGhpcy5zcmMgPSB1aS51cmxGb3JFbWJlZGRlZEZsYWtpbmVzc0Rhc2hib2FyZCgpOwot
ICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5faGFuZGxlTWVz
c2FnZS5iaW5kKHRoaXMpKTsKLSAgICAgICAgfSk7Ci0gICAgfSwKLSAgICBfaGFuZGxlTWVzc2Fn
ZTogZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgaWYgKCF0aGlzLmNvbnRlbnRXaW5kb3cpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIG51bGwgZXZlbnQub3Jp
Z2luIHNvIHRoYXQgdGhlIHVuaXR0ZXN0cyBjYW4gZ2V0IHBhc3QgdGhpcyBwb2ludC4KLSAgICAg
ICAgLy8gRklYTUU6IElzIHRoaXMgc2FmZT8gSW4gcHJhY3RpY2UsIHRoZXJlJ3Mgbm8gbWVhbmlu
Z2Z1bCBoYXJtIHRoYXQgY2FuIGNvbWUgZnJvbQotICAgICAgICAvLyBhIG1hbGljaW91cyBwYWdl
IHNlbmRpbmcgdXMgaGVpZ2h0Q2hhbmdlZCBjb21tYW5kcywgc28gaXQgZG9lc24ndCByZWFsbHkg
bWF0dGVyLgotICAgICAgICBpZiAoZXZlbnQub3JpZ2luICE9PSAnbnVsbCcgJiYgZXZlbnQub3Jp
Z2luICE9ICdodHRwczovL3Jlc3VsdHMud2Via2l0Lm9yZycpIHsKLSAgICAgICAgICAgIGNvbnNv
bGUubG9nKCdJbnZhbGlkIG9yaWdpbjogJyArIGV2ZW50Lm9yaWdpbik7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZXZlbnQuZGF0YS5jb21tYW5kICE9ICdo
ZWlnaHRDaGFuZ2VkJykgewotICAgICAgICAgICAgY29uc29sZS5sb2coJ1Vua25vd24gcG9zdE1l
c3NhZ2UgY29tbWFuZDogJyArIGV2ZW50LmRhdGEpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdGhpcy5zdHlsZS5oZWlnaHQgPSBldmVudC5kYXRhLmhlaWdodCAr
ICdweCc7Ci0gICAgfQotfSk7Ci0KLXVpLnJlc3VsdHMuVGVzdFNlbGVjdG9yID0gYmFzZS5leHRl
bmRzKCdkaXYnLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oZGVsZWdhdGUsIHJlc3VsdHNCeVRlc3Qp
Ci0gICAgewotICAgICAgICB0aGlzLmNsYXNzTmFtZSA9ICd0ZXN0LXNlbGVjdG9yJzsKLSAgICAg
ICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLQotICAgICAgICB2YXIgdG9wUGFuZWwgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgdG9wUGFuZWwuY2xhc3NOYW1l
ID0gJ3RvcC1wYW5lbCc7Ci0gICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQodG9wUGFuZWwpOwotCi0g
ICAgICAgIHRoaXMuX2FwcGVuZFJlc2l6ZUhhbmRsZSgpOwotCi0gICAgICAgIHZhciBib3R0b21Q
YW5lbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBib3R0b21QYW5l
bC5jbGFzc05hbWUgPSAnYm90dG9tLXBhbmVsJzsKLSAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChi
b3R0b21QYW5lbCk7Ci0KLSAgICAgICAgdGhpcy5fZmxha2luZXNzRGF0YSA9IG5ldyB1aS5yZXN1
bHRzLkZsYWtpbmVzc0RhdGEoKTsKLSAgICAgICAgdGhpcy5hcHBlbmRDaGlsZCh0aGlzLl9mbGFr
aW5lc3NEYXRhKTsKLQotICAgICAgICB2YXIgdGVzdE5hbWVzID0gT2JqZWN0LmtleXMocmVzdWx0
c0J5VGVzdCk7Ci0gICAgICAgIHRlc3ROYW1lcy5zb3J0KCkuZm9yRWFjaChmdW5jdGlvbih0ZXN0
TmFtZSkgewotICAgICAgICAgICAgdmFyIG5vbkxpbmtUaXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2EnKTsKLSAgICAgICAgICAgIG5vbkxpbmtUaXRsZS5jbGFzc0xpc3QuYWRkKCdub24t
bGluay10aXRsZScpOwotICAgICAgICAgICAgbm9uTGlua1RpdGxlLnRleHRDb250ZW50ID0gdGVz
dE5hbWU7Ci0KLSAgICAgICAgICAgIHZhciBsaW5rVGl0bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdhJyk7Ci0gICAgICAgICAgICBsaW5rVGl0bGUuY2xhc3NMaXN0LmFkZCgnbGluay10aXRs
ZScpOwotICAgICAgICAgICAgbGlua1RpdGxlLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVpLnVybEZv
ckZsYWtpbmVzc0Rhc2hib2FyZChbdGVzdE5hbWVdKSkKLSAgICAgICAgICAgIGxpbmtUaXRsZS50
ZXh0Q29udGVudCA9IHRlc3ROYW1lOwotCi0gICAgICAgICAgICB2YXIgaGVhZGVyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnaDMnKTsKLSAgICAgICAgICAgIGhlYWRlci5hcHBlbmRDaGlsZChu
b25MaW5rVGl0bGUpOwotICAgICAgICAgICAgaGVhZGVyLmFwcGVuZENoaWxkKGxpbmtUaXRsZSk7
Ci0gICAgICAgICAgICBoZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9zaG93
UmVzdWx0cy5iaW5kKHRoaXMsIGhlYWRlciwgZmFsc2UpKTsKLSAgICAgICAgICAgIHRvcFBhbmVs
LmFwcGVuZENoaWxkKGhlYWRlcik7Ci0gICAgICAgIH0sIHRoaXMpOwotCi0gICAgICAgIC8vIElm
IHdlIGhhdmUgYSBzbWFsbCBhbW91bnQgb2YgY29udGVudCwgZG9uJ3Qgc2hvdyB0aGUgcmVzaXpl
IGhhbmRsZXIuCi0gICAgICAgIC8vIE90aGVyd2lzZSwgc2V0IHRoZSBtaW5IZWlnaHQgc28gdGhh
dCB0aGUgcGVyY2VudGFnZSBoZWlnaHQgb2YgdGhlIAotICAgICAgICAvLyB0b3BQYW5lbCBpcyBu
b3QgdG9vIHNtYWxsLgotICAgICAgICBpZiAodGVzdE5hbWVzLmxlbmd0aCA8PSA0KQotICAgICAg
ICAgICAgdGhpcy5yZW1vdmVDaGlsZCh0aGlzLnF1ZXJ5U2VsZWN0b3IoJy5yZXNpemUtaGFuZGxl
JykpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0b3BQYW5lbC5zdHlsZS5taW5IZWlnaHQg
PSAnMTAwcHgnOwotICAgIH0sCi0gICAgX2FwcGVuZFJlc2l6ZUhhbmRsZTogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgdmFyIHJlc2l6ZUhhbmRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOwotICAgICAgICByZXNpemVIYW5kbGUuY2xhc3NOYW1lID0gJ3Jlc2l6ZS1oYW5kbGUn
OwotICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHJlc2l6ZUhhbmRsZSk7Ci0KLSAgICAgICAgcmVz
aXplSGFuZGxlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1bmN0aW9uKGV2ZW50KSB7
Ci0gICAgICAgICAgICB0aGlzLl9pc19yZXNpemluZyA9IHRydWU7Ci0gICAgICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICB9LmJpbmQodGhpcykpOwotCi0gICAgICAgIHZh
ciBjYW5jZWxSZXNpemUgPSBmdW5jdGlvbihldmVudCkgeyB0aGlzLl9pc19yZXNpemluZyA9IGZh
bHNlOyB9LmJpbmQodGhpcyk7Ci0gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1
cCcsIGNhbmNlbFJlc2l6ZSk7Ci0gICAgICAgIC8vIEZJWE1FOiBVc2UgYWRkRXZlbnRMaXN0ZW5l
ciBvbmNlIFdlYktpdCBhZGRzIHN1cHBvcnQgZm9yIG1vdXNlbGVhdmUvbW91c2VlbnRlci4KLSAg
ICAgICAgJCh3aW5kb3cpLmJpbmQoJ21vdXNlbGVhdmUnLCBjYW5jZWxSZXNpemUpOwotCi0gICAg
ICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgICAgIGlmICghdGhpcy5faXNfcmVzaXppbmcpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgdmFyIG1vdXNlWSA9IGV2ZW50LmNsaWVudFkgKyBkb2N1bWVudC5i
b2R5LnNjcm9sbFRvcCAtIHRoaXMub2Zmc2V0VG9wOwotICAgICAgICAgICAgdmFyIHBlcmNlbnRh
Z2UgPSAxMDAgKiBtb3VzZVkgLyB0aGlzLm9mZnNldEhlaWdodDsKLSAgICAgICAgICAgIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJy50b3AtcGFuZWwnKS5zdHlsZS5tYXhIZWlnaHQgPSBwZXJjZW50
YWdlICsgJyUnOwotICAgICAgICB9LmJpbmQodGhpcykpCi0gICAgfSwKLSAgICBfc2hvd1Jlc3Vs
dHM6IGZ1bmN0aW9uKGhlYWRlciwgc2Nyb2xsSW5mb1ZpZXcpCi0gICAgewotICAgICAgICBpZiAo
IWhlYWRlcikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICB2YXIgYWN0aXZl
SGVhZGVyID0gdGhpcy5xdWVyeVNlbGVjdG9yKCcuYWN0aXZlJykKLSAgICAgICAgaWYgKGFjdGl2
ZUhlYWRlcikKLSAgICAgICAgICAgIGFjdGl2ZUhlYWRlci5jbGFzc0xpc3QucmVtb3ZlKCdhY3Rp
dmUnKTsKLSAgICAgICAgaGVhZGVyLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwotCi0gICAgICAg
IHZhciB0ZXN0TmFtZSA9IHRoaXMuY3VycmVudFRlc3ROYW1lKCk7Ci0gICAgICAgIHRoaXMuX2Zs
YWtpbmVzc0RhdGEuc3JjID0gdWkudXJsRm9yRW1iZWRkZWRGbGFraW5lc3NEYXNoYm9hcmQoW3Rl
c3ROYW1lXSk7Ci0KLSAgICAgICAgdmFyIGJvdHRvbVBhbmVsID0gdGhpcy5xdWVyeVNlbGVjdG9y
KCcuYm90dG9tLXBhbmVsJykKLSAgICAgICAgYm90dG9tUGFuZWwuaW5uZXJIVE1MID0gJyc7Ci0g
ICAgICAgIGJvdHRvbVBhbmVsLmFwcGVuZENoaWxkKHRoaXMuX2RlbGVnYXRlLmNvbnRlbnRGb3JU
ZXN0KHRlc3ROYW1lKSk7Ci0KLSAgICAgICAgdmFyIHRvcFBhbmVsID0gdGhpcy5xdWVyeVNlbGVj
dG9yKCcudG9wLXBhbmVsJyk7Ci0gICAgICAgIGlmIChzY3JvbGxJbmZvVmlldykgewotICAgICAg
ICAgICAgdG9wUGFuZWwuc2Nyb2xsVG9wID0gaGVhZGVyLm9mZnNldFRvcDsKLSAgICAgICAgICAg
IGlmIChoZWFkZXIub2Zmc2V0VG9wIC0gdG9wUGFuZWwuc2Nyb2xsVG9wIDwgaGVhZGVyLm9mZnNl
dEhlaWdodCkKLSAgICAgICAgICAgICAgICB0b3BQYW5lbC5zY3JvbGxUb3AgPSB0b3BQYW5lbC5z
Y3JvbGxUb3AgLSBoZWFkZXIub2Zmc2V0SGVpZ2h0OwotICAgICAgICB9Ci0KLSAgICAgICAgdmFy
IHJlc3VsdHNEZXRhaWxzID0gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKCcucmVzdWx0cy1kZXRhaWwn
KTsKLSAgICAgICAgaWYgKHJlc3VsdHNEZXRhaWxzLmxlbmd0aCkKLSAgICAgICAgICAgIHJlc3Vs
dHNEZXRhaWxzWzBdLnNob3coKTsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwocmVzdWx0c0RldGFpbHMsIGZ1
bmN0aW9uKHJlc3VsdHNEZXRhaWwpIHsKLSAgICAgICAgICAgICAgICByZXN1bHRzRGV0YWlsLnNo
b3coKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCBrUmVzdWx0c1ByZWZldGNoRGVsYXlN
Uyk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLSAgICBuZXh0UmVzdWx0OiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5xdWVyeVNlbGVjdG9yKCcuYnVpbGRlci1z
ZWxlY3RvcicpLm5leHRSZXN1bHQoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICByZXR1cm4gdGhpcy5uZXh0VGVzdCgpOwotICAgIH0sCi0gICAgcHJldmlvdXNSZXN1bHQ6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLnF1ZXJ5U2VsZWN0b3IoJy5idWlsZGVy
LXNlbGVjdG9yJykucHJldmlvdXNSZXN1bHQoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICByZXR1cm4gdGhpcy5wcmV2aW91c1Rlc3QoKTsKLSAgICB9LAotICAgIG5leHRUZXN0
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fc2hvd1Jlc3VsdHModGhp
cy5xdWVyeVNlbGVjdG9yKCcuYWN0aXZlJykubmV4dFNpYmxpbmcsIHRydWUpOwotICAgIH0sCi0g
ICAgcHJldmlvdXNUZXN0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgc3VjY2VlZGVk
ID0gdGhpcy5fc2hvd1Jlc3VsdHModGhpcy5xdWVyeVNlbGVjdG9yKCcuYWN0aXZlJykucHJldmlv
dXNTaWJsaW5nLCB0cnVlKTsKLSAgICAgICAgaWYgKHN1Y2NlZWRlZCkKLSAgICAgICAgICAgIHRo
aXMucXVlcnlTZWxlY3RvcignLmJ1aWxkZXItc2VsZWN0b3InKS5sYXN0UmVzdWx0KCk7Ci0gICAg
ICAgIHJldHVybiBzdWNjZWVkZWQ7Ci0gICAgfSwKLSAgICBmaXJzdFJlc3VsdDogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgdGhpcy5fc2hvd1Jlc3VsdHModGhpcy5xdWVyeVNlbGVjdG9yKCdo
MycpLCB0cnVlKTsKLSAgICB9LAotICAgIGN1cnJlbnRUZXN0TmFtZTogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvcignLmFjdGl2ZSAubm9uLWxpbmst
dGl0bGUnKS50ZXh0Q29udGVudDsKLSAgICB9Ci19KTsKLQotdWkucmVzdWx0cy5CdWlsZGVyU2Vs
ZWN0b3IgPSBiYXNlLmV4dGVuZHMoJ2RpdicsIHsKLSAgICBpbml0OiBmdW5jdGlvbihkZWxlZ2F0
ZSwgdGVzdE5hbWUsIHJlc3VsdHNCeUJ1aWxkZXIpCi0gICAgewotICAgICAgICB0aGlzLmNsYXNz
TmFtZSA9ICdidWlsZGVyLXNlbGVjdG9yJzsKLSAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKLQotICAgICAgICB2YXIgdGFiU3RyaXAgPSB0aGlzLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3VsJykpOwotCi0gICAgICAgIE9iamVjdC5rZXlzKHJlc3VsdHNCeUJ1
aWxkZXIpLnNvcnQoKS5mb3JFYWNoKGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKSB7Ci0gICAgICAgICAg
ICB2YXIgYnVpbGRlckhhc2ggPSBiYXNlLnVuZGVyc2NvcmVkQnVpbGRlck5hbWUoYnVpbGRlck5h
bWUpOwotCi0gICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2En
KTsKLSAgICAgICAgICAgICQobGluaykuYXR0cignaHJlZicsICIjIiArIGJ1aWxkZXJIYXNoKS50
ZXh0KHVpLmRpc3BsYXlOYW1lRm9yQnVpbGRlcihidWlsZGVyTmFtZSkpOwotICAgICAgICAgICAg
dGFiU3RyaXAuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKSkuYXBwZW5k
Q2hpbGQobGluayk7Ci0KLSAgICAgICAgICAgIHZhciBjb250ZW50ID0gdGhpcy5fZGVsZWdhdGUu
Y29udGVudEZvclRlc3RBbmRCdWlsZGVyKHRlc3ROYW1lLCBidWlsZGVyTmFtZSk7Ci0gICAgICAg
ICAgICBjb250ZW50LmlkID0gYnVpbGRlckhhc2g7Ci0gICAgICAgICAgICB0aGlzLmFwcGVuZENo
aWxkKGNvbnRlbnQpOwotICAgICAgICB9LCB0aGlzKTsKLQotICAgICAgICAkKHRoaXMpLnRhYnMo
KTsKLSAgICB9LAotICAgIG5leHRSZXN1bHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZh
ciBuZXh0SW5kZXggPSAkKHRoaXMpLnRhYnMoJ29wdGlvbicsICdzZWxlY3RlZCcpICsgMTsKLSAg
ICAgICAgaWYgKG5leHRJbmRleCA+PSAkKHRoaXMpLnRhYnMoJ2xlbmd0aCcpKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlCi0gICAgICAgICQodGhpcykudGFicygnb3B0aW9uJywgJ3NlbGVjdGVk
JywgbmV4dEluZGV4KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLSAgICBwcmV2aW91
c1Jlc3VsdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIHByZXZpb3VzSW5kZXggPSAk
KHRoaXMpLnRhYnMoJ29wdGlvbicsICdzZWxlY3RlZCcpIC0gMTsKLSAgICAgICAgaWYgKHByZXZp
b3VzSW5kZXggPCAwKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAkKHRoaXMp
LnRhYnMoJ29wdGlvbicsICdzZWxlY3RlZCcsIHByZXZpb3VzSW5kZXgpOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9LAotICAgIGZpcnN0UmVzdWx0OiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICAkKHRoaXMpLnRhYnMoJ29wdGlvbicsICdzZWxlY3RlZCcsIDApOwotICAgIH0sCi0gICAg
bGFzdFJlc3VsdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgJCh0aGlzKS50YWJzKCdvcHRp
b24nLCAnc2VsZWN0ZWQnLCAkKHRoaXMpLnRhYnMoJ2xlbmd0aCcpIC0gMSk7Ci0gICAgfQotfSk7
Ci0KLXVpLnJlc3VsdHMuVmlldyA9IGJhc2UuZXh0ZW5kcygnZGl2JywgewotICAgIGluaXQ6IGZ1
bmN0aW9uKGRlbGVnYXRlKQotICAgIHsKLSAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAncmVzdWx0
cy12aWV3JzsKLSAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICB9LAotICAg
IGNvbnRlbnRGb3JUZXN0OiBmdW5jdGlvbih0ZXN0TmFtZSkKLSAgICB7Ci0gICAgICAgIHZhciBy
ZWJhc2VsaW5lQWN0aW9uOwotICAgICAgICBpZiAoaXNBbnlSZWZ0ZXN0KHRlc3ROYW1lLCB0aGlz
Ll9yZXN1bHRzQnlUZXN0KSkKLSAgICAgICAgICAgIHJlYmFzZWxpbmVBY3Rpb24gPSAkKCc8ZGl2
IGNsYXNzPSJub24tYWN0aW9uLWJ1dHRvbiI+UmVmdGVzdHMgY2Fubm90IGJlIHJlYmFzZWxpbmVk
LiBFbWFpbCB3ZWJraXQtZ2FyZGVuaW5nQGNocm9taXVtLm9yZyBpZiB1bnN1cmUgaG93IHRvIGZp
eCB0aGlzLjwvZGl2PicpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZWJhc2VsaW5lQWN0
aW9uID0gbmV3IHVpLmFjdGlvbnMuTGlzdChbbmV3IHVpLmFjdGlvbnMuUmViYXNlbGluZSgpLm1h
a2VEZWZhdWx0KCldKTsKLSAgICAgICAgJChyZWJhc2VsaW5lQWN0aW9uKS5hZGRDbGFzcygncmVi
YXNlbGluZS1hY3Rpb24nKTsKLQotICAgICAgICB2YXIgYnVpbGRlclNlbGVjdG9yID0gbmV3IHVp
LnJlc3VsdHMuQnVpbGRlclNlbGVjdG9yKHRoaXMsIHRlc3ROYW1lLCB0aGlzLl9yZXN1bHRzQnlU
ZXN0W3Rlc3ROYW1lXSk7Ci0gICAgICAgICQoYnVpbGRlclNlbGVjdG9yKS5hcHBlbmQocmViYXNl
bGluZUFjdGlvbikuYXBwZW5kKCQoJzxiciBzdHlsZT0iY2xlYXI6Ym90aCI+JykpOwotICAgICAg
ICAkKGJ1aWxkZXJTZWxlY3RvcikuYmluZCgndGFic3NlbGVjdCcsIGZ1bmN0aW9uKGV2ZW50LCB1
aSkgewotICAgICAgICAgICAgLy8gV2Ugd2lsbCBwcm9iYWJseSBoYXZlIHByZS1mZXRjaGVkIHRo
ZSB0YWIgYWxyZWFkeSwgYnV0IHdlIG5lZWQgdG8gbWFrZSBzdXJlLgotICAgICAgICAgICAgdWku
cGFuZWwuc2hvdygpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXJTZWxlY3Rv
cjsKLSAgICB9LAotICAgIGNvbnRlbnRGb3JUZXN0QW5kQnVpbGRlcjogZnVuY3Rpb24odGVzdE5h
bWUsIGJ1aWxkZXJOYW1lKQotICAgIHsKLSAgICAgICAgdmFyIGZhaWx1cmVJbmZvID0gcmVzdWx0
cy5mYWlsdXJlSW5mb0ZvclRlc3RBbmRCdWlsZGVyKHRoaXMuX3Jlc3VsdHNCeVRlc3QsIHRlc3RO
YW1lLCBidWlsZGVyTmFtZSk7Ci0gICAgICAgIHJldHVybiBuZXcgdWkucmVzdWx0cy5SZXN1bHRz
RGV0YWlscyh0aGlzLCBmYWlsdXJlSW5mbyk7Ci0gICAgfSwKLSAgICBzZXRSZXN1bHRzQnlUZXN0
OiBmdW5jdGlvbihyZXN1bHRzQnlUZXN0KQotICAgIHsKLSAgICAgICAgJCh0aGlzKS5lbXB0eSgp
OwotICAgICAgICB0aGlzLl9yZXN1bHRzQnlUZXN0ID0gcmVzdWx0c0J5VGVzdDsKLSAgICAgICAg
dGhpcy5fdGVzdFNlbGVjdG9yID0gbmV3IHVpLnJlc3VsdHMuVGVzdFNlbGVjdG9yKHRoaXMsIHJl
c3VsdHNCeVRlc3QpOwotICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHRoaXMuX3Rlc3RTZWxlY3Rv
cik7Ci0gICAgfSwKLSAgICBmZXRjaFJlc3VsdHNVUkxzOiBmdW5jdGlvbihmYWlsdXJlSW5mbywg
Y2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5mZXRjaFJlc3VsdHNVUkxz
KGZhaWx1cmVJbmZvLCBjYWxsYmFjaykKLSAgICB9LAotICAgIG5leHRSZXN1bHQ6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90ZXN0U2VsZWN0b3IubmV4dFJlc3VsdCgp
OwotICAgIH0sCi0gICAgcHJldmlvdXNSZXN1bHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl90ZXN0U2VsZWN0b3IucHJldmlvdXNSZXN1bHQoKTsKLSAgICB9LAotICAg
IG5leHRUZXN0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdGVzdFNl
bGVjdG9yLm5leHRUZXN0KCk7Ci0gICAgfSwKLSAgICBwcmV2aW91c1Rlc3Q6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90ZXN0U2VsZWN0b3IucHJldmlvdXNUZXN0KCk7
Ci0gICAgfSwKLSAgICBmaXJzdFJlc3VsdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhp
cy5fdGVzdFNlbGVjdG9yLmZpcnN0UmVzdWx0KCkKLSAgICB9LAotICAgIGN1cnJlbnRUZXN0TmFt
ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Rlc3RTZWxlY3Rvci5j
dXJyZW50VGVzdE5hbWUoKQotICAgIH0KLX0pOwotCi19KSgpOwpJbmRleDogVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3Jp
cHRzL3VpL3Jlc3VsdHNfdW5pdHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy91aS9yZXN1bHRzX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL3VpL3Jlc3VsdHNfdW5pdHRlc3RzLmpzCShub25leGlzdGVudCkKQEAgLTEsMjA3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1bmN0aW9uICgpIHsKLQotbW9kdWxlKCd1aS5yZXN1bHRz
Jyk7Ci0KLWFzeW5jVGVzdCgnRmxha2luZXNzRGF0YScsIDEsIGZ1bmN0aW9uKCkgewotICAgIHZh
ciBkYXNoYm9hcmQgPSBuZXcgdWkucmVzdWx0cy5GbGFraW5lc3NEYXRhKCk7Ci0gICAgZGFzaGJv
YXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgLy8gc2V0
VGltZW91dCB0byBiZSBhZnRlciB0aGUgRmxha2luZXNzRGF0YSdzIGxvYWQgaGFuZGxlci4KLSAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVz
c2FnZSh7Y29tbWFuZDogJ2hlaWdodENoYW5nZWQnLCBoZWlnaHQ6IDE1fSwgJyonKTsKLSAgICAg
ICAgICAgIC8vIHNldFRpbWVvdXQgdG8gYmUgYWZ0ZXIgdGhlIHBvc3RNZXNzYWdlIGhhcyBiZWVu
IGhhbmRsZWQuCi0gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgIGVxdWFscyhkYXNoYm9hcmQub2Zmc2V0SGVpZ2h0LCAxNSk7Ci0gICAgICAgICAgICAg
ICAgJChkYXNoYm9hcmQpLmRldGFjaCgpOwotICAgICAgICAgICAgICAgIHN0YXJ0KCk7Ci0gICAg
ICAgICAgICB9LCAwKTsKLSAgICAgICAgfSwgMCk7Ci0gICAgfSk7Ci0gICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChkYXNoYm9hcmQpOwotfSk7Ci0KLXZhciBrRXhhbXBsZVJlc3VsdHNCeVRl
c3QgPSB7Ci0gICAgInNjcm9sbGJhcnMvY3VzdG9tLXNjcm9sbGJhci13aXRoLWluY29tcGxldGUt
c3R5bGUuaHRtbCI6IHsKLSAgICAgICAgIk1vY2sgQnVpbGRlciI6IHsKLSAgICAgICAgICAgICJl
eHBlY3RlZCI6ICJJTUFHRSIsCi0gICAgICAgICAgICAiYWN0dWFsIjogIkNSQVNIIgotICAgICAg
ICB9LAotICAgICAgICAiTW9jayBMaW51eCI6IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJU
RVhUIiwKLSAgICAgICAgICAgICJhY3R1YWwiOiAiQ1JBU0giCi0gICAgICAgIH0KLSAgICB9LAot
ICAgICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCI6IHsKLSAgICAgICAgIk1vY2sgQnVp
bGRlciI6IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAgICAgICAgICJh
Y3R1YWwiOiAiVEVYVCIKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLXZhciBrRXhhbXBsZVJlZnRl
c3RSZXN1bHRzID0gewotICAgICJyZWZ0ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIEJ1aWxk
ZXIiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCi0gICAgICAgICAgICAiYWN0
dWFsIjogIklNQUdFIiwKLSAgICAgICAgICAgICJyZWZ0ZXN0X3R5cGUiOiBbIj09Il0KLSAgICAg
ICAgfQotICAgIH0sCi0gICAgIm1pc21hdGNoLXJlZnRlc3QuaHRtbCI6IHsKLSAgICAgICAgIk1v
Y2sgQnVpbGRlciI6IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAgICAg
ICAgICJhY3R1YWwiOiAiSU1BR0UiLAotICAgICAgICAgICAgInJlZnRlc3RfdHlwZSI6IFsiIT0i
XQotICAgICAgICB9Ci0gICAgfQotfTsKLQotdmFyIGtFeGFtcGxlUmVzdWx0c1dpdGhUaW1lb3V0
QnlUZXN0ID0gewotICAgICJmYXN0L25vdC1mYXN0LXRlc3QuaHRtbCI6IHsKLSAgICAgICAgIk1v
Y2sgQnVpbGRlciI6IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAgICAg
ICAgICJhY3R1YWwiOiAiVElNRU9VVCIKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLXZhciBrRXhh
bXBsZUdyZWF0ZXJUaGFuRm91clJlc3VsdHNCeVRlc3QgPSB7Ci0gICAgInNjcm9sbGJhcnMvY3Vz
dG9tLXNjcm9sbGJhci13aXRoLWluY29tcGxldGUtc3R5bGUuaHRtbCI6IHsKLSAgICAgICAgIk1v
Y2sgTGludXgiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiVEVYVCIsCi0gICAgICAgICAg
ICAiYWN0dWFsIjogIkNSQVNIIgotICAgICAgICB9Ci0gICAgfSwKLSAgICAic2Nyb2xsYmFycy8x
Lmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIExpbnV4IjogewotICAgICAgICAgICAgImV4cGVjdGVk
IjogIlRFWFQiLAotICAgICAgICAgICAgImFjdHVhbCI6ICJDUkFTSCIKLSAgICAgICAgfQotICAg
IH0sCi0gICAgInNjcm9sbGJhcnMvMi5odG1sIjogewotICAgICAgICAiTW9jayBMaW51eCI6IHsK
LSAgICAgICAgICAgICJleHBlY3RlZCI6ICJURVhUIiwKLSAgICAgICAgICAgICJhY3R1YWwiOiAi
Q1JBU0giCi0gICAgICAgIH0KLSAgICB9LAotICAgICJzY3JvbGxiYXJzLzMuaHRtbCI6IHsKLSAg
ICAgICAgIk1vY2sgTGludXgiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiVEVYVCIsCi0g
ICAgICAgICAgICAiYWN0dWFsIjogIkNSQVNIIgotICAgICAgICB9Ci0gICAgfSwKLSAgICAidXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIEJ1aWxkZXIiOiB7
Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCi0gICAgICAgICAgICAiYWN0dWFsIjog
IlRFWFQiCi0gICAgICAgIH0KLSAgICB9Ci19OwotCi10ZXN0KCdWaWV3JywgMTgsIGZ1bmN0aW9u
KCkgewotICAgIHZhciBkZWxlZ2F0ZSA9IHsKLSAgICAgICAgZmV0Y2hSZXN1bHRzVVJMczogZnVu
Y3Rpb24oZmFpbHVyZUluZm8sIGNhbGxiYWNrKSB7IHJldHVybjsgfQotICAgIH07Ci0KLSAgICB2
YXIgdmlldyA9IG5ldyB1aS5yZXN1bHRzLlZpZXcoZGVsZWdhdGUpOwotICAgIHZpZXcuc2V0UmVz
dWx0c0J5VGVzdChrRXhhbXBsZVJlc3VsdHNCeVRlc3QpOwotCi0gICAgdmlldy5maXJzdFJlc3Vs
dCgpOwotICAgIHZhciB0ZXN0U2VsZWN0b3IgPSB2aWV3LnF1ZXJ5U2VsZWN0b3IoJy50ZXN0LXNl
bGVjdG9yJyk7Ci0gICAgdmFyIHRvcFBhbmVsID0gdGVzdFNlbGVjdG9yLnF1ZXJ5U2VsZWN0b3Io
Jy50b3AtcGFuZWwnKTsKLSAgICBlcXVhbHModG9wUGFuZWwuY2hpbGROb2Rlc1swXSwgdG9wUGFu
ZWwucXVlcnlTZWxlY3RvcignLmFjdGl2ZScpKTs7Ci0gICAgZXF1YWxzKCQoJCgnLmJ1aWxkZXIt
c2VsZWN0b3InLCB2aWV3KVswXSkudGFicygnb3B0aW9uJywgJ3NlbGVjdGVkJyksIDApOwotCi0g
ICAgdmlldy5uZXh0UmVzdWx0KCk7Ci0gICAgZXF1YWxzKHRvcFBhbmVsLmNoaWxkTm9kZXNbMF0s
IHRvcFBhbmVsLnF1ZXJ5U2VsZWN0b3IoJy5hY3RpdmUnKSk7OwotICAgIGVxdWFscygkKCQoJy5i
dWlsZGVyLXNlbGVjdG9yJywgdmlldylbMF0pLnRhYnMoJ29wdGlvbicsICdzZWxlY3RlZCcpLCAx
KTsKLSAgICBlcXVhbHModmlldy5jdXJyZW50VGVzdE5hbWUoKSwgJ3Njcm9sbGJhcnMvY3VzdG9t
LXNjcm9sbGJhci13aXRoLWluY29tcGxldGUtc3R5bGUuaHRtbCcpOwotCi0gICAgdmlldy5uZXh0
UmVzdWx0KCk7Ci0gICAgZXF1YWxzKHRvcFBhbmVsLmNoaWxkTm9kZXNbMV0sIHRvcFBhbmVsLnF1
ZXJ5U2VsZWN0b3IoJy5hY3RpdmUnKSk7OwotICAgIGVxdWFscygkKCQoJy5idWlsZGVyLXNlbGVj
dG9yJywgdmlldylbMF0pLnRhYnMoJ29wdGlvbicsICdzZWxlY3RlZCcpLCAwKTsKLSAgICBlcXVh
bHModmlldy5jdXJyZW50VGVzdE5hbWUoKSwgJ3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1s
Jyk7Ci0KLSAgICB2aWV3LnByZXZpb3VzUmVzdWx0KCk7Ci0gICAgZXF1YWxzKHRvcFBhbmVsLmNo
aWxkTm9kZXNbMF0sIHRvcFBhbmVsLnF1ZXJ5U2VsZWN0b3IoJy5hY3RpdmUnKSk7OwotICAgIGVx
dWFscygkKCQoJy5idWlsZGVyLXNlbGVjdG9yJywgdmlldylbMF0pLnRhYnMoJ29wdGlvbicsICdz
ZWxlY3RlZCcpLCAxKTsKLQotICAgIHZpZXcubmV4dFRlc3QoKTsKLSAgICBlcXVhbHModG9wUGFu
ZWwuY2hpbGROb2Rlc1sxXSwgdG9wUGFuZWwucXVlcnlTZWxlY3RvcignLmFjdGl2ZScpKTs7Ci0g
ICAgZXF1YWxzKCQoJCgnLmJ1aWxkZXItc2VsZWN0b3InLCB2aWV3KVswXSkudGFicygnb3B0aW9u
JywgJ3NlbGVjdGVkJyksIDApOwotICAgIGVxdWFscyh2aWV3LmN1cnJlbnRUZXN0TmFtZSgpLCAn
dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnKTsKLQotICAgIHZpZXcucHJldmlvdXNUZXN0
KCk7Ci0gICAgZXF1YWxzKHRvcFBhbmVsLmNoaWxkTm9kZXNbMF0sIHRvcFBhbmVsLnF1ZXJ5U2Vs
ZWN0b3IoJy5hY3RpdmUnKSk7OwotICAgIGVxdWFscygkKCQoJy5idWlsZGVyLXNlbGVjdG9yJywg
dmlldylbMF0pLnRhYnMoJ29wdGlvbicsICdzZWxlY3RlZCcpLCAxKTsKLSAgICBlcXVhbHModmll
dy5jdXJyZW50VGVzdE5hbWUoKSwgJ3Njcm9sbGJhcnMvY3VzdG9tLXNjcm9sbGJhci13aXRoLWlu
Y29tcGxldGUtc3R5bGUuaHRtbCcpOwotCi0gICAgb2soIXRlc3RTZWxlY3Rvci5xdWVyeVNlbGVj
dG9yKCcucmVzaXplLWhhbmRsZScpKTsKLSAgICBlcXVhbHModG9wUGFuZWwuc3R5bGUubWluSGVp
Z2h0LCAnJyk7Ci19KTsKLQotdGVzdCgnVmlldyB3aXRoIG1vcmUgdGhhbiBmb3VyIHRlc3RzJywg
MiwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRlbGVnYXRlID0gewotICAgICAgICBmZXRjaFJlc3Vs
dHNVUkxzOiBmdW5jdGlvbihmYWlsdXJlSW5mbywgY2FsbGJhY2spIHsgcmV0dXJuOyB9Ci0gICAg
fTsKLQotICAgIHZhciB2aWV3ID0gbmV3IHVpLnJlc3VsdHMuVmlldyhkZWxlZ2F0ZSk7Ci0gICAg
dmlldy5zZXRSZXN1bHRzQnlUZXN0KGtFeGFtcGxlR3JlYXRlclRoYW5Gb3VyUmVzdWx0c0J5VGVz
dCk7Ci0KLSAgICB2YXIgdGVzdFNlbGVjdG9yID0gdmlldy5xdWVyeVNlbGVjdG9yKCcudGVzdC1z
ZWxlY3RvcicpOwotICAgIHZhciB0b3BQYW5lbCA9IHRlc3RTZWxlY3Rvci5xdWVyeVNlbGVjdG9y
KCcudG9wLXBhbmVsJyk7Ci0KLSAgICBvayh0ZXN0U2VsZWN0b3IucXVlcnlTZWxlY3RvcignLnJl
c2l6ZS1oYW5kbGUnKSk7Ci0gICAgZXF1YWxzKHRvcFBhbmVsLnN0eWxlLm1pbkhlaWdodCwgJzEw
MHB4Jyk7Ci19KTsKLQotdGVzdCgnVmlldyB3aXRoIHJlZnRlc3RzJywgMiwgZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIGRlbGVnYXRlID0gewotICAgICAgICBmZXRjaFJlc3VsdHNVUkxzOiBmdW5jdGlv
bihmYWlsdXJlSW5mbywgY2FsbGJhY2spIHsgcmV0dXJuOyB9Ci0gICAgfTsKLQotICAgIHZhciB2
aWV3ID0gbmV3IHVpLnJlc3VsdHMuVmlldyhkZWxlZ2F0ZSk7Ci0gICAgdmlldy5zZXRSZXN1bHRz
QnlUZXN0KGtFeGFtcGxlUmVmdGVzdFJlc3VsdHMpOwotICAgIHZpZXcuZmlyc3RSZXN1bHQoKTsK
LQotICAgIGVxdWFscygkKCcubm9uLWFjdGlvbi1idXR0b24nLCB2aWV3KS5sZW5ndGgsIDEpOwot
ICAgIGVxdWFscygkKCcuYWN0aW9uJywgdmlldykubGVuZ3RoLCAwKTsKLX0pOwotCi10ZXN0KCdW
aWV3IG9mIHRpbWVvdXRzJywgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRlbGVnYXRlID0gewot
ICAgICAgICBmZXRjaFJlc3VsdHNVUkxzOiBmdW5jdGlvbihmYWlsdXJlSW5mbywgY2FsbGJhY2sp
IHsgY2FsbGJhY2soW10pOyB9Ci0gICAgfTsKLQotICAgIHZhciB2aWV3ID0gbmV3IHVpLnJlc3Vs
dHMuVmlldyhkZWxlZ2F0ZSk7Ci0gICAgdmlldy5zZXRSZXN1bHRzQnlUZXN0KGtFeGFtcGxlUmVz
dWx0c1dpdGhUaW1lb3V0QnlUZXN0KTsKLSAgICB2aWV3LmZpcnN0UmVzdWx0KCk7Ci0KLSAgICBl
cXVhbHMoJCgnLnJlc3VsdHMtZ3JpZCcsIHZpZXcpLmh0bWwoKSwgJ05vIHJlc3VsdHMgdG8gZGlz
cGxheS4nKTsKLX0pOwotCi19KSgpOwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9v
bHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9zY3JpcHRzL3VpLmpzCShub25leGlzdGVudCkKQEAgLTEsMjk2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotdmFyIHVpID0gdWkgfHwge307Ci0KLShmdW5jdGlvbiAoKSB7Ci0KLXVpLmRpc3Bs
YXlVUkxGb3JCdWlsZGVyID0gZnVuY3Rpb24oYnVpbGRlck5hbWUpCi17Ci0gICAgcmV0dXJuIGNv
bmZpZy5rUGxhdGZvcm1zW2NvbmZpZy5jdXJyZW50UGxhdGZvcm1dLndhdGVyZmFsbFVSTCArICc/
JyArICQucGFyYW0oewotICAgICAgICAnYnVpbGRlcic6IGJ1aWxkZXJOYW1lCi0gICAgfSk7Ci19
Ci0KLXVpLmRpc3BsYXlOYW1lRm9yQnVpbGRlciA9IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKQotewot
ICAgIHJldHVybiBidWlsZGVyTmFtZS5yZXBsYWNlKC9XZWJraXQgLywgJycpOwotfQotCi11aS51
cmxGb3JUZXN0ID0gZnVuY3Rpb24odGVzdE5hbWUpCi17Ci0gICAgcmV0dXJuICdodHRwczovL3Ry
YWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL0xheW91dFRlc3RzLycgKyB0ZXN0TmFtZTsKLX0K
LQotdWkudXJsRm9yRmxha2luZXNzRGFzaGJvYXJkID0gZnVuY3Rpb24ob3B0X3Rlc3ROYW1lTGlz
dCkKLXsKLSAgICB2YXIgdGVzdHNQYXJhbWV0ZXIgPSBvcHRfdGVzdE5hbWVMaXN0ID8gb3B0X3Rl
c3ROYW1lTGlzdC5qb2luKCcsJykgOiAnJzsKLSAgICByZXR1cm4gJ2h0dHBzOi8vcmVzdWx0cy53
ZWJraXQub3JnLz9zdWl0ZT1sYXlvdXQtdGVzdHMmdGVzdD0nICsgZW5jb2RlVVJJQ29tcG9uZW50
KHRlc3RzUGFyYW1ldGVyKTsKLX0KLQotdWkudXJsRm9yRW1iZWRkZWRGbGFraW5lc3NEYXNoYm9h
cmQgPSBmdW5jdGlvbihvcHRfdGVzdE5hbWVMaXN0KQotewotICAgIGlmIChjb25maWcua1BsYXRm
b3Jtc1tjb25maWcuY3VycmVudFBsYXRmb3JtXS51c2VGbGFraW5lc3NEYXNoYm9hcmQpCi0gICAg
ICAgIHJldHVybiB1aS51cmxGb3JGbGFraW5lc3NEYXNoYm9hcmQob3B0X3Rlc3ROYW1lTGlzdCkg
KyAnJnNob3dDaHJvbWU9ZmFsc2UnOwotICAgIAotICAgIHJldHVybiAnYWJvdXQ6YmxhbmsnOwot
fQotCi11aS5yZXZlcnRSZWFzb25Gb3JUZXN0TmFtZUxpc3QgPSBmdW5jdGlvbih0ZXN0TmFtZUxp
c3QpCi17Ci0gICAgcmV0dXJuICdCcm9rZTpcbicgKyB0ZXN0TmFtZUxpc3QubWFwKGZ1bmN0aW9u
KHRlc3ROYW1lKSB7Ci0gICAgICAgIHJldHVybiAnKiAnICsgdGVzdE5hbWU7Ci0gICAgfSkuam9p
bignXG4nKTsKLX0KLQotdWkub25lYmFyID0gYmFzZS5leHRlbmRzKCdkaXYnLCB7Ci0gICAgaW5p
dDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5pZCA9ICdvbmViYXInOwotICAgICAg
ICB0aGlzLmlubmVySFRNTCA9Ci0gICAgICAgICAgICAnPGRpdj48c2VsZWN0IGlkPSJwbGF0Zm9y
bS1waWNrZXIiPjwvc2VsZWN0PjwvZGl2PicgKwotICAgICAgICAgICAgJzx1bD4nICsKLSAgICAg
ICAgICAgICAgICAnPGxpPjxhIGhyZWY9IiN1bmV4cGVjdGVkIj5VbmV4cGVjdGVkIEZhaWx1cmVz
PC9hPjwvbGk+JyArCi0gICAgICAgICAgICAgICAgJzxsaT48YSBocmVmPSIjZXhwZWN0ZWQiPkV4
cGVjdGVkIEZhaWx1cmVzPC9hPjwvbGk+JyArCi0gICAgICAgICAgICAgICAgJzxsaT48YSBocmVm
PSIjcmVzdWx0cyI+UmVzdWx0czwvYT48L2xpPicgKwotICAgICAgICAgICAgICAgICc8bGk+PGEg
aHJlZj0iI3BlcmYiPnBlcmY8L2E+PC9saT4nICsKLSAgICAgICAgICAgICc8L3VsPicgKwotICAg
ICAgICAgICAgJzxkaXYgaWQ9InVuZXhwZWN0ZWQiPjwvZGl2PicgKwotICAgICAgICAgICAgJzxk
aXYgaWQ9ImV4cGVjdGVkIj48L2Rpdj4nICsKLSAgICAgICAgICAgICc8ZGl2IGlkPSJyZXN1bHRz
Ij48L2Rpdj4nICsKLSAgICAgICAgICAgICc8ZGl2IGlkPSJwZXJmIj48L2Rpdj4nOwotICAgICAg
ICB0aGlzLl90YWJOYW1lcyA9IFsKLSAgICAgICAgICAgICd1bmV4cGVjdGVkJywKLSAgICAgICAg
ICAgICdleHBlY3RlZCcsCi0gICAgICAgICAgICAncmVzdWx0cycsCi0gICAgICAgICAgICAncGVy
ZicsCi0gICAgICAgIF0KLQotICAgICAgICB0aGlzLl90YWJJbmRleFRvU2F2ZWRTY3JvbGxPZmZz
ZXQgPSB7fTsKLSAgICAgICAgdGhpcy5fdGFicyA9ICQodGhpcykudGFicyh7Ci0gICAgICAgICAg
ICBkaXNhYmxlZDogWzJdLAotICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oZXZlbnQsIHVpKSB7
IHRoaXMuX3Jlc3RvcmVTY3JvbGxPZmZzZXQodWkuaW5kZXgpOyB9LAotICAgICAgICB9KTsKLSAg
ICB9LAotICAgIF9idWlsZFBsYXRmb3Jtc1BvcHVwOiBmdW5jdGlvbigpIHsKLSAgICAgICAgLy8g
RklYTUU6IGZpbmQgYSBiZXR0ZXIgcGxhY2UgdG8gZG8gdGhpcy4KLSAgICAgICAgdmFyIHVybFBs
YXRmb3JtID0gYmFzZS5nZXRVUkxQYXJhbWV0ZXIoJ3BsYXRmb3JtJyk7Ci0gICAgICAgIGlmICh1
cmxQbGF0Zm9ybSkKLSAgICAgICAgICAgIGNvbmZpZy5zZXRQbGF0Zm9ybSh1cmxQbGF0Zm9ybSk7
Ci0gICAgICAgIAotICAgICAgICB2YXIgcGxhdGZvcm1TZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncGxhdGZvcm0tcGlja2VyJyk7Ci0gICAgICAgIHZhciBjdXJyZW50UGxhdGZvcm1J
bmRleCA9IDA7Ci0gICAgICAgIE9iamVjdC5rZXlzKGNvbmZpZy5rUGxhdGZvcm1zKS5zb3J0KCku
Zm9yRWFjaChmdW5jdGlvbihwbGF0Zm9ybU5hbWUpIHsKLSAgICAgICAgICAgIHZhciBvcHRpb24g
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTsKLSAgICAgICAgICAgIG9wdGlvbi5p
bm5lclRleHQgPSBjb25maWcua1BsYXRmb3Jtc1twbGF0Zm9ybU5hbWVdLmxhYmVsOwotICAgICAg
ICAgICAgb3B0aW9uLl9wbGF0Zm9ybSA9IHBsYXRmb3JtTmFtZTsKLSAgICAgICAgICAgIGlmIChw
bGF0Zm9ybU5hbWUgPT0gY29uZmlnLmN1cnJlbnRQbGF0Zm9ybSkKLSAgICAgICAgICAgICAgICBj
dXJyZW50UGxhdGZvcm1JbmRleCA9IHBsYXRmb3JtU2VsZWN0LmNoaWxkTm9kZXMubGVuZ3RoOwot
ICAgICAgICAgICAgcGxhdGZvcm1TZWxlY3QuYXBwZW5kQ2hpbGQob3B0aW9uKTsKLSAgICAgICAg
fSk7Ci0gICAgICAgIAotICAgICAgICBwbGF0Zm9ybVNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCdj
aGFuZ2UnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gg
PSAnP3BsYXRmb3JtPScgKyBwbGF0Zm9ybVNlbGVjdC5vcHRpb25zW3BsYXRmb3JtU2VsZWN0LnNl
bGVjdGVkSW5kZXhdLl9wbGF0Zm9ybTsKLSAgICAgICAgfSk7Ci0gICAgICAgIAotICAgICAgICBw
bGF0Zm9ybVNlbGVjdC5zZWxlY3RlZEluZGV4ID0gY3VycmVudFBsYXRmb3JtSW5kZXg7Ci0gICAg
fSwKLSAgICBfc2F2ZVNjcm9sbE9mZnNldDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB0YWJJ
bmRleCA9IHRoaXMuX3RhYnMudGFicygnb3B0aW9uJywgJ3NlbGVjdGVkJyk7Ci0gICAgICAgIHRo
aXMuX3RhYkluZGV4VG9TYXZlZFNjcm9sbE9mZnNldFt0YWJJbmRleF0gPSBkb2N1bWVudC5ib2R5
LnNjcm9sbFRvcDsKLSAgICB9LAotICAgIF9yZXN0b3JlU2Nyb2xsT2Zmc2V0OiBmdW5jdGlvbih0
YWJJbmRleCkKLSAgICB7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gdGhpcy5f
dGFiSW5kZXhUb1NhdmVkU2Nyb2xsT2Zmc2V0W3RhYkluZGV4XSB8fCAwOwotICAgIH0sCi0gICAg
X3NldHVwSGlzdG9yeUhhbmRsZXJzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBmdW5jdGlv
biBjdXJyZW50SGFzaCgpIHsKLSAgICAgICAgICAgIHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9u
Lmhhc2g7Ci0gICAgICAgICAgICByZXR1cm4gKCFoYXNoIHx8IGhhc2ggPT0gJyMnKSA/ICcjdW5l
eHBlY3RlZCcgOiBoYXNoOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwot
ICAgICAgICAkKCcudWktdGFicy1uYXYgYScpLmJpbmQoJ21vdXNldXAnLCBmdW5jdGlvbihldmVu
dCkgewotICAgICAgICAgICAgdmFyIGhyZWYgPSBldmVudC50YXJnZXQuZ2V0QXR0cmlidXRlKCdo
cmVmJyk7Ci0gICAgICAgICAgICB2YXIgaGFzaCA9IGN1cnJlbnRIYXNoKCk7Ci0gICAgICAgICAg
ICBpZiAoaHJlZiAhPSBoYXNoKSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2F2ZVNjcm9sbE9m
ZnNldCgpOwotICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9IGhyZWYKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSk7Ci0KLSAgICAgICAgd2luZG93Lm9uaGFzaGNoYW5nZSA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICB2YXIgdGFiTmFtZSA9IGN1cnJlbnRIYXNoKCkuc3Vi
c3RyaW5nKDEpOwotICAgICAgICAgICAgc2VsZi5fc2VsZWN0SW50ZXJuYWwodGFiTmFtZSk7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgLy8gV2hlbiBuYXZpZ2F0aW5nIGZyb20gdGhlIGJyb3dzZXIg
Y2hyb21lLCB3ZSdsbAotICAgICAgICAvLyBzY3JvbGwgdG8gdGhlICN0YWJuYW1lIGNvbnRlbnRz
LiBwb3BzdGF0ZSBmaXJlcyBiZWZvcmUKLSAgICAgICAgLy8gd2Ugc2Nyb2xsLCBzbyB3ZSBjYW4g
c2F2ZSB0aGUgc2Nyb2xsIG9mZnNldCBmaXJzdC4KLSAgICAgICAgd2luZG93Lm9ucG9wc3RhdGUg
PSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHNlbGYuX3NhdmVTY3JvbGxPZmZzZXQoKTsKLSAg
ICAgICAgfTsKLSAgICB9LAotICAgIGF0dGFjaDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
ZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUodGhpcywgZG9jdW1lbnQuYm9keS5maXJzdENoaWxk
KTsKLSAgICAgICAgdGhpcy5fc2V0dXBIaXN0b3J5SGFuZGxlcnMoKTsKLSAgICAgICAgdGhpcy5f
YnVpbGRQbGF0Zm9ybXNQb3B1cCgpOwotICAgIH0sCi0gICAgdGFiTmFtZWQ6IGZ1bmN0aW9uKHRh
Yk5hbWUpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fdGFiTmFtZXMuaW5kZXhPZih0YWJOYW1l
KSA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB0YWIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YWJOYW1lKTsKLSAgICAgICAgLy8gV2UgcGVyZm9ybSB0aGlzIHNh
bml0eSBjaGVjayBiZWxvdyB0byBtYWtlIHN1cmUgZ2V0RWxlbWVudEJ5SWQKLSAgICAgICAgLy8g
aGFzbid0IGdpdmVuIHVzIGEgbm9kZSBpbiBzb21lIG90aGVyIHVucmVsYXRlZCBwYXJ0IG9mIHRo
ZSBkb2N1bWVudC4KLSAgICAgICAgLy8gdGhhdCBzaG91bGRuJ3QgaGFwcGVuIG5vcm1hbGx5LCBi
dXQgaXQgY291bGQgaGFwcGVuIGlmIGFuIGF0dGFja2VyCi0gICAgICAgIC8vIGhhcyBzb21laG93
IHNuZWFraWx5IGFkZGVkIGEgbm9kZSB0byBvdXIgZG9jdW1lbnQuCi0gICAgICAgIGlmICh0YWIu
cGFyZW50Tm9kZSAhPSB0aGlzKQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIHJl
dHVybiB0YWI7Ci0gICAgfSwKLSAgICB1bmV4cGVjdGVkOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy50YWJOYW1lZCgndW5leHBlY3RlZCcpOwotICAgIH0sCi0gICAgZXhw
ZWN0ZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRhYk5hbWVkKCdl
eHBlY3RlZCcpOwotICAgIH0sCi0gICAgcmVzdWx0czogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMudGFiTmFtZWQoJ3Jlc3VsdHMnKTsKLSAgICB9LAotICAgIHBlcmY6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRhYk5hbWVkKCdwZXJmJyk7Ci0g
ICAgfSwKLSAgICBfc2VsZWN0SW50ZXJuYWw6IGZ1bmN0aW9uKHRhYk5hbWUpIHsKLSAgICAgICAg
dmFyIHRhYkluZGV4ID0gdGhpcy5fdGFiTmFtZXMuaW5kZXhPZih0YWJOYW1lKTsKLSAgICAgICAg
dGhpcy5fdGFicy50YWJzKCdlbmFibGUnLCB0YWJJbmRleCk7Ci0gICAgICAgIHRoaXMuX3RhYnMu
dGFicygnc2VsZWN0JywgdGFiSW5kZXgpOwotICAgIH0sCi0gICAgc2VsZWN0OiBmdW5jdGlvbih0
YWJOYW1lKQotICAgIHsKLSAgICAgICAgdGhpcy5fc2F2ZVNjcm9sbE9mZnNldCgpOwotICAgICAg
ICB0aGlzLl9zZWxlY3RJbnRlcm5hbCh0YWJOYW1lKTsKLSAgICAgICAgd2luZG93LmxvY2F0aW9u
ID0gJyMnICsgdGFiTmFtZTsKLSAgICB9Ci19KTsKLQotLy8gRklYTUU6IExvYWRpbmcgYSBtb2R1
bGUgc2hvdWxkbid0IHNldCBvZmYgYSB0aW1lci4gIFRoZSBjb250cm9sbGVyIHNob3VsZCBraWNr
IHRoaXMgb2ZmLgotc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7Ci0gICAgQXJyYXkucHJvdG90eXBl
LmZvckVhY2guY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJ0aW1lLnJlbGF0aXZlIiks
IGZ1bmN0aW9uKHRpbWUpIHsKLSAgICAgICAgdGltZS51cGRhdGUgJiYgdGltZS51cGRhdGUoKTsK
LSAgICB9KTsKLX0sIGNvbmZpZy5rUmVsYXRpdmVUaW1lVXBkYXRlRnJlcXVlbmN5KTsKLQotdWku
UmVsYXRpdmVUaW1lID0gYmFzZS5leHRlbmRzKCd0aW1lJywgewotICAgIGluaXQ6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ3JlbGF0aXZlJzsKLSAgICB9LAot
ICAgIGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kYXRlOwot
ICAgIH0sCi0gICAgdXBkYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLnRleHRD
b250ZW50ID0gdGhpcy5fZGF0ZSA/IGJhc2UucmVsYXRpdml6ZVRpbWUodGhpcy5fZGF0ZSkgOiAn
JzsKLSAgICB9LAotICAgIHNldERhdGU6IGZ1bmN0aW9uKGRhdGUpCi0gICAgewotICAgICAgICB0
aGlzLl9kYXRlID0gZGF0ZTsKLSAgICAgICAgdGhpcy51cGRhdGUoKTsKLSAgICB9Ci19KTsKLQot
dWkuU3RhdHVzQXJlYSA9IGJhc2UuZXh0ZW5kcygnZGl2JywgIHsKLSAgICBpbml0OiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICAvLyBUaGlzIGlzIGEgU2luZ2xldG9uLgotICAgICAgICBpZiAo
dWkuU3RhdHVzQXJlYS5faW5zdGFuY2UpCi0gICAgICAgICAgICByZXR1cm4gdWkuU3RhdHVzQXJl
YS5faW5zdGFuY2U7Ci0gICAgICAgIHVpLlN0YXR1c0FyZWEuX2luc3RhbmNlID0gdGhpczsKLQot
ICAgICAgICB0aGlzLmNsYXNzTmFtZSA9ICdzdGF0dXMnOwotICAgICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKHRoaXMpOwotICAgICAgICB0aGlzLl9jdXJyZW50SWQgPSAwOwotICAgICAg
ICB0aGlzLl91bmZpbmlzaGVkSWRzID0ge307Ci0KLSAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChu
ZXcgdWkuYWN0aW9ucy5MaXN0KFtuZXcgdWkuYWN0aW9ucy5DbG9zZSgpXSkpOwotICAgICAgICAk
KHRoaXMpLmJpbmQoJ2Nsb3NlJywgdGhpcy5jbG9zZS5iaW5kKHRoaXMpKTsKLQotICAgICAgICB2
YXIgcHJvY2Vzc2luZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Byb2dyZXNzJyk7Ci0gICAg
ICAgIHByb2Nlc3NpbmcuY2xhc3NOYW1lID0gJ3Byb2Nlc3MtdGV4dCc7Ci0gICAgICAgIHByb2Nl
c3NpbmcudGV4dENvbnRlbnQgPSAnUHJvY2Vzc2luZy4uLic7Ci0gICAgICAgIHRoaXMuYXBwZW5k
Q2hpbGQocHJvY2Vzc2luZyk7Ci0gICAgfSwKLSAgICBjbG9zZTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgdGhpcy5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7Ci0gICAgICAgIEFycmF5
LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodGhpcy5xdWVyeVNlbGVjdG9yQWxsKCcuc3RhdHVzLWNv
bnRlbnQnKSwgZnVuY3Rpb24obm9kZSkgewotICAgICAgICAgICAgbm9kZS5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKG5vZGUpOwotICAgICAgICB9KTsKLSAgICB9LAotICAgIGFkZE1lc3NhZ2U6IGZ1
bmN0aW9uKGlkLCBtZXNzYWdlKQotICAgIHsKLSAgICAgICAgdGhpcy5zdHlsZS52aXNpYmlsaXR5
ID0gJ3Zpc2libGUnOwotICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdwcm9jZXNzaW5nJyk7Ci0K
LSAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAg
ICAgICAgJChlbGVtZW50KS5hZGRDbGFzcygnbWVzc2FnZScpLnRleHQobWVzc2FnZSk7Ci0KLSAg
ICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoJyMnICsgaWQpOwotICAgICAg
ICBpZiAoIWNvbnRlbnQpIHsKLSAgICAgICAgICAgIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKLSAgICAgICAgICAgIGNvbnRlbnQuaWQgPSBpZDsKLSAgICAgICAgICAg
IGNvbnRlbnQuY2xhc3NOYW1lID0gJ3N0YXR1cy1jb250ZW50JzsKLSAgICAgICAgICAgIHRoaXMu
YXBwZW5kQ2hpbGQoY29udGVudCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb250ZW50LmFwcGVu
ZENoaWxkKGVsZW1lbnQpOwotICAgICAgICBpZiAoZWxlbWVudC5vZmZzZXRUb3AgPCB0aGlzLnNj
cm9sbFRvcCB8fCBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0ID4gdGhp
cy5zY3JvbGxUb3AgKyB0aGlzLm9mZnNldEhlaWdodCkKLSAgICAgICAgICAgIHRoaXMuc2Nyb2xs
VG9wID0gZWxlbWVudC5vZmZzZXRUb3A7Ci0gICAgfSwKLSAgICAvLyBGSVhNRTogSXQncyB1bmNs
ZWFyIHdoZXRoZXIgdGhpcyBjb2RlIGNvdWxkIGxpdmUgaGVyZSBvciBpbiBhIGNvbnRyb2xsZXIu
Ci0gICAgYWRkRmluYWxNZXNzYWdlOiBmdW5jdGlvbihpZCwgbWVzc2FnZSkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuYWRkTWVzc2FnZShpZCwgbWVzc2FnZSk7Ci0KLSAgICAgICAgZGVsZXRlIHRoaXMu
X3VuZmluaXNoZWRJZHNbaWRdOwotICAgICAgICBpZiAoIU9iamVjdC5rZXlzKHRoaXMuX3VuZmlu
aXNoZWRJZHMpLmxlbmd0aCkKLSAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ3Byb2Nl
c3NpbmcnKTsKLSAgICB9LAotICAgIG5ld0lkOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGlk
ID0gJ3N0YXR1cy1jb250ZW50LScgKyArK3RoaXMuX2N1cnJlbnRJZDsKLSAgICAgICAgdGhpcy5f
dW5maW5pc2hlZElkc1tpZF0gPSAxOwotICAgICAgICByZXR1cm4gaWQ7Ci0gICAgfQotfSk7Ci0K
LX0pKCk7CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWlfdW5pdHRlc3RzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvc2NyaXB0cy91aV91bml0dGVzdHMuanMJKHJldmlzaW9uIDI2OTExMSkKKysr
IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy91aV91bml0dGVzdHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMDMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24gKCkgewotCi1tb2R1bGUoInVpIik7Ci0K
LXZhciBrRXhhbXBsZVJlc3VsdHNCeVRlc3QgPSB7Ci0gICAgInNjcm9sbGJhcnMvY3VzdG9tLXNj
cm9sbGJhci13aXRoLWluY29tcGxldGUtc3R5bGUuaHRtbCI6IHsKLSAgICAgICAgIk1vY2sgQnVp
bGRlciI6IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJJTUFHRSIsCi0gICAgICAgICAgICAi
YWN0dWFsIjogIkNSQVNIIgotICAgICAgICB9LAotICAgICAgICAiTW9jayBMaW51eCI6IHsKLSAg
ICAgICAgICAgICJleHBlY3RlZCI6ICJURVhUIiwKLSAgICAgICAgICAgICJhY3R1YWwiOiAiQ1JB
U0giCi0gICAgICAgIH0KLSAgICB9LAotICAgICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRt
bCI6IHsKLSAgICAgICAgIk1vY2sgQnVpbGRlciI6IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6
ICJQQVNTIiwKLSAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKLSAgICAgICAgfQotICAgIH0K
LX0KLQotdGVzdCgidWkub25lYmFyIiwgMywgZnVuY3Rpb24oKSB7Ci0gICAgaWYgKHdpbmRvdy5s
b2NhdGlvbi5oYXNoKSB7Ci0gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gJyc7Ci0gICAg
fQotCi0gICAgb25lYmFyID0gbmV3IHVpLm9uZWJhcigpOwotICAgIG9uZWJhci5hdHRhY2goKTsK
LSAgICBlcXVhbChvbmViYXIuaW5uZXJIVE1MLAotICAgICAgICAnPGRpdj48c2VsZWN0IGlkPSJw
bGF0Zm9ybS1waWNrZXIiPjxvcHRpb24+QXBwbGU8L29wdGlvbj48b3B0aW9uPkNocm9taXVtPC9v
cHRpb24+PG9wdGlvbj5HVEs8L29wdGlvbj48b3B0aW9uPlF0PC9vcHRpb24+PC9zZWxlY3Q+PC9k
aXY+JyArCi0gICAgICAgICc8dWwgY2xhc3M9InVpLXRhYnMtbmF2IHVpLWhlbHBlci1yZXNldCB1
aS1oZWxwZXItY2xlYXJmaXggdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIj4nICsKLSAg
ICAgICAgICAgICc8bGkgY2xhc3M9InVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLXRvcCB1aS10
YWJzLXNlbGVjdGVkIHVpLXN0YXRlLWFjdGl2ZSI+PGEgaHJlZj0iI3VuZXhwZWN0ZWQiPlVuZXhw
ZWN0ZWQgRmFpbHVyZXM8L2E+PC9saT4nICsKLSAgICAgICAgICAgICc8bGkgY2xhc3M9InVpLXN0
YXRlLWRlZmF1bHQgdWktY29ybmVyLXRvcCI+PGEgaHJlZj0iI2V4cGVjdGVkIj5FeHBlY3RlZCBG
YWlsdXJlczwvYT48L2xpPicgKwotICAgICAgICAgICAgJzxsaSBjbGFzcz0idWktc3RhdGUtZGVm
YXVsdCB1aS1jb3JuZXItdG9wIHVpLXN0YXRlLWRpc2FibGVkIj48YSBocmVmPSIjcmVzdWx0cyI+
UmVzdWx0czwvYT48L2xpPicgKwotICAgICAgICAgICAgJzxsaSBjbGFzcz0idWktc3RhdGUtZGVm
YXVsdCB1aS1jb3JuZXItdG9wIj48YSBocmVmPSIjcGVyZiI+cGVyZjwvYT48L2xpPicgKwotICAg
ICAgICAnPC91bD4nICsKLSAgICAgICAgJzxkaXYgaWQ9InVuZXhwZWN0ZWQiIGNsYXNzPSJ1aS10
YWJzLXBhbmVsIHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20iPjwvZGl2PicgKwot
ICAgICAgICAnPGRpdiBpZD0iZXhwZWN0ZWQiIGNsYXNzPSJ1aS10YWJzLXBhbmVsIHVpLXdpZGdl
dC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20gdWktdGFicy1oaWRlIj48L2Rpdj4nICsKLSAgICAg
ICAgJzxkaXYgaWQ9InJlc3VsdHMiIGNsYXNzPSJ1aS10YWJzLXBhbmVsIHVpLXdpZGdldC1jb250
ZW50IHVpLWNvcm5lci1ib3R0b20gdWktdGFicy1oaWRlIj48L2Rpdj4nICsKLSAgICAgICAgJzxk
aXYgaWQ9InBlcmYiIGNsYXNzPSJ1aS10YWJzLXBhbmVsIHVpLXdpZGdldC1jb250ZW50IHVpLWNv
cm5lci1ib3R0b20gdWktdGFicy1oaWRlIj48L2Rpdj4nKTsKLQotICAgIG9uZWJhci5zZWxlY3Qo
J2V4cGVjdGVkJyk7Ci0gICAgZXF1YWwod2luZG93LmxvY2F0aW9uLmhhc2gsICcjZXhwZWN0ZWQn
KTsKLSAgICBvbmViYXIuc2VsZWN0KCd1bmV4cGVjdGVkJyk7Ci0gICAgZXF1YWwod2luZG93Lmxv
Y2F0aW9uLmhhc2gsICcjdW5leHBlY3RlZCcpOwotCi0gICAgJChvbmViYXIpLmRldGFjaCgpOwot
fSk7Ci0KLXRlc3QoInJlc3VsdHMuUmVzdWx0c0dyaWQiLCAxLCBmdW5jdGlvbigpIHsKLSAgICB2
YXIgZ3JpZCA9IG5ldyB1aS5yZXN1bHRzLlJlc3VsdHNHcmlkKCkKLSAgICBncmlkLmFkZFJlc3Vs
dHMoWwotICAgICAgICAnaHR0cDovL2V4YW1wbGUuY29tL2xheW91dC10ZXN0LXJlc3VsdHMvZm9v
LWJhci1kaWZmLnR4dCcsCi0gICAgICAgICdodHRwOi8vZXhhbXBsZS5jb20vbGF5b3V0LXRlc3Qt
cmVzdWx0cy9mb28tYmFyLWV4cGVjdGVkLnBuZycsCi0gICAgICAgICdodHRwOi8vZXhhbXBsZS5j
b20vbGF5b3V0LXRlc3QtcmVzdWx0cy9mb28tYmFyLWFjdHVhbC5wbmcnLAotICAgICAgICAnaHR0
cDovL2V4YW1wbGUuY29tL2xheW91dC10ZXN0LXJlc3VsdHMvZm9vLWJhci1kaWZmLnBuZycsCi0g
ICAgXSk7Ci0gICAgZXF1YWwoZ3JpZC5pbm5lckhUTUwsCi0gICAgICAgICc8dGFibGUgY2xhc3M9
ImNvbXBhcmlzb24iPicgKwotICAgICAgICAgICAgJzx0aGVhZD4nICsKLSAgICAgICAgICAgICAg
ICAnPHRyPicgKwotICAgICAgICAgICAgICAgICAgICAnPHRoPkV4cGVjdGVkPC90aD4nICsKLSAg
ICAgICAgICAgICAgICAgICAgJzx0aD5BY3R1YWw8L3RoPicgKwotICAgICAgICAgICAgICAgICAg
ICAnPHRoPkRpZmY8L3RoPicgKwotICAgICAgICAgICAgICAgICc8L3RyPicgKwotICAgICAgICAg
ICAgJzwvdGhlYWQ+JyArCi0gICAgICAgICAgICAnPHRib2R5PicgKwotICAgICAgICAgICAgICAg
ICc8dHI+JyArCi0gICAgICAgICAgICAgICAgICAgICc8dGQgY2xhc3M9ImV4cGVjdGVkIHJlc3Vs
dC1jb250YWluZXIiPjxpbWcgY2xhc3M9ImltYWdlLXJlc3VsdCIgc3JjPSJodHRwOi8vZXhhbXBs
ZS5jb20vbGF5b3V0LXRlc3QtcmVzdWx0cy9mb28tYmFyLWV4cGVjdGVkLnBuZyI+PC90ZD4nICsK
LSAgICAgICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz0iYWN0dWFsIHJlc3VsdC1jb250YWluZXIi
PjxpbWcgY2xhc3M9ImltYWdlLXJlc3VsdCIgc3JjPSJodHRwOi8vZXhhbXBsZS5jb20vbGF5b3V0
LXRlc3QtcmVzdWx0cy9mb28tYmFyLWFjdHVhbC5wbmciPjwvdGQ+JyArCi0gICAgICAgICAgICAg
ICAgICAgICc8dGQgY2xhc3M9ImRpZmYgcmVzdWx0LWNvbnRhaW5lciI+PGltZyBjbGFzcz0iaW1h
Z2UtcmVzdWx0IiBzcmM9Imh0dHA6Ly9leGFtcGxlLmNvbS9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zv
by1iYXItZGlmZi5wbmciPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgJzwvdHI+JyArCi0gICAg
ICAgICAgICAnPC90Ym9keT4nICsKLSAgICAgICAgJzwvdGFibGU+JyArCi0gICAgICAgICc8dGFi
bGUgY2xhc3M9ImNvbXBhcmlzb24iPicgKwotICAgICAgICAgICAgJzx0aGVhZD4nICsKLSAgICAg
ICAgICAgICAgICAnPHRyPicgKwotICAgICAgICAgICAgICAgICAgICAnPHRoPkV4cGVjdGVkPC90
aD4nICsKLSAgICAgICAgICAgICAgICAgICAgJzx0aD5BY3R1YWw8L3RoPicgKwotICAgICAgICAg
ICAgICAgICAgICAnPHRoPkRpZmY8L3RoPicgKwotICAgICAgICAgICAgICAgICc8L3RyPicgKwot
ICAgICAgICAgICAgJzwvdGhlYWQ+JyArCi0gICAgICAgICAgICAnPHRib2R5PicgKwotICAgICAg
ICAgICAgICAgICc8dHI+JyArCi0gICAgICAgICAgICAgICAgICAgICc8dGQgY2xhc3M9ImV4cGVj
dGVkIHJlc3VsdC1jb250YWluZXIiPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgICAgICc8dGQg
Y2xhc3M9ImFjdHVhbCByZXN1bHQtY29udGFpbmVyIj48L3RkPicgKwotICAgICAgICAgICAgICAg
ICAgICAnPHRkIGNsYXNzPSJkaWZmIHJlc3VsdC1jb250YWluZXIiPjxpZnJhbWUgY2xhc3M9InRl
eHQtcmVzdWx0IiBzcmM9Imh0dHA6Ly9leGFtcGxlLmNvbS9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zv
by1iYXItZGlmZi50eHQiPjwvaWZyYW1lPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgJzwvdHI+
JyArCi0gICAgICAgICAgICAnPC90Ym9keT4nICsKLSAgICAgICAgJzwvdGFibGU+Jyk7Ci19KTsK
LQotdGVzdCgicmVzdWx0cy5SZXN1bHRzR3JpZCAoY3Jhc2hsb2cpIiwgMSwgZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIGdyaWQgPSBuZXcgdWkucmVzdWx0cy5SZXN1bHRzR3JpZCgpCi0gICAgZ3JpZC5h
ZGRSZXN1bHRzKFsnaHR0cDovL2V4YW1wbGUuY29tL2xheW91dC10ZXN0LXJlc3VsdHMvZm9vLWJh
ci1jcmFzaC1sb2cudHh0J10pOwotICAgIGVxdWFsKGdyaWQuaW5uZXJIVE1MLCAnPGlmcmFtZSBj
bGFzcz0idGV4dC1yZXN1bHQiIHNyYz0iaHR0cDovL2V4YW1wbGUuY29tL2xheW91dC10ZXN0LXJl
c3VsdHMvZm9vLWJhci1jcmFzaC1sb2cudHh0Ij48L2lmcmFtZT4nKTsKLX0pOwotCi10ZXN0KCJy
ZXN1bHRzLlJlc3VsdHNHcmlkIChlbXB0eSkiLCAxLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZ3Jp
ZCA9IG5ldyB1aS5yZXN1bHRzLlJlc3VsdHNHcmlkKCkKLSAgICBncmlkLmFkZFJlc3VsdHMoW10p
OwotICAgIGVxdWFsKGdyaWQuaW5uZXJIVE1MLCAnTm8gcmVzdWx0cyB0byBkaXNwbGF5LicpOwot
fSk7Ci0KLXRlc3QoInRpbWUiLCA2LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgdGltZSA9IG5ldyB1
aS5SZWxhdGl2ZVRpbWUoKTsKLSAgICBlcXVhbCh0aW1lLnRhZ05hbWUsICdUSU1FJyk7Ci0gICAg
ZXF1YWwodGltZS5jbGFzc05hbWUsICdyZWxhdGl2ZScpOwotICAgIGRlZXBFcXVhbChPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyh0aW1lLl9fcHJvdG9fXykuc29ydCgpLCBbCi0gICAgICAgICdk
YXRlJywKLSAgICAgICAgJ2luaXQnLAotICAgICAgICAnc2V0RGF0ZScsCi0gICAgICAgICd1cGRh
dGUnLAotICAgIF0pOwotICAgIGVxdWFsKHRpbWUub3V0ZXJIVE1MLCAnPHRpbWUgY2xhc3M9InJl
bGF0aXZlIj48L3RpbWU+Jyk7Ci0gICAgdmFyIHRlbk1pbnV0ZXNBZ28gPSBuZXcgRGF0ZSgpOwot
ICAgIHRlbk1pbnV0ZXNBZ28uc2V0TWludXRlcyh0ZW5NaW51dGVzQWdvLmdldE1pbnV0ZXMoKSAt
IDEwKTsKLSAgICB0aW1lLnNldERhdGUodGVuTWludXRlc0Fnbyk7Ci0gICAgZXF1YWwodGltZS5v
dXRlckhUTUwsICc8dGltZSBjbGFzcz0icmVsYXRpdmUiPjEwIG1pbnV0ZXMgYWdvPC90aW1lPicp
OwotICAgIGVxdWFsKHRpbWUuZGF0ZSgpLmdldFRpbWUoKSwgdGVuTWludXRlc0Fnby5nZXRUaW1l
KCkpOwotfSk7Ci0KLXRlc3QoIlN0YXR1c0FyZWEiLCAzLCBmdW5jdGlvbigpIHsKLSAgICB2YXIg
c3RhdHVzQXJlYSA9IG5ldyB1aS5TdGF0dXNBcmVhKCk7Ci0gICAgdmFyIGlkID0gc3RhdHVzQXJl
YS5uZXdJZCgpOwotICAgIHN0YXR1c0FyZWEuYWRkTWVzc2FnZShpZCwgJ0ZpcnN0IE1lc3NhZ2Un
KTsKLSAgICBzdGF0dXNBcmVhLmFkZE1lc3NhZ2UoaWQsICdTZWNvbmQgTWVzc2FnZScpOwotICAg
IGVxdWFsKHN0YXR1c0FyZWEub3V0ZXJIVE1MLAotICAgICAgICAnPGRpdiBjbGFzcz0ic3RhdHVz
IHByb2Nlc3NpbmciIHN0eWxlPSJ2aXNpYmlsaXR5OiB2aXNpYmxlOyAiPicgKwotICAgICAgICAg
ICAgJzx1bCBjbGFzcz0iYWN0aW9ucyI+PGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiI+Q2xvc2U8
L2J1dHRvbj48L2xpPjwvdWw+JyArCi0gICAgICAgICAgICAnPHByb2dyZXNzIGNsYXNzPSJwcm9j
ZXNzLXRleHQiPlByb2Nlc3NpbmcuLi48L3Byb2dyZXNzPicgKwotICAgICAgICAgICAgJzxkaXYg
aWQ9InN0YXR1cy1jb250ZW50LTEiIGNsYXNzPSJzdGF0dXMtY29udGVudCI+JyArCi0gICAgICAg
ICAgICAgICAgJzxkaXYgY2xhc3M9Im1lc3NhZ2UiPkZpcnN0IE1lc3NhZ2U8L2Rpdj4nICsKLSAg
ICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ibWVzc2FnZSI+U2Vjb25kIE1lc3NhZ2U8L2Rpdj4n
ICsKLSAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgJzwvZGl2PicpOwotCi0gICAgdmFy
IHNlY29uZFN0YXR1c0FyZWEgPSBuZXcgdWkuU3RhdHVzQXJlYSgpOwotICAgIHZhciBzZWNvbmRJ
ZCA9IHNlY29uZFN0YXR1c0FyZWEubmV3SWQoKTsKLSAgICBzZWNvbmRTdGF0dXNBcmVhLmFkZE1l
c3NhZ2Uoc2Vjb25kSWQsICdGaXJzdCBNZXNzYWdlIHNlY29uZCBpZCcpOwotCi0gICAgZXF1YWwo
c3RhdHVzQXJlYS5vdXRlckhUTUwsCi0gICAgICAgICc8ZGl2IGNsYXNzPSJzdGF0dXMgcHJvY2Vz
c2luZyIgc3R5bGU9InZpc2liaWxpdHk6IHZpc2libGU7ICI+JyArCi0gICAgICAgICAgICAnPHVs
IGNsYXNzPSJhY3Rpb25zIj48bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIj5DbG9zZTwvYnV0dG9u
PjwvbGk+PC91bD4nICsKLSAgICAgICAgICAgICc8cHJvZ3Jlc3MgY2xhc3M9InByb2Nlc3MtdGV4
dCI+UHJvY2Vzc2luZy4uLjwvcHJvZ3Jlc3M+JyArCi0gICAgICAgICAgICAnPGRpdiBpZD0ic3Rh
dHVzLWNvbnRlbnQtMSIgY2xhc3M9InN0YXR1cy1jb250ZW50Ij4nICsKLSAgICAgICAgICAgICAg
ICAnPGRpdiBjbGFzcz0ibWVzc2FnZSI+Rmlyc3QgTWVzc2FnZTwvZGl2PicgKwotICAgICAgICAg
ICAgICAgICc8ZGl2IGNsYXNzPSJtZXNzYWdlIj5TZWNvbmQgTWVzc2FnZTwvZGl2PicgKwotICAg
ICAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAgICAgJzxkaXYgaWQ9InN0YXR1cy1jb250ZW50
LTIiIGNsYXNzPSJzdGF0dXMtY29udGVudCI+JyArCi0gICAgICAgICAgICAgICAgJzxkaXYgY2xh
c3M9Im1lc3NhZ2UiPkZpcnN0IE1lc3NhZ2Ugc2Vjb25kIGlkPC9kaXY+JyArCi0gICAgICAgICAg
ICAnPC9kaXY+JyArCi0gICAgICAgICc8L2Rpdj4nKTsKLQotICAgIHN0YXR1c0FyZWEuYWRkRmlu
YWxNZXNzYWdlKGlkLCAnRmluYWwgTWVzc2FnZSAxJyk7Ci0gICAgc3RhdHVzQXJlYS5hZGRGaW5h
bE1lc3NhZ2Uoc2Vjb25kSWQsICdGaW5hbCBNZXNzYWdlIDInKTsKLQotICAgIGVxdWFsKHN0YXR1
c0FyZWEub3V0ZXJIVE1MLAotICAgICAgICAnPGRpdiBjbGFzcz0ic3RhdHVzIiBzdHlsZT0idmlz
aWJpbGl0eTogdmlzaWJsZTsgIj4nICsKLSAgICAgICAgICAgICc8dWwgY2xhc3M9ImFjdGlvbnMi
PjxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24iPkNsb3NlPC9idXR0b24+PC9saT48L3VsPicgKwot
ICAgICAgICAgICAgJzxwcm9ncmVzcyBjbGFzcz0icHJvY2Vzcy10ZXh0Ij5Qcm9jZXNzaW5nLi4u
PC9wcm9ncmVzcz4nICsKLSAgICAgICAgICAgICc8ZGl2IGlkPSJzdGF0dXMtY29udGVudC0xIiBj
bGFzcz0ic3RhdHVzLWNvbnRlbnQiPicgKwotICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJt
ZXNzYWdlIj5GaXJzdCBNZXNzYWdlPC9kaXY+JyArCi0gICAgICAgICAgICAgICAgJzxkaXYgY2xh
c3M9Im1lc3NhZ2UiPlNlY29uZCBNZXNzYWdlPC9kaXY+JyArCi0gICAgICAgICAgICAgICAgJzxk
aXYgY2xhc3M9Im1lc3NhZ2UiPkZpbmFsIE1lc3NhZ2UgMTwvZGl2PicgKwotICAgICAgICAgICAg
JzwvZGl2PicgKwotICAgICAgICAgICAgJzxkaXYgaWQ9InN0YXR1cy1jb250ZW50LTIiIGNsYXNz
PSJzdGF0dXMtY29udGVudCI+JyArCi0gICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9Im1lc3Nh
Z2UiPkZpcnN0IE1lc3NhZ2Ugc2Vjb25kIGlkPC9kaXY+JyArCi0gICAgICAgICAgICAgICAgJzxk
aXYgY2xhc3M9Im1lc3NhZ2UiPkZpbmFsIE1lc3NhZ2UgMjwvZGl2PicgKwotICAgICAgICAgICAg
JzwvZGl2PicgKwotICAgICAgICAnPC9kaXY+Jyk7Ci0KLSAgICBzdGF0dXNBcmVhLmNsb3NlKCk7
Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL1Rlc3RGYWlsdXJlcy5jc3MKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvVGVzdEZhaWx1cmVzLmNzcwkocmV2aXNpb24gMjY5
MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvVGVzdEZhaWx1cmVzLmNzcwkobm9uZXhpc3RlbnQpCkBA
IC0xLDExOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotYXNpZGUgewotICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKLSAgICB0b3A6IDNweDsKLSAgICByaWdodDogNXB4OwotICAgIGNvbG9yOiAjODg4Owot
ICAgIGZvbnQtc2l6ZTogMC45ZW07Ci19Ci0KLWNvZGUgewotICAgIGZvbnQtc2l6ZTogMC45ZW07
Ci19Ci0KLW9sIHsKLSAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7Ci19Ci0KLWR0IHsKLSAgICBm
bG9hdDogbGVmdDsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLSAgICBtYXJnaW4tcmlnaHQ6IDNw
eDsKLX0KLQotZHQ6OmFmdGVyIHsKLSAgICBjb250ZW50OiAnOic7Ci19Ci0KLSNmYWlsdXJlLWhp
c3RvcnksICNwb3NzaWJseS1mbGFreS10ZXN0cyB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRp
bmc6IDAgMCAwIDE1cHg7Ci19Ci0KLSNmYWlsdXJlLWhpc3RvcnkgPiBsaSB7Ci0gICAgbWFyZ2lu
LWJvdHRvbTogMTBweDsKLSAgICBwYWRkaW5nOiAxMHB4OwotfQotCi0jcG9zc2libHktZmxha3kt
dGVzdHMgPiBsaSB7Ci0gICAgcGFkZGluZzogMXB4IDBweDsKLX0KLQotI2ZhaWx1cmUtaGlzdG9y
eSA+IGxpLCAjcG9zc2libHktZmxha3ktdGVzdHMgPiBsaSB7Ci0gICAgYmFja2dyb3VuZC1jb2xv
cjogI2YwZjBmMDsKLSAgICBwYWRkaW5nLWxlZnQ6IDUwcHg7Ci19Ci0KLSNwb3NzaWJseS1mbGFr
eS10ZXN0cyA+IGxpID4gOmZpcnN0LWNoaWxkIHsKLSAgICBtYXJnaW4tbGVmdDogLTUwcHg7Ci19
Ci0KLS5mbGFraW5lc3MtZXhhbXBsZXMtbGlzdCB7Ci0gICAgcGFkZGluZzogMDsKLX0KLQotLnRl
c3QtbGlzdCB7Ci0gICAgbWFyZ2luOiAwIDAgMCAtNDBweDsKLSAgICBwYWRkaW5nOiAwOwotfQot
Ci0uaW5mbyB7Ci0gICAgZm9udC1zdHlsZTogaXRhbGljOwotfQotCi0uZXhpc3RpbmctYW5kLW5l
dy1idWdzIHsKLSAgICBtYXJnaW4tYm90dG9tOiAwOwotfQotCi0uZXhpc3RpbmctYnVncy1saXN0
LCAuc3VzcGVjdC1yZXZpc2lvbnMtbGlzdCwgLmZsYWtpbmVzcy1leGFtcGxlcy1saXN0IHsKLSAg
ICBmb250LXNpemU6IHNtYWxsZXI7Ci19Ci0KLS5uZXctYnVnLWZvcm0gewotICAgIGRpc3BsYXk6
IG5vbmU7Ci19Ci0KLS5kaXNjbG9zdXJlLXRyaWFuZ2xlIHsKLSAgICAtd2Via2l0LXRyYW5zaXRp
b246IC13ZWJraXQtdHJhbnNmb3JtIDAuMXM7Ci0gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9u
ZTsKLSAgICBjdXJzb3I6IGRlZmF1bHQ7Ci0gICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwotICAg
IHBhZGRpbmc6IDBweCAzcHg7Ci19Ci0KLS5leHBhbmRlZCA+IC5kaXNjbG9zdXJlLXRyaWFuZ2xl
IHsKLSAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWig5MGRlZyk7Ci19Ci0KLS5leHBhbmRh
YmxlIHsKLSAgICBoZWlnaHQ6IDBweDsKLSAgICBvdmVyZmxvdzogaGlkZGVuOwotfQotCi0uZXhw
YW5kZWQgPiAuZXhwYW5kYWJsZSB7Ci0gICAgaGVpZ2h0OiBhdXRvOwotfQpJbmRleDogVG9vbHMv
Q0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9zdHlsZXMvY29tbW9uLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxlcy9jb21tb24u
Y3NzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxlcy9jb21tb24uY3NzCShub25l
eGlzdGVudCkKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotaHRtbCB7Ci0gICAgb3Zl
cmZsb3cteTogc2Nyb2xsOwotfQotCi1ib2R5IHsKLSAgICBmb250LWZhbWlseTogJ0hlbHZldGlj
YSc7Ci0gICAgZm9udC1zaXplOiAxNHB4OwotICAgIG1hcmdpbjogMHB4OwotfQotCi1hIHsKLSAg
ICBjb2xvcjogIzMzMzsKLX0KLQotLnVpLXdpZGdldC1jb250ZW50IHsKLSAgICBmb250LWZhbWls
eTogJ0hlbHZldGljYSc7Ci19Ci0KLS51aS13aWRnZXQgYnV0dG9uLCBidXR0b24gewotICAgIGZv
bnQtZmFtaWx5OiAnSGVsdmV0aWNhJzsKLSAgICBib3JkZXItcmFkaXVzOiAycHg7Ci0gICAgYmFj
a2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCNmNWY1ZjUsI2YxZjFm
MSk7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpOwotICAgIGJvcmRl
ci1yYWRpdXM6IDJweDsKLSAgICBjb2xvcjogIzY2NjsKLSAgICBjdXJzb3I6IHBvaW50ZXI7Ci0g
ICAgZm9udC1zaXplOiAxMXB4OwotICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotICAgIGhlaWdodDog
MjlweDsKLSAgICBsaW5lLWhlaWdodDogMjdweDsKLSAgICBtaW4td2lkdGg6IDU0cHg7Ci0gICAg
cGFkZGluZzogMCA4cHg7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyCi19Ci0KLWJ1dHRvbi5uZXh0
IHsKLSAgICBtYXJnaW4tbGVmdDogMHB4OwotfQotCi1idXR0b24ucHJldmlvdXMgewotICAgIG1h
cmdpbi1yaWdodDogMHB4OwotfQotCi1idXR0b25bZGlzYWJsZWRdIHsKLSAgICB2aXNpYmlsaXR5
OiBoaWRkZW47Ci19Ci0KLWJ1dHRvbjpob3ZlciB7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTogLXdl
YmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCNmOGY4ZjgsI2YxZjFmMSk7Ci0gICAgLXdlYmtpdC1i
b3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLDAsMCwwLjEpOwotICAgIGJhY2tncm91bmQtY29s
b3I6ICNmOGY4Zjg7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvcCwj
ZjhmOGY4LCNmMWYxZjEpOwotICAgIGJvcmRlcjogMXB4IHNvbGlkICNjNmM2YzY7Ci0gICAgYm94
LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwwLDAsMC4xKTsKLSAgICBjb2xvcjogIzMzMwotfQot
Ci1idXR0b246Zm9jdXMgewotICAgIGJvcmRlcjogMXB4IHNvbGlkICM0ZDkwZmU7Ci0gICAgb3V0
bGluZTogbm9uZQotfQotCi1idXR0b24uZGVmYXVsdCB7Ci0gICAgYm9yZGVyOiAxcHggc29saWQg
IzMwNzlFRDsKLSAgICBjb2xvcjogd2hpdGU7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtp
dC1saW5lYXItZ3JhZGllbnQodG9wLCM0ZDkwZmUsIzQ3ODdlZCk7Ci19Ci0KLWJ1dHRvbi5kZWZh
dWx0OmhvdmVyIHsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAjMmY1YmI3OwotICAgIGNvbG9yOiB3
aGl0ZTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzU3YWU4OwotICAgIGJhY2tncm91bmQtaW1h
Z2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLGxlZnQgYm90dG9tLGZyb20oIzRk
OTBmZSksdG8oIzM1N2FlOCkpOwotfQotCi0uY2xlYXIgewotICAgIGNsZWFyOiBib3RoOwotfQpJ
bmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zdHlsZXMvZmFpbHVyZXMuY3NzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c3R5bGVzL2ZhaWx1cmVzLmNzcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMv
ZmFpbHVyZXMuY3NzCShub25leGlzdGVudCkKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0uZmFpbHVyZXMgLkJVSUxESU5HIHsKLSAgICBvcGFjaXR5OiAwLjU7Ci19Ci0KLWEuZmFpbGlu
Zy1idWlsZGVyIHsKLSAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci0gICAgYm9yZGVyOiAxcHgg
c29saWQgR3JheTsKLSAgICBtYXJnaW46IDAgMCAycHggMDsKLSAgICBwYWRkaW5nOiAxcHg7Ci0g
ICAgY29sb3I6IEJsYWNrOwotICAgIGZvbnQtc2l6ZTogMTFweDsKLSAgICB0ZXh0LWRlY29yYXRp
b246IG5vbmU7Ci19Ci0KLSAgICBhLmZhaWxpbmctYnVpbGRlcj5zcGFuLnZlcnNpb24gewotICAg
ICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9y
OiAjNTU1OwotICAgICAgICBjb2xvcjogV2hpdGU7Ci0gICAgICAgIHBhZGRpbmc6IDAgMnB4Owot
ICAgIH0KLQotICAgIGEuZmFpbGluZy1idWlsZGVyPnNwYW4uYXJjaGl0ZWN0dXJlIHsKLSAgICAg
ICAgcGFkZGluZzogMCAycHg7Ci0gICAgfQotCi0gICAgLmVmZmVjdHMgYS5mYWlsaW5nLWJ1aWxk
ZXI+c3Bhbi5hcmNoaXRlY3R1cmUgewotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU1Owot
ICAgICAgICBjb2xvcjogV2hpdGU7Ci0gICAgfQotCi0gICAgYS5mYWlsaW5nLWJ1aWxkZXI+c3Bh
bi5ncmFwaGljcyB7Ci0gICAgICAgIHBhZGRpbmc6IDAgMnB4OwotICAgIH0KLQotCi11bC5mYWls
dXJlcyB7Ci0gICAgcGFkZGluZzogMHB4OwotfQotCi0gICAgdWwuZmFpbHVyZXM+bGkgewotICAg
ICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKLSAgICB9Ci0KLSAgICB1bC5mYWlsdXJlcz5saSBs
YWJlbCB7Ci0gICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwotICAgIH0KLQotICAgICAgICB1bC5m
YWlsdXJlcz5saSB1bC5hY3Rpb25zIHsKLSAgICAgICAgICAgIHBhZGRpbmc6IDBweDsKLSAgICAg
ICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKLSAgICAgICAgfQotCi0gICAgICAgIHVsLmZhaWx1
cmVzPmxpOmhvdmVyIHVsLmFjdGlvbnMgewotICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJs
ZTsKLSAgICAgICAgfQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvbWFpbi5jc3MKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zdHlsZXMvbWFpbi5jc3MJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c3R5bGVzL21haW4uY3NzCShub25leGlzdGVudCkKQEAgLTEsMzMzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotYm9keSB7Ci0gICAgZm9udC1mYW1pbHk6IFRhaG9tYSwgc2Fucy1zZXJpZjsKLSAgICBm
b250LXNpemU6IDExcHg7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci19Ci0KLWEg
ewotICAgIGNvbG9yOiBCbGFjazsKLX0KLQotdGFibGUgewotICAgIHRhYmxlLWxheW91dDogZml4
ZWQ7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKLX0K
LQotdGQsIHRoIHsKLSAgICBvdmVyZmxvdzogaGlkZGVuOwotICAgIHZlcnRpY2FsLWFsaWduOiB0
b3A7Ci0gICAgLyogYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2M2YzZjNjsgKi8KLX0KLQotdGQ6
bGFzdC1vZi10eXBlLCB0aDpsYXN0LW9mLXR5cGUgewotICAgIC8qIGJvcmRlci1yaWdodDogMHB4
OyAqLwotfQotCi10aCB7Ci0gICAgLyogYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjNmM2YzY7
ICovCi19Ci0KLWJ1dHRvbiB7Ci0gICAgYm9yZGVyLXJhZGl1czogMnB4OwotICAgIGJhY2tncm91
bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjZjVmNWY1LCNmMWYxZjEpOwot
ICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTsKLSAgICBib3JkZXItcmFk
aXVzOiAycHg7Ci0gICAgY29sb3I6ICM2NjY7Ci0gICAgY3Vyc29yOiBwb2ludGVyOwotICAgIGZv
bnQtc2l6ZTogMTFweDsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLSAgICBoZWlnaHQ6IDI5cHg7
Ci0gICAgbGluZS1oZWlnaHQ6IDI3cHg7Ci0gICAgbWFyZ2luOiAxMXB4IDZweDsKLSAgICBtaW4t
d2lkdGg6IDU0cHg7Ci0gICAgcGFkZGluZzogMCA4cHg7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVy
Ci19Ci0KLWJ1dHRvbi5uZXh0IHsKLSAgICBtYXJnaW4tbGVmdDogMHB4OwotfQotCi1idXR0b24u
cHJldmlvdXMgewotICAgIG1hcmdpbi1yaWdodDogMHB4OwotfQotCi1idXR0b25bZGlzYWJsZWRd
IHsKLSAgICB2aXNpYmlsaXR5OiBoaWRkZW47Ci19Ci0KLWJ1dHRvbjpob3ZlciB7Ci0gICAgYmFj
a2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCNmOGY4ZjgsI2YxZjFm
MSk7Ci0gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLDAsMCwwLjEpOwot
ICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY4Zjg7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTogbGlu
ZWFyLWdyYWRpZW50KHRvcCwjZjhmOGY4LCNmMWYxZjEpOwotICAgIGJvcmRlcjogMXB4IHNvbGlk
ICNjNmM2YzY7Ci0gICAgYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwwLDAsMC4xKTsKLSAg
ICBjb2xvcjogIzMzMwotfQotCi1idXR0b246Zm9jdXMgewotICAgIGJvcmRlcjogMXB4IHNvbGlk
ICM0ZDkwZmU7Ci0gICAgb3V0bGluZTogbm9uZQotfQotCi1idXR0b24uZGVmYXVsdCB7Ci0gICAg
Ym9yZGVyOiAxcHggc29saWQgIzMwNzlFRDsKLSAgICBjb2xvcjogd2hpdGU7Ci0gICAgYmFja2dy
b3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCM0ZDkwZmUsIzQ3ODdlZCk7
Ci19Ci0KLWJ1dHRvbi5kZWZhdWx0OmhvdmVyIHsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAjMmY1
YmI3OwotICAgIGNvbG9yOiB3aGl0ZTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzU3YWU4Owot
ICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLGxl
ZnQgYm90dG9tLGZyb20oIzRkOTBmZSksdG8oIzM1N2FlOCkpOwotfQotCi0uY2xlYXIgewotICAg
IGNsZWFyOiBib3RoOwotfQotCi0vKioqIGJ1dHRlcmJhciAqKiovCi0KLS5idXR0ZXJiYXIgewot
ICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7Ci0gICAgcGFkZGluZzogNXB4OwotICAgIHBv
c2l0aW9uOiBmaXhlZDsKLSAgICB0b3A6IDBweDsKLSAgICByaWdodDogMHB4OwotfQotCi0uYnV0
dGVyYmFyIC5oaWRlIHsKLSAgICBtYXJnaW4tbGVmdDogMjBweDsKLX0KLQotLyoqKiBpbmZvYmFy
ICoqKi8KLQotLmluZm9iYXIgewotICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAgYmFja2dyb3VuZC1j
b2xvcjogQ29ybnNpbGs7Ci0gICAgYm9yZGVyOiA1cHggc29saWQgVG9tYXRvOwotICAgIHBhZGRp
bmc6IDEwcHg7Ci0gICAgbWFyZ2luOiA1cHggYXV0bzsKLSAgICBmb250LXNpemU6IDE1cHg7Ci0g
ICAgd2lkdGg6IDEwMCU7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi0uaW5mb2JhciAu
c3RhdHVzIGEgewotICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci19Ci0KLS5pbmZvYmFyIC5zdGF0
dXMgdWwgewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGxpc3Qtc3R5bGU6
IG5vbmU7Ci0gICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwotICAgIHBhZGRpbmc6IDAgMCAwIDEw
cHg7Ci19Ci0KLS5pbmZvYmFyIC5zdGF0dXMgbGkgewotICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKLSAgICBtYXJnaW46IDBweCA1cHg7Ci19Ci0KLS8qKiogcmVjZW50LWhpc3RvcnkgKioqLwot
Ci0ucmVjZW50LWhpc3RvcnkgewotfQotCi0ucmVjZW50LWhpc3RvcnkgLmJ1aWxkZXIgewotICAg
IHdpZHRoOiA1cHg7Ci0gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2Y1ZjVmNTsKLX0KLQot
LnJlY2VudC1oaXN0b3J5IC5idWlsdCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI2M2YzZjNjsK
LX0KLQotLnJlY2VudC1oaXN0b3J5IHRkW2RhdGEtZmFpbHVyZS10eXBlc10gewotICAgIGJhY2tn
cm91bmQtY29sb3I6IEJsYWNrOwotfQotCi0uY2hhbmdlbG9nIC5yZXN1bHQgewotICAgIHBhZGRp
bmc6IDRweCAwcHg7Ci0gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHdoaXRlOwotICAgIGJvcmRl
ci1ib3R0b206IDJweCBzb2xpZCB3aGl0ZTsKLX0KLQotLmNoYW5nZWxvZyAudGVzdCB7Ci0gICAg
cGFkZGluZy1sZWZ0OiAzcHg7Ci19Ci0KLS5jaGFuZ2Vsb2cgLmVudHJ5IHsKLSAgICBwYWRkaW5n
OiA0cHggMHB4IDRweCAzcHg7Ci19Ci0KLS5jaGFuZ2Vsb2cgLnJldmVydGVkIHsKLSAgICB0ZXh0
LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKLX0KLQotLmNoYW5nZWxvZyAucG9zc2libGUtcmVn
cmVzc2lvbiB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogUGFwYXlhV2hpcDsKLX0KLQotLmNoYW5n
ZWxvZyAuZGV0YWlscywgLmNoYW5nZWxvZyAuZGV0YWlscyBhIHsKLSAgICBjb2xvcjogIzU1NTsK
LX0KLQotLmNoYW5nZWxvZyAuc3VtbWFyeSB7Ci0gICAgY29sb3I6IEJsYWNrOwotfQotCi0uY2hh
bmdlbG9nIC5hdXRob3IgewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLX0KLQotLnRlc3QtbmFt
ZS5JTUFHRVwrVEVYVDo6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICdJTUFHRStURVhUJzsKLSAgICBm
b250LXdlaWdodDogbm9ybWFsOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBjb2xv
cjogd2hpdGU7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogSW5kaWdvOwotICAgIGZvbnQtc2l6ZTog
MTBweDsKLSAgICBwYWRkaW5nOiAxcHggMnB4OwotICAgIG1hcmdpbjogMCAwIDAgM3B4OwotICAg
IGJvcmRlci1yYWRpdXM6IDRweDsKLX0KLQotLnRlc3QtbmFtZS5JTUFHRTo6YWZ0ZXIgewotICAg
IGNvbnRlbnQ6ICdJTUFHRSc7Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICB0ZXh0LWRl
Y29yYXRpb246IG5vbmU7Ci0gICAgY29sb3I6IHdoaXRlOwotICAgIGJhY2tncm91bmQtY29sb3I6
IE1pZG5pZ2h0Qmx1ZTsKLSAgICBmb250LXNpemU6IDEwcHg7Ci0gICAgcGFkZGluZzogMXB4IDJw
eDsKLSAgICBtYXJnaW46IDAgMCAwIDNweDsKLSAgICBib3JkZXItcmFkaXVzOiA0cHg7Ci19Ci0K
LS50ZXN0LW5hbWUuVElNRU9VVDo6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICdUSU1FT1VUJzsKLSAg
ICBmb250LXdlaWdodDogbm9ybWFsOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBj
b2xvcjogd2hpdGU7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogRGFya0dvbGRlblJvZDsKLSAgICBm
b250LXNpemU6IDEwcHg7Ci0gICAgcGFkZGluZzogMXB4IDJweDsKLSAgICBtYXJnaW46IDAgMCAw
IDNweDsKLSAgICBib3JkZXItcmFkaXVzOiA0cHg7Ci19Ci0KLS50ZXN0LW5hbWUuVEVYVDo6YWZ0
ZXIgewotICAgIGNvbnRlbnQ6ICdURVhUJzsKLSAgICBmb250LXdlaWdodDogbm9ybWFsOwotICAg
IHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBjb2xvcjogd2hpdGU7Ci0gICAgYmFja2dyb3Vu
ZC1jb2xvcjogRG9kZ2VyQmx1ZTsKLSAgICBmb250LXNpemU6IDEwcHg7Ci0gICAgcGFkZGluZzog
MXB4IDJweDsKLSAgICBtYXJnaW46IDAgMCAwIDNweDsKLSAgICBib3JkZXItcmFkaXVzOiA0cHg7
Ci19Ci0KLS50ZXN0LW5hbWUuQ1JBU0g6OmFmdGVyIHsKLSAgICBjb250ZW50OiAnQ1JBU0gnOwot
ICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAg
IGNvbG9yOiB3aGl0ZTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBUb21hdG87Ci0gICAgZm9udC1z
aXplOiAxMHB4OwotICAgIHBhZGRpbmc6IDFweCAycHg7Ci0gICAgbWFyZ2luOiAwIDAgMCAzcHg7
Ci0gICAgYm9yZGVyLXJhZGl1czogNHB4OwotfQotCi0vKioqIHJlc3VsdHMtdmlldyAqKiovCi0K
LS8qIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIGdhcmRlbi1vLW1hdGljIHN3aXRjaGVzIHRvIHRo
ZSBuZXcgcmVzdWx0cyB2aWV3LiAqLwotLm9sZC1yZXN1bHRzLXZpZXcgewotICAgIGRpc3BsYXk6
IG5vbmU7Ci0gICAgcG9zaXRpb246IGZpeGVkOwotICAgIGxlZnQ6IDBweDsKLSAgICByaWdodDog
MHB4OwotICAgIHRvcDogMjUlOwotICAgIGJvdHRvbTogMHB4OwotfQotCi0ucmVzdWx0cy12aWV3
IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwotfQotCi0ucmVzdWx0cy12aWV3IC50
b29sYmFyIHsKLSAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2M2YzZjNjsKLSAgICBib3JkZXIt
Ym90dG9tOiAxcHggc29saWQgI2M2YzZjNjsKLX0KLQotLnJlc3VsdHMtdmlldyAudG9vbGJhciAu
c2VsZWN0b3IgewotICAgIGZvbnQtc2l6ZTogMTFweDsKLSAgICBmb250LXdlaWdodDogYm9sZDsK
LSAgICBoZWlnaHQ6IDI5cHg7Ci0gICAgbGluZS1oZWlnaHQ6IDI3cHg7Ci0gICAgbWFyZ2luOiAx
MXB4IDZweDsKLSAgICBwYWRkaW5nOiAwIDhweDsKLX0KLQotLnJlc3VsdHMtdmlldyAudGVzdC1z
ZWxlY3RvciB7Ci0gICAgd2lkdGg6IDQwMHB4OwotICAgIG1hcmdpbi1yaWdodDogNnB4OwotfQot
Ci0ucmVzdWx0cy12aWV3IC50b29sYmFyIC5hY3Rpb25zIHsKLSAgICBmbG9hdDogcmlnaHQ7Ci19
Ci0KLS5yZXN1bHRzLWRldGFpbCB0ZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Ci19
Ci0KLS50ZXh0LXJlc3VsdCB7Ci0gICAgYm9yZGVyOiBub25lOwotICAgIHdpZHRoOiAxMDAlOwot
ICAgIGhlaWdodDogNDAwcHg7IC8qIEZJWE1FOiBIb3cgZG8gd2UgZ2V0IGEgcmVhc29uYWJsZSBo
ZWlnaHQgaGVyZT8gKi8KLX0KLQotLmltYWdlLXJlc3VsdCB7Ci0gICAgd2lkdGg6IDEwMCU7Ci0g
ICAgaGVpZ2h0OiBhdXRvOwotfQotCi0vKioqIHBhcnR5dGltZSAqKiovCi0KLS5wYXJ0eXRpbWUg
ewotICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotfQpJbmRleDog
VG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zdHlsZXMvbm90aWZpY2F0aW9ucy5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
dHlsZXMvbm90aWZpY2F0aW9ucy5jc3MJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5
bGVzL25vdGlmaWNhdGlvbnMuY3NzCShub25leGlzdGVudCkKQEAgLTEsMjM0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotLyogRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBpbiBhY3Rpb25zLmNz
cy4gKi8KLXVsLmFjdGlvbnM+bGkgewotICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLX0KLQot
b2wubm90aWZpY2F0aW9ucyB7Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsKLSAgICBwYWRkaW5nOiAw
OwotfQotCi1vbC5ub3RpZmljYXRpb25zIHVsIHsKLSAgICBsaXN0LXN0eWxlOiBub25lOwotICAg
IHBhZGRpbmc6IDA7Ci19Ci0KLW9sLm5vdGlmaWNhdGlvbnM+bGkgewotICAgIGRpc3BsYXk6IC13
ZWJraXQtYm94OwotICAgIHdpZHRoOiAxMDAlOwotICAgIHBhZGRpbmc6IDEwcHg7Ci0gICAgYm94
LXNpemluZzogYm9yZGVyLWJveDsKLSAgICBib3JkZXItdG9wOiAxcHggc29saWQgR3JheTsKLX0K
LQotb2wubm90aWZpY2F0aW9ucyBkaXYuaG93IHsKLSAgICB3aWR0aDogMzUwcHg7Ci19Ci0KLW9s
Lm5vdGlmaWNhdGlvbnMgdGltZSB7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgY29sb3I6ICM4
ODg7Ci0gICAgcGFkZGluZzogMCAwIDIwcHggMDsKLX0KLQotb2wubm90aWZpY2F0aW9ucyBkaXYu
d2hhdCB7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Ci0gICAgLXdlYmtpdC1ib3gtb3JpZW50
OiB2ZXJ0aWNhbDsKLSAgICBwYWRkaW5nOiAwIDAgMCAxMHB4OwotICAgIC13ZWJraXQtYm94LWZs
ZXg6IDE7Ci19Ci0KLSAgICBvbC5ub3RpZmljYXRpb25zPmxpIGRpdi53aGF0IHVsLmVmZmVjdHM+
bGkuYnVpbGRlciB7Ci0gICAgICAgIGRpc3BsYXk6IGlubGluZTsKLSAgICAgICAgcGFkZGluZy1s
ZWZ0OiA1cHg7Ci0gICAgfQotCi1vbC5ub3RpZmljYXRpb25zIHVsLmNhdXNlcz5saSwgb2wubm90
aWZpY2F0aW9ucyBkaXYucHJvYmxlbSB7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Ci19Ci0K
LW9sLm5vdGlmaWNhdGlvbnMgdWwuY2F1c2VzIGRpdi5kZXNjcmlwdGlvbiwgb2wubm90aWZpY2F0
aW9ucyBkaXYucHJvYmxlbSB1bC5lZmZlY3RzIHsKLSAgICAtd2Via2l0LWJveC1mbGV4OiAxOwot
fQotCi1vbC5ub3RpZmljYXRpb25zPmxpIGRpdi5wcm9ibGVtIHsKLSAgICBwYWRkaW5nLWJvdHRv
bTogMTBweDsKLX0KLQotICAgIG9sLm5vdGlmaWNhdGlvbnM+bGkgZGl2LnByb2JsZW0+dWwuYWN0
aW9ucyB7Ci0gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKLSAgICB9Ci0KLSAgICBvbC5ub3Rp
ZmljYXRpb25zPmxpOmhvdmVyIGRpdi5wcm9ibGVtPnVsLmFjdGlvbnMgewotICAgICAgICB2aXNp
YmlsaXR5OiB2aXNpYmxlOwotICAgIH0KLQotICAgIG9sLm5vdGlmaWNhdGlvbnM+bGkgdGFibGUu
ZmFpbHVyZXMgewotICAgICAgICBvcGFjaXR5OiAwLjI7Ci0gICAgICAgIC13ZWJraXQtdHJhbnNp
dGlvbjogb3BhY2l0eSAwLjVzOwotICAgIH0KLQotICAgIG9sLm5vdGlmaWNhdGlvbnM+bGk6aG92
ZXIgdGFibGUuZmFpbHVyZXMgewotICAgICAgICBvcGFjaXR5OiAxOwotICAgIH0KLQotb2wubm90
aWZpY2F0aW9ucz5saSB1bC5jYXVzZXM+bGk+dWwuYWN0aW9ucyB7Ci19Ci0KLSAgICBvbC5ub3Rp
ZmljYXRpb25zPmxpIHVsLmNhdXNlcz5saT5kaXYuZGVzY3JpcHRpb24gewotICAgICAgICBwYWRk
aW5nOiAwIDEwcHggNXB4IDA7Ci0gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwotICAgIH0K
LQotICAgICAgICBvbC5ub3RpZmljYXRpb25zPmxpIHVsLmNhdXNlcz5saT5kaXYuZGVzY3JpcHRp
b24+YSB7Ci0gICAgICAgICAgICBwYWRkaW5nOiA1cHggMTBweCA1cHggMTBweDsKLSAgICAgICAg
ICAgIG1hcmdpbjogLTVweCAxMHB4IC0ycHggMDsKLSAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6
IDRweDsKLSAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgICAgICAgfQotCi0g
ICAgICAgIG9sLm5vdGlmaWNhdGlvbnM+bGkgdWwuY2F1c2VzPmxpOmhvdmVyPmRpdi5kZXNjcmlw
dGlvbj5hIHsKLSAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTU7Ci0gICAgICAgICAg
ICBjb2xvcjogV2hpdGU7Ci0gICAgICAgIH0KLQotICAgICAgICBvbC5ub3RpZmljYXRpb25zPmxp
IHVsLmNhdXNlcz5saTpob3Zlcj5kaXYuZGVzY3JpcHRpb24+YTo6YWZ0ZXIgewotICAgICAgICAg
ICAgY29udGVudDogJyc7Ci0gICAgICAgICAgICB3aWR0aDogMDsKLSAgICAgICAgICAgIGhlaWdo
dDogMDsKLSAgICAgICAgICAgIG1hcmdpbi10b3A6IDVweDsKLSAgICAgICAgICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKLSAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwotICAgICAgICAgICAg
Ym9yZGVyLXRvcDogNXB4IHNvbGlkIFdoaXRlOwotICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDVw
eCBzb2xpZCAjNTU1OwotICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogNXB4IHNvbGlkIFdoaXRl
OwotICAgICAgICB9Ci0KLSAgICAgICAgb2wubm90aWZpY2F0aW9ucz5saSB1bC5jYXVzZXM+bGk+
ZGl2LmRlc2NyaXB0aW9uPnNwYW4gewotICAgICAgICAgICAgcGFkZGluZzogMCAxMHB4IDAgMDsK
LSAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwotICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0
OwotICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Ci0gICAgICAgICAgICAtd2Via2l0
LWJveC1mbGV4OiAxOwotICAgICAgICB9Ci0KLSAgICAgICAgb2wubm90aWZpY2F0aW9ucz5saSB1
bC5jYXVzZXM+bGk+ZGl2LmRlc2NyaXB0aW9uPnNwYW4+c3Bhbi5hdXRob3IgewotICAgICAgICAg
ICAgcGFkZGluZzogMCAwIDAgNXB4OwotICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwot
ICAgICAgICB9Ci0KLSAgICAgICAgb2wubm90aWZpY2F0aW9ucz5saSB1bC5jYXVzZXM+bGk+ZGl2
LmRlc2NyaXB0aW9uPnNwYW4+c3Bhbi5yZXZpZXdlciB7Ci0gICAgICAgICAgICBjb2xvcjogR3Jh
eTsKLSAgICAgICAgfQotCi0gICAgICAgIG9sLm5vdGlmaWNhdGlvbnM+bGkgdWwuY2F1c2VzPmxp
PmRpdi5kZXNjcmlwdGlvbj5zcGFuPnNwYW4uYnVnSUQ6OmJlZm9yZSB7Ci0gICAgICAgICAgICBj
b250ZW50OiAnYnVnICc7Ci0gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDhweDsKLSAgICAgICAg
fQotCi0gICAgICAgIG9sLm5vdGlmaWNhdGlvbnM+bGkgdWwuY2F1c2VzPmxpPmRpdi5kZXNjcmlw
dGlvbj5zcGFuPnNwYW4uYnVnSUQ+YSB7Ci0gICAgICAgICAgICBjdXJzb3I6IGhhbmQ7Ci0gICAg
ICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bzsKLSAgICAgICAgfQotCi0gICAgICAgIG9sLm5v
dGlmaWNhdGlvbnM+bGkgdWwuY2F1c2VzPmxpPmRpdi5kZXNjcmlwdGlvbj5zcGFuPnNwYW4ucmV2
aWV3ZXI6OmJlZm9yZSB7Ci0gICAgICAgICAgICBjb250ZW50OiAnICgnOwotICAgICAgICB9Ci0K
LSAgICAgICAgb2wubm90aWZpY2F0aW9ucz5saSB1bC5jYXVzZXM+bGk+ZGl2LmRlc2NyaXB0aW9u
PnNwYW4+c3Bhbi5yZXZpZXdlcjo6YWZ0ZXIgewotICAgICAgICAgICAgY29udGVudDogJyknOwot
ICAgICAgICB9Ci0KLSAgICBvbC5ub3RpZmljYXRpb25zPmxpIHVsLmNhdXNlcz5saT51bC5hY3Rp
b25zIHsKLSAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwotICAgIH0KLQotICAgIG9sLm5vdGlm
aWNhdGlvbnM+bGkgdWwuY2F1c2VzPmxpOmhvdmVyPnVsLmFjdGlvbnMgewotICAgICAgICB2aXNp
YmlsaXR5OiB2aXNpYmxlOwotICAgIH0KLQotICAgIG9sLm5vdGlmaWNhdGlvbnM+bGkgdWwuY2F1
c2VzPmxpIGxpIHsKLSAgICAgICAgcGFkZGluZzogMTBweCAwIDAgMDsKLSAgICAgICAgZGlzcGxh
eTogaW5saW5lOwotICAgIH0KLQotb2wubm90aWZpY2F0aW9ucyB0YWJsZS5mYWlsdXJlcyB7Ci0g
ICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKLSAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkOwot
ICAgIGZvbnQtc2l6ZTogMTFweDsKLSAgICB3aWR0aDogMzUwcHg7Ci19Ci0KLSAgICBvbC5ub3Rp
ZmljYXRpb25zIHRhYmxlLmZhaWx1cmVzIHRoZWFkIHRyIHRkOmZpcnN0LWNoaWxkIHsKLSAgICAg
ICAgdmlzaWJpbGl0eTogaGlkZGVuOwotICAgIH0KLQotICAgIG9sLm5vdGlmaWNhdGlvbnMgdGFi
bGUuZmFpbHVyZXMgdGJvZHkgdHIgewotICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2Vl
ZTsKLSAgICB9Ci0KLSAgICBvbC5ub3RpZmljYXRpb25zIHRhYmxlLmZhaWx1cmVzIHRib2R5IHRk
OmZpcnN0LWNoaWxkIHsKLSAgICAgICAgd2lkdGg6IDIwJTsKLSAgICB9Ci0KLSAgICBvbC5ub3Rp
ZmljYXRpb25zIHRhYmxlLmZhaWx1cmVzIHRib2R5IHRkIHsKLSAgICAgICAgd2lkdGg6IDQwJTsK
LSAgICAgICAgcGFkZGluZzogMnB4OwotICAgIH0KLQotICAgIG9sLm5vdGlmaWNhdGlvbnMgdGFi
bGUuZmFpbHVyZXMgdGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGQgewotICAgICAgICB2ZXJ0aWNhbC1h
bGlnbjogdG9wOwotICAgIH0KLQotICAgIG9sLm5vdGlmaWNhdGlvbnMgdGFibGUuZmFpbHVyZXMg
dGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGQgc3BhbiB7Ci0gICAgICAgIHBhZGRpbmc6IDAgMnB4Owot
ICAgIH0KLQotICAgIG9sLm5vdGlmaWNhdGlvbnMgdGFibGUuZmFpbHVyZXMgdGJvZHkgdHIuVElN
RU9VVCB0ZDpmaXJzdC1jaGlsZCBzcGFuIHsKLSAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Zm
ZmM2YzsKLSAgICB9Ci0KLSAgICBvbC5ub3RpZmljYXRpb25zIHRhYmxlLmZhaWx1cmVzIHRib2R5
IHRyLlRFWFQgdGQ6Zmlyc3QtY2hpbGQgc3BhbiB7Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6
ICNlOTgwODA7Ci0gICAgfQotCi0gICAgb2wubm90aWZpY2F0aW9ucyB0YWJsZS5mYWlsdXJlcyB0
Ym9keSB0ci5DUkFTSCB0ZDpmaXJzdC1jaGlsZCBzcGFuIHsKLSAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogI2ZmYzM0MzsKLSAgICB9Ci0KLSAgICBvbC5ub3RpZmljYXRpb25zIHRhYmxlLmZhaWx1
cmVzIHRib2R5IHRyLkFVRElPIHRkOmZpcnN0LWNoaWxkIHNwYW4gewotICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiAjYmZkZmZmOwotICAgIH0KLQotICAgIG9sLm5vdGlmaWNhdGlvbnMgdGFibGUu
ZmFpbHVyZXMgdGJvZHkgdHIuSU1BR0UgdGQ6Zmlyc3QtY2hpbGQgc3BhbiB7Ci0gICAgICAgIGJh
Y2tncm91bmQtY29sb3I6ICM2OWY7Ci0gICAgfQotCi0gICAgb2wubm90aWZpY2F0aW9ucyB0YWJs
ZS5mYWlsdXJlcyB0Ym9keSB0ci5JTUFHRVwrVEVYVCB0ZDpmaXJzdC1jaGlsZCBzcGFuIHsKLSAg
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzk2ZjsKLSAgICB9CkluZGV4OiBUb29scy9DSVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxl
cy9vbmViYXIuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL29uZWJhci5jc3MJKHJl
dmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL29uZWJhci5jc3MJKG5vbmV4aXN0ZW50
KQpAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8qCi0gKiBXZSBtb3N0bHkgdXNlIHRo
ZSBzdHlsZXMgZnJvbSBqUXVlcnkgVUksIGJ1dCB3ZSBjbGVhciBzb21lIG9mIHRoZW0gdG8KLSAq
IG1ha2UgdGhlIFVJIHNsaWdodGx5IHRpZ2h0ZXIuCi0gKi8KLQotI29uZWJhciB7Ci0gICAgYm9y
ZGVyOiBub25lOwotICAgIHBhZGRpbmc6IDBweDsKLSAgICBtYXJnaW4tYm90dG9tOiAxMDBweDsK
LX0KLQotI29uZWJhciAudWktd2lkZ2V0LWhlYWRlciB7Ci0gICAgYm9yZGVyLXRvcDogbm9uZTsK
LSAgICBib3JkZXItcmlnaHQ6IG5vbmU7Ci0gICAgYm9yZGVyLWxlZnQ6IG5vbmU7Ci0gICAgYm9y
ZGVyLXJhZGl1czogMHB4OwotfQotCi0jb25lYmFyICNwbGF0Zm9ybS1waWNrZXIgewotICAgIGZs
b2F0OiByaWdodDsKLSAgICBtYXJnaW4tdG9wOiA4cHg7Ci0gICAgbWFyZ2luLXJpZ2h0OiA4cHg7
Ci0gICAgZm9udC1zaXplOiBsYXJnZXI7Ci19Ci0KLSN1bmV4cGVjdGVkIHsKLSAgICBtaW4taGVp
Z2h0OiA1NTBweDsKLX0KLQotI29uZWJhci5wYXJ0eXRpbWUgI3VuZXhwZWN0ZWQgewotICAgIGJh
Y2tncm91bmQ6IHVybCguLi9pbWFnZXMvcGFydHl0aW1lLmdpZikgY2VudGVyIGNlbnRlciBuby1y
ZXBlYXQ7Ci19Ci0KLSNjaHJvbWl1bS1ndGVzdHMgaWZyYW1lIHsKLSAgICBib3JkZXI6IDA7Ci0g
ICAgaGVpZ2h0OiAyMHB4OwotfQotCi0jY2hyb21pdW0tZ3Rlc3RzIHsKLSAgICBwb3NpdGlvbjog
YWJzb2x1dGU7Ci0gICAgdG9wOiAxMHB4OwotICAgIHJpZ2h0OiA1cHg7Ci19Ci0KLSNndGVzdC1s
YWJlbCB7Ci0gICAgdmVydGljYWwtYWxpZ246IHRvcDsKLX0KSW5kZXg6IFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVz
L3BlcmYuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL3BlcmYuY3NzCShyZXZpc2lv
biAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxlcy9wZXJmLmNzcwkobm9uZXhpc3RlbnQpCkBAIC0x
LDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3BlcmYtdmlldyB7Ci0gICAgaGVpZ2h0OiAxMDAl
OwotfQotCi0jcGVyZi12aWV3ID4gLnRpdGxlLWJhciB7Ci0gICAgaGVpZ2h0OiAyZW07Ci19Ci0K
LSNwZXJmLXZpZXcgPiAubm90aWZpY2F0aW9ucyB7Ci0gICAgbWFyZ2luOiAwOwotfQotCi0jcGVy
Zi12aWV3IC5hY3Rpb25zLAotI3BlcmYtdmlldyAucG9wLW91dCB7Ci0gICAgZmxvYXQ6IHJpZ2h0
OwotICAgIG1hcmdpbjogMDsKLX0KLQotI3BlcmYtdmlldyA+IGlmcmFtZSB7Ci0gICAgd2lkdGg6
IDEwMCU7Ci0gICAgYm9yZGVyOiAwOwotICAgIC8qIEZJWE1FOiBBZGQgcGVyZi1kYXNoYm9hcmQt
c2lkZSBwb3N0TWVzc2FnZSBjYWxscyBzbyB0aGUgaWZyYW1lIGNhbiBzaXplIHRvIGl0J3MgY29u
dGVudHMuICovCi0gICAgaGVpZ2h0OiAtd2Via2l0LWNhbGMoMTAwJSAtIDJlbSk7Ci19ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvcGl4ZWx6b29tZXIu
Y3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL3BpeGVsem9vbWVyLmNzcwkocmV2aXNp
b24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvcGl4ZWx6b29tZXIuY3NzCShub25leGlzdGVu
dCkKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0ucGl4ZWwtem9vbS1jb250YWluZXIg
ewotICAgIHBvc2l0aW9uOiBmaXhlZDsKLSAgICB0b3A6IDA7Ci0gICAgbGVmdDogMDsKLSAgICB3
aWR0aDogOTYlOwotICAgIG1hcmdpbjogMTBweDsKLSAgICBwYWRkaW5nOiAxMHB4OwotICAgIGRp
c3BsYXk6IC13ZWJraXQtYm94OwotICAgIGRpc3BsYXk6IC1tb3otYm94OwotICAgIHBvaW50ZXIt
ZXZlbnRzOiBub25lOwotICAgIGJhY2tncm91bmQtY29sb3I6IHNpbHZlcjsKLSAgICBib3JkZXIt
cmFkaXVzOiAyMHB4OwotICAgIGJvcmRlcjogMXB4IHNvbGlkIGdyYXk7Ci0gICAgYm94LXNoYWRv
dzogMCAwIDVweCByZ2JhKDAsIDAsIDAsIDAuNzUpOwotfQotCi0ucGl4ZWwtem9vbS1jb250YWlu
ZXIgPiAqIHsKLSAgICAtd2Via2l0LWJveC1mbGV4OiAxOwotICAgIC1tb3otYm94LWZsZXg6IDE7
Ci0gICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ci0gICAgbWFyZ2luOiA0cHg7Ci0gICAgb3Zl
cmZsb3c6IGhpZGRlbjsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKLX0KLQotLnBpeGVs
LXpvb20tY29udGFpbmVyIC5zY2FsZWQtaW1hZ2UtY29udGFpbmVyIHsKLSAgICBwb3NpdGlvbjog
cmVsYXRpdmU7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBo
ZWlnaHQ6IDQwMHB4OwotfQotCi0uc2NhbGVkLWltYWdlLWNvbnRhaW5lciA+IGltZyB7Ci0gICAg
cG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICBsZWZ0OiAwOwotICAgIGltYWdl
LXJlbmRlcmluZzogLXdlYmtpdC1vcHRpbWl6ZS1jb250cmFzdDsKLX0KSW5kZXg6IFRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c3R5bGVzL3Jlc3VsdHMuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL3Jlc3VsdHMu
Y3NzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxlcy9yZXN1bHRzLmNzcwkobm9u
ZXhpc3RlbnQpCkBAIC0xLDIwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS5ub24tYWN0aW9uLWJ1
dHRvbiwgLnJlc3VsdHMtdmlldyB1bC5hY3Rpb25zLCAudWktZGlhbG9nIHVsLmFjdGlvbnMgewot
ICAgIGZsb2F0OiByaWdodDsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogNXB4IDBweDsK
LSAgICBsaXN0LXN0eWxlOiBub25lOwotICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLX0KLQot
Lm5vbi1hY3Rpb24tYnV0dG9uIHsKLSAgICBwYWRkaW5nOiA1cHg7Ci19Ci0KLS5yZXN1bHRzLXZp
ZXcgdWwuYWN0aW9ucy5yZWJhc2VsaW5lLWFjdGlvbiB7Ci0gICAgZmxvYXQ6IG5vbmU7Ci0gICAg
cG9zaXRpb246IGFic29sdXRlOwotICAgIHJpZ2h0OiA0cHg7Ci0gICAgdG9wOiA3cHg7Ci0gICAg
cGFkZGluZzogMDsKLX0KLQotLnJlc3VsdHMtdmlldyB1bC5hY3Rpb25zIGxpLCAudWktZGlhbG9n
IHVsLmFjdGlvbnMgbGkgewotICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLX0KLQotLnJlc3Vs
dHMtdmlldyBoMyB1bC5hY3Rpb25zIHsKLSAgICBwYWRkaW5nOiAycHggMHB4OwotfQotCi0ucmVz
dWx0cy12aWV3IGgzIHVsLmFjdGlvbnMgewotICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKLX0KLQot
LnJlc3VsdHMtdmlldyBoMy51aS1zdGF0ZS1hY3RpdmUgdWwuYWN0aW9ucyB7Ci0gICAgdmlzaWJp
bGl0eTogdmlzaWJsZTsKLX0KLQotLnVpLXRhYnMgLnVpLXRhYnMtcGFuZWwucmVzdWx0cy1kZXRh
aWwgewotICAgIHBhZGRpbmc6IDBweDsKLX0KLQotLnJlc3VsdHMtZ3JpZCB0YWJsZSB7Ci0gICAg
dGFibGUtbGF5b3V0OiBmaXhlZDsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBib3JkZXItY29sbGFw
c2U6IGNvbGxhcHNlOwotfQotCi0ucmVzdWx0cy1ncmlkIHRhYmxlIHRkLCAucmVzdWx0cy12aWV3
IHRhYmxlIHRoIHsKLSAgICBvdmVyZmxvdzogaGlkZGVuOwotICAgIHZlcnRpY2FsLWFsaWduOiB0
b3A7Ci19Ci0KLS5yZXN1bHRzLWdyaWQgdGFibGUgdGggewotICAgIHBhZGRpbmc6IDNweDsKLSAg
ICBib3JkZXItdG9wOiAxcHggc29saWQgI0RERDsKLSAgICBib3JkZXItYm90dG9tOiAxcHggc29s
aWQgI0RERDsKLX0KLQotLnJlc3VsdHMtZ3JpZCAudGV4dC1yZXN1bHQgewotICAgIGJvcmRlcjog
bm9uZTsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBoZWlnaHQ6IDQwMHB4OyAvKiBGSVhNRTogSG93
IGRvIHdlIGdldCBhIHJlYXNvbmFibGUgaGVpZ2h0IGhlcmU/ICovCi19Ci0KLS5yZXN1bHRzLWdy
aWQgLmltYWdlLXJlc3VsdCB7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgaGVpZ2h0OiBhdXRvOwot
fQotCi0ucmVzdWx0cy12aWV3IC50b3AtcGFuZWwgewotICAgIG1heC1oZWlnaHQ6IDIwJTsKLSAg
ICBvdmVyZmxvdzogYXV0bzsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgYm9yZGVyOiAx
cHggc29saWQgI0VFRTsKLX0KLQotLnJlc3VsdHMtdmlldyAucmVzaXplLWhhbmRsZSB7Ci0gICAg
aGVpZ2h0OiA1cHg7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIC13ZWJraXQtdXNlci1z
ZWxlY3Q6IG5vbmU7Ci0gICAgbGluZS1oZWlnaHQ6IDVweDsKLSAgICBjdXJzb3I6IG5zLXJlc2l6
ZTsKLSAgICBmb250LXNpemU6IDVweDsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLSAgICBwYWRk
aW5nOiAxcHg7Ci19Ci0KLS5yZXN1bHRzLXZpZXcgLnJlc2l6ZS1oYW5kbGU6YmVmb3JlIHsKLSAg
ICBjb250ZW50OiAnfHx8JzsKLX0KLQotLnJlc3VsdHMtdmlldyAubGluay10aXRsZSwKLS5yZXN1
bHRzLXZpZXcgLmFjdGl2ZSAubm9uLWxpbmstdGl0bGUgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19
Ci0KLS5yZXN1bHRzLXZpZXcgLm5vbi1saW5rLXRpdGxlLAotLnJlc3VsdHMtdmlldyAuYWN0aXZl
IC5saW5rLXRpdGxlIHsKLSAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci19Ci0KLS5yZXN1bHRz
LXZpZXcgaDMgewotICAgIGZvbnQtc2l6ZTogMTRweDsKLSAgICBmb250LXdlaWdodDogbm9ybWFs
OwotICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjREREOwotICAgIG1hcmdpbjogMDsKLSAgICBj
dXJzb3I6IHBvaW50ZXI7Ci19Ci0KLS5yZXN1bHRzLXZpZXcgaDM6bm90KC5hY3RpdmUpOmhvdmVy
IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVFOwotfQotCi0ucmVzdWx0cy12aWV3IC5hY3Rp
dmUgewotICAgIGJhY2tncm91bmQtY29sb3I6ICNDQ0M7Ci19Ci0KLS8qIENTUyBwZXJjZW50YWdl
cyBpbiBzdGFuZGFyZHMtbW9kZSBhcmUgZHVtYi4gWW91IG5lZWQgdG8gaGF2ZSBhIHBlcmNlbnRh
Z2Ugb3IgZml4ZWQgaGVpZ2h0Ci0gICBhbGwgdGhlIHdheSB1cCB0aGUgdHJlZSBpbiBvcmRlciB0
byBoYXZlIHBlcmNlbnRhZ2VzIHJlc29sdmUuICovCi1odG1sLCBib2R5LCAjb25lYmFyLCAucmVz
dWx0cy12aWV3LCAudGVzdC1zZWxlY3RvciB7Ci0gICAgaGVpZ2h0OiAxMDAlOwotfQotCi0jcmVz
dWx0cywgI3BlcmYgewotICAgIC8qIEZJWE1FOiBXZSByZWFsbHkgc2hvdWxkIHVzZSBmbGV4Ym94
IHNvIHdlIGRvbid0IGhhdmUgdG8gZG8gdGhpcy4gQnV0IHRoYXQgcmVxdWlyZXMgcmVzdHJ1Y3R1
cmluZyB0aGUgRE9NIGEgYml0LiAqLzsKLSAgICBoZWlnaHQ6IC13ZWJraXQtY2FsYygxMDAlIC0g
MzlweCk7Ci0gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAgICAvKiBQb3NpdGlvbiByZWxh
dGl2ZSBzbyB0aGF0IG5lc3RlZCBwZXJjZW50YWdlcyBzaXplIHRvIHRoaXMgZWxlbWVudC4gKi8K
LSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci19Ci0KLS8qKiogc3RhdHVzIGNvbnNvbGUgKioqLwot
LnN0YXR1cyB7Ci0gICAgcG9zaXRpb246IGZpeGVkOwotICAgIGJvdHRvbTogMDsKLSAgICBsZWZ0
OiAwOwotICAgIHJpZ2h0OiAwOwotICAgIGhlaWdodDogMTAwcHg7Ci0gICAgYmFja2dyb3VuZC1j
b2xvcjogd2hpdGU7Ci0gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGdyYXk7Ci0gICAgLXdlYmtp
dC1ib3gtc2hhZG93OiAwcHggLTJweCAxMHB4IGdyYXk7Ci0gICAgb3ZlcmZsb3c6IGF1dG87Ci0g
ICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKLSAgICBwYWRkaW5nOiA0cHg7Ci19Ci0KLS5zdGF0dXMg
LmFjdGlvbnMsIC5zdGF0dXMgLnByb2Nlc3MtdGV4dCB7Ci0gICAgcG9zaXRpb246IGZpeGVkOwot
ICAgIGJvdHRvbTogMDsKLSAgICByaWdodDogMjBweDsKLSAgICBtYXJnaW46IDRweDsKLX0KLQot
LnByb2Nlc3NpbmcgLmFjdGlvbnMgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS5wcm9jZXNz
aW5nIC5wcm9jZXNzLXRleHQgewotICAgIGRpc3BsYXk6IGJsb2NrOwotfQotCi0ucHJvY2Vzcy10
ZXh0IHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0uc3RhdHVzLWNvbnRlbnQgewotICAgIGJv
cmRlci1ib3R0b206IDFweCBkYXNoZWQ7Ci0gICAgbWFyZ2luLWJvdHRvbTogMWVtOwotfQotCi0u
c3RhdHVzLWNvbnRlbnQ6bGFzdC1jaGlsZCB7Ci0gICAgYm9yZGVyLWJvdHRvbTogMDsKLSAgICBt
YXJnaW4tYm90dG9tOiAwOwotfQotCi0uZmxha2luZXNzLWlmcmFtZSwgLmZsYWtpbmVzcy1pZnJh
bWUtcGxhY2Vob2xkZXIgewotICAgIGJvcmRlcjogbm9uZTsKLSAgICBoZWlnaHQ6IDA7Ci0gICAg
d2lkdGg6IDEwMCU7Ci19CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N1bW1hcnktbW9jay5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvc3VtbWFyeS1tb2NrLmh0bWwJKHJldmlzaW9uIDI2OTExMSkKKysrIFRv
b2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvc3VtbWFyeS1tb2NrLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NSArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTwhLS0KLUNvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotYXJlIG1ldDoKLTEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0yLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi1USEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi1QVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLUJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLUNPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi1TVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLUlOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi1DT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi1UaGUgZmF2aWNvbnMgYXJlIGZyb20gdGhlIGF3ZXNvbWUgZmFt
ZmFtZmFtLmNvbSwgd2hpY2ggaXMgdGhlIHdlYnNpdGUgb2YgTWFyawotSmFtZXMsIGEgd2ViIGRl
dmVsb3BlciBmcm9tIEJpcm1pbmdoYW0sIFVLLgotLS0+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxl
Pk1vY2sgU3VtbWFyeSBWaWV3PC90aXRsZT4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
c3R5bGVzL2NvbW1vbi5jc3MiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMv
cmVzdWx0cy5jc3MiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvbm90aWZp
Y2F0aW9ucy5jc3MiPgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0iaHR0cHM6Ly93ZWJr
aXQub3JnL2FqYXgvbGlicy9qcXVlcnkvanF1ZXJ5LTEuNi4yLm1pbi5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0ic2NyaXB0cy9jb25maWcuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNj
cmlwdHMvYmFzZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9uZXQuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvVHJhYy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0ic2NyaXB0cy9CdWd6aWxsYS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0
cy9idWlsZGVycy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9jaGVja291dC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9yZXN1bHRzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSJzY3JpcHRzL3VpLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3Jp
cHRzL21vZGVsLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL3VpL2FjdGlvbnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvZmFpbHVyZXMuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvbm90aWZpY2F0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy91aS9yZXN1bHRzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJzY3JpcHRzL2NvbnRyb2xsZXJzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3Jp
cHRzL3N1bW1hcnktbW9jay5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3N1bW1hcnktbW9jay5odG1sCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRl
ZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1MRgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvYnVpbGRib3QuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9idWlsZGJvdC5jc3MJKHJldmlzaW9u
IDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9idWlsZGJvdC5jc3MJKG5vbmV4aXN0ZW50KQpAQCAtMSwzODIgKzAsMCBAQAotYm9k
eSB7Ci0JbWFyZ2luLWJvdHRvbTo1MHB4OwotfQotCi1ib2R5LCB0ZCB7Ci0JZm9udC1mYW1pbHk6
IFZlcmRhbmEsIEN1cnNvcjsKLQlmb250LXNpemU6IDEwcHg7Ci0JZm9udC13ZWlnaHQ6IGJvbGQ7
Ci19Ci0KLWE6bGluayxhOnZpc2l0ZWQsYTphY3RpdmUgewotCWNvbG9yOiAjNDQ0OwotfQotCi1h
OmhvdmVyIHsKLQljb2xvcjogIzAwMDAwMDsKLX0KLQotdGFibGUgewotCWJvcmRlci1zcGFjaW5n
OiAxcHggMXB4OwotfQotCi10YWJsZSB0ZCB7Ci0JcGFkZGluZzogM3B4IDBweCAzcHggMHB4Owot
CXRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotLlByb2plY3QgewotCXdpZHRoOiAxMDBweDsKLX0K
LQotLkxhc3RCdWlsZCwgLkFjdGl2aXR5IHsKLQlwYWRkaW5nOiAwIDAgMCA0cHg7Ci19Ci0KLS5M
YXN0QnVpbGQsIC5BY3Rpdml0eSwgLkJ1aWxkZXIsIC5CdWlsZFN0ZXAgewotICAgICAgICB3aWR0
aDogMTU1cHg7Ci0gICAgICAgIG1heC13aWR0aDogMTU1cHg7Ci19Ci0KLXRkLlRpbWUgewotCWNv
bG9yOiAjMDAwOwotCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYWFhOwotCWJhY2tncm91bmQt
Y29sb3I6ICNlZWU7Ci19Ci0KLXRkLkFjdGl2aXR5LCB0ZC5DaGFuZ2UsIHRkLkJ1aWxkZXIgewot
CWNvbG9yOiAjMzMzMzMzOwotCWJhY2tncm91bmQtY29sb3I6ICNDQ0NDQ0M7Ci19Ci0KLXRkLkNo
YW5nZSB7Ci0JYm9yZGVyLXJhZGl1czogNXB4OwotCS13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4
OwotCS1tb3otYm9yZGVyLXJhZGl1czogNXB4OwotfQotdGQuRXZlbnQgewotCWNvbG9yOiAjNzc3
OwotCWJhY2tncm91bmQtY29sb3I6ICNkZGQ7Ci0JYm9yZGVyLXJhZGl1czogNXB4OwotCS13ZWJr
aXQtYm9yZGVyLXJhZGl1czogNXB4OwotCS1tb3otYm9yZGVyLXJhZGl1czogNXB4OwotfQotCi10
ZC5BY3Rpdml0eSB7Ci0JYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTBweDsKLQktd2Via2l0LWJv
cmRlci10b3AtbGVmdC1yYWRpdXM6IDEwcHg7Ci0JLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6
IDEwcHg7Ci0JbWluLWhlaWdodDogMjBweDsKLQlwYWRkaW5nOiAycHggMCAycHggMDsKLX0KLQot
dGQuaWRsZSwgdGQud2FpdGluZywgdGQub2ZmbGluZSwgdGQuYnVpbGRpbmcgewotCWJvcmRlci10
b3AtbGVmdC1yYWRpdXM6IDBweDsKLQktd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDBw
eDsKLQktbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDogMHB4OwotfQotCi0uTGFzdEJ1aWxkIHsK
LQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA1cHg7Ci0JLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQt
cmFkaXVzOiA1cHg7Ci0JLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6IDVweDsKLQlib3JkZXIt
dG9wLXJpZ2h0LXJhZGl1czogNXB4OwotCS13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6
IDVweDsKLQktbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6IDVweDsKLX0KLQotLyogQ29uc29s
ZSB2aWV3IHN0eWxlcyAqLwotCi10ZC5EZXZSZXYgewotICAgICAgICBwYWRkaW5nOiA0cHggOHB4
IDRweCA4cHg7Ci0gICAgICAgIGNvbG9yOiAjMzMzMzMzOwotICAgICAgICBib3JkZXItdG9wLWxl
ZnQtcmFkaXVzOiA1cHg7Ci0gICAgICAgIC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czog
NXB4OwotICAgICAgICAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDogNXB4OwotICAgICAgICBi
YWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwotICAgICAgICB3aWR0aDogMSU7Ci19Ci0KLXRkLkRldlJl
dkNvbGxhcHNlIHsKLSAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4OwotICAg
ICAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweDsKLSAgICAgICAgLW1v
ei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDVweDsKLX0KLQotdGQuRGV2TmFtZSB7Ci0gICAg
ICAgIHBhZGRpbmc6IDRweCA4cHggNHB4IDhweDsKLSAgICAgICAgY29sb3I6ICMzMzMzMzM7Ci0g
ICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Ci0gICAgICAgIHdpZHRoOiAxJTsKLSAgICAg
ICAgdGV4dC1hbGlnbjogbGVmdDsKLX0KLQotdGQuRGV2U3RhdHVzIHsKLSAgICAgICAgcGFkZGlu
ZzogNHB4IDRweCA0cHggNHB4OwotICAgICAgICBjb2xvcjogIzMzMzMzMzsKLSAgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogI2VlZTsKLX0KLQotdGQuRGV2U2xhdmUgewotICAgICAgICBwYWRkaW5n
OiA0cHggNHB4IDRweCA0cHg7Ci0gICAgICAgIGNvbG9yOiAjMzMzMzMzOwotICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiAjZWVlOwotfQotCi10ZC5maXJzdCB7Ci0gICAgICAgIGJvcmRlci10b3At
bGVmdC1yYWRpdXM6IDVweDsKLSAgICAgICAgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVz
OiA1cHg7Ci0gICAgICAgIC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OiA1cHg7Ci19Ci0KLXRk
Lmxhc3QgewotICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4OwotICAgICAgICAt
d2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHg7Ci0gICAgICAgIC1tb3otYm9yZGVy
LXJhZGl1cy10b3ByaWdodDogNXB4OwotfQotCi10ZC5EZXZTdGF0dXNDYXRlZ29yeSB7Ci0gICAg
ICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLSAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1
cHg7Ci0gICAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogNXB4OwotICAgICAgICBib3JkZXItd2lk
dGg6MXB4OwotICAgICAgICBib3JkZXItc3R5bGU6c29saWQ7Ci19Ci0KLXRkLkRldlN0YXR1c0Nv
bGxhcHNlIHsKLSAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDVweDsKLSAgICAg
ICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4OwotICAgICAgICAtbW96
LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6IDVweDsKLX0KLQotdGQuRGV2RGV0YWlscyB7Ci0g
ICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgICAgIHBhZGRpbmc6IDhweCA4cHggOHB4
IDhweDsKLSAgICAgICAgY29sb3I6ICMzMzMzMzM7Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6
ICNlZWU7Ci0gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7Ci19Ci0KLXRkLkRldkNvbW1lbnQgewot
ICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwotICAgICAgICBwYWRkaW5nOiA4cHggOHB4IDhw
eCA4cHg7Ci0gICAgICAgIGNvbG9yOiAjMzMzMzMzOwotICAgICAgICBib3JkZXItYm90dG9tLXJp
Z2h0LXJhZGl1czogNXB4OwotICAgICAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFk
aXVzOiA1cHg7Ci0gICAgICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDogNXB4Owot
ICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7Ci0gICAgICAgIC13ZWJraXQt
Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4OwotICAgICAgICAtbW96LWJvcmRlci1yYWRp
dXMtYm90dG9tbGVmdDogNXB4OwotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwotICAg
ICAgICB0ZXh0LWFsaWduOiBsZWZ0OwotfQotCi10ZC5BbHQgewotICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiAjQ0NDQ0NDOwotfQotCi0ubGVnZW5kIHsKLSAgICAgICAgYm9yZGVyLXJhZGl1czog
NXB4OwotICAgICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsKLSAgICAgICAgLW1vei1i
b3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgICAgIHdpZHRoOiAxMDBweDsKLSAgICAgICAgbWF4LXdp
ZHRoOiAxMDBweDsKLSAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7Ci0gICAgICAgIHBhZGRpbmc6
IDJweCAycHggMnB4IDJweDsKLSAgICAgICAgaGVpZ2h0OjE0cHg7Ci0gICAgICAgIHdoaXRlLXNw
YWNlOm5vd3JhcDsKLX0KLQotLkRldlN0YXR1c0JveCB7Ci0gICAgICAgIHRleHQtYWxpZ246Y2Vu
dGVyOwotICAgICAgICBoZWlnaHQ6MjBweDsKLSAgICAgICAgcGFkZGluZzowIDJweDsKLSAgICAg
ICAgbGluZS1oZWlnaHQ6MDsKLSAgICAgICAgd2hpdGUtc3BhY2U6bm93cmFwOwotfQotCi0uRGV2
U3RhdHVzQm94IGEgewotICAgICAgICBvcGFjaXR5OiAwLjg1OwotICAgICAgICBib3JkZXItd2lk
dGg6MXB4OwotICAgICAgICBib3JkZXItc3R5bGU6c29saWQ7Ci0gICAgICAgIGJvcmRlci1yYWRp
dXM6IDRweDsKLSAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgICAgIC1t
b3otYm9yZGVyLXJhZGl1czogNHB4OwotICAgICAgICBkaXNwbGF5OmJsb2NrOwotICAgICAgICB3
aWR0aDo5MCU7Ci0gICAgICAgIGhlaWdodDoyMHB4OwotICAgICAgICBsaW5lLWhlaWdodDoyMHB4
OwotICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKLSAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRv
OwotfQotCi0uRGV2U2xhdmVCb3ggewotICAgICAgICB0ZXh0LWFsaWduOmNlbnRlcjsKLSAgICAg
ICAgaGVpZ2h0OjEwcHg7Ci0gICAgICAgIHBhZGRpbmc6MCAycHg7Ci0gICAgICAgIGxpbmUtaGVp
Z2h0OjA7Ci0gICAgICAgIHdoaXRlLXNwYWNlOm5vd3JhcDsKLX0KLQotLkRldlNsYXZlQm94IGEg
ewotICAgICAgICBvcGFjaXR5OiAwLjg1OwotICAgICAgICBib3JkZXItd2lkdGg6MXB4OwotICAg
ICAgICBib3JkZXItc3R5bGU6c29saWQ7Ci0gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKLSAg
ICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgICAgIC1tb3otYm9yZGVyLXJh
ZGl1czogNHB4OwotICAgICAgICBkaXNwbGF5OmJsb2NrOwotICAgICAgICB3aWR0aDo5MCU7Ci0g
ICAgICAgIGhlaWdodDoxMHB4OwotICAgICAgICBsaW5lLWhlaWdodDoyMHB4OwotICAgICAgICBt
YXJnaW4tbGVmdDogYXV0bzsKLSAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwotfQotCi1hLm5v
cm91bmQgewotICAgICAgICBib3JkZXItcmFkaXVzOiAwcHg7Ci0gICAgICAgIC13ZWJraXQtYm9y
ZGVyLXJhZGl1czogMHB4OwotICAgICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDBweDsKLSAgICAg
ICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgICAgICBtYXJnaW4tdG9wOiAtOHB4OwotICAgICAg
ICBtYXJnaW4tYm90dG9tOiAtOHB4OwotICAgICAgICBoZWlnaHQ6IDM2cHg7Ci0gICAgICAgIGJv
cmRlci10b3Atd2lkdGg6IDA7Ci0gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7Ci19Ci0K
LWEuYmVnaW4gewotICAgICAgICBib3JkZXItdG9wLXdpZHRoOjFweDsKLSAgICAgICAgcG9zaXRp
b246IHJlbGF0aXZlOwotICAgICAgICBtYXJnaW4tdG9wOiAwcHg7Ci0gICAgICAgIG1hcmdpbi1i
b3R0b206IC03cHg7Ci0gICAgICAgIGhlaWdodDogMjdweDsKLQlib3JkZXItdG9wLWxlZnQtcmFk
aXVzOiA0cHg7Ci0JLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7Ci0gICAgICAg
IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OiA0cHg7Ci0JYm9yZGVyLXRvcC1yaWdodC1yYWRp
dXM6IDRweDsKLQktd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7Ci0gICAgICAg
IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDogNHB4OwotfQotCi1hLmVuZCB7Ci0gICAgICAg
IGJvcmRlci1ib3R0b20td2lkdGg6MXB4OwotICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0g
ICAgICAgIG1hcmdpbi10b3A6IC03cHg7Ci0gICAgICAgIG1hcmdpbi1ib3R0b206IDBweDsKLSAg
ICAgICAgaGVpZ2h0OiAyN3B4OwotCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsKLQkt
d2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsKLSAgICAgICAgLW1vei1ib3Jk
ZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDRweDsKLQlib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czog
NHB4OwotCS13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsKLSAgICAgICAg
LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OiA0cHg7Ci19Ci0KLS5jZW50ZXJfYWxpZ24g
ewotICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLS5yaWdodF9hbGlnbiB7Ci0gICAg
ICAgIHRleHQtYWxpZ246IHJpZ2h0OwotfQotCi0ubGVmdF9hbGlnbiB7Ci0gICAgICAgIHRleHQt
YWxpZ246IGxlZnQ7Ci19Ci0KLWRpdi5CdWlsZFdhdGVyZmFsbCB7Ci0JYm9yZGVyLXJhZGl1czog
N3B4OwotCS13ZWJraXQtYm9yZGVyLXJhZGl1czogN3B4OwotCS1tb3otYm9yZGVyLXJhZGl1czog
N3B4OwotICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgICAgIGxlZnQ6IDBweDsKLSAg
ICAgICAgdG9wOiAwcHg7Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7Ci0gICAg
ICAgIHBhZGRpbmc6IDRweCA0cHggNHB4IDRweDsKLSAgICAgICAgZmxvYXQ6IGxlZnQ7Ci0gICAg
ICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAgICAgIGJvcmRlci13aWR0aDogMXB4OwotICAgICAgICBi
b3JkZXItc3R5bGU6IHNvbGlkOwotfQotCi0vKiBMYXN0QnVpbGQsIEJ1aWxkU3RlcCBzdGF0ZXMg
Ki8KLS5zdWNjZXNzIHsKLQljb2xvcjogI0ZGRkZGRjsKLQliYWNrZ3JvdW5kLWNvbG9yOiAjOGZk
ZjVmOwotICAgICAgICBib3JkZXItY29sb3I6ICM0Rjg1MzA7Ci19Ci0KLS5mYWlsdXJlIHsKLQlj
b2xvcjogI0ZGRkZGRjsKLQliYWNrZ3JvdW5kLWNvbG9yOiAjZTk4MDgwOwotICAgICAgICBib3Jk
ZXItY29sb3I6ICNBNzcyNzI7Ci19Ci0KLS53YXJuaW5ncyB7Ci0JY29sb3I6ICNGRkZGRkY7Ci0J
YmFja2dyb3VuZC1jb2xvcjogI2ZmYzM0MzsKLSAgICAgICAgYm9yZGVyLWNvbG9yOiAjQzI5RDQ2
OwotfQotCi0uZXhjZXB0aW9uLCB0ZC5vZmZsaW5lIHsKLQljb2xvcjogI0ZGRkZGRjsKLQliYWNr
Z3JvdW5kLWNvbG9yOiAjZTBiMGZmOwotICAgICAgICBib3JkZXItY29sb3I6ICNBQ0EwQjM7Ci19
Ci0KLS5zdGFydCwucnVubmluZywgdGQuYnVpbGRpbmcgewotCWNvbG9yOiAjNjY2NjY2OwotCWJh
Y2tncm91bmQtY29sb3I6ICNmZmZjNmM7Ci0gICAgICAgIGJvcmRlci1jb2xvcjogI0M1QzU2RDsK
LX0KLQotLnN0YXJ0IHsKLQlib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAxMHB4OwotCS13ZWJr
aXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMTBweDsKLQktbW96LWJvcmRlci1yYWRpdXMt
Ym90dG9tbGVmdDogMTBweDsKLQlib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMTBweDsKLQkt
d2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAxMHB4OwotCS1tb3otYm9yZGVyLXJh
ZGl1cy1ib3R0b21yaWdodDogMTBweDsKLX0KLQotLm5vdHN0YXJ0ZWQgewotICAgICAgICBib3Jk
ZXItd2lkdGg6MXB4OwotICAgICAgICBib3JkZXItc3R5bGU6c29saWQ7Ci0gICAgICAgIGJvcmRl
ci1jb2xvcjojYWFhOwotfQotCi10ZC5Qcm9qZWN0IGE6aG92ZXIsIHRkLnN0YXJ0IGE6aG92ZXIg
ewotICAgICAgICBjb2xvcjogIzAwMDsKLX0KLQotLyogZ3JpZCBzdHlsZXMgKi8KLQotdGFibGUu
R3JpZCB7Ci0gICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ci19Ci0KLXRhYmxlLkdy
aWQgdHIgdGQgewotICAgICAgICBwYWRkaW5nOiAwLjJlbTsKLSAgICAgICAgbWFyZ2luOiAwcHg7
Ci0gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotdGFibGUuR3JpZCB0ciB0ZC50aXRs
ZSB7Ci0gICAgICAgIGZvbnQtc2l6ZTogOTAlOwotICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBn
cmF5IHNvbGlkOwotICAgICAgICBib3JkZXItYm90dG9tOiAxcHggZ3JheSBzb2xpZDsKLX0KLQot
dGFibGUuR3JpZCB0ciB0ZC5zb3VyY2VzdGFtcCB7Ci0gICAgICAgIGZvbnQtc2l6ZTogOTAlOwot
fQotCi10YWJsZS5HcmlkIHRyIHRkLmJ1aWxkZXIgewotICAgICAgICB0ZXh0LWFsaWduOiByaWdo
dDsKLSAgICAgICAgZm9udC1zaXplOiA5MCU7Ci19Ci0KLXRhYmxlLkdyaWQgdHIgdGQuYnVpbGQg
ewotICAgICAgICBib3JkZXI6IDFweCBncmF5IHNvbGlkOwotfQpJbmRleDogVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9FeHRlcm5h
bC9kYXRlcmFuZ2VwaWNrZXIuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwvZGF0ZXJh
bmdlcGlja2VyLmNzcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9FeHRlcm5hbC9kYXRlcmFu
Z2VwaWNrZXIuY3NzCShub25leGlzdGVudCkKQEAgLTEsMjEyICswLDAgQEAKLS5kYXRlLXBpY2tl
ci13cmFwcGVyDQotew0KLQlwb3NpdGlvbjphYnNvbHV0ZTsNCi0Jei1pbmRleDoxOw0KLQlib3Jk
ZXI6MXB4IHNvbGlkICNiZmJmYmY7DQotCWJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHJnYmEo
MjU1LDI1NSwyNTUsMC45NSkscmdiYSgyMzUsMjM1LDIzNSwwLjk1KSk7DQotCXdpZHRoOjQyOHB4
Ow0KLQlwYWRkaW5nOiA1cHggMTJweDsNCi0JZm9udC1zaXplOjEycHg7DQotCWxpbmUtaGVpZ2h0
OjIwcHg7DQotICAgIGNvbG9yOnJnYigxNDUsIDEzNSwgOTUpOw0KLSAgICBmb250LWZhbWlseToi
SGVsdmV0aWNhTmV1ZS1MaWdodCIsIHNhbnMtc2VyaWY7DQotCWJveC1zaGFkb3c6M3B4IDNweCAx
MHB4IHJnYmEoMCwwLDAsMC41KTsNCi0JbGVmdDowOw0KLQlyaWdodDowOw0KLSAgICBtYXJnaW4t
bGVmdDphdXRvOw0KLSAgICBtYXJnaW4tcmlnaHQ6YXV0bzsNCi19DQotLmRhdGUtcGlja2VyLXdy
YXBwZXIuc2luZ2xlLWRhdGUgew0KLQl3aWR0aDphdXRvOw0KLX0NCi0uZGF0ZS1waWNrZXItd3Jh
cHBlci5uby1zaG9ydGN1dHMgeyBwYWRkaW5nLWJvdHRvbToxMnB4O30NCi0uZGF0ZS1waWNrZXIt
d3JhcHBlciAuZm9vdGVyDQotew0KLQlmb250LXNpemU6MTFweDsNCi0JcGFkZGluZy10b3A6IDNw
eDsNCi19DQotLmRhdGUtcGlja2VyLXdyYXBwZXIgYSANCi17DQotCWNvbG9yOiByZ2IoMTA3LCAx
ODAsIDIxNCk7DQotCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7DQotfQ0KLS5kYXRlLXBpY2tl
ci13cmFwcGVyIC5tb250aC13cmFwcGVyDQotew0KLQlib3JkZXI6MXB4IHNvbGlkICNiZmJmYmY7
DQotCWJvcmRlci1yYWRpdXM6M3B4Ow0KLQliYWNrZ3JvdW5kLWNvbG9yOiNmZmY7DQotCXBhZGRp
bmc6NXB4Ow0KLQljdXJzb3I6ZGVmYXVsdDsNCi0JcG9zaXRpb246cmVsYXRpdmU7DQotCV9vdmVy
ZmxvdzpoaWRkZW47DQotfQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5tb250aC13cmFwcGVyIHRh
YmxlDQotew0KLQl3aWR0aDoxOTBweDsNCi0JZmxvYXQ6bGVmdDsNCi19DQotLmRhdGUtcGlja2Vy
LXdyYXBwZXIgLm1vbnRoLXdyYXBwZXIgdGFibGUubW9udGgyDQotew0KLQl3aWR0aDoxOTBweDsN
Ci0JZmxvYXQ6cmlnaHQ7DQotfQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5tb250aC13cmFwcGVy
IHRhYmxlIHRoLA0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5tb250aC13cmFwcGVyIHRhYmxlIHRk
DQotew0KLQl2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7DQotCXRleHQtYWxpZ246Y2VudGVyOw0KLQls
aW5lLWhlaWdodDoxNHB4Ow0KLQltYXJnaW4gOiAwcHg7DQotCXBhZGRpbmcgOiAwcHg7DQotfQ0K
LS5kYXRlLXBpY2tlci13cmFwcGVyIC5tb250aC13cmFwcGVyIHRhYmxlIC5kYXkNCi17DQotCWhl
aWdodDoxOXB4Ow0KLQlsaW5lLWhlaWdodDoxOXB4Ow0KLQlmb250LXNpemU6MTJweDsNCi0JbWFy
Z2luLWJvdHRvbToxcHg7DQotCWNvbG9yOiM5OTk7DQotCWN1cnNvcjpkZWZhdWx0Ow0KLX0NCi0u
ZGF0ZS1waWNrZXItd3JhcHBlciAubW9udGgtd3JhcHBlciB0YWJsZSBkaXYuZGF5Lmxhc3RNb250
aCwNCi0uZGF0ZS1waWNrZXItd3JhcHBlciAubW9udGgtd3JhcHBlciB0YWJsZSBkaXYuZGF5Lm5l
eHRNb250aA0KLXsNCi0JY29sb3I6Izk5OTsNCi0JY3Vyc29yOmRlZmF1bHQ7DQotfQ0KLS5kYXRl
LXBpY2tlci13cmFwcGVyIC5tb250aC13cmFwcGVyIHRhYmxlIC5kYXkuY2hlY2tlZA0KLXsNCi0J
YmFja2dyb3VuZC1jb2xvcjogcmdiKDE1NiwgMjE5LCAyNDcpOw0KLX0NCi0uZGF0ZS1waWNrZXIt
d3JhcHBlciAubW9udGgtd3JhcHBlciB0YWJsZSAud2Vlay1uYW1lDQotew0KLQloZWlnaHQ6MjBw
eDsNCi0JbGluZS1oZWlnaHQ6MjBweDsNCi0JZm9udC13ZWlnaHQ6MTAwOw0KLSAgICBjb2xvcjpy
Z2IoMTg1LCAxNzUsIDEyNSk7DQotfQ0KLQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5tb250aC13
cmFwcGVyIHRhYmxlIC5kYXkuaGFzLXRvb2x0aXAgeyBjdXJzb3I6aGVscCAhaW1wb3J0YW50O30N
Ci0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAubW9udGgtd3JhcHBlciB0YWJsZSAuZGF5LnRvTW9u
dGgudmFsaWQNCi17DQotCWNvbG9yOiMzMzM7DQotCWN1cnNvcjpwb2ludGVyOw0KLX0NCi0NCi0u
ZGF0ZS1waWNrZXItd3JhcHBlciAubW9udGgtd3JhcHBlciB0YWJsZSAuZGF5LnJlYWwtdG9kYXkg
eyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyMzAsIDEzMik7IH0NCi0uZGF0ZS1waWNrZXIt
d3JhcHBlciAubW9udGgtd3JhcHBlciB0YWJsZSAuZGF5LnJlYWwtdG9kYXkuY2hlY2tlZCB7IGJh
Y2tncm91bmQtY29sb3I6IHJnYigxMTIsIDIwNCwgMjEzKTsgfQ0KLQ0KLQ0KLS5kYXRlLXBpY2tl
ci13cmFwcGVyIHRhYmxlIC5jYXB0aW9uDQotew0KLQloZWlnaHQ6NDBweDsNCi0gICAgY29sb3I6
cmdiKDE4NSwgMTc1LCAxMjUpOw0KLX0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciB0YWJsZSAuY2Fw
dGlvbiAubmV4dCwNCi0uZGF0ZS1waWNrZXItd3JhcHBlciB0YWJsZSAuY2FwdGlvbiAucHJldg0K
LXsNCi0JcGFkZGluZzowIDVweDsNCi0JY3Vyc29yOnBvaW50ZXI7DQotfQ0KLS5kYXRlLXBpY2tl
ci13cmFwcGVyIHRhYmxlIC5jYXB0aW9uIC5uZXh0OmhvdmVyLA0KLS5kYXRlLXBpY2tlci13cmFw
cGVyIHRhYmxlIC5jYXB0aW9uIC5wcmV2OmhvdmVyDQotew0KLQliYWNrZ3JvdW5kLWNvbG9yOiNj
Y2M7DQotCWNvbG9yOndoaXRlOw0KLX0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAuZ2FwDQotew0K
LQlwb3NpdGlvbjphYnNvbHV0ZTsNCi0JZGlzcGxheTpub25lOw0KLQl0b3A6MHB4Ow0KLQlsZWZ0
OjIwNHB4Ow0KLQl6LWluZGV4OiAxOw0KLQl3aWR0aDoxNXB4Ow0KLQloZWlnaHQ6IDEwMCU7DQot
CWJhY2tncm91bmQtY29sb3I6cmVkOw0KLQlmb250LXNpemU6MDsNCi0JbGluZS1oZWlnaHQ6MDsN
Ci19DQotLmRhdGUtcGlja2VyLXdyYXBwZXIgLmdhcCAuZ2FwLWxpbmVzIHsgaGVpZ2h0OiAxMDAl
OyBvdmVyZmxvdzpoaWRkZW47IH0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAuZ2FwIC5nYXAtbGlu
ZSB7IGhlaWdodDoxNXB4O3dpZHRoOjE1cHg7IHBvc2l0aW9uOnJlbGF0aXZlOyAgfQ0KLS5kYXRl
LXBpY2tlci13cmFwcGVyIC5nYXAgLmdhcC1saW5lIC5nYXAtMSB7IHotaW5kZXg6MTsgaGVpZ2h0
OjA7IGJvcmRlci1sZWZ0OjhweCBzb2xpZCB3aGl0ZTsgYm9yZGVyLXRvcDo4cHggc29saWQgI2Vl
ZTtib3JkZXItYm90dG9tOjhweCBzb2xpZCAjZWVlOyB9DQotLmRhdGUtcGlja2VyLXdyYXBwZXIg
LmdhcCAuZ2FwLWxpbmUgLmdhcC0yIHsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjA7IHRvcDow
cHg7IHotaW5kZXg6MjsgaGVpZ2h0OjA7IGJvcmRlci1sZWZ0OjhweCBzb2xpZCB0cmFuc3BhcmVu
dDsgYm9yZGVyLXRvcDo4cHggc29saWQgd2hpdGU7IH0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAu
Z2FwIC5nYXAtbGluZSAuZ2FwLTMgeyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MDsgdG9wOjhw
eDsgei1pbmRleDoyOyBoZWlnaHQ6MDsgYm9yZGVyLWxlZnQ6OHB4IHNvbGlkIHRyYW5zcGFyZW50
OyBib3JkZXItYm90dG9tOjhweCBzb2xpZCB3aGl0ZTsgfQ0KLS5kYXRlLXBpY2tlci13cmFwcGVy
IC5nYXAgLmdhcC10b3AtbWFzayB7IHdpZHRoOiA2cHg7IGhlaWdodDoxcHg7IHBvc2l0aW9uOmFi
c29sdXRlOyB0b3A6IC0xcHg7IGxlZnQ6IDFweDsgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsgei1p
bmRleDozOyB9DQotLmRhdGUtcGlja2VyLXdyYXBwZXIgLmdhcCAuZ2FwLWJvdHRvbS1tYXNrIHsg
d2lkdGg6IDZweDsgaGVpZ2h0OjFweDsgcG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTogLTFweDsg
bGVmdDogN3B4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOyB6LWluZGV4OjM7IH0NCi0NCi0uZGF0
ZS1waWNrZXItd3JhcHBlciAuc2VsZWN0ZWQtZGF5cw0KLXsNCi0JZGlzcGxheTpub25lOw0KLX0N
Ci0uZGF0ZS1waWNrZXItd3JhcHBlciAuZHJwX3RvcC1iYXINCi17DQotCWxpbmUtaGVpZ2h0OjM2
cHg7DQotCXBvc2l0aW9uOnJlbGF0aXZlOw0KLQlmb250LXNpemU6MTRweDsNCi19DQotLmRhdGUt
cGlja2VyLXdyYXBwZXIgLmRycF90b3AtYmFyIC5lcnJvci10b3AgeyBkaXNwbGF5Om5vbmU7IH0N
Ci0uZGF0ZS1waWNrZXItd3JhcHBlciAuZHJwX3RvcC1iYXIgLm5vcm1hbC10b3AgeyBkaXNwbGF5
Om5vbmU7IH0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAuZHJwX3RvcC1iYXIgLmRlZmF1bHQtdG9w
IHsgZGlzcGxheTpibG9jazt9DQotDQotLmRhdGUtcGlja2VyLXdyYXBwZXIgLmRycF90b3AtYmFy
LmVycm9yIC5kZWZhdWx0LXRvcCB7IGRpc3BsYXk6bm9uZTsgfQ0KLS5kYXRlLXBpY2tlci13cmFw
cGVyIC5kcnBfdG9wLWJhci5lcnJvciAuZXJyb3ItdG9wIHsgZGlzcGxheTpibG9jazsgY29sb3I6
cmVkOyB9DQotDQotLmRhdGUtcGlja2VyLXdyYXBwZXIgLmRycF90b3AtYmFyLm5vcm1hbCAuZGVm
YXVsdC10b3AgeyBkaXNwbGF5Om5vbmU7IH0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAuZHJwX3Rv
cC1iYXIubm9ybWFsIC5ub3JtYWwtdG9wIHsgZGlzcGxheTpibG9jazsgfQ0KLQ0KLS5kYXRlLXBp
Y2tlci13cmFwcGVyIC5kcnBfdG9wLWJhciAuYXBwbHktYnRuDQotew0KLQlwb3NpdGlvbjphYnNv
bHV0ZTsNCi0JcmlnaHQ6IDBweDsgDQotCXRvcDogNnB4Ow0KLQlwYWRkaW5nOjNweCA1cHg7DQot
CW1hcmdpbjowOw0KLQlmb250LXNpemU6MTJweDsNCi0JYm9yZGVyLXJhZGl1czo0cHg7DQotCWN1
cnNvcjpwb2ludGVyOw0KLQkNCi0JY29sb3I6ICNkOWVlZjc7DQotCWJvcmRlcjogc29saWQgMXB4
ICMwMDc2YTM7DQotCWJhY2tncm91bmQ6ICMwMDk1Y2Q7DQotCWJhY2tncm91bmQ6IC13ZWJraXQt
Z3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20oIzAwYWRlZSksIHRv
KCMwMDc4YTUpKTsNCi0JYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAgIzAw
YWRlZSwgICMwMDc4YTUpOw0KLS8qCWZpbHRlcjogIHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1p
Y3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjMDBhZGVlJywgZW5kQ29sb3JzdHI9JyMw
MDc4YTUnKTsqLw0KLQljb2xvcjp3aGl0ZTsNCi19DQotDQotLmRhdGUtcGlja2VyLXdyYXBwZXIg
LmRycF90b3AtYmFyIC5hcHBseS1idG4uZGlzYWJsZWQNCi17DQotCWN1cnNvcjogcG9pbnRlcjsN
Ci0JY29sb3I6ICM2MDYwNjA7DQotCWJvcmRlcjogc29saWQgMXB4ICNiN2I3Yjc7DQotCWJhY2tn
cm91bmQ6ICNmZmY7DQotCWJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0
IHRvcCwgbGVmdCBib3R0b20sIGZyb20oI2ZmZiksIHRvKCNlZGVkZWQpKTsNCi0JYmFja2dyb3Vu
ZDogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ZmZiwgICNlZGVkZWQpOw0KLS8qCWZpbHRl
cjogIHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9y
c3RyPScjZmZmZmZmJywgZW5kQ29sb3JzdHI9JyNlZGVkZWQnKTsqLw0KLX0NCi0vKnRpbWUgc3R5
bGluZyovDQotLnRpbWUgew0KLQlwb3NpdGlvbjogcmVsYXRpdmU7DQotfQ0KLS50aW1lIGlucHV0
W3R5cGU9cmFuZ2VdIHsNCi0gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQotfQ0KLS50aW1lMSwg
LnRpbWUyIHsNCi0Jd2lkdGg6IDE4MHB4Ow0KLQlwYWRkaW5nOiAwIDVweDsNCi0JdGV4dC1hbGln
bjogY2VudGVyOw0KLX0NCi0udGltZTEgew0KLQlmbG9hdDogbGVmdDsNCi19DQotLnRpbWUyIHsN
Ci0JZmxvYXQ6IHJpZ2h0OwkNCi19DQotLmhvdXIsIC5taW51dGUgew0KLQl0ZXh0LWFsaWduOiBy
aWdodDsNCi19DQotLmhpZGUgew0KLQlkaXNwbGF5OiBub25lOw0KLX0NCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL0V4dGVybmFsL2RhdGVyYW5nZXBpY2tlci5jc3MKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxl
dGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvY3NzClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwvanF1ZXJ5LTEuMTEuMS5taW4u
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9FeHRlcm5hbC9qcXVlcnktMS4xMS4xLm1pbi5qcwkocmV2
aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9FeHRlcm5hbC9qcXVlcnktMS4xMS4xLm1pbi5qcwkobm9u
ZXhpc3RlbnQpCkBAIC0xLDQgKzAsMCBAQAotLyohIGpRdWVyeSB2MS4xMS4xIHwgKGMpIDIwMDUs
IDIwMTQgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KLSFm
dW5jdGlvbihhLGIpeyJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiYib2JqZWN0Ij09dHlwZW9mIG1v
ZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPWEuZG9jdW1lbnQ/YihhLCEwKTpmdW5jdGlvbihh
KXtpZighYS5kb2N1bWVudCl0aHJvdyBuZXcgRXJyb3IoImpRdWVyeSByZXF1aXJlcyBhIHdpbmRv
dyB3aXRoIGEgZG9jdW1lbnQiKTtyZXR1cm4gYihhKX06YihhKX0oInVuZGVmaW5lZCIhPXR5cGVv
ZiB3aW5kb3c/d2luZG93OnRoaXMsZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkPWMuc2xpY2UsZT1j
LmNvbmNhdCxmPWMucHVzaCxnPWMuaW5kZXhPZixoPXt9LGk9aC50b1N0cmluZyxqPWguaGFzT3du
UHJvcGVydHksaz17fSxsPSIxLjExLjEiLG09ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IG0uZm4u
aW5pdChhLGIpfSxuPS9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZyxvPS9eLW1z
LS8scD0vLShbXGRhLXpdKS9naSxxPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIudG9VcHBlckNhc2Uo
KX07bS5mbj1tLnByb3RvdHlwZT17anF1ZXJ5OmwsY29uc3RydWN0b3I6bSxzZWxlY3RvcjoiIixs
ZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIGQuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0
aW9uKGEpe3JldHVybiBudWxsIT1hPzA+YT90aGlzW2ErdGhpcy5sZW5ndGhdOnRoaXNbYV06ZC5j
YWxsKHRoaXMpfSxwdXNoU3RhY2s6ZnVuY3Rpb24oYSl7dmFyIGI9bS5tZXJnZSh0aGlzLmNvbnN0
cnVjdG9yKCksYSk7cmV0dXJuIGIucHJldk9iamVjdD10aGlzLGIuY29udGV4dD10aGlzLmNvbnRl
eHQsYn0sZWFjaDpmdW5jdGlvbihhLGIpe3JldHVybiBtLmVhY2godGhpcyxhLGIpfSxtYXA6ZnVu
Y3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG0ubWFwKHRoaXMsZnVuY3Rpb24oYixjKXty
ZXR1cm4gYS5jYWxsKGIsYyxiKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNo
U3RhY2soZC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxlcTpmdW5jdGlv
bihhKXt2YXIgYj10aGlzLmxlbmd0aCxjPSthKygwPmE/YjowKTtyZXR1cm4gdGhpcy5wdXNoU3Rh
Y2soYz49MCYmYj5jP1t0aGlzW2NdXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBy
ZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IobnVsbCl9LHB1c2g6Zixzb3J0OmMuc29ydCxzcGxp
Y2U6Yy5zcGxpY2V9LG0uZXh0ZW5kPW0uZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQs
ZSxmLGc9YXJndW1lbnRzWzBdfHx7fSxoPTEsaT1hcmd1bWVudHMubGVuZ3RoLGo9ITE7Zm9yKCJi
b29sZWFuIj09dHlwZW9mIGcmJihqPWcsZz1hcmd1bWVudHNbaF18fHt9LGgrKyksIm9iamVjdCI9
PXR5cGVvZiBnfHxtLmlzRnVuY3Rpb24oZyl8fChnPXt9KSxoPT09aSYmKGc9dGhpcyxoLS0pO2k+
aDtoKyspaWYobnVsbCE9KGU9YXJndW1lbnRzW2hdKSlmb3IoZCBpbiBlKWE9Z1tkXSxjPWVbZF0s
ZyE9PWMmJihqJiZjJiYobS5pc1BsYWluT2JqZWN0KGMpfHwoYj1tLmlzQXJyYXkoYykpKT8oYj8o
Yj0hMSxmPWEmJm0uaXNBcnJheShhKT9hOltdKTpmPWEmJm0uaXNQbGFpbk9iamVjdChhKT9hOnt9
LGdbZF09bS5leHRlbmQoaixmLGMpKTp2b2lkIDAhPT1jJiYoZ1tkXT1jKSk7cmV0dXJuIGd9LG0u
ZXh0ZW5kKHtleHBhbmRvOiJqUXVlcnkiKyhsK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2cs
IiIpLGlzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IEVycm9yKGEpfSxub29w
OmZ1bmN0aW9uKCl7fSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PT1t
LnR5cGUoYSl9LGlzQXJyYXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oYSl7cmV0dXJuImFycmF5
Ij09PW0udHlwZShhKX0saXNXaW5kb3c6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PWEu
d2luZG93fSxpc051bWVyaWM6ZnVuY3Rpb24oYSl7cmV0dXJuIW0uaXNBcnJheShhKSYmYS1wYXJz
ZUZsb2F0KGEpPj0wfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiO2ZvcihiIGluIGEp
cmV0dXJuITE7cmV0dXJuITB9LGlzUGxhaW5PYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGI7aWYoIWF8
fCJvYmplY3QiIT09bS50eXBlKGEpfHxhLm5vZGVUeXBlfHxtLmlzV2luZG93KGEpKXJldHVybiEx
O3RyeXtpZihhLmNvbnN0cnVjdG9yJiYhai5jYWxsKGEsImNvbnN0cnVjdG9yIikmJiFqLmNhbGwo
YS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsImlzUHJvdG90eXBlT2YiKSlyZXR1cm4hMX1jYXRjaChj
KXtyZXR1cm4hMX1pZihrLm93bkxhc3QpZm9yKGIgaW4gYSlyZXR1cm4gai5jYWxsKGEsYik7Zm9y
KGIgaW4gYSk7cmV0dXJuIHZvaWQgMD09PWJ8fGouY2FsbChhLGIpfSx0eXBlOmZ1bmN0aW9uKGEp
e3JldHVybiBudWxsPT1hP2ErIiI6Im9iamVjdCI9PXR5cGVvZiBhfHwiZnVuY3Rpb24iPT10eXBl
b2YgYT9oW2kuY2FsbChhKV18fCJvYmplY3QiOnR5cGVvZiBhfSxnbG9iYWxFdmFsOmZ1bmN0aW9u
KGIpe2ImJm0udHJpbShiKSYmKGEuZXhlY1NjcmlwdHx8ZnVuY3Rpb24oYil7YS5ldmFsLmNhbGwo
YSxiKX0pKGIpfSxjYW1lbENhc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShvLCJtcy0i
KS5yZXBsYWNlKHAscSl9LG5vZGVOYW1lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubm9kZU5hbWUm
JmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIudG9Mb3dlckNhc2UoKX0sZWFjaDpmdW5jdGlv
bihhLGIsYyl7dmFyIGQsZT0wLGY9YS5sZW5ndGgsZz1yKGEpO2lmKGMpe2lmKGcpe2Zvcig7Zj5l
O2UrKylpZihkPWIuYXBwbHkoYVtlXSxjKSxkPT09ITEpYnJlYWt9ZWxzZSBmb3IoZSBpbiBhKWlm
KGQ9Yi5hcHBseShhW2VdLGMpLGQ9PT0hMSlicmVha31lbHNlIGlmKGcpe2Zvcig7Zj5lO2UrKylp
ZihkPWIuY2FsbChhW2VdLGUsYVtlXSksZD09PSExKWJyZWFrfWVsc2UgZm9yKGUgaW4gYSlpZihk
PWIuY2FsbChhW2VdLGUsYVtlXSksZD09PSExKWJyZWFrO3JldHVybiBhfSx0cmltOmZ1bmN0aW9u
KGEpe3JldHVybiBudWxsPT1hPyIiOihhKyIiKS5yZXBsYWNlKG4sIiIpfSxtYWtlQXJyYXk6ZnVu
Y3Rpb24oYSxiKXt2YXIgYz1ifHxbXTtyZXR1cm4gbnVsbCE9YSYmKHIoT2JqZWN0KGEpKT9tLm1l
cmdlKGMsInN0cmluZyI9PXR5cGVvZiBhP1thXTphKTpmLmNhbGwoYyxhKSksY30saW5BcnJheTpm
dW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoYil7aWYoZylyZXR1cm4gZy5jYWxsKGIsYSxjKTtmb3Io
ZD1iLmxlbmd0aCxjPWM/MD5jP01hdGgubWF4KDAsZCtjKTpjOjA7ZD5jO2MrKylpZihjIGluIGIm
JmJbY109PT1hKXJldHVybiBjfXJldHVybi0xfSxtZXJnZTpmdW5jdGlvbihhLGIpe3ZhciBjPSti
Lmxlbmd0aCxkPTAsZT1hLmxlbmd0aDt3aGlsZShjPmQpYVtlKytdPWJbZCsrXTtpZihjIT09Yyl3
aGlsZSh2b2lkIDAhPT1iW2RdKWFbZSsrXT1iW2QrK107cmV0dXJuIGEubGVuZ3RoPWUsYX0sZ3Jl
cDpmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkLGU9W10sZj0wLGc9YS5sZW5ndGgsaD0hYztnPmY7
ZisrKWQ9IWIoYVtmXSxmKSxkIT09aCYmZS5wdXNoKGFbZl0pO3JldHVybiBlfSxtYXA6ZnVuY3Rp
b24oYSxiLGMpe3ZhciBkLGY9MCxnPWEubGVuZ3RoLGg9cihhKSxpPVtdO2lmKGgpZm9yKDtnPmY7
ZisrKWQ9YihhW2ZdLGYsYyksbnVsbCE9ZCYmaS5wdXNoKGQpO2Vsc2UgZm9yKGYgaW4gYSlkPWIo
YVtmXSxmLGMpLG51bGwhPWQmJmkucHVzaChkKTtyZXR1cm4gZS5hcHBseShbXSxpKX0sZ3VpZDox
LHByb3h5OmZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmO3JldHVybiJzdHJpbmciPT10eXBlb2YgYiYm
KGY9YVtiXSxiPWEsYT1mKSxtLmlzRnVuY3Rpb24oYSk/KGM9ZC5jYWxsKGFyZ3VtZW50cywyKSxl
PWZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYnx8dGhpcyxjLmNvbmNhdChkLmNhbGwoYXJndW1l
bnRzKSkpfSxlLmd1aWQ9YS5ndWlkPWEuZ3VpZHx8bS5ndWlkKyssZSk6dm9pZCAwfSxub3c6ZnVu
Y3Rpb24oKXtyZXR1cm4rbmV3IERhdGV9LHN1cHBvcnQ6a30pLG0uZWFjaCgiQm9vbGVhbiBOdW1i
ZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciIuc3BsaXQo
IiAiKSxmdW5jdGlvbihhLGIpe2hbIltvYmplY3QgIitiKyJdIl09Yi50b0xvd2VyQ2FzZSgpfSk7
ZnVuY3Rpb24gcihhKXt2YXIgYj1hLmxlbmd0aCxjPW0udHlwZShhKTtyZXR1cm4iZnVuY3Rpb24i
PT09Y3x8bS5pc1dpbmRvdyhhKT8hMToxPT09YS5ub2RlVHlwZSYmYj8hMDoiYXJyYXkiPT09Y3x8
MD09PWJ8fCJudW1iZXIiPT10eXBlb2YgYiYmYj4wJiZiLTEgaW4gYX12YXIgcz1mdW5jdGlvbihh
KXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1PSJzaXp6bGUiKy1u
ZXcgRGF0ZSx2PWEuZG9jdW1lbnQsdz0wLHg9MCx5PWdiKCksej1nYigpLEE9Z2IoKSxCPWZ1bmN0
aW9uKGEsYil7cmV0dXJuIGE9PT1iJiYobD0hMCksMH0sQz0idW5kZWZpbmVkIixEPTE8PDMxLEU9
e30uaGFzT3duUHJvcGVydHksRj1bXSxHPUYucG9wLEg9Ri5wdXNoLEk9Ri5wdXNoLEo9Ri5zbGlj
ZSxLPUYuaW5kZXhPZnx8ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz10aGlzLmxlbmd0aDtjPmI7
YisrKWlmKHRoaXNbYl09PT1hKXJldHVybiBiO3JldHVybi0xfSxMPSJjaGVja2VkfHNlbGVjdGVk
fGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58
aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsTT0iW1xc
eDIwXFx0XFxyXFxuXFxmXSIsTj0iKD86XFxcXC58W1xcdy1dfFteXFx4MDAtXFx4YTBdKSsiLE89
Ti5yZXBsYWNlKCJ3IiwidyMiKSxQPSJcXFsiK00rIiooIitOKyIpKD86IitNKyIqKFsqXiR8IX5d
Pz0pIitNKyIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJd
KSopXCJ8KCIrTysiKSl8KSIrTSsiKlxcXSIsUT0iOigiK04rIikoPzpcXCgoKCcoKD86XFxcXC58
W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxc
KClbXFxdXXwiK1ArIikqKXwuKilcXCl8KSIsUj1uZXcgUmVnRXhwKCJeIitNKyIrfCgoPzpefFte
XFxcXF0pKD86XFxcXC4pKikiK00rIiskIiwiZyIpLFM9bmV3IFJlZ0V4cCgiXiIrTSsiKiwiK00r
IioiKSxUPW5ldyBSZWdFeHAoIl4iK00rIiooWz4rfl18IitNKyIpIitNKyIqIiksVT1uZXcgUmVn
RXhwKCI9IitNKyIqKFteXFxdJ1wiXSo/KSIrTSsiKlxcXSIsImciKSxWPW5ldyBSZWdFeHAoUSks
Vz1uZXcgUmVnRXhwKCJeIitPKyIkIiksWD17SUQ6bmV3IFJlZ0V4cCgiXiMoIitOKyIpIiksQ0xB
U1M6bmV3IFJlZ0V4cCgiXlxcLigiK04rIikiKSxUQUc6bmV3IFJlZ0V4cCgiXigiK04ucmVwbGFj
ZSgidyIsIncqIikrIikiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK1ApLFBTRVVETzpuZXcgUmVnRXhw
KCJeIitRKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0
KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK00rIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCki
K00rIiooPzooWystXXwpIitNKyIqKFxcZCspfCkpIitNKyIqXFwpfCkiLCJpIiksYm9vbDpuZXcg
UmVnRXhwKCJeKD86IitMKyIpJCIsImkiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cCgiXiIrTSsi
Kls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIitNKyIqKCg/
Oi1cXGQpP1xcZCopIitNKyIqXFwpfCkoPz1bXi1dfCQpIiwiaSIpfSxZPS9eKD86aW5wdXR8c2Vs
ZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksWj0vXmhcZCQvaSwkPS9eW157XStce1xzKlxbbmF0aXZl
IFx3LyxfPS9eKD86IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8sYWI9L1srfl0vLGJiPS8n
fFxcL2csY2I9bmV3IFJlZ0V4cCgiXFxcXChbXFxkYS1mXXsxLDZ9IitNKyI/fCgiK00rIil8Liki
LCJpZyIpLGRiPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0iMHgiK2ItNjU1MzY7cmV0dXJuIGQhPT1k
fHxjP2I6MD5kP1N0cmluZy5mcm9tQ2hhckNvZGUoZCs2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29k
ZShkPj4xMHw1NTI5NiwxMDIzJmR8NTYzMjApfTt0cnl7SS5hcHBseShGPUouY2FsbCh2LmNoaWxk
Tm9kZXMpLHYuY2hpbGROb2RlcyksRlt2LmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRj
aChlYil7ST17YXBwbHk6Ri5sZW5ndGg/ZnVuY3Rpb24oYSxiKXtILmFwcGx5KGEsSi5jYWxsKGIp
KX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aCxkPTA7d2hpbGUoYVtjKytdPWJbZCsrXSk7
YS5sZW5ndGg9Yy0xfX19ZnVuY3Rpb24gZmIoYSxiLGQsZSl7dmFyIGYsaCxqLGssbCxvLHIscyx3
LHg7aWYoKGI/Yi5vd25lckRvY3VtZW50fHxiOnYpIT09biYmbShiKSxiPWJ8fG4sZD1kfHxbXSwh
YXx8InN0cmluZyIhPXR5cGVvZiBhKXJldHVybiBkO2lmKDEhPT0oaz1iLm5vZGVUeXBlKSYmOSE9
PWspcmV0dXJuW107aWYocCYmIWUpe2lmKGY9Xy5leGVjKGEpKWlmKGo9ZlsxXSl7aWYoOT09PWsp
e2lmKGg9Yi5nZXRFbGVtZW50QnlJZChqKSwhaHx8IWgucGFyZW50Tm9kZSlyZXR1cm4gZDtpZiho
LmlkPT09ailyZXR1cm4gZC5wdXNoKGgpLGR9ZWxzZSBpZihiLm93bmVyRG9jdW1lbnQmJihoPWIu
b3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZChqKSkmJnQoYixoKSYmaC5pZD09PWopcmV0dXJu
IGQucHVzaChoKSxkfWVsc2V7aWYoZlsyXSlyZXR1cm4gSS5hcHBseShkLGIuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoYSkpLGQ7aWYoKGo9ZlszXSkmJmMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmYi5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBJLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKGopKSxkfWlmKGMucXNhJiYoIXF8fCFxLnRlc3QoYSkpKXtpZihzPXI9dSx3PWIseD05
PT09ayYmYSwxPT09ayYmIm9iamVjdCIhPT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe289Zyhh
KSwocj1iLmdldEF0dHJpYnV0ZSgiaWQiKSk/cz1yLnJlcGxhY2UoYmIsIlxcJCYiKTpiLnNldEF0
dHJpYnV0ZSgiaWQiLHMpLHM9IltpZD0nIitzKyInXSAiLGw9by5sZW5ndGg7d2hpbGUobC0tKW9b
bF09cytxYihvW2xdKTt3PWFiLnRlc3QoYSkmJm9iKGIucGFyZW50Tm9kZSl8fGIseD1vLmpvaW4o
IiwiKX1pZih4KXRyeXtyZXR1cm4gSS5hcHBseShkLHcucXVlcnlTZWxlY3RvckFsbCh4KSksZH1j
YXRjaCh5KXt9ZmluYWxseXtyfHxiLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBpKGEu
cmVwbGFjZShSLCIkMSIpLGIsZCxlKX1mdW5jdGlvbiBnYigpe3ZhciBhPVtdO2Z1bmN0aW9uIGIo
YyxlKXtyZXR1cm4gYS5wdXNoKGMrIiAiKT5kLmNhY2hlTGVuZ3RoJiZkZWxldGUgYlthLnNoaWZ0
KCldLGJbYysiICJdPWV9cmV0dXJuIGJ9ZnVuY3Rpb24gaGIoYSl7cmV0dXJuIGFbdV09ITAsYX1m
dW5jdGlvbiBpYihhKXt2YXIgYj1uLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RyeXtyZXR1cm4hIWEo
Yil9Y2F0Y2goYyl7cmV0dXJuITF9ZmluYWxseXtiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5y
ZW1vdmVDaGlsZChiKSxiPW51bGx9fWZ1bmN0aW9uIGpiKGEsYil7dmFyIGM9YS5zcGxpdCgifCIp
LGU9YS5sZW5ndGg7d2hpbGUoZS0tKWQuYXR0ckhhbmRsZVtjW2VdXT1ifWZ1bmN0aW9uIGtiKGEs
Yil7dmFyIGM9YiYmYSxkPWMmJjE9PT1hLm5vZGVUeXBlJiYxPT09Yi5ub2RlVHlwZSYmKH5iLnNv
dXJjZUluZGV4fHxEKS0ofmEuc291cmNlSW5kZXh8fEQpO2lmKGQpcmV0dXJuIGQ7aWYoYyl3aGls
ZShjPWMubmV4dFNpYmxpbmcpaWYoYz09PWIpcmV0dXJuLTE7cmV0dXJuIGE/MTotMX1mdW5jdGlv
biBsYihhKXtyZXR1cm4gZnVuY3Rpb24oYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
O3JldHVybiJpbnB1dCI9PT1jJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBtYihhKXtyZXR1cm4gZnVu
Y3Rpb24oYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybigiaW5wdXQiPT09
Y3x8ImJ1dHRvbiI9PT1jKSYmYi50eXBlPT09YX19ZnVuY3Rpb24gbmIoYSl7cmV0dXJuIGhiKGZ1
bmN0aW9uKGIpe3JldHVybiBiPStiLGhiKGZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hKFtdLGMubGVu
Z3RoLGIpLGc9Zi5sZW5ndGg7d2hpbGUoZy0tKWNbZT1mW2ddXSYmKGNbZV09IShkW2VdPWNbZV0p
KX0pfSl9ZnVuY3Rpb24gb2IoYSl7cmV0dXJuIGEmJnR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdO
YW1lIT09QyYmYX1jPWZiLnN1cHBvcnQ9e30sZj1mYi5pc1hNTD1mdW5jdGlvbihhKXt2YXIgYj1h
JiYoYS5vd25lckRvY3VtZW50fHxhKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIGI/IkhUTUwiIT09
Yi5ub2RlTmFtZTohMX0sbT1mYi5zZXREb2N1bWVudD1mdW5jdGlvbihhKXt2YXIgYixlPWE/YS5v
d25lckRvY3VtZW50fHxhOnYsZz1lLmRlZmF1bHRWaWV3O3JldHVybiBlIT09biYmOT09PWUubm9k
ZVR5cGUmJmUuZG9jdW1lbnRFbGVtZW50PyhuPWUsbz1lLmRvY3VtZW50RWxlbWVudCxwPSFmKGUp
LGcmJmchPT1nLnRvcCYmKGcuYWRkRXZlbnRMaXN0ZW5lcj9nLmFkZEV2ZW50TGlzdGVuZXIoInVu
bG9hZCIsZnVuY3Rpb24oKXttKCl9LCExKTpnLmF0dGFjaEV2ZW50JiZnLmF0dGFjaEV2ZW50KCJv
bnVubG9hZCIsZnVuY3Rpb24oKXttKCl9KSksYy5hdHRyaWJ1dGVzPWliKGZ1bmN0aW9uKGEpe3Jl
dHVybiBhLmNsYXNzTmFtZT0iaSIsIWEuZ2V0QXR0cmlidXRlKCJjbGFzc05hbWUiKX0pLGMuZ2V0
RWxlbWVudHNCeVRhZ05hbWU9aWIoZnVuY3Rpb24oYSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZS5j
cmVhdGVDb21tZW50KCIiKSksIWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGh9KSxj
LmdldEVsZW1lbnRzQnlDbGFzc05hbWU9JC50ZXN0KGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSkm
JmliKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGRpdiBjbGFzcz0nYSc+PC9kaXY+
PGRpdiBjbGFzcz0nYSBpJz48L2Rpdj4iLGEuZmlyc3RDaGlsZC5jbGFzc05hbWU9ImkiLDI9PT1h
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImkiKS5sZW5ndGh9KSxjLmdldEJ5SWQ9aWIoZnVuY3Rp
b24oYSl7cmV0dXJuIG8uYXBwZW5kQ2hpbGQoYSkuaWQ9dSwhZS5nZXRFbGVtZW50c0J5TmFtZXx8
IWUuZ2V0RWxlbWVudHNCeU5hbWUodSkubGVuZ3RofSksYy5nZXRCeUlkPyhkLmZpbmQuSUQ9ZnVu
Y3Rpb24oYSxiKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50QnlJZCE9PUMmJnApe3ZhciBjPWIuZ2V0
RWxlbWVudEJ5SWQoYSk7cmV0dXJuIGMmJmMucGFyZW50Tm9kZT9bY106W119fSxkLmZpbHRlci5J
RD1mdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoY2IsZGIpO3JldHVybiBmdW5jdGlvbihhKXty
ZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImlkIik9PT1ifX0pOihkZWxldGUgZC5maW5kLklELGQuZmls
dGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYixkYik7cmV0dXJuIGZ1bmN0aW9u
KGEpe3ZhciBjPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUhPT1DJiZhLmdldEF0dHJpYnV0ZU5v
ZGUoImlkIik7cmV0dXJuIGMmJmMudmFsdWU9PT1ifX0pLGQuZmluZC5UQUc9Yy5nZXRFbGVtZW50
c0J5VGFnTmFtZT9mdW5jdGlvbihhLGIpe3JldHVybiB0eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFn
TmFtZSE9PUM/Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKTp2b2lkIDB9OmZ1bmN0aW9uKGEsYil7
dmFyIGMsZD1bXSxlPTAsZj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpO2lmKCIqIj09PWEpe3do
aWxlKGM9ZltlKytdKTE9PT1jLm5vZGVUeXBlJiZkLnB1c2goYyk7cmV0dXJuIGR9cmV0dXJuIGZ9
LGQuZmluZC5DTEFTUz1jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGEsYil7cmV0
dXJuIHR5cGVvZiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUhPT1DJiZwP2IuZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZShhKTp2b2lkIDB9LHI9W10scT1bXSwoYy5xc2E9JC50ZXN0KGUucXVlcnlTZWxl
Y3RvckFsbCkpJiYoaWIoZnVuY3Rpb24oYSl7YS5pbm5lckhUTUw9IjxzZWxlY3QgbXNhbGxvd2Ns
aXA9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGEucXVlcnlTZWxl
Y3RvckFsbCgiW21zYWxsb3djbGlwXj0nJ10iKS5sZW5ndGgmJnEucHVzaCgiWypeJF09IitNKyIq
KD86Jyd8XCJcIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHEu
cHVzaCgiXFxbIitNKyIqKD86dmFsdWV8IitMKyIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hl
Y2tlZCIpLmxlbmd0aHx8cS5wdXNoKCI6Y2hlY2tlZCIpfSksaWIoZnVuY3Rpb24oYSl7dmFyIGI9
ZS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiks
YS5hcHBlbmRDaGlsZChiKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksYS5xdWVyeVNlbGVjdG9y
QWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmcS5wdXNoKCJuYW1lIitNKyIqWypeJHwhfl0/PSIpLGEu
cXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGh8fHEucHVzaCgiOmVuYWJsZWQiLCI6
ZGlzYWJsZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSxxLnB1c2goIiwuKjoiKX0pKSwo
Yy5tYXRjaGVzU2VsZWN0b3I9JC50ZXN0KHM9by5tYXRjaGVzfHxvLndlYmtpdE1hdGNoZXNTZWxl
Y3Rvcnx8by5tb3pNYXRjaGVzU2VsZWN0b3J8fG8ub01hdGNoZXNTZWxlY3Rvcnx8by5tc01hdGNo
ZXNTZWxlY3RvcikpJiZpYihmdW5jdGlvbihhKXtjLmRpc2Nvbm5lY3RlZE1hdGNoPXMuY2FsbChh
LCJkaXYiKSxzLmNhbGwoYSwiW3MhPScnXTp4Iiksci5wdXNoKCIhPSIsUSl9KSxxPXEubGVuZ3Ro
JiZuZXcgUmVnRXhwKHEuam9pbigifCIpKSxyPXIubGVuZ3RoJiZuZXcgUmVnRXhwKHIuam9pbigi
fCIpKSxiPSQudGVzdChvLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSx0PWJ8fCQudGVzdChvLmNv
bnRhaW5zKT9mdW5jdGlvbihhLGIpe3ZhciBjPTk9PT1hLm5vZGVUeXBlP2EuZG9jdW1lbnRFbGVt
ZW50OmEsZD1iJiZiLnBhcmVudE5vZGU7cmV0dXJuIGE9PT1kfHwhKCFkfHwxIT09ZC5ub2RlVHlw
ZXx8IShjLmNvbnRhaW5zP2MuY29udGFpbnMoZCk6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYm
MTYmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihkKSkpfTpmdW5jdGlvbihhLGIpe2lmKGIpd2hp
bGUoYj1iLnBhcmVudE5vZGUpaWYoYj09PWEpcmV0dXJuITA7cmV0dXJuITF9LEI9Yj9mdW5jdGlv
bihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGQ9IWEuY29tcGFyZURvY3VtZW50UG9z
aXRpb24tIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb247cmV0dXJuIGQ/ZDooZD0oYS5vd25lckRv
Y3VtZW50fHxhKT09PShiLm93bmVyRG9jdW1lbnR8fGIpP2EuY29tcGFyZURvY3VtZW50UG9zaXRp
b24oYik6MSwxJmR8fCFjLnNvcnREZXRhY2hlZCYmYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihh
KT09PWQ/YT09PWV8fGEub3duZXJEb2N1bWVudD09PXYmJnQodixhKT8tMTpiPT09ZXx8Yi5vd25l
ckRvY3VtZW50PT09diYmdCh2LGIpPzE6az9LLmNhbGwoayxhKS1LLmNhbGwoayxiKTowOjQmZD8t
MToxKX06ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBjLGQ9MCxmPWEu
cGFyZW50Tm9kZSxnPWIucGFyZW50Tm9kZSxoPVthXSxpPVtiXTtpZighZnx8IWcpcmV0dXJuIGE9
PT1lPy0xOmI9PT1lPzE6Zj8tMTpnPzE6az9LLmNhbGwoayxhKS1LLmNhbGwoayxiKTowO2lmKGY9
PT1nKXJldHVybiBrYihhLGIpO2M9YTt3aGlsZShjPWMucGFyZW50Tm9kZSloLnVuc2hpZnQoYyk7
Yz1iO3doaWxlKGM9Yy5wYXJlbnROb2RlKWkudW5zaGlmdChjKTt3aGlsZShoW2RdPT09aVtkXSlk
Kys7cmV0dXJuIGQ/a2IoaFtkXSxpW2RdKTpoW2RdPT09dj8tMTppW2RdPT09dj8xOjB9LGUpOm59
LGZiLm1hdGNoZXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZmIoYSxudWxsLG51bGwsYil9LGZiLm1h
dGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGIpe2lmKChhLm93bmVyRG9jdW1lbnR8fGEpIT09biYm
bShhKSxiPWIucmVwbGFjZShVLCI9JyQxJ10iKSwhKCFjLm1hdGNoZXNTZWxlY3Rvcnx8IXB8fHIm
JnIudGVzdChiKXx8cSYmcS50ZXN0KGIpKSl0cnl7dmFyIGQ9cy5jYWxsKGEsYik7aWYoZHx8Yy5k
aXNjb25uZWN0ZWRNYXRjaHx8YS5kb2N1bWVudCYmMTEhPT1hLmRvY3VtZW50Lm5vZGVUeXBlKXJl
dHVybiBkfWNhdGNoKGUpe31yZXR1cm4gZmIoYixuLG51bGwsW2FdKS5sZW5ndGg+MH0sZmIuY29u
dGFpbnM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSks
dChhLGIpfSxmYi5hdHRyPWZ1bmN0aW9uKGEsYil7KGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZt
KGEpO3ZhciBlPWQuYXR0ckhhbmRsZVtiLnRvTG93ZXJDYXNlKCldLGY9ZSYmRS5jYWxsKGQuYXR0
ckhhbmRsZSxiLnRvTG93ZXJDYXNlKCkpP2UoYSxiLCFwKTp2b2lkIDA7cmV0dXJuIHZvaWQgMCE9
PWY/ZjpjLmF0dHJpYnV0ZXN8fCFwP2EuZ2V0QXR0cmlidXRlKGIpOihmPWEuZ2V0QXR0cmlidXRl
Tm9kZShiKSkmJmYuc3BlY2lmaWVkP2YudmFsdWU6bnVsbH0sZmIuZXJyb3I9ZnVuY3Rpb24oYSl7
dGhyb3cgbmV3IEVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAi
K2EpfSxmYi51bmlxdWVTb3J0PWZ1bmN0aW9uKGEpe3ZhciBiLGQ9W10sZT0wLGY9MDtpZihsPSFj
LmRldGVjdER1cGxpY2F0ZXMsaz0hYy5zb3J0U3RhYmxlJiZhLnNsaWNlKDApLGEuc29ydChCKSxs
KXt3aGlsZShiPWFbZisrXSliPT09YVtmXSYmKGU9ZC5wdXNoKGYpKTt3aGlsZShlLS0pYS5zcGxp
Y2UoZFtlXSwxKX1yZXR1cm4gaz1udWxsLGF9LGU9ZmIuZ2V0VGV4dD1mdW5jdGlvbihhKXt2YXIg
YixjPSIiLGQ9MCxmPWEubm9kZVR5cGU7aWYoZil7aWYoMT09PWZ8fDk9PT1mfHwxMT09PWYpe2lm
KCJzdHJpbmciPT10eXBlb2YgYS50ZXh0Q29udGVudClyZXR1cm4gYS50ZXh0Q29udGVudDtmb3Io
YT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpYys9ZShhKX1lbHNlIGlmKDM9PT1mfHw0
PT09ZilyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSB3aGlsZShiPWFbZCsrXSljKz1lKGIpO3JldHVy
biBjfSxkPWZiLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmhiLG1hdGNo
OlgsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9kZSIs
Zmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGlu
ZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRS
OmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0ucmVwbGFjZShjYixkYiksYVszXT0oYVszXXx8
YVs0XXx8YVs1XXx8IiIpLnJlcGxhY2UoY2IsZGIpLCJ+PSI9PT1hWzJdJiYoYVszXT0iICIrYVsz
XSsiICIpLGEuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS50
b0xvd2VyQ2FzZSgpLCJudGgiPT09YVsxXS5zbGljZSgwLDMpPyhhWzNdfHxmYi5lcnJvcihhWzBd
KSxhWzRdPSsoYVs0XT9hWzVdKyhhWzZdfHwxKToyKigiZXZlbiI9PT1hWzNdfHwib2RkIj09PWFb
M10pKSxhWzVdPSsoYVs3XSthWzhdfHwib2RkIj09PWFbM10pKTphWzNdJiZmYi5lcnJvcihhWzBd
KSxhfSxQU0VVRE86ZnVuY3Rpb24oYSl7dmFyIGIsYz0hYVs2XSYmYVsyXTtyZXR1cm4gWC5DSElM
RC50ZXN0KGFbMF0pP251bGw6KGFbM10/YVsyXT1hWzRdfHxhWzVdfHwiIjpjJiZWLnRlc3QoYykm
JihiPWcoYywhMCkpJiYoYj1jLmluZGV4T2YoIikiLGMubGVuZ3RoLWIpLWMubGVuZ3RoKSYmKGFb
MF09YVswXS5zbGljZSgwLGIpLGFbMl09Yy5zbGljZSgwLGIpKSxhLnNsaWNlKDAsMykpfX0sZmls
dGVyOntUQUc6ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGNiLGRiKS50b0xvd2VyQ2FzZSgp
O3JldHVybiIqIj09PWE/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oYSl7cmV0dXJuIGEu
bm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJ9fSxDTEFTUzpmdW5jdGlvbihh
KXt2YXIgYj15W2ErIiAiXTtyZXR1cm4gYnx8KGI9bmV3IFJlZ0V4cCgiKF58IitNKyIpIithKyIo
IitNKyJ8JCkiKSkmJnkoYSxmdW5jdGlvbihhKXtyZXR1cm4gYi50ZXN0KCJzdHJpbmciPT10eXBl
b2YgYS5jbGFzc05hbWUmJmEuY2xhc3NOYW1lfHx0eXBlb2YgYS5nZXRBdHRyaWJ1dGUhPT1DJiZh
LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24oYSxiLGMpe3JldHVy
biBmdW5jdGlvbihkKXt2YXIgZT1mYi5hdHRyKGQsYSk7cmV0dXJuIG51bGw9PWU/IiE9Ij09PWI6
Yj8oZSs9IiIsIj0iPT09Yj9lPT09YzoiIT0iPT09Yj9lIT09YzoiXj0iPT09Yj9jJiYwPT09ZS5p
bmRleE9mKGMpOiIqPSI9PT1iP2MmJmUuaW5kZXhPZihjKT4tMToiJD0iPT09Yj9jJiZlLnNsaWNl
KC1jLmxlbmd0aCk9PT1jOiJ+PSI9PT1iPygiICIrZSsiICIpLmluZGV4T2YoYyk+LTE6Inw9Ij09
PWI/ZT09PWN8fGUuc2xpY2UoMCxjLmxlbmd0aCsxKT09PWMrIi0iOiExKTohMH19LENISUxEOmZ1
bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9Im50aCIhPT1hLnNsaWNlKDAsMyksZz0ibGFzdCIhPT1h
LnNsaWNlKC00KSxoPSJvZi10eXBlIj09PWI7cmV0dXJuIDE9PT1kJiYwPT09ZT9mdW5jdGlvbihh
KXtyZXR1cm4hIWEucGFyZW50Tm9kZX06ZnVuY3Rpb24oYixjLGkpe3ZhciBqLGssbCxtLG4sbyxw
PWYhPT1nPyJuZXh0U2libGluZyI6InByZXZpb3VzU2libGluZyIscT1iLnBhcmVudE5vZGUscj1o
JiZiLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkscz0haSYmIWg7aWYocSl7aWYoZil7d2hpbGUocCl7
bD1iO3doaWxlKGw9bFtwXSlpZihoP2wubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PWwu
bm9kZVR5cGUpcmV0dXJuITE7bz1wPSJvbmx5Ij09PWEmJiFvJiYibmV4dFNpYmxpbmcifXJldHVy
biEwfWlmKG89W2c/cS5maXJzdENoaWxkOnEubGFzdENoaWxkXSxnJiZzKXtrPXFbdV18fChxW3Vd
PXt9KSxqPWtbYV18fFtdLG49alswXT09PXcmJmpbMV0sbT1qWzBdPT09dyYmalsyXSxsPW4mJnEu
Y2hpbGROb2Rlc1tuXTt3aGlsZShsPSsrbiYmbCYmbFtwXXx8KG09bj0wKXx8by5wb3AoKSlpZigx
PT09bC5ub2RlVHlwZSYmKyttJiZsPT09Yil7a1thXT1bdyxuLG1dO2JyZWFrfX1lbHNlIGlmKHMm
JihqPShiW3VdfHwoYlt1XT17fSkpW2FdKSYmalswXT09PXcpbT1qWzFdO2Vsc2Ugd2hpbGUobD0r
K24mJmwmJmxbcF18fChtPW49MCl8fG8ucG9wKCkpaWYoKGg/bC5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpPT09cjoxPT09bC5ub2RlVHlwZSkmJisrbSYmKHMmJigobFt1XXx8KGxbdV09e30pKVthXT1b
dyxtXSksbD09PWIpKWJyZWFrO3JldHVybiBtLT1lLG09PT1kfHxtJWQ9PT0wJiZtL2Q+PTB9fX0s
UFNFVURPOmZ1bmN0aW9uKGEsYil7dmFyIGMsZT1kLnBzZXVkb3NbYV18fGQuc2V0RmlsdGVyc1th
LnRvTG93ZXJDYXNlKCldfHxmYi5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2EpO3JldHVy
biBlW3VdP2UoYik6ZS5sZW5ndGg+MT8oYz1bYSxhLCIiLGJdLGQuc2V0RmlsdGVycy5oYXNPd25Q
cm9wZXJ0eShhLnRvTG93ZXJDYXNlKCkpP2hiKGZ1bmN0aW9uKGEsYyl7dmFyIGQsZj1lKGEsYiks
Zz1mLmxlbmd0aDt3aGlsZShnLS0pZD1LLmNhbGwoYSxmW2ddKSxhW2RdPSEoY1tkXT1mW2ddKX0p
OmZ1bmN0aW9uKGEpe3JldHVybiBlKGEsMCxjKX0pOmV9fSxwc2V1ZG9zOntub3Q6aGIoZnVuY3Rp
b24oYSl7dmFyIGI9W10sYz1bXSxkPWgoYS5yZXBsYWNlKFIsIiQxIikpO3JldHVybiBkW3VdP2hi
KGZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmLGc9ZChhLG51bGwsZSxbXSksaD1hLmxlbmd0aDt3aGls
ZShoLS0pKGY9Z1toXSkmJihhW2hdPSEoYltoXT1mKSl9KTpmdW5jdGlvbihhLGUsZil7cmV0dXJu
IGJbMF09YSxkKGIsbnVsbCxmLGMpLCFjLnBvcCgpfX0pLGhhczpoYihmdW5jdGlvbihhKXtyZXR1
cm4gZnVuY3Rpb24oYil7cmV0dXJuIGZiKGEsYikubGVuZ3RoPjB9fSksY29udGFpbnM6aGIoZnVu
Y3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybihiLnRleHRDb250ZW50fHxiLmlubmVy
VGV4dHx8ZShiKSkuaW5kZXhPZihhKT4tMX19KSxsYW5nOmhiKGZ1bmN0aW9uKGEpe3JldHVybiBX
LnRlc3QoYXx8IiIpfHxmYi5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIithKSxhPWEucmVwbGFj
ZShjYixkYikudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihiKXt2YXIgYztkbyBpZihjPXA/Yi5sYW5n
OmIuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxiLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVy
biBjPWMudG9Mb3dlckNhc2UoKSxjPT09YXx8MD09PWMuaW5kZXhPZihhKyItIik7d2hpbGUoKGI9
Yi5wYXJlbnROb2RlKSYmMT09PWIubm9kZVR5cGUpO3JldHVybiExfX0pLHRhcmdldDpmdW5jdGlv
bihiKXt2YXIgYz1hLmxvY2F0aW9uJiZhLmxvY2F0aW9uLmhhc2g7cmV0dXJuIGMmJmMuc2xpY2Uo
MSk9PT1iLmlkfSxyb290OmZ1bmN0aW9uKGEpe3JldHVybiBhPT09b30sZm9jdXM6ZnVuY3Rpb24o
YSl7cmV0dXJuIGE9PT1uLmFjdGl2ZUVsZW1lbnQmJighbi5oYXNGb2N1c3x8bi5oYXNGb2N1cygp
KSYmISEoYS50eXBlfHxhLmhyZWZ8fH5hLnRhYkluZGV4KX0sZW5hYmxlZDpmdW5jdGlvbihhKXty
ZXR1cm4gYS5kaXNhYmxlZD09PSExfSxkaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNh
YmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNh
c2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmISFhLmNoZWNrZWR8fCJvcHRpb24iPT09YiYmISFhLnNl
bGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5wYXJlbnROb2RlJiZhLnBhcmVu
dE5vZGUuc2VsZWN0ZWRJbmRleCxhLnNlbGVjdGVkPT09ITB9LGVtcHR5OmZ1bmN0aW9uKGEpe2Zv
cihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZylpZihhLm5vZGVUeXBlPDYpcmV0dXJu
ITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4hZC5wc2V1ZG9zLmVtcHR5KGEp
fSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIFoudGVzdChhLm5vZGVOYW1lKX0saW5wdXQ6ZnVu
Y3Rpb24oYSl7cmV0dXJuIFkudGVzdChhLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3Zh
ciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmImJ1dHRvbiI9
PT1hLnR5cGV8fCJidXR0b24iPT09Yn0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4iaW5w
dXQiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9PT1hLnR5cGUmJihudWxsPT0o
Yj1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09Yi50b0xvd2VyQ2FzZSgpKX0sZmly
c3Q6bmIoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0Om5iKGZ1bmN0aW9uKGEsYil7cmV0dXJu
W2ItMV19KSxlcTpuYihmdW5jdGlvbihhLGIsYyl7cmV0dXJuWzA+Yz9jK2I6Y119KSxldmVuOm5i
KGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7Yj5jO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSks
b2RkOm5iKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7Yj5jO2MrPTIpYS5wdXNoKGMpO3JldHVy
biBhfSksbHQ6bmIoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wPmM/YytiOmM7LS1kPj0wOylh
LnB1c2goZCk7cmV0dXJuIGF9KSxndDpuYihmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA+Yz9j
K2I6YzsrK2Q8YjspYS5wdXNoKGQpO3JldHVybiBhfSl9fSxkLnBzZXVkb3MubnRoPWQucHNldWRv
cy5lcTtmb3IoYiBpbntyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLGlt
YWdlOiEwfSlkLnBzZXVkb3NbYl09bGIoYik7Zm9yKGIgaW57c3VibWl0OiEwLHJlc2V0OiEwfSlk
LnBzZXVkb3NbYl09bWIoYik7ZnVuY3Rpb24gcGIoKXt9cGIucHJvdG90eXBlPWQuZmlsdGVycz1k
LnBzZXVkb3MsZC5zZXRGaWx0ZXJzPW5ldyBwYixnPWZiLnRva2VuaXplPWZ1bmN0aW9uKGEsYil7
dmFyIGMsZSxmLGcsaCxpLGosaz16W2ErIiAiXTtpZihrKXJldHVybiBiPzA6ay5zbGljZSgwKTto
PWEsaT1bXSxqPWQucHJlRmlsdGVyO3doaWxlKGgpeyghY3x8KGU9Uy5leGVjKGgpKSkmJihlJiYo
aD1oLnNsaWNlKGVbMF0ubGVuZ3RoKXx8aCksaS5wdXNoKGY9W10pKSxjPSExLChlPVQuZXhlYyho
KSkmJihjPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmMsdHlwZTplWzBdLnJlcGxhY2UoUiwiICIp
fSksaD1oLnNsaWNlKGMubGVuZ3RoKSk7Zm9yKGcgaW4gZC5maWx0ZXIpIShlPVhbZ10uZXhlYyho
KSl8fGpbZ10mJiEoZT1qW2ddKGUpKXx8KGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBl
OmcsbWF0Y2hlczplfSksaD1oLnNsaWNlKGMubGVuZ3RoKSk7aWYoIWMpYnJlYWt9cmV0dXJuIGI/
aC5sZW5ndGg6aD9mYi5lcnJvcihhKTp6KGEsaSkuc2xpY2UoMCl9O2Z1bmN0aW9uIHFiKGEpe2Zv
cih2YXIgYj0wLGM9YS5sZW5ndGgsZD0iIjtjPmI7YisrKWQrPWFbYl0udmFsdWU7cmV0dXJuIGR9
ZnVuY3Rpb24gcmIoYSxiLGMpe3ZhciBkPWIuZGlyLGU9YyYmInBhcmVudE5vZGUiPT09ZCxmPXgr
KztyZXR1cm4gYi5maXJzdD9mdW5jdGlvbihiLGMsZil7d2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5v
ZGVUeXBlfHxlKXJldHVybiBhKGIsYyxmKX06ZnVuY3Rpb24oYixjLGcpe3ZhciBoLGksaj1bdyxm
XTtpZihnKXt3aGlsZShiPWJbZF0paWYoKDE9PT1iLm5vZGVUeXBlfHxlKSYmYShiLGMsZykpcmV0
dXJuITB9ZWxzZSB3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGUpe2lmKGk9Ylt1XXx8
KGJbdV09e30pLChoPWlbZF0pJiZoWzBdPT09dyYmaFsxXT09PWYpcmV0dXJuIGpbMl09aFsyXTtp
ZihpW2RdPWosalsyXT1hKGIsYyxnKSlyZXR1cm4hMH19fWZ1bmN0aW9uIHNiKGEpe3JldHVybiBh
Lmxlbmd0aD4xP2Z1bmN0aW9uKGIsYyxkKXt2YXIgZT1hLmxlbmd0aDt3aGlsZShlLS0paWYoIWFb
ZV0oYixjLGQpKXJldHVybiExO3JldHVybiEwfTphWzBdfWZ1bmN0aW9uIHRiKGEsYixjKXtmb3Io
dmFyIGQ9MCxlPWIubGVuZ3RoO2U+ZDtkKyspZmIoYSxiW2RdLGMpO3JldHVybiBjfWZ1bmN0aW9u
IHViKGEsYixjLGQsZSl7Zm9yKHZhciBmLGc9W10saD0wLGk9YS5sZW5ndGgsaj1udWxsIT1iO2k+
aDtoKyspKGY9YVtoXSkmJighY3x8YyhmLGQsZSkpJiYoZy5wdXNoKGYpLGomJmIucHVzaChoKSk7
cmV0dXJuIGd9ZnVuY3Rpb24gdmIoYSxiLGMsZCxlLGYpe3JldHVybiBkJiYhZFt1XSYmKGQ9dmIo
ZCkpLGUmJiFlW3VdJiYoZT12YihlLGYpKSxoYihmdW5jdGlvbihmLGcsaCxpKXt2YXIgaixrLGws
bT1bXSxuPVtdLG89Zy5sZW5ndGgscD1mfHx0YihifHwiKiIsaC5ub2RlVHlwZT9baF06aCxbXSks
cT0hYXx8IWYmJmI/cDp1YihwLG0sYSxoLGkpLHI9Yz9lfHwoZj9hOm98fGQpP1tdOmc6cTtpZihj
JiZjKHEscixoLGkpLGQpe2o9dWIocixuKSxkKGosW10saCxpKSxrPWoubGVuZ3RoO3doaWxlKGst
LSkobD1qW2tdKSYmKHJbbltrXV09IShxW25ba11dPWwpKX1pZihmKXtpZihlfHxhKXtpZihlKXtq
PVtdLGs9ci5sZW5ndGg7d2hpbGUoay0tKShsPXJba10pJiZqLnB1c2gocVtrXT1sKTtlKG51bGws
cj1bXSxqLGkpfWs9ci5sZW5ndGg7d2hpbGUoay0tKShsPXJba10pJiYoaj1lP0suY2FsbChmLGwp
Om1ba10pPi0xJiYoZltqXT0hKGdbal09bCkpfX1lbHNlIHI9dWIocj09PWc/ci5zcGxpY2Uobyxy
Lmxlbmd0aCk6ciksZT9lKG51bGwsZyxyLGkpOkkuYXBwbHkoZyxyKX0pfWZ1bmN0aW9uIHdiKGEp
e2Zvcih2YXIgYixjLGUsZj1hLmxlbmd0aCxnPWQucmVsYXRpdmVbYVswXS50eXBlXSxoPWd8fGQu
cmVsYXRpdmVbIiAiXSxpPWc/MTowLGs9cmIoZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1ifSxoLCEw
KSxsPXJiKGZ1bmN0aW9uKGEpe3JldHVybiBLLmNhbGwoYixhKT4tMX0saCwhMCksbT1bZnVuY3Rp
b24oYSxjLGQpe3JldHVybiFnJiYoZHx8YyE9PWopfHwoKGI9Yykubm9kZVR5cGU/ayhhLGMsZCk6
bChhLGMsZCkpfV07Zj5pO2krKylpZihjPWQucmVsYXRpdmVbYVtpXS50eXBlXSltPVtyYihzYiht
KSxjKV07ZWxzZXtpZihjPWQuZmlsdGVyW2FbaV0udHlwZV0uYXBwbHkobnVsbCxhW2ldLm1hdGNo
ZXMpLGNbdV0pe2ZvcihlPSsraTtmPmU7ZSsrKWlmKGQucmVsYXRpdmVbYVtlXS50eXBlXSlicmVh
aztyZXR1cm4gdmIoaT4xJiZzYihtKSxpPjEmJnFiKGEuc2xpY2UoMCxpLTEpLmNvbmNhdCh7dmFs
dWU6IiAiPT09YVtpLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoUiwiJDEiKSxjLGU+aSYmd2Io
YS5zbGljZShpLGUpKSxmPmUmJndiKGE9YS5zbGljZShlKSksZj5lJiZxYihhKSl9bS5wdXNoKGMp
fXJldHVybiBzYihtKX1mdW5jdGlvbiB4YihhLGIpe3ZhciBjPWIubGVuZ3RoPjAsZT1hLmxlbmd0
aD4wLGY9ZnVuY3Rpb24oZixnLGgsaSxrKXt2YXIgbCxtLG8scD0wLHE9IjAiLHI9ZiYmW10scz1b
XSx0PWosdT1mfHxlJiZkLmZpbmQuVEFHKCIqIixrKSx2PXcrPW51bGw9PXQ/MTpNYXRoLnJhbmRv
bSgpfHwuMSx4PXUubGVuZ3RoO2ZvcihrJiYoaj1nIT09biYmZyk7cSE9PXgmJm51bGwhPShsPXVb
cV0pO3ErKyl7aWYoZSYmbCl7bT0wO3doaWxlKG89YVttKytdKWlmKG8obCxnLGgpKXtpLnB1c2go
bCk7YnJlYWt9ayYmKHc9dil9YyYmKChsPSFvJiZsKSYmcC0tLGYmJnIucHVzaChsKSl9aWYocCs9
cSxjJiZxIT09cCl7bT0wO3doaWxlKG89YlttKytdKW8ocixzLGcsaCk7aWYoZil7aWYocD4wKXdo
aWxlKHEtLSlyW3FdfHxzW3FdfHwoc1txXT1HLmNhbGwoaSkpO3M9dWIocyl9SS5hcHBseShpLHMp
LGsmJiFmJiZzLmxlbmd0aD4wJiZwK2IubGVuZ3RoPjEmJmZiLnVuaXF1ZVNvcnQoaSl9cmV0dXJu
IGsmJih3PXYsaj10KSxyfTtyZXR1cm4gYz9oYihmKTpmfXJldHVybiBoPWZiLmNvbXBpbGU9ZnVu
Y3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9W10sZj1BW2ErIiAiXTtpZighZil7Ynx8KGI9ZyhhKSks
Yz1iLmxlbmd0aDt3aGlsZShjLS0pZj13YihiW2NdKSxmW3VdP2QucHVzaChmKTplLnB1c2goZik7
Zj1BKGEseGIoZSxkKSksZi5zZWxlY3Rvcj1hfXJldHVybiBmfSxpPWZiLnNlbGVjdD1mdW5jdGlv
bihhLGIsZSxmKXt2YXIgaSxqLGssbCxtLG49ImZ1bmN0aW9uIj09dHlwZW9mIGEmJmEsbz0hZiYm
ZyhhPW4uc2VsZWN0b3J8fGEpO2lmKGU9ZXx8W10sMT09PW8ubGVuZ3RoKXtpZihqPW9bMF09b1sw
XS5zbGljZSgwKSxqLmxlbmd0aD4yJiYiSUQiPT09KGs9alswXSkudHlwZSYmYy5nZXRCeUlkJiY5
PT09Yi5ub2RlVHlwZSYmcCYmZC5yZWxhdGl2ZVtqWzFdLnR5cGVdKXtpZihiPShkLmZpbmQuSUQo
ay5tYXRjaGVzWzBdLnJlcGxhY2UoY2IsZGIpLGIpfHxbXSlbMF0sIWIpcmV0dXJuIGU7biYmKGI9
Yi5wYXJlbnROb2RlKSxhPWEuc2xpY2Uoai5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9aT1YLm5lZWRz
Q29udGV4dC50ZXN0KGEpPzA6ai5sZW5ndGg7d2hpbGUoaS0tKXtpZihrPWpbaV0sZC5yZWxhdGl2
ZVtsPWsudHlwZV0pYnJlYWs7aWYoKG09ZC5maW5kW2xdKSYmKGY9bShrLm1hdGNoZXNbMF0ucmVw
bGFjZShjYixkYiksYWIudGVzdChqWzBdLnR5cGUpJiZvYihiLnBhcmVudE5vZGUpfHxiKSkpe2lm
KGouc3BsaWNlKGksMSksYT1mLmxlbmd0aCYmcWIoaiksIWEpcmV0dXJuIEkuYXBwbHkoZSxmKSxl
O2JyZWFrfX19cmV0dXJuKG58fGgoYSxvKSkoZixiLCFwLGUsYWIudGVzdChhKSYmb2IoYi5wYXJl
bnROb2RlKXx8YiksZX0sYy5zb3J0U3RhYmxlPXUuc3BsaXQoIiIpLnNvcnQoQikuam9pbigiIik9
PT11LGMuZGV0ZWN0RHVwbGljYXRlcz0hIWwsbSgpLGMuc29ydERldGFjaGVkPWliKGZ1bmN0aW9u
KGEpe3JldHVybiAxJmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24obi5jcmVhdGVFbGVtZW50KCJk
aXYiKSl9KSxpYihmdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwv
YT4iLCIjIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKX0pfHxqYigidHlwZXxo
cmVmfGhlaWdodHx3aWR0aCIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjP3ZvaWQgMDphLmdldEF0
dHJpYnV0ZShiLCJ0eXBlIj09PWIudG9Mb3dlckNhc2UoKT8xOjIpfSksYy5hdHRyaWJ1dGVzJiZp
YihmdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhUTUw9IjxpbnB1dC8+IixhLmZpcnN0Q2hpbGQu
c2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLCIiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgi
dmFsdWUiKX0pfHxqYigidmFsdWUiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY3x8ImlucHV0IiE9
PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT92b2lkIDA6YS5kZWZhdWx0VmFsdWV9KSxpYihmdW5j
dGlvbihhKXtyZXR1cm4gbnVsbD09YS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIil9KXx8amIoTCxm
dW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGM/dm9pZCAwOmFbYl09PT0hMD9iLnRvTG93ZXJD
YXNlKCk6KGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZC5zcGVjaWZpZWQ/ZC52YWx1ZTpudWxs
fSksZmJ9KGEpO20uZmluZD1zLG0uZXhwcj1zLnNlbGVjdG9ycyxtLmV4cHJbIjoiXT1tLmV4cHIu
cHNldWRvcyxtLnVuaXF1ZT1zLnVuaXF1ZVNvcnQsbS50ZXh0PXMuZ2V0VGV4dCxtLmlzWE1MRG9j
PXMuaXNYTUwsbS5jb250YWlucz1zLmNvbnRhaW5zO3ZhciB0PW0uZXhwci5tYXRjaC5uZWVkc0Nv
bnRleHQsdT0vXjwoXHcrKVxzKlwvPz4oPzo8XC9cMT58KSQvLHY9L14uW146I1xbXC4sXSokLztm
dW5jdGlvbiB3KGEsYixjKXtpZihtLmlzRnVuY3Rpb24oYikpcmV0dXJuIG0uZ3JlcChhLGZ1bmN0
aW9uKGEsZCl7cmV0dXJuISFiLmNhbGwoYSxkLGEpIT09Y30pO2lmKGIubm9kZVR5cGUpcmV0dXJu
IG0uZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBhPT09YiE9PWN9KTtpZigic3RyaW5nIj09dHlw
ZW9mIGIpe2lmKHYudGVzdChiKSlyZXR1cm4gbS5maWx0ZXIoYixhLGMpO2I9bS5maWx0ZXIoYixh
KX1yZXR1cm4gbS5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIG0uaW5BcnJheShhLGIpPj0wIT09
Y30pfW0uZmlsdGVyPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1iWzBdO3JldHVybiBjJiYoYT0iOm5v
dCgiK2ErIikiKSwxPT09Yi5sZW5ndGgmJjE9PT1kLm5vZGVUeXBlP20uZmluZC5tYXRjaGVzU2Vs
ZWN0b3IoZCxhKT9bZF06W106bS5maW5kLm1hdGNoZXMoYSxtLmdyZXAoYixmdW5jdGlvbihhKXty
ZXR1cm4gMT09PWEubm9kZVR5cGV9KSl9LG0uZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGEpe3Zh
ciBiLGM9W10sZD10aGlzLGU9ZC5sZW5ndGg7aWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybiB0
aGlzLnB1c2hTdGFjayhtKGEpLmZpbHRlcihmdW5jdGlvbigpe2ZvcihiPTA7ZT5iO2IrKylpZiht
LmNvbnRhaW5zKGRbYl0sdGhpcykpcmV0dXJuITB9KSk7Zm9yKGI9MDtlPmI7YisrKW0uZmluZChh
LGRbYl0sYyk7cmV0dXJuIGM9dGhpcy5wdXNoU3RhY2soZT4xP20udW5pcXVlKGMpOmMpLGMuc2Vs
ZWN0b3I9dGhpcy5zZWxlY3Rvcj90aGlzLnNlbGVjdG9yKyIgIithOmEsY30sZmlsdGVyOmZ1bmN0
aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayh3KHRoaXMsYXx8W10sITEpKX0sbm90OmZ1bmN0
aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayh3KHRoaXMsYXx8W10sITApKX0saXM6ZnVuY3Rp
b24oYSl7cmV0dXJuISF3KHRoaXMsInN0cmluZyI9PXR5cGVvZiBhJiZ0LnRlc3QoYSk/bShhKTph
fHxbXSwhMSkubGVuZ3RofX0pO3ZhciB4LHk9YS5kb2N1bWVudCx6PS9eKD86XHMqKDxbXHdcV10r
PilbXj5dKnwjKFtcdy1dKikpJC8sQT1tLmZuLmluaXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkO2lm
KCFhKXJldHVybiB0aGlzO2lmKCJzdHJpbmciPT10eXBlb2YgYSl7aWYoYz0iPCI9PT1hLmNoYXJB
dCgwKSYmIj4iPT09YS5jaGFyQXQoYS5sZW5ndGgtMSkmJmEubGVuZ3RoPj0zP1tudWxsLGEsbnVs
bF06ei5leGVjKGEpLCFjfHwhY1sxXSYmYilyZXR1cm4hYnx8Yi5qcXVlcnk/KGJ8fHgpLmZpbmQo
YSk6dGhpcy5jb25zdHJ1Y3RvcihiKS5maW5kKGEpO2lmKGNbMV0pe2lmKGI9YiBpbnN0YW5jZW9m
IG0/YlswXTpiLG0ubWVyZ2UodGhpcyxtLnBhcnNlSFRNTChjWzFdLGImJmIubm9kZVR5cGU/Yi5v
d25lckRvY3VtZW50fHxiOnksITApKSx1LnRlc3QoY1sxXSkmJm0uaXNQbGFpbk9iamVjdChiKSlm
b3IoYyBpbiBiKW0uaXNGdW5jdGlvbih0aGlzW2NdKT90aGlzW2NdKGJbY10pOnRoaXMuYXR0cihj
LGJbY10pO3JldHVybiB0aGlzfWlmKGQ9eS5nZXRFbGVtZW50QnlJZChjWzJdKSxkJiZkLnBhcmVu
dE5vZGUpe2lmKGQuaWQhPT1jWzJdKXJldHVybiB4LmZpbmQoYSk7dGhpcy5sZW5ndGg9MSx0aGlz
WzBdPWR9cmV0dXJuIHRoaXMuY29udGV4dD15LHRoaXMuc2VsZWN0b3I9YSx0aGlzfXJldHVybiBh
Lm5vZGVUeXBlPyh0aGlzLmNvbnRleHQ9dGhpc1swXT1hLHRoaXMubGVuZ3RoPTEsdGhpcyk6bS5p
c0Z1bmN0aW9uKGEpPyJ1bmRlZmluZWQiIT10eXBlb2YgeC5yZWFkeT94LnJlYWR5KGEpOmEobSk6
KHZvaWQgMCE9PWEuc2VsZWN0b3ImJih0aGlzLnNlbGVjdG9yPWEuc2VsZWN0b3IsdGhpcy5jb250
ZXh0PWEuY29udGV4dCksbS5tYWtlQXJyYXkoYSx0aGlzKSl9O0EucHJvdG90eXBlPW0uZm4seD1t
KHkpO3ZhciBCPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLEM9e2NoaWxkcmVuOiEw
LGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07bS5leHRlbmQoe2RpcjpmdW5jdGlvbihhLGIs
Yyl7dmFyIGQ9W10sZT1hW2JdO3doaWxlKGUmJjkhPT1lLm5vZGVUeXBlJiYodm9pZCAwPT09Y3x8
MSE9PWUubm9kZVR5cGV8fCFtKGUpLmlzKGMpKSkxPT09ZS5ub2RlVHlwZSYmZC5wdXNoKGUpLGU9
ZVtiXTtyZXR1cm4gZH0sc2libGluZzpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXTthO2E9YS5u
ZXh0U2libGluZykxPT09YS5ub2RlVHlwZSYmYSE9PWImJmMucHVzaChhKTtyZXR1cm4gY319KSxt
LmZuLmV4dGVuZCh7aGFzOmZ1bmN0aW9uKGEpe3ZhciBiLGM9bShhLHRoaXMpLGQ9Yy5sZW5ndGg7
cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGI9MDtkPmI7YisrKWlmKG0uY29udGFp
bnModGhpcyxjW2JdKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBj
LGQ9MCxlPXRoaXMubGVuZ3RoLGY9W10sZz10LnRlc3QoYSl8fCJzdHJpbmciIT10eXBlb2YgYT9t
KGEsYnx8dGhpcy5jb250ZXh0KTowO2U+ZDtkKyspZm9yKGM9dGhpc1tkXTtjJiZjIT09YjtjPWMu
cGFyZW50Tm9kZSlpZihjLm5vZGVUeXBlPDExJiYoZz9nLmluZGV4KGMpPi0xOjE9PT1jLm5vZGVU
eXBlJiZtLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGMsYSkpKXtmLnB1c2goYyk7YnJlYWt9cmV0dXJu
IHRoaXMucHVzaFN0YWNrKGYubGVuZ3RoPjE/bS51bmlxdWUoZik6Zil9LGluZGV4OmZ1bmN0aW9u
KGEpe3JldHVybiBhPyJzdHJpbmciPT10eXBlb2YgYT9tLmluQXJyYXkodGhpc1swXSxtKGEpKTpt
LmluQXJyYXkoYS5qcXVlcnk/YVswXTphLHRoaXMpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9k
ZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGEsYil7cmV0
dXJuIHRoaXMucHVzaFN0YWNrKG0udW5pcXVlKG0ubWVyZ2UodGhpcy5nZXQoKSxtKGEsYikpKSl9
LGFkZEJhY2s6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWE/dGhpcy5wcmV2T2Jq
ZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoYSkpfX0pO2Z1bmN0aW9uIEQoYSxiKXtkbyBhPWFb
Yl07d2hpbGUoYSYmMSE9PWEubm9kZVR5cGUpO3JldHVybiBhfW0uZWFjaCh7cGFyZW50OmZ1bmN0
aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmMTEhPT1iLm5vZGVUeXBlP2I6bnVs
bH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gbS5kaXIoYSwicGFyZW50Tm9kZSIpfSxwYXJl
bnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBtLmRpcihhLCJwYXJlbnROb2RlIixjKX0s
bmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gRChhLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9u
KGEpe3JldHVybiBEKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGEpe3Jl
dHVybiBtLmRpcihhLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBt
LmRpcihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1
cm4gbS5kaXIoYSwibmV4dFNpYmxpbmciLGMpfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3Jl
dHVybiBtLmRpcihhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxzaWJsaW5nczpmdW5jdGlvbihhKXty
ZXR1cm4gbS5zaWJsaW5nKChhLnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGEpfSxjaGlsZHJl
bjpmdW5jdGlvbihhKXtyZXR1cm4gbS5zaWJsaW5nKGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1
bmN0aW9uKGEpe3JldHVybiBtLm5vZGVOYW1lKGEsImlmcmFtZSIpP2EuY29udGVudERvY3VtZW50
fHxhLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6bS5tZXJnZShbXSxhLmNoaWxkTm9kZXMpfX0sZnVu
Y3Rpb24oYSxiKXttLmZuW2FdPWZ1bmN0aW9uKGMsZCl7dmFyIGU9bS5tYXAodGhpcyxiLGMpO3Jl
dHVybiJVbnRpbCIhPT1hLnNsaWNlKC01KSYmKGQ9YyksZCYmInN0cmluZyI9PXR5cGVvZiBkJiYo
ZT1tLmZpbHRlcihkLGUpKSx0aGlzLmxlbmd0aD4xJiYoQ1thXXx8KGU9bS51bmlxdWUoZSkpLEIu
dGVzdChhKSYmKGU9ZS5yZXZlcnNlKCkpKSx0aGlzLnB1c2hTdGFjayhlKX19KTt2YXIgRT0vXFMr
L2csRj17fTtmdW5jdGlvbiBHKGEpe3ZhciBiPUZbYV09e307cmV0dXJuIG0uZWFjaChhLm1hdGNo
KEUpfHxbXSxmdW5jdGlvbihhLGMpe2JbY109ITB9KSxifW0uQ2FsbGJhY2tzPWZ1bmN0aW9uKGEp
e2E9InN0cmluZyI9PXR5cGVvZiBhP0ZbYV18fEcoYSk6bS5leHRlbmQoe30sYSk7dmFyIGIsYyxk
LGUsZixnLGg9W10saT0hYS5vbmNlJiZbXSxqPWZ1bmN0aW9uKGwpe2ZvcihjPWEubWVtb3J5JiZs
LGQ9ITAsZj1nfHwwLGc9MCxlPWgubGVuZ3RoLGI9ITA7aCYmZT5mO2YrKylpZihoW2ZdLmFwcGx5
KGxbMF0sbFsxXSk9PT0hMSYmYS5zdG9wT25GYWxzZSl7Yz0hMTticmVha31iPSExLGgmJihpP2ku
bGVuZ3RoJiZqKGkuc2hpZnQoKSk6Yz9oPVtdOmsuZGlzYWJsZSgpKX0saz17YWRkOmZ1bmN0aW9u
KCl7aWYoaCl7dmFyIGQ9aC5sZW5ndGg7IWZ1bmN0aW9uIGYoYil7bS5lYWNoKGIsZnVuY3Rpb24o
YixjKXt2YXIgZD1tLnR5cGUoYyk7ImZ1bmN0aW9uIj09PWQ/YS51bmlxdWUmJmsuaGFzKGMpfHxo
LnB1c2goYyk6YyYmYy5sZW5ndGgmJiJzdHJpbmciIT09ZCYmZihjKX0pfShhcmd1bWVudHMpLGI/
ZT1oLmxlbmd0aDpjJiYoZz1kLGooYykpfXJldHVybiB0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXty
ZXR1cm4gaCYmbS5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbihhLGMpe3ZhciBkO3doaWxlKChkPW0u
aW5BcnJheShjLGgsZCkpPi0xKWguc3BsaWNlKGQsMSksYiYmKGU+PWQmJmUtLSxmPj1kJiZmLS0p
fSksdGhpc30saGFzOmZ1bmN0aW9uKGEpe3JldHVybiBhP20uaW5BcnJheShhLGgpPi0xOiEoIWh8
fCFoLmxlbmd0aCl9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIGg9W10sZT0wLHRoaXN9LGRpc2Fi
bGU6ZnVuY3Rpb24oKXtyZXR1cm4gaD1pPWM9dm9pZCAwLHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9u
KCl7cmV0dXJuIWh9LGxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gaT12b2lkIDAsY3x8ay5kaXNhYmxl
KCksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuIWl9LGZpcmVXaXRoOmZ1bmN0aW9uKGEs
Yyl7cmV0dXJuIWh8fGQmJiFpfHwoYz1jfHxbXSxjPVthLGMuc2xpY2U/Yy5zbGljZSgpOmNdLGI/
aS5wdXNoKGMpOmooYykpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gay5maXJlV2l0aCh0
aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWR9fTtyZXR1cm4g
a30sbS5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGEpe3ZhciBiPVtbInJlc29sdmUiLCJkb25l
IixtLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVzb2x2ZWQiXSxbInJlamVjdCIsImZhaWwi
LG0uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZWplY3RlZCJdLFsibm90aWZ5IiwicHJvZ3Jl
c3MiLG0uQ2FsbGJhY2tzKCJtZW1vcnkiKV1dLGM9InBlbmRpbmciLGQ9e3N0YXRlOmZ1bmN0aW9u
KCl7cmV0dXJuIGN9LGFsd2F5czpmdW5jdGlvbigpe3JldHVybiBlLmRvbmUoYXJndW1lbnRzKS5m
YWlsKGFyZ3VtZW50cyksdGhpc30sdGhlbjpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50cztyZXR1
cm4gbS5EZWZlcnJlZChmdW5jdGlvbihjKXttLmVhY2goYixmdW5jdGlvbihiLGYpe3ZhciBnPW0u
aXNGdW5jdGlvbihhW2JdKSYmYVtiXTtlW2ZbMV1dKGZ1bmN0aW9uKCl7dmFyIGE9ZyYmZy5hcHBs
eSh0aGlzLGFyZ3VtZW50cyk7YSYmbS5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/YS5wcm9taXNlKCku
ZG9uZShjLnJlc29sdmUpLmZhaWwoYy5yZWplY3QpLnByb2dyZXNzKGMubm90aWZ5KTpjW2ZbMF0r
IldpdGgiXSh0aGlzPT09ZD9jLnByb21pc2UoKTp0aGlzLGc/W2FdOmFyZ3VtZW50cyl9KX0pLGE9
bnVsbH0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YT9tLmV4
dGVuZChhLGQpOmR9fSxlPXt9O3JldHVybiBkLnBpcGU9ZC50aGVuLG0uZWFjaChiLGZ1bmN0aW9u
KGEsZil7dmFyIGc9ZlsyXSxoPWZbM107ZFtmWzFdXT1nLmFkZCxoJiZnLmFkZChmdW5jdGlvbigp
e2M9aH0sYlsxXmFdWzJdLmRpc2FibGUsYlsyXVsyXS5sb2NrKSxlW2ZbMF1dPWZ1bmN0aW9uKCl7
cmV0dXJuIGVbZlswXSsiV2l0aCJdKHRoaXM9PT1lP2Q6dGhpcyxhcmd1bWVudHMpLHRoaXN9LGVb
ZlswXSsiV2l0aCJdPWcuZmlyZVdpdGh9KSxkLnByb21pc2UoZSksYSYmYS5jYWxsKGUsZSksZX0s
d2hlbjpmdW5jdGlvbihhKXt2YXIgYj0wLGM9ZC5jYWxsKGFyZ3VtZW50cyksZT1jLmxlbmd0aCxm
PTEhPT1lfHxhJiZtLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9lOjAsZz0xPT09Zj9hOm0uRGVmZXJy
ZWQoKSxoPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZSl7YlthXT10aGlzLGNbYV09
YXJndW1lbnRzLmxlbmd0aD4xP2QuY2FsbChhcmd1bWVudHMpOmUsYz09PWk/Zy5ub3RpZnlXaXRo
KGIsYyk6LS1mfHxnLnJlc29sdmVXaXRoKGIsYyl9fSxpLGosaztpZihlPjEpZm9yKGk9bmV3IEFy
cmF5KGUpLGo9bmV3IEFycmF5KGUpLGs9bmV3IEFycmF5KGUpO2U+YjtiKyspY1tiXSYmbS5pc0Z1
bmN0aW9uKGNbYl0ucHJvbWlzZSk/Y1tiXS5wcm9taXNlKCkuZG9uZShoKGIsayxjKSkuZmFpbChn
LnJlamVjdCkucHJvZ3Jlc3MoaChiLGosaSkpOi0tZjtyZXR1cm4gZnx8Zy5yZXNvbHZlV2l0aChr
LGMpLGcucHJvbWlzZSgpfX0pO3ZhciBIO20uZm4ucmVhZHk9ZnVuY3Rpb24oYSl7cmV0dXJuIG0u
cmVhZHkucHJvbWlzZSgpLmRvbmUoYSksdGhpc30sbS5leHRlbmQoe2lzUmVhZHk6ITEscmVhZHlX
YWl0OjEsaG9sZFJlYWR5OmZ1bmN0aW9uKGEpe2E/bS5yZWFkeVdhaXQrKzptLnJlYWR5KCEwKX0s
cmVhZHk6ZnVuY3Rpb24oYSl7aWYoYT09PSEwPyEtLW0ucmVhZHlXYWl0OiFtLmlzUmVhZHkpe2lm
KCF5LmJvZHkpcmV0dXJuIHNldFRpbWVvdXQobS5yZWFkeSk7bS5pc1JlYWR5PSEwLGEhPT0hMCYm
LS1tLnJlYWR5V2FpdD4wfHwoSC5yZXNvbHZlV2l0aCh5LFttXSksbS5mbi50cmlnZ2VySGFuZGxl
ciYmKG0oeSkudHJpZ2dlckhhbmRsZXIoInJlYWR5IiksbSh5KS5vZmYoInJlYWR5IikpKX19fSk7
ZnVuY3Rpb24gSSgpe3kuYWRkRXZlbnRMaXN0ZW5lcj8oeS5yZW1vdmVFdmVudExpc3RlbmVyKCJE
T01Db250ZW50TG9hZGVkIixKLCExKSxhLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLEosITEp
KTooeS5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixKKSxhLmRldGFjaEV2ZW50KCJv
bmxvYWQiLEopKX1mdW5jdGlvbiBKKCl7KHkuYWRkRXZlbnRMaXN0ZW5lcnx8ImxvYWQiPT09ZXZl
bnQudHlwZXx8ImNvbXBsZXRlIj09PXkucmVhZHlTdGF0ZSkmJihJKCksbS5yZWFkeSgpKX1tLnJl
YWR5LnByb21pc2U9ZnVuY3Rpb24oYil7aWYoIUgpaWYoSD1tLkRlZmVycmVkKCksImNvbXBsZXRl
Ij09PXkucmVhZHlTdGF0ZSlzZXRUaW1lb3V0KG0ucmVhZHkpO2Vsc2UgaWYoeS5hZGRFdmVudExp
c3RlbmVyKXkuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsSiwhMSksYS5hZGRF
dmVudExpc3RlbmVyKCJsb2FkIixKLCExKTtlbHNle3kuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0
ZWNoYW5nZSIsSiksYS5hdHRhY2hFdmVudCgib25sb2FkIixKKTt2YXIgYz0hMTt0cnl7Yz1udWxs
PT1hLmZyYW1lRWxlbWVudCYmeS5kb2N1bWVudEVsZW1lbnR9Y2F0Y2goZCl7fWMmJmMuZG9TY3Jv
bGwmJiFmdW5jdGlvbiBlKCl7aWYoIW0uaXNSZWFkeSl7dHJ5e2MuZG9TY3JvbGwoImxlZnQiKX1j
YXRjaChhKXtyZXR1cm4gc2V0VGltZW91dChlLDUwKX1JKCksbS5yZWFkeSgpfX0oKX1yZXR1cm4g
SC5wcm9taXNlKGIpfTt2YXIgSz0idW5kZWZpbmVkIixMO2ZvcihMIGluIG0oaykpYnJlYWs7ay5v
d25MYXN0PSIwIiE9PUwsay5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PSExLG0oZnVuY3Rpb24oKXt2
YXIgYSxiLGMsZDtjPXkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxl
JiYoYj15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxkLnN0
eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2JvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7
dG9wOjA7bGVmdDotOTk5OXB4IixjLmFwcGVuZENoaWxkKGQpLmFwcGVuZENoaWxkKGIpLHR5cGVv
ZiBiLnN0eWxlLnpvb20hPT1LJiYoYi5zdHlsZS5jc3NUZXh0PSJkaXNwbGF5OmlubGluZTttYXJn
aW46MDtib3JkZXI6MDtwYWRkaW5nOjFweDt3aWR0aDoxcHg7em9vbToxIixrLmlubGluZUJsb2Nr
TmVlZHNMYXlvdXQ9YT0zPT09Yi5vZmZzZXRXaWR0aCxhJiYoYy5zdHlsZS56b29tPTEpKSxjLnJl
bW92ZUNoaWxkKGQpKX0pLGZ1bmN0aW9uKCl7dmFyIGE9eS5jcmVhdGVFbGVtZW50KCJkaXYiKTtp
ZihudWxsPT1rLmRlbGV0ZUV4cGFuZG8pe2suZGVsZXRlRXhwYW5kbz0hMDt0cnl7ZGVsZXRlIGEu
dGVzdH1jYXRjaChiKXtrLmRlbGV0ZUV4cGFuZG89ITF9fWE9bnVsbH0oKSxtLmFjY2VwdERhdGE9
ZnVuY3Rpb24oYSl7dmFyIGI9bS5ub0RhdGFbKGEubm9kZU5hbWUrIiAiKS50b0xvd2VyQ2FzZSgp
XSxjPSthLm5vZGVUeXBlfHwxO3JldHVybiAxIT09YyYmOSE9PWM/ITE6IWJ8fGIhPT0hMCYmYS5n
ZXRBdHRyaWJ1dGUoImNsYXNzaWQiKT09PWJ9O3ZhciBNPS9eKD86XHtbXHdcV10qXH18XFtbXHdc
V10qXF0pJC8sTj0vKFtBLVpdKS9nO2Z1bmN0aW9uIE8oYSxiLGMpe2lmKHZvaWQgMD09PWMmJjE9
PT1hLm5vZGVUeXBlKXt2YXIgZD0iZGF0YS0iK2IucmVwbGFjZShOLCItJDEiKS50b0xvd2VyQ2Fz
ZSgpO2lmKGM9YS5nZXRBdHRyaWJ1dGUoZCksInN0cmluZyI9PXR5cGVvZiBjKXt0cnl7Yz0idHJ1
ZSI9PT1jPyEwOiJmYWxzZSI9PT1jPyExOiJudWxsIj09PWM/bnVsbDorYysiIj09PWM/K2M6TS50
ZXN0KGMpP20ucGFyc2VKU09OKGMpOmN9Y2F0Y2goZSl7fW0uZGF0YShhLGIsYyl9ZWxzZSBjPXZv
aWQgMH1yZXR1cm4gY31mdW5jdGlvbiBQKGEpe3ZhciBiO2ZvcihiIGluIGEpaWYoKCJkYXRhIiE9
PWJ8fCFtLmlzRW1wdHlPYmplY3QoYVtiXSkpJiYidG9KU09OIiE9PWIpcmV0dXJuITE7cmV0dXJu
ITB9ZnVuY3Rpb24gUShhLGIsZCxlKXtpZihtLmFjY2VwdERhdGEoYSkpe3ZhciBmLGcsaD1tLmV4
cGFuZG8saT1hLm5vZGVUeXBlLGo9aT9tLmNhY2hlOmEsaz1pP2FbaF06YVtoXSYmaDsKLWlmKGsm
Jmpba10mJihlfHxqW2tdLmRhdGEpfHx2b2lkIDAhPT1kfHwic3RyaW5nIiE9dHlwZW9mIGIpcmV0
dXJuIGt8fChrPWk/YVtoXT1jLnBvcCgpfHxtLmd1aWQrKzpoKSxqW2tdfHwoaltrXT1pP3t9Ont0
b0pTT046bS5ub29wfSksKCJvYmplY3QiPT10eXBlb2YgYnx8ImZ1bmN0aW9uIj09dHlwZW9mIGIp
JiYoZT9qW2tdPW0uZXh0ZW5kKGpba10sYik6altrXS5kYXRhPW0uZXh0ZW5kKGpba10uZGF0YSxi
KSksZz1qW2tdLGV8fChnLmRhdGF8fChnLmRhdGE9e30pLGc9Zy5kYXRhKSx2b2lkIDAhPT1kJiYo
Z1ttLmNhbWVsQ2FzZShiKV09ZCksInN0cmluZyI9PXR5cGVvZiBiPyhmPWdbYl0sbnVsbD09ZiYm
KGY9Z1ttLmNhbWVsQ2FzZShiKV0pKTpmPWcsZn19ZnVuY3Rpb24gUihhLGIsYyl7aWYobS5hY2Nl
cHREYXRhKGEpKXt2YXIgZCxlLGY9YS5ub2RlVHlwZSxnPWY/bS5jYWNoZTphLGg9Zj9hW20uZXhw
YW5kb106bS5leHBhbmRvO2lmKGdbaF0pe2lmKGImJihkPWM/Z1toXTpnW2hdLmRhdGEpKXttLmlz
QXJyYXkoYik/Yj1iLmNvbmNhdChtLm1hcChiLG0uY2FtZWxDYXNlKSk6YiBpbiBkP2I9W2JdOihi
PW0uY2FtZWxDYXNlKGIpLGI9YiBpbiBkP1tiXTpiLnNwbGl0KCIgIikpLGU9Yi5sZW5ndGg7d2hp
bGUoZS0tKWRlbGV0ZSBkW2JbZV1dO2lmKGM/IVAoZCk6IW0uaXNFbXB0eU9iamVjdChkKSlyZXR1
cm59KGN8fChkZWxldGUgZ1toXS5kYXRhLFAoZ1toXSkpKSYmKGY/bS5jbGVhbkRhdGEoW2FdLCEw
KTprLmRlbGV0ZUV4cGFuZG98fGchPWcud2luZG93P2RlbGV0ZSBnW2hdOmdbaF09bnVsbCl9fX1t
LmV4dGVuZCh7Y2FjaGU6e30sbm9EYXRhOnsiYXBwbGV0ICI6ITAsImVtYmVkICI6ITAsIm9iamVj
dCAiOiJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAifSxoYXNEYXRh
OmZ1bmN0aW9uKGEpe3JldHVybiBhPWEubm9kZVR5cGU/bS5jYWNoZVthW20uZXhwYW5kb11dOmFb
bS5leHBhbmRvXSwhIWEmJiFQKGEpfSxkYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gUShhLGIs
Yyl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUihhLGIpfSxfZGF0YTpmdW5jdGlv
bihhLGIsYyl7cmV0dXJuIFEoYSxiLGMsITApfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe3Jl
dHVybiBSKGEsYiwhMCl9fSksbS5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxiKXt2YXIgYyxk
LGUsZj10aGlzWzBdLGc9ZiYmZi5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PWEpe2lmKHRoaXMubGVu
Z3RoJiYoZT1tLmRhdGEoZiksMT09PWYubm9kZVR5cGUmJiFtLl9kYXRhKGYsInBhcnNlZEF0dHJz
IikpKXtjPWcubGVuZ3RoO3doaWxlKGMtLSlnW2NdJiYoZD1nW2NdLm5hbWUsMD09PWQuaW5kZXhP
ZigiZGF0YS0iKSYmKGQ9bS5jYW1lbENhc2UoZC5zbGljZSg1KSksTyhmLGQsZVtkXSkpKTttLl9k
YXRhKGYsInBhcnNlZEF0dHJzIiwhMCl9cmV0dXJuIGV9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBh
P3RoaXMuZWFjaChmdW5jdGlvbigpe20uZGF0YSh0aGlzLGEpfSk6YXJndW1lbnRzLmxlbmd0aD4x
P3RoaXMuZWFjaChmdW5jdGlvbigpe20uZGF0YSh0aGlzLGEsYil9KTpmP08oZixhLG0uZGF0YShm
LGEpKTp2b2lkIDB9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5j
dGlvbigpe20ucmVtb3ZlRGF0YSh0aGlzLGEpfSl9fSksbS5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9u
KGEsYixjKXt2YXIgZDtyZXR1cm4gYT8oYj0oYnx8ImZ4IikrInF1ZXVlIixkPW0uX2RhdGEoYSxi
KSxjJiYoIWR8fG0uaXNBcnJheShjKT9kPW0uX2RhdGEoYSxiLG0ubWFrZUFycmF5KGMpKTpkLnB1
c2goYykpLGR8fFtdKTp2b2lkIDB9LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFy
IGM9bS5xdWV1ZShhLGIpLGQ9Yy5sZW5ndGgsZT1jLnNoaWZ0KCksZj1tLl9xdWV1ZUhvb2tzKGEs
YiksZz1mdW5jdGlvbigpe20uZGVxdWV1ZShhLGIpfTsiaW5wcm9ncmVzcyI9PT1lJiYoZT1jLnNo
aWZ0KCksZC0tKSxlJiYoImZ4Ij09PWImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBm
LnN0b3AsZS5jYWxsKGEsZyxmKSksIWQmJmYmJmYuZW1wdHkuZmlyZSgpfSxfcXVldWVIb29rczpm
dW5jdGlvbihhLGIpe3ZhciBjPWIrInF1ZXVlSG9va3MiO3JldHVybiBtLl9kYXRhKGEsYyl8fG0u
X2RhdGEoYSxjLHtlbXB0eTptLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rpb24o
KXttLl9yZW1vdmVEYXRhKGEsYisicXVldWUiKSxtLl9yZW1vdmVEYXRhKGEsYyl9KX0pfX0pLG0u
Zm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIpe3ZhciBjPTI7cmV0dXJuInN0cmluZyIhPXR5
cGVvZiBhJiYoYj1hLGE9ImZ4IixjLS0pLGFyZ3VtZW50cy5sZW5ndGg8Yz9tLnF1ZXVlKHRoaXNb
MF0sYSk6dm9pZCAwPT09Yj90aGlzOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPW0ucXVldWUo
dGhpcyxhLGIpO20uX3F1ZXVlSG9va3ModGhpcyxhKSwiZngiPT09YSYmImlucHJvZ3Jlc3MiIT09
Y1swXSYmbS5kZXF1ZXVlKHRoaXMsYSl9KX0sZGVxdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhp
cy5lYWNoKGZ1bmN0aW9uKCl7bS5kZXF1ZXVlKHRoaXMsYSl9KX0sY2xlYXJRdWV1ZTpmdW5jdGlv
bihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGIp
e3ZhciBjLGQ9MSxlPW0uRGVmZXJyZWQoKSxmPXRoaXMsZz10aGlzLmxlbmd0aCxoPWZ1bmN0aW9u
KCl7LS1kfHxlLnJlc29sdmVXaXRoKGYsW2ZdKX07InN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9
dm9pZCAwKSxhPWF8fCJmeCI7d2hpbGUoZy0tKWM9bS5fZGF0YShmW2ddLGErInF1ZXVlSG9va3Mi
KSxjJiZjLmVtcHR5JiYoZCsrLGMuZW1wdHkuYWRkKGgpKTtyZXR1cm4gaCgpLGUucHJvbWlzZShi
KX19KTt2YXIgUz0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSxU
PVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0sVT1mdW5jdGlvbihhLGIpe3JldHVybiBh
PWJ8fGEsIm5vbmUiPT09bS5jc3MoYSwiZGlzcGxheSIpfHwhbS5jb250YWlucyhhLm93bmVyRG9j
dW1lbnQsYSl9LFY9bS5hY2Nlc3M9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIGg9MCxpPWEu
bGVuZ3RoLGo9bnVsbD09YztpZigib2JqZWN0Ij09PW0udHlwZShjKSl7ZT0hMDtmb3IoaCBpbiBj
KW0uYWNjZXNzKGEsYixoLGNbaF0sITAsZixnKX1lbHNlIGlmKHZvaWQgMCE9PWQmJihlPSEwLG0u
aXNGdW5jdGlvbihkKXx8KGc9ITApLGomJihnPyhiLmNhbGwoYSxkKSxiPW51bGwpOihqPWIsYj1m
dW5jdGlvbihhLGIsYyl7cmV0dXJuIGouY2FsbChtKGEpLGMpfSkpLGIpKWZvcig7aT5oO2grKyli
KGFbaF0sYyxnP2Q6ZC5jYWxsKGFbaF0saCxiKGFbaF0sYykpKTtyZXR1cm4gZT9hOmo/Yi5jYWxs
KGEpOmk/YihhWzBdLGMpOmZ9LFc9L14oPzpjaGVja2JveHxyYWRpbykkL2k7IWZ1bmN0aW9uKCl7
dmFyIGE9eS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGI9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxj
PXkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKGIuaW5uZXJIVE1MPSIgIDxsaW5rLz48dGFi
bGU+PC90YWJsZT48YSBocmVmPScvYSc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4iLGsu
bGVhZGluZ1doaXRlc3BhY2U9Mz09PWIuZmlyc3RDaGlsZC5ub2RlVHlwZSxrLnRib2R5PSFiLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxrLmh0bWxTZXJpYWxpemU9ISFiLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIikubGVuZ3RoLGsuaHRtbDVDbG9uZT0iPDpuYXY+PC86
bmF2PiIhPT15LmNyZWF0ZUVsZW1lbnQoIm5hdiIpLmNsb25lTm9kZSghMCkub3V0ZXJIVE1MLGEu
dHlwZT0iY2hlY2tib3giLGEuY2hlY2tlZD0hMCxjLmFwcGVuZENoaWxkKGEpLGsuYXBwZW5kQ2hl
Y2tlZD1hLmNoZWNrZWQsYi5pbm5lckhUTUw9Ijx0ZXh0YXJlYT54PC90ZXh0YXJlYT4iLGsubm9D
bG9uZUNoZWNrZWQ9ISFiLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZSxjLmFw
cGVuZENoaWxkKGIpLGIuaW5uZXJIVE1MPSI8aW5wdXQgdHlwZT0ncmFkaW8nIGNoZWNrZWQ9J2No
ZWNrZWQnIG5hbWU9J3QnLz4iLGsuY2hlY2tDbG9uZT1iLmNsb25lTm9kZSghMCkuY2xvbmVOb2Rl
KCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCxrLm5vQ2xvbmVFdmVudD0hMCxiLmF0dGFjaEV2ZW50JiYo
Yi5hdHRhY2hFdmVudCgib25jbGljayIsZnVuY3Rpb24oKXtrLm5vQ2xvbmVFdmVudD0hMX0pLGIu
Y2xvbmVOb2RlKCEwKS5jbGljaygpKSxudWxsPT1rLmRlbGV0ZUV4cGFuZG8pe2suZGVsZXRlRXhw
YW5kbz0hMDt0cnl7ZGVsZXRlIGIudGVzdH1jYXRjaChkKXtrLmRlbGV0ZUV4cGFuZG89ITF9fX0o
KSxmdW5jdGlvbigpe3ZhciBiLGMsZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2ZvcihiIGlue3N1
Ym1pdDohMCxjaGFuZ2U6ITAsZm9jdXNpbjohMH0pYz0ib24iK2IsKGtbYisiQnViYmxlcyJdPWMg
aW4gYSl8fChkLnNldEF0dHJpYnV0ZShjLCJ0Iiksa1tiKyJCdWJibGVzIl09ZC5hdHRyaWJ1dGVz
W2NdLmV4cGFuZG89PT0hMSk7ZD1udWxsfSgpO3ZhciBYPS9eKD86aW5wdXR8c2VsZWN0fHRleHRh
cmVhKSQvaSxZPS9ea2V5LyxaPS9eKD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudSl8Y2xpY2sv
LCQ9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLF89L14oW14uXSopKD86XC4oLisp
fCkkLztmdW5jdGlvbiBhYigpe3JldHVybiEwfWZ1bmN0aW9uIGJiKCl7cmV0dXJuITF9ZnVuY3Rp
b24gY2IoKXt0cnl7cmV0dXJuIHkuYWN0aXZlRWxlbWVudH1jYXRjaChhKXt9fW0uZXZlbnQ9e2ds
b2JhbDp7fSxhZGQ6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxuLG8scCxx
LHI9bS5fZGF0YShhKTtpZihyKXtjLmhhbmRsZXImJihpPWMsYz1pLmhhbmRsZXIsZT1pLnNlbGVj
dG9yKSxjLmd1aWR8fChjLmd1aWQ9bS5ndWlkKyspLChnPXIuZXZlbnRzKXx8KGc9ci5ldmVudHM9
e30pLChrPXIuaGFuZGxlKXx8KGs9ci5oYW5kbGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBt
PT09S3x8YSYmbS5ldmVudC50cmlnZ2VyZWQ9PT1hLnR5cGU/dm9pZCAwOm0uZXZlbnQuZGlzcGF0
Y2guYXBwbHkoay5lbGVtLGFyZ3VtZW50cyl9LGsuZWxlbT1hKSxiPShifHwiIikubWF0Y2goRSl8
fFsiIl0saD1iLmxlbmd0aDt3aGlsZShoLS0pZj1fLmV4ZWMoYltoXSl8fFtdLG89cT1mWzFdLHA9
KGZbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxvJiYoaj1tLmV2ZW50LnNwZWNpYWxbb118fHt9
LG89KGU/ai5kZWxlZ2F0ZVR5cGU6ai5iaW5kVHlwZSl8fG8saj1tLmV2ZW50LnNwZWNpYWxbb118
fHt9LGw9bS5leHRlbmQoe3R5cGU6byxvcmlnVHlwZTpxLGRhdGE6ZCxoYW5kbGVyOmMsZ3VpZDpj
Lmd1aWQsc2VsZWN0b3I6ZSxuZWVkc0NvbnRleHQ6ZSYmbS5leHByLm1hdGNoLm5lZWRzQ29udGV4
dC50ZXN0KGUpLG5hbWVzcGFjZTpwLmpvaW4oIi4iKX0saSksKG49Z1tvXSl8fChuPWdbb109W10s
bi5kZWxlZ2F0ZUNvdW50PTAsai5zZXR1cCYmai5zZXR1cC5jYWxsKGEsZCxwLGspIT09ITF8fChh
LmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKG8saywhMSk6YS5hdHRhY2hFdmVu
dCYmYS5hdHRhY2hFdmVudCgib24iK28saykpKSxqLmFkZCYmKGouYWRkLmNhbGwoYSxsKSxsLmhh
bmRsZXIuZ3VpZHx8KGwuaGFuZGxlci5ndWlkPWMuZ3VpZCkpLGU/bi5zcGxpY2Uobi5kZWxlZ2F0
ZUNvdW50KyssMCxsKTpuLnB1c2gobCksbS5ldmVudC5nbG9iYWxbb109ITApO2E9bnVsbH19LHJl
bW92ZTpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG4sbyxwLHEscj1tLmhh
c0RhdGEoYSkmJm0uX2RhdGEoYSk7aWYociYmKGs9ci5ldmVudHMpKXtiPShifHwiIikubWF0Y2go
RSl8fFsiIl0saj1iLmxlbmd0aDt3aGlsZShqLS0paWYoaD1fLmV4ZWMoYltqXSl8fFtdLG89cT1o
WzFdLHA9KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxvKXtsPW0uZXZlbnQuc3BlY2lhbFtv
XXx8e30sbz0oZD9sLmRlbGVnYXRlVHlwZTpsLmJpbmRUeXBlKXx8byxuPWtbb118fFtdLGg9aFsy
XSYmbmV3IFJlZ0V4cCgiKF58XFwuKSIrcC5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCki
KSxpPWY9bi5sZW5ndGg7d2hpbGUoZi0tKWc9bltmXSwhZSYmcSE9PWcub3JpZ1R5cGV8fGMmJmMu
Z3VpZCE9PWcuZ3VpZHx8aCYmIWgudGVzdChnLm5hbWVzcGFjZSl8fGQmJmQhPT1nLnNlbGVjdG9y
JiYoIioqIiE9PWR8fCFnLnNlbGVjdG9yKXx8KG4uc3BsaWNlKGYsMSksZy5zZWxlY3RvciYmbi5k
ZWxlZ2F0ZUNvdW50LS0sbC5yZW1vdmUmJmwucmVtb3ZlLmNhbGwoYSxnKSk7aSYmIW4ubGVuZ3Ro
JiYobC50ZWFyZG93biYmbC50ZWFyZG93bi5jYWxsKGEscCxyLmhhbmRsZSkhPT0hMXx8bS5yZW1v
dmVFdmVudChhLG8sci5oYW5kbGUpLGRlbGV0ZSBrW29dKX1lbHNlIGZvcihvIGluIGspbS5ldmVu
dC5yZW1vdmUoYSxvK2Jbal0sYyxkLCEwKTttLmlzRW1wdHlPYmplY3QoaykmJihkZWxldGUgci5o
YW5kbGUsbS5fcmVtb3ZlRGF0YShhLCJldmVudHMiKSl9fSx0cmlnZ2VyOmZ1bmN0aW9uKGIsYyxk
LGUpe3ZhciBmLGcsaCxpLGssbCxuLG89W2R8fHldLHA9ai5jYWxsKGIsInR5cGUiKT9iLnR5cGU6
YixxPWouY2FsbChiLCJuYW1lc3BhY2UiKT9iLm5hbWVzcGFjZS5zcGxpdCgiLiIpOltdO2lmKGg9
bD1kPWR8fHksMyE9PWQubm9kZVR5cGUmJjghPT1kLm5vZGVUeXBlJiYhJC50ZXN0KHArbS5ldmVu
dC50cmlnZ2VyZWQpJiYocC5pbmRleE9mKCIuIik+PTAmJihxPXAuc3BsaXQoIi4iKSxwPXEuc2hp
ZnQoKSxxLnNvcnQoKSksZz1wLmluZGV4T2YoIjoiKTwwJiYib24iK3AsYj1iW20uZXhwYW5kb10/
YjpuZXcgbS5FdmVudChwLCJvYmplY3QiPT10eXBlb2YgYiYmYiksYi5pc1RyaWdnZXI9ZT8yOjMs
Yi5uYW1lc3BhY2U9cS5qb2luKCIuIiksYi5uYW1lc3BhY2VfcmU9Yi5uYW1lc3BhY2U/bmV3IFJl
Z0V4cCgiKF58XFwuKSIrcS5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLGIu
cmVzdWx0PXZvaWQgMCxiLnRhcmdldHx8KGIudGFyZ2V0PWQpLGM9bnVsbD09Yz9bYl06bS5tYWtl
QXJyYXkoYyxbYl0pLGs9bS5ldmVudC5zcGVjaWFsW3BdfHx7fSxlfHwhay50cmlnZ2VyfHxrLnRy
aWdnZXIuYXBwbHkoZCxjKSE9PSExKSl7aWYoIWUmJiFrLm5vQnViYmxlJiYhbS5pc1dpbmRvdyhk
KSl7Zm9yKGk9ay5kZWxlZ2F0ZVR5cGV8fHAsJC50ZXN0KGkrcCl8fChoPWgucGFyZW50Tm9kZSk7
aDtoPWgucGFyZW50Tm9kZSlvLnB1c2goaCksbD1oO2w9PT0oZC5vd25lckRvY3VtZW50fHx5KSYm
by5wdXNoKGwuZGVmYXVsdFZpZXd8fGwucGFyZW50V2luZG93fHxhKX1uPTA7d2hpbGUoKGg9b1tu
KytdKSYmIWIuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSliLnR5cGU9bj4xP2k6ay5iaW5kVHlwZXx8
cCxmPShtLl9kYXRhKGgsImV2ZW50cyIpfHx7fSlbYi50eXBlXSYmbS5fZGF0YShoLCJoYW5kbGUi
KSxmJiZmLmFwcGx5KGgsYyksZj1nJiZoW2ddLGYmJmYuYXBwbHkmJm0uYWNjZXB0RGF0YShoKSYm
KGIucmVzdWx0PWYuYXBwbHkoaCxjKSxiLnJlc3VsdD09PSExJiZiLnByZXZlbnREZWZhdWx0KCkp
O2lmKGIudHlwZT1wLCFlJiYhYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmKCFrLl9kZWZhdWx0fHxr
Ll9kZWZhdWx0LmFwcGx5KG8ucG9wKCksYyk9PT0hMSkmJm0uYWNjZXB0RGF0YShkKSYmZyYmZFtw
XSYmIW0uaXNXaW5kb3coZCkpe2w9ZFtnXSxsJiYoZFtnXT1udWxsKSxtLmV2ZW50LnRyaWdnZXJl
ZD1wO3RyeXtkW3BdKCl9Y2F0Y2gocil7fW0uZXZlbnQudHJpZ2dlcmVkPXZvaWQgMCxsJiYoZFtn
XT1sKX1yZXR1cm4gYi5yZXN1bHR9fSxkaXNwYXRjaDpmdW5jdGlvbihhKXthPW0uZXZlbnQuZml4
KGEpO3ZhciBiLGMsZSxmLGcsaD1bXSxpPWQuY2FsbChhcmd1bWVudHMpLGo9KG0uX2RhdGEodGhp
cywiZXZlbnRzIil8fHt9KVthLnR5cGVdfHxbXSxrPW0uZXZlbnQuc3BlY2lhbFthLnR5cGVdfHx7
fTtpZihpWzBdPWEsYS5kZWxlZ2F0ZVRhcmdldD10aGlzLCFrLnByZURpc3BhdGNofHxrLnByZURp
c3BhdGNoLmNhbGwodGhpcyxhKSE9PSExKXtoPW0uZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGEs
aiksYj0wO3doaWxlKChmPWhbYisrXSkmJiFhLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe2EuY3Vy
cmVudFRhcmdldD1mLmVsZW0sZz0wO3doaWxlKChlPWYuaGFuZGxlcnNbZysrXSkmJiFhLmlzSW1t
ZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpKCFhLm5hbWVzcGFjZV9yZXx8YS5uYW1lc3BhY2Vf
cmUudGVzdChlLm5hbWVzcGFjZSkpJiYoYS5oYW5kbGVPYmo9ZSxhLmRhdGE9ZS5kYXRhLGM9KCht
LmV2ZW50LnNwZWNpYWxbZS5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fGUuaGFuZGxlcikuYXBwbHko
Zi5lbGVtLGkpLHZvaWQgMCE9PWMmJihhLnJlc3VsdD1jKT09PSExJiYoYS5wcmV2ZW50RGVmYXVs
dCgpLGEuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1cm4gay5wb3N0RGlzcGF0Y2gmJmsucG9zdERp
c3BhdGNoLmNhbGwodGhpcyxhKSxhLnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGEsYil7dmFy
IGMsZCxlLGYsZz1bXSxoPWIuZGVsZWdhdGVDb3VudCxpPWEudGFyZ2V0O2lmKGgmJmkubm9kZVR5
cGUmJighYS5idXR0b258fCJjbGljayIhPT1hLnR5cGUpKWZvcig7aSE9dGhpcztpPWkucGFyZW50
Tm9kZXx8dGhpcylpZigxPT09aS5ub2RlVHlwZSYmKGkuZGlzYWJsZWQhPT0hMHx8ImNsaWNrIiE9
PWEudHlwZSkpe2ZvcihlPVtdLGY9MDtoPmY7ZisrKWQ9YltmXSxjPWQuc2VsZWN0b3IrIiAiLHZv
aWQgMD09PWVbY10mJihlW2NdPWQubmVlZHNDb250ZXh0P20oYyx0aGlzKS5pbmRleChpKT49MDpt
LmZpbmQoYyx0aGlzLG51bGwsW2ldKS5sZW5ndGgpLGVbY10mJmUucHVzaChkKTtlLmxlbmd0aCYm
Zy5wdXNoKHtlbGVtOmksaGFuZGxlcnM6ZX0pfXJldHVybiBoPGIubGVuZ3RoJiZnLnB1c2goe2Vs
ZW06dGhpcyxoYW5kbGVyczpiLnNsaWNlKGgpfSksZ30sZml4OmZ1bmN0aW9uKGEpe2lmKGFbbS5l
eHBhbmRvXSlyZXR1cm4gYTt2YXIgYixjLGQsZT1hLnR5cGUsZj1hLGc9dGhpcy5maXhIb29rc1tl
XTtnfHwodGhpcy5maXhIb29rc1tlXT1nPVoudGVzdChlKT90aGlzLm1vdXNlSG9va3M6WS50ZXN0
KGUpP3RoaXMua2V5SG9va3M6e30pLGQ9Zy5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChnLnByb3Bz
KTp0aGlzLnByb3BzLGE9bmV3IG0uRXZlbnQoZiksYj1kLmxlbmd0aDt3aGlsZShiLS0pYz1kW2Jd
LGFbY109ZltjXTtyZXR1cm4gYS50YXJnZXR8fChhLnRhcmdldD1mLnNyY0VsZW1lbnR8fHkpLDM9
PT1hLnRhcmdldC5ub2RlVHlwZSYmKGEudGFyZ2V0PWEudGFyZ2V0LnBhcmVudE5vZGUpLGEubWV0
YUtleT0hIWEubWV0YUtleSxnLmZpbHRlcj9nLmZpbHRlcihhLGYpOmF9LHByb3BzOiJhbHRLZXkg
YnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFL
ZXkgcmVsYXRlZFRhcmdldCBzaGlmdEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2giLnNw
bGl0KCIgIiksZml4SG9va3M6e30sa2V5SG9va3M6e3Byb3BzOiJjaGFyIGNoYXJDb2RlIGtleSBr
ZXlDb2RlIi5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbihhLGIpe3JldHVybiBudWxsPT1hLndo
aWNoJiYoYS53aGljaD1udWxsIT1iLmNoYXJDb2RlP2IuY2hhckNvZGU6Yi5rZXlDb2RlKSxhfX0s
bW91c2VIb29rczp7cHJvcHM6ImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZW50WSBmcm9tRWxl
bWVudCBvZmZzZXRYIG9mZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVu
dCIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj1iLmJ1dHRvbixn
PWIuZnJvbUVsZW1lbnQ7cmV0dXJuIG51bGw9PWEucGFnZVgmJm51bGwhPWIuY2xpZW50WCYmKGQ9
YS50YXJnZXQub3duZXJEb2N1bWVudHx8eSxlPWQuZG9jdW1lbnRFbGVtZW50LGM9ZC5ib2R5LGEu
cGFnZVg9Yi5jbGllbnRYKyhlJiZlLnNjcm9sbExlZnR8fGMmJmMuc2Nyb2xsTGVmdHx8MCktKGUm
JmUuY2xpZW50TGVmdHx8YyYmYy5jbGllbnRMZWZ0fHwwKSxhLnBhZ2VZPWIuY2xpZW50WSsoZSYm
ZS5zY3JvbGxUb3B8fGMmJmMuc2Nyb2xsVG9wfHwwKS0oZSYmZS5jbGllbnRUb3B8fGMmJmMuY2xp
ZW50VG9wfHwwKSksIWEucmVsYXRlZFRhcmdldCYmZyYmKGEucmVsYXRlZFRhcmdldD1nPT09YS50
YXJnZXQ/Yi50b0VsZW1lbnQ6ZyksYS53aGljaHx8dm9pZCAwPT09Znx8KGEud2hpY2g9MSZmPzE6
MiZmPzM6NCZmPzI6MCksYX19LHNwZWNpYWw6e2xvYWQ6e25vQnViYmxlOiEwfSxmb2N1czp7dHJp
Z2dlcjpmdW5jdGlvbigpe2lmKHRoaXMhPT1jYigpJiZ0aGlzLmZvY3VzKXRyeXtyZXR1cm4gdGhp
cy5mb2N1cygpLCExfWNhdGNoKGEpe319LGRlbGVnYXRlVHlwZToiZm9jdXNpbiJ9LGJsdXI6e3Ry
aWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcz09PWNiKCkmJnRoaXMuYmx1cj8odGhpcy5ibHVy
KCksITEpOnZvaWQgMH0sZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGNsaWNrOnt0cmlnZ2VyOmZ1
bmN0aW9uKCl7cmV0dXJuIG0ubm9kZU5hbWUodGhpcywiaW5wdXQiKSYmImNoZWNrYm94Ij09PXRo
aXMudHlwZSYmdGhpcy5jbGljaz8odGhpcy5jbGljaygpLCExKTp2b2lkIDB9LF9kZWZhdWx0OmZ1
bmN0aW9uKGEpe3JldHVybiBtLm5vZGVOYW1lKGEudGFyZ2V0LCJhIil9fSxiZWZvcmV1bmxvYWQ6
e3Bvc3REaXNwYXRjaDpmdW5jdGlvbihhKXt2b2lkIDAhPT1hLnJlc3VsdCYmYS5vcmlnaW5hbEV2
ZW50JiYoYS5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlPWEucmVzdWx0KX19fSxzaW11bGF0ZTpm
dW5jdGlvbihhLGIsYyxkKXt2YXIgZT1tLmV4dGVuZChuZXcgbS5FdmVudCxjLHt0eXBlOmEsaXNT
aW11bGF0ZWQ6ITAsb3JpZ2luYWxFdmVudDp7fX0pO2Q/bS5ldmVudC50cmlnZ2VyKGUsbnVsbCxi
KTptLmV2ZW50LmRpc3BhdGNoLmNhbGwoYixlKSxlLmlzRGVmYXVsdFByZXZlbnRlZCgpJiZjLnBy
ZXZlbnREZWZhdWx0KCl9fSxtLnJlbW92ZUV2ZW50PXkucmVtb3ZlRXZlbnRMaXN0ZW5lcj9mdW5j
dGlvbihhLGIsYyl7YS5yZW1vdmVFdmVudExpc3RlbmVyJiZhLnJlbW92ZUV2ZW50TGlzdGVuZXIo
YixjLCExKX06ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSJvbiIrYjthLmRldGFjaEV2ZW50JiYodHlw
ZW9mIGFbZF09PT1LJiYoYVtkXT1udWxsKSxhLmRldGFjaEV2ZW50KGQsYykpfSxtLkV2ZW50PWZ1
bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBtLkV2ZW50PyhhJiZhLnR5cGU/KHRo
aXMub3JpZ2luYWxFdmVudD1hLHRoaXMudHlwZT1hLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50
ZWQ9YS5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1hLmRlZmF1bHRQcmV2ZW50ZWQmJmEucmV0
dXJuVmFsdWU9PT0hMT9hYjpiYik6dGhpcy50eXBlPWEsYiYmbS5leHRlbmQodGhpcyxiKSx0aGlz
LnRpbWVTdGFtcD1hJiZhLnRpbWVTdGFtcHx8bS5ub3coKSx2b2lkKHRoaXNbbS5leHBhbmRvXT0h
MCkpOm5ldyBtLkV2ZW50KGEsYil9LG0uRXZlbnQucHJvdG90eXBlPXtpc0RlZmF1bHRQcmV2ZW50
ZWQ6YmIsaXNQcm9wYWdhdGlvblN0b3BwZWQ6YmIsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3Bw
ZWQ6YmIscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7
dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YWIsYSYmKGEucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50
RGVmYXVsdCgpOmEucmV0dXJuVmFsdWU9ITEpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2
YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1hYixhJiYo
YS5zdG9wUHJvcGFnYXRpb24mJmEuc3RvcFByb3BhZ2F0aW9uKCksYS5jYW5jZWxCdWJibGU9ITAp
fSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFs
RXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1hYixhJiZhLnN0b3BJbW1l
ZGlhdGVQcm9wYWdhdGlvbiYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQ
cm9wYWdhdGlvbigpfX0sbS5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6
Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJvdmVyIixwb2ludGVybGVhdmU6InBvaW50
ZXJvdXQifSxmdW5jdGlvbihhLGIpe20uZXZlbnQuc3BlY2lhbFthXT17ZGVsZWdhdGVUeXBlOmIs
YmluZFR5cGU6YixoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGMsZD10aGlzLGU9YS5yZWxhdGVkVGFy
Z2V0LGY9YS5oYW5kbGVPYmo7cmV0dXJuKCFlfHxlIT09ZCYmIW0uY29udGFpbnMoZCxlKSkmJihh
LnR5cGU9Zi5vcmlnVHlwZSxjPWYuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksYS50eXBl
PWIpLGN9fX0pLGsuc3VibWl0QnViYmxlc3x8KG0uZXZlbnQuc3BlY2lhbC5zdWJtaXQ9e3NldHVw
OmZ1bmN0aW9uKCl7cmV0dXJuIG0ubm9kZU5hbWUodGhpcywiZm9ybSIpPyExOnZvaWQgbS5ldmVu
dC5hZGQodGhpcywiY2xpY2suX3N1Ym1pdCBrZXlwcmVzcy5fc3VibWl0IixmdW5jdGlvbihhKXt2
YXIgYj1hLnRhcmdldCxjPW0ubm9kZU5hbWUoYiwiaW5wdXQiKXx8bS5ub2RlTmFtZShiLCJidXR0
b24iKT9iLmZvcm06dm9pZCAwO2MmJiFtLl9kYXRhKGMsInN1Ym1pdEJ1YmJsZXMiKSYmKG0uZXZl
bnQuYWRkKGMsInN1Ym1pdC5fc3VibWl0IixmdW5jdGlvbihhKXthLl9zdWJtaXRfYnViYmxlPSEw
fSksbS5fZGF0YShjLCJzdWJtaXRCdWJibGVzIiwhMCkpfSl9LHBvc3REaXNwYXRjaDpmdW5jdGlv
bihhKXthLl9zdWJtaXRfYnViYmxlJiYoZGVsZXRlIGEuX3N1Ym1pdF9idWJibGUsdGhpcy5wYXJl
bnROb2RlJiYhYS5pc1RyaWdnZXImJm0uZXZlbnQuc2ltdWxhdGUoInN1Ym1pdCIsdGhpcy5wYXJl
bnROb2RlLGEsITApKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtyZXR1cm4gbS5ub2RlTmFtZSh0aGlz
LCJmb3JtIik/ITE6dm9pZCBtLmV2ZW50LnJlbW92ZSh0aGlzLCIuX3N1Ym1pdCIpfX0pLGsuY2hh
bmdlQnViYmxlc3x8KG0uZXZlbnQuc3BlY2lhbC5jaGFuZ2U9e3NldHVwOmZ1bmN0aW9uKCl7cmV0
dXJuIFgudGVzdCh0aGlzLm5vZGVOYW1lKT8oKCJjaGVja2JveCI9PT10aGlzLnR5cGV8fCJyYWRp
byI9PT10aGlzLnR5cGUpJiYobS5ldmVudC5hZGQodGhpcywicHJvcGVydHljaGFuZ2UuX2NoYW5n
ZSIsZnVuY3Rpb24oYSl7ImNoZWNrZWQiPT09YS5vcmlnaW5hbEV2ZW50LnByb3BlcnR5TmFtZSYm
KHRoaXMuX2p1c3RfY2hhbmdlZD0hMCl9KSxtLmV2ZW50LmFkZCh0aGlzLCJjbGljay5fY2hhbmdl
IixmdW5jdGlvbihhKXt0aGlzLl9qdXN0X2NoYW5nZWQmJiFhLmlzVHJpZ2dlciYmKHRoaXMuX2p1
c3RfY2hhbmdlZD0hMSksbS5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLGEsITApfSkpLCEx
KTp2b2lkIG0uZXZlbnQuYWRkKHRoaXMsImJlZm9yZWFjdGl2YXRlLl9jaGFuZ2UiLGZ1bmN0aW9u
KGEpe3ZhciBiPWEudGFyZ2V0O1gudGVzdChiLm5vZGVOYW1lKSYmIW0uX2RhdGEoYiwiY2hhbmdl
QnViYmxlcyIpJiYobS5ldmVudC5hZGQoYiwiY2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpeyF0
aGlzLnBhcmVudE5vZGV8fGEuaXNTaW11bGF0ZWR8fGEuaXNUcmlnZ2VyfHxtLmV2ZW50LnNpbXVs
YXRlKCJjaGFuZ2UiLHRoaXMucGFyZW50Tm9kZSxhLCEwKX0pLG0uX2RhdGEoYiwiY2hhbmdlQnVi
YmxlcyIsITApKX0pfSxoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7cmV0dXJuIHRo
aXMhPT1ifHxhLmlzU2ltdWxhdGVkfHxhLmlzVHJpZ2dlcnx8InJhZGlvIiE9PWIudHlwZSYmImNo
ZWNrYm94IiE9PWIudHlwZT9hLmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRz
KTp2b2lkIDB9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIG0uZXZlbnQucmVtb3ZlKHRoaXMs
Ii5fY2hhbmdlIiksIVgudGVzdCh0aGlzLm5vZGVOYW1lKX19KSxrLmZvY3VzaW5CdWJibGVzfHxt
LmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7dmFy
IGM9ZnVuY3Rpb24oYSl7bS5ldmVudC5zaW11bGF0ZShiLGEudGFyZ2V0LG0uZXZlbnQuZml4KGEp
LCEwKX07bS5ldmVudC5zcGVjaWFsW2JdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3du
ZXJEb2N1bWVudHx8dGhpcyxlPW0uX2RhdGEoZCxiKTtlfHxkLmFkZEV2ZW50TGlzdGVuZXIoYSxj
LCEwKSxtLl9kYXRhKGQsYiwoZXx8MCkrMSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dmFyIGQ9dGhp
cy5vd25lckRvY3VtZW50fHx0aGlzLGU9bS5fZGF0YShkLGIpLTE7ZT9tLl9kYXRhKGQsYixlKToo
ZC5yZW1vdmVFdmVudExpc3RlbmVyKGEsYywhMCksbS5fcmVtb3ZlRGF0YShkLGIpKX19fSksbS5m
bi5leHRlbmQoe29uOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZztpZigib2JqZWN0Ij09dHlw
ZW9mIGEpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9Y3x8YixiPXZvaWQgMCk7Zm9yKGYgaW4gYSl0
aGlzLm9uKGYsYixjLGFbZl0sZSk7cmV0dXJuIHRoaXN9aWYobnVsbD09YyYmbnVsbD09ZD8oZD1i
LGM9Yj12b2lkIDApOm51bGw9PWQmJigic3RyaW5nIj09dHlwZW9mIGI/KGQ9YyxjPXZvaWQgMCk6
KGQ9YyxjPWIsYj12b2lkIDApKSxkPT09ITEpZD1iYjtlbHNlIGlmKCFkKXJldHVybiB0aGlzO3Jl
dHVybiAxPT09ZSYmKGc9ZCxkPWZ1bmN0aW9uKGEpe3JldHVybiBtKCkub2ZmKGEpLGcuYXBwbHko
dGhpcyxhcmd1bWVudHMpfSxkLmd1aWQ9Zy5ndWlkfHwoZy5ndWlkPW0uZ3VpZCsrKSksdGhpcy5l
YWNoKGZ1bmN0aW9uKCl7bS5ldmVudC5hZGQodGhpcyxhLGQsYyxiKX0pfSxvbmU6ZnVuY3Rpb24o
YSxiLGMsZCl7cmV0dXJuIHRoaXMub24oYSxiLGMsZCwxKX0sb2ZmOmZ1bmN0aW9uKGEsYixjKXt2
YXIgZCxlO2lmKGEmJmEucHJldmVudERlZmF1bHQmJmEuaGFuZGxlT2JqKXJldHVybiBkPWEuaGFu
ZGxlT2JqLG0oYS5kZWxlZ2F0ZVRhcmdldCkub2ZmKGQubmFtZXNwYWNlP2Qub3JpZ1R5cGUrIi4i
K2QubmFtZXNwYWNlOmQub3JpZ1R5cGUsZC5zZWxlY3RvcixkLmhhbmRsZXIpLHRoaXM7aWYoIm9i
amVjdCI9PXR5cGVvZiBhKXtmb3IoZSBpbiBhKXRoaXMub2ZmKGUsYixhW2VdKTtyZXR1cm4gdGhp
c31yZXR1cm4oYj09PSExfHwiZnVuY3Rpb24iPT10eXBlb2YgYikmJihjPWIsYj12b2lkIDApLGM9
PT0hMSYmKGM9YmIpLHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQucmVtb3ZlKHRoaXMsYSxj
LGIpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7
bS5ldmVudC50cmlnZ2VyKGEsYix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihhLGIp
e3ZhciBjPXRoaXNbMF07cmV0dXJuIGM/bS5ldmVudC50cmlnZ2VyKGEsYixjLCEwKTp2b2lkIDB9
fSk7ZnVuY3Rpb24gZGIoYSl7dmFyIGI9ZWIuc3BsaXQoInwiKSxjPWEuY3JlYXRlRG9jdW1lbnRG
cmFnbWVudCgpO2lmKGMuY3JlYXRlRWxlbWVudCl3aGlsZShiLmxlbmd0aCljLmNyZWF0ZUVsZW1l
bnQoYi5wb3AoKSk7cmV0dXJuIGN9dmFyIGViPSJhYmJyfGFydGljbGV8YXNpZGV8YXVkaW98YmRp
fGNhbnZhc3xkYXRhfGRhdGFsaXN0fGRldGFpbHN8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfGhl
YWRlcnxoZ3JvdXB8bWFya3xtZXRlcnxuYXZ8b3V0cHV0fHByb2dyZXNzfHNlY3Rpb258c3VtbWFy
eXx0aW1lfHZpZGVvIixmYj0vIGpRdWVyeVxkKz0iKD86bnVsbHxcZCspIi9nLGdiPW5ldyBSZWdF
eHAoIjwoPzoiK2ViKyIpW1xccy8+XSIsImkiKSxoYj0vXlxzKy8saWI9LzwoPyFhcmVhfGJyfGNv
bHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9n
aSxqYj0vPChbXHc6XSspLyxrYj0vPHRib2R5L2ksbGI9Lzx8JiM/XHcrOy8sbWI9LzwoPzpzY3Jp
cHR8c3R5bGV8bGluaykvaSxuYj0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxv
Yj0vXiR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2kscGI9L150cnVlXC8oLiopLyxxYj0vXlxzKjwh
KD86XFtDREFUQVxbfC0tKXwoPzpcXVxdfC0tKT5ccyokL2cscmI9e29wdGlvbjpbMSwiPHNlbGVj
dCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0
PiIsIjwvZmllbGRzZXQ+Il0sYXJlYTpbMSwiPG1hcD4iLCI8L21hcD4iXSxwYXJhbTpbMSwiPG9i
amVjdD4iLCI8L29iamVjdD4iXSx0aGVhZDpbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il0sdHI6WzIs
Ijx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjx0Ym9k
eT48L3Rib2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJs
ZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLF9kZWZhdWx0OmsuaHRtbFNl
cmlhbGl6ZT9bMCwiIiwiIl06WzEsIlg8ZGl2PiIsIjwvZGl2PiJdfSxzYj1kYih5KSx0Yj1zYi5h
cHBlbmRDaGlsZCh5LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtyYi5vcHRncm91cD1yYi5vcHRpb24s
cmIudGJvZHk9cmIudGZvb3Q9cmIuY29sZ3JvdXA9cmIuY2FwdGlvbj1yYi50aGVhZCxyYi50aD1y
Yi50ZDtmdW5jdGlvbiB1YihhLGIpe3ZhciBjLGQsZT0wLGY9dHlwZW9mIGEuZ2V0RWxlbWVudHNC
eVRhZ05hbWUhPT1LP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYnx8IioiKTp0eXBlb2YgYS5xdWVy
eVNlbGVjdG9yQWxsIT09Sz9hLnF1ZXJ5U2VsZWN0b3JBbGwoYnx8IioiKTp2b2lkIDA7aWYoIWYp
Zm9yKGY9W10sYz1hLmNoaWxkTm9kZXN8fGE7bnVsbCE9KGQ9Y1tlXSk7ZSsrKSFifHxtLm5vZGVO
YW1lKGQsYik/Zi5wdXNoKGQpOm0ubWVyZ2UoZix1YihkLGIpKTtyZXR1cm4gdm9pZCAwPT09Ynx8
YiYmbS5ub2RlTmFtZShhLGIpP20ubWVyZ2UoW2FdLGYpOmZ9ZnVuY3Rpb24gdmIoYSl7Vy50ZXN0
KGEudHlwZSkmJihhLmRlZmF1bHRDaGVja2VkPWEuY2hlY2tlZCl9ZnVuY3Rpb24gd2IoYSxiKXty
ZXR1cm4gbS5ub2RlTmFtZShhLCJ0YWJsZSIpJiZtLm5vZGVOYW1lKDExIT09Yi5ub2RlVHlwZT9i
OmIuZmlyc3RDaGlsZCwidHIiKT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxh
LmFwcGVuZENoaWxkKGEub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpKTphfWZ1
bmN0aW9uIHhiKGEpe3JldHVybiBhLnR5cGU9KG51bGwhPT1tLmZpbmQuYXR0cihhLCJ0eXBlIikp
KyIvIithLnR5cGUsYX1mdW5jdGlvbiB5YihhKXt2YXIgYj1wYi5leGVjKGEudHlwZSk7cmV0dXJu
IGI/YS50eXBlPWJbMV06YS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxhfWZ1bmN0aW9uIHpiKGEs
Yil7Zm9yKHZhciBjLGQ9MDtudWxsIT0oYz1hW2RdKTtkKyspbS5fZGF0YShjLCJnbG9iYWxFdmFs
IiwhYnx8bS5fZGF0YShiW2RdLCJnbG9iYWxFdmFsIikpfWZ1bmN0aW9uIEFiKGEsYil7aWYoMT09
PWIubm9kZVR5cGUmJm0uaGFzRGF0YShhKSl7dmFyIGMsZCxlLGY9bS5fZGF0YShhKSxnPW0uX2Rh
dGEoYixmKSxoPWYuZXZlbnRzO2lmKGgpe2RlbGV0ZSBnLmhhbmRsZSxnLmV2ZW50cz17fTtmb3Io
YyBpbiBoKWZvcihkPTAsZT1oW2NdLmxlbmd0aDtlPmQ7ZCsrKW0uZXZlbnQuYWRkKGIsYyxoW2Nd
W2RdKX1nLmRhdGEmJihnLmRhdGE9bS5leHRlbmQoe30sZy5kYXRhKSl9fWZ1bmN0aW9uIEJiKGEs
Yil7dmFyIGMsZCxlO2lmKDE9PT1iLm5vZGVUeXBlKXtpZihjPWIubm9kZU5hbWUudG9Mb3dlckNh
c2UoKSwhay5ub0Nsb25lRXZlbnQmJmJbbS5leHBhbmRvXSl7ZT1tLl9kYXRhKGIpO2ZvcihkIGlu
IGUuZXZlbnRzKW0ucmVtb3ZlRXZlbnQoYixkLGUuaGFuZGxlKTtiLnJlbW92ZUF0dHJpYnV0ZSht
LmV4cGFuZG8pfSJzY3JpcHQiPT09YyYmYi50ZXh0IT09YS50ZXh0Pyh4YihiKS50ZXh0PWEudGV4
dCx5YihiKSk6Im9iamVjdCI9PT1jPyhiLnBhcmVudE5vZGUmJihiLm91dGVySFRNTD1hLm91dGVy
SFRNTCksay5odG1sNUNsb25lJiZhLmlubmVySFRNTCYmIW0udHJpbShiLmlubmVySFRNTCkmJihi
LmlubmVySFRNTD1hLmlubmVySFRNTCkpOiJpbnB1dCI9PT1jJiZXLnRlc3QoYS50eXBlKT8oYi5k
ZWZhdWx0Q2hlY2tlZD1iLmNoZWNrZWQ9YS5jaGVja2VkLGIudmFsdWUhPT1hLnZhbHVlJiYoYi52
YWx1ZT1hLnZhbHVlKSk6Im9wdGlvbiI9PT1jP2IuZGVmYXVsdFNlbGVjdGVkPWIuc2VsZWN0ZWQ9
YS5kZWZhdWx0U2VsZWN0ZWQ6KCJpbnB1dCI9PT1jfHwidGV4dGFyZWEiPT09YykmJihiLmRlZmF1
bHRWYWx1ZT1hLmRlZmF1bHRWYWx1ZSl9fW0uZXh0ZW5kKHtjbG9uZTpmdW5jdGlvbihhLGIsYyl7
dmFyIGQsZSxmLGcsaCxpPW0uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpO2lmKGsuaHRtbDVD
bG9uZXx8bS5pc1hNTERvYyhhKXx8IWdiLnRlc3QoIjwiK2Eubm9kZU5hbWUrIj4iKT9mPWEuY2xv
bmVOb2RlKCEwKToodGIuaW5uZXJIVE1MPWEub3V0ZXJIVE1MLHRiLnJlbW92ZUNoaWxkKGY9dGIu
Zmlyc3RDaGlsZCkpLCEoay5ub0Nsb25lRXZlbnQmJmsubm9DbG9uZUNoZWNrZWR8fDEhPT1hLm5v
ZGVUeXBlJiYxMSE9PWEubm9kZVR5cGV8fG0uaXNYTUxEb2MoYSkpKWZvcihkPXViKGYpLGg9dWIo
YSksZz0wO251bGwhPShlPWhbZ10pOysrZylkW2ddJiZCYihlLGRbZ10pO2lmKGIpaWYoYylmb3Io
aD1ofHx1YihhKSxkPWR8fHViKGYpLGc9MDtudWxsIT0oZT1oW2ddKTtnKyspQWIoZSxkW2ddKTtl
bHNlIEFiKGEsZik7cmV0dXJuIGQ9dWIoZiwic2NyaXB0IiksZC5sZW5ndGg+MCYmemIoZCwhaSYm
dWIoYSwic2NyaXB0IikpLGQ9aD1lPW51bGwsZn0sYnVpbGRGcmFnbWVudDpmdW5jdGlvbihhLGIs
YyxkKXtmb3IodmFyIGUsZixnLGgsaSxqLGwsbj1hLmxlbmd0aCxvPWRiKGIpLHA9W10scT0wO24+
cTtxKyspaWYoZj1hW3FdLGZ8fDA9PT1mKWlmKCJvYmplY3QiPT09bS50eXBlKGYpKW0ubWVyZ2Uo
cCxmLm5vZGVUeXBlP1tmXTpmKTtlbHNlIGlmKGxiLnRlc3QoZikpe2g9aHx8by5hcHBlbmRDaGls
ZChiLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxpPShqYi5leGVjKGYpfHxbIiIsIiJdKVsxXS50b0xv
d2VyQ2FzZSgpLGw9cmJbaV18fHJiLl9kZWZhdWx0LGguaW5uZXJIVE1MPWxbMV0rZi5yZXBsYWNl
KGliLCI8JDE+PC8kMj4iKStsWzJdLGU9bFswXTt3aGlsZShlLS0paD1oLmxhc3RDaGlsZDtpZigh
ay5sZWFkaW5nV2hpdGVzcGFjZSYmaGIudGVzdChmKSYmcC5wdXNoKGIuY3JlYXRlVGV4dE5vZGUo
aGIuZXhlYyhmKVswXSkpLCFrLnRib2R5KXtmPSJ0YWJsZSIhPT1pfHxrYi50ZXN0KGYpPyI8dGFi
bGU+IiE9PWxbMV18fGtiLnRlc3QoZik/MDpoOmguZmlyc3RDaGlsZCxlPWYmJmYuY2hpbGROb2Rl
cy5sZW5ndGg7d2hpbGUoZS0tKW0ubm9kZU5hbWUoaj1mLmNoaWxkTm9kZXNbZV0sInRib2R5Iikm
JiFqLmNoaWxkTm9kZXMubGVuZ3RoJiZmLnJlbW92ZUNoaWxkKGopfW0ubWVyZ2UocCxoLmNoaWxk
Tm9kZXMpLGgudGV4dENvbnRlbnQ9IiI7d2hpbGUoaC5maXJzdENoaWxkKWgucmVtb3ZlQ2hpbGQo
aC5maXJzdENoaWxkKTtoPW8ubGFzdENoaWxkfWVsc2UgcC5wdXNoKGIuY3JlYXRlVGV4dE5vZGUo
ZikpO2gmJm8ucmVtb3ZlQ2hpbGQoaCksay5hcHBlbmRDaGVja2VkfHxtLmdyZXAodWIocCwiaW5w
dXQiKSx2YikscT0wO3doaWxlKGY9cFtxKytdKWlmKCghZHx8LTE9PT1tLmluQXJyYXkoZixkKSkm
JihnPW0uY29udGFpbnMoZi5vd25lckRvY3VtZW50LGYpLGg9dWIoby5hcHBlbmRDaGlsZChmKSwi
c2NyaXB0IiksZyYmemIoaCksYykpe2U9MDt3aGlsZShmPWhbZSsrXSlvYi50ZXN0KGYudHlwZXx8
IiIpJiZjLnB1c2goZil9cmV0dXJuIGg9bnVsbCxvfSxjbGVhbkRhdGE6ZnVuY3Rpb24oYSxiKXtm
b3IodmFyIGQsZSxmLGcsaD0wLGk9bS5leHBhbmRvLGo9bS5jYWNoZSxsPWsuZGVsZXRlRXhwYW5k
byxuPW0uZXZlbnQuc3BlY2lhbDtudWxsIT0oZD1hW2hdKTtoKyspaWYoKGJ8fG0uYWNjZXB0RGF0
YShkKSkmJihmPWRbaV0sZz1mJiZqW2ZdKSl7aWYoZy5ldmVudHMpZm9yKGUgaW4gZy5ldmVudHMp
bltlXT9tLmV2ZW50LnJlbW92ZShkLGUpOm0ucmVtb3ZlRXZlbnQoZCxlLGcuaGFuZGxlKTtqW2Zd
JiYoZGVsZXRlIGpbZl0sbD9kZWxldGUgZFtpXTp0eXBlb2YgZC5yZW1vdmVBdHRyaWJ1dGUhPT1L
P2QucmVtb3ZlQXR0cmlidXRlKGkpOmRbaV09bnVsbCxjLnB1c2goZikpfX19KSxtLmZuLmV4dGVu
ZCh7dGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEpe3JldHVybiB2b2lk
IDA9PT1hP20udGV4dCh0aGlzKTp0aGlzLmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBdJiZ0aGlzWzBd
Lm93bmVyRG9jdW1lbnR8fHkpLmNyZWF0ZVRleHROb2RlKGEpKX0sbnVsbCxhLGFyZ3VtZW50cy5s
ZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMs
ZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09
PXRoaXMubm9kZVR5cGUpe3ZhciBiPXdiKHRoaXMsYSk7Yi5hcHBlbmRDaGlsZChhKX19KX0scHJl
cGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmdW5jdGlvbihh
KXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2Rl
VHlwZSl7dmFyIGI9d2IodGhpcyxhKTtiLmluc2VydEJlZm9yZShhLGIuZmlyc3RDaGlsZCl9fSl9
LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmdW5jdGlv
bihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlz
KX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmdW5j
dGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0
aGlzLm5leHRTaWJsaW5nKX0pfSxyZW1vdmU6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZD1hP20u
ZmlsdGVyKGEsdGhpcyk6dGhpcyxlPTA7bnVsbCE9KGM9ZFtlXSk7ZSsrKWJ8fDEhPT1jLm5vZGVU
eXBlfHxtLmNsZWFuRGF0YSh1YihjKSksYy5wYXJlbnROb2RlJiYoYiYmbS5jb250YWlucyhjLm93
bmVyRG9jdW1lbnQsYykmJnpiKHViKGMsInNjcmlwdCIpKSxjLnBhcmVudE5vZGUucmVtb3ZlQ2hp
bGQoYykpO3JldHVybiB0aGlzfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgYSxiPTA7bnVsbCE9
KGE9dGhpc1tiXSk7YisrKXsxPT09YS5ub2RlVHlwZSYmbS5jbGVhbkRhdGEodWIoYSwhMSkpO3do
aWxlKGEuZmlyc3RDaGlsZClhLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCk7YS5vcHRpb25zJiZt
Lm5vZGVOYW1lKGEsInNlbGVjdCIpJiYoYS5vcHRpb25zLmxlbmd0aD0wKX1yZXR1cm4gdGhpc30s
Y2xvbmU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1udWxsPT1hPyExOmEsYj1udWxsPT1iP2E6Yix0
aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBtLmNsb25lKHRoaXMsYSxiKX0pfSxodG1sOmZ1bmN0
aW9uKGEpe3JldHVybiBWKHRoaXMsZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXXx8e30sYz0wLGQ9
dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09YSlyZXR1cm4gMT09PWIubm9kZVR5cGU/Yi5pbm5lckhU
TUwucmVwbGFjZShmYiwiIik6dm9pZCAwO2lmKCEoInN0cmluZyIhPXR5cGVvZiBhfHxtYi50ZXN0
KGEpfHwhay5odG1sU2VyaWFsaXplJiZnYi50ZXN0KGEpfHwhay5sZWFkaW5nV2hpdGVzcGFjZSYm
aGIudGVzdChhKXx8cmJbKGpiLmV4ZWMoYSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldKSl7
YT1hLnJlcGxhY2UoaWIsIjwkMT48LyQyPiIpO3RyeXtmb3IoO2Q+YztjKyspYj10aGlzW2NdfHx7
fSwxPT09Yi5ub2RlVHlwZSYmKG0uY2xlYW5EYXRhKHViKGIsITEpKSxiLmlubmVySFRNTD1hKTti
PTB9Y2F0Y2goZSl7fX1iJiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGEpfSxudWxsLGEsYXJndW1lbnRz
Lmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzWzBdO3JldHVy
biB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmdW5jdGlvbihiKXthPXRoaXMucGFyZW50Tm9kZSxt
LmNsZWFuRGF0YSh1Yih0aGlzKSksYSYmYS5yZXBsYWNlQ2hpbGQoYix0aGlzKX0pLGEmJihhLmxl
bmd0aHx8YS5ub2RlVHlwZSk/dGhpczp0aGlzLnJlbW92ZSgpfSxkZXRhY2g6ZnVuY3Rpb24oYSl7
cmV0dXJuIHRoaXMucmVtb3ZlKGEsITApfSxkb21NYW5pcDpmdW5jdGlvbihhLGIpe2E9ZS5hcHBs
eShbXSxhKTt2YXIgYyxkLGYsZyxoLGksaj0wLGw9dGhpcy5sZW5ndGgsbj10aGlzLG89bC0xLHA9
YVswXSxxPW0uaXNGdW5jdGlvbihwKTtpZihxfHxsPjEmJiJzdHJpbmciPT10eXBlb2YgcCYmIWsu
Y2hlY2tDbG9uZSYmbmIudGVzdChwKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3ZhciBk
PW4uZXEoYyk7cSYmKGFbMF09cC5jYWxsKHRoaXMsYyxkLmh0bWwoKSkpLGQuZG9tTWFuaXAoYSxi
KX0pO2lmKGwmJihpPW0uYnVpbGRGcmFnbWVudChhLHRoaXNbMF0ub3duZXJEb2N1bWVudCwhMSx0
aGlzKSxjPWkuZmlyc3RDaGlsZCwxPT09aS5jaGlsZE5vZGVzLmxlbmd0aCYmKGk9YyksYykpe2Zv
cihnPW0ubWFwKHViKGksInNjcmlwdCIpLHhiKSxmPWcubGVuZ3RoO2w+ajtqKyspZD1pLGohPT1v
JiYoZD1tLmNsb25lKGQsITAsITApLGYmJm0ubWVyZ2UoZyx1YihkLCJzY3JpcHQiKSkpLGIuY2Fs
bCh0aGlzW2pdLGQsaik7aWYoZilmb3IoaD1nW2cubGVuZ3RoLTFdLm93bmVyRG9jdW1lbnQsbS5t
YXAoZyx5Yiksaj0wO2Y+ajtqKyspZD1nW2pdLG9iLnRlc3QoZC50eXBlfHwiIikmJiFtLl9kYXRh
KGQsImdsb2JhbEV2YWwiKSYmbS5jb250YWlucyhoLGQpJiYoZC5zcmM/bS5fZXZhbFVybCYmbS5f
ZXZhbFVybChkLnNyYyk6bS5nbG9iYWxFdmFsKChkLnRleHR8fGQudGV4dENvbnRlbnR8fGQuaW5u
ZXJIVE1MfHwiIikucmVwbGFjZShxYiwiIikpKTtpPWM9bnVsbH1yZXR1cm4gdGhpc319KSxtLmVh
Y2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJi
ZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5j
dGlvbihhLGIpe20uZm5bYV09ZnVuY3Rpb24oYSl7Zm9yKHZhciBjLGQ9MCxlPVtdLGc9bShhKSxo
PWcubGVuZ3RoLTE7aD49ZDtkKyspYz1kPT09aD90aGlzOnRoaXMuY2xvbmUoITApLG0oZ1tkXSlb
Yl0oYyksZi5hcHBseShlLGMuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhlKX19KTt2YXIg
Q2IsRGI9e307ZnVuY3Rpb24gRWIoYixjKXt2YXIgZCxlPW0oYy5jcmVhdGVFbGVtZW50KGIpKS5h
cHBlbmRUbyhjLmJvZHkpLGY9YS5nZXREZWZhdWx0Q29tcHV0ZWRTdHlsZSYmKGQ9YS5nZXREZWZh
dWx0Q29tcHV0ZWRTdHlsZShlWzBdKSk/ZC5kaXNwbGF5Om0uY3NzKGVbMF0sImRpc3BsYXkiKTty
ZXR1cm4gZS5kZXRhY2goKSxmfWZ1bmN0aW9uIEZiKGEpe3ZhciBiPXksYz1EYlthXTtyZXR1cm4g
Y3x8KGM9RWIoYSxiKSwibm9uZSIhPT1jJiZjfHwoQ2I9KENifHxtKCI8aWZyYW1lIGZyYW1lYm9y
ZGVyPScwJyB3aWR0aD0nMCcgaGVpZ2h0PScwJy8+IikpLmFwcGVuZFRvKGIuZG9jdW1lbnRFbGVt
ZW50KSxiPShDYlswXS5jb250ZW50V2luZG93fHxDYlswXS5jb250ZW50RG9jdW1lbnQpLmRvY3Vt
ZW50LGIud3JpdGUoKSxiLmNsb3NlKCksYz1FYihhLGIpLENiLmRldGFjaCgpKSxEYlthXT1jKSxj
fSFmdW5jdGlvbigpe3ZhciBhO2suc2hyaW5rV3JhcEJsb2Nrcz1mdW5jdGlvbigpe2lmKG51bGwh
PWEpcmV0dXJuIGE7YT0hMTt2YXIgYixjLGQ7cmV0dXJuIGM9eS5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiYm9keSIpWzBdLGMmJmMuc3R5bGU/KGI9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPXkuY3Jl
YXRlRWxlbWVudCgiZGl2IiksZC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtib3Jk
ZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweCIsYy5hcHBlbmRDaGlsZChk
KS5hcHBlbmRDaGlsZChiKSx0eXBlb2YgYi5zdHlsZS56b29tIT09SyYmKGIuc3R5bGUuY3NzVGV4
dD0iLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50
LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjA7Ym9yZGVy
OjA7cGFkZGluZzoxcHg7d2lkdGg6MXB4O3pvb206MSIsYi5hcHBlbmRDaGlsZCh5LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpKS5zdHlsZS53aWR0aD0iNXB4IixhPTMhPT1iLm9mZnNldFdpZHRoKSxjLnJl
bW92ZUNoaWxkKGQpLGEpOnZvaWQgMH19KCk7dmFyIEdiPS9ebWFyZ2luLyxIYj1uZXcgUmVnRXhw
KCJeKCIrUysiKSg/IXB4KVthLXolXSskIiwiaSIpLEliLEpiLEtiPS9eKHRvcHxyaWdodHxib3R0
b218bGVmdCkkLzthLmdldENvbXB1dGVkU3R5bGU/KEliPWZ1bmN0aW9uKGEpe3JldHVybiBhLm93
bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpfSxKYj1mdW5j
dGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLnN0eWxlO3JldHVybiBjPWN8fEliKGEpLGc9Yz9j
LmdldFByb3BlcnR5VmFsdWUoYil8fGNbYl06dm9pZCAwLGMmJigiIiE9PWd8fG0uY29udGFpbnMo
YS5vd25lckRvY3VtZW50LGEpfHwoZz1tLnN0eWxlKGEsYikpLEhiLnRlc3QoZykmJkdiLnRlc3Qo
YikmJihkPWgud2lkdGgsZT1oLm1pbldpZHRoLGY9aC5tYXhXaWR0aCxoLm1pbldpZHRoPWgubWF4
V2lkdGg9aC53aWR0aD1nLGc9Yy53aWR0aCxoLndpZHRoPWQsaC5taW5XaWR0aD1lLGgubWF4V2lk
dGg9ZikpLHZvaWQgMD09PWc/ZzpnKyIifSk6eS5kb2N1bWVudEVsZW1lbnQuY3VycmVudFN0eWxl
JiYoSWI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY3VycmVudFN0eWxlfSxKYj1mdW5jdGlvbihhLGIs
Yyl7dmFyIGQsZSxmLGcsaD1hLnN0eWxlO3JldHVybiBjPWN8fEliKGEpLGc9Yz9jW2JdOnZvaWQg
MCxudWxsPT1nJiZoJiZoW2JdJiYoZz1oW2JdKSxIYi50ZXN0KGcpJiYhS2IudGVzdChiKSYmKGQ9
aC5sZWZ0LGU9YS5ydW50aW1lU3R5bGUsZj1lJiZlLmxlZnQsZiYmKGUubGVmdD1hLmN1cnJlbnRT
dHlsZS5sZWZ0KSxoLmxlZnQ9ImZvbnRTaXplIj09PWI/IjFlbSI6ZyxnPWgucGl4ZWxMZWZ0KyJw
eCIsaC5sZWZ0PWQsZiYmKGUubGVmdD1mKSksdm9pZCAwPT09Zz9nOmcrIiJ8fCJhdXRvIn0pO2Z1
bmN0aW9uIExiKGEsYil7cmV0dXJue2dldDpmdW5jdGlvbigpe3ZhciBjPWEoKTtpZihudWxsIT1j
KXJldHVybiBjP3ZvaWQgZGVsZXRlIHRoaXMuZ2V0Oih0aGlzLmdldD1iKS5hcHBseSh0aGlzLGFy
Z3VtZW50cyl9fX0hZnVuY3Rpb24oKXt2YXIgYixjLGQsZSxmLGcsaDtpZihiPXkuY3JlYXRlRWxl
bWVudCgiZGl2IiksYi5pbm5lckhUTUw9IiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9
Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiIsZD1iLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJhIilbMF0sYz1kJiZkLnN0eWxlKXtjLmNzc1RleHQ9ImZsb2F0OmxlZnQ7b3BhY2l0eTou
NSIsay5vcGFjaXR5PSIwLjUiPT09Yy5vcGFjaXR5LGsuY3NzRmxvYXQ9ISFjLmNzc0Zsb2F0LGIu
c3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixiLmNsb25lTm9kZSghMCkuc3R5bGUu
YmFja2dyb3VuZENsaXA9IiIsay5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWIuc3R5
bGUuYmFja2dyb3VuZENsaXAsay5ib3hTaXppbmc9IiI9PT1jLmJveFNpemluZ3x8IiI9PT1jLk1v
ekJveFNpemluZ3x8IiI9PT1jLldlYmtpdEJveFNpemluZyxtLmV4dGVuZChrLHtyZWxpYWJsZUhp
ZGRlbk9mZnNldHM6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09ZyYmaSgpLGd9LGJveFNpemluZ1Jl
bGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWYmJmkoKSxmfSxwaXhlbFBvc2l0aW9uOmZ1
bmN0aW9uKCl7cmV0dXJuIG51bGw9PWUmJmkoKSxlfSxyZWxpYWJsZU1hcmdpblJpZ2h0OmZ1bmN0
aW9uKCl7cmV0dXJuIG51bGw9PWgmJmkoKSxofX0pO2Z1bmN0aW9uIGkoKXt2YXIgYixjLGQsaTtj
PXkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxlJiYoYj15LmNyZWF0
ZUVsZW1lbnQoImRpdiIpLGQ9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxkLnN0eWxlLmNzc1RleHQ9
InBvc2l0aW9uOmFic29sdXRlO2JvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjA7bGVmdDot
OTk5OXB4IixjLmFwcGVuZENoaWxkKGQpLmFwcGVuZENoaWxkKGIpLGIuc3R5bGUuY3NzVGV4dD0i
LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7
Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDoxJTt0b3A6MSU7
Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo0cHg7cG9zaXRpb246YWJzb2x1dGUiLGU9Zj0h
MSxoPSEwLGEuZ2V0Q29tcHV0ZWRTdHlsZSYmKGU9IjElIiE9PShhLmdldENvbXB1dGVkU3R5bGUo
YixudWxsKXx8e30pLnRvcCxmPSI0cHgiPT09KGEuZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpfHx7
d2lkdGg6IjRweCJ9KS53aWR0aCxpPWIuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYi
KSksaS5zdHlsZS5jc3NUZXh0PWIuc3R5bGUuY3NzVGV4dD0iLXdlYmtpdC1ib3gtc2l6aW5nOmNv
bnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQt
Ym94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowIixpLnN0eWxlLm1h
cmdpblJpZ2h0PWkuc3R5bGUud2lkdGg9IjAiLGIuc3R5bGUud2lkdGg9IjFweCIsaD0hcGFyc2VG
bG9hdCgoYS5nZXRDb21wdXRlZFN0eWxlKGksbnVsbCl8fHt9KS5tYXJnaW5SaWdodCkpLGIuaW5u
ZXJIVE1MPSI8dGFibGU+PHRyPjx0ZD48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+IixpPWIu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIiksaVswXS5zdHlsZS5jc3NUZXh0PSJtYXJnaW46MDti
b3JkZXI6MDtwYWRkaW5nOjA7ZGlzcGxheTpub25lIixnPTA9PT1pWzBdLm9mZnNldEhlaWdodCxn
JiYoaVswXS5zdHlsZS5kaXNwbGF5PSIiLGlbMV0uc3R5bGUuZGlzcGxheT0ibm9uZSIsZz0wPT09
aVswXS5vZmZzZXRIZWlnaHQpLGMucmVtb3ZlQ2hpbGQoZCkpfX19KCksbS5zd2FwPWZ1bmN0aW9u
KGEsYixjLGQpe3ZhciBlLGYsZz17fTtmb3IoZiBpbiBiKWdbZl09YS5zdHlsZVtmXSxhLnN0eWxl
W2ZdPWJbZl07ZT1jLmFwcGx5KGEsZHx8W10pO2ZvcihmIGluIGIpYS5zdHlsZVtmXT1nW2ZdO3Jl
dHVybiBlfTt2YXIgTWI9L2FscGhhXChbXildKlwpL2ksTmI9L29wYWNpdHlccyo9XHMqKFteKV0q
KS8sT2I9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFBiPW5ldyBSZWdFeHAoIl4oIitTKyIp
KC4qKSQiLCJpIiksUWI9bmV3IFJlZ0V4cCgiXihbKy1dKT0oIitTKyIpIiwiaSIpLFJiPXtwb3Np
dGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxTYj17
bGV0dGVyU3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn0sVGI9WyJXZWJraXQiLCJPIiwiTW96
IiwibXMiXTtmdW5jdGlvbiBVYihhLGIpe2lmKGIgaW4gYSlyZXR1cm4gYjt2YXIgYz1iLmNoYXJB
dCgwKS50b1VwcGVyQ2FzZSgpK2Iuc2xpY2UoMSksZD1iLGU9VGIubGVuZ3RoO3doaWxlKGUtLSlp
ZihiPVRiW2VdK2MsYiBpbiBhKXJldHVybiBiO3JldHVybiBkfWZ1bmN0aW9uIFZiKGEsYil7Zm9y
KHZhciBjLGQsZSxmPVtdLGc9MCxoPWEubGVuZ3RoO2g+ZztnKyspZD1hW2ddLGQuc3R5bGUmJihm
W2ddPW0uX2RhdGEoZCwib2xkZGlzcGxheSIpLGM9ZC5zdHlsZS5kaXNwbGF5LGI/KGZbZ118fCJu
b25lIiE9PWN8fChkLnN0eWxlLmRpc3BsYXk9IiIpLCIiPT09ZC5zdHlsZS5kaXNwbGF5JiZVKGQp
JiYoZltnXT1tLl9kYXRhKGQsIm9sZGRpc3BsYXkiLEZiKGQubm9kZU5hbWUpKSkpOihlPVUoZCks
KGMmJiJub25lIiE9PWN8fCFlKSYmbS5fZGF0YShkLCJvbGRkaXNwbGF5IixlP2M6bS5jc3MoZCwi
ZGlzcGxheSIpKSkpO2ZvcihnPTA7aD5nO2crKylkPWFbZ10sZC5zdHlsZSYmKGImJiJub25lIiE9
PWQuc3R5bGUuZGlzcGxheSYmIiIhPT1kLnN0eWxlLmRpc3BsYXl8fChkLnN0eWxlLmRpc3BsYXk9
Yj9mW2ddfHwiIjoibm9uZSIpKTtyZXR1cm4gYX1mdW5jdGlvbiBXYihhLGIsYyl7dmFyIGQ9UGIu
ZXhlYyhiKTtyZXR1cm4gZD9NYXRoLm1heCgwLGRbMV0tKGN8fDApKSsoZFsyXXx8InB4Iik6Yn1m
dW5jdGlvbiBYYihhLGIsYyxkLGUpe2Zvcih2YXIgZj1jPT09KGQ/ImJvcmRlciI6ImNvbnRlbnQi
KT80OiJ3aWR0aCI9PT1iPzE6MCxnPTA7ND5mO2YrPTIpIm1hcmdpbiI9PT1jJiYoZys9bS5jc3Mo
YSxjK1RbZl0sITAsZSkpLGQ/KCJjb250ZW50Ij09PWMmJihnLT1tLmNzcyhhLCJwYWRkaW5nIitU
W2ZdLCEwLGUpKSwibWFyZ2luIiE9PWMmJihnLT1tLmNzcyhhLCJib3JkZXIiK1RbZl0rIldpZHRo
IiwhMCxlKSkpOihnKz1tLmNzcyhhLCJwYWRkaW5nIitUW2ZdLCEwLGUpLCJwYWRkaW5nIiE9PWMm
JihnKz1tLmNzcyhhLCJib3JkZXIiK1RbZl0rIldpZHRoIiwhMCxlKSkpO3JldHVybiBnfWZ1bmN0
aW9uIFliKGEsYixjKXt2YXIgZD0hMCxlPSJ3aWR0aCI9PT1iP2Eub2Zmc2V0V2lkdGg6YS5vZmZz
ZXRIZWlnaHQsZj1JYihhKSxnPWsuYm94U2l6aW5nJiYiYm9yZGVyLWJveCI9PT1tLmNzcyhhLCJi
b3hTaXppbmciLCExLGYpO2lmKDA+PWV8fG51bGw9PWUpe2lmKGU9SmIoYSxiLGYpLCgwPmV8fG51
bGw9PWUpJiYoZT1hLnN0eWxlW2JdKSxIYi50ZXN0KGUpKXJldHVybiBlO2Q9ZyYmKGsuYm94U2l6
aW5nUmVsaWFibGUoKXx8ZT09PWEuc3R5bGVbYl0pLGU9cGFyc2VGbG9hdChlKXx8MH1yZXR1cm4g
ZStYYihhLGIsY3x8KGc/ImJvcmRlciI6ImNvbnRlbnQiKSxkLGYpKyJweCJ9bS5leHRlbmQoe2Nz
c0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oYSxiKXtpZihiKXt2YXIgYz1KYihhLCJvcGFj
aXR5Iik7cmV0dXJuIiI9PT1jPyIxIjpjfX19fSxjc3NOdW1iZXI6e2NvbHVtbkNvdW50OiEwLGZp
bGxPcGFjaXR5OiEwLGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxsaW5l
SGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4
OiEwLHpvb206ITB9LGNzc1Byb3BzOnsiZmxvYXQiOmsuY3NzRmxvYXQ/ImNzc0Zsb2F0Ijoic3R5
bGVGbG9hdCJ9LHN0eWxlOmZ1bmN0aW9uKGEsYixjLGQpe2lmKGEmJjMhPT1hLm5vZGVUeXBlJiY4
IT09YS5ub2RlVHlwZSYmYS5zdHlsZSl7dmFyIGUsZixnLGg9bS5jYW1lbENhc2UoYiksaT1hLnN0
eWxlO2lmKGI9bS5jc3NQcm9wc1toXXx8KG0uY3NzUHJvcHNbaF09VWIoaSxoKSksZz1tLmNzc0hv
b2tzW2JdfHxtLmNzc0hvb2tzW2hdLHZvaWQgMD09PWMpcmV0dXJuIGcmJiJnZXQiaW4gZyYmdm9p
ZCAwIT09KGU9Zy5nZXQoYSwhMSxkKSk/ZTppW2JdO2lmKGY9dHlwZW9mIGMsInN0cmluZyI9PT1m
JiYoZT1RYi5leGVjKGMpKSYmKGM9KGVbMV0rMSkqZVsyXStwYXJzZUZsb2F0KG0uY3NzKGEsYikp
LGY9Im51bWJlciIpLG51bGwhPWMmJmM9PT1jJiYoIm51bWJlciIhPT1mfHxtLmNzc051bWJlclto
XXx8KGMrPSJweCIpLGsuY2xlYXJDbG9uZVN0eWxlfHwiIiE9PWN8fDAhPT1iLmluZGV4T2YoImJh
Y2tncm91bmQiKXx8KGlbYl09ImluaGVyaXQiKSwhKGcmJiJzZXQiaW4gZyYmdm9pZCAwPT09KGM9
Zy5zZXQoYSxjLGQpKSkpKXRyeXtpW2JdPWN9Y2F0Y2goail7fX19LGNzczpmdW5jdGlvbihhLGIs
YyxkKXt2YXIgZSxmLGcsaD1tLmNhbWVsQ2FzZShiKTtyZXR1cm4gYj1tLmNzc1Byb3BzW2hdfHwo
bS5jc3NQcm9wc1toXT1VYihhLnN0eWxlLGgpKSxnPW0uY3NzSG9va3NbYl18fG0uY3NzSG9va3Nb
aF0sZyYmImdldCJpbiBnJiYoZj1nLmdldChhLCEwLGMpKSx2b2lkIDA9PT1mJiYoZj1KYihhLGIs
ZCkpLCJub3JtYWwiPT09ZiYmYiBpbiBTYiYmKGY9U2JbYl0pLCIiPT09Y3x8Yz8oZT1wYXJzZUZs
b2F0KGYpLGM9PT0hMHx8bS5pc051bWVyaWMoZSk/ZXx8MDpmKTpmfX0pLG0uZWFjaChbImhlaWdo
dCIsIndpZHRoIl0sZnVuY3Rpb24oYSxiKXttLmNzc0hvb2tzW2JdPXtnZXQ6ZnVuY3Rpb24oYSxj
LGQpe3JldHVybiBjP09iLnRlc3QobS5jc3MoYSwiZGlzcGxheSIpKSYmMD09PWEub2Zmc2V0V2lk
dGg/bS5zd2FwKGEsUmIsZnVuY3Rpb24oKXtyZXR1cm4gWWIoYSxiLGQpfSk6WWIoYSxiLGQpOnZv
aWQgMH0sc2V0OmZ1bmN0aW9uKGEsYyxkKXt2YXIgZT1kJiZJYihhKTtyZXR1cm4gV2IoYSxjLGQ/
WGIoYSxiLGQsay5ib3hTaXppbmcmJiJib3JkZXItYm94Ij09PW0uY3NzKGEsImJveFNpemluZyIs
ITEsZSksZSk6MCl9fX0pLGsub3BhY2l0eXx8KG0uY3NzSG9va3Mub3BhY2l0eT17Z2V0OmZ1bmN0
aW9uKGEsYil7cmV0dXJuIE5iLnRlc3QoKGImJmEuY3VycmVudFN0eWxlP2EuY3VycmVudFN0eWxl
LmZpbHRlcjphLnN0eWxlLmZpbHRlcil8fCIiKT8uMDEqcGFyc2VGbG9hdChSZWdFeHAuJDEpKyIi
OmI/IjEiOiIifSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnN0eWxlLGQ9YS5jdXJyZW50U3R5
bGUsZT1tLmlzTnVtZXJpYyhiKT8iYWxwaGEob3BhY2l0eT0iKzEwMCpiKyIpIjoiIixmPWQmJmQu
ZmlsdGVyfHxjLmZpbHRlcnx8IiI7Yy56b29tPTEsKGI+PTF8fCIiPT09YikmJiIiPT09bS50cmlt
KGYucmVwbGFjZShNYiwiIikpJiZjLnJlbW92ZUF0dHJpYnV0ZSYmKGMucmVtb3ZlQXR0cmlidXRl
KCJmaWx0ZXIiKSwiIj09PWJ8fGQmJiFkLmZpbHRlcil8fChjLmZpbHRlcj1NYi50ZXN0KGYpP2Yu
cmVwbGFjZShNYixlKTpmKyIgIitlKX19KSxtLmNzc0hvb2tzLm1hcmdpblJpZ2h0PUxiKGsucmVs
aWFibGVNYXJnaW5SaWdodCxmdW5jdGlvbihhLGIpe3JldHVybiBiP20uc3dhcChhLHtkaXNwbGF5
OiJpbmxpbmUtYmxvY2sifSxKYixbYSwibWFyZ2luUmlnaHQiXSk6dm9pZCAwfSksbS5lYWNoKHtt
YXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxiKXttLmNzc0hv
b2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXtmb3IodmFyIGQ9MCxlPXt9LGY9InN0cmluZyI9
PXR5cGVvZiBjP2Muc3BsaXQoIiAiKTpbY107ND5kO2QrKyllW2ErVFtkXStiXT1mW2RdfHxmW2Qt
Ml18fGZbMF07cmV0dXJuIGV9fSxHYi50ZXN0KGEpfHwobS5jc3NIb29rc1thK2JdLnNldD1XYil9
KSxtLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihh
LGIsYyl7dmFyIGQsZSxmPXt9LGc9MDtpZihtLmlzQXJyYXkoYikpe2ZvcihkPUliKGEpLGU9Yi5s
ZW5ndGg7ZT5nO2crKylmW2JbZ11dPW0uY3NzKGEsYltnXSwhMSxkKTtyZXR1cm4gZn1yZXR1cm4g
dm9pZCAwIT09Yz9tLnN0eWxlKGEsYixjKTptLmNzcyhhLGIpfSxhLGIsYXJndW1lbnRzLmxlbmd0
aD4xKX0sc2hvdzpmdW5jdGlvbigpe3JldHVybiBWYih0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigp
e3JldHVybiBWYih0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3JldHVybiJib29sZWFuIj09dHlw
ZW9mIGE/YT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtVKHRo
aXMpP20odGhpcykuc2hvdygpOm0odGhpcykuaGlkZSgpfSl9fSk7ZnVuY3Rpb24gWmIoYSxiLGMs
ZCxlKXtyZXR1cm4gbmV3IFpiLnByb3RvdHlwZS5pbml0KGEsYixjLGQsZSl9bS5Ud2Vlbj1aYixa
Yi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlpiLGluaXQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3Ro
aXMuZWxlbT1hLHRoaXMucHJvcD1jLHRoaXMuZWFzaW5nPWV8fCJzd2luZyIsdGhpcy5vcHRpb25z
PWIsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPWQsdGhpcy51bml0PWZ8
fChtLmNzc051bWJlcltjXT8iIjoicHgiKQotfSxjdXI6ZnVuY3Rpb24oKXt2YXIgYT1aYi5wcm9w
SG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gYSYmYS5nZXQ/YS5nZXQodGhpcyk6WmIucHJvcEhvb2tz
Ll9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGEpe3ZhciBiLGM9WmIucHJvcEhvb2tz
W3RoaXMucHJvcF07cmV0dXJuIHRoaXMucG9zPWI9dGhpcy5vcHRpb25zLmR1cmF0aW9uP20uZWFz
aW5nW3RoaXMuZWFzaW5nXShhLHRoaXMub3B0aW9ucy5kdXJhdGlvbiphLDAsMSx0aGlzLm9wdGlv
bnMuZHVyYXRpb24pOmEsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmIrdGhpcy5zdGFy
dCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhp
cy5ub3csdGhpcyksYyYmYy5zZXQ/Yy5zZXQodGhpcyk6WmIucHJvcEhvb2tzLl9kZWZhdWx0LnNl
dCh0aGlzKSx0aGlzfX0sWmIucHJvdG90eXBlLmluaXQucHJvdG90eXBlPVpiLnByb3RvdHlwZSxa
Yi5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIG51bGw9
PWEuZWxlbVthLnByb3BdfHxhLmVsZW0uc3R5bGUmJm51bGwhPWEuZWxlbS5zdHlsZVthLnByb3Bd
PyhiPW0uY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKTphLmVsZW1bYS5w
cm9wXX0sc2V0OmZ1bmN0aW9uKGEpe20uZnguc3RlcFthLnByb3BdP20uZnguc3RlcFthLnByb3Bd
KGEpOmEuZWxlbS5zdHlsZSYmKG51bGwhPWEuZWxlbS5zdHlsZVttLmNzc1Byb3BzW2EucHJvcF1d
fHxtLmNzc0hvb2tzW2EucHJvcF0pP20uc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQp
OmEuZWxlbVthLnByb3BdPWEubm93fX19LFpiLnByb3BIb29rcy5zY3JvbGxUb3A9WmIucHJvcEhv
b2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5w
YXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX0sbS5lYXNpbmc9e2xpbmVhcjpmdW5j
dGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpN
YXRoLlBJKS8yfX0sbS5meD1aYi5wcm90b3R5cGUuaW5pdCxtLmZ4LnN0ZXA9e307dmFyICRiLF9i
LGFjPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxiYz1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwp
KCIrUysiKShbYS16JV0qKSQiLCJpIiksY2M9L3F1ZXVlSG9va3MkLyxkYz1baWNdLGVjPXsiKiI6
W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpLGQ9Yy5jdXIoKSxlPWJj
LmV4ZWMoYiksZj1lJiZlWzNdfHwobS5jc3NOdW1iZXJbYV0/IiI6InB4IiksZz0obS5jc3NOdW1i
ZXJbYV18fCJweCIhPT1mJiYrZCkmJmJjLmV4ZWMobS5jc3MoYy5lbGVtLGEpKSxoPTEsaT0yMDtp
ZihnJiZnWzNdIT09Zil7Zj1mfHxnWzNdLGU9ZXx8W10sZz0rZHx8MTtkbyBoPWh8fCIuNSIsZy89
aCxtLnN0eWxlKGMuZWxlbSxhLGcrZik7d2hpbGUoaCE9PShoPWMuY3VyKCkvZCkmJjEhPT1oJiYt
LWkpfXJldHVybiBlJiYoZz1jLnN0YXJ0PStnfHwrZHx8MCxjLnVuaXQ9ZixjLmVuZD1lWzFdP2cr
KGVbMV0rMSkqZVsyXTorZVsyXSksY31dfTtmdW5jdGlvbiBmYygpe3JldHVybiBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCl7JGI9dm9pZCAwfSksJGI9bS5ub3coKX1mdW5jdGlvbiBnYyhhLGIpe3ZhciBj
LGQ9e2hlaWdodDphfSxlPTA7Zm9yKGI9Yj8xOjA7ND5lO2UrPTItYiljPVRbZV0sZFsibWFyZ2lu
IitjXT1kWyJwYWRkaW5nIitjXT1hO3JldHVybiBiJiYoZC5vcGFjaXR5PWQud2lkdGg9YSksZH1m
dW5jdGlvbiBoYyhhLGIsYyl7Zm9yKHZhciBkLGU9KGVjW2JdfHxbXSkuY29uY2F0KGVjWyIqIl0p
LGY9MCxnPWUubGVuZ3RoO2c+ZjtmKyspaWYoZD1lW2ZdLmNhbGwoYyxiLGEpKXJldHVybiBkfWZ1
bmN0aW9uIGljKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixsLG49dGhpcyxvPXt9LHA9YS5zdHls
ZSxxPWEubm9kZVR5cGUmJlUoYSkscj1tLl9kYXRhKGEsImZ4c2hvdyIpO2MucXVldWV8fChoPW0u
X3F1ZXVlSG9va3MoYSwiZngiKSxudWxsPT1oLnVucXVldWVkJiYoaC51bnF1ZXVlZD0wLGk9aC5l
bXB0eS5maXJlLGguZW1wdHkuZmlyZT1mdW5jdGlvbigpe2gudW5xdWV1ZWR8fGkoKX0pLGgudW5x
dWV1ZWQrKyxuLmFsd2F5cyhmdW5jdGlvbigpe24uYWx3YXlzKGZ1bmN0aW9uKCl7aC51bnF1ZXVl
ZC0tLG0ucXVldWUoYSwiZngiKS5sZW5ndGh8fGguZW1wdHkuZmlyZSgpfSl9KSksMT09PWEubm9k
ZVR5cGUmJigiaGVpZ2h0ImluIGJ8fCJ3aWR0aCJpbiBiKSYmKGMub3ZlcmZsb3c9W3Aub3ZlcmZs
b3cscC5vdmVyZmxvd1gscC5vdmVyZmxvd1ldLGo9bS5jc3MoYSwiZGlzcGxheSIpLGw9Im5vbmUi
PT09aj9tLl9kYXRhKGEsIm9sZGRpc3BsYXkiKXx8RmIoYS5ub2RlTmFtZSk6aiwiaW5saW5lIj09
PWwmJiJub25lIj09PW0uY3NzKGEsImZsb2F0IikmJihrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQm
JiJpbmxpbmUiIT09RmIoYS5ub2RlTmFtZSk/cC56b29tPTE6cC5kaXNwbGF5PSJpbmxpbmUtYmxv
Y2siKSksYy5vdmVyZmxvdyYmKHAub3ZlcmZsb3c9ImhpZGRlbiIsay5zaHJpbmtXcmFwQmxvY2tz
KCl8fG4uYWx3YXlzKGZ1bmN0aW9uKCl7cC5vdmVyZmxvdz1jLm92ZXJmbG93WzBdLHAub3ZlcmZs
b3dYPWMub3ZlcmZsb3dbMV0scC5vdmVyZmxvd1k9Yy5vdmVyZmxvd1syXX0pKTtmb3IoZCBpbiBi
KWlmKGU9YltkXSxhYy5leGVjKGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fCJ0b2dnbGUiPT09ZSxl
PT09KHE/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWV8fCFyfHx2b2lkIDA9PT1yW2RdKWNv
bnRpbnVlO3E9ITB9b1tkXT1yJiZyW2RdfHxtLnN0eWxlKGEsZCl9ZWxzZSBqPXZvaWQgMDtpZiht
LmlzRW1wdHlPYmplY3QobykpImlubGluZSI9PT0oIm5vbmUiPT09aj9GYihhLm5vZGVOYW1lKTpq
KSYmKHAuZGlzcGxheT1qKTtlbHNle3I/ImhpZGRlbiJpbiByJiYocT1yLmhpZGRlbik6cj1tLl9k
YXRhKGEsImZ4c2hvdyIse30pLGYmJihyLmhpZGRlbj0hcSkscT9tKGEpLnNob3coKTpuLmRvbmUo
ZnVuY3Rpb24oKXttKGEpLmhpZGUoKX0pLG4uZG9uZShmdW5jdGlvbigpe3ZhciBiO20uX3JlbW92
ZURhdGEoYSwiZnhzaG93Iik7Zm9yKGIgaW4gbyltLnN0eWxlKGEsYixvW2JdKX0pO2ZvcihkIGlu
IG8pZz1oYyhxP3JbZF06MCxkLG4pLGQgaW4gcnx8KHJbZF09Zy5zdGFydCxxJiYoZy5lbmQ9Zy5z
dGFydCxnLnN0YXJ0PSJ3aWR0aCI9PT1kfHwiaGVpZ2h0Ij09PWQ/MTowKSl9fWZ1bmN0aW9uIGpj
KGEsYil7dmFyIGMsZCxlLGYsZztmb3IoYyBpbiBhKWlmKGQ9bS5jYW1lbENhc2UoYyksZT1iW2Rd
LGY9YVtjXSxtLmlzQXJyYXkoZikmJihlPWZbMV0sZj1hW2NdPWZbMF0pLGMhPT1kJiYoYVtkXT1m
LGRlbGV0ZSBhW2NdKSxnPW0uY3NzSG9va3NbZF0sZyYmImV4cGFuZCJpbiBnKXtmPWcuZXhwYW5k
KGYpLGRlbGV0ZSBhW2RdO2ZvcihjIGluIGYpYyBpbiBhfHwoYVtjXT1mW2NdLGJbY109ZSl9ZWxz
ZSBiW2RdPWV9ZnVuY3Rpb24ga2MoYSxiLGMpe3ZhciBkLGUsZj0wLGc9ZGMubGVuZ3RoLGg9bS5E
ZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBpLmVsZW19KSxpPWZ1bmN0aW9uKCl7
aWYoZSlyZXR1cm4hMTtmb3IodmFyIGI9JGJ8fGZjKCksYz1NYXRoLm1heCgwLGouc3RhcnRUaW1l
K2ouZHVyYXRpb24tYiksZD1jL2ouZHVyYXRpb258fDAsZj0xLWQsZz0wLGk9ai50d2VlbnMubGVu
Z3RoO2k+ZztnKyspai50d2VlbnNbZ10ucnVuKGYpO3JldHVybiBoLm5vdGlmeVdpdGgoYSxbaixm
LGNdKSwxPmYmJmk/YzooaC5yZXNvbHZlV2l0aChhLFtqXSksITEpfSxqPWgucHJvbWlzZSh7ZWxl
bTphLHByb3BzOm0uZXh0ZW5kKHt9LGIpLG9wdHM6bS5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6
e319LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTok
Ynx8ZmMoKSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlv
bihiLGMpe3ZhciBkPW0uVHdlZW4oYSxqLm9wdHMsYixjLGoub3B0cy5zcGVjaWFsRWFzaW5nW2Jd
fHxqLm9wdHMuZWFzaW5nKTtyZXR1cm4gai50d2VlbnMucHVzaChkKSxkfSxzdG9wOmZ1bmN0aW9u
KGIpe3ZhciBjPTAsZD1iP2oudHdlZW5zLmxlbmd0aDowO2lmKGUpcmV0dXJuIHRoaXM7Zm9yKGU9
ITA7ZD5jO2MrKylqLnR3ZWVuc1tjXS5ydW4oMSk7cmV0dXJuIGI/aC5yZXNvbHZlV2l0aChhLFtq
LGJdKTpoLnJlamVjdFdpdGgoYSxbaixiXSksdGhpc319KSxrPWoucHJvcHM7Zm9yKGpjKGssai5v
cHRzLnNwZWNpYWxFYXNpbmcpO2c+ZjtmKyspaWYoZD1kY1tmXS5jYWxsKGosYSxrLGoub3B0cykp
cmV0dXJuIGQ7cmV0dXJuIG0ubWFwKGssaGMsaiksbS5pc0Z1bmN0aW9uKGoub3B0cy5zdGFydCkm
Jmoub3B0cy5zdGFydC5jYWxsKGEsaiksbS5meC50aW1lcihtLmV4dGVuZChpLHtlbGVtOmEsYW5p
bTpqLHF1ZXVlOmoub3B0cy5xdWV1ZX0pKSxqLnByb2dyZXNzKGoub3B0cy5wcm9ncmVzcykuZG9u
ZShqLm9wdHMuZG9uZSxqLm9wdHMuY29tcGxldGUpLmZhaWwoai5vcHRzLmZhaWwpLmFsd2F5cyhq
Lm9wdHMuYWx3YXlzKX1tLkFuaW1hdGlvbj1tLmV4dGVuZChrYyx7dHdlZW5lcjpmdW5jdGlvbihh
LGIpe20uaXNGdW5jdGlvbihhKT8oYj1hLGE9WyIqIl0pOmE9YS5zcGxpdCgiICIpO2Zvcih2YXIg
YyxkPTAsZT1hLmxlbmd0aDtlPmQ7ZCsrKWM9YVtkXSxlY1tjXT1lY1tjXXx8W10sZWNbY10udW5z
aGlmdChiKX0scHJlZmlsdGVyOmZ1bmN0aW9uKGEsYil7Yj9kYy51bnNoaWZ0KGEpOmRjLnB1c2go
YSl9fSksbS5zcGVlZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmIm9iamVjdCI9PXR5cGVvZiBh
P20uZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8bS5pc0Z1bmN0aW9uKGEpJiZhLGR1
cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFtLmlzRnVuY3Rpb24oYikmJmJ9O3JldHVybiBkLmR1
cmF0aW9uPW0uZngub2ZmPzA6Im51bWJlciI9PXR5cGVvZiBkLmR1cmF0aW9uP2QuZHVyYXRpb246
ZC5kdXJhdGlvbiBpbiBtLmZ4LnNwZWVkcz9tLmZ4LnNwZWVkc1tkLmR1cmF0aW9uXTptLmZ4LnNw
ZWVkcy5fZGVmYXVsdCwobnVsbD09ZC5xdWV1ZXx8ZC5xdWV1ZT09PSEwKSYmKGQucXVldWU9ImZ4
IiksZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKCl7bS5pc0Z1bmN0aW9uKGQu
b2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlJiZtLmRlcXVldWUodGhpcyxkLnF1ZXVlKX0s
ZH0sbS5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0
ZXIoVSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxh
LGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5pc0VtcHR5T2JqZWN0KGEp
LGY9bS5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWtjKHRoaXMsbS5leHRlbmQoe30s
YSksZik7KGV8fG0uX2RhdGEodGhpcywiZmluaXNoIikpJiZiLnN0b3AoITApfTtyZXR1cm4gZy5m
aW5pc2g9ZyxlfHxmLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGcpOnRoaXMucXVldWUoZi5xdWV1ZSxn
KX0sc3RvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zdG9wO2Rl
bGV0ZSBhLnN0b3AsYihjKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYz1iLGI9YSxhPXZv
aWQgMCksYiYmYSE9PSExJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlv
bigpe3ZhciBiPSEwLGU9bnVsbCE9YSYmYSsicXVldWVIb29rcyIsZj1tLnRpbWVycyxnPW0uX2Rh
dGEodGhpcyk7aWYoZSlnW2VdJiZnW2VdLnN0b3AmJmQoZ1tlXSk7ZWxzZSBmb3IoZSBpbiBnKWdb
ZV0mJmdbZV0uc3RvcCYmY2MudGVzdChlKSYmZChnW2VdKTtmb3IoZT1mLmxlbmd0aDtlLS07KWZb
ZV0uZWxlbSE9PXRoaXN8fG51bGwhPWEmJmZbZV0ucXVldWUhPT1hfHwoZltlXS5hbmltLnN0b3Ao
YyksYj0hMSxmLnNwbGljZShlLDEpKTsoYnx8IWMpJiZtLmRlcXVldWUodGhpcyxhKX0pfSxmaW5p
c2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0
aW9uKCl7dmFyIGIsYz1tLl9kYXRhKHRoaXMpLGQ9Y1thKyJxdWV1ZSJdLGU9Y1thKyJxdWV1ZUhv
b2tzIl0sZj1tLnRpbWVycyxnPWQ/ZC5sZW5ndGg6MDtmb3IoYy5maW5pc2g9ITAsbS5xdWV1ZSh0
aGlzLGEsW10pLGUmJmUuc3RvcCYmZS5zdG9wLmNhbGwodGhpcywhMCksYj1mLmxlbmd0aDtiLS07
KWZbYl0uZWxlbT09PXRoaXMmJmZbYl0ucXVldWU9PT1hJiYoZltiXS5hbmltLnN0b3AoITApLGYu
c3BsaWNlKGIsMSkpO2ZvcihiPTA7Zz5iO2IrKylkW2JdJiZkW2JdLmZpbmlzaCYmZFtiXS5maW5p
c2guY2FsbCh0aGlzKTtkZWxldGUgYy5maW5pc2h9KX19KSxtLmVhY2goWyJ0b2dnbGUiLCJzaG93
IiwiaGlkZSJdLGZ1bmN0aW9uKGEsYil7dmFyIGM9bS5mbltiXTttLmZuW2JdPWZ1bmN0aW9uKGEs
ZCxlKXtyZXR1cm4gbnVsbD09YXx8ImJvb2xlYW4iPT10eXBlb2YgYT9jLmFwcGx5KHRoaXMsYXJn
dW1lbnRzKTp0aGlzLmFuaW1hdGUoZ2MoYiwhMCksYSxkLGUpfX0pLG0uZWFjaCh7c2xpZGVEb3du
OmdjKCJzaG93Iiksc2xpZGVVcDpnYygiaGlkZSIpLHNsaWRlVG9nZ2xlOmdjKCJ0b2dnbGUiKSxm
YWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2ds
ZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7bS5mblthXT1mdW5jdGlvbihhLGMs
ZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxtLnRpbWVycz1bXSxtLmZ4LnRpY2s9
ZnVuY3Rpb24oKXt2YXIgYSxiPW0udGltZXJzLGM9MDtmb3IoJGI9bS5ub3coKTtjPGIubGVuZ3Ro
O2MrKylhPWJbY10sYSgpfHxiW2NdIT09YXx8Yi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxtLmZ4
LnN0b3AoKSwkYj12b2lkIDB9LG0uZngudGltZXI9ZnVuY3Rpb24oYSl7bS50aW1lcnMucHVzaChh
KSxhKCk/bS5meC5zdGFydCgpOm0udGltZXJzLnBvcCgpfSxtLmZ4LmludGVydmFsPTEzLG0uZngu
c3RhcnQ9ZnVuY3Rpb24oKXtfYnx8KF9iPXNldEludGVydmFsKG0uZngudGljayxtLmZ4LmludGVy
dmFsKSl9LG0uZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoX2IpLF9iPW51bGx9LG0u
Znguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LG0uZm4uZGVsYXk9ZnVu
Y3Rpb24oYSxiKXtyZXR1cm4gYT1tLmZ4P20uZnguc3BlZWRzW2FdfHxhOmEsYj1ifHwiZngiLHRo
aXMucXVldWUoYixmdW5jdGlvbihiLGMpe3ZhciBkPXNldFRpbWVvdXQoYixhKTtjLnN0b3A9ZnVu
Y3Rpb24oKXtjbGVhclRpbWVvdXQoZCl9fSl9LGZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZTtiPXku
Y3JlYXRlRWxlbWVudCgiZGl2IiksYi5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxiLmlu
bmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0
IHR5cGU9J2NoZWNrYm94Jy8+IixkPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxjPXku
Y3JlYXRlRWxlbWVudCgic2VsZWN0IiksZT1jLmFwcGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgi
b3B0aW9uIikpLGE9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxkLnN0eWxlLmNz
c1RleHQ9InRvcDoxcHgiLGsuZ2V0U2V0QXR0cmlidXRlPSJ0IiE9PWIuY2xhc3NOYW1lLGsuc3R5
bGU9L3RvcC8udGVzdChkLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksay5ocmVmTm9ybWFsaXplZD0i
L2EiPT09ZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSxrLmNoZWNrT249ISFhLnZhbHVlLGsub3B0U2Vs
ZWN0ZWQ9ZS5zZWxlY3RlZCxrLmVuY3R5cGU9ISF5LmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0
eXBlLGMuZGlzYWJsZWQ9ITAsay5vcHREaXNhYmxlZD0hZS5kaXNhYmxlZCxhPXkuY3JlYXRlRWxl
bWVudCgiaW5wdXQiKSxhLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSxrLmlucHV0PSIiPT09YS5n
ZXRBdHRyaWJ1dGUoInZhbHVlIiksYS52YWx1ZT0idCIsYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJy
YWRpbyIpLGsucmFkaW9WYWx1ZT0idCI9PT1hLnZhbHVlfSgpO3ZhciBsYz0vXHIvZzttLmZuLmV4
dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRoaXNbMF07e2lmKGFyZ3VtZW50cy5s
ZW5ndGgpcmV0dXJuIGQ9bS5pc0Z1bmN0aW9uKGEpLHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIg
ZTsxPT09dGhpcy5ub2RlVHlwZSYmKGU9ZD9hLmNhbGwodGhpcyxjLG0odGhpcykudmFsKCkpOmEs
bnVsbD09ZT9lPSIiOiJudW1iZXIiPT10eXBlb2YgZT9lKz0iIjptLmlzQXJyYXkoZSkmJihlPW0u
bWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxiPW0udmFsSG9va3Nb
dGhpcy50eXBlXXx8bS52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJz
ZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1lKSl9
KTtpZihlKXJldHVybiBiPW0udmFsSG9va3NbZS50eXBlXXx8bS52YWxIb29rc1tlLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwidmFsdWUi
KSk/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2UobGMsIiIpOm51bGw9
PWM/IiI6Yyl9fX0pLG0uZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7
dmFyIGI9bS5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOm0udHJpbShtLnRl
eHQoYSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZD1hLm9wdGlvbnMs
ZT1hLnNlbGVjdGVkSW5kZXgsZj0ic2VsZWN0LW9uZSI9PT1hLnR5cGV8fDA+ZSxnPWY/bnVsbDpb
XSxoPWY/ZSsxOmQubGVuZ3RoLGk9MD5lP2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sISghYy5z
ZWxlY3RlZCYmaSE9PWV8fChrLm9wdERpc2FibGVkP2MuZGlzYWJsZWQ6bnVsbCE9PWMuZ2V0QXR0
cmlidXRlKCJkaXNhYmxlZCIpKXx8Yy5wYXJlbnROb2RlLmRpc2FibGVkJiZtLm5vZGVOYW1lKGMu
cGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9bShjKS52YWwoKSxmKXJldHVybiBiO2cucHVz
aChiKX1yZXR1cm4gZ30sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0aW9ucyxmPW0u
bWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWlmKGQ9ZVtnXSxtLmluQXJyYXkobS52
YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPj0wKXRyeXtkLnNlbGVjdGVkPWM9ITB9Y2F0Y2goaCl7
ZC5zY3JvbGxIZWlnaHR9ZWxzZSBkLnNlbGVjdGVkPSExO3JldHVybiBjfHwoYS5zZWxlY3RlZElu
ZGV4PS0xKSxlfX19fSksbS5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7bS52
YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uaXNBcnJheShiKT9hLmNo
ZWNrZWQ9bS5pbkFycmF5KG0oYSkudmFsKCksYik+PTA6dm9pZCAwfX0say5jaGVja09ufHwobS52
YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0
ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBtYyxuYyxvYz1tLmV4cHIuYXR0ckhhbmRs
ZSxwYz0vXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pLHFjPWsuZ2V0U2V0QXR0cmlidXRlLHJjPWsu
aW5wdXQ7bS5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0uYXR0
cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4g
dGhpcy5lYWNoKGZ1bmN0aW9uKCl7bS5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxtLmV4dGVuZCh7
YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoYSYmMyE9PWYmJjgh
PT1mJiYyIT09ZilyZXR1cm4gdHlwZW9mIGEuZ2V0QXR0cmlidXRlPT09Sz9tLnByb3AoYSxiLGMp
OigxPT09ZiYmbS5pc1hNTERvYyhhKXx8KGI9Yi50b0xvd2VyQ2FzZSgpLGQ9bS5hdHRySG9va3Nb
Yl18fChtLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP25jOm1jKSksdm9pZCAwPT09Yz9kJiYiZ2V0
ImluIGQmJm51bGwhPT0oZT1kLmdldChhLGIpKT9lOihlPW0uZmluZC5hdHRyKGEsYiksbnVsbD09
ZT92b2lkIDA6ZSk6bnVsbCE9PWM/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0oZT1kLnNldChhLGMs
YikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6dm9pZCBtLnJlbW92ZUF0dHIoYSxiKSl9
LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9MCxmPWImJmIubWF0Y2goRSk7aWYo
ZiYmMT09PWEubm9kZVR5cGUpd2hpbGUoYz1mW2UrK10pZD1tLnByb3BGaXhbY118fGMsbS5leHBy
Lm1hdGNoLmJvb2wudGVzdChjKT9yYyYmcWN8fCFwYy50ZXN0KGMpP2FbZF09ITE6YVttLmNhbWVs
Q2FzZSgiZGVmYXVsdC0iK2MpXT1hW2RdPSExOm0uYXR0cihhLGMsIiIpLGEucmVtb3ZlQXR0cmli
dXRlKHFjP2M6ZCl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIWsucmFk
aW9WYWx1ZSYmInJhZGlvIj09PWImJm0ubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1
ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19fSks
bmM9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9tLnJlbW92ZUF0dHIoYSxjKTpy
YyYmcWN8fCFwYy50ZXN0KGMpP2Euc2V0QXR0cmlidXRlKCFxYyYmbS5wcm9wRml4W2NdfHxjLGMp
OmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitjKV09YVtjXT0hMCxjfX0sbS5lYWNoKG0uZXhwci5t
YXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9b2NbYl18
fG0uZmluZC5hdHRyO29jW2JdPXJjJiZxY3x8IXBjLnRlc3QoYik/ZnVuY3Rpb24oYSxiLGQpe3Zh
ciBlLGY7cmV0dXJuIGR8fChmPW9jW2JdLG9jW2JdPWUsZT1udWxsIT1jKGEsYixkKT9iLnRvTG93
ZXJDYXNlKCk6bnVsbCxvY1tiXT1mKSxlfTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAw
OmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitiKV0/Yi50b0xvd2VyQ2FzZSgpOm51bGx9fSkscmMm
JnFjfHwobS5hdHRySG9va3MudmFsdWU9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0ubm9k
ZU5hbWUoYSwiaW5wdXQiKT92b2lkKGEuZGVmYXVsdFZhbHVlPWIpOm1jJiZtYy5zZXQoYSxiLGMp
fX0pLHFjfHwobWM9e3NldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2Rl
KGMpO3JldHVybiBkfHxhLnNldEF0dHJpYnV0ZU5vZGUoZD1hLm93bmVyRG9jdW1lbnQuY3JlYXRl
QXR0cmlidXRlKGMpKSxkLnZhbHVlPWIrPSIiLCJ2YWx1ZSI9PT1jfHxiPT09YS5nZXRBdHRyaWJ1
dGUoYyk/Yjp2b2lkIDB9fSxvYy5pZD1vYy5uYW1lPW9jLmNvb3Jkcz1mdW5jdGlvbihhLGIsYyl7
dmFyIGQ7cmV0dXJuIGM/dm9pZCAwOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJiIiIT09ZC52
YWx1ZT9kLnZhbHVlOm51bGx9LG0udmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxiKXt2
YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoYik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP2MudmFsdWU6
dm9pZCAwfSxzZXQ6bWMuc2V0fSxtLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e3NldDpmdW5j
dGlvbihhLGIsYyl7bWMuc2V0KGEsIiI9PT1iPyExOmIsYyl9fSxtLmVhY2goWyJ3aWR0aCIsImhl
aWdodCJdLGZ1bmN0aW9uKGEsYil7bS5hdHRySG9va3NbYl09e3NldDpmdW5jdGlvbihhLGMpe3Jl
dHVybiIiPT09Yz8oYS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpLGMpOnZvaWQgMH19fSkpLGsuc3R5
bGV8fChtLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNz
c1RleHR8fHZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD1i
KyIifX0pO3ZhciBzYz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQv
aSx0Yz0vXig/OmF8YXJlYSkkL2k7bS5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1
cm4gVih0aGlzLG0ucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5j
dGlvbihhKXtyZXR1cm4gYT1tLnByb3BGaXhbYV18fGEsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5
e3RoaXNbYV09dm9pZCAwLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGIpe319KX19KSxtLmV4dGVuZCh7
cHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9LHByb3A6ZnVuY3Rp
b24oYSxiLGMpe3ZhciBkLGUsZixnPWEubm9kZVR5cGU7aWYoYSYmMyE9PWcmJjghPT1nJiYyIT09
ZylyZXR1cm4gZj0xIT09Z3x8IW0uaXNYTUxEb2MoYSksZiYmKGI9bS5wcm9wRml4W2JdfHxiLGU9
bS5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNl
dChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6
YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPW0uZmluZC5h
dHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI/cGFyc2VJbnQoYiwxMCk6c2MudGVzdChhLm5vZGVO
YW1lKXx8dGMudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX19KSxrLmhyZWZOb3JtYWxp
emVkfHxtLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3Rpb24oYSxiKXttLnByb3BIb29rc1tiXT17
Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZShiLDQpfX19KSxrLm9wdFNlbGVj
dGVkfHwobS5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVu
dE5vZGU7cmV0dXJuIGImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5v
ZGUuc2VsZWN0ZWRJbmRleCksbnVsbH19KSxtLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5Iiwi
bWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFu
IiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe20u
cHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxrLmVuY3R5cGV8fChtLnByb3BGaXgu
ZW5jdHlwZT0iZW5jb2RpbmciKTt2YXIgdWM9L1tcdFxyXG5cZl0vZzttLmZuLmV4dGVuZCh7YWRk
Q2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9InN0
cmluZyI9PXR5cGVvZiBhJiZhO2lmKG0uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1
bmN0aW9uKGIpe20odGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkp
fSk7aWYoailmb3IoYj0oYXx8IiIpLm1hdGNoKEUpfHxbXTtpPmg7aCsrKWlmKGM9dGhpc1toXSxk
PTE9PT1jLm5vZGVUeXBlJiYoYy5jbGFzc05hbWU/KCIgIitjLmNsYXNzTmFtZSsiICIpLnJlcGxh
Y2UodWMsIiAiKToiICIpKXtmPTA7d2hpbGUoZT1iW2YrK10pZC5pbmRleE9mKCIgIitlKyIgIik8
MCYmKGQrPWUrIiAiKTtnPW0udHJpbShkKSxjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1n
KX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9
MCxpPXRoaXMubGVuZ3RoLGo9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2Yg
YSYmYTtpZihtLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXttKHRo
aXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGopZm9y
KGI9KGF8fCIiKS5tYXRjaChFKXx8W107aT5oO2grKylpZihjPXRoaXNbaF0sZD0xPT09Yy5ub2Rl
VHlwZSYmKGMuY2xhc3NOYW1lPygiICIrYy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHVjLCIgIik6
IiIpKXtmPTA7d2hpbGUoZT1iW2YrK10pd2hpbGUoZC5pbmRleE9mKCIgIitlKyIgIik+PTApZD1k
LnJlcGxhY2UoIiAiK2UrIiAiLCIgIik7Zz1hP20udHJpbShkKToiIixjLmNsYXNzTmFtZSE9PWcm
JihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2
YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYic3RyaW5nIj09PWM/Yj90
aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6dGhpcy5lYWNoKG0uaXNGdW5jdGlv
bihhKT9mdW5jdGlvbihjKXttKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5j
bGFzc05hbWUsYiksYil9OmZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1jKXt2YXIgYixkPTAsZT1t
KHRoaXMpLGY9YS5tYXRjaChFKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJl
bW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZShjPT09S3x8ImJvb2xlYW4iPT09YykmJih0
aGlzLmNsYXNzTmFtZSYmbS5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFt
ZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjptLl9kYXRhKHRoaXMs
Il9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0i
ICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7ZD5jO2MrKylpZigxPT09dGhpc1tjXS5ub2RlVHlw
ZSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWMsIiAiKS5pbmRleE9mKGIp
Pj0wKXJldHVybiEwO3JldHVybiExfX0pLG0uZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vz
b3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1v
dXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUg
Y2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0
bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe20uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIp
fX0pLG0uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50
ZXIoYSkubW91c2VsZWF2ZShifHxhKX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMu
b24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51
bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQp
fSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/
dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9fSk7dmFyIHZjPW0ubm93KCks
d2M9L1w/Lyx4Yz0vKCwpfChcW3x7KXwofXxdKXwiKD86W14iXFxcclxuXXxcXFsiXFxcL2JmbnJ0
XXxcXHVbXGRhLWZBLUZdezR9KSoiXHMqOj98dHJ1ZXxmYWxzZXxudWxsfC0/KD8hMFxkKVxkKyg/
OlwuXGQrfCkoPzpbZUVdWystXT9cZCt8KS9nO20ucGFyc2VKU09OPWZ1bmN0aW9uKGIpe2lmKGEu
SlNPTiYmYS5KU09OLnBhcnNlKXJldHVybiBhLkpTT04ucGFyc2UoYisiIik7dmFyIGMsZD1udWxs
LGU9bS50cmltKGIrIiIpO3JldHVybiBlJiYhbS50cmltKGUucmVwbGFjZSh4YyxmdW5jdGlvbihh
LGIsZSxmKXtyZXR1cm4gYyYmYiYmKGQ9MCksMD09PWQ/YTooYz1lfHxiLGQrPSFmLSFlLCIiKX0p
KT9GdW5jdGlvbigicmV0dXJuICIrZSkoKTptLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LG0u
cGFyc2VYTUw9ZnVuY3Rpb24oYil7dmFyIGMsZDtpZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJl
dHVybiBudWxsO3RyeXthLkRPTVBhcnNlcj8oZD1uZXcgRE9NUGFyc2VyLGM9ZC5wYXJzZUZyb21T
dHJpbmcoYiwidGV4dC94bWwiKSk6KGM9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxE
T00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2FkWE1MKGIpKX1jYXRjaChlKXtjPXZvaWQgMH1yZXR1
cm4gYyYmYy5kb2N1bWVudEVsZW1lbnQmJiFjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJl
cnJvciIpLmxlbmd0aHx8bS5lcnJvcigiSW52YWxpZCBYTUw6ICIrYiksY307dmFyIHljLHpjLEFj
PS8jLiokLyxCYz0vKFs/Jl0pXz1bXiZdKi8sQ2M9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/
JC9nbSxEYz0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8
d2lkZ2V0KTokLyxFYz0vXig/OkdFVHxIRUFEKSQvLEZjPS9eXC9cLy8sR2M9L14oW1x3ListXSs6
KSg/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sSGM9e30sSWM9
e30sSmM9IiovIi5jb25jYXQoIioiKTt0cnl7emM9bG9jYXRpb24uaHJlZn1jYXRjaChLYyl7emM9
eS5jcmVhdGVFbGVtZW50KCJhIiksemMuaHJlZj0iIix6Yz16Yy5ocmVmfXljPUdjLmV4ZWMoemMu
dG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIExjKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJz
dHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgp
Lm1hdGNoKEUpfHxbXTtpZihtLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZC5j
aGFyQXQoMCk/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKToo
YVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gTWMoYSxiLGMsZCl7dmFyIGU9e30sZj1h
PT09SWM7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxtLmVhY2goYVtoXXx8W10s
ZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8
fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSks
aX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBOYyhh
LGIpe3ZhciBjLGQsZT1tLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGQgaW4gYil2
b2lkIDAhPT1iW2RdJiYoKGVbZF0/YTpjfHwoYz17fSkpW2RdPWJbZF0pO3JldHVybiBjJiZtLmV4
dGVuZCghMCxhLGMpLGF9ZnVuY3Rpb24gT2MoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50
cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWUmJihl
PWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihlKWZv
cihnIGluIGgpaWYoaFtnXSYmaFtnXS50ZXN0KGUpKXtpLnVuc2hpZnQoZyk7YnJlYWt9aWYoaVsw
XWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGcgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tnKyIg
IitpWzBdXSl7Zj1nO2JyZWFrfWR8fChkPWcpfWY9Znx8ZH1yZXR1cm4gZj8oZiE9PWlbMF0mJmku
dW5zaGlmdChmKSxjW2ZdKTp2b2lkIDB9ZnVuY3Rpb24gUGMoYSxiLGMsZCl7dmFyIGUsZixnLGgs
aSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVy
cylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYp
aWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQm
JmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hp
ZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIr
Zl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYo
Zz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYm
KGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3Mi
XSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJy
b3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntz
dGF0ZToic3VjY2VzcyIsZGF0YTpifX1tLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9
LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6emMsdHlwZToiR0VUIixpc0xvY2FsOkRjLnRlc3Qo
eWNbMV0pLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBw
bGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsi
KiI6SmMsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9u
L3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9
LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmll
bGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNl
SlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBq
c29uIjptLnBhcnNlSlNPTiwidGV4dCB4bWwiOm0ucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6
ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihhLGIpe3JldHVybiBiP05jKE5jKGEs
bS5hamF4U2V0dGluZ3MpLGIpOk5jKG0uYWpheFNldHRpbmdzLGEpfSxhamF4UHJlZmlsdGVyOkxj
KEhjKSxhamF4VHJhbnNwb3J0OkxjKEljKSxhamF4OmZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5
cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxiPWJ8fHt9O3ZhciBjLGQsZSxmLGcsaCxpLGosaz1tLmFq
YXhTZXR1cCh7fSxiKSxsPWsuY29udGV4dHx8ayxuPWsuY29udGV4dCYmKGwubm9kZVR5cGV8fGwu
anF1ZXJ5KT9tKGwpOm0uZXZlbnQsbz1tLkRlZmVycmVkKCkscD1tLkNhbGxiYWNrcygib25jZSBt
ZW1vcnkiKSxxPWsuc3RhdHVzQ29kZXx8e30scj17fSxzPXt9LHQ9MCx1PSJjYW5jZWxlZCIsdj17
cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKDI9PT10
KXtpZighail7aj17fTt3aGlsZShiPUNjLmV4ZWMoZikpaltiWzFdLnRvTG93ZXJDYXNlKCldPWJb
Ml19Yj1qW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWI/bnVsbDpifSxnZXRBbGxSZXNw
b25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXQ/ZjpudWxsfSxzZXRSZXF1ZXN0SGVh
ZGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO3JldHVybiB0fHwoYT1zW2Nd
PXNbY118fGEsclthXT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVy
biB0fHwoay5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lm
KGEpaWYoMj50KWZvcihiIGluIGEpcVtiXT1bcVtiXSxhW2JdXTtlbHNlIHYuYWx3YXlzKGFbdi5z
dGF0dXNdKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dTtyZXR1cm4g
aSYmaS5hYm9ydChiKSx4KDAsYiksdGhpc319O2lmKG8ucHJvbWlzZSh2KS5jb21wbGV0ZT1wLmFk
ZCx2LnN1Y2Nlc3M9di5kb25lLHYuZXJyb3I9di5mYWlsLGsudXJsPSgoYXx8ay51cmx8fHpjKSsi
IikucmVwbGFjZShBYywiIikucmVwbGFjZShGYyx5Y1sxXSsiLy8iKSxrLnR5cGU9Yi5tZXRob2R8
fGIudHlwZXx8ay5tZXRob2R8fGsudHlwZSxrLmRhdGFUeXBlcz1tLnRyaW0oay5kYXRhVHlwZXx8
IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbIiJdLG51bGw9PWsuY3Jvc3NEb21haW4mJihj
PUdjLmV4ZWMoay51cmwudG9Mb3dlckNhc2UoKSksay5jcm9zc0RvbWFpbj0hKCFjfHxjWzFdPT09
eWNbMV0mJmNbMl09PT15Y1syXSYmKGNbM118fCgiaHR0cDoiPT09Y1sxXT8iODAiOiI0NDMiKSk9
PT0oeWNbM118fCgiaHR0cDoiPT09eWNbMV0/IjgwIjoiNDQzIikpKSksay5kYXRhJiZrLnByb2Nl
c3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIGsuZGF0YSYmKGsuZGF0YT1tLnBhcmFtKGsuZGF0YSxr
LnRyYWRpdGlvbmFsKSksTWMoSGMsayxiLHYpLDI9PT10KXJldHVybiB2O2g9ay5nbG9iYWwsaCYm
MD09PW0uYWN0aXZlKysmJm0uZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksay50eXBlPWsudHlw
ZS50b1VwcGVyQ2FzZSgpLGsuaGFzQ29udGVudD0hRWMudGVzdChrLnR5cGUpLGU9ay51cmwsay5o
YXNDb250ZW50fHwoay5kYXRhJiYoZT1rLnVybCs9KHdjLnRlc3QoZSk/IiYiOiI/Iikray5kYXRh
LGRlbGV0ZSBrLmRhdGEpLGsuY2FjaGU9PT0hMSYmKGsudXJsPUJjLnRlc3QoZSk/ZS5yZXBsYWNl
KEJjLCIkMV89Iit2YysrKTplKyh3Yy50ZXN0KGUpPyImIjoiPyIpKyJfPSIrdmMrKykpLGsuaWZN
b2RpZmllZCYmKG0ubGFzdE1vZGlmaWVkW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlm
aWVkLVNpbmNlIixtLmxhc3RNb2RpZmllZFtlXSksbS5ldGFnW2VdJiZ2LnNldFJlcXVlc3RIZWFk
ZXIoIklmLU5vbmUtTWF0Y2giLG0uZXRhZ1tlXSkpLChrLmRhdGEmJmsuaGFzQ29udGVudCYmay5j
b250ZW50VHlwZSE9PSExfHxiLmNvbnRlbnRUeXBlKSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250
ZW50LVR5cGUiLGsuY29udGVudFR5cGUpLHYuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixrLmRh
dGFUeXBlc1swXSYmay5hY2NlcHRzW2suZGF0YVR5cGVzWzBdXT9rLmFjY2VwdHNbay5kYXRhVHlw
ZXNbMF1dKygiKiIhPT1rLmRhdGFUeXBlc1swXT8iLCAiK0pjKyI7IHE9MC4wMSI6IiIpOmsuYWNj
ZXB0c1siKiJdKTtmb3IoZCBpbiBrLmhlYWRlcnMpdi5zZXRSZXF1ZXN0SGVhZGVyKGQsay5oZWFk
ZXJzW2RdKTtpZihrLmJlZm9yZVNlbmQmJihrLmJlZm9yZVNlbmQuY2FsbChsLHYsayk9PT0hMXx8
Mj09PXQpKXJldHVybiB2LmFib3J0KCk7dT0iYWJvcnQiO2ZvcihkIGlue3N1Y2Nlc3M6MSxlcnJv
cjoxLGNvbXBsZXRlOjF9KXZbZF0oa1tkXSk7aWYoaT1NYyhJYyxrLGIsdikpe3YucmVhZHlTdGF0
ZT0xLGgmJm4udHJpZ2dlcigiYWpheFNlbmQiLFt2LGtdKSxrLmFzeW5jJiZrLnRpbWVvdXQ+MCYm
KGc9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJvcnQoInRpbWVvdXQiKX0say50aW1lb3V0KSk7
dHJ5e3Q9MSxpLnNlbmQocix4KX1jYXRjaCh3KXtpZighKDI+dCkpdGhyb3cgdzt4KC0xLHcpfX1l
bHNlIHgoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIHgoYSxiLGMsZCl7dmFyIGoscixzLHUs
dyx4PWI7MiE9PXQmJih0PTIsZyYmY2xlYXJUaW1lb3V0KGcpLGk9dm9pZCAwLGY9ZHx8IiIsdi5y
ZWFkeVN0YXRlPWE+MD80OjAsaj1hPj0yMDAmJjMwMD5hfHwzMDQ9PT1hLGMmJih1PU9jKGssdixj
KSksdT1QYyhrLHUsdixqKSxqPyhrLmlmTW9kaWZpZWQmJih3PXYuZ2V0UmVzcG9uc2VIZWFkZXIo
Ikxhc3QtTW9kaWZpZWQiKSx3JiYobS5sYXN0TW9kaWZpZWRbZV09dyksdz12LmdldFJlc3BvbnNl
SGVhZGVyKCJldGFnIiksdyYmKG0uZXRhZ1tlXT13KSksMjA0PT09YXx8IkhFQUQiPT09ay50eXBl
P3g9Im5vY29udGVudCI6MzA0PT09YT94PSJub3Rtb2RpZmllZCI6KHg9dS5zdGF0ZSxyPXUuZGF0
YSxzPXUuZXJyb3Isaj0hcykpOihzPXgsKGF8fCF4KSYmKHg9ImVycm9yIiwwPmEmJihhPTApKSks
di5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9KGJ8fHgpKyIiLGo/by5yZXNvbHZlV2l0aChsLFtyLHgs
dl0pOm8ucmVqZWN0V2l0aChsLFt2LHgsc10pLHYuc3RhdHVzQ29kZShxKSxxPXZvaWQgMCxoJiZu
LnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt2LGssaj9yOnNdKSxwLmZpcmVX
aXRoKGwsW3YseF0pLGgmJihuLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3Ysa10pLC0tbS5hY3Rp
dmV8fG0uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB2fSxnZXRKU09OOmZ1bmN0
aW9uKGEsYixjKXtyZXR1cm4gbS5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9u
KGEsYil7cmV0dXJuIG0uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLG0uZWFjaChbImdldCIs
InBvc3QiXSxmdW5jdGlvbihhLGIpe21bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIG0uaXNG
dW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLG0uYWpheCh7dXJsOmEsdHlwZTpiLGRh
dGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0pfX0pLG0uZWFjaChbImFqYXhTdGFydCIsImFqYXhT
dG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJd
LGZ1bmN0aW9uKGEsYil7bS5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vbihiLGEpfX0p
LG0uX2V2YWxVcmw9ZnVuY3Rpb24oYSl7cmV0dXJuIG0uYWpheCh7dXJsOmEsdHlwZToiR0VUIixk
YXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sbS5mbi5l
eHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7aWYobS5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlz
LmVhY2goZnVuY3Rpb24oYil7bSh0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pO2lmKHRo
aXNbMF0pe3ZhciBiPW0oYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0
aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9u
KCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0Q2hpbGQmJjE9PT1hLmZpcnN0Q2hpbGQubm9kZVR5
cGUpYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdy
YXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5j
dGlvbihiKXttKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFy
IGI9bSh0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQo
YSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1tLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMu
ZWFjaChmdW5jdGlvbihjKXttKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1
bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7bS5u
b2RlTmFtZSh0aGlzLCJib2R5Iil8fG0odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVz
KX0pLmVuZCgpfX0pLG0uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5v
ZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB8fCFrLnJlbGlhYmxlSGlkZGVuT2Zmc2V0
cygpJiYibm9uZSI9PT0oYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxtLmNzcyhhLCJkaXNwbGF5
IikpfSxtLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFtLmV4cHIuZmls
dGVycy5oaWRkZW4oYSl9O3ZhciBRYz0vJTIwL2csUmM9L1xbXF0kLyxTYz0vXHI/XG4vZyxUYz0v
Xig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksVWM9L14oPzppbnB1dHxzZWxl
Y3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIFZjKGEsYixjLGQpe3ZhciBlO2lmKG0uaXNB
cnJheShiKSltLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fFJjLnRlc3QoYSk/ZChhLGUpOlZjKGEr
IlsiKygib2JqZWN0Ij09dHlwZW9mIGU/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoY3x8Im9i
amVjdCIhPT1tLnR5cGUoYikpZChhLGIpO2Vsc2UgZm9yKGUgaW4gYilWYyhhKyJbIitlKyJdIixi
W2VdLGMsZCl9bS5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihhLGIp
e2I9bS5pc0Z1bmN0aW9uKGIpP2IoKTpudWxsPT1iPyIiOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJ
Q29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2lmKHZvaWQgMD09PWImJihi
PW0uYWpheFNldHRpbmdzJiZtLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksbS5pc0FycmF5KGEp
fHxhLmpxdWVyeSYmIW0uaXNQbGFpbk9iamVjdChhKSltLmVhY2goYSxmdW5jdGlvbigpe2UodGhp
cy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKVZjKGMsYVtjXSxiLGUpO3JldHVy
biBkLmpvaW4oIiYiKS5yZXBsYWNlKFFjLCIrIil9LG0uZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVu
Y3Rpb24oKXtyZXR1cm4gbS5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVB
cnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPW0ucHJvcCh0
aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP20ubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVu
Y3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIW0odGhpcykuaXMoIjpk
aXNhYmxlZCIpJiZVYy50ZXN0KHRoaXMubm9kZU5hbWUpJiYhVGMudGVzdChhKSYmKHRoaXMuY2hl
Y2tlZHx8IVcudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1tKHRoaXMpLnZhbCgp
O3JldHVybiBudWxsPT1jP251bGw6bS5pc0FycmF5KGMpP20ubWFwKGMsZnVuY3Rpb24oYSl7cmV0
dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShTYywiXHJcbiIpfX0pOntuYW1lOmIubmFt
ZSx2YWx1ZTpjLnJlcGxhY2UoU2MsIlxyXG4iKX19KS5nZXQoKX19KSxtLmFqYXhTZXR0aW5ncy54
aHI9dm9pZCAwIT09YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2Nh
bCYmL14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50eXBl
KSYmWmMoKXx8JGMoKX06WmM7dmFyIFdjPTAsWGM9e30sWWM9bS5hamF4U2V0dGluZ3MueGhyKCk7
YS5BY3RpdmVYT2JqZWN0JiZtKGEpLm9uKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGlu
IFhjKVhjW2FdKHZvaWQgMCwhMCl9KSxrLmNvcnM9ISFZYyYmIndpdGhDcmVkZW50aWFscyJpbiBZ
YyxZYz1rLmFqYXg9ISFZYyxZYyYmbS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe2lmKCFhLmNy
b3NzRG9tYWlufHxrLmNvcnMpe3ZhciBiO3JldHVybntzZW5kOmZ1bmN0aW9uKGMsZCl7dmFyIGUs
Zj1hLnhocigpLGc9KytXYztpZihmLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFt
ZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZSBpbiBhLnhockZpZWxkcylmW2VdPWEueGhy
RmllbGRzW2VdO2EubWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSYmZi5vdmVycmlkZU1pbWVU
eXBlKGEubWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGNbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGNb
IlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZSBpbiBjKXZvaWQgMCE9
PWNbZV0mJmYuc2V0UmVxdWVzdEhlYWRlcihlLGNbZV0rIiIpO2Yuc2VuZChhLmhhc0NvbnRlbnQm
JmEuZGF0YXx8bnVsbCksYj1mdW5jdGlvbihjLGUpe3ZhciBoLGksajtpZihiJiYoZXx8ND09PWYu
cmVhZHlTdGF0ZSkpaWYoZGVsZXRlIFhjW2ddLGI9dm9pZCAwLGYub25yZWFkeXN0YXRlY2hhbmdl
PW0ubm9vcCxlKTQhPT1mLnJlYWR5U3RhdGUmJmYuYWJvcnQoKTtlbHNle2o9e30saD1mLnN0YXR1
cywic3RyaW5nIj09dHlwZW9mIGYucmVzcG9uc2VUZXh0JiYoai50ZXh0PWYucmVzcG9uc2VUZXh0
KTt0cnl7aT1mLnN0YXR1c1RleHR9Y2F0Y2goayl7aT0iIn1ofHwhYS5pc0xvY2FsfHxhLmNyb3Nz
RG9tYWluPzEyMjM9PT1oJiYoaD0yMDQpOmg9ai50ZXh0PzIwMDo0MDR9aiYmZChoLGksaixmLmdl
dEFsbFJlc3BvbnNlSGVhZGVycygpKX0sYS5hc3luYz80PT09Zi5yZWFkeVN0YXRlP3NldFRpbWVv
dXQoYik6Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9WGNbZ109YjpiKCl9LGFib3J0OmZ1bmN0aW9uKCl7
YiYmYih2b2lkIDAsITApfX19fSk7ZnVuY3Rpb24gWmMoKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0
dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gJGMoKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2
ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1tLmFqYXhTZXR1cCh7YWNj
ZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFw
cGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRz
OntzY3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQi
OmZ1bmN0aW9uKGEpe3JldHVybiBtLmdsb2JhbEV2YWwoYSksYX19fSksbS5hamF4UHJlZmlsdGVy
KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKSxhLmNy
b3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLG0uYWpheFRyYW5zcG9ydCgi
c2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjPXkuaGVhZHx8bSgi
aGVhZCIpWzBdfHx5LmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihkLGUpe2I9
eS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxiLmFzeW5jPSEwLGEuc2NyaXB0Q2hhcnNldCYmKGIu
Y2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGIuc3JjPWEudXJsLGIub25sb2FkPWIub25yZWFkeXN0
YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7KGN8fCFiLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxl
dGUvLnRlc3QoYi5yZWFkeVN0YXRlKSkmJihiLm9ubG9hZD1iLm9ucmVhZHlzdGF0ZWNoYW5nZT1u
dWxsLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbCxjfHxl
KDIwMCwic3VjY2VzcyIpKX0sYy5pbnNlcnRCZWZvcmUoYixjLmZpcnN0Q2hpbGQpfSxhYm9ydDpm
dW5jdGlvbigpe2ImJmIub25sb2FkKHZvaWQgMCwhMCl9fX19KTt2YXIgX2M9W10sYWQ9Lyg9KVw/
KD89JnwkKXxcP1w/LzttLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNr
OmZ1bmN0aW9uKCl7dmFyIGE9X2MucG9wKCl8fG0uZXhwYW5kbysiXyIrdmMrKztyZXR1cm4gdGhp
c1thXT0hMCxhfX0pLG0uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQp
e3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKGFkLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmci
PT10eXBlb2YgYi5kYXRhJiYhKGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlv
bi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmYWQudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVy
biBofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW0uaXNGdW5j
dGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxo
P2JbaF09YltoXS5yZXBsYWNlKGFkLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPSh3Yy50
ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBq
c29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8bS5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxn
WzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3Vt
ZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXthW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1j
Lmpzb25wQ2FsbGJhY2ssX2MucHVzaChlKSksZyYmbS5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9
Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbS5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMp
e2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT10eXBlb2Yg
YiYmKGM9YixiPSExKSxiPWJ8fHk7dmFyIGQ9dS5leGVjKGEpLGU9IWMmJltdO3JldHVybiBkP1ti
LmNyZWF0ZUVsZW1lbnQoZFsxXSldOihkPW0uYnVpbGRGcmFnbWVudChbYV0sYixlKSxlJiZlLmxl
bmd0aCYmbShlKS5yZW1vdmUoKSxtLm1lcmdlKFtdLGQuY2hpbGROb2RlcykpfTt2YXIgYmQ9bS5m
bi5sb2FkO20uZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhJiZi
ZClyZXR1cm4gYmQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBkLGUsZixnPXRoaXMsaD1hLmlu
ZGV4T2YoIiAiKTtyZXR1cm4gaD49MCYmKGQ9bS50cmltKGEuc2xpY2UoaCxhLmxlbmd0aCkpLGE9
YS5zbGljZSgwLGgpKSxtLmlzRnVuY3Rpb24oYik/KGM9YixiPXZvaWQgMCk6YiYmIm9iamVjdCI9
PXR5cGVvZiBiJiYoZj0iUE9TVCIpLGcubGVuZ3RoPjAmJm0uYWpheCh7dXJsOmEsdHlwZTpmLGRh
dGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2U9YXJndW1lbnRzLGcuaHRt
bChkP20oIjxkaXY+IikuYXBwZW5kKG0ucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuY29tcGxl
dGUoYyYmZnVuY3Rpb24oYSxiKXtnLmVhY2goYyxlfHxbYS5yZXNwb25zZVRleHQsYixhXSl9KSx0
aGlzfSxtLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gbS5ncmVwKG0u
dGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofTt2YXIgY2Q9YS5k
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7ZnVuY3Rpb24gZGQoYSl7cmV0dXJuIG0uaXNXaW5kb3co
YSk/YTo5PT09YS5ub2RlVHlwZT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1tLm9m
ZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPW0uY3Nz
KGEsInBvc2l0aW9uIiksbD1tKGEpLG49e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlv
bj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1tLmNzcyhhLCJ0b3AiKSxpPW0uY3NzKGEsImxl
ZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiZtLmluQXJyYXkoImF1dG8iLFtm
LGldKT4tMSxqPyhkPWwucG9zaXRpb24oKSxnPWQudG9wLGU9ZC5sZWZ0KTooZz1wYXJzZUZsb2F0
KGYpfHwwLGU9cGFyc2VGbG9hdChpKXx8MCksbS5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxj
LGgpKSxudWxsIT1iLnRvcCYmKG4udG9wPWIudG9wLWgudG9wK2cpLG51bGwhPWIubGVmdCYmKG4u
bGVmdD1iLmxlZnQtaC5sZWZ0K2UpLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLG4pOmwuY3Nz
KG4pfX0sbS5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3Ro
KXJldHVybiB2b2lkIDA9PT1hP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20ub2Zmc2V0LnNl
dE9mZnNldCh0aGlzLGEsYil9KTt2YXIgYixjLGQ9e3RvcDowLGxlZnQ6MH0sZT10aGlzWzBdLGY9
ZSYmZS5vd25lckRvY3VtZW50O2lmKGYpcmV0dXJuIGI9Zi5kb2N1bWVudEVsZW1lbnQsbS5jb250
YWlucyhiLGUpPyh0eXBlb2YgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QhPT1LJiYoZD1lLmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpKSxjPWRkKGYpLHt0b3A6ZC50b3ArKGMucGFnZVlPZmZzZXR8fGIu
c2Nyb2xsVG9wKS0oYi5jbGllbnRUb3B8fDApLGxlZnQ6ZC5sZWZ0KyhjLnBhZ2VYT2Zmc2V0fHxi
LnNjcm9sbExlZnQpLShiLmNsaWVudExlZnR8fDApfSk6ZH0scG9zaXRpb246ZnVuY3Rpb24oKXtp
Zih0aGlzWzBdKXt2YXIgYSxiLGM9e3RvcDowLGxlZnQ6MH0sZD10aGlzWzBdO3JldHVybiJmaXhl
ZCI9PT1tLmNzcyhkLCJwb3NpdGlvbiIpP2I9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTooYT10
aGlzLm9mZnNldFBhcmVudCgpLGI9dGhpcy5vZmZzZXQoKSxtLm5vZGVOYW1lKGFbMF0sImh0bWwi
KXx8KGM9YS5vZmZzZXQoKSksYy50b3ArPW0uY3NzKGFbMF0sImJvcmRlclRvcFdpZHRoIiwhMCks
Yy5sZWZ0Kz1tLmNzcyhhWzBdLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSkse3RvcDpiLnRvcC1jLnRv
cC1tLmNzcyhkLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OmIubGVmdC1jLmxlZnQtbS5jc3MoZCwibWFy
Z2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChm
dW5jdGlvbigpe3ZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxjZDt3aGlsZShhJiYhbS5ub2RlTmFt
ZShhLCJodG1sIikmJiJzdGF0aWMiPT09bS5jc3MoYSwicG9zaXRpb24iKSlhPWEub2Zmc2V0UGFy
ZW50O3JldHVybiBhfHxjZH0pfX0pLG0uZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNj
cm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPS9ZLy50ZXN0KGIpO20u
Zm5bYV09ZnVuY3Rpb24oZCl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhLGQsZSl7dmFyIGY9ZGQo
YSk7cmV0dXJuIHZvaWQgMD09PWU/Zj9iIGluIGY/ZltiXTpmLmRvY3VtZW50LmRvY3VtZW50RWxl
bWVudFtkXTphW2RdOnZvaWQoZj9mLnNjcm9sbFRvKGM/bShmKS5zY3JvbGxMZWZ0KCk6ZSxjP2U6
bShmKS5zY3JvbGxUb3AoKSk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSks
bS5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1tiXT1MYihrLnBp
eGVsUG9zaXRpb24sZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz8oYz1KYihhLGIpLEhiLnRlc3QoYyk/
bShhKS5wb3NpdGlvbigpW2JdKyJweCI6Yyk6dm9pZCAwfSl9KSxtLmVhY2goe0hlaWdodDoiaGVp
Z2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe20uZWFjaCh7cGFkZGluZzoiaW5uZXIi
K2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXttLmZuW2RdPWZ1bmN0aW9u
KGQsZSl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGQpLGc9
Y3x8KGQ9PT0hMHx8ZT09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gVih0aGlzLGZ1bmN0
aW9uKGIsYyxkKXt2YXIgZTtyZXR1cm4gbS5pc1dpbmRvdyhiKT9iLmRvY3VtZW50LmRvY3VtZW50
RWxlbWVudFsiY2xpZW50IithXTo5PT09Yi5ub2RlVHlwZT8oZT1iLmRvY3VtZW50RWxlbWVudCxN
YXRoLm1heChiLmJvZHlbInNjcm9sbCIrYV0sZVsic2Nyb2xsIithXSxiLmJvZHlbIm9mZnNldCIr
YV0sZVsib2Zmc2V0IithXSxlWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09ZD9tLmNzcyhiLGMsZyk6
bS5zdHlsZShiLGMsZCxnKX0sYixmP2Q6dm9pZCAwLGYsbnVsbCl9fSl9KSxtLmZuLnNpemU9ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LG0uZm4uYW5kU2VsZj1tLmZuLmFkZEJhY2ssImZ1
bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1
bmN0aW9uKCl7cmV0dXJuIG19KTt2YXIgZWQ9YS5qUXVlcnksZmQ9YS4kO3JldHVybiBtLm5vQ29u
ZmxpY3Q9ZnVuY3Rpb24oYil7cmV0dXJuIGEuJD09PW0mJihhLiQ9ZmQpLGImJmEualF1ZXJ5PT09
bSYmKGEualF1ZXJ5PWVkKSxtfSx0eXBlb2YgYj09PUsmJihhLmpRdWVyeT1hLiQ9bSksbX0pOwoK
UHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9FeHRlcm5hbC9qcXVlcnktMS4xMS4xLm1pbi5qcwpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAt
MSArMCwwICMjCi10ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5k
ZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvRXh0ZXJuYWwvanF1ZXJ5LmRhdGVyYW5nZXBpY2tlci5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL0V4dGVybmFsL2pxdWVyeS5kYXRlcmFuZ2VwaWNrZXIuanMJKHJldmlzaW9uIDI2OTEx
MSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvRXh0ZXJuYWwvanF1ZXJ5LmRhdGVyYW5nZXBpY2tlci5qcwkobm9uZXhpc3Rl
bnQpCkBAIC0xLDEyNjYgKzAsMCBAQAotLy8gZGF0ZXJhbmdlcGlja2VyLmpzCi0vLyB2ZXJzaW9u
IDogMC4wLjUKLS8vIGF1dGhvciA6IENodW5sb25nIExpdQotLy8gbGFzdCB1cGRhdGVkIGF0OiAy
MDE0LTA1LTI3Ci0vLyBsaWNlbnNlIDogTUlUCi0vLyB3d3cuanN6ZW4uY29tCi0KLShmdW5jdGlv
bigkKQotewotCi0gICAgJC5kYXRlUmFuZ2VQaWNrZXJMYW5ndWFnZXMgPQotICAgIHsKLSAgICAg
ICAgJ2NuJzoKLSAgICAgICAgewotICAgICAgICAgICAgJ3NlbGVjdGVkJzogJ+W3sumAieaLqTon
LAotICAgICAgICAgICAgJ2RheSc6J+WkqScsCi0gICAgICAgICAgICAnZGF5cyc6ICflpKknLAot
ICAgICAgICAgICAgJ2FwcGx5JzogJ+ehruWumicsCi0gICAgICAgICAgICAnd2Vlay0xJyA6ICfk
uIAnLAotICAgICAgICAgICAgJ3dlZWstMicgOiAn5LqMJywKLSAgICAgICAgICAgICd3ZWVrLTMn
IDogJ+S4iScsCi0gICAgICAgICAgICAnd2Vlay00JyA6ICflm5snLAotICAgICAgICAgICAgJ3dl
ZWstNScgOiAn5LqUJywKLSAgICAgICAgICAgICd3ZWVrLTYnIDogJ+WFrScsCi0gICAgICAgICAg
ICAnd2Vlay03JyA6ICfml6UnLAotICAgICAgICAgICAgJ21vbnRoLW5hbWUnOiBbJ+S4gOaciCcs
J+S6jOaciCcsJ+S4ieaciCcsJ+Wbm+aciCcsJ+S6lOaciCcsJ+WFreaciCcsJ+S4g+aciCcsJ+WF
q+aciCcsJ+S5neaciCcsJ+WNgeaciCcsJ+WNgeS4gOaciCcsJ+WNgeS6jOaciCddLAotICAgICAg
ICAgICAgJ3Nob3J0Y3V0cycgOiAn5b+r5o236YCJ5oupJywKLSAgICAgICAgICAgICdwYXN0Jzog
J+i/h+WOuycsCi0gICAgICAgICAgICAnZm9sbG93aW5nJzon5bCG5p2lJywKLSAgICAgICAgICAg
ICdwcmV2aW91cycgOiAnJm5ic3A7Jm5ic3A7Jm5ic3A7JywKLSAgICAgICAgICAgICdwcmV2LXdl
ZWsnIDogJ+S4iuWRqCcsCi0gICAgICAgICAgICAncHJldi1tb250aCcgOiAn5LiK5Liq5pyIJywK
LSAgICAgICAgICAgICdwcmV2LXllYXInIDogJ+WOu+W5tCcsCi0gICAgICAgICAgICAnbmV4dCc6
ICcmbmJzcDsmbmJzcDsmbmJzcDsnLAotICAgICAgICAgICAgJ25leHQtd2Vlayc6J+S4i+WRqCcs
Ci0gICAgICAgICAgICAnbmV4dC1tb250aCc6J+S4i+S4quaciCcsCi0gICAgICAgICAgICAnbmV4
dC15ZWFyJzon5piO5bm0JywKLSAgICAgICAgICAgICdsZXNzLXRoYW4nIDogJ+aJgOmAieaXpeac
n+iMg+WbtOS4jeiDveWkp+S6jiVk5aSpJywKLSAgICAgICAgICAgICdtb3JlLXRoYW4nIDogJ+aJ
gOmAieaXpeacn+iMg+WbtOS4jeiDveWwj+S6jiVk5aSpJywKLSAgICAgICAgICAgICdkZWZhdWx0
LW1vcmUnIDogJ+ivt+mAieaLqeWkp+S6jiVk5aSp55qE5pel5pyf6IyD5Zu0JywKLSAgICAgICAg
ICAgICdkZWZhdWx0LWxlc3MnIDogJ+ivt+mAieaLqeWwj+S6jiVk5aSp55qE5pel5pyf6IyD5Zu0
JywKLSAgICAgICAgICAgICdkZWZhdWx0LXJhbmdlJyA6ICfor7fpgInmi6klZOWkqeWIsCVk5aSp
55qE5pel5pyf6IyD5Zu0JywKLSAgICAgICAgICAgICdkZWZhdWx0LXNpbmdsZSc6J+ivt+mAieaL
qeS4gOS4quaXpeacnycsCi0gICAgICAgICAgICAnZGVmYXVsdC1kZWZhdWx0JzogJ+ivt+mAieaL
qeS4gOS4quaXpeacn+iMg+WbtCcKLSAgICAgICAgfSwKLSAgICAgICAgJ2VuJzoKLSAgICAgICAg
ewotICAgICAgICAgICAgJ3NlbGVjdGVkJzogJ1NlbGVjdGVkOicsCi0gICAgICAgICAgICAnZGF5
JzonRGF5JywKLSAgICAgICAgICAgICdkYXlzJzogJ0RheXMnLAotICAgICAgICAgICAgJ2FwcGx5
JzogJ1N0YXJ0JywKLSAgICAgICAgICAgICd3ZWVrLTEnIDogJ01PJywKLSAgICAgICAgICAgICd3
ZWVrLTInIDogJ1RVJywKLSAgICAgICAgICAgICd3ZWVrLTMnIDogJ1dFJywKLSAgICAgICAgICAg
ICd3ZWVrLTQnIDogJ1RIJywKLSAgICAgICAgICAgICd3ZWVrLTUnIDogJ0ZSJywKLSAgICAgICAg
ICAgICd3ZWVrLTYnIDogJ1NBJywKLSAgICAgICAgICAgICd3ZWVrLTcnIDogJ1NVJywKLSAgICAg
ICAgICAgICdtb250aC1uYW1lJzogWydKQU5VQVJZJywnRkVCUlVBUlknLCdNQVJDSCcsJ0FQUklM
JywnTUFZJywnSlVORScsJ0pVTFknLCdBVUdVU1QnLCdTRVBURU1CRVInLCdPQ1RPQkVSJywnTk9W
RU1CRVInLCdERUNFTUJFUiddLAotICAgICAgICAgICAgJ3Nob3J0Y3V0cycgOiAnU2hvcnRjdXRz
JywKLSAgICAgICAgICAgICdwYXN0JzogJ1Bhc3QnLAotICAgICAgICAgICAgJ2ZvbGxvd2luZyc6
J0ZvbGxvd2luZycsCi0gICAgICAgICAgICAncHJldmlvdXMnIDogJ1ByZXZpb3VzJywKLSAgICAg
ICAgICAgICdwcmV2LXdlZWsnIDogJ1dlZWsnLAotICAgICAgICAgICAgJ3ByZXYtbW9udGgnIDog
J01vbnRoJywKLSAgICAgICAgICAgICdwcmV2LXllYXInIDogJ1llYXInLAotICAgICAgICAgICAg
J25leHQnOidOZXh0JywKLSAgICAgICAgICAgICduZXh0LXdlZWsnOidXZWVrJywKLSAgICAgICAg
ICAgICduZXh0LW1vbnRoJzonTW9udGgnLAotICAgICAgICAgICAgJ25leHQteWVhcic6J1llYXIn
LAotICAgICAgICAgICAgJ2xlc3MtdGhhbicgOiAnRGF0ZSByYW5nZSBzaG91bGQgbm90IGJlIG1v
cmUgdGhhbiAlZCBkYXlzJywKLSAgICAgICAgICAgICdtb3JlLXRoYW4nIDogJ0RhdGUgcmFuZ2Ug
c2hvdWxkIG5vdCBiZSBsZXNzIHRoYW4gJWQgZGF5cycsCi0gICAgICAgICAgICAnZGVmYXVsdC1t
b3JlJyA6ICdQbGVhc2Ugc2VsZWN0IGEgZGF0ZSByYW5nZSBsb25nZXIgdGhhbiAlZCBkYXlzJywK
LSAgICAgICAgICAgICdkZWZhdWx0LXNpbmdsZScgOiAnUGxlYXNlIHNlbGVjdCBhIGRhdGUnLAot
ICAgICAgICAgICAgJ2RlZmF1bHQtbGVzcycgOiAnUGxlYXNlIHNlbGVjdCBhIGRhdGUgcmFuZ2Ug
bGVzcyB0aGFuICVkIGRheXMnLAotICAgICAgICAgICAgJ2RlZmF1bHQtcmFuZ2UnIDogJ1BsZWFz
ZSBzZWxlY3QgYSBkYXRlIHJhbmdlIGJldHdlZW4gJWQgYW5kICVkIGRheXMnLAotICAgICAgICAg
ICAgJ2RlZmF1bHQtZGVmYXVsdCc6ICdQbGVhc2Ugc2VsZWN0IGEgZGF0ZSByYW5nZScKLSAgICAg
ICAgfSwKLSAgICAgICAgJ2l0JzoKLSAgICAgICAgewotICAgICAgICAgICAgJ3NlbGVjdGVkJzog
J1NlbGV6aW9uYXRpOicsCi0gICAgICAgICAgICAnZGF5JzonR2lvcm5vJywKLSAgICAgICAgICAg
ICdkYXlzJzogJ0dpb3JuaScsCi0gICAgICAgICAgICAnYXBwbHknOiAnQ2hpdWRpJywKLSAgICAg
ICAgICAgICd3ZWVrLTEnIDogJ0xVJywKLSAgICAgICAgICAgICd3ZWVrLTInIDogJ01BJywKLSAg
ICAgICAgICAgICd3ZWVrLTMnIDogJ01FJywKLSAgICAgICAgICAgICd3ZWVrLTQnIDogJ0dJJywK
LSAgICAgICAgICAgICd3ZWVrLTUnIDogJ1ZFJywKLSAgICAgICAgICAgICd3ZWVrLTYnIDogJ1NB
JywKLSAgICAgICAgICAgICd3ZWVrLTcnIDogJ0RPJywKLSAgICAgICAgICAgICdtb250aC1uYW1l
JzogWydHRU5OQUlPJywnRkVCQlJBSU8nLCdNQVJaTycsJ0FQUklMRScsJ01BR0dJTycsJ0dJVUdO
TycsJ0xVR0xJTycsJ0FHT1NUTycsJ1NFVFRFTUJSRScsJ09UVE9CUkUnLCdOT1ZFTUJSRScsJ0RJ
Q0VNQlJFJ10sCi0gICAgICAgICAgICAnc2hvcnRjdXRzJyA6ICdTY29yY2lhdG9pZScsCi0gICAg
ICAgICAgICAncGFzdCc6ICdTY29yc28nLAotICAgICAgICAgICAgJ2ZvbGxvd2luZyc6J1N1Y2Nl
c3Npdm8nLAotICAgICAgICAgICAgJ3ByZXZpb3VzJyA6ICdQcmVjZWRlbnRlJywKLSAgICAgICAg
ICAgICdwcmV2LXdlZWsnIDogJ1NldHRpbWFuYScsCi0gICAgICAgICAgICAncHJldi1tb250aCcg
OiAnTWVzZScsCi0gICAgICAgICAgICAncHJldi15ZWFyJyA6ICdBbm5vJywKLSAgICAgICAgICAg
ICduZXh0JzonUHJvc3NpbW8nLAotICAgICAgICAgICAgJ25leHQtd2Vlayc6J1NldHRpbWFuYScs
Ci0gICAgICAgICAgICAnbmV4dC1tb250aCc6J01lc2UnLAotICAgICAgICAgICAgJ25leHQteWVh
cic6J0Fubm8nLAotICAgICAgICAgICAgJ2xlc3MtdGhhbicgOiAnTFwnaW50ZXJ2YWxsbyBub24g
ZGV2XCdlc3NlcmUgbWFnZ2lvcmUgZGkgJWQgZ2lvcm5pJywKLSAgICAgICAgICAgICdtb3JlLXRo
YW4nIDogJ0xcJ2ludGVydmFsbG8gbm9uIGRldlwnZXNzZXJlIG1pbm9yZSBkaSAlZCBnaW9ybmkn
LAotICAgICAgICAgICAgJ2RlZmF1bHQtbW9yZScgOiAnU2VsZXppb25hIHVuIGludGVydmFsbG8g
bWFnZ2lvcmUgZGkgJWQgZ2lvcm5pJywKLSAgICAgICAgICAgICdkZWZhdWx0LXNpbmdsZScgOiAn
U2VsZXppb25hIHVuYSBkYXRhJywKLSAgICAgICAgICAgICdkZWZhdWx0LWxlc3MnIDogJ1NlbGV6
aW9uYSB1biBpbnRlcnZhbGxvIG1pbm9yZSBkaSAlZCBnaW9ybmknLAotICAgICAgICAgICAgJ2Rl
ZmF1bHQtcmFuZ2UnIDogJ1NlbGV6aW9uYSB1biBpbnRlcnZhbGxvIGNvbXByZXNvIHRyYSBpICVk
IGUgaSAlZCBnaW9ybmknLAotICAgICAgICAgICAgJ2RlZmF1bHQtZGVmYXVsdCc6ICdTZWxlemlv
bmEgdW4gaW50ZXJ2YWxsbyBkaSBkYXRlJwotICAgICAgICB9LAotICAgICAgICAnZXMnOgotICAg
ICAgICB7Ci0gICAgICAgICAgICAnc2VsZWN0ZWQnOiAnU2VsZWNjaW9uYWRvOicsCi0gICAgICAg
ICAgICAnZGF5JzonRGlhJywKLSAgICAgICAgICAgICdkYXlzJzogJ0RpYXMnLAotICAgICAgICAg
ICAgJ2FwcGx5JzogJ0NlcnJhcicsCi0gICAgICAgICAgICAnd2Vlay0xJyA6ICdMVScsCi0gICAg
ICAgICAgICAnd2Vlay0yJyA6ICdNQScsCi0gICAgICAgICAgICAnd2Vlay0zJyA6ICdNSScsCi0g
ICAgICAgICAgICAnd2Vlay00JyA6ICdKVScsCi0gICAgICAgICAgICAnd2Vlay01JyA6ICdWSScs
Ci0gICAgICAgICAgICAnd2Vlay02JyA6ICdTQScsCi0gICAgICAgICAgICAnd2Vlay03JyA6ICdE
TycsCi0gICAgICAgICAgICAnbW9udGgtbmFtZSc6IFsnRU5FUk8nLCdGRUJSRVJPJywnTUFSWk8n
LCdBQlJJTCcsJ01BWU8nLCdKVU5JTycsJ0pVTElPJywnQUdPU1RPJywnU0VQVElFTUJSRScsJ09D
VFVCUkUnLCdOT1ZJRU1CUkUnLCdESUNJRU1CUkUnXSwKLSAgICAgICAgICAgICdzaG9ydGN1dHMn
IDogJ0FjY2Vzb3MgZGlyZWN0b3MnLAotICAgICAgICAgICAgJ3Bhc3QnOiAnUGFzYWRvJywKLSAg
ICAgICAgICAgICdmb2xsb3dpbmcnOidTaWd1aWVudGUnLAotICAgICAgICAgICAgJ3ByZXZpb3Vz
JyA6ICdBbnRlcmlvcicsCi0gICAgICAgICAgICAncHJldi13ZWVrJyA6ICdTZW1hbmEnLAotICAg
ICAgICAgICAgJ3ByZXYtbW9udGgnIDogJ01lcycsCi0gICAgICAgICAgICAncHJldi15ZWFyJyA6
ICdBw7FvJywKLSAgICAgICAgICAgICduZXh0JzonU2lndWllbnRlJywKLSAgICAgICAgICAgICdu
ZXh0LXdlZWsnOidTZW1hbmEnLAotICAgICAgICAgICAgJ25leHQtbW9udGgnOidNZXMnLAotICAg
ICAgICAgICAgJ25leHQteWVhcic6J0HDsW8nLAotICAgICAgICAgICAgJ2xlc3MtdGhhbicgOiAn
RWwgcmFuZ28gbm8gZGViZXJpYSBzZXIgbWF5b3IgZGUgJWQgZGlhcycsCi0gICAgICAgICAgICAn
bW9yZS10aGFuJyA6ICdFbCByYW5nbyBubyBkZWJlcmlhIHNlciBtZW5vciBkZSAlZCBkaWFzJywK
LSAgICAgICAgICAgICdkZWZhdWx0LW1vcmUnIDogJ1BvciBmYXZvciBzZWxlY2Npb25hIHVuIHJh
bmdvIG1heW9yIGEgJWQgZGlhcycsCi0gICAgICAgICAgICAnZGVmYXVsdC1zaW5nbGUnIDogJ1Bv
ciBmYXZvciBzZWxlY2Npb25hIHVuIGRpYScsCi0gICAgICAgICAgICAnZGVmYXVsdC1sZXNzJyA6
ICdQb3IgZmF2b3Igc2VsZWNjaW9uYSB1biByYW5nbyBtZW5vciBhICVkIGRpYXMnLAotICAgICAg
ICAgICAgJ2RlZmF1bHQtcmFuZ2UnIDogJ1BvciBmYXZvciBzZWxlY2Npb25hIHVuIHJhbmdvIGVu
dHJlICVkIHkgJWQgZGlhcycsCi0gICAgICAgICAgICAnZGVmYXVsdC1kZWZhdWx0JzogJ1BvciBm
YXZvciBzZWxlY2Npb25hIHVuIHJhbmdvIGRlIGZlY2hhcy4nCi0gICAgICAgIH0sCi0gICAgICAg
ICdkZSc6Ci0gICAgICAgIHsKLSAgICAgICAgICAgICdzZWxlY3RlZCc6ICdBdXN3YWhsOicsCi0g
ICAgICAgICAgICAnZGF5JzonVGFnJywKLSAgICAgICAgICAgICdkYXlzJzogJ1RhZ2UnLAotICAg
ICAgICAgICAgJ2FwcGx5JzogJ1NjaGxpZcOfZW4nLAotICAgICAgICAgICAgJ3dlZWstMScgOiAn
TU8nLAotICAgICAgICAgICAgJ3dlZWstMicgOiAnREknLAotICAgICAgICAgICAgJ3dlZWstMycg
OiAnTUknLAotICAgICAgICAgICAgJ3dlZWstNCcgOiAnRE8nLAotICAgICAgICAgICAgJ3dlZWst
NScgOiAnRlInLAotICAgICAgICAgICAgJ3dlZWstNicgOiAnU0EnLAotICAgICAgICAgICAgJ3dl
ZWstNycgOiAnU08nLAotICAgICAgICAgICAgJ21vbnRoLW5hbWUnOiBbJ0pBTlVBUicsJ0ZFQlJV
QVInLCdNw4RSWicsJ0FQUklMJywnTUFJJywnSlVOSScsJ0pVTEknLCdBVUdVU1QnLCdTRVBURU1C
RVInLCdPS1RPQkVSJywnTk9WRU1CRVInLCdERVpFTUJFUiddLAotICAgICAgICAgICAgJ3Nob3J0
Y3V0cycgOiAnU2NobmVsbHdhaGwnLAotICAgICAgICAgICAgJ3Bhc3QnOiAnVm9yaGVyaWdlJywK
LSAgICAgICAgICAgICdmb2xsb3dpbmcnOidGb2xnZW5kZScsCi0gICAgICAgICAgICAncHJldmlv
dXMnIDogJ1ZvcmhlcmlnZScsCi0gICAgICAgICAgICAncHJldi13ZWVrJyA6ICdXb2NoZScsCi0g
ICAgICAgICAgICAncHJldi1tb250aCcgOiAnTW9uYXQnLAotICAgICAgICAgICAgJ3ByZXYteWVh
cicgOiAnSmFocicsCi0gICAgICAgICAgICAnbmV4dCc6J07DpGNoc3RlJywKLSAgICAgICAgICAg
ICduZXh0LXdlZWsnOidXb2NoZScsCi0gICAgICAgICAgICAnbmV4dC1tb250aCc6J01vbmF0JywK
LSAgICAgICAgICAgICduZXh0LXllYXInOidKYWhyJywKLSAgICAgICAgICAgICdsZXNzLXRoYW4n
IDogJ0RhdHVtc2JlcmVpY2ggZGFyZiBuaWNodCBncsO2w59lciBzZWluIGFscyAlZCBUYWdlJywK
LSAgICAgICAgICAgICdtb3JlLXRoYW4nIDogJ0RhdHVtc2JlcmVpY2ggZGFyZiBuaWNodCBrbGVp
bmVyIHNlaW4gYWxzICVkIFRhZ2UnLAotICAgICAgICAgICAgJ2RlZmF1bHQtbW9yZScgOiAnQml0
dGUgbWluZGVzdGVucyAlZCBUYWdlIGF1c3fDpGhsZW4nLAotICAgICAgICAgICAgJ2RlZmF1bHQt
c2luZ2xlJyA6ICdCaXR0ZSBlaW4gRGF0dW0gYXVzd8OkaGxlbicsCi0gICAgICAgICAgICAnZGVm
YXVsdC1sZXNzJyA6ICdCaXR0ZSB3ZW5pZ2VyIGFscyAlZCBUYWdlIGF1c3fDpGhsZW4nLAotICAg
ICAgICAgICAgJ2RlZmF1bHQtcmFuZ2UnIDogJ0JpdHRlIGVpbmVuIERhdHVtc2JlcmVpY2ggendp
c2NoZW4gJWQgdW5kICVkIFRhZ2VuIGF1c3fDpGhsZW4nLAotICAgICAgICAgICAgJ2RlZmF1bHQt
ZGVmYXVsdCc6ICdCaXR0ZSBlaW4gU3RhcnQtIHVuZCBFbmRkYXR1bSBhdXN3w6RobGVuJwotICAg
ICAgICB9Ci0gICAgfTsKLQotCi0gICAgaWYgKHdpbmRvd1snbW9tZW50J10gPT09IHVuZGVmaW5l
ZCkKLSAgICB7Ci0gICAgICAgIGlmICh3aW5kb3dbJ2NvbnNvbGUnXSAmJiBjb25zb2xlWyd3YXJu
J10pIGNvbnNvbGUud2FybignUGxlYXNlIGltcG9ydCBtb21lbnQuanMgYmVmb3JlIGRhdGVyYW5n
ZXBpY2tlci5qcycpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgJC5mbi5kYXRlUmFu
Z2VQaWNrZXIgPSBmdW5jdGlvbihvcHQpCi0gICAgewotICAgICAgICBpZiAoIW9wdCkgb3B0ID0g
e307Ci0gICAgICAgIG9wdCA9ICQuZXh0ZW5kKHRydWUsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGF1dG9DbG9zZTogZmFsc2UsCi0gICAgICAgICAgICBmb3JtYXQ6ICdZWVlZLU1NLUREJywKLSAg
ICAgICAgICAgIHNlcGFyYXRvcjogJyB0byAnLAotICAgICAgICAgICAgbGFuZ3VhZ2U6ICdhdXRv
JywKLSAgICAgICAgICAgIHN0YXJ0T2ZXZWVrOiAnc3VuZGF5JywvLyBvciBtb25kYXkKLSAgICAg
ICAgICAgIGdldFZhbHVlOiBmdW5jdGlvbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuICQodGhpcykudmFsKCk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgc2V0
VmFsdWU6IGZ1bmN0aW9uKHMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJCh0aGlz
KS52YWwocyk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgc3RhcnREYXRlOiBmYWxzZSwK
LSAgICAgICAgICAgIGVuZERhdGU6IGZhbHNlLAotICAgICAgICAgICAgdGltZTogewotICAgICAg
ICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgbWlu
RGF5czogMCwKLSAgICAgICAgICAgIG1heERheXM6IDAsCi0gICAgICAgICAgICBzaG93U2hvcnRj
dXRzOiB0cnVlLAotICAgICAgICAgICAgc2hvcnRjdXRzOgotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIC8vJ3ByZXYtZGF5cyc6IFsxLDMsNSw3XSwKLSAgICAgICAgICAgICAgICAnbmV4
dC1kYXlzJzogWzMsNSw3XSwKLSAgICAgICAgICAgICAgICAvLydwcmV2JyA6IFsnd2VlaycsJ21v
bnRoJywneWVhciddLAotICAgICAgICAgICAgICAgICduZXh0JyA6IFsnd2VlaycsJ21vbnRoJywn
eWVhciddCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgY3VzdG9tU2hvcnRjdXRzIDogW10s
Ci0gICAgICAgICAgICBpbmxpbmU6ZmFsc2UsCi0gICAgICAgICAgICBjb250YWluZXI6J2JvZHkn
LAotICAgICAgICAgICAgYWx3YXlzT3BlbjpmYWxzZSwKLSAgICAgICAgICAgIHNpbmdsZURhdGU6
ZmFsc2UsCi0gICAgICAgICAgICBiYXRjaE1vZGU6IGZhbHNlCi0gICAgICAgIH0sb3B0KTsKLQot
ICAgICAgICBvcHQuc3RhcnQgPSBmYWxzZTsKLSAgICAgICAgb3B0LmVuZCA9IGZhbHNlOwotCi0g
ICAgICAgIGlmIChvcHQuc3RhcnREYXRlICYmIHR5cGVvZiBvcHQuc3RhcnREYXRlID09ICdzdHJp
bmcnKSBvcHQuc3RhcnREYXRlID0gbW9tZW50KG9wdC5zdGFydERhdGUsb3B0LmZvcm1hdCkudG9E
YXRlKCk7Ci0gICAgICAgIGlmIChvcHQuZW5kRGF0ZSAmJiB0eXBlb2Ygb3B0LmVuZERhdGUgPT0g
J3N0cmluZycpIG9wdC5lbmREYXRlID0gbW9tZW50KG9wdC5lbmREYXRlLG9wdC5mb3JtYXQpLnRv
RGF0ZSgpOwotCi0gICAgICAgIHZhciBsYW5ncyA9IGdldExhbmd1YWdlcygpOwotICAgICAgICB2
YXIgYm94OwotICAgICAgICB2YXIgaW5pdGlhdGVkID0gZmFsc2U7Ci0gICAgICAgIHZhciBzZWxm
ID0gdGhpczsKLSAgICAgICAgdmFyIHNlbGZEb20gPSAkKHNlbGYpLmdldCgwKTsKLQotICAgICAg
ICAkKHRoaXMpLnVuYmluZCgnLmRhdGVwaWNrZXInKS5iaW5kKCdjbGljay5kYXRlcGlja2VyJyxm
dW5jdGlvbihldnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24o
KTsKLSAgICAgICAgICAgIG9wZW4oMjAwKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaW5pdF9k
YXRlcGlja2VyLmNhbGwodGhpcyk7Ci0KLSAgICAgICAgaWYgKG9wdC5hbHdheXNPcGVuKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBvcGVuKDApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZXhw
b3NlIHNvbWUgYXBpCi0gICAgICAgICQodGhpcykuZGF0YSgnZGF0ZVJhbmdlUGlja2VyJywKLSAg
ICAgICAgewotICAgICAgICAgICAgc2V0RGF0ZVJhbmdlIDogZnVuY3Rpb24oZDEsZDIpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkMSA9PSAnc3RyaW5nJyAmJiB0
eXBlb2YgZDIgPT0gJ3N0cmluZycpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBkMSA9IG1vbWVudChkMSxvcHQuZm9ybWF0KS50b0RhdGUoKTsKLSAgICAgICAgICAgICAg
ICAgICAgZDIgPSBtb21lbnQoZDIsb3B0LmZvcm1hdCkudG9EYXRlKCk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIHNldERhdGVSYW5nZShkMSxkMik7Ci0gICAgICAgICAgICB9
LAotICAgICAgICAgICAgY2xlYXI6IGNsZWFyU2VsZWN0aW9uLAotICAgICAgICAgICAgY2xvc2U6
IGNsb3NlRGF0ZVBpY2tlciwKLSAgICAgICAgICAgIG9wZW46IG9wZW4sCi0gICAgICAgICAgICBk
ZXN0cm95OiBmdW5jdGlvbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJChzZWxm
KS51bmJpbmQoJy5kYXRlcGlja2VyJyk7Ci0gICAgICAgICAgICAgICAgJChzZWxmKS5kYXRhKCdk
YXRlUmFuZ2VQaWNrZXInLCcnKTsKLSAgICAgICAgICAgICAgICBib3gucmVtb3ZlKCk7Ci0gICAg
ICAgICAgICAgICAgJCh3aW5kb3cpLnVuYmluZCgncmVzaXplLmRhdGVwaWNrZXInLGNhbGNQb3Np
dGlvbik7Ci0gICAgICAgICAgICAgICAgJChkb2N1bWVudCkudW5iaW5kKCdjbGljay5kYXRlcGlj
a2VyJyxjbG9zZURhdGVQaWNrZXIpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLQotICAg
ICAgICAkKHdpbmRvdykuYmluZCgncmVzaXplLmRhdGVwaWNrZXInLGNhbGNQb3NpdGlvbik7Ci0K
LSAgICAgICAgcmV0dXJuIHRoaXM7Ci0KLQotCi0KLQotCi0KLQotCi0KLQotICAgICAgICBmdW5j
dGlvbiBpbml0X2RhdGVwaWNrZXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgc2VsZiA9
IHRoaXM7Ci0KLSAgICAgICAgICAgIGlmICgkKHRoaXMpLmRhdGEoJ2RhdGUtcGlja2VyLW9wZW5l
ZCcpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNsb3NlRGF0ZVBpY2tlcigpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICQodGhp
cykuZGF0YSgnZGF0ZS1waWNrZXItb3BlbmVkJyx0cnVlKTsKLQotCi0KLQotCi0gICAgICAgICAg
ICBib3ggPSBjcmVhdGVEb20oKS5oaWRlKCk7Ci0gICAgICAgICAgICAkKG9wdC5jb250YWluZXIp
LmFwcGVuZChib3gpOwotCi0gICAgICAgICAgICBpZiAoIW9wdC5pbmxpbmUpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY2FsY1Bvc2l0aW9uKCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYm94LmNzcyh7cG9z
aXRpb246J3N0YXRpYyd9KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG9wdC5h
bHdheXNPcGVuKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJveC5maW5kKCcuYXBw
bHktYnRuJykuaGlkZSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgZGVmYXVs
dFRpbWUgPSBuZXcgRGF0ZSgpOwotICAgICAgICAgICAgaWYgKG9wdC5zdGFydERhdGUgJiYgY29t
cGFyZV9tb250aChkZWZhdWx0VGltZSxvcHQuc3RhcnREYXRlKSA8IDAgKSBkZWZhdWx0VGltZSA9
IG1vbWVudChvcHQuc3RhcnREYXRlKS50b0RhdGUoKTsKLSAgICAgICAgICAgIGlmIChvcHQuZW5k
RGF0ZSAmJiBjb21wYXJlX21vbnRoKG5leHRNb250aChkZWZhdWx0VGltZSksb3B0LmVuZERhdGUp
ID4gMCApIGRlZmF1bHRUaW1lID0gcHJldk1vbnRoKG1vbWVudChvcHQuZW5kRGF0ZSkudG9EYXRl
KCkpOwotCi0KLSAgICAgICAgICAgIHNob3dNb250aChkZWZhdWx0VGltZSwnbW9udGgxJyk7Ci0g
ICAgICAgICAgICBzaG93TW9udGgobmV4dE1vbnRoKGRlZmF1bHRUaW1lKSwnbW9udGgyJyk7Ci0K
LSAgICAgICAgICAgIGlmIChvcHQudGltZS5lbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KChvcHQuc3RhcnREYXRlICYmIG9wdC5lbmREYXRlKSB8fCAob3B0LnN0YXJ0ICYmIG9wdC5lbmQp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHNob3dUaW1lKG1vbWVudChvcHQuc3RhcnQgfHwgb3B0
LnN0YXJ0RGF0ZSkudG9EYXRlKCksJ3RpbWUxJyk7Ci0gICAgICAgICAgICAgICAgICAgIHNob3dU
aW1lKG1vbWVudChvcHQuZW5kIHx8IG9wdC5lbmREYXRlKS50b0RhdGUoKSwndGltZTInKTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzaG93VGltZShkZWZh
dWx0VGltZSwndGltZTEnKTsKLSAgICAgICAgICAgICAgICAgICAgc2hvd1RpbWUoZGVmYXVsdFRp
bWUsJ3RpbWUyJyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAvL3Nob3dTZWxlY3RlZEluZm8oKTsKLQotCi0KLQotICAgICAgICAgICAgdmFyIGRlZmF1
bHRUb3BUZXh0ID0gJyc7Ci0gICAgICAgICAgICBpZiAob3B0LnNpbmdsZURhdGUpCi0gICAgICAg
ICAgICAgICAgZGVmYXVsdFRvcFRleHQgPSBsYW5nKCdkZWZhdWx0LXNpbmdsZScpOwotICAgICAg
ICAgICAgZWxzZSBpZiAob3B0Lm1pbkRheXMgJiYgb3B0Lm1heERheXMpCi0gICAgICAgICAgICAg
ICAgZGVmYXVsdFRvcFRleHQgPSBsYW5nKCdkZWZhdWx0LXJhbmdlJyk7Ci0gICAgICAgICAgICBl
bHNlIGlmIChvcHQubWluRGF5cykKLSAgICAgICAgICAgICAgICBkZWZhdWx0VG9wVGV4dCA9IGxh
bmcoJ2RlZmF1bHQtbW9yZScpOwotICAgICAgICAgICAgZWxzZSBpZiAob3B0Lm1heERheXMpCi0g
ICAgICAgICAgICAgICAgZGVmYXVsdFRvcFRleHQgPSBsYW5nKCdkZWZhdWx0LWxlc3MnKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkZWZhdWx0VG9wVGV4dCA9IGxhbmcoJ2Rl
ZmF1bHQtZGVmYXVsdCcpOwotCi0gICAgICAgICAgICBib3guZmluZCgnLmRlZmF1bHQtdG9wJyku
aHRtbCggZGVmYXVsdFRvcFRleHQucmVwbGFjZSgvXCVkLyxvcHQubWluRGF5cykucmVwbGFjZSgv
XCVkLyxvcHQubWF4RGF5cykpOwotCi0KLQotCi0gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbml0aWF0ZWQgPSB0cnVlOwot
ICAgICAgICAgICAgfSwwKTsKLQotICAgICAgICAgICAgYm94LmNsaWNrKGZ1bmN0aW9uKGV2dCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0g
ICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgJChkb2N1bWVudCkuYmluZCgnY2xpY2suZGF0
ZXBpY2tlcicsY2xvc2VEYXRlUGlja2VyKTsKLQotICAgICAgICAgICAgYm94LmZpbmQoJy5uZXh0
JykuY2xpY2soZnVuY3Rpb24oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhciBp
c01vbnRoMiA9ICQodGhpcykucGFyZW50cygndGFibGUnKS5oYXNDbGFzcygnbW9udGgyJyk7Ci0g
ICAgICAgICAgICAgICAgdmFyIG1vbnRoID0gaXNNb250aDIgPyBvcHQubW9udGgyIDogb3B0Lm1v
bnRoMTsKLSAgICAgICAgICAgICAgICBtb250aCA9IG5leHRNb250aChtb250aCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFvcHQuc2luZ2xlRGF0ZSAmJiAhaXNNb250aDIgJiYgY29tcGFyZV9tb250
aChtb250aCxvcHQubW9udGgyKSA+PSAwKSByZXR1cm47Ci0gICAgICAgICAgICAgICAgc2hvd01v
bnRoKG1vbnRoLGlzTW9udGgyID8gJ21vbnRoMicgOiAnbW9udGgxJyk7Ci0gICAgICAgICAgICAg
ICAgc2hvd0dhcCgpOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGJveC5maW5kKCcu
cHJldicpLmNsaWNrKGZ1bmN0aW9uKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2
YXIgaXNNb250aDIgPSAkKHRoaXMpLnBhcmVudHMoJ3RhYmxlJykuaGFzQ2xhc3MoJ21vbnRoMicp
OwotICAgICAgICAgICAgICAgIHZhciBtb250aCA9IGlzTW9udGgyID8gb3B0Lm1vbnRoMiA6IG9w
dC5tb250aDE7Ci0gICAgICAgICAgICAgICAgbW9udGggPSBwcmV2TW9udGgobW9udGgpOwotICAg
ICAgICAgICAgICAgIC8vaWYgKGlzTW9udGgyICYmIG1vbnRoLmdldEZ1bGxZZWFyKCkrJycrbW9u
dGguZ2V0TW9udGgoKSA8PSBvcHQubW9udGgxLmdldEZ1bGxZZWFyKCkrJycrb3B0Lm1vbnRoMS5n
ZXRNb250aCgpKSByZXR1cm47Ci0gICAgICAgICAgICAgICAgaWYgKGlzTW9udGgyICYmIGNvbXBh
cmVfbW9udGgobW9udGgsb3B0Lm1vbnRoMSkgPD0gMCkgcmV0dXJuOwotICAgICAgICAgICAgICAg
IHNob3dNb250aChtb250aCxpc01vbnRoMiA/ICdtb250aDInIDogJ21vbnRoMScpOwotICAgICAg
ICAgICAgICAgIHNob3dHYXAoKTsKLSAgICAgICAgICAgIH0pOwotCi0KLSAgICAgICAgICAgIGJv
eC5iaW5kKCdjbGljaycsZnVuY3Rpb24oZXZ0KQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGlmICgkKGV2dC50YXJnZXQpLmhhc0NsYXNzKCdkYXknKSkKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIGRheUNsaWNrZWQoJChldnQudGFyZ2V0KSk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGJveC5hdHRyKCd1bnNl
bGVjdGFibGUnLCAnb24nKQotICAgICAgICAgICAgLmNzcygndXNlci1zZWxlY3QnLCAnbm9uZScp
Ci0gICAgICAgICAgICAuYmluZCgnc2VsZWN0c3RhcnQnLCBmdW5jdGlvbihlKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGJveC5maW5kKCcuYXBwbHktYnRuJykuY2xp
Y2soZnVuY3Rpb24oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNsb3NlRGF0ZVBp
Y2tlcigpOwotICAgICAgICAgICAgICAgIHZhciBkYXRlUmFuZ2UgPSBnZXREYXRlU3RyaW5nKG5l
dyBEYXRlKG9wdC5zdGFydCkpKyBvcHQuc2VwYXJhdG9yICtnZXREYXRlU3RyaW5nKG5ldyBEYXRl
KG9wdC5lbmQpKTsKLSAgICAgICAgICAgICAgICAkKHNlbGYpLnRyaWdnZXIoJ2RhdGVwaWNrZXIt
YXBwbHknLAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzog
ZGF0ZVJhbmdlLAotICAgICAgICAgICAgICAgICAgICAnZGF0ZTEnIDogbmV3IERhdGUob3B0LnN0
YXJ0KSwKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGUyJyA6IG5ldyBEYXRlKG9wdC5lbmQpCi0g
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgYm94LmZp
bmQoJ1tzaG9ydGN1dF0nKS5jbGljayhmdW5jdGlvbigpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgdmFyIHNob3J0Y3V0ID0gJCh0aGlzKS5hdHRyKCdzaG9ydGN1dCcpOwotICAgICAg
ICAgICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpLHN0YXJ0ID0gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgaWYgKHNob3J0Y3V0LmluZGV4T2YoJ2RheScpICE9IC0xKQotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGRheSA9IHBhcnNlSW50KHNob3J0Y3V0LnNwbGl0
KCcsJywyKVsxXSwxMCk7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gbmV3IERhdGUobmV3
IERhdGUoKS5nZXRUaW1lKCkgKyA4NjQwMDAwMCpkYXkpOwotICAgICAgICAgICAgICAgICAgICBl
bmQgPSBuZXcgRGF0ZShlbmQuZ2V0VGltZSgpICsgODY0MDAwMDAqKGRheT4wPzE6LTEpICk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNob3J0Y3V0LmluZGV4
T2YoJ3dlZWsnKSE9IC0xKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIGRpciA9IHNob3J0Y3V0LmluZGV4T2YoJ3ByZXYsJykgIT0gLTEgPyAtMSA6IDE7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGRpciA9PSAxKQotICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHN0b3BEYXkgPSBvcHQuc3RhcnRPZldlZWsgPT0gJ21vbmRheScgPyAxIDogMDsKLSAgICAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0b3BEYXkg
PSBvcHQuc3RhcnRPZldlZWsgPT0gJ21vbmRheScgPyAwIDogNjsKLQotICAgICAgICAgICAgICAg
ICAgICBlbmQgPSBuZXcgRGF0ZShlbmQuZ2V0VGltZSgpIC0gODY0MDAwMDApOwotICAgICAgICAg
ICAgICAgICAgICB3aGlsZShlbmQuZ2V0RGF5KCkgIT0gc3RvcERheSkgZW5kID0gbmV3IERhdGUo
ZW5kLmdldFRpbWUoKSArIGRpcio4NjQwMDAwMCk7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0
ID0gbmV3IERhdGUoZW5kLmdldFRpbWUoKSArIGRpcio4NjQwMDAwMCo2KTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hvcnRjdXQuaW5kZXhPZignbW9udGgn
KSAhPSAtMSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBkaXIg
PSBzaG9ydGN1dC5pbmRleE9mKCdwcmV2LCcpICE9IC0xID8gLTEgOiAxOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoZGlyID09IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFydCA9IG5l
eHRNb250aChlbmQpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzdGFydCA9IHByZXZNb250aChlbmQpOwotICAgICAgICAgICAgICAgICAgICBzdGFy
dC5zZXREYXRlKDEpOwotICAgICAgICAgICAgICAgICAgICBlbmQgPSBuZXh0TW9udGgoc3RhcnQp
OwotICAgICAgICAgICAgICAgICAgICBlbmQuc2V0RGF0ZSgxKTsKLSAgICAgICAgICAgICAgICAg
ICAgZW5kID0gbmV3IERhdGUoZW5kLmdldFRpbWUoKSAtIDg2NDAwMDAwKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hvcnRjdXQuaW5kZXhPZigneWVhcicp
ICE9IC0xKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGRpciA9
IHNob3J0Y3V0LmluZGV4T2YoJ3ByZXYsJykgIT0gLTEgPyAtMSA6IDE7Ci0gICAgICAgICAgICAg
ICAgICAgIHN0YXJ0ID0gbmV3IERhdGUoKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0
RnVsbFllYXIoZW5kLmdldEZ1bGxZZWFyKCkgKyBkaXIpOwotICAgICAgICAgICAgICAgICAgICBz
dGFydC5zZXRNb250aCgwKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0RGF0ZSgxKTsK
LSAgICAgICAgICAgICAgICAgICAgZW5kLnNldEZ1bGxZZWFyKGVuZC5nZXRGdWxsWWVhcigpICsg
ZGlyKTsKLSAgICAgICAgICAgICAgICAgICAgZW5kLnNldE1vbnRoKDExKTsKLSAgICAgICAgICAg
ICAgICAgICAgZW5kLnNldERhdGUoMzEpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChzaG9ydGN1dCA9PSAnY3VzdG9tJykKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gJCh0aGlzKS5odG1sKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChvcHQuY3VzdG9tU2hvcnRjdXRzICYmIG9wdC5jdXN0b21TaG9ydGN1dHMu
bGVuZ3RoID4gMCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yKHZhciBpPTA7aTxvcHQuY3VzdG9tU2hvcnRjdXRzLmxlbmd0aDtpKyspCi0gICAgICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNoID0g
b3B0LmN1c3RvbVNob3J0Y3V0c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
c2gubmFtZSA9PSBuYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBbXTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gdHJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzaFsnZGF0ZXMn
XS5jYWxsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfWNhdGNoKGUpe30K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGgg
PT0gMikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBkYXRhWzBdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW5kID0gZGF0YVsxXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIG9ubHkg
b25lIGRhdGUgaXMgc3BlY2lmaWVkIHRoZW4ganVzdCBtb3ZlIGNhbGVuZGFycyB0aGVyZQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb3ZlIGNhbGVuZGFycyB0byBzaG93IHRo
aXMgZGF0ZSdzIG1vbnRoIGFuZCBuZXh0IG1vbnRocwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA9PSAxKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Zl
dG9kYXRlID0gZGF0YVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo
b3dNb250aChtb3ZldG9kYXRlLCdtb250aDEnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNob3dNb250aChuZXh0TW9udGgobW92ZXRvZGF0ZSksJ21vbnRoMicpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0dhcCgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGlmIChzdGFydCAmJiBlbmQpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBzZXREYXRlUmFuZ2Uoc3RhcnQsZW5kKTsKLSAgICAgICAgICAgICAgICAgICAg
Y2hlY2tTZWxlY3Rpb25WYWxpZCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0p
OwotCi0gICAgICAgICAgICBib3guZmluZCgiLnRpbWUxIGlucHV0W3R5cGU9cmFuZ2VdIikuYmlu
ZCgiY2hhbmdlIG1vdXNlbW92ZSIsIGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICAgICAgdmFy
IHRhcmdldCA9IGUudGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICBob3VyID0gdGFyZ2V0Lm5h
bWUgPT0gImhvdXIiID8gJCh0YXJnZXQpLnZhbCgpLnJlcGxhY2UoL14oXGR7MX0pJC8sICIwJDEi
KSA6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgICAgICAgICAgbWluID0gdGFyZ2V0Lm5hbWUgPT0g
Im1pbnV0ZSIgPyAkKHRhcmdldCkudmFsKCkucmVwbGFjZSgvXihcZHsxfSkkLywgIjAkMSIpIDog
dW5kZWZpbmVkOwotICAgICAgICAgICAgICAgIHNldFRpbWUoInRpbWUxIiwgaG91ciwgbWluKTsK
LSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBib3guZmluZCgiLnRpbWUyIGlucHV0W3R5
cGU9cmFuZ2VdIikuYmluZCgiY2hhbmdlIG1vdXNlbW92ZSIsIGZ1bmN0aW9uIChlKSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICBo
b3VyID0gdGFyZ2V0Lm5hbWUgPT0gImhvdXIiID8gJCh0YXJnZXQpLnZhbCgpLnJlcGxhY2UoL14o
XGR7MX0pJC8sICIwJDEiKSA6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgICAgICAgICAgbWluID0g
dGFyZ2V0Lm5hbWUgPT0gIm1pbnV0ZSIgPyAkKHRhcmdldCkudmFsKCkucmVwbGFjZSgvXihcZHsx
fSkkLywgIjAkMSIpIDogdW5kZWZpbmVkOwotICAgICAgICAgICAgICAgIHNldFRpbWUoInRpbWUy
IiwgaG91ciwgbWluKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgIH0KLQotCi0gICAgICAg
IGZ1bmN0aW9uIGNhbGNQb3NpdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghb3B0
LmlubGluZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gJChz
ZWxmKS5vZmZzZXQoKTsKLS8qIEFwcGxlIGNoYW5nZQotICAgICAgICAgICAgICAgIGlmIChvZmZz
ZXQubGVmdCA8IDQ2MCkgLy9sZWZ0IHRvIHJpZ2h0Ci0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBib3guY3NzKAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB0b3A6IG9mZnNldC50b3ArJChzZWxmKS5vdXRlckhlaWdodCgpICsgcGFy
c2VJbnQoJCgnYm9keScpLmNzcygnYm9yZGVyLXRvcCcpIHx8IDAsMTAgKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxlZnQ6IG9mZnNldC5sZWZ0Ci0gICAgICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBib3guY3NzKAotICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0b3A6IG9mZnNldC50b3ArJChzZWxmKS5vdXRlckhlaWdo
dCgpICsgcGFyc2VJbnQoJCgnYm9keScpLmNzcygnYm9yZGVyLXRvcCcpIHx8IDAsMTAgKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IG9mZnNldC5sZWZ0ICsgJChzZWxmKS53aWR0aCgp
IC0gYm94LndpZHRoKCkgLSAxNgotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
ICAgICB9Ci0qLwotICAgICAgICAgICAgICAgIGJveC5jc3MoCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICB0b3A6ICQoc2VsZikub3V0ZXJIZWlnaHQoKSArIHBhcnNlSW50
KCQoJ2JvZHknKS5jc3MoJ2JvcmRlci10b3AnKSB8fCAwLDEwICksCi0vLyAgICAgICAgICAgICAg
ICAgICAgbGVmdDogb2Zmc2V0LmxlZnQgKyAkKHNlbGYpLndpZHRoKCkgLSBib3gud2lkdGgoKSAt
IDE2Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAg
ICAgICBmdW5jdGlvbiBvcGVuKGFuaW1hdGlvblRpbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNhbGNQb3NpdGlvbigpOwotICAgICAgICAgICAgdmFyIF9fZGVmYXVsdF9zdHJpbmcgPSBvcHQu
Z2V0VmFsdWUuY2FsbChzZWxmRG9tKTsKLSAgICAgICAgICAgIHZhciBkZWZhdWx0cyA9IF9fZGVm
YXVsdF9zdHJpbmcgPyBfX2RlZmF1bHRfc3RyaW5nLnNwbGl0KCBvcHQuc2VwYXJhdG9yICkgOiAn
JzsKLQotICAgICAgICAgICAgaWYgKGRlZmF1bHRzICYmIGRlZmF1bHRzLmxlbmd0aCA+PSAyKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhciBfX19mb3JtYXQgPSBvcHQuZm9ybWF0
OwotICAgICAgICAgICAgICAgIGlmIChfX19mb3JtYXQubWF0Y2goL0RvLykpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBfX19mb3JtYXQgPSBfX19mb3JtYXQucmVwbGFj
ZSgvRG8vLCdEJyk7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRzWzBdID0gZGVmYXVsdHNb
MF0ucmVwbGFjZSgvKFxkKykodGh8bmR8c3QpLywnJDEnKTsKLSAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdHNbMV0gPSBkZWZhdWx0c1sxXS5yZXBsYWNlKC8oXGQrKSh0aHxuZHxzdCkvLCckMScp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgLy8gc2V0IGluaXRpYXRlZCAgdG8gYXZvaWQg
dHJpZ2dlcnJpbmcgZGF0ZXBpY2tlci1jaGFuZ2UgZXZlbnQKLSAgICAgICAgaW5pdGlhdGVkID0g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgc2V0RGF0ZVJhbmdlKG1vbWVudChkZWZhdWx0c1swXSwg
X19fZm9ybWF0KS50b0RhdGUoKSxtb21lbnQoZGVmYXVsdHNbMV0sIF9fX2Zvcm1hdCkudG9EYXRl
KCkpOwotICAgICAgICBpbml0aWF0ZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYm94LnNsaWRlRG93bihhbmltYXRpb25UaW1lKTsKLSAgICAgICAgfQotCi0KLQotICAgICAg
ICBmdW5jdGlvbiByZW5kZXJUaW1lIChuYW1lLCBkYXRlKSB7Ci0gICAgICAgICAgICBib3guZmlu
ZCgiLiIgKyBuYW1lICsgIiBpbnB1dFt0eXBlPXJhbmdlXS5ob3VyLXJhbmdlIikudmFsKG1vbWVu
dChkYXRlKS5ob3VycygpKTsKLSAgICAgICAgICAgIGJveC5maW5kKCIuIiArIG5hbWUgKyAiIGlu
cHV0W3R5cGU9cmFuZ2VdLm1pbnV0ZS1yYW5nZSIpLnZhbChtb21lbnQoZGF0ZSkubWludXRlcygp
KTsKLSAgICAgICAgICAgIHNldFRpbWUobmFtZSwgbW9tZW50KGRhdGUpLmZvcm1hdCgiSEgiKSwg
bW9tZW50KGRhdGUpLmZvcm1hdCgibW0iKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlv
biBjaGFuZ2VUaW1lIChuYW1lLCBkYXRlKSB7Ci0gICAgICAgICAgICBvcHRbbmFtZV0gPSBwYXJz
ZUludCgKLSAgICAgICAgICAgICAgICBtb21lbnQocGFyc2VJbnQoZGF0ZSkpCi0gICAgICAgICAg
ICAgICAgICAgIC5zdGFydE9mKCdkYXknKQotICAgICAgICAgICAgICAgICAgICAuYWRkKCdoJywg
bW9tZW50KG9wdFtuYW1lICsgIlRpbWUiXSkuZm9ybWF0KCJISCIpKQotICAgICAgICAgICAgICAg
ICAgICAuYWRkKCdtJywgbW9tZW50KG9wdFtuYW1lICsgIlRpbWUiXSkuZm9ybWF0KCJtbSIpKS52
YWx1ZU9mKCkKLSAgICAgICAgICAgICAgICApOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rp
b24gc3dhcFRpbWUgKCkgewotICAgICAgICAgICAgcmVuZGVyVGltZSgidGltZTEiLCBvcHQuc3Rh
cnQpOwotICAgICAgICAgICAgcmVuZGVyVGltZSgidGltZTIiLCBvcHQuZW5kKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGZ1bmN0aW9uIHNldFRpbWUgKG5hbWUsIGhvdXIsIG1pbnV0ZSkgewotICAg
ICAgICAgICAgaG91ciAmJiAoYm94LmZpbmQoIi4iICsgbmFtZSArICIgLmhvdXItdmFsIikudGV4
dChob3VyKSk7Ci0gICAgICAgICAgICBtaW51dGUgJiYgKGJveC5maW5kKCIuIiArIG5hbWUgKyAi
IC5taW51dGUtdmFsIikudGV4dChtaW51dGUpKTsKLSAgICAgICAgICAgIHN3aXRjaCAobmFtZSkg
ewotICAgICAgICAgICAgICAgIGNhc2UgInRpbWUxIjoKLSAgICAgICAgICAgICAgICAgICAgaWYg
KG9wdC5zdGFydCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmFuZ2UoInN0YXJ0Iiwg
bW9tZW50KG9wdC5zdGFydCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIHNldFJhbmdlKCJzdGFydFRpbWUiLCBtb21lbnQob3B0LnN0YXJ0VGltZSB8fCBtb21l
bnQoKS52YWx1ZU9mKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSAidGltZTIiOgotICAgICAgICAgICAgICAgICAgICBpZiAob3B0LmVuZCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmFuZ2UoImVuZCIsIG1vbWVudChvcHQuZW5kKSk7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgc2V0UmFuZ2UoImVu
ZFRpbWUiLCBtb21lbnQob3B0LmVuZFRpbWUgfHwgbW9tZW50KCkudmFsdWVPZigpKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZnVuY3Rp
b24gc2V0UmFuZ2UobmFtZSwgdGltZVBvaW50KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGggPSB0
aW1lUG9pbnQuZm9ybWF0KCJISCIpLAotICAgICAgICAgICAgICAgICAgICBtID0gdGltZVBvaW50
LmZvcm1hdCgibW0iKTsKLSAgICAgICAgICAgICAgICBvcHRbbmFtZV0gPSB0aW1lUG9pbnQKLSAg
ICAgICAgICAgICAgICAgICAgLnN0YXJ0T2YoJ2RheScpCi0gICAgICAgICAgICAgICAgICAgIC5h
ZGQoImgiLCBob3VyIHx8IGgpCi0gICAgICAgICAgICAgICAgICAgIC5hZGQoIm0iLCBtaW51dGUg
fHwgbSkKLSAgICAgICAgICAgICAgICAgICAgLnZhbHVlT2YoKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGNoZWNrU2VsZWN0aW9uVmFsaWQoKTsKLSAgICAgICAgICAgIHNob3dTZWxlY3Rl
ZEluZm8oKTsKLSAgICAgICAgICAgIHNob3dTZWxlY3RlZERheXMoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZ1bmN0aW9uIGNsZWFyU2VsZWN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAg
b3B0LnN0YXJ0ID0gZmFsc2U7Ci0gICAgICAgICAgICBvcHQuZW5kID0gZmFsc2U7Ci0gICAgICAg
ICAgICBib3guZmluZCgnLmRheS5jaGVja2VkJykucmVtb3ZlQ2xhc3MoJ2NoZWNrZWQnKTsKLSAg
ICAgICAgICAgIG9wdC5zZXRWYWx1ZS5jYWxsKHNlbGZEb20sICcnKTsKLSAgICAgICAgICAgIGNo
ZWNrU2VsZWN0aW9uVmFsaWQoKTsKLSAgICAgICAgICAgIHNob3dTZWxlY3RlZEluZm8oKTsKLSAg
ICAgICAgICAgIHNob3dTZWxlY3RlZERheXMoKTsKLSAgICAgICAgfQotCi0gICAgZnVuY3Rpb24g
aGFuZGxlU3RhcnQodGltZSkKLSAgICB7Ci0gICAgICB2YXIgciA9IHRpbWU7Ci0gICAgICBpZiAg
KG9wdC5iYXRjaE1vZGUgPT09ICd3ZWVrLXJhbmdlJykgewotICAgICAgICBpZiAob3B0LnN0YXJ0
T2ZXZWVrID09PSAnbW9uZGF5JykgewotICAgICAgICAgICAgICAgICAgICByID0gbW9tZW50KHBh
cnNlSW50KHRpbWUpKS5zdGFydE9mKCdpc293ZWVrJykudmFsdWVPZigpOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHIgPSBtb21lbnQocGFyc2VJbnQodGlt
ZSkpLnN0YXJ0T2YoJ3dlZWsnKS52YWx1ZU9mKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
fSBlbHNlIGlmIChvcHQuYmF0Y2hNb2RlID09PSAnbW9udGgtcmFuZ2UnKSB7Ci0gICAgICAgICAg
ICAgICAgciA9IG1vbWVudChwYXJzZUludCh0aW1lKSkuc3RhcnRPZignbW9udGgnKS52YWx1ZU9m
KCk7Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiByOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGhh
bmRsZUVuZCh0aW1lKQotICAgIHsKLSAgICAgIHZhciByID0gdGltZTsKLSAgICAgIGlmICAob3B0
LmJhdGNoTW9kZSA9PT0gJ3dlZWstcmFuZ2UnKSB7Ci0gICAgICAgIGlmIChvcHQuc3RhcnRPZldl
ZWsgPT09ICdtb25kYXktcmFuZ2UnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHIgPSBtb21lbnQo
cGFyc2VJbnQodGltZSkpLmVuZE9mKCdpc293ZWVrJykudmFsdWVPZigpOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHIgPSBtb21lbnQocGFyc2VJbnQodGlt
ZSkpLmVuZE9mKCd3ZWVrJykudmFsdWVPZigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgIH0g
ZWxzZSBpZiAob3B0LmJhdGNoTW9kZSA9PT0gJ21vbnRoJykgewotICAgICAgICAgICAgICAgIHIg
PSBtb21lbnQocGFyc2VJbnQodGltZSkpLmVuZE9mKCdtb250aCcpLnZhbHVlT2YoKTsKLSAgICAg
IH0KLQotICAgICAgcmV0dXJuIHI7Ci0gICAgfQotCi0KLSAgICAgICAgZnVuY3Rpb24gZGF5Q2xp
Y2tlZChkYXkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChkYXkuaGFzQ2xhc3MoJ2ludmFs
aWQnKSkgcmV0dXJuOwotICAgICAgICAgICAgdmFyIHRpbWUgPSBkYXkuYXR0cigndGltZScpOwot
ICAgICAgICAgICAgZGF5LmFkZENsYXNzKCdjaGVja2VkJyk7Ci0gICAgICAgICAgICBpZiAoIG9w
dC5zaW5nbGVEYXRlICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvcHQuc3RhcnQg
PSB0aW1lOwotICAgICAgICAgICAgICAgIG9wdC5lbmQgPSBmYWxzZTsKLSAgICAgICAgICAgICAg
ICBpZiAob3B0LnRpbWUuZW5hYmxlZCkgewotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VUaW1l
KCJzdGFydCIsIG9wdC5zdGFydCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZWxzZSBpZiAgKG9wdC5iYXRjaE1vZGUgPT09ICd3ZWVrJykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBpZiAob3B0LnN0YXJ0T2ZXZWVrID09PSAnbW9uZGF5Jykg
ewotICAgICAgICAgICAgICAgICAgICBvcHQuc3RhcnQgPSBtb21lbnQocGFyc2VJbnQodGltZSkp
LnN0YXJ0T2YoJ2lzb3dlZWsnKS52YWx1ZU9mKCk7Ci0gICAgICAgICAgICAgICAgICAgIG9wdC5l
bmQgPSBtb21lbnQocGFyc2VJbnQodGltZSkpLmVuZE9mKCdpc293ZWVrJykudmFsdWVPZigpOwot
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG9wdC5lbmQgPSBt
b21lbnQocGFyc2VJbnQodGltZSkpLmVuZE9mKCd3ZWVrJykudmFsdWVPZigpOwotICAgICAgICAg
ICAgICAgICAgICBvcHQuc3RhcnQgPSBtb21lbnQocGFyc2VJbnQodGltZSkpLnN0YXJ0T2YoJ3dl
ZWsnKS52YWx1ZU9mKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZWxzZSBpZiAob3B0LmJhdGNoTW9kZSA9PT0gJ21vbnRoJykKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBvcHQuc3RhcnQgPSBtb21lbnQocGFyc2VJbnQodGltZSkpLnN0YXJ0
T2YoJ21vbnRoJykudmFsdWVPZigpOwotICAgICAgICAgICAgICAgIG9wdC5lbmQgPSBtb21lbnQo
cGFyc2VJbnQodGltZSkpLmVuZE9mKCdtb250aCcpLnZhbHVlT2YoKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGVsc2UgaWYgKChvcHQuc3RhcnQgJiYgb3B0LmVuZCkgfHwgKCFvcHQuc3Rh
cnQgJiYgIW9wdC5lbmQpICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvcHQuc3Rh
cnQgPSBoYW5kbGVTdGFydCh0aW1lKTsKLSAgICAgICAgICAgICAgICBvcHQuZW5kID0gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgaWYgKG9wdC50aW1lLmVuYWJsZWQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlVGltZSgic3RhcnQiLCBvcHQuc3RhcnQpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG9wdC5zdGFydCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBvcHQuZW5kID0gaGFuZGxlRW5kKHRpbWUpOwotICAgICAg
ICAgICAgICAgIGlmIChvcHQudGltZS5lbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNo
YW5nZVRpbWUoImVuZCIsIG9wdC5lbmQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgaWYgKCFvcHQuc2luZ2xlRGF0ZSAmJiBvcHQuc3RhcnQgJiYgb3B0
LmVuZCAmJiBvcHQuc3RhcnQgPiBvcHQuZW5kKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHZhciB0bXAgPSBvcHQuZW5kOwotICAgICAgICAgICAgICAgIG9wdC5lbmQgPSBoYW5kbGVF
bmQob3B0LnN0YXJ0KTsKLSAgICAgICAgICAgICAgICBvcHQuc3RhcnQgPSBoYW5kbGVTdGFydCh0
bXApOwotICAgICAgICAgICAgICAgIGlmIChvcHQudGltZS5lbmFibGVkKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHN3YXBUaW1lKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBvcHQuc3RhcnQgPSBwYXJzZUludChvcHQuc3RhcnQpOwotICAgICAgICAg
ICAgb3B0LmVuZCA9IHBhcnNlSW50KG9wdC5lbmQpOwotCi0gICAgICAgICAgICBjaGVja1NlbGVj
dGlvblZhbGlkKCk7Ci0gICAgICAgICAgICBzaG93U2VsZWN0ZWRJbmZvKCk7Ci0gICAgICAgICAg
ICBzaG93U2VsZWN0ZWREYXlzKCk7Ci0gICAgICAgICAgICBhdXRvY2xvc2UoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGZ1bmN0aW9uIGF1dG9jbG9zZSAoKSB7Ci0gICAgICAgICAgICBpZiAob3B0
LnNpbmdsZURhdGUgPT09IHRydWUpIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5pdGlhdGVkICYm
IG9wdC5zdGFydCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAo
b3B0LmF1dG9DbG9zZSkgY2xvc2VEYXRlUGlja2VyKCk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5pdGlhdGVkICYmIG9wdC5z
dGFydCAmJiBvcHQuZW5kKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKG9wdC5hdXRvQ2xvc2UpIGNsb3NlRGF0ZVBpY2tlcigpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGNoZWNrU2VsZWN0
aW9uVmFsaWQoKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgZGF5cyA9IE1hdGguY2VpbCgg
KG9wdC5lbmQgLSBvcHQuc3RhcnQpIC8gODY0MDAwMDAgKSArIDE7Ci0gICAgICAgICAgICBpZiAo
b3B0LnNpbmdsZURhdGUpIHsgLy8gVmFsaWRhdGUgaWYgb25seSBzdGFydCBpcyB0aGVyZQotICAg
ICAgICAgICAgICAgIGlmIChvcHQuc3RhcnQgJiYgIW9wdC5lbmQpCi0gICAgICAgICAgICAgICAg
ICAgIGJveC5maW5kKCcuZHJwX3RvcC1iYXInKS5yZW1vdmVDbGFzcygnZXJyb3InKS5hZGRDbGFz
cygnbm9ybWFsJyk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBi
b3guZmluZCgnLmRycF90b3AtYmFyJykucmVtb3ZlQ2xhc3MoJ2Vycm9yJykucmVtb3ZlQ2xhc3Mo
J25vcm1hbCcpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoIG9wdC5tYXhE
YXlzICYmIGRheXMgPiBvcHQubWF4RGF5cykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBvcHQuc3RhcnQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBvcHQuZW5kID0gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgYm94LmZpbmQoJy5kYXknKS5yZW1vdmVDbGFzcygnY2hlY2tlZCcpOwot
ICAgICAgICAgICAgICAgIGJveC5maW5kKCcuZHJwX3RvcC1iYXInKS5yZW1vdmVDbGFzcygnbm9y
bWFsJykuYWRkQ2xhc3MoJ2Vycm9yJykuZmluZCgnLmVycm9yLXRvcCcpLmh0bWwoIGxhbmcoJ2xl
c3MtdGhhbicpLnJlcGxhY2UoJyVkJyxvcHQubWF4RGF5cykgKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGVsc2UgaWYgKCBvcHQubWluRGF5cyAmJiBkYXlzIDwgb3B0Lm1pbkRheXMpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3B0LnN0YXJ0ID0gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgb3B0LmVuZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGJveC5maW5kKCcuZGF5
JykucmVtb3ZlQ2xhc3MoJ2NoZWNrZWQnKTsKLSAgICAgICAgICAgICAgICBib3guZmluZCgnLmRy
cF90b3AtYmFyJykucmVtb3ZlQ2xhc3MoJ25vcm1hbCcpLmFkZENsYXNzKCdlcnJvcicpLmZpbmQo
Jy5lcnJvci10b3AnKS5odG1sKCBsYW5nKCdtb3JlLXRoYW4nKS5yZXBsYWNlKCclZCcsb3B0Lm1p
bkRheXMpICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgaWYgKG9wdC5zdGFydCB8fCBvcHQuZW5kKQotICAgICAgICAgICAg
ICAgICAgICBib3guZmluZCgnLmRycF90b3AtYmFyJykucmVtb3ZlQ2xhc3MoJ2Vycm9yJykuYWRk
Q2xhc3MoJ25vcm1hbCcpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgYm94LmZpbmQoJy5kcnBfdG9wLWJhcicpLnJlbW92ZUNsYXNzKCdlcnJvcicpLnJlbW92ZUNs
YXNzKCdub3JtYWwnKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCAob3B0LnNp
bmdsZURhdGUgJiYgb3B0LnN0YXJ0ICYmICFvcHQuZW5kKSB8fCAoIW9wdC5zaW5nbGVEYXRlICYm
IG9wdC5zdGFydCAmJiBvcHQuZW5kKSApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Ym94LmZpbmQoJy5hcHBseS1idG4nKS5yZW1vdmVDbGFzcygnZGlzYWJsZWQnKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBi
b3guZmluZCgnLmFwcGx5LWJ0bicpLmFkZENsYXNzKCdkaXNhYmxlZCcpOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBpZiAob3B0LmJhdGNoTW9kZSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBpZiAoIChvcHQuc3RhcnQgJiYgb3B0LnN0YXJ0RGF0ZSAmJiBjb21wYXJlX2Rh
eShvcHQuc3RhcnQsIG9wdC5zdGFydERhdGUpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgfHwg
KG9wdC5lbmQgJiYgb3B0LmVuZERhdGUgJiYgY29tcGFyZV9kYXkob3B0LmVuZCwgb3B0LmVuZERh
dGUpID4gMCkgICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG9wdC5z
dGFydCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBvcHQuZW5kID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgICAgIGJveC5maW5kKCcuZGF5JykucmVtb3ZlQ2xhc3MoJ2NoZWNrZWQnKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBm
dW5jdGlvbiBzaG93U2VsZWN0ZWRJbmZvKCkKLSAgICAgICAgewotICAgICAgICAgICAgYm94LmZp
bmQoJy5zdGFydC1kYXknKS5odG1sKCcuLi4nKTsKLSAgICAgICAgICAgIGJveC5maW5kKCcuZW5k
LWRheScpLmh0bWwoJy4uLicpOwotICAgICAgICAgICAgYm94LmZpbmQoJy5zZWxlY3RlZC1kYXlz
JykuaGlkZSgpOwotICAgICAgICAgICAgaWYgKG9wdC5zdGFydCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBib3guZmluZCgnLnN0YXJ0LWRheScpLmh0bWwoZ2V0RGF0ZVN0cmluZyhu
ZXcgRGF0ZShwYXJzZUludChvcHQuc3RhcnQpKSkpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKG9wdC5lbmQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYm94LmZpbmQo
Jy5lbmQtZGF5JykuaHRtbChnZXREYXRlU3RyaW5nKG5ldyBEYXRlKHBhcnNlSW50KG9wdC5lbmQp
KSkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAob3B0LnN0YXJ0ICYmIG9wdC5z
aW5nbGVEYXRlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJveC5maW5kKCcuYXBw
bHktYnRuJykucmVtb3ZlQ2xhc3MoJ2Rpc2FibGVkJyk7Ci0gICAgICAgICAgICAgICAgdmFyIGRh
dGVSYW5nZSA9IGdldERhdGVTdHJpbmcobmV3IERhdGUob3B0LnN0YXJ0KSk7Ci0gICAgICAgICAg
ICAgICAgb3B0LnNldFZhbHVlLmNhbGwoc2VsZkRvbSwgZGF0ZVJhbmdlLCBnZXREYXRlU3RyaW5n
KG5ldyBEYXRlKG9wdC5zdGFydCkpLCBnZXREYXRlU3RyaW5nKG5ldyBEYXRlKG9wdC5lbmQpKSk7
Ci0KLSAgICAgICAgICAgICAgICBpZiAoaW5pdGlhdGVkKQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgJChzZWxmKS50cmlnZ2VyKCdkYXRlcGlja2VyLWNoYW5nZScsCi0g
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6IGRh
dGVSYW5nZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdkYXRlMScgOiBuZXcgRGF0ZShvcHQu
c3RhcnQpCi0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG9wdC5zdGFydCAmJiBvcHQuZW5kKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGJveC5maW5kKCcuc2VsZWN0ZWQtZGF5cycpLnNo
b3coKS5maW5kKCcuc2VsZWN0ZWQtZGF5cy1udW0nKS5odG1sKE1hdGgucm91bmQoKG9wdC5lbmQt
b3B0LnN0YXJ0KS84NjQwMDAwMCkrMSk7Ci0gICAgICAgICAgICAgICAgYm94LmZpbmQoJy5hcHBs
eS1idG4nKS5yZW1vdmVDbGFzcygnZGlzYWJsZWQnKTsKLSAgICAgICAgICAgICAgICB2YXIgZGF0
ZVJhbmdlID0gZ2V0RGF0ZVN0cmluZyhuZXcgRGF0ZShvcHQuc3RhcnQpKSsgb3B0LnNlcGFyYXRv
ciArZ2V0RGF0ZVN0cmluZyhuZXcgRGF0ZShvcHQuZW5kKSk7Ci0gICAgICAgICAgICAgICAgb3B0
LnNldFZhbHVlLmNhbGwoc2VsZkRvbSxkYXRlUmFuZ2UsIGdldERhdGVTdHJpbmcobmV3IERhdGUo
b3B0LnN0YXJ0KSksIGdldERhdGVTdHJpbmcobmV3IERhdGUob3B0LmVuZCkpKTsKLSAgICAgICAg
ICAgICAgICBpZiAoaW5pdGlhdGVkKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgJChzZWxmKS50cmlnZ2VyKCdkYXRlcGlja2VyLWNoYW5nZScsCi0gICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6IGRhdGVSYW5nZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICdkYXRlMScgOiBuZXcgRGF0ZShvcHQuc3RhcnQpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgJ2RhdGUyJyA6IG5ldyBEYXRlKG9wdC5lbmQpCi0gICAgICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBib3guZmluZCgnLmFw
cGx5LWJ0bicpLmFkZENsYXNzKCdkaXNhYmxlZCcpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgZnVuY3Rpb24gc2V0RGF0ZVJhbmdlKGRhdGUxLGRhdGUyKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoZGF0ZTEuZ2V0VGltZSgpID4gZGF0ZTIuZ2V0VGltZSgpKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhciB0bXAgPSBkYXRlMjsKLSAgICAgICAgICAg
ICAgICBkYXRlMiA9IGRhdGUxOwotICAgICAgICAgICAgICAgIGRhdGUxID0gdG1wOwotICAgICAg
ICAgICAgICAgIHRtcCA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgdmFs
aWQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKG9wdC5zdGFydERhdGUgJiYgY29tcGFyZV9kYXko
ZGF0ZTEsb3B0LnN0YXJ0RGF0ZSkgPCAwKSB2YWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgaWYg
KG9wdC5lbmREYXRlICYmIGNvbXBhcmVfZGF5KGRhdGUyLG9wdC5lbmREYXRlKSA+IDApIHZhbGlk
ID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIXZhbGlkKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHNob3dNb250aChvcHQuc3RhcnREYXRlLCdtb250aDEnKTsKLSAgICAgICAgICAg
ICAgICBzaG93TW9udGgobmV4dE1vbnRoKG9wdC5zdGFydERhdGUpLCdtb250aDInKTsKLSAgICAg
ICAgICAgICAgICBzaG93R2FwKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBvcHQuc3RhcnQgPSBkYXRlMS5nZXRUaW1lKCk7Ci0gICAgICAg
ICAgICBvcHQuZW5kID0gZGF0ZTIuZ2V0VGltZSgpOwotICAgICAgICAgICAgaWYgKGNvbXBhcmVf
bW9udGgoZGF0ZTEsZGF0ZTIpID09IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ZGF0ZTIgPSBuZXh0TW9udGgoZGF0ZTEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KG9wdC50aW1lLmVuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICByZW5kZXJUaW1lKCJ0aW1lMSIs
IGRhdGUxKTsKLSAgICAgICAgICAgICAgICByZW5kZXJUaW1lKCJ0aW1lMiIsIGRhdGUyKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHNob3dNb250aChkYXRlMSwnbW9udGgxJyk7Ci0gICAg
ICAgICAgICBzaG93TW9udGgoZGF0ZTIsJ21vbnRoMicpOwotICAgICAgICAgICAgc2hvd0dhcCgp
OwotICAgICAgICAgICAgc2hvd1NlbGVjdGVkSW5mbygpOwotICAgICAgICAgICAgYXV0b2Nsb3Nl
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBzaG93U2VsZWN0ZWREYXlzKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKCFvcHQuc3RhcnQgJiYgIW9wdC5lbmQpIHJldHVybjsK
LSAgICAgICAgICAgIGJveC5maW5kKCcuZGF5JykuZWFjaChmdW5jdGlvbigpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgdmFyIHRpbWUgPSBwYXJzZUludCgkKHRoaXMpLmF0dHIoJ3Rp
bWUnKSksCi0gICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gb3B0LnN0YXJ0LAotICAgICAgICAg
ICAgICAgICAgICBlbmQgPSBvcHQuZW5kOwotICAgICAgICAgICAgICAgIGlmIChvcHQudGltZS5l
bmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRpbWUgPSBtb21lbnQodGltZSkuc3RhcnRP
ZignZGF5JykudmFsdWVPZigpOwotICAgICAgICAgICAgICAgICAgICBzdGFydCA9IG1vbWVudChz
dGFydCB8fCBtb21lbnQoKS52YWx1ZU9mKCkpLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTsKLSAg
ICAgICAgICAgICAgICAgICAgZW5kID0gbW9tZW50KGVuZCB8fCBtb21lbnQoKS52YWx1ZU9mKCkp
LnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgaWYgKAotICAgICAgICAgICAgICAgICAgICAob3B0LnN0YXJ0ICYmIG9wdC5lbmQgJiYg
ZW5kID49IHRpbWUgJiYgc3RhcnQgPD0gdGltZSApCi0gICAgICAgICAgICAgICAgICAgIHx8ICgg
b3B0LnN0YXJ0ICYmICFvcHQuZW5kICYmIG1vbWVudChzdGFydCkuZm9ybWF0KCdZWVlZLU1NLURE
JykgPT0gbW9tZW50KHRpbWUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpICkKLSAgICAgICAgICAgICAg
ICApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENs
YXNzKCdjaGVja2VkJyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xh
c3MoJ2NoZWNrZWQnKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNob3dNb250aChkYXRlLG1vbnRoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBkYXRlID0gbW9tZW50KGRhdGUpLnN0YXJ0T2YoJ2RheScpLnRvRGF0ZSgp
OwotICAgICAgICAgICAgdmFyIG1vbnRoTmFtZSA9IG5hbWVNb250aChkYXRlLmdldE1vbnRoKCkp
OwotICAgICAgICAgICAgYm94LmZpbmQoJy4nK21vbnRoKycgLm1vbnRoLW5hbWUnKS5odG1sKG1v
bnRoTmFtZSsnICcrZGF0ZS5nZXRGdWxsWWVhcigpKTsKLSAgICAgICAgICAgIGJveC5maW5kKCcu
Jyttb250aCsnIHRib2R5JykuaHRtbChjcmVhdGVNb250aEhUTUwoZGF0ZSkpOwotICAgICAgICAg
ICAgb3B0W21vbnRoXSA9IGRhdGU7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBzaG93
VGltZShkYXRlLG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJveC5maW5kKCcuJyArIG5h
bWUpLmFwcGVuZChnZXRUaW1lSFRNTCgpKTsKLSAgICAgICAgICAgIHJlbmRlclRpbWUobmFtZSwg
ZGF0ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBuYW1lTW9udGgobSkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGxhbmcoJ21vbnRoLW5hbWUnKVttXTsKLSAgICAgICAg
fQotCi0gICAgICAgIGZ1bmN0aW9uIGdldERhdGVTdHJpbmcoZCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIG1vbWVudChkKS5mb3JtYXQob3B0LmZvcm1hdCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBmdW5jdGlvbiBzaG93R2FwKCkKLSAgICAgICAgewotICAgICAgICAgICAgc2hvd1Nl
bGVjdGVkRGF5cygpOwotICAgICAgICAgICAgdmFyIG0xID0gcGFyc2VJbnQobW9tZW50KG9wdC5t
b250aDEpLmZvcm1hdCgnWVlZWU1NJykpOwotICAgICAgICAgICAgdmFyIG0yID0gcGFyc2VJbnQo
bW9tZW50KG9wdC5tb250aDIpLmZvcm1hdCgnWVlZWU1NJykpOwotICAgICAgICAgICAgdmFyIHAg
PSBNYXRoLmFicyhtMSAtIG0yKTsKLSAgICAgICAgICAgIHZhciBzaG91bGRTaG93ID0gKHAgPiAx
ICYmIHAgIT04OSk7Ci0gICAgICAgICAgICBpZiAoc2hvdWxkU2hvdykKLSAgICAgICAgICAgICAg
ICBib3guZmluZCgnLmdhcCcpLnNob3coKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBib3guZmluZCgnLmdhcCcpLmhpZGUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0
aW9uIGNsb3NlRGF0ZVBpY2tlcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChvcHQuYWx3
YXlzT3BlbikgcmV0dXJuOwotICAgICAgICAgICAgJChib3gpLnNsaWRlVXAoMjAwLGZ1bmN0aW9u
KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAkKHNlbGYpLmRhdGEoJ2RhdGUtcGlj
a2VyLW9wZW5lZCcsZmFsc2UpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAvLyQoZG9j
dW1lbnQpLnVuYmluZCgnLmRhdGVwaWNrZXInKTsKLSAgICAgICAgICAgICQoc2VsZikudHJpZ2dl
cignZGF0ZXBpY2tlci1jbG9zZScpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gY29t
cGFyZV9tb250aChtMSxtMikKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIHAgPSBwYXJzZUlu
dChtb21lbnQobTEpLmZvcm1hdCgnWVlZWU1NJykpIC0gcGFyc2VJbnQobW9tZW50KG0yKS5mb3Jt
YXQoJ1lZWVlNTScpKTsKLSAgICAgICAgICAgIGlmIChwID4gMCApIHJldHVybiAxOwotICAgICAg
ICAgICAgaWYgKHAgPT0gMCkgcmV0dXJuIDA7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAg
ICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjb21wYXJlX2RheShtMSxtMikKLSAgICAgICAgewot
ICAgICAgICAgICAgdmFyIHAgPSBwYXJzZUludChtb21lbnQobTEpLmZvcm1hdCgnWVlZWU1NREQn
KSkgLSBwYXJzZUludChtb21lbnQobTIpLmZvcm1hdCgnWVlZWU1NREQnKSk7Ci0gICAgICAgICAg
ICBpZiAocCA+IDAgKSByZXR1cm4gMTsKLSAgICAgICAgICAgIGlmIChwID09IDApIHJldHVybiAw
OwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24g
bmV4dE1vbnRoKG1vbnRoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtb250aCA9IG1vbWVudCht
b250aCkudG9EYXRlKCk7Ci0gICAgICAgICAgICB2YXIgdG9Nb250aCA9IG1vbnRoLmdldE1vbnRo
KCk7Ci0gICAgICAgICAgICB3aGlsZShtb250aC5nZXRNb250aCgpID09IHRvTW9udGgpIG1vbnRo
ID0gbmV3IERhdGUobW9udGguZ2V0VGltZSgpKzg2NDAwMDAwKTsKLSAgICAgICAgICAgIHJldHVy
biBtb250aDsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHByZXZNb250aChtb250aCkK
LSAgICAgICAgewotICAgICAgICAgICAgbW9udGggPSBtb21lbnQobW9udGgpLnRvRGF0ZSgpOwot
ICAgICAgICAgICAgdmFyIHRvTW9udGggPSBtb250aC5nZXRNb250aCgpOwotICAgICAgICAgICAg
d2hpbGUobW9udGguZ2V0TW9udGgoKSA9PSB0b01vbnRoKSBtb250aCA9IG5ldyBEYXRlKG1vbnRo
LmdldFRpbWUoKS04NjQwMDAwMCk7Ci0gICAgICAgICAgICByZXR1cm4gbW9udGg7Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBnZXRUaW1lSFRNTCgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHZhciB0aW1lSHRtbCA9ICc8ZGl2PicKLSAgICAgICAgICAgICAgICArJzxzcGFuPlRpbWU6
IDxzcGFuIGNsYXNzPSJob3VyLXZhbCI+MDA8L3NwYW4+OjxzcGFuIGNsYXNzPSJtaW51dGUtdmFs
Ij4wMDwvc3Bhbj48L3NwYW4+JwotICAgICAgICAgICAgICAgICsnPC9kaXY+JwotICAgICAgICAg
ICAgICAgICsnPGRpdiBjbGFzcz0iaG91ciI+JwotICAgICAgICAgICAgICAgICsnPGxhYmVsPkhv
dXI6IDxpbnB1dCB0eXBlPSJyYW5nZSIgY2xhc3M9ImhvdXItcmFuZ2UiIG5hbWU9ImhvdXIiIG1p
bj0iMCIgbWF4PSIyMyI+PC9sYWJlbD4nCi0gICAgICAgICAgICAgICAgKyc8L2Rpdj4nCi0gICAg
ICAgICAgICAgICAgKyc8ZGl2IGNsYXNzPSJtaW51dGUiPicKLSAgICAgICAgICAgICAgICArJzxs
YWJlbD5NaW51dGU6IDxpbnB1dCB0eXBlPSJyYW5nZSIgY2xhc3M9Im1pbnV0ZS1yYW5nZSIgbmFt
ZT0ibWludXRlIiBtaW49IjAiIG1heD0iNTkiPjwvbGFiZWw+JwotICAgICAgICAgICAgICAgICsn
PC9kaXY+JzsKLSAgICAgICAgICAgIHJldHVybiB0aW1lSHRtbDsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZ1bmN0aW9uIGNyZWF0ZURvbSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBodG1s
ID0gJzxkaXYgY2xhc3M9ImRhdGUtcGlja2VyLXdyYXBwZXInCi0gICAgICAgICAgICBpZiAoIG9w
dC5zaW5nbGVEYXRlICkgaHRtbCArPSAnIHNpbmdsZS1kYXRlJzsKLSAgICAgICAgICAgIGlmICgg
IW9wdC5zaG93U2hvcnRjdXRzICkgaHRtbCArPSAnIG5vLXNob3J0Y3V0cyAnOwotICAgICAgICAg
ICAgaHRtbCArPSAnIj4nCi0gICAgICAgICAgICAgICAgKyc8ZGl2IGNsYXNzPSJkcnBfdG9wLWJh
ciI+XAotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJub3JtYWwtdG9wIj5cCi0gICAg
ICAgICAgICAgICAgICAgICAgICA8c3Bhbj4nK2xhbmcoJ3NlbGVjdGVkJykrJyA8L3NwYW4+IDxi
IGNsYXNzPSJzdGFydC1kYXkiPi4uLjwvYj4nCi0gICAgICAgICAgICBpZiAoICEgb3B0LnNpbmds
ZURhdGUgKSB7Ci0gICAgICAgICAgICAgICAgaHRtbCArPSAnIDxzcGFuIGNsYXNzPSJzZXBhcmF0
b3ItZGF5Ij4nK29wdC5zZXBhcmF0b3IrJzwvc3Bhbj4gPGIgY2xhc3M9ImVuZC1kYXkiPi4uLjwv
Yj4gPGkgY2xhc3M9InNlbGVjdGVkLWRheXMiPig8c3BhbiBjbGFzcz0ic2VsZWN0ZWQtZGF5cy1u
dW0iPjM8L3NwYW4+ICcrbGFuZygnZGF5cycpKycpPC9pPicKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGh0bWwgKz0gJzwvZGl2PlwKLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZXJyb3ItdG9wIj5lcnJvcjwvZGl2PlwKLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZGVmYXVsdC10b3AiPmRlZmF1bHQ8L2Rpdj5cCi0gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0
eXBlPSJidXR0b24iIGNsYXNzPSJhcHBseS1idG4gZGlzYWJsZWQgJysgZ2V0SGlkZUNsYXNzKCkg
KyciIHZhbHVlPSInK2xhbmcoJ2FwcGx5JykrJyIgLz5cCi0gICAgICAgICAgICAgICAgPC9kaXY+
JwotICAgICAgICAgICAgICAgICsnPGRpdiBjbGFzcz0ibW9udGgtd3JhcHBlciI+JwotICAgICAg
ICAgICAgICAgICsnPHRhYmxlIGNsYXNzPSJtb250aDEiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9
IjAiIGNlbGxwYWRkaW5nPSIwIj48dGhlYWQ+PHRyIGNsYXNzPSJjYXB0aW9uIj48dGggc3R5bGU9
IndpZHRoOjI3cHg7Ij48c3BhbiBjbGFzcz0icHJldiI+Jmx0Ozwvc3Bhbj48L3RoPjx0aCBjb2xz
cGFuPSI1IiBjbGFzcz0ibW9udGgtbmFtZSI+SmFudWFyeSwgMjAxMTwvdGg+PHRoIHN0eWxlPSJ3
aWR0aDoyN3B4OyI+PHNwYW4gY2xhc3M9Im5leHQiPiZndDs8L3NwYW4+PC90aD48L3RyPjx0ciBj
bGFzcz0id2Vlay1uYW1lIj4nK2dldFdlZWtIZWFkKCkrJzwvdGhlYWQ+PHRib2R5PjwvdGJvZHk+
PC90YWJsZT4nCi0gICAgICAgICAgICBpZiAoICEgb3B0LnNpbmdsZURhdGUgKSB7Ci0gICAgICAg
ICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0iZ2FwIj4nK2dldEdhcEhUTUwoKSsnPC9kaXY+
JwotICAgICAgICAgICAgICAgICAgICArJzx0YWJsZSBjbGFzcz0ibW9udGgyIiBjZWxsc3BhY2lu
Zz0iMCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCI+PHRoZWFkPjx0ciBjbGFzcz0iY2FwdGlv
biI+PHRoIHN0eWxlPSJ3aWR0aDoyN3B4OyI+PHNwYW4gY2xhc3M9InByZXYiPiZsdDs8L3NwYW4+
PC90aD48dGggY29sc3Bhbj0iNSIgY2xhc3M9Im1vbnRoLW5hbWUiPkphbnVhcnksIDIwMTE8L3Ro
Pjx0aCBzdHlsZT0id2lkdGg6MjdweDsiPjxzcGFuIGNsYXNzPSJuZXh0Ij4mZ3Q7PC9zcGFuPjwv
dGg+PC90cj48dHIgY2xhc3M9IndlZWstbmFtZSI+JytnZXRXZWVrSGVhZCgpKyc8L3RoZWFkPjx0
Ym9keT48L3Rib2R5PjwvdGFibGU+JwotICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8v
Kyc8L2Rpdj4nCi0gICAgICAgICAgICBodG1sICs9ICAgICc8ZGl2IHN0eWxlPSJjbGVhcjpib3Ro
O2hlaWdodDowO2ZvbnQtc2l6ZTowOyI+PC9kaXY+JwotICAgICAgICAgICAgICAgICsnPGRpdiBj
bGFzcz0idGltZSI+JwotICAgICAgICAgICAgICAgICsnPGRpdiBjbGFzcz0idGltZTEiPjwvZGl2
PicKLSAgICAgICAgICAgIGlmICggISBvcHQuc2luZ2xlRGF0ZSApIHsKLSAgICAgICAgICAgICAg
ICBodG1sICs9ICc8ZGl2IGNsYXNzPSJ0aW1lMiI+PC9kaXY+JwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaHRtbCArPSAnPC9kaXY+JwotICAgICAgICAgICAgICAgICsnPGRpdiBzdHlsZT0i
Y2xlYXI6Ym90aDtoZWlnaHQ6MDtmb250LXNpemU6MDsiPjwvZGl2PicKLSAgICAgICAgICAgICAg
ICArJzwvZGl2Pic7Ci0KLSAgICAgICAgICAgIGlmIChvcHQuc2hvd1Nob3J0Y3V0cykKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJmb290ZXIiPjxi
PicrbGFuZygnc2hvcnRjdXRzJykrJzwvYj4nOwotCi0gICAgICAgICAgICAgICAgdmFyIGRhdGEg
PSBvcHQuc2hvcnRjdXRzOwotICAgICAgICAgICAgICAgIGlmIChkYXRhKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFbJ3ByZXYtZGF5cyddICYmIGRhdGFb
J3ByZXYtZGF5cyddLmxlbmd0aCA+IDApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGh0bWwgKz0gJyZuYnNwOzxzcGFuIGNsYXNzPSJwcmV2LWRheXMiPicr
bGFuZygncGFzdCcpOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yKHZhciBpPTA7aTxkYXRh
WydwcmV2LWRheXMnXS5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IGRhdGFbJ3ByZXYtZGF5cyddW2ld
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgKz0gKGRhdGFbJ3ByZXYtZGF5cydd
W2ldID4gMSkgPyBsYW5nKCdkYXlzJykgOiBsYW5nKCdkYXknKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBodG1sICs9ICcgPGEgaHJlZj0iamF2YXNjcmlwdDo7IiBzaG9ydGN1dD0iZGF5
LC0nK2RhdGFbJ3ByZXYtZGF5cyddW2ldKyciPicrbmFtZSsnPC9hPic7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBodG1sKz0nPC9zcGFuPic7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVsnbmV4
dC1kYXlzJ10gJiYgZGF0YVsnbmV4dC1kYXlzJ10ubGVuZ3RoID4gMCkKLSAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnJm5ic3A7PHNwYW4gY2xh
c3M9Im5leHQtZGF5cyI+JytsYW5nKCdmb2xsb3dpbmcnKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZvcih2YXIgaT0wO2k8ZGF0YVsnbmV4dC1kYXlzJ10ubGVuZ3RoOyBpKyspCi0gICAgICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUg
PSBkYXRhWyduZXh0LWRheXMnXVtpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1l
ICs9IChkYXRhWyduZXh0LWRheXMnXVtpXSA+IDEpID8gbGFuZygnZGF5cycpIDogbGFuZygnZGF5
Jyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnIDxhIGhyZWY9ImphdmFz
Y3JpcHQ6OyIgc2hvcnRjdXQ9ImRheSwnK2RhdGFbJ25leHQtZGF5cyddW2ldKyciPicrbmFtZSsn
PC9hPic7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBodG1sKz0gJzwvc3Bhbj4nOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGRhdGFbJ3ByZXYnXSAmJiBkYXRhWydwcmV2J10ubGVuZ3RoID4gMCkKLSAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnJm5i
c3A7PHNwYW4gY2xhc3M9InByZXYtYnV0dG9ucyI+JytsYW5nKCdwcmV2aW91cycpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yKHZhciBpPTA7aTxkYXRhWydwcmV2J10ubGVuZ3RoOyBpKysp
Ci0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIG5hbWUgPSBsYW5nKCdwcmV2LScrZGF0YVsncHJldiddW2ldKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBodG1sICs9ICcgPGEgaHJlZj0iamF2YXNjcmlwdDo7IiBzaG9ydGN1dD0i
cHJldiwnK2RhdGFbJ3ByZXYnXVtpXSsnIj4nK25hbWUrJzwvYT4nOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCs9Jzwvc3Bhbj4nOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFbJ25leHQn
XSAmJiBkYXRhWyduZXh0J10ubGVuZ3RoID4gMCkKLSAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnJm5ic3A7PHNwYW4gY2xhc3M9Im5leHQtYnV0
dG9ucyI+JytsYW5nKCduZXh0Jyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IodmFyIGk9
MDtpPGRhdGFbJ25leHQnXS5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IGxhbmcoJ25leHQtJytkYXRh
WyduZXh0J11baV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJyA8YSBo
cmVmPSJqYXZhc2NyaXB0OjsiIHNob3J0Y3V0PSJuZXh0LCcrZGF0YVsnbmV4dCddW2ldKyciPicr
bmFtZSsnPC9hPic7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBodG1sKz0nPC9zcGFuPic7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAob3B0LmN1c3RvbVNob3J0Y3V0cykKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8b3B0LmN1
c3RvbVNob3J0Y3V0cy5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIHNoID0gb3B0LmN1c3RvbVNob3J0Y3V0c1tpXTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGh0bWwrPSAnJm5ic3A7PHNwYW4gY2xhc3M9ImN1c3RvbS1zaG9y
dGN1dCI+PGEgaHJlZj0iamF2YXNjcmlwdDo7IiBzaG9ydGN1dD0iY3VzdG9tIj4nK3NoLm5hbWUr
JzwvYT48L3NwYW4+JzsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIGh0bWwgKz0nPC9kaXY+JzsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7Ci0KLQotICAgICAgICAgICAgcmV0dXJuICQoaHRtbCk7
Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBnZXRIaWRlQ2xhc3MoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAob3B0LmF1dG9DbG9zZSA9PT0gdHJ1ZSkgewotICAgICAgICAgICAg
ICAgIHJldHVybiAnaGlkZSc7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gJyc7
Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBnZXRXZWVrSGVhZCgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmIChvcHQuc3RhcnRPZldlZWsgPT0gJ21vbmRheScpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICc8dGg+JytsYW5nKCd3ZWVrLTEnKSsnPC90aD5c
Ci0gICAgICAgICAgICAgICAgICAgIDx0aD4nK2xhbmcoJ3dlZWstMicpKyc8L3RoPlwKLSAgICAg
ICAgICAgICAgICAgICAgPHRoPicrbGFuZygnd2Vlay0zJykrJzwvdGg+XAotICAgICAgICAgICAg
ICAgICAgICA8dGg+JytsYW5nKCd3ZWVrLTQnKSsnPC90aD5cCi0gICAgICAgICAgICAgICAgICAg
IDx0aD4nK2xhbmcoJ3dlZWstNScpKyc8L3RoPlwKLSAgICAgICAgICAgICAgICAgICAgPHRoPicr
bGFuZygnd2Vlay02JykrJzwvdGg+XAotICAgICAgICAgICAgICAgICAgICA8dGg+JytsYW5nKCd3
ZWVrLTcnKSsnPC90aD4nOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAnPHRoPicrbGFuZygnd2Vlay03JykrJzwv
dGg+XAotICAgICAgICAgICAgICAgICAgICA8dGg+JytsYW5nKCd3ZWVrLTEnKSsnPC90aD5cCi0g
ICAgICAgICAgICAgICAgICAgIDx0aD4nK2xhbmcoJ3dlZWstMicpKyc8L3RoPlwKLSAgICAgICAg
ICAgICAgICAgICAgPHRoPicrbGFuZygnd2Vlay0zJykrJzwvdGg+XAotICAgICAgICAgICAgICAg
ICAgICA8dGg+JytsYW5nKCd3ZWVrLTQnKSsnPC90aD5cCi0gICAgICAgICAgICAgICAgICAgIDx0
aD4nK2xhbmcoJ3dlZWstNScpKyc8L3RoPlwKLSAgICAgICAgICAgICAgICAgICAgPHRoPicrbGFu
Zygnd2Vlay02JykrJzwvdGg+JzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IGZ1bmN0aW9uIGdldEdhcEhUTUwoKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgaHRtbCA9
IFsnPGRpdiBjbGFzcz0iZ2FwLXRvcC1tYXNrIj48L2Rpdj48ZGl2IGNsYXNzPSJnYXAtYm90dG9t
LW1hc2siPjwvZGl2PjxkaXYgY2xhc3M9ImdhcC1saW5lcyI+J107Ci0gICAgICAgICAgICBmb3Io
dmFyIGk9MDtpPDIwO2krKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBodG1sLnB1
c2goJzxkaXYgY2xhc3M9ImdhcC1saW5lIj5cCi0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImdhcC0xIj48L2Rpdj5cCi0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdhcC0y
Ij48L2Rpdj5cCi0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdhcC0zIj48L2Rpdj5c
Ci0gICAgICAgICAgICAgICAgPC9kaXY+Jyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBo
dG1sLnB1c2goJzwvZGl2PicpOwotICAgICAgICAgICAgcmV0dXJuIGh0bWwuam9pbignJyk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjcmVhdGVNb250aEhUTUwoZCkKLSAgICAgICAg
ewotICAgICAgICAgICAgdmFyIGRheXMgPSBbXTsKLSAgICAgICAgICAgIGQuc2V0RGF0ZSgxKTsK
LSAgICAgICAgICAgIHZhciBsYXN0TW9udGggPSBuZXcgRGF0ZShkLmdldFRpbWUoKSAtIDg2NDAw
MDAwKTsKLSAgICAgICAgICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpOwotCi0gICAgICAgICAgICB2
YXIgZGF5T2ZXZWVrID0gZC5nZXREYXkoKTsKLSAgICAgICAgICAgIGlmKChkYXlPZldlZWsgPT0g
MCkgJiYgKG9wdC5zdGFydE9mV2VlayA9PSAnbW9uZGF5JykpIHsKLSAgICAgICAgICAgICAgICAv
LyBhZGQgb25lIHdlZWsKLSAgICAgICAgICAgICAgICBkYXlPZldlZWsgPSA3OwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBpZiAoZGF5T2ZXZWVrID4gMCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBmb3IgKHZhciBpID0gZGF5T2ZXZWVrOyBpID4gMDsgaS0tKQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGRheSA9IG5ldyBEYXRlKGQuZ2V0
VGltZSgpIC0gODY0MDAwMDAqaSk7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB2YWxpZCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChvcHQuc3RhcnREYXRlICYmIGNvbXBhcmVfZGF5
KGRheSxvcHQuc3RhcnREYXRlKSA8IDApIHZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChvcHQuZW5kRGF0ZSAmJiBjb21wYXJlX2RheShkYXksb3B0LmVuZERhdGUpID4gMCkg
dmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgZGF5cy5wdXNoKHt0eXBlOidsYXN0
TW9udGgnLGRheTogZGF5LmdldERhdGUoKSx0aW1lOmRheS5nZXRUaW1lKCksIHZhbGlkOnZhbGlk
IH0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciB0
b01vbnRoID0gZC5nZXRNb250aCgpOwotICAgICAgICAgICAgZm9yKHZhciBpPTA7IGk8NDA7IGkr
KykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgdG9kYXkgPSBtb21lbnQoZCku
YWRkKCdkYXlzJywgaSkudG9EYXRlKCk7Ci0gICAgICAgICAgICAgICAgdmFyIHZhbGlkID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICBpZiAob3B0LnN0YXJ0RGF0ZSAmJiBjb21wYXJlX2RheSh0b2Rh
eSxvcHQuc3RhcnREYXRlKSA8IDApIHZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYg
KG9wdC5lbmREYXRlICYmIGNvbXBhcmVfZGF5KHRvZGF5LG9wdC5lbmREYXRlKSA+IDApIHZhbGlk
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgZGF5cy5wdXNoKHt0eXBlOiB0b2RheS5nZXRNb250
aCgpID09IHRvTW9udGggPyAndG9Nb250aCcgOiAnbmV4dE1vbnRoJyxkYXk6IHRvZGF5LmdldERh
dGUoKSx0aW1lOnRvZGF5LmdldFRpbWUoKSwgdmFsaWQ6dmFsaWQgfSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICB2YXIgaHRtbCA9IFtdOwotICAgICAgICAgICAgZm9yKHZhciB3ZWVrPTA7
IHdlZWs8Njsgd2VlaysrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChkYXlz
W3dlZWsqN10udHlwZSA9PSAnbmV4dE1vbnRoJykgYnJlYWs7Ci0gICAgICAgICAgICAgICAgaHRt
bC5wdXNoKCc8dHI+Jyk7Ci0gICAgICAgICAgICAgICAgZm9yKHZhciBkYXkgPSAwOyBkYXk8Nzsg
ZGF5KyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB2YXIgX2RheSA9
IChvcHQuc3RhcnRPZldlZWsgPT0gJ21vbmRheScpID8gZGF5KzEgOiBkYXk7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciB0b2RheSA9IGRheXNbd2Vlayo3K19kYXldOwotICAgICAgICAgICAgICAg
ICAgICB2YXIgaGlnaGxpZ2h0VG9kYXkgPSBtb21lbnQodG9kYXkudGltZSkuZm9ybWF0KCdMJykg
PT0gbW9tZW50KG5vdykuZm9ybWF0KCdMJyk7Ci0gICAgICAgICAgICAgICAgICAgIHRvZGF5LmV4
dHJhQ2xhc3MgPSAnJzsKLSAgICAgICAgICAgICAgICAgICAgdG9kYXkudG9vbHRpcCA9ICcnOwot
ICAgICAgICAgICAgICAgICAgICBpZihvcHQuYmVmb3JlU2hvd0RheSAmJiB0eXBlb2Ygb3B0LmJl
Zm9yZVNob3dEYXkgPT0gJ2Z1bmN0aW9uJykKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIF9yID0gb3B0LmJlZm9yZVNob3dEYXkobW9tZW50KHRvZGF5
LnRpbWUpLnRvRGF0ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LnZhbGlkID0g
X3JbMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b2RheS5leHRyYUNsYXNzID0gX3JbMV0g
fHwgJyc7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b2RheS50b29sdGlwID0gX3JbMl0gfHwg
Jyc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9kYXkudG9vbHRpcCAhPSAnJykgdG9k
YXkuZXh0cmFDbGFzcyArPSAnIGhhcy10b29sdGlwICc7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgaHRtbC5wdXNoKCc8dGQ+PGRpdiB0aW1lPSInK3RvZGF5LnRp
bWUrJyIgdGl0bGU9IicrdG9kYXkudG9vbHRpcCsnIiBjbGFzcz0iZGF5ICcrdG9kYXkudHlwZSsn
ICcrdG9kYXkuZXh0cmFDbGFzcysnICcrKHRvZGF5LnZhbGlkID8gJ3ZhbGlkJyA6ICdpbnZhbGlk
JykrJyAnKyhoaWdobGlnaHRUb2RheT8ncmVhbC10b2RheSc6JycpKyciPicrdG9kYXkuZGF5Kyc8
L2Rpdj48L3RkPicpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBodG1sLnB1
c2goJzwvdHI+Jyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gaHRtbC5qb2lu
KCcnKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGdldExhbmd1YWdlcygpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChvcHQubGFuZ3VhZ2UgPT0gJ2F1dG8nKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9IG5hdmlnYXRvci5sYW5ndWFnZSA/
IG5hdmlnYXRvci5sYW5ndWFnZSA6IG5hdmlnYXRvci5icm93c2VyTGFuZ3VhZ2U7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFsYW5ndWFnZSkgcmV0dXJuICQuZGF0ZVJhbmdlUGlja2VyTGFuZ3VhZ2Vz
WydlbiddOwotICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9IGxhbmd1YWdlLnRvTG93ZXJD
YXNlKCk7Ci0gICAgICAgICAgICAgICAgZm9yKHZhciBrZXkgaW4gJC5kYXRlUmFuZ2VQaWNrZXJM
YW5ndWFnZXMpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAobGFu
Z3VhZ2UuaW5kZXhPZihrZXkpICE9IC0xKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gJC5kYXRlUmFuZ2VQaWNrZXJMYW5ndWFnZXNba2V5XTsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICByZXR1cm4gJC5kYXRlUmFuZ2VQaWNrZXJMYW5ndWFnZXNbJ2VuJ107Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBlbHNlIGlmICggb3B0Lmxhbmd1YWdlICYmIG9wdC5sYW5ndWFnZSBpbiAk
LmRhdGVSYW5nZVBpY2tlckxhbmd1YWdlcykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gJC5kYXRlUmFuZ2VQaWNrZXJMYW5ndWFnZXNbb3B0Lmxhbmd1YWdlXTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gJC5kYXRlUmFuZ2VQaWNrZXJMYW5ndWFnZXNbJ2VuJ107Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBsYW5nKHQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiAodCBpbiBsYW5ncyk/IGxhbmdzW3RdIDogdDsKLSAgICAgICAgfQotCi0K
LSAgICB9OwotfSkoalF1ZXJ5KTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwv
anF1ZXJ5LmRhdGVyYW5nZXBpY2tlci5qcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5
bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
RGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi10ZXh0L3BsYWluClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwvbW9tZW50Lm1pbi5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL0V4dGVybmFsL21vbWVudC5taW4uanMJKHJldmlzaW9uIDI2
OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwvbW9tZW50Lm1pbi5qcwkobm9uZXhpc3RlbnQpCkBAIC0x
LDYgKzAsMCBAQAotLy8hIG1vbWVudC5qcwotLy8hIHZlcnNpb24gOiAyLjYuMAotLy8hIGF1dGhv
cnMgOiBUaW0gV29vZCwgSXNrcmVuIENoZXJuZXYsIE1vbWVudC5qcyBjb250cmlidXRvcnMKLS8v
ISBsaWNlbnNlIDogTUlUCi0vLyEgbW9tZW50anMuY29tCi0oZnVuY3Rpb24oYSl7ZnVuY3Rpb24g
Yigpe3JldHVybntlbXB0eTohMSx1bnVzZWRUb2tlbnM6W10sdW51c2VkSW5wdXQ6W10sb3ZlcmZs
b3c6LTIsY2hhcnNMZWZ0T3ZlcjowLG51bGxJbnB1dDohMSxpbnZhbGlkTW9udGg6bnVsbCxpbnZh
bGlkRm9ybWF0OiExLHVzZXJJbnZhbGlkYXRlZDohMSxpc286ITF9fWZ1bmN0aW9uIGMoYSxiKXtm
dW5jdGlvbiBjKCl7aWIuc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzPT09ITEmJiJ1bmRlZmlu
ZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oIkRlcHJlY2F0
aW9uIHdhcm5pbmc6ICIrYSl9dmFyIGQ9ITA7cmV0dXJuIGkoZnVuY3Rpb24oKXtyZXR1cm4gZCYm
KGMoKSxkPSExKSxiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sYil9ZnVuY3Rpb24gZChhLGIpe3Jl
dHVybiBmdW5jdGlvbihjKXtyZXR1cm4gbChhLmNhbGwodGhpcyxjKSxiKX19ZnVuY3Rpb24gZShh
LGIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5sYW5nKCkub3JkaW5hbChhLmNhbGwo
dGhpcyxjKSxiKX19ZnVuY3Rpb24gZigpe31mdW5jdGlvbiBnKGEpe3koYSksaSh0aGlzLGEpfWZ1
bmN0aW9uIGgoYSl7dmFyIGI9cihhKSxjPWIueWVhcnx8MCxkPWIucXVhcnRlcnx8MCxlPWIubW9u
dGh8fDAsZj1iLndlZWt8fDAsZz1iLmRheXx8MCxoPWIuaG91cnx8MCxpPWIubWludXRlfHwwLGo9
Yi5zZWNvbmR8fDAsaz1iLm1pbGxpc2Vjb25kfHwwO3RoaXMuX21pbGxpc2Vjb25kcz0raysxZTMq
ais2ZTQqaSszNmU1KmgsdGhpcy5fZGF5cz0rZys3KmYsdGhpcy5fbW9udGhzPStlKzMqZCsxMipj
LHRoaXMuX2RhdGE9e30sdGhpcy5fYnViYmxlKCl9ZnVuY3Rpb24gaShhLGIpe2Zvcih2YXIgYyBp
biBiKWIuaGFzT3duUHJvcGVydHkoYykmJihhW2NdPWJbY10pO3JldHVybiBiLmhhc093blByb3Bl
cnR5KCJ0b1N0cmluZyIpJiYoYS50b1N0cmluZz1iLnRvU3RyaW5nKSxiLmhhc093blByb3BlcnR5
KCJ2YWx1ZU9mIikmJihhLnZhbHVlT2Y9Yi52YWx1ZU9mKSxhfWZ1bmN0aW9uIGooYSl7dmFyIGIs
Yz17fTtmb3IoYiBpbiBhKWEuaGFzT3duUHJvcGVydHkoYikmJndiLmhhc093blByb3BlcnR5KGIp
JiYoY1tiXT1hW2JdKTtyZXR1cm4gY31mdW5jdGlvbiBrKGEpe3JldHVybiAwPmE/TWF0aC5jZWls
KGEpOk1hdGguZmxvb3IoYSl9ZnVuY3Rpb24gbChhLGIsYyl7Zm9yKHZhciBkPSIiK01hdGguYWJz
KGEpLGU9YT49MDtkLmxlbmd0aDxiOylkPSIwIitkO3JldHVybihlP2M/IisiOiIiOiItIikrZH1m
dW5jdGlvbiBtKGEsYixjLGQpe3ZhciBlPWIuX21pbGxpc2Vjb25kcyxmPWIuX2RheXMsZz1iLl9t
b250aHM7ZD1udWxsPT1kPyEwOmQsZSYmYS5fZC5zZXRUaW1lKCthLl9kK2UqYyksZiYmZGIoYSwi
RGF0ZSIsY2IoYSwiRGF0ZSIpK2YqYyksZyYmYmIoYSxjYihhLCJNb250aCIpK2cqYyksZCYmaWIu
dXBkYXRlT2Zmc2V0KGEsZnx8Zyl9ZnVuY3Rpb24gbihhKXtyZXR1cm4iW29iamVjdCBBcnJheV0i
PT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpfWZ1bmN0aW9uIG8oYSl7cmV0dXJu
IltvYmplY3QgRGF0ZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpfHxhIGlu
c3RhbmNlb2YgRGF0ZX1mdW5jdGlvbiBwKGEsYixjKXt2YXIgZCxlPU1hdGgubWluKGEubGVuZ3Ro
LGIubGVuZ3RoKSxmPU1hdGguYWJzKGEubGVuZ3RoLWIubGVuZ3RoKSxnPTA7Zm9yKGQ9MDtlPmQ7
ZCsrKShjJiZhW2RdIT09YltkXXx8IWMmJnQoYVtkXSkhPT10KGJbZF0pKSYmZysrO3JldHVybiBn
K2Z9ZnVuY3Rpb24gcShhKXtpZihhKXt2YXIgYj1hLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKC4p
cyQvLCIkMSIpO2E9WmJbYV18fCRiW2JdfHxifXJldHVybiBhfWZ1bmN0aW9uIHIoYSl7dmFyIGIs
YyxkPXt9O2ZvcihjIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShjKSYmKGI9cShjKSxiJiYoZFtiXT1h
W2NdKSk7cmV0dXJuIGR9ZnVuY3Rpb24gcyhiKXt2YXIgYyxkO2lmKDA9PT1iLmluZGV4T2YoIndl
ZWsiKSljPTcsZD0iZGF5IjtlbHNle2lmKDAhPT1iLmluZGV4T2YoIm1vbnRoIikpcmV0dXJuO2M9
MTIsZD0ibW9udGgifWliW2JdPWZ1bmN0aW9uKGUsZil7dmFyIGcsaCxpPWliLmZuLl9sYW5nW2Jd
LGo9W107aWYoIm51bWJlciI9PXR5cGVvZiBlJiYoZj1lLGU9YSksaD1mdW5jdGlvbihhKXt2YXIg
Yj1pYigpLnV0YygpLnNldChkLGEpO3JldHVybiBpLmNhbGwoaWIuZm4uX2xhbmcsYixlfHwiIil9
LG51bGwhPWYpcmV0dXJuIGgoZik7Zm9yKGc9MDtjPmc7ZysrKWoucHVzaChoKGcpKTtyZXR1cm4g
an19ZnVuY3Rpb24gdChhKXt2YXIgYj0rYSxjPTA7cmV0dXJuIDAhPT1iJiZpc0Zpbml0ZShiKSYm
KGM9Yj49MD9NYXRoLmZsb29yKGIpOk1hdGguY2VpbChiKSksY31mdW5jdGlvbiB1KGEsYil7cmV0
dXJuIG5ldyBEYXRlKERhdGUuVVRDKGEsYisxLDApKS5nZXRVVENEYXRlKCl9ZnVuY3Rpb24gdihh
LGIsYyl7cmV0dXJuICQoaWIoW2EsMTEsMzErYi1jXSksYixjKS53ZWVrfWZ1bmN0aW9uIHcoYSl7
cmV0dXJuIHgoYSk/MzY2OjM2NX1mdW5jdGlvbiB4KGEpe3JldHVybiBhJTQ9PT0wJiZhJTEwMCE9
PTB8fGElNDAwPT09MH1mdW5jdGlvbiB5KGEpe3ZhciBiO2EuX2EmJi0yPT09YS5fcGYub3ZlcmZs
b3cmJihiPWEuX2FbcGJdPDB8fGEuX2FbcGJdPjExP3BiOmEuX2FbcWJdPDF8fGEuX2FbcWJdPnUo
YS5fYVtvYl0sYS5fYVtwYl0pP3FiOmEuX2FbcmJdPDB8fGEuX2FbcmJdPjIzP3JiOmEuX2Fbc2Jd
PDB8fGEuX2Fbc2JdPjU5P3NiOmEuX2FbdGJdPDB8fGEuX2FbdGJdPjU5P3RiOmEuX2FbdWJdPDB8
fGEuX2FbdWJdPjk5OT91YjotMSxhLl9wZi5fb3ZlcmZsb3dEYXlPZlllYXImJihvYj5ifHxiPnFi
KSYmKGI9cWIpLGEuX3BmLm92ZXJmbG93PWIpfWZ1bmN0aW9uIHooYSl7cmV0dXJuIG51bGw9PWEu
X2lzVmFsaWQmJihhLl9pc1ZhbGlkPSFpc05hTihhLl9kLmdldFRpbWUoKSkmJmEuX3BmLm92ZXJm
bG93PDAmJiFhLl9wZi5lbXB0eSYmIWEuX3BmLmludmFsaWRNb250aCYmIWEuX3BmLm51bGxJbnB1
dCYmIWEuX3BmLmludmFsaWRGb3JtYXQmJiFhLl9wZi51c2VySW52YWxpZGF0ZWQsYS5fc3RyaWN0
JiYoYS5faXNWYWxpZD1hLl9pc1ZhbGlkJiYwPT09YS5fcGYuY2hhcnNMZWZ0T3ZlciYmMD09PWEu
X3BmLnVudXNlZFRva2Vucy5sZW5ndGgpKSxhLl9pc1ZhbGlkfWZ1bmN0aW9uIEEoYSl7cmV0dXJu
IGE/YS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoIl8iLCItIik6YX1mdW5jdGlvbiBCKGEsYil7cmV0
dXJuIGIuX2lzVVRDP2liKGEpLnpvbmUoYi5fb2Zmc2V0fHwwKTppYihhKS5sb2NhbCgpfWZ1bmN0
aW9uIEMoYSxiKXtyZXR1cm4gYi5hYmJyPWEsdmJbYV18fCh2YlthXT1uZXcgZiksdmJbYV0uc2V0
KGIpLHZiW2FdfWZ1bmN0aW9uIEQoYSl7ZGVsZXRlIHZiW2FdfWZ1bmN0aW9uIEUoYSl7dmFyIGIs
YyxkLGUsZj0wLGc9ZnVuY3Rpb24oYSl7aWYoIXZiW2FdJiZ4Yil0cnl7cmVxdWlyZSgiLi9sYW5n
LyIrYSl9Y2F0Y2goYil7fXJldHVybiB2YlthXX07aWYoIWEpcmV0dXJuIGliLmZuLl9sYW5nO2lm
KCFuKGEpKXtpZihjPWcoYSkpcmV0dXJuIGM7YT1bYV19Zm9yKDtmPGEubGVuZ3RoOyl7Zm9yKGU9
QShhW2ZdKS5zcGxpdCgiLSIpLGI9ZS5sZW5ndGgsZD1BKGFbZisxXSksZD1kP2Quc3BsaXQoIi0i
KTpudWxsO2I+MDspe2lmKGM9ZyhlLnNsaWNlKDAsYikuam9pbigiLSIpKSlyZXR1cm4gYztpZihk
JiZkLmxlbmd0aD49YiYmcChlLGQsITApPj1iLTEpYnJlYWs7Yi0tfWYrK31yZXR1cm4gaWIuZm4u
X2xhbmd9ZnVuY3Rpb24gRihhKXtyZXR1cm4gYS5tYXRjaCgvXFtbXHNcU10vKT9hLnJlcGxhY2Uo
L15cW3xcXSQvZywiIik6YS5yZXBsYWNlKC9cXC9nLCIiKX1mdW5jdGlvbiBHKGEpe3ZhciBiLGMs
ZD1hLm1hdGNoKEJiKTtmb3IoYj0wLGM9ZC5sZW5ndGg7Yz5iO2IrKylkW2JdPWNjW2RbYl1dP2Nj
W2RbYl1dOkYoZFtiXSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBmPSIiO2ZvcihiPTA7Yz5iO2Ir
KylmKz1kW2JdaW5zdGFuY2VvZiBGdW5jdGlvbj9kW2JdLmNhbGwoZSxhKTpkW2JdO3JldHVybiBm
fX1mdW5jdGlvbiBIKGEsYil7cmV0dXJuIGEuaXNWYWxpZCgpPyhiPUkoYixhLmxhbmcoKSksX2Jb
Yl18fChfYltiXT1HKGIpKSxfYltiXShhKSk6YS5sYW5nKCkuaW52YWxpZERhdGUoKX1mdW5jdGlv
biBJKGEsYil7ZnVuY3Rpb24gYyhhKXtyZXR1cm4gYi5sb25nRGF0ZUZvcm1hdChhKXx8YX12YXIg
ZD01O2ZvcihDYi5sYXN0SW5kZXg9MDtkPj0wJiZDYi50ZXN0KGEpOylhPWEucmVwbGFjZShDYixj
KSxDYi5sYXN0SW5kZXg9MCxkLT0xO3JldHVybiBhfWZ1bmN0aW9uIEooYSxiKXt2YXIgYyxkPWIu
X3N0cmljdDtzd2l0Y2goYSl7Y2FzZSJRIjpyZXR1cm4gTmI7Y2FzZSJEREREIjpyZXR1cm4gUGI7
Y2FzZSJZWVlZIjpjYXNlIkdHR0ciOmNhc2UiZ2dnZyI6cmV0dXJuIGQ/UWI6RmI7Y2FzZSJZIjpj
YXNlIkciOmNhc2UiZyI6cmV0dXJuIFNiO2Nhc2UiWVlZWVlZIjpjYXNlIllZWVlZIjpjYXNlIkdH
R0dHIjpjYXNlImdnZ2dnIjpyZXR1cm4gZD9SYjpHYjtjYXNlIlMiOmlmKGQpcmV0dXJuIE5iO2Nh
c2UiU1MiOmlmKGQpcmV0dXJuIE9iO2Nhc2UiU1NTIjppZihkKXJldHVybiBQYjtjYXNlIkRERCI6
cmV0dXJuIEViO2Nhc2UiTU1NIjpjYXNlIk1NTU0iOmNhc2UiZGQiOmNhc2UiZGRkIjpjYXNlImRk
ZGQiOnJldHVybiBJYjtjYXNlImEiOmNhc2UiQSI6cmV0dXJuIEUoYi5fbCkuX21lcmlkaWVtUGFy
c2U7Y2FzZSJYIjpyZXR1cm4gTGI7Y2FzZSJaIjpjYXNlIlpaIjpyZXR1cm4gSmI7Y2FzZSJUIjpy
ZXR1cm4gS2I7Y2FzZSJTU1NTIjpyZXR1cm4gSGI7Y2FzZSJNTSI6Y2FzZSJERCI6Y2FzZSJZWSI6
Y2FzZSJHRyI6Y2FzZSJnZyI6Y2FzZSJISCI6Y2FzZSJoaCI6Y2FzZSJtbSI6Y2FzZSJzcyI6Y2Fz
ZSJ3dyI6Y2FzZSJXVyI6cmV0dXJuIGQ/T2I6RGI7Y2FzZSJNIjpjYXNlIkQiOmNhc2UiZCI6Y2Fz
ZSJIIjpjYXNlImgiOmNhc2UibSI6Y2FzZSJzIjpjYXNlInciOmNhc2UiVyI6Y2FzZSJlIjpjYXNl
IkUiOnJldHVybiBEYjtjYXNlIkRvIjpyZXR1cm4gTWI7ZGVmYXVsdDpyZXR1cm4gYz1uZXcgUmVn
RXhwKFIoUShhLnJlcGxhY2UoIlxcIiwiIikpLCJpIikpfX1mdW5jdGlvbiBLKGEpe2E9YXx8IiI7
dmFyIGI9YS5tYXRjaChKYil8fFtdLGM9YltiLmxlbmd0aC0xXXx8W10sZD0oYysiIikubWF0Y2go
WGIpfHxbIi0iLDAsMF0sZT0rKDYwKmRbMV0pK3QoZFsyXSk7cmV0dXJuIisiPT09ZFswXT8tZTpl
fWZ1bmN0aW9uIEwoYSxiLGMpe3ZhciBkLGU9Yy5fYTtzd2l0Y2goYSl7Y2FzZSJRIjpudWxsIT1i
JiYoZVtwYl09MyoodChiKS0xKSk7YnJlYWs7Y2FzZSJNIjpjYXNlIk1NIjpudWxsIT1iJiYoZVtw
Yl09dChiKS0xKTticmVhaztjYXNlIk1NTSI6Y2FzZSJNTU1NIjpkPUUoYy5fbCkubW9udGhzUGFy
c2UoYiksbnVsbCE9ZD9lW3BiXT1kOmMuX3BmLmludmFsaWRNb250aD1iO2JyZWFrO2Nhc2UiRCI6
Y2FzZSJERCI6bnVsbCE9YiYmKGVbcWJdPXQoYikpO2JyZWFrO2Nhc2UiRG8iOm51bGwhPWImJihl
W3FiXT10KHBhcnNlSW50KGIsMTApKSk7YnJlYWs7Y2FzZSJEREQiOmNhc2UiRERERCI6bnVsbCE9
YiYmKGMuX2RheU9mWWVhcj10KGIpKTticmVhaztjYXNlIllZIjplW29iXT1pYi5wYXJzZVR3b0Rp
Z2l0WWVhcihiKTticmVhaztjYXNlIllZWVkiOmNhc2UiWVlZWVkiOmNhc2UiWVlZWVlZIjplW29i
XT10KGIpO2JyZWFrO2Nhc2UiYSI6Y2FzZSJBIjpjLl9pc1BtPUUoYy5fbCkuaXNQTShiKTticmVh
aztjYXNlIkgiOmNhc2UiSEgiOmNhc2UiaCI6Y2FzZSJoaCI6ZVtyYl09dChiKTticmVhaztjYXNl
Im0iOmNhc2UibW0iOmVbc2JdPXQoYik7YnJlYWs7Y2FzZSJzIjpjYXNlInNzIjplW3RiXT10KGIp
O2JyZWFrO2Nhc2UiUyI6Y2FzZSJTUyI6Y2FzZSJTU1MiOmNhc2UiU1NTUyI6ZVt1Yl09dCgxZTMq
KCIwLiIrYikpO2JyZWFrO2Nhc2UiWCI6Yy5fZD1uZXcgRGF0ZSgxZTMqcGFyc2VGbG9hdChiKSk7
YnJlYWs7Y2FzZSJaIjpjYXNlIlpaIjpjLl91c2VVVEM9ITAsYy5fdHptPUsoYik7YnJlYWs7Y2Fz
ZSJ3IjpjYXNlInd3IjpjYXNlIlciOmNhc2UiV1ciOmNhc2UiZCI6Y2FzZSJkZCI6Y2FzZSJkZGQi
OmNhc2UiZGRkZCI6Y2FzZSJlIjpjYXNlIkUiOmE9YS5zdWJzdHIoMCwxKTtjYXNlImdnIjpjYXNl
ImdnZ2ciOmNhc2UiR0ciOmNhc2UiR0dHRyI6Y2FzZSJHR0dHRyI6YT1hLnN1YnN0cigwLDIpLGIm
JihjLl93PWMuX3d8fHt9LGMuX3dbYV09Yil9fWZ1bmN0aW9uIE0oYSl7dmFyIGIsYyxkLGUsZixn
LGgsaSxqLGssbD1bXTtpZighYS5fZCl7Zm9yKGQ9TyhhKSxhLl93JiZudWxsPT1hLl9hW3FiXSYm
bnVsbD09YS5fYVtwYl0mJihmPWZ1bmN0aW9uKGIpe3ZhciBjPXBhcnNlSW50KGIsMTApO3JldHVy
biBiP2IubGVuZ3RoPDM/Yz42OD8xOTAwK2M6MmUzK2M6YzpudWxsPT1hLl9hW29iXT9pYigpLndl
ZWtZZWFyKCk6YS5fYVtvYl19LGc9YS5fdyxudWxsIT1nLkdHfHxudWxsIT1nLld8fG51bGwhPWcu
RT9oPV8oZihnLkdHKSxnLld8fDEsZy5FLDQsMSk6KGk9RShhLl9sKSxqPW51bGwhPWcuZD9YKGcu
ZCxpKTpudWxsIT1nLmU/cGFyc2VJbnQoZy5lLDEwKStpLl93ZWVrLmRvdzowLGs9cGFyc2VJbnQo
Zy53LDEwKXx8MSxudWxsIT1nLmQmJmo8aS5fd2Vlay5kb3cmJmsrKyxoPV8oZihnLmdnKSxrLGos
aS5fd2Vlay5kb3ksaS5fd2Vlay5kb3cpKSxhLl9hW29iXT1oLnllYXIsYS5fZGF5T2ZZZWFyPWgu
ZGF5T2ZZZWFyKSxhLl9kYXlPZlllYXImJihlPW51bGw9PWEuX2Fbb2JdP2Rbb2JdOmEuX2Fbb2Jd
LGEuX2RheU9mWWVhcj53KGUpJiYoYS5fcGYuX292ZXJmbG93RGF5T2ZZZWFyPSEwKSxjPVcoZSww
LGEuX2RheU9mWWVhciksYS5fYVtwYl09Yy5nZXRVVENNb250aCgpLGEuX2FbcWJdPWMuZ2V0VVRD
RGF0ZSgpKSxiPTA7Mz5iJiZudWxsPT1hLl9hW2JdOysrYilhLl9hW2JdPWxbYl09ZFtiXTtmb3Io
Ozc+YjtiKyspYS5fYVtiXT1sW2JdPW51bGw9PWEuX2FbYl0/Mj09PWI/MTowOmEuX2FbYl07bFty
Yl0rPXQoKGEuX3R6bXx8MCkvNjApLGxbc2JdKz10KChhLl90em18fDApJTYwKSxhLl9kPShhLl91
c2VVVEM/VzpWKS5hcHBseShudWxsLGwpfX1mdW5jdGlvbiBOKGEpe3ZhciBiO2EuX2R8fChiPXIo
YS5faSksYS5fYT1bYi55ZWFyLGIubW9udGgsYi5kYXksYi5ob3VyLGIubWludXRlLGIuc2Vjb25k
LGIubWlsbGlzZWNvbmRdLE0oYSkpfWZ1bmN0aW9uIE8oYSl7dmFyIGI9bmV3IERhdGU7cmV0dXJu
IGEuX3VzZVVUQz9bYi5nZXRVVENGdWxsWWVhcigpLGIuZ2V0VVRDTW9udGgoKSxiLmdldFVUQ0Rh
dGUoKV06W2IuZ2V0RnVsbFllYXIoKSxiLmdldE1vbnRoKCksYi5nZXREYXRlKCldfWZ1bmN0aW9u
IFAoYSl7YS5fYT1bXSxhLl9wZi5lbXB0eT0hMDt2YXIgYixjLGQsZSxmLGc9RShhLl9sKSxoPSIi
K2EuX2ksaT1oLmxlbmd0aCxqPTA7Zm9yKGQ9SShhLl9mLGcpLm1hdGNoKEJiKXx8W10sYj0wO2I8
ZC5sZW5ndGg7YisrKWU9ZFtiXSxjPShoLm1hdGNoKEooZSxhKSl8fFtdKVswXSxjJiYoZj1oLnN1
YnN0cigwLGguaW5kZXhPZihjKSksZi5sZW5ndGg+MCYmYS5fcGYudW51c2VkSW5wdXQucHVzaChm
KSxoPWguc2xpY2UoaC5pbmRleE9mKGMpK2MubGVuZ3RoKSxqKz1jLmxlbmd0aCksY2NbZV0/KGM/
YS5fcGYuZW1wdHk9ITE6YS5fcGYudW51c2VkVG9rZW5zLnB1c2goZSksTChlLGMsYSkpOmEuX3N0
cmljdCYmIWMmJmEuX3BmLnVudXNlZFRva2Vucy5wdXNoKGUpO2EuX3BmLmNoYXJzTGVmdE92ZXI9
aS1qLGgubGVuZ3RoPjAmJmEuX3BmLnVudXNlZElucHV0LnB1c2goaCksYS5faXNQbSYmYS5fYVty
Yl08MTImJihhLl9hW3JiXSs9MTIpLGEuX2lzUG09PT0hMSYmMTI9PT1hLl9hW3JiXSYmKGEuX2Fb
cmJdPTApLE0oYSkseShhKX1mdW5jdGlvbiBRKGEpe3JldHVybiBhLnJlcGxhY2UoL1xcKFxbKXxc
XChcXSl8XFsoW15cXVxbXSopXF18XFwoLikvZyxmdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBi
fHxjfHxkfHxlfSl9ZnVuY3Rpb24gUihhKXtyZXR1cm4gYS5yZXBsYWNlKC9bLVwvXFxeJCorPy4o
KXxbXF17fV0vZywiXFwkJiIpfWZ1bmN0aW9uIFMoYSl7dmFyIGMsZCxlLGYsZztpZigwPT09YS5f
Zi5sZW5ndGgpcmV0dXJuIGEuX3BmLmludmFsaWRGb3JtYXQ9ITAsdm9pZChhLl9kPW5ldyBEYXRl
KDAvMCkpO2ZvcihmPTA7ZjxhLl9mLmxlbmd0aDtmKyspZz0wLGM9aSh7fSxhKSxjLl9wZj1iKCks
Yy5fZj1hLl9mW2ZdLFAoYykseihjKSYmKGcrPWMuX3BmLmNoYXJzTGVmdE92ZXIsZys9MTAqYy5f
cGYudW51c2VkVG9rZW5zLmxlbmd0aCxjLl9wZi5zY29yZT1nLChudWxsPT1lfHxlPmcpJiYoZT1n
LGQ9YykpO2koYSxkfHxjKX1mdW5jdGlvbiBUKGEpe3ZhciBiLGMsZD1hLl9pLGU9VGIuZXhlYyhk
KTtpZihlKXtmb3IoYS5fcGYuaXNvPSEwLGI9MCxjPVZiLmxlbmd0aDtjPmI7YisrKWlmKFZiW2Jd
WzFdLmV4ZWMoZCkpe2EuX2Y9VmJbYl1bMF0rKGVbNl18fCIgIik7YnJlYWt9Zm9yKGI9MCxjPVdi
Lmxlbmd0aDtjPmI7YisrKWlmKFdiW2JdWzFdLmV4ZWMoZCkpe2EuX2YrPVdiW2JdWzBdO2JyZWFr
fWQubWF0Y2goSmIpJiYoYS5fZis9IloiKSxQKGEpfWVsc2UgaWIuY3JlYXRlRnJvbUlucHV0RmFs
bGJhY2soYSl9ZnVuY3Rpb24gVShiKXt2YXIgYz1iLl9pLGQ9eWIuZXhlYyhjKTtjPT09YT9iLl9k
PW5ldyBEYXRlOmQ/Yi5fZD1uZXcgRGF0ZSgrZFsxXSk6InN0cmluZyI9PXR5cGVvZiBjP1QoYik6
bihjKT8oYi5fYT1jLnNsaWNlKDApLE0oYikpOm8oYyk/Yi5fZD1uZXcgRGF0ZSgrYyk6Im9iamVj
dCI9PXR5cGVvZiBjP04oYik6Im51bWJlciI9PXR5cGVvZiBjP2IuX2Q9bmV3IERhdGUoYyk6aWIu
Y3JlYXRlRnJvbUlucHV0RmFsbGJhY2soYil9ZnVuY3Rpb24gVihhLGIsYyxkLGUsZixnKXt2YXIg
aD1uZXcgRGF0ZShhLGIsYyxkLGUsZixnKTtyZXR1cm4gMTk3MD5hJiZoLnNldEZ1bGxZZWFyKGEp
LGh9ZnVuY3Rpb24gVyhhKXt2YXIgYj1uZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLGFyZ3Vt
ZW50cykpO3JldHVybiAxOTcwPmEmJmIuc2V0VVRDRnVsbFllYXIoYSksYn1mdW5jdGlvbiBYKGEs
Yil7aWYoInN0cmluZyI9PXR5cGVvZiBhKWlmKGlzTmFOKGEpKXtpZihhPWIud2Vla2RheXNQYXJz
ZShhKSwibnVtYmVyIiE9dHlwZW9mIGEpcmV0dXJuIG51bGx9ZWxzZSBhPXBhcnNlSW50KGEsMTAp
O3JldHVybiBhfWZ1bmN0aW9uIFkoYSxiLGMsZCxlKXtyZXR1cm4gZS5yZWxhdGl2ZVRpbWUoYnx8
MSwhIWMsYSxkKX1mdW5jdGlvbiBaKGEsYixjKXt2YXIgZD1uYihNYXRoLmFicyhhKS8xZTMpLGU9
bmIoZC82MCksZj1uYihlLzYwKSxnPW5iKGYvMjQpLGg9bmIoZy8zNjUpLGk9NDU+ZCYmWyJzIixk
XXx8MT09PWUmJlsibSJdfHw0NT5lJiZbIm1tIixlXXx8MT09PWYmJlsiaCJdfHwyMj5mJiZbImho
IixmXXx8MT09PWcmJlsiZCJdfHwyNT49ZyYmWyJkZCIsZ118fDQ1Pj1nJiZbIk0iXXx8MzQ1Pmcm
JlsiTU0iLG5iKGcvMzApXXx8MT09PWgmJlsieSJdfHxbInl5IixoXTtyZXR1cm4gaVsyXT1iLGlb
M109YT4wLGlbNF09YyxZLmFwcGx5KHt9LGkpfWZ1bmN0aW9uICQoYSxiLGMpe3ZhciBkLGU9Yy1i
LGY9Yy1hLmRheSgpO3JldHVybiBmPmUmJihmLT03KSxlLTc+ZiYmKGYrPTcpLGQ9aWIoYSkuYWRk
KCJkIixmKSx7d2VlazpNYXRoLmNlaWwoZC5kYXlPZlllYXIoKS83KSx5ZWFyOmQueWVhcigpfX1m
dW5jdGlvbiBfKGEsYixjLGQsZSl7dmFyIGYsZyxoPVcoYSwwLDEpLmdldFVUQ0RheSgpO3JldHVy
biBjPW51bGwhPWM/YzplLGY9ZS1oKyhoPmQ/NzowKS0oZT5oPzc6MCksZz03KihiLTEpKyhjLWUp
K2YrMSx7eWVhcjpnPjA/YTphLTEsZGF5T2ZZZWFyOmc+MD9nOncoYS0xKStnfX1mdW5jdGlvbiBh
YihiKXt2YXIgYz1iLl9pLGQ9Yi5fZjtyZXR1cm4gbnVsbD09PWN8fGQ9PT1hJiYiIj09PWM/aWIu
aW52YWxpZCh7bnVsbElucHV0OiEwfSk6KCJzdHJpbmciPT10eXBlb2YgYyYmKGIuX2k9Yz1FKCku
cHJlcGFyc2UoYykpLGliLmlzTW9tZW50KGMpPyhiPWooYyksYi5fZD1uZXcgRGF0ZSgrYy5fZCkp
OmQ/bihkKT9TKGIpOlAoYik6VShiKSxuZXcgZyhiKSl9ZnVuY3Rpb24gYmIoYSxiKXt2YXIgYzty
ZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihiPWEubGFuZygpLm1vbnRoc1BhcnNlKGIpLCJudW1i
ZXIiIT10eXBlb2YgYik/YTooYz1NYXRoLm1pbihhLmRhdGUoKSx1KGEueWVhcigpLGIpKSxhLl9k
WyJzZXQiKyhhLl9pc1VUQz8iVVRDIjoiIikrIk1vbnRoIl0oYixjKSxhKX1mdW5jdGlvbiBjYihh
LGIpe3JldHVybiBhLl9kWyJnZXQiKyhhLl9pc1VUQz8iVVRDIjoiIikrYl0oKX1mdW5jdGlvbiBk
YihhLGIsYyl7cmV0dXJuIk1vbnRoIj09PWI/YmIoYSxjKTphLl9kWyJzZXQiKyhhLl9pc1VUQz8i
VVRDIjoiIikrYl0oYyl9ZnVuY3Rpb24gZWIoYSxiKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJu
IG51bGwhPWM/KGRiKHRoaXMsYSxjKSxpYi51cGRhdGVPZmZzZXQodGhpcyxiKSx0aGlzKTpjYih0
aGlzLGEpfX1mdW5jdGlvbiBmYihhKXtpYi5kdXJhdGlvbi5mblthXT1mdW5jdGlvbigpe3JldHVy
biB0aGlzLl9kYXRhW2FdfX1mdW5jdGlvbiBnYihhLGIpe2liLmR1cmF0aW9uLmZuWyJhcyIrYV09
ZnVuY3Rpb24oKXtyZXR1cm4rdGhpcy9ifX1mdW5jdGlvbiBoYihhKXsidW5kZWZpbmVkIj09dHlw
ZW9mIGVuZGVyJiYoamI9bWIubW9tZW50LG1iLm1vbWVudD1hP2MoIkFjY2Vzc2luZyBNb21lbnQg
dGhyb3VnaCB0aGUgZ2xvYmFsIHNjb3BlIGlzIGRlcHJlY2F0ZWQsIGFuZCB3aWxsIGJlIHJlbW92
ZWQgaW4gYW4gdXBjb21pbmcgcmVsZWFzZS4iLGliKTppYil9Zm9yKHZhciBpYixqYixrYixsYj0i
Mi42LjAiLG1iPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDp0aGlzLG5iPU1hdGgu
cm91bmQsb2I9MCxwYj0xLHFiPTIscmI9MyxzYj00LHRiPTUsdWI9Nix2Yj17fSx3Yj17X2lzQU1v
bWVudE9iamVjdDpudWxsLF9pOm51bGwsX2Y6bnVsbCxfbDpudWxsLF9zdHJpY3Q6bnVsbCxfaXNV
VEM6bnVsbCxfb2Zmc2V0Om51bGwsX3BmOm51bGwsX2xhbmc6bnVsbH0seGI9InVuZGVmaW5lZCIh
PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzLHliPS9eXC8/RGF0ZVwoKFwtP1xkKykvaSx6
Yj0vKFwtKT8oPzooXGQqKVwuKT8oXGQrKVw6KFxkKykoPzpcOihcZCspXC4/KFxkezN9KT8pPy8s
QWI9L14oLSk/UCg/Oig/OihbMC05LC5dKilZKT8oPzooWzAtOSwuXSopTSk/KD86KFswLTksLl0q
KUQpPyg/OlQoPzooWzAtOSwuXSopSCk/KD86KFswLTksLl0qKU0pPyg/OihbMC05LC5dKilTKT8p
P3woWzAtOSwuXSopVykkLyxCYj0vKFxbW15cW10qXF0pfChcXCk/KE1vfE1NP00/TT98RG98RERE
b3xERD9EP0Q/fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFF8WVlZWVlZfFlZWVlZfFlZWVl8
WVl8Z2coZ2dnPyk/fEdHKEdHRz8pP3xlfEV8YXxBfGhoP3xISD98bW0/fHNzP3xTezEsNH18WHx6
ej98Wlo/fC4pL2csQ2I9LyhcW1teXFtdKlxdKXwoXFwpPyhMVHxMTD9MP0w/fGx7MSw0fSkvZyxE
Yj0vXGRcZD8vLEViPS9cZHsxLDN9LyxGYj0vXGR7MSw0fS8sR2I9L1srXC1dP1xkezEsNn0vLEhi
PS9cZCsvLEliPS9bMC05XSpbJ2Etelx1MDBBMC1cdTA1RkZcdTA3MDAtXHVEN0ZGXHVGOTAwLVx1
RkRDRlx1RkRGMC1cdUZGRUZdK3xbXHUwNjAwLVx1MDZGRlwvXSsoXHMqP1tcdTA2MDAtXHUwNkZG
XSspezEsMn0vaSxKYj0vWnxbXCtcLV1cZFxkOj9cZFxkL2dpLEtiPS9UL2ksTGI9L1tcK1wtXT9c
ZCsoXC5cZHsxLDN9KT8vLE1iPS9cZHsxLDJ9LyxOYj0vXGQvLE9iPS9cZFxkLyxQYj0vXGR7M30v
LFFiPS9cZHs0fS8sUmI9L1srLV0/XGR7Nn0vLFNiPS9bKy1dP1xkKy8sVGI9L15ccyooPzpbKy1d
XGR7Nn18XGR7NH0pLSg/OihcZFxkLVxkXGQpfChXXGRcZCQpfChXXGRcZC1cZCl8KFxkXGRcZCkp
KChUfCApKFxkXGQoOlxkXGQoOlxkXGQoXC5cZCspPyk/KT8pPyhbXCtcLV1cZFxkKD86Oj9cZFxk
KT98XHMqWik/KT8kLyxVYj0iWVlZWS1NTS1ERFRISDptbTpzc1oiLFZiPVtbIllZWVlZWS1NTS1E
RCIsL1srLV1cZHs2fS1cZHsyfS1cZHsyfS9dLFsiWVlZWS1NTS1ERCIsL1xkezR9LVxkezJ9LVxk
ezJ9L10sWyJHR0dHLVtXXVdXLUUiLC9cZHs0fS1XXGR7Mn0tXGQvXSxbIkdHR0ctW1ddV1ciLC9c
ZHs0fS1XXGR7Mn0vXSxbIllZWVktREREIiwvXGR7NH0tXGR7M30vXV0sV2I9W1siSEg6bW06c3Mu
U1NTUyIsLyhUfCApXGRcZDpcZFxkOlxkXGRcLlxkKy9dLFsiSEg6bW06c3MiLC8oVHwgKVxkXGQ6
XGRcZDpcZFxkL10sWyJISDptbSIsLyhUfCApXGRcZDpcZFxkL10sWyJISCIsLyhUfCApXGRcZC9d
XSxYYj0vKFtcK1wtXXxcZFxkKS9naSxZYj0oIkRhdGV8SG91cnN8TWludXRlc3xTZWNvbmRzfE1p
bGxpc2Vjb25kcyIuc3BsaXQoInwiKSx7TWlsbGlzZWNvbmRzOjEsU2Vjb25kczoxZTMsTWludXRl
czo2ZTQsSG91cnM6MzZlNSxEYXlzOjg2NGU1LE1vbnRoczoyNTkyZTYsWWVhcnM6MzE1MzZlNn0p
LFpiPXttczoibWlsbGlzZWNvbmQiLHM6InNlY29uZCIsbToibWludXRlIixoOiJob3VyIixkOiJk
YXkiLEQ6ImRhdGUiLHc6IndlZWsiLFc6Imlzb1dlZWsiLE06Im1vbnRoIixROiJxdWFydGVyIix5
OiJ5ZWFyIixEREQ6ImRheU9mWWVhciIsZToid2Vla2RheSIsRToiaXNvV2Vla2RheSIsZ2c6Indl
ZWtZZWFyIixHRzoiaXNvV2Vla1llYXIifSwkYj17ZGF5b2Z5ZWFyOiJkYXlPZlllYXIiLGlzb3dl
ZWtkYXk6Imlzb1dlZWtkYXkiLGlzb3dlZWs6Imlzb1dlZWsiLHdlZWt5ZWFyOiJ3ZWVrWWVhciIs
aXNvd2Vla3llYXI6Imlzb1dlZWtZZWFyIn0sX2I9e30sYWM9IkRERCB3IFcgTSBEIGQiLnNwbGl0
KCIgIiksYmM9Ik0gRCBIIGggbSBzIHcgVyIuc3BsaXQoIiAiKSxjYz17TTpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLm1vbnRoKCkrMX0sTU1NOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxhbmcoKS5t
b250aHNTaG9ydCh0aGlzLGEpfSxNTU1NOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxhbmcoKS5t
b250aHModGhpcyxhKX0sRDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGUoKX0sREREOmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuZGF5T2ZZZWFyKCl9LGQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5k
YXkoKX0sZGQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubGFuZygpLndlZWtkYXlzTWluKHRoaXMs
YSl9LGRkZDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sYW5nKCkud2Vla2RheXNTaG9ydCh0aGlz
LGEpfSxkZGRkOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxhbmcoKS53ZWVrZGF5cyh0aGlzLGEp
fSx3OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2VlaygpfSxXOmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuaXNvV2VlaygpfSxZWTpmdW5jdGlvbigpe3JldHVybiBsKHRoaXMueWVhcigpJTEwMCwyKX0s
WVlZWTpmdW5jdGlvbigpe3JldHVybiBsKHRoaXMueWVhcigpLDQpfSxZWVlZWTpmdW5jdGlvbigp
e3JldHVybiBsKHRoaXMueWVhcigpLDUpfSxZWVlZWVk6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnll
YXIoKSxiPWE+PTA/IisiOiItIjtyZXR1cm4gYitsKE1hdGguYWJzKGEpLDYpfSxnZzpmdW5jdGlv
bigpe3JldHVybiBsKHRoaXMud2Vla1llYXIoKSUxMDAsMil9LGdnZ2c6ZnVuY3Rpb24oKXtyZXR1
cm4gbCh0aGlzLndlZWtZZWFyKCksNCl9LGdnZ2dnOmZ1bmN0aW9uKCl7cmV0dXJuIGwodGhpcy53
ZWVrWWVhcigpLDUpfSxHRzpmdW5jdGlvbigpe3JldHVybiBsKHRoaXMuaXNvV2Vla1llYXIoKSUx
MDAsMil9LEdHR0c6ZnVuY3Rpb24oKXtyZXR1cm4gbCh0aGlzLmlzb1dlZWtZZWFyKCksNCl9LEdH
R0dHOmZ1bmN0aW9uKCl7cmV0dXJuIGwodGhpcy5pc29XZWVrWWVhcigpLDUpfSxlOmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMud2Vla2RheSgpfSxFOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNvV2Vl
a2RheSgpfSxhOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGFuZygpLm1lcmlkaWVtKHRoaXMuaG91
cnMoKSx0aGlzLm1pbnV0ZXMoKSwhMCl9LEE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYW5nKCku
bWVyaWRpZW0odGhpcy5ob3VycygpLHRoaXMubWludXRlcygpLCExKX0sSDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmhvdXJzKCl9LGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ob3VycygpJTEyfHwx
Mn0sbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1pbnV0ZXMoKX0sczpmdW5jdGlvbigpe3JldHVy
biB0aGlzLnNlY29uZHMoKX0sUzpmdW5jdGlvbigpe3JldHVybiB0KHRoaXMubWlsbGlzZWNvbmRz
KCkvMTAwKX0sU1M6ZnVuY3Rpb24oKXtyZXR1cm4gbCh0KHRoaXMubWlsbGlzZWNvbmRzKCkvMTAp
LDIpfSxTU1M6ZnVuY3Rpb24oKXtyZXR1cm4gbCh0aGlzLm1pbGxpc2Vjb25kcygpLDMpfSxTU1NT
OmZ1bmN0aW9uKCl7cmV0dXJuIGwodGhpcy5taWxsaXNlY29uZHMoKSwzKX0sWjpmdW5jdGlvbigp
e3ZhciBhPS10aGlzLnpvbmUoKSxiPSIrIjtyZXR1cm4gMD5hJiYoYT0tYSxiPSItIiksYitsKHQo
YS82MCksMikrIjoiK2wodChhKSU2MCwyKX0sWlo6ZnVuY3Rpb24oKXt2YXIgYT0tdGhpcy56b25l
KCksYj0iKyI7cmV0dXJuIDA+YSYmKGE9LWEsYj0iLSIpLGIrbCh0KGEvNjApLDIpK2wodChhKSU2
MCwyKX0sejpmdW5jdGlvbigpe3JldHVybiB0aGlzLnpvbmVBYmJyKCl9LHp6OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuem9uZU5hbWUoKX0sWDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuaXgoKX0s
UTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1YXJ0ZXIoKX19LGRjPVsibW9udGhzIiwibW9udGhz
U2hvcnQiLCJ3ZWVrZGF5cyIsIndlZWtkYXlzU2hvcnQiLCJ3ZWVrZGF5c01pbiJdO2FjLmxlbmd0
aDspa2I9YWMucG9wKCksY2Nba2IrIm8iXT1lKGNjW2tiXSxrYik7Zm9yKDtiYy5sZW5ndGg7KWti
PWJjLnBvcCgpLGNjW2tiK2tiXT1kKGNjW2tiXSwyKTtmb3IoY2MuRERERD1kKGNjLkRERCwzKSxp
KGYucHJvdG90eXBlLHtzZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYztmb3IoYyBpbiBhKWI9YVtjXSwi
ZnVuY3Rpb24iPT10eXBlb2YgYj90aGlzW2NdPWI6dGhpc1siXyIrY109Yn0sX21vbnRoczoiSmFu
dWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJf
T2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHM6ZnVuY3Rpb24oYSl7
cmV0dXJuIHRoaXMuX21vbnRoc1thLm1vbnRoKCldfSxfbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFy
X0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLG1vbnRoc1No
b3J0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9tb250aHNTaG9ydFthLm1vbnRoKCldfSxtb250
aHNQYXJzZTpmdW5jdGlvbihhKXt2YXIgYixjLGQ7Zm9yKHRoaXMuX21vbnRoc1BhcnNlfHwodGhp
cy5fbW9udGhzUGFyc2U9W10pLGI9MDsxMj5iO2IrKylpZih0aGlzLl9tb250aHNQYXJzZVtiXXx8
KGM9aWIudXRjKFsyZTMsYl0pLGQ9Il4iK3RoaXMubW9udGhzKGMsIiIpKyJ8XiIrdGhpcy5tb250
aHNTaG9ydChjLCIiKSx0aGlzLl9tb250aHNQYXJzZVtiXT1uZXcgUmVnRXhwKGQucmVwbGFjZSgi
LiIsIiIpLCJpIikpLHRoaXMuX21vbnRoc1BhcnNlW2JdLnRlc3QoYSkpcmV0dXJuIGJ9LF93ZWVr
ZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0
dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXM6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX3dlZWtk
YXlzW2EuZGF5KCldfSxfd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0
Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX3dlZWtk
YXlzU2hvcnRbYS5kYXkoKV19LF93ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNw
bGl0KCJfIiksd2Vla2RheXNNaW46ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX3dlZWtkYXlzTWlu
W2EuZGF5KCldfSx3ZWVrZGF5c1BhcnNlOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZDtmb3IodGhpcy5f
d2Vla2RheXNQYXJzZXx8KHRoaXMuX3dlZWtkYXlzUGFyc2U9W10pLGI9MDs3PmI7YisrKWlmKHRo
aXMuX3dlZWtkYXlzUGFyc2VbYl18fChjPWliKFsyZTMsMV0pLmRheShiKSxkPSJeIit0aGlzLndl
ZWtkYXlzKGMsIiIpKyJ8XiIrdGhpcy53ZWVrZGF5c1Nob3J0KGMsIiIpKyJ8XiIrdGhpcy53ZWVr
ZGF5c01pbihjLCIiKSx0aGlzLl93ZWVrZGF5c1BhcnNlW2JdPW5ldyBSZWdFeHAoZC5yZXBsYWNl
KCIuIiwiIiksImkiKSksdGhpcy5fd2Vla2RheXNQYXJzZVtiXS50ZXN0KGEpKXJldHVybiBifSxf
bG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLEw6Ik1NL0REL1lZWVkiLExMOiJNTU1NIEQgWVlZ
WSIsTExMOiJNTU1NIEQgWVlZWSBMVCIsTExMTDoiZGRkZCwgTU1NTSBEIFlZWVkgTFQifSxsb25n
RGF0ZUZvcm1hdDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9sb25nRGF0ZUZvcm1hdFthXTtyZXR1
cm4hYiYmdGhpcy5fbG9uZ0RhdGVGb3JtYXRbYS50b1VwcGVyQ2FzZSgpXSYmKGI9dGhpcy5fbG9u
Z0RhdGVGb3JtYXRbYS50b1VwcGVyQ2FzZSgpXS5yZXBsYWNlKC9NTU1NfE1NfEREfGRkZGQvZyxm
dW5jdGlvbihhKXtyZXR1cm4gYS5zbGljZSgxKX0pLHRoaXMuX2xvbmdEYXRlRm9ybWF0W2FdPWIp
LGJ9LGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuInAiPT09KGErIiIpLnRvTG93ZXJDYXNlKCkuY2hh
ckF0KDApfSxfbWVyaWRpZW1QYXJzZTovW2FwXVwuP20/XC4/L2ksbWVyaWRpZW06ZnVuY3Rpb24o
YSxiLGMpe3JldHVybiBhPjExP2M/InBtIjoiUE0iOmM/ImFtIjoiQU0ifSxfY2FsZW5kYXI6e3Nh
bWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVr
OiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xh
c3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxjYWxlbmRhcjpmdW5jdGlvbihhLGIpe3Zh
ciBjPXRoaXMuX2NhbGVuZGFyW2FdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBjP2MuYXBwbHko
Yik6Y30sX3JlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZl
dyBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIl
ZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhz
Iix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LHJlbGF0aXZlVGltZTpmdW5jdGlvbihhLGIsYyxk
KXt2YXIgZT10aGlzLl9yZWxhdGl2ZVRpbWVbY107cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/
ZShhLGIsYyxkKTplLnJlcGxhY2UoLyVkL2ksYSl9LHBhc3RGdXR1cmU6ZnVuY3Rpb24oYSxiKXt2
YXIgYz10aGlzLl9yZWxhdGl2ZVRpbWVbYT4wPyJmdXR1cmUiOiJwYXN0Il07cmV0dXJuImZ1bmN0
aW9uIj09dHlwZW9mIGM/YyhiKTpjLnJlcGxhY2UoLyVzL2ksYil9LG9yZGluYWw6ZnVuY3Rpb24o
YSl7cmV0dXJuIHRoaXMuX29yZGluYWwucmVwbGFjZSgiJWQiLGEpfSxfb3JkaW5hbDoiJWQiLHBy
ZXBhcnNlOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVy
biBhfSx3ZWVrOmZ1bmN0aW9uKGEpe3JldHVybiAkKGEsdGhpcy5fd2Vlay5kb3csdGhpcy5fd2Vl
ay5kb3kpLndlZWt9LF93ZWVrOntkb3c6MCxkb3k6Nn0sX2ludmFsaWREYXRlOiJJbnZhbGlkIGRh
dGUiLGludmFsaWREYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ludmFsaWREYXRlfX0pLGli
PWZ1bmN0aW9uKGMsZCxlLGYpe3ZhciBnO3JldHVybiJib29sZWFuIj09dHlwZW9mIGUmJihmPWUs
ZT1hKSxnPXt9LGcuX2lzQU1vbWVudE9iamVjdD0hMCxnLl9pPWMsZy5fZj1kLGcuX2w9ZSxnLl9z
dHJpY3Q9ZixnLl9pc1VUQz0hMSxnLl9wZj1iKCksYWIoZyl9LGliLnN1cHByZXNzRGVwcmVjYXRp
b25XYXJuaW5ncz0hMSxpYi5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjaz1jKCJtb21lbnQgY29uc3Ry
dWN0aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZS4gVGhpcyBpcyBkaXNjb3VyYWdlZCBhbmQgd2ls
bCBiZSByZW1vdmVkIGluIHVwY29taW5nIG1ham9yIHJlbGVhc2UuIFBsZWFzZSByZWZlciB0byBo
dHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTQwNyBmb3IgbW9yZSBpbmZv
LiIsZnVuY3Rpb24oYSl7YS5fZD1uZXcgRGF0ZShhLl9pKX0pLGliLnV0Yz1mdW5jdGlvbihjLGQs
ZSxmKXt2YXIgZztyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBlJiYoZj1lLGU9YSksZz17fSxnLl9p
c0FNb21lbnRPYmplY3Q9ITAsZy5fdXNlVVRDPSEwLGcuX2lzVVRDPSEwLGcuX2w9ZSxnLl9pPWMs
Zy5fZj1kLGcuX3N0cmljdD1mLGcuX3BmPWIoKSxhYihnKS51dGMoKX0saWIudW5peD1mdW5jdGlv
bihhKXtyZXR1cm4gaWIoMWUzKmEpfSxpYi5kdXJhdGlvbj1mdW5jdGlvbihhLGIpe3ZhciBjLGQs
ZSxmPWEsZz1udWxsO3JldHVybiBpYi5pc0R1cmF0aW9uKGEpP2Y9e21zOmEuX21pbGxpc2Vjb25k
cyxkOmEuX2RheXMsTTphLl9tb250aHN9OiJudW1iZXIiPT10eXBlb2YgYT8oZj17fSxiP2ZbYl09
YTpmLm1pbGxpc2Vjb25kcz1hKTooZz16Yi5leGVjKGEpKT8oYz0iLSI9PT1nWzFdPy0xOjEsZj17
eTowLGQ6dChnW3FiXSkqYyxoOnQoZ1tyYl0pKmMsbTp0KGdbc2JdKSpjLHM6dChnW3RiXSkqYyxt
czp0KGdbdWJdKSpjfSk6KGc9QWIuZXhlYyhhKSkmJihjPSItIj09PWdbMV0/LTE6MSxlPWZ1bmN0
aW9uKGEpe3ZhciBiPWEmJnBhcnNlRmxvYXQoYS5yZXBsYWNlKCIsIiwiLiIpKTtyZXR1cm4oaXNO
YU4oYik/MDpiKSpjfSxmPXt5OmUoZ1syXSksTTplKGdbM10pLGQ6ZShnWzRdKSxoOmUoZ1s1XSks
bTplKGdbNl0pLHM6ZShnWzddKSx3OmUoZ1s4XSl9KSxkPW5ldyBoKGYpLGliLmlzRHVyYXRpb24o
YSkmJmEuaGFzT3duUHJvcGVydHkoIl9sYW5nIikmJihkLl9sYW5nPWEuX2xhbmcpLGR9LGliLnZl
cnNpb249bGIsaWIuZGVmYXVsdEZvcm1hdD1VYixpYi5tb21lbnRQcm9wZXJ0aWVzPXdiLGliLnVw
ZGF0ZU9mZnNldD1mdW5jdGlvbigpe30saWIubGFuZz1mdW5jdGlvbihhLGIpe3ZhciBjO3JldHVy
biBhPyhiP0MoQShhKSxiKTpudWxsPT09Yj8oRChhKSxhPSJlbiIpOnZiW2FdfHxFKGEpLGM9aWIu
ZHVyYXRpb24uZm4uX2xhbmc9aWIuZm4uX2xhbmc9RShhKSxjLl9hYmJyKTppYi5mbi5fbGFuZy5f
YWJicn0saWIubGFuZ0RhdGE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEuX2xhbmcmJmEuX2xhbmcu
X2FiYnImJihhPWEuX2xhbmcuX2FiYnIpLEUoYSl9LGliLmlzTW9tZW50PWZ1bmN0aW9uKGEpe3Jl
dHVybiBhIGluc3RhbmNlb2YgZ3x8bnVsbCE9YSYmYS5oYXNPd25Qcm9wZXJ0eSgiX2lzQU1vbWVu
dE9iamVjdCIpfSxpYi5pc0R1cmF0aW9uPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2Yg
aH0sa2I9ZGMubGVuZ3RoLTE7a2I+PTA7LS1rYilzKGRjW2tiXSk7aWIubm9ybWFsaXplVW5pdHM9
ZnVuY3Rpb24oYSl7cmV0dXJuIHEoYSl9LGliLmludmFsaWQ9ZnVuY3Rpb24oYSl7dmFyIGI9aWIu
dXRjKDAvMCk7cmV0dXJuIG51bGwhPWE/aShiLl9wZixhKTpiLl9wZi51c2VySW52YWxpZGF0ZWQ9
ITAsYn0saWIucGFyc2Vab25lPWZ1bmN0aW9uKCl7cmV0dXJuIGliLmFwcGx5KG51bGwsYXJndW1l
bnRzKS5wYXJzZVpvbmUoKX0saWIucGFyc2VUd29EaWdpdFllYXI9ZnVuY3Rpb24oYSl7cmV0dXJu
IHQoYSkrKHQoYSk+Njg/MTkwMDoyZTMpfSxpKGliLmZuPWcucHJvdG90eXBlLHtjbG9uZTpmdW5j
dGlvbigpe3JldHVybiBpYih0aGlzKX0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybit0aGlzLl9k
KzZlNCoodGhpcy5fb2Zmc2V0fHwwKX0sdW5peDpmdW5jdGlvbigpe3JldHVybiBNYXRoLmZsb29y
KCt0aGlzLzFlMyl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5sYW5n
KCJlbiIpLmZvcm1hdCgiZGRkIE1NTSBERCBZWVlZIEhIOm1tOnNzIFtHTVRdWloiKX0sdG9EYXRl
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29mZnNldD9uZXcgRGF0ZSgrdGhpcyk6dGhpcy5fZH0s
dG9JU09TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgYT1pYih0aGlzKS51dGMoKTtyZXR1cm4gMDxhLnll
YXIoKSYmYS55ZWFyKCk8PTk5OTk/SChhLCJZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdIik6
SChhLCJZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0iKX0sdG9BcnJheTpmdW5jdGlvbigp
e3ZhciBhPXRoaXM7cmV0dXJuW2EueWVhcigpLGEubW9udGgoKSxhLmRhdGUoKSxhLmhvdXJzKCks
YS5taW51dGVzKCksYS5zZWNvbmRzKCksYS5taWxsaXNlY29uZHMoKV19LGlzVmFsaWQ6ZnVuY3Rp
b24oKXtyZXR1cm4geih0aGlzKX0saXNEU1RTaGlmdGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
X2E/dGhpcy5pc1ZhbGlkKCkmJnAodGhpcy5fYSwodGhpcy5faXNVVEM/aWIudXRjKHRoaXMuX2Ep
OmliKHRoaXMuX2EpKS50b0FycmF5KCkpPjA6ITF9LHBhcnNpbmdGbGFnczpmdW5jdGlvbigpe3Jl
dHVybiBpKHt9LHRoaXMuX3BmKX0saW52YWxpZEF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Bm
Lm92ZXJmbG93fSx1dGM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy56b25lKDApfSxsb2NhbDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLnpvbmUoMCksdGhpcy5faXNVVEM9ITEsdGhpc30sZm9ybWF0OmZ1
bmN0aW9uKGEpe3ZhciBiPUgodGhpcyxhfHxpYi5kZWZhdWx0Rm9ybWF0KTtyZXR1cm4gdGhpcy5s
YW5nKCkucG9zdGZvcm1hdChiKX0sYWRkOmZ1bmN0aW9uKGEsYil7dmFyIGM7cmV0dXJuIGM9InN0
cmluZyI9PXR5cGVvZiBhP2liLmR1cmF0aW9uKCtiLGEpOmliLmR1cmF0aW9uKGEsYiksbSh0aGlz
LGMsMSksdGhpc30sc3VidHJhY3Q6ZnVuY3Rpb24oYSxiKXt2YXIgYztyZXR1cm4gYz0ic3RyaW5n
Ij09dHlwZW9mIGE/aWIuZHVyYXRpb24oK2IsYSk6aWIuZHVyYXRpb24oYSxiKSxtKHRoaXMsYywt
MSksdGhpc30sZGlmZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPUIoYSx0aGlzKSxnPTZlNCoo
dGhpcy56b25lKCktZi56b25lKCkpO3JldHVybiBiPXEoYiksInllYXIiPT09Ynx8Im1vbnRoIj09
PWI/KGQ9NDMyZTUqKHRoaXMuZGF5c0luTW9udGgoKStmLmRheXNJbk1vbnRoKCkpLGU9MTIqKHRo
aXMueWVhcigpLWYueWVhcigpKSsodGhpcy5tb250aCgpLWYubW9udGgoKSksZSs9KHRoaXMtaWIo
dGhpcykuc3RhcnRPZigibW9udGgiKS0oZi1pYihmKS5zdGFydE9mKCJtb250aCIpKSkvZCxlLT02
ZTQqKHRoaXMuem9uZSgpLWliKHRoaXMpLnN0YXJ0T2YoIm1vbnRoIikuem9uZSgpLShmLnpvbmUo
KS1pYihmKS5zdGFydE9mKCJtb250aCIpLnpvbmUoKSkpL2QsInllYXIiPT09YiYmKGUvPTEyKSk6
KGQ9dGhpcy1mLGU9InNlY29uZCI9PT1iP2QvMWUzOiJtaW51dGUiPT09Yj9kLzZlNDoiaG91ciI9
PT1iP2QvMzZlNToiZGF5Ij09PWI/KGQtZykvODY0ZTU6IndlZWsiPT09Yj8oZC1nKS82MDQ4ZTU6
ZCksYz9lOmsoZSl9LGZyb206ZnVuY3Rpb24oYSxiKXtyZXR1cm4gaWIuZHVyYXRpb24odGhpcy5k
aWZmKGEpKS5sYW5nKHRoaXMubGFuZygpLl9hYmJyKS5odW1hbml6ZSghYil9LGZyb21Ob3c6ZnVu
Y3Rpb24oYSl7cmV0dXJuIHRoaXMuZnJvbShpYigpLGEpfSxjYWxlbmRhcjpmdW5jdGlvbigpe3Zh
ciBhPUIoaWIoKSx0aGlzKS5zdGFydE9mKCJkYXkiKSxiPXRoaXMuZGlmZihhLCJkYXlzIiwhMCks
Yz0tNj5iPyJzYW1lRWxzZSI6LTE+Yj8ibGFzdFdlZWsiOjA+Yj8ibGFzdERheSI6MT5iPyJzYW1l
RGF5IjoyPmI/Im5leHREYXkiOjc+Yj8ibmV4dFdlZWsiOiJzYW1lRWxzZSI7cmV0dXJuIHRoaXMu
Zm9ybWF0KHRoaXMubGFuZygpLmNhbGVuZGFyKGMsdGhpcykpfSxpc0xlYXBZZWFyOmZ1bmN0aW9u
KCl7cmV0dXJuIHgodGhpcy55ZWFyKCkpfSxpc0RTVDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnpv
bmUoKTx0aGlzLmNsb25lKCkubW9udGgoMCkuem9uZSgpfHx0aGlzLnpvbmUoKTx0aGlzLmNsb25l
KCkubW9udGgoNSkuem9uZSgpfSxkYXk6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5faXNVVEM/dGhp
cy5fZC5nZXRVVENEYXkoKTp0aGlzLl9kLmdldERheSgpO3JldHVybiBudWxsIT1hPyhhPVgoYSx0
aGlzLmxhbmcoKSksdGhpcy5hZGQoe2Q6YS1ifSkpOmJ9LG1vbnRoOmViKCJNb250aCIsITApLHN0
YXJ0T2Y6ZnVuY3Rpb24oYSl7c3dpdGNoKGE9cShhKSl7Y2FzZSJ5ZWFyIjp0aGlzLm1vbnRoKDAp
O2Nhc2UicXVhcnRlciI6Y2FzZSJtb250aCI6dGhpcy5kYXRlKDEpO2Nhc2Uid2VlayI6Y2FzZSJp
c29XZWVrIjpjYXNlImRheSI6dGhpcy5ob3VycygwKTtjYXNlImhvdXIiOnRoaXMubWludXRlcygw
KTtjYXNlIm1pbnV0ZSI6dGhpcy5zZWNvbmRzKDApO2Nhc2Uic2Vjb25kIjp0aGlzLm1pbGxpc2Vj
b25kcygwKX1yZXR1cm4id2VlayI9PT1hP3RoaXMud2Vla2RheSgwKToiaXNvV2VlayI9PT1hJiZ0
aGlzLmlzb1dlZWtkYXkoMSksInF1YXJ0ZXIiPT09YSYmdGhpcy5tb250aCgzKk1hdGguZmxvb3Io
dGhpcy5tb250aCgpLzMpKSx0aGlzfSxlbmRPZjpmdW5jdGlvbihhKXtyZXR1cm4gYT1xKGEpLHRo
aXMuc3RhcnRPZihhKS5hZGQoImlzb1dlZWsiPT09YT8id2VlayI6YSwxKS5zdWJ0cmFjdCgibXMi
LDEpfSxpc0FmdGVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9InVuZGVmaW5lZCIhPXR5cGVvZiBi
P2I6Im1pbGxpc2Vjb25kIiwrdGhpcy5jbG9uZSgpLnN0YXJ0T2YoYik+K2liKGEpLnN0YXJ0T2Yo
Yil9LGlzQmVmb3JlOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9InVuZGVmaW5lZCIhPXR5cGVvZiBi
P2I6Im1pbGxpc2Vjb25kIiwrdGhpcy5jbG9uZSgpLnN0YXJ0T2YoYik8K2liKGEpLnN0YXJ0T2Yo
Yil9LGlzU2FtZTpmdW5jdGlvbihhLGIpe3JldHVybiBiPWJ8fCJtcyIsK3RoaXMuY2xvbmUoKS5z
dGFydE9mKGIpPT09K0IoYSx0aGlzKS5zdGFydE9mKGIpfSxtaW46ZnVuY3Rpb24oYSl7cmV0dXJu
IGE9aWIuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXM+YT90aGlzOmF9LG1heDpmdW5jdGlvbihh
KXtyZXR1cm4gYT1pYi5hcHBseShudWxsLGFyZ3VtZW50cyksYT50aGlzP3RoaXM6YX0sem9uZTpm
dW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX29mZnNldHx8MDtyZXR1cm4gbnVsbD09YT90aGlzLl9p
c1VUQz9jOnRoaXMuX2QuZ2V0VGltZXpvbmVPZmZzZXQoKTooInN0cmluZyI9PXR5cGVvZiBhJiYo
YT1LKGEpKSxNYXRoLmFicyhhKTwxNiYmKGE9NjAqYSksdGhpcy5fb2Zmc2V0PWEsdGhpcy5faXNV
VEM9ITAsYyE9PWEmJighYnx8dGhpcy5fY2hhbmdlSW5Qcm9ncmVzcz9tKHRoaXMsaWIuZHVyYXRp
b24oYy1hLCJtIiksMSwhMSk6dGhpcy5fY2hhbmdlSW5Qcm9ncmVzc3x8KHRoaXMuX2NoYW5nZUlu
UHJvZ3Jlc3M9ITAsaWIudXBkYXRlT2Zmc2V0KHRoaXMsITApLHRoaXMuX2NoYW5nZUluUHJvZ3Jl
c3M9bnVsbCkpLHRoaXMpfSx6b25lQWJicjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1VUQz8i
VVRDIjoiIn0sem9uZU5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNVVEM/IkNvb3JkaW5h
dGVkIFVuaXZlcnNhbCBUaW1lIjoiIn0scGFyc2Vab25lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
X3R6bT90aGlzLnpvbmUodGhpcy5fdHptKToic3RyaW5nIj09dHlwZW9mIHRoaXMuX2kmJnRoaXMu
em9uZSh0aGlzLl9pKSx0aGlzfSxoYXNBbGlnbmVkSG91ck9mZnNldDpmdW5jdGlvbihhKXtyZXR1
cm4gYT1hP2liKGEpLnpvbmUoKTowLCh0aGlzLnpvbmUoKS1hKSU2MD09PTB9LGRheXNJbk1vbnRo
OmZ1bmN0aW9uKCl7cmV0dXJuIHUodGhpcy55ZWFyKCksdGhpcy5tb250aCgpKX0sZGF5T2ZZZWFy
OmZ1bmN0aW9uKGEpe3ZhciBiPW5iKChpYih0aGlzKS5zdGFydE9mKCJkYXkiKS1pYih0aGlzKS5z
dGFydE9mKCJ5ZWFyIikpLzg2NGU1KSsxO3JldHVybiBudWxsPT1hP2I6dGhpcy5hZGQoImQiLGEt
Yil9LHF1YXJ0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/TWF0aC5jZWlsKCh0aGlzLm1v
bnRoKCkrMSkvMyk6dGhpcy5tb250aCgzKihhLTEpK3RoaXMubW9udGgoKSUzKX0sd2Vla1llYXI6
ZnVuY3Rpb24oYSl7dmFyIGI9JCh0aGlzLHRoaXMubGFuZygpLl93ZWVrLmRvdyx0aGlzLmxhbmco
KS5fd2Vlay5kb3kpLnllYXI7cmV0dXJuIG51bGw9PWE/Yjp0aGlzLmFkZCgieSIsYS1iKX0saXNv
V2Vla1llYXI6ZnVuY3Rpb24oYSl7dmFyIGI9JCh0aGlzLDEsNCkueWVhcjtyZXR1cm4gbnVsbD09
YT9iOnRoaXMuYWRkKCJ5IixhLWIpfSx3ZWVrOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubGFuZygp
LndlZWsodGhpcyk7cmV0dXJuIG51bGw9PWE/Yjp0aGlzLmFkZCgiZCIsNyooYS1iKSl9LGlzb1dl
ZWs6ZnVuY3Rpb24oYSl7dmFyIGI9JCh0aGlzLDEsNCkud2VlaztyZXR1cm4gbnVsbD09YT9iOnRo
aXMuYWRkKCJkIiw3KihhLWIpKX0sd2Vla2RheTpmdW5jdGlvbihhKXt2YXIgYj0odGhpcy5kYXko
KSs3LXRoaXMubGFuZygpLl93ZWVrLmRvdyklNztyZXR1cm4gbnVsbD09YT9iOnRoaXMuYWRkKCJk
IixhLWIpfSxpc29XZWVrZGF5OmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hP3RoaXMuZGF5KCl8
fDc6dGhpcy5kYXkodGhpcy5kYXkoKSU3P2E6YS03KX0saXNvV2Vla3NJblllYXI6ZnVuY3Rpb24o
KXtyZXR1cm4gdih0aGlzLnllYXIoKSwxLDQpfSx3ZWVrc0luWWVhcjpmdW5jdGlvbigpe3ZhciBh
PXRoaXMuX2xhbmcuX3dlZWs7cmV0dXJuIHYodGhpcy55ZWFyKCksYS5kb3csYS5kb3kpfSxnZXQ6
ZnVuY3Rpb24oYSl7cmV0dXJuIGE9cShhKSx0aGlzW2FdKCl9LHNldDpmdW5jdGlvbihhLGIpe3Jl
dHVybiBhPXEoYSksImZ1bmN0aW9uIj09dHlwZW9mIHRoaXNbYV0mJnRoaXNbYV0oYiksdGhpc30s
bGFuZzpmdW5jdGlvbihiKXtyZXR1cm4gYj09PWE/dGhpcy5fbGFuZzoodGhpcy5fbGFuZz1FKGIp
LHRoaXMpfX0pLGliLmZuLm1pbGxpc2Vjb25kPWliLmZuLm1pbGxpc2Vjb25kcz1lYigiTWlsbGlz
ZWNvbmRzIiwhMSksaWIuZm4uc2Vjb25kPWliLmZuLnNlY29uZHM9ZWIoIlNlY29uZHMiLCExKSxp
Yi5mbi5taW51dGU9aWIuZm4ubWludXRlcz1lYigiTWludXRlcyIsITEpLGliLmZuLmhvdXI9aWIu
Zm4uaG91cnM9ZWIoIkhvdXJzIiwhMCksaWIuZm4uZGF0ZT1lYigiRGF0ZSIsITApLGliLmZuLmRh
dGVzPWMoImRhdGVzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBkYXRlIGluc3RlYWQuIixl
YigiRGF0ZSIsITApKSxpYi5mbi55ZWFyPWViKCJGdWxsWWVhciIsITApLGliLmZuLnllYXJzPWMo
InllYXJzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSB5ZWFyIGluc3RlYWQuIixlYigiRnVs
bFllYXIiLCEwKSksaWIuZm4uZGF5cz1pYi5mbi5kYXksaWIuZm4ubW9udGhzPWliLmZuLm1vbnRo
LGliLmZuLndlZWtzPWliLmZuLndlZWssaWIuZm4uaXNvV2Vla3M9aWIuZm4uaXNvV2VlayxpYi5m
bi5xdWFydGVycz1pYi5mbi5xdWFydGVyLGliLmZuLnRvSlNPTj1pYi5mbi50b0lTT1N0cmluZyxp
KGliLmR1cmF0aW9uLmZuPWgucHJvdG90eXBlLHtfYnViYmxlOmZ1bmN0aW9uKCl7dmFyIGEsYixj
LGQsZT10aGlzLl9taWxsaXNlY29uZHMsZj10aGlzLl9kYXlzLGc9dGhpcy5fbW9udGhzLGg9dGhp
cy5fZGF0YTtoLm1pbGxpc2Vjb25kcz1lJTFlMyxhPWsoZS8xZTMpLGguc2Vjb25kcz1hJTYwLGI9
ayhhLzYwKSxoLm1pbnV0ZXM9YiU2MCxjPWsoYi82MCksaC5ob3Vycz1jJTI0LGYrPWsoYy8yNCks
aC5kYXlzPWYlMzAsZys9ayhmLzMwKSxoLm1vbnRocz1nJTEyLGQ9ayhnLzEyKSxoLnllYXJzPWR9
LHdlZWtzOmZ1bmN0aW9uKCl7cmV0dXJuIGsodGhpcy5kYXlzKCkvNyl9LHZhbHVlT2Y6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5fbWlsbGlzZWNvbmRzKzg2NGU1KnRoaXMuX2RheXMrdGhpcy5fbW9u
dGhzJTEyKjI1OTJlNiszMTUzNmU2KnQodGhpcy5fbW9udGhzLzEyKX0saHVtYW5pemU6ZnVuY3Rp
b24oYSl7dmFyIGI9K3RoaXMsYz1aKGIsIWEsdGhpcy5sYW5nKCkpO3JldHVybiBhJiYoYz10aGlz
LmxhbmcoKS5wYXN0RnV0dXJlKGIsYykpLHRoaXMubGFuZygpLnBvc3Rmb3JtYXQoYyl9LGFkZDpm
dW5jdGlvbihhLGIpe3ZhciBjPWliLmR1cmF0aW9uKGEsYik7cmV0dXJuIHRoaXMuX21pbGxpc2Vj
b25kcys9Yy5fbWlsbGlzZWNvbmRzLHRoaXMuX2RheXMrPWMuX2RheXMsdGhpcy5fbW9udGhzKz1j
Ll9tb250aHMsdGhpcy5fYnViYmxlKCksdGhpc30sc3VidHJhY3Q6ZnVuY3Rpb24oYSxiKXt2YXIg
Yz1pYi5kdXJhdGlvbihhLGIpO3JldHVybiB0aGlzLl9taWxsaXNlY29uZHMtPWMuX21pbGxpc2Vj
b25kcyx0aGlzLl9kYXlzLT1jLl9kYXlzLHRoaXMuX21vbnRocy09Yy5fbW9udGhzLHRoaXMuX2J1
YmJsZSgpLHRoaXN9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gYT1xKGEpLHRoaXNbYS50b0xvd2Vy
Q2FzZSgpKyJzIl0oKX0sYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9cShhKSx0aGlzWyJhcyIrYS5j
aGFyQXQoMCkudG9VcHBlckNhc2UoKSthLnNsaWNlKDEpKyJzIl0oKX0sbGFuZzppYi5mbi5sYW5n
LHRvSXNvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGE9TWF0aC5hYnModGhpcy55ZWFycygpKSxiPU1h
dGguYWJzKHRoaXMubW9udGhzKCkpLGM9TWF0aC5hYnModGhpcy5kYXlzKCkpLGQ9TWF0aC5hYnMo
dGhpcy5ob3VycygpKSxlPU1hdGguYWJzKHRoaXMubWludXRlcygpKSxmPU1hdGguYWJzKHRoaXMu
c2Vjb25kcygpK3RoaXMubWlsbGlzZWNvbmRzKCkvMWUzKTtyZXR1cm4gdGhpcy5hc1NlY29uZHMo
KT8odGhpcy5hc1NlY29uZHMoKTwwPyItIjoiIikrIlAiKyhhP2ErIlkiOiIiKSsoYj9iKyJNIjoi
IikrKGM/YysiRCI6IiIpKyhkfHxlfHxmPyJUIjoiIikrKGQ/ZCsiSCI6IiIpKyhlP2UrIk0iOiIi
KSsoZj9mKyJTIjoiIik6IlAwRCJ9fSk7Zm9yKGtiIGluIFliKVliLmhhc093blByb3BlcnR5KGti
KSYmKGdiKGtiLFliW2tiXSksZmIoa2IudG9Mb3dlckNhc2UoKSkpO2diKCJXZWVrcyIsNjA0OGU1
KSxpYi5kdXJhdGlvbi5mbi5hc01vbnRocz1mdW5jdGlvbigpe3JldHVybigrdGhpcy0zMTUzNmU2
KnRoaXMueWVhcnMoKSkvMjU5MmU2KzEyKnRoaXMueWVhcnMoKX0saWIubGFuZygiZW4iLHtvcmRp
bmFsOmZ1bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09dChhJTEwMC8xMCk/InRoIjoxPT09Yj8i
c3QiOjI9PT1iPyJuZCI6Mz09PWI/InJkIjoidGgiO3JldHVybiBhK2N9fSkseGI/bW9kdWxlLmV4
cG9ydHM9aWI6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD8oZGVmaW5lKCJt
b21lbnQiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYy5jb25maWcmJmMuY29uZmlnKCkmJmMuY29u
ZmlnKCkubm9HbG9iYWw9PT0hMCYmKG1iLm1vbWVudD1qYiksaWJ9KSxoYighMCkpOmhiKCl9KS5j
YWxsKHRoaXMpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKClByb3BlcnR5IGNoYW5nZXMg
b246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvRXh0ZXJuYWwvbW9tZW50Lm1pbi5qcwpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi10ZXh0L3BsYWluClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0JpZ1N1ci5w
bmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlw
ZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMv
Q0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9J
bWFnZXMvQmlnU3VyLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEg
KzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvSW1hZ2VzL0JpZ1N1ckAyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmls
ZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvQmlnU3VyQDJ4LnBuZwpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRl
bGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0NSRURJVAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL0ltYWdlcy9DUkVESVQJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2Vz
L0NSRURJVAkobm9uZXhpc3RlbnQpCkBAIC0xLDYgKzAsMCBAQAotVGhlIFR1eCBpbWFnZXMgaW4g
dGhpcyBkaXJlY3RvcnkgYXJlIGRvd25sb2FkZWQgZnJvbSBXaWtpbWVkaWEgQ29tbW9uczoKLQot
aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlsZTpDbGFzc2ljX2ZsYXRfbG9va18zRC5z
dmcKLQotTGljZW5zZTogIlRoZSBjb3B5cmlnaHQgaG9sZGVyIG9mIHRoaXMgZmlsZSBhbGxvd3Mg
YW55b25lIHRvIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsCi1wcm92aWRlZCB0aGF0IHlvdSBhY2tu
b3dsZWRnZSBsZXdpbmdAaXNjLnRhbXUuZWR1IGFuZCBUaGUgR0lNUCBpZiBzb21lb25lIGFza3Mu
IgpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9JbWFnZXMvQ2F0YWxpbmEucG5nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3Bs
YXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9w
bmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0NhdGFsaW5hLnBuZwpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0NhdGFsaW5hQDJ4
LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0
eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29s
cy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L0ltYWdlcy9DYXRhbGluYUAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBl
CiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL0ltYWdlcy9FbENhcGl0YW4ucG5nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3Bs
YXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNh
dGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0VsQ2Fw
aXRhbi5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMK
LWFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL0ltYWdlcy9FbENhcGl0YW5AMngucG5nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRp
c3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBs
aWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0Vs
Q2FwaXRhbkAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICsw
LDAgIyMKLWFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9HVEsucG5nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3Bs
YXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9w
bmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0dUSy5wbmcKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9HVEtAMngucG5nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjpt
aW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0dU
S0AyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMK
LWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9D
SVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0lt
YWdlcy9IaWdoU2llcnJhLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtl
ZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9IaWdoU2llcnJhLnBuZwpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6
IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0hpZ2hTaWVycmFAMngucG5nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjpt
aW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0hp
Z2hTaWVycmFAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSAr
MCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDog
VG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9JbWFnZXMvSU9TMTAucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFy
a2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5
IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzEwLnBuZwpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2
bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzEwQDJ4LnBuZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNh
bm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBl
ID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxMEAyeC5w
bmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdl
L3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9J
T1MxMFNpbXVsYXRvci5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQg
YXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hh
bmdlcyBvbjogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTBTaW11bGF0b3IucG5nCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRl
ZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTBTaW11bGF0b3JAMngucG5n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUu
CnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1h
Z2VzL0lPUzEwU2ltdWxhdG9yQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5
cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzExLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5
OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5n
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxMS5wbmcKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxMUAyeC5wbmcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3Zu
Om1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMv
SU9TMTFAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCww
ICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9v
bHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9JbWFnZXMvSU9TMTFTaW11bGF0b3IucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZp
bGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClBy
b3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzExU2ltdWxhdG9yLnBuZwpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzExU2ltdWxh
dG9yQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJp
bmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL0ltYWdlcy9JT1MxMVNpbXVsYXRvckAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxMi5wbmcKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5u
b3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9
IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTIucG5nCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTJA
MngucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5
IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRv
b2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvSW1hZ2VzL0lPUzEyQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUK
IyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzEyU2ltdWxhdG9yLnBuZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBk
aXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1h
Z2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxMlNpbXVsYXRvci5w
bmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdl
L3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9J
T1MxMlNpbXVsYXRvckAyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJr
ZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTJTaW11bGF0b3JAMngucG5nCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTMucG5nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjpt
aW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lP
UzEzLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwot
aW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1h
Z2VzL0lPUzEzQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBh
cyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxM0AyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46
bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxM1NpbXVsYXRvci5wbmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUt
dHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTNT
aW11bGF0b3IucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCww
ICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9v
bHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9JbWFnZXMvSU9TMTNTaW11bGF0b3JAMngucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6
IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcK
ClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzEzU2ltdWxhdG9yQDJ4LnBuZwpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5n
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzE0
LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0
eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29s
cy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L0ltYWdlcy9JT1MxNC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0x
ICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4
OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL0ltYWdlcy9JT1MxNEAyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmls
ZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTRAMngucG5nCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTRTaW11bGF0b3IucG5n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUu
CnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1h
Z2VzL0lPUzE0U2ltdWxhdG9yLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUK
IyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzE0U2ltdWxhdG9yQDJ4LnBuZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5v
dCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0g
aW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxNFNpbXVsYXRv
ckAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMK
LWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9D
SVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0lt
YWdlcy9JT1M5LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBh
IGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL0ltYWdlcy9JT1M5LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5
cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzlAMngucG5nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3Bs
YXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9w
bmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzlAMngucG5nCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TOVNpbXVsYXRv
ci5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkg
dHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9v
bHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9JbWFnZXMvSU9TOVNpbXVsYXRvci5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10
eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1M5U2ltdWxhdG9yQDJ4LnBuZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNh
bm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBl
ID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1M5U2ltdWxh
dG9yQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAj
IwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xz
L0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
SW1hZ2VzL0lPU0RldmljZS5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TRGV2aWNl
LnBuZwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TRGV2aWNlLnBuZwkobm9u
ZXhpc3RlbnQpCkBAIC0xLDMwICswLDAgQEAKLYlQTkcNCi0aCi0AAAANSUhEUgAAAJAAAACQCAYA
AADnRuK4AAAR+klEQVR4AezSQQEAEAAEMOLo/7l2JwM8twybbQfcEgiBEAiBEAgEQiAEQiAQCIEQ
CIFAIARCIAQCgRAIgf5Isja75QAjZxTE8XnferfG2XebBrWD2lbs2nYbJ8X5Lqxj53wX1LZtY8Oz
Fm/anffdZBXW7c6HyfvPLP+/zPs8bm8fr88jfD4f/ImhaRplIcQzp9P52O12w8uXLyEmJka4XC4c
OXIkpKWlRQH6lXHy5KnB2dnZ60+ePDHLbrN3N5qM8GMD9SwA6a40BKEUZIX7/KtIgYjQ3u4Gj8dd
l5KUUrVp86ai3jG9b9fU1Ih79+7BqlWr8NsVBehXRUF+4aJt27blJyTGdcvKcoLD4QCj0QiaZtCd
RjrJUnafJF1HwDC/gxtRIAgMbGGASBRUFKQEvbTjc1lEkCjB6/VCS3MLvH37Fj5/+lyXnZ2zedPm
jcfa2tqgubkZevbsGQXoV0RhQfGyXbt3Hhw4cAAkJCSARASUks0j1/lHRmaEPRcIyANENx/9cAkm
gUljsngV8mZ6Qu7kO3cLAZom4MsXF9y//wAmTpiwu6q6ai9tcT8/ogBdOHdxwLgJ404MGza0tx8e
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
3xuuQUSkThoibyUmKpt4KAzDDFauXMG0ep1Ou0Or3abVajE+PrE3RZLACi3LTK3SUOJpqiNkApI1
b2fCnKVBOfihAugga+PGje0zTz7z4RCCNwB67FPFJJBcBFJAfh2FN1oSr91dPeLuVYyNjdNoNmi3
WnvXVqtNo9FgbHQUSUQfm5GMETJ5GM20nQotZU3TvoKSB2bPnv3C7p/jyQotoEOgCy+58JGJ8Ynv
YggOgXmuJk9qFJU5t+5/WjHz7kn9nUW306HdbtPpdunuXvu9Hr09x71e8hwoMwQSSlu9HSD5AuJ3
1bvg/Avu3P1z9CuADoGOP+n4d3fu3Hl9CGG4e03dxsDHSVs21z0pc6TdDcivCREV+eHHHxgMh7vX
PoN+n/7udTAY8NNPPxMk/27er5Itfu2vtHnz5juvufaa5zgKLWWSOBr1wYcfjJ579rlXvP7G6zeb
McOKGsYBWVr7wQwkP8Fy4/GkddFkWAHTZ8xkYnzc25yGgwHdXtdTHq9l8Z/6I/qbNm+6+4nHnrhj
7bq1ZQXQIdbnn39ePHTfQyfeeOuNNwAbgOUcHeotWbLk+YsvvvieSy+79OnVq1YLVwXQIdeTTz45
s9frzQI2FVbMjorGESjDMDNFxc+3bt366urVqyc5/PqlXToQAAAAABDkbz3IxZBACIRACAQCIRAC
IRAIhEAIhEAgENtACIRAIBACIRACQZnpL1WQM5tkAAAAAElFTkSuQmCCClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TRGV2aWNlQDJ4LnBuZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1NEZXZpY2VAMngucG5nCShyZXZpc2lvbiAyNjkxMTEpCisr
KyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
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
N7hy5QotAMM4qgk+clQ0hog2jUMSi0DhpglYjGYq7f9D7GPAOxfvZ8kBHXozs6edPXX21ZeuXLoF
wN1wWzVvRTNjNAus2MuFSI4pvYzIigfabWXLjChMUWjWNru6LCZUbihDCi3Wvb31VOXa29vjTne6
M1GvpZH4KixEHKXfXjg/8YSm0v3YQcM5E8MZUX905uixf51Uhs24uWPlfRYAWkDo7ne6+wt/9uuf
vZIydwc3HLGA3TRMT9mQxvsRf2eWbFVvRKz9oaXzwusL5qpxVaWYx3jmAEQEu7u7nDp1itX+yjiC
iWcTacTYT7mfYRhw9wot6erXN2Bt1TiBUt3/N9i7gQ/eIcFnAaAFhB7/kMc/7nvf/t6bz3fnQY83
noqBgEaCSnUcbJ5SPYZIjWY0U55YEZe8DMkxoBLjNp98MVWyIqbDzFiv16z2H1uZgzEBzjiOTERF
nUN7fc5mP0v28O+yFStGxgV8ABYAWoDo5JGTr17H+pYL3YX/5N+Ju09A86fMq9T/H9wa5SDwLLYA
0AJCyJ4EvALY7IsiH7qNLWOO/1FANBvvM5/O+h9jbs7a10QGXXQfA772u3bqQAYAAABgkL/1Pb6C
SDwCAhAQICBAQAACAgQEICBAQAACAgS0AQgIEBCAgAABAQgIEBCAgAABAQgIEBCAgAABAQgIEBCA
gAABAQICEBAgIAABAQICEBAgIAABAQICEBAgIAABAQICEBAgIIAA8lwn7YL8zIkAAAAASUVORK5C
YIIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1NTaW11
bGF0b3IucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmlu
YXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246
IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvSW1hZ2VzL0lPU1NpbXVsYXRvci5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWlt
ZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1NTaW11bGF0b3JAMngucG5nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Q2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5
cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPU1NpbXVs
YXRvckAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAg
IyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29s
cy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L0ltYWdlcy9NYXZlcmlja3MucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFy
a2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5
IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01hdmVyaWNrcy5wbmcKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVk
OiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9NYXZlcmlja3NAMngucG5nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjpt
aW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01h
dmVyaWNrc0AyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICsw
LDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBU
b29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL0ltYWdlcy9Nb2phdmUucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFy
a2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5
IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01vamF2ZS5wbmcKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Nb2phdmVAMngucG5nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Q2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5
cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01vamF2ZUAy
eC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWlt
YWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdl
cy9Nb3VudGFpbkxpb24ucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01vdW50YWluTGlv
bi5wbmcJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01vdW50YWluTGlvbi5wbmcJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwxMzEgKzAsMCBAQAotiVBORw0KLRoKLQAAAA1JSERSAAAAkAAA
AJAIBgAAAOdG4rgAAHsVSURBVHgB7NdDmGvpAobRXVXJsW3btm3btm2NzvTetiZt27Zt27Y7u1fb
VvC/edbm9CukII7jaM+ePbmkgFo0pTvjmckS1rGNXexlH7vZyjqWMpMx9KUNVShJAe8SE+WKAoco
i0tQi86MZS4bWMw8ptGfdjSkKmUoSoI8cO0ZZahKQ9rRl9GMZQKT6EZjSvIZ75IiG8vKAdVlCIvY
y2YWMoh21KICxSngr1ZAcSpQi3YMYgazmEALSvMeb4YBpVf5tGQ2e9jFTDpTjaL8VxWlGp2ZwAwG
UpV3eIU4DOi/qQFz2c8uhlKPYqRrxajHQOYwiHK8wuthQP98RRnKXvYzmtokybSS1GYQM2jLxzzD
p2FAf28VmMsBrKMFRcmWitKCqQwlyRO8Hwb016rESg5mBlXJ9qoyjPEU42HeCwP6Y5VlBYczgXLk
WuUYwESSPMCHYUC/XiFmchTTKROFyjCIkbzP/XwWBvTTunMY66lI6IdVZAydeYJnCANSWfZxAE0I
/Xr1mUIZbuXDXB7QYI5l3B/6Kh5K0p0hPMFjuTag4uzl/1Qn9OeqwkSKcSOf5MKAmnEsM0kQ+msl
6ElXbuGVbB7QBI6nFaG/t7qM5Wnuz7YB5bONAyhD6J+pJGNJcR1xNgyoJAexgQJC/2wF9KMGV/Bx
Jg+oCi3HMonQv1s72nAZ72bigOpwMn35bwotNaQ7l/FmJg2oPmfQgf+2UE36cglvZMKAGnBm+KaV
VlWhH5fwejoPqA5n0JL0KlSJPlzIm+k4oCqcGsWp9nEk5eW5ivNcRIpxoVQcexfJ068f5/n844Uq
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
H0opD9fnSowX/Nn/jR//Awy3Ci1KmHOODAAAAABJRU5ErkJgggpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01vdW50YWluTGlvbkAyeC5wbmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9JbWFnZXMvTW91bnRhaW5MaW9uQDJ4LnBuZwkocmV2aXNpb24gMjY5MTExKQor
KysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9JbWFnZXMvTW91bnRhaW5MaW9uQDJ4LnBuZwkobm9uZXhpc3RlbnQpCkBAIC0xLDM3
NyArMCwwIEBACi2JUE5HDQotGgotAAAADUlIRFIAAAEgAAABIAgGAAAAFIOugAABnpxJREFUeAHs
2GOXnHsCxdGwEdvt2GqE12he27btf322sW3bdlSzx544XTi/tXa53p4H06vV6pRSSjSfOXSzhQEu
YYQbuIP7eYxneIHXeIO3KapQ9A5v8Cov8gyP8gB3cAMjXMwAW+lmCa38gSNMieYzvXho2NI8tnCQ
Me7gcV6jwovcx02McDGDbGc9naxgEXNpZybTmYo8e89M2pnLIlbQyXq2M8jFjHAT9/EUT3AHYxxk
C6to4zf8gdSgZYAapy4OMMH9vESF57mJK+hnHctooxZqYxnr6OcKLW7iER5ggv2sZyFH+AUpA5Qm
qTb6GedBXqfCfVzJbrqYTT03my52cyV38CDj9NPBTH7MMVIGKJ2HpjPE9TxB4VVG2UsHLTRDLXSw
l1Ee4HqG6GAa36NKygClM6yXER6hwlsMs4OlpH+0lB0M8wCjbGchv+FnnKSUAUq7uJkXKdzDAKs4
9dIqBriemxliJUf4PikDlP7aLm7nNSpcw2bmks6+uWxmmNvZx0p+nzHKADVr67iFV/9pdDbQSjp/
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
E275Gmo0QUsXaMlMZy2w0hl61LO7vOo1O58zc0huDa98AbegO+Px2icqKH4NLeyobiF7DUxar0f0
F7dk/7moEf3Rh2ylkCz6vx7Rn0IIZkKk4KmWaa3qV7Q+o7mI9gQQjJjWhtT2cZId7HmDcRBN7DiN
2vqv9o4SsaEoFrv+/5ihzHjGMc+MXV1lbXV1fX0P0At8tewYg4fhqIALRIRDE2kI23oPcneKdw6h
NQYVmqBjG0zuAbd1oCqBsA3QqVup1D2q1DvY3N8jf+fbk23sLTY699fCNVe2MVi61vhTxu6Lyf0n
9HsnY+dahNaF9K2zUvizgtkzIv0FN/mayHBXcveE/wszjU/u2ktqmqtCxvUJc5uC+20h0q4m0r7G
w6Hg4Yh4Veg20DgEFkdQug6OLTKYXL876t+efP7XFzbMlWR3IM/EAAAAAElFTkSuQmCCClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvUGxhdGZvcm1SaW5nLnBu
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9QbGF0Zm9ybVJpbmcucG5nCShyZXZpc2lvbiAy
NjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9QbGF0Zm9ybVJpbmcucG5nCShub25leGlzdGVudCkKQEAg
LTEsMzMgKzAsMCBAQAotiVBORw0KLRoKLQAAAA1JSERSAAAAoAAAAKMIBgAAAA1bFYMAACRkSURB
VHgB5JUBpFpRGMc/zMPAeGYMAjbP1JJlmCYyAEuRXgELk1S28RJFGSnQklJVpbJSCi1VlVLaUgTB
IIPM0KBNxaqqdvc5iL0720sy2sdPuJ3vnv//+59zIZVK/ZFQKAQ+n4/g9/uPEaItHo9vNScSCYhE
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
t3EE3qB7VyDQL2CjmrCQIbWgiCIjkoFljJPtkBSENamShlQyRZrYNVJf0x6M8MOBpL6eSSyhkNT3
n5OWpUPCpCsgMDhBnmhu2xUI77zzTiQB+b6IkSgkySqAZBeJBM6fYXkShSRFBgiXCQH/HxOB/aST
fC0nAAAAAElFTkSuQmCCClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMv
Q0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9J
bWFnZXMvUGxhdGZvcm1SaW5nQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9QbGF0
Zm9ybVJpbmdAMngucG5nCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9QbGF0Zm9y
bVJpbmdAMngucG5nCShub25leGlzdGVudCkKQEAgLTEsMTA1ICswLDAgQEAKLYlQTkcNCi0aCi0A
AAANSUhEUgAAAUAAAAFGCAYAAAAbyUa3AABOaElEQVR4AeydBXAcV9LHP7MkR2DZlmNLJkEsW5aZ
FGawvzCjw3xmLoc5upiChrrIOZlJcWJmZgiZZWZmCi32v6o31TWn5xnv7Eazq+6qLmlBs7Mz3T91
v+733v+pqKioqKiouJdirMVJS5KWYi3NWkZoRAHKr/H7+e/5WCXE8VVUvCF//vnn/+jZs2eDpmfO
nPH9tP5ufez4WC7Ow/Pq5jzPnTsnH/sAVwJQYlBFkpYljY6NjY1r0KBBxTZt2iT37du3wZAhQ64f
O3bs7ZMmTXpo6tSpj02bNu2puXPnvjh//vw2CxYsaL9w4cKOpJ2gixYtwu8d8Bq956WZM2c+Re9/
HH+bl5d359ChQ2/4/PPPG3Xo0CGlRYsWCXEk9Jkx/NmRfC6l+NyK4zw9fD+gnvh863mYHzt/bxC1
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
oSyJKzELvYp1D9wf983PYBTHz8RnU3B/onPiZ6zk/CVWi3kPc2ufwS0KLe7Yb7/9LscKLTwnQO77
DBo0aFukaX2wFlgFLA+WlrQuIfJrBY1zEeBYLUDJ40FzEWBVBAEWxBQg8AJMdgH6KrDd7leoCa8C
A1eEugotLDJU0eBILUMp6FPBdIkMG0ATWAQsDjrBkmBZsGJubu7q48aN2xx3SNsTkjkCNw06ed99
973omGOOuRHVyXsvuuiiJ9AJ8zxWXH71jjvueBvR1wf333//pxgr9yWmhH0NvsUKLSjfCd/jf/It
IrVvsM1XGNrzKXq0P4TQ3sXyUK9jXy9in09h3w8ee+yxt+yzzz6XIoo7Y6211jq+u7v7YBzLTnl5
eZvh2NYDa4PVwcpgRbAMWFJk1y7CW8QRXoOkebrkwSQd9UmeDbeqwA5VzvlxxVeixRciv9wkkZ+v
AluPf/75JzIJeqQmVIbxO0FyVVRYoCh0KFJSJOWqbZBUh1STtSAHgyEiyOFOxDhaJDBWhDAeTBBJ
TBFhzBSBzBaZNIMWEcwiEl0tJiJtA+1CB+hUdDi0gzYR1uLEEVeLCLoBzJFjmC5Mk+Oa7MhsAhjv
RHJabGSY5MFgLbgQyem2vnKhNLy9L7RDJNfBkJ4hvgRKj/SxY7wAY4gwIZFhzAjRGP7iyDFEko4o
dc9xmUN5CJUaUCVUh7RD9hU1Ci05PgcnHUpamjKiZAbcvAyRW0hEp8iJITpNxkCUnhfgwBCjJsOS
pSHOLDW+LGy8oIVEmib5IRTMI0VESTkOej8F80h+GEb6c6Kgz0OIwKSzIprQtNziSC55ZOcFmFQy
jCFGNS5QPZcAjIITR7xZGpAdkZxeJjsiWSFYac+wpKRJ2Pm2r7vIoksG6XkBJv8jNVmIIVlPYuSU
mjQk48ML0D/0t2/yytuT0FpIQh5egP8CEPvlQws/NPwAAAAASUVORK5CYIIKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9TaWVycmEucG5nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Q2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5
cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1NpZXJyYS5w
bmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdl
L3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9T
aWVycmFAMngucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEg
YmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMg
b246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvSW1hZ2VzL1NpZXJyYUAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWlt
ZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9TcXVpcnJlbEZpc2gucG5nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fu
bm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUg
PSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1NxdWlycmVsRmlz
aC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWlt
YWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdl
cy9TcXVpcnJlbEZpc2hAMngucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFy
a2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5
IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1NxdWlycmVsRmlzaEAyeC5wbmcKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Udk9TMTMucG5nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjpt
aW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1R2
T1MxMy5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMK
LWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9D
SVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0lt
YWdlcy9Udk9TMTNAMngucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2Vk
IGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNo
YW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1R2T1MxM0AyeC5wbmcKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Udk9TMTNTaW11bGF0b3IucG5nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjpt
aW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1R2
T1MxM1NpbXVsYXRvci5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0x
ICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4
OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL0ltYWdlcy9Udk9TMTNTaW11bGF0b3JAMngucG5nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRp
c3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFn
ZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1R2T1MxM1NpbXVsYXRvckAy
eC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWlt
YWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdl
cy9Udk9TMTQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEg
YmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMg
b246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvSW1hZ2VzL1R2T1MxNC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10
eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Udk9TMTRAMngucG5nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRp
c3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFn
ZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1R2T1MxNEAyeC5wbmcKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Udk9TMTRT
aW11bGF0b3IucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEg
YmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMg
b246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvSW1hZ2VzL1R2T1MxNFNpbXVsYXRvci5wbmcKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Udk9TMTRTaW11bGF0b3JAMngucG5nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2
bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2Vz
L1R2T1MxNFNpbXVsYXRvckAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBl
CiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL0ltYWdlcy9XUEUucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZp
bGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClBy
b3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dQRS5wbmcKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVk
OiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XUEVAMngucG5nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Q2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5
cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dQRUAyeC5w
bmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdl
L3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9X
YXRjaE9TNi5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBi
aW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9JbWFnZXMvV2F0Y2hPUzYucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUt
dHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2F0Y2hPUzZAMngucG5nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90
IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBp
bWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dhdGNoT1M2QDJ4LnBu
ZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2Uv
cG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dh
dGNoT1M3LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJp
bmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL0ltYWdlcy9XYXRjaE9TNy5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10
eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XYXRjaE9TN0AyeC5wbmcKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3Qg
ZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGlt
YWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2F0Y2hPUzdAMngucG5n
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9w
bmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2F0
Y2hPU1NpbXVsYXRvcjYucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2Vk
IGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNo
YW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dhdGNoT1NTaW11bGF0b3I2LnBuZwpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRl
bGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dhdGNoT1NTaW11bGF0b3I2
QDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFy
eSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBU
b29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL0ltYWdlcy9XYXRjaE9TU2ltdWxhdG9yNkAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XYXRjaE9TU2ltdWxhdG9yNy5wbmcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3Zu
Om1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMv
V2F0Y2hPU1NpbXVsYXRvcjcucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQoj
IyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJ
bmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9JbWFnZXMvV2F0Y2hPU1NpbXVsYXRvcjdAMngucG5nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fu
bm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUg
PSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dhdGNoT1NTaW11
bGF0b3I3QDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAs
MCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRv
b2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvSW1hZ2VzL1dpbmRvd3MxMC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBt
YXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2luZG93czEwLnBuZwpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dpbmRvd3MxMEAyeC5wbmcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3Zu
Om1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMv
V2luZG93czEwQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEg
KzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvSW1hZ2VzL1dpbmRvd3M3LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XaW5k
b3dzNy5wbmcJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJr
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
r4gPeYnS6Ax7WRKxnL1EceFAkvQI7/EF3/MlX/EaL/MURdEVTnOCLWxlPds4wC0khQPFdg/xCi0v
8Trv8Cov8wLP8jSP44ByAK5zmYuc4zQnOcRxznCKOyRM9wCmUa378i+URwAAAABJRU5ErkJgggpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dpbmRvd3M3QDJ4
LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XaW5kb3dzN0AyeC5wbmcJKHJldmlzaW9u
IDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dpbmRvd3M3QDJ4LnBuZwkobm9uZXhpc3RlbnQpCkBA
IC0xLDE0NyArMCwwIEBACi2JUE5HDQotGgotAAAADUlIRFIAAAEgAAABIAgGAAAAFIOugAAAivZJ
REFUeAHs3AOsM20bReHXtm3btm3btm3btm3btm3b1kry/MZ31J52Zq/kio1d3uP39+/ffmyZCi2B
aIiCyIiECAiPcAiD0AiJ4EYQBEZABIBf/MYPfMdXfMFH4z3e4g1e4SVe4Bme4gke4QNsmLL2AKlQ
SID4iIs4iI1YiInQ8O3e4j7u4S7u4DZu4gbeQWmAlIsXG8mRFEmQ2IgEd+0ZrhpXcBkXcRdKA6R8
qSBIizRIjVRIiRCweh9wHudwFmdwGl/ggJQGSPlHJmREBqRHMiiiSziJEziOY/gJpQFSXiweshpZ
kB7KY53EERw2bkFpgNRflBY5jeyICi3vpR7jIPYbp2FSGiCVFnmRxwgJx6TeY4+xW2Nk1wFSCVEA
+Y0wUM7tDXYaO3AdSgNk2YKhCAotoxDiQLlGd7ANW7EFn6A0QJYoFYqiGHJBuXb7sAmbcQ5KA+SW
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
bfE+pYboJvbHe2WAOr0p2JrlSKmeO48DeQRlgKql/7M1G5NSPXYkB/ImygBVW73ZsvgLKdVDn3Bw
8T3KAFVzq7E5k1DLpfQEh3IapQxQLTQHm7MQtVhKV3Eot1CX9aBeu4XXeZWNqaVSOpLDeZlSbgHV
Yl3ZuBiLlKq5lziy+BVlgOqh+diQhUipGruKo7mOUgaonhqVDYrfkVI19BXHFK+jDFA9tzLrMQOd
WUr3cBxnUsoANUITs27Rg44spZ84vngSZYAasdVZm+npiFK6lxM5lVIjD1CakLVYk9+TUnv0JSdz
Ek8jlTJAaWlWZ35Sasuu5VQuJGWAhtu/WI1VGY/WlNJznM5pvEfKADWpaVml+B0pNaevOKO4n5QB
alGLsRJLklJTupizuIxWlwFKfVmhmIOUhtUtnFN8S8oAtWn/ZLliOroopfs4r3iflAFq10ZlmWIq
GrP0EBcUr9OhZYDS6CzJUkxLY5Tu5yIu5lVSBqhT+y9LsDizU5+lW7mUS3iblAGqqv7EosUidCfV
dj9zBZcXn5EyQFXfAixU/J9UW73JVcU1pAxQTTYJ87MAs5Cquzu4hmt5grooA5T6MR/zMg+jkaqj
17iB67mOb6jbMkBpbOZizuJPdGzpM24ubuJFGq4MUJqc2Zmt+D2pffqS24pbeZRSygClyZm5mJF/
07rSu9zNnZDRyQClpjQG0xfTMSWpaT3MfdxbvELKAKUW1p1pmJqpmJIJkNIzPMxDPMgD/EzKAKV2
qA+TMxmTMgkT8zvqva94kid4nMd4lO9IGaDUSY3KhIzPeIxb/INa7QOeL57jWZ7mdVIGKFV5f2As
xmR0RmNURuH//JHO7nPe5A1e5zVe5WVe4gvqrJQBSr/jP/yLf/IP/sZf+Qt/4o/8nv5FH3rTkx50
5Vd+4ke+5zu+Lr7kcz7jEz7mIz7gfd7jHb6i40oZoJRS+g3B03KshLVGtQAAAABJRU5ErkJgggpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dpbmRvd3M4LnBu
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XaW5kb3dzOC5wbmcJKHJldmlzaW9uIDI2OTEx
MSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvSW1hZ2VzL1dpbmRvd3M4LnBuZwkobm9uZXhpc3RlbnQpCkBAIC0xLDExICsw
LDAgQEAKLYlQTkcNCi0aCi0AAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAALx0lEQVR4Ae2ddXQb
VxpHJ244Wwisk3Jod8vMzMzMy8wbKDMzM3PDaIXtwDa0dmPH0DBzYpAspt/+qnx/uDr2saUnWSPp
u+fcgm1Jo5l7NPNG0hsLQL65Bz2YnkJvpg/RD6iDltF1tI76aVT0y8/Wyd846Ady25vlvg6W+7by
yVx/gh1pf3oxHUrfp/PoMrqDBmFOUO5rmdz3+/JYF8tjd9SAsssB9Bb6Gi2ltcgctbIMr8kyDdCA
7GcBPYoOpzPoLtiXXbKMw2WZCzSgzDmYDqFzqRfZh1eWfQgdrAG1j93olfRrWovcoZZ+Lc+tmwaU
evvQv9Iy5D5l8lz7aEDmFtJ76CrkH6vkuRdqQInbkw6la6GslXXRUwNq3c70V7Qa8SjVsm46a0DN
ezqdBqU1psm60oDEnvQ56kFbUTyyznrme0AX03IoyVJOL87HgHrQp6gfpih+WZc98iWgw2gxlFRT
TA/L9YBuoJuhpIvN9IZcDKiA3k+DUNJNUNZ1Qa4EtCf9AO2N8gHdM9sD6kcdyBSKg/bL1oD60/nI
NMp82j/bAhpkq/M7SjkdlC0BDaaVsBtKJR1s94D60wot2BWlgva3a0D96ELYHWUh7We3gPakRVCy
hSK6p10C6tD+53mUQATY6I1gSX0YvnDS54k62CGgB6CkLZK1ngjKGMnUbUG8vMKP35Z6cM6cRhw1
w4W+4xuw38QGbGJISfJApgO6noagJE2U1gaiqHSGMX5LEK+v9OO+Sh+une+ORdJnQgMKLUbXwxpJ
v6mjdAQdSUfUox8D2uxLOqAQvT5TAR3S9jdGle3+KJY2hDF7ZwgfrQ1gSIUXl//XjRNmuTDQ4UTX
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
si2tdg1IvJ6GoCRElNYHo6hxReDYGsQLy334Z7kXN3JkeMwMFwotJzZgj9FtOIFqHlBItqGVkYDE
B5AylFAUWO+N4Lv6MKZvD+GNlX5wpBg7mD9mpgsHTJK4UjNT/QPUynRAHegHaBc0rq2+3SPFrzcE
Y9fJeLjSi12BKJLgA9oh4wGJe9IiZAtKkWwzyxYBif3oQtgdZaFsK8tWAYn9aQXsilIh28iyZUDi
YFoJu6FUyraxbB2QOIiWwy4o5bJNrKwISOxP50PJNPMNdluZC0jsRx1QMoVDtoGVlQGJe2bkPJHy
AWSontUBiQX0fhpEulGCsq4LqJUrAYm4Ia1vwCqbZR1bYm4FJB5Gi5FqlGJZt1ZOByT2oE9RPxRT
/LIue1ArXwIScbGeLzKiXNahJeZXQGJP+lxCXxlSPLLOelIr3wMScTqdBqU1psm6skQNqImd6a9o
NeJRqmXddKaWBtT6bm0oXQtlLR2a2O5KAxJRSO+hq5B/rJLnXkgtUQNK0j70r7QMuU+ZPNc+1BI1
oBTZjV5Jv6a1yB1q5TldGTcbqgaURgfTIXQu9SL78MqyDzH/oJcGZGIBPYoOpzPoLtiXXXSGLOtR
cW94akA2cQC9hb5GSzO8q6ulpbIst8iyWXFqQDa2Ix1IL6P30s9kg25I8Zlvj9xnqTzGvfKYA+Nn
+tKAst8CWkgPoWfT2+m/6OP0dfoJHUUnUoc4UX72ifzN43Kb2+U+DpH7LKBWPvl/H8aMT7HOdkMA
AAAASUVORK5CYIIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBUb29scy9DSVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdl
cy9XaW5kb3dzOEAyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2luZG93czhAMngu
cG5nCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
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
ZWN0KmBkjY3Oc+xZ9gxzUBCiAZKxrJqdyc5gM9nprAKlL8lqWQ17mb1kp1XdEA2QjJip7DR2Ci07
mb3SOhrFazdbb61ja1kda0ToiQZIJrEZbDqbxk60oTqBTWGHYeS1sW1sqw3LFraZNbB61g7RAEnJ
qWDHs2PZMfZO6Uh2BKtilTZQE9kEaywbw0axOIswj/WxXpZi3azDStjAtLIWto/tZbtZM2tiO1kS
ogESEQnS/wcsf4lX0c+dxAAAAABJRU5ErkJgggpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
SW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvSW1hZ2VzL1dpbmRvd3NYUC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFn
ZXMvV2luZG93c1hQLnBuZwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2luZG93
c1hQLnBuZwkobm9uZXhpc3RlbnQpCkBAIC0xLDU5ICswLDAgQEAKLYlQTkcNCi0aCi0AAAANSUhE
UgAAAJAAAACQCAYAAADnRuK4AAArk0lEQVR4AezXA+hdYRyH8dm2bZthRpgdL9Js2/bSRZwdZoTZ
tm3+7ac66dr34PfUpzfze/Dmzs7OzmWw8qIaKqMmGqIGqqAiyqIEiqAAKFcakvAPP/EVn/AOT/EW
n/EBmTBMeh9QPlRDQzRXzkYojzIohfwIp3T8wS98xxM8xX3l/IAMGZB2qo2O6KKojTKIR7/wGpcU
V/FaBqSu8qAZ+qE3WqMs1NhP3MZpnMADZMmA4lM9DFS0Q2FoqWTcwFHFCxlQ9CuMXhiDPigDPfQL
p7ALZ5AsA4ps5TASZrSBnrsFJ/bihwwovCrADCvqwki9hB1OfJMBBVdpWDAOtWDk3mAHHPgtA/Jd
AYzBDDQBKUmPsA67kCYDcq8rFqIPvCedwlJcBMmASmMOxqEI/CclYQdW4beRB9QXa9ASwSfdxSyc
NNqAimIepqIgQk9KxUasQKIRBtQE29EdkUs6j/F4hJiVB7FsGE7LeKJSd5zGMD0OKA/mYReqIDpJ
VbAL85BHL5+w4tgEC2KX5MAU/NfygCrBif6IfdJxmPFFiwOqhV3oDCl+XcYYvNHSgOriIFpCin93
MRQvtTCgejiMZlBP0gMMxgs1D6gWjqIF1Jd0DwPxRo3X+ErYI+NRdS2wB5XUNqDicKBjLimHvbcA
juvY1nC/7g2jGWlkgWWGmBlixycMh99lZmZmZmZmZmY+zOfEYXDQzCSwaHj23t1PHnVF6/UdpZzE
1uT4vr/qr96zFdZXa62/u6fyetft7ndVfL0ApNw+zyfy/+vjRZ/ofmeK16iQ164fel1uElqwzRI0
prDlYWiUIU2wWROMAR1BEKHyfaieJajiIAR5/g/pq9ws9NOdHKI/y/XUEDovW7qIHX0Opl7EjB/F
VoZnfBWgKWgk2GaGbcy4aaBpsYkFoyHoht4h9OodBJv3EW66HT24AW5+pcDnA//SCYC2Au/v6NlW
UsGMHsWcPYgdew4qp4EJVAzYANtk1gmzwDTNnBsZNGZXW0/I6hmmkWKsgWI/0cZddN33KeT2vx3i
Pm5iXQTeDBxeSIC6gXcA97HQMk3MhWdID78Pe+EJbPk8SjVR+RhVmHE+hFCDqDa2MeNWxXHQuHc0
MweUxSSQZQotk1iyRkZarWONJVq3np5P+Cy63/wFkB/kJtVH3FxUWSiAfhb4ARZQtl4ifeJfyJ59
L2bkCKgU3Z1D5XOQC1CxQuVmjUK0KgdQYlwLc++u2j2bpsWkiiy9utJydtUJZJUGWaNO16YN9H3h
V9L9ls8HctyE+jngBxcCoLcC/w3ELKDq//M7pP/9y6j+flRPHpXTs8BEqvWMBMhYbN1gmwKiOWjE
u1ZFmq0+/xsgV5Vm16TUxKZ1eu+/g6Fv/G6i9bdzk6kJfDLw3hsZ4wdd/FtQeKwxZEceQfX0obq6
QCvQgAL0rJUzKDCAtWBo2b702c6u7hn3M2tx7wGrWo8Y5lYDuisHcS9X3v04x774y7jy5z+LrUxw
Eyl2v9vBGwnQ9wE7WGBll09hho9DLgat5mBpWTkDAYDFZgIWZ2uAl3z1s/tjWj+Wtg4qYcAai1Wg
urtJKoqTP/SrnPubP+Mm0w7g+24UQHcC30QHlJ14Ci1Vn4YgEFVHoZxxn1EKLVddHDDSAioDyiL+
OIW14Bu34n5OyxalNbZ7USup3YT6JuDO6w1QCPwUUOgIQMceRQUOFmfZwpQCAmYfMgRErdXZVZfM
/SxzlQYcMLLdgXWtzK9GGLDNBLViOf379nETquB+1+H1BOgLgDd3BJ7SBNnZZyCXA9G65tqXgAgc
LAIib+bBGevswMKCRVQda90KLe7nDiZFVm/QPQNPrm8QnKy1vHD6Hzn44u/SzKp8nOvNwBdcL4D6
gR+iQ8rOvQhTlyGMQOEgUiilXNsSLcy2gHGVRwAiqpGsTg4IN+PgYBI2YhUwZdZSvOMOFHO6PH6c
jz33S/zVf/wOv/B3X8fxkUf5ONcPAf3XA6CvBLZ0DKAjj6JsAoGGQLYvV40CMUg7OHCAkDkSBEyu
KrlVgCGMUaKVAYifpxl2US+LbjuA1PnRx2jUE9JGP0ePvcAv/+238fcHf4aJ2gU6qUvTx3johf+i
mdR4hdoCfOVrPUxdCi18Cx2STRKyE4+j4hilras6OCuQ8w+AAWlrgUyA4w/Xlrl3VokEZpFAybnI
1Jvk9u+msHadaF9wcfwRShVFI4N8IY9J4N0P/QvPnPoYD+z9LO7Y8Kn0di1hIVRuXOHk+NM8PfoR
nh9+nJP/dpnPfOAMX/C538wr1LcAfw0Mv1qAvgJYS4dkRs7CyHGIYnDwKDE8owREeG3KrVbOP7J9
OTBAxHdZddwzso0ZS5Yk9Bw4QBiE4DRVGZ3xEaZLMdq1WB0q4rjI5PQ0//rg73Pw6H9y24a3cNst
n8Cy3k1cb01UL3J28jmOjj/B8YlDDNcvk2hLNJXDThWIowKvQmsdAz//agAaAL6WDio58jA0ypDv
FelLxnfZvgCXrAREXhrDWW4aWmgX3xGzD241FpPrYuC++5EanniRanWU6VIXQSjaq4IwjAjiHJPl
Sd7z3N/w8Jn/ZOOSPWxbdje3DOymL7+CXFjglSgzKdXmJFeq5zg79RynJ57mYuUUU80JEgtKRURB
gSC0NIYzYp1j794DvBo5Bv4QGH+lAH0esI4OKjv+GCrUoBEW8T0QlSg18+8BWZBgKQPGeMOyAbzP
1gHmoMI0E8JVq+jevAWpc6MPUq2mVOuKuMvtiiu3uucgCi0J4pjUGl4YfYTDkw/TneuhP17K8uJG
lnSvpzvqo9g1SFdYJAotYqw1NLM69bRMPZmmlk4yUb3AaPUM5eY4U80xEpNi0KAi4qvQWEixpNai
UqicS1i5ch1rVr3qqrfOsfB7rwSgfKerjylNYC+86OYfhZLwyEE6ABRe8rJYrwotuXdieJ4vvjNv
fDeNJrndu+kqLgKnerPKlalnmJyOsTiw51qr+2e3LjlCEGjiMI+ONUYZxhrnZ3waNQotCi1FoAIi
HRHoAAVYm6GswYVODAotg26tQRCjVI6UVjJ0Rdb9+ymgYqmOpGy/fwdR1MWrlWPhz4HatQL0pk5/
pys9eQg7dRnVW5gbmDVe63LVx1jP3oAs3xvcO7/a4Cw2Eh1suL9Wai1L77sPqdGpU0xVZjwdEYQS
HtduFWIFBaCUG980WgdolZuxQqGQ/1oaTaDC1s80ynVpS+rAvvpscZAD0gSQXgFT1+zdezuvUXsc
E/9zrTH+SwFFB9U6PCUDrUXVUaAcRLISyYNRI0hwg7N1K/L8CyWBcauAycEj47saHKR3336kLow9
QaNRo1JTBIHXvhSyEomKBI4kt/pqodSCUErO9g4dZ+/czhFVu5DS3zvIunWbeY1SjgmuBaANwP9D
B2Wb9dn5x8V3/N1neaCKanvCTobXvjxAvCMLvDkIYWsUpt4gt3073avWgpOxhpGJxymVA5qpA0Mr
t0poAAXarUopFMxjhVLeZ8Qgbz1wPKhw7YsGVC4mbNy0ib7eIV6rHBMbrgWgTwV66aCyy6ex42ch
9k/ffSt3+s488R1oV30MgGtPfgotk9Ed9xnI0oye2w6gRVWYLA8zXnp+tn1pUF61wb3DvUNUIIWT
eMKrOPKTlRbR0K9GBrAazBQ0xzP27rntejWTXsfGywIUAp9Jh5UefwKVVCDQIGYepfz4jmxT7hl/
aBZ/jJhphI3Be69kQoPMYPNd9N5xJyCPL56nUp2Q848Dxm9ZygcLYK7SKFdrsKLqKPHHKPBAkRvs
PmAoaF5OyeeKbN9+K9dLjo3w5QDaBuyng7JAdvghVBigZOpSIr47ywHaBwYJjTdAO0BAtDIJjJyN
cOlLr1lD7/adSF288ii1mqHeBBWKecdf/eoEc4AIS6GQb13xbGPrGQuZpXI+YdXKNSxftobrqP3A
Nh8gv8/l6aDM+HArvhPn5Dzh7N1ERN48lLOOB5Kfzqx1MCl/gG4T3yFrNOnefxtxoVvE9xqjk09R
KkdYQCkveSnRxmaf3XsrR2XcE6j5ZyJE65qx+zy3WrlqoMxsfJ8BPtAx11F5fz7W3vPb6bCyU4ew
5RGIItDME9+dZ+/3uOSFbGfyWAMlo7pVcpbwKo98nmuHmdL03n03UsPjRyhVzzM5Fbn05e/94GCS
M5ASFchZARIWOWA7qCQgxktcvlGQjhlUErF7z21cbzlGdDuAVgH7Og7Q0UdRyoJWnuUvxoHkqkr7
jUOw811f9ROXUXL/B5iDzSQpdnCA3j17kTo/9ji1WpVyVaND2aoA5bUs+ezHdxRSGkGVqD5tbYVF
VapezFg8MMSGddu4AdrnWPEB4k6gnw7K1Ktkp59G5WK5jwIKLVD+7rM3TQotYJAwOVBke8OP79YK
LbCs3AvCNBp07dxJYdlKEF1zdOopqtWAJAPtgBYQiQQmq5D15x45KDtu2sd3V4HAr0a4zy/Fd0vl
QpOtW3fSXejjBqjfseIDxN10WNmlk9jRUxDFsn2Bs3/32WZGDtEyjflDdJvdZvkO8FfnLM0o3n4H
WmucGC9dYLJ8mInJGB0gYFdeApNWoJQEBF9Y2soBIt1+T0iBnbSk07Br515uoO72AYqBu14X7Sur
Q6Dbn77L+0By8PUHabeSAQaUse7kXbWJ8cpPY4CrRpnF5Ass8uL7xSvPUK1doVQJCQLcbCMG6ZdW
5d4JoBxBIDYULa7IOuPe40d1CwIYo2Q7AxQ0LhsKLbkiW7fu5kbJsRJLgJYB6+mgrDFkxx9HhSFo
2loF4j5Q5u8yy3aFd31V3nP2ZyD3zrtI7+I74bp19Gzc5N0+PEilArUG6EC0LN/+kQYSDgcRIqHJ
n7il3bAMcgayLn1ZVGYpn2+y7paNLFm8mhuo9cByCdC2js8/E8OY889DLhYbbs5i/iFQgMK2uyTm
nmUS83ea8VuZnQcmF98L+/cTF3pwotoot3afSyUX30VMRyYv17YETEJKbvUg0JqrRjBPfAcjq5GE
rAK1EcO2bbvQOuAGqh/YIQHa1fnd5yehOg5hBDJ1KT++u/6SZZClkKazq0nn3iUJJE1oJthmik2N
S1pgAUTi8uM7VgzQYUCfd3lsdPIEldoFpkp+fFfOHkS4z358FxDN2boW5sV3AYoESRoNyZghyEJ2
7bqVBdBeeZ1jS+fnn0fafONUtgaLCi0VKgotUESgQmyUw+bz2CzEZBpSIMtQWdIytQotdmqabLqK
Ga9iE4PNFNbBhDzaMAotrPicpKihIYq7diN1duQharU65WoRHYm5RfurkqsjyUHmVR4nUOKzg4dr
je8WaudTlg6t5Ja1W1gAbXUAEbkPHZNp1DBnnkG10pdCTJYtYIJ8hA0UWRUalzKakxmNqQyTRZiw
jjEhBCFqxjZNsDZFkxKYGjqArkXdRH05cmlKOlanMZJgGgZj3QDtty93+h7dsZ38kmU4kZmMkcmn
KFdC0gxyOf/0HWh3+i6qD1jAfZ7PCi1Aue5sBCjMG99Vw1K5mHLr3q3ku4osgLYDYeiGoSV0UOnZ
w9jxc6iuELDoq9D0XoUGGlM1KsemqI5DVlhBtHQ7wcpbKNyzldyS5QQ9i1C5PDqOW7ZZhmk2sfUK
LVl5ivrwRWpHn6Z86Rhm/DBduYT8loC4nKN6JqExkWJR4M1IWZbRf889aOZ0Zfo8k6XDTL4U32XK
Eq3Ki/K02W3G30/0piPbZs6Rb8RA7U7fLWkJ9t16OwukpcCAA6izA3R2+GFU1iAc6IWCol6pUTla
odYowtAecnv2M7jzAF2r15PrLXJtGgSge/MuuPftWKB2/iyVF55g6sn3oEqPUdhs6KrkmT6akEwm
oDXWAlmG6elh0YHbkbo4dohGc4pSpcedvuNmIAkT3nmYe4+TG5QlPPKPwa3GH5j9Gyvi5wDNSxk9
+T42rt/OAmkQ6A+BdZ0EyCQJ5uIjsCzHxPg01eF+9KoHKHzC/Szfuof88uUoXrsUUFi1pmX7ts+g
dOR5Jj7wT6gT76Z3T4PmcJ6Jw02yxGAbDaIdOylu2oLUpfHHqFah3oS4Czc8WwfPfHFeeXs7FkcX
jjEn2ebaR3bkO3EXiAzK5xI23rKewcHlLJDywLLQDdAhHZIKLTTJhnsZv5SRv/OTWH77m8gvubEd
VQG9W3a0XD71pUy+9y/Q+l0s6U+ZeDFi6rkSi27dTxjFOFGuTTE2/TRT/uV5796zqzxy/8fJ0eLN
ORIcxJOcywCssq7yWIwcpjUwbaiPZex5YB9KaRZQq0JgNR2U0gGL3vJV9M5YM7+aqWGyllKuZ0zX
U86M1xmvJCSGGRuSbO7CWHccsGYgx+r+Lpb2xgwVY+ZTz7r19HztTzB95PMoveM36c8dhDC8enzh
nb4fploddpfH2hySasTtSW8nGmGlAFmR/Ge8Ocd6iQtg7jMKLZIRQ0SenTv2scAaCi2BFXRYyhkp
Cxen6pybaHB2okktsTM2lJsZTUPruZkZ6umMk6trRq1pqCVX16z1ThlDX6RY25dj/5oid20eYPOy
btqpd8t2ejb9PpPv/yf633CGQW//5+zow1TrDcq1mCBGHJC6Vc3BpNXLnb4jMHEvvT9GJi1pHEj+
HejqhYzlS9ewetVGFliDIbCU14us5fhYjUfPlTlxpc5kPSMXBizpjunPR8SRpqAUOjUAoCyZVRgz
46trqLBoFKC0Im3aVtUaGa/x4Auj/PF7T7FnTS+fuH85b9o1RD7SSGkNA2/9HHylWcrY9CFqLr6H
WiQu/8BXyXtBQPuY7lY/zvvty4/vFivvQrv4Xr2UcMcb3He/FlZ9ITBIh3VhqsH7jk7w4LkS56cT
wkAz1BOxpBDT3xXSEwcECi2axpBZS2bmbKx1Zu791c/GoqwlgBYoORuQNlIOPjfMxw5dYvOKIp/z
wC182u0ryQWKeeTi+1nK1ZOMT0boQFQc7/6zFsMz7p2cb/zjDPzn+Xef3WfPGsyEJato9uzZTwdU
DIFeOqTnLpT53Ucv8eFzJaqpZXF3xLJWtQnpiQKiQBHqWbsIOwuQs3EX4h1UGMC4Z5xx1z6stSig
kAuxScrxU+P8xOER/vNDQ3zdZ2zj3m2LmU8nLz/K2cvTpLYXHSSgdJuv7qi54RlJjuxOCi3aViPr
qpEPiW2Twpzdi/qljL6eATZv2kUH1K2BAh3SD7/vFL/32GVKqWWgENIbh8QCmshZK4V5qbKAqzoO
IvfOWGda76wzxj07mKwxredcpOmONU8eusg3/uQH+JE/fYqRUpN2WjO4n0LpALmkyVC/IozBgNj3
Adpfom9/+g6g5Gf3Dsf8PFHeyNamAXf6vmnTVhb1LqYDymkgpgMamazz5MUyfb05Ci2hJtKaUIOD
BmmlwMHiKgxkFgeMaGHi544k70uHBuRnO1uRQmP4u386xOd95zv46FMX8LVyySa+5Wt+nTft+0by
5T56bYNF3RYVglFKwCNvH+LXHAeOxMaXg8b9e2BFO3NtzCjINATK0l2ypBMJO7bvARQdUKjpkJ68
UOJ8NbsKLc9cxQk0kXsOg7l3gKs44OYeBw4Y0dasA8tNn/JGojgo9arSjBXQm4848eIljh++SDt1
deV5+1u/mG/4it9j94rPIBoLKTZrdOcydKSwSm4iikNTuWHonttbefOPd2M3UKAhZw2LSg3yR8uU
Hy+xdtVa9u+/m04pBJpAjgXW/xwdx2pNHIhq47WueMaBUm7OEdAIiObaGrh3WGlrwcGCNeDfG3I/
TzPD4kUR992+lpfT0iWr+cLP/QGOn/hEPvLgP3Lq/EHCRWX0UA4Tx1gdgJbnFHb+6tDmu+/gYrpS
WG0BiFJDWEpIxhpULzUx5QKDfbu5+4G3cOC2B+hbNECHlIZAdaEBajQzHjpfoRAFrvoIcALXzrR2
8w+kxuAAmatE8rOA6aoR0Igbi+61V4EcfY16ys7NfaxdPYCUbZxBhRqC1Uht3LCn5ZMnn+PRJ97J
iTMPUo8vES3WhIM5VBgBgTv7UoCzvLbqqpSrWIBFYQkyA/WEbLJJ80rS2mXOKnkGFm1h68Z97N5x
Nxs2bCeKQjqsRghML/RZ2PGxKkcm6vR0RQ4aV318mLRGIdpWmxaWGXAQkRkBiFdhELAgf+6cJim3
7VhCKH4pzcoFpg9+LlNXDMvv+U4KLas+D9BIrV+/s+XxiS/n+ecPcvjYg1x54Rh1NUbQ2yTs1dAV
EeYDdBCitUah0Fftrt5miaVRTWhWm9SmDcm0gnoXuWApi/vWsG7vHjZvupU1qzcSxzGvI1VC4Aot
sJYF1PuPjlNODP09cv5x0IjnYMbGj+7gGHDR3UtmuGojbY1xIAF+W7O01q4Q7rvjFqTK599Ldewi
J54b5OLJH2LjPf/Fsjd8D6rrVnwN9A9x7z2f1vLExBhjoxc4efoQo2OnKM18rtRGqCYlMpNgASyA
ItAx2ubp7V5Cf89iikNDrN63jWVL1tDXt4RicRGvY5VCYHihd5s/eGaaMAotvJblVSA3/2TGiOLh
WpWrPmIeEqHLwSIrjT88e5Wp2cxYtSTP5vWLkUquPESjHoMOyUwvJz5ykKmTn8PKA59BcfPXQ7SB
durvX9zyps17ALAWyuVparUSadrE7eGgtSYMY3K5PMViH0oprkW2fgyrYnRuLR3WZAhcZAF1pdzk
qctVeiIHkMbZVZ5AxnfHgRffHUhiHrLICi0kQcFY/7OzAKiRsnvzYnp7C6J9jWAmDzE9VUApSxga
wrib0kSTUx/6MwaO/yuD2z6T/OovhvweXk5KQbHY2/Krkm1C4xiUPgbT/830hUc49MIm9n/WH9I9
tIMO6koInGMB9fDpKc6VE5b1dblqo4mCq/ZTmIzvPjgOGq+FybkGkcKsNWB9kMD9HGUy7vfSV238
WUxtmEplgCAwLYi0ugotkULHiyiN1Wk88nsUj/0pxdX3kFvxWejiXZDbyGuWqUDjJNSehcrBWdeO
QlIBDRPjg5w/VWdXbYpuOqrREDgCpEDIAugDJ6cwLqJHzg4kQvE50MpVHDE0mzYQOacWl6yMqDCI
1atILtKniWGwN2LvjuVINUcfJKkbGg1NnMtQ2qI1br0KLVJAEPfSrDeZPvVOcpf/k3xxkLBvN0HP
Xui9D6K1EPZBMAA6JwbwDGwGpgot2QRkZUhHofY01F+ExvNQfw5MA4z42oWOQMPl4SJ9S1azaPkO
OqzzIXAKLZgAhhYivn/w9BSFOPTTl4NHtxy744vEZBiDjOiyErmNRceIB42DCax79luZG7YbzZQD
O/tZvWoAnLKkRjbxCOXpPNZYtJ610qYFj4MIrSxBqAiiHpROSZtT6PEPEpQ/CMO/BkE3hIMQLoGg
B1QXqAgACMFmkFXBTIItg726VoEaqAS0EpeeNShoNiNGRnOs3LkLHS2ig6oBl0Pg0kIBdHSkwtHJ
Jj2FaG5gnpt5vN1nV2lw0AhwvAHaGfAhEauzAG3WWTPhwO6lgAKnxtQpTPkkpVIXOnTtS1vXxmiB
oxxQSrlVW4JAo+MQQkDlgBhMHZqXQOWcu0B3OZi6Z5/pxn2X2v1zpWATcRCmAEDB5HSeajXHik23
0WFdASa0A2iEBdCDp6eopJYud2ThjDx1j6+uysX3tkcX8iCVljMBhZfAxLO392MMWWYpxJrb965E
qjb8UZJqhWolIgwEPHoOFuUg0i3jKtMsXKCBAFQIKgadn3OQdwDlQLkqROqcgHXPEh7U7KoswyN5
4sIQg2v20WENA+MaSIDDLIDeeXySKNTyrMtZzkO403cHjojwWZvNQweWaE1m7tlZtjIEbEkzY+2K
Ats2LwVxWT2ZeIRGNSLNLDpwwAjrOTuYWq3NgQagwbdyxlkFADh4HDiZeFZg5bG9xWaa4eEuBlds
IC6uoMN6AUg1AHBkIU7fnxqu0h0HLra79KWvWsZ37eK7kdXmf8d3g4jyEgzcszwLk59xYEGzkXBg
11Ly+Rw4JdVRbOl5yuWCaFvGg8Y4W9neWkbjQSNv1wdudc/KgE0kRO7ZgqxA7rlc7WJyMmb5xt1A
QId1GBELnuUG65FzpVZ8747FxqECBxMyvmMhE5YpTKYv655F+5LQiCMMxAGqwbUzNIa79q1Cqjb6
OFllmNJ0jiBsgeMYsMLgZiG0rEyaueqiBChIcARUNgMyt6bCFvxbi9oyNp4ns0WWbbwDOq+nJUAv
AhPcQH3w1CSIYdntQrv47iqSa2EOED+y+wen7hkHjgDJ24G2EjK3JolhaFHErm1LkWpc3X2uQqOp
CAO/Zcl5xz27ROYiPqBf3spBZRWQSrvhORPVh7lWZhXDwwV6B5dTHNpEhzUBPC8Bugyc5Aap2cx4
8Ow0hSgQg7Nctdh9VvKWoZ+8vLkIjIBDACJvH4pYL3efE3ZvHmTJUC84ZWmDbPJJKqUuLNZB4s8/
xkHjJ7E284+SDrxWZsFKcNwzRsw/GiygIGmGjI5GLFu/FxX10mGdBC5JgJrAQW6QjoxUeG6sTk/s
rm/4FvMP4B9TeLvO3hBtLcx7/wevIrlnC1mScvveFWitwak+cRhbOka5nCcMDErJGciIodmz2xMC
JcHxWpf3WWUidYkBGuNVIEDDxHSeSjXPsk37oPM66JhBy5R9w9rX8QmqGXS1rq4KLXvpK9QKLWtx
4AhgxOm7fw/a+qfvAhZ5kUy2MpMZunOKN9y6Aqn66CMktTq1akAQ+Elrzlp7du3LS1qeFSh//pHg
uGc5PAsNjxSI8/0MrtpN5+VY8QB66IbMQdby3lPThJGehSTAzTz8f8+/lEZrRfZS+pq/hckZCSva
lGGe+A5yRmo0Ujat7WXDLYvlPybJ6EepVWLSDGR819LzRnraJC3ZvgLxc4DEAePNP+L6PQ4ik2ku
X+5i8aqtxL2r6LAmHCv4AJ0HnuQ6a7jU4OnhCi3FOMBVnrnhWaSvOFQoBDSihXnx3dt9lsD4qQv8
k3csJI2U/duXkMvF4vT9Eqb8IpVSvj0w4lkrZ2VQyrjqM2989xwABkjna1/e/g9UqnErvi/bsKfj
8d0xcr4dQAZ4N9dZT5yZ5mI1pRDJluWqj6xCSoMFY/wdaG8jUbQ1cSGsbauizdd7TGaJtOX+O9Yi
Vb/yDLY6RrkSu9P3OViUAwa3Kr8KLSlki5o/vhO4yiKiuwTJivj+0uPV+N6NocDSDZ2ffxwjRgIk
9S6gdl3/bscnMMpB4iyje/hSfHfHF8jrqzK+48d5B44B68X3NjvP7pk0yVi+OMe2TUNI1Yc/SKNq
adQ1YeiqjxuQ3V6Qi+/GPVvkYI3ygfGrkZiF8CuPa1/I+cfZKi5d7qJ3cC29S7fTYdUcI8wH0IvA
E1wnNZOMgxfKFOJARndn0b5e+u6XcSlLzjm0+waGGJTBj+8A/um7nH92buxnYKAITmmjTDb5RGv3
GSWri5HPYh9IVijXqew84BB477z47iziu/PsQ7MZMTqSY9m6baiwhw7rCcfIvAClwL9et/g+XOHo
eIOeKPAju3edQ8R3/K8sXzUyyju4AO/iWNsL894NRZum3PeGNUjVJ49iyqdap+9BCw4jEpfYcVbO
Ci0Hj2mt7oUEZ56BOgBeLr4rkL8WZZmYylOr5Vmx9S46LcdG6gPk6z+Baa6DPnxykunEuPiucMY/
TA1mnBpILKQorFIQKIIgIIwCdKixWpOiaBqop4Z0xiazuDvQ2HmurcqUlqWWvp6A/buWe/H9IUyj
Sa0WEIRyh9nihmQHkbBoZaCBlwPHmXbx3dkCWAeRWxUMj+aJCwP0r9xBhzXt2EAqBHydcH3uc3kt
svDek5NE3uX5yAGjlWr9rNgV0d8dooyhUU+plOuYZgLuc62RklpIUFRDRT3UNIo5JuqGyekGpWaK
SQ1K/p8JpUWrazQSdm/qY91aGd8zkvGHqZZjsgzinPHjuRfdvcNUL747iNpDZS0uvnstLPNO3xUo
MFnA8OU8i1euIy6upJNyTJy4FoAA/hL4HEDxKjU8VeeJy9XW7nMg/s+DuVzIUDHHklgR1moMnx7m
ybPjVKZrNOsJJjN0xZqeQkwuDoiikDTLqNczpstNmqnBhhqVi1i6uMiyRXkqWcjYRI1KvQmZQXnX
NpxJmyn7dy1Fid3nRvkSdupZyi6++8cX7e//OCvXvnxYlDACIGXBeMnLP313IKGgXM4xORmx944D
nY7v1jHBtQL0AeAQsJdXqScvlrhQThnq66K7K2Jtb44VAQTj0wwfGufoyBQxlhVLCi0c2LaUdWtu
YdXyRQz2F+guRMRxiK96I6FSSRgeq3D81DhPvzDC0aOXKDcy+hYXGVjSzfhUndKVCi1kRl6ex2SW
XAh3eLvPtZFHSKsTlMpDhGE2l7z8nWf5ztlx6MEynxVYH55MxHcFIOM7o1cKLViKLN1wGx3WIcfE
NQNUA/4Q+F1epf7nyATL+/PcMdBF93iJ8gtnOD1dZtWSbu7cNsQdn7ON9Wv7KRbzXKu6clHLgwMF
tm8e4lPfvqUF1fNHxvifD5zgscPDhN05liwvMjVWpTJeQRmD++4Xq5fk2bVtOVKNq5fna4qkqcjl
rV9t5Bzk7MV3Qv+ez9wqD1KZ//QdACviu3u+fDlP7+LVFJdspZNyLNSuGSCnfwC+B1j3Kk4vyFeb
bD89TPp8icEVPXzKG1fxhltXccuaxVw3Oaj2717e8sXLJf7zPcd416PnCcOI/hWLmL44SZJmrdP3
/TtX0dOTx4m0WcFMH6JSzgPz7j47g2tbDjCu8fahPH1384/N/NN3v33RbESMjcWs3rMdFXTTQZ1y
LPBKARp35P0cr1BKwVfeNsSHGtO87Y0H2LBuiIXQimVFvv5L9/FZn7iFv/7353nH45eJB4uEuYjS
RPl/Xx4bfw5bPkOp1EsQzVUZd0whQBKRPjD+/CMrzfytTA7OOPvx3WocR4xP56nV86zYtL/z1QfG
Xw1AAH8GfP2r+e78ti1LW+6EhhZ38x1f/QY+5U3j/O7fH+KD5QbLNi7h1h1efB85SFprtOJ7GCVo
eVQRiPlHiVYmNhrBQYOe1659+bFdAAWAjO+gbevyWK4wwMCajgJ0xjHAqwVoGPgt4Jf5ONTG9QP8
6g++kf95/zHy3TErVgzIy/OkE49RKeXIMkvcJVuWhEYmMtxn0Bpvl9mDRrYxBa59efOPaR/f04DL
w10MrdlC3LOMDuq3gOFXDZDTnwJfA2zh41Sf9OZN+KpPn8NMvUi5VCAI28X3dgO1mbUyAPPHd/zr
q0bu+XjzT7vL8zmmJmM23HVrJ+P7Efe7f1npa7z/8TPcZErHP0Ckz9A0EQotg8YDpn18d+9of8+n
bQt7ufZlRfpy0rPxHbpZsr6j8f1ngInrARDA3wHv5yZSEOc5N7yUXF+VgRUJYWxR1gGjJEz4xxfe
5XkFzLf7fI3xHYXUpavxfclqikMb6JDe737nXC+AUuBHgCo3iQotKz+PtW/+O+i5jVrSpGeoTnEw
m21nWJSS+z14bY02c48cmkX7QhxfWG8TUXxpEGVA0To4HR+LWbZuByrspQOqut91yjUo5Nr1EPA7
wPdwk2jxLXvpX/lHnDv071x44s+I7FH6BwxxZCGVu84G3bIl0OLyvNWgfWg8y5lHtjIsKECDSSLK
lSLjVxbNWNOTT1i5/W46pN8BHuIapay1vAINAh8GdnCTqV4a48wTf8/o4X8jp08wMJhQ7MkIg4SA
jDBsEsYZ0Yx1oEF1OefmVt0F5Nyze2cbYKdnTQmYAlvCppZatZvpqW6ujBaYHA9oZL10D+1l5Z5P
ZsX2T0QHEQus54H7gSs3Ci0ggLcC/w3E3ISqTY1w4bl3MHL0HajaM/T1TbZg6immdOXqBFEKLURA
HnAQOc9CE7vnPOhwFhwzCWaKtFGhVkmYntRMXOmaWUMaaZG4dyOD6+5lyeY3ta5tKEUn1AQ+GXgv
wI0ECOBngR/gJlbSqDF68jGGj7yX6ugT6PQMxZ4r9PbVWNTXIM5pojgiDEJQOSDCqhzWRhgTkWUh
SWJoVEtUyw0qJUu5pKlUuiFaQtei9SxasYvFG+6bWbcTxXk6rJ8DfhBgIQDqBt4B3MfNL+qVKSYv
HmHq4vNMXXqWpHwS0jEwE0RhlTDIUCrDWshMgMkC0mTGJo+OB9BhP1H3Ci16l22luHQbfTPAFBat
QGnF60QfAT4RqCwUQABbXdxbwf8xNWoVktoUtdIVmtUpMAl2xiZLCcIIFcxYh8SFPvLFxURdxRl3
8/+2Yw+g9p8BHIdn27Zthtn4XyPO3sJsM4zhKs62tzCb17ZtP9XJ847P+6knu+8P75ukdXIi1She
A5JyeI7VSL1C8xTyMv+pVfg/vcxdpGahu3gZKe5vIGllSrmA1ClUzkUsJXZA0vo8xxkkf6F3KGQM
JXpA0la8xpEkb6GvWUE3/7tViFbdFPILyVnoFwot6UbJNCCpmRx+I7kKLf1GDs0oGQck1bOCn0mO
Qj+zgnqUzAOSGljBl4QS25esoAGlwoCkZrJ5l8QUepdsmlEqDUjqpoByQvGtnAK6USoOSBrjYm5l
jlBsm+NWLmaMmBa5B4pbuTzGNkS/UCfX8BJSWg1I2ocnOZ7oFfqUK6kkbq1CvKvkbB5ghtD/a4YH
OJtKpDR+A0nSqTzEgYT+fT9zA+8jZdSApI25iStYh9DfN8lTPMAQytgBSTqW2zmF0J/3AXfzOZLC
gKQ1KOY69kGhSJU8wjPMojCgP2tjLuAKLXYik2vmKcoZQgotA/pHbcH5XMiuZFINlFFBL1IY0H9q
MwotOJ9DSOd+oILn6UcKLQOKSmtzEsWcwiakQ4N8wDN8xBRSGFDM2o1zIw5jbVKpKb7j9Yh6JIUB
xa9V2I/TOJmD2ZRkbIAf+ZD3+I1FpDCgpGhnjuSYiJ3ZhEQ0SBNfRHxNE0lcGJAkrcYO7MWB7M0+
bMGmrEM0mmSAXiqp4meqaWUeSWFAqd0qbMYmbMl2bM6mbMT6rMuarMZKmmeGCcYYZoA+2ulhkH4W
yZiWAYjbsjhED2oCAAAAAElFTkSuQmCCClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9JbWFnZXMvV2luZG93c1hQQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdl
cy9XaW5kb3dzWFBAMngucG5nCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XaW5k
b3dzWFBAMngucG5nCShub25leGlzdGVudCkKQEAgLTEsMTQ5ICswLDAgQEAKLYlQTkcNCi0aCi0A
AAANSUhEUgAAASAAAAEgCAYAAAAUg66AAAB2eUlEQVR4AezcA8wcUQBF4dq2bdu2bdu2bdu2bdu2
bds6SV5Ut792Zu5JvrzYuYuB969fv3pTjiwQIiAcwiIMQiEkQiAYgiIwAhr+4Be+4Qve8RWf8BHv
8Q6vjZd4jmd4gsd4hAe4j3u4g1dwYEoDZO+CIBZiIjqiISqiIDKCwqt7jpu4geu4hqu4jEt4ARdP
aYBUVCREfMRDXCMMrNoDnDfO4SxO4zq8KKUBUv6QHMmQFEmQGIFg917hJE7gOI7hKN5BaYCUB+QT
aZAaqZASCUCkzuAwDuEgDuAzlAZI/WcxkN5Ih5RQf9dh7MNe4wotlAZI/aHkyGxkRHgot3UXu7HT
OAotpQFSpuTIjmxGYCiP6SW2GVs1RhogpxYbuZDTCAbluT3DZmMTLkJpgGxbAORDXuRBNLhG6ho2
YD3W4Q2UBsgWJUF+FEAWuHZqB9ZgLU5AaYAsWQEUMiJDWaubWAUwSEoDZIGCoahRBD6hrN1nrMBy
4xlcKg2QiogSKI7sUPZsK5ZiCW7DS9MAqegoiVJIC+WM9mMRFuMqlAbIU4uKMkYqKGd2CAuM6/DQ
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
SW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvSW1hZ2VzL1lvc2VtaXRlLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5
OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Zb3NlbWl0
ZS5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL0ltYWdlcy9Zb3NlbWl0ZUAyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxh
eTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvWW9zZW1p
dGVAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMj
Ci1hcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL0Jhc2VPYmplY3QuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9T
Y3JpcHRzL0Jhc2VPYmplY3QuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9C
YXNlT2JqZWN0LmpzCShub25leGlzdGVudCkKQEAgLTEsMTg2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1CYXNlT2JqZWN0ID0gZnVu
Y3Rpb24oKQotewotfTsKLQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyA9IGZ1
bmN0aW9uKHN1YmNsYXNzQ29uc3RydWN0b3IpCi17Ci0gICAgLy8gQ29waWVzIHRoZSByZWxldmFu
dCBmdW5jdGlvbnMgdGhlIHN1YmNsYXNzIGNvbnN0cnVjdG9yLgotICAgIGZvciAodmFyIHByb3Bl
cnR5IGluIEJhc2VPYmplY3QpIHsKLSAgICAgICAgdmFyIHZhbHVlID0gQmFzZU9iamVjdFtwcm9w
ZXJ0eV07Ci0gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICJmdW5jdGlvbiIpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKHZhbHVlID09PSBhcmd1bWVudHMuY2FsbGVlKQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHN1YmNsYXNzQ29uc3RydWN0b3JbcHJvcGVy
dHldID0gdmFsdWU7Ci0gICAgfQotfTsKLQotQmFzZU9iamVjdC5hZGRFdmVudExpc3RlbmVyID0g
ZnVuY3Rpb24oZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKLXsKLSAgICB0aGlzT2Jq
ZWN0ID0gdGhpc09iamVjdCB8fCBudWxsOwotCi0gICAgY29uc29sZS5hc3NlcnQoZXZlbnRUeXBl
KTsKLSAgICBpZiAoIWV2ZW50VHlwZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29uc29sZS5h
c3NlcnQobGlzdGVuZXIpOwotICAgIGlmICghbGlzdGVuZXIpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmICghdGhpcy5fbGlzdGVuZXJzKQotICAgICAgICB0aGlzLl9saXN0ZW5lcnMgPSB7fTsK
LQotICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXTsKLSAgICBp
ZiAoIWxpc3RlbmVycykKLSAgICAgICAgbGlzdGVuZXJzID0gdGhpcy5fbGlzdGVuZXJzW2V2ZW50
VHlwZV0gPSBbXTsKLQotICAgIC8vIFByZXZlbnQgcmVnaXN0ZXJpbmcgbXVsdGlwbGUgdGltZXMu
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgaWYgKGxpc3RlbmVyc1tpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIgJiYgbGlzdGVuZXJzW2ld
LnRoaXNPYmplY3QgPT09IHRoaXNPYmplY3QpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgbGlzdGVuZXJzLnB1c2goe3RoaXNPYmplY3Q6IHRoaXNPYmplY3QsIGxpc3RlbmVyOiBs
aXN0ZW5lcn0pOwotfTsKLQotQmFzZU9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyID0gZnVuY3Rp
b24oZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKLXsKLSAgICBldmVudFR5cGUgPSBl
dmVudFR5cGUgfHwgbnVsbDsKLSAgICBsaXN0ZW5lciA9IGxpc3RlbmVyIHx8IG51bGw7Ci0gICAg
dGhpc09iamVjdCA9IHRoaXNPYmplY3QgfHwgbnVsbDsKLQotICAgIGlmICghdGhpcy5fbGlzdGVu
ZXJzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWV2ZW50VHlwZSkgewotICAgICAgICBm
b3IgKGV2ZW50VHlwZSBpbiB0aGlzLl9saXN0ZW5lcnMpCi0gICAgICAgICAgICB0aGlzLnJlbW92
ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICB2YXIgbGlzdGVuZXJzID0gdGhpcy5fbGlzdGVuZXJzW2V2
ZW50VHlwZV07Ci0gICAgaWYgKCFsaXN0ZW5lcnMpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZv
ciAodmFyIGkgPSBsaXN0ZW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAg
aWYgKGxpc3RlbmVyICYmIGxpc3RlbmVyc1tpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIgJiYgbGlz
dGVuZXJzW2ldLnRoaXNPYmplY3QgPT09IHRoaXNPYmplY3QpCi0gICAgICAgICAgICBsaXN0ZW5l
cnMuc3BsaWNlKGksIDEpOwotICAgICAgICBlbHNlIGlmICghbGlzdGVuZXIgJiYgdGhpc09iamVj
dCAmJiBsaXN0ZW5lcnNbaV0udGhpc09iamVjdCA9PT0gdGhpc09iamVjdCkKLSAgICAgICAgICAg
IGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7Ci0gICAgfQotCi0gICAgaWYgKCFsaXN0ZW5lcnMubGVu
Z3RoKQotICAgICAgICBkZWxldGUgdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV07Ci0KLSAgICBp
ZiAoIU9iamVjdC5rZXlzKHRoaXMuX2xpc3RlbmVycykubGVuZ3RoKQotICAgICAgICBkZWxldGUg
dGhpcy5fbGlzdGVuZXJzOwotfTsKLQotQmFzZU9iamVjdC5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBm
dW5jdGlvbigpCi17Ci0gICAgZGVsZXRlIHRoaXMuX2xpc3RlbmVyczsKLX07Ci0KLUJhc2VPYmpl
Y3QuaGFzRXZlbnRMaXN0ZW5lcnMgPSBmdW5jdGlvbihldmVudFR5cGUpCi17Ci0gICAgaWYgKCF0
aGlzLl9saXN0ZW5lcnMgfHwgIXRoaXMuX2xpc3RlbmVyc1tldmVudFR5cGVdKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19OwotCi1CYXNlT2JqZWN0LnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogQmFzZU9iamVjdCwKLQotICAgIGFkZEV2ZW50TGlzdGVu
ZXI6IEJhc2VPYmplY3QuYWRkRXZlbnRMaXN0ZW5lciwKLSAgICByZW1vdmVFdmVudExpc3RlbmVy
OiBCYXNlT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIsCi0gICAgcmVtb3ZlQWxsTGlzdGVuZXJz
OiBCYXNlT2JqZWN0LnJlbW92ZUFsbExpc3RlbmVycywKLSAgICBoYXNFdmVudExpc3RlbmVyczog
QmFzZU9iamVjdC5oYXNFdmVudExpc3RlbmVycywKLQotICAgIGRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVyczogZnVuY3Rpb24oZXZlbnRUeXBlLCBldmVudERhdGEpCi0gICAgewotICAgICAgICB2YXIg
ZXZlbnQgPSBuZXcgQmFzZU9iamVjdEV2ZW50KHRoaXMsIGV2ZW50VHlwZSwgZXZlbnREYXRhKTsK
LQotICAgICAgICBmdW5jdGlvbiBkaXNwYXRjaChvYmplY3QpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QuX2xpc3RlbmVycyB8fCAhb2JqZWN0Ll9saXN0ZW5l
cnNbZXZlbnRUeXBlXSB8fCBldmVudC5fc3RvcHBlZFByb3BhZ2F0aW9uKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAgICAgLy8gTWFrZSBhIGNvcHkgd2l0aCBzbGljZSBzbyBt
dXRhdGlvbnMgZHVyaW5nIHRoZSBsb29wIGRvZXNuJ3QgYWZmZWN0IHVzLgotICAgICAgICAgICAg
dmFyIGxpc3RlbmVyc0ZvclRoaXNFdmVudCA9IG9iamVjdC5fbGlzdGVuZXJzW2V2ZW50VHlwZV0u
c2xpY2UoMCk7Ci0KLSAgICAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgbGlzdGVuZXJzIGFu
ZCBjYWxsIHRoZW0uIFN0b3AgaWYgc3RvcFByb3BhZ2F0aW9uIGlzIGNhbGxlZC4KLSAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJzRm9yVGhpc0V2ZW50Lmxlbmd0aDsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgbGlzdGVuZXJzRm9yVGhpc0V2ZW50W2ldLmxpc3RlbmVyLmNh
bGwobGlzdGVuZXJzRm9yVGhpc0V2ZW50W2ldLnRoaXNPYmplY3QsIGV2ZW50KTsKLSAgICAgICAg
ICAgICAgICBpZiAoZXZlbnQuX3N0b3BwZWRQcm9wYWdhdGlvbikKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBEaXNwYXRj
aCB0byBsaXN0ZW5lcnMgb2YgdGhpcyBzcGVjaWZpYyBvYmplY3QuCi0gICAgICAgIGRpc3BhdGNo
KHRoaXMpOwotCi0gICAgICAgIC8vIEFsbG93IHByb3BhZ2F0aW9uIGFnYWluIHNvIGxpc3RlbmVy
cyBvbiB0aGUgY29uc3RydWN0b3IgYWx3YXlzIGhhdmUgYSBjcmFjayBhdCB0aGUgZXZlbnQuCi0g
ICAgICAgIGV2ZW50Ll9zdG9wcGVkUHJvcGFnYXRpb24gPSBmYWxzZTsKLQotICAgICAgICAvLyBE
aXNwYXRjaCB0byBsaXN0ZW5lcnMgb24gYWxsIGNvbnN0cnVjdG9ycyB1cCB0aGUgcHJvdG90eXBl
IGNoYWluLCBpbmNsdWRpbmcgdGhlIGltbWVkaWF0ZSBjb25zdHJ1Y3Rvci4KLSAgICAgICAgdmFy
IGNvbnN0cnVjdG9yID0gdGhpcy5jb25zdHJ1Y3RvcjsKLSAgICAgICAgd2hpbGUgKGNvbnN0cnVj
dG9yKSB7Ci0gICAgICAgICAgICBkaXNwYXRjaChjb25zdHJ1Y3Rvcik7Ci0KLSAgICAgICAgICAg
IGlmICghY29uc3RydWN0b3IucHJvdG90eXBlLl9fcHJvdG9fXykKLSAgICAgICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICAgICAgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rvci5wcm90b3R5cGUu
X19wcm90b19fLmNvbnN0cnVjdG9yOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGV2ZW50
LmRlZmF1bHRQcmV2ZW50ZWQ7Ci0gICAgfQotfTsKLQotQmFzZU9iamVjdEV2ZW50ID0gZnVuY3Rp
b24odGFyZ2V0LCB0eXBlLCBkYXRhKQotewotICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0OwotICAg
IHRoaXMudHlwZSA9IHR5cGU7Ci0gICAgdGhpcy5kYXRhID0gZGF0YTsKLSAgICB0aGlzLmRlZmF1
bHRQcmV2ZW50ZWQgPSBmYWxzZTsKLSAgICB0aGlzLl9zdG9wcGVkUHJvcGFnYXRpb24gPSBmYWxz
ZTsKLX07Ci0KLUJhc2VPYmplY3RFdmVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IEJhc2VPYmplY3RFdmVudCwKLQotICAgIHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgdGhpcy5fc3RvcHBlZFByb3BhZ2F0aW9uID0gdHJ1ZTsKLSAgICB9LAotCi0g
ICAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuZGVmYXVs
dFByZXZlbnRlZCA9IHRydWU7Ci0gICAgfQotfTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWJibGVR
dWV1ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnViYmxlUXVldWUuanMJKHJldmlz
aW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWJibGVRdWV1ZS5qcwkobm9uZXhpc3RlbnQp
CkBAIC0xLDE0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotQnViYmxlUXVldWUgPSBmdW5j
dGlvbihxdWV1ZVNlcnZlciwgaWQsIGluZm8pCi17Ci0gICAgQmFzZU9iamVjdC5jYWxsKHRoaXMp
OwotCi0gICAgY29uc29sZS5hc3NlcnQocXVldWVTZXJ2ZXIpOwotICAgIGNvbnNvbGUuYXNzZXJ0
KGlkKTsKLQotICAgIHRoaXMucXVldWVTZXJ2ZXIgPSBxdWV1ZVNlcnZlcjsKLSAgICB0aGlzLmlk
ID0gaWQ7Ci0gICAgdGhpcy5zaG9ydE5hbWUgPSBpbmZvLnNob3J0TmFtZSB8fCBpZDsKLSAgICB0
aGlzLnRpdGxlID0gaW5mby50aXRsZSB8fCAiXHhhMCI7Ci0KLSAgICB0aGlzLnBsYXRmb3JtID0g
aW5mby5wbGF0Zm9ybSA/IGluZm8ucGxhdGZvcm0ubmFtZSA6ICJ1bmtub3duIjsKLX07Ci0KLUJh
c2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoQnViYmxlUXVldWUpOwotCi1CdWJibGVR
dWV1ZS5FdmVudCA9IHsKLSAgICBVcGRhdGVkOiAidXBkYXRlZCIKLX07Ci0KLUJ1YmJsZVF1ZXVl
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogQnViYmxlUXVldWUsCi0gICAgX19wcm90
b19fOiBCYXNlT2JqZWN0LnByb3RvdHlwZSwKLQotICAgIGdldCBzdGF0dXNQYWdlVVJMKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnF1ZXVlU2VydmVyLnF1ZXVlU3RhdHVzVVJMKHRoaXMu
aWQpOwotICAgIH0sCi0KLSAgICBnZXQgY2hhcnRzUGFnZVVSTCgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5fY2hhcnRzUGFnZVVSTDsKLSAgICB9LAotCi0gICAgZ2V0IHBhdGNoQ291bnQo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3BhdGNoQ291bnQ7Ci0gICAgfSwKLQotICAg
IGdldCBsb2FkZWREZXRhaWxlZFN0YXR1cygpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
bG9hZGVkRGV0YWlsZWRTdGF0dXM7Ci0gICAgfSwKLQotICAgIGdldCBwYXRjaGVzKCkKLSAgICB7
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2xvYWRlZERldGFpbGVkU3RhdHVzKTsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX3F1ZXVlOwotICAgIH0sCi0KLSAgICBnZXQgYm90cygpCi0gICAg
ewotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9sb2FkZWREZXRhaWxlZFN0YXR1cyk7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9ib3RzOwotICAgIH0sCi0KLSAgICB1cGRhdGU6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2xvYWRlZERldGFpbGVkU3RhdHVzID0gZmFsc2U7Ci0K
LSAgICAgICAgSlNPTi5sb2FkKHRoaXMucXVldWVTZXJ2ZXIuanNvblF1ZXVlTGVuZ3RoVVJMKHRo
aXMuaWQpLCBmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAgICAgICB2YXIgbmV3UGF0Y2hDb3VudCA9
IGRhdGEucXVldWVfbGVuZ3RoOwotICAgICAgICAgICAgaWYgKHRoaXMuX3BhdGNoQ291bnQgPT0g
bmV3UGF0Y2hDb3VudCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB0aGlz
Ll9wYXRjaENvdW50ID0gbmV3UGF0Y2hDb3VudDsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKEJ1YmJsZVF1ZXVlLkV2ZW50LlVwZGF0ZWQsIG51bGwpOwotICAgICAg
ICB9LmJpbmQodGhpcykpOwotICAgIH0sCi0KLSAgICBsb2FkRGV0YWlsZWRTdGF0dXM6IGZ1bmN0
aW9uKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgSlNPTi5sb2FkKHRoaXMucXVldWVTZXJ2ZXIu
anNvblF1ZXVlU3RhdHVzVVJMKHRoaXMuaWQpLCBmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAgICAg
ICB0aGlzLl9xdWV1ZSA9IFtdOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGVuZCA9IGRh
dGEucXVldWUubGVuZ3RoOyBpIDwgZW5kOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgcGF0
Y2ggPSBkYXRhLnF1ZXVlW2ldOwotICAgICAgICAgICAgICAgIHZhciBhY3RpdmVTaW5jZVRpbWUg
PSBwYXRjaC5hY3RpdmVfc2luY2UgPyBEYXRlLnBhcnNlKHBhdGNoLmFjdGl2ZV9zaW5jZSkgOiAw
OwotICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVlLnB1c2goewotICAgICAgICAgICAgICAgICAg
ICBhdHRhY2htZW50SUQ6IHBhdGNoLmF0dGFjaG1lbnRfaWQsCi0gICAgICAgICAgICAgICAgICAg
IHN0YXR1c1BhZ2VVUkw6IHBhdGNoLnN0YXR1c19wYWdlLAotICAgICAgICAgICAgICAgICAgICBs
YXRlc3RNZXNzYWdlOiBwYXRjaC5sYXRlc3RfbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAg
bGF0ZXN0TWVzc2FnZVRpbWU6IHBhdGNoLmxhdGVzdF9tZXNzYWdlX3RpbWUgPyBuZXcgRGF0ZShw
YXRjaC5sYXRlc3RfbWVzc2FnZV90aW1lKSA6IG51bGwsCi0gICAgICAgICAgICAgICAgICAgIGRl
dGFpbGVkUmVzdWx0c1VSTEZvckxhdGVzdE1lc3NhZ2U6IHBhdGNoLmxhdGVzdF9yZXN1bHRzLAot
ICAgICAgICAgICAgICAgICAgICByZXRyeUNvdW50OiBwYXRjaC5yZXRyeV9jb3VudCwKLSAgICAg
ICAgICAgICAgICAgICAgYWN0aXZlOiBwYXRjaC5hY3RpdmUsCi0gICAgICAgICAgICAgICAgICAg
IGFjdGl2ZVNpbmNlOiBuZXcgRGF0ZShhY3RpdmVTaW5jZVRpbWUpLAotICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0aGlzLl9ib3RzID0gW107Ci0gICAg
ICAgICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gZGF0YS5ib3RzLmxlbmd0aDsgaSA8IGVuZDsg
KytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGJvdCA9IGRhdGEuYm90c1tpXTsKLSAgICAgICAg
ICAgICAgICB2YXIgbGF0ZXN0TWVzc2FnZVRpbWUgPSBib3QubGF0ZXN0X21lc3NhZ2VfdGltZSA/
IERhdGUucGFyc2UoYm90LmxhdGVzdF9tZXNzYWdlX3RpbWUpIDogMDsKLQotICAgICAgICAgICAg
ICAgIHZhciBvbmVEYXlJbk1pbGxpc2Vjb25kcyA9IDI0ICogNjAgKiA2MCAqIDEwMDA7Ci0gICAg
ICAgICAgICAgICAgdmFyIGJvdElzQ3VycmVudGx5QWN0aXZlID0gRGF0ZS5ub3coKSA8IGxhdGVz
dE1lc3NhZ2VUaW1lICsgb25lRGF5SW5NaWxsaXNlY29uZHM7Ci0gICAgICAgICAgICAgICAgaWYg
KCFib3RJc0N1cnJlbnRseUFjdGl2ZSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgICAgICAgICAvLyBTb21ldGltZXMgKHJhcmVseSksIHRoZXJlIGFyZSBzdGF0dXMg
bWVzc2FnZXMgd2l0aCBhbiBlbXB0eSBib3QgbmFtZSBhZGRlZCB0byB0aGUgZGF0YWJhc2UuCi0g
ICAgICAgICAgICAgICAgaWYgKCFib3QuYm90X2lkLmxlbmd0aCkKLSAgICAgICAgICAgICAgICAg
ICAgYm90LmJvdF9pZCA9ICI8ZW1wdHkgbmFtZT4iOwotCi0gICAgICAgICAgICAgICAgdGhpcy5f
Ym90cy5wdXNoKHsKLSAgICAgICAgICAgICAgICAgICAgaWQ6IGJvdC5ib3RfaWQsCi0gICAgICAg
ICAgICAgICAgICAgIHN0YXR1c1BhZ2VVUkw6IGJvdC5zdGF0dXNfcGFnZSwKLSAgICAgICAgICAg
ICAgICAgICAgbGF0ZXN0TWVzc2FnZVRpbWU6IG5ldyBEYXRlKGxhdGVzdE1lc3NhZ2VUaW1lKSwK
LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5zdGF0dXNQYWdlVVJMLnJlcGxhY2UoL2h0dHBzPzpcL1wvL2csICIiKSA9
PT0gZGF0YS5zdGF0dXNfcGFnZS5yZXBsYWNlKC9odHRwcz86XC9cLy9nLCAiIikpOwotICAgICAg
ICAgICAgdGhpcy5fY2hhcnRzUGFnZVVSTCA9IGRhdGEuY2hhcnRzX3BhZ2U7Ci0KLSAgICAgICAg
ICAgIHRoaXMuX2xvYWRlZERldGFpbGVkU3RhdHVzID0gdHJ1ZTsKLSAgICAgICAgICAgIGNhbGxi
YWNrKCk7Ci0gICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwKLX07CgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnViYmxlUXVldWUuanMKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotdGV4dC9wbGFp
bgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVi
YmxlUXVldWVTZXJ2ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1YmJsZVF1ZXVl
U2VydmVyLmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnViYmxlUXVldWVT
ZXJ2ZXIuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw5MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotQnViYmxlUXVldWVTZXJ2ZXIgPSBmdW5jdGlvbigpCi17Ci0gICAgY29uc3QgcXVldWVJbmZv
ID0ge307Ci0KLSAgICBCYXNlT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLmJhc2VVUkwg
PSAiaHR0cHM6Ly93ZWJraXQtcXVldWVzLndlYmtpdC5vcmcvIjsKLSAgICB0aGlzLnF1ZXVlcyA9
IHt9OwotCi0gICAgZm9yICh2YXIgaWQgaW4gcXVldWVJbmZvKQotICAgICAgICB0aGlzLnF1ZXVl
c1tpZF0gPSBuZXcgQnViYmxlUXVldWUodGhpcywgaWQsIHF1ZXVlSW5mb1tpZF0pOwotfTsKLQot
QmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhCdWJibGVRdWV1ZVNlcnZlcik7Ci0K
LUJ1YmJsZVF1ZXVlU2VydmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogQnViYmxl
UXVldWVTZXJ2ZXIsCi0gICAgX19wcm90b19fOiBCYXNlT2JqZWN0LnByb3RvdHlwZSwKLQotICAg
IGpzb25RdWV1ZUxlbmd0aFVSTDogZnVuY3Rpb24ocXVldWVJRCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmJhc2VVUkwgKyAicXVldWUtbGVuZ3RoLWpzb24vIiArIGVuY29kZVVSSUNvbXBv
bmVudChxdWV1ZUlEKTsKLSAgICB9LAotCi0gICAganNvblF1ZXVlU3RhdHVzVVJMOiBmdW5jdGlv
bihxdWV1ZUlEKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJxdWV1ZS1z
dGF0dXMtanNvbi8iICsgZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXVlSUQpOwotICAgIH0sCi0KLSAg
ICBqc29uUHJvY2Vzc2luZ1RpbWVzVVJMOiBmdW5jdGlvbihmcm9tVGltZSwgdG9UaW1lKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJwcm9jZXNzaW5nLXRpbWVzLWpzb24v
IiArIFtmcm9tVGltZS5nZXRVVENGdWxsWWVhcigpLCBmcm9tVGltZS5nZXRVVENNb250aCgpICsg
MSwgZnJvbVRpbWUuZ2V0VVRDRGF0ZSgpLCBmcm9tVGltZS5nZXRVVENIb3VycygpLCBmcm9tVGlt
ZS5nZXRVVENNaW51dGVzKCksIGZyb21UaW1lLmdldFVUQ1NlY29uZHMoKV0uam9pbigiLSIpCi0g
ICAgICAgICAgICArICItIiArIFt0b1RpbWUuZ2V0VVRDRnVsbFllYXIoKSwgdG9UaW1lLmdldFVU
Q01vbnRoKCkgKyAxLCB0b1RpbWUuZ2V0VVRDRGF0ZSgpLCB0b1RpbWUuZ2V0VVRDSG91cnMoKSwg
dG9UaW1lLmdldFVUQ01pbnV0ZXMoKSwgdG9UaW1lLmdldFVUQ1NlY29uZHMoKV0uam9pbigiLSIp
OwotICAgIH0sCi0KLSAgICBxdWV1ZVN0YXR1c1VSTDogZnVuY3Rpb24ocXVldWVJRCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAicXVldWUtc3RhdHVzLyIgKyBlbmNvZGVV
UklDb21wb25lbnQocXVldWVJRCk7Ci0gICAgfSwKLQotICAgIC8vIFJldHJpZXZlcyBpbmZvcm1h
dGlvbiBhYm91dCBhbGwgcGF0Y2hlcyB0aGF0IHdlcmUgc3VibWl0dGVkIGluIHRoZSB0aW1lIHJh
bmdlOgotICAgIC8vIHsKLSAgICAvLyAgICAgcGF0Y2hfaWRfMTogewotICAgIC8vICAgICAgICAg
cXVldWVfbmFtZV8xOiB7Ci0gICAgLy8gICAgICAgICAgICAgZGF0ZTogPGRhdGUvdGltZSB3aGVu
IHRoZSBwYXRjaCB3YXMgc3VibWl0dGVkIHRvIHRoZSBxdWV1ZT4sCi0gICAgLy8gICAgICAgICAg
ICAgcmV0cnlfY291bnQ6IDxudW1iZXIgb2YgdGltZXMgYSBib3QgaGFkIHRvIGJhaWwgb3V0IGFu
ZCBkcm9wIHRoZSBsb2NrLCBmb3IgYW5vdGhlciBib3QgdG8gc3RhcnQgZnJvbSBzY3JhdGNoPiwK
LSAgICAvLyAgICAgICAgICAgICB3YWl0X2R1cmF0aW9uOiA8aG93IGxvbmcgaXQgdG9vayBiZWZv
cmUgYSBib3QgZmlyc3QgbG9ja2VkIHRoZSBwYXRjaCBmb3IgcHJvY2Vzc2luZz4sCi0gICAgLy8g
ICAgICAgICAgICAgcHJvY2Vzc19kdXJhdGlvbjogPGhvdyBsb25nIGl0IHRvb2sgZnJvbSBlbmQg
b2Ygd2FpdCB0byBmaW5pc2gsIG9ubHkgdmFsaWQgZm9yIGZpbmlzaGVkIHBhdGNoZXMuIEluY2x1
ZGVzIHdhaXQgdGltZSBiZXR3ZWVuIHJldHJpZXM+Ci0gICAgLy8gICAgICAgICAgICAgZmluYWxf
bWVzc2FnZTogPChwYXNzfGZhaWx8bm90IHByb2Nlc3NlZHxjb3VsZCBub3QgYXBwbHl8aW50ZXJu
YWwgZXJyb3J8aW4gcHJvZ3Jlc3MpPgotICAgIC8vICAgICAgICAgfSwKLSAgICAvLyAgICAgICAg
IC4uLgotICAgIC8vICAgICB9LAotICAgIC8vICAgICAuLi4KLSAgICAvLyB9Ci0gICAgbG9hZFBy
b2Nlc3NpbmdUaW1lczogZnVuY3Rpb24oZnJvbVRpbWUsIHRvVGltZSwgY2FsbGJhY2spCi0gICAg
ewotICAgICAgICBKU09OLmxvYWQodGhpcy5qc29uUHJvY2Vzc2luZ1RpbWVzVVJMKGZyb21UaW1l
LCB0b1RpbWUpLCBmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAgICAgICBmb3IgKHBhdGNoIGluIGRh
dGEpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHF1ZXVlIGluIHBhdGNoKQotICAgICAgICAgICAg
ICAgICAgICBxdWV1ZS5kYXRlID0gbmV3IERhdGUocXVldWUuZGF0ZSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBjYWxsYmFjayhkYXRhLCBmcm9tVGltZSwgdG9UaW1lKTsKLSAgICAgICAg
fS5iaW5kKHRoaXMpKTsKLSAgICB9LAotfTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy9CdWJibGVRdWV1ZVNlcnZlci5qcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5
bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
RGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi10ZXh0L3BsYWluClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWJibGVRdWV1ZVZp
ZXcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1YmJsZVF1ZXVlVmlldy5qcwkocmV2
aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1YmJsZVF1ZXVlVmlldy5qcwkobm9uZXhp
c3RlbnQpCkBAIC0xLDE5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotQnViYmxlUXVldWVW
aWV3ID0gZnVuY3Rpb24ocXVldWVzKQotewotICAgIFF1ZXVlVmlldy5jYWxsKHRoaXMpOwotCi0g
ICAgdGhpcy5xdWV1ZXMgPSBxdWV1ZXMgfHwgW107Ci0KLSAgICB0aGlzLnF1ZXVlcy5mb3JFYWNo
KGZ1bmN0aW9uKHF1ZXVlKSB7Ci0gICAgICAgIGlmICh0aGlzLnBsYXRmb3JtICYmIHRoaXMucGxh
dGZvcm0gIT0gcXVldWUucGxhdGZvcm0pCi0gICAgICAgICAgICB0aHJvdyAiQSBidWJibGUgcXVl
dWUgdmlldyBtYXkgbm90IGNvbnRhaW4gcXVldWVzIGZvciBtdWx0aXBsZSBwbGF0Zm9ybXMuIgot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLnBsYXRmb3JtID0gcXVldWUucGxhdGZvcm07
Ci0gICAgICAgIHF1ZXVlLmFkZEV2ZW50TGlzdGVuZXIoQnViYmxlUXVldWUuRXZlbnQuVXBkYXRl
ZCwgdGhpcy5fcXVldWVVcGRhdGVkLCB0aGlzKTsKLSAgICB9LmJpbmQodGhpcykpOwotCi0gICAg
dGhpcy51cGRhdGUoKTsKLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMo
QnViYmxlUXVldWVWaWV3KTsKLQotQnViYmxlUXVldWVWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogQnViYmxlUXVldWVWaWV3LAotICAgIF9fcHJvdG9fXzogUXVldWVWaWV3LnBy
b3RvdHlwZSwKLQotICAgIHVwZGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgUXVldWVW
aWV3LnByb3RvdHlwZS51cGRhdGUuY2FsbCh0aGlzKTsKLQotICAgICAgICB0aGlzLmVsZW1lbnQu
cmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAgICBmdW5jdGlvbiBhcHBlbmRRdWV1ZShxdWV1ZSkK
LSAgICAgICAgewotICAgICAgICAgICAgdmFyIHF1ZXVlTGFiZWwgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJhIik7Ci0gICAgICAgICAgICBxdWV1ZUxhYmVsLmNsYXNzTGlzdC5hZGQoInF1ZXVl
TGFiZWwiKTsKLSAgICAgICAgICAgIHF1ZXVlTGFiZWwudGV4dENvbnRlbnQgPSBxdWV1ZS50aXRs
ZTsKLSAgICAgICAgICAgIHF1ZXVlTGFiZWwuaHJlZiA9IHF1ZXVlLnN0YXR1c1BhZ2VVUkw7Ci0g
ICAgICAgICAgICBxdWV1ZUxhYmVsLnRhcmdldCA9ICJfYmxhbmsiOwotICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHF1ZXVlTGFiZWwpOwotCi0gICAgICAgICAgICB2YXIgcGF0
Y2hDb3VudCA9IHF1ZXVlLnBhdGNoQ291bnQ7Ci0KLSAgICAgICAgICAgIHZhciBtZXNzYWdlID0g
cGF0Y2hDb3VudCA9PT0gMSA/ICJwYXRjaCBpbiBxdWV1ZSIgOiAicGF0Y2hlcyBpbiBxdWV1ZSI7
Ci0gICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2UsIFN0
YXR1c0xpbmVWaWV3LlN0YXR1cy5OZXV0cmFsLCBudWxsLCBwYXRjaENvdW50IHx8ICIwIik7Ci0g
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOwotCi0g
ICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVsZW1lbnQs
IHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yQnViYmxlUXVldWUuYmluZCh0aGlzKSwgcXVldWUpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5xdWV1ZXMuZm9yRWFjaChmdW5jdGlvbihxdWV1ZSkg
ewotICAgICAgICAgICAgYXBwZW5kUXVldWUuY2FsbCh0aGlzLCBxdWV1ZSk7Ci0gICAgICAgIH0s
IHRoaXMpOwotICAgIH0sCi0KLSAgICBfYWRkUXVldWVIZWFkaW5nVG9Qb3BvdmVyOiBmdW5jdGlv
bihxdWV1ZSwgY29udGVudCkKLSAgICB7Ci0gICAgICAgIHZhciB0aXRsZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aXRsZS5jbGFzc05hbWUgPSAicG9wb3Zlci1x
dWV1ZS1oZWFkaW5nIjsKLQotICAgICAgICB0aGlzLmFkZFRleHRUb1Jvdyh0aXRsZSwgInF1ZXVl
LW5hbWUiLCBxdWV1ZS5pZCk7Ci0gICAgICAgIHRoaXMuYWRkTGlua1RvUm93KHRpdGxlLCAicXVl
dWUtc3RhdHVzLWxpbmsiLCAic3RhdHVzIHBhZ2UiLCBxdWV1ZS5zdGF0dXNQYWdlVVJMKTsKLSAg
ICAgICAgdGhpcy5hZGRMaW5rVG9Sb3codGl0bGUsICJxdWV1ZS1jaGFydHMtbGluayIsICJjaGFy
dHMiLCBxdWV1ZS5jaGFydHNQYWdlVVJMKTsKLQotICAgICAgICBjb250ZW50LmFwcGVuZENoaWxk
KHRpdGxlKTsKLSAgICB9LAotCi0gICAgX2FkZEJvdHNIZWFkaW5nVG9Qb3BvdmVyOiBmdW5jdGlv
bihxdWV1ZSwgY29udGVudCkKLSAgICB7Ci0gICAgICAgIHZhciB0aXRsZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aXRsZS5jbGFzc05hbWUgPSAicG9wb3Zlci1i
b3RzLWhlYWRpbmciOwotICAgICAgICB0aXRsZS50ZXh0Q29udGVudCA9ICJsYXRlc3QgYm90IGV2
ZW50IjsKLSAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZCh0aXRsZSk7Ci0gICAgfSwKLQotICAg
IF90aW1lSW50ZXJ2YWxTdHJpbmc6IGZ1bmN0aW9uKHRpbWUpCi0gICAgewotICAgICAgICB2YXIg
dGltZURpZmZlcmVuY2UgPSAoRGF0ZS5ub3coKSAtIHRpbWUuZ2V0VGltZSgpKSAvIDEwMDA7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVRpbWVTdHJpbmcodGltZURpZmZlcmVuY2UpCi0g
ICAgfSwKLQotICAgIF9wb3BvdmVyQ29udGVudEZvckJ1YmJsZVF1ZXVlOiBmdW5jdGlvbihxdWV1
ZSkKLSAgICB7Ci0gICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0gICAgICAgIGNvbnRlbnQuY2xhc3NOYW1lID0gImJ1YmJsZS1zZXJ2ZXItcG9wb3Zl
ciI7Ci0KLSAgICAgICAgdGhpcy5fYWRkUXVldWVIZWFkaW5nVG9Qb3BvdmVyKHF1ZXVlLCBjb250
ZW50KTsKLSAgICAgICAgdGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50KTsKLQotICAg
ICAgICB2YXIgcGF0Y2hlcyA9IHF1ZXVlLnBhdGNoZXM7Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
LCBlbmQgPSBwYXRjaGVzLmxlbmd0aDsgaSA8IGVuZDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIg
cGF0Y2ggPSBwYXRjaGVzW2ldOwotCi0gICAgICAgICAgICB2YXIgcm93RWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotCi0gICAgICAgICAgICB0aGlzLmFkZExpbmtUb1Jv
dyhyb3dFbGVtZW50LCAicGF0Y2gtZGV0YWlscy1saW5rIiwgcGF0Y2guYXR0YWNobWVudElELCBw
YXRjaC5zdGF0dXNQYWdlVVJMKTsKLQotICAgICAgICAgICAgaWYgKHBhdGNoLnJldHJ5Q291bnQp
Ci0gICAgICAgICAgICAgICAgdGhpcy5hZGRUZXh0VG9Sb3cocm93RWxlbWVudCwgImZhaWx1cmUt
Y291bnQiLCBwYXRjaC5yZXRyeUNvdW50ICsgIlx4YTAiICsgKHBhdGNoLnJldHJ5Q291bnQgPT09
IDEgPyAiYXR0ZW1wdCIgOiAiYXR0ZW1wdHMiKSk7Ci0KLSAgICAgICAgICAgIGlmIChwYXRjaC5k
ZXRhaWxlZFJlc3VsdHNVUkxGb3JMYXRlc3RNZXNzYWdlKQotICAgICAgICAgICAgICAgIHRoaXMu
YWRkTGlua1RvUm93KHJvd0VsZW1lbnQsICJsYXRlc3Qtc3RhdHVzLXdpdGgtbGluayIsIHBhdGNo
LmxhdGVzdE1lc3NhZ2UsIHBhdGNoLmRldGFpbGVkUmVzdWx0c1VSTEZvckxhdGVzdE1lc3NhZ2Up
OwotICAgICAgICAgICAgZWxzZSBpZiAocGF0Y2gubGF0ZXN0TWVzc2FnZSAmJiBwYXRjaC5sYXRl
c3RNZXNzYWdlLmxlbmd0aCkKLSAgICAgICAgICAgICAgICB0aGlzLmFkZFRleHRUb1Jvdyhyb3dF
bGVtZW50LCAibGF0ZXN0LXN0YXR1cy1uby1saW5rIiwgcGF0Y2gubGF0ZXN0TWVzc2FnZSk7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChwYXRjaC5hY3RpdmUpIHsKLSAgICAgICAgICAgICAgICB0aGlz
LmFkZFRleHRUb1Jvdyhyb3dFbGVtZW50LCAibGF0ZXN0LXN0YXR1cy1uby1saW5rIiwgIlN0YXJ0
ZWQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLmFkZFRleHRUb1Jvdyhyb3dFbGVtZW50LCAidGlt
ZS1zaW5jZS1tZXNzYWdlIiwgdGhpcy5fdGltZUludGVydmFsU3RyaW5nKHBhdGNoLmFjdGl2ZVNp
bmNlKSArICJceGEwYWdvIik7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0
aGlzLmFkZFRleHRUb1Jvdyhyb3dFbGVtZW50LCAibGF0ZXN0LXN0YXR1cy1uby1saW5rIiwgIk5v
dCBzdGFydGVkIHlldCIpOwotCi0gICAgICAgICAgICBpZiAocGF0Y2gubGF0ZXN0TWVzc2FnZVRp
bWUpCi0gICAgICAgICAgICAgICAgdGhpcy5hZGRUZXh0VG9Sb3cocm93RWxlbWVudCwgInRpbWUt
c2luY2UtbWVzc2FnZSIsIHRoaXMuX3RpbWVJbnRlcnZhbFN0cmluZyhwYXRjaC5sYXRlc3RNZXNz
YWdlVGltZSkgKyAiXHhhMGFnbyIpOwotCi0gICAgICAgICAgICB0aGlzLmFkZExpbmtUb1Jvdyhy
b3dFbGVtZW50LCAiYnVnemlsbGEtbGluayIsICJidWd6aWxsYSIsIGJ1Z3ppbGxhLmRldGFpbHNV
UkxGb3JBdHRhY2htZW50KHBhdGNoLmF0dGFjaG1lbnRJRCkpOwotCi0gICAgICAgICAgICBjb250
ZW50LmFwcGVuZENoaWxkKHJvd0VsZW1lbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5f
YWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50KTsKLSAgICAgICAgdGhpcy5fYWRkQm90c0hlYWRp
bmdUb1BvcG92ZXIocXVldWUsIGNvbnRlbnQpOwotICAgICAgICB0aGlzLl9hZGREaXZpZGVyVG9Q
b3BvdmVyKGNvbnRlbnQpOwotCi0gICAgICAgIHZhciBib3RzID0gcXVldWUuYm90cy5zbGljZSgw
KS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIChhLmlkIDwgYi5pZCkgPyAtMSA6IDE7IH0p
OwotICAgICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gYm90cy5sZW5ndGg7IGkgPCBlbmQ7ICsr
aSkgewotICAgICAgICAgICAgdmFyIGJvdCA9IGJvdHNbaV07Ci0KLSAgICAgICAgICAgIHZhciBy
b3dFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0KLSAgICAgICAgICAg
IHRoaXMuYWRkTGlua1RvUm93KHJvd0VsZW1lbnQsICJib3Qtc3RhdHVzLWxpbmsiLCBib3QuaWQs
IGJvdC5zdGF0dXNQYWdlVVJMKTsKLSAgICAgICAgICAgIHRoaXMuYWRkVGV4dFRvUm93KHJvd0Vs
ZW1lbnQsICJib3Qtc3RhdHVzLWRlc2NyaXB0aW9uIiwgdGhpcy5fdGltZUludGVydmFsU3RyaW5n
KGJvdC5sYXRlc3RNZXNzYWdlVGltZSkgKyAiXHhhMGFnbyIpOwotCi0gICAgICAgICAgICBjb250
ZW50LmFwcGVuZENoaWxkKHJvd0VsZW1lbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IGNvbnRlbnQ7Ci0gICAgfSwKLQotICAgIF9wcmVzZW50UG9wb3ZlckZvckJ1YmJsZVF1ZXVlOiBm
dW5jdGlvbihlbGVtZW50LCBwb3BvdmVyLCBxdWV1ZSkKLSAgICB7Ci0gICAgICAgIGlmIChxdWV1
ZS5sb2FkZWREZXRhaWxlZFN0YXR1cykKLSAgICAgICAgICAgIHZhciBjb250ZW50ID0gdGhpcy5f
cG9wb3ZlckNvbnRlbnRGb3JCdWJibGVRdWV1ZShxdWV1ZSk7Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICAgICAgICAgIGNvbnRlbnQuY2xhc3NOYW1lID0gImJ1YmJsZS1zZXJ2ZXItcG9wb3ZlciI7Ci0K
LSAgICAgICAgICAgIHZhciBsb2FkaW5nSW5kaWNhdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLmNsYXNzTmFtZSA9ICJsb2Fk
aW5nLWluZGljYXRvciI7Ci0gICAgICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLnRleHRDb250ZW50
ID0gIkxvYWRpbmdcdTIwMjYiOwotICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChsb2Fk
aW5nSW5kaWNhdG9yKTsKLQotICAgICAgICAgICAgcXVldWUubG9hZERldGFpbGVkU3RhdHVzKGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHBvcG92ZXIuY29udGVudCA9IHRoaXMuX3BvcG92
ZXJDb250ZW50Rm9yQnViYmxlUXVldWUocXVldWUpOwotICAgICAgICAgICAgfS5iaW5kKHRoaXMp
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciByZWN0ID0gRGFzaGJvYXJkLlJlY3QucmVjdEZy
b21DbGllbnRSZWN0KGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwotICAgICAgICBw
b3BvdmVyLmNvbnRlbnQgPSBjb250ZW50OwotICAgICAgICBwb3BvdmVyLnByZXNlbnQocmVjdCwg
W0Rhc2hib2FyZC5SZWN0RWRnZS5NSU5fWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZLCBEYXNo
Ym9hcmQuUmVjdEVkZ2UuTUFYX1gsIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWF0pOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZVF1ZXVlczogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgdGhpcy5xdWV1ZXMuZm9yRWFjaChmdW5jdGlvbihxdWV1ZSkgeyBxdWV1
ZS51cGRhdGUoKTsgfSk7Ci0gICAgfSwKLQotICAgIF9xdWV1ZVVwZGF0ZWQ6IGZ1bmN0aW9uKGV2
ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy51cGRhdGVTb29uKCk7Ci0gICAgfSwKLX07CgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnViYmxlUXVldWVWaWV3LmpzCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAg
IyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9v
bHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL0J1Z3ppbGxhLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWd6aWxs
YS5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1Z3ppbGxhLmpzCShub25l
eGlzdGVudCkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUJ1Z3ppbGxhID0gZnVuY3Rp
b24oKQotewotICAgIEJhc2VPYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuYmFzZVVSTCA9
ICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iOwotfTsKLQotQmFzZU9iamVjdC5hZGRDb25zdHJ1
Y3RvckZ1bmN0aW9ucyhCdWd6aWxsYSk7Ci0KLUJ1Z3ppbGxhLnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogQnVnemlsbGEsCi0gICAgX19wcm90b19fOiBCYXNlT2JqZWN0LnByb3RvdHlw
ZSwKLQotICAgIGRldGFpbHNVUkxGb3JBdHRhY2htZW50OiBmdW5jdGlvbihhdHRhY2htZW50SUQp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5iYXNlVVJMICsgImF0dGFjaG1lbnQuY2dpP2lk
PSIgKyBlbmNvZGVVUklDb21wb25lbnQoYXR0YWNobWVudElEKSArICImYWN0aW9uPWVkaXQiOwot
ICAgIH0sCi19OwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1Z3ppbGxhLmpz
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMj
IC0xICswLDAgIyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJ
bmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy9CdWlsZGJvdC5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90
LmpzCShub25leGlzdGVudCkKQEAgLTEsMjUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUJ1
aWxkYm90ID0gZnVuY3Rpb24oYmFzZVVSTCwgcXVldWVzSW5mbywgb3B0aW9ucykKLXsKLSAgICBC
YXNlT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICBjb25zb2xlLmFzc2VydChiYXNlVVJMKTsKLSAg
ICBjb25zb2xlLmFzc2VydChxdWV1ZXNJbmZvKTsKLQotICAgIHRoaXMuYmFzZVVSTCA9IGJhc2VV
Ukw7Ci0gICAgdGhpcy5xdWV1ZXNJbmZvID0gcXVldWVzSW5mbzsKLSAgICB0aGlzLnF1ZXVlcyA9
IHt9OwotCi0gICAgdGhpcy5fbm9ybWFsaXplUXVldWVzSW5mbygpOwotCi0gICAgLy8gV2UgcmVn
YXJkIF9uZWVkc0F1dGhlbnRpY2F0aW9uIGFzIGEgaGludCB3aGV0aGVyIHRoaXMgQnVpbGRib3Qg
cmVxdWlyZXMgYXV0aGVudGljYXRpb24gc28gdGhhdCB3ZSBjYW4gc2hvdwotICAgIC8vIGFuIGFw
cHJvcHJpYXRlIGluaXRpYWwgc3RhdHVzIG1lc3NhZ2UgKHNheSwgYW4gInVuYXV0aG9yaXplZCIg
c3RhdHVzIGlmIHRoZSBCdWlsZGJvdCByZXF1aXJlcyBhdXRoZW50aWNhdGlvbikKLSAgICAvLyBm
b3IgaXRzIGFzc29jaWF0ZWQgcXVldWVzIGJlZm9yZSB3ZSBtYWtlIHRoZSBhY3R1YWwgSFRUUCBy
ZXF1ZXN0IGZvciB0aGUgc3RhdHVzIG9mIGVhY2ggcXVldWUuCi0gICAgdGhpcy5fbmVlZHNBdXRo
ZW50aWNhdGlvbiA9IHR5cGVvZiBvcHRpb25zID09PSAib2JqZWN0IiAmJiBvcHRpb25zLm5lZWRz
QXV0aGVudGljYXRpb24gPT09IHRydWU7Ci0gICAgdGhpcy5fYXV0aGVudGljYXRpb25TdGF0dXMg
PSBCdWlsZGJvdC5BdXRoZW50aWNhdGlvblN0YXR1cy5VbmF1dGhlbnRpY2F0ZWQ7Ci0KLSAgICB0
aGlzLlZFUlNJT05fTEVTU19USEFOXzA5ID0gb3B0aW9ucyAmJiBvcHRpb25zLlVTRV9CVUlMREJP
VF9WRVJTSU9OX0xFU1NfVEhBTl8wOTsKLQotICAgIGlmICghdGhpcy5WRVJTSU9OX0xFU1NfVEhB
Tl8wOSkgewotICAgICAgICB0aGlzLl9idWlsZGVyTmFtZVRvSURNYXAgPSB7fTsKLSAgICAgICAg
dGhpcy5fY29tcHV0ZUJ1aWxkZXJOYW1lVG9JRE1hcCgpOwotICAgIH0KLQotICAgIGZvciAodmFy
IGlkIGluIHF1ZXVlc0luZm8pIHsKLSAgICAgICAgaWYgKHF1ZXVlc0luZm9baWRdLmNvbWJpbmVk
UXVldWVzKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBjb21iaW5lZFF1ZXVlSUQgaW4gcXVldWVz
SW5mb1tpZF0uY29tYmluZWRRdWV1ZXMpCi0gICAgICAgICAgICAgICAgdGhpcy5xdWV1ZXNbY29t
YmluZWRRdWV1ZUlEXSA9IG5ldyBCdWlsZGJvdFF1ZXVlKHRoaXMsIGNvbWJpbmVkUXVldWVJRCwg
cXVldWVzSW5mb1tpZF0uY29tYmluZWRRdWV1ZXNbY29tYmluZWRRdWV1ZUlEXSk7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgdGhpcy5xdWV1ZXNbaWRdID0gbmV3IEJ1aWxkYm90UXVldWUo
dGhpcywgaWQsIHF1ZXVlc0luZm9baWRdKTsKLSAgICB9Ci19OwotCi1CYXNlT2JqZWN0LmFkZENv
bnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxkYm90KTsKLQotQnVpbGRib3QuQXV0aGVudGljYXRpb25T
dGF0dXMgPSB7Ci0gICAgVW5hdXRoZW50aWNhdGVkOiAidW5hdXRoZW50aWNhdGVkIiwKLSAgICBB
dXRoZW50aWNhdGVkOiAiYXV0aGVudGljYXRlZCIsCi0gICAgSW52YWxpZENyZWRlbnRpYWxzOiAi
aW52YWxpZC1jcmVkZW50aWFscyIKLX07Ci0KLUJ1aWxkYm90LlVwZGF0ZVJlYXNvbiA9IHsKLSAg
ICBSZWF1dGhlbnRpY2F0ZTogInJlYXV0aGVudGljYXRlIgotfTsKLQotLy8gT3JkZXJlZCBpbXBv
cnRhbmNlLgotQnVpbGRib3QuVGVzdENhdGVnb3J5ID0gewotICAgIFdlYktpdDI6ICJ3ZWJraXQt
MiIsCi0gICAgV2ViS2l0MTogIndlYmtpdC0xIgotfTsKLQotLy8gT3JkZXJlZCBpbXBvcnRhbmNl
LgotQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1cmUgPSB7Ci0gICAgVW5pdmVyc2FsOiAidW5pdmVy
c2FsIiwKLSAgICBTaXh0eUZvdXJCaXQ6ICJzaXh0eS1mb3VyLWJpdCIsCi0gICAgVGhpcnR5VHdv
Qml0OiAidGhpcnR5LXR3by1iaXQiCi19OwotCi1CdWlsZGJvdC5wcm90b3R5cGUgPSB7Ci0gICAg
Y29uc3RydWN0b3I6IEJ1aWxkYm90LAotICAgIF9fcHJvdG9fXzogQmFzZU9iamVjdC5wcm90b3R5
cGUsCi0KLSAgICBnZXQgbmVlZHNBdXRoZW50aWNhdGlvbigpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fbmVlZHNBdXRoZW50aWNhdGlvbjsKLSAgICB9LAotCi0gICAgZ2V0IGF1dGhlbnRp
Y2F0aW9uU3RhdHVzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9hdXRoZW50aWNhdGlv
blN0YXR1czsKLSAgICB9LAotCi0gICAgZ2V0IGlzQXV0aGVudGljYXRlZCgpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25TdGF0dXMgPT09IEJ1aWxkYm90LkF1dGhl
bnRpY2F0aW9uU3RhdHVzLkF1dGhlbnRpY2F0ZWQ7Ci0gICAgfSwKLQotICAgIHNldCBpc0F1dGhl
bnRpY2F0ZWQodmFsdWUpCi0gICAgewotICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGlvblN0YXR1
cyA9IHZhbHVlID8gQnVpbGRib3QuQXV0aGVudGljYXRpb25TdGF0dXMuQXV0aGVudGljYXRlZCA6
IEJ1aWxkYm90LkF1dGhlbnRpY2F0aW9uU3RhdHVzLkludmFsaWRDcmVkZW50aWFsczsKLSAgICB9
LAotCi0gICAgX25vcm1hbGl6ZVF1ZXVlSW5mbzogZnVuY3Rpb24ocXVldWVJbmZvKQotICAgIHsK
LSAgICAgICAgaWYgKCFxdWV1ZUluZm8uY29tYmluZWRRdWV1ZXMpCi0gICAgICAgICAgICBxdWV1
ZUluZm8uYnJhbmNoZXMgPSBxdWV1ZUluZm8uYnJhbmNoZXMgfHwgdGhpcy5kZWZhdWx0QnJhbmNo
ZXM7Ci0gICAgICAgIHF1ZXVlSW5mby5kZWJ1ZyA9IHF1ZXVlSW5mby5kZWJ1ZyB8fCBmYWxzZTsK
LSAgICAgICAgcXVldWVJbmZvLmJ1aWxkZXIgPSBxdWV1ZUluZm8uYnVpbGRlciB8fCBmYWxzZTsK
LSAgICAgICAgcXVldWVJbmZvLnRlc3RlciA9IHF1ZXVlSW5mby50ZXN0ZXIgfHwgZmFsc2U7Ci0g
ICAgICAgIHF1ZXVlSW5mby5wZXJmb3JtYW5jZSA9IHF1ZXVlSW5mby5wZXJmb3JtYW5jZSB8fCBm
YWxzZTsKLSAgICAgICAgcXVldWVJbmZvLnN0YXRpY0FuYWx5emVyID0gcXVldWVJbmZvLnN0YXRp
Y0FuYWx5emVyIHx8IGZhbHNlOwotICAgICAgICBxdWV1ZUluZm8ubGVha3MgPSBxdWV1ZUluZm8u
bGVha3MgfHwgZmFsc2U7Ci0gICAgICAgIHF1ZXVlSW5mby5hcmNoaXRlY3R1cmUgPSBxdWV1ZUlu
Zm8uYXJjaGl0ZWN0dXJlIHx8IG51bGw7Ci0gICAgICAgIHF1ZXVlSW5mby50ZXN0Q2F0ZWdvcnkg
PSBxdWV1ZUluZm8udGVzdENhdGVnb3J5IHx8IG51bGw7Ci0gICAgICAgIHF1ZXVlSW5mby5oZWFk
aW5nID0gcXVldWVJbmZvLmhlYWRpbmcgfHwgbnVsbDsKLSAgICAgICAgcXVldWVJbmZvLmNyYXNo
ZXNPbmx5ID0gcXVldWVJbmZvLmNyYXNoZXNPbmx5IHx8IGZhbHNlOwotICAgIH0sCi0KLSAgICBf
bm9ybWFsaXplUXVldWVzSW5mbzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgZm9yIChxdWV1
ZU5hbWUgaW4gdGhpcy5xdWV1ZXNJbmZvKSB7Ci0gICAgICAgICAgICB2YXIgcXVldWVJbmZvID0g
dGhpcy5xdWV1ZXNJbmZvW3F1ZXVlTmFtZV07Ci0gICAgICAgICAgICB0aGlzLl9ub3JtYWxpemVR
dWV1ZUluZm8ocXVldWVJbmZvKTsKLSAgICAgICAgICAgIGlmIChxdWV1ZUluZm8uY29tYmluZWRR
dWV1ZXMpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbWJpbmVkUXVldWVOYW1lIGluIHF1ZXVl
SW5mby5jb21iaW5lZFF1ZXVlcykgewotICAgICAgICAgICAgICAgICAgICBxdWV1ZUluZm8uY29t
YmluZWRRdWV1ZXNbY29tYmluZWRRdWV1ZU5hbWVdLnBsYXRmb3JtID0gcXVldWVJbmZvLnBsYXRm
b3JtOwotICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3JtYWxpemVRdWV1ZUluZm8ocXVldWVJ
bmZvLmNvbWJpbmVkUXVldWVzW2NvbWJpbmVkUXVldWVOYW1lXSk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHVwZGF0ZVF1ZXVlczog
ZnVuY3Rpb24odXBkYXRlUmVhc29uKQotICAgIHsKLSAgICAgICAgdmFyIHNob3VsZFJlYXV0aGVu
dGljYXRlID0gdXBkYXRlUmVhc29uID09PSBCdWlsZGJvdC5VcGRhdGVSZWFzb24uUmVhdXRoZW50
aWNhdGU7Ci0gICAgICAgIGlmIChzaG91bGRSZWF1dGhlbnRpY2F0ZSkgewotICAgICAgICAgICAg
dmFyIHNhdmVkQXV0aGVudGljYXRpb25TdGF0dXMgPSB0aGlzLl9hdXRoZW50aWNhdGlvblN0YXR1
czsKLSAgICAgICAgICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9uU3RhdHVzID0gQnVpbGRib3QuQXV0
aGVudGljYXRpb25TdGF0dXMuVW5hdXRoZW50aWNhdGVkOwotICAgICAgICB9Ci0gICAgICAgIGZv
ciAodmFyIGlkIGluIHRoaXMucXVldWVzKQotICAgICAgICAgICAgdGhpcy5xdWV1ZXNbaWRdLnVw
ZGF0ZSgpOwotICAgICAgICBpZiAoc2hvdWxkUmVhdXRoZW50aWNhdGUpIHsKLSAgICAgICAgICAg
IC8vIEFzc2VydCBzdGF0dXMgd2Fzbid0IGNoYW5nZWQgc3luY2hyb25vdXNseS4gT3RoZXJ3aXNl
LCB3ZSB3aWxsIG92ZXJyaWRlIGl0IChiZWxvdykuCi0gICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLl9hdXRoZW50aWNhdGlvblN0YXR1cyA9PT0gQnVpbGRib3QuQXV0aGVudGljYXRpb25T
dGF0dXMuVW5hdXRoZW50aWNhdGVkKTsKLSAgICAgICAgICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9u
U3RhdHVzID0gc2F2ZWRBdXRoZW50aWNhdGlvblN0YXR1czsKLSAgICAgICAgfQotICAgIH0sCi0K
LSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbG9naWMgYWZ0ZXIgPGh0dHBzOi8vZ2l0aHViLmNv
bS9idWlsZGJvdC9idWlsZGJvdC9pc3N1ZXMvMzQ2NT4gaXMgZml4ZWQuCi0gICAgX2NvbXB1dGVC
dWlsZGVyTmFtZVRvSURNYXA6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEpTT04ubG9hZCh0
aGlzLmJhc2VVUkwgKyAiYXBpL3YyL2J1aWxkZXJzIiwgZnVuY3Rpb24oZGF0YSkgewotICAgICAg
ICAgICAgaWYgKCFkYXRhIHx8ICEoZGF0YS5idWlsZGVycyBpbnN0YW5jZW9mIEFycmF5KSkKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGZvciAodmFyIGJ1aWxkZXIgb2Yg
ZGF0YS5idWlsZGVycykKLSAgICAgICAgICAgICAgICB0aGlzLl9idWlsZGVyTmFtZVRvSURNYXBb
YnVpbGRlci5uYW1lXSA9IGJ1aWxkZXIuYnVpbGRlcmlkOwotICAgICAgICB9LmJpbmQodGhpcykp
OwotICAgIH0sCi0KLSAgICBidWlsZFBhZ2VVUkxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJh
dGlvbikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLlZFUlNJT05fTEVTU19USEFOXzA5KQotICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJQ29t
cG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkgKyAiL2J1aWxkcy8iICsgaXRlcmF0aW9uLmlkOwot
Ci0gICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcy5fYnVpbGRlck5hbWVUb0lETWFwIGxvb2t1
cCBhZnRlciA8aHR0cHM6Ly9naXRodWIuY29tL2J1aWxkYm90L2J1aWxkYm90L2lzc3Vlcy8zNDY1
PiBpcyBmaXhlZC4KLSAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICIjL2J1aWxkZXJzLyIg
KyBlbmNvZGVVUklDb21wb25lbnQodGhpcy5fYnVpbGRlck5hbWVUb0lETWFwW2l0ZXJhdGlvbi5x
dWV1ZS5pZF0pICsgIi9idWlsZHMvIiArIGl0ZXJhdGlvbi5pZDsKLSAgICB9LAotCi0gICAgamF2
YVNjcmlwdENvcmVUZXN0RmFpbHVyZXNVUkxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlv
biwgbmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkUGFnZVVSTEZvckl0ZXJh
dGlvbihpdGVyYXRpb24pICsgIi9zdGVwcy8iICsgbmFtZSArICIvbG9ncy9qc29uL3RleHQiOwot
ICAgIH0sCi0KLSAgICBqYXZhU2NyaXB0Q29yZVRlc3RTdGRpb1VybEZvckl0ZXJhdGlvbjogZnVu
Y3Rpb24oaXRlcmF0aW9uLCBuYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRQ
YWdlVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikgKyAiL3N0ZXBzLyIgKyBuYW1lICsgIi9sb2dz
L3N0ZGlvIjsKLSAgICB9LAotCi0gICAgbGF5b3V0VGVzdFJlc3VsdHNEaXJlY3RvcnlVUkxGb3JJ
dGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbikKLSAgICB7Ci0gICAgICAgIHZhciB1bmRlcnNj
b3JlU2VwYXJhdGVkUmV2aXNpb25zID0gInIiOwotICAgICAgICBzb3J0RGljdGlvbmFyaWVzQnlP
cmRlcihEYXNoYm9hcmQuUmVwb3NpdG9yeSkuZm9yRWFjaChmdW5jdGlvbihyZXBvc2l0b3J5KSB7
Ci0gICAgICAgICAgICBpZiAoaXRlcmF0aW9uLnJldmlzaW9uW3JlcG9zaXRvcnkubmFtZV0pIHsK
LSAgICAgICAgICAgICAgICBpZiAodW5kZXJzY29yZVNlcGFyYXRlZFJldmlzaW9ucy5sZW5ndGgg
PiAxKQotICAgICAgICAgICAgICAgICAgICB1bmRlcnNjb3JlU2VwYXJhdGVkUmV2aXNpb25zICs9
ICJfIjsKLSAgICAgICAgICAgICAgICB1bmRlcnNjb3JlU2VwYXJhdGVkUmV2aXNpb25zICs9IGl0
ZXJhdGlvbi5yZXZpc2lvbltyZXBvc2l0b3J5Lm5hbWVdOwotICAgICAgICAgICAgfQotICAgICAg
ICB9KTsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJyZXN1bHRzLyIgKyBlbmNvZGVV
UklDb21wb25lbnQoaXRlcmF0aW9uLnF1ZXVlLmlkKSArICIvIiArIGVuY29kZVVSSUNvbXBvbmVu
dCh1bmRlcnNjb3JlU2VwYXJhdGVkUmV2aXNpb25zICsgIiAoIiArIGl0ZXJhdGlvbi5pZCArICIp
Iik7Ci0gICAgfSwKLQotICAgIGxheW91dFRlc3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uOiBmdW5j
dGlvbihpdGVyYXRpb24pCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXRUZXN0UmVz
dWx0c0RpcmVjdG9yeVVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pICsgIi9yZXN1bHRzLmh0bWwi
OwotICAgIH0sCi0KLSAgICBkYXNoYm9hcmRUZXN0UmVzdWx0c1VSTEZvckl0ZXJhdGlvbjogZnVu
Y3Rpb24oaXRlcmF0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubGF5b3V0VGVzdFJl
c3VsdHNEaXJlY3RvcnlVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKSArICIvZGFzaGJvYXJkLWxh
eW91dC10ZXN0LXJlc3VsdHMvaW5kZXgtcHJldHR5LWRpZmYuaHRtbCI7Ci0gICAgfSwKLQotICAg
IGxheW91dFRlc3RGdWxsUmVzdWx0c1VSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9u
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubGF5b3V0VGVzdFJlc3VsdHNEaXJlY3RvcnlV
UkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKSArICIvZnVsbF9yZXN1bHRzLmpzb24iOwotICAgIH0s
Ci0KLSAgICBsYXlvdXRUZXN0Q3Jhc2hMb2dVUkxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJh
dGlvbiwgdGVzdFBhdGgpCi0gICAgewotICAgICAgICB2YXIgcGF0aCA9IHRlc3RQYXRoLnJlcGxh
Y2UoL14oLiopXC4oPzouKikkLywgIiQxLWNyYXNoLWxvZy50eHQiKTsKLSAgICAgICAgcmV0dXJu
IHRoaXMubGF5b3V0VGVzdFJlc3VsdHNEaXJlY3RvcnlVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9u
KSArICIvIiArIHBhdGg7Ci0gICAgfSwKLQotICAgIGxheW91dFRlc3RTdGRlcnJVUkxGb3JJdGVy
YXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgdGVzdFBhdGgpCi0gICAgewotICAgICAgICB2YXIg
cGF0aCA9IHRlc3RQYXRoLnJlcGxhY2UoL14oLiopXC4oPzouKikkLywgIiQxLXN0ZGVyci50eHQi
KTsKLSAgICAgICAgcmV0dXJuIHRoaXMubGF5b3V0VGVzdFJlc3VsdHNEaXJlY3RvcnlVUkxGb3JJ
dGVyYXRpb24oaXRlcmF0aW9uKSArICIvIiArIHBhdGg7Ci0gICAgfSwKLQotICAgIGxheW91dFRl
c3REaWZmVVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24sIHRlc3RQYXRoKQotICAg
IHsKLSAgICAgICAgdmFyIHBhdGggPSB0ZXN0UGF0aC5yZXBsYWNlKC9eKC4qKVwuKD86LiopJC8s
ICIkMS1kaWZmLnR4dCIpOwotICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXRUZXN0UmVzdWx0c0Rp
cmVjdG9yeVVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pICsgIi8iICsgcGF0aDsKLSAgICB9LAot
Ci0gICAgbGF5b3V0VGVzdFByZXR0eURpZmZVUkxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJh
dGlvbiwgdGVzdFBhdGgpCi0gICAgewotICAgICAgICAvLyBwcmV0dHktcGF0Y2ggbWF5IG5vdCBi
ZSBhdmFpbGFibGUsIGNhbGxlciBzaG91bGQgY2hlY2sgSlNPTiByZXN1bHRzIGZvciBoYXNfcHJl
dHR5X3BhdGNoIGF0dHJpYnV0ZS4KLSAgICAgICAgdmFyIHBhdGggPSB0ZXN0UGF0aC5yZXBsYWNl
KC9eKC4qKVwuKD86LiopJC8sICIkMS1wcmV0dHktZGlmZi5odG1sIik7Ci0gICAgICAgIHJldHVy
biB0aGlzLmxheW91dFRlc3RSZXN1bHRzRGlyZWN0b3J5VVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlv
bikgKyAiLyIgKyBwYXRoOwotICAgIH0sCi0KLSAgICBsYXlvdXRUZXN0SW1hZ2VzVVJMRm9ySXRl
cmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24sIHRlc3RQYXRoKQotICAgIHsKLSAgICAgICAgdmFy
IHBhdGggPSB0ZXN0UGF0aC5yZXBsYWNlKC9eKC4qKVwuKD86LiopJC8sICIkMS1kaWZmcy5odG1s
Iik7Ci0gICAgICAgIHJldHVybiB0aGlzLmxheW91dFRlc3RSZXN1bHRzRGlyZWN0b3J5VVJMRm9y
SXRlcmF0aW9uKGl0ZXJhdGlvbikgKyAiLyIgKyBwYXRoOwotICAgIH0sCi0KLSAgICBsYXlvdXRU
ZXN0SW1hZ2VEaWZmVVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24sIHRlc3RQYXRo
KQotICAgIHsKLSAgICAgICAgdmFyIHBhdGggPSB0ZXN0UGF0aC5yZXBsYWNlKC9eKC4qKVwuKD86
LiopJC8sICIkMS1kaWZmLnBuZyIpOwotICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXRUZXN0UmVz
dWx0c0RpcmVjdG9yeVVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pICsgIi8iICsgcGF0aDsKLSAg
ICB9LAotfTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEJ1aWxkZXJRdWV1ZVZpZXcuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90QnVpbGRlclF1ZXVlVmlldy5qcwko
cmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90QnVpbGRlclF1ZXVlVmll
dy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotQnVpbGRi
b3RCdWlsZGVyUXVldWVWaWV3ID0gZnVuY3Rpb24ocXVldWVzKQotewotICAgIEJ1aWxkYm90UXVl
dWVWaWV3LmNhbGwodGhpcywgcXVldWVzKTsKLQotICAgIGZ1bmN0aW9uIGZpbHRlclF1ZXVlcyhh
cmNoaXRlY3R1cmUsIGRlYnVnLCBxdWV1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBxdWV1ZS5h
cmNoaXRlY3R1cmUgPT09IGFyY2hpdGVjdHVyZSAmJiBxdWV1ZS5kZWJ1ZyA9PT0gZGVidWc7Ci0g
ICAgfQotCi0gICAgdGhpcy51bml2ZXJzYWxSZWxlYXNlUXVldWVzID0gdGhpcy5xdWV1ZXMuZmls
dGVyKGZpbHRlclF1ZXVlcy5iaW5kKHRoaXMsIEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlLlVu
aXZlcnNhbCwgZmFsc2UpKTsKLSAgICB0aGlzLnNpeHR5Rm91ckJpdFJlbGVhc2VRdWV1ZXMgPSB0
aGlzLnF1ZXVlcy5maWx0ZXIoZmlsdGVyUXVldWVzLmJpbmQodGhpcywgQnVpbGRib3QuQnVpbGRB
cmNoaXRlY3R1cmUuU2l4dHlGb3VyQml0LCBmYWxzZSkpOwotICAgIHRoaXMudGhpcnR5VHdvQml0
UmVsZWFzZVF1ZXVlcyA9IHRoaXMucXVldWVzLmZpbHRlcihmaWx0ZXJRdWV1ZXMuYmluZCh0aGlz
LCBCdWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5UaGlydHlUd29CaXQsIGZhbHNlKSk7Ci0KLSAg
ICB0aGlzLnVuaXZlcnNhbERlYnVnUXVldWVzID0gdGhpcy5xdWV1ZXMuZmlsdGVyKGZpbHRlclF1
ZXVlcy5iaW5kKHRoaXMsIEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlLlVuaXZlcnNhbCwgdHJ1
ZSkpOwotICAgIHRoaXMuc2l4dHlGb3VyQml0RGVidWdRdWV1ZXMgPSB0aGlzLnF1ZXVlcy5maWx0
ZXIoZmlsdGVyUXVldWVzLmJpbmQodGhpcywgQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1cmUuU2l4
dHlGb3VyQml0LCB0cnVlKSk7Ci0gICAgdGhpcy50aGlydHlUd29CaXREZWJ1Z1F1ZXVlcyA9IHRo
aXMucXVldWVzLmZpbHRlcihmaWx0ZXJRdWV1ZXMuYmluZCh0aGlzLCBCdWlsZGJvdC5CdWlsZEFy
Y2hpdGVjdHVyZS5UaGlydHlUd29CaXQsIHRydWUpKTsKLQotICAgIHRoaXMuaGFzTXVsdGlwbGVS
ZWxlYXNlQnVpbGRzID0gdGhpcy51bml2ZXJzYWxSZWxlYXNlUXVldWVzLmxlbmd0aCArIHRoaXMu
c2l4dHlGb3VyQml0UmVsZWFzZVF1ZXVlcy5sZW5ndGggKyB0aGlzLnRoaXJ0eVR3b0JpdFJlbGVh
c2VRdWV1ZXMubGVuZ3RoID4gMTsKLSAgICB0aGlzLmhhc011bHRpcGxlRGVidWdCdWlsZHMgPSB0
aGlzLnVuaXZlcnNhbERlYnVnUXVldWVzLmxlbmd0aCArIHRoaXMuc2l4dHlGb3VyQml0RGVidWdR
dWV1ZXMubGVuZ3RoICsgdGhpcy50aGlydHlUd29CaXREZWJ1Z1F1ZXVlcy5sZW5ndGggPiAxOwot
Ci0gICAgdGhpcy51cGRhdGUoKTsKLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5j
dGlvbnMoQnVpbGRib3RCdWlsZGVyUXVldWVWaWV3KTsKLQotQnVpbGRib3RCdWlsZGVyUXVldWVW
aWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogQnVpbGRib3RCdWlsZGVyUXVldWVW
aWV3LAotICAgIF9fcHJvdG9fXzogQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLAotCi0gICAg
dXBkYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBCdWlsZGJvdFF1ZXVlVmlldy5wcm90
b3R5cGUudXBkYXRlLmNhbGwodGhpcyk7Ci0KLSAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNo
aWxkcmVuKCk7Ci0KLSAgICAgICAgZnVuY3Rpb24gYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVzKHF1
ZXVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAocXVldWUuYnVpbGRib3QubmVlZHNBdXRo
ZW50aWNhdGlvbiAmJiAhcXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkKSB7Ci0gICAgICAg
ICAgICAgICAgdGhpcy5fYXBwZW5kVW5hdXRob3JpemVkTGluZVZpZXcocXVldWUpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhpcy5fYXBw
ZW5kUGVuZGluZ1JldmlzaW9uQ291bnQocXVldWUsIHRoaXMuX2xhdGVzdFByb2R1Y3RpdmVJdGVy
YXRpb24uYmluZCh0aGlzLCBxdWV1ZSkpOwotCi0gICAgICAgICAgICB2YXIgZmlyc3RSZWNlbnRV
bnN1Y2Nlc3NmdWxJdGVyYXRpb24gPSBxdWV1ZS5maXJzdFJlY2VudFVuc3VjY2Vzc2Z1bEl0ZXJh
dGlvbjsKLSAgICAgICAgICAgIHZhciBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24gPSBxdWV1
ZS5tb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb247Ci0gICAgICAgICAgICB2YXIgbW9zdFJlY2Vu
dFN1Y2Nlc3NmdWxJdGVyYXRpb24gPSBxdWV1ZS5tb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlv
bjsKLQotICAgICAgICAgICAgaWYgKGZpcnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0aW9uICYm
IGZpcnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0aW9uLmxvYWRlZAotICAgICAgICAgICAgICAg
ICYmIG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbiAmJiBtb3N0UmVjZW50RmluaXNoZWRJdGVy
YXRpb24ubG9hZGVkKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIW1vc3RSZWNl
bnRGaW5pc2hlZEl0ZXJhdGlvbi5zdWNjZXNzZnVsKTsKLSAgICAgICAgICAgICAgICB2YXIgbWVz
c2FnZSA9IHRoaXMucmV2aXNpb25Db250ZW50Rm9ySXRlcmF0aW9uKG1vc3RSZWNlbnRGaW5pc2hl
ZEl0ZXJhdGlvbiwgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLnByb2R1Y3RpdmUgPyBtb3N0
UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbiA6IG51bGwpOwotICAgICAgICAgICAgICAgIGlmICht
b3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24uZmFpbGVkICYmIG1vc3RSZWNlbnRGaW5pc2hlZEl0
ZXJhdGlvbi5wcm9kdWN0aXZlKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEFzc3VtZSBpdCB3
YXMgYSBidWlsZCBzdGVwIHRoYXQgZmFpbGVkLCBhbmQgbGluayBkaXJlY3RseSB0byBvdXRwdXQu
Ci0gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRp
b24uZmFpbHVyZUxvZ1VSTCgiYnVpbGQgbG9nIik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgh
dXJsKQotICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gbW9zdFJlY2VudEZpbmlzaGVkSXRl
cmF0aW9uLmZhaWx1cmVMb2dVUkwoInN0ZGlvIik7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBz
dGF0dXMgPSBTdGF0dXNMaW5lVmlldy5TdGF0dXMuQmFkOwotICAgICAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gU3RhdHVzTGluZVZpZXcuU3RhdHVz
LkRhbmdlcjsKLQotICAgICAgICAgICAgICAgIC8vIFNob3cgYSBwb3BvdmVyIHdoZW4gdGhlIFVS
TCBpcyBub3QgYSBtYWluIGJ1aWxkIHBhZ2Ugb25lLCBiZWNhdXNlIHRoZXJlIGFyZSB1c3VhbGx5
IG11bHRpcGxlIGxvZ3MsIGFuZCBpdCdzIGdvb2QgdG8gcHJvdmlkZSBhIGNob2ljZS4KLSAgICAg
ICAgICAgICAgICB2YXIgbmVlZHNQb3BvdmVyID0gISF1cmw7Ci0KLSAgICAgICAgICAgICAgICAv
LyBTb21lIG90aGVyIHN0ZXAgZmFpbGVkLCBsaW5rIHRvIG1haW4gYnVpbGRib3QgcGFnZSBmb3Ig
dGhlIGl0ZXJhdGlvbi4KLSAgICAgICAgICAgICAgICBpZiAoIXVybCkKLSAgICAgICAgICAgICAg
ICAgICAgdXJsID0gcXVldWUuYnVpbGRib3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKG1vc3RS
ZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5l
dyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlLCBzdGF0dXMsIG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJh
dGlvbi50ZXh0LCBudWxsLCB1cmwpOwotICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBl
bmRDaGlsZChzdGF0dXMuZWxlbWVudCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAobmVlZHNQb3Bv
dmVyKQotICAgICAgICAgICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1
c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRmFpbHVyZUxvZ3MuYmluZCh0aGlz
KSwgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgaWYgKG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0aW9uICYmIG1vc3RSZWNlbnRTdWNj
ZXNzZnVsSXRlcmF0aW9uLmxvYWRlZCkgewotICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0g
dGhpcy5yZXZpc2lvbkNvbnRlbnRGb3JJdGVyYXRpb24obW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVy
YXRpb24pOwotICAgICAgICAgICAgICAgIHZhciB1cmwgPSBxdWV1ZS5idWlsZGJvdC5idWlsZFBh
Z2VVUkxGb3JJdGVyYXRpb24obW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb24pOwotICAgICAg
ICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZSwgU3RhdHVz
TGluZVZpZXcuU3RhdHVzLkdvb2QsIGZpcnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0aW9uID8g
Imxhc3Qgc3VjY2Vzc2Z1bCBidWlsZCIgOiAibGF0ZXN0IGJ1aWxkIiwgbnVsbCwgdXJsKTsKLSAg
ICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOwot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0
YXR1c0xpbmVWaWV3KCJ1bmtub3duIiwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLk5ldXRyYWwsIGZp
cnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0aW9uID8gImxhc3Qgc3VjY2Vzc2Z1bCBidWlsZCIg
OiAibGF0ZXN0IGJ1aWxkIik7Ci0gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENo
aWxkKHN0YXR1cy5lbGVtZW50KTsKLQotICAgICAgICAgICAgICAgIGlmIChmaXJzdFJlY2VudFVu
c3VjY2Vzc2Z1bEl0ZXJhdGlvbikgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGEg
ZmFpbGVkIGl0ZXJhdGlvbiBidXQgbm8gc3VjY2Vzc2Z1bC4gSXQgbWlnaHQgYmUgZnVydGhlciBi
YWNrIGluIHRpbWUuCi0gICAgICAgICAgICAgICAgICAgIHF1ZXVlLmxvYWRNb3JlSGlzdG9yaWNh
bEl0ZXJhdGlvbnMoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICB0aGlzLmFwcGVuZEJ1aWxkU3R5bGUuY2FsbCh0aGlzLCB0aGlzLnVuaXZl
cnNhbFJlbGVhc2VRdWV1ZXMsIHRoaXMuaGFzTXVsdGlwbGVSZWxlYXNlQnVpbGRzID8gIlJlbGVh
c2UgKFVuaXZlcnNhbCkiIDogIlJlbGVhc2UiLCBhcHBlbmRCdWlsZGVyUXVldWVTdGF0dXMpOwot
ICAgICAgICB0aGlzLmFwcGVuZEJ1aWxkU3R5bGUuY2FsbCh0aGlzLCB0aGlzLnNpeHR5Rm91ckJp
dFJlbGVhc2VRdWV1ZXMsIHRoaXMuaGFzTXVsdGlwbGVSZWxlYXNlQnVpbGRzID8gIlJlbGVhc2Ug
KDY0LWJpdCkiIDogIlJlbGVhc2UiLCBhcHBlbmRCdWlsZGVyUXVldWVTdGF0dXMpOwotICAgICAg
ICB0aGlzLmFwcGVuZEJ1aWxkU3R5bGUuY2FsbCh0aGlzLCB0aGlzLnRoaXJ0eVR3b0JpdFJlbGVh
c2VRdWV1ZXMsIHRoaXMuaGFzTXVsdGlwbGVSZWxlYXNlQnVpbGRzID8gIlJlbGVhc2UgKDMyLWJp
dCkiIDogIlJlbGVhc2UiLCBhcHBlbmRCdWlsZGVyUXVldWVTdGF0dXMpOwotCi0gICAgICAgIHRo
aXMuYXBwZW5kQnVpbGRTdHlsZS5jYWxsKHRoaXMsIHRoaXMudW5pdmVyc2FsRGVidWdRdWV1ZXMs
IHRoaXMuaGFzTXVsdGlwbGVEZWJ1Z0J1aWxkcyA/ICJEZWJ1ZyAoVW5pdmVyc2FsKSIgOiAiRGVi
dWciLCBhcHBlbmRCdWlsZGVyUXVldWVTdGF0dXMpOwotICAgICAgICB0aGlzLmFwcGVuZEJ1aWxk
U3R5bGUuY2FsbCh0aGlzLCB0aGlzLnNpeHR5Rm91ckJpdERlYnVnUXVldWVzLCB0aGlzLmhhc011
bHRpcGxlRGVidWdCdWlsZHMgPyAiRGVidWcgKDY0LWJpdCkiIDogIkRlYnVnIiwgYXBwZW5kQnVp
bGRlclF1ZXVlU3RhdHVzKTsKLSAgICAgICAgdGhpcy5hcHBlbmRCdWlsZFN0eWxlLmNhbGwodGhp
cywgdGhpcy50aGlydHlUd29CaXREZWJ1Z1F1ZXVlcywgdGhpcy5oYXNNdWx0aXBsZURlYnVnQnVp
bGRzID8gIkRlYnVnICgzMi1iaXQpIiA6ICJEZWJ1ZyIsIGFwcGVuZEJ1aWxkZXJRdWV1ZVN0YXR1
cyk7Ci0gICAgfSwKLQotICAgIF9wcmVzZW50UG9wb3ZlckZhaWx1cmVMb2dzOiBmdW5jdGlvbihl
bGVtZW50LCBwb3BvdmVyLCBpdGVyYXRpb24pCi0gICAgewotICAgICAgICB2YXIgY29udGVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBjb250ZW50LmNsYXNzTmFt
ZSA9ICJidWlsZC1sb2dzLXBvcG92ZXIiOwotCi0gICAgICAgIGZ1bmN0aW9uIGFkZExvZyhuYW1l
LCB1cmwpIHsKLSAgICAgICAgICAgIHZhciBsaW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
YSIpOwotICAgICAgICAgICAgbGluZS5jbGFzc05hbWUgPSAiYnVpbGQtbG9nLWxpbmsiOwotICAg
ICAgICAgICAgbGluZS5ocmVmID0gdXJsOwotICAgICAgICAgICAgbGluZS50ZXh0Q29udGVudCA9
IG5hbWU7Ci0gICAgICAgICAgICBsaW5lLnRhcmdldCA9ICJfYmxhbmsiOwotICAgICAgICAgICAg
Y29udGVudC5hcHBlbmRDaGlsZChsaW5lKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX2Fk
ZEl0ZXJhdGlvbkhlYWRpbmdUb1BvcG92ZXIoaXRlcmF0aW9uLCBjb250ZW50KTsKLSAgICAgICAg
dGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50KTsKLSAgICAgICAgCi0gICAgICAgIHZh
ciBsb2dzSGVhZGluZ0xpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAg
ICAgbG9nc0hlYWRpbmdMaW5lLmNsYXNzTmFtZSA9ICJidWlsZC1sb2dzLWhlYWRpbmciOwotICAg
ICAgICBsb2dzSGVhZGluZ0xpbmUudGV4dENvbnRlbnQgPSBpdGVyYXRpb24uZmlyc3RGYWlsZWRT
dGVwTmFtZSArICIgZmFpbGVkIjsKLSAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChsb2dzSGVh
ZGluZ0xpbmUpOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSBpdGVyYXRpb24uZmFp
bHVyZUxvZ3MubGVuZ3RoOyBpIDwgZW5kOyArK2kpCi0gICAgICAgICAgICBhZGRMb2coaXRlcmF0
aW9uLmZhaWx1cmVMb2dzW2ldWzBdLCBpdGVyYXRpb24uZmFpbHVyZUxvZ3NbaV1bMV0pOwotCi0g
ICAgICAgIHZhciByZWN0ID0gRGFzaGJvYXJkLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGVsZW1l
bnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwotICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBj
b250ZW50OwotICAgICAgICBwb3BvdmVyLnByZXNlbnQocmVjdCwgW0Rhc2hib2FyZC5SZWN0RWRn
ZS5NSU5fWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFY
X1gsIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWF0pOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci19OwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90Q29tYmluZWRRdWV1ZVZpZXcuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90Q29tYmluZWRRdWV1ZVZpZXcuanMJ
KHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdENvbWJpbmVkUXVldWVW
aWV3LmpzCShub25leGlzdGVudCkKQEAgLTEsMjQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLUJ1aWxkYm90Q29tYmluZWRRdWV1ZVZpZXcgPSBmdW5jdGlvbihxdWV1ZSkKLXsKLSAg
ICBjb25zb2xlLmFzc2VydChxdWV1ZS5icmFuY2hlcyA9PT0gdW5kZWZpbmVkKTsKLSAgICB2YXIg
aW5kaWNlc09mRmlyc3RRdWV1ZVdpdGhSZXBvc2l0b3J5ID0ge307Ci0gICAgdmFyIGNvbWJpbmVk
UXVldWVzID0gcXVldWUuY29tYmluZWRRdWV1ZXM7Ci0gICAgdmFyIGJ1aWxkYm90ID0gY29tYmlu
ZWRRdWV1ZXNbMF0uYnVpbGRib3Q7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21iaW5lZFF1
ZXVlcy5sZW5ndGg7ICsraSkgewotICAgICAgICB2YXIgc3ViUXVldWUgPSBjb21iaW5lZFF1ZXVl
c1tpXTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnVpbGRib3QgPT09IHN1YlF1ZXVlLmJ1aWxk
Ym90KTsKLSAgICAgICAgdmFyIGJyYW5jaGVzID0gc3ViUXVldWUuYnJhbmNoZXM7Ci0gICAgICAg
IGZvciAodmFyIGogPSAwOyBqIDwgYnJhbmNoZXMubGVuZ3RoOyArK2opIHsKLSAgICAgICAgICAg
IHZhciBicmFuY2ggPSBicmFuY2hlc1tqXTsKLSAgICAgICAgICAgIHZhciByZXBvc2l0b3J5TmFt
ZSA9IGJyYW5jaC5yZXBvc2l0b3J5Lm5hbWU7Ci0gICAgICAgICAgICB2YXIgZXhwZWN0ZWQgPSBp
bmRpY2VzT2ZGaXJzdFF1ZXVlV2l0aFJlcG9zaXRvcnlbcmVwb3NpdG9yeU5hbWVdOwotICAgICAg
ICAgICAgaWYgKGV4cGVjdGVkID09PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICBpbmRp
Y2VzT2ZGaXJzdFF1ZXVlV2l0aFJlcG9zaXRvcnlbcmVwb3NpdG9yeU5hbWVdID0geyBxdWV1ZUlu
ZGV4OiBpLCBicmFuY2hJbmRleDogaiB9OwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgdmFyIGV4cGVjdGVkQnJhbmNoID0gY29tYmluZWRRdWV1
ZXNbZXhwZWN0ZWQucXVldWVJbmRleF0uYnJhbmNoZXNbZXhwZWN0ZWQuYnJhbmNoSW5kZXhdOwot
ICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBxdWV1ZS5pZCArICI6ICIgKyBicmFuY2gubmFtZSAr
ICIgPT09IGNvbWJpbmVkUXVldWVzWyIgKyBpICsgIl0uYnJhbmNoWyIgKyBqICsgIl0gIjsKLSAg
ICAgICAgICAgIG1lc3NhZ2UgKz0gIj09PSBjb21iaW5lZFF1ZXVlc1siICsgZXhwZWN0ZWQucXVl
dWVJbmRleCArICJdLmJyYW5jaFsiICsgZXhwZWN0ZWQuYnJhbmNoSW5kZXggKyAiXSA9PT0gIiAr
IGV4cGVjdGVkQnJhbmNoLm5hbWU7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChicmFuY2gu
bmFtZSA9PT0gZXhwZWN0ZWRCcmFuY2gubmFtZSwgbWVzc2FnZSk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBCdWlsZGJvdFF1ZXVlVmlldy5jYWxsKHRoaXMsIHF1ZXVlLmNvbWJpbmVkUXVldWVz
KTsKLQotICAgIHRoaXMuX2Fsd2F5c0V4cGFuZCA9IGZhbHNlOwotICAgIHRoaXMuY29tYmluZWRR
dWV1ZSA9IHF1ZXVlOwotICAgIHRoaXMudXBkYXRlKCk7Ci19OwotCi1CYXNlT2JqZWN0LmFkZENv
bnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxkYm90Q29tYmluZWRRdWV1ZVZpZXcpOwotCi1CdWlsZGJv
dENvbWJpbmVkUXVldWVWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogQnVpbGRi
b3RDb21iaW5lZFF1ZXVlVmlldywKLSAgICBfX3Byb3RvX186IEJ1aWxkYm90UXVldWVWaWV3LnBy
b3RvdHlwZSwKLQotICAgIHVwZGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgQnVpbGRi
b3RRdWV1ZVZpZXcucHJvdG90eXBlLnVwZGF0ZS5jYWxsKHRoaXMpOwotCi0gICAgICAgIHRoaXMu
ZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotCi0gICAgICAgIGlmICghdGhpcy5fYWx3YXlzRXhw
YW5kICYmIHRoaXMuX3F1ZXVlc1Nob3VsZERpc3BsYXlDb21iaW5lZCgpKSB7Ci0gICAgICAgICAg
ICB2YXIgcmVsZWFzZUxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgICAg
ICAgICAgcmVsZWFzZUxhYmVsLmNsYXNzTGlzdC5hZGQoInF1ZXVlTGFiZWwiKTsKLSAgICAgICAg
ICAgIHJlbGVhc2VMYWJlbC5ocmVmID0gIiMiOwotICAgICAgICAgICAgcmVsZWFzZUxhYmVsLnRl
eHRDb250ZW50ID0gdGhpcy5jb21iaW5lZFF1ZXVlLmhlYWRpbmc7Ci0gICAgICAgICAgICByZWxl
YXNlTGFiZWwub25jbGljayA9IGZ1bmN0aW9uKCkgeyB0aGlzLl9hbHdheXNFeHBhbmQgPSB0cnVl
OyB0aGlzLnVwZGF0ZSgpOyByZXR1cm4gZmFsc2U7IH0uYmluZCh0aGlzKTsKLSAgICAgICAgICAg
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChyZWxlYXNlTGFiZWwpOwotCi0gICAgICAgICAgICB2
YXIgcXVldWUgPSB0aGlzLnF1ZXVlc1swXTsgLy8gQWxsIHF1ZXVlcyBpbiB0aGUgY29tYmluZWQg
cXVldWUgYXJlIGZyb20gdGhlIHNhbWUgYnVpbGRib3QuCi0gICAgICAgICAgICBpZiAocXVldWUu
YnVpbGRib3QubmVlZHNBdXRoZW50aWNhdGlvbiAmJiAhcXVldWUuYnVpbGRib3QuaXNBdXRoZW50
aWNhdGVkKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5kVW5hdXRob3JpemVkTGluZVZp
ZXcocXVldWUpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgLy8gU2hvdyB0aGUgcmV2aXNpb24gZm9yIHRoZSBzbG93ZXN0IHF1ZXVlLCBiZWNh
dXNlIHdlIGRvbid0IGtub3cgaWYgYW55IG5ld2VyIHJldmlzaW9ucyBhcmUgZ3JlZW4gb24gYWxs
IHF1ZXVlcy4KLSAgICAgICAgICAgIC8vIFRoaXMgY2FuIGJlIHNsaWdodGx5IG1pc2xlYWRpbmcg
YWZ0ZXIgZml4aW5nIGEgcHJvYmxlbSwgYmVjYXVzZSB3ZSBjYW4gc2hvdyBhIGtub3duIGJyb2tl
biByZXZpc2lvbiBhcyBncmVlbi4KLSAgICAgICAgICAgIHZhciBzbG93ZXN0UXVldWUgPSB0aGlz
LnF1ZXVlcy5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gQnVpbGRib3RRdWV1
ZS5wcm90b3R5cGUuY29tcGFyZUl0ZXJhdGlvbnNCeVJldmlzaW9ucyhhLm1vc3RSZWNlbnRTdWNj
ZXNzZnVsSXRlcmF0aW9uLCBiLm1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0aW9uKTsgfSkucG9w
KCk7Ci0gICAgICAgICAgICB0aGlzLl9hcHBlbmRQZW5kaW5nUmV2aXNpb25Db3VudChzbG93ZXN0
UXVldWUsIHRoaXMuX2xhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24uYmluZCh0aGlzLCBzbG93ZXN0
UXVldWUpKTsKLQotICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSB0aGlzLnJldmlzaW9uQ29udGVu
dEZvckl0ZXJhdGlvbihzbG93ZXN0UXVldWUubW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb24p
OwotICAgICAgICAgICAgdmFyIHN0YXR1c01lc3NhZ2VQYXNzZWQgPSAiYWxsICIgKyAocXVldWUu
YnVpbGRlciA/ICJidWlsZHMgc3VjY2VlZGVkIiA6ICJ0ZXN0cyBwYXNzZWQiKTsKLSAgICAgICAg
ICAgIHZhciBzdGF0dXNWaWV3ID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2UsIFN0YXR1c0xp
bmVWaWV3LlN0YXR1cy5Hb29kLCBzdGF0dXNNZXNzYWdlUGFzc2VkLCBudWxsLCBudWxsKTsKLSAg
ICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihzdGF0dXNWaWV3LnN0YXR1c0J1YmJsZUVsZW1l
bnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yQ29tYmluZWRHcmVlbkJ1YmJsZS5iaW5kKHRoaXMp
KTsKLSAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzdGF0dXNWaWV3LmVsZW1l
bnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhpcy5hcHBlbmRCdWlsZFN0eWxl
LmNhbGwodGhpcywgdGhpcy5xdWV1ZXMsIG51bGwsIGZ1bmN0aW9uKHF1ZXVlKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb24gJiYgIXF1ZXVl
LmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCkgewotICAgICAgICAgICAgICAgICAgICB0aGlzLl9h
cHBlbmRVbmF1dGhvcml6ZWRMaW5lVmlldyhxdWV1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRQ
ZW5kaW5nUmV2aXNpb25Db3VudChxdWV1ZSwgdGhpcy5fbGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlv
bi5iaW5kKHRoaXMsIHF1ZXVlKSk7Ci0KLSAgICAgICAgICAgICAgICB2YXIgZmlyc3RSZWNlbnRV
bnN1Y2Nlc3NmdWxJdGVyYXRpb24gPSBxdWV1ZS5maXJzdFJlY2VudFVuc3VjY2Vzc2Z1bEl0ZXJh
dGlvbjsKLSAgICAgICAgICAgICAgICB2YXIgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uID0g
cXVldWUubW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uOwotICAgICAgICAgICAgICAgIHZhciBt
b3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbiA9IHF1ZXVlLm1vc3RSZWNlbnRTdWNjZXNzZnVs
SXRlcmF0aW9uOwotCi0gICAgICAgICAgICAgICAgaWYgKGZpcnN0UmVjZW50VW5zdWNjZXNzZnVs
SXRlcmF0aW9uICYmIGZpcnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0aW9uLmxvYWRlZCAmJiBt
b3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24gJiYgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9u
LmxvYWRlZCkgewotICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghbW9zdFJlY2Vu
dEZpbmlzaGVkSXRlcmF0aW9uLnN1Y2Nlc3NmdWwpOwotICAgICAgICAgICAgICAgICAgICB2YXIg
bWVzc2FnZSA9IHRoaXMucmV2aXNpb25Db250ZW50Rm9ySXRlcmF0aW9uKG1vc3RSZWNlbnRGaW5p
c2hlZEl0ZXJhdGlvbiwgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLnByb2R1Y3RpdmUgPyBt
b3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbiA6IG51bGwpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoIW1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5wcm9kdWN0aXZlKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gU3RhdHVzTGluZVZpZXcuU3RhdHVzLkRhbmdl
cjsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtb3N0UmVjZW50RmluaXNoZWRJdGVy
YXRpb24uZmFpbGVkVGVzdFN0ZXBzLmxlbmd0aCA9PT0gMSAmJiAvKD89Lip0ZXN0KSg/PS4qanNj
KS8udGVzdChtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24uZmFpbGVkVGVzdFN0ZXBzWzBdLm5h
bWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmFpbGVkU3RlcCA9IG1vc3RSZWNl
bnRGaW5pc2hlZEl0ZXJhdGlvbi5mYWlsZWRUZXN0U3RlcHNbMF07Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgVVJMID0gbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLnF1ZXVlLmJ1aWxk
Ym90LmphdmFTY3JpcHRDb3JlVGVzdFN0ZGlvVXJsRm9ySXRlcmF0aW9uKG1vc3RSZWNlbnRGaW5p
c2hlZEl0ZXJhdGlvbiwgZmFpbGVkU3RlcC5uYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBzdGF0dXNWaWV3ID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2UsIFN0YXR1c0xpbmVW
aWV3LlN0YXR1cy5CYWQsIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0
ZXApLCBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCwgVVJMKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzdGF0dXNWaWV3LmVsZW1lbnQpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1c1ZpZXcuc3RhdHVzQnVi
YmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdy
ZXNzaW9ucy5iaW5kKHRoaXMsIGZhaWxlZFN0ZXAubmFtZSksIG1vc3RSZWNlbnRGaW5pc2hlZEl0
ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBEaXJlY3QgbGlua3Mg
dG8gc29tZSBjb21tb24gbG9ncy4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBt
b3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24uZmFpbHVyZUxvZ1VSTCgiYnVpbGQgbG9nIik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVybCkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1cmwgPSBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24uZmFpbHVyZUxvZ1VSTCgic3Rk
aW8iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBTdGF0dXNMaW5lVmll
dy5TdGF0dXMuQmFkOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAg
ICAgLy8gU2hvdyBhIHBvcG92ZXIgd2hlbiB0aGUgVVJMIGlzIG5vdCBhIG1haW4gYnVpbGQgcGFn
ZSBvbmUsIGJlY2F1c2UgdGhlcmUgYXJlIHVzdWFsbHkgbXVsdGlwbGUgbG9ncywgYW5kIGl0J3Mg
Z29vZCB0byBwcm92aWRlIGEgY2hvaWNlLgotICAgICAgICAgICAgICAgICAgICB2YXIgbmVlZHNQ
b3BvdmVyID0gIXVybDsKLQotICAgICAgICAgICAgICAgICAgICAvLyBTb21lIG90aGVyIHN0ZXAg
ZmFpbGVkLCBsaW5rIHRvIG1haW4gYnVpbGRib3QgcGFnZSBmb3IgdGhlIGl0ZXJhdGlvbi4KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICAgICAgICAgICAgICB1cmwg
PSBxdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24obW9zdFJlY2VudEZpbmlz
aGVkSXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1c1ZpZXcgPSBuZXcg
U3RhdHVzTGluZVZpZXcobWVzc2FnZSwgc3RhdHVzLCBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRp
b24udGV4dCwgbnVsbCwgdXJsKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFw
cGVuZENoaWxkKHN0YXR1c1ZpZXcuZWxlbWVudCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYg
KG5lZWRzUG9wb3ZlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tl
cihzdGF0dXNWaWV3LnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRJbmRpdmlkdWFs
UXVldWVQb3BvdmVyLmJpbmQodGhpcyksIG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbik7Ci0g
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdmFyIHN0YXR1c01lc3NhZ2VQYXNz
ZWQgPSAiYWxsICIgKyAocXVldWUuYnVpbGRlciA/ICJidWlsZHMgc3VjY2VlZGVkIiA6ICJ0ZXN0
cyBwYXNzZWQiKTsKLSAgICAgICAgICAgICAgICBpZiAobW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVy
YXRpb24gJiYgbW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb24ubG9hZGVkKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gdGhpcy5yZXZpc2lvbkNvbnRlbnRGb3JJdGVyYXRp
b24obW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb24pOwotICAgICAgICAgICAgICAgICAgICB2
YXIgdXJsID0gcXVldWUuYnVpbGRib3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKG1vc3RSZWNl
bnRTdWNjZXNzZnVsSXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGxhYmVsID0g
Zmlyc3RSZWNlbnRVbnN1Y2Nlc3NmdWxJdGVyYXRpb24gPyAibGFzdCBzdWNjZWVkZWQiIDogc3Rh
dHVzTWVzc2FnZVBhc3NlZDsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1c1ZpZXcgPSBu
ZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZSwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkdvb2QsIGxh
YmVsLCBudWxsLCB1cmwpOwotICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5k
Q2hpbGQoc3RhdHVzVmlldy5lbGVtZW50KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICB2YXIgbGFiZWwgPSBmaXJzdFJlY2VudFVuc3VjY2Vzc2Z1bEl0ZXJh
dGlvbiA/ICJsYXN0IHN1Y2NlZWRlZCIgOiBzdGF0dXNNZXNzYWdlUGFzc2VkOwotICAgICAgICAg
ICAgICAgICAgICB2YXIgc3RhdHVzVmlldyA9IG5ldyBTdGF0dXNMaW5lVmlldygidW5rbm93biIs
IFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5OZXV0cmFsLCBsYWJlbCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzdGF0dXNWaWV3LmVsZW1lbnQpOwotCi0gICAg
ICAgICAgICAgICAgICAgIGlmIChmaXJzdFJlY2VudFVuc3VjY2Vzc2Z1bEl0ZXJhdGlvbikgewot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIGZhaWxlZCBpdGVyYXRpb24gYnV0
IG5vIHN1Y2Nlc3NmdWwuIEl0IG1pZ2h0IGJlIGZ1cnRoZXIgYmFjayBpbiB0aW1lLgotICAgICAg
ICAgICAgICAgICAgICAgICAgcXVldWUubG9hZE1vcmVIaXN0b3JpY2FsSXRlcmF0aW9ucygpOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgLy8gQWxsIHF1ZXVlcyBhcmUgZ3JlZW4sIG9yIGFs
bCBhcmUgdW5hdXRob3JpemVkICh0aGUgbGF0dGVyIGNhc2UgYWx3YXlzIGFwcGxpZXMgdG8gYWxs
IHF1ZXVlcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwgZnJvbSB0aGUgc2FtZSBidWlsZGJvdCkuCi0g
ICAgX3F1ZXVlc1Nob3VsZERpc3BsYXlDb21iaW5lZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgZm9yICh2YXIgaSA9IDAsIGVuZCA9IHRoaXMucXVldWVzLmxlbmd0aDsgaSA8IGVuZDsgKytp
KSB7Ci0gICAgICAgICAgICB2YXIgcXVldWUgPSB0aGlzLnF1ZXVlc1tpXTsKLSAgICAgICAgICAg
IGlmIChxdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0aW9uICYmICFxdWV1ZS5idWlsZGJv
dC5pc0F1dGhlbnRpY2F0ZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICBpZiAoIXF1ZXVlLm1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbiB8fCAhcXVldWUubW9z
dFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLnN1Y2Nlc3NmdWwpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0KLSAg
ICBfcHJlc2VudFBvcG92ZXJGb3JDb21iaW5lZEdyZWVuQnViYmxlOiBmdW5jdGlvbihlbGVtZW50
LCBwb3BvdmVyKQotICAgIHsKLSAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKLSAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSAiY29tYmluZWQtcXVl
dWUtcG9wb3ZlciI7Ci0KLSAgICAgICAgdmFyIHRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgICAgIHRpdGxlLmNsYXNzTmFtZSA9ICJwb3BvdmVyLWl0ZXJhdGlvbi1o
ZWFkaW5nIjsKLSAgICAgICAgdGl0bGUudGV4dENvbnRlbnQgPSAibGF0ZXN0IHRlc3RlZCByZXZp
c2lvbnMiOwotICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHRpdGxlKTsKLQotICAgICAgICB0
aGlzLl9hZGREaXZpZGVyVG9Qb3BvdmVyKGNvbnRlbnQpOwotCi0gICAgICAgIGZ1bmN0aW9uIGFk
ZFF1ZXVlKHF1ZXVlLCB2aWV3KSB7Ci0gICAgICAgICAgICB2YXIgbGluZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJhIik7Ci0gICAgICAgICAgICBsaW5rLmNsYXNzTmFtZSA9ICJxdWV1ZS1saW5r
IjsKLSAgICAgICAgICAgIGxpbmsuaHJlZiA9IHF1ZXVlLm92ZXJ2aWV3VVJMOwotICAgICAgICAg
ICAgbGluay50ZXh0Q29udGVudCA9IHF1ZXVlLmhlYWRpbmc7Ci0gICAgICAgICAgICBsaW5rLnRh
cmdldCA9ICJfYmxhbmsiOwotICAgICAgICAgICAgbGluZS5hcHBlbmRDaGlsZChsaW5rKTsKLSAg
ICAgICAgICAgIHZhciByZXZpc2lvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK
LSAgICAgICAgICAgIHJldmlzaW9uLmNsYXNzTmFtZSA9ICJyZXZpc2lvbiI7Ci0gICAgICAgICAg
ICByZXZpc2lvbi5hcHBlbmRDaGlsZCh2aWV3LnJldmlzaW9uQ29udGVudEZvckl0ZXJhdGlvbihx
dWV1ZS5tb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbikpOwotICAgICAgICAgICAgbGluZS5h
cHBlbmRDaGlsZChyZXZpc2lvbik7Ci0gICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGxp
bmUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGVuZCA9IHRoaXMucXVl
dWVzLmxlbmd0aDsgaSA8IGVuZDsgKytpKQotICAgICAgICAgICAgYWRkUXVldWUodGhpcy5xdWV1
ZXNbaV0sIHRoaXMpOwotCi0gICAgICAgIHZhciByZWN0ID0gRGFzaGJvYXJkLlJlY3QucmVjdEZy
b21DbGllbnRSZWN0KGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwotICAgICAgICBw
b3BvdmVyLmNvbnRlbnQgPSBjb250ZW50OwotICAgICAgICBwb3BvdmVyLnByZXNlbnQocmVjdCwg
W0Rhc2hib2FyZC5SZWN0RWRnZS5NSU5fWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZLCBEYXNo
Ym9hcmQuUmVjdEVkZ2UuTUFYX1gsIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWF0pOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgX3ByZXNlbnRJbmRpdmlkdWFsUXVldWVQb3Bv
dmVyOiBmdW5jdGlvbihlbGVtZW50LCBwb3BvdmVyLCBpdGVyYXRpb24pCi0gICAgewotICAgICAg
ICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBj
b250ZW50LmNsYXNzTmFtZSA9ICJidWlsZC1sb2dzLXBvcG92ZXIiOwotCi0gICAgICAgIGZ1bmN0
aW9uIGFkZExvZyhuYW1lLCB1cmwpIHsKLSAgICAgICAgICAgIHZhciBsaW5lID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiYSIpOwotICAgICAgICAgICAgbGluZS5jbGFzc05hbWUgPSAiYnVpbGQt
bG9nLWxpbmsiOwotICAgICAgICAgICAgbGluZS5ocmVmID0gdXJsOwotICAgICAgICAgICAgbGlu
ZS50ZXh0Q29udGVudCA9IG5hbWU7Ci0gICAgICAgICAgICBsaW5lLnRhcmdldCA9ICJfYmxhbmsi
OwotICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChsaW5lKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHRoaXMuX2FkZEl0ZXJhdGlvbkhlYWRpbmdUb1BvcG92ZXIoaXRlcmF0aW9uLCBjb250
ZW50KTsKLSAgICAgICAgdGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50KTsKLSAgICAg
ICAgCi0gICAgICAgIHZhciBsb2dzSGVhZGluZ0xpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKLSAgICAgICAgbG9nc0hlYWRpbmdMaW5lLmNsYXNzTmFtZSA9ICJidWlsZC1sb2dz
LWhlYWRpbmciOwotICAgICAgICBsb2dzSGVhZGluZ0xpbmUudGV4dENvbnRlbnQgPSBpdGVyYXRp
b24uZmlyc3RGYWlsZWRTdGVwTmFtZSArICIgZmFpbGVkIjsKLSAgICAgICAgY29udGVudC5hcHBl
bmRDaGlsZChsb2dzSGVhZGluZ0xpbmUpOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQg
PSBpdGVyYXRpb24uZmFpbHVyZUxvZ3MubGVuZ3RoOyBpIDwgZW5kOyArK2kpCi0gICAgICAgICAg
ICBhZGRMb2coaXRlcmF0aW9uLmZhaWx1cmVMb2dzW2ldWzBdLCBpdGVyYXRpb24uZmFpbHVyZUxv
Z3NbaV1bMV0pOwotCi0gICAgICAgIHZhciByZWN0ID0gRGFzaGJvYXJkLlJlY3QucmVjdEZyb21D
bGllbnRSZWN0KGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwotICAgICAgICBwb3Bv
dmVyLmNvbnRlbnQgPSBjb250ZW50OwotICAgICAgICBwb3BvdmVyLnByZXNlbnQocmVjdCwgW0Rh
c2hib2FyZC5SZWN0RWRnZS5NSU5fWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZLCBEYXNoYm9h
cmQuUmVjdEVkZ2UuTUFYX1gsIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWF0pOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9LAotfTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy9CdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3LmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVv
bC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvcGxhaW4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90
SXRlcmF0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0ZXJhdGlv
bi5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9u
LmpzCShub25leGlzdGVudCkKQEAgLTEsNTE4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi1CdWlsZGJvdEl0ZXJhdGlvbiA9IGZ1bmN0aW9uKHF1ZXVlLCBkYXRhT3JJRCwgZmluaXNo
ZWQpCi17Ci0gICAgQmFzZU9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgY29uc29sZS5hc3NlcnQo
cXVldWUpOwotCi0gICAgdGhpcy5xdWV1ZSA9IHF1ZXVlOwotCi0gICAgaWYgKHR5cGVvZiBkYXRh
T3JJRCA9PT0gIm9iamVjdCIpIHsKLSAgICAgICAgdGhpcy5fcGFyc2VEYXRhKGRhdGFPcklEKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBkYXRh
T3JJRCA9PT0gIm51bWJlciIpOwotICAgIHRoaXMuaWQgPSBkYXRhT3JJRDsKLQotICAgIHRoaXMu
bG9hZGVkID0gZmFsc2U7Ci0gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTsKLSAgICB0aGlzLl9w
cm9kdWN0aXZlID0gZmFsc2U7Ci0KLSAgICB0aGlzLnJldmlzaW9uID0ge307Ci0KLSAgICB0aGlz
LmxheW91dFRlc3RSZXN1bHRzID0gbnVsbDsgLy8gTGF5b3V0IHRlc3QgcmVzdWx0cyBjYW4gYmUg
bmVlZGVkIGV2ZW4gaWYgYWxsIHRlc3RzIHBhc3NlZCwgZS5nLiBmb3IgdGhlIGxlYWtzIGJvdC4K
LSAgICB0aGlzLmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMgPSBudWxsOwotCi0gICAgdGhpcy5m
YWlsZWRUZXN0U3RlcHMgPSBbXTsKLQotICAgIHRoaXMuX2ZpbmlzaGVkID0gZmluaXNoZWQ7Ci19
OwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxkYm90SXRlcmF0aW9u
KTsKLQotLy8gSlNPTiByZXN1bHQgdmFsdWVzIGZvciBib3RoIGluZGl2aWR1YWwgc3RlcHMgYW5k
IHRoZSB3aG9sZSBpdGVyYXRpb24uCi1CdWlsZGJvdEl0ZXJhdGlvbi5TVUNDRVNTID0gMDsKLUJ1
aWxkYm90SXRlcmF0aW9uLldBUk5JTkdTID0gMTsKLUJ1aWxkYm90SXRlcmF0aW9uLkZBSUxVUkUg
PSAyOwotQnVpbGRib3RJdGVyYXRpb24uU0tJUFBFRCA9IDM7Ci1CdWlsZGJvdEl0ZXJhdGlvbi5F
WENFUFRJT04gPSA0OwotQnVpbGRib3RJdGVyYXRpb24uUkVUUlkgPSA1OwotCi0vLyBJZiBub25l
IG9mIHRoZXNlIHN0ZXBzIHJhbiwgdGhlbiB3ZSBkaWRuJ3QgZ2V0IGFueSByZWFsIHJlc3VsdHMs
IGFuZCB0aGUgaXRlcmF0aW9uIHdhcyBub3QgcHJvZHVjdGl2ZS4KLS8vIEFsbCB0ZXN0IHN0ZXBz
IGFyZSBjb25zaWRlcmVkIHByb2R1Y3RpdmUgdG9vLgotQnVpbGRib3RJdGVyYXRpb24uUHJvZHVj
dGl2ZVN0ZXBzID0gewotICAgICJCdWlsZCIgOiAxLAotICAgICJidWlsZCBBU2FuIGFyY2hpdmUi
OiAxLAotICAgICJjb21waWxlLXdlYmtpdCI6IDEsCi0gICAgInNjYW4gYnVpbGQiOiAxLAotfTsK
LQotLy8gVGhlc2UgaGF2ZSBhIHNwZWNpYWwgbWVhbmluZyBmb3IgdGVzdCBxdWV1ZSB2aWV3cy4K
LUJ1aWxkYm90SXRlcmF0aW9uLlRlc3RTdGVwcyA9IHsKLSAgICAiQVBJLXRlc3RzIjogInBsYXRm
b3JtIGFwaSB0ZXN0IiwKLSAgICAiYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cyI6ICJiaW5kaW5n
cyB0ZXN0cyIsCi0gICAgImJ1aWx0aW5zLWdlbmVyYXRvci10ZXN0cyI6ICJidWlsdGlucyBnZW5l
cmF0b3IgdGVzdHMiLAotICAgICJqc2NvcmUtdGVzdCI6ICJqYXZhc2NyaXB0IHRlc3QiLAotICAg
ICJsYXlvdXQtdGVzdCI6ICJsYXlvdXQgdGVzdCIsCi0gICAgInBlcmYtdGVzdCI6ICJwZXJmb3Jt
YW5jZSB0ZXN0IiwKLSAgICAicnVuLWFwaS10ZXN0cyI6ICJhcGkgdGVzdCIsCi0gICAgImRhc2hi
b2FyZC10ZXN0cyI6ICJkYXNoYm9hcmQgdGVzdCIsCi0gICAgIndlYmtpdC0zMmJpdC1qc2MtdGVz
dCI6ICJqYXZhc2NyaXB0IHRlc3QiLAotICAgICJ3ZWJraXQtanNjLWNsb29wLXRlc3QiOiAiamF2
YXNjcmlwdCBjbG9vcCB0ZXN0IiwKLSAgICAibGxkYi13ZWJraXQtdGVzdCI6ICJsbGRiIHdlYmtp
dCB0ZXN0IiwgCi0gICAgIndlYmtpdHBlcmwtdGVzdCI6ICJ3ZWJraXRwZXJsIHRlc3QiLAotICAg
ICJ3ZWJraXRweS10ZXN0IjogIndlYmtpdHB5IHRlc3QiLAotICAgICJ0ZXN0MjYyLXRlc3QiOiAi
dGVzdDI2MiB0ZXN0IiwKLX07Ci0KLUJ1aWxkYm90SXRlcmF0aW9uLkV2ZW50ID0gewotICAgIFVw
ZGF0ZWQ6ICJ1cGRhdGVkIiwKLSAgICBVbmF1dGhvcml6ZWRBY2Nlc3M6ICJ1bmF1dGhvcml6ZWQt
YWNjZXNzIgotfTsKLQotLy8gU2VlIDxodHRwOi8vZG9jcy5idWlsZGJvdC5uZXQvMC44LjgvbWFu
dWFsL2NmZy1wcm9wZXJ0aWVzLmh0bWw+LgotZnVuY3Rpb24gaXNNdWx0aUNvZGViYXNlR290UmV2
aXNpb25Qcm9wZXJ0eShwcm9wZXJ0eSkKLXsKLSAgICByZXR1cm4gdHlwZW9mIHByb3BlcnR5WzBd
ID09PSAib2JqZWN0IjsKLX0KLQotZnVuY3Rpb24gcGFyc2VSZXZpc2lvblByb3BlcnR5KHByb3Bl
cnR5LCBrZXksIGZhbGxiYWNrS2V5KQotewotICAgIGlmICghcHJvcGVydHkpCi0gICAgICAgIHJl
dHVybiBudWxsOwotICAgIHZhciB2YWx1ZSA9IHByb3BlcnR5WzBdOwotCi0gICAgLy8gVGhlIHBy
b3BlcnR5IGdvdF9yZXZpc2lvbiBtYXkgaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1zIGluIEJ1aWxk
Ym90IHYwLjg6Ci0gICAgLy8gWyJnb3RfcmV2aXNpb24iLHsiSW50ZXJuYWwiOiIxMzU3IiwiV2Vi
S2l0T3BlblNvdXJjZSI6IjI0NjgifSwiU291cmNlIl0KLSAgICAvLyBPUgotICAgIC8vIFsiZ290
X3JldmlzaW9uIiwiMjQ2OCIsIlNvdXJjZSJdCi0gICAgLy8KLSAgICAvLyBJdCBtYXkgaGF2ZSB0
aGUgZm9sbG93aW5nIGZvcm1zIGluIEJ1aWxkYm90IHYwLjk6Ci0gICAgLy8gW3siSW50ZXJuYWwi
OiIxMzU3IiwiV2ViS2l0T3BlblNvdXJjZSI6IjI0NjgifSwgIlNvdXJjZSJdCi0gICAgLy8gT1IK
LSAgICAvLyBbIjI0NjgiLCAiU291cmNlIl0KLSAgICBpZiAoaXNNdWx0aUNvZGViYXNlR290UmV2
aXNpb25Qcm9wZXJ0eShwcm9wZXJ0eSkpCi0gICAgICAgIHZhbHVlID0gKGtleSBpbiB2YWx1ZSkg
PyB2YWx1ZVtrZXldIDogdmFsdWVbZmFsbGJhY2tLZXldOwotICAgIHJldHVybiB2YWx1ZTsKLX0K
LQotQnVpbGRib3RJdGVyYXRpb24ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBCdWls
ZGJvdEl0ZXJhdGlvbiwKLSAgICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0g
ICAgZ2V0IGZpbmlzaGVkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9maW5pc2hlZDsK
LSAgICB9LAotCi0gICAgc2V0IGZpbmlzaGVkKHgpCi0gICAgewotICAgICAgICB0aGlzLl9maW5p
c2hlZCA9IHg7Ci0gICAgfSwKLQotICAgIGdldCBzdWNjZXNzZnVsKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9yZXN1bHQgPT09IEJ1aWxkYm90SXRlcmF0aW9uLlNVQ0NFU1M7Ci0gICAg
fSwKLQotICAgIGdldCBwcm9kdWN0aXZlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9w
cm9kdWN0aXZlOwotICAgIH0sCi0KLSAgICAvLyBJdCBpcyBub3QgYSByZWFsIGZhaWx1cmUgaWYg
QnVpbGRib3QgaXRzZWxmIGZhaWxlZCB3aXRoIGNvZGVzIGxpa2UgRVhDRVBUSU9OIG9yIFJFVFJZ
LgotICAgIGdldCBmYWlsZWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VsdCA9
PT0gQnVpbGRib3RJdGVyYXRpb24uRkFJTFVSRTsKLSAgICB9LAotCi0gICAgZ2V0IGZpcnN0RmFp
bGVkU3RlcE5hbWUoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9maXJzdEZhaWxlZFN0ZXAp
Ci0gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgICAgICByZXR1cm4gdGhpcy5fZmly
c3RGYWlsZWRTdGVwLm5hbWU7Ci0gICAgfSwKLQotICAgIGZhaWx1cmVMb2dVUkw6IGZ1bmN0aW9u
KGtpbmQpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuZmFpbGVkKQotICAgICAgICAgICAgcmV0
dXJuIHVuZGVmaW5lZDsKLQotICAgICAgICBpZiAoIXRoaXMucXVldWUuYnVpbGRib3QuVkVSU0lP
Tl9MRVNTX1RIQU5fMDkpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZS5idWlsZGJvdC5i
dWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24odGhpcyk7Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5fZmlyc3RGYWlsZWRTdGVwKTsKLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRo
aXMuX2ZpcnN0RmFpbGVkU3RlcC5sb2dzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAo
dGhpcy5fZmlyc3RGYWlsZWRTdGVwLmxvZ3NbaV1bMF0gPT0ga2luZCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fZmlyc3RGYWlsZWRTdGVwLmxvZ3NbaV1bMV07Ci0gICAgICAgIH0KLQot
ICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgIH0sCi0KLSAgICBnZXQgZmFpbHVyZUxvZ3Mo
KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmZhaWxlZCkKLSAgICAgICAgICAgIHJldHVybiB1
bmRlZmluZWQ7Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZmlyc3RGYWlsZWRTdGVw
KTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2ZpcnN0RmFpbGVkU3RlcC5sb2dzOwotICAgIH0sCi0K
LSAgICBnZXQgcHJldmlvdXNQcm9kdWN0aXZlSXRlcmF0aW9uKCkKLSAgICB7Ci0gICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy5xdWV1ZS5pdGVyYXRpb25zLmxlbmd0aCAtIDE7ICsraSkg
ewotICAgICAgICAgICAgaWYgKHRoaXMucXVldWUuaXRlcmF0aW9uc1tpXSA9PT0gdGhpcykgewot
ICAgICAgICAgICAgICAgIHdoaWxlICgrK2kgPCB0aGlzLnF1ZXVlLml0ZXJhdGlvbnMubGVuZ3Ro
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBpdGVyYXRpb24gPSB0aGlzLnF1ZXVlLml0ZXJh
dGlvbnNbaV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpdGVyYXRpb24ucHJvZHVjdGl2ZSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRpb247Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCi0KLSAgICBfcGFyc2VEYXRhOiBmdW5jdGlvbihk
YXRhKQotICAgIHsKLSAgICAgICAgZGF0YSA9IHRoaXMuX2FkanVzdEJ1aWxkRGF0YUZvckJ1aWxk
Ym90MDkoZGF0YSkKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuaWQgfHwgdGhpcy5pZCA9
PT0gZGF0YS5udW1iZXIpOwotICAgICAgICB0aGlzLmlkID0gZGF0YS5udW1iZXI7Ci0KLSAgICAg
ICAgdGhpcy5yZXZpc2lvbiA9IHt9OwotICAgICAgICB2YXIgcmV2aXNpb25Qcm9wZXJ0eSA9IGRh
dGEucHJvcGVydGllcy5nb3RfcmV2aXNpb247Ci0gICAgICAgIHZhciBicmFuY2hlcyA9IHRoaXMu
cXVldWUuYnJhbmNoZXM7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBicmFuY2hlcy5s
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHJlcG9zaXRvcnkgPSBicmFuY2hlc1tpXS5y
ZXBvc2l0b3J5OwotICAgICAgICAgICAgdmFyIHJlcG9zaXRvcnlOYW1lID0gcmVwb3NpdG9yeS5u
YW1lOwotICAgICAgICAgICAgdmFyIGtleTsKLSAgICAgICAgICAgIHZhciBmYWxsYmFja0tleTsK
LQotICAgICAgICAgICAgaWYgKHJlcG9zaXRvcnkgPT09IERhc2hib2FyZC5SZXBvc2l0b3J5Lk9w
ZW5Tb3VyY2UpIHsKLSAgICAgICAgICAgICAgICBrZXkgPSAiV2ViS2l0IjsKLSAgICAgICAgICAg
ICAgICBmYWxsYmFja0tleSA9ICJvcGVuc291cmNlIjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAga2V5ID0gcmVwb3NpdG9yeU5hbWU7Ci0gICAgICAgICAgICAgICAgZmFs
bGJhY2tLZXkgPSBudWxsOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgcmV2aXNp
b24gPSBwYXJzZVJldmlzaW9uUHJvcGVydHkocmV2aXNpb25Qcm9wZXJ0eSwga2V5LCBmYWxsYmFj
a0tleSk7Ci0gICAgICAgICAgICB0aGlzLnJldmlzaW9uW3JlcG9zaXRvcnlOYW1lXSA9IHJldmlz
aW9uOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc291cmNlU3RhbXBDaGFuZ2VzKHNv
dXJjZVN0YW1wKSB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgICAgICAgICB2
YXIgY2hhbmdlcyA9IHNvdXJjZVN0YW1wLmNoYW5nZXM7Ci0gICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNoYW5nZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgY2hh
bmdlID0geyByZXZpc2lvbk51bWJlcjogY2hhbmdlc1tpXS5yZXZpc2lvbiB9Ci0gICAgICAgICAg
ICAgICAgaWYgKGNoYW5nZXNbaV0ucmVwb3NpdG9yeSkKLSAgICAgICAgICAgICAgICAgICAgY2hh
bmdlLnJlcG9zaXRvcnkgPSBjaGFuZ2VzW2ldLnJlcG9zaXRvcnk7Ci0gICAgICAgICAgICAgICAg
aWYgKGNoYW5nZXNbaV0uYnJhbmNoKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2UuYnJhbmNo
ID0gY2hhbmdlc1tpXS5icmFuY2g7Ci0gICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgYWxzbyBh
IHRpbWVzdGFtcCwgYnV0IGl0J3Mgbm90IGFjY3VyYXRlLgotICAgICAgICAgICAgICAgIHJlc3Vs
dC5wdXNoKGNoYW5nZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlIGNoYW5nZXMgYXJyYXkgaXMgZ2VuZXJhbGx5
IG1lYW5pbmdmdWwgZm9yIHN2biB0cmlnZ2VyZWQgcXVldWVzIChzdWNoIGFzIGJ1aWxkZXJzKSwK
LSAgICAgICAgLy8gYnV0IG5vdCBmb3IgaW50ZXJuYWxseSB0cmlnZ2VyZWQgb25lcyAoc3VjaCBh
cyB0ZXN0ZXJzKSwgZHVlIHRvIGNvYWxlc2NpbmcuCi0gICAgICAgIHRoaXMuY2hhbmdlcyA9IFtd
OwotICAgICAgICBpZiAodGhpcy5xdWV1ZS5idWlsZGJvdC5WRVJTSU9OX0xFU1NfVEhBTl8wOSkK
LSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGEuc291cmNlU3RhbXAgfHwgZGF0YS5zb3Vy
Y2VTdGFtcHMpCi0gICAgICAgIGlmIChkYXRhLnNvdXJjZVN0YW1wKQotICAgICAgICAgICAgdGhp
cy5jaGFuZ2VzID0gc291cmNlU3RhbXBDaGFuZ2VzKGRhdGEuc291cmNlU3RhbXApOwotICAgICAg
ICBlbHNlIGlmIChkYXRhLnNvdXJjZVN0YW1wcykKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZGF0YS5zb3VyY2VTdGFtcHMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgdGhp
cy5jaGFuZ2VzID0gdGhpcy5jaGFuZ2VzLmNvbmNhdChzb3VyY2VTdGFtcENoYW5nZXMoZGF0YS5z
b3VyY2VTdGFtcHNbaV0pKTsKLQotICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IG5ldyBEYXRlKGRh
dGEuc3RhcnRlZF9hdCAqIDEwMDApOwotICAgICAgICB0aGlzLmVuZFRpbWUgPSBuZXcgRGF0ZShk
YXRhLmNvbXBsZXRlX2F0ICogMTAwMCk7Ci0KLSAgICAgICAgdGhpcy5mYWlsZWRUZXN0U3RlcHMg
PSBbXTsKLSAgICAgICAgZGF0YS5zdGVwcy5mb3JFYWNoKGZ1bmN0aW9uKHN0ZXApIHsKLSAgICAg
ICAgICAgIGlmICghc3RlcC5jb21wbGV0ZSB8fCBzdGVwLmhpZGRlbiB8fCAhKHN0ZXAubmFtZSBp
biBCdWlsZGJvdEl0ZXJhdGlvbi5UZXN0U3RlcHMpKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIHZhciByZXN1bHRzID0gbmV3IEJ1aWxkYm90VGVzdFJlc3VsdHMoc3RlcCwg
dGhpcy5fc3RkaW9VUkxGb3JTdGVwKHN0ZXApKTsKLSAgICAgICAgICAgIGlmIChzdGVwLm5hbWUg
PT09ICJsYXlvdXQtdGVzdCIpCi0gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRUZXN0UmVzdWx0
cyA9IHJlc3VsdHM7Ci0gICAgICAgICAgICBlbHNlIGlmICgvKD89Lip0ZXN0KSg/PS4qanNjKS8u
dGVzdChzdGVwLm5hbWUpKQotICAgICAgICAgICAgICAgIHRoaXMuamF2YVNjcmlwdENvcmVUZXN0
UmVzdWx0cyA9IHJlc3VsdHM7Ci0gICAgICAgICAgICBpZiAocmVzdWx0cy5hbGxQYXNzZWQpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgdGhpcy5mYWlsZWRUZXN0U3RlcHMu
cHVzaChyZXN1bHRzKTsKLSAgICAgICAgfSwgdGhpcyk7Ci0KLSAgICAgICAgdmFyIG1hc3RlclNo
ZWxsQ29tbWFuZFN0ZXAgPSBkYXRhLnN0ZXBzLmZpbmRGaXJzdChmdW5jdGlvbihzdGVwKSB7IHJl
dHVybiBzdGVwLm5hbWUgPT09ICJNYXN0ZXJTaGVsbENvbW1hbmQiOyB9KTsKLSAgICAgICAgaWYg
KG1hc3RlclNoZWxsQ29tbWFuZFN0ZXAgJiYgbWFzdGVyU2hlbGxDb21tYW5kU3RlcC51cmxzKSB7
Ci0gICAgICAgICAgICAvLyBTYW1wbGUgbWFzdGVyU2hlbGxDb21tYW5kU3RlcC51cmxzIGRhdGE6
Ci0gICAgICAgICAgICAvLyAidXJscyI6IFsKLSAgICAgICAgICAgIC8vICAgICB7Ci0gICAgICAg
ICAgICAvLyAgICAgICAgICJuYW1lIjogInZpZXcgcmVzdWx0cyIsCi0gICAgICAgICAgICAvLyAg
ICAgICAgICJ1cmwiOiAiL3Jlc3VsdHMvQXBwbGUgU2llcnJhIFJlbGVhc2UgV0syIChUZXN0cykv
cjIyMDAxMyAoMzI0NSkvcmVzdWx0cy5odG1sIgotICAgICAgICAgICAgLy8gICAgIH0KLSAgICAg
ICAgICAgIC8vIF0KLSAgICAgICAgICAgIHRoaXMucmVzdWx0VVJMcyA9IG1hc3RlclNoZWxsQ29t
bWFuZFN0ZXAudXJsc1swXTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKHZhciBsaW5rTmFtZSBp
biB0aGlzLnJlc3VsdFVSTHMpIHsKLSAgICAgICAgICAgIHZhciB1cmwgPSB0aGlzLnJlc3VsdFVS
THNbbGlua05hbWVdOwotICAgICAgICAgICAgaWYgKCF1cmwuc3RhcnRzV2l0aCgiaHR0cCIpKQot
ICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0VVJMc1tsaW5rTmFtZV0gPSB0aGlzLnF1ZXVlLmJ1
aWxkYm90LmJhc2VVUkwgKyB1cmw7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLmxvYWRlZCA9
IHRydWU7Ci0KLSAgICAgICAgdGhpcy5fZmlyc3RGYWlsZWRTdGVwID0gZGF0YS5zdGVwcy5maW5k
Rmlyc3QoZnVuY3Rpb24oc3RlcCkgeyByZXR1cm4gIXN0ZXAuaGlkZGVuICYmIHN0ZXAucmVzdWx0
cyA9PT0gQnVpbGRib3RJdGVyYXRpb24uRkFJTFVSRTsgfSk7Ci0KLSAgICAgICAgY29uc29sZS5h
c3NlcnQoZGF0YS5yZXN1bHRzID09PSBudWxsIHx8IHR5cGVvZiBkYXRhLnJlc3VsdHMgPT09ICJu
dW1iZXIiKTsKLSAgICAgICAgdGhpcy5fcmVzdWx0ID0gZGF0YS5yZXN1bHRzOwotCi0gICAgICAg
IHRoaXMudGV4dCA9IGRhdGEuc3RhdGVfc3RyaW5nOwotICAgICAgICB0aGlzLmZpbmlzaGVkID0g
ZGF0YS5jb21wbGV0ZTsKLQotICAgICAgICB0aGlzLl9wcm9kdWN0aXZlID0gdGhpcy5fZmluaXNo
ZWQgJiYgdGhpcy5fcmVzdWx0ICE9PSBCdWlsZGJvdEl0ZXJhdGlvbi5FWENFUFRJT04gJiYgdGhp
cy5fcmVzdWx0ICE9PSBCdWlsZGJvdEl0ZXJhdGlvbi5SRVRSWTsKLSAgICAgICAgaWYgKHRoaXMu
X3Byb2R1Y3RpdmUpIHsKLSAgICAgICAgICAgIHZhciBmaW5pc2hlZEFueVByb2R1Y3RpdmVTdGVw
ID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEuc3RlcHMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgc3RlcCA9IGRhdGEuc3RlcHNbaV07Ci0g
ICAgICAgICAgICAgICAgaWYgKCFzdGVwLmNvbXBsZXRlKQotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICBpZiAoc3RlcC5uYW1lIGluIEJ1aWxkYm90SXRlcmF0aW9u
LlByb2R1Y3RpdmVTdGVwcyB8fCBzdGVwLm5hbWUgaW4gQnVpbGRib3RJdGVyYXRpb24uVGVzdFN0
ZXBzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaGVkQW55UHJvZHVjdGl2ZVN0ZXAgPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLl9wcm9kdWN0aXZlID0gZmluaXNoZWRBbnlQcm9k
dWN0aXZlU3RlcDsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBfc3RkaW9VUkxGb3JTdGVwOiBm
dW5jdGlvbihzdGVwKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMucXVldWUuYnVpbGRib3QuVkVS
U0lPTl9MRVNTX1RIQU5fMDkpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZXAubG9nc1swXVsxXTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gRklYTUU6IFVwZGF0ZSB0aGlzIGxvZ2ljIGFmdGVyIDxodHRwczovL2dpdGh1Yi5jb20vYnVp
bGRib3QvYnVpbGRib3QvaXNzdWVzLzM0NjU+IGlzIGZpeGVkLiBCdWlsZGJvdCAwLjkgZG9lcwot
ICAgICAgICAvLyBub3QgcHJvdmlkZSBhIFVSTCB0byBzdGRpbyBmb3IgYSBidWlsZCBzdGVwIGlu
IHRoZSBSRVNUIEFQSSwgc28gd2UgYXJlIG1hbnVhbGx5IGNvbnN0cnVjdGluZyB0aGUgdXJsIGhl
cmUuCi0gICAgICAgIHJldHVybiB0aGlzLnF1ZXVlLmJ1aWxkYm90LmJ1aWxkUGFnZVVSTEZvckl0
ZXJhdGlvbih0aGlzKSArICIvc3RlcHMvIiArIHN0ZXAubnVtYmVyICsgIi9sb2dzL3N0ZGlvIjsK
LSAgICB9LAotCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBhZnRlciBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MDU2IGlzIGZpeGVkLgotICAgIF9h
ZGp1c3RCdWlsZERhdGFGb3JCdWlsZGJvdDA5OiBmdW5jdGlvbihkYXRhKQotICAgIHsKLSAgICAg
ICAgaWYgKCF0aGlzLnF1ZXVlLmJ1aWxkYm90LlZFUlNJT05fTEVTU19USEFOXzA5KQotICAgICAg
ICAgICAgcmV0dXJuIGRhdGE7Ci0KLSAgICAgICAgZGF0YS5zdGFydGVkX2F0ID0gZGF0YS50aW1l
c1swXTsKLSAgICAgICAgZGF0YS5jb21wbGV0ZV9hdCA9IGRhdGEudGltZXNbMV07Ci0gICAgICAg
IGRlbGV0ZSBkYXRhWyJ0aW1lcyJdOwotCi0gICAgICAgIGxldCByZXZpc2lvblByb3BlcnR5ID0g
ZGF0YS5wcm9wZXJ0aWVzLmZpbmRGaXJzdCgocHJvcGVydHkpID0+IHByb3BlcnR5WzBdID09PSAi
Z290X3JldmlzaW9uIik7Ci0KLSAgICAgICAgaWYgKHJldmlzaW9uUHJvcGVydHkpIHsKLSAgICAg
ICAgICAgIC8vIFJlbW92aW5nIGZpcnN0IGVsZW1lbnQgZnJvbSByZXZpc2lvbiBwcm9wZXJ0eSB0
byBtYXRjaCB3aXRoIG5ldyBkYXRhIGZvcm1hdC4KLSAgICAgICAgICAgIC8vIE9sZCBmb3JtYXQ6
IFsiZ290X3JldmlzaW9uIix7IkludGVybmFsIjoiMTM1NyIsIldlYktpdE9wZW5Tb3VyY2UiOiIy
NDY4In0sIlNvdXJjZSJdCi0gICAgICAgICAgICAvLyBOZXcgZm9ybWF0OiBbeyJJbnRlcm5hbCI6
IjEzNTciLCJXZWJLaXRPcGVuU291cmNlIjoiMjQ2OCJ9LCJTb3VyY2UiXQotICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQocmV2aXNpb25Qcm9wZXJ0eVswXSA9PT0gImdvdF9yZXZpc2lvbiIpCi0g
ICAgICAgICAgICByZXZpc2lvblByb3BlcnR5LnNwbGljZSgwLCAxKTsKLSAgICAgICAgfQotICAg
ICAgICBkYXRhLnByb3BlcnRpZXMuZ290X3JldmlzaW9uID0gcmV2aXNpb25Qcm9wZXJ0eTsKLQot
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEuc3RlcHMubGVuZ3RoOyBpKyspIHsKLSAg
ICAgICAgICAgIGRhdGEuc3RlcHNbaV0uY29tcGxldGUgPSBkYXRhLnN0ZXBzW2ldLmlzRmluaXNo
ZWQ7Ci0gICAgICAgICAgICBkZWxldGUgZGF0YS5zdGVwc1tpXVsiaXNGaW5pc2hlZCJdOwotICAg
ICAgICAgICAgLy8gU2FtcGxlIHN0YXRlX3N0cmluZzogIkV4aXRpbmcgZWFybHkgYWZ0ZXIgMjAg
Y3Jhc2hlcyBhbmQgMzAgdGltZW91dHMuIDMxNjAzIHRlc3RzIHJ1bi4gMTQ3IGZhaWx1cmVzIDY5
IG5ldyBwYXNzZXMiLgotICAgICAgICAgICAgZGF0YS5zdGVwc1tpXS5zdGF0ZV9zdHJpbmcgPSBk
YXRhLnN0ZXBzW2ldLnJlc3VsdHNbMV0uam9pbignICcpOwotICAgICAgICAgICAgZGF0YS5zdGVw
c1tpXS5yZXN1bHRzID0gZGF0YS5zdGVwc1tpXS5yZXN1bHRzWzBdOyAvLyBTZWUgVVJMIGh0dHA6
Ly9kb2NzLmJ1aWxkYm90Lm5ldC9sYXRlc3QvZGV2ZWxvcGVyL3Jlc3VsdHMuaHRtbAotICAgICAg
ICB9Ci0KLSAgICAgICAgbGV0IG1hc3RlclNoZWxsQ29tbWFuZFN0ZXAgPSBkYXRhLnN0ZXBzLmZp
bmRGaXJzdCgoc3RlcCkgPT4gc3RlcC5uYW1lID09PSAiTWFzdGVyU2hlbGxDb21tYW5kIik7Ci0g
ICAgICAgIGlmIChtYXN0ZXJTaGVsbENvbW1hbmRTdGVwKQotICAgICAgICAgICAgbWFzdGVyU2hl
bGxDb21tYW5kU3RlcC51cmxzID0gW21hc3RlclNoZWxsQ29tbWFuZFN0ZXAudXJsc107Ci0KLSAg
ICAgICAgZGF0YS5zdGF0ZV9zdHJpbmcgPSBkYXRhLnRleHQuam9pbigiICIpOwotICAgICAgICBk
ZWxldGUgZGF0YVsidGV4dCJdOwotCi0gICAgICAgIGRhdGEuY29tcGxldGUgPSAhZGF0YS5jdXJy
ZW50U3RlcDsKLSAgICAgICAgZGVsZXRlIGRhdGFbImN1cnJlbnRTdGVwIl07Ci0KLSAgICAgICAg
cmV0dXJuIGRhdGE7Ci0gICAgfSwKLQotICAgIF91cGRhdGVJZkRhdGFBdmFpbGFibGU6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fc3RlcHMgfHwgIXRoaXMuX2J1aWxkRGF0
YSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNl
OwotICAgICAgICB0aGlzLl9idWlsZERhdGEuc3RlcHMgPSB0aGlzLl9zdGVwczsKLQotICAgICAg
ICB0aGlzLl9kZXByZWNhdGVkVXBkYXRlV2l0aERhdGEodGhpcy5fYnVpbGREYXRhKTsKLSAgICB9
LAotCi0gICAgX2RlcHJlY2F0ZWRVcGRhdGVXaXRoRGF0YTogZnVuY3Rpb24oZGF0YSkKLSAgICB7
Ci0gICAgICAgIGlmICh0aGlzLmxvYWRlZCAmJiB0aGlzLl9maW5pc2hlZCkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICB0aGlzLl9wYXJzZURhdGEoZGF0YSk7Ci0KLSAgICAgICAgLy8g
VXBkYXRlIHRoZSBzb3J0aW5nIHNpbmNlIGl0IGlzIGJhc2VkIG9uIHRoZSByZXZpc2lvbiBudW1i
ZXJzIHRoYXQganVzdCBiZWNhbWUga25vd24uCi0gICAgICAgIHRoaXMucXVldWUudXBkYXRlSXRl
cmF0aW9uUG9zaXRpb24odGhpcyk7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoQnVpbGRib3RJdGVyYXRpb24uRXZlbnQuVXBkYXRlZCk7Ci0gICAgfSwKLQotCi0gICAg
Z2V0IGJ1aWxkVVJMKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnF1ZXVlLmJhc2VVUkwg
KyAiL2J1aWxkcy8iICsgdGhpcy5pZCArICI/cHJvcGVydHk9Z290X3JldmlzaW9uIjsKLSAgICB9
LAotCi0gICAgZ2V0IGJ1aWxkU3RlcHNVUkwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
cXVldWUuYmFzZVVSTCArICIvYnVpbGRzLyIgKyB0aGlzLmlkICsgIi9zdGVwcyI7Ci0gICAgfSwK
LQotICAgIHVybEZhaWxlZFRvTG9hZDogZnVuY3Rpb24oZGF0YSkKLSAgICB7Ci0gICAgICAgIHRo
aXMuaXNMb2FkaW5nID0gZmFsc2U7Ci0gICAgICAgIGlmIChkYXRhLmVycm9yVHlwZSA9PT0gSlNP
Ti5Mb2FkRXJyb3IgJiYgZGF0YS5lcnJvckhUVFBDb2RlID09PSA0MDEpIHsKLSAgICAgICAgICAg
IHRoaXMucXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkID0gZmFsc2U7Ci0gICAgICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhCdWlsZGJvdEl0ZXJhdGlvbi5FdmVudC5V
bmF1dGhvcml6ZWRBY2Nlc3MpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHVwZGF0ZTogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMubG9hZGVkICYmIHRoaXMuX2ZpbmlzaGVk
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLnF1ZXVlLmJ1aWxkYm90
Lm5lZWRzQXV0aGVudGljYXRpb24gJiYgdGhpcy5xdWV1ZS5idWlsZGJvdC5hdXRoZW50aWNhdGlv
blN0YXR1cyA9PT0gQnVpbGRib3QuQXV0aGVudGljYXRpb25TdGF0dXMuSW52YWxpZENyZWRlbnRp
YWxzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLmlzTG9hZGluZykK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7Ci0g
ICAgICAgIGlmICh0aGlzLnF1ZXVlLmJ1aWxkYm90LlZFUlNJT05fTEVTU19USEFOXzA5KQotICAg
ICAgICAgICAgdGhpcy5kZXByZWNhdGVkVXBkYXRlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHRoaXMuYWN0dWFsVXBkYXRlKCk7Ci0gICAgfSwKLQotICAgIGFjdHVhbFVwZGF0ZTogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgSlNPTi5sb2FkKHRoaXMuYnVpbGRTdGVwc1VSTCwgZnVu
Y3Rpb24oZGF0YSkgewotICAgICAgICAgICAgaWYgKCEoZGF0YS5zdGVwcyBpbnN0YW5jZW9mIEFy
cmF5KSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIHRoaXMuX3N0ZXBz
ID0gZGF0YS5zdGVwczsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUlmRGF0YUF2YWlsYWJsZSgp
OwotICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMudXJsRmFpbGVkVG9Mb2FkLCB7d2l0aENyZWRl
bnRpYWxzOiB0aGlzLnF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb259KTsKLQotICAg
ICAgICBKU09OLmxvYWQodGhpcy5idWlsZFVSTCwgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAg
ICAgdGhpcy5xdWV1ZS5idWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQgPSB0cnVlOwotICAgICAgICAg
ICAgaWYgKCEoZGF0YS5idWlsZHMgaW5zdGFuY2VvZiBBcnJheSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgICAgICAvLyBTYW1wbGUgZGF0YSBmb3IgYSBzaW5nbGUgYnVpbGQ6
Ci0gICAgICAgICAgICAvLyAiYnVpbGRzIjogWwotICAgICAgICAgICAgLy8gICAgIHsKLSAgICAg
ICAgICAgIC8vICAgICAgICAgImJ1aWxkZXJpZCI6IDI4MiwKLSAgICAgICAgICAgIC8vICAgICAg
ICAgImJ1aWxkaWQiOiA1NjA5LAotICAgICAgICAgICAgLy8gICAgICAgICAiY29tcGxldGUiOiB0
cnVlLAotICAgICAgICAgICAgLy8gICAgICAgICAuLi4KLSAgICAgICAgICAgIC8vICAgICAgICAg
IndvcmtlcmlkIjogMTg4Ci0gICAgICAgICAgICAvLyAgICAgfQotICAgICAgICAgICAgLy8gXQot
ICAgICAgICAgICAgdGhpcy5fYnVpbGREYXRhID0gZGF0YS5idWlsZHNbMF07Ci0gICAgICAgICAg
ICB0aGlzLl91cGRhdGVJZkRhdGFBdmFpbGFibGUoKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB0
aGlzLnVybEZhaWxlZFRvTG9hZCwge3dpdGhDcmVkZW50aWFsczogdGhpcy5xdWV1ZS5idWlsZGJv
dC5uZWVkc0F1dGhlbnRpY2F0aW9ufSk7Ci0gICAgfSwKLQotICAgIGRlcHJlY2F0ZWRVcGRhdGU6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEpTT04ubG9hZCh0aGlzLnF1ZXVlLmJhc2VVUkwg
KyAiL2J1aWxkcy8iICsgdGhpcy5pZCwgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgdGhp
cy5pc0xvYWRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIHRoaXMucXVldWUuYnVpbGRib3QuaXNB
dXRoZW50aWNhdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmICghZGF0YSB8fCAhZGF0YS5wcm9w
ZXJ0aWVzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgdGhpcy5fZGVw
cmVjYXRlZFVwZGF0ZVdpdGhEYXRhKGRhdGEpOwotICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMu
dXJsRmFpbGVkVG9Mb2FkLCB7d2l0aENyZWRlbnRpYWxzOiB0aGlzLnF1ZXVlLmJ1aWxkYm90Lm5l
ZWRzQXV0aGVudGljYXRpb259KTsKLSAgICB9LAotCi0gICAgbG9hZExheW91dFRlc3RSZXN1bHRz
OiBmdW5jdGlvbihjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLnF1ZXVlLmJ1aWxk
Ym90Lm5lZWRzQXV0aGVudGljYXRpb24gJiYgdGhpcy5xdWV1ZS5idWlsZGJvdC5hdXRoZW50aWNh
dGlvblN0YXR1cyA9PT0gQnVpbGRib3QuQXV0aGVudGljYXRpb25TdGF0dXMuSW52YWxpZENyZWRl
bnRpYWxzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEpTT04ubG9hZCh0aGlzLnF1
ZXVlLmJ1aWxkYm90LmxheW91dFRlc3RGdWxsUmVzdWx0c1VSTEZvckl0ZXJhdGlvbih0aGlzKSwg
ZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgdGhpcy5xdWV1ZS5idWlsZGJvdC5pc0F1dGhl
bnRpY2F0ZWQgPSB0cnVlOwotCi0gICAgICAgICAgICB0aGlzLmxheW91dFRlc3RSZXN1bHRzLmFk
ZEZ1bGxMYXlvdXRUZXN0UmVzdWx0cyhkYXRhKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0g
ICAgICAgIH0uYmluZCh0aGlzKSwKLSAgICAgICAgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAg
ICAgaWYgKGRhdGEuZXJyb3JUeXBlID09PSBKU09OLkxvYWRFcnJvciAmJiBkYXRhLmVycm9ySFRU
UENvZGUgPT09IDQwMSkgewotICAgICAgICAgICAgICAgIHRoaXMucXVldWUuYnVpbGRib3QuaXNB
dXRoZW50aWNhdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoQnVpbGRib3RJdGVyYXRpb24uRXZlbnQuVW5hdXRob3JpemVkQWNjZXNzKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEuZXJyb3IpOwotICAg
ICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB7anNvbnBDYWxsYmFj
a05hbWU6ICJBRERfUkVTVUxUUyIsIHdpdGhDcmVkZW50aWFsczogdGhpcy5xdWV1ZS5idWlsZGJv
dC5uZWVkc0F1dGhlbnRpY2F0aW9ufSk7Ci0gICAgfSwKLQotICAgIGxvYWRKYXZhU2NyaXB0Q29y
ZVRlc3RSZXN1bHRzOiBmdW5jdGlvbih0ZXN0TmFtZSwgY2FsbGJhY2spCi0gICAgewotICAgICAg
ICBpZiAodGhpcy5xdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0aW9uICYmIHRoaXMucXVl
dWUuYnVpbGRib3QuYXV0aGVudGljYXRpb25TdGF0dXMgPT09IEJ1aWxkYm90LkF1dGhlbnRpY2F0
aW9uU3RhdHVzLkludmFsaWRDcmVkZW50aWFscykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBKU09OLmxvYWQodGhpcy5xdWV1ZS5idWlsZGJvdC5qYXZhU2NyaXB0Q29yZVRlc3RGYWls
dXJlc1VSTEZvckl0ZXJhdGlvbih0aGlzLCB0ZXN0TmFtZSksIGZ1bmN0aW9uKGRhdGEpIHsKLSAg
ICAgICAgICAgIHRoaXMucXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHRoaXMuamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cy5hZGRKYXZhU2NyaXB0Q29y
ZVRlc3RGYWlsdXJlcyhkYXRhKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0u
YmluZCh0aGlzKSwKLSAgICAgICAgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgaWYgKGRh
dGEuZXJyb3JUeXBlID09PSBKU09OLkxvYWRFcnJvciAmJiBkYXRhLmVycm9ySFRUUENvZGUgPT09
IDQwMSkgewotICAgICAgICAgICAgICAgIHRoaXMucXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNh
dGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoQnVpbGRib3RJdGVyYXRpb24uRXZlbnQuVW5hdXRob3JpemVkQWNjZXNzKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEuZXJyb3IpOwotICAgICAgICAgICAg
Y2FsbGJhY2soKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB7d2l0aENyZWRlbnRpYWxzOiB0aGlz
LnF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb259KTsKLSAgICB9LAotfTsKSW5kZXg6
IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy9CdWlsZGJvdExlYWtzUXVldWVWaWV3LmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy9CdWlsZGJvdExlYWtzUXVldWVWaWV3LmpzCShyZXZpc2lvbiAyNjkxMTEpCisr
KyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvQnVpbGRib3RMZWFrc1F1ZXVlVmlldy5qcwkobm9uZXhpc3RlbnQpCkBA
IC0xLDEzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotQnVpbGRib3RMZWFrc1F1ZXVlVmlldyA9IGZ1
bmN0aW9uKHF1ZXVlcykKLXsKLSAgICBCdWlsZGJvdFF1ZXVlVmlldy5jYWxsKHRoaXMsIHF1ZXVl
cyk7Ci0gICAgdGhpcy51cGRhdGUoKTsKLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JG
dW5jdGlvbnMoQnVpbGRib3RMZWFrc1F1ZXVlVmlldyk7Ci0KLUJ1aWxkYm90TGVha3NRdWV1ZVZp
ZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBCdWlsZGJvdExlYWtzUXVldWVWaWV3
LAotICAgIF9fcHJvdG9fXzogQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLAotCi0gICAgdXBk
YXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBRdWV1ZVZpZXcucHJvdG90eXBlLnVwZGF0
ZS5jYWxsKHRoaXMpOwotCi0gICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwot
Ci0gICAgICAgIGZ1bmN0aW9uIGFwcGVuZExlYWtzUXVldWVTdGF0dXMocXVldWUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHZhciBhcHBlbmRlZFN0YXR1cyA9IGZhbHNlOwotCi0gICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVlLml0ZXJhdGlvbnMubGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgICAgICB2YXIgaXRlcmF0aW9uID0gcXVldWUuaXRlcmF0aW9uc1tpXTsKLSAgICAg
ICAgICAgICAgICBpZiAoIWl0ZXJhdGlvbi5sb2FkZWQgfHwgIWl0ZXJhdGlvbi5maW5pc2hlZCkK
LSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICB2YXIgbWVz
c2FnZUVsZW1lbnQgPSB0aGlzLnJldmlzaW9uQ29udGVudEZvckl0ZXJhdGlvbihpdGVyYXRpb24s
IG51bGwpOwotCi0gICAgICAgICAgICAgICAgdmFyIGJ1aWxkUGFnZVVSTCA9IGl0ZXJhdGlvbi5x
dWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLQotICAg
ICAgICAgICAgICAgIGlmIChpdGVyYXRpb24uc3VjY2Vzc2Z1bCkKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVz
TGluZVZpZXcuU3RhdHVzLkdvb2QsICJubyBsZWFrcyIsIG51bGwsIGJ1aWxkUGFnZVVSTCk7Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAoIWl0ZXJhdGlvbi5wcm9kdWN0aXZlKQotICAgICAgICAg
ICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2VFbGVtZW50
LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuRGFuZ2VyLCBpdGVyYXRpb24udGV4dCwgbnVsbCwgYnVp
bGRQYWdlVVJMKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVyYXRpb24uZmFpbGVkKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBpdGVyYXRpb24ucXVldWUuYnVpbGRib3Qu
YnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBsZWFrQ291bnQgPSBpdGVyYXRpb24ubGF5b3V0VGVzdFJlc3VsdHMudW5pcXVlTGVha0Nv
dW50OwotICAgICAgICAgICAgICAgICAgICBpZiAobGVha0NvdW50KSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgbGVha3NWaWV3ZXJVUkwgPSBpdGVyYXRpb24ucmVzdWx0VVJMc1sidmll
dyBsZWFrcyJdOwotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0
dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLk5ldXRyYWws
IGxlYWtDb3VudCA9PT0gMSA/ICJ1bmlxdWUgbGVhayIgOiAidW5pcXVlIGxlYWtzIiwgbGVha0Nv
dW50LCBsZWFrc1ZpZXdlclVSTCk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdl
RWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkRhbmdlciwgaXRlcmF0aW9uLnRleHQsIG51
bGwsIGJ1aWxkUGFnZVVSTCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxG
b3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9
IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVz
LkRhbmdlciwgaXRlcmF0aW9uLnRleHQsIG51bGwsIGJ1aWxkUGFnZVVSTCk7Ci0gICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHN0YXR1
cy5lbGVtZW50KTsKLSAgICAgICAgICAgICAgICBhcHBlbmRlZFN0YXR1cyA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghYXBw
ZW5kZWRTdGF0dXMpIHsKLSAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xp
bmVWaWV3KCJ1bmtub3duIiwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLk5ldXRyYWwsICJsYXN0IHBh
c3NpbmcgYnVpbGQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
c3RhdHVzLmVsZW1lbnQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBuZXcgUG9wb3Zl
clRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVy
Rm9yTGVha3NRdWV1ZS5iaW5kKHRoaXMpLCBpdGVyYXRpb24pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdGhpcy5hcHBlbmRCdWlsZFN0eWxlLmNhbGwodGhpcywgdGhpcy5xdWV1ZXMsICJMZWFrcyIs
IGFwcGVuZExlYWtzUXVldWVTdGF0dXMpOwotICAgIH0sCi0KLSAgICBhZGRMaW5rVG9Sb3c6IGZ1
bmN0aW9uKHJvd0VsZW1lbnQsIGNsYXNzTmFtZSwgdGV4dCwgdXJsKQotICAgIHsKLSAgICAgICAg
dmFyIGxpbmtFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgICAgICBs
aW5rRWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc05hbWU7Ci0gICAgICAgIGxpbmtFbGVtZW50LnRl
eHRDb250ZW50ID0gdGV4dDsKLSAgICAgICAgbGlua0VsZW1lbnQuaHJlZiA9IHVybDsKLSAgICAg
ICAgbGlua0VsZW1lbnQudGFyZ2V0ID0gIl9ibGFuayI7Ci0gICAgICAgIHJvd0VsZW1lbnQuYXBw
ZW5kQ2hpbGQobGlua0VsZW1lbnQpOwotICAgIH0sCi0KLSAgICBfcG9wb3ZlckNvbnRlbnRGb3JM
ZWFrc1F1ZXVlOiBmdW5jdGlvbihpdGVyYXRpb24pCi0gICAgewotICAgICAgICB2YXIgY29udGVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotCi0gICAgICAgIGNvbnRlbnQuY2xh
c3NOYW1lID0gImxlYWtzLXBvcG92ZXIiOwotCi0gICAgICAgIHRoaXMuX2FkZEl0ZXJhdGlvbkhl
YWRpbmdUb1BvcG92ZXIoaXRlcmF0aW9uLCBjb250ZW50LCAiIik7Ci0gICAgICAgIHRoaXMuX2Fk
ZERpdmlkZXJUb1BvcG92ZXIoY29udGVudCk7Ci0KLSAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICByb3cudGV4dENvbnRlbnQgPSBpdGVyYXRp
b24udGV4dDsKLSAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChyb3cpOwotCi0gICAgICAgIHRo
aXMuX2FkZERpdmlkZXJUb1BvcG92ZXIoY29udGVudCk7Ci0KLSAgICAgICAgZm9yICh2YXIgbGlu
a05hbWUgaW4gaXRlcmF0aW9uLnJlc3VsdFVSTHMpIHsKLSAgICAgICAgICAgIHZhciByb3cgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIHRoaXMuYWRkTGlua1Rv
Um93KHJvdywgInJlc3VsdC1saW5rIiwgbGlua05hbWUsIGl0ZXJhdGlvbi5yZXN1bHRVUkxzW2xp
bmtOYW1lXSk7Ci0gICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHJvdyk7Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gY29udGVudDsKLSAgICB9LAotCi0gICAgX3ByZXNlbnRQb3Bv
dmVyRm9yTGVha3NRdWV1ZTogZnVuY3Rpb24oZWxlbWVudCwgcG9wb3ZlciwgaXRlcmF0aW9uKQot
ICAgIHsKLSAgICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29udGVudEZvckxlYWtz
UXVldWUoaXRlcmF0aW9uKTsKLQotICAgICAgICB2YXIgcmVjdCA9IERhc2hib2FyZC5SZWN0LnJl
Y3RGcm9tQ2xpZW50UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKLSAgICAg
ICAgcG9wb3Zlci5jb250ZW50ID0gY29udGVudDsKLSAgICAgICAgcG9wb3Zlci5wcmVzZW50KHJl
Y3QsIFtEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1ksIERhc2hib2FyZC5SZWN0RWRnZS5NQVhfWSwg
RGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1hdKTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi19OwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxk
Ym90UGVyZm9ybWFuY2VRdWV1ZVZpZXcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1
aWxkYm90UGVyZm9ybWFuY2VRdWV1ZVZpZXcuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xz
L0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
U2NyaXB0cy9CdWlsZGJvdFBlcmZvcm1hbmNlUXVldWVWaWV3LmpzCShub25leGlzdGVudCkKQEAg
LTEsMTIwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1CdWlsZGJvdFBlcmZvcm1hbmNlUXVl
dWVWaWV3ID0gZnVuY3Rpb24ocXVldWVzKQotewotICAgIEJ1aWxkYm90UXVldWVWaWV3LmNhbGwo
dGhpcywgcXVldWVzKTsKLSAgICB0aGlzLnVwZGF0ZSgpOwotfTsKLQotQmFzZU9iamVjdC5hZGRD
b25zdHJ1Y3RvckZ1bmN0aW9ucyhCdWlsZGJvdFBlcmZvcm1hbmNlUXVldWVWaWV3KTsKLQotQnVp
bGRib3RQZXJmb3JtYW5jZVF1ZXVlVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IEJ1aWxkYm90UGVyZm9ybWFuY2VRdWV1ZVZpZXcsCi0gICAgX19wcm90b19fOiBCdWlsZGJvdFF1
ZXVlVmlldy5wcm90b3R5cGUsCi0KLSAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIFF1ZXVlVmlldy5wcm90b3R5cGUudXBkYXRlLmNhbGwodGhpcyk7Ci0KLSAgICAgICAgdGhp
cy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7Ci0KLSAgICAgICAgZnVuY3Rpb24gYXBwZW5kUGVy
Zm9ybWFuY2VRdWV1ZVN0YXR1cyhxdWV1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGFw
cGVuZGVkU3RhdHVzID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIHZhciBsaW1pdCA9IDI7Ci0gICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVlLml0ZXJhdGlvbnMubGVuZ3RoICYmIGxp
bWl0ID4gMDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGl0ZXJhdGlvbiA9IHF1ZXVlLml0
ZXJhdGlvbnNbaV07Ci0gICAgICAgICAgICAgICAgaWYgKCFpdGVyYXRpb24ubG9hZGVkIHx8ICFp
dGVyYXRpb24uZmluaXNoZWQpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgICAgICAgICAgLS1saW1pdDsKLQotICAgICAgICAgICAgICAgIHZhciB3aWxsSGF2ZUFub3Ro
ZXJTdGF0dXNMaW5lID0gaSArIDEgPCBxdWV1ZS5pdGVyYXRpb25zLmxlbmd0aCAmJiBsaW1pdCA+
IDAgJiYgIWl0ZXJhdGlvbi5zdWNjZXNzZnVsOyAvLyBUaGlzIGlzIG5vdCAxMDAlIGNvcnJlY3Qs
IGFzIHRoZSByZW1haW5pbmcgaXRlcmF0aW9ucyBtYXkgbm90IGJlIGZpbmlzaGVkIG9yIGxvYWRl
ZCB5ZXQsIGJ1dCBjbG9zZSBlbm91Z2guCi0gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VFbGVt
ZW50ID0gdGhpcy5yZXZpc2lvbkNvbnRlbnRGb3JJdGVyYXRpb24oaXRlcmF0aW9uLCAoaXRlcmF0
aW9uLnByb2R1Y3RpdmUgJiYgd2lsbEhhdmVBbm90aGVyU3RhdHVzTGluZSkgPyBpdGVyYXRpb24u
cHJldmlvdXNQcm9kdWN0aXZlSXRlcmF0aW9uIDogbnVsbCk7Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoaXRlcmF0aW9uLnN1Y2Nlc3NmdWwpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1
cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3Rh
dHVzLkdvb2QsICJhbGwgdGVzdHMgcGFzc2VkIik7Ci0gICAgICAgICAgICAgICAgICAgIGxpbWl0
ID0gMDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFpdGVyYXRpb24ucHJvZHVjdGl2ZSkg
ewotICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90
LmJ1aWxkUGFnZVVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pOwotICAgICAgICAgICAgICAgICAg
ICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2VFbGVtZW50LCBTdGF0dXNM
aW5lVmlldy5TdGF0dXMuRGFuZ2VyLCBpdGVyYXRpb24udGV4dCwgbnVsbCwgdXJsKTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZXJhdGlvbi5mYWlsZWQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJ
dGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5l
dyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkJh
ZCwgaXRlcmF0aW9uLnRleHQsIG51bGwsIHVybCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5i
dWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGlu
ZVZpZXcuU3RhdHVzLkRhbmdlciwgaXRlcmF0aW9uLnRleHQsIG51bGwsIHVybCk7Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHN0
YXR1cy5lbGVtZW50KTsKLSAgICAgICAgICAgICAgICBhcHBlbmRlZFN0YXR1cyA9IHRydWU7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghYXBwZW5kZWRTdGF0dXMpIHsKLSAgICAg
ICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KCJ1bmtub3duIiwgU3Rh
dHVzTGluZVZpZXcuU3RhdHVzLk5ldXRyYWwsICJsYXN0IHBhc3NpbmcgYnVpbGQiKTsKLSAgICAg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1
c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yUGVyZm9ybWFuY2VRdWV1ZS5i
aW5kKHRoaXMpLCBxdWV1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLmFwcGVuZEJ1aWxk
U3R5bGUuY2FsbCh0aGlzLCB0aGlzLnF1ZXVlcywgJ1JlbGVhc2UnLCBhcHBlbmRQZXJmb3JtYW5j
ZVF1ZXVlU3RhdHVzKTsKLSAgICB9LAotCi0gICAgYWRkTGlua1RvUm93OiBmdW5jdGlvbihyb3dF
bGVtZW50LCBjbGFzc05hbWUsIHRleHQsIHVybCkKLSAgICB7Ci0gICAgICAgIHZhciBsaW5rRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICAgICAgbGlua0VsZW1lbnQu
Y2xhc3NOYW1lID0gY2xhc3NOYW1lOwotICAgICAgICBsaW5rRWxlbWVudC50ZXh0Q29udGVudCA9
IHRleHQ7Ci0gICAgICAgIGxpbmtFbGVtZW50LmhyZWYgPSB1cmw7Ci0gICAgICAgIGxpbmtFbGVt
ZW50LnRhcmdldCA9ICJfYmxhbmsiOwotICAgICAgICByb3dFbGVtZW50LmFwcGVuZENoaWxkKGxp
bmtFbGVtZW50KTsKLSAgICB9LAotCi0gICAgX3BvcG92ZXJDb250ZW50Rm9yUGVyZm9ybWFuY2VR
dWV1ZTogZnVuY3Rpb24ocXVldWUpCi0gICAgewotICAgICAgICB2YXIgY29udGVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJw
ZXJmb3JtYW5jZS1wb3BvdmVyIjsKLQotICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuYWRkTGlua1RvUm93KHJvdywgImRhc2hib2Fy
ZC1saW5rIiwgIlBlcmZvcm1hbmNlIERhc2hib2FyZCIsIHF1ZXVlLmJ1aWxkYm90LnBlcmZvcm1h
bmNlRGFzaGJvYXJkVVJMKTsKLQotICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHJvdyk7Ci0K
LSAgICAgICAgcmV0dXJuIGNvbnRlbnQ7Ci0gICAgfSwKLQotICAgIF9wcmVzZW50UG9wb3ZlckZv
clBlcmZvcm1hbmNlUXVldWU6IGZ1bmN0aW9uKGVsZW1lbnQsIHBvcG92ZXIsIHF1ZXVlKQotICAg
IHsKLSAgICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29udGVudEZvclBlcmZvcm1h
bmNlUXVldWUocXVldWUpOwotCi0gICAgICAgIHZhciByZWN0ID0gRGFzaGJvYXJkLlJlY3QucmVj
dEZyb21DbGllbnRSZWN0KGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwotICAgICAg
ICBwb3BvdmVyLmNvbnRlbnQgPSBjb250ZW50OwotICAgICAgICBwb3BvdmVyLnByZXNlbnQocmVj
dCwgW0Rhc2hib2FyZC5SZWN0RWRnZS5NSU5fWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZLCBE
YXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1gsIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWF0pOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19OwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90
UXVldWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90UXVldWUuanMJKHJl
dmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlLmpzCShub25leGlz
dGVudCkKQEAgLTEsMzc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1CdWlsZGJvdFF1ZXVlID0gZnVu
Y3Rpb24oYnVpbGRib3QsIGlkLCBpbmZvKQotewotICAgIEJhc2VPYmplY3QuY2FsbCh0aGlzKTsK
LQotICAgIGNvbnNvbGUuYXNzZXJ0KGJ1aWxkYm90KTsKLSAgICBjb25zb2xlLmFzc2VydChpZCk7
Ci0KLSAgICB0aGlzLmJ1aWxkYm90ID0gYnVpbGRib3Q7Ci0gICAgdGhpcy5pZCA9IGlkOwotCi0g
ICAgLy8gRklYTUU6IFNvbWUgb2YgdGhlc2UgYXJlIHByZXNlbnRhdGlvbiBvbmx5LCBhbmQgc2hv
dWxkIGJlIGhhbmRsZWQgYWJvdmUgQnVpbGRib3RRdWV1ZSBsZXZlbC4KLSAgICB0aGlzLmJyYW5j
aGVzID0gaW5mby5icmFuY2hlczsKLSAgICB0aGlzLnBsYXRmb3JtID0gaW5mby5wbGF0Zm9ybS5u
YW1lOwotICAgIHRoaXMuZGVidWcgPSBpbmZvLmRlYnVnOwotICAgIHRoaXMuYnVpbGRlciA9IGlu
Zm8uYnVpbGRlcjsKLSAgICB0aGlzLnRlc3RlciA9IGluZm8udGVzdGVyOwotICAgIHRoaXMucGVy
Zm9ybWFuY2UgPSBpbmZvLnBlcmZvcm1hbmNlOwotICAgIHRoaXMuc3RhdGljQW5hbHl6ZXIgPSBp
bmZvLnN0YXRpY0FuYWx5emVyOwotICAgIHRoaXMubGVha3MgPSBpbmZvLmxlYWtzOwotICAgIHRo
aXMuYXJjaGl0ZWN0dXJlID0gaW5mby5hcmNoaXRlY3R1cmU7Ci0gICAgdGhpcy50ZXN0Q2F0ZWdv
cnkgPSBpbmZvLnRlc3RDYXRlZ29yeTsKLSAgICB0aGlzLmhlYWRpbmcgPSBpbmZvLmhlYWRpbmc7
Ci0gICAgdGhpcy5jcmFzaGVzT25seSA9IGluZm8uY3Jhc2hlc09ubHk7Ci0KLSAgICB0aGlzLml0
ZXJhdGlvbnMgPSBbXTsKLSAgICB0aGlzLl9rbm93bkl0ZXJhdGlvbnMgPSB7fTsKLQotICAgIC8v
IFNvbWUgcXVldWVzIHByb2Nlc3MgY2hhbmdlcyBvdXQgb2Ygb3JkZXIsIGJ1dCB3ZSBuZWVkIHRv
IGRpc3BsYXkgcmVzdWx0cyBmb3IgdGhlIGxhdGVzdCBjb21taXQsCi0gICAgLy8gbm90IHRoZSBs
YXRlc3QgYnVpbGQuIEJ1aWxkYm90UXVldWUgZW5zdXJlcyB0aGF0IGF0IGxlYXN0IG9uZSBwcm9k
dWN0aXZlIGl0ZXJhdGlvbgotICAgIC8vIHRoYXQgd2FzIHJ1biBpbiBvcmRlciBnZXRzIGxvYWRl
ZCAoaWYgdGhlIHF1ZXVlIGhhZCBhbnkgcHJvZHVjdGl2ZSBpdGVyYXRpb25zLCBvZiBjb3Vyc2Up
LgotICAgIHRoaXMuX2hhc0xvYWRlZEl0ZXJhdGlvbkZvckluT3JkZXJSZXN1bHQgPSBmYWxzZTsK
LX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoQnVpbGRib3RRdWV1ZSk7
Ci0KLUJ1aWxkYm90UXVldWUuUmVjZW50SXRlcmF0aW9uc1RvTG9hZCA9IDEwOwotCi1CdWlsZGJv
dFF1ZXVlLkV2ZW50ID0gewotICAgIEl0ZXJhdGlvbnNBZGRlZDogIml0ZXJhdGlvbnMtYWRkZWQi
LAotICAgIFVuYXV0aG9yaXplZEFjY2VzczogInVuYXV0aG9yaXplZC1hY2Nlc3MiCi19OwotCi1C
dWlsZGJvdFF1ZXVlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogQnVpbGRib3RRdWV1
ZSwKLSAgICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAgZ2V0IGJhc2VV
UkwoKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuYnVpbGRib3QuVkVSU0lPTl9MRVNTX1RIQU5f
MDkpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZGJvdC5iYXNlVVJMICsgImpzb24vYnVp
bGRlcnMvIiArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLmlkKTsKLQotICAgICAgICByZXR1cm4g
dGhpcy5idWlsZGJvdC5iYXNlVVJMICsgImFwaS92Mi9idWlsZGVycy8iICsgZW5jb2RlVVJJQ29t
cG9uZW50KHRoaXMuaWQpOwotICAgIH0sCi0KLSAgICBnZXQgYWxsSXRlcmF0aW9uc1VSTCgpCi0g
ICAgewotICAgICAgICBpZiAodGhpcy5idWlsZGJvdC5WRVJTSU9OX0xFU1NfVEhBTl8wOSkKLSAg
ICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiL2J1aWxkcy9fYWxsLz9tYXg9MTAwMDAi
OwotCi0gICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiL2J1aWxkcz9vcmRlcj0tbnVtYmVy
IjsKLSAgICB9LAotCi0gICAgZ2V0IGJ1aWxkc1VSTCgpCi0gICAgewotICAgICAgICAvLyBXZSBu
ZWVkIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgYnVpbGRzIGZvciB3aGljaCB3ZSBmZXRjaCB0aGUg
aW5mbywgYXMgaXQgd291bGQKLSAgICAgICAgLy8gaW1wYWN0IHBlcmZvcm1hbmNlLiBGb3IgZWFj
aCBidWlsZCwgd2Ugd2lsbCBiZSBzdWJzZXF1ZW50bHkgbWFraW5nIFJFU1QgQVBJIGNhbGxzCi0g
ICAgICAgIC8vIHRvIGZldGNoIGRldGFpbGVkIGJ1aWxkIGluZm8uCi0gICAgICAgIHJldHVybiB0
aGlzLmJhc2VVUkwgKyAiL2J1aWxkcz9vcmRlcj0tbnVtYmVyJmxpbWl0PTIwIjsKLSAgICB9LAot
Ci0gICAgZ2V0IG92ZXJ2aWV3VVJMKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmJ1aWxkYm90
LlZFUlNJT05fTEVTU19USEFOXzA5KQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRib3Qu
YmFzZVVSTCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuaWQpICsgIj9u
dW1idWlsZHM9NTAiOwotCi0gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkYm90LmJhc2VVUkwgKyAi
Iy9idWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuaWQpICsgIj9udW1idWlsZHM9
NTAiOwotICAgIH0sCi0KLSAgICBnZXQgcmVjZW50RmFpbGVkSXRlcmF0aW9uQ291bnQoKQotICAg
IHsKLSAgICAgICAgdmFyIGZpcnN0RmluaXNoZWRJdGVyYXRpb24gPSB0aGlzLm1vc3RSZWNlbnRG
aW5pc2hlZEl0ZXJhdGlvbjsKLSAgICAgICAgdmFyIG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0
aW9uID0gdGhpcy5tb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbjsKLSAgICAgICAgcmV0dXJu
IHRoaXMuaXRlcmF0aW9ucy5pbmRleE9mKG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0aW9uKSAt
IHRoaXMuaXRlcmF0aW9ucy5pbmRleE9mKGZpcnN0RmluaXNoZWRJdGVyYXRpb24pOwotICAgIH0s
Ci0KLSAgICBnZXQgZmlyc3RSZWNlbnRVbnN1Y2Nlc3NmdWxJdGVyYXRpb24oKQotICAgIHsKLSAg
ICAgICAgaWYgKCF0aGlzLml0ZXJhdGlvbnMubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIG51
bGw7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLml0ZXJhdGlvbnMubGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5pdGVyYXRpb25zW2ldLmZpbmlzaGVkIHx8
ICF0aGlzLml0ZXJhdGlvbnNbaV0uc3VjY2Vzc2Z1bCkKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIGlmICh0aGlzLml0ZXJhdGlvbnNbaSAtIDFdICYmIHRoaXMuaXRlcmF0
aW9uc1tpIC0gMV0uZmluaXNoZWQgJiYgIXRoaXMuaXRlcmF0aW9uc1tpIC0gMV0uc3VjY2Vzc2Z1
bCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVyYXRpb25zW2kgLSAxXTsKLSAgICAg
ICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0aGlzLml0ZXJh
dGlvbnNbdGhpcy5pdGVyYXRpb25zLmxlbmd0aCAtIDFdLnN1Y2Nlc3NmdWwpCi0gICAgICAgICAg
ICByZXR1cm4gdGhpcy5pdGVyYXRpb25zW3RoaXMuaXRlcmF0aW9ucy5sZW5ndGggLSAxXTsKLQot
ICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAotCi0gICAgZ2V0IG1vc3RSZWNlbnRGaW5pc2hl
ZEl0ZXJhdGlvbigpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaXRl
cmF0aW9ucy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKCF0aGlzLml0ZXJhdGlvbnNb
aV0uZmluaXNoZWQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICByZXR1
cm4gdGhpcy5pdGVyYXRpb25zW2ldOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG51bGw7
Ci0gICAgfSwKLQotICAgIGdldCBtb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbigpCi0gICAg
ewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaXRlcmF0aW9ucy5sZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgaWYgKCF0aGlzLml0ZXJhdGlvbnNbaV0uZmluaXNoZWQgfHwgIXRo
aXMuaXRlcmF0aW9uc1tpXS5zdWNjZXNzZnVsKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlcmF0aW9uc1tpXTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiBudWxsOwotICAgIH0sCi0KLSAgICBfbG9hZDogZnVuY3Rpb24odXJsLCBjYWxs
YmFjaykKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRp
b24gJiYgdGhpcy5idWlsZGJvdC5hdXRoZW50aWNhdGlvblN0YXR1cyA9PT0gQnVpbGRib3QuQXV0
aGVudGljYXRpb25TdGF0dXMuSW52YWxpZENyZWRlbnRpYWxzKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIEpTT04ubG9hZCgKLSAgICAgICAgICAgIHVybCwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkYm90LmlzQXV0aGVudGlj
YXRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soZGF0YSk7Ci0gICAgICAgICAg
ICB9LmJpbmQodGhpcyksCi0gICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGRhdGEuZXJyb3JUeXBlICE9PSBKU09OLkxvYWRFcnJvciB8fCBkYXRhLmVycm9y
SFRUUENvZGUgIT09IDQwMSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgICAgIGlmICh0aGlzLmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCkgewotICAgICAgICAgICAg
ICAgICAgICAvLyBGSVhNRSAoMTI4MDA2KTogU2FmYXJpL1dlYktpdCBzaG91bGQgY29hbGVzY2Ug
YXV0aGVudGljYXRpb24gcmVxdWVzdHMgd2l0aCB0aGUgc2FtZSBvcmlnaW4gYW5kIGF1dGhlbnRp
Y2F0aW9uIHJlYWxtLgotICAgICAgICAgICAgICAgICAgICAvLyBJbiBhYnNlbmNlIG9mIHRoZSBm
aXgsIFNhZmFyaSBwcmVzZW50cyBhZGRpdGlvbmFsIGF1dGhlbnRpY2F0aW9uIGRpYWxvZ3MgcmVn
YXJkbGVzcyBvZiB3aGV0aGVyIGFuIGVhcmxpZXIgYXV0aGVudGljYXRpb24KLSAgICAgICAgICAg
ICAgICAgICAgLy8gZGlhbG9nIHdhcyBkaXNtaXNzZWQuIEFzIGEgd2F5IHRvIGFtZWxpb3JhdGUg
dGhlIHVzZXIgZXhwZXJpZW5jZSB3aGVyZSBhIHBlcnNvbiBhdXRoZW50aWNhdGVkIHN1Y2Nlc3Nm
dWxseSB1c2luZyBhbgotICAgICAgICAgICAgICAgICAgICAvLyBlYXJsaWVyIGF1dGhlbnRpY2F0
aW9uIGRpYWxvZyBhbmQgY2FuY2VsbGVkIHRoZSBhdXRoZW50aWNhdGlvbiBkaWFsb2cgYXNzb2Np
YXRlZCB3aXRoIHRoZSBsb2FkIGZvciB0aGlzIHF1ZXVlLCB3ZSBjYWxsCi0gICAgICAgICAgICAg
ICAgICAgIC8vIG91cnNlbGYgc28gdGhhdCB3ZSBjYW4gc2NoZWR1bGUgYW5vdGhlciBsb2FkLCB3
aGljaCBzaG91bGQgY29tcGxldGUgc3VjY2Vzc2Z1bGx5IG5vdyB0aGF0IHdlIGhhdmUgY3JlZGVu
dGlhbHMuCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvYWQodXJsLCBjYWxsYmFjayk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICB0aGlzLmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCA9IGZhbHNlOwotICAgICAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKEJ1aWxkYm90UXVldWUuRXZlbnQu
VW5hdXRob3JpemVkQWNjZXNzLCB7IH0pOwotICAgICAgICAgICAgfS5iaW5kKHRoaXMpLAotICAg
ICAgICAgICAge3dpdGhDcmVkZW50aWFsczogdGhpcy5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0
aW9ufQotICAgICAgICApOwotICAgIH0sCi0KLSAgICBsb2FkTW9yZUhpc3RvcmljYWxJdGVyYXRp
b25zOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgaW5kZXhPZkZpcnN0TmV3bHlMb2Fk
aW5nSXRlcmF0aW9uOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaXRlcmF0aW9u
cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKGluZGV4T2ZGaXJzdE5ld2x5TG9hZGlu
Z0l0ZXJhdGlvbiAhPT0gdW5kZWZpbmVkICYmIGkgPj0gaW5kZXhPZkZpcnN0TmV3bHlMb2FkaW5n
SXRlcmF0aW9uICsgQnVpbGRib3RRdWV1ZS5SZWNlbnRJdGVyYXRpb25zVG9Mb2FkKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHZhciBpdGVyYXRpb24gPSB0aGlzLml0ZXJh
dGlvbnNbaV07Ci0gICAgICAgICAgICBpZiAoIWl0ZXJhdGlvbi5maW5pc2hlZCkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChpdGVyYXRpb24uaXNMb2FkaW5nKSB7
Ci0gICAgICAgICAgICAgICAgLy8gQ2FsbGVyIGxhY2tzIHZpc2liaWxpdHkgaW50byBsb2FkaW5n
LCBzbyBpdCBpcyBsaWtlbHkgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHRvbyBvZnRlbi4KLSAgICAg
ICAgICAgICAgICAvLyBHaXZlIGl0IGEgY2hhbmNlIHRvIGFuYWx5emUgZXZlcnl0aGluZyB0aGF0
J3MgYmVlbiBhbHJlYWR5IHJlcXVlc3RlZCBmaXJzdCwgYW5kIHRoZW4gaXQgY2FuIGRlY2lkZSB3
aGV0aGVyIGl0IG5lZWRzIG1vcmUuCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbi5sb2FkZWQgJiYgaW5kZXhPZkZpcnN0TmV3
bHlMb2FkaW5nSXRlcmF0aW9uICE9PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICAvLyBU
aGVyZSB3YXMgYSBnYXAgYmV0d2VlbiBsb2FkZWQgaXRlcmF0aW9ucywgd2hpY2ggd2UndmUgY2xv
c2VkIG5vdy4KLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoIWl0ZXJhdGlvbi5sb2FkZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5kZXhP
ZkZpcnN0TmV3bHlMb2FkaW5nSXRlcmF0aW9uID09PSB1bmRlZmluZWQpCi0gICAgICAgICAgICAg
ICAgICAgIGluZGV4T2ZGaXJzdE5ld2x5TG9hZGluZ0l0ZXJhdGlvbiA9IGk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCF0aGlzLl9oYXNMb2FkZWRJdGVyYXRpb25Gb3JJbk9yZGVyUmVzdWx0KQotICAg
ICAgICAgICAgICAgICAgICBpdGVyYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihCdWlsZGJvdEl0ZXJh
dGlvbi5FdmVudC5VcGRhdGVkLCB0aGlzLl9jaGVja0ZvckluT3JkZXJSZXN1bHQuYmluZCh0aGlz
KSk7Ci0gICAgICAgICAgICAgICAgaXRlcmF0aW9uLnVwZGF0ZSgpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfSwKLQotICAgIGdldCBidWlsZHNJbmZvVVJMKCkKLSAgICB7Ci0gICAg
ICAgIGlmICh0aGlzLmJ1aWxkYm90LlZFUlNJT05fTEVTU19USEFOXzA5KQotICAgICAgICAgICAg
cmV0dXJuIHRoaXMuYmFzZVVSTDsKLQotICAgICAgICByZXR1cm4gdGhpcy5idWlsZHNVUkw7Ci0g
ICAgfSwKLQotICAgIGdldEJ1aWxkczogZnVuY3Rpb24oZGF0YSkKLSAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLmJ1aWxkYm90LlZFUlNJT05fTEVTU19USEFOXzA5KQotICAgICAgICAgICAgcmV0dXJu
IGRhdGEuY2FjaGVkQnVpbGRzLnJldmVyc2UoKTsKLQotICAgICAgICByZXR1cm4gZGF0YS5idWls
ZHM7Ci0gICAgfSwKLQotICAgIGlzQnVpbGRDb21wbGV0ZTogZnVuY3Rpb24oZGF0YSwgaW5kZXgp
Ci0gICAgewotICAgICAgICBpZiAodGhpcy5idWlsZGJvdC5WRVJTSU9OX0xFU1NfVEhBTl8wOSkg
ewotICAgICAgICAgICAgdmFyIGN1cnJlbnRCdWlsZHMgPSB7fTsKLSAgICAgICAgICAgIGlmIChk
YXRhLmN1cnJlbnRCdWlsZHMgaW5zdGFuY2VvZiBBcnJheSkKLSAgICAgICAgICAgICAgICBkYXRh
LmN1cnJlbnRCdWlsZHMuZm9yRWFjaChmdW5jdGlvbihpZCkgeyBjdXJyZW50QnVpbGRzW2lkXSA9
IHRydWU7IH0pOwotCi0gICAgICAgICAgICByZXR1cm4gKCEoZGF0YS5jYWNoZWRCdWlsZHNbaW5k
ZXhdIGluIGN1cnJlbnRCdWlsZHMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBkYXRh
LmJ1aWxkc1tpbmRleF0uY29tcGxldGU7Ci0gICAgfSwKLQotICAgIGdldEl0ZXJhdGlvbklEOiBm
dW5jdGlvbihkYXRhLCBpbmRleCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmJ1aWxkYm90LlZF
UlNJT05fTEVTU19USEFOXzA5KQotICAgICAgICAgICAgcmV0dXJuIGRhdGEuY2FjaGVkQnVpbGRz
W2luZGV4XTsKLQotICAgICAgICByZXR1cm4gZGF0YS5idWlsZHNbaW5kZXhdLm51bWJlcjsKLSAg
ICB9LAotCi0gICAgdXBkYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9sb2Fk
KHRoaXMuYnVpbGRzSW5mb1VSTCwgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgdmFyIGJ1
aWxkcyA9IHRoaXMuZ2V0QnVpbGRzKGRhdGEpOwotICAgICAgICAgICAgaWYgKCEoYnVpbGRzIGlu
c3RhbmNlb2YgQXJyYXkpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
dmFyIG5ld0l0ZXJhdGlvbnMgPSBbXTsKLQotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBidWlsZHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgaXRlcmF0aW9uSUQg
PSB0aGlzLmdldEl0ZXJhdGlvbklEKGRhdGEsIGkpOwotICAgICAgICAgICAgICAgIHZhciBpdGVy
YXRpb24gPSB0aGlzLl9rbm93bkl0ZXJhdGlvbnNbaXRlcmF0aW9uSURdOwotICAgICAgICAgICAg
ICAgIGlmICghaXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGl0ZXJhdGlvbiA9IG5l
dyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLCBpdGVyYXRpb25JRCwgdGhpcy5pc0J1aWxkQ29tcGxl
dGUoZGF0YSwgaSkpOwotICAgICAgICAgICAgICAgICAgICBuZXdJdGVyYXRpb25zLnB1c2goaXRl
cmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVyYXRpb25zLnB1c2goaXRlcmF0
aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fa25vd25JdGVyYXRpb25zW2l0ZXJhdGlv
bi5pZF0gPSBpdGVyYXRpb247Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
aWYgKGkgPCBCdWlsZGJvdFF1ZXVlLlJlY2VudEl0ZXJhdGlvbnNUb0xvYWQgJiYgKCFpdGVyYXRp
b24uZmluaXNoZWQgfHwgIWl0ZXJhdGlvbi5sb2FkZWQpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghdGhpcy5faGFzTG9hZGVkSXRlcmF0aW9uRm9ySW5PcmRlclJlc3VsdCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGl0ZXJhdGlvbi5hZGRFdmVudExpc3RlbmVyKEJ1aWxkYm90SXRlcmF0
aW9uLkV2ZW50LlVwZGF0ZWQsIHRoaXMuX2NoZWNrRm9ySW5PcmRlclJlc3VsdC5iaW5kKHRoaXMp
KTsKLSAgICAgICAgICAgICAgICAgICAgaXRlcmF0aW9uLnVwZGF0ZSgpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFuZXdJdGVyYXRpb25zLmxl
bmd0aCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIHRoaXMuc29ydEl0
ZXJhdGlvbnMoKTsKLQotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
QnVpbGRib3RRdWV1ZS5FdmVudC5JdGVyYXRpb25zQWRkZWQsIHthZGRlZEl0ZXJhdGlvbnM6IG5l
d0l0ZXJhdGlvbnN9KTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotCi0gICAgX2No
ZWNrRm9ySW5PcmRlclJlc3VsdDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAo
dGhpcy5faGFzTG9hZGVkSXRlcmF0aW9uRm9ySW5PcmRlclJlc3VsdCkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgdmFyIGl0ZXJhdGlvbnNJbk9yaWdpbmFsT3JkZXIgPSB0aGlzLml0ZXJh
dGlvbnMuY29uY2F0KCkuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBiLmlkIC0gYS5pZDsg
fSk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmF0aW9uc0luT3JpZ2luYWxPcmRl
ci5sZW5ndGggLSAxOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBpMSA9IGl0ZXJhdGlvbnNJbk9y
aWdpbmFsT3JkZXJbaV07Ci0gICAgICAgICAgICB2YXIgaTIgPSBpdGVyYXRpb25zSW5PcmlnaW5h
bE9yZGVyW2kgKyAxXTsKLSAgICAgICAgICAgIGlmIChpMS5wcm9kdWN0aXZlICYmIGkyLmxvYWRl
ZCAmJiB0aGlzLmNvbXBhcmVJdGVyYXRpb25zQnlSZXZpc2lvbnMoaTEsIGkyKSA8IDApIHsKLSAg
ICAgICAgICAgICAgICB0aGlzLl9oYXNMb2FkZWRJdGVyYXRpb25Gb3JJbk9yZGVyUmVzdWx0ID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgdGhpcy5sb2FkTW9yZUhpc3RvcmljYWxJdGVyYXRpb25zKCk7Ci0gICAgfSwKLQot
ICAgIGxvYWRBbGw6IGZ1bmN0aW9uKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6
IERvbid0IGxvYWQgZXZlcnl0aGluZyBhdCBvbmNlLCBkbyBpdCBpbmNyZW1lbnRhbGx5IGFzIHJl
cXVlc3RlZC4KLSAgICAgICAgdGhpcy5fbG9hZCh0aGlzLmFsbEl0ZXJhdGlvbnNVUkwsIGZ1bmN0
aW9uKGRhdGEpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGlkU3RyaW5nIGluIGRhdGEpIHsKLSAg
ICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgaWRTdHJpbmcgPT09ICJzdHJpbmci
KTsKLSAgICAgICAgICAgICAgICB2YXIgaXRlcmF0aW9uID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9u
KHRoaXMsIGRhdGFbaWRTdHJpbmddKTsKLSAgICAgICAgICAgICAgICB0aGlzLml0ZXJhdGlvbnMu
cHVzaChpdGVyYXRpb24pOwotICAgICAgICAgICAgICAgIHRoaXMuX2tub3duSXRlcmF0aW9uc1tp
dGVyYXRpb24uaWRdID0gaXRlcmF0aW9uOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0
aGlzLnNvcnRJdGVyYXRpb25zKCk7Ci0KLSAgICAgICAgICAgIHRoaXMuX2hhc0xvYWRlZEl0ZXJh
dGlvbkZvckluT3JkZXJSZXN1bHQgPSB0cnVlOwotCi0gICAgICAgICAgICBjYWxsYmFjayh0aGlz
KTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotCi0gICAgY29tcGFyZUl0ZXJhdGlv
bnM6IGZ1bmN0aW9uKGEsIGIpCi0gICAgewotICAgICAgICByZXN1bHQgPSB0aGlzLmNvbXBhcmVJ
dGVyYXRpb25zQnlSZXZpc2lvbnMoYSwgYik7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgICAgIC8vIEEgbG9hZGVkIGl0ZXJhdGlvbiBtYXkg
bm90IGhhdmUgcmV2aXNpb24gbnVtYmVycyBpZiBpdCBmYWlsZWQgZWFybHksIGJlZm9yZSBzdm4g
c3RlcHMgZmluaXNoZWQuCi0gICAgICAgIHJlc3VsdCA9IGIubG9hZGVkIC0gYS5sb2FkZWQ7Ci0g
ICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgICAg
IHJldHVybiBiLmlkIC0gYS5pZDsKLSAgICB9LAotCi0gICAgY29tcGFyZUl0ZXJhdGlvbnNCeVJl
dmlzaW9uczogZnVuY3Rpb24oYSwgYikKLSAgICB7Ci0gICAgICAgIHZhciBzb3J0ZWRSZXBvc2l0
b3JpZXMgPSBEYXNoYm9hcmQuc29ydGVkUmVwb3NpdG9yaWVzOwotICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHNvcnRlZFJlcG9zaXRvcmllcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAg
dmFyIHJlcG9zaXRvcnlOYW1lID0gc29ydGVkUmVwb3NpdG9yaWVzW2ldLm5hbWU7Ci0gICAgICAg
ICAgICB2YXIgdHJhYyA9IHNvcnRlZFJlcG9zaXRvcmllc1tpXS50cmFjOwotICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQodHJhYyk7Ci0gICAgICAgICAgICB2YXIgaW5kZXhBID0gdHJhYy5pbmRl
eE9mUmV2aXNpb24oYS5yZXZpc2lvbltyZXBvc2l0b3J5TmFtZV0pOwotICAgICAgICAgICAgdmFy
IGluZGV4QiA9IHRyYWMuaW5kZXhPZlJldmlzaW9uKGIucmV2aXNpb25bcmVwb3NpdG9yeU5hbWVd
KTsKLSAgICAgICAgICAgIGlmIChpbmRleEEgIT09IC0xICYmIGluZGV4QiAhPT0gLTEpIHsKLSAg
ICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gaW5kZXhCIC0gaW5kZXhBOwotICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gMDsKLSAgICB9LAotCi0gICAg
Ly8gUmUtaW5zZXJ0IHRoZSBpdGVyYXRpb24gaWYgaXRzIHNvcnQgb3JkZXIgY2hhbmdlZCAod2hp
Y2ggaGFwcGVucyBvbmNlIGRldGFpbHMgYWJvdXQgaXQgZ2V0IGxvYWRlZCkuCi0gICAgdXBkYXRl
SXRlcmF0aW9uUG9zaXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbikKLSAgICB7Ci0gICAgICAgIHZh
ciBvbGRJbmRleDsKLSAgICAgICAgdmFyIGluc2VydGVkID0gZmFsc2U7Ci0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy5pdGVyYXRpb25zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAg
ICBpZiAoIWluc2VydGVkICYmIHRoaXMuY29tcGFyZUl0ZXJhdGlvbnModGhpcy5pdGVyYXRpb25z
W2ldLCBpdGVyYXRpb24pID4gMCkgewotICAgICAgICAgICAgICAgIHRoaXMuaXRlcmF0aW9ucy5z
cGxpY2UoaSwgMCwgaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICBpZiAob2xkSW5kZXggIT09
IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
aW5zZXJ0ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKHRoaXMuaXRlcmF0aW9uc1tpXSA9PT0gaXRlcmF0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgb2xkSW5kZXggPSBpOwotICAgICAgICAgICAgICAgIGlmIChpbnNlcnRl
ZCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgdGhpcy5pdGVyYXRpb25zLnNwbGljZShvbGRJbmRleCwgMSk7Ci0gICAgfSwKLQot
ICAgIHNvcnRJdGVyYXRpb25zOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLml0ZXJh
dGlvbnMuc29ydCh0aGlzLmNvbXBhcmVJdGVyYXRpb25zLmJpbmQodGhpcykpOwotICAgIH0KLX07
CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9TY3JpcHRzL0J1aWxkYm90UXVldWVWaWV3LmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBU
b29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNTMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUJ1aWxkYm90UXVldWVWaWV3ID0gZnVuY3Rpb24o
cXVldWVzKQotewotICAgIFF1ZXVlVmlldy5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5xdWV1ZXMg
PSBxdWV1ZXMgfHwgW107Ci0KLSAgICB0aGlzLnF1ZXVlcy5mb3JFYWNoKGZ1bmN0aW9uKHF1ZXVl
KSB7Ci0gICAgICAgIGlmICh0aGlzLnBsYXRmb3JtICYmIHRoaXMucGxhdGZvcm0gIT0gcXVldWUu
cGxhdGZvcm0pCi0gICAgICAgICAgICB0aHJvdyAiQSBidWlsZGJvdCB2aWV3IG1heSBub3QgY29u
dGFpbiBxdWV1ZXMgZm9yIG11bHRpcGxlIHBsYXRmb3Jtcy4iCi0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHRoaXMucGxhdGZvcm0gPSBxdWV1ZS5wbGF0Zm9ybTsKLSAgICAgICAgcXVldWUuYWRk
RXZlbnRMaXN0ZW5lcihCdWlsZGJvdFF1ZXVlLkV2ZW50Lkl0ZXJhdGlvbnNBZGRlZCwgdGhpcy5f
cXVldWVJdGVyYXRpb25zQWRkZWQsIHRoaXMpOwotICAgICAgICBxdWV1ZS5hZGRFdmVudExpc3Rl
bmVyKEJ1aWxkYm90UXVldWUuRXZlbnQuVW5hdXRob3JpemVkQWNjZXNzLCB0aGlzLl91bmF1dGhv
cml6ZWRBY2Nlc3MsIHRoaXMpOwotICAgIH0uYmluZCh0aGlzKSk7Ci0KLSAgICB2YXIgc29ydGVk
UmVwb3NpdG9yaWVzID0gRGFzaGJvYXJkLnNvcnRlZFJlcG9zaXRvcmllczsKLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHNvcnRlZFJlcG9zaXRvcmllcy5sZW5ndGg7IGkrKykgewotICAgICAgICB2
YXIgdHJhYyA9IHNvcnRlZFJlcG9zaXRvcmllc1tpXS50cmFjOwotICAgICAgICBpZiAodHJhYykK
LSAgICAgICAgICAgIHRyYWMuYWRkRXZlbnRMaXN0ZW5lcihUcmFjLkV2ZW50LkNvbW1pdHNVcGRh
dGVkLCB0aGlzLl9uZXdDb21taXRzUmVjb3JkZWQsIHRoaXMpOwotICAgIH0KLX07Ci0KLUJhc2VP
YmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoQnVpbGRib3RRdWV1ZVZpZXcpOwotCi1CdWls
ZGJvdFF1ZXVlVmlldy5VcGRhdGVJbnRlcnZhbCA9IDQ1MDAwOyAvLyA0NSBzZWNvbmRzCi1CdWls
ZGJvdFF1ZXVlVmlldy5VcGRhdGVTb29uVGltZW91dCA9IDEwMDA7IC8vIDEgc2Vjb25kCi0KLUJ1
aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogQnVpbGRib3RR
dWV1ZVZpZXcsCi0gICAgX19wcm90b19fOiBRdWV1ZVZpZXcucHJvdG90eXBlLAotCi0gICAgX2xh
dGVzdFByb2R1Y3RpdmVJdGVyYXRpb246IGZ1bmN0aW9uKHF1ZXVlKQotICAgIHsKLSAgICAgICAg
aWYgKCFxdWV1ZS5pdGVyYXRpb25zLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwot
ICAgICAgICBpZiAocXVldWUuaXRlcmF0aW9uc1swXS5wcm9kdWN0aXZlKQotICAgICAgICAgICAg
cmV0dXJuIHF1ZXVlLml0ZXJhdGlvbnNbMF07Ci0gICAgICAgIHJldHVybiBxdWV1ZS5pdGVyYXRp
b25zWzBdLnByZXZpb3VzUHJvZHVjdGl2ZUl0ZXJhdGlvbjsKLSAgICB9LAotCi0gICAgX2FwcGVu
ZFVuYXV0aG9yaXplZExpbmVWaWV3OiBmdW5jdGlvbihxdWV1ZSkKLSAgICB7Ci0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb24pOwotICAgICAg
ICBjb25zb2xlLmFzc2VydCghcXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkKTsKLSAgICAg
ICAgdmFyIGphdmFzY3JpcHRVUkwgPSAiamF2YXNjcmlwdDpidWlsZGJvdHNbIiArIGJ1aWxkYm90
cy5pbmRleE9mKHF1ZXVlLmJ1aWxkYm90KSArICJdLnVwZGF0ZVF1ZXVlcyhCdWlsZGJvdC5VcGRh
dGVSZWFzb24uUmVhdXRoZW50aWNhdGUpIjsKLSAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0
dXNMaW5lVmlldygidW5hdXRob3JpemVkIiwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLlVuYXV0aG9y
aXplZCwgIiIsIG51bGwsIGphdmFzY3JpcHRVUkwpOwotICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOwotICAgIH0sCi0KLSAgICBfY3JlYXRlTG9hZGluZ0lu
ZGljYXRvcjogZnVuY3Rpb24oaXRlcmF0aW9uLCBoZWFkaW5nKSB7Ci0gICAgICAgIHZhciBjb250
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGNvbnRlbnQuY2xh
c3NOYW1lID0gInRlc3QtcmVzdWx0cy1wb3BvdmVyIjsKLQotICAgICAgICB0aGlzLl9hZGRJdGVy
YXRpb25IZWFkaW5nVG9Qb3BvdmVyKGl0ZXJhdGlvbiwgY29udGVudCwgaGVhZGluZyk7Ci0gICAg
ICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIoY29udGVudCk7Ci0KLSAgICAgICAgdmFyIGxv
YWRpbmdJbmRpY2F0b3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAg
bG9hZGluZ0luZGljYXRvci5jbGFzc05hbWUgPSAibG9hZGluZy1pbmRpY2F0b3IiOwotICAgICAg
ICBsb2FkaW5nSW5kaWNhdG9yLnRleHRDb250ZW50ID0gIkxvYWRpbmdcdTIwMjYiOwotICAgICAg
ICBjb250ZW50LmFwcGVuZENoaWxkKGxvYWRpbmdJbmRpY2F0b3IpOwotCi0gICAgICAgIHJldHVy
biBjb250ZW50OwotICAgIH0sCi0KLSAgICAvLyBXb3JrIGFyb3VuZCBidWcgODAxNTk6IC13ZWJr
aXQtdXNlci1zZWxlY3Q6bm9uZSBub3QgcmVzcGVjdGVkIHdoZW4gY29weWluZyBjb250ZW50Lgot
ICAgIC8vIFdlIHNldCBjbGlwYm9hcmQgZGF0YSBtYW51YWxseSwgdGVtcG9yYXJpbHkgbWFraW5n
IG5vbi1zZWxlY3RhYmxlIGNvbnRlbnQgaGlkZGVuCi0gICAgLy8gdG8gZWFzaWx5IGdldCBhY2N1
cmF0ZSBzZWxlY3Rpb24gdGV4dC4KLSAgICBfb25Qb3BvdmVyQ29weTogZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgICAgdmFyIGl0ZXJhdG9yID0gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKAot
ICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldCwKLSAgICAgICAgICAgIE5vZGVGaWx0ZXIu
U0hPV19FTEVNRU5ULAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGFjY2VwdE5vZGU6
IGZ1bmN0aW9uKGVsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKGVsZW1lbnQpLndlYmtpdFVzZXJTZWxlY3QgIT09ICJub25lIikKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9TS0lQOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICB3aGlsZSAoKG5v
ZGUgPSBpdGVyYXRvci5uZXh0Tm9kZSgpKSkKLSAgICAgICAgICAgIG5vZGUuc3R5bGUudmlzaWJp
bGl0eSA9ICJ2aXNpYmxlIjsKLQotICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnN0eWxlLnZp
c2liaWxpdHkgPSAiaGlkZGVuIjsKLSAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5zZXREYXRh
KCd0ZXh0Jywgd2luZG93LmdldFNlbGVjdGlvbigpKTsKLSAgICAgICAgZXZlbnQuY3VycmVudFRh
cmdldC5zdHlsZS52aXNpYmlsaXR5ID0gIiI7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
LAotCi0gICAgX3BvcG92ZXJDb250ZW50Rm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnM6
IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgdGVzdE5hbWUpCi0gICAgewotICAgICAgICB2YXIgY29udGVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBjb250ZW50LmNsYXNz
TmFtZSA9ICJ0ZXN0LXJlc3VsdHMtcG9wb3ZlciI7Ci0KLSAgICAgICAgdGhpcy5fYWRkSXRlcmF0
aW9uSGVhZGluZ1RvUG9wb3ZlcihpdGVyYXRpb24sIGNvbnRlbnQsICJqYXZhc2NyaXB0Y29yZSB0
ZXN0IGZhaWx1cmVzIiwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmphdmFTY3JpcHRDb3JlVGVz
dFN0ZGlvVXJsRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbiwgdGVzdE5hbWUpKTsKLSAgICAgICAgdGhp
cy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50KTsKLQotICAgICAgICBpZiAoIWl0ZXJhdGlv
bi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzLnJlZ3Jlc3Npb25zKSB7Ci0gICAgICAgICAgICB2
YXIgbWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAg
bWVzc2FnZS5jbGFzc05hbWUgPSAibG9hZGluZy1mYWlsdXJlIjsKLSAgICAgICAgICAgIG1lc3Nh
Z2UudGV4dENvbnRlbnQgPSAiVGVzdCByZXN1bHRzIGNvdWxkblx1MjAxOXQgYmUgbG9hZGVkIjsK
LSAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQobWVzc2FnZSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gY29udGVudDsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciByZWdyZXNzaW9ucyA9IGl0
ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzLnJlZ3Jlc3Npb25zOwotCi0gICAgICAg
IGZvciAodmFyIGkgPSAwLCBlbmQgPSByZWdyZXNzaW9ucy5sZW5ndGg7IGkgIT0gZW5kOyArK2kp
IHsKLSAgICAgICAgICAgIHZhciB0ZXN0ID0gcmVncmVzc2lvbnNbaV07Ci0gICAgICAgICAgICB2
YXIgcm93RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAg
ICAgdmFyIHRlc3RQYXRoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK
LSAgICAgICAgICAgIHRlc3RQYXRoRWxlbWVudC5jbGFzc05hbWUgPSAidGVzdC1wYXRoIjsKLSAg
ICAgICAgICAgIHRlc3RQYXRoRWxlbWVudC50ZXh0Q29udGVudCA9IHRlc3Q7Ci0gICAgICAgICAg
ICByb3dFbGVtZW50LmFwcGVuZENoaWxkKHRlc3RQYXRoRWxlbWVudCk7Ci0gICAgICAgICAgICBj
b250ZW50LmFwcGVuZENoaWxkKHJvd0VsZW1lbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29u
dGVudC5vbmNvcHkgPSB0aGlzLl9vblBvcG92ZXJDb3B5OwotICAgICAgICByZXR1cm4gY29udGVu
dDsKLSAgICB9LAotCi0gICAgX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENvcmVUZXN0UmVn
cmVzc2lvbnM6IGZ1bmN0aW9uKHRlc3ROYW1lLCBlbGVtZW50LCBwb3BvdmVyLCBpdGVyYXRpb24p
Ci0gICAgewotICAgICAgICBpZiAoaXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMu
cmVncmVzc2lvbnMpCi0gICAgICAgICAgICB2YXIgY29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250
ZW50Rm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMoaXRlcmF0aW9uLCB0ZXN0TmFtZSk7
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9jcmVhdGVM
b2FkaW5nSW5kaWNhdG9yKGl0ZXJhdGlvbiwgImphdmFzY3JpcHRjb3JlIHRlc3QgZmFpbHVyZXMi
KTsKLSAgICAgICAgICAgIGl0ZXJhdGlvbi5sb2FkSmF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cyh0
ZXN0TmFtZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcG9wb3Zlci5jb250ZW50ID0g
dGhpcy5fcG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucyhpdGVy
YXRpb24sIHRlc3ROYW1lKTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2YXIgcmVjdCA9IERhc2hib2FyZC5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChl
bGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKLSAgICAgICAgcG9wb3Zlci5jb250ZW50
ID0gY29udGVudDsKLSAgICAgICAgcG9wb3Zlci5wcmVzZW50KHJlY3QsIFtEYXNoYm9hcmQuUmVj
dEVkZ2UuTUlOX1ksIERhc2hib2FyZC5SZWN0RWRnZS5NQVhfWSwgRGFzaGJvYXJkLlJlY3RFZGdl
Lk1BWF9YLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1hdKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfSwKLQotICAgIF9wcmVzZW50UG9wb3ZlckZvclJldmlzaW9uUmFuZ2U6IGZ1bmN0aW9u
KGVsZW1lbnQsIHBvcG92ZXIsIGNvbnRleHQpCi0gICAgewotICAgICAgICB2YXIgY29udGVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBjb250ZW50LmNsYXNzTmFt
ZSA9ICJjb21taXQtaGlzdG9yeS1wb3BvdmVyIjsKLQotICAgICAgICAvLyBGSVhNRTogTm90aGlu
ZyBndWFyYW50ZWVzIHRoYXQgVHJhYyBoYXMgaGlzdG9yaWNhbCBkYXRhIGZvciB0aGVzZSByZXZp
c2lvbnMuCi0gICAgICAgIHZhciBsaW5lc0ZvckNvbW1pdHMgPSB0aGlzLl9wb3BvdmVyTGluZXNG
b3JDb21taXRSYW5nZShjb250ZXh0LnRyYWMsIGNvbnRleHQuYnJhbmNoLCBjb250ZXh0LmZpcnN0
UmV2aXNpb24sIGNvbnRleHQubGFzdFJldmlzaW9uKTsKLQotICAgICAgICB2YXIgbGluZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBsaW5lLmNsYXNzTmFtZSA9ICJ0
aXRsZSI7Ci0KLSAgICAgICAgaWYgKGxpbmVzRm9yQ29tbWl0cy5sZW5ndGgpIHsKLSAgICAgICAg
ICAgIGxpbmUudGV4dENvbnRlbnQgPSAiY29tbWl0cyBzaW5jZSBwcmV2aW91cyByZXN1bHQiOwot
ICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChsaW5lKTsKLSAgICAgICAgICAgIHRoaXMu
X2FkZERpdmlkZXJUb1BvcG92ZXIoY29udGVudCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBsaW5lLnRleHRDb250ZW50ID0gIm5vIGNvbW1pdHMgdG8gIiArIGNvbnRleHQuYnJhbmNo
Lm5hbWUgKyAiIHNpbmNlIHByZXZpb3VzIHJlc3VsdCI7Ci0gICAgICAgICAgICBjb250ZW50LmFw
cGVuZENoaWxkKGxpbmUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
IT0gbGluZXNGb3JDb21taXRzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgY29udGVudC5hcHBl
bmRDaGlsZChsaW5lc0ZvckNvbW1pdHNbaV0pOwotCi0gICAgICAgIHZhciByZWN0ID0gRGFzaGJv
YXJkLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkpOwotICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBjb250ZW50OwotICAgICAgICBwb3BvdmVy
LnByZXNlbnQocmVjdCwgW0Rhc2hib2FyZC5SZWN0RWRnZS5NSU5fWSwgRGFzaGJvYXJkLlJlY3RF
ZGdlLk1BWF9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1gsIERhc2hib2FyZC5SZWN0RWRnZS5N
SU5fWF0pOwotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0KLSAgICBfcmV2aXNpb25D
b250ZW50V2l0aFBvcG92ZXJGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgcHJldmlv
dXNJdGVyYXRpb24sIGJyYW5jaCkKLSAgICB7Ci0gICAgICAgIHZhciByZXBvc2l0b3J5ID0gYnJh
bmNoLnJlcG9zaXRvcnk7Ci0gICAgICAgIHZhciByZXBvc2l0b3J5TmFtZSA9IHJlcG9zaXRvcnku
bmFtZTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoaXRlcmF0aW9uLnJldmlzaW9uW3JlcG9zaXRv
cnlOYW1lXSk7Ci0gICAgICAgIHZhciB0cmFjID0gcmVwb3NpdG9yeS50cmFjOwotICAgICAgICB2
YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgY29u
dGVudC50ZXh0Q29udGVudCA9IHRoaXMuX2Zvcm1hdFJldmlzaW9uRm9yRGlzcGxheShpdGVyYXRp
b24ucmV2aXNpb25bcmVwb3NpdG9yeU5hbWVdLCByZXBvc2l0b3J5KTsKLSAgICAgICAgY29udGVu
dC5jbGFzc0xpc3QuYWRkKCJyZXZpc2lvbi1udW1iZXIiKTsKLQotICAgICAgICBpZiAoIXByZXZp
b3VzSXRlcmF0aW9uKQotICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7Ci0KLSAgICAgICAgdmFy
IHByZXZpb3VzSXRlcmF0aW9uUmV2aXNpb24gPSBwcmV2aW91c0l0ZXJhdGlvbi5yZXZpc2lvblty
ZXBvc2l0b3J5TmFtZV07Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByZXZpb3VzSXRlcmF0aW9u
UmV2aXNpb24pOwotICAgICAgICB2YXIgcHJldmlvdXNJdGVyYXRpb25SZXZpc2lvbkluZGV4ID0g
dHJhYy5pbmRleE9mUmV2aXNpb24ocHJldmlvdXNJdGVyYXRpb25SZXZpc2lvbik7Ci0gICAgICAg
IGlmIChwcmV2aW91c0l0ZXJhdGlvblJldmlzaW9uSW5kZXggPT09IC0xKQotICAgICAgICAgICAg
cmV0dXJuIGNvbnRlbnQ7Ci0KLSAgICAgICAgdmFyIGZpcnN0UmV2aXNpb24gPSB0cmFjLm5leHRS
ZXZpc2lvbihicmFuY2gubmFtZSwgcHJldmlvdXNJdGVyYXRpb25SZXZpc2lvbik7Ci0gICAgICAg
IGlmIChmaXJzdFJldmlzaW9uID09PSBUcmFjLk5PX01PUkVfUkVWSVNJT05TKQotICAgICAgICAg
ICAgcmV0dXJuIGNvbnRlbnQ7Ci0gICAgICAgIHZhciBmaXJzdFJldmlzaW9uSW5kZXggPSB0cmFj
LmluZGV4T2ZSZXZpc2lvbihmaXJzdFJldmlzaW9uKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
Zmlyc3RSZXZpc2lvbkluZGV4ICE9PSAtMSk7Ci0KLSAgICAgICAgdmFyIGxhc3RSZXZpc2lvbiA9
IGl0ZXJhdGlvbi5yZXZpc2lvbltyZXBvc2l0b3J5TmFtZV07Ci0gICAgICAgIHZhciBsYXN0UmV2
aXNpb25JbmRleCA9IHRyYWMuaW5kZXhPZlJldmlzaW9uKGxhc3RSZXZpc2lvbik7Ci0gICAgICAg
IGlmIChsYXN0UmV2aXNpb25JbmRleCA9PT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gY29udGVu
dDsKLQotICAgICAgICBpZiAoZmlyc3RSZXZpc2lvbkluZGV4ID4gbGFzdFJldmlzaW9uSW5kZXgp
Ci0gICAgICAgICAgICByZXR1cm4gY29udGVudDsKLQotICAgICAgICB2YXIgY29udGV4dCA9IHsK
LSAgICAgICAgICAgIHRyYWM6IHRyYWMsCi0gICAgICAgICAgICBicmFuY2g6IGJyYW5jaCwKLSAg
ICAgICAgICAgIGZpcnN0UmV2aXNpb246IGZpcnN0UmV2aXNpb24sCi0gICAgICAgICAgICBsYXN0
UmV2aXNpb246IGxhc3RSZXZpc2lvbiwKLSAgICAgICAgfTsKLSAgICAgICAgbmV3IFBvcG92ZXJU
cmFja2VyKGNvbnRlbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yUmV2aXNpb25SYW5nZS5iaW5k
KHRoaXMpLCBjb250ZXh0KTsKLQotICAgICAgICByZXR1cm4gY29udGVudDsKLSAgICB9LAotCi0g
ICAgX2FkZEl0ZXJhdGlvbkhlYWRpbmdUb1BvcG92ZXI6IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgY29u
dGVudCwgYWRkaXRpb25hbFRleHQsIGFkZGl0aW9uYWxUZXh0VGFyZ2V0KQotICAgIHsKLSAgICAg
ICAgdmFyIHRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRp
dGxlLmNsYXNzTmFtZSA9ICJwb3BvdmVyLWl0ZXJhdGlvbi1oZWFkaW5nIjsKLQotICAgICAgICB2
YXIgcXVldWVOYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICBx
dWV1ZU5hbWUuY2xhc3NOYW1lID0gInF1ZXVlLW5hbWUiOwotICAgICAgICBxdWV1ZU5hbWUudGV4
dENvbnRlbnQgPSBpdGVyYXRpb24ucXVldWUuaWQ7Ci0gICAgICAgIHRpdGxlLmFwcGVuZENoaWxk
KHF1ZXVlTmFtZSk7Ci0KLSAgICAgICAgdmFyIGJ1aWxkYm90TGluayA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImEiKTsKLSAgICAgICAgYnVpbGRib3RMaW5rLmNsYXNzTmFtZSA9ICJidWlsZGJv
dC1saW5rIjsKLSAgICAgICAgYnVpbGRib3RMaW5rLnRleHRDb250ZW50ID0gImJ1aWxkICMiICsg
aXRlcmF0aW9uLmlkOwotICAgICAgICBidWlsZGJvdExpbmsuaHJlZiA9IGl0ZXJhdGlvbi5xdWV1
ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAg
YnVpbGRib3RMaW5rLnRhcmdldCA9ICJfYmxhbmsiOwotICAgICAgICB0aXRsZS5hcHBlbmRDaGls
ZChidWlsZGJvdExpbmspOwotCi0gICAgICAgIGlmIChhZGRpdGlvbmFsVGV4dCkgewotICAgICAg
ICAgICAgdmFyIGVsZW1lbnRUeXBlID0gYWRkaXRpb25hbFRleHRUYXJnZXQgPyAiYSIgOiAic3Bh
biI7Ci0gICAgICAgICAgICB2YXIgYWRkaXRpb25hbFRleHRFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudChlbGVtZW50VHlwZSk7Ci0gICAgICAgICAgICBhZGRpdGlvbmFsVGV4dEVsZW1l
bnQuY2xhc3NOYW1lID0gImFkZGl0aW9uYWwtdGV4dCI7Ci0gICAgICAgICAgICBhZGRpdGlvbmFs
VGV4dEVsZW1lbnQudGV4dENvbnRlbnQgPSBhZGRpdGlvbmFsVGV4dDsKLSAgICAgICAgICAgIGlm
IChhZGRpdGlvbmFsVGV4dFRhcmdldCkgewotICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxUZXh0
RWxlbWVudC5ocmVmID0gYWRkaXRpb25hbFRleHRUYXJnZXQ7Ci0gICAgICAgICAgICAgICAgYWRk
aXRpb25hbFRleHRFbGVtZW50LnRhcmdldCA9ICJfYmxhbmsiOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdGl0bGUuYXBwZW5kQ2hpbGQoYWRkaXRpb25hbFRleHRFbGVtZW50KTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQodGl0bGUpOwotICAgIH0sCi0KLSAg
ICByZXZpc2lvbkNvbnRlbnRGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgcHJldmlv
dXNEaXNwbGF5ZWRJdGVyYXRpb24pCi0gICAgewotICAgICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1
bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgICAgIHZhciBzaG91bGRBZGRQbHVz
U2lnbiA9IGZhbHNlOwotICAgICAgICB2YXIgYnJhbmNoZXMgPSBpdGVyYXRpb24ucXVldWUuYnJh
bmNoZXM7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJhbmNoZXMubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIHZhciBicmFuY2ggPSBicmFuY2hlc1tpXTsKLSAgICAgICAgICAgIGlm
ICghaXRlcmF0aW9uLnJldmlzaW9uW2JyYW5jaC5yZXBvc2l0b3J5Lm5hbWVdKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9yZXZpc2lv
bkNvbnRlbnRXaXRoUG9wb3ZlckZvckl0ZXJhdGlvbihpdGVyYXRpb24sIHByZXZpb3VzRGlzcGxh
eWVkSXRlcmF0aW9uLCBicmFuY2gpOwotICAgICAgICAgICAgaWYgKHNob3VsZEFkZFBsdXNTaWdu
KQotICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCIgXHVmZjBiICIpKTsKLSAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGNv
bnRlbnQpOwotICAgICAgICAgICAgc2hvdWxkQWRkUGx1c1NpZ24gPSB0cnVlOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBmcmFnbWVudDsKLSAgICB9LAotCi0gICAgX3Rlc3RTdGVwRmFpbHVy
ZURlc2NyaXB0aW9uOiBmdW5jdGlvbihmYWlsZWRTdGVwKQotICAgIHsKLSAgICAgICAgaWYgKCFm
YWlsZWRTdGVwLmZhaWx1cmVDb3VudCkKLSAgICAgICAgICAgIHJldHVybiBCdWlsZGJvdEl0ZXJh
dGlvbi5UZXN0U3RlcHNbZmFpbGVkU3RlcC5uYW1lXSArICIgZmFpbGVkIjsKLSAgICAgICAgaWYg
KGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ID09PSAxKQotICAgICAgICAgICAgcmV0dXJuIEJ1aWxk
Ym90SXRlcmF0aW9uLlRlc3RTdGVwc1tmYWlsZWRTdGVwLm5hbWVdICsgIiBmYWlsdXJlIjsKLSAg
ICAgICAgcmV0dXJuIEJ1aWxkYm90SXRlcmF0aW9uLlRlc3RTdGVwc1tmYWlsZWRTdGVwLm5hbWVd
ICsgIiBmYWlsdXJlcyI7Ci0gICAgfSwKLQotICAgIF90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlv
bldpdGhDb3VudDogZnVuY3Rpb24oZmFpbGVkU3RlcCkKLSAgICB7Ci0gICAgICAgIGlmICghZmFp
bGVkU3RlcC5mYWlsdXJlQ291bnQpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fdGVzdFN0ZXBG
YWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3RlcCk7Ci0gICAgICAgIGlmIChmYWlsZWRTdGVwLnRv
b01hbnlGYWlsdXJlcykgewotICAgICAgICAgICAgLy8gRS5nLiAiNTArIGxheW91dCB0ZXN0IGZh
aWx1cmVzIiwgcHJldmVudGluZyBsaW5lIGJyZWFrcyBhcm91bmQgdGhlICIrIi4KLSAgICAgICAg
ICAgIHJldHVybiBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCArICJcdWZlZmZcdWZmMGJcdTAwYTAi
ICsgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3RlcCk7Ci0gICAgICAg
IH0KLSAgICAgICAgLy8gRS5nLiAiMSBsYXlvdXQgdGVzdCBmYWlsdXJlIiwgcHJldmVudGluZyBs
aW5lIGJyZWFrIGFmdGVyIHRoZSBudW1iZXIuCi0gICAgICAgIHJldHVybiBmYWlsZWRTdGVwLmZh
aWx1cmVDb3VudCArICJcdTAwYTAiICsgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24o
ZmFpbGVkU3RlcCk7Ci0gICAgfSwKLQotICAgIGFwcGVuZEJ1aWxkU3R5bGU6IGZ1bmN0aW9uKHF1
ZXVlcywgZGVmYXVsdExhYmVsLCBhcHBlbmRGdW5jdGlvbikKLSAgICB7Ci0gICAgICAgIHF1ZXVl
cy5mb3JFYWNoKGZ1bmN0aW9uKHF1ZXVlKSB7Ci0gICAgICAgICAgICB2YXIgcmVsZWFzZUxhYmVs
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgICAgICAgICAgcmVsZWFzZUxhYmVs
LmNsYXNzTGlzdC5hZGQoInF1ZXVlTGFiZWwiKTsKLSAgICAgICAgICAgIHJlbGVhc2VMYWJlbC50
ZXh0Q29udGVudCA9IHF1ZXVlLmhlYWRpbmcgPyBxdWV1ZS5oZWFkaW5nIDogZGVmYXVsdExhYmVs
OwotICAgICAgICAgICAgcmVsZWFzZUxhYmVsLmhyZWYgPSBxdWV1ZS5vdmVydmlld1VSTDsKLSAg
ICAgICAgICAgIHJlbGVhc2VMYWJlbC50YXJnZXQgPSAiX2JsYW5rIjsKLSAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5hcHBlbmRDaGlsZChyZWxlYXNlTGFiZWwpOwotCi0gICAgICAgICAgICBhcHBl
bmRGdW5jdGlvbi5jYWxsKHRoaXMsIHF1ZXVlKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAg
ICB9LAotCi0gICAgX3VwZGF0ZVF1ZXVlczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhp
cy5xdWV1ZXMuZm9yRWFjaChmdW5jdGlvbihxdWV1ZSkgeyBxdWV1ZS51cGRhdGUoKTsgfSk7Ci0g
ICAgfSwKLQotICAgIF9xdWV1ZUl0ZXJhdGlvbnNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAg
ewotICAgICAgICB0aGlzLnVwZGF0ZVNvb24oKTsKLQotICAgICAgICBldmVudC5kYXRhLmFkZGVk
SXRlcmF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZXJhdGlvbikgewotICAgICAgICAgICAgaXRl
cmF0aW9uLmFkZEV2ZW50TGlzdGVuZXIoQnVpbGRib3RJdGVyYXRpb24uRXZlbnQuVXBkYXRlZCwg
dGhpcy5faXRlcmF0aW9uVXBkYXRlZCwgdGhpcyk7Ci0gICAgICAgICAgICBpdGVyYXRpb24uYWRk
RXZlbnRMaXN0ZW5lcihCdWlsZGJvdEl0ZXJhdGlvbi5FdmVudC5VbmF1dGhvcml6ZWRBY2Nlc3Ms
IHRoaXMuX3VuYXV0aG9yaXplZEFjY2VzcywgdGhpcyk7Ci0gICAgICAgIH0uYmluZCh0aGlzKSk7
Ci0gICAgfSwKLQotICAgIF9pdGVyYXRpb25VcGRhdGVkOiBmdW5jdGlvbihldmVudCkKLSAgICB7
Ci0gICAgICAgIHRoaXMudXBkYXRlU29vbigpOwotICAgIH0sCi0gICAgCi0gICAgX25ld0NvbW1p
dHNSZWNvcmRlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLnVwZGF0ZVNv
b24oKTsKLSAgICB9LAotCi0gICAgX3VuYXV0aG9yaXplZEFjY2VzczogZnVuY3Rpb24oZXZlbnQp
Ci0gICAgewotICAgICAgICB0aGlzLnVwZGF0ZVNvb24oKTsKLSAgICB9Ci19OwpJbmRleDogVG9v
bHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL0J1aWxkYm90U3RhdGljQW5hbHl6ZXJRdWV1ZVZpZXcuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL0J1aWxkYm90U3RhdGljQW5hbHl6ZXJRdWV1ZVZpZXcuanMJKHJldmlz
aW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFN0YXRpY0FuYWx5emVyUXVldWVW
aWV3LmpzCShub25leGlzdGVudCkKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUJ1aWxk
Ym90U3RhdGljQW5hbHl6ZXJRdWV1ZVZpZXcgPSBmdW5jdGlvbihxdWV1ZXMpCi17Ci0gICAgQnVp
bGRib3RRdWV1ZVZpZXcuY2FsbCh0aGlzLCBxdWV1ZXMpOwotICAgIHRoaXMudXBkYXRlKCk7Ci19
OwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxkYm90U3RhdGljQW5h
bHl6ZXJRdWV1ZVZpZXcpOwotCi1CdWlsZGJvdFN0YXRpY0FuYWx5emVyUXVldWVWaWV3LnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogQnVpbGRib3RTdGF0aWNBbmFseXplclF1ZXVlVmll
dywKLSAgICBfX3Byb3RvX186IEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSwKLQotICAgIHVw
ZGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgUXVldWVWaWV3LnByb3RvdHlwZS51cGRh
dGUuY2FsbCh0aGlzKTsKLQotICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsK
LQotICAgICAgICBmdW5jdGlvbiBhcHBlbmRTdGF0aWNBbmFseXplclF1ZXVlU3RhdHVzKHF1ZXVl
KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgYXBwZW5kZWRTdGF0dXMgPSBmYWxzZTsKLQot
ICAgICAgICAgICAgdmFyIGxpbWl0ID0gMjsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcXVldWUuaXRlcmF0aW9ucy5sZW5ndGggJiYgbGltaXQgPiAwOyArK2kpIHsKLSAgICAgICAg
ICAgICAgICB2YXIgaXRlcmF0aW9uID0gcXVldWUuaXRlcmF0aW9uc1tpXTsKLSAgICAgICAgICAg
ICAgICBpZiAoIWl0ZXJhdGlvbi5sb2FkZWQgfHwgIWl0ZXJhdGlvbi5maW5pc2hlZCkKLSAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAtLWxpbWl0OwotCi0g
ICAgICAgICAgICAgICAgdmFyIHdpbGxIYXZlQW5vdGhlclN0YXR1c0xpbmUgPSBpICsgMSA8IHF1
ZXVlLml0ZXJhdGlvbnMubGVuZ3RoICYmIGxpbWl0ID4gMCAmJiAhaXRlcmF0aW9uLnN1Y2Nlc3Nm
dWw7IC8vIFRoaXMgaXMgbm90IDEwMCUgY29ycmVjdCwgYXMgdGhlIHJlbWFpbmluZyBpdGVyYXRp
b25zIG1heSBub3QgYmUgZmluaXNoZWQgb3IgbG9hZGVkIHlldCwgYnV0IGNsb3NlIGVub3VnaC4K
LSAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUVsZW1lbnQgPSB0aGlzLnJldmlzaW9uQ29udGVu
dEZvckl0ZXJhdGlvbihpdGVyYXRpb24sIChpdGVyYXRpb24ucHJvZHVjdGl2ZSAmJiB3aWxsSGF2
ZUFub3RoZXJTdGF0dXNMaW5lKSA/IGl0ZXJhdGlvbi5wcmV2aW91c1Byb2R1Y3RpdmVJdGVyYXRp
b24gOiBudWxsKTsKLQotICAgICAgICAgICAgICAgIHZhciB1cmwgPSBpdGVyYXRpb24ucXVldWUu
YnVpbGRib3QubGF5b3V0VGVzdFJlc3VsdHNVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAg
ICAgICAgICAgICAgICB2YXIgc3RhdHVzTGluZVZpZXdDb2xvciA9IFN0YXR1c0xpbmVWaWV3LlN0
YXR1cy5OZXV0cmFsOwotICAgICAgICAgICAgICAgIHZhciB0ZXh0OwotCi0gICAgICAgICAgICAg
ICAgdmFyIGZhaWxlZFN0ZXAgPSBuZXcgQnVpbGRib3RUZXN0UmVzdWx0cyhpdGVyYXRpb24uX2Zp
cnN0RmFpbGVkU3RlcCk7Ci0gICAgICAgICAgICAgICAgdmFyIGlzc3VlQ291bnQgPSBmYWlsZWRT
dGVwLmlzc3VlQ291bnQ7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaXRlcmF0aW9uLnN1Y2Nlc3Nm
dWwpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzTGluZVZpZXdDb2xvciA9IFN0YXR1c0xp
bmVWaWV3LlN0YXR1cy5Hb29kOwotICAgICAgICAgICAgICAgICAgICBsaW1pdCA9IDA7Ci0gICAg
ICAgICAgICAgICAgICAgIHRleHQgPSAibm8gaXNzdWVzIGZvdW5kIjsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKCFpdGVyYXRpb24ucHJvZHVjdGl2ZSkgewotICAgICAgICAgICAgICAgICAg
ICBzdGF0dXNMaW5lVmlld0NvbG9yID0gU3RhdHVzTGluZVZpZXcuU3RhdHVzLkRhbmdlcjsKLSAg
ICAgICAgICAgICAgICAgICAgdGV4dCA9IGl0ZXJhdGlvbi5fZmlyc3RGYWlsZWRTdGVwLm5hbWUg
KyAiIGZhaWxlZCI7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVyYXRpb24uZmFpbGVk
ICYmIC9mYWlsZWQgdG8gYnVpbGQvLnRlc3QoaXRlcmF0aW9uLnRleHQpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJ
dGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzTGluZVZpZXdD
b2xvciA9IFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQ7Ci0gICAgICAgICAgICAgICAgICAgIHRl
eHQgPSAiYnVpbGQgZmFpbGVkIjsKLSAgICAgICAgICAgICAgICAgICAgaXNzdWVDb3VudCA9IG51
bGw7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5l
dyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgc3RhdHVzTGluZVZpZXdDb2xvciwgKHRl
eHQpID8gdGV4dCA6ICJmb3VuZCAiICsgZmFpbGVkU3RlcC5pc3N1ZUNvdW50ICsgIiBpc3N1ZXMi
LCBpc3N1ZUNvdW50LCB1cmwpOwotCi0gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKHN0YXR1cy5lbGVtZW50KTsKLSAgICAgICAgICAgICAgICBhcHBlbmRlZFN0YXR1cyA9
IHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghYXBwZW5kZWRTdGF0dXMp
IHsKLSAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KCJ1bmtu
b3duIiwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLk5ldXRyYWwsICJsYXN0IHBhc3NpbmcgYnVpbGQi
KTsKLSAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1l
bnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5hcHBlbmRCdWls
ZFN0eWxlLmNhbGwodGhpcywgdGhpcy5xdWV1ZXMsICdTdGF0aWMgQW5hbHl6ZXInLCBhcHBlbmRT
dGF0aWNBbmFseXplclF1ZXVlU3RhdHVzKTsKLSAgICB9Ci19OwpJbmRleDogVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRz
L0J1aWxkYm90VGVzdFJlc3VsdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxk
Ym90VGVzdFJlc3VsdHMuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWls
ZGJvdFRlc3RSZXN1bHRzLmpzCShub25leGlzdGVudCkKQEAgLTEsMTg5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi1CdWlsZGJvdFRlc3RSZXN1bHRzID0gZnVuY3Rpb24odGVzdFN0ZXAsIHVy
bCkKLXsKLSAgICBCYXNlT2JqZWN0LmNhbGwodGhpcyk7Ci0gICAgdGhpcy5VUkwgPSB1cmw7Ci0K
LSAgICB0aGlzLl9wYXJzZVJlc3VsdHModGVzdFN0ZXApOwotfTsKLQotQmFzZU9iamVjdC5hZGRD
b25zdHJ1Y3RvckZ1bmN0aW9ucyhCdWlsZGJvdFRlc3RSZXN1bHRzKTsKLQotQnVpbGRib3RUZXN0
UmVzdWx0cy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IEJ1aWxkYm90VGVzdFJlc3Vs
dHMsCi0gICAgX19wcm90b19fOiBCYXNlT2JqZWN0LnByb3RvdHlwZSwKLQotICAgIF9wYXJzZVJl
c3VsdHM6IGZ1bmN0aW9uKHRlc3RTdGVwKQotICAgIHsKLSAgICAgICAgdGhpcy5uYW1lID0gdGVz
dFN0ZXAubmFtZTsKLSAgICAgICAgdGhpcy5hbGxQYXNzZWQgPSBmYWxzZTsKLSAgICAgICAgdGhp
cy5lcnJvck9jY3VycmVkID0gZmFsc2U7Ci0gICAgICAgIHRoaXMudG9vTWFueUZhaWx1cmVzID0g
ZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQgPSAwOwotICAgICAgICB0aGlzLmZs
YWtleUNvdW50ID0gMDsKLSAgICAgICAgdGhpcy50b3RhbExlYWtDb3VudCA9IDA7Ci0gICAgICAg
IHRoaXMudW5pcXVlTGVha0NvdW50ID0gMDsKLSAgICAgICAgdGhpcy5uZXdQYXNzZXNDb3VudCA9
IDA7Ci0gICAgICAgIHRoaXMubWlzc2luZ0NvdW50ID0gMDsKLSAgICAgICAgdGhpcy5jcmFzaENv
dW50ID0gMDsKLQotICAgICAgICBpZiAoIXRlc3RTdGVwLmNvbXBsZXRlKSB7Ci0gICAgICAgICAg
ICAvLyBUaGUgc3RlcCBuZXZlciBldmVuIHJhbiwgb3IgaGFzbid0IGZpbmlzaGVkIHJ1bm5pbmcu
Ci0gICAgICAgICAgICB0aGlzLmZpbmlzaGVkID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLmZpbmlzaGVkID0gdHJ1ZTsKLQotICAgICAgICBp
ZiAoIXRlc3RTdGVwLnJlc3VsdHMgfHwgdGVzdFN0ZXAucmVzdWx0cyA9PT0gQnVpbGRib3RJdGVy
YXRpb24uU1VDQ0VTUyB8fCB0ZXN0U3RlcC5yZXN1bHRzID09PSBCdWlsZGJvdEl0ZXJhdGlvbi5X
QVJOSU5HUykgewotICAgICAgICAgICAgLy8gQWxsIHRlc3RzIHBhc3NlZC4KLSAgICAgICAgICAg
IHRoaXMuYWxsUGFzc2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICgvRXhpdGluZyBlYXJseS8udGVzdCh0ZXN0U3RlcC5zdGF0ZV9zdHJpbmcp
KQotICAgICAgICAgICAgdGhpcy50b29NYW55RmFpbHVyZXMgPSB0cnVlOwotCi0gICAgICAgIGZ1
bmN0aW9uIHJlc3VsdFN1bW1hcml6ZXIobWF0Y2hTdHJpbmcsIHN1bSwgb3V0cHV0TGluZSkKLSAg
ICAgICAgewotICAgICAgICAgICAgLy8gU2FtcGxlIG91dHB1dExpbmU6ICI1MyBmYWlsdXJlcyAz
NyBuZXcgcGFzc2VzIDEgY3Jhc2hlcyIKLSAgICAgICAgICAgIHZhciByZWdleCA9IG5ldyBSZWdF
eHAoIihcXGQrKVxccyIgKyBtYXRjaFN0cmluZyk7Ci0gICAgICAgICAgICBtYXRjaCA9IHJlZ2V4
LmV4ZWMob3V0cHV0TGluZSk7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoKSB7Ci0gICAgICAgICAg
ICAgICAgbWF0Y2ggPSAvXihcZCspXHMvLmV4ZWMob3V0cHV0TGluZSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoIW1hdGNoKQotICAgICAgICAgICAgICAgIHJldHVybiBzdW07Ci0g
ICAgICAgICAgICBpZiAoIW91dHB1dExpbmUuY29udGFpbnMobWF0Y2hTdHJpbmcpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBzdW07Ci0gICAgICAgICAgICBpZiAoIXN1bSB8fCBzdW0gPT09IC0x
KQotICAgICAgICAgICAgICAgIHN1bSA9IDA7Ci0gICAgICAgICAgICByZXR1cm4gc3VtICsgcGFy
c2VJbnQobWF0Y2hbMV0sIDEwKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuZmFpbHVyZUNv
dW50ID0gcmVzdWx0U3VtbWFyaXplcignZmFpbCcsIG51bGwsIHRlc3RTdGVwLnN0YXRlX3N0cmlu
Zyk7Ci0gICAgICAgIHRoaXMuZmxha2V5Q291bnQgPSByZXN1bHRTdW1tYXJpemVyKCJmbGFrZSIs
IG51bGwsIHRlc3RTdGVwLnN0YXRlX3N0cmluZyk7Ci0gICAgICAgIHRoaXMudG90YWxMZWFrQ291
bnQgPSByZXN1bHRTdW1tYXJpemVyKCJ0b3RhbCBsZWFrIiwgbnVsbCwgdGVzdFN0ZXAuc3RhdGVf
c3RyaW5nKTsKLSAgICAgICAgdGhpcy51bmlxdWVMZWFrQ291bnQgPSByZXN1bHRTdW1tYXJpemVy
KCJ1bmlxdWUgbGVhayIsIG51bGwsIHRlc3RTdGVwLnN0YXRlX3N0cmluZyk7Ci0gICAgICAgIHRo
aXMubmV3UGFzc2VzQ291bnQgPSByZXN1bHRTdW1tYXJpemVyKCJuZXcgcGFzcyIsIG51bGwsIHRl
c3RTdGVwLnN0YXRlX3N0cmluZyk7Ci0gICAgICAgIHRoaXMubWlzc2luZ0NvdW50ID0gcmVzdWx0
U3VtbWFyaXplcigibWlzc2luZyIsIG51bGwsIHRlc3RTdGVwLnN0YXRlX3N0cmluZyk7Ci0gICAg
ICAgIHRoaXMuY3Jhc2hDb3VudCA9IHJlc3VsdFN1bW1hcml6ZXIoImNyYXNoIiwgbnVsbCwgdGVz
dFN0ZXAuc3RhdGVfc3RyaW5nKTsKLSAgICAgICAgdGhpcy5pc3N1ZUNvdW50ID0gcmVzdWx0U3Vt
bWFyaXplcigiaXNzdWUiLCBudWxsLCB0ZXN0U3RlcC5zdGF0ZV9zdHJpbmcpOwotCi0gICAgICAg
IGlmICghdGhpcy5mYWlsdXJlQ291bnQgJiYgIXRoaXMuZmxha3lDb3VudCAmJiAhdGhpcy50b3Rh
bExlYWtDb3VudCAmJiAhdGhpcy51bmlxdWVMZWFrQ291bnQgJiYgIXRoaXMubmV3UGFzc2VzQ291
bnQgJiYgIXRoaXMubWlzc2luZ0NvdW50KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIHN0ZXAgZXhp
dGVkIHdpdGggYSBub24temVybyBleGl0IHN0YXR1cywgYnV0IHdlIGRpZG4ndCBmaW5kIGFueSBv
dXRwdXQgYWJvdXQgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdHMuCi0gICAgICAgICAgICAvLyBT
b21ldGhpbmcgbXVzdCBoYXZlIGdvbmUgd3JvbmcgKGUuZy4sIHRpbWVkIG91dCBhbmQgd2FzIGtp
bGxlZCBieSBidWlsZGJvdCkuCi0gICAgICAgICAgICB0aGlzLmVycm9yT2NjdXJyZWQgPSB0cnVl
OwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIGFkZEZ1bGxMYXlvdXRUZXN0UmVzdWx0czogZnVu
Y3Rpb24oZGF0YSkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMubmFtZSA9PT0g
ImxheW91dC10ZXN0Iik7Ci0KLSAgICAgICAgZnVuY3Rpb24gY29sbGVjdFJlc3VsdHMoc3VidHJl
ZSwgcHJlZGljYXRlKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXN1bHRzIG9iamVjdCBp
cyBhIHRyaWU6Ci0gICAgICAgICAgICAvLyBkaXJlY3RvcnkKLSAgICAgICAgICAgIC8vICAgc3Vi
ZGlyZWN0b3J5Ci0gICAgICAgICAgICAvLyAgICAgdGVzdDEuaHRtbAotICAgICAgICAgICAgLy8g
ICAgICAgZXhwZWN0ZWQ6IlBBU1MiCi0gICAgICAgICAgICAvLyAgICAgICBhY3R1YWw6ICJJTUFH
RSIKLSAgICAgICAgICAgIC8vICAgICAgIHJlcG9ydDogIlJFR1JFU1NJT04iCi0gICAgICAgICAg
ICAvLyAgICAgdGVzdDIuaHRtbAotICAgICAgICAgICAgLy8gICAgICAgZXhwZWN0ZWQ6IkZBSUwi
Ci0gICAgICAgICAgICAvLyAgICAgICBhY3R1YWw6IlRFWFQiCi0KLSAgICAgICAgICAgIHZhciBy
ZXN1bHQgPSBbXTsKLSAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBzdWJ0cmVlKSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIHZhbHVlID0gc3VidHJlZVtrZXldOwotICAgICAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHR5cGVvZiB2YWx1ZSA9PT0gIm9iamVjdCIpOwotICAgICAgICAgICAgICAg
IHZhciBpc0luZGl2aWR1YWxUZXN0ID0gdmFsdWUuaGFzT3duUHJvcGVydHkoImFjdHVhbCIpICYm
IHZhbHVlLmhhc093blByb3BlcnR5KCJleHBlY3RlZCIpOwotICAgICAgICAgICAgICAgIGlmIChp
c0luZGl2aWR1YWxUZXN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFBvc3NpYmxlIHZhbHVl
cyBmb3IgYWN0dWFsIGFuZCBleHBlY3RlZCBrZXlzOiBQQVNTLCBGQUlMLCBBVURJTywgSU1BR0Us
IFRFWFQsIElNQUdFK1RFWFQsIFRJTUVPVVQsIENSQVNILCBNSVNTSU5HLgotICAgICAgICAgICAg
ICAgICAgICAvLyBCb3RoIGFjdHVhbCBhbmQgZXhwZWN0ZWQgY2FuIGJlIHNwYWNlIHNlcGFyYXRl
ZCBsaXN0cy4gQWN0dWFsIGNvbnRhaW5zIHR3byB2YWx1ZXMgd2hlbiByZXRyeWluZyBhIGZhaWxl
ZCB0ZXN0Ci0gICAgICAgICAgICAgICAgICAgIC8vIGdpdmVzIGEgZGlmZmVyZW50IHJlc3VsdCAo
cmV0cnlpbmcgbWF5IGJlIGRpc2FibGVkIGluIHRlc3RlciBjb25maWd1cmF0aW9uKS4KLSAgICAg
ICAgICAgICAgICAgICAgLy8gUG9zc2libGUgdmFsdWVzIGZvciByZXBvcnQga2V5ICh3aGVuIHBy
ZXNlbnQpOiBSRUdSRVNTSU9OLCBNSVNTSU5HLCBGTEFLWS4KLQotICAgICAgICAgICAgICAgICAg
ICBpZiAocHJlZGljYXRlKHZhbHVlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0
ZW0gPSB7cGF0aDoga2V5fTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUUgKGJ1
ZyAxMjcxODYpOiBDcmFzaCBsb2cgVVJMIHdpbGwgYmUgaW5jb3JyZWN0IGlmIGNyYXNoIG9ubHkg
aGFwcGVuZWQgb24gcmV0cnkgKGUuZy4gIlRFWFQgQ1JBU0giKS4KLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEl0IHNob3VsZCBwb2ludCB0byByZXRyaWVzIHN1YmRpcmVjdG9yeSwgYnV0IHRo
ZSBpbmZvcm1hdGlvbiBhYm91dCB3aGljaCBhdHRlbXB0IGZhaWxlZCBnZXRzIGxvc3QgaGVyZS4K
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5hY3R1YWwuY29udGFpbnMoIkNSQVNI
IikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jcmFzaCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuYWN0dWFsLmNvbnRhaW5zKCJUSU1FT1VUIikp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS50aW1lb3V0ID0gdHJ1ZTsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUUgKGJ1ZyAxMjcxODYpOiBTaW1pbGFybHksIHdl
IGRvbid0IGhhdmUgYSBnb29kIHdheSB0byBwcmVzZW50IHJlc3VsdHMgZm9yIHNvbWV0aGluZyBs
aWtlICJUSU1FT1VUIFRFWFQiLAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IGV2ZW4g
VUkgd2lzZS4gRm9yIG5vdywgb25seSBzaG93IGEgZGlmZiBsaW5rIGlmIHRoZSBmaXJzdCBhdHRl
bXB0IGhhcyB0aGUgZGlmZi4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5hY3R1
YWwuc3BsaXQoIiAiKVswXS5jb250YWlucygiVEVYVCIpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGl0ZW0uaGFzX2RpZmYgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBGSVhNRSAoYnVnIDEyNzE4Nik6IEl0IGlzIHBhcnRpY3VsYXJseSB1bmZvcnR1bmF0ZSBmb3Ig
aW1hZ2UgZGlmZnMsIGJlY2F1c2Ugd2UgY3VycmVudGx5IG9ubHkgY2hlY2sgaW1hZ2UgcmVzdWx0
cwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gb24gcmV0cnkgKGV4Y2VwdCBmb3IgcmVmdGVz
dHMpLCBzbyBtYW55IHRpbWVzLCB5b3Ugd2lsbCBzZWUgaW1hZ2VzIG9uIGJ1aWxkYm90IHBhZ2Us
IGJ1dCBub3Qgb24gdGhlIGRhc2hib2FyZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBGaW5kIGEgd2F5IHRvIGRpc3BsYXkgZXhwZWN0ZWQgbWlzbWF0Y2ggcmVmdGVzdCBmYWls
dXJlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5hY3R1YWwuc3BsaXQoIiAi
KVswXS5jb250YWlucygiSU1BR0UiKSAmJiB2YWx1ZS5yZWZ0ZXN0X3R5cGUgIT0gIiE9IikKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmhhc19pbWFnZV9kaWZmID0gdHJ1ZTsKLQot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmhhc19zdGRlcnIpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaXRlbS5oYXNfc3RkZXJyID0gdHJ1ZTsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBuZXN0ZWRU
ZXN0cyA9IGNvbGxlY3RSZXN1bHRzKHZhbHVlLCBwcmVkaWNhdGUpOwotICAgICAgICAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gbmVzdGVkVGVzdHMubGVuZ3RoOyBpIDwgZW5kOyAr
K2kpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWRUZXN0c1tpXS5wYXRoID0ga2V5ICsg
Ii8iICsgbmVzdGVkVGVzdHNbaV0ucGF0aDsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
cmVzdWx0LmNvbmNhdChuZXN0ZWRUZXN0cyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAg
dGhpcy5oYXNQcmV0dHlQYXRjaCA9IGRhdGEuaGFzX3ByZXR0eV9wYXRjaDsKLQotICAgICAgICB0
aGlzLnJlZ3Jlc3Npb25zID0gY29sbGVjdFJlc3VsdHMoZGF0YS50ZXN0cywgZnVuY3Rpb24oaW5m
bykgeyByZXR1cm4gaW5mb1sicmVwb3J0Il0gPT09ICJSRUdSRVNTSU9OIiB9KTsKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQoZGF0YS5udW1fcmVncmVzc2lvbnMgPT09IHRoaXMucmVncmVzc2lvbnMu
bGVuZ3RoKTsKLQotICAgICAgICB0aGlzLmZsYWt5VGVzdHMgPSBjb2xsZWN0UmVzdWx0cyhkYXRh
LnRlc3RzLCBmdW5jdGlvbihpbmZvKSB7IHJldHVybiBpbmZvWyJyZXBvcnQiXSA9PT0gIkZMQUtZ
IiB9KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YS5udW1fZmxha3kgPT09IHRoaXMuZmxh
a3lUZXN0cy5sZW5ndGgpOwotCi0gICAgICAgIHRoaXMudGVzdHNXaXRoTWlzc2luZ1Jlc3VsdHMg
PSBjb2xsZWN0UmVzdWx0cyhkYXRhLnRlc3RzLCBmdW5jdGlvbihpbmZvKSB7IHJldHVybiBpbmZv
WyJyZXBvcnQiXSA9PT0gIk1JU1NJTkciIH0pOwotICAgICAgICAvLyBkYXRhLm51bV9taXNzaW5n
IGlzIG5vdCBhbHdheXMgZXF1YWwgdG8gdGhlIHNpemUgb2YgdGVzdHNXaXRoTWlzc2luZ1Jlc3Vs
dHMgYXJyYXksCi0gICAgICAgIC8vIGJlY2F1c2UgYnVpbGRib3QgY291bnRzIHJlZ3Jlc3Npb25z
IHRoYXQgaGFkIG1pc3NpbmcgcGl4ZWwgcmVzdWx0cyBvbiByZXRyeSAoZS5nLiAiVEVYVCBNSVNT
SU5HIikuCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGEubnVtX21pc3NpbmcgPj0gdGhpcy50
ZXN0c1dpdGhNaXNzaW5nUmVzdWx0cy5sZW5ndGgpOwotICAgIH0sCi0KLSAgICBhZGRKYXZhU2Ny
aXB0Q29yZVRlc3RGYWlsdXJlczogZnVuY3Rpb24oZGF0YSkKLSAgICB7Ci0gICAgICAgIHRoaXMu
cmVncmVzc2lvbnMgPSBkYXRhLnN0cmVzc1Rlc3RGYWlsdXJlczsKLSAgICB9LAotfTsKSW5kZXg6
IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMJKHJldmlzaW9uIDI2OTExMSkK
KysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qcwkobm9uZXhpc3RlbnQp
CkBAIC0xLDI2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0LCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotQnVpbGRib3RUZXN0
ZXJRdWV1ZVZpZXcgPSBmdW5jdGlvbihxdWV1ZXMpCi17Ci0gICAgQnVpbGRib3RRdWV1ZVZpZXcu
Y2FsbCh0aGlzLCBxdWV1ZXMpOwotCi0gICAgdGhpcy5yZWxlYXNlUXVldWVzID0gdGhpcy5xdWV1
ZXMuZmlsdGVyKGZ1bmN0aW9uKHF1ZXVlKSB7IHJldHVybiBxdWV1ZS5kZWJ1ZyA9PT0gZmFsc2U7
IH0pOwotICAgIHRoaXMuZGVidWdRdWV1ZXMgPSB0aGlzLnF1ZXVlcy5maWx0ZXIoZnVuY3Rpb24o
cXVldWUpIHsgcmV0dXJuIHF1ZXVlLmRlYnVnID09PSB0cnVlOyB9KTsKLQotICAgIHRoaXMudXBk
YXRlKCk7Ci19OwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxkYm90
VGVzdGVyUXVldWVWaWV3KTsKLQotQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlID0g
ewotICAgIGNvbnN0cnVjdG9yOiBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldywKLSAgICBfX3Byb3Rv
X186IEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSwKLQotICAgIHVwZGF0ZTogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLnVwZGF0ZS5jYWxs
KHRoaXMpOwotCi0gICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotCi0gICAg
ICAgIGZ1bmN0aW9uIGFwcGVuZEJ1aWxkZXJRdWV1ZVN0YXR1cyhxdWV1ZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKHF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb24gJiYgIXF1
ZXVlLmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCkgewotICAgICAgICAgICAgICAgIHRoaXMuX2Fw
cGVuZFVuYXV0aG9yaXplZExpbmVWaWV3KHF1ZXVlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRoaXMuX2FwcGVuZFBlbmRpbmdSZXZpc2lv
bkNvdW50KHF1ZXVlLCB0aGlzLl9sYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uLmJpbmQodGhpcywg
cXVldWUpKTsKLQotICAgICAgICAgICAgdmFyIGFwcGVuZGVkU3RhdHVzID0gZmFsc2U7Ci0KLSAg
ICAgICAgICAgIHZhciBsaW1pdCA9IDI7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHF1ZXVlLml0ZXJhdGlvbnMubGVuZ3RoICYmIGxpbWl0ID4gMDsgKytpKSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIGl0ZXJhdGlvbiA9IHF1ZXVlLml0ZXJhdGlvbnNbaV07Ci0gICAgICAgICAgICAg
ICAgaWYgKCFpdGVyYXRpb24ubG9hZGVkIHx8ICFpdGVyYXRpb24uZmluaXNoZWQpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgLS1saW1pdDsKLQotICAg
ICAgICAgICAgICAgIHZhciB3aWxsSGF2ZUFub3RoZXJTdGF0dXNMaW5lID0gaSArIDEgPCBxdWV1
ZS5pdGVyYXRpb25zLmxlbmd0aCAmJiBsaW1pdCA+IDAgJiYgIWl0ZXJhdGlvbi5zdWNjZXNzZnVs
OyAvLyBUaGlzIGlzIG5vdCAxMDAlIGNvcnJlY3QsIGFzIHRoZSByZW1haW5pbmcgaXRlcmF0aW9u
cyBtYXkgbm90IGJlIGZpbmlzaGVkIG9yIGxvYWRlZCB5ZXQsIGJ1dCBjbG9zZSBlbm91Z2guCi0g
ICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VFbGVtZW50ID0gdGhpcy5yZXZpc2lvbkNvbnRlbnRG
b3JJdGVyYXRpb24oaXRlcmF0aW9uLCAoaXRlcmF0aW9uLnByb2R1Y3RpdmUgJiYgd2lsbEhhdmVB
bm90aGVyU3RhdHVzTGluZSkgPyBpdGVyYXRpb24ucHJldmlvdXNQcm9kdWN0aXZlSXRlcmF0aW9u
IDogbnVsbCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaXRlcmF0aW9uLnN1Y2Nlc3NmdWwpIHsK
LSAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5i
dWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGlu
ZVZpZXcuU3RhdHVzLkdvb2QsICJhbGwgdGVzdHMgcGFzc2VkIiwgdW5kZWZpbmVkLCB1cmwpOwot
ICAgICAgICAgICAgICAgICAgICBsaW1pdCA9IDA7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlm
ICghaXRlcmF0aW9uLnByb2R1Y3RpdmUpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9
IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0
aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmll
dyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkRhbmdlciwgaXRlcmF0aW9u
LnRleHQsIHVuZGVmaW5lZCwgdXJsKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZXJh
dGlvbi5mYWlsZWRUZXN0U3RlcHMubGVuZ3RoID09PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIFNvbWV0aGluZyB3cm9uZyBoYXBwZW5lZCwgYnV0IGl0IHdhcyBub3QgYSB0ZXN0IGZhaWx1
cmUuCi0gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBpdGVyYXRpb24ucXVldWUuYnVpbGRi
b3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAg
ICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1
c0xpbmVWaWV3LlN0YXR1cy5EYW5nZXIsIGl0ZXJhdGlvbi50ZXh0LCB1bmRlZmluZWQsIHVybCk7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChxdWV1ZS5jcmFzaGVzT25seSkgewotICAgICAg
ICAgICAgICAgICAgICAvLyBBIGNyYXNoZXMtb25seSBxdWV1ZSBpcyBhIHF1ZXVlIHdoZXJlIHdl
IGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gY3Jhc2hlcywgZS5nLiBhIEd1YXJkTWFsbG9jIG9yIGFu
IEFTYW4gb25lLgotICAgICAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHksIG9ubHkgbGF5b3V0
IHRlc3RzIGFyZSBzdXBwb3J0ZWQgaW4gc3VjaC4KLSAgICAgICAgICAgICAgICAgICAgdmFyIGxh
eW91dFRlc3RSZXN1bHRzID0gaXRlcmF0aW9uLmxheW91dFRlc3RSZXN1bHRzOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoIWxheW91dFRlc3RSZXN1bHRzKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAvLyBUZXN0cyBkaWQgbm90IHJ1bi4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1
cmwgPSBpdGVyYXRpb24ucXVldWUuYnVpbGRib3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKGl0
ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1
c0xpbmVWaWV3KG1lc3NhZ2VFbGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuRGFuZ2VyLCBp
dGVyYXRpb24udGV4dCwgdW5kZWZpbmVkLCB1cmwpOwotICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGxheW91dFRlc3RSZXN1bHRzLnRvb01hbnlGYWlsdXJlcykgewotICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVu
dCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkJhZCwgImZhaWx1cmUgbGltaXQgZXhjZWVkZWQiLCB1
bmRlZmluZWQsIGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5sYXlvdXRUZXN0UmVzdWx0c1VSTEZv
ckl0ZXJhdGlvbihpdGVyYXRpb24pKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3Bv
dmVyVHJhY2tlcihzdGF0dXMuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92
ZXJGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnMuYmluZCh0aGlzKSwgaXRlcmF0aW9uKTsKLSAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXlvdXRUZXN0UmVzdWx0cy5lcnJvck9jY3VycmVk
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gaXRlcmF0aW9uLnF1ZXVlLmJ1
aWxkYm90LmJ1aWxkUGFnZVVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pOwotICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVu
dCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkRhbmdlciwgaXRlcmF0aW9uLnRleHQsIHVuZGVmaW5l
ZCwgdXJsKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghbGF5b3V0VGVzdFJlc3Vs
dHMuY3Jhc2hDb3VudCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJh
dGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXco
bWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5Hb29kLCAibm8gY3Jhc2hlcyBm
b3VuZCIsIHVuZGVmaW5lZCwgdXJsKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ID0g
MDsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xp
bmVWaWV3LlN0YXR1cy5CYWQsIGxheW91dFRlc3RSZXN1bHRzLmNyYXNoQ291bnQgPT09IDEgPyAi
Y3Jhc2ggZm91bmQiIDogImNyYXNoZXMgZm91bmQiLCBsYXlvdXRUZXN0UmVzdWx0cy5jcmFzaENv
dW50LCBpdGVyYXRpb24ucXVldWUuYnVpbGRib3QubGF5b3V0VGVzdFJlc3VsdHNVUkxGb3JJdGVy
YXRpb24oaXRlcmF0aW9uKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgUG9wb3ZlclRy
YWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9y
TGF5b3V0VGVzdFJlZ3Jlc3Npb25zLmJpbmQodGhpcyksIGl0ZXJhdGlvbik7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZXJhdGlvbi5mYWlsZWRU
ZXN0U3RlcHMubGVuZ3RoID09PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBmYWlsZWRT
dGVwID0gaXRlcmF0aW9uLmZhaWxlZFRlc3RTdGVwc1swXTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGZhaWxlZFN0ZXAubmFtZSA9PT0gImxheW91dC10ZXN0IikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwg
U3RhdHVzTGluZVZpZXcuU3RhdHVzLkJhZCwgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRp
b24oZmFpbGVkU3RlcCksIGZhaWxlZFN0ZXAudG9vTWFueUZhaWx1cmVzID8gZmFpbGVkU3RlcC5m
YWlsdXJlQ291bnQgKyAiXHVmZjBiIiA6IGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50LCBpdGVyYXRp
b24ucXVldWUuYnVpbGRib3QubGF5b3V0VGVzdFJlc3VsdHNVUkxGb3JJdGVyYXRpb24oaXRlcmF0
aW9uKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVz
LnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yTGF5b3V0VGVzdFJl
Z3Jlc3Npb25zLmJpbmQodGhpcyksIGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoLyg/PS4qdGVzdCkoPz0uKmpzYykvLnRlc3QoZmFpbGVkU3RlcC5uYW1lKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyht
ZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkJhZCwgdGhpcy5fdGVzdFN0ZXBG
YWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3RlcCksIGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50LCBp
dGVyYXRpb24ucXVldWUuYnVpbGRib3QuamF2YVNjcmlwdENvcmVUZXN0U3RkaW9VcmxGb3JJdGVy
YXRpb24oaXRlcmF0aW9uLCBmYWlsZWRTdGVwLm5hbWUpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG5ldyBQb3BvdmVyVHJhY2tlcihzdGF0dXMuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5f
cHJlc2VudFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucy5iaW5kKHRoaXMs
IGZhaWxlZFN0ZXAubmFtZSksIGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoZmFpbGVkU3RlcC5uYW1lID09PSAiZGFzaGJvYXJkLXRlc3RzIikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxl
bWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkJhZCwgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVz
Y3JpcHRpb24oZmFpbGVkU3RlcCksIHVuZGVmaW5lZCwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90
LmRhc2hib2FyZFRlc3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVF
bGVtZW50LCB0aGlzLl9wcmVzZW50UG9wb3ZlckZvckdlbmVyaWNUZXN0RmFpbHVyZXMuYmluZCh0
aGlzKSwgaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVs
ZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQsIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURl
c2NyaXB0aW9uKGZhaWxlZFN0ZXApLCBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCA/IGZhaWxlZFN0
ZXAuZmFpbHVyZUNvdW50IDogdW5kZWZpbmVkLCBmYWlsZWRTdGVwLlVSTCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVsZW1l
bnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yR2VuZXJpY1Rlc3RGYWlsdXJlcy5iaW5kKHRoaXMp
LCBpdGVyYXRpb24pOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWls
ZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIGZhaWx1cmVEZXNjcmlwdGlvbnMgPSBpdGVyYXRpb24uZmFpbGVkVGVzdFN0ZXBz
Lm1hcChmdW5jdGlvbihmYWlsZWRTdGVwKSB7IHJldHVybiB0aGlzLl90ZXN0U3RlcEZhaWx1cmVE
ZXNjcmlwdGlvbldpdGhDb3VudChmYWlsZWRTdGVwKSB9LCB0aGlzKTsKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3Rh
dHVzTGluZVZpZXcuU3RhdHVzLkJhZCwgZmFpbHVyZURlc2NyaXB0aW9ucy5qb2luKCIsICIpLCB1
bmRlZmluZWQsIHVybCk7Ci0gICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihz
dGF0dXMuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92ZXJGb3JHZW5lcmlj
VGVzdEZhaWx1cmVzLmJpbmQodGhpcyksIGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHN0YXR1cy5lbGVtZW50
KTsKLSAgICAgICAgICAgICAgICBhcHBlbmRlZFN0YXR1cyA9IHRydWU7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGlmICghYXBwZW5kZWRTdGF0dXMpIHsKLSAgICAgICAgICAgICAgICB2
YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KCJ1bmtub3duIiwgU3RhdHVzTGluZVZpZXcu
U3RhdHVzLk5ldXRyYWwsICJsYXN0IHBhc3NpbmcgYnVpbGQiKTsKLSAgICAgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5hcHBlbmRCdWlsZFN0eWxlLmNhbGwodGhpcywgdGhp
cy5yZWxlYXNlUXVldWVzLCAiUmVsZWFzZSIsIGFwcGVuZEJ1aWxkZXJRdWV1ZVN0YXR1cyk7Ci0g
ICAgICAgIHRoaXMuYXBwZW5kQnVpbGRTdHlsZS5jYWxsKHRoaXMsIHRoaXMuZGVidWdRdWV1ZXMs
ICJEZWJ1ZyIsIGFwcGVuZEJ1aWxkZXJRdWV1ZVN0YXR1cyk7Ci0gICAgfSwKLQotICAgIF9wb3Bv
dmVyQ29udGVudEZvckxheW91dFRlc3RSZWdyZXNzaW9uczogZnVuY3Rpb24oaXRlcmF0aW9uKQot
ICAgIHsKLSAgICAgICAgdmFyIGhhc1Rlc3RIaXN0b3J5ID0gdHlwZW9mIHRlc3RIaXN0b3J5ICE9
PSAidW5kZWZpbmVkIjsKLQotICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwotICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3VsdHMt
cG9wb3ZlciI7Ci0KLSAgICAgICAgdGhpcy5fYWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3Zlcihp
dGVyYXRpb24sIGNvbnRlbnQsICJsYXlvdXQgdGVzdCBmYWlsdXJlcyIpOwotICAgICAgICB0aGlz
Ll9hZGREaXZpZGVyVG9Qb3BvdmVyKGNvbnRlbnQpOwotCi0gICAgICAgIGlmICghaXRlcmF0aW9u
LmxheW91dFRlc3RSZXN1bHRzLnJlZ3Jlc3Npb25zKSB7Ci0gICAgICAgICAgICB2YXIgbWVzc2Fn
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgbWVzc2FnZS5j
bGFzc05hbWUgPSAibG9hZGluZy1mYWlsdXJlIjsKLSAgICAgICAgICAgIG1lc3NhZ2UudGV4dENv
bnRlbnQgPSAiVGVzdCByZXN1bHRzIGNvdWxkblx1MjAxOXQgYmUgbG9hZGVkIjsKLSAgICAgICAg
ICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQobWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gY29u
dGVudDsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGFkZEZhaWx1cmVJbmZvTGluayhy
b3dFbGVtZW50LCBjbGFzc05hbWUsIHRleHQsIHVybCkKLSAgICAgICAgewotICAgICAgICAgICAg
dmFyIGxpbmtFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgICAgICAg
ICAgbGlua0VsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lOwotICAgICAgICAgICAgbGlua0Vs
ZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwotICAgICAgICAgICAgbGlua0VsZW1lbnQuaHJlZiA9
IHVybDsKLSAgICAgICAgICAgIGxpbmtFbGVtZW50LnRhcmdldCA9ICJfYmxhbmsiOwotICAgICAg
ICAgICAgcm93RWxlbWVudC5hcHBlbmRDaGlsZChsaW5rRWxlbWVudCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBmdW5jdGlvbiBhZGRGYWlsdXJlSW5mb1RleHQocm93RWxlbWVudCwgY2xhc3NOYW1l
LCB0ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgc3BhbkVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgICAgICBzcGFuRWxlbWVudC5jbGFzc05h
bWUgPSBjbGFzc05hbWU7Ci0gICAgICAgICAgICBzcGFuRWxlbWVudC50ZXh0Q29udGVudCA9IHRl
eHQ7Ci0gICAgICAgICAgICByb3dFbGVtZW50LmFwcGVuZENoaWxkKHNwYW5FbGVtZW50KTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHZhciBzb3J0ZWRSZWdyZXNzaW9ucyA9IGl0ZXJhdGlvbi5sYXlv
dXRUZXN0UmVzdWx0cy5yZWdyZXNzaW9ucy5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSwgYikgeyBy
ZXR1cm4gKGEucGF0aCA9PT0gYi5wYXRoKSA/IDAgOiAoYS5wYXRoID4gYi5wYXRoKSA/IDEgOiAt
MTsgfSk7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGVuZCA9IHNvcnRlZFJlZ3Jlc3Npb25z
Lmxlbmd0aDsgaSAhPSBlbmQ7ICsraSkgewotICAgICAgICAgICAgdmFyIHRlc3QgPSBzb3J0ZWRS
ZWdyZXNzaW9uc1tpXTsKLQotICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbi5xdWV1ZS5jcmFzaGVz
T25seSAmJiAhdGVzdC5jcmFzaCAmJiAhaXRlcmF0aW9uLmxheW91dFRlc3RSZXN1bHRzLnRvb01h
bnlGYWlsdXJlcykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgdmFy
IHJvd0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLQotICAgICAgICAg
ICAgdmFyIHRlc3RQYXRoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK
LSAgICAgICAgICAgIHRlc3RQYXRoRWxlbWVudC5jbGFzc05hbWUgPSAidGVzdC1wYXRoIjsKLSAg
ICAgICAgICAgIHRlc3RQYXRoRWxlbWVudC50ZXh0Q29udGVudCA9IHRlc3QucGF0aDsKLSAgICAg
ICAgICAgIHJvd0VsZW1lbnQuYXBwZW5kQ2hpbGQodGVzdFBhdGhFbGVtZW50KTsKLQotICAgICAg
ICAgICAgaWYgKHRlc3QuY3Jhc2gpCi0gICAgICAgICAgICAgICAgYWRkRmFpbHVyZUluZm9MaW5r
KHJvd0VsZW1lbnQsICJmYWlsdXJlLWtpbmQtaW5kaWNhdG9yIiwgImNyYXNoIiwgaXRlcmF0aW9u
LnF1ZXVlLmJ1aWxkYm90LmxheW91dFRlc3RDcmFzaExvZ1VSTEZvckl0ZXJhdGlvbihpdGVyYXRp
b24sIHRlc3QucGF0aCkpOwotCi0gICAgICAgICAgICBpZiAodGVzdC50aW1lb3V0KQotICAgICAg
ICAgICAgICAgIGFkZEZhaWx1cmVJbmZvVGV4dChyb3dFbGVtZW50LCAiZmFpbHVyZS1raW5kLWlu
ZGljYXRvciIsICJ0aW1lb3V0Iik7Ci0KLSAgICAgICAgICAgIGlmICh0ZXN0Lmhhc19kaWZmKSB7
Ci0gICAgICAgICAgICAgICAgYWRkRmFpbHVyZUluZm9MaW5rKHJvd0VsZW1lbnQsICJhZGRpdGlv
bmFsLWxpbmsiLCAiZGlmZiIsIGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5sYXlvdXRUZXN0RGlm
ZlVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24sIHRlc3QucGF0aCkpOwotCi0gICAgICAgICAgICAg
ICAgaWYgKGl0ZXJhdGlvbi5oYXNQcmV0dHlQYXRjaCkKLSAgICAgICAgICAgICAgICAgICAgYWRk
RmFpbHVyZUluZm9MaW5rKHJvd0VsZW1lbnQsICJhZGRpdGlvbmFsLWxpbmsiLCAicHJldHR5XHhh
MGRpZmYiLCBpdGVyYXRpb24ucXVldWUuYnVpbGRib3QubGF5b3V0VGVzdFByZXR0eURpZmZVUkxG
b3JJdGVyYXRpb24oaXRlcmF0aW9uLCB0ZXN0LnBhdGgpKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKHRlc3QuaGFzX2ltYWdlX2RpZmYpIHsKLSAgICAgICAgICAgICAgICBhZGRG
YWlsdXJlSW5mb0xpbmsocm93RWxlbWVudCwgImFkZGl0aW9uYWwtbGluayIsICJpbWFnZXMiLCBp
dGVyYXRpb24ucXVldWUuYnVpbGRib3QubGF5b3V0VGVzdEltYWdlc1VSTEZvckl0ZXJhdGlvbihp
dGVyYXRpb24sIHRlc3QucGF0aCkpOwotICAgICAgICAgICAgICAgIGFkZEZhaWx1cmVJbmZvTGlu
ayhyb3dFbGVtZW50LCAiYWRkaXRpb25hbC1saW5rIiwgImltYWdlXHhhMGRpZmYiLCBpdGVyYXRp
b24ucXVldWUuYnVpbGRib3QubGF5b3V0VGVzdEltYWdlRGlmZlVSTEZvckl0ZXJhdGlvbihpdGVy
YXRpb24sIHRlc3QucGF0aCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAodGVz
dC5oYXNfc3RkZXJyKQotICAgICAgICAgICAgICAgIGFkZEZhaWx1cmVJbmZvTGluayhyb3dFbGVt
ZW50LCAiYWRkaXRpb25hbC1saW5rIiwgInN0ZGVyciIsIGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJv
dC5sYXlvdXRUZXN0U3RkZXJyVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbiwgdGVzdC5wYXRoKSk7
Ci0KLSAgICAgICAgICAgIGlmIChoYXNUZXN0SGlzdG9yeSkKLSAgICAgICAgICAgICAgICBhZGRG
YWlsdXJlSW5mb0xpbmsocm93RWxlbWVudCwgInRlc3QtaGlzdG9yeS1saW5rIiwgImhpc3Rvcnki
LCB0ZXN0SGlzdG9yeS5oaXN0b3J5UGFnZVVSTEZvclRlc3QodGVzdC5wYXRoKSk7Ci0KLSAgICAg
ICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQocm93RWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBjb250ZW50Lm9uY29weSA9IHRoaXMuX29uUG9wb3ZlckNvcHk7Ci0gICAgICAgIHJldHVy
biBjb250ZW50OwotICAgIH0sCi0KLSAgICBfcHJlc2VudFBvcG92ZXJGb3JMYXlvdXRUZXN0UmVn
cmVzc2lvbnM6IGZ1bmN0aW9uKGVsZW1lbnQsIHBvcG92ZXIsIGl0ZXJhdGlvbikKLSAgICB7Ci0g
ICAgICAgIGlmIChpdGVyYXRpb24ubGF5b3V0VGVzdFJlc3VsdHMucmVncmVzc2lvbnMpCi0gICAg
ICAgICAgICB2YXIgY29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50Rm9yTGF5b3V0VGVzdFJl
Z3Jlc3Npb25zKGl0ZXJhdGlvbik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgdmFyIGNv
bnRlbnQgPSB0aGlzLl9jcmVhdGVMb2FkaW5nSW5kaWNhdG9yKGl0ZXJhdGlvbiwgImxheW91dCB0
ZXN0IGZhaWx1cmVzIik7Ci0KLSAgICAgICAgICAgIGl0ZXJhdGlvbi5sb2FkTGF5b3V0VGVzdFJl
c3VsdHMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gdGhp
cy5fcG9wb3ZlckNvbnRlbnRGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnMoaXRlcmF0aW9uKTsKLSAg
ICAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIHJlY3QgPSBE
YXNoYm9hcmQuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QoZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKSk7Ci0gICAgICAgIHBvcG92ZXIuY29udGVudCA9IGNvbnRlbnQ7Ci0gICAgICAgIHBv
cG92ZXIucHJlc2VudChyZWN0LCBbRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9ZLCBEYXNoYm9hcmQu
UmVjdEVkZ2UuTUFYX1ksIERhc2hib2FyZC5SZWN0RWRnZS5NQVhfWCwgRGFzaGJvYXJkLlJlY3RF
ZGdlLk1JTl9YXSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0KLSAgICBfcHJlc2Vu
dFBvcG92ZXJGb3JHZW5lcmljVGVzdEZhaWx1cmVzOiBmdW5jdGlvbihlbGVtZW50LCBwb3BvdmVy
LCBpdGVyYXRpb24pCi0gICAgewotICAgICAgICBmdW5jdGlvbiBhZGRSZXN1bHRLaW5kKG1lc3Nh
Z2UsIHVybCkgewotICAgICAgICAgICAgdmFyIGxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJhIik7Ci0gICAgICAgICAgICBsaW5lLmNsYXNzTmFtZSA9ICJmYWlsaW5nLXRlc3Qta2luZC1z
dW1tYXJ5IjsKLSAgICAgICAgICAgIGxpbmUuaHJlZiA9IHVybDsKLSAgICAgICAgICAgIGxpbmUu
dGV4dENvbnRlbnQgPSBtZXNzYWdlOwotICAgICAgICAgICAgbGluZS50YXJnZXQgPSAiX2JsYW5r
IjsKLSAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQobGluZSk7ICAgICAgICAgICAgCi0g
ICAgICAgIH0KLQotICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwotICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3VsdHMtcG9wb3Zl
ciI7Ci0KLSAgICAgICAgdGhpcy5fYWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3ZlcihpdGVyYXRp
b24sIGNvbnRlbnQpOwotICAgICAgICB0aGlzLl9hZGREaXZpZGVyVG9Qb3BvdmVyKGNvbnRlbnQp
OwotCi0gICAgICAgIGl0ZXJhdGlvbi5mYWlsZWRUZXN0U3RlcHMuZm9yRWFjaChmdW5jdGlvbihm
YWlsZWRTdGVwKSB7Ci0gICAgICAgICAgICBpZiAoZmFpbGVkU3RlcC5uYW1lID09PSAibGF5b3V0
LXRlc3QiKQotICAgICAgICAgICAgICAgIGFkZFJlc3VsdEtpbmQodGhpcy5fdGVzdFN0ZXBGYWls
dXJlRGVzY3JpcHRpb25XaXRoQ291bnQoZmFpbGVkU3RlcCksIGl0ZXJhdGlvbi5xdWV1ZS5idWls
ZGJvdC5sYXlvdXRUZXN0UmVzdWx0c1VSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pKTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKGZhaWxlZFN0ZXAubmFtZSA9PT0gImRhc2hib2FyZC10ZXN0cyIpCi0g
ICAgICAgICAgICAgICAgYWRkUmVzdWx0S2luZCh0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlw
dGlvbihmYWlsZWRTdGVwKSwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmRhc2hib2FyZFRlc3RS
ZXN1bHRzVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGFkZFJlc3VsdEtpbmQodGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRp
b25XaXRoQ291bnQoZmFpbGVkU3RlcCksIGZhaWxlZFN0ZXAuVVJMKTsKLSAgICAgICAgfSwgdGhp
cyk7Ci0KLSAgICAgICAgdmFyIHJlY3QgPSBEYXNoYm9hcmQuUmVjdC5yZWN0RnJvbUNsaWVudFJl
Y3QoZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7Ci0gICAgICAgIHBvcG92ZXIuY29u
dGVudCA9IGNvbnRlbnQ7Ci0gICAgICAgIHBvcG92ZXIucHJlc2VudChyZWN0LCBbRGFzaGJvYXJk
LlJlY3RFZGdlLk1JTl9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1ksIERhc2hib2FyZC5SZWN0
RWRnZS5NQVhfWCwgRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9YXSk7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLX07CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvRGFzaGJvYXJkLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9EYXNoYm9hcmQuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRv
b2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy9EYXNoYm9hcmQuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw2MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotRGFzaGJvYXJkID0gewotICAgIFBsYXRmb3JtOiB7Ci0gICAgICAgIG1hY09T
QmlnU3VyOiB7IG5hbWU6ICJtYWNvcy1iaWdzdXIiLCByZWFkYWJsZU5hbWU6ICJtYWNPUyBCaWcg
U3VyIiwgb3JkZXI6IDEgfSwKLSAgICAgICAgbWFjT1NDYXRhbGluYTogeyBuYW1lOiAibWFjb3Mt
Y2F0YWxpbmEiLCByZWFkYWJsZU5hbWU6ICJtYWNPUyBDYXRhbGluYSIsIG9yZGVyOiAyIH0sCi0g
ICAgICAgIG1hY09TTW9qYXZlOiB7IG5hbWU6ICJtYWNvcy1tb2phdmUiLCByZWFkYWJsZU5hbWU6
ICJtYWNPUyBNb2phdmUiLCBvcmRlcjogMyB9LAotICAgICAgICBtYWNPU0hpZ2hTaWVycmE6IHsg
bmFtZTogIm1hY29zLWhpZ2hzaWVycmEiLCByZWFkYWJsZU5hbWU6ICJtYWNPUyBIaWdoIFNpZXJy
YSIsIG9yZGVyOiA0IH0sCi0gICAgICAgIGlPUzE0U2ltdWxhdG9yOiB7IG5hbWU6ICJpb3Mtc2lt
dWxhdG9yLTE0IiwgcmVhZGFibGVOYW1lOiAiaU9TIDE0IFNpbXVsYXRvciIsIG9yZGVyOiAyMCB9
LAotICAgICAgICBpT1MxNERldmljZTogeyBuYW1lOiAiaW9zLTE0IiwgcmVhZGFibGVOYW1lOiAi
aU9TIDE0Iiwgb3JkZXI6IDI1IH0sCi0gICAgICAgIHR2T1MxNFNpbXVsYXRvcjogeyBuYW1lOiAi
dHZvcy1zaW11bGF0b3ItMTQiLCByZWFkYWJsZU5hbWU6ICJUdk9TIFNpbXVsYXRvciAxNCIsIG9y
ZGVyOiAyNiB9LAotICAgICAgICB0dk9TMTREZXZpY2U6IHsgbmFtZTogInR2b3MtMTQiLCByZWFk
YWJsZU5hbWU6ICJUdk9TIDE0Iiwgb3JkZXI6IDI3IH0sCi0gICAgICAgIHdhdGNoT1M3U2ltdWxh
dG9yOiB7IG5hbWU6ICJ3YXRjaG9zLXNpbXVsYXRvci03IiwgcmVhZGFibGVOYW1lOiAiV2F0Y2hP
UyBTaW11bGF0b3IgNyIsIG9yZGVyOiAyOCB9LAotICAgICAgICB3YXRjaE9TN0RldmljZTogeyBu
YW1lOiAid2F0Y2hvcy03IiwgcmVhZGFibGVOYW1lOiAiV2F0Y2hPUyA3Iiwgb3JkZXI6IDI5IH0s
Ci0gICAgICAgIFdpbmRvd3MxMDogeyBuYW1lOiAid2luZG93cy0xMCIsIHJlYWRhYmxlTmFtZTog
IldpbmRvd3MgMTAiLCBvcmRlcjogMzAgfSwKLSAgICAgICAgV2luQ2Fpcm86IHsgbmFtZTogIndp
bmNhaXJvLXdpbmRvd3MtMTAiLCByZWFkYWJsZU5hbWU6ICJXaW5DYWlybyIsIG9yZGVyOiA1MCB9
LAotICAgICAgICBMaW51eFdQRTogeyBuYW1lIDogImxpbnV4LXdwZSIsIHJlYWRhYmxlTmFtZTog
IkxpbnV4IFdQRSIsIG9yZGVyOiA5MCB9LAotICAgICAgICBMaW51eEdUSzogeyBuYW1lIDogImxp
bnV4LWd0ayIsIHJlYWRhYmxlTmFtZTogIkxpbnV4IEdUSyIsIG9yZGVyOiA5MSB9LAotICAgICAg
ICBMaW51eEpTQ09ubHk6IHsgbmFtZSA6ICJsaW51eC1qc2Nvbmx5IiwgcmVhZGFibGVOYW1lOiAi
TGludXggSlNDT25seSIsIG9yZGVyOiA5MiB9LAotICAgIH0sCi0gICAgQnJhbmNoOiB7fSwKLSAg
ICBSZXBvc2l0b3J5OiB7Ci0gICAgICAgIE9wZW5Tb3VyY2U6IHsgbmFtZTogIm9wZW5Tb3VyY2Ui
LCBpc1NWTjogdHJ1ZSwgb3JkZXI6IDAgfSwKLSAgICB9LAotICAgIGdldCBzb3J0ZWRQbGF0Zm9y
bXMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9zb3J0ZWRQbGF0Zm9ybXMpCi0gICAgICAg
ICAgICB0aGlzLl9zb3J0ZWRQbGF0Zm9ybXMgPSBzb3J0RGljdGlvbmFyaWVzQnlPcmRlcihEYXNo
Ym9hcmQuUGxhdGZvcm0pOwotICAgICAgICByZXR1cm4gdGhpcy5fc29ydGVkUGxhdGZvcm1zOwot
ICAgIH0sCi0gICAgZ2V0IHNvcnRlZFJlcG9zaXRvcmllcygpCi0gICAgewotICAgICAgICBpZiAo
IXRoaXMuX3NvcnRlZFJlcG9zaXRvcmllcykKLSAgICAgICAgICAgIHRoaXMuX3NvcnRlZFJlcG9z
aXRvcmllcyA9IHNvcnREaWN0aW9uYXJpZXNCeU9yZGVyKERhc2hib2FyZC5SZXBvc2l0b3J5KTsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRlZFJlcG9zaXRvcmllczsKLSAgICB9LAotfTsKClBy
b3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9EYXNoYm9hcmQuanMKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwot
dGV4dC9wbGFpbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9D
SVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvR2VvbWV0cnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0dlb21ldHJ5Lmpz
CShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvR2VvbWV0cnkuanMJKG5vbmV4aXN0
ZW50KQpAQCAtMSwyMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLURhc2hib2FyZC5Qb2ludCA9IGZ1
bmN0aW9uKHgsIHkpCi17Ci0gICAgdGhpcy54ID0geCB8fCAwOwotICAgIHRoaXMueSA9IHkgfHwg
MDsKLX07Ci0KLURhc2hib2FyZC5Qb2ludC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IERhc2hib2FyZC5Qb2ludCwKLQotICAgIHRvU3RyaW5nIDogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuICJEYXNoYm9hcmQuUG9pbnRbIiArIHRoaXMueCArICIsIiArIHRoaXMueSAr
ICJdIjsKLSAgICB9LAotCi0gICAgY29weTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIG5ldyBEYXNoYm9hcmQuUG9pbnQodGhpcy54LCB0aGlzLnkpOwotICAgIH0sCi0KLSAgICBl
cXVhbHM6IGZ1bmN0aW9uKGFub3RoZXJQb2ludCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAodGhp
cy54ID09PSBhbm90aGVyUG9pbnQueCAmJiB0aGlzLnkgPT09IGFub3RoZXJQb2ludC55KTsKLSAg
ICB9Ci19OwotCi1EYXNoYm9hcmQuU2l6ZSA9IGZ1bmN0aW9uKHdpZHRoLCBoZWlnaHQpCi17Ci0g
ICAgdGhpcy53aWR0aCA9IHdpZHRoIHx8IDA7Ci0gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQgfHwg
MDsKLX07Ci0KLURhc2hib2FyZC5TaXplLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
RGFzaGJvYXJkLlNpemUsCi0KLSAgICB0b1N0cmluZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuICJEYXNoYm9hcmQuU2l6ZVsiICsgdGhpcy53aWR0aCArICIsIiArIHRoaXMuaGVp
Z2h0ICsgIl0iOwotICAgIH0sCi0KLSAgICBjb3B5OiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICByZXR1cm4gbmV3IERhc2hib2FyZC5TaXplKHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0KTsKLSAg
ICB9LAotCi0gICAgZXF1YWxzOiBmdW5jdGlvbihhbm90aGVyU2l6ZSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiAodGhpcy53aWR0aCA9PT0gYW5vdGhlclNpemUud2lkdGggJiYgdGhpcy5oZWlnaHQg
PT09IGFub3RoZXJTaXplLmhlaWdodCk7Ci0gICAgfQotfTsKLQotRGFzaGJvYXJkLlNpemUuWkVS
T19TSVpFID0gbmV3IERhc2hib2FyZC5TaXplKDAsIDApOwotCi0KLURhc2hib2FyZC5SZWN0ID0g
ZnVuY3Rpb24oeCwgeSwgd2lkdGgsIGhlaWdodCkKLXsKLSAgICB0aGlzLm9yaWdpbiA9IG5ldyBE
YXNoYm9hcmQuUG9pbnQoeCB8fCAwLCB5IHx8IDApOwotICAgIHRoaXMuc2l6ZSA9IG5ldyBEYXNo
Ym9hcmQuU2l6ZSh3aWR0aCB8fCAwLCBoZWlnaHQgfHwgMCk7Ci19OwotCi1EYXNoYm9hcmQuUmVj
dC5yZWN0RnJvbUNsaWVudFJlY3QgPSBmdW5jdGlvbihjbGllbnRSZWN0KQotewotICAgIHJldHVy
biBuZXcgRGFzaGJvYXJkLlJlY3QoY2xpZW50UmVjdC5sZWZ0LCBjbGllbnRSZWN0LnRvcCwgY2xp
ZW50UmVjdC53aWR0aCwgY2xpZW50UmVjdC5oZWlnaHQpOwotfTsKLQotRGFzaGJvYXJkLlJlY3Qu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBEYXNoYm9hcmQuUmVjdCwKLQotICAgIHRv
U3RyaW5nOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gIkRhc2hib2FyZC5SZWN0
WyIgKyBbdGhpcy5vcmlnaW4ueCwgdGhpcy5vcmlnaW4ueSwgdGhpcy5zaXplLndpZHRoLCB0aGlz
LnNpemUuaGVpZ2h0XS5qb2luKCIsICIpICsgIl0iOwotICAgIH0sCi0KLSAgICBjb3B5OiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IERhc2hib2FyZC5SZWN0KHRoaXMub3Jp
Z2luLngsIHRoaXMub3JpZ2luLnksIHRoaXMuc2l6ZS53aWR0aCwgdGhpcy5zaXplLmhlaWdodCk7
Ci0gICAgfSwKLQotICAgIGVxdWFsczogZnVuY3Rpb24oYW5vdGhlclJlY3QpCi0gICAgewotICAg
ICAgICByZXR1cm4gKHRoaXMub3JpZ2luLmVxdWFscyhhbm90aGVyUmVjdC5vcmlnaW4pICYmIHRo
aXMuc2l6ZS5lcXVhbHMoYW5vdGhlclJlY3Quc2l6ZSkpOwotICAgIH0sCi0KLSAgICBpbnNldDog
ZnVuY3Rpb24oaW5zZXRzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBEYXNoYm9hcmQuUmVj
dCgKLSAgICAgICAgICAgIHRoaXMub3JpZ2luLnggKyBpbnNldHMubGVmdCwKLSAgICAgICAgICAg
IHRoaXMub3JpZ2luLnkgKyBpbnNldHMudG9wLAotICAgICAgICAgICAgdGhpcy5zaXplLndpZHRo
IC0gaW5zZXRzLmxlZnQgLSBpbnNldHMucmlnaHQsCi0gICAgICAgICAgICB0aGlzLnNpemUuaGVp
Z2h0IC0gaW5zZXRzLnRvcCAtIGluc2V0cy5ib3R0b20KLSAgICAgICAgKTsKLSAgICB9LAotCi0g
ICAgcGFkOiBmdW5jdGlvbihwYWRkaW5nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBEYXNo
Ym9hcmQuUmVjdCgKLSAgICAgICAgICAgIHRoaXMub3JpZ2luLnggLSBwYWRkaW5nLAotICAgICAg
ICAgICAgdGhpcy5vcmlnaW4ueSAtIHBhZGRpbmcsCi0gICAgICAgICAgICB0aGlzLnNpemUud2lk
dGggKyBwYWRkaW5nICogMiwKLSAgICAgICAgICAgIHRoaXMuc2l6ZS5oZWlnaHQgKyBwYWRkaW5n
ICogMgotICAgICAgICApOwotICAgIH0sCi0KLSAgICBtaW5YOiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5vcmlnaW4ueDsKLSAgICB9LAotCi0gICAgbWluWTogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMub3JpZ2luLnk7Ci0gICAgfSwKLQotICAg
IG1pZFg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLm9yaWdpbi54ICsg
KHRoaXMuc2l6ZS53aWR0aCAvIDIpOwotICAgIH0sCi0KLSAgICBtaWRZOiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICByZXR1cm4gdGhpcy5vcmlnaW4ueSArICh0aGlzLnNpemUuaGVpZ2h0IC8g
Mik7Ci0gICAgfSwKLQotICAgIG1heFg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLm9yaWdpbi54ICsgdGhpcy5zaXplLndpZHRoOwotICAgIH0sCi0KLSAgICBtYXhZOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5vcmlnaW4ueSArIHRoaXMuc2l6
ZS5oZWlnaHQ7Ci0gICAgfSwKLQotICAgIGludGVyc2VjdGlvbldpdGhSZWN0OiBmdW5jdGlvbihy
ZWN0KQotICAgIHsKLSAgICAgICAgdmFyIHgxID0gTWF0aC5tYXgodGhpcy5taW5YKCksIHJlY3Qu
bWluWCgpKTsKLSAgICAgICAgdmFyIHgyID0gTWF0aC5taW4odGhpcy5tYXhYKCksIHJlY3QubWF4
WCgpKTsKLSAgICAgICAgaWYgKHgxID4geDIpCi0gICAgICAgICAgICByZXR1cm4gRGFzaGJvYXJk
LlJlY3QuWkVST19SRUNUOwotICAgICAgICB2YXIgaW50ZXJzZWN0aW9uID0gbmV3IERhc2hib2Fy
ZC5SZWN0OwotICAgICAgICBpbnRlcnNlY3Rpb24ub3JpZ2luLnggPSB4MTsKLSAgICAgICAgaW50
ZXJzZWN0aW9uLnNpemUud2lkdGggPSB4MiAtIHgxOwotICAgICAgICB2YXIgeTEgPSBNYXRoLm1h
eCh0aGlzLm1pblkoKSwgcmVjdC5taW5ZKCkpOwotICAgICAgICB2YXIgeTIgPSBNYXRoLm1pbih0
aGlzLm1heFkoKSwgcmVjdC5tYXhZKCkpOwotICAgICAgICBpZiAoeTEgPiB5MikKLSAgICAgICAg
ICAgIHJldHVybiBEYXNoYm9hcmQuUmVjdC5aRVJPX1JFQ1Q7Ci0gICAgICAgIGludGVyc2VjdGlv
bi5vcmlnaW4ueSA9IHkxOwotICAgICAgICBpbnRlcnNlY3Rpb24uc2l6ZS5oZWlnaHQgPSB5MiAt
IHkxOwotICAgICAgICByZXR1cm4gaW50ZXJzZWN0aW9uOwotICAgIH0sCi0KLSAgICBjb250YWlu
c1BvaW50OiBmdW5jdGlvbihwb2ludCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwb2ludC54ID49
IHRoaXMubWluWCgpICYmIHBvaW50LnggPD0gdGhpcy5tYXhYKCkKLSAgICAgICAgICAgICYmIHBv
aW50LnkgPj0gdGhpcy5taW5ZKCkgJiYgcG9pbnQueSA8PSB0aGlzLm1heFkoKTsKLSAgICB9Ci19
OwotCi1EYXNoYm9hcmQuUmVjdC5aRVJPX1JFQ1QgPSBuZXcgRGFzaGJvYXJkLlJlY3QoMCwgMCwg
MCwgMCk7Ci0KLQotRGFzaGJvYXJkLkVkZ2VJbnNldHMgPSBmdW5jdGlvbih0b3AsIHJpZ2h0LCBi
b3R0b20sIGxlZnQpCi17Ci0gICAgY29uc29sZS5hc3NlcnQoYXJndW1lbnRzLmxlbmd0aCA9PT0g
MSB8fCBhcmd1bWVudHMubGVuZ3RoID09PSA0KTsKLQotICAgIGlmIChhcmd1bWVudHMubGVuZ3Ro
ID09PSAxKSB7Ci0gICAgICAgIHRoaXMudG9wID0gdG9wOwotICAgICAgICB0aGlzLnJpZ2h0ID0g
dG9wOwotICAgICAgICB0aGlzLmJvdHRvbSA9IHRvcDsKLSAgICAgICAgdGhpcy5sZWZ0ID0gdG9w
OwotICAgIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gNCkgewotICAgICAgICB0aGlz
LnRvcCA9IHRvcDsKLSAgICAgICAgdGhpcy5yaWdodCA9IHJpZ2h0OwotICAgICAgICB0aGlzLmJv
dHRvbSA9IGJvdHRvbTsKLSAgICAgICAgdGhpcy5sZWZ0ID0gbGVmdDsKLSAgICB9Ci19OwotCi1E
YXNoYm9hcmQuRWRnZUluc2V0cy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IERhc2hi
b2FyZC5FZGdlSW5zZXRzLAotCi0gICAgZXF1YWxzOiBmdW5jdGlvbihhbm90aGVySW5zZXQpCi0g
ICAgewotICAgICAgICByZXR1cm4gKHRoaXMudG9wID09PSBhbm90aGVySW5zZXQudG9wICYmIHRo
aXMucmlnaHQgPT09IGFub3RoZXJJbnNldC5yaWdodCAmJgotICAgICAgICAgICAgICAgIHRoaXMu
Ym90dG9tID09PSBhbm90aGVySW5zZXQuYm90dG9tICYmIHRoaXMubGVmdCA9PT0gYW5vdGhlcklu
c2V0LmxlZnQpOwotICAgIH0sCi0KLSAgICBjb3B5OiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICByZXR1cm4gbmV3IERhc2hib2FyZC5FZGdlSW5zZXRzKHRoaXMudG9wLCB0aGlzLnJpZ2h0LCB0
aGlzLmJvdHRvbSwgdGhpcy5sZWZ0KTsKLSAgICB9Ci19OwotCi1EYXNoYm9hcmQuUmVjdEVkZ2Ug
PSB7Ci0gICAgTUlOX1ggOiAwLAotICAgIE1JTl9ZIDogMSwKLSAgICBNQVhfWCA6IDIsCi0gICAg
TUFYX1kgOiAzCi19OwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0dlb21ldHJ5
LmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRp
dmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBl
CiMjIC0xICswLDAgIyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL0luaXRpYWxpemF0aW9uLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy9Jbml0aWFsaXphdGlvbi5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMv
Q0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9T
Y3JpcHRzL0luaXRpYWxpemF0aW9uLmpzCShub25leGlzdGVudCkKQEAgLTEsMzQgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLXZhciBzZXR0aW5ncyA9IG5ldyBTZXR0aW5nczsKLXZhciBidWlsZGJvdHMg
PSBbIG5ldyBXZWJLaXRCdWlsZGJvdCBdOwotRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJj
ZS50cmFjID0gbmV3IFRyYWMoImh0dHBzOi8vdHJhYy53ZWJraXQub3JnLyIpOwotaWYgKHR5cGVv
ZiBCdWd6aWxsYSAhPT0gInVuZGVmaW5lZCIpCi0gICAgdmFyIGJ1Z3ppbGxhID0gbmV3IEJ1Z3pp
bGxhOwotaWYgKHR5cGVvZiBCdWJibGVRdWV1ZVNlcnZlciAhPT0gInVuZGVmaW5lZCIpCi0gICAg
dmFyIGJ1YmJsZVF1ZXVlU2VydmVyID0gbmV3IEJ1YmJsZVF1ZXVlU2VydmVyOwotaWYgKHR5cGVv
ZiBUZXN0SGlzdG9yeSAhPT0gInVuZGVmaW5lZCIpCi0gICAgdmFyIHRlc3RIaXN0b3J5ID0gbmV3
IFRlc3RIaXN0b3J5OwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01haW4uanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9TY3JpcHRzL01haW4uanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9N
YWluLmpzCShub25leGlzdGVudCkKQEAgLTEsMzM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci12YXIgaGFzQnViYmxlcyA9IHR5cGVvZiBidWJibGVRdWV1ZVNlcnZlciAhPSAidW5kZWZpbmVk
IjsKLXZhciBCdWJibGVzQ2F0ZWdvcnkgPSAiYnViYmxlcyI7Ci0KLWlmICghY2F0ZWdvcml6ZWRR
dWV1ZXNCeVBsYXRmb3JtQW5kQnVpbGRUeXBlKQotICAgIHZhciBjYXRlZ29yaXplZFF1ZXVlc0J5
UGxhdGZvcm1BbmRCdWlsZFR5cGUgPSB7fTsKLXZhciBwbGF0Zm9ybXNCeUZhbWlseSA9IHt9Owot
Ci1mb3IgKHZhciBpID0gMDsgaSA8IGJ1aWxkYm90cy5sZW5ndGg7ICsraSkgewotICAgIHZhciBi
dWlsZGJvdCA9IGJ1aWxkYm90c1tpXTsKLSAgICBmb3IgKHZhciBpZCBpbiBidWlsZGJvdC5xdWV1
ZXNJbmZvKSB7Ci0gICAgICAgIGlmIChidWlsZGJvdC5xdWV1ZXNJbmZvW2lkXS5jb21iaW5lZFF1
ZXVlcykgewotICAgICAgICAgICAgdmFyIGluZm8gPSBidWlsZGJvdC5xdWV1ZXNJbmZvW2lkXTsK
LSAgICAgICAgICAgIHZhciBxdWV1ZSA9IHsKLSAgICAgICAgICAgICAgICBpZDogaWQsCi0gICAg
ICAgICAgICAgICAgYnJhbmNoZXM6IGluZm8uYnJhbmNoZXMsCi0gICAgICAgICAgICAgICAgcGxh
dGZvcm06IGluZm8ucGxhdGZvcm0ubmFtZSwKLSAgICAgICAgICAgICAgICBoZWFkaW5nOiBpbmZv
LmhlYWRpbmcsCi0gICAgICAgICAgICAgICAgYnVpbGRlcjogaW5mby5idWlsZGVyLAotICAgICAg
ICAgICAgICAgIGNvbWJpbmVkUXVldWVzOiBPYmplY3Qua2V5cyhpbmZvLmNvbWJpbmVkUXVldWVz
KS5tYXAoZnVuY3Rpb24oY29tYmluZWRRdWV1ZUlEKSB7IHJldHVybiBidWlsZGJvdC5xdWV1ZXNb
Y29tYmluZWRRdWV1ZUlEXTsgfSksCi0gICAgICAgICAgICB9OwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIHZhciBxdWV1ZSA9IGJ1aWxkYm90LnF1ZXVlc1tpZF07Ci0KLSAgICAgICAgdmFy
IHBsYXRmb3JtTmFtZSA9IHF1ZXVlLnBsYXRmb3JtOwotICAgICAgICB2YXIgcGxhdGZvcm0gPSBj
YXRlZ29yaXplZFF1ZXVlc0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVbcGxhdGZvcm1OYW1lXTsKLSAg
ICAgICAgaWYgKCFwbGF0Zm9ybSkKLSAgICAgICAgICAgIHBsYXRmb3JtID0gY2F0ZWdvcml6ZWRR
dWV1ZXNCeVBsYXRmb3JtQW5kQnVpbGRUeXBlW3BsYXRmb3JtTmFtZV0gPSB7fTsKLSAgICAgICAg
aWYgKCFwbGF0Zm9ybS5idWlsZGVycykKLSAgICAgICAgICAgIHBsYXRmb3JtLmJ1aWxkZXJzID0g
W107Ci0KLSAgICAgICAgdmFyIGNhdGVnb3J5TmFtZTsKLSAgICAgICAgaWYgKCJjb21iaW5lZFF1
ZXVlcyIgaW4gcXVldWUpCi0gICAgICAgICAgICBpZiAocXVldWUuYnVpbGRlcikKLSAgICAgICAg
ICAgICAgICBjYXRlZ29yeU5hbWUgPSAiYnVpbGRlckNvbWJpbmVkUXVldWVzIjsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjYXRlZ29yeU5hbWUgPSAib3RoZXJDb21iaW5lZFF1
ZXVlcyIKLSAgICAgICAgZWxzZSBpZiAocXVldWUuYnVpbGRlcikKLSAgICAgICAgICAgIGNhdGVn
b3J5TmFtZSA9ICJidWlsZGVycyI7Ci0gICAgICAgIGVsc2UgaWYgKHF1ZXVlLnRlc3RlcikKLSAg
ICAgICAgICAgIGNhdGVnb3J5TmFtZSA9IHF1ZXVlLnRlc3RDYXRlZ29yeTsKLSAgICAgICAgZWxz
ZSBpZiAocXVldWUucGVyZm9ybWFuY2UpCi0gICAgICAgICAgICBjYXRlZ29yeU5hbWUgPSAicGVy
Zm9ybWFuY2UiOwotICAgICAgICBlbHNlIGlmIChxdWV1ZS5sZWFrcykKLSAgICAgICAgICAgIGNh
dGVnb3J5TmFtZSA9ICJsZWFrcyI7Ci0gICAgICAgIGVsc2UgaWYgKHF1ZXVlLnN0YXRpY0FuYWx5
emVyKQotICAgICAgICAgICAgY2F0ZWdvcnlOYW1lID0gInN0YXRpY0FuYWx5emVyIjsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydCgiVW5rbm93biBxdWV1ZSB0eXBl
LiIpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXRlZ29y
eSA9IHBsYXRmb3JtW2NhdGVnb3J5TmFtZV07Ci0gICAgICAgIGlmICghY2F0ZWdvcnkpCi0gICAg
ICAgICAgICBjYXRlZ29yeSA9IHBsYXRmb3JtW2NhdGVnb3J5TmFtZV0gPSBbXTsKLQotICAgICAg
ICBjYXRlZ29yeS5wdXNoKHF1ZXVlKTsKLSAgICB9Ci19Ci0KLWlmIChoYXNCdWJibGVzKSB7Ci0g
ICAgZm9yICh2YXIgaWQgaW4gYnViYmxlUXVldWVTZXJ2ZXIucXVldWVzKSB7Ci0gICAgICAgIHZh
ciBxdWV1ZSA9IGJ1YmJsZVF1ZXVlU2VydmVyLnF1ZXVlc1tpZF07Ci0gICAgICAgIHZhciBwbGF0
Zm9ybSA9IGNhdGVnb3JpemVkUXVldWVzQnlQbGF0Zm9ybUFuZEJ1aWxkVHlwZVtxdWV1ZS5wbGF0
Zm9ybV07Ci0gICAgICAgIGlmICghcGxhdGZvcm0pCi0gICAgICAgICAgICBwbGF0Zm9ybSA9IGNh
dGVnb3JpemVkUXVldWVzQnlQbGF0Zm9ybUFuZEJ1aWxkVHlwZVtxdWV1ZS5wbGF0Zm9ybV0gPSB7
fTsKLSAgICAgICAgaWYgKCFwbGF0Zm9ybS5idWlsZGVycykKLSAgICAgICAgICAgIHBsYXRmb3Jt
LmJ1aWxkZXJzID0gW107Ci0KLSAgICAgICAgdmFyIGNhdGVnb3J5TmFtZSA9IEJ1YmJsZXNDYXRl
Z29yeTsKLQotICAgICAgICBwbGF0Zm9ybVF1ZXVlcyA9IHBsYXRmb3JtW2NhdGVnb3J5TmFtZV07
Ci0gICAgICAgIGlmICghcGxhdGZvcm1RdWV1ZXMpCi0gICAgICAgICAgICBwbGF0Zm9ybVF1ZXVl
cyA9IHBsYXRmb3JtW2NhdGVnb3J5TmFtZV0gPSBbXTsKLQotICAgICAgICBwbGF0Zm9ybVF1ZXVl
cy5wdXNoKHF1ZXVlKTsKLSAgICB9Ci19Ci0KLXZhciB0ZXN0TmFtZXMgPSB7fTsKLXRlc3ROYW1l
c1tCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0Ml0gPSAiV0syIFRlc3RzIjsKLXRlc3ROYW1l
c1tCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0MV0gPSAiV0sxIFRlc3RzIjsKLQotZnVuY3Rp
b24gaW5pdFBsYXRmb3Jtc0J5RmFtaWx5KCkKLXsKLSAgICB2YXIgcGxhdGZvcm1zID0gRGFzaGJv
YXJkLnNvcnRlZFBsYXRmb3JtczsKLSAgICBmb3IgKHZhciBpIGluIHBsYXRmb3JtcykgewotICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhlIHBsYXRmb3JtIHdpbGwgYmUgZGlzcGxheWVkIG9uIHRoZSBw
YWdlIGJlZm9yZSBjb25zaWRlcmluZyBpdHMgcGxhdGZvcm0gZmFtaWx5LgotICAgICAgICBpZiAo
IWNhdGVnb3JpemVkUXVldWVzQnlQbGF0Zm9ybUFuZEJ1aWxkVHlwZVtwbGF0Zm9ybXNbaV0ubmFt
ZV0pCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICB2YXIgcGxhdGZvcm1GYW1pbHkg
PSBzZXR0aW5ncy5wYXJzZVBsYXRmb3JtRmFtaWx5KHBsYXRmb3Jtc1tpXS5uYW1lKTsKLSAgICAg
ICAgaWYgKHBsYXRmb3Jtc0J5RmFtaWx5W3BsYXRmb3JtRmFtaWx5XSkKLSAgICAgICAgICAgIHBs
YXRmb3Jtc0J5RmFtaWx5W3BsYXRmb3JtRmFtaWx5XS5wdXNoKHBsYXRmb3Jtc1tpXS5uYW1lKQot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBwbGF0Zm9ybXNCeUZhbWlseVtwbGF0Zm9ybUZhbWls
eV0gPSBbcGxhdGZvcm1zW2ldLm5hbWVdCi0gICAgfQotfQotCi1mdW5jdGlvbiB1cGRhdGVIaWRk
ZW5QbGF0Zm9ybXMoKQotewotICAgIHZhciBoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzID0gc2V0dGlu
Z3MuZ2V0T2JqZWN0KCJoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzIikgfHwgW107Ci0gICAgdmFyIHBs
YXRmb3JtUm93cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInRyLnBsYXRmb3JtIik7Ci0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbGF0Zm9ybVJvd3MubGVuZ3RoOyArK2kpCi0gICAgICAg
IHBsYXRmb3JtUm93c1tpXS5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4iKTsKLQotICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgaGlkZGVuUGxhdGZvcm1GYW1pbGllcy5sZW5ndGg7ICsraSkgewotICAg
ICAgICB2YXIgcGxhdGZvcm1GYW1pbHkgPSBoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzW2ldOwotICAg
ICAgICBpZiAoIShwbGF0Zm9ybUZhbWlseSBpbiBwbGF0Zm9ybXNCeUZhbWlseSkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwbGF0Zm9ybXNCeUZh
bWlseVtwbGF0Zm9ybUZhbWlseV0ubGVuZ3RoOyArK2opIHsKLSAgICAgICAgICAgIHZhciBuYW1l
ID0gcGxhdGZvcm1zQnlGYW1pbHlbcGxhdGZvcm1GYW1pbHldW2pdOwotICAgICAgICAgICAgdmFy
IHBsYXRmb3JtUm93ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigidHIucGxhdGZvcm0uIiArIG5h
bWUpOwotICAgICAgICAgICAgaWYgKHBsYXRmb3JtUm93KQotICAgICAgICAgICAgICAgIHBsYXRm
b3JtUm93LmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHNl
dHRpbmdzLnVwZGF0ZVRvZ2dsZUJ1dHRvbnMoKTsKLX0KLQotZnVuY3Rpb24gYXBwbHlBY2Nlc3Np
YmlsaXR5Q29sb3JTZXR0aW5nKCkKLXsKLSAgICB2YXIgdXNlQWNjZXNzaWJsZUNvbG9ycyA9IHNl
dHRpbmdzLmdldE9iamVjdCgiYWNjZXNzaWJpbGl0eUNvbG9yc0VuYWJsZWQiKTsKLSAgICB2YXIg
dG9nZ2xlQWNjZXNzaWJpbGl0eUNvbG9yQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImFjY2Vzc2liaWxpdHlCdXR0b24iKTsKLSAgICBpZiAodXNlQWNjZXNzaWJsZUNvbG9ycykgewot
ICAgICAgICB0b2dnbGVBY2Nlc3NpYmlsaXR5Q29sb3JCdXR0b24udGV4dENvbnRlbnQgPSAiZGlz
YWJsZSBhY2Nlc3NpYmlsaXR5IGNvbG9ycyI7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NM
aXN0LnRvZ2dsZSgiYWNjZXNzaWJpbGl0eS1jb2xvcnMiKTsKLSAgICB9IGVsc2UKLSAgICAgICAg
dG9nZ2xlQWNjZXNzaWJpbGl0eUNvbG9yQnV0dG9uLnRleHRDb250ZW50ID0gImVuYWJsZSBhY2Nl
c3NpYmlsaXR5IGNvbG9ycyI7Ci19Ci0KLWZ1bmN0aW9uIHRvZ2dsZUFjY2Vzc2liaWxpdHlDb2xv
cnMoKQotewotICAgIHZhciBpc0N1cnJlbnRseUFjdGl2YXRlZCA9IHNldHRpbmdzLmdldE9iamVj
dCgiYWNjZXNzaWJpbGl0eUNvbG9yc0VuYWJsZWQiKTsKLSAgICBpZiAoaXNDdXJyZW50bHlBY3Rp
dmF0ZWQgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgaXNDdXJyZW50bHlBY3RpdmF0ZWQgPSBmYWxz
ZTsKLSAgICAKLSAgICBzZXR0aW5ncy5zZXRPYmplY3QoImFjY2Vzc2liaWxpdHlDb2xvcnNFbmFi
bGVkIiwgIWlzQ3VycmVudGx5QWN0aXZhdGVkKTsKLSAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlz
dC50b2dnbGUoImFjY2Vzc2liaWxpdHktY29sb3JzIik7Ci0gICAgdmFyIHRvZ2dsZUFjY2Vzc2li
aWxpdHlDb2xvckJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2Nlc3NpYmlsaXR5
QnV0dG9uIik7Ci0gICAgaWYgKCFpc0N1cnJlbnRseUFjdGl2YXRlZCkKLSAgICAgICAgdG9nZ2xl
QWNjZXNzaWJpbGl0eUNvbG9yQnV0dG9uLnRleHRDb250ZW50ID0gImRpc2FibGUgYWNjZXNzaWJp
bGl0eSBjb2xvcnMiOwotICAgIGVsc2UKLSAgICAgICAgdG9nZ2xlQWNjZXNzaWJpbGl0eUNvbG9y
QnV0dG9uLnRleHRDb250ZW50ID0gImVuYWJsZSBhY2Nlc3NpYmlsaXR5IGNvbG9ycyI7Ci19Ci0K
LWZ1bmN0aW9uIGRvY3VtZW50UmVhZHkoKQotewotICAgIHZhciB0YWJsZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInRhYmxlIik7Ci0gICAgdGFibGUuY2xhc3NMaXN0LmFkZCgicXVldWUtZ3Jp
ZCIpOwotCi0gICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAg
cm93LmNsYXNzTGlzdC5hZGQoImhlYWRlcnMiKTsKLQotICAgIHZhciBoZWFkZXIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ0aCIpOyAKLSAgICByb3cuYXBwZW5kQ2hpbGQoaGVhZGVyKTsKLQot
ICAgIGhlYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIik7Ci0gICAgaGVhZGVyLnRl
eHRDb250ZW50ID0gIkJ1aWxkZXJzIjsKLSAgICByb3cuYXBwZW5kQ2hpbGQoaGVhZGVyKTsKLQot
ICAgIGZvciAodmFyIHRlc3RlcktleSBpbiBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkpIHsKLSAgICAg
ICAgdmFyIGhlYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIik7Ci0gICAgICAgIGhl
YWRlci50ZXh0Q29udGVudCA9IHRlc3ROYW1lc1tCdWlsZGJvdC5UZXN0Q2F0ZWdvcnlbdGVzdGVy
S2V5XV07Ci0gICAgICAgIHJvdy5hcHBlbmRDaGlsZChoZWFkZXIpOwotICAgIH0KLQotICAgIHZh
ciBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpOwotICAgIGhlYWRlci50ZXh0
Q29udGVudCA9ICJPdGhlciI7Ci0gICAgcm93LmFwcGVuZENoaWxkKGhlYWRlcik7Ci0KLSAgICB0
YWJsZS5hcHBlbmRDaGlsZChyb3cpOwotCi0gICAgdmFyIHBsYXRmb3JtcyA9IERhc2hib2FyZC5z
b3J0ZWRQbGF0Zm9ybXM7Ci0KLSAgICBmb3IgKHZhciBpIGluIHBsYXRmb3JtcykgewotICAgICAg
ICB2YXIgcGxhdGZvcm0gPSBwbGF0Zm9ybXNbaV07Ci0gICAgICAgIHZhciBwbGF0Zm9ybVF1ZXVl
cyA9IGNhdGVnb3JpemVkUXVldWVzQnlQbGF0Zm9ybUFuZEJ1aWxkVHlwZVtwbGF0Zm9ybS5uYW1l
XTsKLSAgICAgICAgaWYgKCFwbGF0Zm9ybVF1ZXVlcykKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgICAg
ICByb3cuY2xhc3NMaXN0LmFkZCgicGxhdGZvcm0iKTsKLSAgICAgICAgcm93LmNsYXNzTGlzdC5h
ZGQocGxhdGZvcm0ubmFtZSk7Ci0KLSAgICAgICAgdmFyIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJ0ZCIpOwotICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoImxvZ28iKTsKLQotICAg
ICAgICB2YXIgbG9nb0ltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7Ci0gICAg
ICAgIGxvZ29JbWFnZS5jbGFzc0xpc3QuYWRkKCJsb2dvIik7Ci0gICAgICAgIGNlbGwuYXBwZW5k
Q2hpbGQobG9nb0ltYWdlKTsKLQotICAgICAgICB2YXIgcmluZ0ltYWdlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaW1nIik7Ci0gICAgICAgIHJpbmdJbWFnZS5jbGFzc0xpc3QuYWRkKCJyaW5n
Iik7Ci0gICAgICAgIHJpbmdJbWFnZS50aXRsZSA9IHBsYXRmb3JtLnJlYWRhYmxlTmFtZTsKLSAg
ICAgICAgY2VsbC5hcHBlbmRDaGlsZChyaW5nSW1hZ2UpOwotCi0gICAgICAgIHJvdy5hcHBlbmRD
aGlsZChjZWxsKTsKLQotICAgICAgICBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQi
KTsKLSAgICAgICAgdmFyIHZpZXcgPSBuZXcgQnVpbGRib3RCdWlsZGVyUXVldWVWaWV3KHBsYXRm
b3JtUXVldWVzLmJ1aWxkZXJzKTsKLSAgICAgICAgY2VsbC5hcHBlbmRDaGlsZCh2aWV3LmVsZW1l
bnQpOwotICAgICAgICByb3cuYXBwZW5kQ2hpbGQoY2VsbCk7Ci0KLSAgICAgICAgaWYgKCJidWls
ZGVyQ29tYmluZWRRdWV1ZXMiIGluIHBsYXRmb3JtUXVldWVzKSB7Ci0gICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHBsYXRmb3JtUXVldWVzLmJ1aWxkZXJDb21iaW5lZFF1ZXVlcy5sZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgICAgIHZhciB2aWV3ID0gbmV3IEJ1aWxkYm90Q29tYmlu
ZWRRdWV1ZVZpZXcocGxhdGZvcm1RdWV1ZXMuYnVpbGRlckNvbWJpbmVkUXVldWVzW2ldKTsKLSAg
ICAgICAgICAgICAgICBjZWxsLmFwcGVuZENoaWxkKHZpZXcuZWxlbWVudCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHZhciB0ZXN0ZXJLZXkgaW4gQnVpbGRib3Qu
VGVzdENhdGVnb3J5KSB7Ci0gICAgICAgICAgICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInRkIik7Ci0KLSAgICAgICAgICAgIHZhciB0ZXN0ZXJQcm9wZXJ0eSA9IEJ1aWxkYm90
LlRlc3RDYXRlZ29yeVt0ZXN0ZXJLZXldOwotICAgICAgICAgICAgaWYgKHBsYXRmb3JtUXVldWVz
W3Rlc3RlclByb3BlcnR5XSkgewotICAgICAgICAgICAgICAgIHZhciB2aWV3ID0gbmV3IEJ1aWxk
Ym90VGVzdGVyUXVldWVWaWV3KHBsYXRmb3JtUXVldWVzW3Rlc3RlclByb3BlcnR5XSk7Ci0gICAg
ICAgICAgICAgICAgY2VsbC5hcHBlbmRDaGlsZCh2aWV3LmVsZW1lbnQpOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQoY2VsbCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgIGlm
IChwbGF0Zm9ybVF1ZXVlcy5wZXJmb3JtYW5jZSkgewotICAgICAgICAgICAgdmFyIHZpZXcgPSBu
ZXcgQnVpbGRib3RQZXJmb3JtYW5jZVF1ZXVlVmlldyhwbGF0Zm9ybVF1ZXVlcy5wZXJmb3JtYW5j
ZSk7Ci0gICAgICAgICAgICBjZWxsLmFwcGVuZENoaWxkKHZpZXcuZWxlbWVudCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAocGxhdGZvcm1RdWV1ZXMuc3RhdGljQW5hbHl6ZXIpIHsKLSAgICAg
ICAgICAgIHZhciB2aWV3ID0gbmV3IEJ1aWxkYm90U3RhdGljQW5hbHl6ZXJRdWV1ZVZpZXcocGxh
dGZvcm1RdWV1ZXMuc3RhdGljQW5hbHl6ZXIpOwotICAgICAgICAgICAgY2VsbC5hcHBlbmRDaGls
ZCh2aWV3LmVsZW1lbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBsYXRmb3JtUXVldWVz
LmxlYWtzKSB7Ci0gICAgICAgICAgICB2YXIgdmlldyA9IG5ldyBCdWlsZGJvdExlYWtzUXVldWVW
aWV3KHBsYXRmb3JtUXVldWVzLmxlYWtzKTsKLSAgICAgICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQo
dmlldy5lbGVtZW50KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChwbGF0Zm9ybVF1ZXVlcy5j
dXN0b21WaWV3KQotICAgICAgICAgICAgY2VsbC5hcHBlbmRDaGlsZChwbGF0Zm9ybVF1ZXVlcy5j
dXN0b21WaWV3LmVsZW1lbnQpOwotCi0gICAgICAgIGlmIChwbGF0Zm9ybVF1ZXVlc1tCdWJibGVz
Q2F0ZWdvcnldKSB7Ci0gICAgICAgICAgICB2YXIgdmlldyA9IG5ldyBCdWJibGVRdWV1ZVZpZXco
cGxhdGZvcm1RdWV1ZXNbQnViYmxlc0NhdGVnb3J5XSk7Ci0gICAgICAgICAgICBjZWxsLmFwcGVu
ZENoaWxkKHZpZXcuZWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIm90aGVyQ29t
YmluZWRRdWV1ZXMiIGluIHBsYXRmb3JtUXVldWVzKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHBsYXRmb3JtUXVldWVzLm90aGVyQ29tYmluZWRRdWV1ZXMubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgICAgICB2YXIgdmlldyA9IG5ldyBCdWlsZGJvdENvbWJpbmVkUXVldWVW
aWV3KHBsYXRmb3JtUXVldWVzLm90aGVyQ29tYmluZWRRdWV1ZXNbaV0pOwotICAgICAgICAgICAg
ICAgIGNlbGwuYXBwZW5kQ2hpbGQodmlldy5lbGVtZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIHJvdy5hcHBlbmRDaGlsZChjZWxsKTsKLQotICAgICAgICB0YWJsZS5h
cHBlbmRDaGlsZChyb3cpOwotICAgIH0KLQotICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
dGFibGUpOwotCi0gICAgaWYgKHNldHRpbmdzLmF2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHZhciBz
ZXR0aW5nc0J1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBz
ZXR0aW5nc0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uICgpIHsgc2V0
dGluZ3MudG9nZ2xlU2V0dGluZ3NEaXNwbGF5KCk7IH0pOwotICAgICAgICBzZXR0aW5nc0J1dHRv
bi5jbGFzc0xpc3QuYWRkKCJzZXR0aW5ncyIpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKHNldHRpbmdzQnV0dG9uKTsKLQotICAgICAgICB2YXIgc2V0dGluZ3NXcmFwcGVyID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHNldHRpbmdzV3JhcHBlci5j
bGFzc0xpc3QuYWRkKCJ1bmhpZGUiLCAiaGlkZGVuIiwgInNldHRpbmdzV3JhcHBlciIpCi0KLSAg
ICAgICAgdmFyIHBsYXRmb3JtRmFtaWx5VG9nZ2xlV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwotICAgICAgICBwbGF0Zm9ybUZhbWlseVRvZ2dsZVdyYXBwZXIuY2xhc3NM
aXN0LmFkZCgidW5oaWRlIiwgImhpZGRlbiIsICJmYW1pbHlUb2dnbGVXcmFwcGVyIik7Ci0KLSAg
ICAgICAgdmFyIHVuaGlkZUFsbEJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwotICAgICAgICB1bmhpZGVBbGxCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5j
dGlvbiAoKSB7IHNldHRpbmdzLmNsZWFySGlkZGVuUGxhdGZvcm1GYW1pbGllcygpOyB9KTsKLSAg
ICAgICAgdW5oaWRlQWxsQnV0dG9uLmNsYXNzTGlzdC5hZGQoInVuaGlkZSIsICJoaWRkZW4iLCAi
cGxhdGZvcm1GYW1pbHlUb2dnbGVCdXR0b24iKTsKLSAgICAgICAgdW5oaWRlQWxsQnV0dG9uLnNl
dEF0dHJpYnV0ZSgiaWQiLCAiYWxsLXBsYXRmb3JtRmFtaWx5VG9nZ2xlQnV0dG9uIik7Ci0gICAg
ICAgIHVuaGlkZUFsbEJ1dHRvbi50ZXh0Q29udGVudCA9ICJhbGwiOwotICAgICAgICBwbGF0Zm9y
bUZhbWlseVRvZ2dsZVdyYXBwZXIuYXBwZW5kQ2hpbGQodW5oaWRlQWxsQnV0dG9uKTsKLQotICAg
ICAgICBpbml0UGxhdGZvcm1zQnlGYW1pbHkoKTsKLSAgICAgICAgZm9yICh2YXIgcGxhdGZvcm1G
YW1pbHkgaW4gcGxhdGZvcm1zQnlGYW1pbHkpIHsKLSAgICAgICAgICAgIHZhciBwbGF0Zm9ybUZh
bWlseVRvZ2dsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAg
cGxhdGZvcm1GYW1pbHlUb2dnbGUuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbiAo
KSB7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3MudG9nZ2xlSGlkZGVuUGxhdGZvcm1GYW1pbHko
dGhpcy50b1N0cmluZygpKTsKLSAgICAgICAgICAgIH0uYmluZChwbGF0Zm9ybUZhbWlseSkpOwot
ICAgICAgICAgICAgcGxhdGZvcm1GYW1pbHlUb2dnbGUuY2xhc3NMaXN0LmFkZCgidW5oaWRlIiwg
ImhpZGRlbiIsICJwbGF0Zm9ybUZhbWlseVRvZ2dsZUJ1dHRvbiIpOwotICAgICAgICAgICAgcGxh
dGZvcm1GYW1pbHlUb2dnbGUuc2V0QXR0cmlidXRlKCJpZCIsIHBsYXRmb3JtRmFtaWx5ICsgIi1w
bGF0Zm9ybUZhbWlseVRvZ2dsZUJ1dHRvbiIpOwotICAgICAgICAgICAgcGxhdGZvcm1GYW1pbHlU
b2dnbGUudGV4dENvbnRlbnQgPSBwbGF0Zm9ybUZhbWlseTsKLSAgICAgICAgICAgIHBsYXRmb3Jt
RmFtaWx5VG9nZ2xlV3JhcHBlci5hcHBlbmRDaGlsZChwbGF0Zm9ybUZhbWlseVRvZ2dsZSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgc2V0dGluZ3NXcmFwcGVyLmFwcGVuZENoaWxkKHBsYXRmb3JtRmFt
aWx5VG9nZ2xlV3JhcHBlcik7Ci0KLSAgICAgICAgdmFyIHRvZ2dsZUFjY2Vzc2liaWxpdHlDb2xv
ckJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0b2dnbGVB
Y2Nlc3NpYmlsaXR5Q29sb3JCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlv
bigpIHsgdG9nZ2xlQWNjZXNzaWJpbGl0eUNvbG9ycygpOyB9KTsKLSAgICAgICAgdG9nZ2xlQWNj
ZXNzaWJpbGl0eUNvbG9yQnV0dG9uLmNsYXNzTGlzdC5hZGQoInVuaGlkZSIsICJoaWRkZW4iLCAi
YWNjZXNzaWJpbGl0eUJ1dHRvbiIpOwotICAgICAgICB0b2dnbGVBY2Nlc3NpYmlsaXR5Q29sb3JC
dXR0b24uc2V0QXR0cmlidXRlKCJpZCIsICJhY2Nlc3NpYmlsaXR5QnV0dG9uIik7Ci0gICAgICAg
IHRvZ2dsZUFjY2Vzc2liaWxpdHlDb2xvckJ1dHRvbi50ZXh0Q29udGVudCA9ICJlbmFibGUgYWNj
ZXNzaWJpbGl0eSBjb2xvcnMiOwotICAgICAgICBzZXR0aW5nc1dyYXBwZXIuYXBwZW5kQ2hpbGQo
dG9nZ2xlQWNjZXNzaWJpbGl0eUNvbG9yQnV0dG9uKTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChzZXR0aW5nc1dyYXBwZXIpOwotICAgICAgICBhcHBseUFjY2Vzc2liaWxpdHlD
b2xvclNldHRpbmcoKTsKLQotICAgICAgICB1cGRhdGVIaWRkZW5QbGF0Zm9ybXMoKTsKLSAgICAg
ICAgc2V0dGluZ3MuYWRkU2V0dGluZ0xpc3RlbmVyKCJoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzIiwg
dXBkYXRlSGlkZGVuUGxhdGZvcm1zKTsKLSAgICB9Ci19Ci0KLXZhciBzb3J0ZWRSZXBvc2l0b3Jp
ZXMgPSBEYXNoYm9hcmQuc29ydGVkUmVwb3NpdG9yaWVzOwotZm9yICh2YXIgaSA9IDA7IGkgPCBz
b3J0ZWRSZXBvc2l0b3JpZXMubGVuZ3RoOyArK2kpIHsKLSAgICB2YXIgdHJhYyA9IHNvcnRlZFJl
cG9zaXRvcmllc1tpXS50cmFjOwotICAgIGlmICh0eXBlb2YgdHJhYyAhPT0gInVuZGVmaW5lZCIp
Ci0gICAgICAgIHRyYWMuc3RhcnRQZXJpb2RpY1VwZGF0ZXMoKTsKLX0KLQotZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGRvY3VtZW50UmVhZHkpOwpJbmRleDog
VG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9TY3JpcHRzL01ldHJpY3NBbmFseXplci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Njcmlw
dHMvTWV0cmljc0FuYWx5emVyLmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
TWV0cmljc0FuYWx5emVyLmpzCShub25leGlzdGVudCkKQEAgLTEsNTAzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi1BbmFseXplciA9IGZ1bmN0aW9uKCkKLXsKLSAgICBCYXNlT2JqZWN0LmNhbGwodGhp
cyk7Ci0KLSAgICAvLyBPbmx5IGxvYWQgb25lIHF1ZXVlIGF0IGEgdGltZSB0byBub3Qgb3Zlcmxv
YWQgdGhlIHNlcnZlci4KLSAgICB0aGlzLl9xdWV1ZUJlaW5nTG9hZGVkID0gbnVsbDsKLQotICAg
IERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYy5hZGRFdmVudExpc3RlbmVyKFRy
YWMuRXZlbnQuTG9hZGVkLCB0aGlzLl9sb2FkZWRGcm9tVHJhYywgdGhpcyk7Ci19OwotCi1CYXNl
T2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEFuYWx5emVyKTsKLQotQW5hbHl6ZXIuRXZl
bnQgPSB7Ci0gICAgU3RhcnRpbmc6ICJzdGFydGluZyIsCi0gICAgUXVldWVSZXN1bHRzOiAicXVl
dWUtcmVzdWx0cyIsCi0gICAgRmluaXNoZWQ6ICJmaW5pc2hlZCIsCi19OwotCi1BbmFseXplci5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IEFuYWx5emVyLAotICAgIF9fcHJvdG9fXzog
QmFzZU9iamVjdC5wcm90b3R5cGUsCi0KLSAgICBhbmFseXplOiBmdW5jdGlvbihxdWV1ZXMsIGZy
b21EYXRlLCB0b0RhdGUpCi0gICAgewotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhBbmFseXplci5FdmVudC5TdGFydGluZywgbnVsbCk7Ci0KLSAgICAgICAgdGhpcy5fcmFu
Z2VTdGFydFRpbWUgPSBuZXcgRGF0ZShmcm9tRGF0ZSk7Ci0gICAgICAgIHRoaXMuX3JhbmdlRW5k
VGltZSA9IG5ldyBEYXRlKHRvRGF0ZSk7Ci0KLSAgICAgICAgdGhpcy5faGFzVHJhY0RhdGEgPSBm
YWxzZTsKLQotICAgICAgICAvLyBBIGNvbW1pdCBjYW4gc3RhcnQgYSBidWlsZC10ZXN0IHNlcXVl
bmNlLCBvciBpdCBjYW4gYmUgaWdub3JlZCBmb2xsb3dpbmcgYnVpbGRlciBxdWV1ZSBydWxlcy4K
LSAgICAgICAgLy8gT25seSB0aGUgYnVpbGRlciBxdWV1ZSBrbm93cyB3aGljaCBjb21taXRzIHRy
aWdnZXJlZCBidWlsZHMsIGFuZCB3aGljaCB3ZXJlIGlnbm9yZWQuCi0gICAgICAgIC8vIFdlIG5l
ZWQgdG8ga25vdyB3aGljaCBjb21taXRzIHdlcmUgaWdub3JlZCB3aGVuIG1lYXN1cmluZyB0ZXN0
ZXIgcXVldWUgcGVyZm9ybWFuY2UsCi0gICAgICAgIC8vIHNvIHdlIGxvYWQgYW5kIGFuYWx5emUg
YnVpbGRlciBxdWV1ZXMgZmlyc3QuCi0gICAgICAgIHRoaXMuX3F1ZXVlcyA9IHF1ZXVlcy5zbGlj
ZSgwKTsKLSAgICAgICAgdGhpcy5fcXVldWVzLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4g
Yi5idWlsZGVyIC0gYS5idWlsZGVyOyB9KTsKLQotICAgICAgICB0aGlzLl9yZW1haW5pbmdRdWV1
ZXMgPSB7fTsKLSAgICAgICAgdGhpcy5fcXVldWVzUmVhZHlUb0FuYWx5emUgPSBbXTsKLQotICAg
ICAgICB0aGlzLl90cmlnZ2VyaW5nQ29tbWl0c0J5VHJpZ2dlcmluZ1F1ZXVlID0ge307Ci0KLSAg
ICAgICAgdGhpcy5fcXVldWVzLmZvckVhY2goZnVuY3Rpb24ocXVldWUpIHsKLSAgICAgICAgICAg
IGlmICghcXVldWUuaXRlcmF0aW9ucy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9y
ZW1haW5pbmdRdWV1ZXNbcXVldWUuaWRdID0gcXVldWU7Ci0gICAgICAgICAgICAgICAgaWYgKCF0
aGlzLl9xdWV1ZUJlaW5nTG9hZGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVl
QmVpbmdMb2FkZWQgPSBxdWV1ZS5pZDsKLSAgICAgICAgICAgICAgICAgICAgcXVldWUubG9hZEFs
bCh0aGlzLl9sb2FkZWRGcm9tQnVpbGRib3QuYmluZCh0aGlzKSk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5fcXVldWVzUmVhZHlU
b0FuYWx5emUucHVzaChxdWV1ZSk7Ci0gICAgICAgIH0sIHRoaXMpOwotCi0gICAgICAgIERhc2hi
b2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYy5sb2FkKHRoaXMuX3JhbmdlU3RhcnRUaW1l
LCB0aGlzLl9yYW5nZUVuZFRpbWUpOwotCi0gICAgICAgIGJ1YmJsZVF1ZXVlU2VydmVyLmxvYWRQ
cm9jZXNzaW5nVGltZXModGhpcy5fcmFuZ2VTdGFydFRpbWUsIHRoaXMuX3JhbmdlRW5kVGltZSwg
dGhpcy5fbG9hZGVkQnViYmxlc1RpbWluZy5iaW5kKHRoaXMpKTsKLSAgICB9LAotCi0gICAgX3Ry
aWdnZXJpbmdRdWV1ZTogZnVuY3Rpb24ocXVldWUpCi0gICAgewotICAgICAgICBpZiAocXVldWUu
YnVpbGRlcikKLSAgICAgICAgICAgIHJldHVybiBxdWV1ZTsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0aGlzLl9xdWV1ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICh0aGlz
Ll9xdWV1ZXNbaV0udGVzdGVyKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgaWYgKHRoaXMuX3F1ZXVlc1tpXS5wbGF0Zm9ybSA9PT0gcXVldWUucGxhdGZvcm0gJiYgdGhp
cy5fcXVldWVzW2ldLmFyY2hpdGVjdHVyZSA9PT0gcXVldWUuYXJjaGl0ZWN0dXJlICYmIHRoaXMu
X3F1ZXVlc1tpXS5kZWJ1ZyA9PT0gcXVldWUuZGVidWcpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX3F1ZXVlc1tpXTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcXVldWU7Ci0gICAg
fSwKLQotICAgIF9yZWNvcmRUcmlnZ2VyaW5nQ29tbWl0c0ZvclRyaWdnZXJpbmdRdWV1ZTogZnVu
Y3Rpb24ocXVldWUpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCghKHF1ZXVlLmlkIGlu
IHRoaXMuX3RyaWdnZXJpbmdDb21taXRzQnlUcmlnZ2VyaW5nUXVldWUpKTsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQocXVldWUuaWQgPT09IHRoaXMuX3RyaWdnZXJpbmdRdWV1ZShxdWV1ZSkuaWQp
OwotCi0gICAgICAgIHZhciBjb21taXRzID0ge307Ci0gICAgICAgIHF1ZXVlLml0ZXJhdGlvbnMu
Zm9yRWFjaChmdW5jdGlvbihpdGVyYXRpb24pIHsKLSAgICAgICAgICAgIGl0ZXJhdGlvbi5jaGFu
Z2VzLmZvckVhY2goZnVuY3Rpb24oY2hhbmdlKSB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6
IFN1cHBvcnQgbXVsdGlwbGUgc291cmNlIHRyZWVzLgotICAgICAgICAgICAgICAgIGNvbW1pdHNb
Y2hhbmdlLnJldmlzaW9uTnVtYmVyXSA9IDE7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7
Ci0KLSAgICAgICAgdGhpcy5fdHJpZ2dlcmluZ0NvbW1pdHNCeVRyaWdnZXJpbmdRdWV1ZVtxdWV1
ZS5pZF0gPSBjb21taXRzOwotICAgIH0sCi0KLSAgICAvLyBJdGVyYXRpb25zIGlzIGFuIGFycmF5
IG9mIGZpbmlzaGVkIGl0ZXJhdGlvbnMgb3JkZXJlZCBieSB0aW1lLCBpdGVyYXRpb25zWzBdIGJl
aW5nIHRoZSBuZXdlc3QuCi0gICAgLy8gUmV0dXJucyBhbiBpbmRleCBvZiBhbiBpdGVyYXRpb24g
dGhhdCBkZWZpbmVkIHRoZSBxdWV1ZSBjb2xvciBhdCB0aGUgc3RhcnQsIG9yIC0xCi0gICAgLy8g
aWYgdGhlcmUgd2FzIG5vbmUuCi0gICAgX2ZpbmRJbmRleE9mTGFyZ2VzdEl0ZXJhdGlvbkF0T3JC
ZWZvcmVTdGFydDogZnVuY3Rpb24oaXRlcmF0aW9ucykKLSAgICB7Ci0gICAgICAgIHZhciByZXN1
bHQgPSAtMTsKLSAgICAgICAgdmFyIGkgPSAwOwotICAgICAgICB3aGlsZSAoaSA8IGl0ZXJhdGlv
bnMubGVuZ3RoICYmIGl0ZXJhdGlvbnNbaV0uZW5kVGltZSA+IHRoaXMuX3JhbmdlU3RhcnRUaW1l
KQotICAgICAgICAgICAgKytpOwotICAgICAgICBpZiAoaSA8IGl0ZXJhdGlvbnMubGVuZ3RoKQot
ICAgICAgICAgICAgcmVzdWx0ID0gaSsrOwotICAgICAgICB3aGlsZSAoaSA8IGl0ZXJhdGlvbnMu
bGVuZ3RoKSB7Ci0gICAgICAgICAgICBpZiAoaXRlcmF0aW9uc1tpXS5yZXZpc2lvbltEYXNoYm9h
cmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLm5hbWVdID4gaXRlcmF0aW9uc1tyZXN1bHRdLnJldmlz
aW9uW0Rhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UubmFtZV0pCi0gICAgICAgICAgICAg
ICAgcmVzdWx0ID0gaTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgIH0sCi0KLSAgICBfZGFzaGJvYXJkSXNBbGxHcmVlbjogZnVuY3Rpb24o
dG9wSXRlcmF0aW9uQnlRdWV1ZSkKLSAgICB7Ci0gICAgICAgIHZhciBjb3VudE9mUXVldWVzV2l0
aEtub3duQ29sb3IgPSBPYmplY3Qua2V5cyh0b3BJdGVyYXRpb25CeVF1ZXVlKS5sZW5ndGg7Ci0g
ICAgICAgIGlmIChjb3VudE9mUXVldWVzV2l0aEtub3duQ29sb3IgPT09IDApCi0gICAgICAgICAg
ICByZXR1cm4gdW5kZWZpbmVkOwotCi0gICAgICAgIGZvciAodmFyIHF1ZXVlSUQgaW4gdG9wSXRl
cmF0aW9uQnlRdWV1ZSkgewotICAgICAgICAgICAgaWYgKCF0b3BJdGVyYXRpb25CeVF1ZXVlW3F1
ZXVlSURdLnN1Y2Nlc3NmdWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0KLSAgICBfdXBkYXRlU3RyZXRjaE9m
UmVkQ291bnRlcnM6IGZ1bmN0aW9uKHRvcEl0ZXJhdGlvbkJ5UXVldWUsIGN1cnJlbnRUaW1lLCBz
dHJldGNoT2ZSZWRDb3VudGVycykKLSAgICB7Ci0gICAgICAgIHZhciBkYXNoYm9hcmRJc0FsbEdy
ZWVuID0gdGhpcy5fZGFzaGJvYXJkSXNBbGxHcmVlbih0b3BJdGVyYXRpb25CeVF1ZXVlKTsKLQot
ICAgICAgICBpZiAoZGFzaGJvYXJkSXNBbGxHcmVlbiA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAg
ICAgICBjb25zb2xlLmFzc2VydChzdHJldGNoT2ZSZWRDb3VudGVycy5jdXJyZW50U3RyZXRjaE9m
UmVkU3RhcnQgPT09IHVuZGVmaW5lZCk7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChzdHJl
dGNoT2ZSZWRDb3VudGVycy5sb25nZXN0U3RyZXRjaE9mUmVkID09PSAwKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChkYXNoYm9hcmRJc0FsbEdyZWVuKSB7
Ci0gICAgICAgICAgICBpZiAoc3RyZXRjaE9mUmVkQ291bnRlcnMuY3VycmVudFN0cmV0Y2hPZlJl
ZFN0YXJ0ICE9PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICBzdHJldGNoT2ZSZWRDb3Vu
dGVycy5sb25nZXN0U3RyZXRjaE9mUmVkID0gTWF0aC5tYXgoc3RyZXRjaE9mUmVkQ291bnRlcnMu
bG9uZ2VzdFN0cmV0Y2hPZlJlZCwgY3VycmVudFRpbWUgLSBzdHJldGNoT2ZSZWRDb3VudGVycy5j
dXJyZW50U3RyZXRjaE9mUmVkU3RhcnQpOwotICAgICAgICAgICAgICAgIHN0cmV0Y2hPZlJlZENv
dW50ZXJzLmN1cnJlbnRTdHJldGNoT2ZSZWRTdGFydCA9IHVuZGVmaW5lZDsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzdHJldGNoT2ZSZWRDb3VudGVy
cy5jdXJyZW50U3RyZXRjaE9mUmVkU3RhcnQgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAg
ICBzdHJldGNoT2ZSZWRDb3VudGVycy5jdXJyZW50U3RyZXRjaE9mUmVkU3RhcnQgPSBjdXJyZW50
VGltZTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBfY291bnRQZXJjZW50YWdlT2ZHcmVlbjog
ZnVuY3Rpb24ocXVldWVzLCByZXN1bHQpCi0gICAgewotICAgICAgICB2YXIgdG9wSXRlcmF0aW9u
QnlRdWV1ZSA9IHt9OwotICAgICAgICB2YXIgaXRlcmF0aW9ucyA9IFtdOwotCi0gICAgICAgIC8v
IEZpbmQgd2hhdCB0aGUgdG9wIGl0ZXJhdGlvbiBmb3IgZWFjaCBxdWV1ZSB3YXMgYXQgdGhlIHN0
YXJ0IG9mIHRoZSB0aW1lIHJhbmdlIChhbmQgdGh1cyB3aGF0IGNvbG9ycyB0aGUgZGFzaGJvYXJk
IHdhcyBzaG93aW5nKS4KLSAgICAgICAgLy8gTWVyZ2UgYWxsIHF1ZXVlcycgaXRlcmF0aW9ucyBp
bnRvIG9uZSBhcnJheSwgZmlsdGVyaW5nIG91dCBvbmVzIHRoYXQgY2FuJ3QgcG9zc2libHkgYWZm
ZWN0IHRoZSBlbmQgcmVzdWx0LgotICAgICAgICBxdWV1ZXMuZm9yRWFjaChmdW5jdGlvbihxdWV1
ZSkgewotICAgICAgICAgICAgdmFyIHF1ZXVlSXRlcmF0aW9ucyA9IHF1ZXVlLml0ZXJhdGlvbnMu
ZmlsdGVyKGZ1bmN0aW9uKGl0ZXJhdGlvbikgeyByZXR1cm4gaXRlcmF0aW9uLmZpbmlzaGVkOyB9
KTsKLSAgICAgICAgICAgIHF1ZXVlSXRlcmF0aW9ucy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0
dXJuIGIuZW5kVGltZSAtIGEuZW5kVGltZTsgfSk7Ci0KLSAgICAgICAgICAgIHZhciBpbmRleE9m
TGFyZ2VzdEl0ZXJhdGlvbkF0T3JCZWZvcmVTdGFydCA9IHRoaXMuX2ZpbmRJbmRleE9mTGFyZ2Vz
dEl0ZXJhdGlvbkF0T3JCZWZvcmVTdGFydChxdWV1ZUl0ZXJhdGlvbnMpOwotICAgICAgICAgICAg
aWYgKGluZGV4T2ZMYXJnZXN0SXRlcmF0aW9uQXRPckJlZm9yZVN0YXJ0ID49IDApIHsKLSAgICAg
ICAgICAgICAgICB0b3BJdGVyYXRpb25CeVF1ZXVlW3F1ZXVlLmlkXSA9IHF1ZXVlSXRlcmF0aW9u
c1tpbmRleE9mTGFyZ2VzdEl0ZXJhdGlvbkF0T3JCZWZvcmVTdGFydF07Ci0gICAgICAgICAgICAg
ICAgdmFyIGkgPSBpbmRleE9mTGFyZ2VzdEl0ZXJhdGlvbkF0T3JCZWZvcmVTdGFydDsKLSAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHZhciBpID0gcXVldWVJdGVyYXRpb25zLmxl
bmd0aCAtIDE7Ci0gICAgICAgICAgICB3aGlsZSAoaSA+PSAwICYmIHF1ZXVlSXRlcmF0aW9uc1tp
XS5lbmRUaW1lIDw9IHRoaXMuX3JhbmdlRW5kVGltZSkKLSAgICAgICAgICAgICAgICBpdGVyYXRp
b25zLnB1c2gocXVldWVJdGVyYXRpb25zW2ktLV0pOwotICAgICAgICB9LCB0aGlzKTsKLQotICAg
ICAgICBpdGVyYXRpb25zLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYi5lbmRUaW1lIC0g
YS5lbmRUaW1lOyB9KTsKLQotICAgICAgICAvLyBHbyBmb3J3YXJkIGluIHRpbWUsIGlnbm9yaW5n
IG91dCBvZiBvcmRlciBpdGVyYXRpb25zIHRoYXQgZGlkbid0IGFmZmVjdCBxdWV1ZSBjb2xvci4K
LSAgICAgICAgdmFyIGN1cnJlbnRUaW1lID0gdGhpcy5fcmFuZ2VTdGFydFRpbWU7Ci0gICAgICAg
IHZhciBncmVlblRpbWUgPSAwOwotICAgICAgICB2YXIgc3RyZXRjaE9mUmVkQ291bnRlcnMgPSB7
Ci0gICAgICAgICAgICBsb25nZXN0U3RyZXRjaE9mUmVkOiAwLAotICAgICAgICAgICAgY3VycmVu
dFN0cmV0Y2hPZlJlZFN0YXJ0OiB1bmRlZmluZWQKLSAgICAgICAgfTsKLSAgICAgICAgdmFyIGVh
cmxpZXN0VGltZUluUmFuZ2VXaXRoQ29sb3I7Ci0gICAgICAgIGlmICh0aGlzLl9kYXNoYm9hcmRJ
c0FsbEdyZWVuKHRvcEl0ZXJhdGlvbkJ5UXVldWUpICE9PSB1bmRlZmluZWQpCi0gICAgICAgICAg
ICBlYXJsaWVzdFRpbWVJblJhbmdlV2l0aENvbG9yID0gdGhpcy5fcmFuZ2VTdGFydFRpbWU7Ci0g
ICAgICAgIHRoaXMuX3VwZGF0ZVN0cmV0Y2hPZlJlZENvdW50ZXJzKHRvcEl0ZXJhdGlvbkJ5UXVl
dWUsIHRoaXMuX3JhbmdlU3RhcnRUaW1lLCBzdHJldGNoT2ZSZWRDb3VudGVycyk7Ci0gICAgICAg
IGZvciAodmFyIGkgPSBpdGVyYXRpb25zLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAg
ICAgICAgICBpZiAoaXRlcmF0aW9uc1tpXS5lbmRUaW1lIDw9IHRoaXMuX3JhbmdlU3RhcnRUaW1l
KSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoaXRlcmF0aW9uc1tpXS5xdWV1ZS5p
ZCBpbiB0b3BJdGVyYXRpb25CeVF1ZXVlKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghKGl0ZXJhdGlvbnNbaV0ucXVldWUuaWQgaW4g
dG9wSXRlcmF0aW9uQnlRdWV1ZSkpIHsKLSAgICAgICAgICAgICAgICB0b3BJdGVyYXRpb25CeVF1
ZXVlW2l0ZXJhdGlvbnNbaV0ucXVldWUuaWRdID0gaXRlcmF0aW9uc1tpXTsKLSAgICAgICAgICAg
ICAgICBpZiAoZWFybGllc3RUaW1lSW5SYW5nZVdpdGhDb2xvciA9PT0gdW5kZWZpbmVkKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUaW1lID0gaXRlcmF0aW9uc1tpXS5lbmRUaW1lOwot
ICAgICAgICAgICAgICAgICAgICBlYXJsaWVzdFRpbWVJblJhbmdlV2l0aENvbG9yID0gY3VycmVu
dFRpbWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN0
cmV0Y2hPZlJlZENvdW50ZXJzKHRvcEl0ZXJhdGlvbkJ5UXVldWUsIGN1cnJlbnRUaW1lLCBzdHJl
dGNoT2ZSZWRDb3VudGVycyk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAoaXRlcmF0aW9uc1tpXS5yZXZpc2lvbltEYXNoYm9hcmQuUmVw
b3NpdG9yeS5PcGVuU291cmNlLm5hbWVdIDw9IHRvcEl0ZXJhdGlvbkJ5UXVldWVbaXRlcmF0aW9u
c1tpXS5xdWV1ZS5pZF0ucmV2aXNpb25bRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS5u
YW1lXSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgdmFyIGRhc2hi
b2FyZFdhc0FsbEdyZWVuID0gdGhpcy5fZGFzaGJvYXJkSXNBbGxHcmVlbih0b3BJdGVyYXRpb25C
eVF1ZXVlKTsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhc2hib2FyZFdhc0FsbEdyZWVu
ICE9PSB1bmRlZmluZWQpOwotICAgICAgICAgICAgdG9wSXRlcmF0aW9uQnlRdWV1ZVtpdGVyYXRp
b25zW2ldLnF1ZXVlLmlkXSA9IGl0ZXJhdGlvbnNbaV07Ci0KLSAgICAgICAgICAgIGlmIChkYXNo
Ym9hcmRXYXNBbGxHcmVlbiA9PT0gdHJ1ZSkKLSAgICAgICAgICAgICAgICBncmVlblRpbWUgKz0g
aXRlcmF0aW9uc1tpXS5lbmRUaW1lIC0gY3VycmVudFRpbWU7Ci0KLSAgICAgICAgICAgIGN1cnJl
bnRUaW1lID0gaXRlcmF0aW9uc1tpXS5lbmRUaW1lOwotICAgICAgICAgICAgdGhpcy5fdXBkYXRl
U3RyZXRjaE9mUmVkQ291bnRlcnModG9wSXRlcmF0aW9uQnlRdWV1ZSwgY3VycmVudFRpbWUsIHN0
cmV0Y2hPZlJlZENvdW50ZXJzKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0aGlzLl9kYXNo
Ym9hcmRJc0FsbEdyZWVuKHRvcEl0ZXJhdGlvbkJ5UXVldWUpID09PSB0cnVlKQotICAgICAgICAg
ICAgZ3JlZW5UaW1lICs9IHRoaXMuX3JhbmdlRW5kVGltZSAtIGN1cnJlbnRUaW1lOwotCi0gICAg
ICAgIGlmIChzdHJldGNoT2ZSZWRDb3VudGVycy5jdXJyZW50U3RyZXRjaE9mUmVkU3RhcnQgIT09
IHVuZGVmaW5lZCkKLSAgICAgICAgICAgIHN0cmV0Y2hPZlJlZENvdW50ZXJzLmxvbmdlc3RTdHJl
dGNoT2ZSZWQgPSBNYXRoLm1heChzdHJldGNoT2ZSZWRDb3VudGVycy5sb25nZXN0U3RyZXRjaE9m
UmVkLCB0aGlzLl9yYW5nZUVuZFRpbWUgLSBzdHJldGNoT2ZSZWRDb3VudGVycy5jdXJyZW50U3Ry
ZXRjaE9mUmVkU3RhcnQpOwotCi0gICAgICAgIHJlc3VsdC5sb25nZXN0U3RyZXRjaE9mUmVkID0g
c3RyZXRjaE9mUmVkQ291bnRlcnMubG9uZ2VzdFN0cmV0Y2hPZlJlZCAvIDEwMDA7Ci0KLSAgICAg
ICAgaWYgKGVhcmxpZXN0VGltZUluUmFuZ2VXaXRoQ29sb3IgPT09IHRoaXMuX3JhbmdlU3RhcnRU
aW1lKQotICAgICAgICAgICAgcmVzdWx0LnBlcmNlbnRhZ2VPZkdyZWVuID0gZ3JlZW5UaW1lIC8g
KHRoaXMuX3JhbmdlRW5kVGltZSAtIHRoaXMuX3JhbmdlU3RhcnRUaW1lKSAqIDEwMDsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQuYnVpbGRib3RSYW5nZUVycm9yID0gdHJ1ZTsK
LSAgICAgICAgICAgIGlmIChlYXJsaWVzdFRpbWVJblJhbmdlV2l0aENvbG9yICE9PSB1bmRlZmlu
ZWQpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYnVpbGRib3RSYW5nZUVycm9yVGV4dCA9ICJR
dWV1ZSBvbmx5IGhhcyByZXN1bHRzIHN0YXJ0aW5nICIgKyBlYXJsaWVzdFRpbWVJblJhbmdlV2l0
aENvbG9yOwotICAgICAgICAgICAgICAgIHJlc3VsdC5wZXJjZW50YWdlT2ZHcmVlbiA9IGdyZWVu
VGltZSAvICh0aGlzLl9yYW5nZUVuZFRpbWUgLSBlYXJsaWVzdFRpbWVJblJhbmdlV2l0aENvbG9y
KSAqIDEwMDsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdC5idWls
ZGJvdFJhbmdlRXJyb3JUZXh0ID0gIlF1ZXVlIGhhcyBubyByZXN1bHRzIGluIHRoaXMgcmFuZ2Ui
OwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9jb3VudFRpbWVzOiBmdW5jdGlvbihxdWV1ZXMs
IHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHZhciByZWxldmFudEl0ZXJhdGlvbnNCeVF1ZXVlID0g
e307Ci0gICAgICAgIHF1ZXVlcy5mb3JFYWNoKGZ1bmN0aW9uKHF1ZXVlKSB7Ci0gICAgICAgICAg
ICByZWxldmFudEl0ZXJhdGlvbnNCeVF1ZXVlW3F1ZXVlLmlkXSA9IHF1ZXVlLml0ZXJhdGlvbnMu
ZmlsdGVyKGZ1bmN0aW9uKGl0ZXJhdGlvbikgewotICAgICAgICAgICAgICAgIHJldHVybiBpdGVy
YXRpb24ucHJvZHVjdGl2ZSAmJiBpdGVyYXRpb24uc3RhcnRUaW1lID4gdGhpcy5fcmFuZ2VTdGFy
dFRpbWUgJiYgaXRlcmF0aW9uLmVuZFRpbWUgPCB0aGlzLl9yYW5nZUVuZFRpbWU7Ci0gICAgICAg
ICAgICB9LCB0aGlzKTsKLSAgICAgICAgICAgIHJlbGV2YW50SXRlcmF0aW9uc0J5UXVldWVbcXVl
dWUuaWRdLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYS5lbmRUaW1lIC0gYi5lbmRUaW1l
OyB9KTsKLSAgICAgICAgfSwgdGhpcyk7Ci0KLSAgICAgICAgdmFyIHRpbWVzID0gW107Ci0gICAg
ICAgIHZhciBvd25UaW1lcyA9IFtdOwotICAgICAgICB2YXIgd29yc3RUaW1lID0gMDsKLSAgICAg
ICAgdmFyIHdvcnN0T3duVGltZSA9IDAKLSAgICAgICAgdmFyIHdvcnN0VGltZVJldmlzaW9uOwot
ICAgICAgICB2YXIgd29yc3RPd25UaW1lUmV2aXNpb247Ci0KLSAgICAgICAgRGFzaGJvYXJkLlJl
cG9zaXRvcnkuT3BlblNvdXJjZS50cmFjLnJlY29yZGVkQ29tbWl0cy5mb3JFYWNoKGZ1bmN0aW9u
KHJldmlzaW9uKSB7Ci0gICAgICAgICAgICBpZiAocmV2aXNpb24uZGF0ZSA8IHRoaXMuX3Jhbmdl
U3RhcnRUaW1lIHx8IHJldmlzaW9uLmRhdGUgPj0gdGhpcy5fcmFuZ2VFbmRUaW1lKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgdmFyIGVuZFRpbWUgPSAtMTsKLSAgICAg
ICAgICAgIHZhciBvd25UaW1lID0gLTE7Ci0gICAgICAgICAgICBxdWV1ZXMuZm9yRWFjaChmdW5j
dGlvbihxdWV1ZSkgewotICAgICAgICAgICAgICAgIGlmICghKHJldmlzaW9uLnJldmlzaW9uTnVt
YmVyIGluIHRoaXMuX3RyaWdnZXJpbmdDb21taXRzQnlUcmlnZ2VyaW5nUXVldWVbdGhpcy5fdHJp
Z2dlcmluZ1F1ZXVlKHF1ZXVlKS5pZF0pKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWxldmFudEl0ZXJhdGlvbnNCeVF1
ZXVlW3F1ZXVlLmlkXS5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgaXRl
cmF0aW9uID0gcmVsZXZhbnRJdGVyYXRpb25zQnlRdWV1ZVtxdWV1ZS5pZF1baV07Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChpdGVyYXRpb24ucmV2aXNpb25bRGFzaGJvYXJkLlJlcG9zaXRvcnku
T3BlblNvdXJjZS5uYW1lXSA+PSByZXZpc2lvbi5yZXZpc2lvbk51bWJlcikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgZW5kVGltZSA9IE1hdGgubWF4KGVuZFRpbWUsIGl0ZXJhdGlvbi5lbmRU
aW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG93blRpbWUgPSBNYXRoLm1heChvd25UaW1l
LCBpdGVyYXRpb24uZW5kVGltZSAtIGl0ZXJhdGlvbi5zdGFydFRpbWUpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9LCB0aGlzKTsKLSAgICAgICAgICAgIGlmIChlbmRUaW1lID49IDAp
IHsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChvd25UaW1lID49IDApOwotICAgICAg
ICAgICAgICAgIHZhciB0aW1lID0gZW5kVGltZSAtIHJldmlzaW9uLmRhdGU7Ci0gICAgICAgICAg
ICAgICAgdGltZXMucHVzaCh0aW1lKTsKLSAgICAgICAgICAgICAgICBvd25UaW1lcy5wdXNoKG93
blRpbWUpOwotICAgICAgICAgICAgICAgIGlmICh0aW1lID4gd29yc3RUaW1lKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHdvcnN0VGltZSA9IHRpbWU7Ci0gICAgICAgICAgICAgICAgICAgIHdvcnN0
VGltZUNvbW1pdCA9IHJldmlzaW9uLnJldmlzaW9uTnVtYmVyOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBpZiAob3duVGltZSA+IHdvcnN0T3duVGltZSkgewotICAgICAgICAg
ICAgICAgICAgICB3b3JzdE93blRpbWUgPSBvd25UaW1lOwotICAgICAgICAgICAgICAgICAgICB3
b3JzdE93blRpbWVDb21taXQgPSByZXZpc2lvbi5yZXZpc2lvbk51bWJlcjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sIHRoaXMpOwotCi0gICAgICAgIHJlc3Vs
dC5hdmVyYWdlU2Vjb25kc0Zyb21Db21taXQgPSB0aW1lcy5hdmVyYWdlKCkgLyAxMDAwOwotICAg
ICAgICByZXN1bHQubWVkaWFuU2Vjb25kc0Zyb21Db21taXQgPSB0aW1lcy5tZWRpYW4oKSAvIDEw
MDA7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHdvcnN0VGltZSA9PT0gTWF0aC5tYXguYXBwbHko
TWF0aCwgdGltZXMpKTsKLSAgICAgICAgcmVzdWx0LndvcnN0U2Vjb25kc0Zyb21Db21taXQgPSB3
b3JzdFRpbWUgLyAxMDAwOwotICAgICAgICByZXN1bHQucmV2aXNpb25XaXRoV29yc3RUaW1lRnJv
bUNvbW1pdCA9IHdvcnN0VGltZUNvbW1pdDsKLQotICAgICAgICByZXN1bHQuYXZlcmFnZVNlY29u
ZHNPd25UaW1lID0gb3duVGltZXMuYXZlcmFnZSgpIC8gMTAwMDsKLSAgICAgICAgcmVzdWx0Lm1l
ZGlhblNlY29uZHNPd25UaW1lID0gb3duVGltZXMubWVkaWFuKCkgLyAxMDAwOwotICAgICAgICBy
ZXN1bHQud29yc3RTZWNvbmRzT3duVGltZSA9IHdvcnN0T3duVGltZSAvIDEwMDA7Ci0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHdvcnN0T3duVGltZSA9PT0gTWF0aC5tYXguYXBwbHkoTWF0aCwgb3du
VGltZXMpKTsKLSAgICAgICAgcmVzdWx0LnJldmlzaW9uV2l0aFdvcnN0T3duVGltZSA9IHdvcnN0
T3duVGltZUNvbW1pdDsKLSAgICB9LAotCi0gICAgX2FuYWx5emVRdWV1ZTogZnVuY3Rpb24ocXVl
dWUpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fdHJpZ2dlcmluZ1F1ZXVlKHF1ZXVlKS5pZCA9
PT0gcXVldWUuaWQgJiYgIShxdWV1ZS5pZCBpbiB0aGlzLl90cmlnZ2VyaW5nQ29tbWl0c0J5VHJp
Z2dlcmluZ1F1ZXVlKSkKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFRyaWdnZXJpbmdDb21taXRz
Rm9yVHJpZ2dlcmluZ1F1ZXVlKHF1ZXVlKTsKLQotICAgICAgICB2YXIgcmVzdWx0ID0geyBxdWV1
ZUlEOiBxdWV1ZS5pZCB9OwotICAgICAgICB0aGlzLl9jb3VudFBlcmNlbnRhZ2VPZkdyZWVuKFtx
dWV1ZV0sIHJlc3VsdCk7Ci0gICAgICAgIHRoaXMuX2NvdW50VGltZXMoW3F1ZXVlXSwgcmVzdWx0
KTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhBbmFseXplci5FdmVu
dC5RdWV1ZVJlc3VsdHMsIHJlc3VsdCk7Ci0gICAgfSwKLQotICAgIF9hbmFseXplQWdncmVnYXRl
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgYnVpbGRlclF1ZXVlcyA9IHRoaXMuX3F1
ZXVlcy5maWx0ZXIoZnVuY3Rpb24ocXVldWUpIHsgcmV0dXJuIHF1ZXVlLmJ1aWxkZXI7IH0pOwot
Ci0gICAgICAgIHZhciBidWlsZGVyc1Jlc3VsdCA9IHsgcXVldWVJRDogYWxsQnVpbGRlclJlc3Vs
dHNQc2V1ZG9RdWV1ZS5pZCB9OwotICAgICAgICB0aGlzLl9jb3VudFBlcmNlbnRhZ2VPZkdyZWVu
KGJ1aWxkZXJRdWV1ZXMsIGJ1aWxkZXJzUmVzdWx0KTsKLSAgICAgICAgdGhpcy5fY291bnRUaW1l
cyhidWlsZGVyUXVldWVzLCBidWlsZGVyc1Jlc3VsdCk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKEFuYWx5emVyLkV2ZW50LlF1ZXVlUmVzdWx0cywgYnVpbGRlcnNSZXN1
bHQpOwotCi0gICAgICAgIHZhciBhbGxRdWV1ZXNSZXN1bHQgPSB7IHF1ZXVlSUQ6IGFsbFJlc3Vs
dHNQc2V1ZG9RdWV1ZS5pZCB9OwotICAgICAgICB0aGlzLl9jb3VudFBlcmNlbnRhZ2VPZkdyZWVu
KHRoaXMuX3F1ZXVlcywgYWxsUXVldWVzUmVzdWx0KTsKLSAgICAgICAgdGhpcy5fY291bnRUaW1l
cyh0aGlzLl9xdWV1ZXMsIGFsbFF1ZXVlc1Jlc3VsdCk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKEFuYWx5emVyLkV2ZW50LlF1ZXVlUmVzdWx0cywgYWxsUXVldWVzUmVz
dWx0KTsKLSAgICB9LAotCi0gICAgX2FuYWx5emU6IGZ1bmN0aW9uKHF1ZXVlKQotICAgIHsKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5faGFzVHJhY0RhdGEpOwotCi0gICAgICAgIHRoaXMu
X3F1ZXVlc1JlYWR5VG9BbmFseXplLmZvckVhY2goZnVuY3Rpb24ocXVldWUpIHsKLSAgICAgICAg
ICAgIHRoaXMuX2FuYWx5emVRdWV1ZShxdWV1ZSk7Ci0gICAgICAgIH0sIHRoaXMpOwotCi0gICAg
ICAgIHRoaXMuX3F1ZXVlc1JlYWR5VG9BbmFseXplID0gW107Ci0KLSAgICAgICAgaWYgKCFPYmpl
Y3Qua2V5cyh0aGlzLl9yZW1haW5pbmdRdWV1ZXMpLmxlbmd0aCkgewotICAgICAgICAgICAgdGhp
cy5fYW5hbHl6ZUFnZ3JlZ2F0ZSgpOwotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoQW5hbHl6ZXIuRXZlbnQuRmluaXNoZWQsIG51bGwpOwotICAgICAgICB9Ci0gICAg
fSwKLQotICAgIF9sb2FkZWRGcm9tVHJhYzogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAg
ICB0aGlzLl9oYXNUcmFjRGF0YSA9IGV2ZW50LmRhdGFbMF0gPD0gdGhpcy5fcmFuZ2VTdGFydFRp
bWUgJiYgZXZlbnQuZGF0YVsxXSA+PSB0aGlzLl9yYW5nZUVuZFRpbWU7Ci0gICAgICAgIGlmICh0
aGlzLl9oYXNUcmFjRGF0YSkKLSAgICAgICAgICAgIHRoaXMuX2FuYWx5emUoKTsKLSAgICB9LAot
Ci0gICAgX2xvYWRlZEZyb21CdWlsZGJvdDogZnVuY3Rpb24ocXVldWUpCi0gICAgewotICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLl9xdWV1ZUJlaW5nTG9hZGVkID09PSBxdWV1ZS5pZCk7Ci0g
ICAgICAgIHRoaXMuX3F1ZXVlQmVpbmdMb2FkZWQgPSBudWxsOwotCi0gICAgICAgIGlmIChxdWV1
ZS5pZCBpbiB0aGlzLl9yZW1haW5pbmdRdWV1ZXMpIHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9yZW1haW5pbmdRdWV1ZXNbcXVldWUuaWRdOwotICAgICAgICAgICAgdGhpcy5fcXVldWVzUmVh
ZHlUb0FuYWx5emUucHVzaChxdWV1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHZhciBx
dWV1ZUlEIGluIHRoaXMuX3JlbWFpbmluZ1F1ZXVlcykgewotICAgICAgICAgICAgdmFyIHF1ZXVl
ID0gdGhpcy5fcmVtYWluaW5nUXVldWVzW3F1ZXVlSURdOwotICAgICAgICAgICAgY29uc29sZS5h
c3NlcnQocXVldWUuaWQgPT09IHF1ZXVlSUQpOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
IXF1ZXVlLml0ZXJhdGlvbnMubGVuZ3RoKTsKLSAgICAgICAgICAgIHRoaXMuX3F1ZXVlQmVpbmdM
b2FkZWQgPSBxdWV1ZUlEOwotICAgICAgICAgICAgcXVldWUubG9hZEFsbCh0aGlzLl9sb2FkZWRG
cm9tQnVpbGRib3QuYmluZCh0aGlzKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICh0aGlzLl9oYXNUcmFjRGF0YSkKLSAgICAgICAgICAgIHRoaXMuX2FuYWx5
emUoKTsKLSAgICB9LAotCi0gICAgX2FuYWx5emVCdWJibGVQZXJmb3JtYW5jZTogZnVuY3Rpb24o
cXVldWVJRCwgcGF0Y2hlcykKLSAgICB7Ci0gICAgICAgIHZhciBwYXRjaGVzVGhhdENhdXNlZElu
dGVybmFsRXJyb3IgPSBbXTsKLSAgICAgICAgZm9yIChwYXRjaElEIGluIHBhdGNoZXMpIHsKLSAg
ICAgICAgICAgIGlmIChwYXRjaGVzW3BhdGNoSURdLnJlc29sdXRpb24gPT09ICJpbnRlcm5hbCBl
cnJvciIpCi0gICAgICAgICAgICAgICAgcGF0Y2hlc1RoYXRDYXVzZWRJbnRlcm5hbEVycm9yLnB1
c2gocGF0Y2hJRCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgd2FpdFRpbWVzID0gW107Ci0g
ICAgICAgIHZhciBwYXRjaGVzVGhhdFdhaXRlZE1vcmVUaGFuM01pbnV0ZXMgPSBbXTsKLSAgICAg
ICAgdmFyIHRvdGFsVGltZXMgPSBbXTsKLSAgICAgICAgdmFyIHRvdGFsVGltZXNGb3JQYXRjaGVz
VGhhdFdlcmVOb3RSZXRyaWVkID0gW107Ci0gICAgICAgIHZhciB0b3RhbFRpbWVzRm9yUGF0Y2hl
c1RoYXRTcGlubmVkQW5kUGFzc2VkT3JGYWlsZWQgPSBbXTsKLSAgICAgICAgdmFyIHBhdGNoZXNU
aGF0RGlkTm90Q29tcGxldGUgPSBbXTsKLSAgICAgICAgdmFyIHJldHJ5Q291bnRzID0gW107Ci0g
ICAgICAgIHZhciBwYXRjaGVzVGhhdFNwaW5uZWRBbmREaWROb3RDb21wbGV0ZSA9IFtdOwotICAg
ICAgICB2YXIgcGF0Y2hlc1RoYXRTcGlubmVkQW5kQ2Vhc2VkVG9BcHBseSA9IFtdOwotICAgICAg
ICB2YXIgcGF0Y2hlc1RoYXRTcGlubmVkQW5kUGFzc2VkT3JGYWlsZWQgPSBbXTsKLSAgICAgICAg
dmFyIHBhdGNoZXNEaWROb3RBcHBseSA9IFtdOwotICAgICAgICBmb3IgKHBhdGNoSUQgaW4gcGF0
Y2hlcykgewotICAgICAgICAgICAgdmFyIHBhdGNoID0gcGF0Y2hlc1twYXRjaElEXTsKLQotICAg
ICAgICAgICAgLy8gV2FpdCB0aW1lIGlzIGVxdWFsbHkgaW50ZXJlc3RpbmcgZm9yIGFsbCBwYXRj
aGVzLgotICAgICAgICAgICAgd2FpdFRpbWVzLnB1c2gocGF0Y2gud2FpdF9kdXJhdGlvbik7Ci0K
LSAgICAgICAgICAgIGlmIChwYXRjaC53YWl0X2R1cmF0aW9uID4gMyAqIDYwKQotICAgICAgICAg
ICAgICAgIHBhdGNoZXNUaGF0V2FpdGVkTW9yZVRoYW4zTWludXRlcy5wdXNoKHBhdGNoSUQpOwot
Ci0gICAgICAgICAgICBpZiAocGF0Y2gucmVzb2x1dGlvbiA9PT0gIm5vdCBwcm9jZXNzZWQiKQot
ICAgICAgICAgICAgICAgIHBhdGNoZXNUaGF0RGlkTm90Q29tcGxldGUucHVzaChwYXRjaElEKTsK
LQotICAgICAgICAgICAgaWYgKHBhdGNoLnJldHJ5X2NvdW50ID09PSAwKQotICAgICAgICAgICAg
ICAgIHRvdGFsVGltZXNGb3JQYXRjaGVzVGhhdFdlcmVOb3RSZXRyaWVkLnB1c2gocGF0Y2gud2Fp
dF9kdXJhdGlvbiArIHBhdGNoLnByb2Nlc3NfZHVyYXRpb24pOwotICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgcmV0cnlDb3VudHMucHVzaChwYXRjaC5yZXRyeV9jb3VudCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHBhdGNoLnJlc29sdXRpb24gPT09ICJub3QgcHJvY2Vzc2VkIikK
LSAgICAgICAgICAgICAgICAgICAgcGF0Y2hlc1RoYXRTcGlubmVkQW5kRGlkTm90Q29tcGxldGUu
cHVzaChwYXRjaElEKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChwYXRjaC5yZXNvbHV0aW9u
ID09PSAiY291bGQgbm90IGFwcGx5IikKLSAgICAgICAgICAgICAgICAgICAgcGF0Y2hlc1RoYXRT
cGlubmVkQW5kQ2Vhc2VkVG9BcHBseS5wdXNoKHBhdGNoSUQpOwotICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHBhdGNoLnJlc29sdXRpb24gPT09ICJwYXNzIiB8fCBwYXRjaC5yZXNvbHV0aW9uID09
PSAiZmFpbCIpIHsKLSAgICAgICAgICAgICAgICAgICAgcGF0Y2hlc1RoYXRTcGlubmVkQW5kUGFz
c2VkT3JGYWlsZWQucHVzaChwYXRjaElEKTsKLSAgICAgICAgICAgICAgICAgICAgdG90YWxUaW1l
c0ZvclBhdGNoZXNUaGF0U3Bpbm5lZEFuZFBhc3NlZE9yRmFpbGVkLnB1c2gocGF0Y2gud2FpdF9k
dXJhdGlvbiArIHBhdGNoLnByb2Nlc3NfZHVyYXRpb24pOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQW5hbHl6ZSBwcm9jZXNzaW5nIHBlcmZvcm1h
bmNlIGZvciBwYXRjaGVzIHRoYXQgd2VyZSBkZWZpbml0ZWx5IHByb2Nlc3NlZC4KLSAgICAgICAg
ICAgIC8vIFdlIGNhbid0IHRhcmdldCBpbXByb3ZpbmcgcGVyZm9ybWFuY2Ugb2Ygb3RoZXJzIChz
dWNoIGFzIHBhdGNoZXMgdGhhdCB3ZXJlIG9ic29sZXRlZCB3aGlsZSBpbiB0aGUgcXVldWUpLgot
ICAgICAgICAgICAgLy8gUGF0Y2hlcyB0aGF0IGRvbid0IGFwcGx5IHRvIHRydW5rIGhhdmUgdG8g
YmUgZXhjbHVkZWQsIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlCi0gICAgICAgICAgICAvLyBnZXQgdGlt
ZXMgZm9yIHBhdGNoZXMgdGhhdCBzcGlubmVkIHVudGlsIHRoZXkgY2Vhc2VkIHRvIGFwcGx5Lgot
ICAgICAgICAgICAgaWYgKHBhdGNoLnJlc29sdXRpb24gPT09ICJwYXNzIiB8fCBwYXRjaC5yZXNv
bHV0aW9uID09PSAiZmFpbCIpCi0gICAgICAgICAgICAgICAgdG90YWxUaW1lcy5wdXNoKHBhdGNo
LndhaXRfZHVyYXRpb24gKyBwYXRjaC5wcm9jZXNzX2R1cmF0aW9uKTsKLQotICAgICAgICAgICAg
aWYgKHBhdGNoLnJlc29sdXRpb24gPT09ICJjb3VsZCBub3QgYXBwbHkiKQotICAgICAgICAgICAg
ICAgIHBhdGNoZXNEaWROb3RBcHBseS5wdXNoKHBhdGNoSUQpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdmFyIHJlc3VsdCA9IHsKLSAgICAgICAgICAgIHF1ZXVlSUQ6IHF1ZXVlSUQsCi0gICAgICAg
ICAgICB0b3RhbFBhdGNoZXM6IE9iamVjdC5rZXlzKHBhdGNoZXMpLmxlbmd0aCwKLSAgICAgICAg
ICAgIHBhdGNoZXNUaGF0RGlkTm90Q29tcGxldGVDb3VudDogcGF0Y2hlc1RoYXREaWROb3RDb21w
bGV0ZS5sZW5ndGgsCi0gICAgICAgICAgICBwYXRjaGVzV2l0aFJldHJpZXNDb3VudDogcmV0cnlD
b3VudHMubGVuZ3RoLAotICAgICAgICAgICAgcGF0Y2hlc1RoYXREaWROb3RBcHBseUNvdW50OiBw
YXRjaGVzRGlkTm90QXBwbHkubGVuZ3RoLAotICAgICAgICAgICAgcGF0Y2hlc1RoYXRTcGlubmVk
QW5kRGlkTm90Q29tcGxldGVDb3VudDogcGF0Y2hlc1RoYXRTcGlubmVkQW5kRGlkTm90Q29tcGxl
dGUubGVuZ3RoLAotICAgICAgICAgICAgcGF0Y2hlc1RoYXRTcGlubmVkQW5kQ2Vhc2VkVG9BcHBs
eUNvdW50OiBwYXRjaGVzVGhhdFNwaW5uZWRBbmRDZWFzZWRUb0FwcGx5Lmxlbmd0aCwKLSAgICAg
ICAgICAgIHBhdGNoZXNUaGF0U3Bpbm5lZEFuZFBhc3NlZE9yRmFpbGVkQ291bnQ6IHBhdGNoZXNU
aGF0U3Bpbm5lZEFuZFBhc3NlZE9yRmFpbGVkLmxlbmd0aCwKLSAgICAgICAgICAgIG1lZGlhblRv
dGFsVGltZUZvclBhdGNoZXNUaGF0U3Bpbm5lZEFuZFBhc3NlZE9yRmFpbGVkSW5TZWNvbmRzOiB0
b3RhbFRpbWVzRm9yUGF0Y2hlc1RoYXRTcGlubmVkQW5kUGFzc2VkT3JGYWlsZWQubWVkaWFuKCks
Ci0gICAgICAgICAgICBhdmVyYWdlVG90YWxUaW1lRm9yUGF0Y2hlc1RoYXRTcGlubmVkQW5kUGFz
c2VkT3JGYWlsZWRJblNlY29uZHM6IHRvdGFsVGltZXNGb3JQYXRjaGVzVGhhdFNwaW5uZWRBbmRQ
YXNzZWRPckZhaWxlZC5hdmVyYWdlKCksCi0gICAgICAgICAgICBtZWRpYW5XYWl0VGltZUluU2Vj
b25kczogd2FpdFRpbWVzLm1lZGlhbigpLAotICAgICAgICAgICAgYXZlcmFnZVdhaXRUaW1lSW5T
ZWNvbmRzOiB3YWl0VGltZXMuYXZlcmFnZSgpLAotICAgICAgICAgICAgbWF4aW11bVdhaXRUaW1l
SW5TZWNvbmRzOiBNYXRoLm1heC5hcHBseShNYXRoLCB3YWl0VGltZXMpLAotICAgICAgICAgICAg
cGF0Y2hlc1RoYXRXYWl0ZWRNb3JlVGhhbjNNaW51dGVzQ291bnQ6IHBhdGNoZXNUaGF0V2FpdGVk
TW9yZVRoYW4zTWludXRlcy5sZW5ndGgsCi0gICAgICAgICAgICBwYXRjaGVzVGhhdENhdXNlZElu
dGVybmFsRXJyb3I6IHBhdGNoZXNUaGF0Q2F1c2VkSW50ZXJuYWxFcnJvciwKLSAgICAgICAgfTsK
LQotICAgICAgICBpZiAodG90YWxUaW1lcy5sZW5ndGgpIHsKLSAgICAgICAgICAgIHJlc3VsdC5t
ZWRpYW5Ub3RhbFRpbWVJblNlY29uZHMgPSB0b3RhbFRpbWVzLm1lZGlhbigpOwotICAgICAgICAg
ICAgcmVzdWx0LmF2ZXJhZ2VUb3RhbFRpbWVJblNlY29uZHMgPSB0b3RhbFRpbWVzLmF2ZXJhZ2Uo
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0b3RhbFRpbWVzRm9yUGF0Y2hlc1RoYXRXZXJl
Tm90UmV0cmllZC5sZW5ndGgpIHsKLSAgICAgICAgICAgIHJlc3VsdC5tZWRpYW5Ub3RhbFRpbWVG
b3JQYXRjaGVzVGhhdFdlcmVOb3RSZXRyaWVkSW5TZWNvbmRzID0gdG90YWxUaW1lc0ZvclBhdGNo
ZXNUaGF0V2VyZU5vdFJldHJpZWQubWVkaWFuKCk7Ci0gICAgICAgICAgICByZXN1bHQuYXZlcmFn
ZVRvdGFsVGltZUZvclBhdGNoZXNUaGF0V2VyZU5vdFJldHJpZWRJblNlY29uZHMgPSB0b3RhbFRp
bWVzRm9yUGF0Y2hlc1RoYXRXZXJlTm90UmV0cmllZC5hdmVyYWdlKCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhBbmFseXplci5FdmVudC5RdWV1
ZVJlc3VsdHMsIHJlc3VsdCk7Ci0gICAgfSwKLQotICAgIF9hbmFseXplQWxsQnViYmxlc1BlcmZv
cm1hbmNlOiBmdW5jdGlvbihkYXRhQnlQYXRjaCkKLSAgICB7Ci0gICAgICAgIHZhciBkYXRhID0g
e307Ci0gICAgICAgIGZvciAocXVldWVJRCBpbiBidWJibGVRdWV1ZVNlcnZlci5xdWV1ZXMpCi0g
ICAgICAgICAgICBkYXRhW3F1ZXVlSURdID0ge307Ci0KLSAgICAgICAgZm9yIChwYXRjaElEIGlu
IGRhdGFCeVBhdGNoKSB7Ci0gICAgICAgICAgICBmb3IgKHF1ZXVlSUQgaW4gZGF0YUJ5UGF0Y2hb
cGF0Y2hJRF0pIHsKLSAgICAgICAgICAgICAgICBpZiAoIShxdWV1ZUlEIGluIGRhdGEpKQotICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB2YXIgcGF0Y2hEYXRh
ID0gZGF0YUJ5UGF0Y2hbcGF0Y2hJRF1bcXVldWVJRF07Ci0gICAgICAgICAgICAgICAgaWYgKHBh
dGNoRGF0YS5kYXRlIDwgdGhpcy5mcm9tRGF0ZSB8fCBwYXRjaERhdGEuZGF0ZSA+IHRoaXMudG9E
YXRlKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAo
cGF0Y2hEYXRhLnJlc29sdXRpb24gPT09ICJpbiBwcm9ncmVzcyIpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGRhdGFbcXVldWVJRF1bcGF0Y2hJRF0gPSBw
YXRjaERhdGE7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICBmb3IgKHF1ZXVl
SUQgaW4gZGF0YSkKLSAgICAgICAgICAgIHRoaXMuX2FuYWx5emVCdWJibGVQZXJmb3JtYW5jZShx
dWV1ZUlELCBkYXRhW3F1ZXVlSURdKTsKLSAgICB9LAotCi0gICAgX2xvYWRlZEJ1YmJsZXNUaW1p
bmc6IGZ1bmN0aW9uKGRhdGEsIGZyb21UaW1lLCB0b1RpbWUpCi0gICAgewotICAgICAgICAvLyBP
bmx5IGFuYWx5emUgaWYgdGhlIGRhdGEgY292ZXJzIHRoZSBsYXRlc3QgcmFuZ2UgcmVxdWVzdGVk
IGJ5IHRoZSB1c2VyLgotICAgICAgICAvLyBJdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxv
YWRlZCBvbmUgaWYgdGhlIHVzZXIgcXVpY2tseSByZXF1ZXN0ZWQgbXVsdGlwbGUgcmFuZ2VzLgot
ICAgICAgICBpZiAoZnJvbVRpbWUgPiB0aGlzLl9yYW5nZVN0YXJ0VGltZSB8fCB0b1RpbWUgPCB0
aGlzLl9yYW5nZUVuZFRpbWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX2Fu
YWx5emVBbGxCdWJibGVzUGVyZm9ybWFuY2UoZGF0YSk7Ci0gICAgfSwKLX07CgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc0FuYWx5emVyLmpzCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLXRl
eHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3Jp
cHRzL01ldHJpY3NCdWJibGVWaWV3LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9NZXRy
aWNzQnViYmxlVmlldy5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJp
Y3NCdWJibGVWaWV3LmpzCShub25leGlzdGVudCkKQEAgLTEsMTg2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi1NZXRyaWNzQnViYmxlVmlldyA9IGZ1bmN0aW9uKGFuYWx5emVyLCBxdWV1ZSkKLXsKLSAg
ICBCYXNlT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicXVl
dWUtdmlldyIpOwotCi0gICAgdGhpcy5fcmVzdWx0cyA9IG51bGw7Ci0KLSAgICB0aGlzLl9xdWV1
ZSA9IHF1ZXVlOwotCi0gICAgYW5hbHl6ZXIuYWRkRXZlbnRMaXN0ZW5lcihBbmFseXplci5FdmVu
dC5TdGFydGluZywgdGhpcy5fY2xlYXJSZXN1bHRzLCB0aGlzKTsKLSAgICBhbmFseXplci5hZGRF
dmVudExpc3RlbmVyKEFuYWx5emVyLkV2ZW50LlF1ZXVlUmVzdWx0cywgdGhpcy5fcXVldWVSZXN1
bHRzQWRkZWQsIHRoaXMpOwotICAgIAotICAgIHRoaXMuX3VwZGF0ZVNvb24oKTsKLX07Ci0KLU1l
dHJpY3NCdWJibGVWaWV3LlVwZGF0ZVNvb25UaW1lb3V0ID0gMTAwOyAvLyAxMDAgbXMKLQotQmFz
ZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhNZXRyaWNzQnViYmxlVmlldyk7Ci0KLU1l
dHJpY3NCdWJibGVWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogTWV0cmljc0J1
YmJsZVZpZXcsCi0gICAgX19wcm90b19fOiBCYXNlT2JqZWN0LnByb3RvdHlwZSwKLQotICAgIF9j
bGVhclJlc3VsdHM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Jlc3VsdHMgPSBu
dWxsOwotICAgICAgICB0aGlzLl91cGRhdGVTb29uKCk7Ci0gICAgfSwKLQotICAgIF9xdWV1ZVJl
c3VsdHNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcXVl
dWUuaWQgIT09IGV2ZW50LmRhdGEucXVldWVJRCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICB0aGlzLl9yZXN1bHRzID0gZXZlbnQuZGF0YTsKLSAgICAgICAgdGhpcy5fdXBkYXRlU29v
bigpOwotICAgIH0sCi0KLSAgICBfdXBkYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0
aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAgICBmdW5jdGlvbiBhZGRMaW5l
KGVsZW1lbnQsIHRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBsaW5lID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICBsaW5lLnRleHRDb250ZW50ID0g
dGV4dDsKLSAgICAgICAgICAgIGxpbmUuY2xhc3NMaXN0LmFkZCgicmVzdWx0LWxpbmUiKTsKLSAg
ICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQobGluZSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBmdW5jdGlvbiBhZGRFcnJvcihlbGVtZW50LCB0ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBhZGRMaW5lKGVsZW1lbnQsIHRleHQpOwotICAgICAgICAgICAgZWxlbWVudC5sYXN0Q2hpbGQu
Y2xhc3NMaXN0LmFkZCgiZXJyb3ItbGluZSIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rp
b24gYWRkRGl2aWRlcihlbGVtZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgZGl2aWRl
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgZGl2aWRlci5j
bGFzc0xpc3QuYWRkKCJkaXZpZGVyIik7Ci0gICAgICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxk
KGRpdmlkZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcGx1cmFsaXplTWludXRl
cyhpbnRlcnZhbEluU2Vjb25kcykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGludGVydmFs
SW5TZWNvbmRzIDwgNjApCi0gICAgICAgICAgICAgICAgcmV0dXJuICJsZXNzIHRoYW4gYSBtaW51
dGUiOwotICAgICAgICAgICAgZWxzZSBpZiAoaW50ZXJ2YWxJblNlY29uZHMgPCAxMjApCi0gICAg
ICAgICAgICAgICAgcmV0dXJuICIxXHhhMG1pbnV0ZSI7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoaW50ZXJ2YWxJblNlY29uZHMgLyA2MCkgKyAi
XHhhMG1pbnV0ZXMiOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gZm9ybWF0UGVyY2Vu
dGFnZShmcmFjdGlvbikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGZyYWN0aW9uID4gMCAm
JiBmcmFjdGlvbiA8IDAuMDEpCi0gICAgICAgICAgICAgICAgcmV0dXJuICI8IDElIjsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChmcmFjdGlvbiAq
IDEwMCkgKyAiJSI7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXRoaXMuX3Jlc3VsdHMpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHRoaXMuX3F1ZXVlLmlkID09PSAic3R5
bGUtcXVldWUiKSB7Ci0gICAgICAgICAgICBhZGREaXZpZGVyKHRoaXMuZWxlbWVudCk7Ci0gICAg
ICAgICAgICBhZGRMaW5lKHRoaXMuZWxlbWVudCwgIlRpbWUgdG8gcmVzdWx0OiIpOwotICAgICAg
ICAgICAgYWRkTGluZSh0aGlzLmVsZW1lbnQsICItIG1lZGlhbjogIiArIHBsdXJhbGl6ZU1pbnV0
ZXModGhpcy5fcmVzdWx0cy5tZWRpYW5Ub3RhbFRpbWVJblNlY29uZHMpICsgIjsiKTsKLSAgICAg
ICAgICAgIGFkZExpbmUodGhpcy5lbGVtZW50LCAiLSBhdmVyYWdlOiAiICsgcGx1cmFsaXplTWlu
dXRlcyh0aGlzLl9yZXN1bHRzLmF2ZXJhZ2VUb3RhbFRpbWVJblNlY29uZHMpICsgIi4iKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9yZXN1bHRzLnRvdGFsUGF0Y2hl
cyAhPT0gdGhpcy5fcmVzdWx0cy5wYXRjaGVzV2l0aFJldHJpZXNDb3VudCkgewotICAgICAgICAg
ICAgICAgIGFkZERpdmlkZXIodGhpcy5lbGVtZW50KTsKLSAgICAgICAgICAgICAgICB2YXIgbnVt
YmVyT2ZQYXRjaGVzVGhhdEhhZEZpbmFsUmVzdWx0c0F0Rmlyc3RUcnkgPSB0aGlzLl9yZXN1bHRz
LnRvdGFsUGF0Y2hlcyAtIHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1dpdGhSZXRyaWVzQ291bnQgLSB0
aGlzLl9yZXN1bHRzLnBhdGNoZXNUaGF0RGlkTm90Q29tcGxldGVDb3VudCArIHRoaXMuX3Jlc3Vs
dHMucGF0Y2hlc1RoYXRTcGlubmVkQW5kRGlkTm90Q29tcGxldGVDb3VudDsKLSAgICAgICAgICAg
ICAgICB2YXIgdGV4dCA9IGZvcm1hdFBlcmNlbnRhZ2UobnVtYmVyT2ZQYXRjaGVzVGhhdEhhZEZp
bmFsUmVzdWx0c0F0Rmlyc3RUcnkgLyB0aGlzLl9yZXN1bHRzLnRvdGFsUGF0Y2hlcykgKyAiIG9m
IHBhdGNoZXMgIjsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9ICh0aGlzLl9xdWV1ZS5pZCA9PT0g
ImNvbW1pdC1xdWV1ZSIpID8gIndlcmUgbGFuZGVkIG9yIHJlamVjdGVkIiA6ICJoYWQgZmluYWwg
cmVzdWx0cyI7Ci0gICAgICAgICAgICAgICAgdGV4dCArPSAiIGF0IGZpcnN0IHRyeS4gVGltZSB0
byByZXN1bHQ6IgotICAgICAgICAgICAgICAgIGFkZExpbmUodGhpcy5lbGVtZW50LCB0ZXh0KTsK
LSAgICAgICAgICAgICAgICBhZGRMaW5lKHRoaXMuZWxlbWVudCwgIi0gbWVkaWFuOiAiICsgcGx1
cmFsaXplTWludXRlcyh0aGlzLl9yZXN1bHRzLm1lZGlhblRvdGFsVGltZUZvclBhdGNoZXNUaGF0
V2VyZU5vdFJldHJpZWRJblNlY29uZHMpICsgIjsiKTsKLSAgICAgICAgICAgICAgICBhZGRMaW5l
KHRoaXMuZWxlbWVudCwgIi0gYXZlcmFnZTogIiArIHBsdXJhbGl6ZU1pbnV0ZXModGhpcy5fcmVz
dWx0cy5hdmVyYWdlVG90YWxUaW1lRm9yUGF0Y2hlc1RoYXRXZXJlTm90UmV0cmllZEluU2Vjb25k
cykgKyAiLiIpOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLl9yZXN1bHRzLnBhdGNoZXNUaGF0
RGlkTm90QXBwbHlDb3VudCAhPT0gdGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmRD
ZWFzZWRUb0FwcGx5Q291bnQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Jlc3Vs
dHMucGF0Y2hlc1RoYXREaWROb3RBcHBseUNvdW50IC0gdGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhh
dFNwaW5uZWRBbmRDZWFzZWRUb0FwcGx5Q291bnQgPT09IG51bWJlck9mUGF0Y2hlc1RoYXRIYWRG
aW5hbFJlc3VsdHNBdEZpcnN0VHJ5KQotICAgICAgICAgICAgICAgICAgICAgICAgYWRkTGluZSh0
aGlzLmVsZW1lbnQsICJOb25lIG9mIHRoZXNlIHBhdGNoZXMgYXBwbGllZCB0byB0cnVuay4iKTsK
LSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgYWRkTGlu
ZSh0aGlzLmVsZW1lbnQsICJUaGlzIGluY2x1ZGVzICIgKyBmb3JtYXRQZXJjZW50YWdlKCh0aGlz
Ll9yZXN1bHRzLnBhdGNoZXNUaGF0RGlkTm90QXBwbHlDb3VudCAtIHRoaXMuX3Jlc3VsdHMucGF0
Y2hlc1RoYXRTcGlubmVkQW5kQ2Vhc2VkVG9BcHBseUNvdW50KSAvIHRoaXMuX3Jlc3VsdHMudG90
YWxQYXRjaGVzKSArICIgdGhhdCBkaWQgbm90IGFwcGx5IHRvIHRydW5rLiIpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHRoaXMuX3Jlc3VsdHMu
cGF0Y2hlc1RoYXREaWROb3RDb21wbGV0ZUNvdW50ICE9PSB0aGlzLl9yZXN1bHRzLnBhdGNoZXNU
aGF0U3Bpbm5lZEFuZERpZE5vdENvbXBsZXRlQ291bnQpIHsKLSAgICAgICAgICAgICAgICBhZGRE
aXZpZGVyKHRoaXMuZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1l
bnQsIGZvcm1hdFBlcmNlbnRhZ2UoKHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXREaWROb3RDb21w
bGV0ZUNvdW50IC0gdGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmREaWROb3RDb21w
bGV0ZUNvdW50KSAvIHRoaXMuX3Jlc3VsdHMudG90YWxQYXRjaGVzKSArICIgb2YgcGF0Y2hlcyBj
ZWFzZWQgdG8gYmUgZWxpZ2libGUgZm9yIHByb2Nlc3NpbmcgYmVmb3JlIHRoZSBmaXJzdCB0cnkg
ZmluaXNoZWQuIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICh0aGlzLl9yZXN1
bHRzLnBhdGNoZXNXaXRoUmV0cmllc0NvdW50KSB7Ci0gICAgICAgICAgICAgICAgYWRkRGl2aWRl
cih0aGlzLmVsZW1lbnQpOwotICAgICAgICAgICAgICAgIHZhciB0ZXh0ID0gZm9ybWF0UGVyY2Vu
dGFnZSh0aGlzLl9yZXN1bHRzLnBhdGNoZXNXaXRoUmV0cmllc0NvdW50IC8gdGhpcy5fcmVzdWx0
cy50b3RhbFBhdGNoZXMpICsgIiBvZiBwYXRjaGVzIGhhZCB0byBiZSByZXRyaWVkIjsKLSAgICAg
ICAgICAgICAgICBpZiAodGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmREaWROb3RD
b21wbGV0ZUNvdW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gIiwgaW5jbHVkaW5n
ICIgKyBmb3JtYXRQZXJjZW50YWdlKHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXRTcGlubmVkQW5k
RGlkTm90Q29tcGxldGVDb3VudCAvIHRoaXMuX3Jlc3VsdHMudG90YWxQYXRjaGVzKSArICIgdGhh
dCBrZXB0IGJlaW5nIHJldHJpZWQgdW50aWwgdGhlIHBhdGNoIGJlY2FtZSBpbmVsaWdpYmxlIGZv
ciBwcm9jZXNzaW5nIjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Jlc3VsdHMucGF0
Y2hlc1RoYXRTcGlubmVkQW5kQ2Vhc2VkVG9BcHBseUNvdW50KQotICAgICAgICAgICAgICAgICAg
ICAgICAgdGV4dCArPSAiLCBhbmQgIiArIGZvcm1hdFBlcmNlbnRhZ2UodGhpcy5fcmVzdWx0cy5w
YXRjaGVzVGhhdFNwaW5uZWRBbmRDZWFzZWRUb0FwcGx5Q291bnQgLyB0aGlzLl9yZXN1bHRzLnRv
dGFsUGF0Y2hlcykgKyAiIHRoYXQga2VwdCBiZWluZyByZXRyaWVkIHVudGlsIHRoZSBwYXRjaCBj
ZWFzZWQgdG8gYXBwbHkgdG8gdHJ1bmsuIjsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAiLiI7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IGlmICh0aGlzLl9yZXN1bHRzLnBhdGNoZXNUaGF0U3Bpbm5lZEFuZENlYXNlZFRvQXBwbHlDb3Vu
dCkKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAiLCBpbmNsdWRpbmcgIiArIGZvcm1hdFBl
cmNlbnRhZ2UodGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmRDZWFzZWRUb0FwcGx5
Q291bnQgLyB0aGlzLl9yZXN1bHRzLnRvdGFsUGF0Y2hlcykgKyAiIHRoYXQgd2VyZSBzcGlubmlu
ZyB1bnRpbCB0aGUgcGF0Y2ggY2Vhc2VkIHRvIGFwcGx5IHRvIHRydW5rLiI7Ci0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9ICIuIjsKLSAgICAgICAgICAg
ICAgICBpZiAodGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmRQYXNzZWRPckZhaWxl
ZENvdW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gKHRoaXMuX3Jlc3VsdHMucGF0
Y2hlc1dpdGhSZXRyaWVzQ291bnQgPT09IHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXRTcGlubmVk
QW5kUGFzc2VkT3JGYWlsZWRDb3VudCkgPyAiIEFsbCBvZiB0aGVtIiA6ICIgIiArIGZvcm1hdFBl
cmNlbnRhZ2UodGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmRQYXNzZWRPckZhaWxl
ZENvdW50IC8gdGhpcy5fcmVzdWx0cy50b3RhbFBhdGNoZXMpOwotICAgICAgICAgICAgICAgICAg
ICB0ZXh0ICs9ICIgZmluYWxseSBwcm9kdWNlZCBhIHJlc3VsdCwgd2hpY2ggdG9vazoiOwotICAg
ICAgICAgICAgICAgICAgICBhZGRMaW5lKHRoaXMuZWxlbWVudCwgdGV4dCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGFkZExpbmUodGhpcy5lbGVtZW50LCAiLSBtZWRpYW46ICIgKyBwbHVyYWxpemVN
aW51dGVzKHRoaXMuX3Jlc3VsdHMubWVkaWFuVG90YWxUaW1lRm9yUGF0Y2hlc1RoYXRTcGlubmVk
QW5kUGFzc2VkT3JGYWlsZWRJblNlY29uZHMpICsgIjsiKTsKLSAgICAgICAgICAgICAgICAgICAg
YWRkTGluZSh0aGlzLmVsZW1lbnQsICItIGF2ZXJhZ2U6ICIgKyBwbHVyYWxpemVNaW51dGVzKHRo
aXMuX3Jlc3VsdHMuYXZlcmFnZVRvdGFsVGltZUZvclBhdGNoZXNUaGF0U3Bpbm5lZEFuZFBhc3Nl
ZE9yRmFpbGVkSW5TZWNvbmRzKSArICIuIik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGFkZExpbmUodGhpcy5lbGVtZW50LCB0ZXh0KTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIGFkZERpdmlkZXIodGhpcy5lbGVtZW50KTsKLSAgICAg
ICAgYWRkTGluZSh0aGlzLmVsZW1lbnQsICJXYWl0IHRpbWUgYmVmb3JlIHByb2Nlc3Npbmcgc3Rh
cnRlZDoiKTsKLSAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1lbnQsICItIG1lZGlhbjogIiArIHBs
dXJhbGl6ZU1pbnV0ZXModGhpcy5fcmVzdWx0cy5tZWRpYW5XYWl0VGltZUluU2Vjb25kcykgKyAi
OyIpOwotICAgICAgICBhZGRMaW5lKHRoaXMuZWxlbWVudCwgIi0gYXZlcmFnZTogIiArIHBsdXJh
bGl6ZU1pbnV0ZXModGhpcy5fcmVzdWx0cy5hdmVyYWdlV2FpdFRpbWVJblNlY29uZHMpICsgIi4i
KTsKLSAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1lbnQsICItIHdvcnN0OiAiICsgcGx1cmFsaXpl
TWludXRlcyh0aGlzLl9yZXN1bHRzLm1heGltdW1XYWl0VGltZUluU2Vjb25kcykgKyAiLiIpOwot
ICAgICAgICBpZiAodGhpcy5fcmVzdWx0cy5tZWRpYW5XYWl0VGltZUluU2Vjb25kcyA8IDMgKiA2
MCAmJiB0aGlzLl9yZXN1bHRzLnBhdGNoZXNUaGF0V2FpdGVkTW9yZVRoYW4zTWludXRlc0NvdW50
KQotICAgICAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1lbnQsIGZvcm1hdFBlcmNlbnRhZ2UodGhp
cy5fcmVzdWx0cy5wYXRjaGVzVGhhdFdhaXRlZE1vcmVUaGFuM01pbnV0ZXNDb3VudCAvIHRoaXMu
X3Jlc3VsdHMudG90YWxQYXRjaGVzKSArICIgb2YgcGF0Y2hlcyBoYWQgYSB3YWl0IHRpbWUgb2Yg
bW9yZSB0aGFuIDMgbWludXRlcy4iKTsKLQotICAgICAgICBpZiAodGhpcy5fcmVzdWx0cy5wYXRj
aGVzVGhhdENhdXNlZEludGVybmFsRXJyb3IubGVuZ3RoKSB7Ci0gICAgICAgICAgICBhZGREaXZp
ZGVyKHRoaXMuZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAodGhpcy5fcmVzdWx0cy5wYXRjaGVz
VGhhdENhdXNlZEludGVybmFsRXJyb3IubGVuZ3RoID09PSAxKQotICAgICAgICAgICAgICAgIGFk
ZEVycm9yKHRoaXMuZWxlbWVudCwgIk9uZSBwYXRjaCBjYXVzZWQgaW50ZXJuYWwgZXJyb3IiKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhZGRFcnJvcih0aGlzLmVsZW1lbnQs
IHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXRDYXVzZWRJbnRlcm5hbEVycm9yLmxlbmd0aCArICJc
eGEwcGF0Y2hlcyBjYXVzZWQgaW50ZXJuYWwgZXJyb3IsIHBsZWFzZSBzZWUgcGF0Y2ggbnVtYmVy
cyBpbiBjb25zb2xlIGxvZy4iKTsKLSAgICAgICAgICAgIGNvbnNvbGUubG9nKCJQYXRjaGVzIHRo
YXQgY2F1c2VkIGludGVybmFsIGVycm9yIGZvciAiICsgdGhpcy5fcmVzdWx0cy5xdWV1ZUlEICsg
IjogIiArIHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXRDYXVzZWRJbnRlcm5hbEVycm9yKTsKLSAg
ICAgICAgfQotICAgIH0sCi0KLSAgICBfdXBkYXRlU29vbjogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgc2V0VGltZW91dCh0aGlzLl91cGRhdGUuYmluZCh0aGlzKSwgTWV0cmljc0J1YmJsZVZp
ZXcuVXBkYXRlU29vblRpbWVvdXQpOwotICAgIH0sCi19OwoKUHJvcGVydHkgY2hhbmdlcyBvbjog
VG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9TY3JpcHRzL01ldHJpY3NCdWJibGVWaWV3LmpzCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3Zu
OmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvcGxhaW4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJp
Y3NNYWluLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9NZXRyaWNzTWFpbi5qcwkocmV2
aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJpY3NNYWluLmpzCShub25leGlzdGVu
dCkKQEAgLTEsMzgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIgaGFzQnViYmxlcyA9
IHR5cGVvZiBidWJibGVRdWV1ZVNlcnZlciAhPSAidW5kZWZpbmVkIjsKLQotdmFyIGFuYWx5emVy
ID0gbmV3IEFuYWx5emVyOwotCi12YXIgYWxsQnVpbGRlclJlc3VsdHNQc2V1ZG9RdWV1ZSA9IHsg
aWQ6ICJhbGxCdWlsZGVyUmVzdWx0c1BzZXVkb1F1ZXVlIiB9OwotdmFyIGFsbFJlc3VsdHNQc2V1
ZG9RdWV1ZSA9IHsgaWQ6ICJhbGxSZXN1bHRzUHNldWRvUXVldWUiIH07Ci0KLXZhciBjYXRlZ29y
aXplZFF1ZXVlc0J5UGxhdGZvcm1BbmRCdWlsZFR5cGUgPSB7fTsKLXZhciBwbGF0Zm9ybXNCeUZh
bWlseSA9IHt9OwotCi1mb3IgKHZhciBpID0gMDsgaSA8IGJ1aWxkYm90cy5sZW5ndGg7ICsraSkg
ewotICAgIHZhciBidWlsZGJvdCA9IGJ1aWxkYm90c1tpXTsKLSAgICBmb3IgKHZhciBpZCBpbiBi
dWlsZGJvdC5xdWV1ZXMpIHsKLSAgICAgICAgdmFyIHF1ZXVlID0gYnVpbGRib3QucXVldWVzW2lk
XTsKLSAgICAgICAgdmFyIHBsYXRmb3JtID0gY2F0ZWdvcml6ZWRRdWV1ZXNCeVBsYXRmb3JtQW5k
QnVpbGRUeXBlW3F1ZXVlLnBsYXRmb3JtXTsKLSAgICAgICAgaWYgKCFwbGF0Zm9ybSkKLSAgICAg
ICAgICAgIHBsYXRmb3JtID0gY2F0ZWdvcml6ZWRRdWV1ZXNCeVBsYXRmb3JtQW5kQnVpbGRUeXBl
W3F1ZXVlLnBsYXRmb3JtXSA9IHt9OwotICAgICAgICBpZiAoIXBsYXRmb3JtLmJ1aWxkZXJzKQot
ICAgICAgICAgICAgcGxhdGZvcm0uYnVpbGRlcnMgPSB7fTsKLQotICAgICAgICB2YXIgY2F0ZWdv
cnlOYW1lOwotICAgICAgICBpZiAocXVldWUuYnVpbGRlcikKLSAgICAgICAgICAgIGNhdGVnb3J5
TmFtZSA9ICJidWlsZGVycyI7Ci0gICAgICAgIGVsc2UgaWYgKHF1ZXVlLnRlc3RlcikKLSAgICAg
ICAgICAgIGNhdGVnb3J5TmFtZSA9IHF1ZXVlLnRlc3RDYXRlZ29yeTsKLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydCgiVW5rbm93biBxdWV1ZSB0eXBlLiIpOwotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXRlZ29yeSA9IHBsYXRm
b3JtW2NhdGVnb3J5TmFtZV07Ci0gICAgICAgIGlmICghY2F0ZWdvcnkpCi0gICAgICAgICAgICBj
YXRlZ29yeSA9IHBsYXRmb3JtW2NhdGVnb3J5TmFtZV0gPSB7fTsKLQotICAgICAgICB2YXIgYnVp
bGRUeXBlID0gcXVldWUuZGVidWcgPyAiZGVidWciIDogInJlbGVhc2UiOwotCi0gICAgICAgIGJ1
aWxkUXVldWVzID0gY2F0ZWdvcnlbYnVpbGRUeXBlXTsKLSAgICAgICAgaWYgKCFidWlsZFF1ZXVl
cykKLSAgICAgICAgICAgIGJ1aWxkUXVldWVzID0gY2F0ZWdvcnlbYnVpbGRUeXBlXSA9IFtdOwot
Ci0gICAgICAgIGJ1aWxkUXVldWVzLnB1c2gocXVldWUpOwotICAgIH0KLX0KLQotdmFyIHRlc3RO
YW1lcyA9IHt9OwotdGVzdE5hbWVzW0J1aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJLaXQyXSA9ICJX
SzIgVGVzdHMiOwotdGVzdE5hbWVzW0J1aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJLaXQxXSA9ICJX
SzEgVGVzdHMiOwotCi0KLWZ1bmN0aW9uIHVwZGF0ZUhpZGRlblBsYXRmb3JtcygpCi17Ci0gICAg
dmFyIGhpZGRlblBsYXRmb3JtRmFtaWxpZXMgPSBzZXR0aW5ncy5nZXRPYmplY3QoImhpZGRlblBs
YXRmb3JtRmFtaWxpZXMiKSB8fCBbXTsKLSAgICB2YXIgcGxhdGZvcm1Sb3dzID0gZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbCgidHIucGxhdGZvcm0iKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHBsYXRmb3JtUm93cy5sZW5ndGg7ICsraSkKLSAgICAgICAgcGxhdGZvcm1Sb3dzW2ldLmNsYXNz
TGlzdC5yZW1vdmUoImhpZGRlbiIpOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoaWRkZW5Q
bGF0Zm9ybUZhbWlsaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBwbGF0Zm9ybUZhbWls
eSA9IGhpZGRlblBsYXRmb3JtRmFtaWxpZXNbaV07Ci0gICAgICAgIGZvciAodmFyIGogPSAwOyBq
IDwgcGxhdGZvcm1zQnlGYW1pbHlbcGxhdGZvcm1GYW1pbHldLmxlbmd0aDsgKytqKSB7Ci0gICAg
ICAgICAgICB2YXIgbmFtZSA9IHBsYXRmb3Jtc0J5RmFtaWx5W3BsYXRmb3JtRmFtaWx5XVtqXTsK
LSAgICAgICAgICAgIHZhciBwbGF0Zm9ybVJvdyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInRy
LnBsYXRmb3JtLiIgKyBuYW1lKTsKLSAgICAgICAgICAgIGlmIChwbGF0Zm9ybVJvdykKLSAgICAg
ICAgICAgICAgICBwbGF0Zm9ybVJvdy5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKTsKLSAgICAgICAg
fQotICAgIH0KLSAgICBzZXR0aW5ncy51cGRhdGVUb2dnbGVCdXR0b25zKCk7Ci19Ci0KLQotZnVu
Y3Rpb24gaW5pdFBsYXRmb3Jtc0J5RmFtaWx5KCkKLXsKLSAgICB2YXIgcGxhdGZvcm1zID0gRGFz
aGJvYXJkLnNvcnRlZFBsYXRmb3JtczsKLSAgICBmb3IgKHZhciBpIGluIHBsYXRmb3Jtcykgewot
ICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHBsYXRmb3JtIHdpbGwgYmUgZGlzcGxheWVkIG9uIHRo
ZSBwYWdlIGJlZm9yZSBjb25zaWRlcmluZyBpdHMgcGxhdGZvcm0gZmFtaWx5LgotICAgICAgICBp
ZiAoIWNhdGVnb3JpemVkUXVldWVzQnlQbGF0Zm9ybUFuZEJ1aWxkVHlwZVtwbGF0Zm9ybXNbaV0u
bmFtZV0pCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICB2YXIgcGxhdGZvcm1GYW1p
bHkgPSBzZXR0aW5ncy5wYXJzZVBsYXRmb3JtRmFtaWx5KHBsYXRmb3Jtc1tpXS5uYW1lKTsKLSAg
ICAgICAgaWYgKHBsYXRmb3Jtc0J5RmFtaWx5W3BsYXRmb3JtRmFtaWx5XSkKLSAgICAgICAgICAg
IHBsYXRmb3Jtc0J5RmFtaWx5W3BsYXRmb3JtRmFtaWx5XS5wdXNoKHBsYXRmb3Jtc1tpXS5uYW1l
KQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwbGF0Zm9ybXNCeUZhbWlseVtwbGF0Zm9ybUZh
bWlseV0gPSBbcGxhdGZvcm1zW2ldLm5hbWVdCi0gICAgfQotfQotCi1mdW5jdGlvbiB1bmhpZGRl
blF1ZXVlcygpCi17Ci0gICAgdmFyIGhpZGRlblBsYXRmb3JtRmFtaWxpZXMgPSBzZXR0aW5ncy5n
ZXRPYmplY3QoImhpZGRlblBsYXRmb3JtRmFtaWxpZXMiKSB8fCBbXTsKLSAgICB2YXIgcmVzdWx0
ID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWlsZGJvdHMubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgdmFyIGJ1aWxkYm90ID0gYnVpbGRib3RzW2ldOwotICAgICAgICBmb3IgKHZhciBp
ZCBpbiBidWlsZGJvdC5xdWV1ZXMpIHsKLSAgICAgICAgICAgIHZhciBxdWV1ZSA9IGJ1aWxkYm90
LnF1ZXVlc1tpZF07Ci0gICAgICAgICAgICBpZiAoLTEgPT09IGhpZGRlblBsYXRmb3JtRmFtaWxp
ZXMuaW5kZXhPZihzZXR0aW5ncy5wYXJzZVBsYXRmb3JtRmFtaWx5KHF1ZXVlLnBsYXRmb3JtKSkp
Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocXVldWUpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnVuY3Rpb24gYWxsUXVldWVzKGNhdGVnb3J5KQot
ewotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICBpZiAoY2F0ZWdvcnlbImRlYnVnIl0pCi0gICAg
ICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoY2F0ZWdvcnlbImRlYnVnIl0pOwotICAgIGlmIChj
YXRlZ29yeVsicmVsZWFzZSJdKQotICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGNhdGVn
b3J5WyJyZWxlYXNlIl0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZ1bmN0aW9uIGJ1aWxk
QWdncmVnYXRlVGFibGUoKQotewotICAgIHZhciB0YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInRhYmxlIik7Ci0gICAgdGFibGUuY2xhc3NMaXN0LmFkZCgicXVldWUtZ3JpZCIpOwotICAg
IHRhYmxlLmNsYXNzTGlzdC5hZGQoImFnZ3JlZ2F0ZS1ncmlkIik7Ci0KLSAgICB2YXIgcm93ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICByb3cuY2xhc3NMaXN0LmFkZCgiaGVh
ZGVycyIpOwotCi0gICAgaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKTsKLSAg
ICBoZWFkZXIudGV4dENvbnRlbnQgPSAiQnVpbGRlcnMiOwotICAgIHJvdy5hcHBlbmRDaGlsZCho
ZWFkZXIpOwotCi0gICAgaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKTsKLSAg
ICBoZWFkZXIudGV4dENvbnRlbnQgPSAiQWxsIHF1ZXVlcyI7Ci0gICAgcm93LmFwcGVuZENoaWxk
KGhlYWRlcik7Ci0KLSAgICB0YWJsZS5hcHBlbmRDaGlsZChyb3cpOwotCi0gICAgdmFyIHJvdyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0KLSAgICBjZWxsID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgidGQiKTsKLQotICAgIHZhciB2aWV3ID0gbmV3IE1ldHJpY3NWaWV3KGFuYWx5
emVyLCBbYWxsQnVpbGRlclJlc3VsdHNQc2V1ZG9RdWV1ZV0pOwotICAgIGNlbGwuYXBwZW5kQ2hp
bGQodmlldy5lbGVtZW50KTsKLSAgICByb3cuYXBwZW5kQ2hpbGQoY2VsbCk7Ci0KLSAgICBjZWxs
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLQotICAgIHZhciB2aWV3ID0gbmV3IE1l
dHJpY3NWaWV3KGFuYWx5emVyLCBbYWxsUmVzdWx0c1BzZXVkb1F1ZXVlXSk7Ci0gICAgY2VsbC5h
cHBlbmRDaGlsZCh2aWV3LmVsZW1lbnQpOwotICAgIHJvdy5hcHBlbmRDaGlsZChjZWxsKTsKLQot
ICAgIHRhYmxlLmFwcGVuZENoaWxkKHJvdyk7Ci0KLSAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKHRhYmxlKTsKLX0KLQotZnVuY3Rpb24gYnVpbGRRdWV1ZXNUYWJsZSgpCi17Ci0gICAgdmFy
IHRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTsKLSAgICB0YWJsZS5jbGFz
c0xpc3QuYWRkKCJxdWV1ZS1ncmlkIik7Ci0gICAgdGFibGUuaWQgPSAibWV0cmljcy1xdWV1ZXMt
dGFibGUiOwotCi0gICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0g
ICAgcm93LmNsYXNzTGlzdC5hZGQoImhlYWRlcnMiKTsKLQotICAgIHZhciBoZWFkZXIgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpOwotICAgIHJvdy5hcHBlbmRDaGlsZChoZWFkZXIpOwot
Ci0gICAgaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKTsKLSAgICBoZWFkZXIu
dGV4dENvbnRlbnQgPSAiQnVpbGRlcnMiOwotICAgIHJvdy5hcHBlbmRDaGlsZChoZWFkZXIpOwot
Ci0gICAgZm9yICh2YXIgdGVzdGVyS2V5IGluIEJ1aWxkYm90LlRlc3RDYXRlZ29yeSkgewotICAg
ICAgICB2YXIgaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKTsKLSAgICAgICAg
aGVhZGVyLnRleHRDb250ZW50ID0gdGVzdE5hbWVzW0J1aWxkYm90LlRlc3RDYXRlZ29yeVt0ZXN0
ZXJLZXldXTsKLSAgICAgICAgcm93LmFwcGVuZENoaWxkKGhlYWRlcik7Ci0gICAgfQotCi0gICAg
dGFibGUuYXBwZW5kQ2hpbGQocm93KTsKLQotICAgIHZhciBwbGF0Zm9ybXMgPSBEYXNoYm9hcmQu
c29ydGVkUGxhdGZvcm1zOwotCi0gICAgZm9yICh2YXIgaSBpbiBwbGF0Zm9ybXMpIHsKLSAgICAg
ICAgdmFyIHBsYXRmb3JtID0gcGxhdGZvcm1zW2ldOwotICAgICAgICB2YXIgcGxhdGZvcm1RdWV1
ZXMgPSBjYXRlZ29yaXplZFF1ZXVlc0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVbcGxhdGZvcm0ubmFt
ZV07Ci0gICAgICAgIGlmICghcGxhdGZvcm1RdWV1ZXMpCi0gICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICAg
ICAgcm93LmNsYXNzTGlzdC5hZGQoInBsYXRmb3JtIik7Ci0gICAgICAgIHJvdy5jbGFzc0xpc3Qu
YWRkKHBsYXRmb3JtLm5hbWUpOwotCi0gICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidGQiKTsKLSAgICAgICAgY2VsbC5jbGFzc0xpc3QuYWRkKCJsb2dvIik7Ci0KLSAg
ICAgICAgdmFyIHJpbmdJbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwotICAg
ICAgICByaW5nSW1hZ2UuY2xhc3NMaXN0LmFkZCgicmluZyIpOwotICAgICAgICByaW5nSW1hZ2Uu
dGl0bGUgPSBwbGF0Zm9ybS5yZWFkYWJsZU5hbWU7Ci0gICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQo
cmluZ0ltYWdlKTsKLQotICAgICAgICB2YXIgbG9nb0ltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaW1nIik7Ci0gICAgICAgIGxvZ29JbWFnZS5jbGFzc0xpc3QuYWRkKCJsb2dvIik7Ci0g
ICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQobG9nb0ltYWdlKTsKLQotICAgICAgICByb3cuYXBwZW5k
Q2hpbGQoY2VsbCk7Ci0KLSAgICAgICAgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRk
Iik7Ci0KLSAgICAgICAgdmFyIHZpZXcgPSBuZXcgTWV0cmljc1ZpZXcoYW5hbHl6ZXIsIGFsbFF1
ZXVlcyhwbGF0Zm9ybVF1ZXVlcy5idWlsZGVycykpOwotICAgICAgICBjZWxsLmFwcGVuZENoaWxk
KHZpZXcuZWxlbWVudCk7Ci0gICAgICAgIHJvdy5hcHBlbmRDaGlsZChjZWxsKTsKLQotICAgICAg
ICBmb3IgKHZhciB0ZXN0ZXJLZXkgaW4gQnVpbGRib3QuVGVzdENhdGVnb3J5KSB7Ci0gICAgICAg
ICAgICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0KLSAgICAgICAg
ICAgIHZhciB0ZXN0ZXJQcm9wZXJ0eSA9IEJ1aWxkYm90LlRlc3RDYXRlZ29yeVt0ZXN0ZXJLZXld
OwotICAgICAgICAgICAgaWYgKHBsYXRmb3JtUXVldWVzW3Rlc3RlclByb3BlcnR5XSkgewotICAg
ICAgICAgICAgICAgIHZhciB2aWV3ID0gbmV3IE1ldHJpY3NWaWV3KGFuYWx5emVyLCBhbGxRdWV1
ZXMocGxhdGZvcm1RdWV1ZXNbdGVzdGVyUHJvcGVydHldKSk7Ci0gICAgICAgICAgICAgICAgY2Vs
bC5hcHBlbmRDaGlsZCh2aWV3LmVsZW1lbnQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICByb3cuYXBwZW5kQ2hpbGQoY2VsbCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0YWJsZS5hcHBl
bmRDaGlsZChyb3cpOwotICAgIH0KLQotICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGFi
bGUpOwotCi0gICAgcmV0dXJuIHRhYmxlOwotfQotCi1mdW5jdGlvbiBidWlsZEJ1YmJsZVF1ZXVl
c1RhYmxlKCkKLXsKLSAgICB2YXIgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJs
ZSIpOwotICAgIHRhYmxlLmNsYXNzTGlzdC5hZGQoInF1ZXVlLWdyaWQiKTsKLQotICAgIHZhciBy
b3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgIHJvdy5jbGFzc0xpc3QuYWRk
KCJoZWFkZXJzIik7Ci0KLSAgICBmb3IgKGlkIGluIGJ1YmJsZVF1ZXVlU2VydmVyLnF1ZXVlcykg
ewotICAgICAgICB2YXIgaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKTsKLSAg
ICAgICAgaGVhZGVyLnRleHRDb250ZW50ID0gYnViYmxlUXVldWVTZXJ2ZXIucXVldWVzW2lkXS5z
aG9ydE5hbWU7Ci0gICAgICAgIHJvdy5hcHBlbmRDaGlsZChoZWFkZXIpOwotICAgIH0KLQotICAg
IHRhYmxlLmFwcGVuZENoaWxkKHJvdyk7Ci0KLSAgICByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ0ciIpOwotICAgIHJvdy5jbGFzc0xpc3QuYWRkKCJwbGF0Zm9ybSIpOwotCi0gICAgZm9y
IChpZCBpbiBidWJibGVRdWV1ZVNlcnZlci5xdWV1ZXMpIHsKLSAgICAgICAgdmFyIGNlbGwgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgICAgICB2YXIgdmlldyA9IG5ldyBNZXRy
aWNzQnViYmxlVmlldyhhbmFseXplciwgYnViYmxlUXVldWVTZXJ2ZXIucXVldWVzW2lkXSk7Ci0g
ICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQodmlldy5lbGVtZW50KTsKLSAgICAgICAgcm93LmFwcGVu
ZENoaWxkKGNlbGwpOwotICAgIH0KLQotICAgIHRhYmxlLmFwcGVuZENoaWxkKHJvdyk7Ci0KLSAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRhYmxlKTsKLQotICAgIHJldHVybiB0YWJsZTsK
LX0KLQotZnVuY3Rpb24gZG9jdW1lbnRSZWFkeSgpCi17Ci0gICAgdmFyIHJhbmdlUGlja2VyID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgIHJhbmdlUGlja2VyLmlkID0gInJh
bmdlLXBpY2tlciI7Ci0gICAgcmFuZ2VQaWNrZXIuc2l6ZSA9IDQwOwotICAgIHJhbmdlUGlja2Vy
LnRleHRDb250ZW50ID0gIlBsZWFzZSBzZWxlY3QgYSBkYXRlIHJhbmdlIjsKLSAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKHJhbmdlUGlja2VyKTsKLSAgICAkKCIjcmFuZ2UtcGlja2VyIiku
ZGF0ZVJhbmdlUGlja2VyKHsKLSAgICAgICAgc3RhcnRPZldlZWs6IG5hdmlnYXRvci5sYW5ndWFn
ZSA9PT0gImVuLXVzIiA/ICJzdW5kYXkiIDogIm1vbmRheSIsCi0gICAgICAgIGVuZERhdGU6IG5l
dyBEYXRlKCksCi0gICAgICAgIHNob3dTaG9ydGN1dHM6IGZhbHNlLAotICAgICAgICBnZXRWYWx1
ZTogZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLnRleHRDb250ZW50OyB9LAotICAgICAgICBzZXRW
YWx1ZTogZnVuY3Rpb24ocykgeyB0aGlzLnRleHRDb250ZW50ID0gczsgfQotICAgIH0pCi0gICAg
LmJpbmQoJ2RhdGVwaWNrZXItYXBwbHknLGZ1bmN0aW9uKGV2ZW50LG9iaikKLSAgICB7Ci0gICAg
ICAgIC8vIFRoaXMgbWVzc2FnZSBpcyBkaXNwYXRjaGVkIGV2ZW4gd2hlbiByYW5nZSBoYXNuJ3Qg
YmVlbiBzZWxlY3RlZCAob3Igb25seSBvbmUgZW5kcG9pbnQgd2FzKSwKLSAgICAgICAgLy8gaW4g
d2hpY2ggY2FzZSB0aGUgYWN0dWFsIHJhbmdlIGhhc24ndCBjaGFuZ2VkLCBhbmQgdGhlcmUgaXMg
bm90aGluZyB0byBkby4KLSAgICAgICAgaWYgKGlzTmFOKG9iai5kYXRlMSkgfHwgaXNOYU4ob2Jq
LmRhdGUyKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgZW5kRGF0ZSA9IG5l
dyBEYXRlKG5ldyBEYXRlKG9iai5kYXRlMikuc2V0RGF0ZShvYmouZGF0ZTIuZ2V0RGF0ZSgpICsg
MSkpOwotCi0gICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IHBlcmZvcm1hbmNlIGJvdHMuCi0gICAg
ICAgIHZhciBxdWV1ZXMgPSB1bmhpZGRlblF1ZXVlcygpLmZpbHRlcihmdW5jdGlvbihxdWV1ZSkg
eyByZXR1cm4gcXVldWUuYnVpbGRlciB8fCBxdWV1ZS50ZXN0ZXI7IH0pOwotICAgICAgICBhbmFs
eXplci5hbmFseXplKHF1ZXVlcywgb2JqLmRhdGUxLCBlbmREYXRlKTsKLSAgICB9KTsKLQotICAg
IHZhciBsb2FkaW5nSW5kaWNhdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0g
ICAgbG9hZGluZ0luZGljYXRvci5jbGFzc0xpc3QuYWRkKCJtZXRyaWNzLWxvYWRpbmctaW5kaWNh
dG9yIik7Ci0gICAgbG9hZGluZ0luZGljYXRvci50ZXh0Q29udGVudCA9ICJMb2FkaW5nIChmaXJz
dCBsb2FkIHRha2VzIHNldmVyYWwgbWludXRlcylcdTIwMjYiOwotICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQobG9hZGluZ0luZGljYXRvcik7Ci0KLSAgICBhbmFseXplci5hZGRFdmVudExp
c3RlbmVyKEFuYWx5emVyLkV2ZW50LlN0YXJ0aW5nLCBmdW5jdGlvbigpIHsKLSAgICAgICAgbG9h
ZGluZ0luZGljYXRvci5zdHlsZS52aXNpYmlsaXR5ID0gInZpc2libGUiOwotICAgIH0sIHRoaXMp
OwotICAgIGFuYWx5emVyLmFkZEV2ZW50TGlzdGVuZXIoQW5hbHl6ZXIuRXZlbnQuRmluaXNoZWQs
IGZ1bmN0aW9uKCkgewotICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLnN0eWxlLnZpc2liaWxpdHkg
PSAiaGlkZGVuIjsKLSAgICAgICAgbG9hZGluZ0luZGljYXRvci50ZXh0Q29udGVudCA9ICJMb2Fk
aW5nXHUyMDI2IjsgLy8gUmVtb3ZlIHRoZSBmaXJzdCB0aW1lIHdhcm5pbmcgbm93LgotICAgIH0s
IHRoaXMpOwotCi0gICAgYnVpbGRBZ2dyZWdhdGVUYWJsZSgpOwotICAgIGlmIChoYXNCdWJibGVz
KSB7Ci0gICAgICAgIHZhciB0YWJsZXNEaXZpZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0gICAgICAgIHRhYmxlc0RpdmlkZXIuY2xhc3NMaXN0LmFkZCgidGFibGVzLWRpdmlk
ZXIiKTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0YWJsZXNEaXZpZGVyKTsK
LSAgICAgICAgYnVpbGRCdWJibGVRdWV1ZXNUYWJsZSgpOwotICAgIH0KLQotICAgIHZhciB0YWJs
ZXNEaXZpZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGFibGVzRGl2
aWRlci5jbGFzc0xpc3QuYWRkKCJ0YWJsZXMtZGl2aWRlciIpOwotICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQodGFibGVzRGl2aWRlcik7Ci0KLSAgICB2YXIgcXVldWVzVGFibGUgPSBidWls
ZFF1ZXVlc1RhYmxlKCk7Ci0gICAgdGFibGVzRGl2aWRlci5zdHlsZS5oZWlnaHQgPSBNYXRoLm1h
eCh0YWJsZXNEaXZpZGVyLm9mZnNldEhlaWdodCwgd2luZG93LmlubmVySGVpZ2h0IC0gdGFibGVz
RGl2aWRlci5vZmZzZXRUb3ApICsgInB4IjsKLQotICAgIGlmIChzZXR0aW5ncy5hdmFpbGFibGUo
KSkgewotICAgICAgICB2YXIgc2V0dGluZ3NCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKLSAgICAgICAgc2V0dGluZ3NCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCBmdW5jdGlvbiAoKSB7IHNldHRpbmdzLnRvZ2dsZVNldHRpbmdzRGlzcGxheSgpOyB9KTsKLSAg
ICAgICAgc2V0dGluZ3NCdXR0b24uY2xhc3NMaXN0LmFkZCgic2V0dGluZ3MiKTsKLSAgICAgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzZXR0aW5nc0J1dHRvbik7Ci0KLSAgICAgICAgdmFy
IHNldHRpbmdzV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAg
ICBzZXR0aW5nc1dyYXBwZXIuY2xhc3NMaXN0LmFkZCgidW5oaWRlIiwgImhpZGRlbiIsICJzZXR0
aW5nc1dyYXBwZXIiKQotCi0gICAgICAgIHZhciBwbGF0Zm9ybUZhbWlseVRvZ2dsZVdyYXBwZXIg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgcGxhdGZvcm1GYW1pbHlU
b2dnbGVXcmFwcGVyLmNsYXNzTGlzdC5hZGQoInVuaGlkZSIsICJoaWRkZW4iLCAiZmFtaWx5VG9n
Z2xlV3JhcHBlciIpOwotCi0gICAgICAgIHZhciB1bmhpZGVBbGxCdXR0b24gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdW5oaWRlQWxsQnV0dG9uLmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKCkgeyBzZXR0aW5ncy5jbGVhckhpZGRlblBsYXRmb3Jt
RmFtaWxpZXMoKTsgfSk7Ci0gICAgICAgIHVuaGlkZUFsbEJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJ1
bmhpZGUiLCAiaGlkZGVuIiwgInBsYXRmb3JtRmFtaWx5VG9nZ2xlQnV0dG9uIik7Ci0gICAgICAg
IHVuaGlkZUFsbEJ1dHRvbi5zZXRBdHRyaWJ1dGUoImlkIiwgImFsbC1wbGF0Zm9ybUZhbWlseVRv
Z2dsZUJ1dHRvbiIpOwotICAgICAgICB1bmhpZGVBbGxCdXR0b24udGV4dENvbnRlbnQgPSAiYWxs
IjsKLSAgICAgICAgcGxhdGZvcm1GYW1pbHlUb2dnbGVXcmFwcGVyLmFwcGVuZENoaWxkKHVuaGlk
ZUFsbEJ1dHRvbik7Ci0KLSAgICAgICAgaW5pdFBsYXRmb3Jtc0J5RmFtaWx5KCk7Ci0gICAgICAg
IGZvciAodmFyIHBsYXRmb3JtRmFtaWx5IGluIHBsYXRmb3Jtc0J5RmFtaWx5KSB7Ci0gICAgICAg
ICAgICB2YXIgcGxhdGZvcm1GYW1pbHlUb2dnbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICAgICAgICAgIHBsYXRmb3JtRmFtaWx5VG9nZ2xlLmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIHNldHRpbmdzLnRvZ2dsZUhp
ZGRlblBsYXRmb3JtRmFtaWx5KHRoaXMudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICB9LmJpbmQo
cGxhdGZvcm1GYW1pbHkpKTsKLSAgICAgICAgICAgIHBsYXRmb3JtRmFtaWx5VG9nZ2xlLmNsYXNz
TGlzdC5hZGQoInVuaGlkZSIsICJoaWRkZW4iLCAicGxhdGZvcm1GYW1pbHlUb2dnbGVCdXR0b24i
KTsKLSAgICAgICAgICAgIHBsYXRmb3JtRmFtaWx5VG9nZ2xlLnNldEF0dHJpYnV0ZSgiaWQiLCBw
bGF0Zm9ybUZhbWlseSArICItcGxhdGZvcm1GYW1pbHlUb2dnbGVCdXR0b24iKTsKLSAgICAgICAg
ICAgIHBsYXRmb3JtRmFtaWx5VG9nZ2xlLnRleHRDb250ZW50ID0gcGxhdGZvcm1GYW1pbHk7Ci0g
ICAgICAgICAgICBwbGF0Zm9ybUZhbWlseVRvZ2dsZVdyYXBwZXIuYXBwZW5kQ2hpbGQocGxhdGZv
cm1GYW1pbHlUb2dnbGUpOwotICAgICAgICB9Ci0gICAgICAgIHNldHRpbmdzV3JhcHBlci5hcHBl
bmRDaGlsZChwbGF0Zm9ybUZhbWlseVRvZ2dsZVdyYXBwZXIpOwotICAgICAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKHNldHRpbmdzV3JhcHBlcik7Ci0KLSAgICAgICAgdXBkYXRlSGlkZGVu
UGxhdGZvcm1zKCk7Ci0gICAgICAgIHNldHRpbmdzLmFkZFNldHRpbmdMaXN0ZW5lcigiaGlkZGVu
UGxhdGZvcm1GYW1pbGllcyIsIHVwZGF0ZUhpZGRlblBsYXRmb3Jtcyk7Ci0gICAgICAgIHNldHRp
bmdzLmFkZFNldHRpbmdMaXN0ZW5lcigiZW50ZXJlZFNldHRpbmdzIiwgZnVuY3Rpb24oKSB7IAot
ICAgICAgICAgICAgJCgnaHRtbCwgYm9keScpLnN0b3AoKS5hbmltYXRlKHsKLSAgICAgICAgICAg
ICAgICBzY3JvbGxUb3A6ICQoIiNtZXRyaWNzLXF1ZXVlcy10YWJsZSIpLm9mZnNldCgpLnRvcAot
ICAgICAgICAgICAgfSwgMjAwKTsKLSAgICAgICAgfSk7Ci0gICAgfQotfQotCi1kb2N1bWVudC5h
ZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZG9jdW1lbnRSZWFkeSk7CgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc01haW4uanMKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwot
dGV4dC9wbGFpbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9D
SVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvTWV0cmljc1ZpZXcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJpY3NW
aWV3LmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc1ZpZXcuanMJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwxNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLU1ldHJp
Y3NWaWV3ID0gZnVuY3Rpb24oYW5hbHl6ZXIsIHF1ZXVlcykKLXsKLSAgICBCYXNlT2JqZWN0LmNh
bGwodGhpcyk7Ci0KLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicXVldWUtdmlldyIpOwotCi0g
ICAgdGhpcy5fcmVzdWx0cyA9IHsgfTsKLQotICAgIHRoaXMuX2RlYnVnUXVldWVzID0gcXVldWVz
LmZpbHRlcihmdW5jdGlvbihxdWV1ZSkgeyByZXR1cm4gcXVldWUucGxhdGZvcm0gJiYgcXVldWUu
ZGVidWc7IH0pOwotICAgIHRoaXMuX3JlbGVhc2VRdWV1ZXMgPSBxdWV1ZXMuZmlsdGVyKGZ1bmN0
aW9uKHF1ZXVlKSB7IHJldHVybiBxdWV1ZS5wbGF0Zm9ybSAmJiAhcXVldWUuZGVidWc7IH0pOwot
ICAgIHRoaXMuX2FnZ3JlZ2F0ZVBzZXVkb1F1ZXVlcyA9IHF1ZXVlcy5maWx0ZXIoZnVuY3Rpb24o
cXVldWUpIHsgcmV0dXJuIHF1ZXVlLnBsYXRmb3JtID09PSB1bmRlZmluZWQ7IH0pOwotCi0gICAg
aWYgKHRoaXMuX2FnZ3JlZ2F0ZVBzZXVkb1F1ZXVlcy5sZW5ndGgpCi0gICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJhZ2dyZWdhdGUtcXVldWUtdmlldyIpOwotCi0gICAgdGhpcy5f
aGFzTXVsdGlwbGVEZWJ1Z1F1ZXVlcyA9IHRoaXMuX2RlYnVnUXVldWVzLmxlbmd0aCA+IDE7Ci0g
ICAgdGhpcy5faGFzTXVsdGlwbGVSZWxlYXNlUXVldWVzID0gdGhpcy5fcmVsZWFzZVF1ZXVlcy5s
ZW5ndGggPiAxOwotCi0gICAgYW5hbHl6ZXIuYWRkRXZlbnRMaXN0ZW5lcihBbmFseXplci5FdmVu
dC5TdGFydGluZywgdGhpcy5fY2xlYXJSZXN1bHRzLCB0aGlzKTsKLSAgICBhbmFseXplci5hZGRF
dmVudExpc3RlbmVyKEFuYWx5emVyLkV2ZW50LlF1ZXVlUmVzdWx0cywgdGhpcy5fcXVldWVSZXN1
bHRzQWRkZWQsIHRoaXMpOwotICAgIAotICAgIHRoaXMuX3VwZGF0ZVNvb24oKTsKLX07Ci0KLU1l
dHJpY3NWaWV3LlVwZGF0ZVNvb25UaW1lb3V0ID0gMTAwOyAvLyAxMDAgbXMKLQotQmFzZU9iamVj
dC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhNZXRyaWNzVmlldyk7Ci0KLU1ldHJpY3NWaWV3LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogTWV0cmljc1ZpZXcsCi0gICAgX19wcm90b19f
OiBCYXNlT2JqZWN0LnByb3RvdHlwZSwKLQotICAgIF9jbGVhclJlc3VsdHM6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHRoaXMuX3Jlc3VsdHMgPSB7IH07Ci0gICAgICAgIHRoaXMuX3VwZGF0
ZVNvb24oKTsKLSAgICB9LAotCi0gICAgX3F1ZXVlUmVzdWx0c0FkZGVkOiBmdW5jdGlvbihldmVu
dCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9kZWJ1Z1F1ZXVlcy5zb21lKGZ1bmN0aW9uKHF1
ZXVlKSB7IHJldHVybiBxdWV1ZS5pZCA9PT0gZXZlbnQuZGF0YS5xdWV1ZUlEOyB9KQotICAgICAg
ICB8fCB0aGlzLl9yZWxlYXNlUXVldWVzLnNvbWUoZnVuY3Rpb24ocXVldWUpIHsgcmV0dXJuIHF1
ZXVlLmlkID09PSBldmVudC5kYXRhLnF1ZXVlSUQ7IH0pCi0gICAgICAgIHx8IHRoaXMuX2FnZ3Jl
Z2F0ZVBzZXVkb1F1ZXVlcy5zb21lKGZ1bmN0aW9uKHF1ZXVlKSB7IHJldHVybiBxdWV1ZS5pZCA9
PT0gZXZlbnQuZGF0YS5xdWV1ZUlEOyB9KSkgewotICAgICAgICAgICAgdGhpcy5fcmVzdWx0c1tl
dmVudC5kYXRhLnF1ZXVlSURdID0gZXZlbnQuZGF0YTsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0
ZVNvb24oKTsKLSAgICAgICAgfTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZTogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7Ci0KLSAgICAgICAg
ZnVuY3Rpb24gYWRkTGluZShlbGVtZW50LCB0ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICB2
YXIgbGluZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgbGlu
ZS50ZXh0Q29udGVudCA9IHRleHQ7Ci0gICAgICAgICAgICBsaW5lLmNsYXNzTGlzdC5hZGQoInJl
c3VsdC1saW5lIik7Ci0gICAgICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKGxpbmUpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYWRkRXJyb3IoZWxlbWVudCwgdGV4dCkKLSAgICAg
ICAgewotICAgICAgICAgICAgYWRkTGluZShlbGVtZW50LCB0ZXh0KTsKLSAgICAgICAgICAgIGVs
ZW1lbnQubGFzdENoaWxkLmNsYXNzTGlzdC5hZGQoImVycm9yLWxpbmUiKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGZ1bmN0aW9uIGFkZERpdmlkZXIoZWxlbWVudCkKLSAgICAgICAgewotICAgICAg
ICAgICAgdmFyIGRpdmlkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAg
ICAgICAgIGRpdmlkZXIuY2xhc3NMaXN0LmFkZCgiZGl2aWRlciIpOwotICAgICAgICAgICAgZWxl
bWVudC5hcHBlbmRDaGlsZChkaXZpZGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9u
IGFwcGVuZFF1ZXVlUmVzdWx0cyhxdWV1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCEo
cXVldWUuaWQgaW4gdGhpcy5fcmVzdWx0cykpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fcmVzdWx0c1txdWV1ZS5pZF07Ci0KLSAgICAg
ICAgICAgIHZhciBpc0FnZ3JlZ2F0ZVF1ZXVlID0gLTEgIT09IHRoaXMuX2FnZ3JlZ2F0ZVBzZXVk
b1F1ZXVlcy5pbmRleE9mKHF1ZXVlKTsKLQotICAgICAgICAgICAgaWYgKHJlc3VsdC5idWlsZGJv
dFJhbmdlRXJyb3IgJiYgIWlzQWdncmVnYXRlUXVldWUpCi0gICAgICAgICAgICAgICAgYWRkRXJy
b3IodGhpcy5lbGVtZW50LCByZXN1bHQuYnVpbGRib3RSYW5nZUVycm9yVGV4dCk7Ci0KLSAgICAg
ICAgICAgIGlmICgicGVyY2VudGFnZU9mR3JlZW4iIGluIHJlc3VsdCkKLSAgICAgICAgICAgICAg
ICBhZGRMaW5lKHRoaXMuZWxlbWVudCwgIkdyZWVuICIgKyBNYXRoLnJvdW5kKHJlc3VsdC5wZXJj
ZW50YWdlT2ZHcmVlbiAqIDEwMCkgLyAxMDAgKyAiJSBvZiB0aW1lIik7Ci0KLSAgICAgICAgICAg
IGlmIChpc0FnZ3JlZ2F0ZVF1ZXVlICYmIHJlc3VsdC5sb25nZXN0U3RyZXRjaE9mUmVkKSB7Ci0g
ICAgICAgICAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1lbnQsICJMb25nZXN0IHJlZDogIiArIE1h
dGgucm91bmQocmVzdWx0Lmxvbmdlc3RTdHJldGNoT2ZSZWQgLyA2MCkgKyAiIG1pbnV0ZXMiKTsK
LSAgICAgICAgICAgICAgICBhZGREaXZpZGVyKHRoaXMuZWxlbWVudCk7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKCJwZXJjZW50YWdlT2ZHcmVlbiIgaW4gcmVzdWx0KQotICAgICAgICAgICAgICAg
IGFkZERpdmlkZXIodGhpcy5lbGVtZW50KTsKLQotICAgICAgICAgICAgaWYgKHF1ZXVlLmJ1aWxk
ZXIgfHwgaXNBZ2dyZWdhdGVRdWV1ZSkgewotICAgICAgICAgICAgICAgIGFkZExpbmUodGhpcy5l
bGVtZW50LCAiVGltZSBmcm9tIGNvbW1pdDogIik7Ci0gICAgICAgICAgICAgICAgYWRkTGluZSh0
aGlzLmVsZW1lbnQsICJBdmVyYWdlOiAiICsgTWF0aC5yb3VuZChyZXN1bHQuYXZlcmFnZVNlY29u
ZHNGcm9tQ29tbWl0IC8gNjApICsgIiBtaW51dGVzIik7Ci0gICAgICAgICAgICAgICAgYWRkTGlu
ZSh0aGlzLmVsZW1lbnQsICJNZWRpYW46ICIgKyBNYXRoLnJvdW5kKHJlc3VsdC5tZWRpYW5TZWNv
bmRzRnJvbUNvbW1pdCAvIDYwKSArICIgbWludXRlcyIpOwotICAgICAgICAgICAgICAgIGFkZExp
bmUodGhpcy5lbGVtZW50LCAiV29yc3Q6ICIgKyBNYXRoLnJvdW5kKHJlc3VsdC53b3JzdFNlY29u
ZHNGcm9tQ29tbWl0IC8gNjApICsgIiBtaW51dGVzIChyIiArIHJlc3VsdC5yZXZpc2lvbldpdGhX
b3JzdFRpbWVGcm9tQ29tbWl0ICsgIikiKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgLy8gVGltZSBmcm9tIGNvbW1pdCBpcyBwcmV0dHkgdXNlbGVzcyBmb3IgdGVzdGVy
IGJvdHMuCi0gICAgICAgICAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1lbnQsICJUaW1lIG9uIHRo
ZSBib3Q6ICIpOwotICAgICAgICAgICAgICAgIGFkZExpbmUodGhpcy5lbGVtZW50LCAiQXZlcmFn
ZTogIiArIE1hdGgucm91bmQocmVzdWx0LmF2ZXJhZ2VTZWNvbmRzT3duVGltZSAvIDYwKSArICIg
bWludXRlcyIpOwotICAgICAgICAgICAgICAgIGFkZExpbmUodGhpcy5lbGVtZW50LCAiTWVkaWFu
OiAiICsgTWF0aC5yb3VuZChyZXN1bHQubWVkaWFuU2Vjb25kc093blRpbWUgLyA2MCkgKyAiIG1p
bnV0ZXMiKTsKLSAgICAgICAgICAgICAgICBhZGRMaW5lKHRoaXMuZWxlbWVudCwgIldvcnN0OiAi
ICsgTWF0aC5yb3VuZChyZXN1bHQud29yc3RTZWNvbmRzT3duVGltZSAvIDYwKSArICIgbWludXRl
cyAociIgKyByZXN1bHQucmV2aXNpb25XaXRoV29yc3RPd25UaW1lICsgIikiKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGFwcGVuZEJ1aWxkQXJjaGl0ZWN0
dXJlKHF1ZXVlcywgc2hvd0FyY2hpdGVjdHVyZSkKLSAgICAgICAgewotICAgICAgICAgICAgcXVl
dWVzLmZvckVhY2goZnVuY3Rpb24ocXVldWUpIHsKLSAgICAgICAgICAgICAgICB2YXIgbGFiZWxU
ZXh0ID0gcXVldWUuZGVidWcgPyAiRGVidWciIDogIlJlbGVhc2UiOwotICAgICAgICAgICAgICAg
IGlmIChzaG93QXJjaGl0ZWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChxdWV1ZS5h
cmNoaXRlY3R1cmUgPT09IEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlLlVuaXZlcnNhbCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCArPSAiIChVbml2ZXJzYWwpIjsKLSAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAocXVldWUuYXJjaGl0ZWN0dXJlID09PSBCdWlsZGJvdC5C
dWlsZEFyY2hpdGVjdHVyZS5TaXh0eUZvdXJCaXQpCi0gICAgICAgICAgICAgICAgICAgICAgICBs
YWJlbFRleHQgKz0gIiAoNjQtYml0KSI7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHF1
ZXVlLmFyY2hpdGVjdHVyZSA9PT0gQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1cmUuVGhpcnR5VHdv
Qml0KQotICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0ICs9ICIgKDMyLWJpdCkiOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB2YXIgcmVsZWFzZUxhYmVsID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgICAgICAgICAgICAgIHJlbGVhc2VMYWJlbC5j
bGFzc0xpc3QuYWRkKCJxdWV1ZUxhYmVsIik7Ci0gICAgICAgICAgICAgICAgcmVsZWFzZUxhYmVs
LnRleHRDb250ZW50ID0gbGFiZWxUZXh0OwotICAgICAgICAgICAgICAgIHJlbGVhc2VMYWJlbC5o
cmVmID0gcXVldWUub3ZlcnZpZXdVUkw7Ci0gICAgICAgICAgICAgICAgcmVsZWFzZUxhYmVsLnRh
cmdldCA9ICJfYmxhbmsiOwotICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGls
ZChyZWxlYXNlTGFiZWwpOwotCi0gICAgICAgICAgICAgICAgYXBwZW5kUXVldWVSZXN1bHRzLmNh
bGwodGhpcywgcXVldWUpOwotICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGFwcGVuZEJ1aWxkQXJjaGl0ZWN0dXJlLmNhbGwodGhpcywgdGhpcy5fcmVsZWFz
ZVF1ZXVlcywgdGhpcy5faGFzTXVsdGlwbGVSZWxlYXNlUXVldWVzKTsKLSAgICAgICAgYXBwZW5k
QnVpbGRBcmNoaXRlY3R1cmUuY2FsbCh0aGlzLCB0aGlzLl9kZWJ1Z1F1ZXVlcywgdGhpcy5faGFz
TXVsdGlwbGVEZWJ1Z1F1ZXVlcyk7Ci0gICAgICAgIAotICAgICAgICB0aGlzLl9hZ2dyZWdhdGVQ
c2V1ZG9RdWV1ZXMuZm9yRWFjaChmdW5jdGlvbihxdWV1ZSkgewotICAgICAgICAgICAgYXBwZW5k
UXVldWVSZXN1bHRzLmNhbGwodGhpcywgcXVldWUpOwotICAgICAgICB9LmJpbmQodGhpcykpOwot
ICAgIH0sCi0KLSAgICBfdXBkYXRlU29vbjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgc2V0
VGltZW91dCh0aGlzLl91cGRhdGUuYmluZCh0aGlzKSwgTWV0cmljc1ZpZXcuVXBkYXRlU29vblRp
bWVvdXQpOwotICAgIH0sCi19OwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01l
dHJpY3NWaWV3LmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCww
ICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46
bWltZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1BvcG92ZXIuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9TY3JpcHRzL1BvcG92ZXIuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy9Qb3BvdmVyLmpzCShub25leGlzdGVudCkKQEAgLTEsNTQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi1EYXNoYm9hcmQuUG9wb3ZlciA9IGZ1bmN0aW9uKGRlbGVnYXRlKQotewotICAgIEJh
c2VPYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAg
ICB0aGlzLl9lZGdlID0gbnVsbDsKLSAgICB0aGlzLl9mcmFtZSA9IG5ldyBEYXNoYm9hcmQuUmVj
dDsKLSAgICB0aGlzLl9jb250ZW50ID0gbnVsbDsKLSAgICB0aGlzLl90YXJnZXRGcmFtZSA9IG5l
dyBEYXNoYm9hcmQuUmVjdDsKLSAgICB0aGlzLl9wcmVmZXJyZWRFZGdlcyA9IG51bGw7Ci0KLSAg
ICB0aGlzLl9jb250ZW50TmVlZHNVcGRhdGUgPSBmYWxzZTsKLQotICAgIHRoaXMuX2VsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TmFtZSA9IERhc2hib2FyZC5Qb3BvdmVyLlN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2NhbnZh
c0lkID0gInBvcG92ZXItIiArIChEYXNoYm9hcmQuUG9wb3Zlci5jYW52YXNJZCsrKTsKLSAgICB0
aGlzLl9lbGVtZW50LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICItd2Via2l0LWNhbnZhcygiICsg
dGhpcy5fY2FudmFzSWQgKyAiKSI7Ci0gICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJ0cmFuc2l0aW9uZW5kIiwgdGhpcywgdHJ1ZSk7Ci0gICAgCi0gICAgdGhpcy5fY29udGFpbmVy
ID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KSk7Ci0gICAgdGhpcy5fY29udGFpbmVyLmNsYXNzTmFtZSA9ICJjb250YWluZXIiOwotfTsKLQot
RGFzaGJvYXJkLlBvcG92ZXIuU3R5bGVDbGFzc05hbWUgPSAicG9wb3ZlciI7Ci1EYXNoYm9hcmQu
UG9wb3Zlci5WaXNpYmxlQ2xhc3NOYW1lID0gInZpc2libGUiOwotRGFzaGJvYXJkLlBvcG92ZXIu
U3RlcEluQ2xhc3NOYW1lID0gInN0ZXAtaW4iOwotRGFzaGJvYXJkLlBvcG92ZXIuRmFkZU91dENs
YXNzTmFtZSA9ICJmYWRlLW91dCI7Ci1EYXNoYm9hcmQuUG9wb3Zlci5QcmV2ZW50RG9jdW1lbnRT
Y3JvbGxpbmdDbGFzc05hbWUgPSAicG9wb3Zlci1wcmV2ZW50LWRvY3VtZW50LXNjcm9sbGluZyI7
Ci1EYXNoYm9hcmQuUG9wb3Zlci5jYW52YXNJZCA9IDA7Ci1EYXNoYm9hcmQuUG9wb3Zlci5Db3Ju
ZXJSYWRpdXMgPSA1OwotRGFzaGJvYXJkLlBvcG92ZXIuTWluV2lkdGggPSA0MDsKLURhc2hib2Fy
ZC5Qb3BvdmVyLk1pbkhlaWdodCA9IDQwOwotRGFzaGJvYXJkLlBvcG92ZXIuU2hhZG93UGFkZGlu
ZyA9IDU7Ci1EYXNoYm9hcmQuUG9wb3Zlci5Db250ZW50UGFkZGluZyA9IDU7Ci1EYXNoYm9hcmQu
UG9wb3Zlci5BbmNob3JTaXplID0gbmV3IERhc2hib2FyZC5TaXplKDIyLCAxMSk7Ci1EYXNoYm9h
cmQuUG9wb3Zlci5TaGFkb3dFZGdlSW5zZXRzID0gbmV3IERhc2hib2FyZC5FZGdlSW5zZXRzKERh
c2hib2FyZC5Qb3BvdmVyLlNoYWRvd1BhZGRpbmcpOwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVj
dG9yRnVuY3Rpb25zKERhc2hib2FyZC5Qb3BvdmVyKTsKLQotRGFzaGJvYXJkLlBvcG92ZXIucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBEYXNoYm9hcmQuUG9wb3ZlciwKLSAgICBfX3By
b3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAgLy8gUHVibGljCi0KLSAgICBnZXQg
ZWxlbWVudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAot
Ci0gICAgZ2V0IGZyYW1lKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9mcmFtZTsKLSAg
ICB9LAotCi0gICAgc2V0IGZyYW1lKGZyYW1lKQotICAgIHsKLSAgICAgICAgdGhpcy5fZWxlbWVu
dC5zdHlsZS5sZWZ0ID0gd2luZG93LnNjcm9sbFggKyBmcmFtZS5vcmlnaW4ueCArICJweCI7Ci0g
ICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUudG9wID0gd2luZG93LnNjcm9sbFkgKyBmcmFtZS5v
cmlnaW4ueSArICJweCI7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUud2lkdGggPSBmcmFt
ZS5zaXplLndpZHRoICsgInB4IjsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5oZWlnaHQg
PSBmcmFtZS5zaXplLmhlaWdodCArICJweCI7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUu
YmFja2dyb3VuZFNpemUgPSBmcmFtZS5zaXplLndpZHRoICsgInB4ICIgKyBmcmFtZS5zaXplLmhl
aWdodCArICJweCI7Ci0gICAgICAgIHRoaXMuX2ZyYW1lID0gZnJhbWU7Ci0gICAgfSwKLQotICAg
IGdldCB2aXNpYmxlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LnBhcmVu
dE5vZGUgPT09IGRvY3VtZW50LmJvZHkKLSAgICAgICAgICAgICYmICF0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5jb250YWlucyhEYXNoYm9hcmQuUG9wb3Zlci5TdGVwSW5DbGFzc05hbWUpOwotICAg
IH0sCi0KLSAgICBnZXQgcG90ZW50aWFsbHlWaXNpYmxlKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUgPT09IGRvY3VtZW50LmJvZHk7Ci0gICAgfSwKLQot
ICAgIHNldCBjb250ZW50KGNvbnRlbnQpCi0gICAgewotICAgICAgICBpZiAoY29udGVudCA9PT0g
dGhpcy5fY29udGVudCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBjb25zb2xlLmFz
c2VydChjb250ZW50KTsKLQotICAgICAgICB0aGlzLl9jb250ZW50ID0gY29udGVudDsKLQotICAg
ICAgICB0aGlzLl9jb250ZW50TmVlZHNVcGRhdGUgPSB0cnVlOwotCi0gICAgICAgIGlmICh0aGlz
LnBvdGVudGlhbGx5VmlzaWJsZSkKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZSgpOwotICAgIH0s
Ci0KLSAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5wb3Rl
bnRpYWxseVZpc2libGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHByZXZp
b3VzbHlGb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7Ci0KLSAgICAgICAg
dGhpcy5fY29udGVudE5lZWRzVXBkYXRlID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fdXBkYXRlKCk7
Ci0KLSAgICAgICAgaWYgKHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCkKLSAgICAgICAgICAgIHBy
ZXZpb3VzbHlGb2N1c2VkRWxlbWVudC5mb2N1cygpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAg
KiBAcGFyYW0ge0Rhc2hib2FyZC5SZWN0fSB0YXJnZXRGcmFtZQotICAgICAqIEBwYXJhbSB7RWxl
bWVudH0gY29udGVudAotICAgICAqIEBwYXJhbSB7RGFzaGJvYXJkLlJlY3RFZGdlfVtdIHByZWZl
cnJlZEVkZ2VzCi0gICAgICovCi0gICAgcHJlc2VudDogZnVuY3Rpb24odGFyZ2V0RnJhbWUsIHBy
ZWZlcnJlZEVkZ2VzKQotICAgIHsKLSAgICAgICAgdGhpcy5fdGFyZ2V0RnJhbWUgPSB0YXJnZXRG
cmFtZTsKLSAgICAgICAgdGhpcy5fcHJlZmVycmVkRWRnZXMgPSBwcmVmZXJyZWRFZGdlczsKLQot
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9jb250ZW50KTsKLQotICAgICAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcywgdHJ1ZSk7Ci0gICAgICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLCB0cnVlKTsKLQotICAgICAgICB0aGlz
Ll91cGRhdGUoKTsKLQotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoRGFzaGJv
YXJkLlBvcG92ZXIuU3RlcEluQ2xhc3NOYW1lKTsKLQotICAgICAgICB0aGlzLl9lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLCB0aGlzLCB0cnVlKTsKLSAgICAgICAgdGhpcy5f
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgdGhpcywgdHJ1ZSk7Ci0gICAg
fSwKLQotICAgIG1ha2VWaXNpYmxlSW1tZWRpYXRlbHk6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NvbnRlbnQpOwotCi0gICAgICAgIHRoaXMuX2ZpbmFs
aXplUHJlc2VudGF0aW9uKCk7Ci0gICAgfSwKLSAgICAKLSAgICBkaXNtaXNzOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5wYXJlbnROb2RlICE9PSBkb2N1bWVu
dC5ib2R5KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmFkZChEYXNoYm9hcmQuUG9wb3Zlci5GYWRlT3V0Q2xhc3NOYW1lKTsKLSAgICB9LAot
Ci0gICAgZGlzbWlzc0ltbWVkaWF0ZWx5OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAo
dGhpcy5fZWxlbWVudC5wYXJlbnROb2RlICE9PSBkb2N1bWVudC5ib2R5KQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2ZpbmFsaXplRGlzbWlzc2FsKCk7Ci0gICAgfSwKLQot
ICAgIGhhbmRsZUV2ZW50OiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAo
ZXZlbnQudHlwZSkgewotICAgICAgICBjYXNlICJtb3VzZWRvd24iOgotICAgICAgICBjYXNlICJz
Y3JvbGwiOgotICAgICAgICAgICAgaWYgKCF0aGlzLl9lbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRh
cmdldCkpCi0gICAgICAgICAgICAgICAgdGhpcy5kaXNtaXNzSW1tZWRpYXRlbHkoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJ0cmFuc2l0aW9uZW5kIjoKLSAgICAgICAgICAg
IGlmICh0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhEYXNoYm9hcmQuUG9wb3Zlci5T
dGVwSW5DbGFzc05hbWUpKQotICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmFsaXplUHJlc2VudGF0
aW9uKCk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250
YWlucyhEYXNoYm9hcmQuUG9wb3Zlci5GYWRlT3V0Q2xhc3NOYW1lKSkKLSAgICAgICAgICAgICAg
ICB0aGlzLl9maW5hbGl6ZURpc21pc3NhbCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgIm1vdXNld2hlZWwiOgotICAgICAgICAgICAgLy8gU2Nyb2xsaW5nIGluc2lkZSBhIHBv
cG92ZXIgc2hvdWxkIG5vdCBjYXNjYWRlIHRvIGRvY3VtZW50IHdoZW4gcmVhY2hpbmcgYSBib3Vu
ZCwgYmVjYXVzZSB0aGF0IHdvdWxkIG1ha2UgaXQgZGlzYXBwZWFyIHVuZXhwZWN0ZWRseS4KLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIG1vdXNlZW50ZXIgZm9yIGJldHRlciBw
ZXJmb3JtYW5jZSBvbmNlIGl0IHdvcmtzIHJlbGlhYmx5LCBzZWUgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA3ODY+LgotICAgICAgICAgICAgaWYgKHRoaXMuX2Nv
bnRhaW5lci5vZmZzZXRIZWlnaHQgPCB0aGlzLl9jb250YWluZXIuc2Nyb2xsSGVpZ2h0KQotICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChEYXNoYm9hcmQuUG9wb3Zl
ci5QcmV2ZW50RG9jdW1lbnRTY3JvbGxpbmdDbGFzc05hbWUpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgIm1vdXNlbGVhdmUiOgotICAgICAgICAgICAgaWYgKCF0aGlzLl9lbGVt
ZW50LmlzU2VsZk9yQW5jZXN0b3IoZXZlbnQudG9FbGVtZW50KSkKLSAgICAgICAgICAgICAgICBk
b2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoRGFzaGJvYXJkLlBvcG92ZXIuUHJldmVudERv
Y3VtZW50U2Nyb2xsaW5nQ2xhc3NOYW1lKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfSwKLQotICAgIC8vIFByaXZhdGUKLQotICAgIF91cGRhdGU6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHZhciB0YXJnZXRGcmFtZSA9IHRoaXMuX3RhcmdldEZyYW1lOwotICAgICAg
ICB2YXIgcHJlZmVycmVkRWRnZXMgPSB0aGlzLl9wcmVmZXJyZWRFZGdlczsKLQotICAgICAgICAv
LyBFbnN1cmUgb3VyIGVsZW1lbnQgaXMgb24gZGlzcGxheSBzbyB0aGF0IGl0cyBtZXRyaWNzIGNh
biBiZSByZXNvbHZlZC4KLSAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSAhPT0g
ZG9jdW1lbnQuYm9keSkKLSAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhp
cy5fZWxlbWVudCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnROZWVkc1VwZGF0ZSkgewot
ICAgICAgICAgICAgLy8gUmVzZXQgQ1NTIHByb3BlcnRpZXMgb24gZWxlbWVudCBzbyB0aGF0IHRo
ZSBlbGVtZW50IG1heSBiZSBzaXplZCB0byBmaXQgaXRzIGNvbnRlbnQuCi0gICAgICAgICAgICB0
aGlzLl9lbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJsZWZ0Iik7Ci0gICAgICAgICAgICB0
aGlzLl9lbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ0b3AiKTsKLSAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoIndpZHRoIik7Ci0gICAgICAgICAgICB0
aGlzLl9lbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJoZWlnaHQiKTsKLSAgICAgICAgICAg
IGlmICh0aGlzLl9lZGdlICE9PSBudWxsKQotICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9jc3NDbGFzc05hbWVGb3JFZGdlKCkpOwotCi0gICAgICAg
ICAgICAvLyBBZGQgdGhlIGNvbnRlbnQgaW4gcGxhY2Ugb2YgdGhlIHdyYXBwZXIgdG8gZ2V0IHRo
ZSByYXcgbWV0cmljcy4KLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVwbGFjZUNoaWxkKHRo
aXMuX2NvbnRlbnQsIHRoaXMuX2NvbnRhaW5lcik7Ci0KLSAgICAgICAgICAgIC8vIEdldCB0aGUg
aWRlYWwgc2l6ZSBmb3IgdGhlIHBvcG92ZXIgdG8gZml0IGl0cyBjb250ZW50LgotICAgICAgICAg
ICAgdmFyIHBvcG92ZXJCb3VuZHMgPSB0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpOwotICAgICAgICAgICAgdGhpcy5fcHJlZmVycmVkU2l6ZSA9IG5ldyBEYXNoYm9hcmQuU2l6
ZShNYXRoLmNlaWwocG9wb3ZlckJvdW5kcy53aWR0aCksIE1hdGguY2VpbChwb3BvdmVyQm91bmRz
LmhlaWdodCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlIGZyYW1lIG9mIHRoZSB3aW5k
b3cgd2l0aCBhIGxpdHRsZSBpbnNldCB0byBtYWtlIHN1cmUgd2UgaGF2ZSByb29tIGZvciBzaGFk
b3dzLgotICAgICAgICB2YXIgY29udGFpbmVyRnJhbWUgPSBuZXcgRGFzaGJvYXJkLlJlY3QoMCwg
MCwgd2luZG93LmlubmVyV2lkdGgsIHdpbmRvdy5pbm5lckhlaWdodCk7Ci0gICAgICAgIGNvbnRh
aW5lckZyYW1lID0gY29udGFpbmVyRnJhbWUuaW5zZXQoRGFzaGJvYXJkLlBvcG92ZXIuU2hhZG93
RWRnZUluc2V0cyk7Ci0KLSAgICAgICAgLy8gV29yayBvdXQgdGhlIG1ldHJpY3MgZm9yIGFsbCBl
ZGdlcy4KLSAgICAgICAgdmFyIG1ldHJpY3MgPSBuZXcgQXJyYXkocHJlZmVycmVkRWRnZXMubGVu
Z3RoKTsKLSAgICAgICAgZm9yICh2YXIgZWRnZU5hbWUgaW4gRGFzaGJvYXJkLlJlY3RFZGdlKSB7
Ci0gICAgICAgICAgICB2YXIgZWRnZSA9IERhc2hib2FyZC5SZWN0RWRnZVtlZGdlTmFtZV07Ci0g
ICAgICAgICAgICB2YXIgaXRlbSA9IHsKLSAgICAgICAgICAgICAgICBlZGdlOiBlZGdlLAotICAg
ICAgICAgICAgICAgIG1ldHJpY3M6IHRoaXMuX2Jlc3RNZXRyaWNzRm9yRWRnZSh0aGlzLl9wcmVm
ZXJyZWRTaXplLCB0YXJnZXRGcmFtZSwgY29udGFpbmVyRnJhbWUsIGVkZ2UpCi0gICAgICAgICAg
ICB9OwotICAgICAgICAgICAgdmFyIHByZWZlcnJlZEluZGV4ID0gcHJlZmVycmVkRWRnZXMuaW5k
ZXhPZihlZGdlKTsKLSAgICAgICAgICAgIGlmIChwcmVmZXJyZWRJbmRleCAhPT0gLTEpCi0gICAg
ICAgICAgICAgICAgbWV0cmljc1twcmVmZXJyZWRJbmRleF0gPSBpdGVtOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIG1ldHJpY3MucHVzaChpdGVtKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZ1bmN0aW9uIGFyZWEoc2l6ZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IHNpemUud2lkdGggKiBzaXplLmhlaWdodDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZpbmQg
aWYgYW55IG9mIHRob3NlIGZpdCBiZXR0ZXIgdGhhbiB0aGUgZnJhbWUgZm9yIHRoZSBwcmVmZXJy
ZWQgZWRnZS4KLSAgICAgICAgdmFyIGJlc3RFZGdlID0gbWV0cmljc1swXS5lZGdlOwotICAgICAg
ICB2YXIgYmVzdE1ldHJpY3MgPSBtZXRyaWNzWzBdLm1ldHJpY3M7Ci0gICAgICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgbWV0cmljcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIGl0ZW1N
ZXRyaWNzID0gbWV0cmljc1tpXS5tZXRyaWNzOwotICAgICAgICAgICAgaWYgKGFyZWEoaXRlbU1l
dHJpY3MuY29udGVudFNpemUpID4gYXJlYShiZXN0TWV0cmljcy5jb250ZW50U2l6ZSkpIHsKLSAg
ICAgICAgICAgICAgICBiZXN0RWRnZSA9IG1ldHJpY3NbaV0uZWRnZTsKLSAgICAgICAgICAgICAg
ICBiZXN0TWV0cmljcyA9IGl0ZW1NZXRyaWNzOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgdmFyIGFuY2hvclBvaW50OwotICAgICAgICB2YXIgYmVzdEZyYW1lID0gYmVzdE1l
dHJpY3MuZnJhbWU7Ci0KLSAgICAgICAgdGhpcy5mcmFtZSA9IGJlc3RGcmFtZTsKLSAgICAgICAg
dGhpcy5fZWRnZSA9IGJlc3RFZGdlOwotCi0gICAgICAgIGlmICh0aGlzLmZyYW1lID09PSBEYXNo
Ym9hcmQuUmVjdC5aRVJPX1JFQ1QpIHsKLSAgICAgICAgICAgIC8vIFRoZSB0YXJnZXQgZm9yIHRo
ZSBwb3BvdmVyIGlzIG9mZnNjcmVlbi4KLSAgICAgICAgICAgIHRoaXMuZGlzbWlzcygpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3dpdGNoIChiZXN0RWRnZSkgewotICAgICAgICAg
ICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1g6IC8vIERpc3BsYXllZCBvbiB0aGUgbGVm
dCBvZiB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgcmlnaHQuCi0gICAgICAgICAgICAgICAgYW5j
aG9yUG9pbnQgPSBuZXcgRGFzaGJvYXJkLlBvaW50KGJlc3RGcmFtZS5zaXplLndpZHRoIC0gRGFz
aGJvYXJkLlBvcG92ZXIuU2hhZG93UGFkZGluZywgdGFyZ2V0RnJhbWUubWlkWSgpIC0gYmVzdEZy
YW1lLm1pblkoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIERh
c2hib2FyZC5SZWN0RWRnZS5NQVhfWDogLy8gRGlzcGxheWVkIG9uIHRoZSByaWdodCBvZiB0aGUg
dGFyZ2V0LCBhcnJvdyBwb2ludHMgbGVmdC4KLSAgICAgICAgICAgICAgICBhbmNob3JQb2ludCA9
IG5ldyBEYXNoYm9hcmQuUG9pbnQoRGFzaGJvYXJkLlBvcG92ZXIuU2hhZG93UGFkZGluZywgdGFy
Z2V0RnJhbWUubWlkWSgpIC0gYmVzdEZyYW1lLm1pblkoKSk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWTogLy8gRGlzcGxh
eWVkIGFib3ZlIHRoZSB0YXJnZXQsIGFycm93IHBvaW50cyBkb3duLgotICAgICAgICAgICAgICAg
IGFuY2hvclBvaW50ID0gbmV3IERhc2hib2FyZC5Qb2ludCh0YXJnZXRGcmFtZS5taWRYKCkgLSBi
ZXN0RnJhbWUubWluWCgpLCBiZXN0RnJhbWUuc2l6ZS5oZWlnaHQgLSBEYXNoYm9hcmQuUG9wb3Zl
ci5TaGFkb3dQYWRkaW5nKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZOiAvLyBEaXNwbGF5ZWQgYmVsb3cgdGhlIHRhcmdl
dCwgYXJyb3cgcG9pbnRzIHVwLgotICAgICAgICAgICAgICAgIGFuY2hvclBvaW50ID0gbmV3IERh
c2hib2FyZC5Qb2ludCh0YXJnZXRGcmFtZS5taWRYKCkgLSBiZXN0RnJhbWUubWluWCgpLCBEYXNo
Ym9hcmQuUG9wb3Zlci5TaGFkb3dQYWRkaW5nKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKHRo
aXMuX2Nzc0NsYXNzTmFtZUZvckVkZ2UoKSk7Ci0KLSAgICAgICAgICAgIHRoaXMuX2RyYXdCYWNr
Z3JvdW5kKGJlc3RFZGdlLCBhbmNob3JQb2ludCk7Ci0KLSAgICAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSBjb250ZW50IGlzIGNlbnRlcmVkIGluIGNhc2UgZWl0aGVyIG9mIHRoZSBkaW1lbnNpb24gaXMg
c21hbGxlciB0aGFuIHRoZSBtaW5pbWFsIGJvdW5kcy4KLSAgICAgICAgICAgIGlmICh0aGlzLl9w
cmVmZXJyZWRTaXplLndpZHRoIDwgRGFzaGJvYXJkLlBvcG92ZXIuTWluV2lkdGggfHwgdGhpcy5f
cHJlZmVycmVkU2l6ZS5oZWlnaHQgPCBEYXNoYm9hcmQuUG9wb3Zlci5NaW5IZWlnaHQpCi0gICAg
ICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImNlbnRlciIpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3Qu
cmVtb3ZlKCJjZW50ZXIiKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFdyYXAgdGhlIGNvbnRl
bnQgaW4gdGhlIGNvbnRhaW5lciBzbyB0aGF0IGl0J3MgbG9jYXRlZCBjb3JyZWN0bHkuCi0gICAg
ICAgIGlmICh0aGlzLl9jb250ZW50TmVlZHNVcGRhdGUpIHsKLSAgICAgICAgICAgIHRoaXMuX2Nv
bnRhaW5lci50ZXh0Q29udGVudCA9ICIiOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5yZXBs
YWNlQ2hpbGQodGhpcy5fY29udGFpbmVyLCB0aGlzLl9jb250ZW50KTsKLSAgICAgICAgICAgIHRo
aXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZW50KTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHRoaXMuX2NvbnRlbnROZWVkc1VwZGF0ZSA9IGZhbHNlOwotICAgIH0sCi0KLSAgICBf
Y3NzQ2xhc3NOYW1lRm9yRWRnZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgc3dpdGNoICh0
aGlzLl9lZGdlKSB7Ci0gICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9YOiAvLyBE
aXNwbGF5ZWQgb24gdGhlIGxlZnQgb2YgdGhlIHRhcmdldCwgYXJyb3cgcG9pbnRzIHJpZ2h0Lgot
ICAgICAgICAgICAgcmV0dXJuICJhcnJvdy1yaWdodCI7Ci0gICAgICAgIGNhc2UgRGFzaGJvYXJk
LlJlY3RFZGdlLk1BWF9YOiAvLyBEaXNwbGF5ZWQgb24gdGhlIHJpZ2h0IG9mIHRoZSB0YXJnZXQs
IGFycm93IHBvaW50cyBsZWZ0LgotICAgICAgICAgICAgcmV0dXJuICJhcnJvdy1sZWZ0IjsKLSAg
ICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1k6IC8vIERpc3BsYXllZCBhYm92ZSB0
aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgZG93bi4KLSAgICAgICAgICAgIHJldHVybiAiYXJyb3ct
ZG93biI7Ci0gICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZOiAvLyBEaXNwbGF5
ZWQgYmVsb3cgdGhlIHRhcmdldCwgYXJyb3cgcG9pbnRzIHVwLgotICAgICAgICAgICAgcmV0dXJu
ICJhcnJvdy11cCI7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBl
ZGdlLiIpOwotICAgICAgICByZXR1cm4gImFycm93LXVwIjsKLSAgICB9LAotCi0gICAgX2RyYXdC
YWNrZ3JvdW5kOiBmdW5jdGlvbihlZGdlLCBhbmNob3JQb2ludCkKLSAgICB7Ci0gICAgICAgIHZh
ciBzY2FsZUZhY3RvciA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvOwotCi0gICAgICAgIHZhciB3
aWR0aCA9IHRoaXMuX2ZyYW1lLnNpemUud2lkdGg7Ci0gICAgICAgIHZhciBoZWlnaHQgPSB0aGlz
Ll9mcmFtZS5zaXplLmhlaWdodDsKLSAgICAgICAgdmFyIHNjYWxlZFdpZHRoID0gd2lkdGggKiBz
Y2FsZUZhY3RvcjsKLSAgICAgICAgdmFyIHNjYWxlZEhlaWdodCA9IGhlaWdodCAqIHNjYWxlRmFj
dG9yOwotCi0gICAgICAgIC8vIENyZWF0ZSBhIHNjcmF0Y2ggY2FudmFzIHNvIHdlIGNhbiBkcmF3
IHRoZSBwb3BvdmVyIHRoYXQgd2lsbCBsYXRlciBiZSBkcmF3biBpbnRvCi0gICAgICAgIC8vIHRo
ZSBmaW5hbCBjb250ZXh0IHdpdGggYSBzaGFkb3cuCi0gICAgICAgIHZhciBzY3JhdGNoQ2FudmFz
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgICAgIHNjcmF0Y2hDYW52
YXMud2lkdGggPSBzY2FsZWRXaWR0aDsKLSAgICAgICAgc2NyYXRjaENhbnZhcy5oZWlnaHQgPSBz
Y2FsZWRIZWlnaHQ7Ci0KLSAgICAgICAgdmFyIGN0eCA9IHNjcmF0Y2hDYW52YXMuZ2V0Q29udGV4
dCgiMmQiKTsKLSAgICAgICAgY3R4LnNjYWxlKHNjYWxlRmFjdG9yLCBzY2FsZUZhY3Rvcik7Ci0K
LSAgICAgICAgLy8gQm91bmRzIG9mIHRoZSBwYXRoIGRvbid0IHRha2UgaW50byBhY2NvdW50IHRo
ZSBhcnJvdywgYnV0IHJlYWxseSBvbmx5IHRoZSB0aWdodCBib3VuZGluZyBib3gKLSAgICAgICAg
Ly8gb2YgdGhlIGNvbnRlbnQgY29udGFpbmVkIHdpdGhpbiB0aGUgZnJhbWUuCi0gICAgICAgIHZh
ciBib3VuZHM7Ci0gICAgICAgIHZhciBhcnJvd0hlaWdodCA9IERhc2hib2FyZC5Qb3BvdmVyLkFu
Y2hvclNpemUuaGVpZ2h0OwotICAgICAgICBzd2l0Y2ggKGVkZ2UpIHsKLSAgICAgICAgY2FzZSBE
YXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1g6IC8vIERpc3BsYXllZCBvbiB0aGUgbGVmdCBvZiB0aGUg
dGFyZ2V0LCBhcnJvdyBwb2ludHMgcmlnaHQuCi0gICAgICAgICAgICBib3VuZHMgPSBuZXcgRGFz
aGJvYXJkLlJlY3QoMCwgMCwgd2lkdGggLSBhcnJvd0hlaWdodCwgaGVpZ2h0KTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIERhc2hib2FyZC5SZWN0RWRnZS5NQVhfWDogLy8gRGlz
cGxheWVkIG9uIHRoZSByaWdodCBvZiB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgbGVmdC4KLSAg
ICAgICAgICAgIGJvdW5kcyA9IG5ldyBEYXNoYm9hcmQuUmVjdChhcnJvd0hlaWdodCwgMCwgd2lk
dGggLSBhcnJvd0hlaWdodCwgaGVpZ2h0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWTogLy8gRGlzcGxheWVkIGFib3ZlIHRoZSB0YXJn
ZXQsIGFycm93IHBvaW50cyBkb3duLgotICAgICAgICAgICAgYm91bmRzID0gbmV3IERhc2hib2Fy
ZC5SZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQgLSBhcnJvd0hlaWdodCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1k6IC8vIERpc3BsYXll
ZCBiZWxvdyB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgdXAuCi0gICAgICAgICAgICBib3VuZHMg
PSBuZXcgRGFzaGJvYXJkLlJlY3QoMCwgYXJyb3dIZWlnaHQsIHdpZHRoLCBoZWlnaHQgLSBhcnJv
d0hlaWdodCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGJvdW5k
cyA9IGJvdW5kcy5pbnNldChEYXNoYm9hcmQuUG9wb3Zlci5TaGFkb3dFZGdlSW5zZXRzKTsKLQot
ICAgICAgICAvLyBDbGlwIHRoZSBmcmFtZS4KLSAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJibGFj
ayI7Ci0gICAgICAgIHRoaXMuX2RyYXdGcmFtZShjdHgsIGJvdW5kcywgZWRnZSwgYW5jaG9yUG9p
bnQpOwotICAgICAgICBjdHguY2xpcCgpOwotCi0gICAgICAgIC8vIEdyYWRpZW50IGZpbGwsIHRv
cC10by1ib3R0b20uCi0gICAgICAgIHZhciBmaWxsR3JhZGllbnQgPSBjdHguY3JlYXRlTGluZWFy
R3JhZGllbnQoMCwgMCwgMCwgaGVpZ2h0KTsKLSAgICAgICAgZmlsbEdyYWRpZW50LmFkZENvbG9y
U3RvcCgwLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KSIpOwotICAgICAgICBmaWxsR3JhZGll
bnQuYWRkQ29sb3JTdG9wKDEsICJyZ2JhKDIzNSwgMjM1LCAyMzUsIDAuOTUpIik7Ci0gICAgICAg
IGN0eC5maWxsU3R5bGUgPSBmaWxsR3JhZGllbnQ7Ci0gICAgICAgIGN0eC5maWxsUmVjdCgwLCAw
LCB3aWR0aCwgaGVpZ2h0KTsKLQotICAgICAgICAvLyBTdHJva2UuCi0gICAgICAgIGN0eC5zdHJv
a2VTdHlsZSA9ICJyZ2JhKDAsIDAsIDAsIDAuMjUpIjsKLSAgICAgICAgY3R4LmxpbmVXaWR0aCA9
IDI7Ci0gICAgICAgIHRoaXMuX2RyYXdGcmFtZShjdHgsIGJvdW5kcywgZWRnZSwgYW5jaG9yUG9p
bnQpOwotICAgICAgICBjdHguc3Ryb2tlKCk7Ci0KLSAgICAgICAgLy8gRHJhdyB0aGUgcG9wb3Zl
ciBpbnRvIHRoZSBmaW5hbCBjb250ZXh0IHdpdGggYSBkcm9wIHNoYWRvdy4KLSAgICAgICAgdmFy
IGZpbmFsQ29udGV4dCA9IGRvY3VtZW50LmdldENTU0NhbnZhc0NvbnRleHQoIjJkIiwgdGhpcy5f
Y2FudmFzSWQsIHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpOwotCi0gICAgICAgIGZpbmFsQ29u
dGV4dC5jbGVhclJlY3QoMCwgMCwgc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCk7Ci0KLSAgICAg
ICAgZmluYWxDb250ZXh0LnNoYWRvd09mZnNldFggPSAxOwotICAgICAgICBmaW5hbENvbnRleHQu
c2hhZG93T2Zmc2V0WSA9IDE7Ci0gICAgICAgIGZpbmFsQ29udGV4dC5zaGFkb3dCbHVyID0gNTsK
LSAgICAgICAgZmluYWxDb250ZXh0LnNoYWRvd0NvbG9yID0gInJnYmEoMCwgMCwgMCwgMC41KSI7
Ci0KLSAgICAgICAgZmluYWxDb250ZXh0LmRyYXdJbWFnZShzY3JhdGNoQ2FudmFzLCAwLCAwLCBz
Y2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTsKLSAgICB9LAotICAgIAotICAgIF9iZXN0TWV0cmlj
c0ZvckVkZ2U6IGZ1bmN0aW9uKHByZWZlcnJlZFNpemUsIHRhcmdldEZyYW1lLCBjb250YWluZXJG
cmFtZSwgZWRnZSkKLSAgICB7Ci0gICAgICAgIHZhciB4LCB5OwotICAgICAgICB2YXIgd2lkdGgg
PSBwcmVmZXJyZWRTaXplLndpZHRoICsgKERhc2hib2FyZC5Qb3BvdmVyLlNoYWRvd1BhZGRpbmcg
KiAyKSArIChEYXNoYm9hcmQuUG9wb3Zlci5Db250ZW50UGFkZGluZyAqIDIpOwotICAgICAgICB2
YXIgaGVpZ2h0ID0gcHJlZmVycmVkU2l6ZS5oZWlnaHQgKyAoRGFzaGJvYXJkLlBvcG92ZXIuU2hh
ZG93UGFkZGluZyAqIDIpICsgKERhc2hib2FyZC5Qb3BvdmVyLkNvbnRlbnRQYWRkaW5nICogMik7
Ci0gICAgICAgIHZhciBhcnJvd0xlbmd0aCA9IERhc2hib2FyZC5Qb3BvdmVyLkFuY2hvclNpemUu
aGVpZ2h0OwotCi0gICAgICAgIHN3aXRjaCAoZWRnZSkgewotICAgICAgICBjYXNlIERhc2hib2Fy
ZC5SZWN0RWRnZS5NSU5fWDogLy8gRGlzcGxheWVkIG9uIHRoZSBsZWZ0IG9mIHRoZSB0YXJnZXQs
IGFycm93IHBvaW50cyByaWdodC4KLSAgICAgICAgICAgIHdpZHRoICs9IGFycm93TGVuZ3RoOwot
ICAgICAgICAgICAgeCA9IHRhcmdldEZyYW1lLm9yaWdpbi54IC0gd2lkdGggKyBEYXNoYm9hcmQu
UG9wb3Zlci5TaGFkb3dQYWRkaW5nOwotICAgICAgICAgICAgeSA9IHRhcmdldEZyYW1lLm9yaWdp
bi55IC0gKGhlaWdodCAtIHRhcmdldEZyYW1lLnNpemUuaGVpZ2h0KSAvIDI7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1g6IC8vIERpc3Bs
YXllZCBvbiB0aGUgcmlnaHQgb2YgdGhlIHRhcmdldCwgYXJyb3cgcG9pbnRzIGxlZnQuCi0gICAg
ICAgICAgICB3aWR0aCArPSBhcnJvd0xlbmd0aDsKLSAgICAgICAgICAgIHggPSB0YXJnZXRGcmFt
ZS5vcmlnaW4ueCArIHRhcmdldEZyYW1lLnNpemUud2lkdGggLSBEYXNoYm9hcmQuUG9wb3Zlci5T
aGFkb3dQYWRkaW5nOwotICAgICAgICAgICAgeSA9IHRhcmdldEZyYW1lLm9yaWdpbi55IC0gKGhl
aWdodCAtIHRhcmdldEZyYW1lLnNpemUuaGVpZ2h0KSAvIDI7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1k6IC8vIERpc3BsYXllZCBhYm92
ZSB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgZG93bi4KLSAgICAgICAgICAgIGhlaWdodCArPSBh
cnJvd0xlbmd0aDsKLSAgICAgICAgICAgIHggPSB0YXJnZXRGcmFtZS5vcmlnaW4ueCAtICh3aWR0
aCAtIHRhcmdldEZyYW1lLnNpemUud2lkdGgpIC8gMjsKLSAgICAgICAgICAgIHkgPSB0YXJnZXRG
cmFtZS5vcmlnaW4ueSAtIGhlaWdodCArIERhc2hib2FyZC5Qb3BvdmVyLlNoYWRvd1BhZGRpbmc7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFY
X1k6IC8vIERpc3BsYXllZCBiZWxvdyB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgdXAuCi0gICAg
ICAgICAgICBoZWlnaHQgKz0gYXJyb3dMZW5ndGg7Ci0gICAgICAgICAgICB4ID0gdGFyZ2V0RnJh
bWUub3JpZ2luLnggLSAod2lkdGggLSB0YXJnZXRGcmFtZS5zaXplLndpZHRoKSAvIDI7Ci0gICAg
ICAgICAgICB5ID0gdGFyZ2V0RnJhbWUub3JpZ2luLnkgKyB0YXJnZXRGcmFtZS5zaXplLmhlaWdo
dCAtIERhc2hib2FyZC5Qb3BvdmVyLlNoYWRvd1BhZGRpbmc7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChlZGdlID09PSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlO
X1ggfHwgZWRnZSA9PT0gRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YKSB7Ci0gICAgICAgICAgICBp
ZiAoeSA8IGNvbnRhaW5lckZyYW1lLm1pblkoKSkKLSAgICAgICAgICAgICAgICB5ID0gY29udGFp
bmVyRnJhbWUubWluWSgpOwotICAgICAgICAgICAgaWYgKHkgKyBoZWlnaHQgPiBjb250YWluZXJG
cmFtZS5tYXhZKCkpCi0gICAgICAgICAgICAgICAgeSA9IGNvbnRhaW5lckZyYW1lLm1heFkoKSAt
IGhlaWdodDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICh4IDwgY29udGFpbmVy
RnJhbWUubWluWCgpKQotICAgICAgICAgICAgICAgIHggPSBjb250YWluZXJGcmFtZS5taW5YKCk7
IAotICAgICAgICAgICAgaWYgKHggKyB3aWR0aCA+IGNvbnRhaW5lckZyYW1lLm1heFgoKSkKLSAg
ICAgICAgICAgICAgICB4ID0gY29udGFpbmVyRnJhbWUubWF4WCgpIC0gd2lkdGg7Ci0gICAgICAg
IH0KLQotICAgICAgICB2YXIgcHJlZmVycmVkRnJhbWUgPSBuZXcgRGFzaGJvYXJkLlJlY3QoeCwg
eSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgIHZhciBiZXN0RnJhbWUgPSBwcmVmZXJyZWRGcmFt
ZS5pbnRlcnNlY3Rpb25XaXRoUmVjdChjb250YWluZXJGcmFtZSk7Ci0KLSAgICAgICAgd2lkdGgg
PSBiZXN0RnJhbWUuc2l6ZS53aWR0aCAtIChEYXNoYm9hcmQuUG9wb3Zlci5TaGFkb3dQYWRkaW5n
ICogMik7Ci0gICAgICAgIGhlaWdodCA9IGJlc3RGcmFtZS5zaXplLmhlaWdodCAtIChEYXNoYm9h
cmQuUG9wb3Zlci5TaGFkb3dQYWRkaW5nICogMik7Ci0KLSAgICAgICAgc3dpdGNoIChlZGdlKSB7
Ci0gICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9YOiAvLyBEaXNwbGF5ZWQgb24g
dGhlIGxlZnQgb2YgdGhlIHRhcmdldCwgYXJyb3cgcG9pbnRzIHJpZ2h0LgotICAgICAgICBjYXNl
IERhc2hib2FyZC5SZWN0RWRnZS5NQVhfWDogLy8gRGlzcGxheWVkIG9uIHRoZSByaWdodCBvZiB0
aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgbGVmdC4KLSAgICAgICAgICAgIHdpZHRoIC09IGFycm93
TGVuZ3RoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RF
ZGdlLk1JTl9ZOiAvLyBEaXNwbGF5ZWQgYWJvdmUgdGhlIHRhcmdldCwgYXJyb3cgcG9pbnRzIGRv
d24uCi0gICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZOiAvLyBEaXNwbGF5ZWQg
YmVsb3cgdGhlIHRhcmdldCwgYXJyb3cgcG9pbnRzIHVwLgotICAgICAgICAgICAgaGVpZ2h0IC09
IGFycm93TGVuZ3RoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gewotICAgICAgICAgICAgZnJhbWU6IGJlc3RGcmFtZSwKLSAgICAgICAgICAgIGNvbnRl
bnRTaXplOiBuZXcgRGFzaGJvYXJkLlNpemUod2lkdGgsIGhlaWdodCkKLSAgICAgICAgfTsKLSAg
ICB9LAotCi0gICAgX2RyYXdGcmFtZTogZnVuY3Rpb24oY3R4LCBib3VuZHMsIGFuY2hvckVkZ2Us
IGFuY2hvclBvaW50KQotICAgIHsKLSAgICAgICAgdmFyIHIgPSBEYXNoYm9hcmQuUG9wb3Zlci5D
b3JuZXJSYWRpdXM7Ci0gICAgICAgIHZhciBhcnJvd0hhbGZMZW5ndGggPSBEYXNoYm9hcmQuUG9w
b3Zlci5BbmNob3JTaXplLndpZHRoIC8gMjsKLQotICAgICAgICBjdHguYmVnaW5QYXRoKCk7Ci0g
ICAgICAgIHN3aXRjaCAoYW5jaG9yRWRnZSkgewotICAgICAgICBjYXNlIERhc2hib2FyZC5SZWN0
RWRnZS5NSU5fWDogLy8gRGlzcGxheWVkIG9uIHRoZSBsZWZ0IG9mIHRoZSB0YXJnZXQsIGFycm93
IHBvaW50cyByaWdodC4KLSAgICAgICAgICAgIGN0eC5tb3ZlVG8oYm91bmRzLm1heFgoKSwgYm91
bmRzLm1pblkoKSArIHIpOwotICAgICAgICAgICAgY3R4LmxpbmVUbyhib3VuZHMubWF4WCgpLCBh
bmNob3JQb2ludC55IC0gYXJyb3dIYWxmTGVuZ3RoKTsKLSAgICAgICAgICAgIGN0eC5saW5lVG8o
YW5jaG9yUG9pbnQueCwgYW5jaG9yUG9pbnQueSk7Ci0gICAgICAgICAgICBjdHgubGluZVRvKGJv
dW5kcy5tYXhYKCksIGFuY2hvclBvaW50LnkgKyBhcnJvd0hhbGZMZW5ndGgpOwotICAgICAgICAg
ICAgY3R4LmFyY1RvKGJvdW5kcy5tYXhYKCksIGJvdW5kcy5tYXhZKCksIGJvdW5kcy5taW5YKCks
IGJvdW5kcy5tYXhZKCksIHIpOwotICAgICAgICAgICAgY3R4LmFyY1RvKGJvdW5kcy5taW5YKCks
IGJvdW5kcy5tYXhZKCksIGJvdW5kcy5taW5YKCksIGJvdW5kcy5taW5ZKCksIHIpOwotICAgICAg
ICAgICAgY3R4LmFyY1RvKGJvdW5kcy5taW5YKCksIGJvdW5kcy5taW5ZKCksIGJvdW5kcy5tYXhY
KCksIGJvdW5kcy5taW5ZKCksIHIpOwotICAgICAgICAgICAgY3R4LmFyY1RvKGJvdW5kcy5tYXhY
KCksIGJvdW5kcy5taW5ZKCksIGJvdW5kcy5tYXhYKCksIGJvdW5kcy5tYXhZKCksIHIpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YOiAv
LyBEaXNwbGF5ZWQgb24gdGhlIHJpZ2h0IG9mIHRoZSB0YXJnZXQsIGFycm93IHBvaW50cyBsZWZ0
LgotICAgICAgICAgICAgY3R4Lm1vdmVUbyhib3VuZHMubWluWCgpLCBib3VuZHMubWF4WSgpIC0g
cik7Ci0gICAgICAgICAgICBjdHgubGluZVRvKGJvdW5kcy5taW5YKCksIGFuY2hvclBvaW50Lnkg
KyBhcnJvd0hhbGZMZW5ndGgpOwotICAgICAgICAgICAgY3R4LmxpbmVUbyhhbmNob3JQb2ludC54
LCBhbmNob3JQb2ludC55KTsKLSAgICAgICAgICAgIGN0eC5saW5lVG8oYm91bmRzLm1pblgoKSwg
YW5jaG9yUG9pbnQueSAtIGFycm93SGFsZkxlbmd0aCk7Ci0gICAgICAgICAgICBjdHguYXJjVG8o
Ym91bmRzLm1pblgoKSwgYm91bmRzLm1pblkoKSwgYm91bmRzLm1heFgoKSwgYm91bmRzLm1pblko
KSwgcik7Ci0gICAgICAgICAgICBjdHguYXJjVG8oYm91bmRzLm1heFgoKSwgYm91bmRzLm1pblko
KSwgYm91bmRzLm1heFgoKSwgYm91bmRzLm1heFkoKSwgcik7Ci0gICAgICAgICAgICBjdHguYXJj
VG8oYm91bmRzLm1heFgoKSwgYm91bmRzLm1heFkoKSwgYm91bmRzLm1pblgoKSwgYm91bmRzLm1h
eFkoKSwgcik7Ci0gICAgICAgICAgICBjdHguYXJjVG8oYm91bmRzLm1pblgoKSwgYm91bmRzLm1h
eFkoKSwgYm91bmRzLm1pblgoKSwgYm91bmRzLm1pblkoKSwgcik7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1k6IC8vIERpc3BsYXllZCBh
Ym92ZSB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgZG93bi4KLSAgICAgICAgICAgIGN0eC5tb3Zl
VG8oYm91bmRzLm1heFgoKSAtIHIsIGJvdW5kcy5tYXhZKCkpOwotICAgICAgICAgICAgY3R4Lmxp
bmVUbyhhbmNob3JQb2ludC54ICsgYXJyb3dIYWxmTGVuZ3RoLCBib3VuZHMubWF4WSgpKTsKLSAg
ICAgICAgICAgIGN0eC5saW5lVG8oYW5jaG9yUG9pbnQueCwgYW5jaG9yUG9pbnQueSk7Ci0gICAg
ICAgICAgICBjdHgubGluZVRvKGFuY2hvclBvaW50LnggLSBhcnJvd0hhbGZMZW5ndGgsIGJvdW5k
cy5tYXhZKCkpOwotICAgICAgICAgICAgY3R4LmFyY1RvKGJvdW5kcy5taW5YKCksIGJvdW5kcy5t
YXhZKCksIGJvdW5kcy5taW5YKCksIGJvdW5kcy5taW5ZKCksIHIpOwotICAgICAgICAgICAgY3R4
LmFyY1RvKGJvdW5kcy5taW5YKCksIGJvdW5kcy5taW5ZKCksIGJvdW5kcy5tYXhYKCksIGJvdW5k
cy5taW5ZKCksIHIpOwotICAgICAgICAgICAgY3R4LmFyY1RvKGJvdW5kcy5tYXhYKCksIGJvdW5k
cy5taW5ZKCksIGJvdW5kcy5tYXhYKCksIGJvdW5kcy5tYXhZKCksIHIpOwotICAgICAgICAgICAg
Y3R4LmFyY1RvKGJvdW5kcy5tYXhYKCksIGJvdW5kcy5tYXhZKCksIGJvdW5kcy5taW5YKCksIGJv
dW5kcy5tYXhZKCksIHIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGFzaGJv
YXJkLlJlY3RFZGdlLk1BWF9ZOiAvLyBEaXNwbGF5ZWQgYmVsb3cgdGhlIHRhcmdldCwgYXJyb3cg
cG9pbnRzIHVwLgotICAgICAgICAgICAgY3R4Lm1vdmVUbyhib3VuZHMubWluWCgpICsgciwgYm91
bmRzLm1pblkoKSk7Ci0gICAgICAgICAgICBjdHgubGluZVRvKGFuY2hvclBvaW50LnggLSBhcnJv
d0hhbGZMZW5ndGgsIGJvdW5kcy5taW5ZKCkpOwotICAgICAgICAgICAgY3R4LmxpbmVUbyhhbmNo
b3JQb2ludC54LCBhbmNob3JQb2ludC55KTsKLSAgICAgICAgICAgIGN0eC5saW5lVG8oYW5jaG9y
UG9pbnQueCArIGFycm93SGFsZkxlbmd0aCwgYm91bmRzLm1pblkoKSk7Ci0gICAgICAgICAgICBj
dHguYXJjVG8oYm91bmRzLm1heFgoKSwgYm91bmRzLm1pblkoKSwgYm91bmRzLm1heFgoKSwgYm91
bmRzLm1heFkoKSwgcik7Ci0gICAgICAgICAgICBjdHguYXJjVG8oYm91bmRzLm1heFgoKSwgYm91
bmRzLm1heFkoKSwgYm91bmRzLm1pblgoKSwgYm91bmRzLm1heFkoKSwgcik7Ci0gICAgICAgICAg
ICBjdHguYXJjVG8oYm91bmRzLm1pblgoKSwgYm91bmRzLm1heFkoKSwgYm91bmRzLm1pblgoKSwg
Ym91bmRzLm1pblkoKSwgcik7Ci0gICAgICAgICAgICBjdHguYXJjVG8oYm91bmRzLm1pblgoKSwg
Ym91bmRzLm1pblkoKSwgYm91bmRzLm1heFgoKSwgYm91bmRzLm1pblkoKSwgcik7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjdHguY2xvc2VQYXRoKCk7Ci0gICAgfSwK
LQotICAgIF9maW5hbGl6ZVByZXNlbnRhdGlvbjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
dmFyIHdhc1Zpc2libGUgPSB0aGlzLnZpc2libGU7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZShEYXNoYm9hcmQuUG9wb3Zlci5TdGVwSW5DbGFzc05hbWUpOwotICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoRGFzaGJvYXJkLlBvcG92ZXIuRmFkZU91
dENsYXNzTmFtZSk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChEYXNoYm9h
cmQuUG9wb3Zlci5WaXNpYmxlQ2xhc3NOYW1lKTsKLQotICAgICAgICAvLyBNYWtlIHNjcm9sbCBi
YXIgZmxhc2ggaWYgcHJlc2VudCwgc28gdGhhdCB0aGUgdXNlciBzZWVzIHRoYXQgc2Nyb2xsaW5n
IGlzIHBvc3NpYmxlLgotICAgICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYSBiZXR0ZXIgd2F5Pwot
ICAgICAgICBpZiAoIXdhc1Zpc2libGUpIHsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5z
Y3JvbGxUb3AgPSAxOwotICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLnNjcm9sbFRvcCA9IDA7
Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgX2ZpbmFsaXplRGlzbWlzc2FsOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwg
dGhpcywgdHJ1ZSk7Ci0gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwi
LCB0aGlzLCB0cnVlKTsKLQotICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMu
X2VsZW1lbnQpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoRGFzaGJv
YXJkLlBvcG92ZXIuUHJldmVudERvY3VtZW50U2Nyb2xsaW5nQ2xhc3NOYW1lKTsKLSAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKERhc2hib2FyZC5Qb3BvdmVyLlZpc2libGVD
bGFzc05hbWUpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoRGFzaGJv
YXJkLlBvcG92ZXIuU3RlcEluQ2xhc3NOYW1lKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QucmVtb3ZlKERhc2hib2FyZC5Qb3BvdmVyLkZhZGVPdXRDbGFzc05hbWUpOwotICAgICAg
ICB0aGlzLl9jb250YWluZXIudGV4dENvbnRlbnQgPSAiIjsKLSAgICAgICAgaWYgKHRoaXMuZGVs
ZWdhdGUgJiYgdHlwZW9mIHRoaXMuZGVsZWdhdGUuZGlkRGlzbWlzc1BvcG92ZXIgPT09ICJmdW5j
dGlvbiIpCi0gICAgICAgICAgICB0aGlzLmRlbGVnYXRlLmRpZERpc21pc3NQb3BvdmVyKHRoaXMp
OwotICAgIH0KLX07CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvUG9wb3Zlci5q
cwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZl
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQoj
IyAtMSArMCwwICMjCi10ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9Qb3BvdmVyVHJhY2tlci5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L1NjcmlwdHMvUG9wb3ZlclRyYWNrZXIuanMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy9Qb3BvdmVyVHJhY2tlci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE3NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotUG9wb3ZlclRyYWNrZXIgPSBmdW5jdGlvbihlbGVtZW50LCBwcmVzZW50UG9w
b3ZlckNhbGxiYWNrLCBjb250ZXh0KQotewotICAgIEJhc2VPYmplY3QuY2FsbCh0aGlzKTsKLQot
ICAgIGNvbnNvbGUuYXNzZXJ0KGVsZW1lbnQpOwotICAgIGNvbnNvbGUuYXNzZXJ0KHByZXNlbnRQ
b3BvdmVyQ2FsbGJhY2sgJiYgdHlwZW9mIHByZXNlbnRQb3BvdmVyQ2FsbGJhY2sgPT09ICJmdW5j
dGlvbiIpOwotCi0gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQ7Ci0gICAgdGhpcy5fcHJlc2Vu
dFBvcG92ZXIgPSBwcmVzZW50UG9wb3ZlckNhbGxiYWNrOwotICAgIHRoaXMuX2NvbnRleHQgPSBj
b250ZXh0OwotICAgIHRoaXMuX2FjdGl2ZSA9IGZhbHNlOwotCi0gICAgZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJwb3BvdmVyLXRyYWNraW5nIik7Ci0gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZWVudGVyIiwgdGhpcy5fbW91c2VFbnRlcmVkUG9wb3Zlck9yRWxlbWVudC5iaW5kKHRo
aXMpLCB0cnVlKTsKLSAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0
aGlzLl9tb3VzZUV4aXRlZFBvcG92ZXJPckVsZW1lbnQuYmluZCh0aGlzKSwgdHJ1ZSk7Ci0gICAg
ZWxlbWVudC5wb3BvdmVyVHJhY2tlciA9IHRoaXM7Ci19OwotCi0vLyBPbmx5IG9uZSBwb3BvdmVy
IG1heSBiZSBhY3RpdmUgYXQgYW55IHRpbWUuIEFuIGFjdGl2ZSBwb3BvdmVyIGlzIG5vdCBuZWNl
c3NhcmlseSB2aXNpYmxlIGFscmVhZHkuCi1Qb3BvdmVyVHJhY2tlci5fcG9wb3ZlciA9IG51bGw7
Ci0KLS8vIEEgY2FuZGlkYXRlIHRpbWVyIG1heSBiZSBhY3RpdmUgd2hldGhlciB3ZSBoYXZlIGFu
IGFjdGl2ZSBwb3BvdmVyIG9yIG5vdC4KLVBvcG92ZXJUcmFja2VyLl9jYW5kaWRhdGVUcmFja2Vy
ID0gbnVsbDsKLVBvcG92ZXJUcmFja2VyLl9jYW5kaWRhdGVUaW1lciA9IG51bGw7Ci1Qb3BvdmVy
VHJhY2tlci5DYW5kaWRhdGVTd2l0Y2hEZWxheSA9IDIwMDsKLQotQmFzZU9iamVjdC5hZGRDb25z
dHJ1Y3RvckZ1bmN0aW9ucyhQb3BvdmVyVHJhY2tlcik7Ci0KLVBvcG92ZXJUcmFja2VyLl9zZXRD
YW5kaWRhdGVQb3BvdmVyVHJhY2tlciA9IGZ1bmN0aW9uKHBvcG92ZXJUcmFja2VyKQotewotICAg
IGNvbnNvbGUuYXNzZXJ0KCFwb3BvdmVyVHJhY2tlciB8fCAhcG9wb3ZlclRyYWNrZXIuX2FjdGl2
ZSk7Ci0KLSAgICBpZiAoUG9wb3ZlclRyYWNrZXIuX2NhbmRpZGF0ZVRyYWNrZXIpIHsKLSAgICAg
ICAgY2xlYXJUaW1lb3V0KFBvcG92ZXJUcmFja2VyLl9jYW5kaWRhdGVUaW1lcik7Ci0gICAgICAg
IFBvcG92ZXJUcmFja2VyLl9jYW5kaWRhdGVUaW1lciA9IG51bGw7Ci0gICAgfQotCi0gICAgY29u
c29sZS5hc3NlcnQoIVBvcG92ZXJUcmFja2VyLl9jYW5kaWRhdGVUaW1lcik7Ci0gICAgCi0gICAg
UG9wb3ZlclRyYWNrZXIuX2NhbmRpZGF0ZVRyYWNrZXIgPSBwb3BvdmVyVHJhY2tlcjsKLQotICAg
IGlmIChwb3BvdmVyVHJhY2tlcikKLSAgICAgICAgUG9wb3ZlclRyYWNrZXIuX2NhbmRpZGF0ZVRp
bWVyID0gc2V0VGltZW91dChQb3BvdmVyVHJhY2tlci5fY2FuZGlkYXRlUG9wb3ZlclRyYWNrZXJU
aW1lckZpcmVkLCBQb3BvdmVyVHJhY2tlci5DYW5kaWRhdGVTd2l0Y2hEZWxheSk7Ci19Ci0KLVBv
cG92ZXJUcmFja2VyLl9jYW5kaWRhdGVQb3BvdmVyVHJhY2tlclRpbWVyRmlyZWQgPSBmdW5jdGlv
bigpCi17Ci0gICAgdmFyIGhhZFBvcG92ZXIgPSAhIVBvcG92ZXJUcmFja2VyLl9wb3BvdmVyOwot
ICAgIGlmIChoYWRQb3BvdmVyKSB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KFBvcG92ZXJUcmFj
a2VyLl9wb3BvdmVyLnZpc2libGUpOwotICAgICAgICBQb3BvdmVyVHJhY2tlci5fcG9wb3Zlci5k
aXNtaXNzSW1tZWRpYXRlbHkoKTsKLSAgICB9Ci0gICAgY29uc29sZS5hc3NlcnQoIVBvcG92ZXJU
cmFja2VyLl9wb3BvdmVyKTsKLQotICAgIHZhciB0cmFja2VyID0gUG9wb3ZlclRyYWNrZXIuX2Nh
bmRpZGF0ZVRyYWNrZXI7Ci0KLSAgICBQb3BvdmVyVHJhY2tlci5fc2V0Q2FuZGlkYXRlUG9wb3Zl
clRyYWNrZXIobnVsbCk7Ci0gICAgdHJhY2tlci5fc2hvd1BvcG92ZXIoKTsKLQotICAgIGlmIChQ
b3BvdmVyVHJhY2tlci5fcG9wb3ZlciAmJiBoYWRQb3BvdmVyKQotICAgICAgICBQb3BvdmVyVHJh
Y2tlci5fcG9wb3Zlci5tYWtlVmlzaWJsZUltbWVkaWF0ZWx5KCk7Ci19Ci0KLVBvcG92ZXJUcmFj
a2VyLl9vbmJsdXIgPSBmdW5jdGlvbigpCi17Ci0gICAgaWYgKFBvcG92ZXJUcmFja2VyLl9wb3Bv
dmVyKQotICAgICAgICBQb3BvdmVyVHJhY2tlci5fcG9wb3Zlci5kaXNtaXNzSW1tZWRpYXRlbHko
KTsKLQotICAgIFBvcG92ZXJUcmFja2VyLl9zZXRDYW5kaWRhdGVQb3BvdmVyVHJhY2tlcihudWxs
KTsKLX0KLQotd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCBQb3BvdmVyVHJhY2tlci5f
b25ibHVyLCB0cnVlKTsKLQotUG9wb3ZlclRyYWNrZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBQb3BvdmVyVHJhY2tlciwKLSAgICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90
eXBlLAotCi0gICAgX3Nob3dQb3BvdmVyOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIg
cG9wb3ZlciA9IG5ldyBEYXNoYm9hcmQuUG9wb3Zlcih0aGlzKTsKLSAgICAgICAgaWYgKCF0aGlz
Ll9wcmVzZW50UG9wb3Zlcih0aGlzLl9lbGVtZW50LCBwb3BvdmVyLCB0aGlzLl9jb250ZXh0KSkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9hY3RpdmUgPSB0cnVlOwotICAg
ICAgICBQb3BvdmVyVHJhY2tlci5fcG9wb3ZlciA9IHBvcG92ZXI7Ci0gICAgICAgIHBvcG92ZXIu
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIiwgdGhpcy5fbW91c2VFbnRlcmVk
UG9wb3Zlck9yRWxlbWVudC5iaW5kKHRoaXMpLCB0cnVlKTsKLSAgICAgICAgcG9wb3Zlci5lbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0aGlzLl9tb3VzZUV4aXRlZFBvcG92
ZXJPckVsZW1lbnQuYmluZCh0aGlzKSwgdHJ1ZSk7Ci0gICAgfSwKLQotICAgIF9tb3VzZUVudGVy
ZWRQb3BvdmVyT3JFbGVtZW50OiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBw
b3BvdmVyID0gUG9wb3ZlclRyYWNrZXIuX3BvcG92ZXI7Ci0KLSAgICAgICAgaWYgKHBvcG92ZXIp
IHsKLSAgICAgICAgICAgIC8vIEFib3J0IGZhZGUtb3V0IHdoZW4gcmUtZW50ZXJpbmcgdGhlIHNh
bWUgZWxlbWVudCBvciBhbiBleGlzdGluZyBwb3BvdmVyLgotICAgICAgICAgICAgaWYgKCh0aGlz
Ll9hY3RpdmUgJiYgdGhpcy5fZWxlbWVudC5pc1NlbGZPckFuY2VzdG9yKGV2ZW50LnRvRWxlbWVu
dCkpCi0gICAgICAgICAgICAgICAgfHwgcG9wb3Zlci5lbGVtZW50LmlzU2VsZk9yQW5jZXN0b3Io
ZXZlbnQudG9FbGVtZW50KSkgewotICAgICAgICAgICAgICAgIHBvcG92ZXIubWFrZVZpc2libGVJ
bW1lZGlhdGVseSgpOwotICAgICAgICAgICAgICAgIFBvcG92ZXJUcmFja2VyLl9zZXRDYW5kaWRh
dGVQb3BvdmVyVHJhY2tlcihudWxsKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFdlIGVudGVyZWQgYSBkaWZmZXJlbnQgZWxlbWVudC4K
LSAgICAgICAgICAgIGlmIChwb3BvdmVyLnZpc2libGUpIHsKLSAgICAgICAgICAgICAgICBQb3Bv
dmVyVHJhY2tlci5fc2V0Q2FuZGlkYXRlUG9wb3ZlclRyYWNrZXIodGhpcyk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBUaGUgcG9wb3Zl
ciB3YXNuJ3QgdmlzaWJsZSB5ZXQsIHNvIGl0IHdhcyBlZmZlY3RpdmVseSBub24tZXhpc3RlbnQu
Ci0gICAgICAgICAgICBwb3BvdmVyLmRpc21pc3NJbW1lZGlhdGVseSgpOwotICAgICAgICB9Ci0K
LSAgICAgICAgY29uc29sZS5hc3NlcnQoIVBvcG92ZXJUcmFja2VyLl9wb3BvdmVyKTsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoIVBvcG92ZXJUcmFja2VyLl9jYW5kaWRhdGVUcmFja2VyKTsKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQoIVBvcG92ZXJUcmFja2VyLl9jYW5kaWRhdGVUaW1lcik7Ci0K
LSAgICAgICAgUG9wb3ZlclRyYWNrZXIuX3NldENhbmRpZGF0ZVBvcG92ZXJUcmFja2VyKHRoaXMp
OwotICAgIH0sCi0KLSAgICBfbW91c2VFeGl0ZWRQb3BvdmVyT3JFbGVtZW50OiBmdW5jdGlvbihl
dmVudCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzID09PSBQb3BvdmVyVHJhY2tlci5fY2FuZGlk
YXRlVHJhY2tlcikgewotICAgICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQuaXNTZWxmT3JBbmNl
c3RvcihldmVudC50b0VsZW1lbnQpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIFBvcG92ZXJUcmFja2VyLl9zZXRDYW5kaWRhdGVQb3BvdmVyVHJhY2tlcihudWxsKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBwb3BvdmVyID0gUG9w
b3ZlclRyYWNrZXIuX3BvcG92ZXI7Ci0KLSAgICAgICAgaWYgKCFwb3BvdmVyKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLl9lbGVtZW50LmlzU2VsZk9yQW5jZXN0b3Io
ZXZlbnQudG9FbGVtZW50KSB8fCBwb3BvdmVyLmVsZW1lbnQuaXNTZWxmT3JBbmNlc3RvcihldmVu
dC50b0VsZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChwb3BvdmVy
LnZpc2libGUpCi0gICAgICAgICAgICBwb3BvdmVyLmRpc21pc3MoKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcG9wb3Zlci5kaXNtaXNzSW1tZWRpYXRlbHkoKTsKLSAgICB9LAotCi0gICAg
ZGlkRGlzbWlzc1BvcG92ZXI6IGZ1bmN0aW9uKHBvcG92ZXIpCi0gICAgewotICAgICAgICBjb25z
b2xlLmFzc2VydChwb3BvdmVyID09PSBQb3BvdmVyVHJhY2tlci5fcG9wb3Zlcik7Ci0gICAgICAg
IHRoaXMuX2FjdGl2ZSA9IGZhbHNlOwotICAgICAgICBQb3BvdmVyVHJhY2tlci5fcG9wb3ZlciA9
IG51bGw7Ci0gICAgfQotfTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9Qb3Bv
dmVyVHJhY2tlci5qcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAs
MCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKRGVsZXRlZDogc3Zu
Om1pbWUtdHlwZQojIyAtMSArMCwwICMjCi10ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9RdWV1ZVZpZXcuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL1F1ZXVlVmlldy5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMv
Q0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9T
Y3JpcHRzL1F1ZXVlVmlldy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDI0OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotUXVldWVWaWV3ID0gZnVuY3Rpb24oKQotewotICAgIEJhc2VPYmplY3QuY2FsbCh0
aGlzKTsKLQotICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJxdWV1ZS12aWV3Iik7Ci0gICAgdGhp
cy5lbGVtZW50Ll9fcXVldWVWaWV3ID0gdGhpczsKLQotICAgIHRoaXMudXBkYXRlVGltZXIgPSBu
dWxsOwotICAgIHNldFRpbWVvdXQodGhpcy5fdXBkYXRlSGlkZGVuU3RhdGUuYmluZCh0aGlzKSwg
MCk7IC8vIExldHMgc3ViY2xhc3MgY29uc3RydWN0b3IgZmluaXNoIGJlZm9yZSBjYWxsaW5nIF91
cGRhdGVIaWRkZW5TdGF0ZS4KLSAgICBzZXR0aW5ncy5hZGRTZXR0aW5nTGlzdGVuZXIoImhpZGRl
blBsYXRmb3JtRmFtaWxpZXMiLCB0aGlzLl91cGRhdGVIaWRkZW5TdGF0ZS5iaW5kKHRoaXMpKTsK
LX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoUXVldWVWaWV3KTsKLQot
UXVldWVWaWV3LlVwZGF0ZUludGVydmFsID0gNDUwMDA7IC8vIDQ1IHNlY29uZHMKLVF1ZXVlVmll
dy5VcGRhdGVTb29uVGltZW91dCA9IDEwMDA7IC8vIDEgc2Vjb25kCi0KLVF1ZXVlVmlldy5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFF1ZXVlVmlldywKLSAgICBfX3Byb3RvX186IEJh
c2VPYmplY3QucHJvdG90eXBlLAotCi0gICAgdXBkYXRlU29vbjogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZVRpbWVvdXQpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMudXBkYXRlLmJpbmQo
dGhpcyksIFF1ZXVlVmlldy5VcGRhdGVTb29uVGltZW91dCk7Ci0gICAgfSwKLQotICAgIHVwZGF0
ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZVRpbWVvdXQpIHsK
LSAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVUaW1lb3V0KTsKLSAgICAgICAg
ICAgIGRlbGV0ZSB0aGlzLl91cGRhdGVUaW1lb3V0OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
SW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAotCi0gICAgX3VwZGF0ZUhpZGRlblN0
YXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoIXNldHRpbmdzLmF2YWlsYWJsZSgp
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBoaWRkZW5QbGF0Zm9ybUZhbWls
aWVzID0gc2V0dGluZ3MuZ2V0T2JqZWN0KCJoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzIik7Ci0gICAg
ICAgIHZhciB3YXNIaWRkZW4gPSAhdGhpcy51cGRhdGVUaW1lcjsKLSAgICAgICAgdmFyIGlzSGlk
ZGVuID0gaGlkZGVuUGxhdGZvcm1GYW1pbGllcyAmJiBoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzLmNv
bnRhaW5zKHNldHRpbmdzLnBhcnNlUGxhdGZvcm1GYW1pbHkodGhpcy5wbGF0Zm9ybSkpOwotCi0g
ICAgICAgIGlmICh3YXNIaWRkZW4gJiYgIWlzSGlkZGVuKSB7Ci0gICAgICAgICAgICB0aGlzLl91
cGRhdGVRdWV1ZXMoKTsKLSAgICAgICAgICAgIHRoaXMudXBkYXRlVGltZXIgPSBzZXRJbnRlcnZh
bCh0aGlzLl91cGRhdGVRdWV1ZXMuYmluZCh0aGlzKSwgUXVldWVWaWV3LlVwZGF0ZUludGVydmFs
KTsKLSAgICAgICAgfSBlbHNlIGlmICghd2FzSGlkZGVuICYmIGlzSGlkZGVuKSB7Ci0gICAgICAg
ICAgICBjbGVhckludGVydmFsKHRoaXMudXBkYXRlVGltZXIpOwotICAgICAgICAgICAgdGhpcy51
cGRhdGVUaW1lciA9IG51bGw7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgYWRkTGlua1RvUm93
OiBmdW5jdGlvbihyb3dFbGVtZW50LCBjbGFzc05hbWUsIHRleHQsIHVybCkKLSAgICB7ICAgCi0g
ICAgICAgIHZhciBsaW5rRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAg
ICAgICAgbGlua0VsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lOwotICAgICAgICBsaW5rRWxl
bWVudC50ZXh0Q29udGVudCA9IHRleHQ7Ci0gICAgICAgIGxpbmtFbGVtZW50LmhyZWYgPSB1cmw7
Ci0gICAgICAgIGxpbmtFbGVtZW50LnRhcmdldCA9ICJfYmxhbmsiOwotICAgICAgICByb3dFbGVt
ZW50LmFwcGVuZENoaWxkKGxpbmtFbGVtZW50KTsKLSAgICB9LCAgCi0KLSAgICBhZGRUZXh0VG9S
b3c6IGZ1bmN0aW9uKHJvd0VsZW1lbnQsIGNsYXNzTmFtZSwgdGV4dCkKLSAgICB7ICAgCi0gICAg
ICAgIHZhciBzcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAg
ICAgICAgc3BhbkVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lOwotICAgICAgICBzcGFuRWxl
bWVudC50ZXh0Q29udGVudCA9IHRleHQ7Ci0gICAgICAgIHJvd0VsZW1lbnQuYXBwZW5kQ2hpbGQo
c3BhbkVsZW1lbnQpOwotICAgIH0sCi0KLSAgICBfYWRkRGl2aWRlclRvUG9wb3ZlcjogZnVuY3Rp
b24oY29udGVudCkKLSAgICB7Ci0gICAgICAgIHZhciBkaXZpZGVyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGRpdmlkZXIuY2xhc3NOYW1lID0gImRpdmlkZXIiOwot
ICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGRpdmlkZXIpOwotICAgIH0sCi0KLSAgICBfYXBw
ZW5kUGVuZGluZ1JldmlzaW9uQ291bnQ6IGZ1bmN0aW9uKHF1ZXVlLCBsYXRlc3RJdGVyYXRpb25H
ZXR0ZXIpCi0gICAgewotICAgICAgICB2YXIgbGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlvbiA9IGxh
dGVzdEl0ZXJhdGlvbkdldHRlcigpOwotICAgICAgICBpZiAoIWxhdGVzdFByb2R1Y3RpdmVJdGVy
YXRpb24pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHRvdGFsUmV2aXNpb25z
QmVoaW5kID0gMDsKLQotICAgICAgICAvLyBGSVhNRTogVG8gYmUgMTAwJSBjb3JyZWN0LCB3ZSBz
aG91bGQgYWxzbyBmaWx0ZXIgb3V0IGNoYW5nZXMgdGhhdCBhcmUgaWdub3JlZCBieQotICAgICAg
ICAvLyB0aGUgcXVldWUsIHNlZSBfc2hvdWxkX2ZpbGVfdHJpZ2dlcl9idWlsZCBpbiB3a2J1aWxk
LnB5LgotICAgICAgICB2YXIgYnJhbmNoZXMgPSBxdWV1ZS5icmFuY2hlczsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBicmFuY2hlcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFy
IGJyYW5jaCA9IGJyYW5jaGVzW2ldOwotICAgICAgICAgICAgdmFyIHJlcG9zaXRvcnkgPSBicmFu
Y2gucmVwb3NpdG9yeTsKLSAgICAgICAgICAgIHZhciByZXBvc2l0b3J5TmFtZSA9IHJlcG9zaXRv
cnkubmFtZTsKLSAgICAgICAgICAgIHZhciB0cmFjID0gcmVwb3NpdG9yeS50cmFjOwotICAgICAg
ICAgICAgdmFyIGxhdGVzdFByb2R1Y3RpdmVSZXZpc2lvbk51bWJlciA9IGxhdGVzdFByb2R1Y3Rp
dmVJdGVyYXRpb24ucmV2aXNpb25bcmVwb3NpdG9yeU5hbWVdOwotICAgICAgICAgICAgaWYgKCFs
YXRlc3RQcm9kdWN0aXZlUmV2aXNpb25OdW1iZXIpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICBpZiAoIXRyYWMpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICBpZiAoIXRyYWMubGF0ZXN0UmVjb3JkZWRSZXZpc2lvbk51bWJlciB8fCB0cmFjLmlu
ZGV4T2ZSZXZpc2lvbih0cmFjLm9sZGVzdFJlY29yZGVkUmV2aXNpb25OdW1iZXIpID4gdHJhYy5p
bmRleE9mUmV2aXNpb24obGF0ZXN0UHJvZHVjdGl2ZVJldmlzaW9uTnVtYmVyKSkgewotICAgICAg
ICAgICAgICAgIHRyYWMubG9hZE1vcmVIaXN0b3JpY2FsRGF0YSgpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdG90YWxSZXZpc2lvbnNCZWhp
bmQgKz0gdHJhYy5jb21taXRzT25CcmFuY2hMYXRlclRoYW5SZXZpc2lvbihicmFuY2gubmFtZSwg
bGF0ZXN0UHJvZHVjdGl2ZVJldmlzaW9uTnVtYmVyKS5sZW5ndGg7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoIXRvdGFsUmV2aXNpb25zQmVoaW5kKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHZhciBtZXNzYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4i
KTsgLy8gV2UgY2FuJ3QganVzdCBwYXNzIHRleHQgdG8gU3RhdHVzTGluZVZpZXcgaGVyZSwgYmVj
YXVzZSB3ZSBuZWVkIGFuIGVsZW1lbnQgdGhhdCBwZXJmZWN0bHkgZml0cyB0aGUgdGV4dCBmb3Ig
cG9wb3ZlciBwb3NpdGlvbmluZy4KLSAgICAgICAgbWVzc2FnZUVsZW1lbnQudGV4dENvbnRlbnQg
PSB0b3RhbFJldmlzaW9uc0JlaGluZCArICIgIiArICh0b3RhbFJldmlzaW9uc0JlaGluZCA9PT0g
MSA/ICJyZXZpc2lvbiBiZWhpbmQiIDogInJldmlzaW9ucyBiZWhpbmQiKTsKLSAgICAgICAgdmFy
IHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZp
ZXcuU3RhdHVzLk5vQnViYmxlKTsKLSAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHN0
YXR1cy5lbGVtZW50KTsKLQotICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIobWVzc2FnZUVsZW1l
bnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yUGVuZGluZ0NvbW1pdHMuYmluZCh0aGlzLCBsYXRl
c3RJdGVyYXRpb25HZXR0ZXIpLCBxdWV1ZSk7Ci0gICAgfSwKLQotICAgIF9wb3BvdmVyTGluZXNG
b3JDb21taXRSYW5nZTogZnVuY3Rpb24odHJhYywgYnJhbmNoLCBmaXJzdFJldmlzaW9uTnVtYmVy
LCBsYXN0UmV2aXNpb25OdW1iZXIpCi0gICAgewotICAgICAgICBmdW5jdGlvbiBsaW5lRm9yQ29t
bWl0KHRyYWMsIGNvbW1pdCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgcmVzdWx0LmNsYXNzTmFt
ZSA9ICJwZW5kaW5nLWNvbW1pdCI7Ci0KLSAgICAgICAgICAgIHZhciBsaW5rRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICAgICAgICAgIGxpbmtFbGVtZW50LmNsYXNz
TmFtZSA9ICJyZXZpc2lvbiI7Ci0gICAgICAgICAgICBsaW5rRWxlbWVudC5ocmVmID0gdHJhYy5y
ZXZpc2lvblVSTChjb21taXQucmV2aXNpb25OdW1iZXIpOwotICAgICAgICAgICAgbGlua0VsZW1l
bnQudGFyZ2V0ID0gIl9ibGFuayI7Ci0gICAgICAgICAgICBsaW5rRWxlbWVudC50ZXh0Q29udGVu
dCA9IHRoaXMuX2Zvcm1hdFJldmlzaW9uRm9yRGlzcGxheShjb21taXQucmV2aXNpb25OdW1iZXIs
IGJyYW5jaC5yZXBvc2l0b3J5KTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChsaW5r
RWxlbWVudCk7Ci0KLSAgICAgICAgICAgIHZhciBhdXRob3JFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAgYXV0aG9yRWxlbWVudC5jbGFzc05hbWUg
PSAiYXV0aG9yIjsKLSAgICAgICAgICAgIGF1dGhvckVsZW1lbnQudGV4dENvbnRlbnQgPSBjb21t
aXQuYXV0aG9yOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKGF1dGhvckVsZW1lbnQp
OwotCi0gICAgICAgICAgICB2YXIgdGl0bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgic3BhbiIpOwotICAgICAgICAgICAgdGl0bGVFbGVtZW50LmNsYXNzTmFtZSA9ICJ0aXRsZSI7
Ci0gICAgICAgICAgICB0aXRsZUVsZW1lbnQuaW5uZXJIVE1MID0gY29tbWl0LnRpdGxlLmlubmVy
SFRNTDsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZCh0aXRsZUVsZW1lbnQpOwotCi0g
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc29sZS5h
c3NlcnQodHJhYy5pbmRleE9mUmV2aXNpb24odHJhYy5vbGRlc3RSZWNvcmRlZFJldmlzaW9uTnVt
YmVyKSA8PSB0cmFjLmluZGV4T2ZSZXZpc2lvbihmaXJzdFJldmlzaW9uTnVtYmVyKSk7Ci0KLSAg
ICAgICAgLy8gRklYTUU6IFRvIGJlIDEwMCUgY29ycmVjdCwgd2Ugc2hvdWxkIGFsc28gZmlsdGVy
IG91dCBjaGFuZ2VzIHRoYXQgYXJlIGlnbm9yZWQgYnkKLSAgICAgICAgLy8gdGhlIHF1ZXVlLCBz
ZWUgX3Nob3VsZF9maWxlX3RyaWdnZXJfYnVpbGQgaW4gd2tidWlsZC5weS4KLSAgICAgICAgdmFy
IGNvbW1pdHMgPSB0cmFjLmNvbW1pdHNPbkJyYW5jaEluUmV2aXNpb25SYW5nZShicmFuY2gubmFt
ZSwgZmlyc3RSZXZpc2lvbk51bWJlciwgbGFzdFJldmlzaW9uTnVtYmVyKTsKLSAgICAgICAgcmV0
dXJuIGNvbW1pdHMubWFwKGZ1bmN0aW9uKGNvbW1pdCkgewotICAgICAgICAgICAgcmV0dXJuIGxp
bmVGb3JDb21taXQuY2FsbCh0aGlzLCB0cmFjLCBjb21taXQpOwotICAgICAgICB9LCB0aGlzKS5y
ZXZlcnNlKCk7Ci0gICAgfSwKLQotICAgIF9wcmVzZW50UG9wb3ZlckZvclBlbmRpbmdDb21taXRz
OiBmdW5jdGlvbihsYXRlc3RJdGVyYXRpb25HZXR0ZXIsIGVsZW1lbnQsIHBvcG92ZXIsIHF1ZXVl
KQotICAgIHsKLSAgICAgICAgdmFyIGxhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24gPSBsYXRlc3RJ
dGVyYXRpb25HZXR0ZXIoKTsKLSAgICAgICAgaWYgKCFsYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9u
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHZhciBjb250ZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGNvbnRlbnQuY2xhc3NOYW1lID0g
ImNvbW1pdC1oaXN0b3J5LXBvcG92ZXIiOwotCi0gICAgICAgIHZhciBzaG91bGRBZGREaXZpZGVy
ID0gZmFsc2U7Ci0gICAgICAgIHZhciBicmFuY2hlcyA9IHF1ZXVlLmJyYW5jaGVzOwotICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGJyYW5jaGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAg
ICB2YXIgYnJhbmNoID0gYnJhbmNoZXNbaV07Ci0gICAgICAgICAgICB2YXIgcmVwb3NpdG9yeSA9
IGJyYW5jaC5yZXBvc2l0b3J5OwotICAgICAgICAgICAgdmFyIHJlcG9zaXRvcnlOYW1lID0gcmVw
b3NpdG9yeS5uYW1lOwotICAgICAgICAgICAgdmFyIHRyYWMgPSByZXBvc2l0b3J5LnRyYWM7Ci0g
ICAgICAgICAgICB2YXIgbGF0ZXN0UHJvZHVjdGl2ZVJldmlzaW9uTnVtYmVyID0gbGF0ZXN0UHJv
ZHVjdGl2ZUl0ZXJhdGlvbi5yZXZpc2lvbltyZXBvc2l0b3J5TmFtZV07Ci0gICAgICAgICAgICBp
ZiAoIWxhdGVzdFByb2R1Y3RpdmVSZXZpc2lvbk51bWJlciB8fCAhdHJhYy5sYXRlc3RSZWNvcmRl
ZFJldmlzaW9uTnVtYmVyKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
dmFyIG5leHRSZXZpc2lvbiA9IHRyYWMubmV4dFJldmlzaW9uKGJyYW5jaC5uYW1lLCBsYXRlc3RQ
cm9kdWN0aXZlUmV2aXNpb25OdW1iZXIpOwotICAgICAgICAgICAgaWYgKG5leHRSZXZpc2lvbiA9
PT0gVHJhYy5OT19NT1JFX1JFVklTSU9OUykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIHZhciBsaW5lcyA9IHRoaXMuX3BvcG92ZXJMaW5lc0ZvckNvbW1pdFJhbmdlKHRy
YWMsIGJyYW5jaCwgbmV4dFJldmlzaW9uLCB0cmFjLmxhdGVzdFJlY29yZGVkUmV2aXNpb25OdW1i
ZXIpOwotICAgICAgICAgICAgdmFyIGxlbmd0aCA9IGxpbmVzLmxlbmd0aDsKLSAgICAgICAgICAg
IGlmIChsZW5ndGggJiYgc2hvdWxkQWRkRGl2aWRlcikKLSAgICAgICAgICAgICAgICB0aGlzLl9h
ZGREaXZpZGVyVG9Qb3BvdmVyKGNvbnRlbnQpOwotICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7
IGogPCBsZW5ndGg7ICsraikKLSAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGxp
bmVzW2pdKTsKLSAgICAgICAgICAgIHNob3VsZEFkZERpdmlkZXIgPSBzaG91bGRBZGREaXZpZGVy
IHx8IGxlbmd0aCA+IDA7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcmVjdCA9IERhc2hib2Fy
ZC5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
KTsKLSAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gY29udGVudDsKLSAgICAgICAgcG9wb3Zlci5w
cmVzZW50KHJlY3QsIFtEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1ksIERhc2hib2FyZC5SZWN0RWRn
ZS5NQVhfWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlO
X1hdKTsKLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgX2Zvcm1hdFJldmlz
aW9uRm9yRGlzcGxheTogZnVuY3Rpb24ocmV2aXNpb24sIHJlcG9zaXRvcnkpCi0gICAgewotICAg
ICAgICBjb25zb2xlLmFzc2VydChyZXBvc2l0b3J5LmlzU1ZOIHx8IHJlcG9zaXRvcnkuaXNHaXQs
ICJTaG91bGQgbm90IGdldCBoZXJlOyAiICsgcmVwb3NpdG9yeS5uYW1lICsgIiBkaWQgbm90IHNw
ZWNpZnkgYSBrbm93biBWQ1MgdHlwZS4iKTsKLSAgICAgICAgaWYgKHJlcG9zaXRvcnkuaXNTVk4p
Ci0gICAgICAgICAgICByZXR1cm4gInIiICsgcmV2aXNpb247Ci0gICAgICAgIC8vIFRydW5jYXRp
bmcgZm9yIGRpc3BsYXkuIEdpdCB0cmFkaXRpb25hbGx5IHVzZXMgc2V2ZW4gY2hhcmFjdGVycyBm
b3IgYSBzaG9ydCBoYXNoLgotICAgICAgICByZXR1cm4gcmV2aXNpb24uc3Vic3RyKDAsIDcpOwot
ICAgIH0sCi0KLSAgICBfcmVhZGFibGVUaW1lU3RyaW5nOiBmdW5jdGlvbihzZWNvbmRzKQotICAg
IHsKLSAgICAgICAgdmFyIHNlY29uZHNJbkhvdXIgPSA2MCAqIDYwOwotICAgICAgICB2YXIgaG91
cnMgPSBNYXRoLmZsb29yKHNlY29uZHMgLyBzZWNvbmRzSW5Ib3VyKTsKLSAgICAgICAgdmFyIG1p
bnV0ZXMgPSBNYXRoLmZsb29yKChzZWNvbmRzIC0gaG91cnMgKiBzZWNvbmRzSW5Ib3VyKSAvIDYw
KTsKLSAgICAgICAgdmFyIGhvdXJzUGFydCA9ICIiOwotICAgICAgICBpZiAoaG91cnMgPT09IDEp
Ci0gICAgICAgICAgICBob3Vyc1BhcnQgPSAiMVx4YTBob3VyIGFuZCAiOwotICAgICAgICBlbHNl
IGlmIChob3VycyA+IDApCi0gICAgICAgICAgICBob3Vyc1BhcnQgPSBob3VycyArICJceGEwaG91
cnMgYW5kICI7Ci0gICAgICAgIGlmICghbWludXRlcykKLSAgICAgICAgICAgIHJldHVybiAibGVz
cyB0aGFuIGEgbWludXRlIjsKLSAgICAgICAgaWYgKG1pbnV0ZXMgPT09IDEpCi0gICAgICAgICAg
ICByZXR1cm4gaG91cnNQYXJ0ICsgIjFceGEwbWludXRlIjsKLSAgICAgICAgcmV0dXJuIGhvdXJz
UGFydCArIG1pbnV0ZXMgKyAiXHhhMG1pbnV0ZXMiOwotICAgIH0KLX07CgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvUXVldWVWaWV3LmpzCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3Zu
OmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvcGxhaW4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1NldHRp
bmdzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9TZXR0aW5ncy5qcwkocmV2aXNpb24g
MjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1NldHRpbmdzLmpzCShub25leGlzdGVudCkKQEAgLTEs
MTMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1TZXR0aW5ncyA9IGZ1bmN0aW9uKCkKLXsKLSAgICBC
YXNlT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLmNoYW5nZUNhbGxiYWNrcyA9IHt9Owot
fTsKLQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhTZXR0aW5ncyk7Ci0KLVNl
dHRpbmdzLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogU2V0dGluZ3MsCi0gICAgX19w
cm90b19fOiBCYXNlT2JqZWN0LnByb3RvdHlwZSwKLQotICAgIHNldE9iamVjdDogZnVuY3Rpb24o
a2V5LCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNP
Ti5zdHJpbmdpZnkodmFsdWUpKTsKLSAgICB9LAotCi0gICAgZ2V0T2JqZWN0OiBmdW5jdGlvbihr
ZXkpCi0gICAgewotICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRl
bShrZXkpKTsKLSAgICB9LAotCi0gICAgYXZhaWxhYmxlOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB0cnkgewotICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oInRlc3RMb2NhbFN0
b3JhZ2UiLCAidGVzdCIpOwotICAgICAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ0
ZXN0TG9jYWxTdG9yYWdlIikgIT0gInRlc3QiKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJ0ZXN0TG9jYWxTdG9yYWdl
Iik7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgY29uc29sZS5sb2coIkNvdWxk
bid0IHVzZSBsb2NhbFN0b3JhZ2UsIHNldHRpbmdzIHdvbid0IHdvcms6ICIgKyBlKTsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0sCi0KLSAgICBhZGRTZXR0aW5nTGlzdGVuZXI6IGZ1bmN0aW9uKGtleSwgY2FsbGJhY2sp
Ci0gICAgewotICAgICAgICBpZiAoIXRoaXMuY2hhbmdlQ2FsbGJhY2tzW2tleV0pCi0gICAgICAg
ICAgICB0aGlzLmNoYW5nZUNhbGxiYWNrc1trZXldID0gW107Ci0gICAgICAgIHRoaXMuY2hhbmdl
Q2FsbGJhY2tzW2tleV0ucHVzaChjYWxsYmFjayk7Ci0gICAgfSwKLQotICAgIGZpcmVTZXR0aW5n
TGlzdGVuZXI6IGZ1bmN0aW9uKGtleSkKLSAgICB7Ci0gICAgICAgIHZhciBjYWxsYmFja3MgPSB0
aGlzLmNoYW5nZUNhbGxiYWNrc1trZXldOwotICAgICAgICBpZiAoIWNhbGxiYWNrcykKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsYmFja3MubGVu
Z3RoOyArK2kpCi0gICAgICAgICAgICBjYWxsYmFja3NbaV0oKTsKLSAgICB9LAotCi0gICAgdG9n
Z2xlU2V0dGluZ3NEaXNwbGF5OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoIWRvY3Vt
ZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCJzZXR0aW5ncy12aXNpYmxlIikpCi0gICAgICAg
ICAgICB0aGlzLmZpcmVTZXR0aW5nTGlzdGVuZXIoImVudGVyZWRTZXR0aW5ncyIpOwotICAgICAg
ICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoInNldHRpbmdzLXZpc2libGUiKTsKLSAg
ICB9LAotCi0gICAgcGFyc2VQbGF0Zm9ybUZhbWlseTogZnVuY3Rpb24ocGxhdGZvcm1OYW1lKQot
ICAgIHsKLSAgICAgICAgaWYgKCFwbGF0Zm9ybU5hbWUpCi0gICAgICAgICAgICByZXR1cm4gJyc7
Ci0gICAgICAgIHZhciByZXN1bHQgPSBwbGF0Zm9ybU5hbWUuc3Vic3RyKDAsIHBsYXRmb3JtTmFt
ZS5pbmRleE9mKCItIikpOwotICAgICAgICBpZiAocmVzdWx0ID09PSAibWFjb3MiKQotICAgICAg
ICAgICAgcmVzdWx0ID0gIm1hYyI7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKLQot
ICAgIHRvZ2dsZUhpZGRlblBsYXRmb3JtRmFtaWx5OiBmdW5jdGlvbihwbGF0Zm9ybUZhbWlseSkK
LSAgICB7Ci0gICAgICAgIHZhciBoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzID0gdGhpcy5nZXRPYmpl
Y3QoImhpZGRlblBsYXRmb3JtRmFtaWxpZXMiKSB8fCBbXTsKLSAgICAgICAgdmFyIGhpZGRlblBs
YXRmb3JtSW5kZXggPSBoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzLmluZGV4T2YocGxhdGZvcm1GYW1p
bHkpOwotICAgICAgICBpZiAoaGlkZGVuUGxhdGZvcm1JbmRleCA+IC0xKQotICAgICAgICAgICAg
aGlkZGVuUGxhdGZvcm1GYW1pbGllcy5zcGxpY2UoaGlkZGVuUGxhdGZvcm1JbmRleCwgMSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGhpZGRlblBsYXRmb3JtRmFtaWxpZXMucHVzaChwbGF0
Zm9ybUZhbWlseSk7Ci0KLSAgICAgICAgdGhpcy5zZXRPYmplY3QoImhpZGRlblBsYXRmb3JtRmFt
aWxpZXMiLCBoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzKTsKLSAgICAgICAgdGhpcy5maXJlU2V0dGlu
Z0xpc3RlbmVyKCJoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzIik7Ci0gICAgfSwKLQotICAgIGNsZWFy
SGlkZGVuUGxhdGZvcm1GYW1pbGllczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5z
ZXRPYmplY3QoImhpZGRlblBsYXRmb3JtRmFtaWxpZXMiLCBbXSk7Ci0gICAgICAgIHRoaXMuZmly
ZVNldHRpbmdMaXN0ZW5lcigiaGlkZGVuUGxhdGZvcm1GYW1pbGllcyIpOwotICAgIH0sCi0KLSAg
ICB1cGRhdGVUb2dnbGVCdXR0b25zOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgaGlk
ZGVuUGxhdGZvcm1GYW1pbGllcyA9IHRoaXMuZ2V0T2JqZWN0KCJoaWRkZW5QbGF0Zm9ybUZhbWls
aWVzIikgfHwgW107Ci0gICAgICAgIHZhciBoaWRkZW5GYW1pbHlCdXR0b25zID0geyJhbGwiOiBo
aWRkZW5QbGF0Zm9ybUZhbWlsaWVzLmxlbmd0aCA+IDB9OwotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGhpZGRlblBsYXRmb3JtRmFtaWxpZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBo
aWRkZW5GYW1pbHlCdXR0b25zW2hpZGRlblBsYXRmb3JtRmFtaWxpZXNbaV1dID0gdHJ1ZTsKLQot
ICAgICAgICB2YXIgcGxhdGZvcm1GYW1pbHlCdXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZSgicGxhdGZvcm1GYW1pbHlUb2dnbGVCdXR0b24iKTsKLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBwbGF0Zm9ybUZhbWlseUJ1dHRvbnMubGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgICAgIHZhciBoaWRkZW5QbGF0Zm9ybUZhbWlseSA9IHRoaXMucGFyc2VQbGF0Zm9ybUZhbWls
eShwbGF0Zm9ybUZhbWlseUJ1dHRvbnNbaV0uaWQpOwotICAgICAgICAgICAgaWYgKCFoaWRkZW5G
YW1pbHlCdXR0b25zW2hpZGRlblBsYXRmb3JtRmFtaWx5XSkKLSAgICAgICAgICAgICAgICBwbGF0
Zm9ybUZhbWlseUJ1dHRvbnNbaV0uY2xhc3NMaXN0LmFkZCgiZmFtaWx5U2hvd24iKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybUZhbWlseUJ1dHRvbnNbaV0uY2xh
c3NMaXN0LnJlbW92ZSgiZmFtaWx5U2hvd24iKTsKLSAgICAgICAgfQotICAgIH0sCi19OwpJbmRl
eDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL1N0YXR1c0xpbmVWaWV3LmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy9TdGF0dXNMaW5lVmlldy5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRz
L1N0YXR1c0xpbmVWaWV3LmpzCShub25leGlzdGVudCkKQEAgLTEsMTY1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi1TdGF0dXNMaW5lVmlldyA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHN0YXR1cywgbGFiZWws
IHJlcGVhdENvdW50LCB1cmwpCi17Ci0gICAgQmFzZU9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAg
Y29uc29sZS5hc3NlcnQobWVzc2FnZSk7Ci0KLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3Rh
dHVzLWxpbmUiKTsKLSAgICB0aGlzLmVsZW1lbnQuX19zdGF0dXNMaW5lVmlldyA9IHRoaXM7Ci0K
LSAgICBpZiAodXJsKSB7Ci0gICAgICAgIHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgICAgIHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1l
bnQuaHJlZiA9IHVybDsKLSAgICAgICAgdGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudC50YXJnZXQg
PSAiX2JsYW5rIjsKLSAgICB9IGVsc2UKLSAgICAgICAgdGhpcy5fc3RhdHVzQnViYmxlRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX3N0YXR1c0J1YmJs
ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYnViYmxlIik7Ci0gICAgaWYgKHN0YXR1cyAhPSBTdGF0
dXNMaW5lVmlldy5TdGF0dXMuTm9CdWJibGUpCi0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9zdGF0dXNCdWJibGVFbGVtZW50KTsKLQotICAgIHRoaXMuX2xhYmVsRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2xhYmVsRWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJsYWJlbCIpOwotCi0gICAgdGhpcy5fbWVzc2FnZUVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9tZXNzYWdlRWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJtZXNzYWdlIik7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX21lc3NhZ2VFbGVtZW50KTsKLQotICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzIHx8IFN0YXR1
c0xpbmVWaWV3LlN0YXR1cy5OZXV0cmFsOwotICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwg
IiI7Ci0gICAgdGhpcy5sYWJlbCA9IGxhYmVsIHx8ICIiOwotICAgIHRoaXMucmVwZWF0Q291bnQg
PSByZXBlYXRDb3VudCB8fCAwOwotICAgIHRoaXMudXJsID0gdXJsIHx8IG51bGw7Ci19OwotCi1T
dGF0dXNMaW5lVmlldy5TdGF0dXMgPSB7Ci0gICAgTm9CdWJibGU6ICJuby1idWJibGUiLAotICAg
IE5ldXRyYWw6ICJuZXV0cmFsIiwKLSAgICBHb29kOiAiZ29vZCIsCi0gICAgRGFuZ2VyOiAiZGFu
Z2VyIiwKLSAgICBCYWQ6ICJiYWQiLAotICAgIFVuYXV0aG9yaXplZDogInVuYXV0aG9yaXplZCIK
LX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoU3RhdHVzTGluZVZpZXcp
OwotCi1TdGF0dXNMaW5lVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFN0YXR1
c0xpbmVWaWV3LAotICAgIF9fcHJvdG9fXzogQmFzZU9iamVjdC5wcm90b3R5cGUsCi0KLSAgICBn
ZXQgc3RhdHVzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXM7Ci0gICAgfSwK
LQotICAgIHNldCBzdGF0dXMoeCkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHgpOwot
ICAgICAgICBpZiAoIXgpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fc3RhdHVzKTsKLQotICAgICAgICB0aGlzLl9zdGF0
dXMgPSB4OwotCi0gICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuX3N0YXR1
cyk7Ci0gICAgfSwKLQotICAgIGdldCByZXBlYXRDb3VudCgpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fcmVwZWF0Q291bnQ7Ci0gICAgfSwKLQotICAgIHNldCByZXBlYXRDb3VudCh4KQot
ICAgIHsKLSAgICAgICAgdGhpcy5fcmVwZWF0Q291bnQgPSB4OwotCi0gICAgICAgIGlmICh0aGlz
Ll9yZXBlYXRDb3VudCkgewotICAgICAgICAgICAgdGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudC50
ZXh0Q29udGVudCA9IHRoaXMuX3JlcGVhdENvdW50OwotICAgICAgICAgICAgdGhpcy5fc3RhdHVz
QnViYmxlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJwaWN0b2dyYW0iKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgicGljdG9ncmFtIik7Ci0KLSAgICAgICAgICAgIHN3aXRjaCAodGhpcy5fc3RhdHVzKSB7Ci0g
ICAgICAgICAgICBjYXNlIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5OZXV0cmFsOgotICAgICAgICAg
ICAgICAgIHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1lbnQudGV4dENvbnRlbnQgPSAiPyI7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2UgU3RhdHVzTGluZVZpZXcuU3Rh
dHVzLkdvb2Q6Ci0gICAgICAgICAgICAgICAgdGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudC50ZXh0
Q29udGVudCA9ICIiOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBjYXNl
IFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5EYW5nZXI6Ci0gICAgICAgICAgICAgICAgdGhpcy5fc3Rh
dHVzQnViYmxlRWxlbWVudC50ZXh0Q29udGVudCA9ICIhIjsKLSAgICAgICAgICAgICAgICBicmVh
azsKLQotICAgICAgICAgICAgY2FzZSBTdGF0dXNMaW5lVmlldy5TdGF0dXMuQmFkOgotICAgICAg
ICAgICAgICAgIHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1lbnQudGV4dENvbnRlbnQgPSAiXHUyNzE1
IjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0sCi0KLSAgICBnZXQgbGFiZWwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVs
RWxlbWVudC50ZXh0Q29udGVudDsKLSAgICB9LAotCi0gICAgc2V0IGxhYmVsKHgpCi0gICAgewot
ICAgICAgICBpZiAoeCkgewotICAgICAgICAgICAgdGhpcy5fbGFiZWxFbGVtZW50LnRleHRDb250
ZW50ID0geDsKLSAgICAgICAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5fbGFi
ZWxFbGVtZW50LCB0aGlzLl9tZXNzYWdlRWxlbWVudCk7Ci0gICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgibm8tbGFiZWwiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHRoaXMuX2xhYmVsRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICAgICAg
dGhpcy5fbGFiZWxFbGVtZW50LnJlbW92ZSgpOwotICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoIm5vLWxhYmVsIik7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgZ2V0IG1l
c3NhZ2UoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX21lc3NhZ2VFbGVtZW50LnRleHRD
b250ZW50OwotICAgIH0sCi0KLSAgICBzZXQgbWVzc2FnZSh4KQotICAgIHsKLSAgICAgICAgaWYg
KHggaW5zdGFuY2VvZiBOb2RlKSB7Ci0gICAgICAgICAgICB0aGlzLl9tZXNzYWdlRWxlbWVudC5y
ZW1vdmVDaGlsZHJlbigpOwotICAgICAgICAgICAgdGhpcy5fbWVzc2FnZUVsZW1lbnQuYXBwZW5k
Q2hpbGQoeCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLl9tZXNzYWdlRWxl
bWVudC50ZXh0Q29udGVudCA9IHg7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgZ2V0IHN0YXR1
c0J1YmJsZUVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1c0J1YmJs
ZUVsZW1lbnQ7Ci0gICAgfQotfTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9UcmFjLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9UcmFjLmpzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9D
SVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvVHJhYy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDMzMyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotVHJhYyA9IGZ1bmN0aW9uKGJhc2VVUkwsIG9wdGlvbnMpCi17Ci0gICAgQmFzZU9i
amVjdC5jYWxsKHRoaXMpOwotCi0gICAgY29uc29sZS5hc3NlcnQoYmFzZVVSTCk7Ci0KLSAgICB0
aGlzLmJhc2VVUkwgPSBiYXNlVVJMOwotICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gIm9iamVj
dCIpIHsKLSAgICAgICAgdGhpcy5fbmVlZHNBdXRoZW50aWNhdGlvbiA9IG9wdGlvbnNbVHJhYy5O
ZWVkc0F1dGhlbnRpY2F0aW9uXSA9PT0gdHJ1ZTsKLSAgICAgICAgLy8gV2UgZXhwZWN0IHRoZSBw
cm9qZWN0SWRlbnRpZmllciBvcHRpb24gaWZmIHRoZSB0YXJnZXQgVHJhYyBpbnN0YW5jZSBpcyBo
b3N0aW5nIG11bHRpcGxlIHJlcG9zaXRvcmllcyAmJiBUcmFjIHZlcnNpb24gPiAxLjAKLSAgICAg
ICAgdGhpcy5fcHJvamVjdE5hbWUgPSBvcHRpb25zW1RyYWMuUHJvamVjdElkZW50aWZpZXJdOwot
ICAgIH0KLQotICAgIHRoaXMucmVjb3JkZWRDb21taXRzID0gW107IC8vIFdpbGwgYmUgc29ydGVk
IGluIGFzY2VuZGluZyBvcmRlci4KLSAgICB0aGlzLnJlY29yZGVkQ29tbWl0SW5kaWNlc0J5UmV2
aXNpb25OdW1iZXIgPSB7fTsKLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlv
bnMoVHJhYyk7Ci0KLVRyYWMuTk9fTU9SRV9SRVZJU0lPTlMgPSBudWxsOwotCi1UcmFjLk5lZWRz
QXV0aGVudGljYXRpb24gPSAibmVlZHNBdXRoZW50aWNhdGlvbiI7Ci1UcmFjLlByb2plY3RJZGVu
dGlmaWVyID0gInByb2plY3RJZGVudGlmaWVyIjsKLVRyYWMuVXBkYXRlSW50ZXJ2YWwgPSA0NTAw
MDsgLy8gNDUgc2Vjb25kcwotCi1UcmFjLkV2ZW50ID0gewotICAgIENvbW1pdHNVcGRhdGVkOiAi
Y29tbWl0cy11cGRhdGVkIiwKLSAgICBMb2FkZWQ6ICJsb2FkZWQiCi19OwotCi1UcmFjLnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogVHJhYywKLSAgICBfX3Byb3RvX186IEJhc2VPYmpl
Y3QucHJvdG90eXBlLAotCi0gICAgZ2V0IG9sZGVzdFJlY29yZGVkUmV2aXNpb25OdW1iZXIoKQot
ICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnJlY29yZGVkQ29tbWl0cy5sZW5ndGgpCi0gICAgICAg
ICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgICAgICByZXR1cm4gdGhpcy5yZWNvcmRlZENvbW1p
dHNbMF0ucmV2aXNpb25OdW1iZXI7Ci0gICAgfSwKLQotICAgIGdldCBsYXRlc3RSZWNvcmRlZFJl
dmlzaW9uTnVtYmVyKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5yZWNvcmRlZENvbW1pdHMu
bGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICAgICAgcmV0dXJuIHRo
aXMucmVjb3JkZWRDb21taXRzW3RoaXMucmVjb3JkZWRDb21taXRzLmxlbmd0aCAtIDFdLnJldmlz
aW9uTnVtYmVyOwotICAgIH0sCi0KLSAgICBfY29tbWl0c09uQnJhbmNoOiBmdW5jdGlvbihicmFu
Y2hOYW1lLCBiZWdpblBvc2l0aW9uLCBlbmRQb3NpdGlvbikKLSAgICB7Ci0gICAgICAgIGJlZ2lu
UG9zaXRpb24gPSBiZWdpblBvc2l0aW9uIHx8IDA7Ci0gICAgICAgIGlmIChlbmRQb3NpdGlvbiA9
PT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgZW5kUG9zaXRpb24gPSB0aGlzLnJlY29yZGVkQ29t
bWl0cy5sZW5ndGggLSAxOwotICAgICAgICB2YXIgY29tbWl0cyA9IFtdOwotICAgICAgICBmb3Ig
KHZhciBpID0gYmVnaW5Qb3NpdGlvbjsgaSA8PSBlbmRQb3NpdGlvbjsgKytpKSB7Ci0gICAgICAg
ICAgICB2YXIgY29tbWl0ID0gdGhpcy5yZWNvcmRlZENvbW1pdHNbaV07Ci0gICAgICAgICAgICBp
ZiAoIWNvbW1pdC5jb250YWluc0JyYW5jaExvY2F0aW9uIHx8IGNvbW1pdC5icmFuY2hlcy5pbmNs
dWRlcyhicmFuY2hOYW1lKSkKLSAgICAgICAgICAgICAgICBjb21taXRzLnB1c2goY29tbWl0KTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gY29tbWl0czsKLSAgICB9LAotCi0gICAgY29tbWl0
c09uQnJhbmNoTGF0ZXJUaGFuUmV2aXNpb246IGZ1bmN0aW9uKGJyYW5jaE5hbWUsIHJldmlzaW9u
KQotICAgIHsKLSAgICAgICAgdmFyIGluZGV4VG9CZUxhdGVyVGhhbiA9IHRoaXMuaW5kZXhPZlJl
dmlzaW9uKHJldmlzaW9uKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXhUb0JlTGF0ZXJU
aGFuICE9PSAtMSwgcmV2aXNpb24gKyAiIGlzIG5vdCBpbiB0aGUgbGlzdCBvZiByZWNvcmRlZCBj
b21taXRzIik7Ci0gICAgICAgIGlmIChpbmRleFRvQmVMYXRlclRoYW4gPT09IC0xKQotICAgICAg
ICAgICAgcmV0dXJuIFtdOwotICAgICAgICByZXR1cm4gdGhpcy5fY29tbWl0c09uQnJhbmNoKGJy
YW5jaE5hbWUsIGluZGV4VG9CZUxhdGVyVGhhbiArIDEpOwotICAgIH0sCi0KLSAgICBjb21taXRz
T25CcmFuY2hJblJldmlzaW9uUmFuZ2U6IGZ1bmN0aW9uKGJyYW5jaE5hbWUsIGZpcnN0UmV2aXNp
b24sIGxhc3RSZXZpc2lvbikKLSAgICB7Ci0gICAgICAgIHZhciBpbmRleE9mRmlyc3RSZXZpc2lv
biA9IHRoaXMuaW5kZXhPZlJldmlzaW9uKGZpcnN0UmV2aXNpb24pOwotICAgICAgICBjb25zb2xl
LmFzc2VydChpbmRleE9mRmlyc3RSZXZpc2lvbiAhPT0gLTEsIGZpcnN0UmV2aXNpb24gKyAiIGlz
IG5vdCBpbiB0aGUgbGlzdCBvZiByZWNvcmRlZCBjb21taXRzIik7Ci0gICAgICAgIGlmIChpbmRl
eE9mRmlyc3RSZXZpc2lvbiA9PT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gW107Ci0gICAgICAg
IHZhciBpbmRleE9mTGFzdFJldmlzaW9uID0gdGhpcy5pbmRleE9mUmV2aXNpb24obGFzdFJldmlz
aW9uKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXhPZkxhc3RSZXZpc2lvbiAhPT0gLTEs
IGxhc3RSZXZpc2lvbiArICIgaXMgbm90IGluIHRoZSBsaXN0IG9mIHJlY29yZGVkIGNvbW1pdHMi
KTsKLSAgICAgICAgaWYgKGluZGV4T2ZMYXN0UmV2aXNpb24gPT09IC0xKQotICAgICAgICAgICAg
cmV0dXJuIFtdOwotICAgICAgICByZXR1cm4gdGhpcy5fY29tbWl0c09uQnJhbmNoKGJyYW5jaE5h
bWUsIGluZGV4T2ZGaXJzdFJldmlzaW9uLCBpbmRleE9mTGFzdFJldmlzaW9uKTsKLSAgICB9LAot
Ci0gICAgcmV2aXNpb25VUkw6IGZ1bmN0aW9uKHJldmlzaW9uKQotICAgIHsKLSAgICAgICAgdmFy
IHVybCA9IHRoaXMuYmFzZVVSTCArICJjaGFuZ2VzZXQvIiArIGVuY29kZVVSSUNvbXBvbmVudChy
ZXZpc2lvbik7Ci0gICAgICAgIGlmICh0aGlzLl9wcm9qZWN0TmFtZSkKLSAgICAgICAgICAgIHVy
bCArPSAnLycgKyBlbmNvZGVVUklDb21wb25lbnQodGhpcy5fcHJvamVjdE5hbWUpOwotICAgICAg
ICByZXR1cm4gdXJsOwotICAgIH0sCi0KLSAgICBfeG1sVGltZWxpbmVVUkw6IGZ1bmN0aW9uKGZy
b21EYXRlLCB0b0RhdGUpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChmcm9tRGF0ZSA8
PSB0b0RhdGUpOwotCi0gICAgICAgIHZhciBmcm9tRGF5ID0gbmV3IERhdGUoZnJvbURhdGUuZ2V0
RnVsbFllYXIoKSwgZnJvbURhdGUuZ2V0TW9udGgoKSwgZnJvbURhdGUuZ2V0RGF0ZSgpKTsKLSAg
ICAgICAgdmFyIHRvRGF5ID0gbmV3IERhdGUodG9EYXRlLmdldEZ1bGxZZWFyKCksIHRvRGF0ZS5n
ZXRNb250aCgpLCB0b0RhdGUuZ2V0RGF0ZSgpKTsKLSAgICAgICAgdmFyIGNoYW5nZXNldFBhcmFt
ZXRlciA9IHRoaXMuX3Byb2plY3ROYW1lID8gInJlcG8tIiArIHRoaXMuX3Byb2plY3ROYW1lIDog
ImNoYW5nZXNldCI7Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJ0aW1lbGluZT8i
ICsKLSAgICAgICAgICAgIGNoYW5nZXNldFBhcmFtZXRlciArICI9b24iICsKLSAgICAgICAgICAg
ICImZm9ybWF0PXJzcyIgKwotICAgICAgICAgICAgIiZtYXg9MCIgKwotICAgICAgICAgICAgIiZm
cm9tPSIgKyBlbmNvZGVVUklDb21wb25lbnQodG9EYXkudG9JU09TdHJpbmcoKS5zbGljZSgwLCAx
MCkpICsKLSAgICAgICAgICAgICImZGF5c2JhY2s9IiArIGVuY29kZVVSSUNvbXBvbmVudCgodG9E
YXkgLSBmcm9tRGF5KSAvIDEwMDAgLyA2MCAvIDYwIC8gMjQpOwotICAgIH0sCi0KLSAgICBfcGFy
c2VSZXZpc2lvbkZyb21VUkw6IGZ1bmN0aW9uKHVybCkKLSAgICB7Ci0gICAgICAgIC8vIFRoZXJl
IGFyZSBtdWx0aXBsZSBsaW5rIGZvcm1hdHMgZm9yIFRyYWMgdGhhdCB3ZSBzdXBwb3J0OgotICAg
ICAgICAvLyBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTkwNDk3Ci0gICAgICAg
IC8vIGh0dHA6Ly90cmFjLmZvb2Jhci5jb20vcmVwb3NpdG9yeS9jaGFuZ2VzZXQvNzUzODgvcHJv
amVjdAotICAgICAgICAvLyBodHRwczovL2dpdC5mb29iYXIuY29tL3RyYWMvV2hhdGV2ZXIuZ2l0
L2NoYW5nZXNldC8wZTQ5OGRiNWQ4ZTViNWEzNDI2MzEKLSAgICAgICAgcmV0dXJuIC9jaGFuZ2Vz
ZXRcLyhbYS1mMC05XSspLiokLy5leGVjKHVybClbMV07Ci0gICAgfSwKLQotICAgIF9jb252ZXJ0
Q29tbWl0SW5mb0VsZW1lbnRUb09iamVjdDogZnVuY3Rpb24oZG9jLCBjb21taXRFbGVtZW50KQot
ICAgIHsKLSAgICAgICAgdmFyIGxpbmsgPSBkb2MuZXZhbHVhdGUoIi4vbGluayIsIGNvbW1pdEVs
ZW1lbnQsIG51bGwsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFKS5zdHJpbmdWYWx1ZTsKLSAgICAg
ICAgdmFyIHJldmlzaW9uTnVtYmVyID0gdGhpcy5fcGFyc2VSZXZpc2lvbkZyb21VUkwobGluayk7
Ci0KLSAgICAgICAgZnVuY3Rpb24gdHJhY05TUmVzb2x2ZXIocHJlZml4KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAocHJlZml4ID09ICJkYyIpCi0gICAgICAgICAgICAgICAgcmV0dXJuICJo
dHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI7Ci0gICAgICAgICAgICByZXR1cm4gbnVs
bDsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBhdXRob3IgPSBkb2MuZXZhbHVhdGUoIi4vYXV0
aG9yfGRjOmNyZWF0b3IiLCBjb21taXRFbGVtZW50LCB0cmFjTlNSZXNvbHZlciwgWFBhdGhSZXN1
bHQuU1RSSU5HX1RZUEUpLnN0cmluZ1ZhbHVlOwotICAgICAgICB2YXIgZGF0ZSA9IGRvYy5ldmFs
dWF0ZSgiLi9wdWJEYXRlIiwgY29tbWl0RWxlbWVudCwgbnVsbCwgWFBhdGhSZXN1bHQuU1RSSU5H
X1RZUEUpLnN0cmluZ1ZhbHVlOwotICAgICAgICBkYXRlID0gbmV3IERhdGUoRGF0ZS5wYXJzZShk
YXRlKSk7Ci0gICAgICAgIHZhciBkZXNjcmlwdGlvbiA9IGRvYy5ldmFsdWF0ZSgiLi9kZXNjcmlw
dGlvbiIsIGNvbW1pdEVsZW1lbnQsIG51bGwsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFKS5zdHJp
bmdWYWx1ZTsKLQotICAgICAgICB2YXIgcGFyc2VkRGVzY3JpcHRpb24gPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgcGFyc2VkRGVzY3JpcHRpb24uaW5uZXJIVE1MID0g
ZGVzY3JpcHRpb247Ci0KLSAgICAgICAgdmFyIGxvY2F0aW9uID0gIiI7Ci0gICAgICAgIGlmIChw
YXJzZWREZXNjcmlwdGlvbi5maXJzdENoaWxkICYmIHBhcnNlZERlc2NyaXB0aW9uLmZpcnN0Q2hp
bGQuY2xhc3NOYW1lID09PSAiY2hhbmdlcyIpIHsKLSAgICAgICAgICAgIC8vIFdlIGNhbiBleHRy
YWN0IGJyYW5jaCBpbmZvcm1hdGlvbiB3aGVuIHRyYWMuaW5pIGNvbnRhaW5zICJjaGFuZ2VzZXRf
c2hvd19maWxlcz1sb2NhdGlvbiIuCi0gICAgICAgICAgICBsb2NhdGlvbiA9IGRvYy5ldmFsdWF0
ZSgiLy9zdHJvbmciLCBwYXJzZWREZXNjcmlwdGlvbi5maXJzdENoaWxkLCBudWxsLCBYUGF0aFJl
c3VsdC5TVFJJTkdfVFlQRSkuc3RyaW5nVmFsdWU7Ci0gICAgICAgICAgICBwYXJzZWREZXNjcmlw
dGlvbi5yZW1vdmVDaGlsZChwYXJzZWREZXNjcmlwdGlvbi5maXJzdENoaWxkKTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFRoZSBmZWVkIGNvbnRhaW5zIGEgPHRpdGxlPiwgYnV0IGl0J3Mgbm90
IHBhcnNlZCBhcyB3ZWxsIGFzIHdoYXQgd2UgYXJlIGdldHRpbmcgZnJvbSBkZXNjcmlwdGlvbi4K
LSAgICAgICAgdmFyIHRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
ICAgIHZhciBub2RlID0gcGFyc2VkRGVzY3JpcHRpb24uZmlyc3RDaGlsZCA/IHBhcnNlZERlc2Ny
aXB0aW9uLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCA6IG51bGw7Ci0gICAgICAgIHdoaWxlIChub2Rl
ICYmIG5vZGUudGFnTmFtZSAhPSAiQlIiKSB7Ci0gICAgICAgICAgICB0aXRsZS5hcHBlbmRDaGls
ZChub2RlLmNsb25lTm9kZSh0cnVlKSk7Ci0gICAgICAgICAgICBub2RlID0gbm9kZS5uZXh0U2li
bGluZzsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZvciBzb21lIHJlYXNvbiwgdHJhYyB0aXRs
ZXMgc3RhcnQgd2l0aCBhIG5ld2xpbmUuIERlbGV0ZSBpdC4KLSAgICAgICAgaWYgKHRpdGxlLmZp
cnN0Q2hpbGQgJiYgdGl0bGUuZmlyc3RDaGlsZC5ub2RlVHlwZSA9PSBOb2RlLlRFWFRfTk9ERSAm
JiB0aXRsZS5maXJzdENoaWxkLnRleHRDb250ZW50Lmxlbmd0aCA+IDAgJiYgdGl0bGUuZmlyc3RD
aGlsZC50ZXh0Q29udGVudFswXSA9PSAiXG4iKQotICAgICAgICAgICAgdGl0bGUuZmlyc3RDaGls
ZC50ZXh0Q29udGVudCA9IHRpdGxlLmZpcnN0Q2hpbGQudGV4dENvbnRlbnQuc3Vic3RyaW5nKDEp
OwotCi0gICAgICAgIC8vIFdlIGhhdmUgYW4gb3ZlcmlkZGVuIHRpbWVsaW5lLnJzcyB0aGF0IGFk
ZHMgZ2l0IGJyYW5jaGVzIHRvIHRoZSBUcmFjIHRpbWVsaW5lIFJTUyBvdXRwdXQgKHJkYXI6Ly9w
cm9ibGVtLzIzODUzNjIzKS4KLSAgICAgICAgdmFyIGdpdEJyYW5jaGVzID0gZG9jLmV2YWx1YXRl
KCIuL2JyYW5jaGVzIiwgY29tbWl0RWxlbWVudCwgbnVsbCwgWFBhdGhSZXN1bHQuU1RSSU5HX1RZ
UEUpLnN0cmluZ1ZhbHVlOwotCi0gICAgICAgIHZhciByZXN1bHQgPSB7Ci0gICAgICAgICAgICBy
ZXZpc2lvbk51bWJlcjogcmV2aXNpb25OdW1iZXIsCi0gICAgICAgICAgICBsaW5rOiBsaW5rLAot
ICAgICAgICAgICAgdGl0bGU6IHRpdGxlLAotICAgICAgICAgICAgYXV0aG9yOiBhdXRob3IsCi0g
ICAgICAgICAgICBkYXRlOiBkYXRlLAotICAgICAgICAgICAgZGVzY3JpcHRpb246IHBhcnNlZERl
c2NyaXB0aW9uLmlubmVySFRNTCwKLSAgICAgICAgICAgIGNvbnRhaW5zQnJhbmNoTG9jYXRpb246
IGxvY2F0aW9uICE9PSAiIiwKLSAgICAgICAgICAgIGJyYW5jaGVzOiBbXQotICAgICAgICB9Owot
Ci0gICAgICAgIGlmIChyZXN1bHQuY29udGFpbnNCcmFuY2hMb2NhdGlvbiAmJiAhZ2l0QnJhbmNo
ZXMpIHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGxvY2F0aW9uW2xvY2F0aW9uLmxlbmd0
aCAtIDFdICE9PSAiLyIpOwotICAgICAgICAgICAgbG9jYXRpb24gPSBsb2NhdGlvbiArPSAiLyI7
Ci0gICAgICAgICAgICBpZiAobG9jYXRpb24uc3RhcnRzV2l0aCgidGFncy8iKSkKLSAgICAgICAg
ICAgICAgICByZXN1bHQudGFnID0gbG9jYXRpb24uc3Vic3RyKDUsIGxvY2F0aW9uLmluZGV4T2Yo
Ii8iLCA1KSAtIDUpOwotICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uc3RhcnRzV2l0aCgi
YnJhbmNoZXMvIikpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmJyYW5jaGVzLnB1c2gobG9jYXRp
b24uc3Vic3RyKDksIGxvY2F0aW9uLmluZGV4T2YoIi8iLCA5KSAtIDkpKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKGxvY2F0aW9uLnN0YXJ0c1dpdGgoInJlbGVhc2VzLyIpKQotICAgICAgICAgICAg
ICAgIHJlc3VsdC5yZWxlYXNlID0gbG9jYXRpb24uc3Vic3RyKDksIGxvY2F0aW9uLmluZGV4T2Yo
Ii8iLCA5KSAtIDkpOwotICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uc3RhcnRzV2l0aCgi
dHJ1bmsvIikpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmJyYW5jaGVzLnB1c2goInRydW5rIik7
Ci0gICAgICAgICAgICBlbHNlIGlmIChsb2NhdGlvbi5zdGFydHNXaXRoKCJzdWJtaXNzaW9ucy8i
KSkKLSAgICAgICAgICAgICAgICA7IC8vIFRoZXNlIGNoYW5nZXMgYXJlIG5ldmVyIHJlbGV2YW50
IHRvIHRoZSBkYXNoYm9hcmQuCi0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAv
LyByZXN1bHQuY29udGFpbnNCcmFuY2hMb2NhdGlvbiByZW1haW5zIHRydWUsIGJlY2F1c2UgdGhp
cyBjb21taXQgZG9lcwotICAgICAgICAgICAgICAgIC8vIG5vdCBtYXRjaCBhbnkgZXhwbGljaXRs
eSBzcGVjaWZpZWQgYnJhbmNoZXMuCi0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFs
c2UpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGdpdEJyYW5jaGVz
KSB7Ci0gICAgICAgICAgICByZXN1bHQuY29udGFpbnNCcmFuY2hMb2NhdGlvbiA9IHRydWU7Ci0g
ICAgICAgICAgICByZXN1bHQuYnJhbmNoZXMgPSByZXN1bHQuYnJhbmNoZXMuY29uY2F0KGdpdEJy
YW5jaGVzLnNwbGl0KCIsICIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgfSwKLQotICAgIF9sb2FkZWQ6IGZ1bmN0aW9uKGRhdGFEb2N1bWVudCkKLSAgICB7Ci0g
ICAgICAgIGlmICghZGF0YURvY3VtZW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IHZhciBrbm93bkNvbW1pdHNXZXJlVXBkYXRlZCA9IGZhbHNlOwotICAgICAgICB2YXIgbmV3Q29t
bWl0cyA9IFtdOwotCi0gICAgICAgIHZhciBjb21taXRJbmZvRWxlbWVudHMgPSBkYXRhRG9jdW1l
bnQuZXZhbHVhdGUoIi9yc3MvY2hhbm5lbC9pdGVtIiwgZGF0YURvY3VtZW50LCBudWxsLCBYUGF0
aFJlc3VsdC5PUkRFUkVEX05PREVfSVRFUkFUT1JfVFlQRSk7Ci0gICAgICAgIHZhciBjb21taXRJ
bmZvRWxlbWVudDsKLSAgICAgICAgd2hpbGUgKGNvbW1pdEluZm9FbGVtZW50ID0gY29tbWl0SW5m
b0VsZW1lbnRzLml0ZXJhdGVOZXh0KCkpIHsKLSAgICAgICAgICAgIHZhciBjb21taXQgPSB0aGlz
Ll9jb252ZXJ0Q29tbWl0SW5mb0VsZW1lbnRUb09iamVjdChkYXRhRG9jdW1lbnQsIGNvbW1pdElu
Zm9FbGVtZW50KTsKLSAgICAgICAgICAgIHZhciBrbm93bkNvbW1pdEluZGV4ID0gdGhpcy5yZWNv
cmRlZENvbW1pdEluZGljZXNCeVJldmlzaW9uTnVtYmVyW2NvbW1pdC5yZXZpc2lvbk51bWJlcl07
Ci0gICAgICAgICAgICBpZiAoa25vd25Db21taXRJbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gQXV0aG9yIGNvdWxkIGhhdmUgY2hhbmdlZCwgYXMgY29tbWl0IHF1ZXVlIHJlcGxhY2Vz
IGl0IGFmdGVyIHRoZSBmYWN0LgotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
cmVjb3JkZWRDb21taXRzW2tub3duQ29tbWl0SW5kZXhdLnJldmlzaW9uTnVtYmVyID09PSBjb21t
aXQucmV2aXNpb25OdW1iZXIpOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlY29yZGVkQ29t
bWl0c1trbm93bkNvbW1pdEluZGV4XS5hdXRob3IgIT0gY29tbWl0LmF1dGhvcikgewotICAgICAg
ICAgICAgICAgICAgICB0aGlzLnJlY29yZGVkQ29tbWl0c1trbm93bkNvbW1pdEluZGV4XS5hdXRo
b3IgPSBjb21taXQuYXV0aG9yOwotICAgICAgICAgICAgICAgICAgICBrbm93bkNvbW1pdFdhc1Vw
ZGF0ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIG5ld0NvbW1pdHMucHVzaChjb21taXQpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKG5ld0NvbW1pdHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICB0aGlzLnJlY29yZGVkQ29t
bWl0cyA9IG5ld0NvbW1pdHMuY29uY2F0KHRoaXMucmVjb3JkZWRDb21taXRzKS5zb3J0KGZ1bmN0
aW9uKGEsIGIpIHsgcmV0dXJuIGEuZGF0ZSAtIGIuZGF0ZTsgfSk7Ci0gICAgICAgICAgICB0aGlz
LnJlY29yZGVkQ29tbWl0SW5kaWNlc0J5UmV2aXNpb25OdW1iZXIgPSB7fTsKLSAgICAgICAgICAg
IHRoaXMucmVjb3JkZWRDb21taXRzLmZvckVhY2goZnVuY3Rpb24oY3VyZW50VmFsdWUsIGluZGV4
KSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5yZWNvcmRlZENvbW1pdEluZGljZXNCeVJldmlzaW9u
TnVtYmVyW2N1cmVudFZhbHVlLnJldmlzaW9uTnVtYmVyXSA9IGluZGV4OwotICAgICAgICAgICAg
fSwgdGhpcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobmV3Q29tbWl0cy5sZW5ndGggfHwg
a25vd25Db21taXRzV2VyZVVwZGF0ZWQpCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhUcmFjLkV2ZW50LkNvbW1pdHNVcGRhdGVkLCBudWxsKTsKLSAgICB9LAotCi0g
ICAgbG9hZDogZnVuY3Rpb24oZnJvbURhdGUsIHRvRGF0ZSkKLSAgICB7Ci0gICAgICAgIGxvYWRY
TUwodGhpcy5feG1sVGltZWxpbmVVUkwoZnJvbURhdGUsIHRvRGF0ZSksIGZ1bmN0aW9uKGRhdGFE
b2N1bWVudCkgewotICAgICAgICAgICAgdGhpcy5fbG9hZGVkKGRhdGFEb2N1bWVudCk7Ci0gICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhUcmFjLkV2ZW50LkxvYWRlZCwg
W2Zyb21EYXRlLCB0b0RhdGVdKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLl9uZWVkc0F1
dGhlbnRpY2F0aW9uID8geyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSA6IHt9KTsKLSAgICB9LAot
Ci0gICAgX3VwZGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGZyb21EYXRlID0g
bmV3IERhdGUodGhpcy5fbGF0ZXN0TG9hZGVkRGF0ZSk7Ci0gICAgICAgIHZhciB0b0RhdGUgPSBu
ZXcgRGF0ZSgpOwotCi0gICAgICAgIHRoaXMuX2xhdGVzdExvYWRlZERhdGUgPSB0b0RhdGU7Ci0K
LSAgICAgICAgbG9hZFhNTCh0aGlzLl94bWxUaW1lbGluZVVSTChmcm9tRGF0ZSwgdG9EYXRlKSwg
dGhpcy5fbG9hZGVkLmJpbmQodGhpcyksIHRoaXMuX25lZWRzQXV0aGVudGljYXRpb24gPyB7IHdp
dGhDcmVkZW50aWFsczogdHJ1ZSB9IDoge30pOwotICAgIH0sCi0KLSAgICBzdGFydFBlcmlvZGlj
VXBkYXRlczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMu
X29sZGVzdEhpc3RvcmljYWxEYXRlKTsKLQotICAgICAgICB2YXIgdG9kYXkgPSBuZXcgRGF0ZSgp
OwotCi0gICAgICAgIHRoaXMuX29sZGVzdEhpc3RvcmljYWxEYXRlID0gdG9kYXk7Ci0gICAgICAg
IHRoaXMuX2xhdGVzdExvYWRlZERhdGUgPSB0b2RheTsKLQotICAgICAgICB0aGlzLl9sb2FkaW5n
SGlzdG9yaWNhbERhdGEgPSB0cnVlOwotICAgICAgICBsb2FkWE1MKHRoaXMuX3htbFRpbWVsaW5l
VVJMKHRvZGF5LCB0b2RheSksIGZ1bmN0aW9uKGRhdGFEb2N1bWVudCkgewotICAgICAgICAgICAg
dGhpcy5fbG9hZGluZ0hpc3RvcmljYWxEYXRhID0gZmFsc2U7Ci0gICAgICAgICAgICB0aGlzLl9s
b2FkZWQoZGF0YURvY3VtZW50KTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLl9uZWVkc0F1
dGhlbnRpY2F0aW9uID8geyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSA6IHt9KTsKLQotICAgICAg
ICB0aGlzLnVwZGF0ZVRpbWVyID0gc2V0SW50ZXJ2YWwodGhpcy5fdXBkYXRlLmJpbmQodGhpcyks
IFRyYWMuVXBkYXRlSW50ZXJ2YWwpOwotICAgIH0sCi0KLSAgICBsb2FkTW9yZUhpc3RvcmljYWxE
YXRhOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9vbGRl
c3RIaXN0b3JpY2FsRGF0ZSk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2xvYWRpbmdIaXN0b3JpY2Fs
RGF0YSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBMb2FkIG9uZSBtb3JlIGRh
eSBvZiBoaXN0b3JpY2FsIGRhdGEuCi0gICAgICAgIHZhciBmcm9tRGF0ZSA9IG5ldyBEYXRlKHRo
aXMuX29sZGVzdEhpc3RvcmljYWxEYXRlKTsKLSAgICAgICAgZnJvbURhdGUuc2V0RGF0ZShmcm9t
RGF0ZS5nZXREYXRlKCkgLSAxKTsKLSAgICAgICAgdmFyIHRvRGF0ZSA9IG5ldyBEYXRlKGZyb21E
YXRlKTsKLQotICAgICAgICB0aGlzLl9vbGRlc3RIaXN0b3JpY2FsRGF0ZSA9IGZyb21EYXRlOwot
Ci0gICAgICAgIHRoaXMuX2xvYWRpbmdIaXN0b3JpY2FsRGF0YSA9IHRydWU7Ci0gICAgICAgIGxv
YWRYTUwodGhpcy5feG1sVGltZWxpbmVVUkwoZnJvbURhdGUsIHRvRGF0ZSksIGZ1bmN0aW9uKGRh
dGFEb2N1bWVudCkgewotICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0hpc3RvcmljYWxEYXRhID0g
ZmFsc2U7Ci0gICAgICAgICAgICB0aGlzLl9sb2FkZWQoZGF0YURvY3VtZW50KTsKLSAgICAgICAg
fS5iaW5kKHRoaXMpLCB0aGlzLl9uZWVkc0F1dGhlbnRpY2F0aW9uID8geyB3aXRoQ3JlZGVudGlh
bHM6IHRydWUgfSA6IHt9KTsKLSAgICB9LAotCi0gICAgbmV4dFJldmlzaW9uOiBmdW5jdGlvbihi
cmFuY2hOYW1lLCByZXZpc2lvbikKLSAgICB7Ci0gICAgICAgIHZhciBjb21taXRzID0gdGhpcy5j
b21taXRzT25CcmFuY2hMYXRlclRoYW5SZXZpc2lvbihicmFuY2hOYW1lLCByZXZpc2lvbik7Ci0g
ICAgICAgIGlmIChjb21taXRzLmxlbmd0aCA+IDApCi0gICAgICAgICAgICByZXR1cm4gY29tbWl0
c1swXS5yZXZpc2lvbk51bWJlcjsKLSAgICAgICAgcmV0dXJuIFRyYWMuTk9fTU9SRV9SRVZJU0lP
TlM7Ci0gICAgfSwKLQotICAgIGluZGV4T2ZSZXZpc2lvbjogZnVuY3Rpb24ocmV2aXNpb25OdW1i
ZXIpCi0gICAgewotICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5yZWNvcmRlZENvbW1pdEluZGlj
ZXNCeVJldmlzaW9uTnVtYmVyW3JldmlzaW9uTnVtYmVyXTsKLSAgICAgICAgLy8gRklYTUU6IFVw
ZGF0ZSBjYWxsZXJzIHRvIGhhbmRsZSB1bmRlZmluZWQgcmVzdWx0LgotICAgICAgICBpZiAocmVz
dWx0ID09PSB1bmRlZmluZWQpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgfSwKLX07CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9DSVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
VHJhYy5qcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwot
bmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKRGVsZXRlZDogc3ZuOm1pbWUt
dHlwZQojIyAtMSArMCwwICMjCi10ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9VdGlsaXRpZXMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL1V0aWxpdGllcy5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRz
L1V0aWxpdGllcy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDIxMyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotSlNPTi5Mb2FkRXJyb3IgPSAiSlNPTkxvYWRFcnJvciI7Ci1KU09OLlBhcnNlRXJy
b3IgPSAiSlNPTlBhcnNlRXJyb3IiOwotCi0vLyBKU09OLmxvYWQoKSBtYXkgYmUgY2FsbGVkIHVz
aW5nIHRoZSBmb2xsb3dpbmcgZm9ybXM6Ci0vLwotLy8gSlNPTi5sb2FkKCJodHRwOi8vd3d3LmFw
cGxlLmNvbSIsIGZ1bmN0aW9uKCkgey8qIHN1Y2Nlc3MgKi99KQotLy8gT1IKLS8vIEpTT04ubG9h
ZCgiaHR0cDovL3d3dy5hcHBsZS5jb20iLCBmdW5jdGlvbigpIHsvKiBzdWNjZXNzICovfSwge3dp
dGhDcmVkZW50aWFsczogdHJ1ZSwgLi4ufSkKLS8vIE9SCi0vLyBKU09OLmxvYWQoImh0dHA6Ly93
d3cuYXBwbGUuY29tIiwgZnVuY3Rpb24oKSB7Lyogc3VjY2VzcyAqL30sIGZ1bmN0aW9uKCkgey8q
IGZhaWx1cmUgKi99KQotLy8gT1IKLS8vIEpTT04ubG9hZCgiaHR0cDovL3d3dy5hcHBsZS5jb20i
LCBmdW5jdGlvbigpIHsvKiBzdWNjZXNzICovfSwgZnVuY3Rpb24oKSB7LyogZmFpbHVyZSAqL30s
IHt3aXRoQ3JlZGVudGlhbHM6IHRydWUsIC4uLn0pCi1KU09OLmxvYWQgPSBmdW5jdGlvbih1cmws
IHN1Y2Nlc3NDYWxsYmFjaywgZmFpbHVyZUNhbGxiYWNrLCBvcHRpb25zKQotewotICAgIGNvbnNv
bGUuYXNzZXJ0KHVybCk7Ci0KLSAgICBpZiAoIShzdWNjZXNzQ2FsbGJhY2sgaW5zdGFuY2VvZiBG
dW5jdGlvbikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChmYWlsdXJlQ2FsbGJhY2sgJiYg
dHlwZW9mIGZhaWx1cmVDYWxsYmFjayA9PT0gIm9iamVjdCIpCi0gICAgICAgIG9wdGlvbnMgPSBm
YWlsdXJlQ2FsbGJhY2s7Ci0KLSAgICBpZiAoIShmYWlsdXJlQ2FsbGJhY2sgaW5zdGFuY2VvZiBG
dW5jdGlvbikpCi0gICAgICAgIGZhaWx1cmVDYWxsYmFjayA9IGZ1bmN0aW9uKCkgeyB9OwotCi0g
ICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAib2JqZWN0IikKLSAgICAgICAgb3B0aW9ucyA9IHt9
OwotCi0gICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7Ci0gICAgcmVxdWVzdC5v
bnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHRoaXMucmVhZHlT
dGF0ZSAhPT0gNCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBEb24ndCBjb25z
aWRlciBhIHN0YXR1cyBvZiAwIHRvIGJlIGEgbG9hZCBlcnJvciBmb3IgZWFzaWVyIHRlc3Rpbmcg
d2l0aCBsb2NhbCBmaWxlcy4KLSAgICAgICAgdmFyIGxvYWRFcnJvck9jY3VycmVkID0gdGhpcy5z
dGF0dXMgIT09IDAgJiYgdGhpcy5zdGF0dXMgIT09IDIwMDsKLSAgICAgICAgaWYgKGxvYWRFcnJv
ck9jY3VycmVkKSB7Ci0gICAgICAgICAgICBmYWlsdXJlQ2FsbGJhY2soe2Vycm9yVHlwZTogSlNP
Ti5Mb2FkRXJyb3IsIGVycm9yOiB0aGlzLnN0YXR1c1RleHQsIGVycm9ySFRUUENvZGU6IHRoaXMu
c3RhdHVzfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB0cnkg
ewotICAgICAgICAgICAgdmFyIHJlc3BvbnNlVGV4dCA9IHJlcXVlc3QucmVzcG9uc2VUZXh0Owot
ICAgICAgICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkoImpzb25wQ2FsbGJhY2tOYW1l
IikpCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VUZXh0ID0gcmVzcG9uc2VUZXh0LnJlcGxhY2Uo
bmV3IFJlZ0V4cCgiXiIgKyBvcHRpb25zLmpzb25wQ2FsbGJhY2tOYW1lICsgIlxcKCguKilcXCk7
PyQiKSwgIiQxIik7Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UocmVzcG9uc2VU
ZXh0KTsKLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgdmFyIGRhdGEgPSB7ZXJy
b3JUeXBlOiBKU09OLlBhcnNlRXJyb3IsIGVycm9yOiBlLm1lc3NhZ2V9OwotICAgICAgICAgICAg
ZmFpbHVyZUNhbGxiYWNrKGRhdGEpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKGRhdGEpOwotICAgIH07Ci0KLSAgICByZXF1ZXN0Lm9w
ZW4oIkdFVCIsIHVybCk7Ci0gICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkoIndpdGhDcmVk
ZW50aWFscyIpKQotICAgICAgICByZXF1ZXN0LndpdGhDcmVkZW50aWFscyA9IG9wdGlvbnMud2l0
aENyZWRlbnRpYWxzOwotICAgIHJlcXVlc3Quc2VuZCgpOwotfTsKLQotZnVuY3Rpb24gbG9hZFhN
TCh1cmwsIGNhbGxiYWNrLCBvcHRpb25zKSB7Ci0gICAgY29uc29sZS5hc3NlcnQodXJsKTsKLQot
ICAgIGlmICghKGNhbGxiYWNrIGluc3RhbmNlb2YgRnVuY3Rpb24pKQotICAgICAgICByZXR1cm47
Ci0KLSAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKLSAgICByZXF1ZXN0Lm9u
cmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAodGhpcy5yZWFkeVN0
YXRlICE9PSA0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIEFsbG93IGEgc3Rh
dHVzIG9mIDAgZm9yIGVhc2llciB0ZXN0aW5nIHdpdGggbG9jYWwgZmlsZXMuCi0gICAgICAgIGlm
ICghdGhpcy5zdGF0dXMgfHwgdGhpcy5zdGF0dXMgPT09IDIwMCkKLSAgICAgICAgICAgIGNhbGxi
YWNrKHJlcXVlc3QucmVzcG9uc2VYTUwpOwotICAgIH07Ci0KLSAgICByZXF1ZXN0Lm9wZW4oIkdF
VCIsIHVybCk7Ci0gICAgaWYgKCh0eXBlb2Ygb3B0aW9ucyA9PT0gIm9iamVjdCIpICYmIG9wdGlv
bnMuaGFzT3duUHJvcGVydHkoIndpdGhDcmVkZW50aWFscyIpKQotICAgICAgICByZXF1ZXN0Lndp
dGhDcmVkZW50aWFscyA9IG9wdGlvbnMud2l0aENyZWRlbnRpYWxzOwotICAgIHJlcXVlc3Quc2Vu
ZCgpOwotfTsKLQotTm9kZS5wcm90b3R5cGUuaXNBbmNlc3RvciA9IGZ1bmN0aW9uKG5vZGUpCi17
Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB2YXIgY3VycmVu
dE5vZGUgPSBub2RlLnBhcmVudE5vZGU7Ci0gICAgd2hpbGUgKGN1cnJlbnROb2RlKSB7Ci0gICAg
ICAgIGlmICh0aGlzID09PSBjdXJyZW50Tm9kZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1Ob2RlLnByb3RvdHlwZS5pc0Rlc2NlbmRhbnQgPSBmdW5j
dGlvbihkZXNjZW5kYW50KQotewotICAgIHJldHVybiAhIWRlc2NlbmRhbnQgJiYgZGVzY2VuZGFu
dC5pc0FuY2VzdG9yKHRoaXMpOwotfQotCi1Ob2RlLnByb3RvdHlwZS5pc1NlbGZPckFuY2VzdG9y
ID0gZnVuY3Rpb24obm9kZSkKLXsKLSAgICByZXR1cm4gISFub2RlICYmIChub2RlID09PSB0aGlz
IHx8IHRoaXMuaXNBbmNlc3Rvcihub2RlKSk7Ci19Ci0KLU5vZGUucHJvdG90eXBlLmlzU2VsZk9y
RGVzY2VuZGFudCA9IGZ1bmN0aW9uKG5vZGUpCi17Ci0gICAgcmV0dXJuICEhbm9kZSAmJiAobm9k
ZSA9PT0gdGhpcyB8fCB0aGlzLmlzRGVzY2VuZGFudChub2RlKSk7Ci19Ci0KLUVsZW1lbnQucHJv
dG90eXBlLnJlbW92ZUNoaWxkcmVuID0gZnVuY3Rpb24oKQotewotICAgIC8vIFRoaXMgaGFzIGJl
ZW4gdGVzdGVkIHRvIGJlIHRoZSBmYXN0ZXN0IHJlbW92YWwgbWV0aG9kLgotICAgIGlmICh0aGlz
LmZpcnN0Q2hpbGQpCi0gICAgICAgIHRoaXMudGV4dENvbnRlbnQgPSAiIjsKLX07Ci0KLURPTVRv
a2VuTGlzdC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbihzdHJpbmcpCi17Ci0gICAgZm9y
ICh2YXIgaSA9IDAsIGVuZCA9IHRoaXMubGVuZ3RoOyBpIDwgZW5kOyArK2kpIHsKLSAgICAgICAg
aWYgKHRoaXMuaXRlbShpKSA9PT0gc3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotQXJyYXkucHJvdG90eXBlLmNvbnRhaW5zID0g
ZnVuY3Rpb24odmFsdWUpCi17Ci0gICAgcmV0dXJuIHRoaXMuaW5kZXhPZih2YWx1ZSkgPj0gMDsK
LX07Ci0KLUFycmF5LnByb3RvdHlwZS5maW5kRmlyc3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpCi17
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlm
IChwcmVkaWNhdGUodGhpc1tpXSkpCi0gICAgICAgICAgICByZXR1cm4gdGhpc1tpXTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gbnVsbDsKLX07Ci0KLUFycmF5LnByb3RvdHlwZS5hdmVyYWdlID0gZnVu
Y3Rpb24oKQotewotICAgIHZhciBzdW0gPSAwOwotICAgIHZhciBjb3VudCA9IHRoaXMubGVuZ3Ro
OwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgc3VtICs9IHRo
aXNbaV07Ci0gICAgcmV0dXJuIHN1bSAvIGNvdW50OwotfTsKLQotQXJyYXkucHJvdG90eXBlLm1l
ZGlhbiA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgYXJyYXkgPSB0aGlzLnNsaWNlKCk7IC8vIE1h
a2UgYSBjb3B5IHRvIGF2b2lkIG1vZGlmeWluZyB0aGUgb2JqZWN0LgotICAgIGFycmF5LnNvcnQo
ZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYSAtIGI7IH0pOwotCi0gICAgdmFyIGhhbGYgPSBNYXRo
LmZsb29yKGFycmF5Lmxlbmd0aCAvIDIpOwotCi0gICAgaWYgKGFycmF5Lmxlbmd0aCAlIDIpCi0g
ICAgICAgIHJldHVybiBhcnJheVtoYWxmXTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAoYXJy
YXlbaGFsZiAtIDFdICsgYXJyYXlbaGFsZl0pIC8gMjsKLX07Ci0KLVN0cmluZy5wcm90b3R5cGUu
Y29udGFpbnMgPSBmdW5jdGlvbihzdWJzdHJpbmcpCi17Ci0gICAgcmV0dXJuIHRoaXMuaW5kZXhP
ZihzdWJzdHJpbmcpID49IDA7Ci19OwotCi1TdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGggPSBm
dW5jdGlvbihzdWJzdHJpbmcpCi17Ci0gICAgcmV0dXJuIHRoaXMubGFzdEluZGV4T2Yoc3Vic3Ry
aW5nLCAwKSA9PT0gMDsKLX07Ci0KLWZ1bmN0aW9uIHNvcnREaWN0aW9uYXJpZXNCeU9yZGVyKHVu
c29ydGVkKQotewotICAgIHZhciBzb3J0ZWQgPSBbXTsKLQotICAgIGZvciAodmFyIGtleSBpbiB1
bnNvcnRlZCkKLSAgICAgICAgc29ydGVkLnB1c2godW5zb3J0ZWRba2V5XSk7Ci0KLSAgICBzb3J0
ZWQuc29ydChmdW5jdGlvbihhLCBiKSB7Ci0gICAgICAgIHJldHVybiBhLm9yZGVyIC0gYi5vcmRl
cjsKLSAgICB9KTsKLQotICAgIHJldHVybiBzb3J0ZWQ7Ci19OwpJbmRleDogVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRz
L1dlYktpdEJ1aWxkYm90LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9XZWJLaXRCdWls
ZGJvdC5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1dlYktpdEJ1aWxkYm90
LmpzCShub25leGlzdGVudCkKQEAgLTEsMTExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1X
ZWJLaXRCdWlsZGJvdCA9IGZ1bmN0aW9uKCkKLXsKLSAgICBjb25zdCBxdWV1ZUluZm8gPSB7Ci0g
ICAgICAgICJBcHBsZS1CaWdTdXItUmVsZWFzZS1CdWlsZCI6IHtwbGF0Zm9ybTogRGFzaGJvYXJk
LlBsYXRmb3JtLm1hY09TQmlnU3VyLCBkZWJ1ZzogZmFsc2UsIGJ1aWxkZXI6IHRydWUsIGFyY2hp
dGVjdHVyZTogQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1cmUuU2l4dHlGb3VyQml0fSwKLSAgICAg
ICAgIkFwcGxlLUNhdGFsaW5hLURlYnVnLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxh
dGZvcm0ubWFjT1NDYXRhbGluYSwgZGVidWc6IHRydWUsIGJ1aWxkZXI6IHRydWUsIGFyY2hpdGVj
dHVyZTogQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1cmUuU2l4dHlGb3VyQml0fSwKLSAgICAgICAg
IkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0
Zm9ybS5tYWNPU0NhdGFsaW5hLCBkZWJ1ZzogZmFsc2UsIGJ1aWxkZXI6IHRydWUsIGFyY2hpdGVj
dHVyZTogQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1cmUuU2l4dHlGb3VyQml0fSwKLSAgICAgICAg
IkFwcGxlLUNhdGFsaW5hLURlYnVnLVdLMS1UZXN0cyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBs
YXRmb3JtLm1hY09TQ2F0YWxpbmEsIGRlYnVnOiB0cnVlLCB0ZXN0ZXI6IHRydWUsIHRlc3RDYXRl
Z29yeTogQnVpbGRib3QuVGVzdENhdGVnb3J5LldlYktpdDF9LAotICAgICAgICAiQXBwbGUtQ2F0
YWxpbmEtRGVidWctV0syLVRlc3RzIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0ubWFj
T1NDYXRhbGluYSwgZGVidWc6IHRydWUsIHRlc3RlcjogdHJ1ZSwgdGVzdENhdGVnb3J5OiBCdWls
ZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0Mn0sCi0gICAgICAgICJBcHBsZS1DYXRhbGluYS1SZWxl
YXNlLVdLMS1UZXN0cyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLm1hY09TQ2F0YWxp
bmEsIGRlYnVnOiBmYWxzZSwgdGVzdGVyOiB0cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1aWxkYm90LlRl
c3RDYXRlZ29yeS5XZWJLaXQxfSwKLSAgICAgICAgIkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtV0sy
LVBlcmYiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5tYWNPU0NhdGFsaW5hLCBkZWJ1
ZzogZmFsc2UsIHBlcmZvcm1hbmNlOiB0cnVlLCBoZWFkaW5nOiAiUGVyZm9ybWFuY2UifSwKLSAg
ICAgICAgIkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtV0syLVRlc3RzIjoge3BsYXRmb3JtOiBEYXNo
Ym9hcmQuUGxhdGZvcm0ubWFjT1NDYXRhbGluYSwgZGVidWc6IGZhbHNlLCB0ZXN0ZXI6IHRydWUs
IHRlc3RDYXRlZ29yeTogQnVpbGRib3QuVGVzdENhdGVnb3J5LldlYktpdDJ9LAotICAgICAgICAi
QXBwbGUtQ2F0YWxpbmEgSlNDIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0ubWFjT1ND
YXRhbGluYSwgaGVhZGluZzogIkphdmFTY3JpcHQiLCBjb21iaW5lZFF1ZXVlczogewotICAgICAg
ICAgICAgIkFwcGxlLUNhdGFsaW5hLUxMSU5ULUNMb29wLUJ1aWxkQW5kVGVzdCI6IHtoZWFkaW5n
OiAiTExJTlQgQ0xvb3AgKEJ1aWxkQW5kVGVzdCkifSwKLSAgICAgICAgICAgICJBcHBsZS1DYXRh
bGluYS1EZWJ1Zy1KU0MtVGVzdHMiOiB7aGVhZGluZzogIkRlYnVnIEpTQyAoVGVzdHMpIn0sCi0g
ICAgICAgICAgICAiQXBwbGUtQ2F0YWxpbmEtUmVsZWFzZS1KU0MtVGVzdHMiOiB7aGVhZGluZzog
IlJlbGVhc2UgSlNDIChUZXN0cykifSwKLSAgICAgICAgICAgICJBcHBsZS1DYXRhbGluYS1EZWJ1
Zy1UZXN0MjYyLVRlc3RzIjoge2hlYWRpbmc6ICJEZWJ1ZyBUZXN0MjYyIChUZXN0cykifSwKLSAg
ICAgICAgICAgICJBcHBsZS1DYXRhbGluYS1SZWxlYXNlLVRlc3QyNjItVGVzdHMiOiB7aGVhZGlu
ZzogIlJlbGVhc2UgVGVzdDI2MiAoVGVzdHMpIn0sCi0gICAgICAgIH19LAotICAgICAgICAiQXBw
bGUtTW9qYXZlLURlYnVnLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0ubWFj
T1NNb2phdmUsIGRlYnVnOiB0cnVlLCBidWlsZGVyOiB0cnVlLCBhcmNoaXRlY3R1cmU6IEJ1aWxk
Ym90LkJ1aWxkQXJjaGl0ZWN0dXJlLlNpeHR5Rm91ckJpdH0sCi0gICAgICAgICJBcHBsZS1Nb2ph
dmUtUmVsZWFzZS1CdWlsZCI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLm1hY09TTW9q
YXZlLCBkZWJ1ZzogZmFsc2UsIGJ1aWxkZXI6IHRydWUsIGFyY2hpdGVjdHVyZTogQnVpbGRib3Qu
QnVpbGRBcmNoaXRlY3R1cmUuU2l4dHlGb3VyQml0fSwKLSAgICAgICAgIkFwcGxlLU1vamF2ZS1E
ZWJ1Zy1XSzEtVGVzdHMiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5tYWNPU01vamF2
ZSwgZGVidWc6IHRydWUsIHRlc3RlcjogdHJ1ZSwgdGVzdENhdGVnb3J5OiBCdWlsZGJvdC5UZXN0
Q2F0ZWdvcnkuV2ViS2l0MX0sCi0gICAgICAgICJBcHBsZS1Nb2phdmUtRGVidWctV0syLVRlc3Rz
Ijoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0ubWFjT1NNb2phdmUsIGRlYnVnOiB0cnVl
LCB0ZXN0ZXI6IHRydWUsIHRlc3RDYXRlZ29yeTogQnVpbGRib3QuVGVzdENhdGVnb3J5LldlYktp
dDJ9LAotICAgICAgICAiQXBwbGUtTW9qYXZlLVJlbGVhc2UtV0sxLVRlc3RzIjoge3BsYXRmb3Jt
OiBEYXNoYm9hcmQuUGxhdGZvcm0ubWFjT1NNb2phdmUsIGRlYnVnOiBmYWxzZSwgdGVzdGVyOiB0
cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJLaXQxfSwKLSAgICAg
ICAgIkFwcGxlLU1vamF2ZS1SZWxlYXNlLVdLMi1UZXN0cyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJk
LlBsYXRmb3JtLm1hY09TTW9qYXZlLCBkZWJ1ZzogZmFsc2UsIHRlc3RlcjogdHJ1ZSwgdGVzdENh
dGVnb3J5OiBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0Mn0sCi0gICAgICAgICJBcHBsZS1p
T1MtMTQtUmVsZWFzZS1CdWlsZCI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLmlPUzE0
RGV2aWNlLCBkZWJ1ZzogZmFsc2UsIGJ1aWxkZXI6IHRydWUsIGFyY2hpdGVjdHVyZTogQnVpbGRi
b3QuQnVpbGRBcmNoaXRlY3R1cmUuU2l4dHlGb3VyQml0fSwKLSAgICAgICAgIkFwcGxlLWlPUy0x
NC1TaW11bGF0b3ItUmVsZWFzZS1CdWlsZCI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3Jt
LmlPUzE0U2ltdWxhdG9yLCBkZWJ1ZzogZmFsc2UsIGJ1aWxkZXI6IHRydWUsIGFyY2hpdGVjdHVy
ZTogQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1cmUuU2l4dHlGb3VyQml0fSwKLSAgICAgICAgIkFw
cGxlLWlPUy0xNC1TaW11bGF0b3ItUmVsZWFzZS1XSzItVGVzdHMiOiB7cGxhdGZvcm06IERhc2hi
b2FyZC5QbGF0Zm9ybS5pT1MxNFNpbXVsYXRvciwgaGVhZGluZzoiaU9TIFJlbGVhc2UiLCBkZWJ1
ZzogZmFsc2UsIHRlc3RlcjogdHJ1ZSwgdGVzdENhdGVnb3J5OiBCdWlsZGJvdC5UZXN0Q2F0ZWdv
cnkuV2ViS2l0Mn0sCi0gICAgICAgICJBcHBsZS1pT1MtMTQtU2ltdWxhdG9yLURlYnVnLUJ1aWxk
Ijoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uaU9TMTRTaW11bGF0b3IsIGRlYnVnOiB0
cnVlLCBidWlsZGVyOiB0cnVlLCBhcmNoaXRlY3R1cmU6IEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0
dXJlLlNpeHR5Rm91ckJpdH0sCi0gICAgICAgICJBcHBsZS1pT1MtMTQtU2ltdWxhdG9yLURlYnVn
LVdLMi1UZXN0cyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLmlPUzE0U2ltdWxhdG9y
LCBkZWJ1ZzogdHJ1ZSwgaGVhZGluZzoiaU9TIERlYnVnIiwgdGVzdGVyOiB0cnVlLCB0ZXN0Q2F0
ZWdvcnk6IEJ1aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJLaXQyfSwKLSAgICAgICAgIkFwcGxlLWlQ
YWRPUy0xNC1TaW11bGF0b3ItUmVsZWFzZS1XSzItVGVzdHMiOiB7cGxhdGZvcm06IERhc2hib2Fy
ZC5QbGF0Zm9ybS5pT1MxNFNpbXVsYXRvciwgaGVhZGluZzoiaVBhZE9TIFJlbGVhc2UiLCBkZWJ1
ZzogZmFsc2UsIHRlc3RlcjogdHJ1ZSwgdGVzdENhdGVnb3J5OiBCdWlsZGJvdC5UZXN0Q2F0ZWdv
cnkuV2ViS2l0Mn0sCi0gICAgICAgICJBcHBsZS1pUGFkT1MtMTQtU2ltdWxhdG9yLURlYnVnLVdL
Mi1UZXN0cyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLmlPUzE0U2ltdWxhdG9yLCBo
ZWFkaW5nOiJpUGFkT1MgRGVidWciLCBkZWJ1ZzogdHJ1ZSwgdGVzdGVyOiB0cnVlLCB0ZXN0Q2F0
ZWdvcnk6IEJ1aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJLaXQyfSwKLSAgICAgICAgIkFwcGxlLXR2
T1MtMTQtUmVsZWFzZS1CdWlsZCI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLnR2T1Mx
NERldmljZSwgZGVidWc6IGZhbHNlLCBidWlsZGVyOiB0cnVlLCBhcmNoaXRlY3R1cmU6IEJ1aWxk
Ym90LkJ1aWxkQXJjaGl0ZWN0dXJlLlNpeHR5Rm91ckJpdH0sCi0gICAgICAgICJBcHBsZS10dk9T
LVNpbXVsYXRvci0xNC1SZWxlYXNlLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZv
cm0udHZPUzE0U2ltdWxhdG9yLCBkZWJ1ZzogZmFsc2UsIGJ1aWxkZXI6IHRydWUsIGFyY2hpdGVj
dHVyZTogQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1cmUuU2l4dHlGb3VyQml0fSwKLSAgICAgICAg
IkFwcGxlLXdhdGNoT1MtNy1SZWxlYXNlLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxh
dGZvcm0ud2F0Y2hPUzdEZXZpY2UsIGRlYnVnOiBmYWxzZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0
ZWN0dXJlOiBCdWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5UaGlydHlUd29CaXR9LAotICAgICAg
ICAiQXBwbGUtd2F0Y2hPUy1TaW11bGF0b3ItNy1SZWxlYXNlLUJ1aWxkIjoge3BsYXRmb3JtOiBE
YXNoYm9hcmQuUGxhdGZvcm0ud2F0Y2hPUzdTaW11bGF0b3IsIGRlYnVnOiBmYWxzZSwgYnVpbGRl
cjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBCdWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5TaXh0eUZv
dXJCaXR9LAotICAgICAgICAiQXBwbGUtV2luLTEwLURlYnVnLUJ1aWxkIjoge3BsYXRmb3JtOiBE
YXNoYm9hcmQuUGxhdGZvcm0uV2luZG93czEwLCBkZWJ1ZzogdHJ1ZSwgYnVpbGRlcjogdHJ1ZSwg
YXJjaGl0ZWN0dXJlOiBCdWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5UaGlydHlUd29CaXQgfSwK
LSAgICAgICAgIkFwcGxlLVdpbi0xMC1SZWxlYXNlLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9h
cmQuUGxhdGZvcm0uV2luZG93czEwLCBidWlsZGVyOiB0cnVlLCBhcmNoaXRlY3R1cmU6IEJ1aWxk
Ym90LkJ1aWxkQXJjaGl0ZWN0dXJlLlRoaXJ0eVR3b0JpdH0sCi0gICAgICAgICJBcHBsZS1XaW4t
MTAtRGVidWctVGVzdHMiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5XaW5kb3dzMTAs
IGRlYnVnOiB0cnVlLCB0ZXN0ZXI6IHRydWUsIHRlc3RDYXRlZ29yeTogQnVpbGRib3QuVGVzdENh
dGVnb3J5LldlYktpdDF9LAotICAgICAgICAiQXBwbGUtV2luLTEwLVJlbGVhc2UtVGVzdHMiOiB7
cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5XaW5kb3dzMTAsIHRlc3RlcjogdHJ1ZSwgdGVz
dENhdGVnb3J5OiBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0MX0sCi0gICAgICAgICJXaW5D
YWlyby02NC1iaXQtV0tMLVJlbGVhc2UtQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0
Zm9ybS5XaW5DYWlybywgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBCdWlsZGJvdC5CdWls
ZEFyY2hpdGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiV2luQ2Fpcm8tNjQtYml0LVdL
TC1SZWxlYXNlLVRlc3RzIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uV2luQ2Fpcm8s
IHRlc3RlcjogdHJ1ZSwgdGVzdENhdGVnb3J5OiBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0
MX0sCi0gICAgICAgICJXaW5DYWlyby02NC1iaXQtV0tMLURlYnVnLUJ1aWxkIjoge3BsYXRmb3Jt
OiBEYXNoYm9hcmQuUGxhdGZvcm0uV2luQ2Fpcm8sIGRlYnVnOiB0cnVlLCBidWlsZGVyOiB0cnVl
LCBhcmNoaXRlY3R1cmU6IEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlLlNpeHR5Rm91ckJpdH0s
Ci0gICAgICAgICJXaW5DYWlyby02NC1iaXQtV0tMLURlYnVnLVRlc3RzIjoge3BsYXRmb3JtOiBE
YXNoYm9hcmQuUGxhdGZvcm0uV2luQ2Fpcm8sIGRlYnVnOiB0cnVlLCB0ZXN0ZXI6IHRydWUsIHRl
c3RDYXRlZ29yeTogQnVpbGRib3QuVGVzdENhdGVnb3J5LldlYktpdDF9LAotICAgICAgICAiV1BF
LUxpbnV4LTY0LWJpdC1SZWxlYXNlLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZv
cm0uTGludXhXUEUsIGRlYnVnOiBmYWxzZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBC
dWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiV1BFLUxp
bnV4LTY0LWJpdC1SZWxlYXNlLVRlc3RzIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0u
TGludXhXUEUsIGRlYnVnOiBmYWxzZSwgdGVzdGVyOiB0cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1aWxk
Ym90LlRlc3RDYXRlZ29yeS5XZWJLaXQyfSwKLSAgICAgICAgIldQRS1MaW51eC02NC1iaXQtRGVi
dWctQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5MaW51eFdQRSwgZGVidWc6
IHRydWUsIGJ1aWxkZXI6IHRydWUsIGFyY2hpdGVjdHVyZTogQnVpbGRib3QuQnVpbGRBcmNoaXRl
Y3R1cmUuU2l4dHlGb3VyQml0fSwKLSAgICAgICAgIldQRS1MaW51eC02NC1iaXQtRGVidWctVGVz
dHMiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5MaW51eFdQRSwgZGVidWc6IHRydWUs
IHRlc3RlcjogdHJ1ZSwgdGVzdENhdGVnb3J5OiBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0
Mn0sCi0gICAgICAgICJHVEstTGludXgtNjQtYml0LVJlbGVhc2UtQnVpbGQiOiB7cGxhdGZvcm06
IERhc2hib2FyZC5QbGF0Zm9ybS5MaW51eEdUSywgZGVidWc6IGZhbHNlLCBidWlsZGVyOiB0cnVl
LCBhcmNoaXRlY3R1cmU6IEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlLlNpeHR5Rm91ckJpdH0s
Ci0gICAgICAgICJHVEstTGludXgtNjQtYml0LVJlbGVhc2UtVGVzdHMiOiB7cGxhdGZvcm06IERh
c2hib2FyZC5QbGF0Zm9ybS5MaW51eEdUSywgZGVidWc6IGZhbHNlLCB0ZXN0ZXI6IHRydWUsIHRl
c3RDYXRlZ29yeTogQnVpbGRib3QuVGVzdENhdGVnb3J5LldlYktpdDJ9LAotICAgICAgICAiR1RL
LUxpbnV4LTY0LWJpdC1EZWJ1Zy1CdWlsZCI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3Jt
LkxpbnV4R1RLLCBkZWJ1ZzogdHJ1ZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBCdWls
ZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiR1RLLUxpbnV4
LTY0LWJpdC1EZWJ1Zy1UZXN0cyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLkxpbnV4
R1RLLCBkZWJ1ZzogdHJ1ZSwgdGVzdGVyOiB0cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1aWxkYm90LlRl
c3RDYXRlZ29yeS5XZWJLaXQyfSwKLSAgICAgICAgIkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1Q
ZXJmIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uTGludXhHVEssIGRlYnVnOiBmYWxz
ZSwgcGVyZm9ybWFuY2U6IHRydWUsIGhlYWRpbmc6ICJQZXJmb3JtYW5jZSJ9LAotICAgICAgICAi
R1RLIExUUyBCdWlsZGVycyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLkxpbnV4R1RL
LCBoZWFkaW5nOiAiTFRTIEJ1aWxkZXJzIiwgY29tYmluZWRRdWV1ZXM6IHsKLSAgICAgICAgICAg
ICJHVEstTGludXgtNjQtYml0LVJlbGVhc2UtRGViaWFuLVN0YWJsZS1CdWlsZCI6IHtoZWFkaW5n
OiAiRGViaWFuIFN0YWJsZSAoQnVpbGQpIn0sCi0gICAgICAgICAgICAiR1RLLUxpbnV4LTY0LWJp
dC1SZWxlYXNlLVVidW50dS1MVFMtQnVpbGQiOiB7aGVhZGluZzogIlVidW50dSBMVFMgKEJ1aWxk
KSJ9LAotICAgICAgICB9fSwKLSAgICAgICAgIkdUSyBXYXlsYW5kIFRlc3RlcnMiOiB7cGxhdGZv
cm06IERhc2hib2FyZC5QbGF0Zm9ybS5MaW51eEdUSywgaGVhZGluZzogIldheWxhbmQiLCBjb21i
aW5lZFF1ZXVlczogewotICAgICAgICAgICAgIkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1XYXls
YW5kLVRlc3RzIjoge2hlYWRpbmc6ICJXYXlsYW5kIn0sCi0gICAgICAgIH19LAotICAgICAgICAi
SlNDT25seSBBQXJjaDY0IFRlc3RlcnMiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5M
aW51eEpTQ09ubHksIGhlYWRpbmc6ICJBQXJjaDY0IiwgY29tYmluZWRRdWV1ZXM6IHsKLSAgICAg
ICAgICAgICJKU0NPbmx5LUxpbnV4LUFBcmNoNjQtUmVsZWFzZSI6IHtoZWFkaW5nOiAiQUFyY2g2
NCJ9LAotICAgICAgICB9fSwKLSAgICAgICAgIkpTQ09ubHkgQVJNdjcgVGVzdGVycyI6IHtwbGF0
Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLkxpbnV4SlNDT25seSwgaGVhZGluZzogIkFSTXY3Iiwg
Y29tYmluZWRRdWV1ZXM6IHsKLSAgICAgICAgICAgICJKU0NPbmx5LUxpbnV4LUFSTXY3LVRodW1i
Mi1SZWxlYXNlIjoge2hlYWRpbmc6ICJBUk12NyBUaHVtYjIifSwKLSAgICAgICAgICAgICJKU0NP
bmx5LUxpbnV4LUFSTXY3LVRodW1iMi1Tb2Z0RlAtUmVsZWFzZSI6IHtoZWFkaW5nOiAiQVJNdjcg
VGh1bWIyIFNvZnRGUCJ9LAotICAgICAgICB9fSwKLSAgICAgICAgIkpTQ09ubHkgTUlQUyBUZXN0
ZXJzIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uTGludXhKU0NPbmx5LCBoZWFkaW5n
OiAiTUlQUyIsIGNvbWJpbmVkUXVldWVzOiB7Ci0gICAgICAgICAgICAiSlNDT25seS1MaW51eC1N
SVBTMzJlbC1SZWxlYXNlIjoge2hlYWRpbmc6ICJNSVBTMzJlbCJ9LAotICAgICAgICB9fSwKLSAg
ICB9OwotCi0gICAgQnVpbGRib3QuY2FsbCh0aGlzLCAiaHR0cHM6Ly9idWlsZC53ZWJraXQub3Jn
LyIsIHF1ZXVlSW5mbywgeyJVU0VfQlVJTERCT1RfVkVSU0lPTl9MRVNTX1RIQU5fMDkiIDogdHJ1
ZX0pOwotfTsKLQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJLaXRCdWls
ZGJvdCk7Ci0KLVdlYktpdEJ1aWxkYm90LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViS2l0QnVpbGRib3QsCi0gICAgX19wcm90b19fOiBCdWlsZGJvdC5wcm90b3R5cGUsCi0gICAg
cGVyZm9ybWFuY2VEYXNoYm9hcmRVUkw6ICAiaHR0cHM6Ly9wZXJmLndlYmtpdC5vcmciLAotCi0g
ICAgZ2V0IGRlZmF1bHRCcmFuY2hlcygpCi0gICAgewotICAgICAgICByZXR1cm4gW3sgcmVwb3Np
dG9yeTogRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZSwgbmFtZTogInRydW5rIiB9XTsK
LSAgICB9Ci19OwpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1dlYktpdFRlc3RIaXN0b3J5LmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9XZWJLaXRUZXN0SGlzdG9yeS5qcwkocmV2aXNpb24gMjY5
MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL1dlYktpdFRlc3RIaXN0b3J5LmpzCShub25leGlzdGVudCkK
QEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVRlc3RIaXN0b3J5ID0gZnVuY3Rpb24oKQot
ewotICAgIHRoaXMuX2Jhc2VVUkwgPSAiaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmciOwotfTsK
LQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhUZXN0SGlzdG9yeSk7Ci0KLVRl
c3RIaXN0b3J5LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogVGVzdEhpc3RvcnksCi0g
ICAgX19wcm90b19fOiBCYXNlT2JqZWN0LnByb3RvdHlwZSwKLQotICAgIGhpc3RvcnlQYWdlVVJM
Rm9yVGVzdDogZnVuY3Rpb24ocGF0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9iYXNl
VVJMICsgIj9zdWl0ZT1sYXlvdXQtdGVzdHMmdGVzdD0iICsgZW5jb2RlVVJJQ29tcG9uZW50KHBh
dGgpOwotICAgIH0KLX07CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9DSVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvV2ViS2l0
VGVzdEhpc3RvcnkuanMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICsw
LDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkRlbGV0ZWQ6IHN2
bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotdGV4dC9wbGFpbgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvaW5kZXgtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9pbmRleC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9pbmRleC1leHBlY3RlZC50eHQJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw0OCArMCwwIEBACi1XZWJLaXQgQm90IFdhdGNoZXIncyBEYXNo
Ym9hcmQgUVVuaXQgVGVzdCBSdW5uZXIgbm9nbG9iYWxzbm90cnljYXRjaAotSGlkZSBwYXNzZWQg
dGVzdHMKLVRyYWM6IF9sb2FkZWQgKDAsIDgsIDgpUmVydW4KLVRyYWM6IHBhcnNlIGdpdEJyYW5j
aGVzICgwLCA3LCA3KVJlcnVuCi1UcmFjOiBfcGFyc2VSZXZpc2lvbkZyb21VUkwgKDAsIDMsIDMp
UmVydW4KLVRyYWM6IG5leHRSZXZpc2lvbiAoMCwgMiwgMilSZXJ1bgotVHJhYzogaW5kZXhPZlJl
dmlzaW9uICgwLCAxLCAxKVJlcnVuCi1UcmFjOiBjb21taXRzT25CcmFuY2hMYXRlclRoYW5SZXZp
c2lvbiAoMCwgMSwgMSlSZXJ1bgotVHJhYzogY29tbWl0c09uQnJhbmNoTGF0ZXJUaGFuUmV2aXNp
b24gbm8gY29tbWl0cyAoMCwgMSwgMSlSZXJ1bgotVHJhYzogY29tbWl0c09uQnJhbmNoSW5SZXZp
c2lvblJhbmdlICgwLCAxLCAxKVJlcnVuCi1UcmFjOiByZXZpc2lvblVSTCAoMCwgMiwgMilSZXJ1
bgotVHJhYzogcmV2aXNpb25VUkwgd2l0aCBUcmFjIElkZW50aWZpZXIgKDAsIDIsIDIpUmVydW4K
LVRyYWM6IF94bWxUaW1lbGluZVVSTCAoMCwgMiwgMilSZXJ1bgotVHJhYzogX3htbFRpbWVsaW5l
VVJMIHdpdGggVHJhYyBJZGVudGlmaWVyICgwLCAyLCAyKVJlcnVuCi1CdWlsZEJvdFF1ZXVlVmll
dzogX2FwcGVuZFBlbmRpbmdSZXZpc2lvbkNvdW50ICgwLCAxLCAxKVJlcnVuCi1CdWlsZEJvdFF1
ZXVlVmlldzogX3BvcG92ZXJMaW5lc0ZvckNvbW1pdFJhbmdlICgwLCAxLCAxKVJlcnVuCi1CdWls
ZEJvdFF1ZXVlVmlldzogX3ByZXNlbnRQb3BvdmVyRm9yUGVuZGluZ0NvbW1pdHMgKDAsIDEsIDEp
UmVydW4KLUJ1aWxkQm90UXVldWVWaWV3OiBfcHJlc2VudFBvcG92ZXJGb3JQZW5kaW5nQ29tbWl0
cyBubyBwZW5kaW5nIGNvbW1pdHMgKDAsIDEsIDEpUmVydW4KLUJ1aWxkQm90UXVldWVWaWV3OiBf
cHJlc2VudFBvcG92ZXJGb3JSZXZpc2lvblJhbmdlICgwLCAxLCAxKVJlcnVuCi1CdWlsZEJvdFF1
ZXVlVmlldzogX3ByZXNlbnRQb3BvdmVyRm9yUmV2aXNpb25SYW5nZSBubyBjb21taXRzICgwLCAx
LCAxKVJlcnVuCi1CdWlsZEJvdFF1ZXVlVmlldzogX3JldmlzaW9uQ29udGVudFdpdGhQb3BvdmVy
Rm9ySXRlcmF0aW9uICgwLCAzLCAzKVJlcnVuCi1CdWlsZEJvdFF1ZXVlVmlldzogX3JldmlzaW9u
Q29udGVudFdpdGhQb3BvdmVyRm9ySXRlcmF0aW9uIGhhcyBwcmV2aW91c0l0ZXJhdGlvbiAoMCwg
NCwgNClSZXJ1bgotQnVpbGRCb3RRdWV1ZVZpZXc6IF9mb3JtYXRSZXZpc2lvbkZvckRpc3BsYXkg
U3VidmVyc2lvbiAoMCwgMSwgMSlSZXJ1bgotQnVpbGRCb3RRdWV1ZVZpZXc6IF9mb3JtYXRSZXZp
c2lvbkZvckRpc3BsYXkgR2l0ICgwLCAxLCAxKVJlcnVuCi1CdWlsZEJvdFF1ZXVlVmlldzogX3Bv
cG92ZXJDb250ZW50Rm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMgbG9hZCBmYWlsdXJl
IFVJIHRlc3QgKDAsIDMsIDMpUmVydW4KLUJ1aWxkQm90UXVldWVWaWV3OiBfcHJlc2VudFBvcG92
ZXJGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucyBpbmNsdWRpbmcgbG9hZGluZyAoMCwg
MCwgMClSZXJ1bgotQnVpbGRCb3RRdWV1ZVZpZXc6IF9jcmVhdGVMb2FkaW5nSW5kaWNhdG9yICgw
LCAzLCAzKVJlcnVuCi1CdWlsZEJvdFF1ZXVlVmlldzogX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNj
cmlwdENvcmVUZXN0UmVncmVzc2lvbnMgYWxyZWFkeSBsb2FkZWQgKDAsIDQsIDQpUmVydW4KLUJ1
aWxkQm90UXVldWU6IGNvbXBhcmVJdGVyYXRpb25zIGJ5IHJldmlzaW9ucyAoMCwgMywgMylSZXJ1
bgotQnVpbGRCb3RRdWV1ZTogY29tcGFyZUl0ZXJhdGlvbnMgYnkgbG9hZGVkIChvbmUgcmV2aXNp
b24gbWlzc2luZykgKDAsIDIsIDIpUmVydW4KLUJ1aWxkQm90UXVldWU6IGNvbXBhcmVJdGVyYXRp
b25zIGJ5IGxvYWRlZCAoc2FtZSByZXZpc2lvbikgKDAsIDIsIDIpUmVydW4KLUJ1aWxkQm90UXVl
dWU6IGNvbXBhcmVJdGVyYXRpb25zIGJ5IGlkIChyZXZpc2lvbnMgbm90IHNwZWNpZmllZCkgKDAs
IDMsIDMpUmVydW4KLUJ1aWxkQm90UXVldWU6IGNvbXBhcmVJdGVyYXRpb25zIGJ5IGlkIChzYW1l
IHJldmlzaW9uKSAoMCwgMywgMylSZXJ1bgotQnVpbGRCb3RRdWV1ZTogY29tcGFyZUl0ZXJhdGlv
bnNCeVJldmlzaW9ucyAoMCwgMywgMylSZXJ1bgotcjMzMDIyYm9iQHdlYmtpdC5vcmdjb21taXQg
bWVzc2FnZQotY29tbWl0cyBzaW5jZSBwcmV2aW91cyByZXN1bHQKLXIzMzAyMGdlb3JnZUB3ZWJr
aXQub3JnY29tbWl0IG1lc3NhZ2UKLXIzMzAxOGpvaG5Ad2Via2l0Lm9yZ2NvbW1pdCBtZXNzYWdl
Ci1ubyBjb21taXRzIHRvIHRydW5rIHNpbmNlIHByZXZpb3VzIHJlc3VsdAotY29tbWl0cyBzaW5j
ZSBwcmV2aW91cyByZXN1bHQKLXIzMzAyMmJvYkB3ZWJraXQub3JnY29tbWl0IG1lc3NhZ2UKLXIz
MzAyMGdlb3JnZUB3ZWJraXQub3JnY29tbWl0IG1lc3NhZ2UKLWlkYnVpbGQgIzFqYXZhc2NyaXB0
Y29yZSB0ZXN0IGZhaWx1cmVzCi1Mb2FkaW5n4oCmCi1pZGJ1aWxkICMxamF2YXNjcmlwdGNvcmUg
dGVzdCBmYWlsdXJlcwotdW5vCi1kb3MKLXRyZXMKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9p
bmRleC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9pbmRleC5odG1sCShy
ZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvaW5kZXguaHRtbAkobm9uZXhp
c3RlbnQpCkBAIC0xLDgwICswLDAgQEAKLTwhZG9jdHlwZSBodG1sPgotPCEtLQotQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi1hcmUgbWV0OgotMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLTIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi1BTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LVRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLVBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLVNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLUNPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi1BUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi1USEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0tLT4KLQotPGh0bWw+
Ci08aGVhZD4KLSAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+Ci0KLSAgICA8dGl0bGU+V2ViS2l0
IEJvdCBXYXRjaGVyJ3MgRGFzaGJvYXJkIFFVbml0IFRlc3QgUnVubmVyPC90aXRsZT4KLQotICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vU291cmNl
L1RoaXJkUGFydHkvcXVuaXQvcXVuaXQvcXVuaXQuY3NzIj4KLSAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL1N0eWxlcy9NYWluLmNzcyI+PC9saW5rPgotICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vU3R5bGVzL1BvcG92ZXIuY3NzIj48L2xpbms+Ci0g
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9TdHlsZXMvUXVldWVWaWV3LmNz
cyI+PC9saW5rPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vU3R5bGVz
L1N0YXR1c0xpbmVWaWV3LmNzcyI+PC9saW5rPgotCi0gICAgPHNjcmlwdCBzcmM9Ii4uL1V0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL0Jhc2VPYmplY3QuanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9EYXNoYm9hcmQuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSIuLi9CdWlsZGJvdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9
Ii4uL0J1Z3ppbGxhLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vQnViYmxlUXVl
dWVTZXJ2ZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9XZWJLaXRCdWlsZGJv
dC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL0J1aWxkYm90UXVldWUuanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9CdWJibGVRdWV1ZS5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9Ii4uL0J1aWxkYm90SXRlcmF0aW9uLmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0iLi4vQnVpbGRib3RUZXN0UmVzdWx0cy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9Ii4uL0dlb21ldHJ5LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4v
UG9wb3Zlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL1BvcG92ZXJUcmFja2Vy
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vUXVldWVWaWV3LmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vQnVpbGRib3RRdWV1ZVZpZXcuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSIuLi9CdWlsZGJvdEJ1aWxkZXJRdWV1ZVZpZXcuanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQgc3JjPSIuLi9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL0J1aWxkYm90Q29tYmluZWRRdWV1ZVZpZXcuanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9CdWlsZGJvdFBlcmZvcm1hbmNlUXVldWVWaWV3
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vQnVpbGRib3RMZWFrc1F1ZXVlVmll
dy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL0J1YmJsZVF1ZXVlVmlldy5qcyI+
PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL1N0YXR1c0xpbmVWaWV3LmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vU2V0dGluZ3MuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSIuLi9UcmFjLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vLi4vLi4vLi4vU291cmNlL1RoaXJkUGFydHkvcXVuaXQvcXVuaXQvcXVuaXQuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvTW9ja1RyYWMuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvTW9ja0J1aWxkYm90LmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL01vY2tCdWlsZGJvdFF1ZXVlLmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL01vY2tCdWlsZGJvdFF1ZXVlVmlldy5qcyI+PC9z
Y3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9Nb2NrQnVpbGRib3RUZXN0UmVzdWx0
cy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0cy5qcyI+PC9z
Y3JpcHQ+Ci0KLTwvaGVhZD4KLTxib2R5PgotICAgIDxoMSBpZD0icXVuaXQtaGVhZGVyIj5XZWJL
aXQgQm90IFdhdGNoZXIncyBEYXNoYm9hcmQgUVVuaXQgVGVzdCBSdW5uZXI8L2gxPgotICAgIDxo
MiBpZD0icXVuaXQtYmFubmVyIj48L2gyPgotICAgIDxkaXYgaWQ9InF1bml0LXRlc3RydW5uZXIt
dG9vbGJhciI+PC9kaXY+Ci0gICAgPGgyIGlkPSJxdW5pdC11c2VyQWdlbnQiPjwvaDI+Ci0gICAg
PG9sIGlkPSJxdW5pdC10ZXN0cyI+PC9vbD4KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tC
dWlsZGJvdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01v
Y2tCdWlsZGJvdC5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jl
c291cmNlcy9Nb2NrQnVpbGRib3QuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotTW9ja0J1aWxkYm90ID0gZnVuY3Rpb24oKSB7fTsKLQotTW9ja0J1aWxkYm90
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogTW9ja0J1aWxkYm90LAotCi0gICAgYnVp
bGRQYWdlVVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24pCi0gICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5iYXNlVVJMICsgImJ1aWxkZXJzLyIgKyBlbmNvZGVVUklDb21wb25lbnQo
aXRlcmF0aW9uLnF1ZXVlLmlkKSArICIvYnVpbGRzLyIgKyBpdGVyYXRpb24uaWQ7Ci0gICAgfSwK
LQotICAgIGphdmFTY3JpcHRDb3JlVGVzdEZhaWx1cmVzVVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlv
bihpdGVyYXRpb24sIG5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gInJlc291cmNlcy90ZXN0
LWpzYy1yZXN1bHRzLmpzb24iOwotICAgIH0sCi0KLSAgICBqYXZhU2NyaXB0Q29yZVRlc3RTdGRp
b1VybEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uLCBuYW1lKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikgKyAiL3N0
ZXBzLyIgKyBuYW1lICsgIi9sb2dzL3N0ZGlvIjsKLSAgICB9LAotfQpJbmRleDogVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3Jp
cHRzL3Rlc3RzL3Jlc291cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZS5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdFF1ZXVlLmpzCShyZXZpc2lv
biAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdFF1
ZXVlLmpzCShub25leGlzdGVudCkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1Nb2Nr
QnVpbGRib3RRdWV1ZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICBpbmZvID0gewotICAgICAgICBicmFu
Y2hlczogIiIsCi0gICAgICAgIHBsYXRmb3JtOiAiIiwKLSAgICAgICAgZGVidWc6ICIiLAotICAg
ICAgICBidWlsZGVyOiAiIiwKLSAgICAgICAgdGVzdGVyOiAiIiwKLSAgICAgICAgcGVyZm9ybWFu
Y2U6ICIiLAotICAgICAgICBzdGF0aWNBbmFseXplcjogIiIsCi0gICAgICAgIGxlYWtzOiAiIiwK
LSAgICAgICAgYXJjaGl0ZWN0dXJlOiAiIiwKLSAgICAgICAgdGVzdENhdGVnb3J5OiAiIiwKLSAg
ICAgICAgaGVhZGluZzogIiIsCi0gICAgICAgIGNyYXNoZXNPbmx5OiAiIgotICAgIH07Ci0gICAg
QnVpbGRib3RRdWV1ZS5jYWxsKHRoaXMsIG5ldyBNb2NrQnVpbGRib3QoKSwgImlkIiwgaW5mbyk7
Ci19OwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKE1vY2tCdWlsZGJvdFF1
ZXVlKTsKLQotTW9ja0J1aWxkYm90UXVldWUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBNb2NrQnVpbGRib3RRdWV1ZSwKLSAgICBfX3Byb3RvX186IEJ1aWxkYm90UXVldWUucHJvdG90
eXBlCi19CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdFF1
ZXVlVmlldy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01v
Y2tCdWlsZGJvdFF1ZXVlVmlldy5qcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRz
L3Rlc3RzL3Jlc291cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZVZpZXcuanMJKG5vbmV4aXN0ZW50KQpA
QCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLU1vY2tCdWlsZGJvdFF1ZXVlVmlldyA9IGZ1
bmN0aW9uKHF1ZXVlcykKLXsKLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicXVldWUtdmlldyIp
OwotICAgIHRoaXMuZWxlbWVudC5fX3F1ZXVlVmlldyA9IHRoaXM7Ci0KLSAgICB0aGlzLnF1ZXVl
cyA9IHF1ZXVlcyB8fCBbXTsKLQotICAgIEJhc2VPYmplY3QuY2FsbCh0aGlzKTsKLX07Ci0KLUJh
c2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoTW9ja0J1aWxkYm90UXVldWVWaWV3KTsK
LQotTW9ja0J1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
TW9ja0J1aWxkYm90UXVldWVWaWV3LAotICAgIF9fcHJvdG9fXzogQnVpbGRib3RRdWV1ZVZpZXcu
cHJvdG90eXBlLAotCi0gICAgX2xhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb246IGZ1bmN0aW9uKHF1
ZXVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIHJldmlzaW9uOiB7Ci0g
ICAgICAgICAgICAgICAgIm9wZW5Tb3VyY2UiOiAiMzMwMjAiCi0gICAgICAgICAgICB9Ci0gICAg
ICAgIH07Ci0gICAgfQotfTsKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9j
a0J1aWxkYm90VGVzdFJlc3VsdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3Rz
L3Jlc291cmNlcy9Nb2NrQnVpbGRib3RUZXN0UmVzdWx0cy5qcwkocmV2aXNpb24gMjY5MTExKQor
KysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy9Nb2NrQnVpbGRib3RUZXN0UmVzdWx0cy5q
cwkobm9uZXhpc3RlbnQpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1Nb2NrQnVpbGRi
b3RUZXN0UmVzdWx0cyA9IGZ1bmN0aW9uKCkge307Ci0KLU1vY2tCdWlsZGJvdFRlc3RSZXN1bHRz
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMs
Ci0KLSAgICBhZGRKYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlczogZnVuY3Rpb24oZGF0YSkKLSAg
ICB7Ci0gICAgICAgICB0aGlzLnJlZ3Jlc3Npb25zID0gZGF0YS5zdHJlc3NUZXN0RmFpbHVyZXM7
Ci0gICAgfSwKLX07CkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tUcmFj
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja1RyYWMu
anMJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9j
a1RyYWMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1N
b2NrVHJhYyA9IGZ1bmN0aW9uKHByb2plY3RJZGVudGlmaWVyKQotewotICAgIGlmIChwcm9qZWN0
SWRlbnRpZmllcikgewotICAgICAgICB2YXIgb3B0aW9ucyA9IHsgfTsKLSAgICAgICAgb3B0aW9u
c1tUcmFjLlByb2plY3RJZGVudGlmaWVyXSA9IHByb2plY3RJZGVudGlmaWVyOwotICAgICAgICBU
cmFjLmNhbGwodGhpcywgImh0dHBzOi8vdHJhYy53ZWJraXQub3JnLyIsIG9wdGlvbnMpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIFRyYWMuY2FsbCh0aGlzLCAiaHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvIik7Ci0gICAgfQotfTsKLQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhN
b2NrVHJhYyk7Ci0KLU1vY2tUcmFjLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogTW9j
a1RyYWMsCi0gICAgX19wcm90b19fOiBUcmFjLnByb3RvdHlwZSwKLQotICAgIGdldCBvbGRlc3RS
ZWNvcmRlZFJldmlzaW9uTnVtYmVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAiMzMwMTgiOwot
ICAgIH0sCi0KLSAgICBnZXQgbGF0ZXN0UmVjb3JkZWRSZXZpc2lvbk51bWJlcigpCi0gICAgewot
ICAgICAgICByZXR1cm4gIjMzMDIyIjsKLSAgICB9LAotCi0gICAgbG9hZE1vcmVIaXN0b3JpY2Fs
RGF0YTogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotfTsKLQotTW9ja1RyYWMuRVhBTVBMRV9U
UkFDX0NPTU1JVFMgPSBbCi0gICAgewotICAgICAgICAicmV2aXNpb25OdW1iZXIiOiAiMzMwMTgi
LAotICAgICAgICAibGluayI6ICJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMzMw
MTgiLAotICAgICAgICAidGl0bGUiOiB7IGlubmVySFRNTDogImNvbW1pdCBtZXNzYWdlIiB9LAot
ICAgICAgICAiYXV0aG9yIjogImpvaG5Ad2Via2l0Lm9yZyIsCi0gICAgICAgICJkYXRlIjogbmV3
IERhdGUoIjIwMTUtMTEtMTVUMTc6MDU6NDQuMDAwWiIpLAotICAgICAgICAiZGVzY3JpcHRpb24i
OiAiZGVzY3JpcHRpb24iLAotICAgICAgICAiY29udGFpbnNCcmFuY2hMb2NhdGlvbiI6IHRydWUs
Ci0gICAgICAgICJicmFuY2hlcyI6IFsidHJ1bmsiXQotICAgIH0sCi0gICAgewotICAgICAgICAi
cmV2aXNpb25OdW1iZXIiOiAiMzMwMTkiLAotICAgICAgICAibGluayI6ICJodHRwczovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMzMwMTkiLAotICAgICAgICAidGl0bGUiOiB7IGlubmVySFRN
TDogImNvbW1pdCBtZXNzYWdlIiB9LAotICAgICAgICAiYXV0aG9yIjogInBhdWxAd2Via2l0Lm9y
ZyIsCi0gICAgICAgICJkYXRlIjogbmV3IERhdGUoIjIwMTUtMTEtMTZUMDE6MTg6MjMuMDAwWiIp
LAotICAgICAgICAiZGVzY3JpcHRpb24iOiAiZGVzY3JpcHRpb24iLAotICAgICAgICAiY29udGFp
bnNCcmFuY2hMb2NhdGlvbiI6IHRydWUsCi0gICAgICAgICJicmFuY2hlcyI6IFsic29tZU90aGVy
QnJhbmNoIl0KLSAgICB9LAotICAgIHsKLSAgICAgICAgInJldmlzaW9uTnVtYmVyIjogIjMzMDIw
IiwKLSAgICAgICAgImxpbmsiOiAiaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMz
MDIwIiwKLSAgICAgICAgInRpdGxlIjogeyBpbm5lckhUTUw6ICJjb21taXQgbWVzc2FnZSIgfSwK
LSAgICAgICAgImF1dGhvciI6ICJnZW9yZ2VAd2Via2l0Lm9yZyIsCi0gICAgICAgICJkYXRlIjog
bmV3IERhdGUoIjIwMTUtMTEtMTZUMDE6MTk6MjcuMDAwWiIpLAotICAgICAgICAiZGVzY3JpcHRp
b24iOiAiZGVzY3JpcHRpb24iLAotICAgICAgICAiY29udGFpbnNCcmFuY2hMb2NhdGlvbiI6IHRy
dWUsCi0gICAgICAgICJicmFuY2hlcyI6IFsidHJ1bmsiXQotICAgIH0sCi0gICAgewotICAgICAg
ICAicmV2aXNpb25OdW1iZXIiOiAiMzMwMjEiLAotICAgICAgICAibGluayI6ICJodHRwczovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMzMwMjEiLAotICAgICAgICAidGl0bGUiOiB7IGlubmVy
SFRNTDogImNvbW1pdCBtZXNzYWdlIiB9LAotICAgICAgICAiYXV0aG9yIjogInJpbmdvQHdlYmtp
dC5vcmciLAotICAgICAgICAiZGF0ZSI6IG5ldyBEYXRlKCIyMDE1LTExLTE2VDAxOjIwOjU4LjAw
MFoiKSwKLSAgICAgICAgImRlc2NyaXB0aW9uIjogImRlc2NyaXB0aW9uIiwKLSAgICAgICAgImNv
bnRhaW5zQnJhbmNoTG9jYXRpb24iOiB0cnVlLAotICAgICAgICAiYnJhbmNoZXMiOiBbInNvbWVP
dGhlckJyYW5jaCJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAgICJyZXZpc2lvbk51bWJlciI6ICIz
MzAyMiIsCi0gICAgICAgICJsaW5rIjogImh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8zMzAyMiIsCi0gICAgICAgICJ0aXRsZSI6IHsgaW5uZXJIVE1MOiAiY29tbWl0IG1lc3NhZ2Ui
IH0sCi0gICAgICAgICJhdXRob3IiOiAiYm9iQHdlYmtpdC5vcmciLAotICAgICAgICAiZGF0ZSI6
IG5ldyBEYXRlKCIyMDE1LTExLTE2VDAxOjIyOjAxLjAwMFoiKSwKLSAgICAgICAgImRlc2NyaXB0
aW9uIjogImRlc2NyaXB0aW9uIiwKLSAgICAgICAgImNvbnRhaW5zQnJhbmNoTG9jYXRpb24iOiB0
cnVlLAotICAgICAgICAiYnJhbmNoZXMiOiBbInRydW5rIl0KLSAgICB9Ci1dOwotCi1Nb2NrVHJh
Yy5yZWNvcmRlZENvbW1pdEluZGljZXNCeVJldmlzaW9uTnVtYmVyID0gewotICAgIDMzMDE4OiAw
LAotICAgIDMzMDE5OiAxLAotICAgIDMzMDIwOiAyLAotICAgIDMzMDIxOiAzLAotICAgIDMzMDIy
OiA0LAotICAgIDMzMDIzOiA1LAotICAgIDMzMDI0OiA2LAotICAgIDMzMDI1OiA3Ci19OwpJbmRl
eDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy90ZXN0LWZpeHR1cmUtZ2l0LXRyYWMtcnNz
LnhtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3QtZml4
dHVyZS1naXQtdHJhYy1yc3MueG1sCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
dGVzdHMvcmVzb3VyY2VzL3Rlc3QtZml4dHVyZS1naXQtdHJhYy1yc3MueG1sCShub25leGlzdGVu
dCkKQEAgLTEsNzUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+Ci08IS0tCi1Db3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLWFyZSBtZXQ6Ci0xLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLUFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi1CRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLVRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgotCi08cnNz
IHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgdmVyc2lvbj0iMi4w
Ij4KLSAgPGNoYW5uZWw+Ci0gICAgPHRpdGxlPldlYktpdDwvdGl0bGU+Ci0gICAgPGxpbms+aHR0
cHM6Ly90cmFjLndlYmtpdC5vcmcvdGltZWxpbmU8L2xpbms+Ci0gICAgPGRlc2NyaXB0aW9uPlRy
YWMgVGltZWxpbmU8L2Rlc2NyaXB0aW9uPgotICAgIDxsYW5ndWFnZT5lbi1VUzwvbGFuZ3VhZ2U+
Ci0gICAgPGdlbmVyYXRvcj5UcmFjIDAuMTIuMzwvZ2VuZXJhdG9yPgotICAgIDxpbWFnZT4KLSAg
ICAgIDx0aXRsZT5XZWJLaXQ8L3RpdGxlPgotICAgICAgPHVybD5odHRwczovL3RyYWMud2Via2l0
Lm9yZy9jaHJvbWUvc2l0ZS9mYXZpY29uLnBuZzwvdXJsPgotICAgICAgPGxpbms+aHR0cHM6Ly90
cmFjLndlYmtpdC5vcmcvdGltZWxpbmU8L2xpbms+Ci0gICAgPC9pbWFnZT4KLSAgICA8aXRlbT4K
LSAgICAgIDx0aXRsZT5DaGFuZ2VzZXQgWzMzMDI1XTogSXRhIHByb3JzdXMgaW5xdWFtIEFkIGNv
cnB1cyBkaWNlcmVzIHBlcnRpbmVyZSwgc2VkIGVhLCBxdWFlIGRpeGk8L3RpdGxlPgotICAgICAg
PGJyYW5jaGVzPm1hc3Rlciwgc29tZU90aGVyQnJhbmNoPC9icmFuY2hlcz4KLQotICAgICAgICA8
YXV0aG9yPmdlb3JnZUB3ZWJraXQub3JnPC9hdXRob3I+Ci0KLSAgICAgIDxwdWJEYXRlPlR1ZSwg
MjYgSmFuIDIwMTYgMjI6NDg6MTUgR01UPC9wdWJEYXRlPgotICAgICAgPGxpbms+aHR0cHM6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMzMDI1PC9saW5rPgotICAgICAgPGd1aWQgaXNQZXJt
YUxpbms9ImZhbHNlIj5odHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMzMwMjUvMTQ1
Mzg0ODQ5NTMzMjU2OTwvZ3VpZD4KLSAgICAgIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVz
Y3JpcHRpb24+Ci0gICAgICA8Y2F0ZWdvcnk+Y2hhbmdlc2V0PC9jYXRlZ29yeT4KLSAgICA8L2l0
ZW0+Ci0gICAgPGl0ZW0+Ci0gICAgICA8dGl0bGU+Q2hhbmdlc2V0IFszMzAyNF06IEFuIGV1bSBk
aXNjZXJlIGVhIG1hdmlzLCBxdWFlIGN1bSBwbGFuZSBwZXJkaWRpY2VyaXRpIG5paGlsIHNjaWF0
PC90aXRsZT4KLSAgICAgIDxicmFuY2hlcz5tYXN0ZXI8L2JyYW5jaGVzPgotCi0gICAgICAgIDxh
dXRob3I+cGF1bEB3ZWJraXQub3JnPC9hdXRob3I+Ci0KLSAgICAgIDxwdWJEYXRlPlR1ZSwgMjYg
SmFuIDIwMTYgMjI6MjI6MjUgR01UPC9wdWJEYXRlPgotICAgICAgPGxpbms+aHR0cHM6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzMzMDI0PC9saW5rPgotICAgICAgPGd1aWQgaXNQZXJtYUxp
bms9ImZhbHNlIj5odHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMzMwMjQvMTQ1Mzg0
Njk0NTI0NDAwNzwvZ3VpZD4KLSAgICAgIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3Jp
cHRpb24+Ci0gICAgICA8Y2F0ZWdvcnk+Y2hhbmdlc2V0PC9jYXRlZ29yeT4KLSAgICA8L2l0ZW0+
Ci0gICAgPGl0ZW0+Ci0gICAgICA8dGl0bGU+Q2hhbmdlc2V0IFszMzAyM106IExvcmVtIGlwc3Vt
IGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuPC90aXRsZT4KLQot
ICAgICAgICA8YXV0aG9yPmpvaG5Ad2Via2l0Lm9yZzwvYXV0aG9yPgotCi0gICAgICA8cHViRGF0
ZT5UdWUsIDI2IEphbiAyMDE2IDIyOjIyOjE0IEdNVDwvcHViRGF0ZT4KLSAgICAgIDxsaW5rPmh0
dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8zMzAyMzwvbGluaz4KLSAgICAgIDxndWlk
IGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMz
MDIzLzE0NTM4NDY5MzQwMzQ1NTA8L2d1aWQ+Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVzY3JpcHRp
b248L2Rlc2NyaXB0aW9uPgotICAgICAgPGNhdGVnb3J5PmNoYW5nZXNldDwvY2F0ZWdvcnk+Ci0g
ICAgPC9pdGVtPgotICAgPC9jaGFubmVsPgotPC9yc3M+CkluZGV4OiBUb29scy9DSVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVz
dHMvcmVzb3VyY2VzL3Rlc3QtZml4dHVyZS10cmFjLXJzcy54bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy90ZXN0LWZpeHR1cmUtdHJhYy1yc3MueG1sCShyZXZp
c2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3QtZml4dHVy
ZS10cmFjLXJzcy54bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MSArMCwwIEBACi08P3htbCB2ZXJz
aW9uPSIxLjAiPz4KLTwhLS0KLUNvcHlyaWdodCAoQykgMjAxNiBBcHBsZSwgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotYXJlIG1ldDoKLTEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0yLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQot
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi1USEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi1QVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLUJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLUNPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi1TVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLUlOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi1DT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotLS0+Ci0KLTxyc3MgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9l
bGVtZW50cy8xLjEvIiB2ZXJzaW9uPSIyLjAiPgotICA8Y2hhbm5lbD4KLSAgICA8dGl0bGU+V2Vi
S2l0PC90aXRsZT4KLSAgICA8bGluaz5odHRwczovL3RyYWMud2Via2l0Lm9yZy90aW1lbGluZTwv
bGluaz4KLSAgICA8ZGVzY3JpcHRpb24+VHJhYyBUaW1lbGluZTwvZGVzY3JpcHRpb24+Ci0gICAg
PGxhbmd1YWdlPmVuLVVTPC9sYW5ndWFnZT4KLSAgICA8Z2VuZXJhdG9yPlRyYWMgMC4xMi4zPC9n
ZW5lcmF0b3I+Ci0gICAgPGltYWdlPgotICAgICAgPHRpdGxlPldlYktpdDwvdGl0bGU+Ci0gICAg
ICA8dXJsPmh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2Nocm9tZS9zaXRlL2Zhdmljb24ucG5nPC91
cmw+Ci0gICAgICA8bGluaz5odHRwczovL3RyYWMud2Via2l0Lm9yZy90aW1lbGluZTwvbGluaz4K
LSAgICA8L2ltYWdlPgotICAgIDxpdGVtPgotICAgICAgPHRpdGxlPkNoYW5nZXNldCBbMzMwMjVd
OiBJdGEgcHJvcnN1cyBpbnF1YW0gQWQgY29ycHVzIGRpY2VyZXMgcGVydGluZXJlLCBzZWQgZWEs
IHF1YWUgZGl4aTwvdGl0bGU+Ci0gICAgICAKLSAgICAgICAgPGF1dGhvcj5nZW9yZ2VAd2Via2l0
Lm9yZzwvYXV0aG9yPgotCi0gICAgICA8cHViRGF0ZT5UdWUsIDI2IEphbiAyMDE2IDIyOjQ4OjE1
IEdNVDwvcHViRGF0ZT4KLSAgICAgIDxsaW5rPmh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8zMzAyNTwvbGluaz4KLSAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMzMDI1LzE0NTM4NDg0OTUzMzI1Njk8L2d1aWQ+
Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgotICAgICAgPGNh
dGVnb3J5PmNoYW5nZXNldDwvY2F0ZWdvcnk+Ci0gICAgPC9pdGVtPjxpdGVtPgotICAgICAgPHRp
dGxlPkNoYW5nZXNldCBbMzMwMjRdOiBBbiBldW0gZGlzY2VyZSBlYSBtYXZpcywgcXVhZSBjdW0g
cGxhbmUgcGVyZGlkaWNlcml0aSBuaWhpbCBzY2lhdDwvdGl0bGU+Ci0gICAgICAKLSAgICAgICAg
PGF1dGhvcj5wYXVsQHdlYmtpdC5vcmc8L2F1dGhvcj4KLQotICAgICAgPHB1YkRhdGU+VHVlLCAy
NiBKYW4gMjAxNiAyMjoyMjoyNSBHTVQ8L3B1YkRhdGU+Ci0gICAgICA8bGluaz5odHRwczovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMzMwMjQ8L2xpbms+Ci0gICAgICA8Z3VpZCBpc1Blcm1h
TGluaz0iZmFsc2UiPmh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8zMzAyNC8xNDUz
ODQ2OTQ1MjQ0MDA3PC9ndWlkPgotICAgICAgPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNj
cmlwdGlvbj4KLSAgICAgIDxjYXRlZ29yeT5jaGFuZ2VzZXQ8L2NhdGVnb3J5PgotICAgIDwvaXRl
bT48aXRlbT4KLSAgICAgIDx0aXRsZT5DaGFuZ2VzZXQgWzMzMDIzXTogTG9yZW0gaXBzdW0gZG9s
b3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC48L3RpdGxlPgotICAgICAg
Ci0gICAgICAgIDxhdXRob3I+am9obkB3ZWJraXQub3JnPC9hdXRob3I+Ci0KLSAgICAgIDxwdWJE
YXRlPlR1ZSwgMjYgSmFuIDIwMTYgMjI6MjI6MTQgR01UPC9wdWJEYXRlPgotICAgICAgPGxpbms+
aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMzMDIzPC9saW5rPgotICAgICAgPGd1
aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
MzMwMjMvMTQ1Mzg0NjkzNDAzNDU1MDwvZ3VpZD4KLSAgICAgIDxkZXNjcmlwdGlvbj5EZXNjcmlw
dGlvbjwvZGVzY3JpcHRpb24+Ci0gICAgICA8Y2F0ZWdvcnk+Y2hhbmdlc2V0PC9jYXRlZ29yeT4K
LSAgICA8L2l0ZW0+Ci0gICA8L2NoYW5uZWw+Ci08L3Jzcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3QtanNjLXJlc3Vs
dHMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3Qt
anNjLXJlc3VsdHMuanNvbgkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3Rz
L3Jlc291cmNlcy90ZXN0LWpzYy1yZXN1bHRzLmpzb24JKG5vbmV4aXN0ZW50KQpAQCAtMSArMCww
IEBACi17InN0cmVzc1Rlc3RGYWlsdXJlcyI6WyJsb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCIs
ICJjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQiLCAic2VkIGRvIGVpdXNtb2QgdGVtcG9yIGlu
Y2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEiXSwgImFsbEFwaVRlc3Rz
UGFzc2VkIjogdHJ1ZX0KSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdHMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy90ZXN0cy5qcwko
cmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy90ZXN0cy5q
cwkobm9uZXhpc3RlbnQpCkBAIC0xLDQ4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWlmICh3aW5k
b3cudGVzdFJ1bm5lcikgewotICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAg
ICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLVFVbml0LmRvbmUgPSBm
dW5jdGlvbihkZXRhaWxzKSB7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAg
IHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInF1bml0LXRlc3RyZXN1bHQi
KTsKLSAgICAgICAgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnQpOwotICAg
ICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInF1bml0LXVzZXJBZ2VudCIp
OwotICAgICAgICBlbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbWVudCk7Ci0gICAg
ICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9Ci19OwotCi1tb2R1bGUo
IlRyYWMiLCB7Ci0gICAgc2V0dXA6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLnRyYWMgPSBu
ZXcgTW9ja1RyYWMoKTsKLSAgICAgICAgdGhpcy50cmFjV2l0aElkZW50aWZpZXIgPSBuZXcgTW9j
a1RyYWMoIndlYmtpdCIpOwotICAgIH0KLX0pOwotCi10ZXN0KCJfbG9hZGVkIiwgZnVuY3Rpb24o
KQotewotICAgIHRoaXMudHJhYy5yZWNvcmRlZENvbW1pdHMgPSBNb2NrVHJhYy5FWEFNUExFX1RS
QUNfQ09NTUlUUzsKLSAgICB2YXIgY2xpZW50ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAg
Y2xpZW50Lm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvdGVzdC1maXh0dXJlLXRyYWMtcnNzLnhtbCIs
IGZhbHNlKTsKLSAgICBjbGllbnQub25sb2FkID0gZnVuY3Rpb24gKCkgewotICAgICAgICB0aGlz
LnRyYWMuX2xvYWRlZChjbGllbnQucmVzcG9uc2VYTUwpOwotICAgIH0uYmluZCh0aGlzKTsKLSAg
ICBjbGllbnQuc2VuZCgpOwotICAgIHZhciBjb21taXRzID0gdGhpcy50cmFjLnJlY29yZGVkQ29t
bWl0czsKLSAgICBzdHJpY3RFcXVhbChjb21taXRzLmxlbmd0aCwgOCwgInNob3VsZCBoYXZlIDgg
Y29tbWl0cyIpOwotICAgIGZvciAodmFyIGkgPSAxOyBpIDwgY29tbWl0cy5sZW5ndGg7IGkrKykg
ewotICAgICAgICB2YXIgZmlyc3RSZXZpc2lvbiA9IGNvbW1pdHNbaSAtIDFdLnJldmlzaW9uTnVt
YmVyOwotICAgICAgICB2YXIgc2Vjb25kUmV2aXNpb24gPSBjb21taXRzW2ldLnJldmlzaW9uTnVt
YmVyOwotICAgICAgICBzdHJpY3RFcXVhbChzZWNvbmRSZXZpc2lvbiAtIGZpcnN0UmV2aXNpb24s
IDEsICJjb21taXRzIHNob3VsZCBiZSBpbiBvcmRlciAiICsgZmlyc3RSZXZpc2lvbiArICIsICIg
KyBzZWNvbmRSZXZpc2lvbik7Ci0gICAgfQotfSk7Ci0KLXRlc3QoInBhcnNlIGdpdEJyYW5jaGVz
IiwgZnVuY3Rpb24oKQotewotICAgIHZhciBjbGllbnQgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsK
LSAgICBjbGllbnQub3BlbigiR0VUIiwgInJlc291cmNlcy90ZXN0LWZpeHR1cmUtZ2l0LXRyYWMt
cnNzLnhtbCIsIGZhbHNlKTsKLSAgICBjbGllbnQub25sb2FkID0gZnVuY3Rpb24gKCkgewotICAg
ICAgICB0aGlzLnRyYWMuX2xvYWRlZChjbGllbnQucmVzcG9uc2VYTUwpOwotICAgIH0uYmluZCh0
aGlzKTsKLSAgICBjbGllbnQuc2VuZCgpOwotICAgIHZhciBjb21taXRzID0gdGhpcy50cmFjLnJl
Y29yZGVkQ29tbWl0czsKLSAgICBzdHJpY3RFcXVhbChjb21taXRzLmxlbmd0aCwgMywgInNob3Vs
ZCBoYXZlIDMgY29tbWl0cyIpOwotICAgIHN0cmljdEVxdWFsKGNvbW1pdHNbMF0uYnJhbmNoZXMu
bGVuZ3RoLCAwLCAic2hvdWxkIGhhdmUgbm8gYnJhbmNoZXMiKTsKLSAgICBzdHJpY3RFcXVhbChj
b21taXRzWzFdLmJyYW5jaGVzLmxlbmd0aCwgMSwgInNob3VsZCBoYXZlIG9uZSBicmFuY2giKTsK
LSAgICBzdHJpY3RFcXVhbChjb21taXRzWzFdLmJyYW5jaGVzLmluY2x1ZGVzKCJtYXN0ZXIiKSwg
dHJ1ZSwgInNob3VsZCBjb250YWluIGJyYW5jaCBtYXN0ZXIiKTsKLSAgICBzdHJpY3RFcXVhbChj
b21taXRzWzJdLmJyYW5jaGVzLmxlbmd0aCwgMiwgInNob3VsZCBoYXZlIHR3byBicmFuY2hlcyIp
OwotICAgIHN0cmljdEVxdWFsKGNvbW1pdHNbMl0uYnJhbmNoZXMuaW5jbHVkZXMoIm1hc3RlciIp
LCB0cnVlLCAic2hvdWxkIGNvbnRhaW4gYnJhbmNoIG1hc3RlciIpOwotICAgIHN0cmljdEVxdWFs
KGNvbW1pdHNbMl0uYnJhbmNoZXMuaW5jbHVkZXMoInNvbWVPdGhlckJyYW5jaCIpLCB0cnVlLCAi
c2hvdWxkIGNvbnRhaW4gYnJhbmNoIHNvbWVPdGhlckJyYW5jaCIpOwotfSk7Ci0KLXRlc3QoIl9w
YXJzZVJldmlzaW9uRnJvbVVSTCIsIGZ1bmN0aW9uKCkKLXsKLSAgICBzdHJpY3RFcXVhbCh0aGlz
LnRyYWMuX3BhcnNlUmV2aXNpb25Gcm9tVVJMKCJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMTkwNDk3IiksICIxOTA0OTciLCAiU3VidmVyc2lvbiIpOwotICAgIHN0cmljdEVxdWFs
KHRoaXMudHJhYy5fcGFyc2VSZXZpc2lvbkZyb21VUkwoImh0dHA6Ly90cmFjLmZvb2Jhci5jb20v
cmVwb3NpdG9yeS9jaGFuZ2VzZXQvNzUzODgvcHJvamVjdCIpLCAiNzUzODgiLCAiU3VidmVyc2lv
biB3aXRoIHN1ZmZpeCIpOwotICAgIHN0cmljdEVxdWFsKHRoaXMudHJhYy5fcGFyc2VSZXZpc2lv
bkZyb21VUkwoImh0dHBzOi8vZ2l0LmZvb2Jhci5jb20vdHJhYy9XaGF0ZXZlci5naXQvY2hhbmdl
c2V0LzBlNDk4ZGI1ZDhlNWI1YTM0MjYzMSIpLCAiMGU0OThkYjVkOGU1YjVhMzQyNjMxIiwgIkdp
dCIpOwotfSk7Ci0KLXRlc3QoIm5leHRSZXZpc2lvbiIsIGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlz
LnRyYWMucmVjb3JkZWRDb21taXRzID0gTW9ja1RyYWMuRVhBTVBMRV9UUkFDX0NPTU1JVFM7Ci0g
ICAgdGhpcy50cmFjLnJlY29yZGVkQ29tbWl0SW5kaWNlc0J5UmV2aXNpb25OdW1iZXIgPSBNb2Nr
VHJhYy5yZWNvcmRlZENvbW1pdEluZGljZXNCeVJldmlzaW9uTnVtYmVyOwotICAgIHN0cmljdEVx
dWFsKHRoaXMudHJhYy5uZXh0UmV2aXNpb24oInRydW5rIiwgIjMzMDIwIiksICIzMzAyMiIsICJu
ZXh0UmV2aXNpb24gc2FtZSBicmFuY2giKTsKLSAgICBzdHJpY3RFcXVhbCh0aGlzLnRyYWMubmV4
dFJldmlzaW9uKCJ0cnVuayIsICIzMzAxOSIpLCAiMzMwMjAiLCAibmV4dFJldmlzaW9uIGRpZmZl
cmVudCBicmFuY2giKTsKLX0pOwotCi10ZXN0KCJpbmRleE9mUmV2aXNpb24iLCBmdW5jdGlvbigp
Ci17Ci0gICAgdGhpcy50cmFjLnJlY29yZGVkQ29tbWl0cyA9IE1vY2tUcmFjLkVYQU1QTEVfVFJB
Q19DT01NSVRTOwotICAgIHRoaXMudHJhYy5yZWNvcmRlZENvbW1pdEluZGljZXNCeVJldmlzaW9u
TnVtYmVyID0gTW9ja1RyYWMucmVjb3JkZWRDb21taXRJbmRpY2VzQnlSZXZpc2lvbk51bWJlcjsK
LSAgICBzdHJpY3RFcXVhbCh0aGlzLnRyYWMuaW5kZXhPZlJldmlzaW9uKCIzMzAyMCIpLCAyLCAi
aW5kZXhPZlJldmlzaW9uIik7Ci19KTsKLQotdGVzdCgiY29tbWl0c09uQnJhbmNoTGF0ZXJUaGFu
UmV2aXNpb24iLCBmdW5jdGlvbigpCi17Ci0gICAgdGhpcy50cmFjLnJlY29yZGVkQ29tbWl0cyA9
IE1vY2tUcmFjLkVYQU1QTEVfVFJBQ19DT01NSVRTOwotICAgIHRoaXMudHJhYy5yZWNvcmRlZENv
bW1pdEluZGljZXNCeVJldmlzaW9uTnVtYmVyID0gTW9ja1RyYWMucmVjb3JkZWRDb21taXRJbmRp
Y2VzQnlSZXZpc2lvbk51bWJlcjsKLSAgICB2YXIgY29tbWl0cyA9IHRoaXMudHJhYy5jb21taXRz
T25CcmFuY2hMYXRlclRoYW5SZXZpc2lvbigidHJ1bmsiLCAiMzMwMjAiKTsKLSAgICBlcXVhbChj
b21taXRzLmxlbmd0aCwgMSwgImdyZWF0ZXIgdGhhbiAzMzAyMCIpOwotfSk7Ci0KLXRlc3QoImNv
bW1pdHNPbkJyYW5jaExhdGVyVGhhblJldmlzaW9uIG5vIGNvbW1pdHMiLCBmdW5jdGlvbigpCi17
Ci0gICAgdGhpcy50cmFjLnJlY29yZGVkQ29tbWl0cyA9IE1vY2tUcmFjLkVYQU1QTEVfVFJBQ19D
T01NSVRTOwotICAgIHRoaXMudHJhYy5yZWNvcmRlZENvbW1pdEluZGljZXNCeVJldmlzaW9uTnVt
YmVyID0gTW9ja1RyYWMucmVjb3JkZWRDb21taXRJbmRpY2VzQnlSZXZpc2lvbk51bWJlcjsKLSAg
ICB2YXIgY29tbWl0cyA9IHRoaXMudHJhYy5jb21taXRzT25CcmFuY2hMYXRlclRoYW5SZXZpc2lv
bigic29tZU90aGVyQnJhbmNoIiwgIjMzMDIxIik7Ci0gICAgZXF1YWwoY29tbWl0cy5sZW5ndGgs
IDAsICJncmVhdGVyIHRoYW4gMzMwMjEiKTsKLX0pOwotCi10ZXN0KCJjb21taXRzT25CcmFuY2hJ
blJldmlzaW9uUmFuZ2UiLCBmdW5jdGlvbigpCi17Ci0gICAgdGhpcy50cmFjLnJlY29yZGVkQ29t
bWl0cyA9IE1vY2tUcmFjLkVYQU1QTEVfVFJBQ19DT01NSVRTOwotICAgIHRoaXMudHJhYy5yZWNv
cmRlZENvbW1pdEluZGljZXNCeVJldmlzaW9uTnVtYmVyID0gTW9ja1RyYWMucmVjb3JkZWRDb21t
aXRJbmRpY2VzQnlSZXZpc2lvbk51bWJlcjsKLSAgICB2YXIgY29tbWl0cyA9IHRoaXMudHJhYy5j
b21taXRzT25CcmFuY2hJblJldmlzaW9uUmFuZ2UoInRydW5rIiwgIjMzMDIwIiwgIjMzMDIyIik7
Ci0gICAgZXF1YWwoY29tbWl0cy5sZW5ndGgsIDIsICJpbiByYW5nZSAzMzAyMCwgMzMwMjIiKTsK
LX0pOwotCi10ZXN0KCJyZXZpc2lvblVSTCIsIGZ1bmN0aW9uKCkKLXsKLSAgICBzdHJpY3RFcXVh
bCh0aGlzLnRyYWMucmV2aXNpb25VUkwoIjMzMDIwIiksICJodHRwczovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMzMwMjAiLCAiY2hhbmdlc2V0IFVSTCBtYXRjaGVzIGZvciAzMzAyMCIpOwot
ICAgIHN0cmljdEVxdWFsKHRoaXMudHJhYy5yZXZpc2lvblVSTCgiMGU0OThkYjVkOGU1YjVhMzQy
NjMxIiksICJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMGU0OThkYjVkOGU1YjVh
MzQyNjMxIiwgImNoYW5nZXNldCBVUkwgbWF0Y2hlcyBmb3IgMGU0OThkYjVkOGU1YjVhMzQyNjMx
Iik7Ci19KTsKLQotdGVzdCgicmV2aXNpb25VUkwgd2l0aCBUcmFjIElkZW50aWZpZXIiLCBmdW5j
dGlvbigpCi17Ci0gICAgc3RyaWN0RXF1YWwodGhpcy50cmFjV2l0aElkZW50aWZpZXIucmV2aXNp
b25VUkwoIjMzMDIwIiksICJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMzMwMjAv
d2Via2l0IiwgImNoYW5nZXNldCBVUkwgbWF0Y2hlcyBmb3IgMzMwMjAiKTsKLSAgICBzdHJpY3RF
cXVhbCh0aGlzLnRyYWNXaXRoSWRlbnRpZmllci5yZXZpc2lvblVSTCgiMGU0OThkYjVkOGU1YjVh
MzQyNjMxIiksICJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMGU0OThkYjVkOGU1
YjVhMzQyNjMxL3dlYmtpdCIsICJjaGFuZ2VzZXQgVVJMIG1hdGNoZXMgZm9yIDBlNDk4ZGI1ZDhl
NWI1YTM0MjYzMSIpOwotfSk7Ci0KLXRlc3QoIl94bWxUaW1lbGluZVVSTCIsIGZ1bmN0aW9uKCkK
LXsKLSAgICB2YXIgYmVmb3JlID0gbmV3IERhdGUoIjEvMS8yMDE3Iik7Ci0gICAgdmFyIGFmdGVy
ID0gbmV3IERhdGUoIjEvMi8yMDE3Iik7Ci0KLSAgICBzdHJpY3RFcXVhbCh0aGlzLnRyYWMuX3ht
bFRpbWVsaW5lVVJMKGJlZm9yZSwgYmVmb3JlKSwgImh0dHBzOi8vdHJhYy53ZWJraXQub3JnL3Rp
bWVsaW5lP2NoYW5nZXNldD1vbiZmb3JtYXQ9cnNzJm1heD0wJmZyb209MjAxNy0wMS0wMSZkYXlz
YmFjaz0wIik7Ci0gICAgc3RyaWN0RXF1YWwodGhpcy50cmFjLl94bWxUaW1lbGluZVVSTChiZWZv
cmUsIGFmdGVyKSwgImh0dHBzOi8vdHJhYy53ZWJraXQub3JnL3RpbWVsaW5lP2NoYW5nZXNldD1v
biZmb3JtYXQ9cnNzJm1heD0wJmZyb209MjAxNy0wMS0wMiZkYXlzYmFjaz0xIik7Ci19KTsKLQot
dGVzdCgiX3htbFRpbWVsaW5lVVJMIHdpdGggVHJhYyBJZGVudGlmaWVyIiwgZnVuY3Rpb24oKQot
ewotICAgIHZhciBiZWZvcmUgPSBuZXcgRGF0ZSgiMS8xLzIwMTciKTsKLSAgICB2YXIgYWZ0ZXIg
PSBuZXcgRGF0ZSgiMS8yLzIwMTciKTsKLQotICAgIHN0cmljdEVxdWFsKHRoaXMudHJhY1dpdGhJ
ZGVudGlmaWVyLl94bWxUaW1lbGluZVVSTChiZWZvcmUsIGJlZm9yZSksICJodHRwczovL3RyYWMu
d2Via2l0Lm9yZy90aW1lbGluZT9yZXBvLXdlYmtpdD1vbiZmb3JtYXQ9cnNzJm1heD0wJmZyb209
MjAxNy0wMS0wMSZkYXlzYmFjaz0wIik7Ci0gICAgc3RyaWN0RXF1YWwodGhpcy50cmFjV2l0aElk
ZW50aWZpZXIuX3htbFRpbWVsaW5lVVJMKGJlZm9yZSwgYWZ0ZXIpLCAiaHR0cHM6Ly90cmFjLndl
YmtpdC5vcmcvdGltZWxpbmU/cmVwby13ZWJraXQ9b24mZm9ybWF0PXJzcyZtYXg9MCZmcm9tPTIw
MTctMDEtMDImZGF5c2JhY2s9MSIpOwotfSk7Ci0KLW1vZHVsZSgiQnVpbGRCb3RRdWV1ZVZpZXci
LCB7Ci0gICAgc2V0dXA6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLnRyYWMgPSBuZXcgTW9j
a1RyYWMoKTsKLSAgICAgICAgdGhpcy50cmFjLnJlY29yZGVkQ29tbWl0cyA9IE1vY2tUcmFjLkVY
QU1QTEVfVFJBQ19DT01NSVRTOwotICAgICAgICB0aGlzLnRyYWMucmVjb3JkZWRDb21taXRJbmRp
Y2VzQnlSZXZpc2lvbk51bWJlciA9IE1vY2tUcmFjLnJlY29yZGVkQ29tbWl0SW5kaWNlc0J5UmV2
aXNpb25OdW1iZXI7Ci0gICAgICAgIHRoaXMucXVldWUgPSBuZXcgTW9ja0J1aWxkYm90UXVldWUo
KTsKLSAgICAgICAgdGhpcy50cnVua0JyYW5jaCA9IHsKLSAgICAgICAgICAgIG5hbWU6ICJ0cnVu
ayIsCi0gICAgICAgICAgICByZXBvc2l0b3J5OiB7Ci0gICAgICAgICAgICAgICAgbmFtZTogIm9w
ZW5Tb3VyY2UiLAotICAgICAgICAgICAgICAgIHRyYWM6IHRoaXMudHJhYywKLSAgICAgICAgICAg
ICAgICBpc1NWTjogdHJ1ZSwKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgdGhp
cy5xdWV1ZS5icmFuY2hlcyA9IFt0aGlzLnRydW5rQnJhbmNoXTsKLSAgICAgICAgdGhpcy52aWV3
ID0gbmV3IE1vY2tCdWlsZGJvdFF1ZXVlVmlldyhbdGhpcy5xdWV1ZV0pOwotICAgICAgICB0aGlz
LnZpZXcuX2xhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24gPSBmdW5jdGlvbihxdWV1ZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgdmFyIGl0ZXJhdGlvbiA9IHsKLSAgICAgICAgICAgICAgICByZXZp
c2lvbjogeyAib3BlblNvdXJjZSI6ICIzMzAyMSIgfSwKLSAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICByZXR1cm4gaXRlcmF0aW9uOwotICAgICAgICB9Ci0gICAgfQotfSk7Ci0KLXZhciBzZXR0
aW5ncyA9IG5ldyBTZXR0aW5nczsKLXRlc3QoIl9hcHBlbmRQZW5kaW5nUmV2aXNpb25Db3VudCIs
IGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlzLnZpZXcuX2FwcGVuZFBlbmRpbmdSZXZpc2lvbkNvdW50
KHRoaXMucXVldWUsIHRoaXMudmlldy5fbGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlvbik7Ci0gICAg
dmFyIHJldmlzaW9uc0JlaGluZCA9IHRoaXMudmlldy5lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoIm1lc3NhZ2UiKVswXS5pbm5lckhUTUwubWF0Y2goLy4qKFxkKykgcmV2aXNpb24ofHMp
IGJlaGluZC8pWzFdOwotICAgIHN0cmljdEVxdWFsKHJldmlzaW9uc0JlaGluZCwgIjEiLCAiYXNz
ZXJ0IHJldmlzaW9ucyBiZWhpbmQiKTsKLX0pOwotCi10ZXN0KCJfcG9wb3ZlckxpbmVzRm9yQ29t
bWl0UmFuZ2UiLCBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGxpbmVzID0gdGhpcy52aWV3Ll9wb3Bv
dmVyTGluZXNGb3JDb21taXRSYW5nZSh0aGlzLnRyYWMsIHRoaXMudHJ1bmtCcmFuY2gsICIzMzAx
OCIsICIzMzAyMCIpOwotICAgIHN0cmljdEVxdWFsKGxpbmVzLmxlbmd0aCwgMiwgImhhcyAyIGxp
bmVzIik7Ci19KTsKLQotdGVzdCgiX3ByZXNlbnRQb3BvdmVyRm9yUGVuZGluZ0NvbW1pdHMiLCBm
dW5jdGlvbigpCi17Ci0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICB2YXIgcG9wb3ZlciA9IG5ldyBEYXNoYm9hcmQuUG9wb3ZlcigpOwotICAgIHRo
aXMudmlldy5fcHJlc2VudFBvcG92ZXJGb3JQZW5kaW5nQ29tbWl0cyh0aGlzLnZpZXcuX2xhdGVz
dFByb2R1Y3RpdmVJdGVyYXRpb24sIGVsZW1lbnQsIHBvcG92ZXIsIHRoaXMucXVldWUpOwotICAg
IHZhciBub2RlTGlzdCA9IHBvcG92ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgi
cGVuZGluZy1jb21taXQiKTsKLSAgICBzdHJpY3RFcXVhbChub2RlTGlzdC5sZW5ndGgsIDEsICJo
YXMgMSBwZW5kaW5nIGNvbW1pdCIpOwotfSk7Ci0KLXRlc3QoIl9wcmVzZW50UG9wb3ZlckZvclBl
bmRpbmdDb21taXRzIG5vIHBlbmRpbmcgY29tbWl0cyIsIGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlz
LnNvbWVPdGhlckJyYW5jaCA9IHsKLSAgICAgICAgbmFtZTogInNvbWVPdGhlckJyYW5jaCIsCi0g
ICAgICAgIHJlcG9zaXRvcnk6IHsKLSAgICAgICAgICAgIG5hbWU6ICJvcGVuU291cmNlIiwKLSAg
ICAgICAgICAgIHRyYWM6IHRoaXMudHJhYywKLSAgICAgICAgICAgIGlzU1ZOOiB0cnVlLAotICAg
ICAgICB9Ci0gICAgfTsKLSAgICB0aGlzLnF1ZXVlLmJyYW5jaGVzID0gW3RoaXMuc29tZU90aGVy
QnJhbmNoXTsKLSAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwotICAgIHZhciBwb3BvdmVyID0gbmV3IERhc2hib2FyZC5Qb3BvdmVyKCk7Ci0gICAgdGhpcy52
aWV3Ll9wcmVzZW50UG9wb3ZlckZvclBlbmRpbmdDb21taXRzKHRoaXMudmlldy5fbGF0ZXN0UHJv
ZHVjdGl2ZUl0ZXJhdGlvbiwgZWxlbWVudCwgcG9wb3ZlciwgdGhpcy5xdWV1ZSk7Ci0gICAgdmFy
IG5vZGVMaXN0ID0gcG9wb3Zlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJwZW5k
aW5nLWNvbW1pdCIpOwotICAgIHN0cmljdEVxdWFsKG5vZGVMaXN0Lmxlbmd0aCwgMCwgImhhcyAw
IHBlbmRpbmcgY29tbWl0cyIpOwotfSk7Ci0KLXRlc3QoIl9wcmVzZW50UG9wb3ZlckZvclJldmlz
aW9uUmFuZ2UiLCBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKLSAgICB2YXIgcG9wb3ZlciA9IG5ldyBEYXNoYm9hcmQuUG9wb3Zl
cigpOwotICAgIHZhciBjb250ZXh0ID0gewotICAgICAgICB0cmFjOiB0aGlzLnRyYWMsCi0gICAg
ICAgIGJyYW5jaDogdGhpcy50cnVua0JyYW5jaCwKLSAgICAgICAgZmlyc3RSZXZpc2lvbjogIjMz
MDE4IiwKLSAgICAgICAgbGFzdFJldmlzaW9uOiAiMzMwMjAiCi0gICAgfTsKLSAgICB0aGlzLnZp
ZXcuX3ByZXNlbnRQb3BvdmVyRm9yUmV2aXNpb25SYW5nZShlbGVtZW50LCBwb3BvdmVyLCBjb250
ZXh0KTsKLSAgICB2YXIgbm9kZUxpc3QgPSBwb3BvdmVyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlD
bGFzc05hbWUoInBlbmRpbmctY29tbWl0Iik7Ci0gICAgc3RyaWN0RXF1YWwobm9kZUxpc3QubGVu
Z3RoLCAyLCAiaGFzIDIgY29tbWl0cyIpOwotfSk7Ci0KLXRlc3QoIl9wcmVzZW50UG9wb3ZlckZv
clJldmlzaW9uUmFuZ2Ugbm8gY29tbWl0cyIsIGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgZWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHZhciBwb3BvdmVyID0gbmV3
IERhc2hib2FyZC5Qb3BvdmVyKCk7Ci0gICAgdmFyIGNvbnRleHQgPSB7Ci0gICAgICAgIHRyYWM6
IHRoaXMudHJhYywKLSAgICAgICAgYnJhbmNoOiB0aGlzLnRydW5rQnJhbmNoLAotICAgICAgICBm
aXJzdFJldmlzaW9uOiAiMzMwMjAiLAotICAgICAgICBsYXN0UmV2aXNpb246ICIzMzAxOCIKLSAg
ICB9OwotICAgIHRoaXMudmlldy5fcHJlc2VudFBvcG92ZXJGb3JSZXZpc2lvblJhbmdlKGVsZW1l
bnQsIHBvcG92ZXIsIGNvbnRleHQpOwotICAgIHZhciBub2RlTGlzdCA9IHBvcG92ZXIuX2VsZW1l
bnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgicGVuZGluZy1jb21taXQiKTsKLSAgICBzdHJpY3RF
cXVhbChub2RlTGlzdC5sZW5ndGgsIDAsICJoYXMgMCBjb21taXRzIik7Ci19KTsKLQotdGVzdCgi
X3JldmlzaW9uQ29udGVudFdpdGhQb3BvdmVyRm9ySXRlcmF0aW9uIiwgZnVuY3Rpb24oKQotewot
ICAgIHZhciBmaW5pc2hlZCA9IGZhbHNlOwotICAgIHZhciBpdGVyYXRpb24gPSBuZXcgQnVpbGRi
b3RJdGVyYXRpb24odGhpcy5xdWV1ZSwgMSwgZmluaXNoZWQpOwotICAgIGl0ZXJhdGlvbi5yZXZp
c2lvbiA9IHsgIm9wZW5Tb3VyY2UiOiAiMzMwMTgiIH07Ci0gICAgdmFyIHByZXZpb3VzSXRlcmF0
aW9uID0gbnVsbDsKLSAgICB2YXIgY29udGVudCA9IHRoaXMudmlldy5fcmV2aXNpb25Db250ZW50
V2l0aFBvcG92ZXJGb3JJdGVyYXRpb24oaXRlcmF0aW9uLCBwcmV2aW91c0l0ZXJhdGlvbiwgdGhp
cy50cnVua0JyYW5jaCk7Ci0gICAgc3RyaWN0RXF1YWwoY29udGVudC5pbm5lckhUTUwsICJyMzMw
MTgiLCAic2hvdWxkIGhhdmUgY29ycmVjdCByZXZpc2lvbiBudW1iZXIuIik7Ci0gICAgc3RyaWN0
RXF1YWwoY29udGVudC5jbGFzc0xpc3QuY29udGFpbnMoInJldmlzaW9uLW51bWJlciIpLCB0cnVl
LCAic2hvdWxkIGhhdmUgY2xhc3MgJ3JldmlzaW9uLW51bWJlcicuIik7Ci0gICAgc3RyaWN0RXF1
YWwoY29udGVudC5jbGFzc0xpc3QuY29udGFpbnMoInBvcG92ZXItdHJhY2tpbmciKSwgZmFsc2Us
ICJzaG91bGQgbm90IGhhdmUgY2xhc3MgJ3BvcG92ZXItdHJhY2tpbmcnLiIpOwotfSk7Ci0KLXRl
c3QoIl9yZXZpc2lvbkNvbnRlbnRXaXRoUG9wb3ZlckZvckl0ZXJhdGlvbiBoYXMgcHJldmlvdXNJ
dGVyYXRpb24iLCBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGZpbmlzaGVkID0gZmFsc2U7Ci0gICAg
dmFyIGl0ZXJhdGlvbiA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAyLCBmaW5p
c2hlZCk7Ci0gICAgaXRlcmF0aW9uLnJldmlzaW9uID0geyAib3BlblNvdXJjZSI6ICIzMzAyMiIg
fTsKLSAgICB2YXIgcHJldmlvdXNJdGVyYXRpb24gPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhp
cy5xdWV1ZSwgMSwgZmluaXNoZWQpOwotICAgIHByZXZpb3VzSXRlcmF0aW9uLnJldmlzaW9uID0g
eyAib3BlblNvdXJjZSI6ICIzMzAxOCIgfTsKLSAgICB2YXIgY29udGVudCA9IHRoaXMudmlldy5f
cmV2aXNpb25Db250ZW50V2l0aFBvcG92ZXJGb3JJdGVyYXRpb24oaXRlcmF0aW9uLCBwcmV2aW91
c0l0ZXJhdGlvbiwgdGhpcy50cnVua0JyYW5jaCk7Ci0gICAgc3RyaWN0RXF1YWwoY29udGVudC5p
bm5lckhUTUwsICJyMzMwMjIiLCAic2hvdWxkIGhhdmUgY29ycmVjdCByZXZpc2lvbiBudW1iZXIu
Iik7Ci0gICAgc3RyaWN0RXF1YWwoY29udGVudC5jbGFzc0xpc3QuY29udGFpbnMoInJldmlzaW9u
LW51bWJlciIpLCB0cnVlLCAic2hvdWxkIGhhdmUgY2xhc3MgJ3JldmlzaW9uLW51bWJlcicuIik7
Ci0gICAgc3RyaWN0RXF1YWwoY29udGVudC5jbGFzc0xpc3QuY29udGFpbnMoInBvcG92ZXItdHJh
Y2tpbmciKSwgdHJ1ZSwgInNob3VsZCBoYXZlIGNsYXNzICdwb3BvdmVyLXRyYWNraW5nJy4iKTsK
LSAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHZh
ciBwb3BvdmVyID0gbmV3IERhc2hib2FyZC5Qb3BvdmVyKCk7Ci0gICAgdGhpcy52aWV3Ll9wcmVz
ZW50UG9wb3ZlckZvclJldmlzaW9uUmFuZ2UoZWxlbWVudCwgcG9wb3ZlciwgY29udGVudC5wb3Bv
dmVyVHJhY2tlci5fY29udGV4dCk7Ci0gICAgdmFyIG5vZGVMaXN0ID0gcG9wb3Zlci5fZWxlbWVu
dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJwZW5kaW5nLWNvbW1pdCIpOwotICAgIHN0cmljdEVx
dWFsKG5vZGVMaXN0Lmxlbmd0aCwgMiwgImhhcyAyIGNvbW1pdHMiKTsKLX0pOwotCi10ZXN0KCJf
Zm9ybWF0UmV2aXNpb25Gb3JEaXNwbGF5IFN1YnZlcnNpb24iLCBmdW5jdGlvbigpCi17Ci0gICAg
dmFyIHJlcG9zaXRvcnkgPSB0aGlzLnRydW5rQnJhbmNoLnJlcG9zaXRvcnk7Ci0gICAgcmVwb3Np
dG9yeS5pc1NWTiA9IHRydWU7Ci0gICAgcmVwb3NpdG9yeS5pc0dpdCA9IGZhbHNlOwotICAgIHN0
cmljdEVxdWFsKHRoaXMudmlldy5fZm9ybWF0UmV2aXNpb25Gb3JEaXNwbGF5KCIzMzAxOCIsIHJl
cG9zaXRvcnkpLCAicjMzMDE4IiwgIlNob3VsZCBiZSByMzMwMTgiKQotfSk7Ci0KLXRlc3QoIl9m
b3JtYXRSZXZpc2lvbkZvckRpc3BsYXkgR2l0IiwgZnVuY3Rpb24oKQotewotICAgIHZhciByZXBv
c2l0b3J5ID0gdGhpcy50cnVua0JyYW5jaC5yZXBvc2l0b3J5OwotICAgIHJlcG9zaXRvcnkuaXNT
Vk4gPSBmYWxzZTsKLSAgICByZXBvc2l0b3J5LmlzR2l0ID0gdHJ1ZTsKLSAgICBzdHJpY3RFcXVh
bCh0aGlzLnZpZXcuX2Zvcm1hdFJldmlzaW9uRm9yRGlzcGxheSgiMGU0OThkYjVkOGU1YjVhMzQy
NjMxIiwgcmVwb3NpdG9yeSksICIwZTQ5OGRiIiwgIlNob3VsZCBiZSAwZTQ5OGRiIik7Ci19KTsK
LQotdGVzdCgiX3BvcG92ZXJDb250ZW50Rm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMg
bG9hZCBmYWlsdXJlIFVJIHRlc3QiLCBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGZpbmlzaGVkID0g
ZmFsc2U7Ci0gICAgdmFyIGl0ZXJhdGlvbiA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1
ZXVlLCAxLCBmaW5pc2hlZCk7Ci0gICAgaXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJlc3Vs
dHMgPSBuZXcgTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMoKTsKLQotICAgIHZhciB2aWV3ID0gbmV3
IEJ1aWxkYm90UXVldWVWaWV3KCk7Ci0gICAgdmFyIGNvbnRlbnQgPSB2aWV3Ll9wb3BvdmVyQ29u
dGVudEZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25zKGl0ZXJhdGlvbik7Ci0KLSAgICB2
YXIgbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnQgPSAyOwotICAgIHN0cmljdEVxdWFs
KGNvbnRlbnQuY2hpbGROb2Rlcy5sZW5ndGgsIDEgKyBudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVy
Q29udGVudCk7Ci0gICAgc3RyaWN0RXF1YWwoY29udGVudC5jaGlsZE5vZGVzW251bUNoaWxkcmVu
SW5FbXB0eVBvcG92ZXJDb250ZW50XS5jbGFzc05hbWUsICJsb2FkaW5nLWZhaWx1cmUiLCAiUG9w
b3ZlciBmb3IgbG9hZGluZyBmYWlsdXJlIG11c3QgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgY2xhc3Mi
KTsKLSAgICBzdHJpY3RFcXVhbChjb250ZW50LmNoaWxkTm9kZXNbbnVtQ2hpbGRyZW5JbkVtcHR5
UG9wb3ZlckNvbnRlbnRdLnRleHRDb250ZW50LCAiVGVzdCByZXN1bHRzIGNvdWxkblx1MjAxOXQg
YmUgbG9hZGVkIiwgIlBvcG92ZXIgZm9yIGxvYWRpbmcgZmFpbHVyZSBtdXN0IHVzZSB0aGUgY29y
cmVjdCB0ZXh0Iik7Ci19KTsKLQotdGVzdCgiX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENv
cmVUZXN0UmVncmVzc2lvbnMgaW5jbHVkaW5nIGxvYWRpbmciLCBmdW5jdGlvbigpCi17Ci0gICAg
dmFyIGZpbmlzaGVkID0gZmFsc2U7Ci0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKLSAgICB2YXIgcG9wb3ZlciA9IG5ldyBEYXNoYm9hcmQuUG9wb3Zlcigp
OwotICAgIHZhciBpdGVyYXRpb24gPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwg
MSwgZmluaXNoZWQpOwotICAgIGl0ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzID0g
bmV3IE1vY2tCdWlsZGJvdFRlc3RSZXN1bHRzKCk7Ci0KLSAgICB2YXIgdmlldyA9IG5ldyBCdWls
ZGJvdFF1ZXVlVmlldygpOwotICAgIHZpZXcuX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENv
cmVUZXN0UmVncmVzc2lvbnMoImpzY29yZS10ZXN0IiwgZWxlbWVudCwgcG9wb3ZlciwgaXRlcmF0
aW9uKTsKLQotICAgIEpTT04ubG9hZCgicmVzb3VyY2VzL3Rlc3QtanNjLXJlc3VsdHMuanNvbiIs
IGZ1bmN0aW9uKGRhdGEpCi0gICAgewotICAgICAgICB2YXIgdGVzdFJlZ3Jlc3Npb25zID0gZGF0
YS5zdHJlc3NUZXN0RmFpbHVyZXM7Ci0gICAgICAgIHZhciBudW1DaGlsZHJlbkluRW1wdHlQb3Bv
dmVyQ29udGVudCA9IDI7Ci0gICAgICAgIHN0cmljdEVxdWFsKHBvcG92ZXIuX2NvbnRlbnQuY2hp
bGROb2Rlcy5sZW5ndGggLSBudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudCwKLSAgICAg
ICAgICAgIHRlc3RSZWdyZXNzaW9ucy5sZW5ndGgsCi0gICAgICAgICAgICAiTnVtYmVyIG9mIGZh
aWx1cmVzIGluIHBvcG92ZXIgbXVzdCBiZSBlcXVhbCB0byBudW1iZXIgb2YgZmFpbGVkIHRlc3Rz
Iik7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0UmVncmVzc2lvbnMubGVuZ3Ro
OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cmljdEVxdWFsKHBvcG92ZXIuX2NvbnRl
bnQuY2hpbGROb2Rlc1tpK251bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50XS5jaGlsZE5v
ZGVzWzBdLnRleHRDb250ZW50LAotICAgICAgICAgICAgICAgIHRlc3RSZWdyZXNzaW9uc1tpXSwK
LSAgICAgICAgICAgICAgICAiTmFtZXMgb2YgZmFpbHVyZXMgbXVzdCBtYXRjaCIKLSAgICAgICAg
ICAgICk7Ci0gICAgICAgIH0KLSAgICB9KTsKLX0pOwotCi10ZXN0KCJfY3JlYXRlTG9hZGluZ0lu
ZGljYXRvciIsIGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgZmluaXNoZWQgPSBmYWxzZTsKLSAgICB2
YXIgaXRlcmF0aW9uID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVldWUsIDEsIGZpbmlz
aGVkKTsKLQotICAgIHZhciB2aWV3ID0gbmV3IEJ1aWxkYm90UXVldWVWaWV3KCk7Ci0gICAgdmFy
IGhlYWRpbmcgPSAiRmFpciBpcyBmb3VsLCBhbmQgZm91bCBpcyBmYWlyIjsKLSAgICB2YXIgY29u
dGVudCA9IHZpZXcuX2NyZWF0ZUxvYWRpbmdJbmRpY2F0b3IoaXRlcmF0aW9uLCBoZWFkaW5nKTsK
LQotICAgIHZhciBudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudCA9IDI7Ci0gICAgc3Ry
aWN0RXF1YWwoY29udGVudC5jaGlsZE5vZGVzLmxlbmd0aCwgMSArIG51bUNoaWxkcmVuSW5FbXB0
eVBvcG92ZXJDb250ZW50KTsKLSAgICBzdHJpY3RFcXVhbChjb250ZW50LmNoaWxkTm9kZXNbbnVt
Q2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnRdLmNsYXNzTmFtZSwgImxvYWRpbmctaW5kaWNh
dG9yIiwgIlBvcG92ZXIgZm9yIGxvYWRpbmcgaW5kaWNhdG9yIG11c3QgaGF2ZSB0aGUgYXBwcm9w
cmlhdGUgY2xhc3MiKTsKLSAgICBzdHJpY3RFcXVhbChjb250ZW50LmNoaWxkTm9kZXNbbnVtQ2hp
bGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnRdLnRleHRDb250ZW50LCAiTG9hZGluZ1x1MjAyNiIs
ICJQb3BvdmVyIGZvciBsb2FkaW5nIGZhaWx1cmUgbXVzdCB1c2UgdGhlIGNvcnJlY3QgdGV4dCIp
OwotfSk7Ci0KLXRlc3QoIl9wcmVzZW50UG9wb3ZlckZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jl
c3Npb25zIGFscmVhZHkgbG9hZGVkIiwgZnVuY3Rpb24oKQotewotICAgIHZhciBmaW5pc2hlZCA9
IGZhbHNlOwotICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
Ci0gICAgdmFyIHBvcG92ZXIgPSBuZXcgRGFzaGJvYXJkLlBvcG92ZXIoKTsKLSAgICB2YXIgaXRl
cmF0aW9uID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVldWUsIDEsIGZpbmlzaGVkKTsK
LSAgICBpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cyA9IHsicmVncmVzc2lvbnMi
OiBbInVubyIsICJkb3MiLCAidHJlcyJdfTsKLQotICAgIHZhciB2aWV3ID0gbmV3IEJ1aWxkYm90
UXVldWVWaWV3KCk7Ci0gICAgdmlldy5fcHJlc2VudFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVRl
c3RSZWdyZXNzaW9ucygianNjb3JlLXRlc3QiLCBlbGVtZW50LCBwb3BvdmVyLCBpdGVyYXRpb24p
OwotCi0gICAgdmFyIG51bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50ID0gMjsKLSAgICBz
dHJpY3RFcXVhbChwb3BvdmVyLl9jb250ZW50LmNoaWxkTm9kZXMubGVuZ3RoIC0gbnVtQ2hpbGRy
ZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnQsCi0gICAgICAgIGl0ZXJhdGlvbi5qYXZhU2NyaXB0Q29y
ZVRlc3RSZXN1bHRzLnJlZ3Jlc3Npb25zLmxlbmd0aCwKLSAgICAgICAgIk51bWJlciBvZiBmYWls
dXJlcyBpbiBwb3BvdmVyIG11c3QgYmUgZXF1YWwgdG8gbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyIp
OwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0
UmVzdWx0cy5yZWdyZXNzaW9ucy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAgICAgIHN0cmljdEVx
dWFsKHBvcG92ZXIuX2NvbnRlbnQuY2hpbGROb2Rlc1tpK251bUNoaWxkcmVuSW5FbXB0eVBvcG92
ZXJDb250ZW50XS5jaGlsZE5vZGVzWzBdLnRleHRDb250ZW50LAotICAgICAgICAgICAgaXRlcmF0
aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMucmVncmVzc2lvbnNbaV0sCi0gICAgICAgICAg
ICAiTmFtZXMgb2YgZmFpbHVyZXMgbXVzdCBtYXRjaCIKLSAgICAgICAgKTsKLSAgICB9Ci19KTsK
LQotbW9kdWxlKCJCdWlsZEJvdFF1ZXVlIiwgewotICAgIHNldHVwOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjID0gbmV3IE1vY2tUcmFj
KCk7Ci0gICAgICAgIERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYy5yZWNvcmRl
ZENvbW1pdHMgPSBNb2NrVHJhYy5FWEFNUExFX1RSQUNfQ09NTUlUUzsKLSAgICAgICAgRGFzaGJv
YXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjLnJlY29yZGVkQ29tbWl0SW5kaWNlc0J5UmV2
aXNpb25OdW1iZXIgPSBNb2NrVHJhYy5yZWNvcmRlZENvbW1pdEluZGljZXNCeVJldmlzaW9uTnVt
YmVyOwotICAgICAgICB0aGlzLnF1ZXVlID0gbmV3IE1vY2tCdWlsZGJvdFF1ZXVlKCk7Ci0gICAg
ICAgIHRoaXMucXVldWUuYnJhbmNoZXMgPSBbewotICAgICAgICAgICAgbmFtZTogInRydW5rIiwK
LSAgICAgICAgICAgIHJlcG9zaXRvcnk6IERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5zb3VyY2UK
LSAgICAgICAgfV07Ci0gICAgfQotfSk7Ci0KLXRlc3QoImNvbXBhcmVJdGVyYXRpb25zIGJ5IHJl
dmlzaW9ucyIsIGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgZmluaXNoZWQgPSBmYWxzZTsKLSAgICB2
YXIgaXRlcmF0aW9uMSA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAxLCBmaW5p
c2hlZCk7Ci0gICAgdmFyIGl0ZXJhdGlvbjIgPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5x
dWV1ZSwgMiwgZmluaXNoZWQpOwotICAgIGl0ZXJhdGlvbjEucmV2aXNpb24gPSB7ICJvcGVuU291
cmNlIjogIjMzMDE4IiB9OwotICAgIGl0ZXJhdGlvbjIucmV2aXNpb24gPSB7ICJvcGVuU291cmNl
IjogIjMzMDE5IiB9OwotICAgIGl0ZXJhdGlvbjEubG9hZGVkID0gdHJ1ZTsKLSAgICBpdGVyYXRp
b24yLmxvYWRlZCA9IHRydWU7Ci0gICAgb2sodGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0aW9ucyhp
dGVyYXRpb24yLCBpdGVyYXRpb24xKSA8IDAsICJjb21wYXJlSXRlcmF0aW9uczogbGVzcyB0aGFu
Iik7Ci0gICAgb2sodGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0aW9ucyhpdGVyYXRpb24xLCBpdGVy
YXRpb24yKSA+IDAsICJjb21wYXJlSXRlcmF0aW9uczogZ3JlYXRlciB0aGFuIik7Ci0gICAgc3Ry
aWN0RXF1YWwodGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0aW9ucyhpdGVyYXRpb24yLCBpdGVyYXRp
b24yKSwgMCwgImNvbXBhcmVJdGVyYXRpb25zOiBlcXVhbCIpOwotfSk7Ci0KLXRlc3QoImNvbXBh
cmVJdGVyYXRpb25zIGJ5IGxvYWRlZCAob25lIHJldmlzaW9uIG1pc3NpbmcpIiwgZnVuY3Rpb24o
KQotewotICAgIHZhciBmaW5pc2hlZCA9IGZhbHNlOwotICAgIHZhciBpdGVyYXRpb24xID0gbmV3
IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVldWUsIDEsIGZpbmlzaGVkKTsKLSAgICB2YXIgaXRl
cmF0aW9uMiA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAyLCBmaW5pc2hlZCk7
Ci0gICAgaXRlcmF0aW9uMS5yZXZpc2lvbiA9IHt9OwotICAgIGl0ZXJhdGlvbjIucmV2aXNpb24g
PSB7ICJvcGVuU291cmNlIjogIjMzMDE5IiB9OwotICAgIGl0ZXJhdGlvbjEubG9hZGVkID0gZmFs
c2U7Ci0gICAgaXRlcmF0aW9uMi5sb2FkZWQgPSB0cnVlOwotICAgIG9rKHRoaXMucXVldWUuY29t
cGFyZUl0ZXJhdGlvbnMoaXRlcmF0aW9uMSwgaXRlcmF0aW9uMikgPiAwLCAiY29tcGFyZUl0ZXJh
dGlvbnM6IGdyZWF0ZXIgdGhhbiIpOwotICAgIG9rKHRoaXMucXVldWUuY29tcGFyZUl0ZXJhdGlv
bnMoaXRlcmF0aW9uMiwgaXRlcmF0aW9uMSkgPCAwLCAiY29tcGFyZUl0ZXJhdGlvbnM6IGxlc3Mg
dGhhbiIpOwotfSk7Ci0KLXRlc3QoImNvbXBhcmVJdGVyYXRpb25zIGJ5IGxvYWRlZCAoc2FtZSBy
ZXZpc2lvbikiLCBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGZpbmlzaGVkID0gZmFsc2U7Ci0gICAg
dmFyIGl0ZXJhdGlvbjEgPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwgMSwgZmlu
aXNoZWQpOwotICAgIHZhciBpdGVyYXRpb24yID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMu
cXVldWUsIDIsIGZpbmlzaGVkKTsKLSAgICBpdGVyYXRpb24xLnJldmlzaW9uID0geyAib3BlblNv
dXJjZSI6ICIzMzAxOSIgfTsKLSAgICBpdGVyYXRpb24yLnJldmlzaW9uID0geyAib3BlblNvdXJj
ZSI6ICIzMzAxOSIgfTsKLSAgICBpdGVyYXRpb24xLmxvYWRlZCA9IGZhbHNlOwotICAgIGl0ZXJh
dGlvbjIubG9hZGVkID0gdHJ1ZTsKLSAgICBvayh0aGlzLnF1ZXVlLmNvbXBhcmVJdGVyYXRpb25z
KGl0ZXJhdGlvbjEsIGl0ZXJhdGlvbjIpID4gMCwgImNvbXBhcmVJdGVyYXRpb25zOiBncmVhdGVy
IHRoYW4iKTsKLSAgICBvayh0aGlzLnF1ZXVlLmNvbXBhcmVJdGVyYXRpb25zKGl0ZXJhdGlvbjIs
IGl0ZXJhdGlvbjEpIDwgMCwgImNvbXBhcmVJdGVyYXRpb25zOiBsZXNzIHRoYW4iKTsKLX0pOwot
Ci10ZXN0KCJjb21wYXJlSXRlcmF0aW9ucyBieSBpZCAocmV2aXNpb25zIG5vdCBzcGVjaWZpZWQp
IiwgZnVuY3Rpb24oKQotewotICAgIHZhciBmaW5pc2hlZCA9IGZhbHNlOwotICAgIHZhciBpdGVy
YXRpb24xID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVldWUsIDEsIGZpbmlzaGVkKTsK
LSAgICB2YXIgaXRlcmF0aW9uMiA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAy
LCBmaW5pc2hlZCk7Ci0gICAgaXRlcmF0aW9uMS5yZXZpc2lvbiA9IHt9OwotICAgIGl0ZXJhdGlv
bjIucmV2aXNpb24gPSB7fTsKLSAgICBpdGVyYXRpb24xLmxvYWRlZCA9IGZhbHNlOwotICAgIGl0
ZXJhdGlvbjIubG9hZGVkID0gZmFsc2U7Ci0gICAgb2sodGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0
aW9ucyhpdGVyYXRpb24yLCBpdGVyYXRpb24xKSA8IDAsICJjb21wYXJlSXRlcmF0aW9uczogbGVz
cyB0aGFuIik7Ci0gICAgb2sodGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0aW9ucyhpdGVyYXRpb24x
LCBpdGVyYXRpb24yKSA+IDAsICJjb21wYXJlSXRlcmF0aW9uczogZ3JlYXRlciB0aGFuIik7Ci0g
ICAgc3RyaWN0RXF1YWwodGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0aW9ucyhpdGVyYXRpb24yLCBp
dGVyYXRpb24yKSwgMCwgImNvbXBhcmVJdGVyYXRpb25zOiBlcXVhbCIpOwotfSk7Ci0KLXRlc3Qo
ImNvbXBhcmVJdGVyYXRpb25zIGJ5IGlkIChzYW1lIHJldmlzaW9uKSIsIGZ1bmN0aW9uKCkKLXsK
LSAgICB2YXIgZmluaXNoZWQgPSBmYWxzZTsKLSAgICB2YXIgaXRlcmF0aW9uMSA9IG5ldyBCdWls
ZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAxLCBmaW5pc2hlZCk7Ci0gICAgdmFyIGl0ZXJhdGlv
bjIgPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwgMiwgZmluaXNoZWQpOwotICAg
IGl0ZXJhdGlvbjEucmV2aXNpb24gPSB7ICJvcGVuU291cmNlIjogIjMzMDE5IiB9OwotICAgIGl0
ZXJhdGlvbjIucmV2aXNpb24gPSB7ICJvcGVuU291cmNlIjogIjMzMDE5IiB9OwotICAgIGl0ZXJh
dGlvbjEubG9hZGVkID0gZmFsc2U7Ci0gICAgaXRlcmF0aW9uMi5sb2FkZWQgPSBmYWxzZTsKLSAg
ICBvayh0aGlzLnF1ZXVlLmNvbXBhcmVJdGVyYXRpb25zKGl0ZXJhdGlvbjIsIGl0ZXJhdGlvbjEp
IDwgMCwgImNvbXBhcmVJdGVyYXRpb25zOiBsZXNzIHRoYW4iKTsKLSAgICBvayh0aGlzLnF1ZXVl
LmNvbXBhcmVJdGVyYXRpb25zKGl0ZXJhdGlvbjEsIGl0ZXJhdGlvbjIpID4gMCwgImNvbXBhcmVJ
dGVyYXRpb25zOiBncmVhdGVyIHRoYW4iKTsKLSAgICBzdHJpY3RFcXVhbCh0aGlzLnF1ZXVlLmNv
bXBhcmVJdGVyYXRpb25zKGl0ZXJhdGlvbjIsIGl0ZXJhdGlvbjIpLCAwLCAiY29tcGFyZUl0ZXJh
dGlvbnM6IGVxdWFsIik7Ci19KTsKLQotdGVzdCgiY29tcGFyZUl0ZXJhdGlvbnNCeVJldmlzaW9u
cyIsIGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgZmluaXNoZWQgPSBmYWxzZTsKLSAgICB2YXIgaXRl
cmF0aW9uMSA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAxLCBmaW5pc2hlZCk7
Ci0gICAgdmFyIGl0ZXJhdGlvbjIgPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwg
MiwgZmluaXNoZWQpOwotICAgIGl0ZXJhdGlvbjEucmV2aXNpb24gPSB7ICJvcGVuU291cmNlIjog
IjMzMDE4IiB9OwotICAgIGl0ZXJhdGlvbjIucmV2aXNpb24gPSB7ICJvcGVuU291cmNlIjogIjMz
MDE5IiB9OwotICAgIGl0ZXJhdGlvbjEubG9hZGVkID0gdHJ1ZTsKLSAgICBpdGVyYXRpb24yLmxv
YWRlZCA9IGZhbHNlOwotICAgIG9rKHRoaXMucXVldWUuY29tcGFyZUl0ZXJhdGlvbnNCeVJldmlz
aW9ucyhpdGVyYXRpb24yLCBpdGVyYXRpb24xKSA8IDAsICJjb21wYXJlSXRlcmF0aW9uc0J5UmV2
aXNpb25zOiBsZXNzIHRoYW4iKTsKLSAgICBvayh0aGlzLnF1ZXVlLmNvbXBhcmVJdGVyYXRpb25z
QnlSZXZpc2lvbnMoaXRlcmF0aW9uMSwgaXRlcmF0aW9uMikgPiAwLCAiY29tcGFyZUl0ZXJhdGlv
bnNCeVJldmlzaW9uczogZ3JlYXRlciB0aGFuIik7Ci0gICAgc3RyaWN0RXF1YWwodGhpcy5xdWV1
ZS5jb21wYXJlSXRlcmF0aW9uc0J5UmV2aXNpb25zKGl0ZXJhdGlvbjIsIGl0ZXJhdGlvbjIpLCAw
LCAiY29tcGFyZUl0ZXJhdGlvbnNCeVJldmlzaW9uczogZXF1YWwiKTsKLX0pOwpJbmRleDogVG9v
bHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TdHlsZXMvTWFpbi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvTWFpbi5jc3MJKHJl
dmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU3R5bGVzL01haW4uY3NzCShub25leGlzdGVudCkKQEAg
LTEsMzA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0qIHsKLSAgICBib3gtc2l6aW5nOiBib3JkZXIt
Ym94OwotICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ci0gICAgLXdlYmtpdC11c2VyLWRy
YWc6IG5vbmU7Ci0gICAgY3Vyc29yOiBkZWZhdWx0OwotfQotCi0qOmxpbmsgewotICAgIGN1cnNv
cjogcG9pbnRlcjsKLX0KLQotYSB7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotfQotCi1h
OmhvdmVyIHsKLSAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKLX0KLQotZGl2LmNlbGxC
dXR0b24sIGRpdi5hY2Nlc3NpYmlsaXR5QnV0dG9uLCBkaXYucGxhdGZvcm1GYW1pbHlUb2dnbGVC
dXR0b24gewotICAgIGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhTmV1ZS1MaWdodCIsIHNhbnMtc2Vy
aWY7Ci0gICAgZm9udC1zaXplOiAxMnB4OwotICAgIGNvbG9yOiByZ2IoMTg1LCAxNzUsIDEyNSk7
Ci0gICAgY3Vyc29yOiBwb2ludGVyOwotfQotCi1kaXYuY2VsbEJ1dHRvbi5oaWRlLCBkaXYuYWNj
ZXNzaWJpbGl0eUJ1dHRvbi5oaWRlIHsKLSAgICBkaXNwbGF5OiBub25lOwotICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKLSAgICBib3R0b206IDJweDsKLSAgICByaWdodDogNHB4OwotfQotCi1kaXYu
Y2VsbEJ1dHRvbi51bmhpZGUsIGRpdi5hY2Nlc3NpYmlsaXR5QnV0dG9uLnVuaGlkZSwgZGl2LnBs
YXRmb3JtRmFtaWx5VG9nZ2xlQnV0dG9uLnVuaGlkZSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0K
LQotLnNldHRpbmdzLXZpc2libGUgZGl2LmNlbGxCdXR0b24uaGlkZSwgLnNldHRpbmdzLXZpc2li
bGUgZGl2LmNlbGxCdXR0b24udW5oaWRlLAotLnNldHRpbmdzLXZpc2libGUgZGl2LmFjY2Vzc2li
aWxpdHlCdXR0b24uaGlkZSwgLnNldHRpbmdzLXZpc2libGUgZGl2LmFjY2Vzc2liaWxpdHlCdXR0
b24udW5oaWRlLAotLnNldHRpbmdzLXZpc2libGUgZGl2LnBsYXRmb3JtRmFtaWx5VG9nZ2xlQnV0
dG9uLmhpZGUsIC5zZXR0aW5ncy12aXNpYmxlIGRpdi5wbGF0Zm9ybUZhbWlseVRvZ2dsZUJ1dHRv
bi51bmhpZGUsCi0uc2V0dGluZ3MtdmlzaWJsZSBkaXYuc2V0dGluZ3NXcmFwcGVyLmhpZGUsIC5z
ZXR0aW5ncy12aXNpYmxlIGRpdi5zZXR0aW5nc1dyYXBwZXIgewotICAgIGRpc3BsYXk6IGJsb2Nr
OwotfQotCi0uaGlkZGVuIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0uc2V0dGluZ3Mgewot
ICAgIHBvc2l0aW9uOiBmaXhlZDsKLSAgICB0b3A6IDVweDsKLSAgICBsZWZ0OiA1cHg7Ci0gICAg
d2lkdGg6IDM1cHg7Ci0gICAgaGVpZ2h0OiAzNXB4OwotICAgIGJhY2tncm91bmQtY29sb3I6IHJn
YigxNjYsIDE1OCwgMTMwKTsKLSAgICAtd2Via2l0LW1hc2staW1hZ2U6IHVybCgnZGF0YTppbWFn
ZS9zdmcreG1sLDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94
PSIwIDAgMjUwIDI1MCI+PHBhdGggZD0iTTIxMywxNDR2LTM5aC0yMS4wNTVjLTEuNDc2LTUtMy41
MS0xMC4wODUtNi4wNTEtMTQuNjY4bDE0LjY3My0xNC42OTdsLTI3LjU3OC0yNy41ODlsLTE0LjUy
MSwxNC42NjUgQzE1My44ODUsNjAuMTcsMTQ5LDU4LjEzLDE0NCw1Ni42NTRWMzZoLTM5djIwLjY1
NGMtNSwxLjQ3Ni0xMC4xODYsMy41MS0xNC43NjksNi4wNTFMNzUuNDg0LDQ4LjAzM0w0Ny44Njks
NzUuNjA5bDE0LjY1MiwxNC43MjMgQzU5Ljk4MSw5NC45MTUsNTcuOTI5LDEwMCw1Ni40NTMsMTA1
SDM2djM5aDIwLjQ1M2MxLjQ3Niw1LDMuNTExLDkuOTg1LDYuMDUxLDE0LjU2OWwtMTQuNjcyLDE0
LjY0NmwyNy41NzcsMjcuNTY1bDE0LjgyMi0xNC42NzkgYzQuNTgzLDIuNTQxLDkuNzY5LDQuNTY5
LDE0Ljc2OSw2LjA0NVYyMTNoMzl2LTIwLjg1NGM1LTEuNDc2LDkuODg1LTMuNTEsMTQuNDY4LTYu
MDUxbDE0LjU5NywxNC42NzJsMjcuNTQxLTI3LjU3NmwtMTQuNjkxLTE0LjYyMyBjMi41NC00LjU4
Myw0LjU1Ni05LjU2OCw2LjAzMS0xNC41NjhIMjEzeiBNMTI0LjE5OSwxNjQuOWMtMjIuMzY3LDAt
NDAuNS0xOC4xMzMtNDAuNS00MC41czE4LjEzMy00MC41LDQwLjUtNDAuNSBzNDAuNSwxOC4xMzMs
NDAuNSw0MC41UzE0Ni41NjYsMTY0LjksMTI0LjE5OSwxNjQuOXoiLz48L3N2Zz4nKTsKLSAgICBj
dXJzb3I6IHBvaW50ZXI7Ci19Ci0KLS5zZXR0aW5nczpob3ZlciB7Ci0gICAgYmFja2dyb3VuZC1j
b2xvcjogcmdiKDE4NSwgMTc1LCAxMjUpOwotfQotCi0uc2V0dGluZ3MtdmlzaWJsZSAuc2V0dGlu
Z3MgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYig3NiwgMTUxLCA2MSk7Ci19Ci0KLWJvZHkg
ewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzMsIDIzMSwgMjIzKTsKLSAgICB0ZXh0LWFs
aWduOiBjZW50ZXI7Ci0gICAgbWFyZ2luOiA1MHB4IDI1cHggNTBweCAyNXB4OwotfQotCi10YWJs
ZS5xdWV1ZS1ncmlkIHsKLSAgICBib3JkZXItc3BhY2luZzogMDsKLSAgICBib3JkZXItY29sbGFw
c2U6IGNvbGxhcHNlOwotICAgIGRpc3BsYXk6IGlubGluZS10YWJsZTsKLX0KLQotdGFibGUucXVl
dWUtZ3JpZCB0ci5oZWFkZXJzIHRoIHsKLSAgICBmb250LWZhbWlseTogIkhlbHZldGljYU5ldWUt
VWx0cmFMaWdodCIsIHNhbnMtc2VyaWY7Ci0gICAgZm9udC1zaXplOiAzMHB4OwotICAgIGZvbnQt
d2VpZ2h0OiBub3JtYWw7Ci0gICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTsKLSAgICBjb2xv
cjogcmdiKDE0NSwgMTM1LCA5NSk7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHI6bnRoLWNoaWxk
KG9kZCk6bm90KC5oZWFkZXJzKSB0ZCB7Ci0gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYigy
MTEsIDIwNywgMTkxKTsKLSAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDIxMSwgMjA3
LCAxOTEpOwotfQotCi10YWJsZS5xdWV1ZS1ncmlkIHRyIHRoOm5vdCg6bGFzdC1jaGlsZCksCi10
YWJsZS5xdWV1ZS1ncmlkIHRyIHRkOm5vdCg6bGFzdC1jaGlsZCkgewotICAgIGJvcmRlci1yaWdo
dDogMXB4IHNvbGlkIHJnYigyMTEsIDIwNywgMTkxKTsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0
cjpudGgtY2hpbGQob2RkKTpub3QoLmhlYWRlcnMpIHRkIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZ2IoMjI5LCAyMjYsIDIxNyk7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHI6bnRoLWNoaWxk
KG9kZCk6bm90KC5oZWFkZXJzKSB0ZDpmaXJzdC1jaGlsZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xv
cjogdHJhbnNwYXJlbnQ7Ci0gICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQo
bGVmdCwgcmdiYSgyMjksIDIyNiwgMjE3LCAwKSwgcmdiKDIyOSwgMjI2LCAyMTcpKTsKLX0KLQot
dGFibGUucXVldWUtZ3JpZCB0cjpudGgtY2hpbGQob2RkKTpub3QoLmhlYWRlcnMpIHRkOmxhc3Qt
Y2hpbGQgewotICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwotICAgIGJhY2tncm91
bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHJpZ2h0LCByZ2JhKDIyOSwgMjI2LCAyMTcsIDAp
LCByZ2IoMjI5LCAyMjYsIDIxNykpOwotfQotCi10YWJsZS5xdWV1ZS1ncmlkIHRkIHsKLSAgICBo
ZWlnaHQ6IDIwMHB4OwotICAgIHdpZHRoOiAyMDBweDsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogdG9w
OwotfQotCi10YWJsZS5xdWV1ZS1ncmlkIHRkLmxvZ28gewotICAgIHBvc2l0aW9uOiByZWxhdGl2
ZTsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0ZC5sb2dvOjpiZWZvcmUgewotICAgIGRpc3BsYXk6
IGJsb2NrOwotICAgIGNvbnRlbnQ6ICIiOwotICAgIHdpZHRoOiAyMDBweDsKLSAgICBoZWlnaHQ6
IDA7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHIucGxhdGZvcm0gdGQubG9nbzo6YmVmb3JlIHsK
LSAgICBmb250LWZhbWlseTogIkhlbHZldGljYU5ldWUtVWx0cmFMaWdodCIsIHNhbnMtc2VyaWY7
Ci0gICAgZm9udC1zaXplOiAyNHB4OwotICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgbGV0
dGVyLXNwYWNpbmc6IDJweDsKLSAgICB0ZXh0LXNoYWRvdzogNHB4IDRweCA2cHggcmdiYSgxNTAs
IDE1MCwgMTUwLCAxKTsKLSAgICBjb2xvcjogcmdiKDE0NSwgMTM1LCA5NSk7Ci0gICAgcG9zaXRp
b246IGFic29sdXRlOwotICAgIGJvdHRvbTogMjRweDsKLSAgICBsZWZ0OiAwcHg7Ci0gICAgei1p
bmRleDogMjsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0ZC5sb2dvIGltZy5yaW5nIHsKLSAgICBj
b250ZW50OiAtd2Via2l0LWltYWdlLXNldCh1cmwoLi4vSW1hZ2VzL1BsYXRmb3JtUmluZ0AyeC5w
bmcpIDJ4LCB1cmwoLi4vSW1hZ2VzL1BsYXRmb3JtUmluZy5wbmcpIDF4KTsKLSAgICB3aWR0aDog
MTYwcHg7Ci0gICAgaGVpZ2h0OiAxNjNweDsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAg
dG9wOiAyMHB4OwotICAgIGxlZnQ6IDE4cHg7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdGQubG9n
byBpbWcubG9nbyB7Ci0gICAgd2lkdGg6IDE0NHB4OwotICAgIGhlaWdodDogMTQ0cHg7Ci0gICAg
cG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMjlweDsKLSAgICBsZWZ0OiAyNnB4OwotICAg
IC13ZWJraXQtY2xpcC1wYXRoOiBjaXJjbGUoNzJweCBhdCBjZW50ZXIpOwotICAgIGNsaXAtcGF0
aDogY2lyY2xlKDcycHggYXQgY2VudGVyKTsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0ci5wbGF0
Zm9ybS53aW5kb3dzLTEwIHRkLmxvZ286OmJlZm9yZSB7Ci0gICAgY29udGVudDogIldpbmRvd3Mg
MTAiOwotfQotCi10YWJsZS5xdWV1ZS1ncmlkIHRyLnBsYXRmb3JtLndpbmNhaXJvLXdpbmRvd3Mt
MTAgdGQubG9nbzo6YmVmb3JlIHsKLSAgICBjb250ZW50OiAiV2luQ2Fpcm8iOwotfQotCi10YWJs
ZS5xdWV1ZS1ncmlkIHRyLnBsYXRmb3JtLmlvcy1zaW11bGF0b3ItMTQgaW1nLmxvZ28gewotICAg
IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNTVkZWcsICNiMWE4ZWQgMTYlLCNhYTNkYWEg
NTAlKTsKLSAgICBjb250ZW50OiAtd2Via2l0LWltYWdlLXNldCh1cmwoLi4vSW1hZ2VzL0lPUzE0
U2ltdWxhdG9yQDJ4LnBuZykgMngsIHVybCguLi9JbWFnZXMvSU9TMTRTaW11bGF0b3IucG5nKSAx
eCk7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHIucGxhdGZvcm0uaW9zLTE0IGltZy5sb2dvIHsK
LSAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTU1ZGVnLCAjYjFhOGVkIDE2JSwjYWEz
ZGFhIDUwJSk7Ci0gICAgY29udGVudDogLXdlYmtpdC1pbWFnZS1zZXQodXJsKC4uL0ltYWdlcy9J
T1MxNEAyeC5wbmcpIDJ4LCB1cmwoLi4vSW1hZ2VzL0lPUzE0LnBuZykgMXgpOwotfQotCi10YWJs
ZS5xdWV1ZS1ncmlkIHRyLnBsYXRmb3JtLnR2b3Mtc2ltdWxhdG9yLTE0IGltZy5sb2dvIHsKLSAg
ICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTU1ZGVnLCAjYjFhOGVkIDE2JSwjYWEzZGFh
IDUwJSk7Ci0gICAgY29udGVudDogLXdlYmtpdC1pbWFnZS1zZXQodXJsKC4uL0ltYWdlcy9Udk9T
MTRTaW11bGF0b3JAMngucG5nKSAyeCwgdXJsKC4uL0ltYWdlcy9Udk9TMTRTaW11bGF0b3IucG5n
KSAxeCk7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHIucGxhdGZvcm0udHZvcy0xNCBpbWcubG9n
byB7Ci0gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE1NWRlZywgI2IxYThlZCAxNiUs
I2FhM2RhYSA1MCUpOwotICAgIGNvbnRlbnQ6IC13ZWJraXQtaW1hZ2Utc2V0KHVybCguLi9JbWFn
ZXMvVHZPUzE0QDJ4LnBuZykgMngsIHVybCguLi9JbWFnZXMvVHZPUzE0LnBuZykgMXgpOwotfQot
Ci10YWJsZS5xdWV1ZS1ncmlkIHRyLnBsYXRmb3JtLndhdGNob3Mtc2ltdWxhdG9yLTcgaW1nLmxv
Z28gewotICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNTVkZWcsICNiMWE4ZWQgMTYl
LCNhYTNkYWEgNTAlKTsKLSAgICBjb250ZW50OiAtd2Via2l0LWltYWdlLXNldCh1cmwoLi4vSW1h
Z2VzL1dhdGNoT1NTaW11bGF0b3I3QDJ4LnBuZykgMngsIHVybCguLi9JbWFnZXMvV2F0Y2hPU1Np
bXVsYXRvcjcucG5nKSAxeCk7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHIucGxhdGZvcm0ud2F0
Y2hvcy03IGltZy5sb2dvIHsKLSAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTU1ZGVn
LCAjYjFhOGVkIDE2JSwjYWEzZGFhIDUwJSk7Ci0gICAgY29udGVudDogLXdlYmtpdC1pbWFnZS1z
ZXQodXJsKC4uL0ltYWdlcy9XYXRjaE9TN0AyeC5wbmcpIDJ4LCB1cmwoLi4vSW1hZ2VzL1dhdGNo
T1M3LnBuZykgMXgpOwotfQotCi10YWJsZS5xdWV1ZS1ncmlkIHRyLnBsYXRmb3JtLm1hY29zLW1v
amF2ZSBpbWcubG9nbyB7Ci0gICAgY29udGVudDogLXdlYmtpdC1pbWFnZS1zZXQodXJsKC4uL0lt
YWdlcy9Nb2phdmVAMngucG5nKSAyeCwgdXJsKC4uL0ltYWdlcy9Nb2phdmUucG5nKSAxeCk7Ci19
Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHIucGxhdGZvcm0ubWFjb3MtY2F0YWxpbmEgaW1nLmxvZ28g
ewotICAgIGNvbnRlbnQ6IC13ZWJraXQtaW1hZ2Utc2V0KHVybCguLi9JbWFnZXMvQ2F0YWxpbmFA
MngucG5nKSAyeCwgdXJsKC4uL0ltYWdlcy9DYXRhbGluYS5wbmcpIDF4KTsKLX0KLQotdGFibGUu
cXVldWUtZ3JpZCB0ci5wbGF0Zm9ybS5tYWNvcy1iaWdzdXIgaW1nLmxvZ28gewotICAgIGNvbnRl
bnQ6IC13ZWJraXQtaW1hZ2Utc2V0KHVybCguLi9JbWFnZXMvQmlnU3VyQDJ4LnBuZykgMngsIHVy
bCguLi9JbWFnZXMvQmlnU3VyLnBuZykgMXgpOwotfQotCi10YWJsZS5xdWV1ZS1ncmlkIHRyLnBs
YXRmb3JtLndpbmNhaXJvLXdpbmRvd3MtMTAgaW1nLmxvZ28gewotICAgIGNvbnRlbnQ6IC13ZWJr
aXQtaW1hZ2Utc2V0KHVybCguLi9JbWFnZXMvV2luZG93czEwQDJ4LnBuZykgMngsIHVybCguLi9J
bWFnZXMvV2luZG93czEwLnBuZykgMXgpOwotfQotCi10YWJsZS5xdWV1ZS1ncmlkIHRyLnBsYXRm
b3JtLndpbmRvd3MtMTAgaW1nLmxvZ28gewotICAgIGNvbnRlbnQ6IC13ZWJraXQtaW1hZ2Utc2V0
KHVybCguLi9JbWFnZXMvV2luZG93czEwQDJ4LnBuZykgMngsIHVybCguLi9JbWFnZXMvV2luZG93
czEwLnBuZykgMXgpOwotfQotCi10YWJsZS5xdWV1ZS1ncmlkIHRyLnBsYXRmb3JtLndpbmRvd3Mt
NyBpbWcubG9nbyB7Ci0gICAgY29udGVudDogLXdlYmtpdC1pbWFnZS1zZXQodXJsKC4uL0ltYWdl
cy9XaW5kb3dzN0AyeC5wbmcpIDJ4LCB1cmwoLi4vSW1hZ2VzL1dpbmRvd3M3LnBuZykgMXgpOwot
fQotCi10YWJsZS5xdWV1ZS1ncmlkIHRyLnBsYXRmb3JtLmxpbnV4LWd0ayBpbWcubG9nbyB7Ci0g
ICAgY29udGVudDogLXdlYmtpdC1pbWFnZS1zZXQodXJsKC4uL0ltYWdlcy9HVEtAMngucG5nKSAy
eCwgdXJsKC4uL0ltYWdlcy9HVEsucG5nKSAxeCk7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHIu
cGxhdGZvcm0ubGludXgtd3BlIGltZy5sb2dvIHsKLSAgICBjb250ZW50OiAtd2Via2l0LWltYWdl
LXNldCh1cmwoLi4vSW1hZ2VzL1dQRUAyeC5wbmcpIDJ4LCB1cmwoLi4vSW1hZ2VzL1dQRS5wbmcp
IDF4KTsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0ci5wbGF0Zm9ybS5saW51eC1qc2Nvbmx5IGlt
Zy5sb2dvIHsKLSAgICBjb250ZW50OiAtd2Via2l0LWltYWdlLXNldCh1cmwoLi4vSW1hZ2VzL1Nx
dWlycmVsRmlzaEAyeC5wbmcpIDJ4LCB1cmwoLi4vSW1hZ2VzL1NxdWlycmVsRmlzaC5wbmcpIDF4
KTsKLX0KLQotLnBvcG92ZXItdHJhY2tpbmc6aG92ZXIgewotICAgIHRleHQtc2hhZG93OiAwcHgg
MHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMikKLX0KLQotZGl2LnNldHRpbmdzV3JhcHBlci5oaWRl
IHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi1kaXYuc2V0dGluZ3NXcmFwcGVyIHsKLSAgICBw
b3NpdGlvbjogZml4ZWQ7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgaGVpZ2h0OiA0NXB4OwotICAg
IHRvcDogMHB4OwotICAgIGxlZnQ6IDUwcHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIz
MywgMjMxLCAyMjMpOwotICAgIHotaW5kZXg6IDI7Ci19Ci0KLWRpdi5mYW1pbHlUb2dnbGVXcmFw
cGVyIHsKLSAgICBwb3NpdGlvbjogaW5oZXJpdDsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICBs
ZWZ0OiA1MHB4OwotICAgIHRvcDogMTMuNXB4OwotfQotCi1kaXYucGxhdGZvcm1GYW1pbHlUb2dn
bGVCdXR0b24gewotICAgIGZsb2F0OiBsZWZ0OwotICAgIHBhZGRpbmctbGVmdDogNXB4OwotICAg
IHBhZGRpbmctcmlnaHQ6IDVweDsKLSAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsK
LX0KLQotZGl2LnBsYXRmb3JtRmFtaWx5VG9nZ2xlQnV0dG9uOm5vdCg6bGFzdC1jaGlsZCkgewot
ICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYigyMTEsIDIwNywgMTkxKTsKLX0KLQotZGl2
LmZhbWlseVNob3duIHsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgZm9udC13ZWln
aHQ6IGJvbGQ7Ci19Ci0KLWRpdi5hY2Nlc3NpYmlsaXR5QnV0dG9uIHsKLSAgICBwb3NpdGlvbjog
aW5oZXJpdDsKLSAgICB0b3A6IDEzLjVweDsKLSAgICByaWdodDogOC41cHg7Ci19CkluZGV4OiBU
b29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1N0eWxlcy9NZXRyaWNzLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9NZXRyaWNz
LmNzcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvTWV0cmljcy5jc3MJKG5vbmV4
aXN0ZW50KQpAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotYm9keSB7Ci0gICAgbWFyZ2lu
LXRvcDogMTVweDsKLX0KLQotI3JhbmdlLXBpY2tlciB7Ci0gICAgZm9udC1mYW1pbHk6ICJIZWx2
ZXRpY2FOZXVlLUxpZ2h0Iiwgc2Fucy1zZXJpZjsKLSAgICBmb250LXNpemU6IDE0cHg7Ci0gICAg
Y29sb3I6IHJnYigxNDUsIDEzNSwgOTUpOwotICAgIGN1cnNvcjogcG9pbnRlcjsKLX0KLQotLnF1
ZXVlLXZpZXcgLnJlc3VsdC1saW5lIHsKLSAgICB0ZXh0LWFsaWduOiBsZWZ0OwotICAgIHBhZGRp
bmc6IDJweCAwOwotICAgIGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlm
OwotICAgIGZvbnQtc2l6ZTogMTJweDsKLSAgICBjb2xvcjogcmdiKDE0NSwgMTM1LCA5NSk7Ci0g
ICAgLXdlYmtpdC11c2VyLXNlbGVjdDogYXV0bzsKLSAgICBjdXJzb3I6IHRleHQ7Ci19Ci0KLXRh
YmxlLmFnZ3JlZ2F0ZS1ncmlkIHRyLmhlYWRlcnMgdGggewotICAgIGZvbnQtc2l6ZTogMzZweDsK
LX0KLQotLmFnZ3JlZ2F0ZS1xdWV1ZS12aWV3IC5yZXN1bHQtbGluZSB7Ci0gICAgZm9udC1zaXpl
OiAxNHB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICB0ZXh0LXRyYW5zZm9ybTogbG93
ZXJjYXNlOwotfQotCi0ucXVldWUtdmlldyAucXVldWVMYWJlbCArIC5yZXN1bHQtbGluZSwKLS5x
dWV1ZS12aWV3IC5lcnJvci1saW5lICsgLnJlc3VsdC1saW5lLAotLnJlc3VsdC1saW5lOmZpcnN0
LWNoaWxkCi17Ci0gICAgcGFkZGluZzogMTBweCAwIDJweCAwOwotICAgIGZvbnQtd2VpZ2h0OiBi
b2xkOwotfQotCi0ucXVldWUtdmlldyAuZXJyb3ItbGluZSB7Ci0gICAgY29sb3I6IHJnYigxOTEs
IDY3LCA0MSk7Ci19Ci0KLS5xdWV1ZS12aWV3IC5kaXZpZGVyIHsKLSAgICBoZWlnaHQ6IDZweDsK
LX0KLQotdGFibGUuYWdncmVnYXRlLWdyaWQgLnF1ZXVlLXZpZXcgLmRpdmlkZXIgewotICAgIGhl
aWdodDogMTBweDsKLX0KLQotLm1ldHJpY3MtbG9hZGluZy1pbmRpY2F0b3IgewotICAgIGZvbnQt
ZmFtaWx5OiAiSGVsdmV0aWNhTmV1ZS1MaWdodCIsIHNhbnMtc2VyaWY7Ci0gICAgZm9udC1zaXpl
OiAxNHB4OwotICAgIGNvbG9yOiByZ2IoMTQ1LCAxMzUsIDk1KTsKLSAgICBoZWlnaHQ6IDEwMHB4
OwotICAgIGxpbmUtaGVpZ2h0OiAxMDBweDsKLSAgICB2aXNpYmlsaXR5OiBoaWRkZW47Ci19Ci0K
LS50YWJsZXMtZGl2aWRlciB7Ci0gICAgaGVpZ2h0OiA2MHB4OwotfQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TdHlsZXMvTWV0cmljcy5jc3MKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWlt
ZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvY3NzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU3R5bGVzL1BvcG92ZXIuY3NzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
U3R5bGVzL1BvcG92ZXIuY3NzCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9Qb3Bv
dmVyLmNzcwkobm9uZXhpc3RlbnQpCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLnBv
cG92ZXIgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBtaW4td2lkdGg6IDIwcHg7Ci0g
ICAgbWluLWhlaWdodDogMjBweDsKLSAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgIHBv
aW50ZXItZXZlbnRzOiBub25lOwotICAgIHotaW5kZXg6IDEwMDA7Ci0gICAgb3BhY2l0eTogMDsK
LX0KLQotLnBvcG92ZXIuYXJyb3ctdXAgewotICAgIHBhZGRpbmc6IDE2cHggNXB4IDVweCA1cHg7
Ci19Ci0KLS5wb3BvdmVyLmFycm93LXJpZ2h0IHsKLSAgICBwYWRkaW5nOiA1cHggMTZweCA1cHgg
NXB4OwotfQotCi0ucG9wb3Zlci5hcnJvdy1kb3duIHsKLSAgICBwYWRkaW5nOiA1cHggNXB4IDE2
cHggNXB4OwotfQotCi0ucG9wb3Zlci5hcnJvdy1sZWZ0IHsKLSAgICBwYWRkaW5nOiA1cHggNXB4
IDVweCAxNnB4OwotfQotCi0ucG9wb3Zlci52aXNpYmxlIHsKLSAgICBvcGFjaXR5OiAxOwotfQot
Ci0ucG9wb3Zlci5zdGVwLWluIHsKLSAgICAvKiBUaGUgZGVsYXkgaXMgYWZ0ZXIgcG9wb3ZlciBj
cmVhdGlvbi4gUG9wb3ZlciB0cmFja2luZyBjb2RlIG1heSBhZGQgYSBkZWxheSBvZiBpdHMgb3du
IGJlZm9yZSBpdCBkZWNpZGVzIHRvIGNyZWF0ZSB0aGUgcG9wb3Zlci4gKi8KLSAgICAvKiBJdCBp
cyB1c2VmdWwgdG8gc2VwYXJhdGUgdGhlIGRlbGF5cyBiZWNhdXNlIHBvcG92ZXIgY3JlYXRpb24g
Y2FuIGJlIGNvc3RseSwgZS5nLiBpdCBjYW4gbGF6aWx5IGxvYWQgZGF0YSBmcm9tIG5ldHdvcmsg
ZHVyaW5nIHRoZSB0cmFuc2l0aW9uLiAqLwotICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMG1zIDgw
MG1zOwotICAgIG9wYWNpdHk6IDE7Ci19Ci0KLS5wb3BvdmVyLmZhZGUtb3V0IHsKLSAgICB0cmFu
c2l0aW9uOiBvcGFjaXR5IDUwMG1zIDIwMG1zOwotICAgIG9wYWNpdHk6IDA7Ci19Ci0KLS5wb3Bv
dmVyID4gLmNvbnRhaW5lciB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGxlZnQ6IDVw
eDsKLSAgICB0b3A6IDVweDsKLSAgICByaWdodDogNXB4OwotICAgIGJvdHRvbTogNXB4OwotCi0g
ICAgcGFkZGluZzogNXB4OwotCi0gICAgb3ZlcmZsb3cteTogYXV0bzsKLSAgICBvdmVyZmxvdy14
OiBoaWRkZW47Ci0KLSAgICBwb2ludGVyLWV2ZW50czogYXV0bzsKLX0KLQotLnBvcG92ZXIgPiAu
Y29udGFpbmVyLmNlbnRlciB7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwotICAgIC13ZWJr
aXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Ci0gICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2Vu
dGVyOwotfQotCi0ucG9wb3Zlci5hcnJvdy11cCA+IC5jb250YWluZXIgewotICAgIHRvcDogMTZw
eDsKLX0KLQotLnBvcG92ZXIuYXJyb3ctcmlnaHQgPiAuY29udGFpbmVyIHsKLSAgICByaWdodDog
MTZweDsKLX0KLQotLnBvcG92ZXIuYXJyb3ctZG93biA+IC5jb250YWluZXIgewotICAgIGJvdHRv
bTogMTZweDsKLX0KLQotLnBvcG92ZXIuYXJyb3ctbGVmdCA+IC5jb250YWluZXIgewotICAgIGxl
ZnQ6IDE2cHg7Ci19Ci0KLWJvZHkucG9wb3Zlci1wcmV2ZW50LWRvY3VtZW50LXNjcm9sbGluZyB7
Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU3R5
bGVzL1BvcG92ZXIuY3NzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSAr
MCwwICMjCi10ZXh0L2NzcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBU
b29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1N0eWxlcy9RdWV1ZVZpZXcuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU3R5bGVzL1F1ZXVl
Vmlldy5jc3MJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU3R5bGVzL1F1ZXVlVmlldy5jc3MJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwxNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS5xdWV1
ZS12aWV3IHsKLSAgICB3aWR0aDogMjAwcHg7Ci0gICAgcGFkZGluZzogMTBweCAyMHB4OwotfQot
Ci0ucXVldWUtdmlldyAucXVldWVMYWJlbCB7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgZm9u
dC1mYW1pbHk6ICJIZWx2ZXRpY2FOZXVlLUxpZ2h0IiwgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1z
ZXJpZjsKLSAgICBjb2xvcjogcmdiKDE0NSwgMTM1LCA5NSk7Ci0gICAgdGV4dC1hbGlnbjogbGVm
dDsKLX0KLQotLnF1ZXVlLXZpZXcgLnF1ZXVlTGFiZWw6bm90KDpmaXJzdC1jaGlsZCkgewotICAg
IG1hcmdpbi10b3A6IDEwcHg7Ci19Ci0KLS5wb3BvdmVyIC5kaXZpZGVyIHsKLSAgICBoZWlnaHQ6
IDdweDsKLX0KLQotLnBvcG92ZXIgLnBvcG92ZXItaXRlcmF0aW9uLWhlYWRpbmcgLmJ1aWxkYm90
LWxpbmssCi0ucG9wb3ZlciAucG9wb3Zlci1pdGVyYXRpb24taGVhZGluZyAuYWRkaXRpb25hbC10
ZXh0IHsKLSAgICBwYWRkaW5nLWxlZnQ6IDVweDsKLX0KLQotLmNvbW1pdC1oaXN0b3J5LXBvcG92
ZXIgewotICAgIGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhTmV1ZS1MaWdodCIsICJIZWx2ZXRpY2Eg
TmV1ZSIsIHNhbnMtc2VyaWY7Ci0gICAgY29sb3I6IHJnYigxNDUsIDEzNSwgOTUpOwotICAgIGZv
bnQtc2l6ZTogMTJweDsKLSAgICB0ZXh0LWFsaWduOiBsZWZ0OwotICAgIHBhZGRpbmc6IDFweCA2
cHggMXB4IDZweDsKLSAgICB1c2VyLXNlbGVjdDogYXV0bzsKLX0KLQotLmNvbW1pdC1oaXN0b3J5
LXBvcG92ZXIgPiAucGVuZGluZy1jb21taXQgPiAuYXV0aG9yIHsKLSAgICBwYWRkaW5nLWxlZnQ6
IDVweDsKLSAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7Ci19Ci0KLS5jb21taXQtaGlzdG9yeS1wb3Bv
dmVyID4gLnBlbmRpbmctY29tbWl0ID4gLnRpdGxlIHsKLSAgICBjb2xvcjogYmxhY2s7Ci19Ci0K
LS5idWlsZC1sb2dzLXBvcG92ZXIgewotICAgIGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhTmV1ZS1M
aWdodCIsICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Ci0gICAgY29sb3I6IHJnYigxNDUs
IDEzNSwgOTUpOwotICAgIGZvbnQtc2l6ZTogMTJweDsKLSAgICB0ZXh0LWFsaWduOiBsZWZ0Owot
ICAgIHBhZGRpbmc6IDFweCA2cHggMXB4IDZweDsKLX0KLQotLmJ1aWxkLWxvZ3MtcG9wb3ZlciAu
YnVpbGQtbG9ncy1oZWFkaW5nIHsKLSAgICBkaXNwbGF5OiBpbmxpbmU7Ci19Ci0KLS5idWlsZC1s
b2dzLXBvcG92ZXIgLmJ1aWxkLXBhZ2UtbGluayB7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci19Ci0K
LS5idWlsZC1sb2dzLXBvcG92ZXIgLmJ1aWxkLWxvZy1saW5rIHsKLSAgICBwYWRkaW5nLWxlZnQ6
IDVweDsKLX0KLQotLnRlc3QtcmVzdWx0cy1wb3BvdmVyIHsKLSAgICBmb250LWZhbWlseTogIkhl
bHZldGljYU5ldWUtTGlnaHQiLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmOwotICAgIGNv
bG9yOiByZ2IoMTQ1LCAxMzUsIDk1KTsKLSAgICBmb250LXNpemU6IDEycHg7Ci0gICAgdGV4dC1h
bGlnbjogbGVmdDsKLSAgICBwYWRkaW5nOiAxcHggNnB4IDFweCA2cHg7Ci19Ci0KLS50ZXN0LXJl
c3VsdHMtcG9wb3ZlciAuZmFpbGluZy10ZXN0LWtpbmQtc3VtbWFyeSB7Ci0gICAgZGlzcGxheTog
YmxvY2s7Ci19Ci0KLS50ZXN0LXJlc3VsdHMtcG9wb3ZlciAudGVzdC1wYXRoIHsKLSAgICBjb2xv
cjogYmxhY2s7Ci0gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogYXV0bzsKLSAgICBjdXJzb3I6IHRl
eHQ7Ci19Ci0KLS50ZXN0LXJlc3VsdHMtcG9wb3ZlciAuZmFpbHVyZS1raW5kLWluZGljYXRvciB7
Ci0gICAgY29sb3I6IHJnYigxOTEsIDY3LCA0MSk7Ci0gICAgcGFkZGluZy1sZWZ0OiA3cHg7Ci19
Ci0KLS50ZXN0LXJlc3VsdHMtcG9wb3ZlciAudGVzdC1oaXN0b3J5LWxpbmsgewotICAgIGNvbG9y
OiByZ2IoMTQ1LCAxMzUsIDk1KTsKLSAgICBwYWRkaW5nLWxlZnQ6IDdweDsKLX0KLQotLnRlc3Qt
cmVzdWx0cy1wb3BvdmVyIC5hZGRpdGlvbmFsLWxpbmsgewotICAgIGNvbG9yOiByZ2IoMTQ1LCAx
MzUsIDk1KTsKLSAgICBwYWRkaW5nLWxlZnQ6IDdweDsKLX0KLQotLmJ1YmJsZS1zZXJ2ZXItcG9w
b3ZlciwKLS5wZXJmb3JtYW5jZS1wb3BvdmVyLAotLmxlYWtzLXBvcG92ZXIsCi0uY29tYmluZWQt
cXVldWUtcG9wb3ZlciB7Ci0gICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2FOZXVlLUxpZ2h0Iiwg
IkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjsKLSAgICBjb2xvcjogcmdiKDE0NSwgMTM1LCA5
NSk7Ci0gICAgZm9udC1zaXplOiAxMnB4OwotICAgIHRleHQtYWxpZ246IGxlZnQ7Ci0gICAgcGFk
ZGluZzogMXB4IDZweCAxcHggNnB4OwotfQotCi0uYnViYmxlLXNlcnZlci1wb3BvdmVyIC5wb3Bv
dmVyLXF1ZXVlLWhlYWRpbmcgLnF1ZXVlLXN0YXR1cy1saW5rLAotLmJ1YmJsZS1zZXJ2ZXItcG9w
b3ZlciAucG9wb3Zlci1xdWV1ZS1oZWFkaW5nIC5xdWV1ZS1jaGFydHMtbGluayB7Ci0gICAgY29s
b3I6IHJnYigxNDUsIDEzNSwgOTUpOwotICAgIHBhZGRpbmctbGVmdDogN3B4OwotfQotCi0uYnVi
YmxlLXNlcnZlci1wb3BvdmVyIC5sYXRlc3Qtc3RhdHVzLXdpdGgtbGluaywKLS5idWJibGUtc2Vy
dmVyLXBvcG92ZXIgLmxhdGVzdC1zdGF0dXMtbm8tbGluayB7Ci0gICAgY29sb3I6IGJsYWNrOwot
ICAgIHBhZGRpbmctbGVmdDogN3B4OwotfQotCi0uYnViYmxlLXNlcnZlci1wb3BvdmVyIC5mYWls
dXJlLWNvdW50LAotLmJ1YmJsZS1zZXJ2ZXItcG9wb3ZlciAudGltZS1zaW5jZS1tZXNzYWdlLAot
LmJ1YmJsZS1zZXJ2ZXItcG9wb3ZlciAuYnVnemlsbGEtbGluaywKLS5idWJibGUtc2VydmVyLXBv
cG92ZXIgLmJvdC1zdGF0dXMtZGVzY3JpcHRpb24gewotICAgIHBhZGRpbmctbGVmdDogN3B4Owot
fQotCi0vKiBTdHlsaW5nIHRoZSBwZXJmb3JtYW5jZSBkYXNoYm9hcmQgbGluayBhcyB2aXNpdGVk
IGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlIGluIHRoZSBjb250ZXh0IG9mIGJvdCB3YXRjaGVyJ3Mg
ZGFzaGJvYXJkLiAqLwotLnBlcmZvcm1hbmNlLXBvcG92ZXIgLmRhc2hib2FyZC1saW5rIHsKLSAg
ICBjb2xvcjogYmx1ZTsKLX0KLQotLmNvbWJpbmVkLXF1ZXVlLXBvcG92ZXIgLnJldmlzaW9uIHsK
LSAgICBwYWRkaW5nLWxlZnQ6IDdweDsKLX0KSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU3R5bGVzL1N0YXR1c0xpbmVW
aWV3LmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9TdGF0dXNMaW5lVmlldy5jc3MJKHJl
dmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU3R5bGVzL1N0YXR1c0xpbmVWaWV3LmNzcwkobm9uZXhp
c3RlbnQpCkBAIC0xLDE3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLnN0YXR1cy1saW5lIHsKLSAg
ICB0ZXh0LWFsaWduOiBsZWZ0OwotICAgIG1pbi1oZWlnaHQ6IDMycHg7Ci0gICAgcGFkZGluZzog
MnB4IDA7Ci19Ci0KLS5zdGF0dXMtbGluZSAuYnViYmxlIHsKLSAgICBmbG9hdDogbGVmdDsKLSAg
ICBtaW4td2lkdGg6IDI0cHg7Ci0gICAgaGVpZ2h0OiAyNHB4OwotICAgIGNvbG9yOiB3aGl0ZTsK
LSAgICBsaW5lLWhlaWdodDogMjRweDsKLSAgICBmb250LXNpemU6IDE2cHg7Ci0gICAgZm9udC1m
YW1pbHk6ICJIZWx2ZXRpY2FOZXVlLU1lZGl1bSIsICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2Vy
aWY7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGJvcmRlci1yYWRpdXM6IDEycHg7Ci0g
ICAgcGFkZGluZzogMCA2cHg7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSAgICBtYXJnaW4tdG9w
OiAycHg7Ci0gICAgbWFyZ2luLXJpZ2h0OiA2cHg7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25l
OwotfQotCi0uc3RhdHVzLWxpbmUubmV1dHJhbCAuYnViYmxlIHsKLSAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZ2IoMTgxLCAxNzQsIDE0OCk7Ci19Ci0KLS5zdGF0dXMtbGluZS51bmF1dGhvcml6ZWQg
LmJ1YmJsZSB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE3MSwgNjEsIDE3MSk7Ci19Ci0K
LS5zdGF0dXMtbGluZSAuYnViYmxlLnBpY3RvZ3JhbSB7Ci0gICAgcGFkZGluZzogMDsKLSAgICBt
YXgtd2lkdGg6IDI0cHg7Ci19Ci0KLS5zdGF0dXMtbGluZS5nb29kIC5idWJibGUucGljdG9ncmFt
IHsKLSAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiPjxn
IHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwIDMwKSByb3RhdGUoLTQ1IDMwIDE3KSIgc2hhcGUtcmVu
ZGVyaW5nPSJjcmlzcEVkZ2VzIiBmaWxsPSJ3aGl0ZSI+PHJlY3QgeT0iNSIgd2lkdGg9IjEwIiBo
ZWlnaHQ9IjI1Ii8+PHJlY3QgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSIxMCIvPjwvZz48L3N2
Zz4nKTsKLX0KLQotLnN0YXR1cy1saW5lLnVuYXV0aG9yaXplZCAuYnViYmxlLnBpY3RvZ3JhbSB7
Ci0gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48Y2xp
cFBhdGggaWQ9InRvcC1zZW1pY2lyY2xlIj48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBo
ZWlnaHQ9IjM3Ii8+PC9jbGlwUGF0aD48Y2lyY2xlIGN4PSI1MCIgY3k9IjMzIiByPSIxMyIgY2xp
cC1wYXRoPSJ1cmwoI3RvcC1zZW1pY2lyY2xlKSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRo
PSIxMCIgZmlsbD0ibm9uZSIgLz48cmVjdCB4PSIyNCIgeT0iMzgiIHdpZHRoPSI1MiIgaGVpZ2h0
PSIzOSIgZmlsbD0id2hpdGUiLz48L3N2Zz4nKTsKLX0KLQotLnN0YXR1cy1saW5lLmRhbmdlciAu
YnViYmxlIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMwLCAxNzUsIDQ0KTsKLX0KLQot
LnN0YXR1cy1saW5lLm5ldXRyYWwgLmJ1YmJsZS5waWN0b2dyYW0sCi0uc3RhdHVzLWxpbmUuZGFu
Z2VyIC5idWJibGUucGljdG9ncmFtIHsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLX0KLQotLnN0
YXR1cy1saW5lLmJhZCAuYnViYmxlLnBpY3RvZ3JhbSB7Ci0gICAgZm9udC1mYW1pbHk6ICJNZW5s
by1Cb2xkIiwgc2Fucy1zZXJpZjsKLSAgICBmb250LXNpemU6IDIzcHg7Ci0gICAgbGluZS1oZWln
aHQ6IDIycHg7Ci19Ci0KLS5zdGF0dXMtbGluZSAubGFiZWwgewotICAgIGZvbnQtZmFtaWx5OiAi
SGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmOwotICAgIGZvbnQtc2l6ZTogMTBweDsKLSAgICB0
ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlOwotICAgIGxpbmUtaGVpZ2h0OiAxMXB4OwotICAgIHBh
ZGRpbmctdG9wOiAxcHg7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci19Ci0KLS5zdGF0dXMtbGluZSAu
bWVzc2FnZSB7Ci0gICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7
Ci0gICAgZm9udC1zaXplOiAxMnB4OwotICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7Ci19
Ci0KLS5zdGF0dXMtbGluZSAubWVzc2FnZSAqIHsKLSAgICBjb2xvcjogaW5oZXJpdDsKLX0KLQot
LnN0YXR1cy1saW5lIC5tZXNzYWdlIC5yZXZpc2lvbi1udW1iZXIgewotICAgIC13ZWJraXQtdXNl
ci1zZWxlY3Q6IGF1dG87Ci0gICAgY3Vyc29yOiB0ZXh0OwotfQotCi0uc3RhdHVzLWxpbmUubm8t
bGFiZWwgLm1lc3NhZ2UgewotICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwotfQotCi0uc3RhdHVzLWxp
bmU6bm90KC5uby1sYWJlbCkgLm1lc3NhZ2UgewotICAgIGxpbmUtaGVpZ2h0OiAxM3B4OwotfQot
Ci0uc3RhdHVzLWxpbmUubmV1dHJhbCAubGFiZWwsCi0uc3RhdHVzLWxpbmUubmV1dHJhbCAubWVz
c2FnZSwKLS5zdGF0dXMtbGluZS5uby1idWJibGUgLmxhYmVsLAotLnN0YXR1cy1saW5lLm5vLWJ1
YmJsZSAubWVzc2FnZSB7Ci0gICAgY29sb3I6IHJnYigxNDUsIDEzNSwgOTUpOwotfQotCi0uc3Rh
dHVzLWxpbmUuYmFkIC5idWJibGUgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxOTEsIDY3
LCA0MSk7Ci19Ci0KLS5zdGF0dXMtbGluZS5nb29kIC5idWJibGUgewotICAgIGJhY2tncm91bmQt
Y29sb3I6IHJnYig3NiwgMTUxLCA2MSk7Ci19Ci0KLS5zdGF0dXMtbGluZS5nb29kIC5sYWJlbCwK
LS5zdGF0dXMtbGluZS5nb29kIC5tZXNzYWdlIHsKLSAgICBjb2xvcjogcmdiKDc2LCAxNTEsIDYx
KTsKLX0KLQotLnN0YXR1cy1saW5lLmJhZCAubGFiZWwsCi0uc3RhdHVzLWxpbmUuYmFkIC5tZXNz
YWdlIHsKLSAgICBjb2xvcjogcmdiKDE5MSwgNjcsIDQxKTsKLX0KLQotYm9keS5hY2Nlc3NpYmls
aXR5LWNvbG9ycyAuc3RhdHVzLWxpbmUuZ29vZCAuYnViYmxlIHsKLSAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZ2IoNTAsIDIxOSwgNzIpOwotfQotCi1ib2R5LmFjY2Vzc2liaWxpdHktY29sb3JzIC5z
dGF0dXMtbGluZS5iYWQgLmJ1YmJsZSB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE5Niwg
NDksIDQ5KTsKLX0KLQotYm9keS5hY2Nlc3NpYmlsaXR5LWNvbG9ycyAuc3RhdHVzLWxpbmUuZ29v
ZCAubGFiZWwsCi1ib2R5LmFjY2Vzc2liaWxpdHktY29sb3JzIC5zdGF0dXMtbGluZS5nb29kIC5t
ZXNzYWdlIHsKLSAgICBjb2xvcjogcmdiKDQwLCAxNzcsIDU4KTsKLX0KLQotYm9keS5hY2Nlc3Np
YmlsaXR5LWNvbG9ycyAuc3RhdHVzLWxpbmUuYmFkIC5sYWJlbCwKLWJvZHkuYWNjZXNzaWJpbGl0
eS1jb2xvcnMgLnN0YXR1cy1saW5lLmJhZCAubWVzc2FnZSB7Ci0gICAgY29sb3I6IHJnYigxOTEs
IDY3LCA0MSk7Ci19Ci0KLS5zdGF0dXMtbGluZS5kYW5nZXIgLmxhYmVsLAotLnN0YXR1cy1saW5l
LmRhbmdlciAubWVzc2FnZSB7Ci0gICAgY29sb3I6IHJnYigyMzAsIDE3NSwgNDQpOwotfQotCi0u
c3RhdHVzLWxpbmUudW5hdXRob3JpemVkIC5sYWJlbCwKLS5zdGF0dXMtbGluZS51bmF1dGhvcml6
ZWQgLm1lc3NhZ2UgewotICAgIGNvbG9yOiByZ2IoMTcxLCA2MSwgMTcxKTsKLX0KLQotLnN0YXR1
cy1saW5lIC5idWJibGUucG9wb3Zlci10cmFja2luZzpob3ZlciB7Ci0gICAgdGV4dC1zaGFkb3c6
IDBweCAwcHggNXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KQotfQpJbmRleDogVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9pbmRl
eC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvaW5kZXguaHRtbAkocmV2aXNpb24gMjY5MTExKQor
KysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9pbmRleC5odG1sCShub25leGlzdGVudCkKQEAgLTEsNjUgKzAsMCBAQAotPCEtLQot
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLWFyZSBtZXQ6Ci0xLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLUFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi1CRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1D
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLUFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLVRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDx0aXRsZT5XZWJLaXQgQm90IFdh
dGNoZXIncyBEYXNoYm9hcmQ8L3RpdGxlPgotCi0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJTdHlsZXMvTWFpbi5jc3MiPjwvbGluaz4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IlN0eWxlcy9Qb3BvdmVyLmNzcyI+PC9saW5rPgotICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iU3R5bGVzL1F1ZXVlVmlldy5jc3MiPjwvbGluaz4KLSAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9IlN0eWxlcy9TdGF0dXNMaW5lVmlldy5jc3MiPjwvbGluaz4KLQot
ICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL1V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9IlNjcmlwdHMvQmFzZU9iamVjdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9IlNjcmlwdHMvRGFzaGJvYXJkLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2Ny
aXB0cy9CdWlsZGJvdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnVn
emlsbGEuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0J1YmJsZVF1ZXVl
U2VydmVyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9XZWJLaXRCdWls
ZGJvdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnVpbGRib3RRdWV1
ZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnViYmxlUXVldWUuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRz
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9HZW9tZXRyeS5qcyI+PC9z
Y3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvUG9wb3Zlci5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvUG9wb3ZlclRyYWNrZXIuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSJTY3JpcHRzL1F1ZXVlVmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9IlNjcmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSJTY3JpcHRzL0J1aWxkYm90QnVpbGRlclF1ZXVlVmlldy5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0J1aWxkYm90Q29tYmluZWRRdWV1ZVZpZXcu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0J1aWxkYm90UGVyZm9ybWFu
Y2VRdWV1ZVZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0J1aWxk
Ym90TGVha3NRdWV1ZVZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRz
L0J1YmJsZVF1ZXVlVmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMv
U3RhdHVzTGluZVZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL1Nl
dHRpbmdzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9UcmFjLmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9XZWJLaXRUZXN0SGlzdG9yeS5qcyI+
PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvSW5pdGlhbGl6YXRpb24uanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL01haW4uanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+PC9ib2R5PgotPC9odG1sPgpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9tZXRyaWNzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9tZXRyaWNzLmh0bWwJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xz
L0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
bWV0cmljcy5odG1sCShub25leGlzdGVudCkKQEAgLTEsNTcgKzAsMCBAQAotPCEtLQotQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLWFyZSBtZXQ6Ci0xLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLUFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi1CRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLVRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDx0aXRsZT5XZWJLaXQgQm90IFdhdGNoZXIn
cyBEYXNoYm9hcmQgTWV0cmljczwvdGl0bGU+Ci0KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IlN0eWxlcy9NYWluLmNzcyI+PC9saW5rPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iU3R5bGVzL1F1ZXVlVmlldy5jc3MiPjwvbGluaz4KLSAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9IlN0eWxlcy9NZXRyaWNzLmNzcyI+PC9saW5rPgotICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iRXh0ZXJuYWwvZGF0ZXJhbmdlcGlja2VyLmNzcyI+PC9saW5r
PgotCi0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvVXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9CYXNlT2JqZWN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHNyYz0iU2NyaXB0cy9EYXNoYm9hcmQuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3Jj
PSJTY3JpcHRzL0J1aWxkYm90LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0
cy9CdWJibGVRdWV1ZVNlcnZlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlw
dHMvV2ViS2l0QnVpbGRib3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRz
L0J1aWxkYm90UXVldWUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0J1
YmJsZVF1ZXVlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9CdWlsZGJv
dEl0ZXJhdGlvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnVpbGRi
b3RUZXN0UmVzdWx0cy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvU2V0
dGluZ3MuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL1RyYWMuanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0luaXRpYWxpemF0aW9uLmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9NZXRyaWNzQW5hbHl6ZXIuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL01ldHJpY3NWaWV3LmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9NZXRyaWNzQnViYmxlVmlldy5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9IkV4dGVybmFsL2pxdWVyeS0xLjExLjEubWluLmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iRXh0ZXJuYWwvbW9tZW50Lm1pbi5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9IkV4dGVybmFsL2pxdWVyeS5kYXRlcmFuZ2VwaWNrZXIuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL01ldHJpY3NNYWluLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PjwvYm9keT4KLTwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IFRv
b2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvbWV0cmljcy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSAr
MCwwICMjCi10ZXh0L2h0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDog
VG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2RlZmF1
bHQuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kZWZhdWx0LmNzcwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMv
Q0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2RlZmF1bHQuY3Nz
CShub25leGlzdGVudCkKQEAgLTEsNTYzICswLDAgQEAKLWJvZHkuaW50ZXJmYWNlIHsKLSAgICBw
b3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgbWFyZ2luLXRvcDogOHB4OwotICAgIGJhY2tncm91bmQ6
IHVybCgnYmdfZ3JhZGllbnQuanBnJykgcmVwZWF0LXg7Ci0gICAgZm9udC1mYW1pbHk6IEhlbHZl
dGljYU5ldWUsIHNhbnMtc2VyaWY7Ci0gICAgZm9udC1zaXplOiAxMXB4OwotICAgIGJhY2tncm91
bmQtY29sb3I6ICNmZmY7Ci0gICAgY29sb3I6ICMzMzM7Ci19Ci0KLWJvZHkgPiBociB7Ci0gICAg
ZGlzcGxheTogbm9uZTsKLX0KLQotZGl2LmNvbnRlbnQgaDEgewotICAgIGRpc3BsYXk6IG5vbmUg
IWltcG9ydGFudDsKLX0KLQotc21hbGwgewotICBmb250LXNpemU6IDlweDsKLX0KLQotLmF1dGgg
ewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBib3R0b206IDVweDsKLSAgICByaWdodDog
MTBweDsKLX0KLQotYTpsaW5rLGE6dmlzaXRlZCxhOmFjdGl2ZSB7Ci0gICAgY29sb3I6ICMzMzM7
Ci19Ci0KLWE6dmlzaXRlZCB7Ci0gICAgY29sb3I6ICM1NTc7Ci19Ci0KLXRhYmxlIHsKLSAgICBi
b3JkZXItc3BhY2luZzogMXB4IDFweDsKLX0KLQotdGFibGUgdGQgewotICAgIHBhZGRpbmc6IDNw
eCAycHggM3B4IDJweDsKLX0KLQotLlByb2plY3QgewotICAgIG1pbi13aWR0aDogNmVtOwotfQot
Ci0uTGFzdEJ1aWxkLC5BY3Rpdml0eSB7Ci0gICAgcGFkZGluZzogMCAwIDAgNHB4OwotfQotCi10
ZC5MYXN0QnVpbGQgewotICAgIG1pbi13aWR0aDogOWVtOwotfQotCi10ZC5MYXN0QnVpbGQgYSB7
Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotfQot
Ci0vKiBDaHJvbWl1bSBTcGVjaWZpYyBzdHlsZXMgKi8KLWRpdi5CdWlsZFJlc3VsdEluZm8gewot
ICAgIGNvbG9yOiAjNDQ0OwotfQotCi1kaXYuQW5ub3VuY2VtZW50IHsKLSAgICBtYXJnaW4tYm90
dG9tOiAxZW07Ci19Ci0KLWRpdi5Bbm5vdW5jZW1lbnQ+YTpob3ZlciB7Ci0gICAgY29sb3I6IGJs
YWNrOwotfQotCi1kaXYuQW5ub3VuY2VtZW50PmRpdi5Ob3RpY2UgewotICAgIGJhY2tncm91bmQt
Y29sb3I6ICNhZmRhZmY7Ci0gICAgcGFkZGluZzogMC41ZW07Ci0gICAgZm9udC1zaXplOiAxNnB4
OwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotZGl2LkFubm91bmNlbWVudD5kaXYuT3Bl
biB7Ci0gICAgYm9yZGVyOiAzcHggc29saWQgIzhmZGY1ZjsKLSAgICBwYWRkaW5nOiAwLjVlbTsK
LSAgICBmb250LXNpemU6IDE2cHg7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi1kaXYu
QW5ub3VuY2VtZW50PmRpdi5DbG9zZWQgewotICAgIGJvcmRlcjogNXB4IHNvbGlkICNlOTgwODA7
Ci0gICAgcGFkZGluZzogMC41ZW07Ci0gICAgZm9udC1zaXplOiAyNHB4OwotICAgIGZvbnQtd2Vp
Z2h0OiBib2xkOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotdGQuVGltZSB7Ci0gICAg
Y29sb3I6ICMwMDA7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNhYWE7Ci0gICAgYmFj
a2dyb3VuZC1jb2xvcjogI2VlZTsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLX0KLQotdGQuQWN0
aXZpdHksdGQuQ2hhbmdlLHRkLkJ1aWxkZXIgewotICAgIGNvbG9yOiAjMzMzMzMzOwotICAgIGJh
Y2tncm91bmQtY29sb3I6ICNDQ0NDQ0M7Ci19Ci0KLXRkLkxhc3RCdWlsZCx0ZC5BY3Rpdml0eSBh
LHRkLkNoYW5nZSBhLHRkLkJ1aWxkZXIgYSB7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwot
fQotCi10ZC5CdWlsZGVyIHsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwotICAgIGxpbmUtaGVp
Z2h0OiAxMjAlOwotfQotCi10ZC5DaGFuZ2UgewotICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLSAg
ICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsKLSAgICAtbW96LWJvcmRlci1yYWRpdXM6IDVw
eDsKLX0KLQotdGQuRXZlbnQgewotICAgIGNvbG9yOiAjNzc3OwotICAgIGJhY2tncm91bmQtY29s
b3I6ICNkZGQ7Ci0gICAgYm9yZGVyLXJhZGl1czogNXB4OwotICAgIC13ZWJraXQtYm9yZGVyLXJh
ZGl1czogNXB4OwotICAgIC1tb3otYm9yZGVyLXJhZGl1czogNXB4OwotfQotCi10ZC5BY3Rpdml0
eSB7Ci0gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTBweDsKLSAgICAtd2Via2l0LWJvcmRl
ci10b3AtbGVmdC1yYWRpdXM6IDEwcHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6
IDEwcHg7Ci0gICAgbWluLWhlaWdodDogMjBweDsKLSAgICBwYWRkaW5nOiAycHggMCAycHggMDsK
LSAgICBmb250LXNpemU6IDlweDsKLX0KLQotdGQuaWRsZSx0ZC53YWl0aW5nLHRkLm9mZmxpbmUs
dGQuYnVpbGRpbmcgewotICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDBweDsKLSAgICAtd2Vi
a2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDBweDsKLSAgICAtbW96LWJvcmRlci1yYWRpdXMt
dG9wbGVmdDogMHB4OwotfQotCi0uTGFzdEJ1aWxkIHsKLSAgICBib3JkZXItdG9wLWxlZnQtcmFk
aXVzOiA1cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA1cHg7Ci0gICAg
LW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6IDVweDsKLSAgICBib3JkZXItdG9wLXJpZ2h0LXJh
ZGl1czogNXB4OwotICAgIC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDVweDsKLSAg
ICAtbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6IDVweDsKLX0KLQotLyogQ29uc29sZSB2aWV3
IHN0eWxlcyAqLwotdGQuRGV2UmV2IHsKLSAgICBwYWRkaW5nOiA0cHggOHB4IDRweCA4cHg7Ci0g
ICAgY29sb3I6ICMzMzMzMzM7Ci0gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4OwotICAg
IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4OwotICAgIC1tb3otYm9yZGVyLXJh
ZGl1cy10b3BsZWZ0OiA1cHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKLSAgICB3aWR0
aDogMSU7Ci19Ci0KLXRkLkRldlJldkNvbGxhcHNlIHsKLSAgICBib3JkZXItYm90dG9tLWxlZnQt
cmFkaXVzOiA1cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7
Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDVweDsKLX0KLQotdGQuRGV2TmFt
ZSB7Ci0gICAgcGFkZGluZzogNHB4IDhweCA0cHggOHB4OwotICAgIGNvbG9yOiAjMzMzMzMzOwot
ICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Ci0gICAgd2lkdGg6IDElOwotICAgIHRleHQtYWxp
Z246IGxlZnQ7Ci19Ci0KLXRkLkRldlN0YXR1cyB7Ci0gICAgcGFkZGluZzogNHB4IDRweCA0cHgg
NHB4OwotICAgIGNvbG9yOiAjMzMzMzMzOwotICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Ci19
Ci0KLXRkLkRldlNsYXZlIHsKLSAgICBwYWRkaW5nOiA0cHggNHB4IDRweCA0cHg7Ci0gICAgY29s
b3I6ICMzMzMzMzM7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKLX0KLQotdGQuZmlyc3Qg
ewotICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDsKLSAgICAtd2Via2l0LWJvcmRlci10
b3AtbGVmdC1yYWRpdXM6IDVweDsKLSAgICAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDogNXB4
OwotfQotCi10ZC5sYXN0IHsKLSAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4OwotICAg
IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDVweDsKLSAgICAtbW96LWJvcmRlci1y
YWRpdXMtdG9wcmlnaHQ6IDVweDsKLX0KLQotdGQuRGV2U3RhdHVzQ2F0ZWdvcnkgewotICAgIGJv
cmRlci1yYWRpdXM6IDVweDsKLSAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsKLSAgICAt
bW96LWJvcmRlci1yYWRpdXM6IDVweDsKLSAgICBib3JkZXItd2lkdGg6IDFweDsKLSAgICBib3Jk
ZXItc3R5bGU6IHNvbGlkOwotfQotCi10ZC5EZXZTdGF0dXNDb2xsYXBzZSB7Ci0gICAgYm9yZGVy
LWJvdHRvbS1yaWdodC1yYWRpdXM6IDVweDsKLSAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmln
aHQtcmFkaXVzOiA1cHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OiA1cHg7
Ci19Ci0KLXRkLkRldkRldGFpbHMgewotICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgcGFk
ZGluZzogOHB4IDhweCA4cHggOHB4OwotICAgIGNvbG9yOiAjMzMzMzMzOwotICAgIGJhY2tncm91
bmQtY29sb3I6ICNlZWU7Ci0gICAgdGV4dC1hbGlnbjogbGVmdDsKLX0KLQotdGQuRGV2Q29tbWVu
dCB7Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICBwYWRkaW5nOiA4cHggOHB4IDhweCA4
cHg7Ci0gICAgY29sb3I6ICMzMzMzMzM7Ci0gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6
IDVweDsKLSAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7Ci0gICAg
LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OiA1cHg7Ci0gICAgYm9yZGVyLWJvdHRvbS1s
ZWZ0LXJhZGl1czogNXB4OwotICAgIC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czog
NXB4OwotICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OiA1cHg7Ci0gICAgYmFja2dy
b3VuZC1jb2xvcjogI2VlZTsKLSAgICB0ZXh0LWFsaWduOiBsZWZ0OwotfQotCi10ZC5BbHQgewot
ICAgIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7Ci19Ci0KLS5sZWdlbmQgewotICAgIGJvcmRlci1y
YWRpdXM6IDVweDsKLSAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsKLSAgICAtbW96LWJv
cmRlci1yYWRpdXM6IDVweDsKLSAgICB3aWR0aDogMTAwcHg7Ci0gICAgbWF4LXdpZHRoOiAxMDBw
eDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgcGFkZGluZzogMnB4IDJweCAycHggMnB4
OwotICAgIGhlaWdodDogMTRweDsKLSAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwotfQotCi0uRGV2
U3RhdHVzQm94IHsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgaGVpZ2h0OiAyMHB4Owot
ICAgIHBhZGRpbmc6IDAgMnB4OwotICAgIGxpbmUtaGVpZ2h0OiAwOwotICAgIHdoaXRlLXNwYWNl
OiBub3dyYXA7Ci19Ci0KLS5EZXZTdGF0dXNCb3ggYSB7Ci0gICAgb3BhY2l0eTogMC44NTsKLSAg
ICBib3JkZXItd2lkdGg6IDFweDsKLSAgICBib3JkZXItc3R5bGU6IHNvbGlkOwotICAgIGJvcmRl
ci1yYWRpdXM6IDRweDsKLSAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweDsKLSAgICAtbW96
LWJvcmRlci1yYWRpdXM6IDRweDsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICB3aWR0aDogOTAl
OwotICAgIGhlaWdodDogMjBweDsKLSAgICBsaW5lLWhlaWdodDogMjBweDsKLSAgICBtYXJnaW4t
bGVmdDogYXV0bzsKLSAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Ci19Ci0KLS5EZXZTbGF2ZUJveCB7
Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGhlaWdodDogMTBweDsKLSAgICBwYWRkaW5n
OiAwIDJweDsKLSAgICBsaW5lLWhlaWdodDogMDsKLSAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwot
fQotCi0uRGV2U2xhdmVCb3ggYSB7Ci0gICAgb3BhY2l0eTogMC44NTsKLSAgICBib3JkZXItd2lk
dGg6IDFweDsKLSAgICBib3JkZXItc3R5bGU6IHNvbGlkOwotICAgIGJvcmRlci1yYWRpdXM6IDRw
eDsKLSAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweDsKLSAgICAtbW96LWJvcmRlci1yYWRp
dXM6IDRweDsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICB3aWR0aDogOTAlOwotICAgIGhlaWdo
dDogMTBweDsKLSAgICBsaW5lLWhlaWdodDogMjBweDsKLSAgICBtYXJnaW4tbGVmdDogYXV0bzsK
LSAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Ci19Ci0KLWEubm9yb3VuZCB7Ci0gICAgYm9yZGVyLXJh
ZGl1czogMHB4OwotICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMHB4OwotICAgIC1tb3otYm9y
ZGVyLXJhZGl1czogMHB4OwotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBtYXJnaW4tdG9w
OiAtOHB4OwotICAgIG1hcmdpbi1ib3R0b206IC04cHg7Ci0gICAgaGVpZ2h0OiAzNnB4OwotICAg
IGJvcmRlci10b3Atd2lkdGg6IDA7Ci0gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDsKLX0KLQot
YS5iZWdpbiB7Ci0gICAgYm9yZGVyLXRvcC13aWR0aDogMXB4OwotICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKLSAgICBtYXJnaW4tdG9wOiAwcHg7Ci0gICAgbWFyZ2luLWJvdHRvbTogLTdweDsKLSAg
ICBoZWlnaHQ6IDI3cHg7Ci0gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OwotICAgIC13
ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OwotICAgIC1tb3otYm9yZGVyLXJhZGl1
cy10b3BsZWZ0OiA0cHg7Ci0gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKLSAgICAt
d2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7Ci0gICAgLW1vei1ib3JkZXItcmFk
aXVzLXRvcHJpZ2h0OiA0cHg7Ci19Ci0KLWEuZW5kIHsKLSAgICBib3JkZXItYm90dG9tLXdpZHRo
OiAxcHg7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIG1hcmdpbi10b3A6IC03cHg7Ci0g
ICAgbWFyZ2luLWJvdHRvbTogMHB4OwotICAgIGhlaWdodDogMjdweDsKLSAgICBib3JkZXItYm90
dG9tLWxlZnQtcmFkaXVzOiA0cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFk
aXVzOiA0cHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDRweDsKLSAgICBi
b3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4OwotICAgIC13ZWJraXQtYm9yZGVyLWJvdHRv
bS1yaWdodC1yYWRpdXM6IDRweDsKLSAgICAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6
IDRweDsKLX0KLQotLmNlbnRlcl9hbGlnbiB7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotfQot
Ci0ucmlnaHRfYWxpZ24gewotICAgIHRleHQtYWxpZ246IHJpZ2h0OwotfQotCi0ubGVmdF9hbGln
biB7Ci0gICAgdGV4dC1hbGlnbjogbGVmdDsKLX0KLQotZGl2LkJ1aWxkV2F0ZXJmYWxsIHsKLSAg
ICBib3JkZXItcmFkaXVzOiA3cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA3cHg7Ci0g
ICAgLW1vei1ib3JkZXItcmFkaXVzOiA3cHg7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAg
IGxlZnQ6IDBweDsKLSAgICB0b3A6IDBweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZG
OwotICAgIHBhZGRpbmc6IDRweCA0cHggNHB4IDRweDsKLSAgICBmbG9hdDogbGVmdDsKLSAgICBk
aXNwbGF5OiBub25lOwotICAgIGJvcmRlci13aWR0aDogMXB4OwotICAgIGJvcmRlci1zdHlsZTog
c29saWQ7Ci19Ci0KLS8qIExhc3RCdWlsZCwgQnVpbGRTdGVwIHN0YXRlcyAqLwotLnN1Y2Nlc3Mg
ewotICAgIGNvbG9yOiAjRkZGRkZGOwotICAgIGJhY2tncm91bmQtY29sb3I6ICM4RkRGNUY7Ci0g
ICAgYm9yZGVyLWNvbG9yOiAjNEY4NTMwOwotfQotCi0uZmFpbHVyZSB7Ci0gICAgY29sb3I6ICNG
RkZGRkY7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI0U5ODA4MDsKLSAgICBib3JkZXItY29sb3I6
ICNBNzcyNzI7Ci19Ci0KLS53YXJuaW5ncyB7Ci0gICAgY29sb3I6ICNGRkZGRkY7Ci0gICAgYmFj
a2dyb3VuZC1jb2xvcjogI0ZGQzM0MzsKLSAgICBib3JkZXItY29sb3I6ICNDMjlENDY7Ci19Ci0K
LS5leGNlcHRpb24gewotICAgIGNvbG9yOiAjRkZGRkZGOwotICAgIGJhY2tncm91bmQtY29sb3I6
ICNFMEIwRkY7Ci0gICAgYm9yZGVyLWNvbG9yOiAjQUNBMEIzOwotfQotCi0uc3RhcnQsLnJ1bm5p
bmcsdGQuYnVpbGRpbmcgewotICAgIGNvbG9yOiAjNjY2NjY2OwotICAgIGJhY2tncm91bmQtY29s
b3I6ICNGRkZDNkM7Ci0gICAgYm9yZGVyLWNvbG9yOiAjQzVDNTZEOwotfQotCi0ub2ZmbGluZSx0
ZC5vZmZsaW5lLC5yZXRyeSB7Ci0gICAgY29sb3I6ICNGRkZGRkY7Ci0gICAgYmFja2dyb3VuZC1j
b2xvcjogI0UwQjBGRjsKLSAgICBib3JkZXItY29sb3I6ICNkZGRkZGQ7Ci19Ci0KLQotLnN0YXJ0
IHsKLSAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAxMHB4OwotICAgIC13ZWJraXQtYm9y
ZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMTBweDsKLSAgICAtbW96LWJvcmRlci1yYWRpdXMtYm90
dG9tbGVmdDogMTBweDsKLSAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMTBweDsKLSAg
ICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAxMHB4OwotICAgIC1tb3otYm9y
ZGVyLXJhZGl1cy1ib3R0b21yaWdodDogMTBweDsKLX0KLQotLm5vdHN0YXJ0ZWQgewotICAgIGJv
cmRlci13aWR0aDogMXB4OwotICAgIGJvcmRlci1zdHlsZTogc29saWQ7Ci0gICAgYm9yZGVyLWNv
bG9yOiAjYWFhOwotICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ci19Ci0KLS5jbG9zZWQgewot
ICAgIGJhY2tncm91bmQtY29sb3I6ICNmZjAwMDA7Ci19Ci0KLS5jbG9zZWQgLmxhcmdlIHsKLSAg
ICBmb250LXNpemU6IDEuNWVtOwotICAgIGZvbnQtd2VpZ2h0OiBib2xkZXI7Ci19Ci0KLXRkLlBy
b2plY3QgYTpob3Zlcix0ZC5zdGFydCBhOmhvdmVyIHsKLSAgICBjb2xvcjogIzAwMDsKLX0KLQot
Lm1pbmktYm94IHsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgaGVpZ2h0OiAyMHB4Owot
ICAgIHBhZGRpbmc6IDAgMnB4OwotICAgIGxpbmUtaGVpZ2h0OiAwOwotICAgIHdoaXRlLXNwYWNl
OiBub3dyYXA7Ci19Ci0KLS5taW5pLWJveCBhIHsKLSAgICBib3JkZXItcmFkaXVzOiAwOwotICAg
IC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsKLSAgICAtbW96LWJvcmRlci1yYWRpdXM6IDA7Ci0g
ICAgZGlzcGxheTogYmxvY2s7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgaGVpZ2h0OiAyMHB4Owot
ICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwotICAgIG1hcmdpbi10b3A6IC0zMHB4OwotfQotCi0ubWlu
aS1jbG9zZWQgewotICAgIC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgIC13ZWJraXQtYm94
LXNpemluZzogYm9yZGVyLWJveDsKLSAgICBib3JkZXI6IDRweCBzb2xpZCByZWQ7Ci19Ci0KLS8q
IGdyaWQgc3R5bGVzICovCi10YWJsZS5HcmlkIHsKLSAgICBib3JkZXItY29sbGFwc2U6IGNvbGxh
cHNlOwotfQotCi10YWJsZS5HcmlkIHRyIHRkIHsKLSAgICBwYWRkaW5nOiAwLjJlbTsKLSAgICBt
YXJnaW46IDBweDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLXRhYmxlLkdyaWQgdHIg
dGQudGl0bGUgewotICAgIGZvbnQtc2l6ZTogOTAlOwotICAgIGJvcmRlci1yaWdodDogMXB4IGdy
YXkgc29saWQ7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IGdyYXkgc29saWQ7Ci19Ci0KLXRhYmxl
LkdyaWQgdHIgdGQuc291cmNlc3RhbXAgewotICAgIGZvbnQtc2l6ZTogOTAlOwotfQotCi10YWJs
ZS5HcmlkIHRyIHRkLmJ1aWxkZXIgewotICAgIHRleHQtYWxpZ246IHJpZ2h0OwotICAgIGZvbnQt
c2l6ZTogOTAlOwotfQotCi10YWJsZS5HcmlkIHRyIHRkLmJ1aWxkIHsKLSAgICBib3JkZXI6IDFw
eCBncmF5IHNvbGlkOwotfQotCi0vKiBjb2x1bW4gY29udGFpbmVyICovCi1kaXYuY29sdW1uIHsK
LSAgICBtYXJnaW46IDAgMmVtIDJlbSAwOwotICAgIGZsb2F0OiBsZWZ0OwotfQotCi0vKiBpbmZv
IHRhYmxlcyAqLwotdGFibGUuaW5mbyB7Ci0gICAgYm9yZGVyLXNwYWNpbmc6IDFweDsKLX0KLQot
dGFibGUuaW5mbyB0ZCB7Ci0gICAgcGFkZGluZzogMC4xZW0gMWVtIDAuMWVtIDFlbTsKLSAgICB0
ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLXRhYmxlLmluZm8gdGggewotICAgIHBhZGRpbmc6IDAu
MmVtIDEuNWVtIDAuMmVtIDEuNWVtOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotdGFi
bGUuaW5mbyB0ZC5sZWZ0IHsKLSAgICB0ZXh0LWFsaWduOiBsZWZ0Ci19Ci0KLS5hbHQgewotICAg
IGJhY2tncm91bmQtY29sb3I6ICNkNmQ2ZDY7Ci19Ci0KLWxpIHsKLSAgICBwYWRkaW5nOiAwLjFl
bSAxZW0gMC4xZW0gMWVtOwotfQotCi0ucmVzdWx0IHsKLSAgICBwYWRkaW5nOiAwLjNlbSAxZW0g
MC4zZW0gMWVtOwotfQotCi0vKiBsb2cgdmlldyAqLwotLmxvZyAqIHsKLSAgICB2bGluazogIzgw
MDA4MDsKLSAgICBmb250LWZhbWlseTogIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9ub3R5cGU7
Ci19Ci0KLXNwYW4uc3Rkb3V0IHsKLSAgICBjb2xvcjogYmxhY2s7Ci19Ci0KLXNwYW4uc3RkZXJy
IHsKLSAgICBjb2xvcjogcmVkOwotfQotCi1zcGFuLmhlYWRlciB7Ci0gICAgY29sb3I6IGJsdWU7
Ci19Ci0KLS8qIHJldmlzaW9uICYgZW1haWwgKi8KLS5yZXZpc2lvbiAuZnVsbCB7Ci0gICAgZGlz
cGxheTogbm9uZTsKLX0KLQotLnVzZXIgLmVtYWlsIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQot
Ci0vKiBjaGFuZ2UgY29tbWVudHMgKHVzZSByZWd1bGFyIGNvbG9ycyBoZXJlKSAqLwotcHJlLmNv
bW1lbnRzPmE6bGluayxwcmUuY29tbWVudHM+YTp2aXNpdGVkIHsKLSAgICBjb2xvcjogYmx1ZTsK
LX0KLQotcHJlLmNvbW1lbnRzPmE6YWN0aXZlIHsKLSAgICBjb2xvcjogcHVycGxlOwotfQpJbmRl
eDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL3Jv
Ym90cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL3JvYm90cy50eHQJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xz
L0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9yb2JvdHMudHh0
CShub25leGlzdGVudCkKQEAgLTEsMTYgKzAsMCBAQAotVXNlci1hZ2VudDogKgotRGlzYWxsb3c6
IC93YXRlcmZhbGwKLURpc2FsbG93OiAvYnVpbGRlcnMKLURpc2FsbG93OiAvY2hhbmdlcwotRGlz
YWxsb3c6IC9idWlsZHNsYXZlcwotRGlzYWxsb3c6IC9zY2hlZHVsZXJzCi1EaXNhbGxvdzogL29u
ZV9saW5lX3Blcl9idWlsZAotRGlzYWxsb3c6IC9vbmVfYm94X3Blcl9idWlsZGVyCi1EaXNhbGxv
dzogL3htbHJwYwotRGlzYWxsb3c6IC9ncmlkCi1EaXNhbGxvdzogL3RncmlkCi1EaXNhbGxvdzog
L2NvbnNvbGUKLURpc2FsbG93OiAvcmVzdWx0cwotRGlzYWxsb3c6IC9kYXNoYm9hcmQKLURpc2Fs
bG93OiAvTGVha3NWaWV3ZXIKLURpc2FsbG93OiAvVGVzdEZhaWx1cmVzCkluZGV4OiBUb29scy9D
SVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcnVuLWJ1aWxkYm90LXRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3J1bi1i
dWlsZGJvdC10ZXN0LnB5CShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcnVuLWJ1aWxkYm90LXRlc3QucHkJKG5vbmV4aXN0ZW50KQpA
QCAtMSwzNDcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAo
QykgMjAxNyBJZ2FsaWEgUy5MLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBt
ZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0jCi1pbXBvcnQgc3lzCi1pbXBvcnQgc2lnbmFsCi1pbXBvcnQg
b3MKLWltcG9ydCBhcmdwYXJzZQotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCB0ZW1wZmlsZQot
aW1wb3J0IHNodXRpbAotaW1wb3J0IHNvY2tldAotaW1wb3J0IGpzb24KLWltcG9ydCB0cmFjZWJh
Y2sKLWltcG9ydCBtdWx0aXByb2Nlc3NpbmcKLWZyb20gdGltZSBpbXBvcnQgc2xlZXAKLQotdGVz
dF9idWlsZGJvdF9tYXN0ZXJfdGFjID0gIiIiCi1pbXBvcnQgb3MKLWZyb20gdHdpc3RlZC5hcHBs
aWNhdGlvbiBpbXBvcnQgc2VydmljZQotdHJ5OgotICAgIGZyb20gYnVpbGRib3QubWFzdGVyLmJv
dCBpbXBvcnQgQnVpbGRNYXN0ZXIKLWV4Y2VwdDoKLSAgICBmcm9tIGJ1aWxkYm90Lm1hc3RlciBp
bXBvcnQgQnVpbGRNYXN0ZXIKLQotYmFzZWRpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJl
YWxwYXRoKF9fZmlsZV9fKSkKLWNvbmZpZ2ZpbGUgPSByJ21hc3Rlci5jZmcnCi0KLWFwcGxpY2F0
aW9uID0gc2VydmljZS5BcHBsaWNhdGlvbignYnVpbGRtYXN0ZXInKQotQnVpbGRNYXN0ZXIoYmFz
ZWRpciwgY29uZmlnZmlsZSkuc2V0U2VydmljZVBhcmVudChhcHBsaWNhdGlvbikKLSIiIgotCi13
b3JrZXJfYnVpbGRib3RfbWFzdGVyX3RhYyA9ICIiIgotaW1wb3J0IG9zCi1mcm9tIHR3aXN0ZWQu
YXBwbGljYXRpb24gaW1wb3J0IHNlcnZpY2UKLWZyb20gYnVpbGRzbGF2ZS5ib3QgaW1wb3J0IEJ1
aWxkU2xhdmUKLQotYmFzZWRpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9f
ZmlsZV9fKSkKLWJ1aWxkbWFzdGVyX2hvc3QgPSAnbG9jYWxob3N0JwotcG9ydCA9IDE3MDAwCi1z
bGF2ZW5hbWUgPSAne30nCi1wYXNzd2QgPSAnMTIzNCcKLWtlZXBhbGl2ZSA9IDYwMAotdXNlcHR5
ID0gMQotCi1hcHBsaWNhdGlvbiA9IHNlcnZpY2UuQXBwbGljYXRpb24oJ2J1aWxkc2xhdmUnKQot
QnVpbGRTbGF2ZShidWlsZG1hc3Rlcl9ob3N0LCBwb3J0LCBzbGF2ZW5hbWUsIHBhc3N3ZCwgYmFz
ZWRpciwga2VlcGFsaXZlLCB1c2VwdHkpLnNldFNlcnZpY2VQYXJlbnQoYXBwbGljYXRpb24pCi0i
IiIKLQotCi1kZWYgY2hlY2tfdGNwX3BvcnRfb3BlbihhZGRyZXNzLCBwb3J0KToKLSAgICBzID0g
c29ja2V0LnNvY2tldCgpCi0gICAgdHJ5OgotICAgICAgICBzLmNvbm5lY3QoKGFkZHJlc3MsIHBv
cnQpKQotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGV4Y2VwdDoKLSAgICAgICAgcmV0dXJuIEZh
bHNlCi0KLQotZGVmIHVwZ3JhZGVfZGJfbmVlZGVkKGxvZyk6Ci0gICAgdHJ5OgotICAgICAgICB3
aXRoIG9wZW4obG9nKSBhcyBmOgotICAgICAgICAgICAgZm9yIGwgaW4gZjoKLSAgICAgICAgICAg
ICAgICBpZiAndXBncmFkZSB0aGUgZGF0YWJhc2UnIGluIGw6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBUcnVlCi0gICAgZXhjZXB0OgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1
cm4gRmFsc2UKLQotCi1kZWYgY3JlYXRlX3RlbXBkaXIodG1wZGlyPU5vbmUpOgotICAgIGlmIHRt
cGRpciBpcyBub3QgTm9uZToKLSAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIodG1wZGlyKToK
LSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9IGlzIG5vdCBhIGRpcmVjdG9yeScuZm9y
bWF0KHRtcGRpcikpCi0gICAgICAgIHJldHVybiB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD1vcy5w
YXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKHRtcGRpciksICd0bXAnKSkKLSAgICByZXR1cm4gdGVt
cGZpbGUubWtkdGVtcCgpCi0KLQotZGVmIHByaW50X2lmX2Vycm9yX3N0ZG91dF9zdGRlcnIoY21k
LCByZXRjb2RlLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIGV4dHJhbXNnPU5vbmUpOgotICAg
IGlmIHJldGNvZGUgIT0gMDoKLSAgICAgICAgaWYgdHlwZShjbWQpID09IHR5cGUoW10pOgotICAg
ICAgICAgICAgY21kID0gJyAnLmpvaW4oY21kKQotICAgICAgICBwcmludCgnV0FSTklORzogIntj
bWR9IiByZXR1cm5lZCB7cmV0Y29kZX0gc3RhdHVzIGNvZGUnLmZvcm1hdChjbWQ9Y21kLCByZXRj
b2RlPXJldGNvZGUpKQotICAgICAgICBpZiBzdGRvdXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAg
ICBwcmludChzdGRvdXQpCi0gICAgICAgIGlmIHN0ZGVyciBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIHByaW50KHN0ZGVycikKLSAgICAgICAgaWYgZXh0cmFtc2cgaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICBwcmludChleHRyYW1zZykKLQotCi1kZWYgc2V0dXBfbWFzdGVyX3dvcmtkaXIoY29u
ZmlnZGlyLCBiYXNlX3dvcmtkaXIpOgotICAgIG1hc3Rlcl93b3JrZGlyID0gb3MucGF0aC5qb2lu
KGJhc2Vfd29ya2RpciwgJ21hc3RlcicpCi0gICAgcHJpbnQoJ0NvcHlpbmcgZmlsZXMgZnJvbSB7
fSB0byB7fSAuLi4nLmZvcm1hdChjb25maWdkaXIsIG1hc3Rlcl93b3JrZGlyKSkKLSAgICBzaHV0
aWwuY29weXRyZWUoY29uZmlnZGlyLCBtYXN0ZXJfd29ya2RpcikKLSAgICBwcmludCgnR2VuZXJh
dGluZyBidWlsZGJvdCBmaWxlcyBhdCB7fSAuLi4nLmZvcm1hdChtYXN0ZXJfd29ya2RpcikpCi0g
ICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihtYXN0ZXJfd29ya2RpciwgJ2J1aWxkYm90LnRhYycp
LCAndycpIGFzIGY6Ci0gICAgICAgIGYud3JpdGUodGVzdF9idWlsZGJvdF9tYXN0ZXJfdGFjKQot
ICAgIG1rcHdkX2NtZCA9IFsnLi9tYWtlX3Bhc3N3b3Jkc19qc29uLnB5J10KLSAgICBta3B3ZF9w
cm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihta3B3ZF9jbWQsIGN3ZD1tYXN0ZXJfd29ya2RpciwK
LSAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vz
cy5TVERPVVQpCi0gICAgc3Rkb3V0LCBzdGRlcnIgPSBta3B3ZF9wcm9jZXNzLmNvbW11bmljYXRl
KCkKLSAgICBwcmludF9pZl9lcnJvcl9zdGRvdXRfc3RkZXJyKG1rcHdkX2NtZCwgbWtwd2RfcHJv
Y2Vzcy5yZXR1cm5jb2RlLCBzdGRvdXQsIHN0ZGVycikKLSAgICByZXR1cm4gbWFzdGVyX3dvcmtk
aXIKLQotCi1kZWYgd2FpdF9mb3JfbWFzdGVyX3JlYWR5KG1hc3Rlcl93b3JrZGlyKToKLSAgICBt
YXN0ZXJfcmVhZHlfY2hlY2tfY291bnRlciA9IDAKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBp
ZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4obWFzdGVyX3dvcmtkaXIsICcubWFzdGVyLWlz
LXJlYWR5JykpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIG1hc3Rlcl9yZWFkeV9j
aGVja19jb3VudGVyID4gNjA6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0VSUk9S
OiBBYm9ydGluZyBhZnRlciB3YWl0aW5nIDYwIHNlY29uZHMgZm9yIHRoZSBtYXN0ZXIgdG8gc3Rh
cnQuJykKLSAgICAgICAgc2xlZXAoMSkKLSAgICAgICAgbWFzdGVyX3JlYWR5X2NoZWNrX2NvdW50
ZXIgKz0gMQotCi0KLWRlZiBzdGFydF9tYXN0ZXIobWFzdGVyX3dvcmtkaXIpOgotICAgICMgVGhp
cyBpcyBzdGFydGVkIHZpYSBtdWx0aXByb2Nlc3NpbmcuIFdlIHNldCBhIG5ldyBwcm9jZXNzIGdy
b3VwIGhlcmUKLSAgICAjIHRvIGJlIGFibGUgdG8gcmVsaWFibHkga2lsbCB0aGlzIHN1YnByb2Nl
c3MgYW5kIGFsbCBvZiBpdHMgY2hpbGQgb24gY2xlYW4uCi0gICAgb3Muc2V0c2lkKCkKLSAgICBi
dWlsZG1hc3RlcmxvZyA9IG9zLnBhdGguam9pbihtYXN0ZXJfd29ya2RpciwgJ2J1aWxkbWFzdGVy
LmxvZycpCi0gICAgZGJ1cGdyYWRlZCA9IEZhbHNlCi0gICAgcmV0cnkgPSBUcnVlCi0gICAgaWYg
Y2hlY2tfdGNwX3BvcnRfb3BlbignbG9jYWxob3N0JywgODcxMCk6Ci0gICAgICAgIHByaW50KCdF
UlJPUjogVGhlcmUgaXMgc29tZSBwcm9jZXNzIGFscmVhZHkgbGlzdGVuaW5nIGluIHBvcnQgODE3
MCcpCi0gICAgICAgIHJldHVybiAxCi0gICAgd2hpbGUgcmV0cnk6Ci0gICAgICAgIHJldHJ5ID0g
RmFsc2UKLSAgICAgICAgcHJpbnQoJ1N0YXJ0aW5nIHRoZSB0d2lzdGQgcHJvY2VzcyAuLi4nKQot
ICAgICAgICB0d2lzdGRfY21kID0gWyd0d2lzdGQnLCAnLWwnLCBidWlsZG1hc3RlcmxvZywgJy1u
b3knLCAnYnVpbGRib3QudGFjJ10KLSAgICAgICAgdHdpc3RkX3Byb2Nlc3MgPSBzdWJwcm9jZXNz
LlBvcGVuKHR3aXN0ZF9jbWQsIGN3ZD1tYXN0ZXJfd29ya2RpciwKLSAgICAgICAgICAgICAgICAg
ICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAg
ICAgICB3aGlsZSB0d2lzdGRfcHJvY2Vzcy5wb2xsKCkgaXMgTm9uZToKLSAgICAgICAgICAgIGlm
IGNoZWNrX3RjcF9wb3J0X29wZW4oJ2xvY2FsaG9zdCcsIDg3MTApOgotICAgICAgICAgICAgICAg
IHByaW50KCdUZXN0IGJ1aWxkbWFzdGVyIHJlYWR5IS5cblxuJwotICAgICAgICAgICAgICAgICAg
ICAgICsgJyAtIFNlZSBidWlsZG1hc3RlciBsb2c6XG4nCi0gICAgICAgICAgICAgICAgICAgICAg
KyAnICAgICB0YWlsIC1mIHt9XG4nLmZvcm1hdChidWlsZG1hc3RlcmxvZykKLSAgICAgICAgICAg
ICAgICAgICAgICArICcgLSBPcGVuIGEgYnJvd3NlciB0bzpcbicKLSAgICAgICAgICAgICAgICAg
ICAgICArICcgICAgIGh0dHA6Ly9sb2NhbGhvc3Q6ODcxMFxuJwotICAgICAgICAgICAgICAgICAg
ICAgICsgJyAtIENyZWRlbnRpYWxzIGZvciB0cmlnZ2VyaW5nIG1hbnVhbCBidWlsZHM6XG4nCi0g
ICAgICAgICAgICAgICAgICAgICAgKyAnICAgICBsb2dpbjogICAgIGNvbW1pdHRlckB3ZWJraXQu
b3JnXG4nCi0gICAgICAgICAgICAgICAgICAgICAgKyAnICAgICBwYXNzd29yZDogIGNvbW1pdHRl
cnBhc3N3b3JkXG4nKQotICAgICAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4obWFz
dGVyX3dvcmtkaXIsICcubWFzdGVyLWlzLXJlYWR5JyksICd3JykgYXMgZjoKLSAgICAgICAgICAg
ICAgICAgICAgZi53cml0ZSgncmVhZHknKQotICAgICAgICAgICAgICAgIHR3aXN0ZF9wcm9jZXNz
LndhaXQoKQotICAgICAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgICAgICBzbGVlcCgxKQot
ICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHR3aXN0ZF9wcm9jZXNzLmNvbW11bmljYXRlKCkKLSAg
ICAgICAgaWYgdHdpc3RkX3Byb2Nlc3MucmV0dXJuY29kZSA9PSAwIGFuZCB1cGdyYWRlX2RiX25l
ZWRlZChidWlsZG1hc3RlcmxvZykgYW5kIG5vdCBkYnVwZ3JhZGVkOgotICAgICAgICAgICAgcmV0
cnkgPSBUcnVlCi0gICAgICAgICAgICBkYnVwZ3JhZGVkID0gVHJ1ZQotICAgICAgICAgICAgcHJp
bnQoJ1VwZ3JhZGluZyB0aGUgZGF0YWJhc2UgLi4uJykKLSAgICAgICAgICAgIHVwZ3JhZGVfY21k
ID0gWydidWlsZGJvdCcsICd1cGdyYWRlLW1hc3RlcicsIG1hc3Rlcl93b3JrZGlyXQotICAgICAg
ICAgICAgdXBncmFkZV9wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbih1cGdyYWRlX2NtZCwgY3dk
PW1hc3Rlcl93b3JrZGlyLAotICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5Q
SVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCi0gICAgICAgICAgICBzdGRvdXQsIHN0ZGVy
ciA9IHVwZ3JhZGVfcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgICAgICAgICBwcmludF9pZl9l
cnJvcl9zdGRvdXRfc3RkZXJyKHVwZ3JhZGVfY21kLCB1cGdyYWRlX3Byb2Nlc3MucmV0dXJuY29k
ZSwgc3Rkb3V0LCBzdGRlcnIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludF9pZl9l
cnJvcl9zdGRvdXRfc3RkZXJyKHR3aXN0ZF9jbWQsIHR3aXN0ZF9wcm9jZXNzLnJldHVybmNvZGUs
IHN0ZG91dCwgc3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnQ2hlY2sgdGhlIGxvZyBhdCB7fScuZm9ybWF0KGJ1aWxkbWFzdGVybG9nKSkKLSAgICByZXR1
cm4gMAotCi0KLWRlZiBnZXRfbGlzdF93b3JrZXJzKG1hc3Rlcl93b3JrZGlyKToKLSAgICBwYXNz
d29yZF9saXN0ID0gb3MucGF0aC5qb2luKG1hc3Rlcl93b3JrZGlyLCAncGFzc3dvcmRzLmpzb24n
KQotICAgIHdpdGggb3BlbihwYXNzd29yZF9saXN0KSBhcyBmOgotICAgICAgICBwYXNzd29yZHMg
PSBqc29uLmxvYWQoZikKLSAgICBsaXN0X3dvcmtlcnMgPSBbXQotICAgIGZvciB3b3JrZXIgaW4g
cGFzc3dvcmRzOgotICAgICAgICBsaXN0X3dvcmtlcnMuYXBwZW5kKHN0cih3b3JrZXIpKQotICAg
IHJldHVybiBsaXN0X3dvcmtlcnMKLQotCi1kZWYgc3RhcnRfd29ya2VyKGJhc2Vfd29ya2Rpciwg
d29ya2VyKToKLSAgICAjIFRoaXMgaXMgc3RhcnRlZCB2aWEgbXVsdGlwcm9jZXNzaW5nLiBXZSBz
ZXQgYSBuZXcgcHJvY2VzcyBncm91cCBoZXJlCi0gICAgIyB0byBiZSBhYmxlIHRvIHJlbGlhYmx5
IGtpbGwgdGhpcyBzdWJwcm9jZXNzIGFuZCBhbGwgb2YgaXRzIGNoaWxkIG9uIGNsZWFuLgotICAg
IG9zLnNldHNpZCgpCi0gICAgd29ya2VyX3dvcmtkaXIgPSBvcy5wYXRoLmpvaW4oYmFzZV93b3Jr
ZGlyLCB3b3JrZXIpCi0gICAgb3MubWtkaXIod29ya2VyX3dvcmtkaXIpCi0gICAgd2l0aCBvcGVu
KG9zLnBhdGguam9pbih3b3JrZXJfd29ya2RpciwgJ2J1aWxkYm90LnRhYycpLCAndycpIGFzIGY6
Ci0gICAgICAgIGYud3JpdGUod29ya2VyX2J1aWxkYm90X21hc3Rlcl90YWMuZm9ybWF0KHdvcmtl
cikpCi0gICAgdHdpc3RkX2NtZCA9IFsndHdpc3RkJywgJy1sJywgJ3dvcmtlci5sb2cnLCAnLW5v
eScsICdidWlsZGJvdC50YWMnXQotICAgIHR3aXN0ZF93b3JrZXJfcHJvY2VzcyA9IHN1YnByb2Nl
c3MuUG9wZW4odHdpc3RkX2NtZCwgY3dkPXdvcmtlcl93b3JrZGlyLAotICAgICAgICBzdGRvdXQ9
c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCi0gICAgdHJ5OgotICAg
ICAgICBzdGRvdXQsIHN0ZGVyciA9IHR3aXN0ZF93b3JrZXJfcHJvY2Vzcy5jb21tdW5pY2F0ZSgp
Ci0gICAgZXhjZXB0OgotICAgICAgICB0d2lzdGRfd29ya2VyX3Byb2Nlc3Mua2lsbCgpCi0gICAg
ICAgIHJldHVybgotICAgIHByaW50X2lmX2Vycm9yX3N0ZG91dF9zdGRlcnIodHdpc3RkX2NtZCwg
dHdpc3RkX3dvcmtlcl9wcm9jZXNzLnJldHVybmNvZGUsIHN0ZG91dCwgc3RkZXJyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NoZWNrIHRoZSBsb2cgYXQge30nLmZvcm1hdChv
cy5wYXRoLmpvaW4od29ya2VyX3dvcmtkaXIsICd3b3JrZXIubG9nJykpKQotCi0KLWRlZiBjbGVh
bih0ZW1wX2Rpcik6Ci0gICAgaWYgb3MucGF0aC5pc2Rpcih0ZW1wX2Rpcik6Ci0gICAgICAgIHBy
aW50KCdcblxuQ2xlYW5pbmcge30gLi4uIFxuJy5mb3JtYXQodGVtcF9kaXIpKQotICAgICAgICAj
IHNodXRpbC5ybXRyZWUgY2FuIGZhaWwgaWYgd2UgaG9sZCBhbiBvcGVuIGZpbGUgZGVzY3JpcHRv
ciBvbiB0ZW1wX2RpcgotICAgICAgICAjICh3aGljaCBpcyB2ZXJ5IGxpa2VseSB3aGVuIGNsZWFu
aW5nKSBvciBpZiB0ZW1wX2RpciBpcyBhIE5GUyBtb3VudC4KLSAgICAgICAgIyBVc2Ugcm0gaW5z
dGVhZCB0aGF0IGFsd2F5cyB3b3Jrcy4KLSAgICAgICAgcm0gPSBzdWJwcm9jZXNzLlBvcGVuKFsn
cm0nLCAnLWZyJywgdGVtcF9kaXJdKQotICAgICAgICBybS53YWl0KCkKLQotCi1kZWYgY21kX2V4
aXN0cyhjbWQpOgotICAgIHJldHVybiBhbnkob3MuYWNjZXNzKG9zLnBhdGguam9pbihwYXRoLCBj
bWQpLCBvcy5YX09LKQotICAgICAgICAgICAgICAgZm9yIHBhdGggaW4gb3MuZW52aXJvblsnUEFU
SCddLnNwbGl0KG9zLnBhdGhzZXApKQotCi0KLWRlZiBjaGVja19idWlsZGJvdF9pbnN0YWxsZWQo
KToKLSAgICBpZiBjbWRfZXhpc3RzKCd0d2lzdGQnKSBhbmQgY21kX2V4aXN0cygnYnVpbGRib3Qn
KToKLSAgICAgICAgcmV0dXJuCi0gICAgcmFpc2UgUnVudGltZUVycm9yKCdCdWlsZGJvdCBpcyBu
b3QgaW5zdGFsbGVkLicpCi0KLQotZGVmIHNldHVwX3ZpcnR1YWxlbnYoYmFzZV93b3JrZGlyX3Rl
bXApOgotICAgIGlmIGNtZF9leGlzdHMoJ3ZpcnR1YWxlbnYnKToKLSAgICAgICAgcHJpbnQoJ1Nl
dHRpbmcgdXAgdmlydHVhbGVudiBhdCB7fSAuLi4gJy5mb3JtYXQoYmFzZV93b3JrZGlyX3RlbXAp
KQotICAgICAgICB2aXJ0dWFsZW52X2NtZCA9IFsndmlydHVhbGVudicsICctcCcsICdweXRob24y
JywgJ3ZlbnYnXQotICAgICAgICB2aXJ0dWFsZW52X3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVu
KHZpcnR1YWxlbnZfY21kLCBjd2Q9YmFzZV93b3JrZGlyX3RlbXAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBz
dGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCi0gICAgICAgIHN0ZG91dCwgc3RkZXJyID0gdmlydHVh
bGVudl9wcm9jZXNzLmNvbW11bmljYXRlKCkKLSAgICAgICAgcHJpbnRfaWZfZXJyb3Jfc3Rkb3V0
X3N0ZGVycih2aXJ0dWFsZW52X2NtZCwgdmlydHVhbGVudl9wcm9jZXNzLnJldHVybmNvZGUsIHN0
ZG91dCwgc3RkZXJyKQotICAgICAgICB2aXJ0dWFsZW52X2JpbmRpciA9IG9zLnBhdGguam9pbihi
YXNlX3dvcmtkaXJfdGVtcCwgJ3ZlbnYnLCAnYmluJykKLSAgICAgICAgdmlydHVhbGVudl9waXAg
PSBvcy5wYXRoLmpvaW4odmlydHVhbGVudl9iaW5kaXIsICdwaXAnKQotICAgICAgICBpZiBub3Qg
b3MuYWNjZXNzKHZpcnR1YWxlbnZfcGlwLCBvcy5YX09LKToKLSAgICAgICAgICAgIHByaW50KCdT
b21ldGhpbmcgd2VudCB3cm9uZyBzZXR0aW5nIHVwIHZpcnR1YWxlbnYnCi0gICAgICAgICAgICAg
ICAgICAnVHJ5aW5nIHRvIGNvbnRpbnVlIHVzaW5nIHRoZSBzeXN0ZW0gdmVyc2lvbiBvZiBidWls
ZGJvdCcpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcHJpbnQoJ1NldHRpbmcgdXAgYnVp
bGRib3QgZGVwZW5kZW5jaWVzIG9uIHRoZSB2aXJ0dWFsZW52IC4uLiAnKQotICAgICAgICAjIFRo
ZSBpZGVhIGlzIHRvIGluc3RhbGwgdGhlIHZlcnkgc2FtZSB2ZXJzaW9uIG9mIGJ1aWxkYm90IGFu
ZCBpdHMKLSAgICAgICAgIyBkZXBlbmRlbmNpZXMgdGhhbiB0aGUgb25lcyB1c2VkIGZvciBydW5u
aW5nIGh0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9hYm91dAotICAgICAgICBwaXBfY21kID0gW3Zp
cnR1YWxlbnZfcGlwLCAnaW5zdGFsbCcsCi0gICAgICAgICAgICAgICAgICAgICdidWlsZGJvdD09
MC44LjZwMScsCi0gICAgICAgICAgICAgICAgICAgICdidWlsZGJvdC1zbGF2ZT09MC44LjZwMScs
Ci0gICAgICAgICAgICAgICAgICAgICd0d2lzdGVkPT0xMi4xLjAnLAotICAgICAgICAgICAgICAg
ICAgICAnamluamEyPT0yLjYnLAotICAgICAgICAgICAgICAgICAgICAnc3FsYWxjaGVteT09MC43
LjgnLAotICAgICAgICAgICAgICAgICAgICAnc3FsYWxjaGVteS1taWdyYXRlPT0wLjEyLjAnXQot
ICAgICAgICBwaXBfcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4ocGlwX2NtZCwgY3dkPWJhc2Vf
d29ya2Rpcl90ZW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
b3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgICAgICBz
dGRvdXQsIHN0ZGVyciA9IHBpcF9wcm9jZXNzLmNvbW11bmljYXRlKCkKLSAgICAgICAgcHJpbnRf
aWZfZXJyb3Jfc3Rkb3V0X3N0ZGVycihwaXBfY21kLCBwaXBfcHJvY2Vzcy5yZXR1cm5jb2RlLCBz
dGRvdXQsIHN0ZGVycikKLSAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gdmlydHVhbGVudl9i
aW5kaXIgKyAnOicgKyBvcy5lbnZpcm9uWydQQVRIJ10KLSAgICAgICAgcmV0dXJuCi0gICAgcHJp
bnQoJ1dBUk5JTkc6IHZpcnR1YWxlbnYgbm90IGluc3RhbGxlZC4gJwotICAgICAgICAgICdUcnlp
bmcgdG8gY29udGludWUgdXNpbmcgdGhlIHN5c3RlbSB2ZXJzaW9uIG9mIGJ1aWxkYm90JykKLQot
Ci1kZWYgY29uZmlnZGlyX2lzX3ZhbGlkKGNvbmZpZ2Rpcik6Ci0gICAgcmV0dXJuKG9zLnBhdGgu
aXNkaXIoY29uZmlnZGlyKSBhbmQKLSAgICAgICAgICAgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5q
b2luKGNvbmZpZ2RpciwgJ2NvbmZpZy5qc29uJykpIGFuZAotICAgICAgICAgICBvcy5wYXRoLmlz
ZmlsZShvcy5wYXRoLmpvaW4oY29uZmlnZGlyLCAnbWFzdGVyLmNmZycpKSBhbmQKLSAgICAgICAg
ICAgb3MuYWNjZXNzKG9zLnBhdGguam9pbihjb25maWdkaXIsICdtYWtlX3Bhc3N3b3Jkc19qc29u
LnB5JyksIG9zLlhfT0spKQotCi0KLWRlZiBtYWluKGNvbmZpZ2RpciwgYmFzZXRlbXBkaXI9Tm9u
ZSwgbm9fY2xlYW49RmFsc2UsIG5vX3dvcmtlcnM9RmFsc2UsIHVzZV9zeXN0ZW1fdmVyc2lvbj1G
YWxzZSk6Ci0gICAgY29uZmlnZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgucmVhbHBhdGgo
Y29uZmlnZGlyKSkKLSAgICBpZiBub3QgY29uZmlnZGlyX2lzX3ZhbGlkKGNvbmZpZ2Rpcik6Ci0g
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1RoZSBjb25maWdkaXIge30gZG9udCBjb250YWlucyB0
aGUgYnVpbGRtYXN0ZXIgZmlsZXMgZXhwZWN0ZWQgYnkgdGhpcyBzY3JpcHQnLmZvcm1hdChjb25m
aWdkaXIpKQotICAgIGJhc2Vfd29ya2Rpcl90ZW1wID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgu
cmVhbHBhdGgoY3JlYXRlX3RlbXBkaXIoYmFzZXRlbXBkaXIpKSkKLSAgICBpZiBiYXNlX3dvcmtk
aXJfdGVtcC5zdGFydHN3aXRoKGNvbmZpZ2Rpcik6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
J1RoZSB0ZW1wb3JhbCB3b3JraW5nIGRpcmVjdG9yeSB7fSBjYW50IGJlIGxvY2F0ZWQgaW5zaWRl
IGNvbmZpZ2RpciB7fScuZm9ybWF0KGJhc2Vfd29ya2Rpcl90ZW1wLCBjb25maWdkaXIpKQotICAg
IHRyeToKLSAgICAgICAgaWYgbm90IHVzZV9zeXN0ZW1fdmVyc2lvbjoKLSAgICAgICAgICAgIHNl
dHVwX3ZpcnR1YWxlbnYoYmFzZV93b3JrZGlyX3RlbXApCi0gICAgICAgIGNoZWNrX2J1aWxkYm90
X2luc3RhbGxlZCgpCi0gICAgICAgIG1hc3Rlcl93b3JrZGlyID0gc2V0dXBfbWFzdGVyX3dvcmtk
aXIoY29uZmlnZGlyLCBiYXNlX3dvcmtkaXJfdGVtcCkKLSAgICAgICAgbWFzdGVyX3J1bm5lciA9
IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKHRhcmdldD1zdGFydF9tYXN0ZXIsIGFyZ3M9KG1hc3Rl
cl93b3JrZGlyLCkpCi0gICAgICAgIG1hc3Rlcl9ydW5uZXIuc3RhcnQoKQotICAgICAgICB3YWl0
X2Zvcl9tYXN0ZXJfcmVhZHkobWFzdGVyX3dvcmtkaXIpCi0gICAgICAgIGlmIG5vX3dvcmtlcnM6
Ci0gICAgICAgICAgICBwcmludCgnIC0gVG8gbWFudWFsbHkgYXR0YWNoIGEgYnVpbGQgd29ya2Vy
IHVzZSB0aGlzIGluZm86XG4nCi0gICAgICAgICAgICAgICAgICArICcgICAgIFRDUCBwb3J0IGZv
ciB0aGUgd29ya2VyLXRvLW1hc3RlciBjb25uZWN0aW9uOiAxNzAwMFxuJwotICAgICAgICAgICAg
ICAgICAgKyAnICAgICB3b3JrZXItaWQ6IHRoZSBvbmUgZGVmaW5lZCBhdCB7fVxuJy5mb3JtYXQo
b3MucGF0aC5qb2luKG1hc3Rlcl93b3JrZGlyLCAncGFzc3dvcmRzLmpzb24nKSkKLSAgICAgICAg
ICAgICAgICAgICsgJyAgICAgcGFzc3dvcmQ6ICAxMjM0XG4nKQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgd29ya2VyX3J1bm5lcnMgPSBbXQotICAgICAgICAgICAgZm9yIHdvcmtlciBpbiBn
ZXRfbGlzdF93b3JrZXJzKG1hc3Rlcl93b3JrZGlyKToKLSAgICAgICAgICAgICAgICB3b3JrZXJf
cnVubmVyID0gbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3ModGFyZ2V0PXN0YXJ0X3dvcmtlciwgYXJn
cz0oYmFzZV93b3JrZGlyX3RlbXAsIHdvcmtlciwpKQotICAgICAgICAgICAgICAgIHdvcmtlcl9y
dW5uZXIuc3RhcnQoKQotICAgICAgICAgICAgICAgIHdvcmtlcl9ydW5uZXJzLmFwcGVuZCh3b3Jr
ZXJfcnVubmVyKQotICAgICAgICAgICAgcHJpbnQoJyAtIFdvcmtlcnMgc3RhcnRlZCEuXG4nCi0g
ICAgICAgICAgICAgICAgICArICcgICAgIENoZWNrIHRoZSBsb2cgZm9yIGVhY2ggb25lIGF0IHt9
LyR7d29ya2VyLW5hbWUtaWR9L3dvcmtlci5sb2dcbicuZm9ybWF0KGJhc2Vfd29ya2Rpcl90ZW1w
KQotICAgICAgICAgICAgICAgICAgKyAnICAgICB0YWlsIC1mIHt9Lyovd29ya2VyLmxvZ1xuJy5m
b3JtYXQoYmFzZV93b3JrZGlyX3RlbXApKQotICAgICAgICAgICAgZm9yIHdvcmtlcl9ydW5uZXIg
aW4gd29ya2VyX3J1bm5lcnM6Ci0gICAgICAgICAgICAgICAgd29ya2VyX3J1bm5lci5qb2luKCkK
LSAgICAgICAgbWFzdGVyX3J1bm5lci5qb2luKCkKLSAgICBleGNlcHQ6Ci0gICAgICAgIHRyYWNl
YmFjay5wcmludF9leGMoKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAg
ICMgVGhlIGNoaWxkcmVuIG1heSBleGl0IGJldHdlZW4gdGhlIGNoZWNrIGFuZCB0aGUga2lsbCBj
YWxsLgotICAgICAgICAgICAgIyBJZ25vcmUgYW55IGV4Y2VwdGlvbiByYWlzZWQgaGVyZS4KLSAg
ICAgICAgICAgIGZvciBjIGluIG11bHRpcHJvY2Vzc2luZy5hY3RpdmVfY2hpbGRyZW4oKToKLSAg
ICAgICAgICAgICAgICAjIFNlbmQgdGhlIHNpZ25hbCB0byB0aGUgd2hvbGUgcHJvY2VzcyBncm91
cC4KLSAgICAgICAgICAgICAgICAjIE90aGVyd2lzZSBzb21lIHR3aXN0ZCBzdWItY2hpbGRzIGNh
biByZW1haW4gYWxpdmUuCi0gICAgICAgICAgICAgICAgb3Mua2lsbHBnKG9zLmdldHBnaWQoYy5w
aWQpLCBzaWduYWwuU0lHS0lMTCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcGFzcwot
ICAgICAgICBpZiBub3Qgbm9fY2xlYW46Ci0gICAgICAgICAgICBjbGVhbihiYXNlX3dvcmtkaXJf
dGVtcCkKLSAgICAgICAgc3lzLmV4aXQoMCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgotICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKLSAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KCctLWNvbmZpZy1kaXInLCBoZWxwPSdQYXRoIHRvIHRoZSBkaXJlY3Rvcnkgb2Yg
dGhlIGJ1aWxkIG1hc3RlciBjb25maWcgZmlsZXMuICcKLSAgICAgICAgICAgICAgICAgICAgICAg
ICdEZWZhdWxzIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhpcyBzY3JpcHQgaXMgbG9jYXRlZC4n
LAotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nY29uZmlnZGlyJywgdHlwZT1zdHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PW9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykp
Ci0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1iYXNlLXRlbXAtZGlyJywgaGVscD0nUGF0aCB3
aGVyZSB0aGUgdGVtcG9yYWwgd29ya2luZyBkaXJlY3Rvcnkgd2lsbCBiZSBjcmVhdGVkLiAnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnTm90ZTogVG8gdHJpZ2dlciB0ZXN0IGJ1aWxkcyB3aXRo
IHRoZSB0ZXN0IHdvcmtlcnMgeW91IG5lZWQgZW5vdWdoIGZyZWUgc3BhY2Ugb24gdGhhdCBwYXRo
LicsCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdiYXNldGVtcGRpcicsIGRlZmF1bHQ9
Tm9uZSwgdHlwZT1zdHIpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1uby1jbGVhbicsIGhl
bHA9J0RvIG5vdCBjbGVhbiB0aGUgdGVtcG9yYWwgd29ya2luZyBkaXIgb24gZXhpdC4nLAotICAg
ICAgICAgICAgICAgICAgICAgICAgZGVzdD0nbm9fY2xlYW4nLCBhY3Rpb249J3N0b3JlX3RydWUn
KQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm8td29ya2VycycsIGhlbHA9J0RvIG5vdCBz
dGFydCB0aGUgdGVzdCB3b3JrZXJzLicsCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdu
b193b3JrZXJzJywgYWN0aW9uPSdzdG9yZV90cnVlJykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KCctLXVzZS1zeXN0ZW0tdmVyc2lvbicsIGhlbHA9J0luc3RlYWQgb2Ygc2V0dGluZyB1cCBhIHZp
cnR1YWxlbnYgd2l0aCB0aGUgYnVpbGRib3QgdmVyc2lvbiAnCi0gICAgICAgICAgICAgICAgICAg
ICAgICAndXNlZCBieSBidWlsZC53ZWJraXQub3JnLCB1c2UgdGhlIGJ1aWxkYm90IHZlcnNpb24g
aW5zdGFsbGVkIG9uIHRoaXMgc3lzdGVtLicsCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0
PSd1c2Vfc3lzdGVtX3ZlcnNpb24nLCBhY3Rpb249J3N0b3JlX3RydWUnKQotICAgIGFyZ3MgPSBw
YXJzZXIucGFyc2VfYXJncygpCi0gICAgbWFpbihhcmdzLmNvbmZpZ2RpciwgYXJncy5iYXNldGVt
cGRpciwgYXJncy5ub19jbGVhbiwgYXJncy5ub193b3JrZXJzLCBhcmdzLnVzZV9zeXN0ZW1fdmVy
c2lvbikKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9ydW4tYnVpbGRib3QtdGVzdC5weQpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpl
eGVjdXRhYmxlCiMjIC0xICswLDAgIyMKLSoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9z
dGVwcy5weQkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3N0ZXBzLnB5CShub25leGlzdGVudCkKQEAgLTEsMTA3NiArMCwwIEBACi0j
IENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSBidWlsZGJv
dC5wcm9jZXNzIGltcG9ydCBidWlsZHN0ZXAsIGZhY3RvcnksIHByb3BlcnRpZXMKLWZyb20gYnVp
bGRib3Quc3RlcHMgaW1wb3J0IG1hc3Rlciwgc2hlbGwsIHNvdXJjZSwgdHJhbnNmZXIsIHRyaWdn
ZXIKLWZyb20gYnVpbGRib3Quc3RhdHVzLmJ1aWxkZXIgaW1wb3J0IFNVQ0NFU1MsIEZBSUxVUkUs
IFdBUk5JTkdTLCBTS0lQUEVELCBFWENFUFRJT04KLQotZnJvbSB0d2lzdGVkLmludGVybmV0IGlt
cG9ydCBkZWZlcgotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNvY2tldAotaW1wb3J0
IGpzb24KLWltcG9ydCBjU3RyaW5nSU8KLWltcG9ydCB1cmxsaWIKLQotQVBQTEVfV0VCS0lUX0FX
U19QUk9YWSA9ICJodHRwOi8vcHJveHkwMS53ZWJraXQub3JnOjMxMjgiCi1TM1VSTCA9ICJodHRw
czovL3MzLXVzLXdlc3QtMi5hbWF6b25hd3MuY29tLyIKLVdpdGhQcm9wZXJ0aWVzID0gcHJvcGVy
dGllcy5XaXRoUHJvcGVydGllcwotUkVTVUxUU19XRUJLSVRfVVJMID0gJ2h0dHBzOi8vcmVzdWx0
cy53ZWJraXQub3JnJwotUkVTVUxUU19TRVJWRVJfQVBJX0tFWSA9ICdSRVNVTFRTX1NFUlZFUl9B
UElfS0VZJwotQlVJTERfV0VCS0lUX1VSTCA9IHNvY2tldC5nZXRob3N0bmFtZSgpLnN0cmlwKCkK
LQotCi1jbGFzcyBUZXN0V2l0aEZhaWx1cmVDb3VudChzaGVsbC5UZXN0KToKLSAgICBmYWlsZWRU
ZXN0c0Zvcm1hdFN0cmluZyA9ICIlZCB0ZXN0JXMgZmFpbGVkIgotCi0gICAgZGVmIGNvdW50RmFp
bHVyZXMoc2VsZiwgY21kKToKLSAgICAgICAgcmV0dXJuIDAKLQotICAgIGRlZiBjb21tYW5kQ29t
cGxldGUoc2VsZiwgY21kKToKLSAgICAgICAgc2hlbGwuVGVzdC5jb21tYW5kQ29tcGxldGUoc2Vs
ZiwgY21kKQotICAgICAgICBzZWxmLmZhaWxlZFRlc3RDb3VudCA9IHNlbGYuY291bnRGYWlsdXJl
cyhjbWQpCi0gICAgICAgIHNlbGYuZmFpbGVkVGVzdFBsdXJhbFN1ZmZpeCA9ICIiIGlmIHNlbGYu
ZmFpbGVkVGVzdENvdW50ID09IDEgZWxzZSAicyIKLQotICAgIGRlZiBldmFsdWF0ZUNvbW1hbmQo
c2VsZiwgY21kKToKLSAgICAgICAgaWYgc2VsZi5mYWlsZWRUZXN0Q291bnQ6Ci0gICAgICAgICAg
ICByZXR1cm4gRkFJTFVSRQotCi0gICAgICAgIGlmIGNtZC5yYyAhPSAwOgotICAgICAgICAgICAg
cmV0dXJuIEZBSUxVUkUKLQotICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0gICAgZGVmIGdldFRl
eHQoc2VsZiwgY21kLCByZXN1bHRzKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VGV4dDIoY21k
LCByZXN1bHRzKQotCi0gICAgZGVmIGdldFRleHQyKHNlbGYsIGNtZCwgcmVzdWx0cyk6Ci0gICAg
ICAgIGlmIHJlc3VsdHMgIT0gU1VDQ0VTUyBhbmQgc2VsZi5mYWlsZWRUZXN0Q291bnQ6Ci0gICAg
ICAgICAgICByZXR1cm4gW3NlbGYuZmFpbGVkVGVzdHNGb3JtYXRTdHJpbmcgJSAoc2VsZi5mYWls
ZWRUZXN0Q291bnQsIHNlbGYuZmFpbGVkVGVzdFBsdXJhbFN1ZmZpeCldCi0KLSAgICAgICAgcmV0
dXJuIFtzZWxmLm5hbWVdCi0KLQotY2xhc3MgQ29uZmlndXJlQnVpbGQoYnVpbGRzdGVwLkJ1aWxk
U3RlcCk6Ci0gICAgbmFtZSA9ICJjb25maWd1cmUtYnVpbGQiCi0gICAgZGVzY3JpcHRpb24gPSBb
ImNvbmZpZ3VyaW5nIGJ1aWxkIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImNvbmZpZ3VyZWQg
YnVpbGQiXQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9u
LCBhcmNoaXRlY3R1cmUsIGJ1aWxkT25seSwgYWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNlX21v
ZGVsLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBidWlsZHN0ZXAuQnVpbGRTdGVwLl9faW5p
dF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKLSAgICAgICAgc2VsZi5wbGF0Zm9ybSA9IHBsYXRm
b3JtCi0gICAgICAgIGlmIHBsYXRmb3JtICE9ICdqc2Mtb25seSc6Ci0gICAgICAgICAgICBzZWxm
LnBsYXRmb3JtID0gcGxhdGZvcm0uc3BsaXQoJy0nLCAxKVswXQotICAgICAgICBzZWxmLmZ1bGxQ
bGF0Zm9ybSA9IHBsYXRmb3JtCi0gICAgICAgIHNlbGYuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3Vy
YXRpb24KLSAgICAgICAgc2VsZi5hcmNoaXRlY3R1cmUgPSBhcmNoaXRlY3R1cmUKLSAgICAgICAg
c2VsZi5idWlsZE9ubHkgPSBidWlsZE9ubHkKLSAgICAgICAgc2VsZi5hZGRpdGlvbmFsQXJndW1l
bnRzID0gYWRkaXRpb25hbEFyZ3VtZW50cwotICAgICAgICBzZWxmLmRldmljZV9tb2RlbCA9IGRl
dmljZV9tb2RlbAotICAgICAgICBzZWxmLmFkZEZhY3RvcnlBcmd1bWVudHMocGxhdGZvcm09cGxh
dGZvcm0sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlPWFyY2hpdGVj
dHVyZSwgYnVpbGRPbmx5PWJ1aWxkT25seSwgYWRkaXRpb25hbEFyZ3VtZW50cz1hZGRpdGlvbmFs
QXJndW1lbnRzLCBkZXZpY2VfbW9kZWw9ZGV2aWNlX21vZGVsKQotCi0gICAgZGVmIHN0YXJ0KHNl
bGYpOgotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCJwbGF0Zm9ybSIsIHNlbGYucGxhdGZvcm0p
Ci0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoImZ1bGxQbGF0Zm9ybSIsIHNlbGYuZnVsbFBsYXRm
b3JtKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCJjb25maWd1cmF0aW9uIiwgc2VsZi5jb25m
aWd1cmF0aW9uKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCJhcmNoaXRlY3R1cmUiLCBzZWxm
LmFyY2hpdGVjdHVyZSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgiYnVpbGRPbmx5Iiwgc2Vs
Zi5idWlsZE9ubHkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoImFkZGl0aW9uYWxBcmd1bWVu
dHMiLCBzZWxmLmFkZGl0aW9uYWxBcmd1bWVudHMpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
ImRldmljZV9tb2RlbCIsIHNlbGYuZGV2aWNlX21vZGVsKQotICAgICAgICB3b3JrZXJfbmFtZSA9
IHNlbGYuZ2V0UHJvcGVydHkoInNsYXZlbmFtZSIpCi0gICAgICAgIGlmIHdvcmtlcl9uYW1lOgot
ICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgid29ya2VybmFtZSIsIHdvcmtlcl9uYW1lKSAg
IyBUZW1wb3Jhcnkgd29ya2Fyb3VuZCBmb3Igc3VwcG9ydGluZyBib3RoIG9sZGVyIGFuZCBuZXdl
ciBidWlsZGJvdCB2ZXJzaW9ucy4KLSAgICAgICAgc2VsZi5maW5pc2hlZChTVUNDRVNTKQotICAg
ICAgICByZXR1cm4gZGVmZXIuc3VjY2VlZChOb25lKQotCi0KLWNsYXNzIENoZWNrT3V0U291cmNl
KHNvdXJjZS5TVk4pOgotICAgIG1vZGUgPSAidXBkYXRlIgotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsICoqa3dhcmdzKToKLSAgICAgICAga3dhcmdzWydiYXNlVVJMJ10gPSAiaHR0cHM6Ly9zdm4u
d2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC8iCi0gICAgICAgIGt3YXJnc1snZGVmYXVsdEJy
YW5jaCddID0gInRydW5rIgotICAgICAgICBrd2FyZ3NbJ21vZGUnXSA9IHNlbGYubW9kZQotICAg
ICAgICBzb3VyY2UuU1ZOLl9faW5pdF9fKHNlbGYsICoqa3dhcmdzKQotCi0KLWNsYXNzIEluc3Rh
bGxXaW4zMkRlcGVuZGVuY2llcyhzaGVsbC5Db21waWxlKToKLSAgICBkZXNjcmlwdGlvbiA9IFsi
aW5zdGFsbGluZyBkZXBlbmRlbmNpZXMiXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsiaW5zdGFs
bGVkIGRlcGVuZGVuY2llcyJdCi0gICAgY29tbWFuZCA9IFsicGVybCIsICIuL1Rvb2xzL1Njcmlw
dHMvdXBkYXRlLXdlYmtpdC1hdXhpbGlhcnktbGlicyJdCi0KLQotY2xhc3MgS2lsbE9sZFByb2Nl
c3NlcyhzaGVsbC5Db21waWxlKToKLSAgICBuYW1lID0gImtpbGwtb2xkLXByb2Nlc3NlcyIKLSAg
ICBkZXNjcmlwdGlvbiA9IFsia2lsbGluZyBvbGQgcHJvY2Vzc2VzIl0KLSAgICBkZXNjcmlwdGlv
bkRvbmUgPSBbImtpbGxlZCBvbGQgcHJvY2Vzc2VzIl0KLSAgICBjb21tYW5kID0gWyJweXRob24i
LCAiLi9Ub29scy9DSVN1cHBvcnQva2lsbC1vbGQtcHJvY2Vzc2VzIiwgImJ1aWxkYm90Il0KLQot
Ci1jbGFzcyBUcmlnZ2VyQ3Jhc2hMb2dTdWJtaXNzaW9uKHNoZWxsLkNvbXBpbGUpOgotICAgIG5h
bWUgPSAidHJpZ2dlci1jcmFzaC1sb2ctc3VibWlzc2lvbiIKLSAgICBkZXNjcmlwdGlvbiA9IFsi
dHJpZ2dlcmluZyBjcmFzaCBsb2cgc3VibWlzc2lvbiJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0g
WyJ0cmlnZ2VyZWQgY3Jhc2ggbG9nIHN1Ym1pc3Npb24iXQotICAgIGNvbW1hbmQgPSBbInB5dGhv
biIsICIuL1Rvb2xzL0NJU3VwcG9ydC90cmlnZ2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9uIl0KLQot
Ci1jbGFzcyBXYWl0Rm9yQ3Jhc2hDb2xsZWN0aW9uKHNoZWxsLkNvbXBpbGUpOgotICAgIG5hbWUg
PSAid2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbiIKLSAgICBkZXNjcmlwdGlvbiA9IFsid2FpdGlu
ZyBmb3IgY3Jhc2ggY29sbGVjdGlvbiB0byBxdWllc2NlIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUg
PSBbImNyYXNoIGNvbGxlY3Rpb24gaGFzIHF1aWVzY2VkIl0KLSAgICBjb21tYW5kID0gWyJweXRo
b24iLCAiLi9Ub29scy9DSVN1cHBvcnQvd2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbiIsICItLXRp
bWVvdXQiLCBzdHIoNSAqIDYwKV0KLQotCi1jbGFzcyBDbGVhbkJ1aWxkSWZTY2hlZHVsZWQoc2hl
bGwuQ29tcGlsZSk6Ci0gICAgbmFtZSA9ICJkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5Igot
ICAgIGRlc2NyaXB0aW9uID0gWyJkZWxldGluZyBXZWJLaXRCdWlsZCBkaXJlY3RvcnkiXQotICAg
IGRlc2NyaXB0aW9uRG9uZSA9IFsiZGVsZXRlZCBXZWJLaXRCdWlsZCBkaXJlY3RvcnkiXQotICAg
IGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL0NJU3VwcG9ydC9jbGVhbi1idWlsZCIsIFdp
dGhQcm9wZXJ0aWVzKCItLXBsYXRmb3JtPSUoZnVsbFBsYXRmb3JtKXMiKSwgV2l0aFByb3BlcnRp
ZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKV0KLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAg
ICAgaWYgbm90IHNlbGYuZ2V0UHJvcGVydHkoJ2lzX2NsZWFuJyk6Ci0gICAgICAgICAgICBzZWxm
LmhpZGVTdGVwSWYgPSBUcnVlCi0gICAgICAgICAgICByZXR1cm4gU0tJUFBFRAotICAgICAgICBy
ZXR1cm4gc2hlbGwuQ29tcGlsZS5zdGFydChzZWxmKQotCi0KLWNsYXNzIERlbGV0ZVN0YWxlQnVp
bGRGaWxlcyhzaGVsbC5Db21waWxlKToKLSAgICBuYW1lID0gImRlbGV0ZS1zdGFsZS1idWlsZC1m
aWxlcyIKLSAgICBkZXNjcmlwdGlvbiA9IFsiZGVsZXRpbmcgc3RhbGUgYnVpbGQgZmlsZXMiXQot
ICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsiZGVsZXRlZCBzdGFsZSBidWlsZCBmaWxlcyJdCi0gICAg
Y29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvQ0lTdXBwb3J0L2RlbGV0ZS1zdGFsZS1idWls
ZC1maWxlcyIsIFdpdGhQcm9wZXJ0aWVzKCItLXBsYXRmb3JtPSUoZnVsbFBsYXRmb3JtKXMiKSwg
V2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKV0KLQotICAgIGRlZiBzdGFydChz
ZWxmKToKLSAgICAgICAgaWYgc2VsZi5nZXRQcm9wZXJ0eSgnaXNfY2xlYW4nKTogICMgTm90aGlu
ZyB0byBiZSBkb25lIGlmIFdlYktpdEJ1aWxkIGhhZCBiZWVuIHJlbW92ZWQuCi0gICAgICAgICAg
ICBzZWxmLmhpZGVTdGVwSWYgPSBUcnVlCi0gICAgICAgICAgICByZXR1cm4gU0tJUFBFRAotICAg
ICAgICByZXR1cm4gc2hlbGwuQ29tcGlsZS5zdGFydChzZWxmKQotCi0KLWNsYXNzIEluc3RhbGxX
aW5DYWlyb0RlcGVuZGVuY2llcyhzaGVsbC5TaGVsbENvbW1hbmQpOgotICAgIG5hbWUgPSAnd2lu
Y2Fpcm8tcmVxdWlyZW1lbnRzJwotICAgIGRlc2NyaXB0aW9uID0gWyd1cGRhdGluZyB3aW5jYWly
byBkZXBlbmRlbmNpZXMnXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsndXBkYXRlZCB3aW5jYWly
byBkZXBlbmRlbmNpZXMnXQotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICcuL1Rvb2xzL1Njcmlw
dHMvdXBkYXRlLXdlYmtpdC13aW5jYWlyby1saWJzLnB5J10KLSAgICBoYWx0T25GYWlsdXJlID0g
VHJ1ZQotCi0KLWNsYXNzIEluc3RhbGxHdGtEZXBlbmRlbmNpZXMoc2hlbGwuU2hlbGxDb21tYW5k
KToKLSAgICBuYW1lID0gImpoYnVpbGQiCi0gICAgZGVzY3JpcHRpb24gPSBbInVwZGF0aW5nIGd0
ayBkZXBlbmRlbmNpZXMiXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsidXBkYXRlZCBndGsgZGVw
ZW5kZW5jaWVzIl0KLSAgICBjb21tYW5kID0gWyJwZXJsIiwgIi4vVG9vbHMvU2NyaXB0cy91cGRh
dGUtd2Via2l0Z3RrLWxpYnMiLCBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIp
XQotICAgIGhhbHRPbkZhaWx1cmUgPSBUcnVlCi0KLQotY2xhc3MgSW5zdGFsbFdwZURlcGVuZGVu
Y2llcyhzaGVsbC5TaGVsbENvbW1hbmQpOgotICAgIG5hbWUgPSAiamhidWlsZCIKLSAgICBkZXNj
cmlwdGlvbiA9IFsidXBkYXRpbmcgd3BlIGRlcGVuZGVuY2llcyJdCi0gICAgZGVzY3JpcHRpb25E
b25lID0gWyJ1cGRhdGVkIHdwZSBkZXBlbmRlbmNpZXMiXQotICAgIGNvbW1hbmQgPSBbInBlcmwi
LCAiLi9Ub29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXR3cGUtbGlicyIsIFdpdGhQcm9wZXJ0aWVz
KCItLSUoY29uZmlndXJhdGlvbilzIildCi0gICAgaGFsdE9uRmFpbHVyZSA9IFRydWUKLQotCi1k
ZWYgYXBwZW5kQ3VzdG9tQnVpbGRGbGFncyhzdGVwLCBwbGF0Zm9ybSwgZnVsbFBsYXRmb3JtKToK
LSAgICBpZiBwbGF0Zm9ybSBub3QgaW4gKCdndGsnLCAnd2luY2Fpcm8nLCAnaW9zJywgJ2pzYy1v
bmx5JywgJ3dwZScsICdwbGF5c3RhdGlvbicsICd0dm9zJywgJ3dhdGNob3MnLCk6Ci0gICAgICAg
IHJldHVybgotICAgIGlmICdzaW11bGF0b3InIGluIGZ1bGxQbGF0Zm9ybToKLSAgICAgICAgcGxh
dGZvcm0gPSBwbGF0Zm9ybSArICctc2ltdWxhdG9yJwotICAgIGVsaWYgcGxhdGZvcm0gaW4gWydp
b3MnLCAndHZvcycsICd3YXRjaG9zJ106Ci0gICAgICAgIHBsYXRmb3JtID0gcGxhdGZvcm0gKyAn
LWRldmljZScKLSAgICBzdGVwLnNldENvbW1hbmQoc3RlcC5jb21tYW5kICsgWyctLScgKyBwbGF0
Zm9ybV0pCi0KLQotZGVmIGFwcGVuZEN1c3RvbVRlc3RpbmdGbGFncyhzdGVwLCBwbGF0Zm9ybSwg
ZGV2aWNlX21vZGVsKToKLSAgICBpZiBwbGF0Zm9ybSBub3QgaW4gKCdndGsnLCAnd2luY2Fpcm8n
LCAnaW9zJywgJ2pzYy1vbmx5JywgJ3dwZScpOgotICAgICAgICByZXR1cm4KLSAgICBpZiBkZXZp
Y2VfbW9kZWwgPT0gJ2lwaG9uZSc6Ci0gICAgICAgIGRldmljZV9tb2RlbCA9ICdpcGhvbmUtc2lt
dWxhdG9yJwotICAgIGVsaWYgZGV2aWNlX21vZGVsID09ICdpcGFkJzoKLSAgICAgICAgZGV2aWNl
X21vZGVsID0gJ2lwYWQtc2ltdWxhdG9yJwotICAgIGVsc2U6Ci0gICAgICAgIGRldmljZV9tb2Rl
bCA9IHBsYXRmb3JtCi0gICAgc3RlcC5zZXRDb21tYW5kKHN0ZXAuY29tbWFuZCArIFsnLS0nICsg
ZGV2aWNlX21vZGVsXSkKLQotCi1jbGFzcyBDb21waWxlV2ViS2l0KHNoZWxsLkNvbXBpbGUpOgot
ICAgIGNvbW1hbmQgPSBbInBlcmwiLCAiLi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCIsIFdp
dGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIildCi0gICAgZW52ID0geydNRkxBR1Mn
OiAnJ30KLSAgICBuYW1lID0gImNvbXBpbGUtd2Via2l0IgotICAgIGRlc2NyaXB0aW9uID0gWyJj
b21waWxpbmciXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsiY29tcGlsZWQiXQotICAgIHdhcm5p
bmdQYXR0ZXJuID0gIi4qYXJuaW5nOiAuKiIKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAg
ICAgcGxhdGZvcm0gPSBzZWxmLmdldFByb3BlcnR5KCdwbGF0Zm9ybScpCi0gICAgICAgIGJ1aWxk
T25seSA9IHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkT25seScpCi0gICAgICAgIGFyY2hpdGVjdHVy
ZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ2FyY2hpdGVjdHVyZScpCi0gICAgICAgIGFkZGl0aW9uYWxB
cmd1bWVudHMgPSBzZWxmLmdldFByb3BlcnR5KCdhZGRpdGlvbmFsQXJndW1lbnRzJykKLQotICAg
ICAgICBpZiBhZGRpdGlvbmFsQXJndW1lbnRzOgotICAgICAgICAgICAgc2VsZi5zZXRDb21tYW5k
KHNlbGYuY29tbWFuZCArIGFkZGl0aW9uYWxBcmd1bWVudHMpCi0gICAgICAgIGlmIHBsYXRmb3Jt
IGluICgnbWFjJywgJ2lvcycsICd0dm9zJywgJ3dhdGNob3MnKSBhbmQgYXJjaGl0ZWN0dXJlOgot
ICAgICAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsnQVJDSFM9JyArIGFy
Y2hpdGVjdHVyZV0pCi0gICAgICAgICAgICBpZiBwbGF0Zm9ybSBpbiBbJ2lvcycsICd0dm9zJywg
J3dhdGNob3MnXToKLSAgICAgICAgICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5k
ICsgWydPTkxZX0FDVElWRV9BUkNIPU5PJ10pCi0gICAgICAgIGlmIHBsYXRmb3JtIGluICgnbWFj
JywgJ2lvcycsICd0dm9zJywgJ3dhdGNob3MnKSBhbmQgYnVpbGRPbmx5OgotICAgICAgICAgICAg
IyBGb3IgYnVpbGQtb25seSBib3RzLCB0aGUgZXhwZWN0YXRpb24gaXMgdGhhdCB0ZXN0cyB3aWxs
IGJlIHJ1biBvbiBzZXBhcmF0ZSBtYWNoaW5lcywKLSAgICAgICAgICAgICMgc28gd2UgbmVlZCB0
byBwYWNrYWdlIGRlYnVnIGluZm8gYXMgZFNZTXMuIE9ubHkgZ2VuZXJhdGluZyBsaW5lIHRhYmxl
cyBtYWtlcwotICAgICAgICAgICAgIyB0aGlzIG11Y2ggZmFzdGVyIHRoYW4gZnVsbCBkZWJ1ZyBp
bmZvLCBhbmQgY3Jhc2ggbG9ncyBzdGlsbCBoYXZlIGxpbmUgbnVtYmVycy4KLSAgICAgICAgICAg
IHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJ0RFQlVHX0lORk9STUFUSU9OX0ZPUk1B
VD1kd2FyZi13aXRoLWRzeW0nXSkKLSAgICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNv
bW1hbmQgKyBbJ0NMQU5HX0RFQlVHX0lORk9STUFUSU9OX0xFVkVMPWxpbmUtdGFibGVzLW9ubHkn
XSkKLQotICAgICAgICBhcHBlbmRDdXN0b21CdWlsZEZsYWdzKHNlbGYsIHBsYXRmb3JtLCBzZWxm
LmdldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nKSkKLQotICAgICAgICByZXR1cm4gc2hlbGwuQ29t
cGlsZS5zdGFydChzZWxmKQotCi0gICAgZGVmIGNyZWF0ZVN1bW1hcnkoc2VsZiwgbG9nKToKLSAg
ICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldFByb3BlcnR5KCdwbGF0Zm9ybScpCi0gICAgICAgIGlm
IHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ21hYycpOgotICAgICAgICAgICAgd2FybmluZ3MgPSBbXQot
ICAgICAgICAgICAgZXJyb3JzID0gW10KLSAgICAgICAgICAgIHNpbyA9IGNTdHJpbmdJTy5TdHJp
bmdJTyhsb2cuZ2V0VGV4dCgpKQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2lvLnJlYWRsaW5l
cygpOgotICAgICAgICAgICAgICAgIGlmICJhcm5pbmc6IiBpbiBsaW5lOgotICAgICAgICAgICAg
ICAgICAgICB3YXJuaW5ncy5hcHBlbmQobGluZSkKLSAgICAgICAgICAgICAgICBpZiAicnJvcjoi
IGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQobGluZSkKLSAgICAg
ICAgICAgIGlmIHdhcm5pbmdzOgotICAgICAgICAgICAgICAgIHNlbGYuYWRkQ29tcGxldGVMb2co
J3dhcm5pbmdzJywgIiIuam9pbih3YXJuaW5ncykpCi0gICAgICAgICAgICBpZiBlcnJvcnM6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5hZGRDb21wbGV0ZUxvZygnZXJyb3JzJywgIiIuam9pbihlcnJv
cnMpKQotCi0KLWNsYXNzIENvbXBpbGVMTElOVENMb29wKENvbXBpbGVXZWJLaXQpOgotICAgIGNv
bW1hbmQgPSBbInBlcmwiLCAiLi9Ub29scy9TY3JpcHRzL2J1aWxkLWpzYyIsICItLWNsb29wIiwg
V2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKV0KLQotCi1jbGFzcyBDb21waWxl
MzJiaXRKU0MoQ29tcGlsZVdlYktpdCk6Ci0gICAgY29tbWFuZCA9IFsicGVybCIsICIuL1Rvb2xz
L1NjcmlwdHMvYnVpbGQtanNjIiwgIi0tMzItYml0IiwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25m
aWd1cmF0aW9uKXMiKV0KLQotCi1jbGFzcyBDb21waWxlSlNDT25seShDb21waWxlV2ViS2l0KToK
LSAgICBjb21tYW5kID0gWyJwZXJsIiwgIi4vVG9vbHMvU2NyaXB0cy9idWlsZC1qc2MiLCBXaXRo
UHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpXQotCi0KLWNsYXNzIEFyY2hpdmVCdWls
dFByb2R1Y3Qoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBjb21tYW5kID0gWyJweXRob24iLCAi
Li9Ub29scy9DSVN1cHBvcnQvYnVpbHQtcHJvZHVjdC1hcmNoaXZlIiwKLSAgICAgICAgICAgICAg
IFdpdGhQcm9wZXJ0aWVzKCItLXBsYXRmb3JtPSUoZnVsbFBsYXRmb3JtKXMiKSwgV2l0aFByb3Bl
cnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKSwgImFyY2hpdmUiXQotICAgIG5hbWUgPSAiYXJj
aGl2ZS1idWlsdC1wcm9kdWN0IgotICAgIGRlc2NyaXB0aW9uID0gWyJhcmNoaXZpbmcgYnVpbHQg
cHJvZHVjdCJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyJhcmNoaXZlZCBidWlsdCBwcm9kdWN0
Il0KLSAgICBoYWx0T25GYWlsdXJlID0gVHJ1ZQotCi0KLWNsYXNzIEFyY2hpdmVNaW5pZmllZEJ1
aWx0UHJvZHVjdChBcmNoaXZlQnVpbHRQcm9kdWN0KToKLSAgICBjb21tYW5kID0gWyJweXRob24i
LCAiLi9Ub29scy9DSVN1cHBvcnQvYnVpbHQtcHJvZHVjdC1hcmNoaXZlIiwKLSAgICAgICAgICAg
ICAgIFdpdGhQcm9wZXJ0aWVzKCItLXBsYXRmb3JtPSUoZnVsbFBsYXRmb3JtKXMiKSwgV2l0aFBy
b3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKSwgImFyY2hpdmUiLCAiLS1taW5pZnkiXQot
Ci0KLWNsYXNzIEdlbmVyYXRlSlNDQnVuZGxlKHNoZWxsLlNoZWxsQ29tbWFuZCk6Ci0gICAgY29t
bWFuZCA9IFsiLi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZSIsICItLWJ1aWxkZXItbmFt
ZSIsIFdpdGhQcm9wZXJ0aWVzKCIlKGJ1aWxkZXJuYW1lKXMiKSwKLSAgICAgICAgICAgICAgICIt
LWJ1bmRsZT1qc2MiLCAiLS1zeXNsaWJzPWJ1bmRsZS1hbGwiLCBXaXRoUHJvcGVydGllcygiLS1w
bGF0Zm9ybT0lKGZ1bGxQbGF0Zm9ybSlzIiksCi0gICAgICAgICAgICAgICBXaXRoUHJvcGVydGll
cygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpLCBXaXRoUHJvcGVydGllcygiLS1yZXZpc2lvbj0lKGdv
dF9yZXZpc2lvbilzIiksCi0gICAgICAgICAgICAgICAiLS1yZW1vdGUtY29uZmlnLWZpbGUiLCAi
Li4vLi4vcmVtb3RlLWpzYy1idW5kbGUtdXBsb2FkLWNvbmZpZy5qc29uIl0KLSAgICBuYW1lID0g
ImdlbmVyYXRlLWpzYy1idW5kbGUiCi0gICAgZGVzY3JpcHRpb24gPSBbImdlbmVyYXRpbmcganNj
IGJ1bmRsZSJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyJnZW5lcmF0ZWQganNjIGJ1bmRsZSJd
Ci0gICAgaGFsdE9uRmFpbHVyZSA9IEZhbHNlCi0KLQotY2xhc3MgR2VuZXJhdGVNaW5pQnJvd3Nl
ckJ1bmRsZShzaGVsbC5TaGVsbENvbW1hbmQpOgotICAgIGNvbW1hbmQgPSBbIi4vVG9vbHMvU2Ny
aXB0cy9nZW5lcmF0ZS1idW5kbGUiLCAiLS1idWlsZGVyLW5hbWUiLCBXaXRoUHJvcGVydGllcygi
JShidWlsZGVybmFtZSlzIiksCi0gICAgICAgICAgICAgICAiLS1idW5kbGU9TWluaUJyb3dzZXIi
LCBXaXRoUHJvcGVydGllcygiLS1wbGF0Zm9ybT0lKGZ1bGxQbGF0Zm9ybSlzIiksCi0gICAgICAg
ICAgICAgICBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpLCBXaXRoUHJvcGVy
dGllcygiLS1yZXZpc2lvbj0lKGdvdF9yZXZpc2lvbilzIiksCi0gICAgICAgICAgICAgICAiLS1y
ZW1vdGUtY29uZmlnLWZpbGUiLCAiLi4vLi4vcmVtb3RlLW1pbmlicm93c2VyLWJ1bmRsZS11cGxv
YWQtY29uZmlnLmpzb24iXQotICAgIG5hbWUgPSAiZ2VuZXJhdGUtbWluaWJyb3dzZXItYnVuZGxl
IgotICAgIGRlc2NyaXB0aW9uID0gWyJnZW5lcmF0aW5nIG1pbmlicm93c2VyIGJ1bmRsZSJdCi0g
ICAgZGVzY3JpcHRpb25Eb25lID0gWyJnZW5lcmF0ZWQgbWluaWJyb3dzZXIgYnVuZGxlIl0KLSAg
ICBoYWx0T25GYWlsdXJlID0gRmFsc2UKLQotCi1jbGFzcyBFeHRyYWN0QnVpbHRQcm9kdWN0KHNo
ZWxsLlNoZWxsQ29tbWFuZCk6Ci0gICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvQ0lT
dXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZSIsCi0gICAgICAgICAgICAgICBXaXRoUHJvcGVy
dGllcygiLS1wbGF0Zm9ybT0lKGZ1bGxQbGF0Zm9ybSlzIiksIFdpdGhQcm9wZXJ0aWVzKCItLSUo
Y29uZmlndXJhdGlvbilzIiksICJleHRyYWN0Il0KLSAgICBuYW1lID0gImV4dHJhY3QtYnVpbHQt
cHJvZHVjdCIKLSAgICBkZXNjcmlwdGlvbiA9IFsiZXh0cmFjdGluZyBidWlsdCBwcm9kdWN0Il0K
LSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImV4dHJhY3RlZCBidWlsdCBwcm9kdWN0Il0KLSAgICBo
YWx0T25GYWlsdXJlID0gVHJ1ZQotCi0KLWNsYXNzIFVwbG9hZEJ1aWx0UHJvZHVjdCh0cmFuc2Zl
ci5GaWxlVXBsb2FkKToKLSAgICB3b3JrZXJzcmMgPSBXaXRoUHJvcGVydGllcygiV2ViS2l0QnVp
bGQvJShjb25maWd1cmF0aW9uKXMuemlwIikKLSAgICBtYXN0ZXJkZXN0ID0gV2l0aFByb3BlcnRp
ZXMoImFyY2hpdmVzLyUoZnVsbFBsYXRmb3JtKXMtJShhcmNoaXRlY3R1cmUpcy0lKGNvbmZpZ3Vy
YXRpb24pcy8lKGdvdF9yZXZpc2lvbilzLnppcCIpCi0gICAgaGFsdE9uRmFpbHVyZSA9IFRydWUK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIGt3YXJnc1snc2xh
dmVzcmMnXSA9IHNlbGYud29ya2Vyc3JjCi0gICAgICAgIGt3YXJnc1snbWFzdGVyZGVzdCddID0g
c2VsZi5tYXN0ZXJkZXN0Ci0gICAgICAgIGt3YXJnc1snbW9kZSddID0gMG82NDQKLSAgICAgICAg
a3dhcmdzWydibG9ja3NpemUnXSA9IDEwMjQgKiAyNTYKLSAgICAgICAgdHJhbnNmZXIuRmlsZVVw
bG9hZC5fX2luaXRfXyhzZWxmLCAqKmt3YXJncykKLQotCi1jbGFzcyBVcGxvYWRNaW5pZmllZEJ1
aWx0UHJvZHVjdChVcGxvYWRCdWlsdFByb2R1Y3QpOgotICAgIHdvcmtlcnNyYyA9IFdpdGhQcm9w
ZXJ0aWVzKCJXZWJLaXRCdWlsZC9taW5pZmllZC0lKGNvbmZpZ3VyYXRpb24pcy56aXAiKQotICAg
IG1hc3RlcmRlc3QgPSBXaXRoUHJvcGVydGllcygiYXJjaGl2ZXMvJShmdWxsUGxhdGZvcm0pcy0l
KGFyY2hpdGVjdHVyZSlzLSUoY29uZmlndXJhdGlvbilzL21pbmlmaWVkLSUoZ290X3JldmlzaW9u
KXMuemlwIikKLQotCi1jbGFzcyBEb3dubG9hZEJ1aWx0UHJvZHVjdChzaGVsbC5TaGVsbENvbW1h
bmQpOgotICAgIGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL0NJU3VwcG9ydC9kb3dubG9h
ZC1idWlsdC1wcm9kdWN0IiwKLSAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09JShw
bGF0Zm9ybSlzIiksIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIiksCi0gICAg
ICAgIFdpdGhQcm9wZXJ0aWVzKFMzVVJMICsgImFyY2hpdmVzLndlYmtpdC5vcmcvJShmdWxsUGxh
dGZvcm0pcy0lKGFyY2hpdGVjdHVyZSlzLSUoY29uZmlndXJhdGlvbilzLyUoZ290X3JldmlzaW9u
KXMuemlwIildCi0gICAgbmFtZSA9ICJkb3dubG9hZC1idWlsdC1wcm9kdWN0IgotICAgIGRlc2Ny
aXB0aW9uID0gWyJkb3dubG9hZGluZyBidWlsdCBwcm9kdWN0Il0KLSAgICBkZXNjcmlwdGlvbkRv
bmUgPSBbImRvd25sb2FkZWQgYnVpbHQgcHJvZHVjdCJdCi0gICAgaGFsdE9uRmFpbHVyZSA9IFRy
dWUKLSAgICBmbHVua09uRmFpbHVyZSA9IFRydWUKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAg
ICAgICAgaWYgJ2FwcGxlJyBpbiBzZWxmLmdldFByb3BlcnR5KCdidWlsZGVybmFtZScpLmxvd2Vy
KCk6Ci0gICAgICAgICAgICBzZWxmLnNsYXZlRW52aXJvbm1lbnRbJ0hUVFBTX1BST1hZJ10gPSBB
UFBMRV9XRUJLSVRfQVdTX1BST1hZICAjIGN1cmwgZW52IHZhciB0byB1c2UgYSBwcm94eQotICAg
ICAgICByZXR1cm4gc2hlbGwuU2hlbGxDb21tYW5kLnN0YXJ0KHNlbGYpCi0KLQotY2xhc3MgUnVu
SmF2YVNjcmlwdENvcmVUZXN0cyhUZXN0V2l0aEZhaWx1cmVDb3VudCk6Ci0gICAgbmFtZSA9ICJq
c2NvcmUtdGVzdCIKLSAgICBkZXNjcmlwdGlvbiA9IFsianNjb3JlLXRlc3RzIHJ1bm5pbmciXQot
ICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsianNjb3JlLXRlc3RzIl0KLSAgICBqc29uRmlsZU5hbWUg
PSAianNjX3Jlc3VsdHMuanNvbiIKLSAgICBjb21tYW5kID0gWwotICAgICAgICAicGVybCIsICIu
L1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzIiwKLSAgICAgICAgIi0tbm8t
YnVpbGQiLCAiLS1uby1mYWlsLWZhc3QiLAotICAgICAgICAiLS1qc29uLW91dHB1dD17MH0iLmZv
cm1hdChqc29uRmlsZU5hbWUpLAotICAgICAgICBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3Vy
YXRpb24pcyIpLAotICAgICAgICAiLS1idWlsZGVyLW5hbWUiLCBXaXRoUHJvcGVydGllcygiJShi
dWlsZGVybmFtZSlzIiksCi0gICAgICAgICItLWJ1aWxkLW51bWJlciIsIFdpdGhQcm9wZXJ0aWVz
KCIlKGJ1aWxkbnVtYmVyKXMiKSwKLSAgICAgICAgIi0tYnVpbGRib3Qtd29ya2VyIiwgV2l0aFBy
b3BlcnRpZXMoIiUod29ya2VybmFtZSlzIiksCi0gICAgICAgICItLWJ1aWxkYm90LW1hc3RlciIs
IEJVSUxEX1dFQktJVF9VUkwsCi0gICAgICAgICItLXJlcG9ydCIsIFJFU1VMVFNfV0VCS0lUX1VS
TCwKLSAgICBdCi0gICAgZmFpbGVkVGVzdHNGb3JtYXRTdHJpbmcgPSAiJWQgSlNDIHRlc3QlcyBm
YWlsZWQiCi0gICAgbG9nZmlsZXMgPSB7Impzb24iOiBqc29uRmlsZU5hbWV9Ci0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAga3dhcmdzWydsb2dFbnZp
cm9uJ10gPSBGYWxzZQotICAgICAgICBUZXN0V2l0aEZhaWx1cmVDb3VudC5fX2luaXRfXyhzZWxm
LCAqYXJncywgKiprd2FyZ3MpCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYu
c2xhdmVFbnZpcm9ubWVudFtSRVNVTFRTX1NFUlZFUl9BUElfS0VZXSA9IG9zLmdldGVudihSRVNV
TFRTX1NFUlZFUl9BUElfS0VZKQotICAgICAgICBwbGF0Zm9ybSA9IHNlbGYuZ2V0UHJvcGVydHko
J3BsYXRmb3JtJykKLSAgICAgICAgYXJjaGl0ZWN0dXJlID0gc2VsZi5nZXRQcm9wZXJ0eSgiYXJj
aGl0ZWN0dXJlIikKLSAgICAgICAgIyBDdXJyZW50bHkgcnVuLWphdmFzY3JpcHRjb3JlLXRlc3Qg
ZG9lc24ndCBzdXBwb3J0IHJ1biBqYXZhc2NyaXB0IGNvcmUgdGVzdCBiaW5hcmllcyBsaXN0IGJl
bG93IHJlbW90ZWx5Ci0gICAgICAgIGlmIGFyY2hpdGVjdHVyZSBpbiBbJ21pcHMnLCAnYXJtdjcn
LCAnYWFyY2g2NCddOgotICAgICAgICAgICAgc2VsZi5jb21tYW5kICs9IFsnLS1uby10ZXN0bWFz
bScsICctLW5vLXRlc3RhaXInLCAnLS1uby10ZXN0YjMnLCAnLS1uby10ZXN0ZGZnJywgJy0tbm8t
dGVzdGFwaSddCi0gICAgICAgICMgTGludXggYm90cyBoYXZlIGN1cnJlbnRseSBwcm9ibGVtcyB3
aXRoIEpTQyB0ZXN0cyB0aGF0IHRyeSB0byB1c2UgbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnkuCi0g
ICAgICAgICMgQ2hlY2s6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzUxNDAKLSAgICAgICAgaWYgcGxhdGZvcm0gaW4gKCdndGsnLCAnd3BlJywgJ2pzYy1vbmx5Jyk6
Ci0gICAgICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWyctLW1lbW9yeS1s
aW1pdGVkJywgJy0tdmVyYm9zZSddKQotICAgICAgICAjIFdpbkNhaXJvIHVzZXMgdGhlIFdpbmRv
d3MgY29tbWFuZCBwcm9tcHQsIG5vdCBDeWd3aW4uCi0gICAgICAgIGVsaWYgcGxhdGZvcm0gPT0g
J3dpbmNhaXJvJzoKLSAgICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBb
Jy0tdGVzdC13cml0ZXI9cnVieSddKQotCi0gICAgICAgIGFwcGVuZEN1c3RvbUJ1aWxkRmxhZ3Mo
c2VsZiwgcGxhdGZvcm0sIHNlbGYuZ2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScpKQotICAgICAg
ICByZXR1cm4gc2hlbGwuVGVzdC5zdGFydChzZWxmKQotCi0gICAgZGVmIGNvdW50RmFpbHVyZXMo
c2VsZiwgY21kKToKLSAgICAgICAgbG9nVGV4dCA9IGNtZC5sb2dzWydzdGRpbyddLmdldFRleHQo
KQotICAgICAgICBjb3VudCA9IDAKLQotICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaChyJ15SZXN1
bHRzIGZvciBKU0Mgc3RyZXNzIHRlc3RzOlxyP1xuXHMrKFxkKykgZmFpbHVyZScsIGxvZ1RleHQs
IHJlLk1VTFRJTElORSkKLSAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAgICAgICBjb3VudCArPSBp
bnQobWF0Y2guZ3JvdXAoMSkpCi0KLSAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2gocidSZXN1bHRz
IGZvciBKU0MgdGVzdCBiaW5hcmllczpccj9cblxzKyhcZCspIGZhaWx1cmUnLCBsb2dUZXh0LCBy
ZS5NVUxUSUxJTkUpCi0gICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgY291bnQgKz0gaW50
KG1hdGNoLmdyb3VwKDEpKQotCi0gICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHInXlJlc3VsdHMg
Zm9yIE1vemlsbGEgdGVzdHM6XHI/XG5ccysoXGQrKSByZWdyZXNzaW9uJywgbG9nVGV4dCwgcmUu
TVVMVElMSU5FKQotICAgICAgICBpZiBtYXRjaDoKLSAgICAgICAgICAgIGNvdW50ICs9IGludCht
YXRjaC5ncm91cCgxKSkKLQotICAgICAgICByZXR1cm4gY291bnQKLQotCi1jbGFzcyBSdW5SZW1v
dGVKYXZhU2NyaXB0Q29yZVRlc3RzKFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMpOgotICAgIGRlZiBz
dGFydChzZWxmKToKLSAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsiLS1y
ZW1vdGUtY29uZmlnLWZpbGUiLCAiLi4vLi4vcmVtb3RlLWpzYy10ZXN0cy1jb25maWcuanNvbiJd
KQotICAgICAgICByZXR1cm4gUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5zdGFydChzZWxmKQotCi0K
LWNsYXNzIFJ1blRlc3QyNjJUZXN0cyhUZXN0V2l0aEZhaWx1cmVDb3VudCk6Ci0gICAgbmFtZSA9
ICJ0ZXN0MjYyLXRlc3QiCi0gICAgZGVzY3JpcHRpb24gPSBbInRlc3QyNjItdGVzdHMgcnVubmlu
ZyJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyJ0ZXN0MjYyLXRlc3RzIl0KLSAgICBmYWlsZWRU
ZXN0c0Zvcm1hdFN0cmluZyA9ICIlZCBUZXN0MjYyIHRlc3QlcyBmYWlsZWQiCi0gICAgY29tbWFu
ZCA9IFsicGVybCIsICIuL1Rvb2xzL1NjcmlwdHMvdGVzdDI2Mi1ydW5uZXIiLCAiLS12ZXJib3Nl
IiwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKV0KLQotICAgIGRlZiBzdGFy
dChzZWxmKToKLSAgICAgICAgYXBwZW5kQ3VzdG9tQnVpbGRGbGFncyhzZWxmLCBzZWxmLmdldFBy
b3BlcnR5KCdwbGF0Zm9ybScpLCBzZWxmLmdldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nKSkKLSAg
ICAgICAgcmV0dXJuIHNoZWxsLlRlc3Quc3RhcnQoc2VsZikKLQotICAgIGRlZiBjb3VudEZhaWx1
cmVzKHNlbGYsIGNtZCk6Ci0gICAgICAgIGxvZ1RleHQgPSBjbWQubG9nc1snc3RkaW8nXS5nZXRU
ZXh0KCkKLSAgICAgICAgbWF0Y2hlcyA9IHJlLmZpbmRhbGwocideXCEgTkVXIEZBSUwnLCBsb2dU
ZXh0LCBmbGFncz1yZS5NVUxUSUxJTkUpCi0gICAgICAgIGlmIG1hdGNoZXM6Ci0gICAgICAgICAg
ICByZXR1cm4gbGVuKG1hdGNoZXMpCi0gICAgICAgIHJldHVybiAwCi0KLQotY2xhc3MgUnVuV2Vi
S2l0VGVzdHMoc2hlbGwuVGVzdCk6Ci0gICAgbmFtZSA9ICJsYXlvdXQtdGVzdCIKLSAgICBkZXNj
cmlwdGlvbiA9IFsibGF5b3V0LXRlc3RzIHJ1bm5pbmciXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9
IFsibGF5b3V0LXRlc3RzIl0KLSAgICByZXN1bHREaXJlY3RvcnkgPSAibGF5b3V0LXRlc3QtcmVz
dWx0cyIKLSAgICBjb21tYW5kID0gWyJweXRob24iLCAiLi9Ub29scy9TY3JpcHRzL3J1bi13ZWJr
aXQtdGVzdHMiLAotICAgICAgICAgICAgICAgIi0tbm8tYnVpbGQiLAotICAgICAgICAgICAgICAg
Ii0tbm8tc2hvdy1yZXN1bHRzIiwKLSAgICAgICAgICAgICAgICItLW5vLW5ldy10ZXN0LXJlc3Vs
dHMiLAotICAgICAgICAgICAgICAgIi0tY2xvYmJlci1vbGQtcmVzdWx0cyIsCi0gICAgICAgICAg
ICAgICAiLS1idWlsZGVyLW5hbWUiLCBXaXRoUHJvcGVydGllcygiJShidWlsZGVybmFtZSlzIiks
Ci0gICAgICAgICAgICAgICAiLS1idWlsZC1udW1iZXIiLCBXaXRoUHJvcGVydGllcygiJShidWls
ZG51bWJlcilzIiksCi0gICAgICAgICAgICAgICAiLS1idWlsZGJvdC13b3JrZXIiLCBXaXRoUHJv
cGVydGllcygiJSh3b3JrZXJuYW1lKXMiKSwKLSAgICAgICAgICAgICAgICItLW1hc3Rlci1uYW1l
IiwgIndlYmtpdC5vcmciLAotICAgICAgICAgICAgICAgIi0tYnVpbGRib3QtbWFzdGVyIiwgQlVJ
TERfV0VCS0lUX1VSTCwKLSAgICAgICAgICAgICAgICItLXJlcG9ydCIsIFJFU1VMVFNfV0VCS0lU
X1VSTCwKLSAgICAgICAgICAgICAgICItLWV4aXQtYWZ0ZXItbi1jcmFzaGVzLW9yLXRpbWVvdXRz
IiwgIjUwIiwKLSAgICAgICAgICAgICAgICItLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcyIsICI1MDAi
LAotICAgICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKV0K
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBrd2Fy
Z3NbJ2xvZ0Vudmlyb24nXSA9IEZhbHNlCi0gICAgICAgIHNoZWxsLlRlc3QuX19pbml0X18oc2Vs
ZiwgKmFyZ3MsICoqa3dhcmdzKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBzZWxm
LnNsYXZlRW52aXJvbm1lbnRbUkVTVUxUU19TRVJWRVJfQVBJX0tFWV0gPSBvcy5nZXRlbnYoUkVT
VUxUU19TRVJWRVJfQVBJX0tFWSkKLQotICAgICAgICBwbGF0Zm9ybSA9IHNlbGYuZ2V0UHJvcGVy
dHkoJ3BsYXRmb3JtJykKLSAgICAgICAgYXBwZW5kQ3VzdG9tVGVzdGluZ0ZsYWdzKHNlbGYsIHBs
YXRmb3JtLCBzZWxmLmdldFByb3BlcnR5KCdkZXZpY2VfbW9kZWwnKSkKLSAgICAgICAgYWRkaXRp
b25hbEFyZ3VtZW50cyA9IHNlbGYuZ2V0UHJvcGVydHkoJ2FkZGl0aW9uYWxBcmd1bWVudHMnKQot
Ci0gICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbIi0tcmVzdWx0cy1kaXJl
Y3RvcnkiLCBzZWxmLnJlc3VsdERpcmVjdG9yeV0pCi0gICAgICAgIHNlbGYuc2V0Q29tbWFuZChz
ZWxmLmNvbW1hbmQgKyBbJy0tZGVidWctcnd0LWxvZ2dpbmcnXSkKLQotICAgICAgICBpZiBwbGF0
Zm9ybSA9PSAid2luIjoKLSAgICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQg
KyBbJy0tYmF0Y2gtc2l6ZScsICcxMDAnLCAnLS1yb290PScgKyBvcy5wYXRoLmpvaW4oIldlYktp
dEJ1aWxkIiwgc2VsZi5nZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicpLCAiYmluNjQiKV0pCi0K
LSAgICAgICAgaWYgYWRkaXRpb25hbEFyZ3VtZW50czoKLSAgICAgICAgICAgIHNlbGYuc2V0Q29t
bWFuZChzZWxmLmNvbW1hbmQgKyBhZGRpdGlvbmFsQXJndW1lbnRzKQotICAgICAgICByZXR1cm4g
c2hlbGwuVGVzdC5zdGFydChzZWxmKQotCi0gICAgIyBGSVhNRTogVGhpcyB3aWxsIGJyZWFrIGlm
IHJ1bi13ZWJraXQtdGVzdHMgY2hhbmdlcyBpdHMgZGVmYXVsdCBsb2cgZm9ybWF0dGVyLgotICAg
IG5yd3RfbG9nX21lc3NhZ2VfcmVnZXhwID0gcmUuY29tcGlsZShyJ1xkezJ9OlxkezJ9OlxkezJ9
KFwuXGQrKT9ccytcZCtccysoP1A8bWVzc2FnZT4uKiknKQotCi0gICAgZGVmIF9zdHJpcF9weXRo
b25fbG9nZ2luZ19wcmVmaXgoc2VsZiwgbGluZSk6Ci0gICAgICAgIG1hdGNoX29iamVjdCA9IHNl
bGYubnJ3dF9sb2dfbWVzc2FnZV9yZWdleHAubWF0Y2gobGluZSkKLSAgICAgICAgaWYgbWF0Y2hf
b2JqZWN0OgotICAgICAgICAgICAgcmV0dXJuIG1hdGNoX29iamVjdC5ncm91cCgnbWVzc2FnZScp
Ci0gICAgICAgIHJldHVybiBsaW5lCi0KLSAgICBkZWYgX3BhcnNlUnVuV2ViS2l0VGVzdHNPdXRw
dXQoc2VsZiwgbG9nVGV4dCk6Ci0gICAgICAgIGluY29ycmVjdExheW91dExpbmVzID0gW10KLSAg
ICAgICAgZXhwcmVzc2lvbnMgPSBbCi0gICAgICAgICAgICAoJ2ZsYWtlcycsIHJlLmNvbXBpbGUo
cidVbmV4cGVjdGVkIGZsYWtpbmVzcy4rXCgoXGQrKVwpJykpLAotICAgICAgICAgICAgKCduZXcg
cGFzc2VzJywgcmUuY29tcGlsZShyJ0V4cGVjdGVkIHRvIC4rLCBidXQgcGFzc2VkOlxzK1woKFxk
KylcKScpKSwKLSAgICAgICAgICAgICgnbWlzc2luZyByZXN1bHRzJywgcmUuY29tcGlsZShyJ1Jl
Z3Jlc3Npb25zOiBVbmV4cGVjdGVkIG1pc3NpbmcgcmVzdWx0c1xzK1woKFxkKylcKScpKSwKLSAg
ICAgICAgICAgICgnZmFpbHVyZXMnLCByZS5jb21waWxlKHInUmVncmVzc2lvbnM6IFVuZXhwZWN0
ZWQuK1woKFxkKylcKScpKSwKLSAgICAgICAgXQotICAgICAgICB0ZXN0RmFpbHVyZXMgPSB7fQot
Ci0gICAgICAgIGZvciBsaW5lIGluIGxvZ1RleHQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAg
aWYgbGluZS5maW5kKCdFeGl0aW5nIGVhcmx5JykgPj0gMCBvciBsaW5lLmZpbmQoJ2xlYWtzIGZv
dW5kJykgPj0gMDoKLSAgICAgICAgICAgICAgICBpbmNvcnJlY3RMYXlvdXRMaW5lcy5hcHBlbmQo
c2VsZi5fc3RyaXBfcHl0aG9uX2xvZ2dpbmdfcHJlZml4KGxpbmUpKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlCi0gICAgICAgICAgICBmb3IgbmFtZSwgZXhwcmVzc2lvbiBpbiBleHByZXNzaW9u
czoKLSAgICAgICAgICAgICAgICBtYXRjaCA9IGV4cHJlc3Npb24uc2VhcmNoKGxpbmUpCi0KLSAg
ICAgICAgICAgICAgICBpZiBtYXRjaDoKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWx1cmVz
W25hbWVdID0gdGVzdEZhaWx1cmVzLmdldChuYW1lLCAwKSArIGludChtYXRjaC5ncm91cCgxKSkK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAgICAgICAgICMgRklYTUU6IFBh
cnNlIGZpbGUgbmFtZXMgYW5kIHB1dCB0aGVtIGluIHJlc3VsdHMKLQotICAgICAgICBmb3IgbmFt
ZSBpbiB0ZXN0RmFpbHVyZXM6Ci0gICAgICAgICAgICBpbmNvcnJlY3RMYXlvdXRMaW5lcy5hcHBl
bmQoc3RyKHRlc3RGYWlsdXJlc1tuYW1lXSkgKyAnICcgKyBuYW1lKQotCi0gICAgICAgIHNlbGYu
aW5jb3JyZWN0TGF5b3V0TGluZXMgPSBpbmNvcnJlY3RMYXlvdXRMaW5lcwotCi0gICAgZGVmIGNv
bW1hbmRDb21wbGV0ZShzZWxmLCBjbWQpOgotICAgICAgICBzaGVsbC5UZXN0LmNvbW1hbmRDb21w
bGV0ZShzZWxmLCBjbWQpCi0KLSAgICAgICAgbG9nVGV4dCA9IGNtZC5sb2dzWydzdGRpbyddLmdl
dFRleHQoKQotICAgICAgICBzZWxmLl9wYXJzZVJ1bldlYktpdFRlc3RzT3V0cHV0KGxvZ1RleHQp
Ci0KLSAgICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIHJlc3VsdCA9
IFNVQ0NFU1MKLQotICAgICAgICBpZiBzZWxmLmluY29ycmVjdExheW91dExpbmVzOgotICAgICAg
ICAgICAgaWYgbGVuKHNlbGYuaW5jb3JyZWN0TGF5b3V0TGluZXMpID09IDE6Ci0gICAgICAgICAg
ICAgICAgbGluZSA9IHNlbGYuaW5jb3JyZWN0TGF5b3V0TGluZXNbMF0KLSAgICAgICAgICAgICAg
ICBpZiBsaW5lLmZpbmQoJ3dlcmUgbmV3JykgPj0gMCBvciBsaW5lLmZpbmQoJ3dhcyBuZXcnKSA+
PSAwIG9yIGxpbmUuZmluZCgnIGxlYWsnKSA+PSAwOgotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gV0FSTklOR1MKLQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5pbmNvcnJlY3RMYXlv
dXRMaW5lczoKLSAgICAgICAgICAgICAgICBpZiBsaW5lLmZpbmQoJ2ZsYWtlcycpID49IDAgb3Ig
bGluZS5maW5kKCduZXcgcGFzc2VzJykgPj0gMCBvciBsaW5lLmZpbmQoJ21pc3NpbmcgcmVzdWx0
cycpID49IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFdBUk5JTkdTCi0gICAgICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLQotICAg
ICAgICAjIFJldHVybiBjb2RlIGZyb20gVG9vbHMvU2NyaXB0cy9sYXlvdXRfdGVzdHMvcnVuX3dl
YmtpdF90ZXN0cy5weS4KLSAgICAgICAgIyBUaGlzIG1lYW5zIHRoYXQgYW4gZXhjZXB0aW9uIHdh
cyByYWlzZWQgd2hlbiBydW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMgYW5kCi0gICAgICAgICMgd2Fz
IG5ldmVyIGhhbmRsZWQuCi0gICAgICAgIGlmIGNtZC5yYyA9PSAyNTQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gRVhDRVBUSU9OCi0gICAgICAgIGlmIGNtZC5yYyAhPSAwOgotICAgICAgICAgICAgcmV0
dXJuIEZBSUxVUkUKLQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgZ2V0VGV4dChz
ZWxmLCBjbWQsIHJlc3VsdHMpOgotICAgICAgICByZXR1cm4gc2VsZi5nZXRUZXh0MihjbWQsIHJl
c3VsdHMpCi0KLSAgICBkZWYgZ2V0VGV4dDIoc2VsZiwgY21kLCByZXN1bHRzKToKLSAgICAgICAg
aWYgcmVzdWx0cyAhPSBTVUNDRVNTIGFuZCBzZWxmLmluY29ycmVjdExheW91dExpbmVzOgotICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuaW5jb3JyZWN0TGF5b3V0TGluZXMKLQotICAgICAgICByZXR1
cm4gW3NlbGYubmFtZV0KLQotCi1jbGFzcyBSdW5EYXNoYm9hcmRUZXN0cyhSdW5XZWJLaXRUZXN0
cyk6Ci0gICAgbmFtZSA9ICJkYXNoYm9hcmQtdGVzdHMiCi0gICAgZGVzY3JpcHRpb24gPSBbImRh
c2hib2FyZC10ZXN0cyBydW5uaW5nIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImRhc2hib2Fy
ZC10ZXN0cyJdCi0gICAgcmVzdWx0RGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKFJ1bldlYktpdFRl
c3RzLnJlc3VsdERpcmVjdG9yeSwgImRhc2hib2FyZC1sYXlvdXQtdGVzdC1yZXN1bHRzIikKLQot
ICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFu
ZCArIFsiLS1sYXlvdXQtdGVzdHMtZGlyZWN0b3J5IiwgIi4vVG9vbHMvQ0lTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzIl0p
Ci0gICAgICAgIHJldHVybiBSdW5XZWJLaXRUZXN0cy5zdGFydChzZWxmKQotCi0KLWNsYXNzIFJ1
bkFQSVRlc3RzKFRlc3RXaXRoRmFpbHVyZUNvdW50KToKLSAgICBuYW1lID0gInJ1bi1hcGktdGVz
dHMiCi0gICAgZGVzY3JpcHRpb24gPSBbImFwaSB0ZXN0cyBydW5uaW5nIl0KLSAgICBkZXNjcmlw
dGlvbkRvbmUgPSBbImFwaS10ZXN0cyJdCi0gICAganNvbkZpbGVOYW1lID0gImFwaV90ZXN0X3Jl
c3VsdHMuanNvbiIKLSAgICBsb2dmaWxlcyA9IHsianNvbiI6IGpzb25GaWxlTmFtZX0KLSAgICBj
b21tYW5kID0gWwotICAgICAgICAicHl0aG9uIiwKLSAgICAgICAgIi4vVG9vbHMvU2NyaXB0cy9y
dW4tYXBpLXRlc3RzIiwKLSAgICAgICAgIi0tbm8tYnVpbGQiLAotICAgICAgICAiLS1qc29uLW91
dHB1dD17MH0iLmZvcm1hdChqc29uRmlsZU5hbWUpLAotICAgICAgICBXaXRoUHJvcGVydGllcygi
LS0lKGNvbmZpZ3VyYXRpb24pcyIpLAotICAgICAgICAiLS12ZXJib3NlIiwKLSAgICAgICAgIi0t
YnVpbGRib3QtbWFzdGVyIiwgQlVJTERfV0VCS0lUX1VSTCwKLSAgICAgICAgIi0tYnVpbGRlci1u
YW1lIiwgV2l0aFByb3BlcnRpZXMoIiUoYnVpbGRlcm5hbWUpcyIpLAotICAgICAgICAiLS1idWls
ZC1udW1iZXIiLCBXaXRoUHJvcGVydGllcygiJShidWlsZG51bWJlcilzIiksCi0gICAgICAgICIt
LWJ1aWxkYm90LXdvcmtlciIsIFdpdGhQcm9wZXJ0aWVzKCIlKHdvcmtlcm5hbWUpcyIpLAotICAg
ICAgICAiLS1yZXBvcnQiLCBSRVNVTFRTX1dFQktJVF9VUkwsCi0gICAgXQotICAgIGZhaWxlZFRl
c3RzRm9ybWF0U3RyaW5nID0gIiVkIGFwaSB0ZXN0JXMgZmFpbGVkIG9yIHRpbWVkIG91dCIKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBrd2FyZ3Nb
J2xvZ0Vudmlyb24nXSA9IEZhbHNlCi0gICAgICAgIFRlc3RXaXRoRmFpbHVyZUNvdW50Ll9faW5p
dF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAg
ICAgc2VsZi5zbGF2ZUVudmlyb25tZW50W1JFU1VMVFNfU0VSVkVSX0FQSV9LRVldID0gb3MuZ2V0
ZW52KFJFU1VMVFNfU0VSVkVSX0FQSV9LRVkpCi0gICAgICAgIGFwcGVuZEN1c3RvbVRlc3RpbmdG
bGFncyhzZWxmLCBzZWxmLmdldFByb3BlcnR5KCdwbGF0Zm9ybScpLCBzZWxmLmdldFByb3BlcnR5
KCdkZXZpY2VfbW9kZWwnKSkKLSAgICAgICAgcmV0dXJuIHNoZWxsLlRlc3Quc3RhcnQoc2VsZikK
LQotICAgIGRlZiBjb3VudEZhaWx1cmVzKHNlbGYsIGNtZCk6Ci0gICAgICAgIGxvZ190ZXh0ID0g
Y21kLmxvZ3NbJ3N0ZGlvJ10uZ2V0VGV4dCgpCi0KLSAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2go
cidSYW4gKD9QPHJhbj5cZCspIHRlc3RzIG9mICg/UDx0b3RhbD5cZCspIHdpdGggKD9QPHBhc3Nl
ZD5cZCspIHN1Y2Nlc3NmdWwnLCBsb2dfdGV4dCkKLSAgICAgICAgaWYgbm90IG1hdGNoOgotICAg
ICAgICAgICAgcmV0dXJuIC0xCi0gICAgICAgIHJldHVybiBpbnQobWF0Y2guZ3JvdXAoJ3Jhbicp
KSAtIGludChtYXRjaC5ncm91cCgncGFzc2VkJykpCi0KLQotY2xhc3MgUnVuUHl0aG9uVGVzdHMo
VGVzdFdpdGhGYWlsdXJlQ291bnQpOgotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBw
bGF0Zm9ybSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BsYXRmb3JtJykKLSAgICAgICAgIyBQeXRob24g
dGVzdHMgYXJlIGZsYWt5IG9uIHRoZSBHVEsgYnVpbGRlcnMsIHJ1bm5pbmcgdGhlbSBzZXJpYWxs
eQotICAgICAgICAjIGhlbHBzIGFuZCBkb2VzIG5vdCBzaWduaWZpY2FudGx5IHByb2xvbmcgdGhl
IGN5Y2xlIHRpbWUuCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICdndGsnOgotICAgICAgICAgICAg
c2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsnLS1jaGlsZC1wcm9jZXNzZXMnLCAnMSdd
KQotICAgICAgICAjIFB5dGhvbiB0ZXN0cyBmYWlsIG9uIHdpbmRvd3MgYm90cyB3aGVuIHJ1bm5p
bmcgbW9yZSB0aGFuIG9uZSBjaGlsZCBwcm9jZXNzCi0gICAgICAgICMgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NDY1Ci0gICAgICAgIGlmIHBsYXRmb3JtID09ICd3
aW4nOgotICAgICAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsnLS1jaGls
ZC1wcm9jZXNzZXMnLCAnMSddKQotICAgICAgICByZXR1cm4gc2hlbGwuVGVzdC5zdGFydChzZWxm
KQotCi0gICAgZGVmIGNvdW50RmFpbHVyZXMoc2VsZiwgY21kKToKLSAgICAgICAgbG9nVGV4dCA9
IGNtZC5sb2dzWydzdGRpbyddLmdldFRleHQoKQotICAgICAgICAjIFdlJ3JlIGxvb2tpbmcgZm9y
IHRoZSBsaW5lIHRoYXQgbG9va3MgbGlrZSB0aGlzOiBGQUlMRUQgKGZhaWx1cmVzPTIsIGVycm9y
cz0xKQotICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUocideRkFJTEVEIFwoKD9QPGNvdW50cz5b
XildKylcKScpCi0gICAgICAgIGZvciBsaW5lIGluIGxvZ1RleHQuc3BsaXRsaW5lcygpOgotICAg
ICAgICAgICAgbWF0Y2ggPSByZWdleC5tYXRjaChsaW5lKQotICAgICAgICAgICAgaWYgbm90IG1h
dGNoOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICByZXR1cm4gc3VtKGlu
dChjb21wb25lbnQuc3BsaXQoJz0nKVsxXSkgZm9yIGNvbXBvbmVudCBpbiBtYXRjaC5ncm91cCgn
Y291bnRzJykuc3BsaXQoJywgJykpCi0gICAgICAgIHJldHVybiAwCi0KLQotY2xhc3MgUnVuV2Vi
S2l0UHlUZXN0cyhSdW5QeXRob25UZXN0cyk6Ci0gICAgbmFtZSA9ICJ3ZWJraXRweS10ZXN0Igot
ICAgIGRlc2NyaXB0aW9uID0gWyJweXRob24tdGVzdHMgcnVubmluZyJdCi0gICAgZGVzY3JpcHRp
b25Eb25lID0gWyJweXRob24tdGVzdHMiXQotICAgIGNvbW1hbmQgPSBbCi0gICAgICAgICJweXRo
b24iLAotICAgICAgICAiLi9Ub29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHkiLAotICAgICAgICAi
LS12ZXJib3NlIiwKLSAgICAgICAgIi0tYnVpbGRib3QtbWFzdGVyIiwgQlVJTERfV0VCS0lUX1VS
TCwKLSAgICAgICAgIi0tYnVpbGRlci1uYW1lIiwgV2l0aFByb3BlcnRpZXMoIiUoYnVpbGRlcm5h
bWUpcyIpLAotICAgICAgICAiLS1idWlsZC1udW1iZXIiLCBXaXRoUHJvcGVydGllcygiJShidWls
ZG51bWJlcilzIiksCi0gICAgICAgICItLWJ1aWxkYm90LXdvcmtlciIsIFdpdGhQcm9wZXJ0aWVz
KCIlKHdvcmtlcm5hbWUpcyIpLAotICAgICAgICAiLS1yZXBvcnQiLCBSRVNVTFRTX1dFQktJVF9V
UkwsCi0gICAgXQotICAgIGZhaWxlZFRlc3RzRm9ybWF0U3RyaW5nID0gIiVkIHB5dGhvbiB0ZXN0
JXMgZmFpbGVkIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0g
ICAgICAgIGt3YXJnc1snbG9nRW52aXJvbiddID0gRmFsc2UKLSAgICAgICAgUnVuUHl0aG9uVGVz
dHMuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYp
OgotICAgICAgICBzZWxmLnNsYXZlRW52aXJvbm1lbnRbUkVTVUxUU19TRVJWRVJfQVBJX0tFWV0g
PSBvcy5nZXRlbnYoUkVTVUxUU19TRVJWRVJfQVBJX0tFWSkKLSAgICAgICAgcmV0dXJuIFJ1blB5
dGhvblRlc3RzLnN0YXJ0KHNlbGYpCi0KLQotY2xhc3MgUnVuTExEQldlYktpdFRlc3RzKFJ1blB5
dGhvblRlc3RzKToKLSAgICBuYW1lID0gImxsZGItd2Via2l0LXRlc3QiCi0gICAgZGVzY3JpcHRp
b24gPSBbImxsZGItd2Via2l0LXRlc3RzIHJ1bm5pbmciXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9
IFsibGxkYi13ZWJraXQtdGVzdHMiXQotICAgIGNvbW1hbmQgPSBbCi0gICAgICAgICJweXRob24i
LAotICAgICAgICAiLi9Ub29scy9TY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQiLAotICAgICAgICAi
LS12ZXJib3NlIiwKLSAgICAgICAgIi0tbm8tYnVpbGQiLAotICAgICAgICBXaXRoUHJvcGVydGll
cygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpLAotICAgIF0KLSAgICBmYWlsZWRUZXN0c0Zvcm1hdFN0
cmluZyA9ICIlZCBsbGRiIHRlc3QlcyBmYWlsZWQiCi0KLQotY2xhc3MgUnVuUGVybFRlc3RzKFRl
c3RXaXRoRmFpbHVyZUNvdW50KToKLSAgICBuYW1lID0gIndlYmtpdHBlcmwtdGVzdCIKLSAgICBk
ZXNjcmlwdGlvbiA9IFsicGVybC10ZXN0cyBydW5uaW5nIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUg
PSBbInBlcmwtdGVzdHMiXQotICAgIGNvbW1hbmQgPSBbInBlcmwiLCAiLi9Ub29scy9TY3JpcHRz
L3Rlc3Qtd2Via2l0cGVybCJdCi0gICAgZmFpbGVkVGVzdHNGb3JtYXRTdHJpbmcgPSAiJWQgcGVy
bCB0ZXN0JXMgZmFpbGVkIgotCi0gICAgZGVmIGNvdW50RmFpbHVyZXMoc2VsZiwgY21kKToKLSAg
ICAgICAgbG9nVGV4dCA9IGNtZC5sb2dzWydzdGRpbyddLmdldFRleHQoKQotICAgICAgICAjIFdl
J3JlIGxvb2tpbmcgZm9yIHRoZSBsaW5lIHRoYXQgbG9va3MgbGlrZSB0aGlzOiBGYWlsZWQgMi8x
OSB0ZXN0IHByb2dyYW1zLiA1LzM2MyBzdWJ0ZXN0cyBmYWlsZWQuCi0gICAgICAgIHJlZ2V4ID0g
cmUuY29tcGlsZShyJ15GYWlsZWQgXGQrL1xkKyB0ZXN0IHByb2dyYW1zXC4gKD9QPGNvdW50Plxk
KykvXGQrIHN1YnRlc3RzIGZhaWxlZFwuJykKLSAgICAgICAgZm9yIGxpbmUgaW4gbG9nVGV4dC5z
cGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBtYXRjaCA9IHJlZ2V4Lm1hdGNoKGxpbmUpCi0gICAg
ICAgICAgICBpZiBub3QgbWF0Y2g6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAg
ICAgIHJldHVybiBpbnQobWF0Y2guZ3JvdXAoJ2NvdW50JykpCi0gICAgICAgIHJldHVybiAwCi0K
LQotY2xhc3MgUnVuTExJTlRDTG9vcFRlc3RzKFRlc3RXaXRoRmFpbHVyZUNvdW50KToKLSAgICBu
YW1lID0gIndlYmtpdC1qc2MtY2xvb3AtdGVzdCIKLSAgICBkZXNjcmlwdGlvbiA9IFsiY2xvb3At
dGVzdHMgcnVubmluZyJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyJjbG9vcC10ZXN0cyJdCi0g
ICAganNvbkZpbGVOYW1lID0gImpzY19jbG9vcC5qc29uIgotICAgIGNvbW1hbmQgPSBbCi0gICAg
ICAgICJwZXJsIiwgIi4vVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMiLAot
ICAgICAgICAiLS1jbG9vcCIsICItLW5vLWJ1aWxkIiwKLSAgICAgICAgIi0tbm8tanNjLXN0cmVz
cyIsICItLW5vLWZhaWwtZmFzdCIsCi0gICAgICAgICItLWpzb24tb3V0cHV0PXswfSIuZm9ybWF0
KGpzb25GaWxlTmFtZSksCi0gICAgICAgIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlv
bilzIiksCi0gICAgICAgICItLWJ1aWxkZXItbmFtZSIsIFdpdGhQcm9wZXJ0aWVzKCIlKGJ1aWxk
ZXJuYW1lKXMiKSwKLSAgICAgICAgIi0tYnVpbGQtbnVtYmVyIiwgV2l0aFByb3BlcnRpZXMoIiUo
YnVpbGRudW1iZXIpcyIpLAotICAgICAgICAiLS1idWlsZGJvdC13b3JrZXIiLCBXaXRoUHJvcGVy
dGllcygiJSh3b3JrZXJuYW1lKXMiKSwKLSAgICAgICAgIi0tYnVpbGRib3QtbWFzdGVyIiwgQlVJ
TERfV0VCS0lUX1VSTCwKLSAgICAgICAgIi0tcmVwb3J0IiwgUkVTVUxUU19XRUJLSVRfVVJMLAot
ICAgIF0KLSAgICBmYWlsZWRUZXN0c0Zvcm1hdFN0cmluZyA9ICIlZCByZWdyZXNzaW9uJXMgZm91
bmQuIgotICAgIGxvZ2ZpbGVzID0geyJqc29uIjoganNvbkZpbGVOYW1lfQotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIGt3YXJnc1snbG9nRW52aXJv
biddID0gRmFsc2UKLSAgICAgICAgVGVzdFdpdGhGYWlsdXJlQ291bnQuX19pbml0X18oc2VsZiwg
KmFyZ3MsICoqa3dhcmdzKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBzZWxmLnNs
YXZlRW52aXJvbm1lbnRbUkVTVUxUU19TRVJWRVJfQVBJX0tFWV0gPSBvcy5nZXRlbnYoUkVTVUxU
U19TRVJWRVJfQVBJX0tFWSkKLSAgICAgICAgcmV0dXJuIHNoZWxsLlRlc3Quc3RhcnQoc2VsZikK
LQotICAgIGRlZiBjb3VudEZhaWx1cmVzKHNlbGYsIGNtZCk6Ci0gICAgICAgIGxvZ1RleHQgPSBj
bWQubG9nc1snc3RkaW8nXS5nZXRUZXh0KCkKLSAgICAgICAgIyBXZSdyZSBsb29raW5nIGZvciB0
aGUgbGluZSB0aGF0IGxvb2tzIGxpa2UgdGhpczogMCByZWdyZXNzaW9ucyBmb3VuZC4KLSAgICAg
ICAgcmVnZXggPSByZS5jb21waWxlKHInXHMqKD9QPGNvdW50PlxkKykgcmVncmVzc2lvbnM/IGZv
dW5kLicpCi0gICAgICAgIGZvciBsaW5lIGluIGxvZ1RleHQuc3BsaXRsaW5lcygpOgotICAgICAg
ICAgICAgbWF0Y2ggPSByZWdleC5tYXRjaChsaW5lKQotICAgICAgICAgICAgaWYgbm90IG1hdGNo
OgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICByZXR1cm4gaW50KG1hdGNo
Lmdyb3VwKCdjb3VudCcpKQotICAgICAgICByZXR1cm4gMAotCi0KLWNsYXNzIFJ1bjMyYml0SlND
VGVzdHMoVGVzdFdpdGhGYWlsdXJlQ291bnQpOgotICAgIG5hbWUgPSAid2Via2l0LTMyYml0LWpz
Yy10ZXN0IgotICAgIGRlc2NyaXB0aW9uID0gWyIzMmJpdC1qc2MtdGVzdHMgcnVubmluZyJdCi0g
ICAgZGVzY3JpcHRpb25Eb25lID0gWyIzMmJpdC1qc2MtdGVzdHMiXQotICAgIGpzb25GaWxlTmFt
ZSA9ICJqc2NfMzJiaXQuanNvbiIKLSAgICBjb21tYW5kID0gWwotICAgICAgICAicGVybCIsICIu
L1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzIiwKLSAgICAgICAgIi0tMzIt
Yml0IiwgIi0tbm8tYnVpbGQiLAotICAgICAgICAiLS1uby1mYWlsLWZhc3QiLCAiLS1uby1qaXQi
LCAiLS1uby10ZXN0YWlyIiwgIi0tbm8tdGVzdGIzIiwgIi0tbm8tdGVzdG1hc20iLAotICAgICAg
ICAiLS1qc29uLW91dHB1dD17MH0iLmZvcm1hdChqc29uRmlsZU5hbWUpLAotICAgICAgICBXaXRo
UHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpLAotICAgICAgICAiLS1idWlsZGVyLW5h
bWUiLCBXaXRoUHJvcGVydGllcygiJShidWlsZGVybmFtZSlzIiksCi0gICAgICAgICItLWJ1aWxk
LW51bWJlciIsIFdpdGhQcm9wZXJ0aWVzKCIlKGJ1aWxkbnVtYmVyKXMiKSwKLSAgICAgICAgIi0t
YnVpbGRib3Qtd29ya2VyIiwgV2l0aFByb3BlcnRpZXMoIiUod29ya2VybmFtZSlzIiksCi0gICAg
ICAgICItLWJ1aWxkYm90LW1hc3RlciIsIEJVSUxEX1dFQktJVF9VUkwsCi0gICAgICAgICItLXJl
cG9ydCIsIFJFU1VMVFNfV0VCS0lUX1VSTCwKLSAgICBdCi0gICAgZmFpbGVkVGVzdHNGb3JtYXRT
dHJpbmcgPSAiJWQgcmVncmVzc2lvbiVzIGZvdW5kLiIKLSAgICBsb2dmaWxlcyA9IHsianNvbiI6
IGpzb25GaWxlTmFtZX0KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3Mp
OgotICAgICAgICBrd2FyZ3NbJ2xvZ0Vudmlyb24nXSA9IEZhbHNlCi0gICAgICAgIFRlc3RXaXRo
RmFpbHVyZUNvdW50Ll9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKLQotICAgIGRlZiBz
dGFydChzZWxmKToKLSAgICAgICAgc2VsZi5zbGF2ZUVudmlyb25tZW50W1JFU1VMVFNfU0VSVkVS
X0FQSV9LRVldID0gb3MuZ2V0ZW52KFJFU1VMVFNfU0VSVkVSX0FQSV9LRVkpCi0gICAgICAgIHJl
dHVybiBzaGVsbC5UZXN0LnN0YXJ0KHNlbGYpCi0KLSAgICBkZWYgY291bnRGYWlsdXJlcyhzZWxm
LCBjbWQpOgotICAgICAgICBsb2dUZXh0ID0gY21kLmxvZ3NbJ3N0ZGlvJ10uZ2V0VGV4dCgpCi0g
ICAgICAgICMgV2UncmUgbG9va2luZyBmb3IgdGhlIGxpbmUgdGhhdCBsb29rcyBsaWtlIHRoaXM6
IDAgZmFpbHVyZXMgZm91bmQuCi0gICAgICAgIHJlZ2V4ID0gcmUuY29tcGlsZShyJ1xzKig/UDxj
b3VudD5cZCspIGZhaWx1cmVzPyBmb3VuZC4nKQotICAgICAgICBmb3IgbGluZSBpbiBsb2dUZXh0
LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIG1hdGNoID0gcmVnZXgubWF0Y2gobGluZSkKLSAg
ICAgICAgICAgIGlmIG5vdCBtYXRjaDoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAg
ICAgICAgcmV0dXJuIGludChtYXRjaC5ncm91cCgnY291bnQnKSkKLSAgICAgICAgcmV0dXJuIDAK
LQotCi1jbGFzcyBSdW5CaW5kaW5nc1Rlc3RzKHNoZWxsLlRlc3QpOgotICAgIG5hbWUgPSAiYmlu
ZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cyIKLSAgICBkZXNjcmlwdGlvbiA9IFsiYmluZGluZ3MtdGVz
dHMgcnVubmluZyJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyJiaW5kaW5ncy10ZXN0cyJdCi0g
ICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvU2NyaXB0cy9ydW4tYmluZGluZ3MtdGVz
dHMiXQotCi0KLWNsYXNzIFJ1bkJ1aWx0aW5zVGVzdHMoc2hlbGwuVGVzdCk6Ci0gICAgbmFtZSA9
ICJidWlsdGlucy1nZW5lcmF0b3ItdGVzdHMiCi0gICAgZGVzY3JpcHRpb24gPSBbImJ1aWx0aW5z
LWdlbmVyYXRvci10ZXN0cyBydW5uaW5nIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImJ1aWx0
aW5zLWdlbmVyYXRvci10ZXN0cyJdCi0gICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMv
U2NyaXB0cy9ydW4tYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzIl0KLQotCi1jbGFzcyBSdW5HTGli
QVBJVGVzdHMoc2hlbGwuVGVzdCk6Ci0gICAgbmFtZSA9ICJBUEktdGVzdHMiCi0gICAgZGVzY3Jp
cHRpb24gPSBbIkFQSSB0ZXN0cyBydW5uaW5nIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbIkFQ
SSB0ZXN0cyJdCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIGFkZGl0aW9uYWxBcmd1
bWVudHMgPSBzZWxmLmdldFByb3BlcnR5KCJhZGRpdGlvbmFsQXJndW1lbnRzIikKLSAgICAgICAg
aWYgYWRkaXRpb25hbEFyZ3VtZW50czoKLSAgICAgICAgICAgIHNlbGYuY29tbWFuZCArPSBhZGRp
dGlvbmFsQXJndW1lbnRzCi0gICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQpCi0g
ICAgICAgIHJldHVybiBzaGVsbC5UZXN0LnN0YXJ0KHNlbGYpCi0KLSAgICBkZWYgY29tbWFuZENv
bXBsZXRlKHNlbGYsIGNtZCk6Ci0gICAgICAgIHNoZWxsLlRlc3QuY29tbWFuZENvbXBsZXRlKHNl
bGYsIGNtZCkKLQotICAgICAgICBsb2dUZXh0ID0gY21kLmxvZ3NbJ3N0ZGlvJ10uZ2V0VGV4dCgp
Ci0KLSAgICAgICAgZmFpbGVkVGVzdHMgPSAwCi0gICAgICAgIGNyYXNoZWRUZXN0cyA9IDAKLSAg
ICAgICAgdGltZWRPdXRUZXN0cyA9IDAKLSAgICAgICAgbWVzc2FnZXMgPSBbXQotICAgICAgICBz
ZWxmLnN0YXR1c0xpbmUgPSBbXQotCi0gICAgICAgIGZvdW5kSXRlbXMgPSByZS5maW5kYWxsKCJV
bmV4cGVjdGVkIGZhaWx1cmVzIFwoKFxkKylcKSIsIGxvZ1RleHQpCi0gICAgICAgIGlmIGZvdW5k
SXRlbXM6Ci0gICAgICAgICAgICBmYWlsZWRUZXN0cyA9IGludChmb3VuZEl0ZW1zWzBdKQotICAg
ICAgICAgICAgbWVzc2FnZXMuYXBwZW5kKCIlZCBmYWlsdXJlcyIgJSBmYWlsZWRUZXN0cykKLQot
ICAgICAgICBmb3VuZEl0ZW1zID0gcmUuZmluZGFsbCgiVW5leHBlY3RlZCBjcmFzaGVzIFwoKFxk
KylcKSIsIGxvZ1RleHQpCi0gICAgICAgIGlmIGZvdW5kSXRlbXM6Ci0gICAgICAgICAgICBjcmFz
aGVkVGVzdHMgPSBpbnQoZm91bmRJdGVtc1swXSkKLSAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVu
ZCgiJWQgY3Jhc2hlcyIgJSBjcmFzaGVkVGVzdHMpCi0KLSAgICAgICAgZm91bmRJdGVtcyA9IHJl
LmZpbmRhbGwoIlVuZXhwZWN0ZWQgdGltZW91dHMgXCgoXGQrKVwpIiwgbG9nVGV4dCkKLSAgICAg
ICAgaWYgZm91bmRJdGVtczoKLSAgICAgICAgICAgIHRpbWVkT3V0VGVzdHMgPSBpbnQoZm91bmRJ
dGVtc1swXSkKLSAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVuZCgiJWQgdGltZW91dHMiICUgdGlt
ZWRPdXRUZXN0cykKLQotICAgICAgICBmb3VuZEl0ZW1zID0gcmUuZmluZGFsbCgiVW5leHBlY3Rl
ZCBwYXNzZXMgXCgoXGQrKVwpIiwgbG9nVGV4dCkKLSAgICAgICAgaWYgZm91bmRJdGVtczoKLSAg
ICAgICAgICAgIG5ld1Bhc3NUZXN0cyA9IGludChmb3VuZEl0ZW1zWzBdKQotICAgICAgICAgICAg
bWVzc2FnZXMuYXBwZW5kKCIlZCBuZXcgcGFzc2VzIiAlIG5ld1Bhc3NUZXN0cykKLQotICAgICAg
ICBzZWxmLnRvdGFsRmFpbGVkVGVzdHMgPSBmYWlsZWRUZXN0cyArIGNyYXNoZWRUZXN0cyArIHRp
bWVkT3V0VGVzdHMKLSAgICAgICAgaWYgbWVzc2FnZXM6Ci0gICAgICAgICAgICBzZWxmLnN0YXR1
c0xpbmUgPSBbIkFQSSB0ZXN0czogJXMiICUgIiwgIi5qb2luKG1lc3NhZ2VzKV0KLQotICAgIGRl
ZiBldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKToKLSAgICAgICAgaWYgc2VsZi50b3RhbEZhaWxl
ZFRlc3RzID4gMDoKLSAgICAgICAgICAgIHJldHVybiBGQUlMVVJFCi0KLSAgICAgICAgaWYgY21k
LnJjICE9IDA6Ci0gICAgICAgICAgICByZXR1cm4gRkFJTFVSRQotCi0gICAgICAgIHJldHVybiBT
VUNDRVNTCi0KLSAgICBkZWYgZ2V0VGV4dChzZWxmLCBjbWQsIHJlc3VsdHMpOgotICAgICAgICBy
ZXR1cm4gc2VsZi5nZXRUZXh0MihjbWQsIHJlc3VsdHMpCi0KLSAgICBkZWYgZ2V0VGV4dDIoc2Vs
ZiwgY21kLCByZXN1bHRzKToKLSAgICAgICAgaWYgcmVzdWx0cyAhPSBTVUNDRVNTIGFuZCBzZWxm
LnRvdGFsRmFpbGVkVGVzdHMgPiAwOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3RhdHVzTGlu
ZQotCi0gICAgICAgIHJldHVybiBbc2VsZi5uYW1lXQotCi0KLWNsYXNzIFJ1bkd0a0FQSVRlc3Rz
KFJ1bkdMaWJBUElUZXN0cyk6Ci0gICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvU2Ny
aXB0cy9ydW4tZ3RrLXRlc3RzIiwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMi
KV0KLQotCi1jbGFzcyBSdW5XUEVBUElUZXN0cyhSdW5HTGliQVBJVGVzdHMpOgotICAgIGNvbW1h
bmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL1NjcmlwdHMvcnVuLXdwZS10ZXN0cyIsIFdpdGhQcm9w
ZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIildCi0KLQotY2xhc3MgUnVuV2ViRHJpdmVyVGVz
dHMoc2hlbGwuVGVzdCk6Ci0gICAgbmFtZSA9ICJ3ZWJkcml2ZXItdGVzdCIKLSAgICBkZXNjcmlw
dGlvbiA9IFsid2ViZHJpdmVyLXRlc3RzIHJ1bm5pbmciXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9
IFsid2ViZHJpdmVyLXRlc3RzIl0KLSAgICBqc29uRmlsZU5hbWUgPSAid2ViZHJpdmVyX3Rlc3Rz
Lmpzb24iCi0gICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvU2NyaXB0cy9ydW4td2Vi
ZHJpdmVyLXRlc3RzIiwgIi0tanNvbi1vdXRwdXQ9ezB9Ii5mb3JtYXQoanNvbkZpbGVOYW1lKSwg
V2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKV0KLSAgICBsb2dmaWxlcyA9IHsi
anNvbiI6IGpzb25GaWxlTmFtZX0KLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgYWRk
aXRpb25hbEFyZ3VtZW50cyA9IHNlbGYuZ2V0UHJvcGVydHkoJ2FkZGl0aW9uYWxBcmd1bWVudHMn
KQotICAgICAgICBpZiBhZGRpdGlvbmFsQXJndW1lbnRzOgotICAgICAgICAgICAgc2VsZi5zZXRD
b21tYW5kKHNlbGYuY29tbWFuZCArIGFkZGl0aW9uYWxBcmd1bWVudHMpCi0KLSAgICAgICAgYXBw
ZW5kQ3VzdG9tQnVpbGRGbGFncyhzZWxmLCBzZWxmLmdldFByb3BlcnR5KCdwbGF0Zm9ybScpLCBz
ZWxmLmdldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nKSkKLSAgICAgICAgcmV0dXJuIHNoZWxsLlRl
c3Quc3RhcnQoc2VsZikKLQotICAgIGRlZiBjb21tYW5kQ29tcGxldGUoc2VsZiwgY21kKToKLSAg
ICAgICAgc2hlbGwuVGVzdC5jb21tYW5kQ29tcGxldGUoc2VsZiwgY21kKQotICAgICAgICBsb2dU
ZXh0ID0gY21kLmxvZ3NbJ3N0ZGlvJ10uZ2V0VGV4dCgpCi0KLSAgICAgICAgc2VsZi5mYWlsdXJl
c0NvdW50ID0gMAotICAgICAgICBzZWxmLm5ld1Bhc3Nlc0NvdW50ID0gMAotICAgICAgICBmb3Vu
ZEl0ZW1zID0gcmUuZmluZGFsbCgiXlVuZXhwZWN0ZWQgLisgXCgoXGQrKVwpIiwgbG9nVGV4dCwg
cmUuTVVMVElMSU5FKQotICAgICAgICBpZiBmb3VuZEl0ZW1zOgotICAgICAgICAgICAgc2VsZi5m
YWlsdXJlc0NvdW50ID0gaW50KGZvdW5kSXRlbXNbMF0pCi0gICAgICAgIGZvdW5kSXRlbXMgPSBy
ZS5maW5kYWxsKCJeRXhwZWN0ZWQgdG8gLissIGJ1dCBwYXNzZWQgXCgoXGQrKVwpIiwgbG9nVGV4
dCwgcmUuTVVMVElMSU5FKQotICAgICAgICBpZiBmb3VuZEl0ZW1zOgotICAgICAgICAgICAgc2Vs
Zi5uZXdQYXNzZXNDb3VudCA9IGludChmb3VuZEl0ZW1zWzBdKQotCi0gICAgZGVmIGV2YWx1YXRl
Q29tbWFuZChzZWxmLCBjbWQpOgotICAgICAgICBpZiBzZWxmLmZhaWx1cmVzQ291bnQ6Ci0gICAg
ICAgICAgICByZXR1cm4gRkFJTFVSRQotCi0gICAgICAgIGlmIHNlbGYubmV3UGFzc2VzQ291bnQ6
Ci0gICAgICAgICAgICByZXR1cm4gV0FSTklOR1MKLQotICAgICAgICBpZiBjbWQucmMgIT0gMDoK
LSAgICAgICAgICAgIHJldHVybiBGQUlMVVJFCi0KLSAgICAgICAgcmV0dXJuIFNVQ0NFU1MKLQot
ICAgIGRlZiBnZXRUZXh0KHNlbGYsIGNtZCwgcmVzdWx0cyk6Ci0gICAgICAgIHJldHVybiBzZWxm
LmdldFRleHQyKGNtZCwgcmVzdWx0cykKLQotICAgIGRlZiBnZXRUZXh0MihzZWxmLCBjbWQsIHJl
c3VsdHMpOgotICAgICAgICBpZiByZXN1bHRzICE9IFNVQ0NFU1MgYW5kIChzZWxmLmZhaWx1cmVz
Q291bnQgb3Igc2VsZi5uZXdQYXNzZXNDb3VudCk6Ci0gICAgICAgICAgICBsaW5lcyA9IFtdCi0g
ICAgICAgICAgICBpZiBzZWxmLmZhaWx1cmVzQ291bnQ6Ci0gICAgICAgICAgICAgICAgbGluZXMu
YXBwZW5kKCIlZCBmYWlsdXJlcyIgJSBzZWxmLmZhaWx1cmVzQ291bnQpCi0gICAgICAgICAgICBp
ZiBzZWxmLm5ld1Bhc3Nlc0NvdW50OgotICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiJWQg
bmV3IHBhc3NlcyIgJSBzZWxmLm5ld1Bhc3Nlc0NvdW50KQotICAgICAgICAgICAgcmV0dXJuIFsi
JXMgJXMiICUgKHNlbGYubmFtZSwgIiwgIi5qb2luKGxpbmVzKSldCi0KLSAgICAgICAgcmV0dXJu
IFtzZWxmLm5hbWVdCi0KLQotY2xhc3MgUnVuV2ViS2l0MVRlc3RzKFJ1bldlYktpdFRlc3RzKToK
LSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1h
bmQgKyBbIi0tZHVtcC1yZW5kZXItdHJlZSJdKQotCi0gICAgICAgIHJldHVybiBSdW5XZWJLaXRU
ZXN0cy5zdGFydChzZWxmKQotCi0KLWNsYXNzIFJ1bldlYktpdDFMZWFrVGVzdHMoUnVuV2ViS2l0
MVRlc3RzKToKLSAgICB3YW50X3N0ZG91dCA9IEZhbHNlCi0gICAgd2FudF9zdGRlcnIgPSBGYWxz
ZQotICAgIHdhcm5Pbldhcm5pbmdzID0gVHJ1ZQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAg
ICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWyItLWxlYWtzIiwgIi0tcmVzdWx0
LXJlcG9ydC1mbGF2b3IiLCAiTGVha3MiXSkKLSAgICAgICAgcmV0dXJuIFJ1bldlYktpdDFUZXN0
cy5zdGFydChzZWxmKQotCi0KLWNsYXNzIFJ1bkFuZFVwbG9hZFBlcmZUZXN0cyhzaGVsbC5UZXN0
KToKLSAgICBuYW1lID0gInBlcmYtdGVzdCIKLSAgICBkZXNjcmlwdGlvbiA9IFsicGVyZi10ZXN0
cyBydW5uaW5nIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbInBlcmYtdGVzdHMiXQotICAgIGNv
bW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL1NjcmlwdHMvcnVuLXBlcmYtdGVzdHMiLAotICAg
ICAgICAgICAgICAgIi0tb3V0cHV0LWpzb24tcGF0aCIsICJwZXJmLXRlc3QtcmVzdWx0cy5qc29u
IiwKLSAgICAgICAgICAgICAgICItLXdvcmtlci1jb25maWctanNvbi1wYXRoIiwgIi4uLy4uL3Bl
cmYtdGVzdC1jb25maWcuanNvbiIsCi0gICAgICAgICAgICAgICAiLS1uby1zaG93LXJlc3VsdHMi
LAotICAgICAgICAgICAgICAgIi0tcmVzZXQtcmVzdWx0cyIsCi0gICAgICAgICAgICAgICAiLS10
ZXN0LXJlc3VsdHMtc2VydmVyIiwgInBlcmYud2Via2l0Lm9yZyIsCi0gICAgICAgICAgICAgICAi
LS1idWlsZGVyLW5hbWUiLCBXaXRoUHJvcGVydGllcygiJShidWlsZGVybmFtZSlzIiksCi0gICAg
ICAgICAgICAgICAiLS1idWlsZC1udW1iZXIiLCBXaXRoUHJvcGVydGllcygiJShidWlsZG51bWJl
cilzIiksCi0gICAgICAgICAgICAgICAiLS1wbGF0Zm9ybSIsIFdpdGhQcm9wZXJ0aWVzKCIlKGZ1
bGxQbGF0Zm9ybSlzIiksCi0gICAgICAgICAgICAgICAiLS1uby1idWlsZCIsCi0gICAgICAgICAg
ICAgICBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpXQotCi0gICAgZGVmIHN0
YXJ0KHNlbGYpOgotICAgICAgICBhZGRpdGlvbmFsQXJndW1lbnRzID0gc2VsZi5nZXRQcm9wZXJ0
eSgiYWRkaXRpb25hbEFyZ3VtZW50cyIpCi0gICAgICAgIGlmIGFkZGl0aW9uYWxBcmd1bWVudHM6
Ci0gICAgICAgICAgICBzZWxmLmNvbW1hbmQgKz0gYWRkaXRpb25hbEFyZ3VtZW50cwotICAgICAg
ICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kKQotICAgICAgICByZXR1cm4gc2hlbGwuVGVz
dC5zdGFydChzZWxmKQotCi0gICAgZGVmIGdldFRleHQoc2VsZiwgY21kLCByZXN1bHRzKToKLSAg
ICAgICAgcmV0dXJuIHNlbGYuZ2V0VGV4dDIoY21kLCByZXN1bHRzKQotCi0gICAgZGVmIGdldFRl
eHQyKHNlbGYsIGNtZCwgcmVzdWx0cyk6Ci0gICAgICAgIGlmIHJlc3VsdHMgIT0gU1VDQ0VTUzoK
LSAgICAgICAgICAgIGlmIGNtZC5yYyA9PSAtMSAmIDB4ZmY6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFsiYnVpbGQgbm90IHVwIHRvIGRhdGUiXQotICAgICAgICAgICAgZWxpZiBjbWQucmMgPT0g
LTIgJiAweGZmOgotICAgICAgICAgICAgICAgIHJldHVybiBbIndvcmtlciBjb25maWcgSlNPTiBl
cnJvciJdCi0gICAgICAgICAgICBlbGlmIGNtZC5yYyA9PSAtMyAmIDB4ZmY6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIFsib3V0cHV0IEpTT04gbWVyZ2UgZXJyb3IiXQotICAgICAgICAgICAgZWxp
ZiBjbWQucmMgPT0gLTQgJiAweGZmOgotICAgICAgICAgICAgICAgIHJldHVybiBbInVwbG9hZCBl
cnJvciJdCi0gICAgICAgICAgICBlbGlmIGNtZC5yYyA9PSAtNSAmIDB4ZmY6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIFsic3lzdGVtIGRlcGVuZGVuY3kgZXJyb3IiXQotICAgICAgICAgICAgZWxp
ZiBjbWQucmMgPT0gLTE6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFsidGltZW91dCJdCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBbIiVkIHBlcmYgdGVzdHMgZmFp
bGVkIiAlIGNtZC5yY10KLQotICAgICAgICByZXR1cm4gW3NlbGYubmFtZV0KLQotCi1jbGFzcyBS
dW5CZW5jaG1hcmtUZXN0cyhzaGVsbC5UZXN0KToKLSAgICBuYW1lID0gImJlbmNobWFyay10ZXN0
IgotICAgIGRlc2NyaXB0aW9uID0gWyJiZW5jaG1hcmsgdGVzdHMgcnVubmluZyJdCi0gICAgZGVz
Y3JpcHRpb25Eb25lID0gWyJiZW5jaG1hcmsgdGVzdHMiXQotICAgIGNvbW1hbmQgPSBbInB5dGhv
biIsICIuL1Rvb2xzL1NjcmlwdHMvYnJvd3NlcnBlcmZkYXNoLWJlbmNobWFyayIsICItLWFsbHBs
YW5zIiwKLSAgICAgICAgICAgICAgICItLWNvbmZpZy1maWxlIiwgIi4uLy4uL2Jyb3dzZXJwZXJm
ZGFzaC1iZW5jaG1hcmstY29uZmlnLnR4dCIsCi0gICAgICAgICAgICAgICAiLS1icm93c2VyLXZl
cnNpb24iLCBXaXRoUHJvcGVydGllcygiciUoZ290X3JldmlzaW9uKXMiKV0KLQotICAgIGRlZiBz
dGFydChzZWxmKToKLSAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldFByb3BlcnR5KCJwbGF0Zm9y
bSIpCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICJndGsiOgotICAgICAgICAgICAgc2VsZi5jb21t
YW5kICs9IFsiLS1icm93c2VyIiwgIm1pbmlicm93c2VyLWd0ayJdCi0gICAgICAgIHNlbGYuc2V0
Q29tbWFuZChzZWxmLmNvbW1hbmQpCi0gICAgICAgIHJldHVybiBzaGVsbC5UZXN0LnN0YXJ0KHNl
bGYpCi0KLSAgICBkZWYgZ2V0VGV4dChzZWxmLCBjbWQsIHJlc3VsdHMpOgotICAgICAgICByZXR1
cm4gc2VsZi5nZXRUZXh0MihjbWQsIHJlc3VsdHMpCi0KLSAgICBkZWYgZ2V0VGV4dDIoc2VsZiwg
Y21kLCByZXN1bHRzKToKLSAgICAgICAgaWYgcmVzdWx0cyAhPSBTVUNDRVNTOgotICAgICAgICAg
ICAgcmV0dXJuIFsiJWQgYmVuY2htYXJrIHRlc3RzIGZhaWxlZCIgJSBjbWQucmNdCi0gICAgICAg
IHJldHVybiBbc2VsZi5uYW1lXQotCi0KLWNsYXNzIEFyY2hpdmVUZXN0UmVzdWx0cyhzaGVsbC5T
aGVsbENvbW1hbmQpOgotICAgIGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL0NJU3VwcG9y
dC90ZXN0LXJlc3VsdC1hcmNoaXZlIiwKLSAgICAgICAgICAgICAgIFdpdGhQcm9wZXJ0aWVzKCIt
LXBsYXRmb3JtPSUocGxhdGZvcm0pcyIpLCBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRp
b24pcyIpLCAiYXJjaGl2ZSJdCi0gICAgbmFtZSA9ICJhcmNoaXZlLXRlc3QtcmVzdWx0cyIKLSAg
ICBkZXNjcmlwdGlvbiA9IFsiYXJjaGl2aW5nIHRlc3QgcmVzdWx0cyJdCi0gICAgZGVzY3JpcHRp
b25Eb25lID0gWyJhcmNoaXZlZCB0ZXN0IHJlc3VsdHMiXQotICAgIGhhbHRPbkZhaWx1cmUgPSBU
cnVlCi0KLQotY2xhc3MgVXBsb2FkVGVzdFJlc3VsdHModHJhbnNmZXIuRmlsZVVwbG9hZCk6Ci0g
ICAgd29ya2Vyc3JjID0gImxheW91dC10ZXN0LXJlc3VsdHMuemlwIgotICAgIG1hc3RlcmRlc3Qg
PSBXaXRoUHJvcGVydGllcygicHVibGljX2h0bWwvcmVzdWx0cy8lKGJ1aWxkZXJuYW1lKXMvciUo
Z290X3JldmlzaW9uKXMgKCUoYnVpbGRudW1iZXIpcykuemlwIikKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIGt3YXJnc1snc2xhdmVzcmMnXSA9IHNlbGYud29y
a2Vyc3JjCi0gICAgICAgIGt3YXJnc1snbWFzdGVyZGVzdCddID0gc2VsZi5tYXN0ZXJkZXN0Ci0g
ICAgICAgIGt3YXJnc1snbW9kZSddID0gMG82NDQKLSAgICAgICAga3dhcmdzWydibG9ja3NpemUn
XSA9IDEwMjQgKiAyNTYKLSAgICAgICAgdHJhbnNmZXIuRmlsZVVwbG9hZC5fX2luaXRfXyhzZWxm
LCAqKmt3YXJncykKLQotCi1jbGFzcyBUcmFuc2ZlclRvUzMobWFzdGVyLk1hc3RlclNoZWxsQ29t
bWFuZCk6Ci0gICAgbmFtZSA9ICJ0cmFuc2Zlci10by1zMyIKLSAgICBkZXNjcmlwdGlvbiA9IFsi
dHJhbnNmZXJyaW5nIHRvIHMzIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbInRyYW5zZmVycmVk
IHRvIHMzIl0KLSAgICBhcmNoaXZlID0gV2l0aFByb3BlcnRpZXMoImFyY2hpdmVzLyUoZnVsbFBs
YXRmb3JtKXMtJShhcmNoaXRlY3R1cmUpcy0lKGNvbmZpZ3VyYXRpb24pcy8lKGdvdF9yZXZpc2lv
bilzLnppcCIpCi0gICAgbWluaWZpZWRBcmNoaXZlID0gV2l0aFByb3BlcnRpZXMoImFyY2hpdmVz
LyUoZnVsbFBsYXRmb3JtKXMtJShhcmNoaXRlY3R1cmUpcy0lKGNvbmZpZ3VyYXRpb24pcy9taW5p
ZmllZC0lKGdvdF9yZXZpc2lvbilzLnppcCIpCi0gICAgaWRlbnRpZmllciA9IFdpdGhQcm9wZXJ0
aWVzKCIlKGZ1bGxQbGF0Zm9ybSlzLSUoYXJjaGl0ZWN0dXJlKXMtJShjb25maWd1cmF0aW9uKXMi
KQotICAgIHJldmlzaW9uID0gV2l0aFByb3BlcnRpZXMoIiUoZ290X3JldmlzaW9uKXMiKQotICAg
IGNvbW1hbmQgPSBbInB5dGhvbiIsICIuLi9TaGFyZWQvdHJhbnNmZXItYXJjaGl2ZS10by1zMyIs
ICItLXJldmlzaW9uIiwgcmV2aXNpb24sICItLWlkZW50aWZpZXIiLCBpZGVudGlmaWVyLCAiLS1h
cmNoaXZlIiwgYXJjaGl2ZV0KLSAgICBoYWx0T25GYWlsdXJlID0gVHJ1ZQotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAga3dhcmdzWydjb21tYW5kJ10gPSBzZWxm
LmNvbW1hbmQKLSAgICAgICAgbWFzdGVyLk1hc3RlclNoZWxsQ29tbWFuZC5fX2luaXRfXyhzZWxm
LCAqKmt3YXJncykKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgcmV0dXJuIG1hc3Rl
ci5NYXN0ZXJTaGVsbENvbW1hbmQuc3RhcnQoc2VsZikKLQotICAgIGRlZiBmaW5pc2hlZChzZWxm
LCByZXN1bHQpOgotICAgICAgICByZXR1cm4gbWFzdGVyLk1hc3RlclNoZWxsQ29tbWFuZC5maW5p
c2hlZChzZWxmLCByZXN1bHQpCi0KLQotY2xhc3MgRXh0cmFjdFRlc3RSZXN1bHRzKG1hc3Rlci5N
YXN0ZXJTaGVsbENvbW1hbmQpOgotICAgIHppcEZpbGUgPSBXaXRoUHJvcGVydGllcygicHVibGlj
X2h0bWwvcmVzdWx0cy8lKGJ1aWxkZXJuYW1lKXMvciUoZ290X3JldmlzaW9uKXMgKCUoYnVpbGRu
dW1iZXIpcykuemlwIikKLSAgICByZXN1bHREaXJlY3RvcnkgPSBXaXRoUHJvcGVydGllcygicHVi
bGljX2h0bWwvcmVzdWx0cy8lKGJ1aWxkZXJuYW1lKXMvciUoZ290X3JldmlzaW9uKXMgKCUoYnVp
bGRudW1iZXIpcykiKQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsidXBsb2FkZWQgcmVzdWx0cyJd
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBrd2FyZ3NbJ2Nv
bW1hbmQnXSA9ICIiCi0gICAgICAgIG1hc3Rlci5NYXN0ZXJTaGVsbENvbW1hbmQuX19pbml0X18o
c2VsZiwgKiprd2FyZ3MpCi0KLSAgICBkZWYgcmVzdWx0RGlyZWN0b3J5VVJMKHNlbGYpOgotICAg
ICAgICByZXR1cm4gc2VsZi5idWlsZC5nZXRQcm9wZXJ0aWVzKCkucmVuZGVyKHNlbGYucmVzdWx0
RGlyZWN0b3J5KS5yZXBsYWNlKCJwdWJsaWNfaHRtbC8iLCAiLyIpICsgIi8iCi0KLSAgICBkZWYg
c3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tbWFuZCA9IFsidW56aXAiLCBzZWxmLmJ1aWxk
LmdldFByb3BlcnRpZXMoKS5yZW5kZXIoc2VsZi56aXBGaWxlKSwgIi1kIiwgc2VsZi5idWlsZC5n
ZXRQcm9wZXJ0aWVzKCkucmVuZGVyKHNlbGYucmVzdWx0RGlyZWN0b3J5KV0KLSAgICAgICAgcmV0
dXJuIG1hc3Rlci5NYXN0ZXJTaGVsbENvbW1hbmQuc3RhcnQoc2VsZikKLQotICAgIGRlZiBhZGRD
dXN0b21VUkxzKHNlbGYpOgotICAgICAgICBzZWxmLmFkZFVSTCgidmlldyBsYXlvdXQgdGVzdCBy
ZXN1bHRzIiwgc2VsZi5yZXN1bHREaXJlY3RvcnlVUkwoKSArICJyZXN1bHRzLmh0bWwiKQotICAg
ICAgICBzZWxmLmFkZFVSTCgidmlldyBkYXNoYm9hcmQgdGVzdCByZXN1bHRzIiwgc2VsZi5yZXN1
bHREaXJlY3RvcnlVUkwoKSArICJkYXNoYm9hcmQtbGF5b3V0LXRlc3QtcmVzdWx0cy9yZXN1bHRz
Lmh0bWwiKQotCi0gICAgZGVmIGZpbmlzaGVkKHNlbGYsIHJlc3VsdCk6Ci0gICAgICAgIHNlbGYu
YWRkQ3VzdG9tVVJMcygpCi0gICAgICAgIHJldHVybiBtYXN0ZXIuTWFzdGVyU2hlbGxDb21tYW5k
LmZpbmlzaGVkKHNlbGYsIHJlc3VsdCkKLQotCi1jbGFzcyBFeHRyYWN0VGVzdFJlc3VsdHNBbmRM
ZWFrcyhFeHRyYWN0VGVzdFJlc3VsdHMpOgotICAgIGRlZiBhZGRDdXN0b21VUkxzKHNlbGYpOgot
ICAgICAgICBFeHRyYWN0VGVzdFJlc3VsdHMuYWRkQ3VzdG9tVVJMcyhzZWxmKQotICAgICAgICB1
cmwgPSAiL0xlYWtzVmlld2VyLz91cmw9IiArIHVybGxpYi5xdW90ZShzZWxmLnJlc3VsdERpcmVj
dG9yeVVSTCgpLCBzYWZlPSIiKQotICAgICAgICBzZWxmLmFkZFVSTCgidmlldyBsZWFrcyIsIHVy
bCkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9zdGVwc191
bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvc3RlcHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9zdGVwc191bml0dGVzdC5weQkobm9uZXhp
c3RlbnQpCkBAIC0xLDY5NCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAot
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgc3lzCi1pbXBv
cnQgb3MKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IGpzb24KLQotIyBTaG93IERlcHJpY2F0aW9u
V2FybmluZ3MgY29tZSBmcm9tIGJ1aWxkYm90IC0gaXQgaXNuJ3QgZGVmYXVsdCB3aXRoIFB5dGhv
biAyLjcgb3IgbmV3ZXIuCi0jIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTAxNjEgZm9yIGRldGFpbHMuCi1pbXBvcnQgd2FybmluZ3MKLXdhcm5pbmdzLnNpbXBs
ZWZpbHRlcignZGVmYXVsdCcpCi0KLQotY2xhc3MgQnVpbGRCb3RDb25maWdMb2FkZXIob2JqZWN0
KToKLSAgICBkZWYgX2FkZF93ZWJraXRweV90b19zeXNfcGF0aChzZWxmKToKLSAgICAgICAgIyBX
aGVuIGZpbGVzIGFyZSBwYXNzZWQgdG8gdGhlIHB5dGhvbiBpbnRlcnByZXRlciBvbiB0aGUgY29t
bWFuZCBsaW5lIChlLmcuIHB5dGhvbiB0ZXN0LnB5KSBfX2ZpbGVfXyBpcyBhIHJlbGF0aXZlIHBh
dGguCi0gICAgICAgIGFic29sdXRlX2ZpbGVfcGF0aCA9IG9zLnBhdGguYWJzcGF0aChfX2ZpbGVf
XykKLSAgICAgICAgd2Via2l0X29yZ19jb25maWdfZGlyID0gb3MucGF0aC5kaXJuYW1lKGFic29s
dXRlX2ZpbGVfcGF0aCkKLSAgICAgICAgd29ya2VyX3N1cHBvcnRfZGlyID0gb3MucGF0aC5kaXJu
YW1lKHdlYmtpdF9vcmdfY29uZmlnX2RpcikKLSAgICAgICAgd2Via2l0X3Rvb2xzX2RpciA9IG9z
LnBhdGguZGlybmFtZSh3b3JrZXJfc3VwcG9ydF9kaXIpCi0gICAgICAgIHNjcmlwdHNfZGlyID0g
b3MucGF0aC5qb2luKHdlYmtpdF90b29sc19kaXIsICdTY3JpcHRzJykKLSAgICAgICAgc3lzLnBh
dGguYXBwZW5kKHNjcmlwdHNfZGlyKQotCi0gICAgZGVmIF9hZGRfZGVwZW5kZW50X21vZHVsZXNf
dG9fc3lzX21vZHVsZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuX2FkZF93ZWJraXRweV90b19zeXNf
cGF0aCgpCi0gICAgICAgIGZyb20gd2Via2l0cHkuYXV0b2luc3RhbGxlZCBpbXBvcnQgYnVpbGRi
b3QKLSAgICAgICAgc3lzLm1vZHVsZXNbJ2J1aWxkYm90J10gPSBidWlsZGJvdAotCi0KLWNsYXNz
IFJ1bldlYktpdFRlc3RzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfbnJ3
dF9sZWFrc19wYXJzaW5nKHNlbGYpOgotICAgICAgICBydW5fd2Via2l0X3Rlc3RzID0gUnVuV2Vi
S2l0VGVzdHMoKSAgIyBweWxpbnQgaXMgY29uZnVzZWQgYnkgdGhlIHdheSB3ZSBpbXBvcnQgdGhl
IG1vZHVsZSAuLi4gcHlsaW50OiBkaXNhYmxlLW1zZz1FMDYwMgotICAgICAgICBsb2dfdGV4dCA9
ICIiIgotMTI6NDQ6MjQuMjk1IDc3NzA2IDEzOTgxIHRvdGFsIGxlYWtzIGZvdW5kIGZvciBhIHRv
dGFsIG9mIDE5Nyw5MzYgYnl0ZXMuCi0xMjo0NDoyNC4yOTUgNzc3MDYgMSB1bmlxdWUgbGVha3Mg
Zm91bmQuCi0iIiIKLSAgICAgICAgZXhwZWN0ZWRfaW5jb3JyZWN0X2xpbmVzID0gWwotICAgICAg
ICAgICAgJzEzOTgxIHRvdGFsIGxlYWtzIGZvdW5kIGZvciBhIHRvdGFsIG9mIDE5Nyw5MzYgYnl0
ZXMuJywKLSAgICAgICAgICAgICcxIHVuaXF1ZSBsZWFrcyBmb3VuZC4nLAotICAgICAgICBdCi0g
ICAgICAgIHJ1bl93ZWJraXRfdGVzdHMuX3BhcnNlUnVuV2ViS2l0VGVzdHNPdXRwdXQobG9nX3Rl
eHQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX3dlYmtpdF90ZXN0cy5pbmNvcnJlY3RM
YXlvdXRMaW5lcywgZXhwZWN0ZWRfaW5jb3JyZWN0X2xpbmVzKQotCi0gICAgZGVmIHRlc3RfbnJ3
dF9taXNzaW5nX3Jlc3VsdHMoc2VsZik6Ci0gICAgICAgIHJ1bl93ZWJraXRfdGVzdHMgPSBSdW5X
ZWJLaXRUZXN0cygpICAjIHB5bGludCBpcyBjb25mdXNlZCBieSB0aGUgd2F5IHdlIGltcG9ydCB0
aGUgbW9kdWxlIC4uLiBweWxpbnQ6IGRpc2FibGUtbXNnPUUwNjAyCi0gICAgICAgIGxvZ190ZXh0
ID0gIiIiCi1FeHBlY3RlZCB0byBmYWlsLCBidXQgcGFzc2VkOiAoMikKLSAgYW5pbWF0aW9ucy9h
ZGRpdGl2ZS10cmFuc2Zvcm0tYW5pbWF0aW9ucy5odG1sCi0gIGFuaW1hdGlvbnMvY3Jvc3MtZmFk
ZS13ZWJraXQtbWFzay1ib3gtaW1hZ2UuaHRtbAotCi1VbmV4cGVjdGVkIGZsYWtpbmVzczogdGV4
dC1vbmx5IGZhaWx1cmVzICgyKQotICBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1pbnNpZGUtaWZy
YW1lLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQotICBodHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVk
L2NvbnNvbGUtY2xlYXItYXJndW1lbnRzLW9uLWZyYW1lLW5hdmlnYXRpb24uaHRtbCBbIEZhaWx1
cmUgUGFzcyBdCi0KLVVuZXhwZWN0ZWQgZmxha2luZXNzOiB0aW1lb3V0cyAoMSkKLSAgc3ZnL3Rl
eHQvZm9yZWlnbk9iamVjdC1yZXBhaW50LnhtbCBbIFRpbWVvdXQgUGFzcyBdCi0KLVJlZ3Jlc3Np
b25zOiBVbmV4cGVjdGVkIG1pc3NpbmcgcmVzdWx0cyAoMSkKLSAgc3ZnL2N1c3RvbS96ZXJvLXBh
dGgtc3F1YXJlLWNhcC1yZW5kZXJpbmcyLnN2ZyBbIE1pc3NpbmcgXQotCi1SZWdyZXNzaW9uczog
VW5leHBlY3RlZCB0ZXh0LW9ubHkgZmFpbHVyZXMgKDEpCi0gIHN2Zy9jdXN0b20vemVyby1wYXRo
LXNxdWFyZS1jYXAtcmVuZGVyaW5nMi5zdmcgWyBGYWlsdXJlIF0KLSIiIgotICAgICAgICBydW5f
d2Via2l0X3Rlc3RzLl9wYXJzZVJ1bldlYktpdFRlc3RzT3V0cHV0KGxvZ190ZXh0KQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNldChydW5fd2Via2l0X3Rlc3RzLmluY29ycmVjdExheW91dExp
bmVzKSwKLSAgICAgICAgICAgIHNldChbJzIgbmV3IHBhc3NlcycsICczIGZsYWtlcycsICcxIG1p
c3NpbmcgcmVzdWx0cycsICcxIGZhaWx1cmVzJ10pKQotCi0KLWNsYXNzIFN0dWJTdGRpbyhvYmpl
Y3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGRpbyk6Ci0gICAgICAgIHNlbGYuX3N0ZGlv
ID0gc3RkaW8KLQotICAgIGRlZiBnZXRUZXh0KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5f
c3RkaW8KLQotCi1jbGFzcyBTdHViUmVtb3RlQ29tbWFuZChvYmplY3QpOgotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByYywgc3RkaW8pOgotICAgICAgICBzZWxmLnJjID0gcmMKLSAgICAgICAgc2Vs
Zi5sb2dzID0geydzdGRpbyc6IFN0dWJTdGRpbyhzdGRpbyl9Ci0KLQotY2xhc3MgUnVuSmF2YVNj
cmlwdENvcmVUZXN0c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBhc3NlcnRSZXN1
bHRzKHNlbGYsIGV4cGVjdGVkX3Jlc3VsdCwgZXhwZWN0ZWRfdGV4dCwgcmMsIHN0ZGlvKToKLSAg
ICAgICAgY21kID0gU3R1YlJlbW90ZUNvbW1hbmQocmMsIHN0ZGlvKQotICAgICAgICBzdGVwID0g
UnVuSmF2YVNjcmlwdENvcmVUZXN0cygpCi0gICAgICAgIHN0ZXAuY29tbWFuZENvbXBsZXRlKGNt
ZCkKLSAgICAgICAgYWN0dWFsX3Jlc3VsdHMgPSBzdGVwLmV2YWx1YXRlQ29tbWFuZChjbWQpCi0g
ICAgICAgIGFjdHVhbF90ZXh0ID0gc3RlcC5nZXRUZXh0MihjbWQsIGFjdHVhbF9yZXN1bHRzKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfcmVzdWx0LCBhY3R1YWxfcmVzdWx0
cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfdGV4dCwgZXhwZWN0ZWRfdGV4dCkK
LQotICAgIGRlZiB0ZXN0X25vX3JlZ3Jlc3Npb25zX29sZF9vdXRwdXQoc2VsZik6Ci0gICAgICAg
IHNlbGYuYXNzZXJ0UmVzdWx0cyhTVUNDRVNTLCBbImpzY29yZS10ZXN0Il0sIDAsICIiIlJlc3Vs
dHMgZm9yIE1vemlsbGEgdGVzdHM6Ci0gICAgMCByZWdyZXNzaW9ucyBmb3VuZC4KLSAgICAwIHRl
c3RzIGZpeGVkLgotICAgIE9LLiIiIikKLQotICAgIGRlZiB0ZXN0X25vX2ZhaWx1cmVfbmV3X291
dHB1dChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKFNVQ0NFU1MsIFsianNjb3Jl
LXRlc3QiXSwgMCwgIiIiUmVzdWx0cyBmb3IgSlNDIHN0cmVzcyB0ZXN0czoKLSAgICAwIGZhaWx1
cmVzIGZvdW5kLgotICAgIE9LLiIiIikKLQotICAgIGRlZiB0ZXN0X21vemlsbGFfZmFpbHVyZV9v
bGRfb3V0cHV0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJlc3VsdHMoRkFJTFVSRSwgWyIx
IEpTQyB0ZXN0IGZhaWxlZCJdLCAxLCAiIiJSZXN1bHRzIGZvciBNb3ppbGxhIHRlc3RzOgotICAg
IDEgcmVncmVzc2lvbiBmb3VuZC4KLSAgICAwIHRlc3RzIGZpeGVkLiIiIikKLQotICAgIGRlZiB0
ZXN0X21vemlsbGFfZmFpbHVyZXNfb2xkX291dHB1dChzZWxmKToKLSAgICAgICAgc2VsZi5hc3Nl
cnRSZXN1bHRzKEZBSUxVUkUsIFsiMiBKU0MgdGVzdHMgZmFpbGVkIl0sIDEsICIiIlJlc3VsdHMg
Zm9yIE1vemlsbGEgdGVzdHM6Ci0gICAgMiByZWdyZXNzaW9ucyBmb3VuZC4KLSAgICAwIHRlc3Rz
IGZpeGVkLiIiIikKLQotICAgIGRlZiB0ZXN0X2pzY19zdHJlc3NfZmFpbHVyZV9uZXdfb3V0cHV0
KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJlc3VsdHMoRkFJTFVSRSwgWyIxIEpTQyB0ZXN0
IGZhaWxlZCJdLCAxLCAgIiIiUmVzdWx0cyBmb3IgSlNDIHN0cmVzcyB0ZXN0czoKLSAgICAxIGZh
aWx1cmUgZm91bmQuIiIiKQotCi0gICAgZGVmIHRlc3RfanNjX3N0cmVzc19mYWlsdXJlc19uZXdf
b3V0cHV0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJlc3VsdHMoRkFJTFVSRSwgWyI1IEpT
QyB0ZXN0cyBmYWlsZWQiXSwgMSwgICIiIlJlc3VsdHMgZm9yIEpTQyBzdHJlc3MgdGVzdHM6Ci0g
ICAgNSBmYWlsdXJlcyBmb3VuZC4iIiIpCi0KLSAgICBkZWYgdGVzdF9qc2Nfc3RyZXNzX2ZhaWx1
cmVzX3dpdGhfYmluYXJ5X3Jlc3VsdHNfb3V0cHV0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2Vy
dFJlc3VsdHMoRkFJTFVSRSwgWyI4IEpTQyB0ZXN0cyBmYWlsZWQiXSwgMSwgICIiIlJlc3VsdHMg
Zm9yIEpTQyBzdHJlc3MgdGVzdHM6Ci0gICAgNSBmYWlsdXJlcyBmb3VuZC4KLVJlc3VsdHMgZm9y
IEpTQyB0ZXN0IGJpbmFyaWVzOgotICAgIDMgZmFpbHVyZXMgZm91bmQuIiIiKQotCi0gICAgZGVm
IHRlc3RfanNjX3N0cmVzc19mYWlsdXJlc193aXRoX2JpbmFyeV9yZXN1bHRfb3V0cHV0KHNlbGYp
OgotICAgICAgICBzZWxmLmFzc2VydFJlc3VsdHMoRkFJTFVSRSwgWyI2IEpTQyB0ZXN0cyBmYWls
ZWQiXSwgMSwgICIiIlJlc3VsdHMgZm9yIEpTQyBzdHJlc3MgdGVzdHM6Ci0gICAgNSBmYWlsdXJl
cyBmb3VuZC4KLVJlc3VsdHMgZm9yIEpTQyB0ZXN0IGJpbmFyaWVzOgotICAgIDEgZmFpbHVyZSBm
b3VuZC4iIiIpCi0KLQotY2xhc3MgUnVuVGVzdDI2MlRlc3RzVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6Ci0gICAgZGVmIGFzc2VydFJlc3VsdHMoc2VsZiwgZXhwZWN0ZWRfcmVzdWx0LCBleHBlY3Rl
ZF90ZXh0LCByYywgc3RkaW8pOgotICAgICAgICBjbWQgPSBTdHViUmVtb3RlQ29tbWFuZChyYywg
c3RkaW8pCi0gICAgICAgIHN0ZXAgPSBSdW5UZXN0MjYyVGVzdHMoKQotICAgICAgICBzdGVwLmNv
bW1hbmRDb21wbGV0ZShjbWQpCi0gICAgICAgIGFjdHVhbF9yZXN1bHRzID0gc3RlcC5ldmFsdWF0
ZUNvbW1hbmQoY21kKQotICAgICAgICBhY3R1YWxfdGV4dCA9IHN0ZXAuZ2V0VGV4dDIoY21kLCBh
Y3R1YWxfcmVzdWx0cykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Jlc3Vs
dCwgYWN0dWFsX3Jlc3VsdHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3RleHQs
IGV4cGVjdGVkX3RleHQpCi0KLSAgICBkZWYgdGVzdF9ub19yZWdyZXNzaW9uc19vdXRwdXQoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyhTVUNDRVNTLCBbInRlc3QyNjItdGVzdCJd
LCAwLCAiIiIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1TZXR0aW5ncy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotVGVzdDI2MiBEaXI6IEpTVGVzdHMvdGVzdDI2MgotSlNDOiBXZWJLaXRCdWls
ZC9SZWxlYXNlL2pzYwotRFlMRF9GUkFNRVdPUktfUEFUSDogV2ViS2l0QnVpbGQvUmVsZWFzZQot
Q2hpbGQgUHJvY2Vzc2VzOiAzMgotQ29uZmlnIGZpbGU6IFRvb2xzL1NjcmlwdHMvdGVzdDI2Mi9j
b25maWcueWFtbAotRXhwZWN0YXRpb25zIGZpbGU6IFRvb2xzL1NjcmlwdHMvdGVzdDI2Mi9leHBl
Y3RhdGlvbnMueWFtbAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLQotTkVXIFBBU1M6IHRlc3QvYW5uZXhCL2J1aWx0LWlucy9EYXRlL3By
b3RvdHlwZS9nZXRZZWFyL2xlbmd0aC5qcyAoZGVmYXVsdCkKLU5FVyBQQVNTIHRlc3QvbGFuZ3Vh
Z2UvZXhwcmVzc2lvbnMvY2xhc3MvZmllbGRzLWFmdGVyLXNhbWUtbGluZS1zdGF0aWMtbWV0aG9k
LWNvbXB1dGVkLXN5bWJvbC1uYW1lcy5qcyAoZGVmYXVsdCkKLQotUnVuIHdpdGggLS1zYXZlIHRv
IHNhdmUgYSBuZXcgZXhwZWN0YXRpb25zIGZpbGUKLVNhdmVkIGFsbCB0aGUgcmVzdWx0cyBpbiBU
b29scy9TY3JpcHRzL3Rlc3QyNjIvcmVzdWx0cy55YW1sCi1TdW1tYXJpemluZyByZXN1bHRzLi4u
Ci1TZWUgc3VtbWFyaXplZCByZXN1bHRzIGluIFRvb2xzL1NjcmlwdHMvdGVzdDI2Mi9yZXN1bHRz
LXN1bW1hcnkudHh0Ci0KLTU2MDcxIHRlc3RzIHJhbgotMCBleHBlY3RlZCB0ZXN0cyBmYWlsZWQK
LTAgdGVzdHMgbmV3bHkgZmFpbAotMjU0NiB0ZXN0cyBuZXdseSBwYXNzCi0xMjQxIHRlc3QgZmls
ZXMgc2tpcHBlZAotRG9uZSBpbiAyNDcgc2Vjb25kcyEKLSIiIikKLQotICAgIGRlZiB0ZXN0X2Zh
aWx1cmVfb3V0cHV0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJlc3VsdHMoRkFJTFVSRSwg
WyIxIFRlc3QyNjIgdGVzdCBmYWlsZWQiXSwgMCwgIiIiCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tU2V0dGluZ3MtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRlc3QyNjIgRGlyOiBKU1Rlc3Rz
L3Rlc3QyNjIKLUpTQzogV2ViS2l0QnVpbGQvUmVsZWFzZS9qc2MKLURZTERfRlJBTUVXT1JLX1BB
VEg6IFdlYktpdEJ1aWxkL1JlbGVhc2UKLUNoaWxkIFByb2Nlc3NlczogMzIKLUNvbmZpZyBmaWxl
OiBUb29scy9TY3JpcHRzL3Rlc3QyNjIvY29uZmlnLnlhbWwKLUV4cGVjdGF0aW9ucyBmaWxlOiBU
b29scy9TY3JpcHRzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSEgTkVXIEZBSUw6IHRl
c3QvYW5uZXhCL2J1aWx0LWlucy9EYXRlL3Byb3RvdHlwZS9nZXRZZWFyL2xlbmd0aC5qcyAoZGVm
YXVsdCkKLU5FVyBQQVNTIHRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvY2xhc3MvZmllbGRzLWFm
dGVyLXNhbWUtbGluZS1zdGF0aWMtbWV0aG9kLWNvbXB1dGVkLXN5bWJvbC1uYW1lcy5qcyAoZGVm
YXVsdCkKLQotUnVuIHdpdGggLS1zYXZlIHRvIHNhdmUgYSBuZXcgZXhwZWN0YXRpb25zIGZpbGUK
LVNhdmVkIGFsbCB0aGUgcmVzdWx0cyBpbiBUb29scy9TY3JpcHRzL3Rlc3QyNjIvcmVzdWx0cy55
YW1sCi1TdW1tYXJpemluZyByZXN1bHRzLi4uCi1TZWUgc3VtbWFyaXplZCByZXN1bHRzIGluIFRv
b2xzL1NjcmlwdHMvdGVzdDI2Mi9yZXN1bHRzLXN1bW1hcnkudHh0Ci0KLTU2MDcxIHRlc3RzIHJh
bgotMCBleHBlY3RlZCB0ZXN0cyBmYWlsZWQKLTAgdGVzdHMgbmV3bHkgZmFpbAotMjU0NiB0ZXN0
cyBuZXdseSBwYXNzCi0xMjQxIHRlc3QgZmlsZXMgc2tpcHBlZAotRG9uZSBpbiAyNDcgc2Vjb25k
cyEKLSIiIikKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmVzX291dHB1dChzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRSZXN1bHRzKEZBSUxVUkUsIFsiMiBUZXN0MjYyIHRlc3RzIGZhaWxlZCJdLCAw
LCAiIiIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1TZXR0aW5ncy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotVGVzdDI2MiBEaXI6IEpTVGVzdHMvdGVzdDI2MgotSlNDOiBXZWJLaXRCdWlsZC9S
ZWxlYXNlL2pzYwotRFlMRF9GUkFNRVdPUktfUEFUSDogV2ViS2l0QnVpbGQvUmVsZWFzZQotQ2hp
bGQgUHJvY2Vzc2VzOiAzMgotQ29uZmlnIGZpbGU6IFRvb2xzL1NjcmlwdHMvdGVzdDI2Mi9jb25m
aWcueWFtbAotRXhwZWN0YXRpb25zIGZpbGU6IFRvb2xzL1NjcmlwdHMvdGVzdDI2Mi9leHBlY3Rh
dGlvbnMueWFtbAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLQotTkVXIFBBU1MgdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2NsYXNzL2Zp
ZWxkcy1hZnRlci1zYW1lLWxpbmUtc3RhdGljLWFzeW5jLWdlbi1jb21wdXRlZC1uYW1lcy5qcyAo
ZGVmYXVsdCkKLSEgTkVXIEZBSUw6IHRlc3QvYW5uZXhCL2J1aWx0LWlucy9EYXRlL3Byb3RvdHlw
ZS9nZXRZZWFyL2xlbmd0aC5qcyAoZGVmYXVsdCkKLSEgTkVXIEZBSUw6IHRlc3QvYW5uZXhCL2J1
aWx0LWlucy9EYXRlL3Byb3RvdHlwZS9nZXRZZWFyL2xlbmd0aC5qcyAoc3RyaWN0IG1vZGUpCi1O
RVcgUEFTUyB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2NsYXNzL2ZpZWxkcy1hZnRlci1zYW1l
LWxpbmUtc3RhdGljLW1ldGhvZC1jb21wdXRlZC1zeW1ib2wtbmFtZXMuanMgKGRlZmF1bHQpCi0K
LVJ1biB3aXRoIC0tc2F2ZSB0byBzYXZlIGEgbmV3IGV4cGVjdGF0aW9ucyBmaWxlCi1TYXZlZCBh
bGwgdGhlIHJlc3VsdHMgaW4gVG9vbHMvU2NyaXB0cy90ZXN0MjYyL3Jlc3VsdHMueWFtbAotU3Vt
bWFyaXppbmcgcmVzdWx0cy4uLgotU2VlIHN1bW1hcml6ZWQgcmVzdWx0cyBpbiBUb29scy9TY3Jp
cHRzL3Rlc3QyNjIvcmVzdWx0cy1zdW1tYXJ5LnR4dAotCi01NjA3MSB0ZXN0cyByYW4KLTAgZXhw
ZWN0ZWQgdGVzdHMgZmFpbGVkCi0wIHRlc3RzIG5ld2x5IGZhaWwKLTI1NDYgdGVzdHMgbmV3bHkg
cGFzcwotMTI0MSB0ZXN0IGZpbGVzIHNraXBwZWQKLURvbmUgaW4gMjQ3IHNlY29uZHMhCi0iIiIp
Ci0KLQotY2xhc3MgUnVuTExJTlRDTG9vcFRlc3RzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0g
ICAgZGVmIGFzc2VydFJlc3VsdHMoc2VsZiwgZXhwZWN0ZWRfcmVzdWx0LCBleHBlY3RlZF90ZXh0
LCByYywgc3RkaW8pOgotICAgICAgICBjbWQgPSBTdHViUmVtb3RlQ29tbWFuZChyYywgc3RkaW8p
Ci0gICAgICAgIHN0ZXAgPSBSdW5MTElOVENMb29wVGVzdHMoKQotICAgICAgICBzdGVwLmNvbW1h
bmRDb21wbGV0ZShjbWQpCi0gICAgICAgIGFjdHVhbF9yZXN1bHRzID0gc3RlcC5ldmFsdWF0ZUNv
bW1hbmQoY21kKQotICAgICAgICBhY3R1YWxfdGV4dCA9IHN0ZXAuZ2V0VGV4dDIoY21kLCBhY3R1
YWxfcmVzdWx0cykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Jlc3VsdCwg
YWN0dWFsX3Jlc3VsdHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3RleHQsIGV4
cGVjdGVkX3RleHQpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlcyhzZWxmKToKLSAgICAgICAgc2Vs
Zi5hc3NlcnRSZXN1bHRzKEZBSUxVUkUsIFsnNSByZWdyZXNzaW9ucyBmb3VuZC4nXSwgMSwgICcg
ICAgNSByZWdyZXNzaW9ucyBmb3VuZC4nKQotCi0gICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToK
LSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKEZBSUxVUkUsIFsnMSByZWdyZXNzaW9uIGZvdW5k
LiddLCAxLCAgJyAgICAxIHJlZ3Jlc3Npb24gZm91bmQuJykKLQotICAgIGRlZiB0ZXN0X25vX2Zh
aWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyhTVUNDRVNTLCBbJ3dlYmtp
dC1qc2MtY2xvb3AtdGVzdCddLCAwLCAgJyAgICAwIHJlZ3Jlc3Npb25zIGZvdW5kLicpCi0KLQot
Y2xhc3MgUnVuMzJiaXRKU0NUZXN0c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBh
c3NlcnRSZXN1bHRzKHNlbGYsIGV4cGVjdGVkX3Jlc3VsdCwgZXhwZWN0ZWRfdGV4dCwgcmMsIHN0
ZGlvKToKLSAgICAgICAgY21kID0gU3R1YlJlbW90ZUNvbW1hbmQocmMsIHN0ZGlvKQotICAgICAg
ICBzdGVwID0gUnVuMzJiaXRKU0NUZXN0cygpCi0gICAgICAgIHN0ZXAuY29tbWFuZENvbXBsZXRl
KGNtZCkKLSAgICAgICAgYWN0dWFsX3Jlc3VsdHMgPSBzdGVwLmV2YWx1YXRlQ29tbWFuZChjbWQp
Ci0gICAgICAgIGFjdHVhbF90ZXh0ID0gc3RlcC5nZXRUZXh0MihjbWQsIGFjdHVhbF9yZXN1bHRz
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfcmVzdWx0LCBhY3R1YWxfcmVz
dWx0cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfdGV4dCwgZXhwZWN0ZWRfdGV4
dCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmVzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJl
c3VsdHMoRkFJTFVSRSwgWyc1IHJlZ3Jlc3Npb25zIGZvdW5kLiddLCAxLCAgJyAgICA1IGZhaWx1
cmVzIGZvdW5kLicpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxm
LmFzc2VydFJlc3VsdHMoRkFJTFVSRSwgWycxIHJlZ3Jlc3Npb24gZm91bmQuJ10sIDEsICAnICAg
IDEgZmFpbHVyZSBmb3VuZC4nKQotCi0gICAgZGVmIHRlc3Rfbm9fZmFpbHVyZShzZWxmKToKLSAg
ICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKFNVQ0NFU1MsIFsnd2Via2l0LTMyYml0LWpzYy10ZXN0
J10sIDAsICAnICAgIDAgZmFpbHVyZXMgZm91bmQuJykKLQotCi1jbGFzcyBSdW5BUElUZXN0c1Rl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBhc3NlcnRGYWlsdXJlcyhzZWxmLCBleHBl
Y3RlZF9mYWlsdXJlX2NvdW50LCBzdGRpbyk6Ci0gICAgICAgIGlmIGV4cGVjdGVkX2ZhaWx1cmVf
Y291bnQ6Ci0gICAgICAgICAgICByYyA9IDEKLSAgICAgICAgICAgIGV4cGVjdGVkX3Jlc3VsdHMg
PSBGQUlMVVJFCi0gICAgICAgICAgICBwbHVyYWxfc3VmZml4ID0gIiIgaWYgZXhwZWN0ZWRfZmFp
bHVyZV9jb3VudCA9PSAxIGVsc2UgInMiCi0gICAgICAgICAgICBleHBlY3RlZF90ZXh0ID0gJyVk
IGFwaSB0ZXN0JXMgZmFpbGVkIG9yIHRpbWVkIG91dCcgJSAoZXhwZWN0ZWRfZmFpbHVyZV9jb3Vu
dCwgcGx1cmFsX3N1ZmZpeCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJjID0gMAotICAg
ICAgICAgICAgZXhwZWN0ZWRfcmVzdWx0cyA9IFNVQ0NFU1MKLSAgICAgICAgICAgIGV4cGVjdGVk
X3RleHQgPSAncnVuLWFwaS10ZXN0cycKLQotICAgICAgICBjbWQgPSBTdHViUmVtb3RlQ29tbWFu
ZChyYywgc3RkaW8pCi0gICAgICAgIHN0ZXAgPSBSdW5BUElUZXN0cygpCi0gICAgICAgIHN0ZXAu
Y29tbWFuZENvbXBsZXRlKGNtZCkKLSAgICAgICAgYWN0dWFsX3Jlc3VsdHMgPSBzdGVwLmV2YWx1
YXRlQ29tbWFuZChjbWQpCi0gICAgICAgIGFjdHVhbF9mYWlsdXJlX2NvdW50ID0gc3RlcC5mYWls
ZWRUZXN0Q291bnQKLSAgICAgICAgYWN0dWFsX3RleHQgPSBzdGVwLmdldFRleHQoY21kLCBhY3R1
YWxfcmVzdWx0cylbMF0KLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Jlc3Vs
dHMsIGFjdHVhbF9yZXN1bHRzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2Zh
aWx1cmVfY291bnQsIGFjdHVhbF9mYWlsdXJlX2NvdW50KQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV4cGVjdGVkX3RleHQsIGFjdHVhbF90ZXh0KQotCi0gICAgZGVmIHRlc3Rfbm9fZmFpbHVy
ZXNfb3JfdGltZW91dHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFpbHVyZXMoMCwgIiIi
Li4uCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50Lk9wZXJhdG9yQW1wZXJzYW5kIFBhc3Nl
ZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZWYgUGFzc2VkCi13b3JrZXIvMCBUZXN0
V1RGLldURl9WYXJpYW50LlJlZlB0ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1Zhcmlh
bnQuUmV0YWluUHRyIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9y
VXNpbmdNYWtlVmlzaXRvciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuVmlz
aXRvclVzaW5nU3dpdGNoT24gUGFzc2VkCi13b3JrZXIvMCBleGl0aW5nCi1SYW4gMTg4OCB0ZXN0
cyBvZiAxODg4IHdpdGggMTg4OCBzdWNjZXNzZnVsCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUFsbCB0ZXN0cyBzdWNjZXNzZnVsbHkgcGFzc2VkIQotIiIiKQotCi0gICAgZGVmIHRl
c3Rfbm9fZmFpbHVyZXNfb3JfdGltZW91dHNfd2l0aF9kaXNhYmxlZChzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRGYWlsdXJlcygwLCAiIiIuLi4KLXdvcmtlci8wIFRlc3RXVEYuV1RGX1Zhcmlh
bnQuT3BlcmF0b3JBbXBlcnNhbmQgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50
LlJlZiBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmVmUHRyIFBhc3NlZAot
d29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZXRhaW5QdHIgUGFzc2VkCi13b3JrZXIvMCBU
ZXN0V1RGLldURl9WYXJpYW50LlZpc2l0b3JVc2luZ01ha2VWaXNpdG9yIFBhc3NlZAotd29ya2Vy
LzAgVGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNpbmdTd2l0Y2hPbiBQYXNzZWQKLXdvcmtl
ci8wIGV4aXRpbmcKLVJhbiAxODgxIHRlc3RzIG9mIDE4ODggd2l0aCAxODgxIHN1Y2Nlc3NmdWwK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotQWxsIHRlc3RzIHN1Y2Nlc3NmdWxseSBw
YXNzZWQhCi0iIiIpCi0KLSAgICBkZWYgdGVzdF9vbmVfZmFpbHVyZShzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRGYWlsdXJlcygxLCAiIiIuLi4KLXdvcmtlci8wIFRlc3RXVEYuV1RGX1Zhcmlh
bnQuT3BlcmF0b3JBbXBlcnNhbmQgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50
LlJlZiBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmVmUHRyIFBhc3NlZAot
d29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZXRhaW5QdHIgUGFzc2VkCi13b3JrZXIvMCBU
ZXN0V1RGLldURl9WYXJpYW50LlZpc2l0b3JVc2luZ01ha2VWaXNpdG9yIFBhc3NlZAotd29ya2Vy
LzAgVGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNpbmdTd2l0Y2hPbiBQYXNzZWQKLXdvcmtl
ci8wIGV4aXRpbmcKLVJhbiAxODg4IHRlc3RzIG9mIDE4ODggd2l0aCAxODg3IHN1Y2Nlc3NmdWwK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotVGVzdCBzdWl0ZSBmYWlsZWQKLQotQ3Jh
c2hlZAotCi0gICAgVGVzdFdURi5XVEYuU3RyaW5nQ29uY2F0ZW5hdGVfVW5zaWduZWQKLSAgICAg
ICAgKipGQUlMKiogV1RGLlN0cmluZ0NvbmNhdGVuYXRlX1Vuc2lnbmVkCi0KLSAgICAgICAgQzpc
XGN5Z3dpblxcaG9tZVxcYnVpbGRib3RcXHdvcmtlclxcd2luLXJlbGVhc2VcXGJ1aWxkXFxUb29s
c1xcVGVzdFdlYktpdEFQSVxcVGVzdHNcXFdURlxcU3RyaW5nQ29uY2F0ZW5hdGUuY3BwOjg0Ci0g
ICAgICAgIFZhbHVlIG9mOiBtYWtlU3RyaW5nKCJoZWxsbyAiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBzaG9ydD4oNDIpICwgIiB3b3JsZCIpCi0gICAgICAgICAgQWN0dWFsOiBoZWxsbyA0MiB3b3Js
ZAotICAgICAgICBFeHBlY3RlZDogImhlbGxvICogd29ybGQiCi0gICAgICAgIFdoaWNoIGlzOiA3
NEIwMEM5QwotCi1UZXN0aW5nIGNvbXBsZXRlZCwgRXhpdCBzdGF0dXM6IDMKLSIiIikKLQotICAg
IGRlZiB0ZXN0X211bHRpcGxlX2ZhaWx1cmVzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEZh
aWx1cmVzKDIsICIiIi4uLgotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5PcGVyYXRvckFt
cGVyc2FuZCBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmVmIFBhc3NlZAot
d29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZWZQdHIgUGFzc2VkCi13b3JrZXIvMCBUZXN0
V1RGLldURl9WYXJpYW50LlJldGFpblB0ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1Zh
cmlhbnQuVmlzaXRvclVzaW5nTWFrZVZpc2l0b3IgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldU
Rl9WYXJpYW50LlZpc2l0b3JVc2luZ1N3aXRjaE9uIFBhc3NlZAotd29ya2VyLzAgZXhpdGluZwot
UmFuIDE4ODggdGVzdHMgb2YgMTg4OCB3aXRoIDE4ODYgc3VjY2Vzc2Z1bAotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1UZXN0IHN1aXRlIGZhaWxlZAotCi1DcmFzaGVkCi0KLSAgICBU
ZXN0V1RGLldURi5TdHJpbmdDb25jYXRlbmF0ZV9VbnNpZ25lZAotICAgICAgICAqKkZBSUwqKiBX
VEYuU3RyaW5nQ29uY2F0ZW5hdGVfVW5zaWduZWQKLQotICAgICAgICBDOlxcY3lnd2luXFxob21l
XFxidWlsZGJvdFxcd29ya2VyXFx3aW4tcmVsZWFzZVxcYnVpbGRcXFRvb2xzXFxUZXN0V2ViS2l0
QVBJXFxUZXN0c1xcV1RGXFxTdHJpbmdDb25jYXRlbmF0ZS5jcHA6ODQKLSAgICAgICAgVmFsdWUg
b2Y6IG1ha2VTdHJpbmcoImhlbGxvICIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Pig0Mikg
LCAiIHdvcmxkIikKLSAgICAgICAgICBBY3R1YWw6IGhlbGxvIDQyIHdvcmxkCi0gICAgICAgIEV4
cGVjdGVkOiAiaGVsbG8gKiB3b3JsZCIKLSAgICAgICAgV2hpY2ggaXM6IDc0QjAwQzlDCi0KLSAg
ICBUZXN0V1RGLldURl9FeHBlY3RlZC5VbmV4cGVjdGVkCi0gICAgICAgICoqRkFJTCoqIFdURl9F
eHBlY3RlZC5VbmV4cGVjdGVkCi0KLSAgICAgICAgQzpcXGN5Z3dpblxcaG9tZVxcYnVpbGRib3Rc
XHdvcmtlclxcd2luLXJlbGVhc2VcXGJ1aWxkXFxUb29sc1xcVGVzdFdlYktpdEFQSVxcVGVzdHNc
XFdURlxcRXhwZWN0ZWQuY3BwOjk2Ci0gICAgICAgIFZhbHVlIG9mOiBzMQotICAgICAgICAgIEFj
dHVhbDogb29wcwotICAgICAgICBFeHBlY3RlZDogczAKLSAgICAgICAgV2hpY2ggaXM6IG9vcHMK
LQotVGVzdGluZyBjb21wbGV0ZWQsIEV4aXQgc3RhdHVzOiAzCi0iIiIpCi0KLSAgICBkZWYgdGVz
dF9vbmVfdGltZW91dChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRGYWlsdXJlcygxLCAiIiIu
Li4KLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuT3BlcmF0b3JBbXBlcnNhbmQgUGFzc2Vk
Ci13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJlZiBQYXNzZWQKLXdvcmtlci8wIFRlc3RX
VEYuV1RGX1ZhcmlhbnQuUmVmUHRyIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFu
dC5SZXRhaW5QdHIgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlZpc2l0b3JV
c2luZ01ha2VWaXNpdG9yIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5WaXNp
dG9yVXNpbmdTd2l0Y2hPbiBQYXNzZWQKLXdvcmtlci8wIGV4aXRpbmcKLVJhbiAxODg4IHRlc3Rz
IG9mIDE4ODggd2l0aCAxODg3IHN1Y2Nlc3NmdWwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotVGVzdCBzdWl0ZSBmYWlsZWQKLQotVGltZW91dAotCi0gICAgIFRlc3RXVEYuV1RGX1Bv
aXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLkFzc2lnbm1lbnQK
LQotVGVzdGluZyBjb21wbGV0ZWQsIEV4aXQgc3RhdHVzOiAzCi0iIiIpCi0KLSAgICBkZWYgdGVz
dF9tdWx0aXBsZV90aW1lb3V0cyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRGYWlsdXJlcygy
LCAiIiIuLi4KLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuT3BlcmF0b3JBbXBlcnNhbmQg
UGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJlZiBQYXNzZWQKLXdvcmtlci8w
IFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmVmUHRyIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZf
VmFyaWFudC5SZXRhaW5QdHIgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlZp
c2l0b3JVc2luZ01ha2VWaXNpdG9yIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFu
dC5WaXNpdG9yVXNpbmdTd2l0Y2hPbiBQYXNzZWQKLXdvcmtlci8wIGV4aXRpbmcKLVJhbiAxODg4
IHRlc3RzIG9mIDE4ODggd2l0aCAxODg2IHN1Y2Nlc3NmdWwKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotVGVzdCBzdWl0ZSBmYWlsZWQKLQotVGltZW91dAotCi0gICAgVGVzdFdURi5X
VEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuQXNzaWdu
bWVudAotICAgIFRlc3RXVEYuV1RGX0xvY2suQ29udGVuZGVkU2hvcnRTZWN0aW9uCi0KLVRlc3Rp
bmcgY29tcGxldGVkLCBFeGl0IHN0YXR1czogMwotIiIiKQotCi0gICAgZGVmIHRlc3RfbXVsdGlw
bGVfZmFpbHVyZXNfYW5kX3RpbWVvdXRzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEZhaWx1
cmVzKDQsICIiIi4uLgotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5PcGVyYXRvckFtcGVy
c2FuZCBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmVmIFBhc3NlZAotd29y
a2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZWZQdHIgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RG
LldURl9WYXJpYW50LlJldGFpblB0ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1Zhcmlh
bnQuVmlzaXRvclVzaW5nTWFrZVZpc2l0b3IgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9W
YXJpYW50LlZpc2l0b3JVc2luZ1N3aXRjaE9uIFBhc3NlZAotd29ya2VyLzAgZXhpdGluZwotUmFu
IDE4ODggdGVzdHMgb2YgMTg4OCB3aXRoIDE4ODQgc3VjY2Vzc2Z1bAotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1UZXN0IHN1aXRlIGZhaWxlZAotCi1DcmFzaGVkCi0KLSAgICBUZXN0
V1RGLldURi5TdHJpbmdDb25jYXRlbmF0ZV9VbnNpZ25lZAotICAgICAgICAqKkZBSUwqKiBXVEYu
U3RyaW5nQ29uY2F0ZW5hdGVfVW5zaWduZWQKLQotICAgICAgICBDOlxcY3lnd2luXFxob21lXFxi
dWlsZGJvdFxcd29ya2VyXFx3aW4tcmVsZWFzZVxcYnVpbGRcXFRvb2xzXFxUZXN0V2ViS2l0QVBJ
XFxUZXN0c1xcV1RGXFxTdHJpbmdDb25jYXRlbmF0ZS5jcHA6ODQKLSAgICAgICAgVmFsdWUgb2Y6
IG1ha2VTdHJpbmcoImhlbGxvICIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Pig0MikgLCAi
IHdvcmxkIikKLSAgICAgICAgICBBY3R1YWw6IGhlbGxvIDQyIHdvcmxkCi0gICAgICAgIEV4cGVj
dGVkOiAiaGVsbG8gKiB3b3JsZCIKLSAgICAgICAgV2hpY2ggaXM6IDc0QjAwQzlDCi0KLSAgICBU
ZXN0V1RGLldURl9FeHBlY3RlZC5VbmV4cGVjdGVkCi0gICAgICAgICoqRkFJTCoqIFdURl9FeHBl
Y3RlZC5VbmV4cGVjdGVkCi0KLSAgICAgICAgQzpcXGN5Z3dpblxcaG9tZVxcYnVpbGRib3RcXHdv
cmtlclxcd2luLXJlbGVhc2VcXGJ1aWxkXFxUb29sc1xcVGVzdFdlYktpdEFQSVxcVGVzdHNcXFdU
RlxcRXhwZWN0ZWQuY3BwOjk2Ci0gICAgICAgIFZhbHVlIG9mOiBzMQotICAgICAgICAgIEFjdHVh
bDogb29wcwotICAgICAgICBFeHBlY3RlZDogczAKLSAgICAgICAgV2hpY2ggaXM6IG9vcHMKLQot
VGltZW91dAotCi0gICAgVGVzdFdURi5XVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlE
ZXN0cnVjdGlibGVBcnJheXMuQXNzaWdubWVudAotICAgIFRlc3RXVEYuV1RGX0xvY2suQ29udGVu
ZGVkU2hvcnRTZWN0aW9uCi0KLVRlc3RpbmcgY29tcGxldGVkLCBFeGl0IHN0YXR1czogMwotIiIi
KQotCi0KLWNsYXNzIEJ1aWxkU3RlcHNDb25zdHJ1Y3RvclRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgotICAgICMgIlBhc3NpbmcgYSBCdWlsZFN0ZXAgc3ViY2xhc3MgdG8gZmFjdG9yeS5hZGRTdGVw
IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBwYXNzIGEgQnVpbGRTdGVwIGluc3RhbmNlIGluc3RlYWQu
ICBTdXBwb3J0IHdpbGwgYmUgZHJvcHBlZCBpbiB2MC44LjcuIgotICAgICMgSXQgY2hlY2tzIGlm
IGFsbCBidWlsZGVyJ3MgYWxsIGJ1aWxkc3RlcHMgY2FuIGJlIGluc2FudGlhdGVkIGFmdGVyIG1p
Z3JhdGlvbi4KLSAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
OTAwMQotICAgICMgaHR0cDovL2J1aWxkYm90Lm5ldC9idWlsZGJvdC9kb2NzLzAuOC42cDEvbWFu
dWFsL2N1c3RvbWl6YXRpb24uaHRtbCN3cml0aW5nLWJ1aWxkc3RlcC1jb25zdHJ1Y3RvcnMKLQot
ICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgZ2VuZXJhdGVUZXN0cygpOgotICAgICAgICBmb3Ig
YnVpbGRlck51bWJlciwgYnVpbGRlciBpbiBlbnVtZXJhdGUoY1snYnVpbGRlcnMnXSk6Ci0gICAg
ICAgICAgICBmb3Igc3RlcE51bWJlciwgc3RlcCBpbiBlbnVtZXJhdGUoYnVpbGRlclsnZmFjdG9y
eSddLnN0ZXBzKToKLSAgICAgICAgICAgICAgICBidWlsZGVyTmFtZSA9IGJ1aWxkZXJbJ25hbWUn
XS5lbmNvZGUoJ2FzY2lpJywgJ2lnbm9yZScpCi0gICAgICAgICAgICAgICAgc2V0YXR0cihCdWls
ZFN0ZXBzQ29uc3RydWN0b3JUZXN0LCAndGVzdF9idWlsZGVyJTAyZF9zdGVwJTAyZCcgJSAoYnVp
bGRlck51bWJlciwgc3RlcE51bWJlciksIEJ1aWxkU3RlcHNDb25zdHJ1Y3RvclRlc3QuY3JlYXRl
VGVzdChidWlsZGVyTmFtZSwgc3RlcCkpCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGNy
ZWF0ZVRlc3QoYnVpbGRlck5hbWUsIHN0ZXApOgotICAgICAgICBkZWYgZG9UZXN0KHNlbGYpOgot
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGJ1aWxkU3RlcEZhY3RvcnksIGt3YXJn
cyA9IHN0ZXAKLSAgICAgICAgICAgICAgICBidWlsZFN0ZXBGYWN0b3J5KCoqa3dhcmdzKQotICAg
ICAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGJ1aWxkU3Rl
cE5hbWUgPSBzdHIoYnVpbGRTdGVwRmFjdG9yeSkuc3BsaXQoJy4nKVstMV0KLSAgICAgICAgICAg
ICAgICBzZWxmLmZhaWwoIkVycm9yIGR1cmluZyBpbnN0YW50aWF0aW9uICVzIGJ1aWxkc3RlcCBm
b3IgJXMgYnVpbGRlcjogJXNcbiIgJSAoYnVpbGRTdGVwTmFtZSwgYnVpbGRlck5hbWUsIGUpKQot
ICAgICAgICByZXR1cm4gZG9UZXN0Ci0KLQotZXhwZWN0ZWRfYnVpbGRfc3RlcHMgPSB7Ci0gICAg
J0FwcGxlLVdpbi0xMC1EZWJ1Zy1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdr
aWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxl
dGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZScsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0
JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICdqc2NvcmUtdGVzdCcsICdsYXlvdXQtdGVzdCcs
ICdydW4tYXBpLXRlc3RzJywgJ3dlYmtpdHB5LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0JywgJ2Jp
bmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAnYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywgJ2Fy
Y2hpdmUtdGVzdC1yZXN1bHRzJywgJ3VwbG9hZCcsICdNYXN0ZXJTaGVsbENvbW1hbmQnXSwKLSAg
ICAnQXBwbGUtV2luLTEwLVJlbGVhc2UtVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4n
LCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAn
ZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBpbGUnLCAnZG93bmxvYWQtYnVpbHQtcHJv
ZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAnanNjb3JlLXRlc3QnLCAnbGF5b3V0LXRl
c3QnLCAncnVuLWFwaS10ZXN0cycsICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcs
ICdiaW5kaW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycs
ICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJ10s
Ci0gICAgJ0FwcGxlLVdpbi0xMC1EZWJ1Zy1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2
bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScs
ICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZScsICdjb21waWxlLXdlYmtpdCcs
ICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3QnLCAndXBsb2FkJywgJ3RyYW5zZmVyLXRvLXMzJywgJ3Ry
aWdnZXInXSwKLSAgICAnQXBwbGUtV2luLTEwLVJlbGVhc2UtQnVpbGQnOiBbJ2NvbmZpZ3VyZS1i
dWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1k
aXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBpbGUnLCAnY29tcGls
ZS13ZWJraXQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9hZCcsICd0cmFuc2Zlci10
by1zMycsICd0cmlnZ2VyJ10sCi0KLSAgICAnQXBwbGUtQmlnU3VyLVJlbGVhc2UtQnVpbGQnOiBb
J2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1X
ZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBp
bGUtd2Via2l0J10sCi0KLSAgICAnQXBwbGUtQ2F0YWxpbmEtRGVidWctQnVpbGQnOiBbJ2NvbmZp
Z3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRC
dWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBpbGUtd2Vi
a2l0JywgJ2FyY2hpdmUtYnVpbHQtcHJvZHVjdCcsICd1cGxvYWQnLCAnYXJjaGl2ZS1idWlsdC1w
cm9kdWN0JywgJ3VwbG9hZCcsICd0cmFuc2Zlci10by1zMycsICd0cmlnZ2VyJ10sCi0gICAgJ0Fw
cGxlLUNhdGFsaW5hLURlYnVnLUpTQy1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bics
ICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdk
ZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRy
YWN0LWJ1aWx0LXByb2R1Y3QnLCAnanNjb3JlLXRlc3QnXSwKLSAgICAnQXBwbGUtQ2F0YWxpbmEt
RGVidWctVGVzdDI2Mi1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9s
ZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3Rh
bGUtYnVpbGQtZmlsZXMnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0
LXByb2R1Y3QnLCAndGVzdDI2Mi10ZXN0J10sCi0gICAgJ0FwcGxlLUNhdGFsaW5hLURlYnVnLVdL
MS1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMn
LCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmls
ZXMnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAn
d2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbicsICdsYXlvdXQtdGVzdCcsICdydW4tYXBpLXRlc3Rz
JywgJ2xsZGItd2Via2l0LXRlc3QnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJraXRwZXJsLXRlc3Qn
LCAnYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5lcmF0b3ItdGVzdHMn
LCAnZGFzaGJvYXJkLXRlc3RzJywgJ3RyaWdnZXItY3Jhc2gtbG9nLXN1Ym1pc3Npb24nLCAnYXJj
aGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCddLAotICAg
ICdBcHBsZS1DYXRhbGluYS1EZWJ1Zy1XSzItVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdz
dm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3Rvcnkn
LCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAn
ZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ3dhaXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24nLCAnbGF5
b3V0LXRlc3QnLCAncnVuLWFwaS10ZXN0cycsICdsbGRiLXdlYmtpdC10ZXN0JywgJ3dlYmtpdHB5
LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAn
YnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0cycsICd0cmlnZ2VyLWNy
YXNoLWxvZy1zdWJtaXNzaW9uJywgJ2FyY2hpdmUtdGVzdC1yZXN1bHRzJywgJ3VwbG9hZCcsICdN
YXN0ZXJTaGVsbENvbW1hbmQnXSwKLSAgICAnQXBwbGUtQ2F0YWxpbmEtRGVidWctV0syLUdQVVBy
b2Nlc3MtVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vz
c2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxk
LWZpbGVzJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0
JywgJ3dhaXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24nLCAnbGF5b3V0LXRlc3QnLCAncnVuLWFwaS10
ZXN0cycsICdsbGRiLXdlYmtpdC10ZXN0JywgJ3dlYmtpdHB5LXRlc3QnLCAnd2Via2l0cGVybC10
ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAnYnVpbHRpbnMtZ2VuZXJhdG9yLXRl
c3RzJywgJ2Rhc2hib2FyZC10ZXN0cycsICd0cmlnZ2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9uJywg
J2FyY2hpdmUtdGVzdC1yZXN1bHRzJywgJ3VwbG9hZCcsICdNYXN0ZXJTaGVsbENvbW1hbmQnXSwK
LSAgICAnQXBwbGUtQ2F0YWxpbmEtTExJTlQtQ0xvb3AtQnVpbGRBbmRUZXN0JzogWydjb25maWd1
cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVp
bGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtp
dCcsICd3ZWJraXQtanNjLWNsb29wLXRlc3QnXSwKLSAgICAnQXBwbGUtQ2F0YWxpbmEtUmVsZWFz
ZS1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMn
LCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmls
ZXMnLCAnY29tcGlsZS13ZWJraXQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9hZCcs
ICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3QnLCAndXBsb2FkJywgJ3RyYW5zZmVyLXRvLXMzJywgJ3Ry
aWdnZXInXSwKLSAgICAnQXBwbGUtQ2F0YWxpbmEtUmVsZWFzZS1KU0MtVGVzdHMnOiBbJ2NvbmZp
Z3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRC
dWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25sb2FkLWJ1
aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ2pzY29yZS10ZXN0J10sCi0g
ICAgJ0FwcGxlLUNhdGFsaW5hLVJlbGVhc2UtVGVzdDI2Mi1UZXN0cyc6IFsnY29uZmlndXJlLWJ1
aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRp
cmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnZG93bmxvYWQtYnVpbHQtcHJv
ZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAndGVzdDI2Mi10ZXN0J10sCi0gICAgJ0Fw
cGxlLUNhdGFsaW5hLVJlbGVhc2UtV0sxLVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3Zu
JywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5Jywg
J2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4
dHJhY3QtYnVpbHQtcHJvZHVjdCcsICd3YWl0LWZvci1jcmFzaC1jb2xsZWN0aW9uJywgJ2xheW91
dC10ZXN0JywgJ3J1bi1hcGktdGVzdHMnLCAnbGxkYi13ZWJraXQtdGVzdCcsICd3ZWJraXRweS10
ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1
aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMnLCAndHJpZ2dlci1jcmFz
aC1sb2ctc3VibWlzc2lvbicsICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFz
dGVyU2hlbGxDb21tYW5kJ10sCi0gICAgJ0FwcGxlLUNhdGFsaW5hLVJlbGVhc2UtV0syLVRlc3Rz
JzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxl
dGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdk
b3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICd3YWl0LWZv
ci1jcmFzaC1jb2xsZWN0aW9uJywgJ2xheW91dC10ZXN0JywgJ3J1bi1hcGktdGVzdHMnLCAnbGxk
Yi13ZWJraXQtdGVzdCcsICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5k
aW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdkYXNo
Ym9hcmQtdGVzdHMnLCAndHJpZ2dlci1jcmFzaC1sb2ctc3VibWlzc2lvbicsICdhcmNoaXZlLXRl
c3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJ10sCi0gICAgJ0FwcGxl
LUNhdGFsaW5hLVJlbGVhc2UtV0syLVBlcmYnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAn
a2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVs
ZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFj
dC1idWlsdC1wcm9kdWN0JywgJ3BlcmYtdGVzdCddLAotICAgICdBcHBsZS1DYXRhbGluYS1SZWxl
YXNlLVdLMi1XZWJHTC1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9s
ZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3Rh
bGUtYnVpbGQtZmlsZXMnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0
LXByb2R1Y3QnLCAnd2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbicsICdsYXlvdXQtdGVzdCcsICdy
dW4tYXBpLXRlc3RzJywgJ2xsZGItd2Via2l0LXRlc3QnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJr
aXRwZXJsLXRlc3QnLCAnYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5l
cmF0b3ItdGVzdHMnLCAnZGFzaGJvYXJkLXRlc3RzJywgJ3RyaWdnZXItY3Jhc2gtbG9nLXN1Ym1p
c3Npb24nLCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29t
bWFuZCddLAotCi0gICAgJ0FwcGxlLU1vamF2ZS1EZWJ1Zy1CdWlsZCc6IFsnY29uZmlndXJlLWJ1
aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRp
cmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQnLCAn
YXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9hZCcsICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3Qn
LCAndXBsb2FkJywgJ3RyYW5zZmVyLXRvLXMzJywgJ3RyaWdnZXInXSwKLSAgICAnQXBwbGUtTW9q
YXZlLURlYnVnLVdLMS1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9s
ZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3Rh
bGUtYnVpbGQtZmlsZXMnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0
LXByb2R1Y3QnLCAnd2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbicsICdsYXlvdXQtdGVzdCcsICdy
dW4tYXBpLXRlc3RzJywgJ2xsZGItd2Via2l0LXRlc3QnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJr
aXRwZXJsLXRlc3QnLCAnYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5l
cmF0b3ItdGVzdHMnLCAnZGFzaGJvYXJkLXRlc3RzJywgJ3RyaWdnZXItY3Jhc2gtbG9nLXN1Ym1p
c3Npb24nLCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29t
bWFuZCddLAotICAgICdBcHBsZS1Nb2phdmUtRGVidWctV0syLVRlc3RzJzogWydjb25maWd1cmUt
YnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQt
ZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdkb3dubG9hZC1idWlsdC1w
cm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICd3YWl0LWZvci1jcmFzaC1jb2xsZWN0
aW9uJywgJ2xheW91dC10ZXN0JywgJ3J1bi1hcGktdGVzdHMnLCAnbGxkYi13ZWJraXQtdGVzdCcs
ICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9u
LXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMnLCAn
dHJpZ2dlci1jcmFzaC1sb2ctc3VibWlzc2lvbicsICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1
cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJ10sCi0gICAgJ0FwcGxlLU1vamF2ZS1SZWxlYXNl
LUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3Nlcycs
ICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxl
cycsICdjb21waWxlLXdlYmtpdCcsICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3QnLCAndXBsb2FkJywg
J2FyY2hpdmUtYnVpbHQtcHJvZHVjdCcsICd1cGxvYWQnLCAndHJhbnNmZXItdG8tczMnLCAndHJp
Z2dlciddLAotICAgICdBcHBsZS1Nb2phdmUtUmVsZWFzZS1XSzEtVGVzdHMnOiBbJ2NvbmZpZ3Vy
ZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWls
ZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25sb2FkLWJ1aWx0
LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ3dhaXQtZm9yLWNyYXNoLWNvbGxl
Y3Rpb24nLCAnbGF5b3V0LXRlc3QnLCAncnVuLWFwaS10ZXN0cycsICdsbGRiLXdlYmtpdC10ZXN0
JywgJ3dlYmtpdHB5LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRp
b24tdGVzdHMnLCAnYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0cycs
ICd0cmlnZ2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9uJywgJ2FyY2hpdmUtdGVzdC1yZXN1bHRzJywg
J3VwbG9hZCcsICdNYXN0ZXJTaGVsbENvbW1hbmQnXSwKLSAgICAnQXBwbGUtTW9qYXZlLVJlbGVh
c2UtV0syLVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nl
c3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWls
ZC1maWxlcycsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVj
dCcsICd3YWl0LWZvci1jcmFzaC1jb2xsZWN0aW9uJywgJ2xheW91dC10ZXN0JywgJ3J1bi1hcGkt
dGVzdHMnLCAnbGxkYi13ZWJraXQtdGVzdCcsICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBlcmwt
dGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRvci10
ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMnLCAndHJpZ2dlci1jcmFzaC1sb2ctc3VibWlzc2lvbics
ICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJ10s
Ci0gICAgJ0FwcGxlLU1vamF2ZS1SZWxlYXNlLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAn
c3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5
JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtpdCcsICdhcmNoaXZl
LWJ1aWx0LXByb2R1Y3QnLCAndXBsb2FkJywgJ2FyY2hpdmUtYnVpbHQtcHJvZHVjdCcsICd1cGxv
YWQnLCAndHJhbnNmZXItdG8tczMnLCAndHJpZ2dlciddLAotCi0gICAgJ0FwcGxlLWlPUy0xNC1S
ZWxlYXNlLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nl
c3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWls
ZC1maWxlcycsICdjb21waWxlLXdlYmtpdCddLAotICAgICdBcHBsZS1pT1MtMTQtU2ltdWxhdG9y
LVJlbGVhc2UtQnVpbGQnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJv
Y2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1
aWxkLWZpbGVzJywgJ2NvbXBpbGUtd2Via2l0JywgJ2FyY2hpdmUtYnVpbHQtcHJvZHVjdCcsICd1
cGxvYWQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9hZCcsICd0cmFuc2Zlci10by1z
MycsICd0cmlnZ2VyJ10sCi0gICAgJ0FwcGxlLWlPUy0xNC1TaW11bGF0b3ItUmVsZWFzZS1XSzIt
VGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywg
J2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVz
JywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ3dh
aXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24nLCAnbGF5b3V0LXRlc3QnLCAncnVuLWFwaS10ZXN0cycs
ICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9u
LXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMnLCAn
dHJpZ2dlci1jcmFzaC1sb2ctc3VibWlzc2lvbicsICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1
cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJ10sCi0KLSAgICAnQXBwbGUtaU9TLTE0LVNpbXVs
YXRvci1EZWJ1Zy1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1w
cm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUt
YnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0Jywg
J3VwbG9hZCcsICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3QnLCAndXBsb2FkJywgJ3RyYW5zZmVyLXRv
LXMzJywgJ3RyaWdnZXInXSwKLSAgICAnQXBwbGUtaU9TLTE0LVNpbXVsYXRvci1EZWJ1Zy1XSzIt
VGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywg
J2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVz
JywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ3dh
aXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24nLCAnbGF5b3V0LXRlc3QnLCAncnVuLWFwaS10ZXN0cycs
ICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9u
LXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMnLCAn
dHJpZ2dlci1jcmFzaC1sb2ctc3VibWlzc2lvbicsICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1
cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJ10sCi0KLSAgICAnQXBwbGUtaVBhZE9TLTE0LVNp
bXVsYXRvci1SZWxlYXNlLVdLMi1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdr
aWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxl
dGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0
LWJ1aWx0LXByb2R1Y3QnLCAnd2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbicsICdsYXlvdXQtdGVz
dCcsICdydW4tYXBpLXRlc3RzJywgJ3dlYmtpdHB5LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0Jywg
J2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAnYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywg
J2Rhc2hib2FyZC10ZXN0cycsICd0cmlnZ2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9uJywgJ2FyY2hp
dmUtdGVzdC1yZXN1bHRzJywgJ3VwbG9hZCcsICdNYXN0ZXJTaGVsbENvbW1hbmQnXSwKLSAgICAn
QXBwbGUtaVBhZE9TLTE0LVNpbXVsYXRvci1EZWJ1Zy1XSzItVGVzdHMnOiBbJ2NvbmZpZ3VyZS1i
dWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1k
aXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25sb2FkLWJ1aWx0LXBy
b2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ3dhaXQtZm9yLWNyYXNoLWNvbGxlY3Rp
b24nLCAnbGF5b3V0LXRlc3QnLCAncnVuLWFwaS10ZXN0cycsICd3ZWJraXRweS10ZXN0JywgJ3dl
YmtpdHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1aWx0aW5zLWdl
bmVyYXRvci10ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMnLCAndHJpZ2dlci1jcmFzaC1sb2ctc3Vi
bWlzc2lvbicsICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxD
b21tYW5kJ10sCi0KLSAgICAnQXBwbGUtdHZPUy0xNC1SZWxlYXNlLUJ1aWxkJzogWydjb25maWd1
cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVp
bGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtp
dCddLAotICAgICdBcHBsZS10dk9TLVNpbXVsYXRvci0xNC1SZWxlYXNlLUJ1aWxkJzogWydjb25m
aWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0
QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21waWxlLXdl
YmtpdCddLAotCi0gICAgJ0FwcGxlLXdhdGNoT1MtNy1SZWxlYXNlLUJ1aWxkJzogWydjb25maWd1
cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVp
bGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtp
dCddLAotICAgICdBcHBsZS13YXRjaE9TLVNpbXVsYXRvci03LVJlbGVhc2UtQnVpbGQnOiBbJ2Nv
bmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJL
aXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBpbGUt
d2Via2l0J10sCi0KLSAgICAnSlNDT25seS1MaW51eC1BUk12Ny1UaHVtYjItUmVsZWFzZSc6IFsn
Y29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5Jywg
J2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtpdCcsICdqc2NvcmUtdGVz
dCddLAotICAgICdKU0NPbmx5LUxpbnV4LUFSTXY3LVRodW1iMi1Tb2Z0RlAtUmVsZWFzZSc6IFsn
Y29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5Jywg
J2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtpdCcsICdqc2NvcmUtdGVz
dCddLAotICAgICdKU0NPbmx5LUxpbnV4LUFBcmNoNjQtUmVsZWFzZSc6IFsnY29uZmlndXJlLWJ1
aWxkJywgJ3N2bicsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFs
ZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtpdCcsICdqc2NvcmUtdGVzdCddLAotICAgICdK
U0NPbmx5LUxpbnV4LU1JUFMzMmVsLVJlbGVhc2UnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4n
LCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmls
ZXMnLCAnY29tcGlsZS13ZWJraXQnLCAnanNjb3JlLXRlc3QnXSwKLQotICAgICdHVEstTGludXgt
NjQtYml0LURlYnVnLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xk
LXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFs
ZS1idWlsZC1maWxlcycsICdqaGJ1aWxkJywgJ2NvbXBpbGUtd2Via2l0JywgJ2FyY2hpdmUtYnVp
bHQtcHJvZHVjdCcsICd1cGxvYWQnLCAndHJhbnNmZXItdG8tczMnLCAndHJpZ2dlciddLAotICAg
ICdHVEstTGludXgtNjQtYml0LURlYnVnLVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3Zu
JywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5Jywg
J2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdqaGJ1aWxkJywgJ2Rvd25sb2FkLWJ1aWx0LXBy
b2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ2xheW91dC10ZXN0JywgJ3dlYmtpdHB5
LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAn
YnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0cycsICdhcmNoaXZlLXRl
c3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJywgJ0FQSS10ZXN0cydd
LAotICAgICdHVEstTGludXgtNjQtYml0LURlYnVnLVdlYkRyaXZlci1UZXN0cyc6IFsnY29uZmln
dXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1
aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnamhidWlsZCcsICdk
b3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICd3ZWJkcml2
ZXItdGVzdCddLAotICAgICdHVEstTGludXgtNjQtYml0LURlYnVnLUpTLVRlc3RzJzogWydjb25m
aWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0
QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdqaGJ1aWxkJywg
J2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ2pzY29y
ZS10ZXN0JywgJ3Rlc3QyNjItdGVzdCddLAotICAgICdHVEstTGludXgtNjQtYml0LVJlbGVhc2Ut
QnVpbGQnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywg
J2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVz
JywgJ2poYnVpbGQnLCAnY29tcGlsZS13ZWJraXQnLCAnZ2VuZXJhdGUtanNjLWJ1bmRsZScsICdh
cmNoaXZlLWJ1aWx0LXByb2R1Y3QnLCAndXBsb2FkJywgJ3RyYW5zZmVyLXRvLXMzJywgJ3RyaWdn
ZXInXSwKLSAgICAnR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLVBlcmYnOiBbJ2NvbmZpZ3VyZS1i
dWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1k
aXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2poYnVpbGQnLCAnZG93bmxv
YWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAncGVyZi10ZXN0Jywg
J2JlbmNobWFyay10ZXN0J10sCi0gICAgJ0dUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1UZXN0cyc6
IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRl
LVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnamhi
dWlsZCcsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcs
ICdsYXlvdXQtdGVzdCcsICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5k
aW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdkYXNo
Ym9hcmQtdGVzdHMnLCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNo
ZWxsQ29tbWFuZCcsICdBUEktdGVzdHMnXSwKLSAgICAnR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNl
LVdlYkRyaXZlci1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1w
cm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUt
YnVpbGQtZmlsZXMnLCAnamhidWlsZCcsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJh
Y3QtYnVpbHQtcHJvZHVjdCcsICd3ZWJkcml2ZXItdGVzdCddLAotICAgICdHVEstTGludXgtNjQt
Yml0LVJlbGVhc2UtSlMtVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1v
bGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0
YWxlLWJ1aWxkLWZpbGVzJywgJ2poYnVpbGQnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdl
eHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAnanNjb3JlLXRlc3QnLCAndGVzdDI2Mi10ZXN0J10sCi0g
ICAgJ0dUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1XYXlsYW5kLVRlc3RzJzogWydjb25maWd1cmUt
YnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQt
ZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdqaGJ1aWxkJywgJ2Rvd25s
b2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ2xheW91dC10ZXN0
JywgJ3dlYmtpdHB5LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRp
b24tdGVzdHMnLCAnYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0cycs
ICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJywg
J0FQSS10ZXN0cycsICd3ZWJkcml2ZXItdGVzdCddLAotICAgICdHVEstTGludXgtNjQtYml0LVJl
bGVhc2UtVWJ1bnR1LUxUUy1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxs
LW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUt
c3RhbGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQnXSwKLSAgICAnR1RLLUxpbnV4LTY0
LWJpdC1SZWxlYXNlLURlYmlhbi1TdGFibGUtQnVpbGQnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdz
dm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3Rvcnkn
LCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBpbGUtd2Via2l0J10sCi0KLSAgICAn
UGxheVN0YXRpb24tRGVidWctQnVpbGQnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2ls
bC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRl
LXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBpbGUtd2Via2l0J10sCi0gICAgJ1BsYXlTdGF0aW9u
LVJlbGVhc2UtQnVpbGQnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJv
Y2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1
aWxkLWZpbGVzJywgJ2NvbXBpbGUtd2Via2l0J10sCi0KLSAgICAnV2luQ2Fpcm8tNjQtYml0LUpT
Qy1EZWJ1Zy1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9j
ZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVp
bGQtZmlsZXMnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1
Y3QnLCAnanNjb3JlLXRlc3QnXSwKLSAgICAnV2luQ2Fpcm8tNjQtYml0LUpTQy1SZWxlYXNlLVRl
c3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdk
ZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycs
ICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICdqc2Nv
cmUtdGVzdCddLAotICAgICdXaW5DYWlyby02NC1iaXQtV0tMLURlYnVnLUJ1aWxkJzogWydjb25m
aWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0
QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21waWxlLXdl
YmtpdCcsICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3QnLCAndXBsb2FkJywgJ3RyYW5zZmVyLXRvLXMz
JywgJ3RyaWdnZXInXSwKLSAgICAnV2luQ2Fpcm8tNjQtYml0LVdLTC1EZWJ1Zy1UZXN0cyc6IFsn
Y29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdl
YktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnZG93bmxv
YWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAnd2luY2Fpcm8tcmVx
dWlyZW1lbnRzJywgJ2xheW91dC10ZXN0JywgJ3J1bi1hcGktdGVzdHMnLCAnd2Via2l0cHktdGVz
dCcsICd3ZWJraXRwZXJsLXRlc3QnLCAnYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cycsICdidWls
dGlucy1nZW5lcmF0b3ItdGVzdHMnLCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywg
J01hc3RlclNoZWxsQ29tbWFuZCddLAotICAgICdXaW5DYWlyby02NC1iaXQtV0tMLVJlbGVhc2Ut
QnVpbGQnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywg
J2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVz
JywgJ2NvbXBpbGUtd2Via2l0JywgJ2FyY2hpdmUtYnVpbHQtcHJvZHVjdCcsICd1cGxvYWQnLCAn
dHJhbnNmZXItdG8tczMnLCAndHJpZ2dlciddLAotICAgICdXaW5DYWlyby02NC1iaXQtV0tMLVJl
bGVhc2UtVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vz
c2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxk
LWZpbGVzJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0
JywgJ3dpbmNhaXJvLXJlcXVpcmVtZW50cycsICdsYXlvdXQtdGVzdCcsICdydW4tYXBpLXRlc3Rz
JywgJ3dlYmtpdHB5LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRp
b24tdGVzdHMnLCAnYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywgJ2FyY2hpdmUtdGVzdC1yZXN1
bHRzJywgJ3VwbG9hZCcsICdNYXN0ZXJTaGVsbENvbW1hbmQnXSwKLQotICAgICdXUEUtTGludXgt
NjQtYml0LVJlbGVhc2UtQnVpbGQnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1v
bGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0
YWxlLWJ1aWxkLWZpbGVzJywgJ2poYnVpbGQnLCAnY29tcGlsZS13ZWJraXQnLCAnYXJjaGl2ZS1i
dWlsdC1wcm9kdWN0JywgJ3VwbG9hZCcsICd0cmFuc2Zlci10by1zMycsICd0cmlnZ2VyJ10sCi0g
ICAgJ1dQRS1MaW51eC02NC1iaXQtUmVsZWFzZS1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywg
J3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9y
eScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnamhidWlsZCcsICdkb3dubG9hZC1idWls
dC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICdsYXlvdXQtdGVzdCcsICd3ZWJr
aXRweS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9uLXRlc3Rz
JywgJ2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMnLCAnYXJjaGl2
ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCcsICdBUEktdGVz
dHMnLCAnd2ViZHJpdmVyLXRlc3QnXSwKLSAgICAnV1BFLUxpbnV4LTY0LWJpdC1SZWxlYXNlLUpT
LVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3Nlcycs
ICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxl
cycsICdqaGJ1aWxkJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1w
cm9kdWN0JywgJ2pzY29yZS10ZXN0JywgJ3Rlc3QyNjItdGVzdCddLAotICAgICdXUEUtTGludXgt
NjQtYml0LURlYnVnLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xk
LXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFs
ZS1idWlsZC1maWxlcycsICdqaGJ1aWxkJywgJ2NvbXBpbGUtd2Via2l0JywgJ2FyY2hpdmUtYnVp
bHQtcHJvZHVjdCcsICd1cGxvYWQnLCAndHJhbnNmZXItdG8tczMnLCAndHJpZ2dlciddLAotICAg
ICdXUEUtTGludXgtNjQtYml0LURlYnVnLVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3Zu
JywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5Jywg
J2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdqaGJ1aWxkJywgJ2Rvd25sb2FkLWJ1aWx0LXBy
b2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ2xheW91dC10ZXN0JywgJ3dlYmtpdHB5
LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAn
YnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0cycsICdhcmNoaXZlLXRl
c3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJywgJ0FQSS10ZXN0cycs
ICd3ZWJkcml2ZXItdGVzdCddLAotICAgICdXUEUtTGludXgtNjQtYml0LURlYnVnLUpTLVRlc3Rz
JzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxl
dGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdq
aGJ1aWxkJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0
JywgJ2pzY29yZS10ZXN0JywgJ3Rlc3QyNjItdGVzdCddLAotICAgICdHVEstTGludXgtNjRiaXQt
UmVsZWFzZS1QYWNrYWdpbmctTmlnaHRseS1VYnVudHUxODA0JzogWydjb25maWd1cmUtYnVpbGQn
LCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0
b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdqaGJ1aWxkJywgJ2NvbXBpbGUtd2Vi
a2l0JywgJ2dlbmVyYXRlLW1pbmlicm93c2VyLWJ1bmRsZSddLAotICAgICdHVEstTGludXgtNjRi
aXQtUmVsZWFzZS1QYWNrYWdpbmctTmlnaHRseS1VYnVudHUyMDA0JzogWydjb25maWd1cmUtYnVp
bGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGly
ZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdqaGJ1aWxkJywgJ2NvbXBpbGUt
d2Via2l0JywgJ2dlbmVyYXRlLW1pbmlicm93c2VyLWJ1bmRsZSddLAotICAgICdXUEUtTGludXgt
NjRiaXQtUmVsZWFzZS1QYWNrYWdpbmctTmlnaHRseS1VYnVudHUxODA0JzogWydjb25maWd1cmUt
YnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQt
ZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdqaGJ1aWxkJywgJ2NvbXBp
bGUtd2Via2l0JywgJ2dlbmVyYXRlLW1pbmlicm93c2VyLWJ1bmRsZSddLAotICAgICdXUEUtTGlu
dXgtNjRiaXQtUmVsZWFzZS1QYWNrYWdpbmctTmlnaHRseS1VYnVudHUyMDA0JzogWydjb25maWd1
cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVp
bGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdqaGJ1aWxkJywgJ2Nv
bXBpbGUtd2Via2l0JywgJ2dlbmVyYXRlLW1pbmlicm93c2VyLWJ1bmRsZSddLAotfQotCi0KLWNs
YXNzIEJ1aWxkU3RlcHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBAc3RhdGljbWV0aG9k
Ci0gICAgZGVmIGdlbmVyYXRlVGVzdHMoKToKLSAgICAgICAgZm9yIGJ1aWxkZXIgaW4gY1snYnVp
bGRlcnMnXToKLSAgICAgICAgICAgIGJ1aWxkZXJOYW1lID0gYnVpbGRlclsnbmFtZSddLmVuY29k
ZSgnYXNjaWknLCAnaWdub3JlJykKLSAgICAgICAgICAgIHNldGF0dHIoQnVpbGRTdGVwc1Rlc3Qs
ICd0ZXN0X2J1aWxkZXIgJXMnICUgYnVpbGRlck5hbWUsIEJ1aWxkU3RlcHNUZXN0LmNyZWF0ZVRl
c3QoYnVpbGRlcikpCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGNyZWF0ZVRlc3QoYnVp
bGRlcik6Ci0gICAgICAgIGRlZiBkb1Rlc3Qoc2VsZik6Ci0gICAgICAgICAgICBidWlsZFN0ZXBz
ID0gW10KLSAgICAgICAgICAgIGZvciBzdGVwIGluIGJ1aWxkZXJbJ2ZhY3RvcnknXS5zdGVwczoK
LSAgICAgICAgICAgICAgICBidWlsZFN0ZXBzLmFwcGVuZChzdGVwWzBdLm5hbWUpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydFRydWUoYnVpbGRlclsnbmFtZSddIGluIGV4cGVjdGVkX2J1aWxkX3N0
ZXBzLCAiTWlzc2luZyBleHBlY3RlZCByZXN1bHQgZm9yIGJ1aWxkZXI6ICVzXG4gQWN0dWFsIHJl
c3VsdCBpcyAlcyIgJSAoYnVpbGRlclsnbmFtZSddLCBidWlsZFN0ZXBzKSkKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGV4cGVjdGVkX2J1aWxkX3N0ZXBzW2J1aWxkZXJbJ25hbWUn
XV0sIGJ1aWxkU3RlcHMpCi0KLSAgICAgICAgcmV0dXJuIGRvVGVzdAotCi0gICAgZGVmIHRlc3Rf
dW5uZWNlc3NhcnlfZXhwZWN0ZWRfcmVzdWx0cyhzZWxmKToKLSAgICAgICAgYnVpbGRlcnMgPSBz
ZXQoKQotICAgICAgICBmb3IgYnVpbGRlciBpbiBjWydidWlsZGVycyddOgotICAgICAgICAgICAg
YnVpbGRlcnMuYWRkKGJ1aWxkZXJbJ25hbWUnXS5lbmNvZGUoJ2FzY2lpJywgJ2lnbm9yZScpKQot
Ci0gICAgICAgIGZvciBidWlsZGVyIGluIGV4cGVjdGVkX2J1aWxkX3N0ZXBzOgotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIgaW4gYnVpbGRlcnMsICJCdWlsZGVyICVzIGRvZXNu
J3QgZXhpc3QsIGJ1dCBoYXMgdW5uZWNlc3NhcnkgZXhwZWN0ZWQgcmVzdWx0cyIgJSBidWlsZGVy
KQotCi0KLWNsYXNzIFJ1bkFuZFVwbG9hZFBlcmZUZXN0c1Rlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgotICAgIGRlZiBhc3NlcnRSZXN1bHRzKHNlbGYsIHJjLCBleHBlY3RlZF90ZXh0KToKLSAgICAg
ICAgY21kID0gU3R1YlJlbW90ZUNvbW1hbmQocmMsIGV4cGVjdGVkX3RleHQpCi0gICAgICAgIHN0
ZXAgPSBSdW5BbmRVcGxvYWRQZXJmVGVzdHMoKQotICAgICAgICBzdGVwLmNvbW1hbmRDb21wbGV0
ZShjbWQpCi0gICAgICAgIGFjdHVhbF9yZXN1bHRzID0gc3RlcC5ldmFsdWF0ZUNvbW1hbmQoY21k
KQotICAgICAgICBhY3R1YWxfdGV4dCA9IHN0cihzdGVwLmdldFRleHQyKGNtZCwgYWN0dWFsX3Jl
c3VsdHMpWzBdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3RleHQsIGFjdHVh
bF90ZXh0KQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3Nl
cnRSZXN1bHRzKDAsICJwZXJmLXRlc3QiKQotCi0gICAgZGVmIHRlc3RfdGVzdHNfZmFpbGVkKHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydFJlc3VsdHMoNSwgIjUgcGVyZiB0ZXN0cyBmYWlsZWQi
KQotCi0gICAgZGVmIHRlc3RfYnVpbGRfYmFkX2J1aWxkKHNlbGYpOgotICAgICAgICBzZWxmLmFz
c2VydFJlc3VsdHMoMjU1LCAiYnVpbGQgbm90IHVwIHRvIGRhdGUiKQotCi0gICAgZGVmIHRlc3Rf
YnVpbGRfYmFkX3NvdXJjZV9qc29uKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJlc3VsdHMo
MjU0LCAid29ya2VyIGNvbmZpZyBKU09OIGVycm9yIikKLQotICAgIGRlZiB0ZXN0X2J1aWxkX2Jh
ZF9tYXJnZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKDI1MywgIm91dHB1dCBK
U09OIG1lcmdlIGVycm9yIikKLQotICAgIGRlZiB0ZXN0X2J1aWxkX2JhZF9mYWlsZWRfdXBsb2Fk
aW5nKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJlc3VsdHMoMjUyLCAidXBsb2FkIGVycm9y
IikKLQotICAgIGRlZiB0ZXN0X2J1aWxkX2JhZF9wcmVwYXJhdGlvbihzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRSZXN1bHRzKDI1MSwgInN5c3RlbSBkZXBlbmRlbmN5IGVycm9yIikKLQotICAg
IGRlZiB0ZXN0X2J1aWxkYm90X3RpbWVvdXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVz
dWx0cygtMSwgInRpbWVvdXQiKQotCi0KLWNsYXNzIFJ1bkJlbmNobWFya1Rlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgotICAgIGRlZiBhc3NlcnRSZXN1bHRzKHNlbGYsIHJjLCBleHBlY3RlZF90ZXh0
KToKLSAgICAgICAgY21kID0gU3R1YlJlbW90ZUNvbW1hbmQocmMsIGV4cGVjdGVkX3RleHQpCi0g
ICAgICAgIHN0ZXAgPSBSdW5CZW5jaG1hcmtUZXN0cygpCi0gICAgICAgIHN0ZXAuY29tbWFuZENv
bXBsZXRlKGNtZCkKLSAgICAgICAgYWN0dWFsX3Jlc3VsdHMgPSBzdGVwLmV2YWx1YXRlQ29tbWFu
ZChjbWQpCi0gICAgICAgIGFjdHVhbF90ZXh0ID0gc3RyKHN0ZXAuZ2V0VGV4dDIoY21kLCBhY3R1
YWxfcmVzdWx0cylbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGV4dCwg
YWN0dWFsX3RleHQpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxm
LmFzc2VydFJlc3VsdHMoMCwgImJlbmNobWFyay10ZXN0IikKLQotICAgIGRlZiB0ZXN0X3Rlc3Rz
X2ZhaWxlZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKDcsICI3IGJlbmNobWFy
ayB0ZXN0cyBmYWlsZWQiKQotCi0KLSMgRklYTUU6IFdlIHNob3VsZCBydW4gdGhpcyBmaWxlIGFz
IHBhcnQgb2YgdGVzdC13ZWJraXRweS4KLSMgVW5mb3J0dW5hdGVseSB0ZXN0LXdlYmtpdHB5IGN1
cnJlbnRseSByZXF1aXJlcyB0aGF0IHVuaXR0ZXN0cwotIyBiZSBsb2NhdGVkIGluIGEgZGlyZWN0
b3J5IHdpdGggYSB2YWxpZCBtb2R1bGUgbmFtZS4KLSMgJ2J1aWxkLndlYmtpdC5vcmctY29uZmln
JyBpcyBub3QgYSB2YWxpZCBtb2R1bGUgbmFtZSAoZHVlIHRvICcuJyBhbmQgJy0nKQotIyBzbyBm
b3Igbm93IHRoaXMgaXMgYSBzdGFuZC1hbG9uZSB0ZXN0IGhhcm5lc3MuCi1pZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgotICAgIEJ1aWxkQm90Q29uZmlnTG9hZGVyKCkuX2FkZF9kZXBlbmRlbnRf
bW9kdWxlc190b19zeXNfbW9kdWxlcygpCi0gICAgZnJvbSBsb2FkQ29uZmlnIGltcG9ydCAqCi0g
ICAgYyA9IHt9Ci0gICAgbG9hZEJ1aWxkZXJDb25maWcoYywgaXNfdGVzdF9tb2RlX2VuYWJsZWQ9
VHJ1ZSkKLSAgICBCdWlsZFN0ZXBzQ29uc3RydWN0b3JUZXN0LmdlbmVyYXRlVGVzdHMoKQotICAg
IEJ1aWxkU3RlcHNUZXN0LmdlbmVyYXRlVGVzdHMoKQotICAgIHVuaXR0ZXN0Lm1haW4oKQoKUHJv
cGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3N0ZXBzX3VuaXR0ZXN0LnB5Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGUKIyMg
LTEgKzAsMCAjIwotKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29s
cy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvdGVtcGxhdGVzL2J1aWxkZXIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
dGVtcGxhdGVzL2J1aWxkZXIuaHRtbAkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3RlbXBsYXRlcy9idWlsZGVyLmh0bWwJKG5vbmV4
aXN0ZW50KQpAQCAtMSwxMTggKzAsMCBAQAoteyUgZnJvbSAnYnVpbGRfbGluZS5odG1sJyBpbXBv
cnQgYnVpbGRfdGFibGUgJX0KLXslIGltcG9ydCAnZm9ybXMuaHRtbCcgYXMgZm9ybXMgJX0KLQot
eyUgZXh0ZW5kcyAibGF5b3V0Lmh0bWwiICV9Ci17JSBibG9jayBjb250ZW50ICV9Ci0KLTxoMT5C
dWlsZGVyIHt7IG5hbWUgfX08L2gxPgotCi08cD4oPGEgaHJlZj0ie3sgcGF0aF90b19yb290IH19
d2F0ZXJmYWxsP3Nob3c9e3sgbmFtZSB9fSI+dmlldyBpbiB3YXRlcmZhbGw8L2E+KTwvcD4KLQot
PGRpdiBjbGFzcz0iY29sdW1uIj4KLQoteyUgaWYgY3VycmVudCAlfQotICA8aDI+Q3VycmVudCBC
dWlsZHM6PC9oMj4KLSAgPHVsPgotICB7JSBmb3IgYiBpbiBjdXJyZW50ICV9Ci0gICAgPGxpPjxh
IGhyZWY9Int7IGIubGluayB9fSI+e3sgYi5udW0gfX08L2E+Ci0gICAgeyUgaWYgYi53aGVuICV9
Ci0gICAgICBFVEE6IHt7IGIud2hlbl90aW1lIH19IFt7eyBiLndoZW4gfX1dCi0gICAgeyUgZW5k
aWYgJX0KLQotICAgIHt7IGIuY3VycmVudF9zdGVwIH19Ci0KLSAgICB7JSBpZiBhdXRoei5hZHZl
cnRpc2VBY3Rpb24oJ3N0b3BCdWlsZCcsIHJlcXVlc3QpICV9Ci0gICAgICB7eyBmb3Jtcy5zdG9w
X2J1aWxkKGIuc3RvcF91cmwsIGF1dGh6LCBvbl9hbGw9RmFsc2UsIHNob3J0PVRydWUsIGxhYmVs
PSdCdWlsZCcpIH19Ci0gICAgeyUgZW5kaWYgJX0KLSAgICA8L2xpPgotICB7JSBlbmRmb3IgJX0K
LSAgPC91bD4KLXslIGVsc2UgJX0KLSAgPGgyPk5vIGN1cnJlbnQgYnVpbGRzPC9oMj4KLXslIGVu
ZGlmICV9Ci0KLXslIGlmIHBlbmRpbmcgJX0KLSAgPGgyPlBlbmRpbmcgQnVpbGQgUmVxdWVzdHM6
PC9oMj4KLSAgPHVsPgotICB7JSBmb3IgYiBpbiBwZW5kaW5nICV9Ci0gICAgPGxpPjxzbWFsbD4o
e3sgYi53aGVuIH19LCB3YWl0aW5nIHt7IGIuZGVsYXkgfX0pPC9zbWFsbD4KLQotICAgIHslIGlm
IGF1dGh6LmFkdmVydGlzZUFjdGlvbignY2FuY2VsUGVuZGluZ0J1aWxkJywgcmVxdWVzdCkgJX0K
LSAgICAgIHt7IGZvcm1zLmNhbmNlbF9wZW5kaW5nX2J1aWxkKGJ1aWxkZXJfdXJsKyIvY2FuY2Vs
YnVpbGQiLCBhdXRoeiwgc2hvcnQ9VHJ1ZSwgaWQ9Yi5pZCkgfX0KLSAgICB7JSBlbmRpZiAlfQot
Ci0gICAgeyUgaWYgYi5udW1fY2hhbmdlcyA8IDQgJX0KLSAgICAgICAgeyUgZm9yIGMgaW4gYi5j
aGFuZ2VzICV9e3sgYy5yZXZpc2lvbnxzaG9ydHJldihjLnJlcG8pIH19Ci0gICAgICAgICg8YSBo
cmVmPSJ7eyBjLnVybCB9fSI+e3sgYy53aG8gfX08L2E+KXslIGlmIG5vdCBsb29wLmxhc3QgJX0s
eyUgZW5kaWYgJX0KLSAgICAgICAgeyUgZW5kZm9yICV9Ci0gICAgeyUgZWxzZSAlfQotICAgICAg
ICAoe3sgYi5udW1fY2hhbmdlcyB9fSBjaGFuZ2VzKQotICAgIHslIGVuZGlmICV9Ci0KLSAgICAg
IHslIGlmICdvd25lcicgaW4gYi5wcm9wZXJ0aWVzICV9Ci0gICAgICAgIDxiPkZvcmNlZCBidWls
ZDwvYj4KLSAgICAgICAgYnkge3tiLnByb3BlcnRpZXNbJ293bmVyJ11bMF19fQotICAgICAgICA8
c21hbGw+e3tiLnByb3BlcnRpZXNbJ3JlYXNvbiddWzBdfX08L3NtYWxsPgotICAgICAgeyUgZW5k
aWYgJX0KLSAgICA8L2xpPgotICB7JSBlbmRmb3IgJX0KLSAgPC91bD4KLQotICB7JSBpZiBhdXRo
ei5hZHZlcnRpc2VBY3Rpb24oJ2NhbmNlbFBlbmRpbmdCdWlsZCcsIHJlcXVlc3QpICV9Ci0gICAg
e3sgZm9ybXMuY2FuY2VsX3BlbmRpbmdfYnVpbGQoYnVpbGRlcl91cmwrIi9jYW5jZWxidWlsZCIs
IGF1dGh6LCBzaG9ydD1GYWxzZSwgaWQ9J2FsbCcpIH19Ci0gIHslIGVuZGlmICV9Ci0KLXslIGVs
c2UgJX0KLSAgPGgyPk5vIFBlbmRpbmcgQnVpbGQgUmVxdWVzdHM8L2gyPgoteyUgZW5kaWYgJX0K
LQotPGgyPlJlY2VudCBCdWlsZHM6PC9oMj4KLQote3sgYnVpbGRfdGFibGUocmVjZW50KSB9fQot
KCBTaG93OiA8YSBocmVmPSJ7eyBidWlsZGVyX3VybCB9fSI+ZGVmYXVsdDwvYT4KLXslIGZvciBj
b3VudCBpbiBbMjUsIDUwLCAxMDAsIDIwMF0gJX0KLTxhIGhyZWY9Int7IGJ1aWxkZXJfdXJsIH19
P251bWJ1aWxkcz17eyBjb3VudCB9fSI+e3sgY291bnQgfX08L2E+Ci17JSBlbmRmb3IgJX0pCi0K
LTwvZGl2PgotPGRpdiBjbGFzcz0iY29sdW1uIj4KLQotPGgyPkJ1aWxkc2xhdmVzOjwvaDI+Ci08
dGFibGUgY2xhc3M9ImluZm8iPgoteyUgaWYgc2xhdmVzICV9Ci08dHI+Ci0gIDx0aD5OYW1lPC90
aD4KLSAgPHRoPlN0YXR1czwvdGg+Ci0gIDx0aD5BZG1pbjwvdGg+Ci08L3RyPgoteyUgZW5kaWYg
JX0KLXslIGZvciBzIGluIHNsYXZlcyAlfQotICA8dHIgY2xhc3M9Int7IGxvb3AuY3ljbGUoJ2Fs
dCcsICcnKSB9fSI+Ci0gIDx0ZD48Yj48YSBocmVmPSJ7eyBzLmxpbmt8ZSB9fSI+e3sgcy5uYW1l
fGUgfX08L2E+PC9iPjwvdGQ+Ci0gIHslIGlmIHMuY29ubmVjdGVkICV9Ci0gICAgPHRkIGNsYXNz
PSJpZGxlIj5jb25uZWN0ZWQ8L3RkPgotICAgIDx0ZD57eyBzLmFkbWlufGVtYWlsIGlmIHMuYWRt
aW4gZWxzZSAiIn19PC90ZD4KLSAgeyUgZWxzZSAlfQotICAgIDx0ZCBjbGFzcz0ib2ZmbGluZSI+
b2ZmbGluZTwvdGQ+Ci0gICAgPHRkLz4KLSAgeyUgZW5kaWYgJX0KLSAgPC90cj4KLXslIGVsc2Ug
JX0KLSAgPHRkPm5vIHNsYXZlcyBhdHRhY2hlZDwvdGQ+Ci17JSBlbmRmb3IgJX0KLTwvdGFibGU+
Ci0KLXslIGlmIGF1dGh6LmFkdmVydGlzZUFjdGlvbigncGluZ0J1aWxkZXInLCByZXF1ZXN0KSAl
fQotICA8aDI+UGluZyBzbGF2ZXM8L2gyPgotICB7eyBmb3Jtcy5waW5nX2J1aWxkZXIoYnVpbGRl
cl91cmwrIi9waW5nIiwgYXV0aHopIH19Ci17JSBlbmRpZiAlfQotCi17JSBpZiBhdXRoei5hZHZl
cnRpc2VBY3Rpb24oJ2ZvcmNlQnVpbGQnLCByZXF1ZXN0KSBhbmQgZm9yY2Vfc2NoZWR1bGVycyAh
PSB7fSAlfQotICA8aDI+Rm9yY2UgYnVpbGQ8L2gyPgotICB7eyBmb3Jtcy5mb3JjZV9idWlsZChi
dWlsZGVyX3VybCsiL2ZvcmNlIiwgYXV0aHosIHJlcXVlc3QsIEZhbHNlLCBmb3JjZV9zY2hlZHVs
ZXJzPWZvcmNlX3NjaGVkdWxlcnMsZGVmYXVsdF9wcm9wcz1kZWZhdWx0X3Byb3BzKSB9fQoteyUg
ZW5kaWYgJX0KLQotPC9kaXY+Ci0KLXslIGVuZGJsb2NrICV9Ci0KSW5kZXg6IFRvb2xzL0NJU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy90ZW1wbGF0ZXMvcm9vdC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy90ZW1wbGF0ZXMv
cm9vdC5odG1sCShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvdGVtcGxhdGVzL3Jvb3QuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDUy
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KLTx0
aXRsZT5XZWJLaXQgQnVpbGQgQ2VudHJhbDwvdGl0bGU+Ci08c3R5bGU+Ci0gICAgYm9keSB7Ci0g
ICAgICAgIGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhTmV1ZS1MaWdodCIsIHNhbnMtc2VyaWY7Ci0g
ICAgfQotCi0gICAgaDEsIGgyLCBoMyB7Ci0gICAgICAgIGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNh
TmV1ZSIsIHNhbnMtc2VyaWY7Ci0gICAgfQotPC9zdHlsZT4KLTwvaGVhZD4KLQotPGJvZHk+Ci08
aDI+RGFzaGJvYXJkPC9oMj4KLTx1bD4KLSAgPGxpPjxhIGhyZWY9ImRhc2hib2FyZCI+Qm90IHdh
dGNoZXIncyBkYXNoYm9hcmQ8L2E+PC9saT4KLTwvdWw+Ci0KLTxoMj5CdWlsZGJvdCBQYWdlczwv
aDI+Ci08dWw+Ci0gIDxsaT48YSBocmVmPSJjb25zb2xlIj5Db25zb2xlPC9hPiAtIDxhIGhyZWY9
ImNvbnNvbGU/Y2F0ZWdvcnk9QXBwbGVNYWMiPkFwcGxlIE1hYzwvYT4sIDxhIGhyZWY9ImNvbnNv
bGU/Y2F0ZWdvcnk9QXBwbGVXaW4iPkFwcGxlIFdpbmRvd3M8L2E+LCA8YSBocmVmPSJjb25zb2xl
P2NhdGVnb3J5PWlPUyI+aU9TPC9hPiwKLSAgPGEgaHJlZj0iY29uc29sZT9jYXRlZ29yeT1HVEsi
PkdUSys8L2E+LCA8YSBocmVmPSJjb25zb2xlP2NhdGVnb3J5PVdQRSI+V1BFPC9hPiwgPGEgaHJl
Zj0iY29uc29sZT9jYXRlZ29yeT1XaW5DYWlybyI+V2luQ2Fpcm88L2E+Ci0gIGFuZCA8YSBocmVm
PSJjb25zb2xlP2NhdGVnb3J5PW1pc2MiPm1pc2NlbGxhbmVvdXM8L2E+PC9saT4KLSAgPGxpPjxh
IGhyZWY9IndhdGVyZmFsbCI+V2F0ZXJmYWxsIERpc3BsYXk8L2E+LCBhIHRpbWUtb3JpZW50ZWQg
c3VtbWFyeSBvZiByZWNlbnQgYnVpbGRib3QgYWN0aXZpdHkKLSAgLSA8YSBocmVmPSJ3YXRlcmZh
bGw/Y2F0ZWdvcnk9QXBwbGVNYWMiPkFwcGxlIE1hYzwvYT4sIDxhIGhyZWY9IndhdGVyZmFsbD9j
YXRlZ29yeT1BcHBsZVdpbiI+QXBwbGUgV2luZG93czwvYT4sIDxhIGhyZWY9IndhdGVyZmFsbD9j
YXRlZ29yeT1pT1MiPmlPUzwvYT4sCi0gIDxhIGhyZWY9IndhdGVyZmFsbD9jYXRlZ29yeT1HVEsi
PkdUSys8L2E+LCA8YSBocmVmPSJ3YXRlcmZhbGw/Y2F0ZWdvcnk9V1BFIj5XUEU8L2E+LCA8YSBo
cmVmPSJ3YXRlcmZhbGw/Y2F0ZWdvcnk9V2luQ2Fpcm8iPldpbkNhaXJvPC9hPgotICBhbmQgPGEg
aHJlZj0id2F0ZXJmYWxsP2NhdGVnb3J5PW1pc2MiPm1pc2NlbGxhbmVvdXM8L2E+PC9saT4KLSAg
PGxpPjxhIGhyZWY9Im9uZV9ib3hfcGVyX2J1aWxkZXIiPkxhdGVzdCBCdWlsZDwvYT4gZm9yIGVh
Y2ggYnVpbGRlciBpcyBoZXJlLjwvbGk+Ci0gIDxsaT48YSBocmVmPSJvbmVfbGluZV9wZXJfYnVp
bGQiPlJlY2VudCBCdWlsZHM8L2E+IGFyZSBzdW1tYXJpemVkIGhlcmUsIG9uZSBwZXIgbGluZS48
L2xpPgotICA8bGk+PGEgaHJlZj0icmVzdWx0cyI+VGVzdCBSZXN1bHRzPC9hPjwvbGk+Ci0gIDxs
aT48YSBocmVmPSJidWlsZHNsYXZlcyI+QnVpbGRzbGF2ZTwvYT4gaW5mb3JtYXRpb248L2xpPgot
PC91bD4KLQotPGgyPlRlc3RzIGFuZCBQZXJmb3JtYW5jZTwvaDI+Ci08dWw+Ci0gIDxsaT48YSBo
cmVmPSJodHRwczovL3Jlc3VsdHMud2Via2l0Lm9yZyI+Rmxha2luZXNzIGRhc2hib2FyZDwvYT4g
KEV4dGVybmFsIHNpdGUpPC9saT4KLSAgPGxpPjxhIGhyZWY9IkxlYWtzVmlld2VyIj5MZWFrcyBW
aWV3ZXI8L2E+PC9saT4KLSAgPGxpPjxhIGhyZWY9IlRlc3RGYWlsdXJlcyI+VGVzdCBGYWlsdXJl
czwvYT48L2xpPgotICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9wZXJmLndlYmtpdC5vcmcvIj5XZWJL
aXQgUGVyZiBNb25pdG9yPC9hPiByZXN1bHRzIHN1Ym1pdHRlZCBieSA8YSBocmVmPSJodHRwczov
L2J1aWxkLndlYmtpdC5vcmcvd2F0ZXJmYWxsP3Nob3c9QXBwbGUlMjBZb3NlbWl0ZSUyMFJlbGVh
c2UlMjBXSzIlMjAlMjhQZXJmJTI5JnNob3c9R1RLJTIwTGludXglMjA2NC1iaXQlMjBSZWxlYXNl
JTIwJTI4UGVyZiUyOSI+cGVyZm9ybWFuY2UgYm90czwvYT48L2xpPgotPC91bD4KLQotPGgyPlN0
YXR1czwvaDI+Ci08dWw+Ci0gICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZXdzLWJ1aWxkLndlYmtp
dC5vcmcvIy9idWlsZGVycyI+RWFybHkgV2FybmluZyBTeXN0ZW0gYW5kIENvbW1pdCBRdWV1ZSBT
dGF0dXM8L2E+PC9saT4KLTwvdWw+Ci0KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IFRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy93a2J1aWxkLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy93a2J1aWxkLnB5CShyZXZp
c2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
d2tidWlsZC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDE0OCArMCwwIEBACi0jIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0j
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIkZ1bmN0aW9ucyByZWxhdGluZyB0byBidWls
ZGluZyBXZWJLaXQiIiIKLQotaW1wb3J0IHJlCi0KLQotZGVmIF9zaG91bGRfZmlsZV90cmlnZ2Vy
X2J1aWxkKHRhcmdldF9wbGF0Zm9ybSwgZmlsZSk6Ci0gICAgIyBUaGUgZGlyZWN0b3JpZXMgYW5k
IHBhdHRlcm5zIGxpc3RzIGJlbG93IG1hcCBkaXJlY3RvcnkgbmFtZXMgb3IKLSAgICAjIHJlZ2V4
cCBwYXR0ZXJucyB0byB0aGUgYm90IHBsYXRmb3JtcyBmb3Igd2hpY2ggdGhleSBzaG91bGQgdHJp
Z2dlciBhCi0gICAgIyBidWlsZC4gTWFwcGluZyB0byB0aGUgZW1wdHkgbGlzdCBtZWFucyB0aGF0
IG5vIGJ1aWxkcyBzaG91bGQgYmUKLSAgICAjIHRyaWdnZXJlZCBvbiBhbnkgcGxhdGZvcm1zLiBF
YXJsaWVyIGRpcmVjdG9yaWVzL3BhdHRlcm5zIHRha2UKLSAgICAjIHByZWNlbmRlbmNlIG92ZXIg
bGF0ZXIgb25lcy4KLQotICAgICMgRklYTUU6IFRoZSBwYXR0ZXJucyBiZWxvdyBoYXZlIG9ubHkg
YmVlbiB2ZXJpZmllZCB0byBiZSBjb3JyZWN0IG9uCi0gICAgIyB0aGUgcGxhdGZvcm1zIGxpc3Rl
ZCBiZWxvdy4gV2Ugc2hvdWxkIGltcGxlbWVudCB0aGlzIGZvciBvdGhlciBwbGF0Zm9ybXMKLSAg
ICAjIGFuZCBzdGFydCB1c2luZyBpdCBmb3IgdGhlaXIgYm90cy4gU29tZW9uZSBmYW1pbGlhciB3
aXRoIGVhY2ggcGxhdGZvcm0KLSAgICAjIHdpbGwgaGF2ZSB0byBmaWd1cmUgb3V0IHdoYXQgdGhl
IHJpZ2h0IHNldCBvZiBkaXJlY3Rvcmllcy9wYXR0ZXJucyBpcyBmb3IKLSAgICAjIHRoYXQgcGxh
dGZvcm0uCi0gICAgYXNzZXJ0KHRhcmdldF9wbGF0Zm9ybSBpbiAoCi0gICAgICAgICJtYWMteW9z
ZW1pdGUiLAotICAgICAgICAibWFjLWVsY2FwaXRhbiIsCi0gICAgICAgICJtYWMtc2llcnJhIiwK
LSAgICAgICAgIm1hYy1oaWdoc2llcnJhIiwKLSAgICAgICAgIm1hYy1tb2phdmUiLAotICAgICAg
ICAibWFjLWNhdGFsaW5hIiwKLSAgICAgICAgIm1hYy1iaWdzdXIiLAotICAgICAgICAid2luIiwK
LSAgICAgICAgImlvcy0xNCIsCi0gICAgICAgICJpb3Mtc2ltdWxhdG9yLTE0IiwKLSAgICAgICAg
InR2b3MtMTQiLAotICAgICAgICAidHZvcy1zaW11bGF0b3ItMTQiLAotICAgICAgICAid2F0Y2hv
cy03IiwKLSAgICAgICAgIndhdGNob3Mtc2ltdWxhdG9yLTciLAotICAgICkpCi0KLSAgICBkaXJl
Y3RvcmllcyA9IFsKLSAgICAgICAgIyBEaXJlY3RvcmllcyB0aGF0IHNob3VsZG4ndCB0cmlnZ2Vy
IGJ1aWxkcyBvbiBhbnkgYm90cy4KLSAgICAgICAgKCJFeGFtcGxlcyIsIFtdKSwKLSAgICAgICAg
KCJQZXJmb3JtYW5jZVRlc3RzIiwgW10pLAotICAgICAgICAoIk1hbnVhbFRlc3RzIiwgW10pLAot
ICAgICAgICAoIlRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbCIsIFtdKSwKLSAgICAgICAgKCJXZWJzaXRlcyIsIFtdKSwKLSAgICAgICAgKCJvcGVuZ2wi
LCBbXSksCi0gICAgICAgICgib3BlbnR5cGUiLCBbXSksCi0gICAgICAgICgib3BlbnZnIiwgW10p
LAotICAgICAgICAoInd4IiwgW10pLAotCi0gICAgICAgICMgRGlyZWN0b3JpZXMgdGhhdCBzaG91
bGQgdHJpZ2dlciBidWlsZHMgb24gb25seSBzb21lIGJvdHMuCi0gICAgICAgICgiTGF5b3V0VGVz
dHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvciIsIFsiaW9zIl0pLAotICAgICAgICAoIkxheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2sxIiwgWyJpb3MiXSksCi0gICAgICAgICgiTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIiLCBbImlvcyJdKSwKLSAgICAgICAg
KCJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMteW9zZW1pdGUiLCBbIm1hYy15b3NlbWl0ZSJdKSwK
LSAgICAgICAgKCJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtZWxjYXBpdGFuIiwgWyJtYWMteW9z
ZW1pdGUiLCAibWFjLWVsY2FwaXRhbiJdKSwKLSAgICAgICAgKCJMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtc2llcnJhIiwgWyJtYWMteW9zZW1pdGUiLCAibWFjLWVsY2FwaXRhbiIsICJtYWMtc2ll
cnJhIl0pLAotICAgICAgICAoIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy1oaWdoc2llcnJhIiwg
WyJtYWMteW9zZW1pdGUiLCAibWFjLWVsY2FwaXRhbiIsICJtYWMtc2llcnJhIiwgIm1hYy1oaWdo
c2llcnJhIl0pLAotICAgICAgICAoIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy1tb2phdmUiLCBb
Im1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hz
aWVycmEiLCAibWFjLW1vamF2ZSJdKSwKLSAgICAgICAgKCJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtY2F0YWxpbmEiLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVy
cmEiLCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSIsICJtYWMtYmlnc3VyIl0pLAotICAg
ICAgICAoIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy1iaWdzdXIiLCBbIm1hYy1iaWdzdXIiXSks
Ci0gICAgICAgICgiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMiIsIFsibWFjIl0pLAotICAg
ICAgICAoIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEiLCBbIm1hYyJdKSwKLSAgICAgICAg
KCJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMiLCBbIm1hYyIsICJ3aW4iXSksCi0gICAgICAgICgi
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syIiwgWyJtYWMiLCAiaW9zIl0pLAotICAgICAgICAoImNh
aXJvIiwgWyJndGsiLCAid2luY2Fpcm8iXSksCi0gICAgICAgICgiY2YiLCBbIm1hYyIsICJ3aW4i
LCAiaW9zIiwgInR2b3MiLCAid2F0Y2hvcyJdKSwKLSAgICAgICAgKCJjb2NvYSIsIFsibWFjIiwg
ImlvcyIsICJ0dm9zIiwgIndhdGNob3MiXSksCi0gICAgICAgICgiY3VybCIsIFsiZ3RrIiwgIndp
bmNhaXJvIl0pLAotICAgICAgICAoImdvYmplY3QiLCBbImd0ayJdKSwKLSAgICAgICAgKCJnc3Ry
ZWFtZXIiLCBbImd0ayJdKSwKLSAgICAgICAgKCJndGsiLCBbImd0ayJdKSwKLSAgICAgICAgKCJp
b3MiLCBbImlvcyIsICJ0dm9zIiwgIndhdGNob3MiXSksCi0gICAgICAgICgibWFjIiwgWyJtYWMi
XSksCi0gICAgICAgICgib2JqYyIsIFsibWFjIiwgImlvcyIsICJ0dm9zIiwgIndhdGNob3MiXSks
Ci0gICAgICAgICgic291cCIsIFsiZ3RrIl0pLAotICAgICAgICAoIndpbiIsIFsid2luIl0pLAot
ICAgIF0KLSAgICBwYXR0ZXJucyA9IFsKLSAgICAgICAgIyBQYXR0ZXJucyB0aGF0IHNob3VsZG4n
dCB0cmlnZ2VyIGJ1aWxkcyBvbiBhbnkgYm90cy4KLSAgICAgICAgKHIiKD86XnwvKUNoYW5nZUxv
Zy4qJCIsIFtdKSwKLSAgICAgICAgKHIiKD86XnwvKU1ha2VmaWxlJCIsIFtdKSwKLSAgICAgICAg
KHIiL0FSTSIsIFtdKSwKLSAgICAgICAgKHIiL0NNYWtlLioiLCBbXSksCi0gICAgICAgIChyIi9M
SUNFTlNFW14vXSskIiwgW10pLAotICAgICAgICAociJBUk0oPzp2Nyk/XC4oPzpjcHB8aCkkIiwg
W10pLAotICAgICAgICAociJNSVBTXC4oPzpjcHB8aCkkIiwgW10pLAotICAgICAgICAociJcLig/
OmJrbHxtaykkIiwgW10pLAotCi0gICAgICAgICMgUGF0dGVybnMgdGhhdCBzaG91bGQgdHJpZ2dl
ciBidWlsZHMgb24gb25seSBzb21lIGJvdHMuCi0gICAgICAgIChyIig/Ol58LylQbGF0Zm9ybUdU
S1wuY21ha2UkIiwgWyJndGsiXSksCi0gICAgICAgIChyIk1hY1wuKD86Y3BwfGh8bW0pJCIsIFsi
bWFjIl0pLAotICAgICAgICAociJJT1NcLig/OmNwcHxofG1tKSQiLCBbImlvcyIsICJ0dm9zIiwg
IndhdGNob3MiXSksCi0gICAgICAgIChyIlwuKD86dmNwcm9qfHZzcHJvcHN8c2xufHZjeHByb2p8
cHJvcHN8ZmlsdGVycykkIiwgWyJ3aW4iXSksCi0gICAgICAgIChyIlwuZXhwKD86XC5pbik/JCIs
IFsibWFjIiwgImlvcyIsICJ0dm9zIiwgIndhdGNob3MiXSksCi0gICAgICAgIChyIlwub3JkZXIk
IiwgWyJtYWMiLCAiaW9zIiwgInR2b3MiLCAid2F0Y2hvcyJdKSwKLSAgICAgICAgKHIiXC4oPzp2
Y3Byb2p8dmN4cHJvaikvIiwgWyJ3aW4iXSksCi0gICAgICAgIChyIlwueGNjb25maWckIiwgWyJt
YWMiLCAiaW9zIiwgInR2b3MiLCAid2F0Y2hvcyJdKSwKLSAgICAgICAgKHIiXC54Y29kZXByb2ov
IiwgWyJtYWMiLCAiaW9zIiwgInR2b3MiLCAid2F0Y2hvcyJdKSwKLSAgICBdCi0KLSAgICBiYXNl
X3BsYXRmb3JtID0gdGFyZ2V0X3BsYXRmb3JtLnNwbGl0KCItIilbMF0KLQotICAgICMgU2VlIGlm
IHRoZSBmaWxlIGlzIGluIG9uZSBvZiB0aGUga25vd24gZGlyZWN0b3JpZXMuCi0gICAgZm9yIGRp
cmVjdG9yeSwgcGxhdGZvcm1zIGluIGRpcmVjdG9yaWVzOgotICAgICAgICBpZiByZS5zZWFyY2go
ciIoPzpefC8pJXMvIiAlIGRpcmVjdG9yeSwgZmlsZSk6Ci0gICAgICAgICAgICByZXR1cm4gdGFy
Z2V0X3BsYXRmb3JtIGluIHBsYXRmb3JtcyBvciBiYXNlX3BsYXRmb3JtIGluIHBsYXRmb3Jtcwot
Ci0gICAgIyBTZWUgaWYgdGhlIGZpbGUgbWF0Y2hlcyBhIGtub3duIHBhdHRlcm4uCi0gICAgZm9y
IHBhdHRlcm4sIHBsYXRmb3JtcyBpbiBwYXR0ZXJuczoKLSAgICAgICAgaWYgcmUuc2VhcmNoKHBh
dHRlcm4sIGZpbGUpOgotICAgICAgICAgICAgcmV0dXJuIHRhcmdldF9wbGF0Zm9ybSBpbiBwbGF0
Zm9ybXMgb3IgYmFzZV9wbGF0Zm9ybSBpbiBwbGF0Zm9ybXMKLQotICAgICMgU2VlIGlmIHRoZSBm
aWxlIGlzIGEgcGxhdGZvcm0tc3BlY2lmaWMgdGVzdCByZXN1bHQuCi0gICAgbWF0Y2ggPSByZS5t
YXRjaCgiTGF5b3V0VGVzdHMvcGxhdGZvcm0vKD9QPHBsYXRmb3JtPlteL10rKS8iLCBmaWxlKQot
ICAgIGlmIG1hdGNoOgotICAgICAgICAjIFNlZSBpZiB0aGUgZmlsZSBpcyBhIHRlc3QgcmVzdWx0
IGZvciB0aGlzIHBsYXRmb3JtLCBvdXIgYmFzZQotICAgICAgICAjIHBsYXRmb3JtLCBvciBvbmUg
b2Ygb3VyIHN1Yi1wbGF0Zm9ybXMuCi0gICAgICAgIHJldHVybiBtYXRjaC5ncm91cCgicGxhdGZv
cm0iKSBpbiAodGFyZ2V0X3BsYXRmb3JtLCBiYXNlX3BsYXRmb3JtKSBvciBtYXRjaC5ncm91cCgi
cGxhdGZvcm0iKS5zdGFydHN3aXRoKCIlcy0iICUgdGFyZ2V0X3BsYXRmb3JtKQotCi0gICAgIyBU
aGUgZmlsZSBpc24ndCBvbmUgd2Uga25vdyBhYm91dCBzcGVjaWZpY2FsbHksIHNvIHdlIHNob3Vs
ZCBhc3N1bWUgd2UKLSAgICAjIGhhdmUgdG8gYnVpbGQuCi0gICAgcmV0dXJuIFRydWUKLQotCi1k
ZWYgc2hvdWxkX2J1aWxkKHRhcmdldF9wbGF0Zm9ybSwgY2hhbmdlZF9maWxlcyk6Ci0gICAgIiIi
UmV0dXJucyB0cnVlIGlmIHRoZSBjaGFuZ2VkIGZpbGVzIGFmZmVjdCB0aGUgZ2l2ZW4gcGxhdGZv
cm0sIGFuZAotICAgIHRodXMgYSBidWlsZCBzaG91bGQgYmUgcGVyZm9ybWVkLiB0YXJnZXRfcGxh
dGZvcm0gc2hvdWxkIGJlIG9uZSBvZiB0aGUKLSAgICBwbGF0Zm9ybXMgdXNlZCBpbiB0aGUgYnVp
bGQud2Via2l0Lm9yZyBtYXN0ZXIncyBjb25maWcuanNvbiBmaWxlLiIiIgotICAgIHJldHVybiBh
bnkoX3Nob3VsZF9maWxlX3RyaWdnZXJfYnVpbGQodGFyZ2V0X3BsYXRmb3JtLCBmaWxlKSBmb3Ig
ZmlsZSBpbiBjaGFuZ2VkX2ZpbGVzKQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3drYnVpbGRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3drYnVpbGRfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy93
a2J1aWxkX3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsODUgKzAsMCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAot
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdW5pdHRlc3QK
LWltcG9ydCB3a2J1aWxkCi0KLQotY2xhc3MgU2hvdWxkQnVpbGRUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKLSAgICBfc2hvdWxkX2J1aWxkX3Rlc3RzID0gWwotICAgICAgICAoWyJDaGFuZ2VMb2ci
LCAiU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIiwgIlNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nLTIw
MTEtMDItMTEiXSwgW10pLAotICAgICAgICAoWyJXZWJzaXRlcy9idWdzLndlYmtpdC5vcmcvZm9v
IiwgIlNvdXJjZS9XZWJDb3JlL2JhciJdLCBbIioiXSksCi0gICAgICAgIChbIldlYnNpdGVzL2J1
Z3Mud2Via2l0Lm9yZy9mb28iXSwgW10pLAotICAgICAgICAoWyJTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL2ZvbyJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMt
ZWxjYXBpdGFuIiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSIs
ICJpb3MtMTQiLCAiaW9zLXNpbXVsYXRvci0xNCIsICJ0dm9zLTE0IiwgInR2b3Mtc2ltdWxhdG9y
LTE0IiwgIndhdGNob3MtNyIsICJ3YXRjaG9zLXNpbXVsYXRvci03Il0pLAotICAgICAgICAoWyJT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZyJdLCBbIm1h
Yy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVy
cmEiLCAibWFjLW1vamF2ZSIsICJpb3MtMTQiLCAiaW9zLXNpbXVsYXRvci0xNCIsICJ0dm9zLTE0
IiwgInR2b3Mtc2ltdWxhdG9yLTE0IiwgIndhdGNob3MtNyIsICJ3YXRjaG9zLXNpbXVsYXRvci03
Il0pLAotICAgICAgICAoWyJTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL2ZvbyIsICJTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQyLnZjcHJvaiIsICJTb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXQuc2xuIiwgIlRvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmln
dXJhdGlvbnMvV2ViS2l0VGVzdFJ1bm5lckNvbW1vbi52c3Byb3BzIl0sIFsid2luIl0pLAotICAg
ICAgICAoWyJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZm9vIiwgIlNvdXJjZS9XZWJDb3JlL2Jh
ciJdLCBbIioiXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL2ZvbyJdLCBbIioiXSksCi0gICAg
ICAgIChbIkxheW91dFRlc3RzL2NhbnZhcy9waGlsaXAvdGVzdHMvc2l6ZS5hdHRyaWJ1dGVzLnBh
cnNlLmV4cC1leHBlY3RlZC50eHQiLCAiTGF5b3V0VGVzdHMvY2FudmFzL3BoaWxpcC90ZXN0cy9z
aXplLmF0dHJpYnV0ZXMucGFyc2UuZXhwLmh0bWwiXSwgWyIqIl0pLAotICAgICAgICAoWyJMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMteW9zZW1pdGUvZm9vIl0sIFsibWFjLXlvc2VtaXRlIl0pLAot
ICAgICAgICAoWyJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtZWxjYXBpdGFuL2ZvbyJdLCBbIm1h
Yy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIl0pLAotICAgICAgICAoWyJMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtc2llcnJhL2ZvbyJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFu
IiwgIm1hYy1zaWVycmEiXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy1o
aWdoc2llcnJhL2ZvbyJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1z
aWVycmEiLCAibWFjLWhpZ2hzaWVycmEiXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRm
b3JtL21hYy1tb2phdmUvZm9vIl0sIFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4iLCAi
bWFjLXNpZXJyYSIsICJtYWMtaGlnaHNpZXJyYSIsICJtYWMtbW9qYXZlIl0pLAotICAgICAgICAo
WyJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtY2F0YWxpbmEvZm9vIl0sIFsibWFjLW1vamF2ZSIs
ICJtYWMteW9zZW1pdGUiLCAibWFjLWVsY2FwaXRhbiIsICJtYWMtc2llcnJhIiwgIm1hYy1oaWdo
c2llcnJhIiwgIm1hYy1tb2phdmUiXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy1zaW11bGF0b3IvZm9vIl0sIFsiaW9zLTE0IiwgImlvcy1zaW11bGF0b3ItMTQiXSksCi0g
ICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2sxL2ZvbyJdLCBb
Imlvcy0xNCIsICJpb3Mtc2ltdWxhdG9yLTE0Il0pLAotICAgICAgICAoWyJMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9mb28iXSwgWyJpb3MtMTQiLCAiaW9zLXNpbXVsYXRv
ci0xNCJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQiXSwg
WyJtYWMteW9zZW1pdGUiLCAibWFjLWVsY2FwaXRhbiIsICJtYWMtc2llcnJhIiwgIm1hYy1oaWdo
c2llcnJhIiwgIm1hYy1tb2phdmUiLCAiaW9zLTE0IiwgImlvcy1zaW11bGF0b3ItMTQiXSksCi0g
ICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZCJdLCBbIm1hYy15
b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEi
LCAibWFjLW1vamF2ZSJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9jb21wb3NpdGluZy90aWxpbmcvdHJhbnNmb3JtLW9yaWdpbi10aWxlZC1leHBlY3RlZC50eHQi
XSwgWyJtYWMteW9zZW1pdGUiLCAibWFjLWVsY2FwaXRhbiIsICJtYWMtc2llcnJhIiwgIm1hYy1o
aWdoc2llcnJhIiwgIm1hYy1tb2phdmUiXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mb28iXSwgWyJtYWMteW9zZW1pdGUiLCAibWFjLWVsY2FwaXRhbiIsICJtYWMtc2ll
cnJhIiwgIm1hYy1oaWdoc2llcnJhIiwgIm1hYy1tb2phdmUiLCAid2luIl0pLAotICAgICAgICAo
WyJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxs
aW5nL2F1dG9jb3JyZWN0aW9uLWNvbnRyYWN0aW9uLWV4cGVjdGVkLnR4dCJdLCBbIm1hYy15b3Nl
bWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAi
bWFjLW1vamF2ZSJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luLXhwL2Zv
byJdLCBbIndpbiJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luLXdrMS9m
b28iXSwgWyJ3aW4iXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mb28i
XSwgWyJ3aW4iXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL3NwaS9jb2NvYS9m
b28iXSwgWyJtYWMteW9zZW1pdGUiLCAibWFjLWVsY2FwaXRhbiIsICJtYWMtc2llcnJhIiwgIm1h
Yy1oaWdoc2llcnJhIiwgIm1hYy1tb2phdmUiLCAiaW9zLTE0IiwgImlvcy1zaW11bGF0b3ItMTQi
LCAidHZvcy0xNCIsICJ0dm9zLXNpbXVsYXRvci0xNCIsICJ3YXRjaG9zLTciLCAid2F0Y2hvcy1z
aW11bGF0b3ItNyJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vc3BpL2NmL2Zv
byJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVycmEiLCAibWFj
LWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSIsICJ3aW4iLCAiaW9zLTE0IiwgImlvcy1zaW11bGF0
b3ItMTQiLCAidHZvcy0xNCIsICJ0dm9zLXNpbXVsYXRvci0xNCIsICJ3YXRjaG9zLTciLCAid2F0
Y2hvcy1zaW11bGF0b3ItNyJdKSwKLSAgICAgICAgKFsiU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViS2l0Lm1hYy5leHAiXSwgWyJtYWMteW9zZW1pdGUiLCAibWFjLWVsY2FwaXRhbiIsICJtYWMt
c2llcnJhIiwgIm1hYy1oaWdoc2llcnJhIiwgIm1hYy1tb2phdmUiXSksCi0gICAgICAgIChbIlNv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYktpdC5pT1MuZXhwIl0sIFsiaW9zLTE0IiwgImlvcy1z
aW11bGF0b3ItMTQiLCAidHZvcy0xNCIsICJ0dm9zLXNpbXVsYXRvci0xNCIsICJ3YXRjaG9zLTci
LCAid2F0Y2hvcy1zaW11bGF0b3ItNyJdKSwKLSAgICAgICAgKFsiU291cmNlL0R1bW15L2Zvby5l
eHAiXSwgWyJtYWMteW9zZW1pdGUiLCAibWFjLWVsY2FwaXRhbiIsICJtYWMtc2llcnJhIiwgIm1h
Yy1oaWdoc2llcnJhIiwgIm1hYy1tb2phdmUiLCAiaW9zLTE0IiwgImlvcy1zaW11bGF0b3ItMTQi
LCAidHZvcy0xNCIsICJ0dm9zLXNpbXVsYXRvci0xNCIsICJ3YXRjaG9zLTciLCAid2F0Y2hvcy1z
aW11bGF0b3ItNyJdKSwKLSAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvaW9zL2ZvbyJdLCBbImlv
cy0xNCIsICJpb3Mtc2ltdWxhdG9yLTE0IiwgInR2b3MtMTQiLCAidHZvcy1zaW11bGF0b3ItMTQi
LCAid2F0Y2hvcy03IiwgIndhdGNob3Mtc2ltdWxhdG9yLTciXSksCi0gICAgICAgIChbIlNvdXJj
ZS9XZWJDb3JlL21hYy9mb28iXSwgWyJtYWMteW9zZW1pdGUiLCAibWFjLWVsY2FwaXRhbiIsICJt
YWMtc2llcnJhIiwgIm1hYy1oaWdoc2llcnJhIiwgIm1hYy1tb2phdmUiXSksCi0gICAgICAgIChb
IlNvdXJjZS9XZWJDb3JlL3dpbi9mb28iXSwgWyJ3aW4iXSksCi0gICAgICAgIChbIlNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0iXSwgWyJtYWMteW9zZW1pdGUiLCAibWFj
LWVsY2FwaXRhbiIsICJtYWMtc2llcnJhIiwgIm1hYy1oaWdoc2llcnJhIiwgIm1hYy1tb2phdmUi
LCAiaW9zLTE0IiwgImlvcy1zaW11bGF0b3ItMTQiLCAidHZvcy0xNCIsICJ0dm9zLXNpbXVsYXRv
ci0xNCIsICJ3YXRjaG9zLTciLCAid2F0Y2hvcy1zaW11bGF0b3ItNyJdKSwKLSAgICAgICAgKFsi
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvd3hjb2RlL3dpbi9mb28iXSwgW10pLAotICAgICAg
ICAoWyJTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1t
Il0sIFsiaW9zLTE0IiwgImlvcy1zaW11bGF0b3ItMTQiLCAidHZvcy0xNCIsICJ0dm9zLXNpbXVs
YXRvci0xNCIsICJ3YXRjaG9zLTciLCAid2F0Y2hvcy1zaW11bGF0b3ItNyJdKSwKLSAgICAgICAg
KFsiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIiwgIlNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oIl0sIFsibWFjLXlvc2VtaXRlIiwgIm1h
Yy1lbGNhcGl0YW4iLCAibWFjLXNpZXJyYSIsICJtYWMtaGlnaHNpZXJyYSIsICJtYWMtbW9qYXZl
Il0pLAotICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW0iLCAiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgiXSwgWyJpb3Mt
MTQiLCAiaW9zLXNpbXVsYXRvci0xNCIsICJ0dm9zLTE0IiwgInR2b3Mtc2ltdWxhdG9yLTE0Iiwg
IndhdGNob3MtNyIsICJ3YXRjaG9zLXNpbXVsYXRvci03Il0pLAotICAgICAgICAoWyJUb29scy9D
SVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIv
TGVha3NWaWV3ZXIuanMiXSwgW10pLAotICAgIF0KLQotICAgIGRlZiB0ZXN0X3Nob3VsZF9idWls
ZChzZWxmKToKLSAgICAgICAgZm9yIGZpbGVzLCBwbGF0Zm9ybXMgaW4gc2VsZi5fc2hvdWxkX2J1
aWxkX3Rlc3RzOgotICAgICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHRlc3QgbW9yZSBwbGF0
Zm9ybXMgaGVyZSBvbmNlCi0gICAgICAgICAgICAjIHdrYnVpbGQuX3Nob3VsZF9maWxlX3RyaWdn
ZXJfYnVpbGQgaXMgaW1wbGVtZW50ZWQgZm9yIHRoZW0uCi0gICAgICAgICAgICBmb3IgcGxhdGZv
cm0gaW4gWyJtYWMteW9zZW1pdGUiLCAibWFjLWVsY2FwaXRhbiIsICJtYWMtc2llcnJhIiwgIm1h
Yy1oaWdoc2llcnJhIiwgIm1hYy1tb2phdmUiLCAid2luIiwgImlvcy0xNCIsICJpb3Mtc2ltdWxh
dG9yLTE0IiwgInR2b3MtMTQiLCAidHZvcy1zaW11bGF0b3ItMTQiLCAid2F0Y2hvcy03IiwgIndh
dGNob3Mtc2ltdWxhdG9yLTciXToKLSAgICAgICAgICAgICAgICBzaG91bGRfYnVpbGQgPSBwbGF0
Zm9ybSBpbiBwbGF0Zm9ybXMgb3IgIioiIGluIHBsYXRmb3JtcwotICAgICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwod2tidWlsZC5zaG91bGRfYnVpbGQocGxhdGZvcm0sIGZpbGVzKSwgc2hv
dWxkX2J1aWxkLCAiJXMgc2hvdWxkJXMgaGF2ZSBidWlsdCBidXQgZGlkJXMgKGZpbGVzOiAlcyki
ICUgKHBsYXRmb3JtLCAiIiBpZiBzaG91bGRfYnVpbGQgZWxzZSAibid0IiwgIm4ndCIgaWYgc2hv
dWxkX2J1aWxkIGVsc2UgIiIsIHN0cihmaWxlcykpKQotCi0jIEZJWE1FOiBXZSBzaG91bGQgcnVu
IHRoaXMgZmlsZSBhcyBwYXJ0IG9mIHRlc3Qtcm0gLgotIyBVbmZvcnR1bmF0ZWx5IHRlc3Qtcm0g
IGN1cnJlbnRseSByZXF1aXJlcyB0aGF0IHVuaXR0ZXN0cwotIyBiZSBsb2NhdGVkIGluIGEgZGly
ZWN0b3J5IHdpdGggYSB2YWxpZCBtb2R1bGUgbmFtZS4KLSMgJ2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnJyBpcyBub3QgYSB2YWxpZCBtb2R1bGUgbmFtZSAoZHVlIHRvICcuJyBhbmQgJy0nKQotIyBz
byBmb3Igbm93IHRoaXMgaXMgYSBzdGFuZC1hbG9uZSB0ZXN0IGhhcm5lc3MuCi1pZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQpJbmRleDogVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZwkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnCShub25leGlzdGVudCkKClByb3BlcnR5IGNo
YW5nZXMgb246IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZwpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkRlbGV0ZWQ6IHN2bjppZ25vcmUKIyMgLTEgKzAsMCAjIwotcGFzc3dvcmRzLmpzb24KSW5k
ZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC13ZWJraXQtb3JnL2h0ZGlnZXN0cGFyc2VyX3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC13ZWJraXQtb3JnL2h0
ZGlnZXN0cGFyc2VyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1
cHBvcnQvYnVpbGQtd2Via2l0LW9yZy9odGRpZ2VzdHBhcnNlcl91bml0dGVzdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtODcsMTAgKzg3LDYgQEAgdXNlcjM6cmVhbG0gMzphMDVmNWEyMzM1ZTlkODdi
YmU3NWJiZTVlNQogIiIiKQogCiAKLSMgRklYTUU6IFdlIHNob3VsZCBydW4gdGhpcyBmaWxlIGFz
IHBhcnQgb2YgdGVzdC1ybSAuCi0jIFVuZm9ydHVuYXRlbHkgdGVzdC1ybSAgY3VycmVudGx5IHJl
cXVpcmVzIHRoYXQgdW5pdHRlc3RzCi0jIGJlIGxvY2F0ZWQgaW4gYSBkaXJlY3Rvcnkgd2l0aCBh
IHZhbGlkIG1vZHVsZSBuYW1lLgotIyAnYnVpbGQud2Via2l0Lm9yZy1jb25maWcnIGlzIG5vdCBh
IHZhbGlkIG1vZHVsZSBuYW1lIChkdWUgdG8gJy4nIGFuZCAnLScpCi0jIHNvIGZvciBub3cgdGhp
cyBpcyBhIHN0YW5kLWFsb25lIHRlc3QgaGFybmVzcy4KKyMgRklYTUU6IFdlIHNob3VsZCBydW4g
dGhpcyBmaWxlIGFzIHBhcnQgb2YgdGVzdC13ZWJraXRweQogaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC13
ZWJraXQtb3JnL3N0ZXBzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC13
ZWJraXQtb3JnL3N0ZXBzLnB5CShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQv
YnVpbGQtd2Via2l0LW9yZy9zdGVwcy5weQkod29ya2luZyBjb3B5KQpAQCAtNTYzLDcgKzU2Myw3
IEBAIGNsYXNzIFJ1bkRhc2hib2FyZFRlc3RzKFJ1bldlYktpdFRlc3RzKToKICAgICByZXN1bHRE
aXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oUnVuV2ViS2l0VGVzdHMucmVzdWx0RGlyZWN0b3J5LCAi
ZGFzaGJvYXJkLWxheW91dC10ZXN0LXJlc3VsdHMiKQogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgot
ICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWyItLWxheW91dC10ZXN0cy1k
aXJlY3RvcnkiLCAiLi9Ub29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMiXSkKKyAgICAgICAgc2VsZi5zZXRDb21t
YW5kKHNlbGYuY29tbWFuZCArIFsiLS1sYXlvdXQtdGVzdHMtZGlyZWN0b3J5IiwgIi4vVG9vbHMv
Q0lTdXBwb3J0L2J1aWxkLXdlYmtpdC1vcmcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
dGVzdHMiXSkKICAgICAgICAgcmV0dXJuIFJ1bldlYktpdFRlc3RzLnN0YXJ0KHNlbGYpCiAKIApJ
bmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLXdlYmtpdC1vcmcvc3RlcHNfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLXdlYmtpdC1vcmcvc3RlcHNfdW5p
dHRlc3QucHkJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC13ZWJr
aXQtb3JnL3N0ZXBzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC02ODAsMTAgKzY4MCw2
IEBAIGNsYXNzIFJ1bkJlbmNobWFya1Rlc3QodW5pdHRlc3QuVGVzdENhc2UKIAogCiAjIEZJWE1F
OiBXZSBzaG91bGQgcnVuIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIHRlc3Qtd2Via2l0cHkuCi0jIFVu
Zm9ydHVuYXRlbHkgdGVzdC13ZWJraXRweSBjdXJyZW50bHkgcmVxdWlyZXMgdGhhdCB1bml0dGVz
dHMKLSMgYmUgbG9jYXRlZCBpbiBhIGRpcmVjdG9yeSB3aXRoIGEgdmFsaWQgbW9kdWxlIG5hbWUu
Ci0jICdidWlsZC53ZWJraXQub3JnLWNvbmZpZycgaXMgbm90IGEgdmFsaWQgbW9kdWxlIG5hbWUg
KGR1ZSB0byAnLicgYW5kICctJykKLSMgc28gZm9yIG5vdyB0aGlzIGlzIGEgc3RhbmQtYWxvbmUg
dGVzdCBoYXJuZXNzLgogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBCdWlsZEJvdENv
bmZpZ0xvYWRlcigpLl9hZGRfZGVwZW5kZW50X21vZHVsZXNfdG9fc3lzX21vZHVsZXMoKQogICAg
IGZyb20gbG9hZENvbmZpZyBpbXBvcnQgKgpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLXdl
YmtpdC1vcmcvd2tidWlsZC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQt
d2Via2l0LW9yZy93a2J1aWxkLnB5CShyZXZpc2lvbiAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBv
cnQvYnVpbGQtd2Via2l0LW9yZy93a2J1aWxkLnB5CSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1
OSw3IEBAIGRlZiBfc2hvdWxkX2ZpbGVfdHJpZ2dlcl9idWlsZCh0YXJnZXRfcGwKICAgICAgICAg
KCJFeGFtcGxlcyIsIFtdKSwKICAgICAgICAgKCJQZXJmb3JtYW5jZVRlc3RzIiwgW10pLAogICAg
ICAgICAoIk1hbnVhbFRlc3RzIiwgW10pLAotICAgICAgICAoIlRvb2xzL0NJU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbCIsIFtdKSwKKyAgICAgICAgKCJUb29scy9D
SVN1cHBvcnQvYnVpbGQtd2Via2l0LW9yZy9wdWJsaWNfaHRtbCIsIFtdKSwKICAgICAgICAgKCJX
ZWJzaXRlcyIsIFtdKSwKICAgICAgICAgKCJvcGVuZ2wiLCBbXSksCiAgICAgICAgICgib3BlbnR5
cGUiLCBbXSksCkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQtd2Via2l0LW9yZy93a2J1aWxk
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9idWlsZC13ZWJraXQt
b3JnL3drYnVpbGRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3Vw
cG9ydC9idWlsZC13ZWJraXQtb3JnL3drYnVpbGRfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgU2hvdWxkQnVpbGRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KQogICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENh
Y2hlSU9TLm1tIl0sIFsiaW9zLTE0IiwgImlvcy1zaW11bGF0b3ItMTQiLCAidHZvcy0xNCIsICJ0
dm9zLXNpbXVsYXRvci0xNCIsICJ3YXRjaG9zLTciLCAid2F0Y2hvcy1zaW11bGF0b3ItNyJdKSwK
ICAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIiwg
IlNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oIl0sIFsibWFjLXlvc2Vt
aXRlIiwgIm1hYy1lbGNhcGl0YW4iLCAibWFjLXNpZXJyYSIsICJtYWMtaGlnaHNpZXJyYSIsICJt
YWMtbW9qYXZlIl0pLAogICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MubW0iLCAiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgi
XSwgWyJpb3MtMTQiLCAiaW9zLXNpbXVsYXRvci0xNCIsICJ0dm9zLTE0IiwgInR2b3Mtc2ltdWxh
dG9yLTE0IiwgIndhdGNob3MtNyIsICJ3YXRjaG9zLXNpbXVsYXRvci03Il0pLAotICAgICAgICAo
WyJUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVh
a3NWaWV3ZXIvTGVha3NWaWV3ZXIuanMiXSwgW10pLAorICAgICAgICAoWyJUb29scy9DSVN1cHBv
cnQvYnVpbGQtd2Via2l0LW9yZy9wdWJsaWNfaHRtbC9MZWFrc1ZpZXdlci9MZWFrc1ZpZXdlci5q
cyJdLCBbXSksCiAgICAgXQogCiAgICAgZGVmIHRlc3Rfc2hvdWxkX2J1aWxkKHNlbGYpOgpAQCAt
NzYsMTAgKzc2LDYgQEAgY2xhc3MgU2hvdWxkQnVpbGRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKQog
ICAgICAgICAgICAgICAgIHNob3VsZF9idWlsZCA9IHBsYXRmb3JtIGluIHBsYXRmb3JtcyBvciAi
KiIgaW4gcGxhdGZvcm1zCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3a2J1aWxk
LnNob3VsZF9idWlsZChwbGF0Zm9ybSwgZmlsZXMpLCBzaG91bGRfYnVpbGQsICIlcyBzaG91bGQl
cyBoYXZlIGJ1aWx0IGJ1dCBkaWQlcyAoZmlsZXM6ICVzKSIgJSAocGxhdGZvcm0sICIiIGlmIHNo
b3VsZF9idWlsZCBlbHNlICJuJ3QiLCAibid0IiBpZiBzaG91bGRfYnVpbGQgZWxzZSAiIiwgc3Ry
KGZpbGVzKSkpCiAKLSMgRklYTUU6IFdlIHNob3VsZCBydW4gdGhpcyBmaWxlIGFzIHBhcnQgb2Yg
dGVzdC1ybSAuCi0jIFVuZm9ydHVuYXRlbHkgdGVzdC1ybSAgY3VycmVudGx5IHJlcXVpcmVzIHRo
YXQgdW5pdHRlc3RzCi0jIGJlIGxvY2F0ZWQgaW4gYSBkaXJlY3Rvcnkgd2l0aCBhIHZhbGlkIG1v
ZHVsZSBuYW1lLgotIyAnYnVpbGQud2Via2l0Lm9yZy1jb25maWcnIGlzIG5vdCBhIHZhbGlkIG1v
ZHVsZSBuYW1lIChkdWUgdG8gJy4nIGFuZCAnLScpCi0jIHNvIGZvciBub3cgdGhpcyBpcyBhIHN0
YW5kLWFsb25lIHRlc3QgaGFybmVzcy4KKyMgRklYTUU6IFdlIHNob3VsZCBydW4gdGhpcyBmaWxl
IGFzIHBhcnQgb2YgdGVzdC13ZWJraXRweS4KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAg
ICAgdW5pdHRlc3QubWFpbigpCkluZGV4OiBUb29scy9DSVN1cHBvcnQvYnVpbGQtd2Via2l0LW9y
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9idWlsZGVyc191bml0dGVzdHMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLXdlYmtpdC1vcmcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvYnVpbGRlcnNfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiAy
NjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQtd2Via2l0LW9yZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvc2NyaXB0cy9idWlsZGVyc191bml0dGVzdHMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTkwLDcgKzkwLDcgQEAgdmFyIGtFeGFtcGxlV2ViS2l0RG90T3JnQnVpbGRlclN0YXR1c0pT
TwogdmFyIGtFeGFtcGxlQnVpbGRJbmZvSlNPTiA9IHsKICAgICAiYmxhbWUiOiBbImFiYXJ0aEB3
ZWJraXQub3JnIl0sCiAgICAgImJ1aWxkZXJOYW1lIjogIldlYktpdCBMaW51eCIsCi0gICAgImNo
YW5nZXMiOiBbIkZpbGVzOlxuIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qc1xuIFRvb2xzL0NoYW5nZUxvZ1xuQXQ6
IFRodSAwNCBBdWcgMjAxMSAwMDo1MDozOFxuQ2hhbmdlZCBCeTogYWJhcnRoQHdlYmtpdC5vcmdc
bkNvbW1lbnRzOiBGaXggdHlwZXMuICBTYWRseSwgbWFpbi5qcyBoYXMgbm8gdGVzdCBjb3ZlcmFn
ZS4gIChJIG5lZWQgdG8gdGhpbmtcbmFib3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFydCBvZiB0aGUg
Y29kZS4pXG5cbiogQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9tYWluLmpzOlByb3BlcnRpZXM6IFxuXG5cbiIsICJGaWxlczpcbiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2dcbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFz
dC9ib3gtc2hhZG93L2luc2V0LWJveC1zaGFkb3dzLWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6
b250YWwtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zh
c3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LWhvcml6b250YWwtZXhwZWN0ZWQucG5n
XG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ct
bXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4
cGVjdGVkLnBuZ1xuQXQ6IFRodSAwNCBBdWcgMjAxMSAwMDo1MDozOFxuQ2hhbmdlZCBCeTogYWJh
cnRoQHdlYmtpdC5vcmdcbkNvbW1lbnRzOiBVcGRhdGUgYmFzZWxpbmVzIGFmdGVyIDxodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM0MD4uXG5cbiogcGxhdGZvcm0vY2hyb21pdW0t
bWFjL2Zhc3QvYm94LXNoYWRvdy9pbnNldC1ib3gtc2hhZG93cy1leHBlY3RlZC5wbmc6XG4qIHBs
YXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6b250
YWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3No
YWRvdy1tdWx0aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3Jt
L2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC12ZXJ0aWNh
bC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hh
ZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpQcm9wZXJ0aWVzOiBcblxuXG4iXSwK
KyAgICAiY2hhbmdlcyI6IFsiRmlsZXM6XG4gVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLXdlYmtpdC1v
cmcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanNcbiBUb29scy9DaGFuZ2VMb2dcbkF0
OiBUaHUgMDQgQXVnIDIwMTEgMDA6NTA6MzhcbkNoYW5nZWQgQnk6IGFiYXJ0aEB3ZWJraXQub3Jn
XG5Db21tZW50czogRml4IHR5cGVzLiAgU2FkbHksIG1haW4uanMgaGFzIG5vIHRlc3QgY292ZXJh
Z2UuICAoSSBuZWVkIHRvIHRoaW5rXG5hYm91dCBob3cgdG8gdGVzdCB0aGlzIHBhcnQgb2YgdGhl
IGNvZGUuKVxuXG4qIENJU3VwcG9ydC9idWlsZC13ZWJraXQtb3JnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9tYWluLmpzOlByb3BlcnRpZXM6IFxuXG5cbiIsICJGaWxlczpcbiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2dcbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gt
c2hhZG93L2luc2V0LWJveC1zaGFkb3dzLWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6b250YWwt
ZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVw
YWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LWhvcml6b250YWwtZXhwZWN0ZWQucG5nXG4gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlw
bGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVk
LnBuZ1xuQXQ6IFRodSAwNCBBdWcgMjAxMSAwMDo1MDozOFxuQ2hhbmdlZCBCeTogYWJhcnRoQHdl
YmtpdC5vcmdcbkNvbW1lbnRzOiBVcGRhdGUgYmFzZWxpbmVzIGFmdGVyIDxodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC85MjM0MD4uXG5cbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zh
c3QvYm94LXNoYWRvdy9pbnNldC1ib3gtc2hhZG93cy1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3Jt
L2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhw
ZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1t
dWx0aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9t
aXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC12ZXJ0aWNhbC1leHBl
Y3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11
bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpQcm9wZXJ0aWVzOiBcblxuXG4iXSwKICAgICAi
Y3VycmVudFN0ZXAiOiBudWxsLAogICAgICJldGEiOiBudWxsLAogICAgICJsb2dzIjogWwpAQCAt
MTI3LDggKzEyNyw4IEBAIHZhciBrRXhhbXBsZUJ1aWxkSW5mb0pTT04gPSB7CiAgICAgICAgICAg
ICAiY2hhbmdlcyI6IFt7CiAgICAgICAgICAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCiAgICAg
ICAgICAgICAgICAgImNhdGVnb3J5IjogbnVsbCwKLSAgICAgICAgICAgICAgICAiY29tbWVudHMi
OiAiRml4IHR5cGVzLiAgU2FkbHksIG1haW4uanMgaGFzIG5vIHRlc3QgY292ZXJhZ2UuICAoSSBu
ZWVkIHRvIHRoaW5rXG5hYm91dCBob3cgdG8gdGVzdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuKVxu
XG4qIENJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvbWFpbi5qczoiLAotICAgICAgICAgICAgICAgICJmaWxlcyI6IFsiVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWlu
LmpzIiwgIlRvb2xzL0NoYW5nZUxvZyJdLAorICAgICAgICAgICAgICAgICJjb21tZW50cyI6ICJG
aXggdHlwZXMuICBTYWRseSwgbWFpbi5qcyBoYXMgbm8gdGVzdCBjb3ZlcmFnZS4gIChJIG5lZWQg
dG8gdGhpbmtcbmFib3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFydCBvZiB0aGUgY29kZS4pXG5cbiog
Q0lTdXBwb3J0L2J1aWxkLXdlYmtpdC1vcmcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4u
anM6IiwKKyAgICAgICAgICAgICAgICAiZmlsZXMiOiBbIlRvb2xzL0NJU3VwcG9ydC9idWlsZC13
ZWJraXQtb3JnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzIiwgIlRvb2xzL0NoYW5n
ZUxvZyJdLAogICAgICAgICAgICAgICAgICJudW1iZXIiOiA0MzcwNywKICAgICAgICAgICAgICAg
ICAicHJvcGVydGllcyI6IFtdLAogICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIiIsCkBA
IC0xNjEsOCArMTYxLDggQEAgdmFyIGtFeGFtcGxlQnVpbGRJbmZvSlNPTiA9IHsKICAgICAgICAg
ImNoYW5nZXMiOiBbewogICAgICAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCiAgICAgICAgICAg
ICAiY2F0ZWdvcnkiOiBudWxsLAotICAgICAgICAgICAgImNvbW1lbnRzIjogIkZpeCB0eXBlcy4g
IFNhZGx5LCBtYWluLmpzIGhhcyBubyB0ZXN0IGNvdmVyYWdlLiAgKEkgbmVlZCB0byB0aGlua1xu
YWJvdXQgaG93IHRvIHRlc3QgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlLilcblxuKiBDSVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanM6
IiwKLSAgICAgICAgICAgICJmaWxlcyI6IFsiVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzIiwgIlRvb2xzL0NoYW5n
ZUxvZyJdLAorICAgICAgICAgICAgImNvbW1lbnRzIjogIkZpeCB0eXBlcy4gIFNhZGx5LCBtYWlu
LmpzIGhhcyBubyB0ZXN0IGNvdmVyYWdlLiAgKEkgbmVlZCB0byB0aGlua1xuYWJvdXQgaG93IHRv
IHRlc3QgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlLilcblxuKiBDSVN1cHBvcnQvYnVpbGQtd2Via2l0
LW9yZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qczoiLAorICAgICAgICAgICAgImZp
bGVzIjogWyJUb29scy9DSVN1cHBvcnQvYnVpbGQtd2Via2l0LW9yZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvbWFpbi5qcyIsICJUb29scy9DaGFuZ2VMb2ciXSwKICAgICAgICAgICAgICJudW1i
ZXIiOiA0MzcwNywKICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogW10sCiAgICAgICAgICAgICAi
cmVwb3NpdG9yeSI6ICIiLApAQCAtNzE1LDcgKzcxNSw3IEBAIHZhciBrRXhhbXBsZVBlcmZCdWls
ZGVyU3RhdHVzSlNPTiA9ICB7CiB2YXIga0V4YW1wbGVQZXJmQnVpbGRJbmZvSlNPTiA9IHsKICAg
ICAiYmxhbWUiOiBbImFiYXJ0aEB3ZWJraXQub3JnIl0sCiAgICAgImJ1aWxkZXJOYW1lIjogIk1h
YzEwLjYgUGVyZiIsCi0gICAgImNoYW5nZXMiOiBbIkZpbGVzOlxuIFRvb2xzL0NJU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qc1xu
IFRvb2xzL0NoYW5nZUxvZ1xuQXQ6IFRodSAwNCBBdWcgMjAxMSAwMDo1MDozOFxuQ2hhbmdlZCBC
eTogYWJhcnRoQHdlYmtpdC5vcmdcbkNvbW1lbnRzOiBGaXggdHlwZXMuICBTYWRseSwgbWFpbi5q
cyBoYXMgbm8gdGVzdCBjb3ZlcmFnZS4gIChJIG5lZWQgdG8gdGhpbmtcbmFib3V0IGhvdyB0byB0
ZXN0IHRoaXMgcGFydCBvZiB0aGUgY29kZS4pXG5cbiogQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzOlByb3BlcnRpZXM6IFxu
XG5cbiIsICJGaWxlczpcbiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2dcbiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJveC1zaGFkb3dzLWV4cGVj
dGVkLnBuZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQv
c2hhZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LWhv
cml6b250YWwtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFj
L2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBu
Z1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93
LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZ1xuQXQ6IFRodSAwNCBBdWcgMjAxMSAwMDo1
MDozOFxuQ2hhbmdlZCBCeTogYWJhcnRoQHdlYmtpdC5vcmdcbkNvbW1lbnRzOiBVcGRhdGUgYmFz
ZWxpbmVzIGFmdGVyIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM0MD4uXG5c
biogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9pbnNldC1ib3gtc2hhZG93
cy1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hh
ZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1
bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBl
Y3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11
bHRpcGxlLXN0cmljdC12ZXJ0aWNhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVt
LW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpQ
cm9wZXJ0aWVzOiBcblxuXG4iXSwKKyAgICAiY2hhbmdlcyI6IFsiRmlsZXM6XG4gVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLXdlYmtpdC1vcmcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanNc
biBUb29scy9DaGFuZ2VMb2dcbkF0OiBUaHUgMDQgQXVnIDIwMTEgMDA6NTA6MzhcbkNoYW5nZWQg
Qnk6IGFiYXJ0aEB3ZWJraXQub3JnXG5Db21tZW50czogRml4IHR5cGVzLiAgU2FkbHksIG1haW4u
anMgaGFzIG5vIHRlc3QgY292ZXJhZ2UuICAoSSBuZWVkIHRvIHRoaW5rXG5hYm91dCBob3cgdG8g
dGVzdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuKVxuXG4qIENJU3VwcG9ydC9idWlsZC13ZWJraXQt
b3JnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzOlByb3BlcnRpZXM6IFxuXG5cbiIs
ICJGaWxlczpcbiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2dcbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJveC1zaGFkb3dzLWV4cGVjdGVkLnBu
Z1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93
LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LWhvcml6b250
YWwtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3Qv
cmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBuZ1xuIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRp
cGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZ1xuQXQ6IFRodSAwNCBBdWcgMjAxMSAwMDo1MDozOFxu
Q2hhbmdlZCBCeTogYWJhcnRoQHdlYmtpdC5vcmdcbkNvbW1lbnRzOiBVcGRhdGUgYmFzZWxpbmVz
IGFmdGVyIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM0MD4uXG5cbiogcGxh
dGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9pbnNldC1ib3gtc2hhZG93cy1leHBl
Y3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11
bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMv
ZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBlY3RlZC5w
bmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxl
LXN0cmljdC12ZXJ0aWNhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9m
YXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpQcm9wZXJ0
aWVzOiBcblxuXG4iXSwKICAgICAiY3VycmVudFN0ZXAiOiBudWxsLAogICAgICJldGEiOiBudWxs
LAogICAgICJsb2dzIjogWwpAQCAtNzUyLDggKzc1Miw4IEBAIHZhciBrRXhhbXBsZVBlcmZCdWls
ZEluZm9KU09OID0gewogICAgICAgICAgICAgImNoYW5nZXMiOiBbewogICAgICAgICAgICAgICAg
ICJicmFuY2giOiAidHJ1bmsiLAogICAgICAgICAgICAgICAgICJjYXRlZ29yeSI6IG51bGwsCi0g
ICAgICAgICAgICAgICAgImNvbW1lbnRzIjogIkZpeCB0eXBlcy4gIFNhZGx5LCBtYWluLmpzIGhh
cyBubyB0ZXN0IGNvdmVyYWdlLiAgKEkgbmVlZCB0byB0aGlua1xuYWJvdXQgaG93IHRvIHRlc3Qg
dGhpcyBwYXJ0IG9mIHRoZSBjb2RlLilcblxuKiBDSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanM6IiwKLSAgICAgICAgICAgICAg
ICAiZmlsZXMiOiBbIlRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qcyIsICJUb29scy9DaGFuZ2VMb2ciXSwKKyAgICAg
ICAgICAgICAgICAiY29tbWVudHMiOiAiRml4IHR5cGVzLiAgU2FkbHksIG1haW4uanMgaGFzIG5v
IHRlc3QgY292ZXJhZ2UuICAoSSBuZWVkIHRvIHRoaW5rXG5hYm91dCBob3cgdG8gdGVzdCB0aGlz
IHBhcnQgb2YgdGhlIGNvZGUuKVxuXG4qIENJU3VwcG9ydC9idWlsZC13ZWJraXQtb3JnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzOiIsCisgICAgICAgICAgICAgICAgImZpbGVzIjog
WyJUb29scy9DSVN1cHBvcnQvYnVpbGQtd2Via2l0LW9yZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvbWFpbi5qcyIsICJUb29scy9DaGFuZ2VMb2ciXSwKICAgICAgICAgICAgICAgICAibnVtYmVy
IjogNDM3MDcsCiAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbXSwKICAgICAgICAgICAg
ICAgICAicmVwb3NpdG9yeSI6ICIiLApAQCAtNzg2LDggKzc4Niw4IEBAIHZhciBrRXhhbXBsZVBl
cmZCdWlsZEluZm9KU09OID0gewogICAgICAgICAiY2hhbmdlcyI6IFt7CiAgICAgICAgICAgICAi
YnJhbmNoIjogInRydW5rIiwKICAgICAgICAgICAgICJjYXRlZ29yeSI6IG51bGwsCi0gICAgICAg
ICAgICAiY29tbWVudHMiOiAiRml4IHR5cGVzLiAgU2FkbHksIG1haW4uanMgaGFzIG5vIHRlc3Qg
Y292ZXJhZ2UuICAoSSBuZWVkIHRvIHRoaW5rXG5hYm91dCBob3cgdG8gdGVzdCB0aGlzIHBhcnQg
b2YgdGhlIGNvZGUuKVxuXG4qIENJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qczoiLAotICAgICAgICAgICAgImZpbGVzIjogWyJU
b29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL21haW4uanMiLCAiVG9vbHMvQ2hhbmdlTG9nIl0sCisgICAgICAgICAgICAiY29tbWVu
dHMiOiAiRml4IHR5cGVzLiAgU2FkbHksIG1haW4uanMgaGFzIG5vIHRlc3QgY292ZXJhZ2UuICAo
SSBuZWVkIHRvIHRoaW5rXG5hYm91dCBob3cgdG8gdGVzdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUu
KVxuXG4qIENJU3VwcG9ydC9idWlsZC13ZWJraXQtb3JnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9tYWluLmpzOiIsCisgICAgICAgICAgICAiZmlsZXMiOiBbIlRvb2xzL0NJU3VwcG9ydC9idWls
ZC13ZWJraXQtb3JnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzIiwgIlRvb2xzL0No
YW5nZUxvZyJdLAogICAgICAgICAgICAgIm51bWJlciI6IDQzNzA3LAogICAgICAgICAgICAgInBy
b3BlcnRpZXMiOiBbXSwKICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIiIsCkluZGV4OiBUb29s
cy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3Vw
cG9ydC9ld3MtYnVpbGQvc3RlcHMucHkJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL0NJU3Vw
cG9ydC9ld3MtYnVpbGQvc3RlcHMucHkJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw3ICsyNTUsNyBA
QCBjbGFzcyBDaGVja1BhdGNoUmVsZXZhbmNlKGJ1aWxkc3RlcC5CdWlsCiAgICAgXQogCiAgICAg
c2VydmljZXNfcGF0aHMgPSBbCi0gICAgICAgICdUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcnLAorICAgICAgICAnVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLXdlYmtpdC1vcmcn
LAogICAgICAgICAnVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZCcsCiAgICAgICAgICdUb29scy9D
SVN1cHBvcnQvU2hhcmVkJywKICAgICAgICAgJ1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5JywKQEAgLTExMjUsNyArMTEyNSw3IEBAIGNsYXNzIFJ1bkJ1aWxkV2ViS2l0T3JnVW5p
dFRlc3RzKHNoZWxsLlMKICAgICBjb21tYW5kID0gWydweXRob24nLCAnc3RlcHNfdW5pdHRlc3Qu
cHknXQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc2hlbGwu
U2hlbGxDb21tYW5kLl9faW5pdF9fKHNlbGYsIHdvcmtkaXI9J2J1aWxkL1Rvb2xzL0NJU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZycsIHRpbWVvdXQ9MiAqIDYwLCBsb2dFbnZpcm9uPUZh
bHNlLCAqKmt3YXJncykKKyAgICAgICAgc2hlbGwuU2hlbGxDb21tYW5kLl9faW5pdF9fKHNlbGYs
IHdvcmtkaXI9J2J1aWxkL1Rvb2xzL0NJU3VwcG9ydC9idWlsZC13ZWJraXQtb3JnJywgdGltZW91
dD0yICogNjAsIGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQogCiAgICAgZGVmIGdldFJlc3Vs
dFN1bW1hcnkoc2VsZik6CiAgICAgICAgIGlmIHNlbGYucmVzdWx0cyA9PSBTVUNDRVNTOgpJbmRl
eDogVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwc191bml0dGVzdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyNjkxMTEpCisrKyBUb29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC03MzQsNyArNzM0LDcgQEAgY2xhc3MgVGVzdFJ1bkJ1aWxkV2Vi
S2l0T3JnVW5pdFRlc3RzKEJ1aQogICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CiAgICAgICAg
IHNlbGYuc2V0dXBTdGVwKFJ1bkJ1aWxkV2ViS2l0T3JnVW5pdFRlc3RzKCkpCiAgICAgICAgIHNl
bGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGly
PSdidWlsZC9Ub29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcnLAorICAgICAg
ICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nYnVpbGQvVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLXdl
YmtpdC1vcmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0xMjAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgY29tbWFuZD1bJ3B5dGhvbicsICdzdGVwc191bml0dGVzdC5weSddLApAQCAtNzQ3LDcgKzc0
Nyw3IEBAIGNsYXNzIFRlc3RSdW5CdWlsZFdlYktpdE9yZ1VuaXRUZXN0cyhCdWkKICAgICBkZWYg
dGVzdF9mYWlsdXJlKHNlbGYpOgogICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5CdWlsZFdlYktp
dE9yZ1VuaXRUZXN0cygpKQogICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAg
ICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nYnVpbGQvVG9vbHMvQ0lTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnJywKKyAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J2J1
aWxkL1Rvb2xzL0NJU3VwcG9ydC9idWlsZC13ZWJraXQtb3JnJywKICAgICAgICAgICAgICAgICAg
ICAgICAgIHRpbWVvdXQ9MTIwLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1G
YWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnc3RlcHNf
dW5pdHRlc3QucHknXSwKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWRhc2hib2FyZC10ZXN0cwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1kYXNoYm9hcmQtdGVzdHMJKHJldmlzaW9u
IDI2OTExMSkKKysrIFRvb2xzL1NjcmlwdHMvcnVuLWRhc2hib2FyZC10ZXN0cwkod29ya2luZyBj
b3B5KQpAQCAtMjUsNiArMjUsNiBAQAogCiBUT09MU19ESVJFQ1RPUlk9IiQoZGlybmFtZSAkMCki
CiBSVU5fV0VCS0lUX1RFU1RTPSIkVE9PTFNfRElSRUNUT1JZL3J1bi13ZWJraXQtdGVzdHMiCi1U
RVNUX0RJUkVDVE9SWT0iJFRPT0xTX0RJUkVDVE9SWS8uLi9DSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMiCitURVNUX0RJ
UkVDVE9SWT0iJFRPT0xTX0RJUkVDVE9SWS8uLi9DSVN1cHBvcnQvYnVpbGQtd2Via2l0LW9yZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cyIKIAogJFJVTl9XRUJLSVRfVEVTVFMg
LS1sYXlvdXQtdGVzdHMtZGlyZWN0b3J5PSRURVNUX0RJUkVDVE9SWSAiJEAiCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9idWlsZGJvdF9yZXN1bHRzLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdz
L2J1aWxkYm90X3Jlc3VsdHMucHkJKHJldmlzaW9uIDI2OTExMSkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL2J1aWxkYm90X3Jlc3VsdHMucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDcgKzM5LDcgQEAgVGVzdEV4cGVjdGF0aW9uUGFyc2VyID0gdGVzdF9leHBl
Y3RhdGlvbgogCiBjbGFzcyBCdWlsZEJvdFByaW50ZXIob2JqZWN0KToKICAgICAjIFRoaXMgb3V0
cHV0IGlzIHBhcnNlZCBieSBidWlsZGJvdHMgYW5kIG11c3Qgb25seSBiZSBjaGFuZ2VkIGluIGNv
b3JkaW5hdGlvbiB3aXRoIGJ1aWxkYm90IHNjcmlwdHMgKHNlZSB3ZWJraXQub3JnJ3MKLSAgICAj
IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXIuY2ZnOiBSdW5X
ZWJLaXRUZXN0cy5fcGFyc2VOZXdSdW5XZWJLaXRUZXN0c091dHB1dAorICAgICMgVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLXdlYmtpdC1vcmcvbWFzdGVyLmNmZzogUnVuV2ViS2l0VGVzdHMuX3BhcnNl
TmV3UnVuV2ViS2l0VGVzdHNPdXRwdXQKICAgICAjIGFuZCBjaHJvbWl1bS5vcmcncyBidWlsZGJv
dC9tYXN0ZXIuY2hyb21pdW0vc2NyaXB0cy9tYXN0ZXIvbG9nX3BhcnNlci93ZWJraXRfdGVzdF9j
b21tYW5kLnB5KS4KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW0sIGRlYnVnX2xvZ2dp
bmcpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91
bml0dGVzdC5weQkocmV2aXNpb24gMjY5MTExKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC01MDEsNyArNTAxLDcg
QEAgY2xhc3MgQ2hlY2tlckRpc3BhdGNoZXJEaXNwYXRjaFRlc3QodW5pdAogICAgICAgICAiIiJU
ZXN0IHBhdGhzIHRoYXQgc2hvdWxkIGJlIGNoZWNrZWQgYXMgSlNPTi4iIiIKICAgICAgICAgcGF0
aHMgPSBbCiAgICAgICAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAnaW5z
cGVjdG9yJywgJ0luc3BlY3Rvci5qc29uJyksCi0gICAgICAgICAgIG9zLnBhdGguam9pbignVG9v
bHMnLCAnQ0lTdXBwb3J0JywgJ2J1aWxkLndlYmtpdC5vcmctY29uZmlnJywgJ2NvbmZpZy5qc29u
JyksCisgICAgICAgICAgIG9zLnBhdGguam9pbignVG9vbHMnLCAnQ0lTdXBwb3J0JywgJ2J1aWxk
LXdlYmtpdC1vcmcnLCAnY29uZmlnLmpzb24nKSwKICAgICAgICAgXQogCiAgICAgICAgIGZvciBw
YXRoIGluIHBhdGhzOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMv
Z2FyZGVuaW5nc2VydmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlci5weQkocmV2aXNpb24gMjY5MTExKQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIEdhcmRlbmluZ0hUVFBSZXF1ZXN0SGFu
ZGxlcihSZWZsZWMKICAgICAgICAgJy4uJywKICAgICAgICAgJy4uJywKICAgICAgICAgJ0NJU3Vw
cG9ydCcsCi0gICAgICAgICdidWlsZC53ZWJraXQub3JnLWNvbmZpZycsCisgICAgICAgICdidWls
ZC13ZWJraXQtb3JnJywKICAgICAgICAgJ3B1YmxpY19odG1sJywKICAgICAgICAgJ1Rlc3RGYWls
dXJlcycpCiAK
</data>
<flag name="review"
          id="429034"
          type_id="1"
          status="+"
          setter="jbedard"
    />
          </attachment>
      

    </bug>

</bugzilla>