<?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>27302</bug_id>
          
          <creation_ts>2009-07-15 09:04:29 -0700</creation_ts>
          <short_desc>Move cpplint.py to module directory</short_desc>
          <delta_ts>2009-07-15 10:10:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Shinichiro Hamaji">hamaji</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>131909</commentid>
    <comment_count>0</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-07-15 09:04:29 -0700</bug_when>
    <thetext>We should move cpplint.py from WebKitTools/Scripts to WebKitTools/Script/modules . We&apos;ll create a frontend for this module.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131910</commentid>
    <comment_count>1</comment_count>
      <attachid>32788</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-07-15 09:05:52 -0700</bug_when>
    <thetext>Created attachment 32788
Patch v1


---
 5 files changed, 5785 insertions(+), 5775 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131934</commentid>
    <comment_count>2</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-15 10:10:50 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/45920</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32788</attachid>
            <date>2009-07-15 09:05:52 -0700</date>
            <delta_ts>2009-07-15 10:02:02 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-27302-20090716010550.patch</filename>
            <type>text/plain</type>
            <size>508430</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBiYjU0ZDk0Li5jZWEwN2JhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMDct
MTUgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGNwcGxpbnQucHkgdG8g
bW9kdWxlIGRpcmVjdG9yeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjczMDIKKworICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9jcHBsaW50LnB5OiBS
ZW5hbWVkIGZyb20gV2ViS2l0VG9vbHMvU2NyaXB0cy9jcHBsaW50LnB5LgorICAgICAgICAqIFNj
cmlwdHMvbW9kdWxlcy9jcHBsaW50X3VuaXR0ZXN0LnB5OiBSZW5hbWVkIGZyb20gV2ViS2l0VG9v
bHMvU2NyaXB0cy9jcHBsaW50X3VuaXR0ZXN0LnB5LgorCiAyMDA5LTA3LTE1ICBab2x0YW4gSG9y
dmF0aCAgPGh6b2x0YW5AaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEph
biBBbG9uem8uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL2NwcGxpbnQucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL2NwcGxpbnQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDE4NTQ5MjEuLjAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9jcHBsaW50LnB5
CisrKyAvZGV2L251bGwKQEAgLTEsMjgyNSArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIwot
IyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLSMgVGhpcyBpcyB0aGUgbW9kaWZpZWQgdmVyc2lvbiBvZiBHb29nbGUn
cyBjcHBsaW50LiBUaGUgb3JpZ2luYWwgY29kZSBpcwotIyBodHRwOi8vZ29vZ2xlLXN0eWxlZ3Vp
ZGUuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcGxpbnQvY3BwbGludC5weQotCi0iIiJEb2Vz
IFdlYktpdC1saW50IG9uIGMrKyBmaWxlcy4KLQotVGhlIGdvYWwgb2YgdGhpcyBzY3JpcHQgaXMg
dG8gaWRlbnRpZnkgcGxhY2VzIGluIHRoZSBjb2RlIHRoYXQgKm1heSoKLWJlIGluIG5vbi1jb21w
bGlhbmNlIHdpdGggV2ViS2l0IHN0eWxlLiAgSXQgZG9lcyBub3QgYXR0ZW1wdCB0byBmaXgKLXVw
IHRoZXNlIHByb2JsZW1zIC0tIHRoZSBwb2ludCBpcyB0byBlZHVjYXRlLiAgSXQgZG9lcyBhbHNv
IG5vdAotYXR0ZW1wdCB0byBmaW5kIGFsbCBwcm9ibGVtcywgb3IgdG8gZW5zdXJlIHRoYXQgZXZl
cnl0aGluZyBpdCBkb2VzCi1maW5kIGlzIGxlZ2l0aW1hdGVseSBhIHByb2JsZW0uCi0KLUluIHBh
cnRpY3VsYXIsIHdlIGNhbiBnZXQgdmVyeSBjb25mdXNlZCBieSAvKiBhbmQgLy8gaW5zaWRlIHN0
cmluZ3MhCi1XZSBkbyBhIHNtYWxsIGhhY2ssIHdoaWNoIGlzIHRvIGlnbm9yZSAvLydzIHdpdGgg
IidzIGFmdGVyIHRoZW0gb24gdGhlCi1zYW1lIGxpbmUsIGJ1dCBpdCBpcyBmYXIgZnJvbSBwZXJm
ZWN0IChpbiBlaXRoZXIgZGlyZWN0aW9uKS4KLSIiIgotCi1pbXBvcnQgY29kZWNzCi1pbXBvcnQg
Z2V0b3B0Ci1pbXBvcnQgbWF0aCAgIyBmb3IgbG9nCi1pbXBvcnQgb3MKLWltcG9ydCBvcy5wYXRo
Ci1pbXBvcnQgcmUKLWltcG9ydCBzcmVfY29tcGlsZQotaW1wb3J0IHN0cmluZwotaW1wb3J0IHN5
cwotaW1wb3J0IHVuaWNvZGVkYXRhCi0KLQotX1VTQUdFID0gIiIiCi1TeW50YXg6IGNwcGxpbnQu
cHkgWy0tdmVyYm9zZT0jXSBbLS1vdXRwdXQ9dnM3XSBbLS1maWx0ZXI9LXgsK3ksLi4uXQotICAg
ICAgICA8ZmlsZT4gW2ZpbGVdIC4uLgotCi0gIFRoZSBzdHlsZSBndWlkZWxpbmVzIHRoaXMgdHJp
ZXMgdG8gZm9sbG93IGFyZSB0aG9zZSBpbgotICAgIGh0dHA6Ly93ZWJraXQub3JnL2NvZGluZy9j
b2Rpbmctc3R5bGUuaHRtbAotCi0gIEV2ZXJ5IHByb2JsZW0gaXMgZ2l2ZW4gYSBjb25maWRlbmNl
IHNjb3JlIGZyb20gMS01LCB3aXRoIDUgbWVhbmluZyB3ZSBhcmUKLSAgY2VydGFpbiBvZiB0aGUg
cHJvYmxlbSwgYW5kIDEgbWVhbmluZyBpdCBjb3VsZCBiZSBhIGxlZ2l0aW1hdGUgY29uc3RydWN0
LgotICBUaGlzIHdpbGwgbWlzcyBzb21lIGVycm9ycywgYW5kIGlzIG5vdCBhIHN1YnN0aXR1dGUg
Zm9yIGEgY29kZSByZXZpZXcuCi0KLSAgVG8gcHJldmVudCBzcGVjaWZpYyBsaW5lcyBmcm9tIGJl
aW5nIGxpbnRlZCwgYWRkIGEgJy8vIE5PTElOVCcgY29tbWVudCB0byB0aGUKLSAgZW5kIG9mIHRo
ZSBsaW5lLgotCi0gIFRoZSBmaWxlcyBwYXNzZWQgaW4gd2lsbCBiZSBsaW50ZWQ7IGF0IGxlYXN0
IG9uZSBmaWxlIG11c3QgYmUgcHJvdmlkZWQuCi0gIExpbnRlZCBleHRlbnNpb25zIGFyZSAuY2Ms
IC5jcHAsIGFuZCAuaC4gIE90aGVyIGZpbGUgdHlwZXMgd2lsbCBiZSBpZ25vcmVkLgotCi0gIEZs
YWdzOgotCi0gICAgb3V0cHV0PXZzNwotICAgICAgQnkgZGVmYXVsdCwgdGhlIG91dHB1dCBpcyBm
b3JtYXR0ZWQgdG8gZWFzZSBlbWFjcyBwYXJzaW5nLiAgVmlzdWFsIFN0dWRpbwotICAgICAgY29t
cGF0aWJsZSBvdXRwdXQgKHZzNykgbWF5IGFsc28gYmUgdXNlZC4gIE90aGVyIGZvcm1hdHMgYXJl
IHVuc3VwcG9ydGVkLgotCi0gICAgdmVyYm9zZT0jCi0gICAgICBTcGVjaWZ5IGEgbnVtYmVyIDAt
NSB0byByZXN0cmljdCBlcnJvcnMgdG8gY2VydGFpbiB2ZXJib3NpdHkgbGV2ZWxzLgotCi0gICAg
ZmlsdGVyPS14LCt5LC4uLgotICAgICAgU3BlY2lmeSBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9m
IGNhdGVnb3J5LWZpbHRlcnMgdG8gYXBwbHk6IG9ubHkKLSAgICAgIGVycm9yIG1lc3NhZ2VzIHdo
b3NlIGNhdGVnb3J5IG5hbWVzIHBhc3MgdGhlIGZpbHRlcnMgd2lsbCBiZSBwcmludGVkLgotICAg
ICAgKENhdGVnb3J5IG5hbWVzIGFyZSBwcmludGVkIHdpdGggdGhlIG1lc3NhZ2UgYW5kIGxvb2sg
bGlrZQotICAgICAgIlt3aGl0ZXNwYWNlL2luZGVudF0iLikgIEZpbHRlcnMgYXJlIGV2YWx1YXRl
ZCBsZWZ0IHRvIHJpZ2h0LgotICAgICAgIi1GT08iIGFuZCAiRk9PIiBtZWFucyAiZG8gbm90IHBy
aW50IGNhdGVnb3JpZXMgdGhhdCBzdGFydCB3aXRoIEZPTyIuCi0gICAgICAiK0ZPTyIgbWVhbnMg
ImRvIHByaW50IGNhdGVnb3JpZXMgdGhhdCBzdGFydCB3aXRoIEZPTyIuCi0KLSAgICAgIEV4YW1w
bGVzOiAtLWZpbHRlcj0td2hpdGVzcGFjZSwrd2hpdGVzcGFjZS9icmFjZXMKLSAgICAgICAgICAg
ICAgICAtLWZpbHRlcj13aGl0ZXNwYWNlLHJ1bnRpbWUvcHJpbnRmLCtydW50aW1lL3ByaW50Zl9m
b3JtYXQKLSAgICAgICAgICAgICAgICAtLWZpbHRlcj0tLCtidWlsZC9pbmNsdWRlX3doYXRfeW91
X3VzZQotCi0gICAgICBUbyBzZWUgYSBsaXN0IG9mIGFsbCB0aGUgY2F0ZWdvcmllcyB1c2VkIGlu
IGNwcGxpbnQsIHBhc3Mgbm8gYXJnOgotICAgICAgICAgLS1maWx0ZXI9Ci0iIiIKLQotIyBXZSBj
YXRlZ29yaXplIGVhY2ggZXJyb3IgbWVzc2FnZSB3ZSBwcmludC4gIEhlcmUgYXJlIHRoZSBjYXRl
Z29yaWVzLgotIyBXZSB3YW50IGFuIGV4cGxpY2l0IGxpc3Qgc28gd2UgY2FuIGxpc3QgdGhlbSBh
bGwgaW4gY3BwbGludCAtLWZpbHRlcj0uCi0jIElmIHlvdSBhZGQgYSBuZXcgZXJyb3IgbWVzc2Fn
ZSB3aXRoIGEgbmV3IGNhdGVnb3J5LCBhZGQgaXQgdG8gdGhlIGxpc3QKLSMgaGVyZSEgIGNwcGxp
bnRfdW5pdHRlc3QucHkgc2hvdWxkIHRlbGwgeW91IGlmIHlvdSBmb3JnZXQgdG8gZG8gdGhpcy4K
LSMgXCB1c2VkIGZvciBjbGVhcmVyIGxheW91dCAtLSBweWxpbnQ6IGRpc2FibGUtbXNnPUM2MDEz
Ci1fRVJST1JfQ0FURUdPUklFUyA9ICcnJ1wKLSAgICBidWlsZC9jbGFzcwotICAgIGJ1aWxkL2Rl
cHJlY2F0ZWQKLSAgICBidWlsZC9lbmRpZl9jb21tZW50Ci0gICAgYnVpbGQvZm9yd2FyZF9kZWNs
Ci0gICAgYnVpbGQvaGVhZGVyX2d1YXJkCi0gICAgYnVpbGQvaW5jbHVkZQotICAgIGJ1aWxkL2lu
Y2x1ZGVfb3JkZXIKLSAgICBidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZQotICAgIGJ1aWxkL25h
bWVzcGFjZXMKLSAgICBidWlsZC9wcmludGZfZm9ybWF0Ci0gICAgYnVpbGQvc3RvcmFnZV9jbGFz
cwotICAgIGxlZ2FsL2NvcHlyaWdodAotICAgIHJlYWRhYmlsaXR5L2JyYWNlcwotICAgIHJlYWRh
YmlsaXR5L2Nhc3RpbmcKLSAgICByZWFkYWJpbGl0eS9jaGVjawotICAgIHJlYWRhYmlsaXR5L2Nv
bnN0cnVjdG9ycwotICAgIHJlYWRhYmlsaXR5L2ZuX3NpemUKLSAgICByZWFkYWJpbGl0eS9mdW5j
dGlvbgotICAgIHJlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50Ci0gICAgcmVhZGFiaWxpdHkv
bXVsdGlsaW5lX3N0cmluZwotICAgIHJlYWRhYmlsaXR5L3N0cmVhbXMKLSAgICByZWFkYWJpbGl0
eS90b2RvCi0gICAgcmVhZGFiaWxpdHkvdXRmOAotICAgIHJ1bnRpbWUvYXJyYXlzCi0gICAgcnVu
dGltZS9jYXN0aW5nCi0gICAgcnVudGltZS9leHBsaWNpdAotICAgIHJ1bnRpbWUvaW50Ci0gICAg
cnVudGltZS9pbml0Ci0gICAgcnVudGltZS9pbnZhbGlkX2luY3JlbWVudAotICAgIHJ1bnRpbWUv
bWVtc2V0Ci0gICAgcnVudGltZS9wcmludGYKLSAgICBydW50aW1lL3ByaW50Zl9mb3JtYXQKLSAg
ICBydW50aW1lL3JlZmVyZW5jZXMKLSAgICBydW50aW1lL3J0dGkKLSAgICBydW50aW1lL3NpemVv
ZgotICAgIHJ1bnRpbWUvc3RyaW5nCi0gICAgcnVudGltZS90aHJlYWRzYWZlX2ZuCi0gICAgcnVu
dGltZS92aXJ0dWFsCi0gICAgd2hpdGVzcGFjZS9ibGFua19saW5lCi0gICAgd2hpdGVzcGFjZS9i
cmFjZXMKLSAgICB3aGl0ZXNwYWNlL2NvbW1hCi0gICAgd2hpdGVzcGFjZS9jb21tZW50cwotICAg
IHdoaXRlc3BhY2UvZW5kX29mX2xpbmUKLSAgICB3aGl0ZXNwYWNlL2VuZGluZ19uZXdsaW5lCi0g
ICAgd2hpdGVzcGFjZS9pbmRlbnQKLSAgICB3aGl0ZXNwYWNlL2xhYmVscwotICAgIHdoaXRlc3Bh
Y2UvbGluZV9sZW5ndGgKLSAgICB3aGl0ZXNwYWNlL25ld2xpbmUKLSAgICB3aGl0ZXNwYWNlL29w
ZXJhdG9ycwotICAgIHdoaXRlc3BhY2UvcGFyZW5zCi0gICAgd2hpdGVzcGFjZS9zZW1pY29sb24K
LSAgICB3aGl0ZXNwYWNlL3RhYgotICAgIHdoaXRlc3BhY2UvdG9kbwotJycnCi0KLSMgVGhlIGRl
ZmF1bHQgc3RhdGUgb2YgdGhlIGNhdGVnb3J5IGZpbHRlci4gVGhpcyBpcyBvdmVycmlkZWQgYnkg
dGhlIC0tZmlsdGVyPQotIyBmbGFnLiBCeSBkZWZhdWx0IGFsbCBlcnJvcnMgYXJlIG9uLCBzbyBv
bmx5IGFkZCBoZXJlIGNhdGVnb3JpZXMgdGhhdCBzaG91bGQgYmUKLSMgb2ZmIGJ5IGRlZmF1bHQg
KGkuZS4sIGNhdGVnb3JpZXMgdGhhdCBtdXN0IGJlIGVuYWJsZWQgYnkgdGhlIC0tZmlsdGVyPSBm
bGFncykuCi0jIEFsbCBlbnRyaWVzIGhlcmUgc2hvdWxkIHN0YXJ0IHdpdGggYSAnLScgb3IgJysn
LCBhcyBpbiB0aGUgLS1maWx0ZXI9IGZsYWcuCi1fREVGQVVMVF9GSUxURVJTID0gW10KLQotIyBI
ZWFkZXJzIHRoYXQgd2UgY29uc2lkZXIgU1RMIGhlYWRlcnMuCi1fU1RMX0hFQURFUlMgPSBmcm96
ZW5zZXQoWwotICAgICdhbGdvYmFzZS5oJywgJ2FsZ29yaXRobScsICdhbGxvYy5oJywgJ2JpdHNl
dCcsICdkZXF1ZScsICdleGNlcHRpb24nLAotICAgICdmdW5jdGlvbi5oJywgJ2Z1bmN0aW9uYWwn
LCAnaGFzaF9tYXAnLCAnaGFzaF9tYXAuaCcsICdoYXNoX3NldCcsCi0gICAgJ2hhc2hfc2V0Lmgn
LCAnaXRlcmF0b3InLCAnbGlzdCcsICdsaXN0LmgnLCAnbWFwJywgJ21lbW9yeScsICdwYWlyLmgn
LAotICAgICdwdGhyZWFkX2FsbG9jJywgJ3F1ZXVlJywgJ3NldCcsICdzZXQuaCcsICdzc3RyZWFt
JywgJ3N0YWNrJywKLSAgICAnc3RsX2FsbG9jLmgnLCAnc3RsX3JlbG9wcy5oJywgJ3R5cGVfdHJh
aXRzLmgnLAotICAgICd1dGlsaXR5JywgJ3ZlY3RvcicsICd2ZWN0b3IuaCcsCi0gICAgXSkKLQot
Ci0jIE5vbi1TVEwgQysrIHN5c3RlbSBoZWFkZXJzLgotX0NQUF9IRUFERVJTID0gZnJvemVuc2V0
KFsKLSAgICAnYWxnby5oJywgJ2J1aWx0aW5idWYuaCcsICdidmVjdG9yLmgnLCAnY2Fzc2VydCcs
ICdjY3R5cGUnLAotICAgICdjZXJybm8nLCAnY2Zsb2F0JywgJ2Npc282NDYnLCAnY2xpbWl0cycs
ICdjbG9jYWxlJywgJ2NtYXRoJywKLSAgICAnY29tcGxleCcsICdjb21wbGV4LmgnLCAnY3NldGpt
cCcsICdjc2lnbmFsJywgJ2NzdGRhcmcnLCAnY3N0ZGRlZicsCi0gICAgJ2NzdGRpbycsICdjc3Rk
bGliJywgJ2NzdHJpbmcnLCAnY3RpbWUnLCAnY3djaGFyJywgJ2N3Y3R5cGUnLAotICAgICdkZWZh
bGxvYy5oJywgJ2RlcXVlLmgnLCAnZWRpdGJ1Zi5oJywgJ2V4Y2VwdGlvbicsICdmc3RyZWFtJywK
LSAgICAnZnN0cmVhbS5oJywgJ2hhc2h0YWJsZS5oJywgJ2hlYXAuaCcsICdpbmRzdHJlYW0uaCcs
ICdpb21hbmlwJywKLSAgICAnaW9tYW5pcC5oJywgJ2lvcycsICdpb3Nmd2QnLCAnaW9zdHJlYW0n
LCAnaW9zdHJlYW0uaCcsICdpc3RyZWFtLmgnLAotICAgICdpdGVyYXRvci5oJywgJ2xpbWl0cycs
ICdtYXAuaCcsICdtdWx0aW1hcC5oJywgJ211bHRpc2V0LmgnLAotICAgICdudW1lcmljJywgJ29z
dHJlYW0uaCcsICdwYXJzZXN0cmVhbS5oJywgJ3Bmc3RyZWFtLmgnLCAnUGxvdEZpbGUuaCcsCi0g
ICAgJ3Byb2NidWYuaCcsICdwdGhyZWFkX2FsbG9jLmgnLCAncm9wZScsICdyb3BlLmgnLCAncm9w
ZWltcGwuaCcsCi0gICAgJ1NGaWxlLmgnLCAnc2xpc3QnLCAnc2xpc3QuaCcsICdzdGFjay5oJywg
J3N0ZGV4Y2VwdCcsCi0gICAgJ3N0ZGlvc3RyZWFtLmgnLCAnc3RyZWFtYnVmLmgnLCAnc3RyZWFt
LmgnLCAnc3RyZmlsZS5oJywgJ3N0cmluZycsCi0gICAgJ3N0cnN0cmVhbScsICdzdHJzdHJlYW0u
aCcsICd0ZW1wYnVmLmgnLCAndHJlZS5oJywgJ3R5cGVpbmZvJywgJ3ZhbGFycmF5JywKLSAgICBd
KQotCi0KLSMgQXNzZXJ0aW9uIG1hY3Jvcy4gIFRoZXNlIGFyZSBkZWZpbmVkIGluIGJhc2UvbG9n
Z2luZy5oIGFuZAotIyB0ZXN0aW5nL2Jhc2UvZ3VuaXQuaC4gIE5vdGUgdGhhdCB0aGUgX00gdmVy
c2lvbnMgbmVlZCB0byBjb21lIGZpcnN0Ci0jIGZvciBzdWJzdHJpbmcgbWF0Y2hpbmcgdG8gd29y
ay4KLV9DSEVDS19NQUNST1MgPSBbCi0gICAgJ0RDSEVDSycsICdDSEVDSycsCi0gICAgJ0VYUEVD
VF9UUlVFX00nLCAnRVhQRUNUX1RSVUUnLAotICAgICdBU1NFUlRfVFJVRV9NJywgJ0FTU0VSVF9U
UlVFJywKLSAgICAnRVhQRUNUX0ZBTFNFX00nLCAnRVhQRUNUX0ZBTFNFJywKLSAgICAnQVNTRVJU
X0ZBTFNFX00nLCAnQVNTRVJUX0ZBTFNFJywKLSAgICBdCi0KLSMgUmVwbGFjZW1lbnQgbWFjcm9z
IGZvciBDSEVDSy9EQ0hFQ0svRVhQRUNUX1RSVUUvRVhQRUNUX0ZBTFNFCi1fQ0hFQ0tfUkVQTEFD
RU1FTlQgPSBkaWN0KFsobSwge30pIGZvciBtIGluIF9DSEVDS19NQUNST1NdKQotCi1mb3Igb3As
IHJlcGxhY2VtZW50IGluIFsoJz09JywgJ0VRJyksICgnIT0nLCAnTkUnKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICgnPj0nLCAnR0UnKSwgKCc+JywgJ0dUJyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAoJzw9JywgJ0xFJyksICgnPCcsICdMVCcpXToKLSAgICBfQ0hFQ0tfUkVQTEFDRU1F
TlRbJ0RDSEVDSyddW29wXSA9ICdEQ0hFQ0tfJXMnICUgcmVwbGFjZW1lbnQKLSAgICBfQ0hFQ0tf
UkVQTEFDRU1FTlRbJ0NIRUNLJ11bb3BdID0gJ0NIRUNLXyVzJyAlIHJlcGxhY2VtZW50Ci0gICAg
X0NIRUNLX1JFUExBQ0VNRU5UWydFWFBFQ1RfVFJVRSddW29wXSA9ICdFWFBFQ1RfJXMnICUgcmVw
bGFjZW1lbnQKLSAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0FTU0VSVF9UUlVFJ11bb3BdID0gJ0FT
U0VSVF8lcycgJSByZXBsYWNlbWVudAotICAgIF9DSEVDS19SRVBMQUNFTUVOVFsnRVhQRUNUX1RS
VUVfTSddW29wXSA9ICdFWFBFQ1RfJXNfTScgJSByZXBsYWNlbWVudAotICAgIF9DSEVDS19SRVBM
QUNFTUVOVFsnQVNTRVJUX1RSVUVfTSddW29wXSA9ICdBU1NFUlRfJXNfTScgJSByZXBsYWNlbWVu
dAotCi1mb3Igb3AsIGludl9yZXBsYWNlbWVudCBpbiBbKCc9PScsICdORScpLCAoJyE9JywgJ0VR
JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc+PScsICdMVCcpLCAoJz4nLCAnTEUn
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJzw9JywgJ0dUJyksICgnPCcsICdHRScp
XToKLSAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0VYUEVDVF9GQUxTRSddW29wXSA9ICdFWFBFQ1Rf
JXMnICUgaW52X3JlcGxhY2VtZW50Ci0gICAgX0NIRUNLX1JFUExBQ0VNRU5UWydBU1NFUlRfRkFM
U0UnXVtvcF0gPSAnQVNTRVJUXyVzJyAlIGludl9yZXBsYWNlbWVudAotICAgIF9DSEVDS19SRVBM
QUNFTUVOVFsnRVhQRUNUX0ZBTFNFX00nXVtvcF0gPSAnRVhQRUNUXyVzX00nICUgaW52X3JlcGxh
Y2VtZW50Ci0gICAgX0NIRUNLX1JFUExBQ0VNRU5UWydBU1NFUlRfRkFMU0VfTSddW29wXSA9ICdB
U1NFUlRfJXNfTScgJSBpbnZfcmVwbGFjZW1lbnQKLQotCi0jIFRoZXNlIGNvbnN0YW50cyBkZWZp
bmUgdHlwZXMgb2YgaGVhZGVycyBmb3IgdXNlIHdpdGgKLSMgX0luY2x1ZGVTdGF0ZS5jaGVja19u
ZXh0X2luY2x1ZGVfb3JkZXIoKS4KLV9DX1NZU19IRUFERVIgPSAxCi1fQ1BQX1NZU19IRUFERVIg
PSAyCi1fTElLRUxZX01ZX0hFQURFUiA9IDMKLV9QT1NTSUJMRV9NWV9IRUFERVIgPSA0Ci1fT1RI
RVJfSEVBREVSID0gNQotCi0KLV9yZWdleHBfY29tcGlsZV9jYWNoZSA9IHt9Ci0KLQotZGVmIG1h
dGNoKHBhdHRlcm4sIHMpOgotICAgICIiIk1hdGNoZXMgdGhlIHN0cmluZyB3aXRoIHRoZSBwYXR0
ZXJuLCBjYWNoaW5nIHRoZSBjb21waWxlZCByZWdleHAuIiIiCi0gICAgIyBUaGUgcmVnZXhwIGNv
bXBpbGF0aW9uIGNhY2hpbmcgaXMgaW5saW5lZCBpbiBib3RoIG1hdGNoIGFuZCBzZWFyY2ggZm9y
Ci0gICAgIyBwZXJmb3JtYW5jZSByZWFzb25zOyBmYWN0b3JpbmcgaXQgb3V0IGludG8gYSBzZXBh
cmF0ZSBmdW5jdGlvbiB0dXJucyBvdXQKLSAgICAjIHRvIGJlIG5vdGljZWFibHkgZXhwZW5zaXZl
LgotICAgIGlmIG5vdCBwYXR0ZXJuIGluIF9yZWdleHBfY29tcGlsZV9jYWNoZToKLSAgICAgICAg
X3JlZ2V4cF9jb21waWxlX2NhY2hlW3BhdHRlcm5dID0gc3JlX2NvbXBpbGUuY29tcGlsZShwYXR0
ZXJuKQotICAgIHJldHVybiBfcmVnZXhwX2NvbXBpbGVfY2FjaGVbcGF0dGVybl0ubWF0Y2gocykK
LQotCi1kZWYgc2VhcmNoKHBhdHRlcm4sIHMpOgotICAgICIiIlNlYXJjaGVzIHRoZSBzdHJpbmcg
Zm9yIHRoZSBwYXR0ZXJuLCBjYWNoaW5nIHRoZSBjb21waWxlZCByZWdleHAuIiIiCi0gICAgaWYg
bm90IHBhdHRlcm4gaW4gX3JlZ2V4cF9jb21waWxlX2NhY2hlOgotICAgICAgICBfcmVnZXhwX2Nv
bXBpbGVfY2FjaGVbcGF0dGVybl0gPSBzcmVfY29tcGlsZS5jb21waWxlKHBhdHRlcm4pCi0gICAg
cmV0dXJuIF9yZWdleHBfY29tcGlsZV9jYWNoZVtwYXR0ZXJuXS5zZWFyY2gocykKLQotCi1jbGFz
cyBfSW5jbHVkZVN0YXRlKGRpY3QpOgotICAgICIiIlRyYWNrcyBsaW5lIG51bWJlcnMgZm9yIGlu
Y2x1ZGVzLCBhbmQgdGhlIG9yZGVyIGluIHdoaWNoIGluY2x1ZGVzIGFwcGVhci4KLQotICAgIEFz
IGEgZGljdCwgYW4gX0luY2x1ZGVTdGF0ZSBvYmplY3Qgc2VydmVzIGFzIGEgbWFwcGluZyBiZXR3
ZWVuIGluY2x1ZGUKLSAgICBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIgb24gd2hpY2ggdGhhdCBm
aWxlIHdhcyBpbmNsdWRlZC4KLQotICAgIENhbGwgY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKCkg
b25jZSBmb3IgZWFjaCBoZWFkZXIgaW4gdGhlIGZpbGUsIHBhc3NpbmcKLSAgICBpbiB0aGUgdHlw
ZSBjb25zdGFudHMgZGVmaW5lZCBhYm92ZS4gQ2FsbHMgaW4gYW4gaWxsZWdhbCBvcmRlciB3aWxs
Ci0gICAgcmFpc2UgYW4gX0luY2x1ZGVFcnJvciB3aXRoIGFuIGFwcHJvcHJpYXRlIGVycm9yIG1l
c3NhZ2UuCi0KLSAgICAiIiIKLSAgICAjIHNlbGYuX3NlY3Rpb24gd2lsbCBtb3ZlIG1vbm90b25p
Y2FsbHkgdGhyb3VnaCB0aGlzIHNldC4gSWYgaXQgZXZlcgotICAgICMgbmVlZHMgdG8gbW92ZSBi
YWNrd2FyZHMsIGNoZWNrX25leHRfaW5jbHVkZV9vcmRlciB3aWxsIHJhaXNlIGFuIGVycm9yLgot
ICAgIF9JTklUSUFMX1NFQ1RJT04gPSAwCi0gICAgX01ZX0hfU0VDVElPTiA9IDEKLSAgICBfQ19T
RUNUSU9OID0gMgotICAgIF9DUFBfU0VDVElPTiA9IDMKLSAgICBfT1RIRVJfSF9TRUNUSU9OID0g
NAotCi0gICAgX1RZUEVfTkFNRVMgPSB7Ci0gICAgICAgIF9DX1NZU19IRUFERVI6ICdDIHN5c3Rl
bSBoZWFkZXInLAotICAgICAgICBfQ1BQX1NZU19IRUFERVI6ICdDKysgc3lzdGVtIGhlYWRlcics
Ci0gICAgICAgIF9MSUtFTFlfTVlfSEVBREVSOiAnaGVhZGVyIHRoaXMgZmlsZSBpbXBsZW1lbnRz
JywKLSAgICAgICAgX1BPU1NJQkxFX01ZX0hFQURFUjogJ2hlYWRlciB0aGlzIGZpbGUgbWF5IGlt
cGxlbWVudCcsCi0gICAgICAgIF9PVEhFUl9IRUFERVI6ICdvdGhlciBoZWFkZXInLAotICAgICAg
ICB9Ci0gICAgX1NFQ1RJT05fTkFNRVMgPSB7Ci0gICAgICAgIF9JTklUSUFMX1NFQ1RJT046ICIu
Li4gbm90aGluZy4gKFRoaXMgY2FuJ3QgYmUgYW4gZXJyb3IuKSIsCi0gICAgICAgIF9NWV9IX1NF
Q1RJT046ICdhIGhlYWRlciB0aGlzIGZpbGUgaW1wbGVtZW50cycsCi0gICAgICAgIF9DX1NFQ1RJ
T046ICdDIHN5c3RlbSBoZWFkZXInLAotICAgICAgICBfQ1BQX1NFQ1RJT046ICdDKysgc3lzdGVt
IGhlYWRlcicsCi0gICAgICAgIF9PVEhFUl9IX1NFQ1RJT046ICdvdGhlciBoZWFkZXInLAotICAg
ICAgICB9Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIGRpY3QuX19pbml0X18o
c2VsZikKLSAgICAgICAgc2VsZi5fc2VjdGlvbiA9IHNlbGYuX0lOSVRJQUxfU0VDVElPTgotCi0g
ICAgZGVmIGNoZWNrX25leHRfaW5jbHVkZV9vcmRlcihzZWxmLCBoZWFkZXJfdHlwZSk6Ci0gICAg
ICAgICIiIlJldHVybnMgYSBub24tZW1wdHkgZXJyb3IgbWVzc2FnZSBpZiB0aGUgbmV4dCBoZWFk
ZXIgaXMgb3V0IG9mIG9yZGVyLgotCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gYWxzbyB1cGRhdGVz
IHRoZSBpbnRlcm5hbCBzdGF0ZSB0byBiZSByZWFkeSB0byBjaGVjawotICAgICAgICB0aGUgbmV4
dCBpbmNsdWRlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgaGVhZGVyX3R5cGU6IE9uZSBv
ZiB0aGUgX1hYWF9IRUFERVIgY29uc3RhbnRzIGRlZmluZWQgYWJvdmUuCi0KLSAgICAgICAgUmV0
dXJuczoKLSAgICAgICAgICBUaGUgZW1wdHkgc3RyaW5nIGlmIHRoZSBoZWFkZXIgaXMgaW4gdGhl
IHJpZ2h0IG9yZGVyLCBvciBhbgotICAgICAgICAgIGVycm9yIG1lc3NhZ2UgZGVzY3JpYmluZyB3
aGF0J3Mgd3JvbmcuCi0KLSAgICAgICAgIiIiCi0gICAgICAgICMgRklYTUU6IFRoaXMgaXNuJ3Qg
V2ViS2l0J3MgcnVsZS4gV2UgYXJlIGp1c3QgZGlzYWJsaW5nIHRoaXMgZm9yIG5vdy4KLSAgICAg
ICAgZXJyb3JfbWVzc2FnZSA9ICgnRm91bmQgJXMgYWZ0ZXIgJXMnICUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAoc2VsZi5fVFlQRV9OQU1FU1toZWFkZXJfdHlwZV0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX1NFQ1RJT05fTkFNRVNbc2VsZi5fc2VjdGlvbl0pKQotCi0gICAg
ICAgIGlmIGhlYWRlcl90eXBlID09IF9DX1NZU19IRUFERVI6Ci0gICAgICAgICAgICBpZiBzZWxm
Ll9zZWN0aW9uIDw9IHNlbGYuX0NfU0VDVElPTjoKLSAgICAgICAgICAgICAgICBzZWxmLl9zZWN0
aW9uID0gc2VsZi5fQ19TRUNUSU9OCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcl9tZXNzYWdlCi0gICAgICAgIGVsaWYgaGVhZGVyX3R5cGUgPT0gX0NQUF9T
WVNfSEVBREVSOgotICAgICAgICAgICAgaWYgc2VsZi5fc2VjdGlvbiA8PSBzZWxmLl9DUFBfU0VD
VElPTjoKLSAgICAgICAgICAgICAgICBzZWxmLl9zZWN0aW9uID0gc2VsZi5fQ1BQX1NFQ1RJT04K
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yX21lc3NhZ2UK
LSAgICAgICAgZWxpZiBoZWFkZXJfdHlwZSA9PSBfTElLRUxZX01ZX0hFQURFUjoKLSAgICAgICAg
ICAgIGlmIHNlbGYuX3NlY3Rpb24gPD0gc2VsZi5fTVlfSF9TRUNUSU9OOgotICAgICAgICAgICAg
ICAgIHNlbGYuX3NlY3Rpb24gPSBzZWxmLl9NWV9IX1NFQ1RJT04KLSAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2VjdGlvbiA9IHNlbGYuX09USEVSX0hfU0VDVElPTgot
ICAgICAgICBlbGlmIGhlYWRlcl90eXBlID09IF9QT1NTSUJMRV9NWV9IRUFERVI6Ci0gICAgICAg
ICAgICBpZiBzZWxmLl9zZWN0aW9uIDw9IHNlbGYuX01ZX0hfU0VDVElPTjoKLSAgICAgICAgICAg
ICAgICBzZWxmLl9zZWN0aW9uID0gc2VsZi5fTVlfSF9TRUNUSU9OCi0gICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgICMgVGhpcyB3aWxsIGFsd2F5cyBiZSB0aGUgZmFsbGJhY2sgYmVj
YXVzZSB3ZSdyZSBub3Qgc3VyZQotICAgICAgICAgICAgICAgICMgZW5vdWdoIHRoYXQgdGhlIGhl
YWRlciBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBmaWxlLgotICAgICAgICAgICAgICAgIHNlbGYu
X3NlY3Rpb24gPSBzZWxmLl9PVEhFUl9IX1NFQ1RJT04KLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIGFzc2VydCBoZWFkZXJfdHlwZSA9PSBfT1RIRVJfSEVBREVSCi0gICAgICAgICAgICBzZWxm
Ll9zZWN0aW9uID0gc2VsZi5fT1RIRVJfSF9TRUNUSU9OCi0KLSAgICAgICAgcmV0dXJuICcnCi0K
LQotY2xhc3MgX0NwcExpbnRTdGF0ZShvYmplY3QpOgotICAgICIiIk1haW50YWlucyBtb2R1bGUt
d2lkZSBzdGF0ZS4uIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYu
dmVyYm9zZV9sZXZlbCA9IDEgICMgZ2xvYmFsIHNldHRpbmcuCi0gICAgICAgIHNlbGYuZXJyb3Jf
Y291bnQgPSAwICAgICMgZ2xvYmFsIGNvdW50IG9mIHJlcG9ydGVkIGVycm9ycwotICAgICAgICAj
IGZpbHRlcnMgdG8gYXBwbHkgd2hlbiBlbWl0dGluZyBlcnJvciBtZXNzYWdlcwotICAgICAgICBz
ZWxmLmZpbHRlcnMgPSBfREVGQVVMVF9GSUxURVJTWzpdCi0KLSAgICAgICAgIyBvdXRwdXQgZm9y
bWF0OgotICAgICAgICAjICJlbWFjcyIgLSBmb3JtYXQgdGhhdCBlbWFjcyBjYW4gcGFyc2UgKGRl
ZmF1bHQpCi0gICAgICAgICMgInZzNyIgLSBmb3JtYXQgdGhhdCBNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpbyA3IGNhbiBwYXJzZQotICAgICAgICBzZWxmLm91dHB1dF9mb3JtYXQgPSAnZW1hY3MnCi0K
LSAgICBkZWYgc2V0X291dHB1dF9mb3JtYXQoc2VsZiwgb3V0cHV0X2Zvcm1hdCk6Ci0gICAgICAg
ICIiIlNldHMgdGhlIG91dHB1dCBmb3JtYXQgZm9yIGVycm9ycy4iIiIKLSAgICAgICAgc2VsZi5v
dXRwdXRfZm9ybWF0ID0gb3V0cHV0X2Zvcm1hdAotCi0gICAgZGVmIHNldF92ZXJib3NlX2xldmVs
KHNlbGYsIGxldmVsKToKLSAgICAgICAgIiIiU2V0cyB0aGUgbW9kdWxlJ3MgdmVyYm9zaXR5LCBh
bmQgcmV0dXJucyB0aGUgcHJldmlvdXMgc2V0dGluZy4iIiIKLSAgICAgICAgbGFzdF92ZXJib3Nl
X2xldmVsID0gc2VsZi52ZXJib3NlX2xldmVsCi0gICAgICAgIHNlbGYudmVyYm9zZV9sZXZlbCA9
IGxldmVsCi0gICAgICAgIHJldHVybiBsYXN0X3ZlcmJvc2VfbGV2ZWwKLQotICAgIGRlZiBzZXRf
ZmlsdGVycyhzZWxmLCBmaWx0ZXJzKToKLSAgICAgICAgIiIiU2V0cyB0aGUgZXJyb3ItbWVzc2Fn
ZSBmaWx0ZXJzLgotCi0gICAgICAgIFRoZXNlIGZpbHRlcnMgYXJlIGFwcGxpZWQgd2hlbiBkZWNp
ZGluZyB3aGV0aGVyIHRvIGVtaXQgYSBnaXZlbgotICAgICAgICBlcnJvciBtZXNzYWdlLgotCi0g
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZmlsdGVyczogQSBzdHJpbmcgb2YgY29tbWEtc2VwYXJh
dGVkIGZpbHRlcnMgKGVnICIrd2hpdGVzcGFjZS9pbmRlbnQiKS4KLSAgICAgICAgICAgICAgICAg
ICBFYWNoIGZpbHRlciBzaG91bGQgc3RhcnQgd2l0aCArIG9yIC07IGVsc2Ugd2UgZGllLgotCi0g
ICAgICAgIFJhaXNlczoKLSAgICAgICAgICBWYWx1ZUVycm9yOiBUaGUgY29tbWEtc2VwYXJhdGVk
IGZpbHRlcnMgZGlkIG5vdCBhbGwgc3RhcnQgd2l0aCAnKycgb3IgJy0nLgotICAgICAgICAgICAg
ICAgICAgICAgIEUuZy4gIi0sK3doaXRlc3BhY2UsLXdoaXRlc3BhY2UvaW5kZW50LHdoaXRlc3Bh
Y2UvYmFkZmlsdGVyIgotICAgICAgICAiIiIKLSAgICAgICAgIyBEZWZhdWx0IGZpbHRlcnMgYWx3
YXlzIGhhdmUgbGVzcyBwcmlvcml0eSB0aGFuIHRoZSBmbGFnIG9uZXMuCi0gICAgICAgIHNlbGYu
ZmlsdGVycyA9IF9ERUZBVUxUX0ZJTFRFUlNbOl0KLSAgICAgICAgZm9yIGZpbHRlciBpbiBmaWx0
ZXJzLnNwbGl0KCcsJyk6Ci0gICAgICAgICAgICBjbGVhbl9maWx0ZXIgPSBmaWx0ZXIuc3RyaXAo
KQotICAgICAgICAgICAgaWYgY2xlYW5fZmlsdGVyOgotICAgICAgICAgICAgICAgIHNlbGYuZmls
dGVycy5hcHBlbmQoY2xlYW5fZmlsdGVyKQotICAgICAgICBmb3IgZmlsdGVyIGluIHNlbGYuZmls
dGVyczoKLSAgICAgICAgICAgIGlmIG5vdCAoZmlsdGVyLnN0YXJ0c3dpdGgoJysnKSBvciBmaWx0
ZXIuc3RhcnRzd2l0aCgnLScpKToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdF
dmVyeSBmaWx0ZXIgaW4gLS1maWx0ZXJzIG11c3Qgc3RhcnQgd2l0aCAnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnKyBvciAtICglcyBkb2VzIG5vdCknICUgZmlsdGVyKQotCi0g
ICAgZGVmIHJlc2V0X2Vycm9yX2NvdW50KHNlbGYpOgotICAgICAgICAiIiJTZXRzIHRoZSBtb2R1
bGUncyBlcnJvciBzdGF0aXN0aWMgYmFjayB0byB6ZXJvLiIiIgotICAgICAgICBzZWxmLmVycm9y
X2NvdW50ID0gMAotCi0gICAgZGVmIGluY3JlbWVudF9lcnJvcl9jb3VudChzZWxmKToKLSAgICAg
ICAgIiIiQnVtcHMgdGhlIG1vZHVsZSdzIGVycm9yIHN0YXRpc3RpYy4iIiIKLSAgICAgICAgc2Vs
Zi5lcnJvcl9jb3VudCArPSAxCi0KLQotX2NwcGxpbnRfc3RhdGUgPSBfQ3BwTGludFN0YXRlKCkK
LQotCi1kZWYgX291dHB1dF9mb3JtYXQoKToKLSAgICAiIiJHZXRzIHRoZSBtb2R1bGUncyBvdXRw
dXQgZm9ybWF0LiIiIgotICAgIHJldHVybiBfY3BwbGludF9zdGF0ZS5vdXRwdXRfZm9ybWF0Ci0K
LQotZGVmIF9zZXRfb3V0cHV0X2Zvcm1hdChvdXRwdXRfZm9ybWF0KToKLSAgICAiIiJTZXRzIHRo
ZSBtb2R1bGUncyBvdXRwdXQgZm9ybWF0LiIiIgotICAgIF9jcHBsaW50X3N0YXRlLnNldF9vdXRw
dXRfZm9ybWF0KG91dHB1dF9mb3JtYXQpCi0KLQotZGVmIF92ZXJib3NlX2xldmVsKCk6Ci0gICAg
IiIiUmV0dXJucyB0aGUgbW9kdWxlJ3MgdmVyYm9zaXR5IHNldHRpbmcuIiIiCi0gICAgcmV0dXJu
IF9jcHBsaW50X3N0YXRlLnZlcmJvc2VfbGV2ZWwKLQotCi1kZWYgX3NldF92ZXJib3NlX2xldmVs
KGxldmVsKToKLSAgICAiIiJTZXRzIHRoZSBtb2R1bGUncyB2ZXJib3NpdHksIGFuZCByZXR1cm5z
IHRoZSBwcmV2aW91cyBzZXR0aW5nLiIiIgotICAgIHJldHVybiBfY3BwbGludF9zdGF0ZS5zZXRf
dmVyYm9zZV9sZXZlbChsZXZlbCkKLQotCi1kZWYgX2ZpbHRlcnMoKToKLSAgICAiIiJSZXR1cm5z
IHRoZSBtb2R1bGUncyBsaXN0IG9mIG91dHB1dCBmaWx0ZXJzLCBhcyBhIGxpc3QuIiIiCi0gICAg
cmV0dXJuIF9jcHBsaW50X3N0YXRlLmZpbHRlcnMKLQotCi1kZWYgX3NldF9maWx0ZXJzKGZpbHRl
cnMpOgotICAgICIiIlNldHMgdGhlIG1vZHVsZSdzIGVycm9yLW1lc3NhZ2UgZmlsdGVycy4KLQot
ICAgIFRoZXNlIGZpbHRlcnMgYXJlIGFwcGxpZWQgd2hlbiBkZWNpZGluZyB3aGV0aGVyIHRvIGVt
aXQgYSBnaXZlbgotICAgIGVycm9yIG1lc3NhZ2UuCi0KLSAgICBBcmdzOgotICAgICAgZmlsdGVy
czogQSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGZpbHRlcnMgKGVnICJ3aGl0ZXNwYWNlL2lu
ZGVudCIpLgotICAgICAgICAgICAgICAgRWFjaCBmaWx0ZXIgc2hvdWxkIHN0YXJ0IHdpdGggKyBv
ciAtOyBlbHNlIHdlIGRpZS4KLSAgICAiIiIKLSAgICBfY3BwbGludF9zdGF0ZS5zZXRfZmlsdGVy
cyhmaWx0ZXJzKQotCi0KLWNsYXNzIF9GdW5jdGlvblN0YXRlKG9iamVjdCk6Ci0gICAgIiIiVHJh
Y2tzIGN1cnJlbnQgZnVuY3Rpb24gbmFtZSBhbmQgdGhlIG51bWJlciBvZiBsaW5lcyBpbiBpdHMg
Ym9keS4iIiIKLQotICAgIF9OT1JNQUxfVFJJR0dFUiA9IDI1MCAgIyBmb3IgLS12PTAsIDUwMCBm
b3IgLS12PTEsIGV0Yy4KLSAgICBfVEVTVF9UUklHR0VSID0gNDAwICAgICMgYWJvdXQgNTAlIG1v
cmUgdGhhbiBfTk9STUFMX1RSSUdHRVIuCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAg
ICAgIHNlbGYuaW5fYV9mdW5jdGlvbiA9IEZhbHNlCi0gICAgICAgIHNlbGYubGluZXNfaW5fZnVu
Y3Rpb24gPSAwCi0gICAgICAgIHNlbGYuY3VycmVudF9mdW5jdGlvbiA9ICcnCi0KLSAgICBkZWYg
YmVnaW4oc2VsZiwgZnVuY3Rpb25fbmFtZSk6Ci0gICAgICAgICIiIlN0YXJ0IGFuYWx5emluZyBm
dW5jdGlvbiBib2R5LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBmdW5jdGlvbl9uYW1l
OiBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gYmVpbmcgdHJhY2tlZC4KLSAgICAgICAgIiIiCi0g
ICAgICAgIHNlbGYuaW5fYV9mdW5jdGlvbiA9IFRydWUKLSAgICAgICAgc2VsZi5saW5lc19pbl9m
dW5jdGlvbiA9IDAKLSAgICAgICAgc2VsZi5jdXJyZW50X2Z1bmN0aW9uID0gZnVuY3Rpb25fbmFt
ZQotCi0gICAgZGVmIGNvdW50KHNlbGYpOgotICAgICAgICAiIiJDb3VudCBsaW5lIGluIGN1cnJl
bnQgZnVuY3Rpb24gYm9keS4iIiIKLSAgICAgICAgaWYgc2VsZi5pbl9hX2Z1bmN0aW9uOgotICAg
ICAgICAgICAgc2VsZi5saW5lc19pbl9mdW5jdGlvbiArPSAxCi0KLSAgICBkZWYgY2hlY2soc2Vs
ZiwgZXJyb3IsIGZpbGVuYW1lLCBsaW5lX251bWJlcik6Ci0gICAgICAgICIiIlJlcG9ydCBpZiB0
b28gbWFueSBsaW5lcyBpbiBmdW5jdGlvbiBib2R5LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAg
ICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAg
ICAgICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KLSAgICAgICAg
ICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KLSAgICAgICAg
IiIiCi0gICAgICAgIGlmIG1hdGNoKHInVChFU1R8ZXN0KScsIHNlbGYuY3VycmVudF9mdW5jdGlv
bik6Ci0gICAgICAgICAgICBiYXNlX3RyaWdnZXIgPSBzZWxmLl9URVNUX1RSSUdHRVIKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIGJhc2VfdHJpZ2dlciA9IHNlbGYuX05PUk1BTF9UUklHR0VS
Ci0gICAgICAgIHRyaWdnZXIgPSBiYXNlX3RyaWdnZXIgKiAyICoqIF92ZXJib3NlX2xldmVsKCkK
LQotICAgICAgICBpZiBzZWxmLmxpbmVzX2luX2Z1bmN0aW9uID4gdHJpZ2dlcjoKLSAgICAgICAg
ICAgIGVycm9yX2xldmVsID0gaW50KG1hdGgubG9nKHNlbGYubGluZXNfaW5fZnVuY3Rpb24gLyBi
YXNlX3RyaWdnZXIsIDIpKQotICAgICAgICAgICAgIyA1MCA9PiAwLCAxMDAgPT4gMSwgMjAwID0+
IDIsIDQwMCA9PiAzLCA4MDAgPT4gNCwgMTYwMCA9PiA1LCAuLi4KLSAgICAgICAgICAgIGlmIGVy
cm9yX2xldmVsID4gNToKLSAgICAgICAgICAgICAgICBlcnJvcl9sZXZlbCA9IDUKLSAgICAgICAg
ICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L2ZuX3NpemUnLCBl
cnJvcl9sZXZlbCwKLSAgICAgICAgICAgICAgICAgICdTbWFsbCBhbmQgZm9jdXNlZCBmdW5jdGlv
bnMgYXJlIHByZWZlcnJlZDonCi0gICAgICAgICAgICAgICAgICAnICVzIGhhcyAlZCBub24tY29t
bWVudCBsaW5lcycKLSAgICAgICAgICAgICAgICAgICcgKGVycm9yIHRyaWdnZXJlZCBieSBleGNl
ZWRpbmcgJWQgbGluZXMpLicgICUgKAotICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVu
dF9mdW5jdGlvbiwgc2VsZi5saW5lc19pbl9mdW5jdGlvbiwgdHJpZ2dlcikpCi0KLSAgICBkZWYg
ZW5kKHNlbGYpOgotICAgICAgICAiIiJTdG9wIGFuYWxpemluZyBmdW5jdGlvbiBib2R5LiIiIgot
ICAgICAgICBzZWxmLmluX2FfZnVuY3Rpb24gPSBGYWxzZQotCi0KLWNsYXNzIF9JbmNsdWRlRXJy
b3IoRXhjZXB0aW9uKToKLSAgICAiIiJJbmRpY2F0ZXMgYSBwcm9ibGVtIHdpdGggdGhlIGluY2x1
ZGUgb3JkZXIgaW4gYSBmaWxlLiIiIgotICAgIHBhc3MKLQotCi1jbGFzcyBGaWxlSW5mbzoKLSAg
ICAiIiJQcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgZmlsZW5hbWVzLgotCi0gICAgRmls
ZUluZm8gcHJvdmlkZXMgZWFzeSBhY2Nlc3MgdG8gdGhlIGNvbXBvbmVudHMgb2YgYSBmaWxlJ3Mg
cGF0aAotICAgIHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHJvb3QuCi0gICAgIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUpOgotICAgICAgICBzZWxmLl9maWxlbmFtZSA9IGZp
bGVuYW1lCi0KLSAgICBkZWYgZnVsbF9uYW1lKHNlbGYpOgotICAgICAgICAiIiJNYWtlIFdpbmRv
d3MgcGF0aHMgbGlrZSBVbml4LiIiIgotICAgICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKHNl
bGYuX2ZpbGVuYW1lKS5yZXBsYWNlKCdcXCcsICcvJykKLQotICAgIGRlZiByZXBvc2l0b3J5X25h
bWUoc2VsZik6Ci0gICAgICAgICIiIkZ1bGwgbmFtZSBhZnRlciByZW1vdmluZyB0aGUgbG9jYWwg
cGF0aCB0byB0aGUgcmVwb3NpdG9yeS4KLQotICAgICAgICBJZiB3ZSBoYXZlIGEgcmVhbCBhYnNv
bHV0ZSBwYXRoIG5hbWUgaGVyZSB3ZSBjYW4gdHJ5IHRvIGRvIHNvbWV0aGluZyBzbWFydDoKLSAg
ICAgICAgZGV0ZWN0aW5nIHRoZSByb290IG9mIHRoZSBjaGVja291dCBhbmQgdHJ1bmNhdGluZyAv
cGF0aC90by9jaGVja291dCBmcm9tCi0gICAgICAgIHRoZSBuYW1lIHNvIHRoYXQgd2UgZ2V0IGhl
YWRlciBndWFyZHMgdGhhdCBkb24ndCBpbmNsdWRlIHRoaW5ncyBsaWtlCi0gICAgICAgICJDOlxE
b2N1bWVudHMgYW5kIFNldHRpbmdzXC4uLiIgb3IgIi9ob21lL3VzZXJuYW1lLy4uLiIgaW4gdGhl
bSBhbmQgdGh1cwotICAgICAgICBwZW9wbGUgb24gZGlmZmVyZW50IGNvbXB1dGVycyB3aG8gaGF2
ZSBjaGVja2VkIHRoZSBzb3VyY2Ugb3V0IHRvIGRpZmZlcmVudAotICAgICAgICBsb2NhdGlvbnMg
d29uJ3Qgc2VlIGJvZ3VzIGVycm9ycy4KLSAgICAgICAgIiIiCi0gICAgICAgIGZ1bGxuYW1lID0g
c2VsZi5mdWxsX25hbWUoKQotCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZ1bGxuYW1lKToK
LSAgICAgICAgICAgIHByb2plY3RfZGlyID0gb3MucGF0aC5kaXJuYW1lKGZ1bGxuYW1lKQotCi0g
ICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocHJvamVjdF9kaXIsICIu
c3ZuIikpOgotICAgICAgICAgICAgICAgICMgSWYgdGhlcmUncyBhIC5zdm4gZmlsZSBpbiB0aGUg
Y3VycmVudCBkaXJlY3RvcnksIHdlCi0gICAgICAgICAgICAgICAgIyByZWN1cnNpdmVseSBsb29r
IHVwIHRoZSBkaXJlY3RvcnkgdHJlZSBmb3IgdGhlIHRvcAotICAgICAgICAgICAgICAgICMgb2Yg
dGhlIFNWTiBjaGVja291dAotICAgICAgICAgICAgICAgIHJvb3RfZGlyID0gcHJvamVjdF9kaXIK
LSAgICAgICAgICAgICAgICBvbmVfdXBfZGlyID0gb3MucGF0aC5kaXJuYW1lKHJvb3RfZGlyKQot
ICAgICAgICAgICAgICAgIHdoaWxlIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihvbmVfdXBf
ZGlyLCAiLnN2biIpKToKLSAgICAgICAgICAgICAgICAgICAgcm9vdF9kaXIgPSBvcy5wYXRoLmRp
cm5hbWUocm9vdF9kaXIpCi0gICAgICAgICAgICAgICAgICAgIG9uZV91cF9kaXIgPSBvcy5wYXRo
LmRpcm5hbWUob25lX3VwX2RpcikKLQotICAgICAgICAgICAgICAgIHByZWZpeCA9IG9zLnBhdGgu
Y29tbW9ucHJlZml4KFtyb290X2RpciwgcHJvamVjdF9kaXJdKQotICAgICAgICAgICAgICAgIHJl
dHVybiBmdWxsbmFtZVtsZW4ocHJlZml4KSArIDE6XQotCi0gICAgICAgICAgICAjIE5vdCBTVk4/
IFRyeSB0byBmaW5kIGEgZ2l0IHRvcCBsZXZlbCBkaXJlY3RvcnkgYnkKLSAgICAgICAgICAgICMg
c2VhcmNoaW5nIHVwIGZyb20gdGhlIGN1cnJlbnQgcGF0aC4KLSAgICAgICAgICAgIHJvb3RfZGly
ID0gb3MucGF0aC5kaXJuYW1lKGZ1bGxuYW1lKQotICAgICAgICAgICAgd2hpbGUgKHJvb3RfZGly
ICE9IG9zLnBhdGguZGlybmFtZShyb290X2RpcikKLSAgICAgICAgICAgICAgICAgICBhbmQgbm90
IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihyb290X2RpciwgIi5naXQiKSkpOgotICAgICAg
ICAgICAgICAgIHJvb3RfZGlyID0gb3MucGF0aC5kaXJuYW1lKHJvb3RfZGlyKQotICAgICAgICAg
ICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihyb290X2RpciwgIi5naXQiKSk6
Ci0gICAgICAgICAgICAgICAgICAgIHByZWZpeCA9IG9zLnBhdGguY29tbW9ucHJlZml4KFtyb290
X2RpciwgcHJvamVjdF9kaXJdKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVsbG5hbWVb
bGVuKHByZWZpeCkgKyAxOl0KLQotICAgICAgICAjIERvbid0IGtub3cgd2hhdCB0byBkbzsgaGVh
ZGVyIGd1YXJkIHdhcm5pbmdzIG1heSBiZSB3cm9uZy4uLgotICAgICAgICByZXR1cm4gZnVsbG5h
bWUKLQotICAgIGRlZiBzcGxpdChzZWxmKToKLSAgICAgICAgIiIiU3BsaXRzIHRoZSBmaWxlIGlu
dG8gdGhlIGRpcmVjdG9yeSwgYmFzZW5hbWUsIGFuZCBleHRlbnNpb24uCi0KLSAgICAgICAgRm9y
ICdjaHJvbWUvYnJvd3Nlci9icm93c2VyLmNjJywgU3BsaXQoKSB3b3VsZAotICAgICAgICByZXR1
cm4gKCdjaHJvbWUvYnJvd3NlcicsICdicm93c2VyJywgJy5jYycpCi0KLSAgICAgICAgUmV0dXJu
czoKLSAgICAgICAgICBBIHR1cGxlIG9mIChkaXJlY3RvcnksIGJhc2VuYW1lLCBleHRlbnNpb24p
LgotICAgICAgICAiIiIKLQotICAgICAgICBnb29nbGVuYW1lID0gc2VsZi5yZXBvc2l0b3J5X25h
bWUoKQotICAgICAgICBwcm9qZWN0LCByZXN0ID0gb3MucGF0aC5zcGxpdChnb29nbGVuYW1lKQot
ICAgICAgICByZXR1cm4gKHByb2plY3QsKSArIG9zLnBhdGguc3BsaXRleHQocmVzdCkKLQotICAg
IGRlZiBiYXNlX25hbWUoc2VsZik6Ci0gICAgICAgICIiIkZpbGUgYmFzZSBuYW1lIC0gdGV4dCBh
ZnRlciB0aGUgZmluYWwgc2xhc2gsIGJlZm9yZSB0aGUgZmluYWwgcGVyaW9kLiIiIgotICAgICAg
ICByZXR1cm4gc2VsZi5zcGxpdCgpWzFdCi0KLSAgICBkZWYgZXh0ZW5zaW9uKHNlbGYpOgotICAg
ICAgICAiIiJGaWxlIGV4dGVuc2lvbiAtIHRleHQgZm9sbG93aW5nIHRoZSBmaW5hbCBwZXJpb2Qu
IiIiCi0gICAgICAgIHJldHVybiBzZWxmLnNwbGl0KClbMl0KLQotICAgIGRlZiBub19leHRlbnNp
b24oc2VsZik6Ci0gICAgICAgICIiIkZpbGUgaGFzIG5vIHNvdXJjZSBmaWxlIGV4dGVuc2lvbi4i
IiIKLSAgICAgICAgcmV0dXJuICcvJy5qb2luKHNlbGYuc3BsaXQoKVswOjJdKQotCi0gICAgZGVm
IGlzX3NvdXJjZShzZWxmKToKLSAgICAgICAgIiIiRmlsZSBoYXMgYSBzb3VyY2UgZmlsZSBleHRl
bnNpb24uIiIiCi0gICAgICAgIHJldHVybiBzZWxmLmV4dGVuc2lvbigpWzE6XSBpbiAoJ2MnLCAn
Y2MnLCAnY3BwJywgJ2N4eCcpCi0KLQotZGVmIF9zaG91bGRfcHJpbnRfZXJyb3IoY2F0ZWdvcnks
IGNvbmZpZGVuY2UpOgotICAgICIiIlJldHVybnMgdHJ1ZSBpZmYgY29uZmlkZW5jZSA+PSB2ZXJi
b3NlLCBhbmQgY2F0ZWdvcnkgcGFzc2VzIGZpbHRlci4iIiIKLSAgICAjIFRoZXJlIGFyZSB0d28g
d2F5cyB3ZSBtaWdodCBkZWNpZGUgbm90IHRvIHByaW50IGFuIGVycm9yIG1lc3NhZ2U6Ci0gICAg
IyB0aGUgdmVyYm9zaXR5IGxldmVsIGlzbid0IGhpZ2ggZW5vdWdoLCBvciB0aGUgZmlsdGVycyBm
aWx0ZXIgaXQgb3V0LgotICAgIGlmIGNvbmZpZGVuY2UgPCBfY3BwbGludF9zdGF0ZS52ZXJib3Nl
X2xldmVsOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGlzX2ZpbHRlcmVkID0gRmFsc2UK
LSAgICBmb3Igb25lX2ZpbHRlciBpbiBfZmlsdGVycygpOgotICAgICAgICBpZiBvbmVfZmlsdGVy
LnN0YXJ0c3dpdGgoJy0nKToKLSAgICAgICAgICAgIGlmIGNhdGVnb3J5LnN0YXJ0c3dpdGgob25l
X2ZpbHRlclsxOl0pOgotICAgICAgICAgICAgICAgIGlzX2ZpbHRlcmVkID0gVHJ1ZQotICAgICAg
ICBlbGlmIG9uZV9maWx0ZXIuc3RhcnRzd2l0aCgnKycpOgotICAgICAgICAgICAgaWYgY2F0ZWdv
cnkuc3RhcnRzd2l0aChvbmVfZmlsdGVyWzE6XSk6Ci0gICAgICAgICAgICAgICAgaXNfZmlsdGVy
ZWQgPSBGYWxzZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXNzZXJ0IEZhbHNlICAjIHNo
b3VsZCBoYXZlIGJlZW4gY2hlY2tlZCBmb3IgaW4gU2V0RmlsdGVyLgotICAgIGlmIGlzX2ZpbHRl
cmVkOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIHJldHVybiBUcnVlCi0KLQotZGVmIGVy
cm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2Up
OgotICAgICIiIkxvZ3MgdGhlIGZhY3Qgd2UndmUgZm91bmQgYSBsaW50IGVycm9yLgotCi0gICAg
V2UgbG9nIHdoZXJlIHRoZSBlcnJvciB3YXMgZm91bmQsIGFuZCBhbHNvIG91ciBjb25maWRlbmNl
IGluIHRoZSBlcnJvciwKLSAgICB0aGF0IGlzLCBob3cgY2VydGFpbiB3ZSBhcmUgdGhpcyBpcyBh
IGxlZ2l0aW1hdGUgc3R5bGUgcmVncmVzc2lvbiwgYW5kCi0gICAgbm90IGEgbWlzaWRlbnRpZmlj
YXRpb24gb3IgYSB1c2UgdGhhdCdzIHNvbWV0aW1lcyBqdXN0aWZpZWQuCi0KLSAgICBBcmdzOgot
ICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGVycm9y
LgotICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgY29udGFpbmluZyB0
aGUgZXJyb3IuCi0gICAgICBjYXRlZ29yeTogQSBzdHJpbmcgdXNlZCB0byBkZXNjcmliZSB0aGUg
ImNhdGVnb3J5IiB0aGlzIGJ1ZwotICAgICAgICAgICAgICAgIGZhbGxzIHVuZGVyOiAid2hpdGVz
cGFjZSIsIHNheSwgb3IgInJ1bnRpbWUiLiAgQ2F0ZWdvcmllcwotICAgICAgICAgICAgICAgIG1h
eSBoYXZlIGEgaGllcmFyY2h5IHNlcGFyYXRlZCBieSBzbGFzaGVzOiAid2hpdGVzcGFjZS9pbmRl
bnQiLgotICAgICAgY29uZmlkZW5jZTogQSBudW1iZXIgZnJvbSAxLTUgcmVwcmVzZW50aW5nIGEg
Y29uZmlkZW5jZSBzY29yZSBmb3IKLSAgICAgICAgICAgICAgICAgIHRoZSBlcnJvciwgd2l0aCA1
IG1lYW5pbmcgdGhhdCB3ZSBhcmUgY2VydGFpbiBvZiB0aGUgcHJvYmxlbSwKLSAgICAgICAgICAg
ICAgICAgIGFuZCAxIG1lYW5pbmcgdGhhdCBpdCBjb3VsZCBiZSBhIGxlZ2l0aW1hdGUgY29uc3Ry
dWN0LgotICAgICAgbWVzc2FnZTogVGhlIGVycm9yIG1lc3NhZ2UuCi0gICAgIiIiCi0gICAgIyBU
aGVyZSBhcmUgdHdvIHdheXMgd2UgbWlnaHQgZGVjaWRlIG5vdCB0byBwcmludCBhbiBlcnJvciBt
ZXNzYWdlOgotICAgICMgdGhlIHZlcmJvc2l0eSBsZXZlbCBpc24ndCBoaWdoIGVub3VnaCwgb3Ig
dGhlIGZpbHRlcnMgZmlsdGVyIGl0IG91dC4KLSAgICBpZiBfc2hvdWxkX3ByaW50X2Vycm9yKGNh
dGVnb3J5LCBjb25maWRlbmNlKToKLSAgICAgICAgX2NwcGxpbnRfc3RhdGUuaW5jcmVtZW50X2Vy
cm9yX2NvdW50KCkKLSAgICAgICAgaWYgX2NwcGxpbnRfc3RhdGUub3V0cHV0X2Zvcm1hdCA9PSAn
dnM3JzoKLSAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJyVzKCVzKTogICVzICBbJXNdIFsl
ZF1cbicgJSAoCi0gICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBtZXNzYWdl
LCBjYXRlZ29yeSwgY29uZmlkZW5jZSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzeXMu
c3RkZXJyLndyaXRlKCclczolczogICVzICBbJXNdIFslZF1cbicgJSAoCi0gICAgICAgICAgICAg
ICAgZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBtZXNzYWdlLCBjYXRlZ29yeSwgY29uZmlkZW5jZSkp
Ci0KLQotIyBNYXRjaGVzIHN0YW5kYXJkIEMrKyBlc2NhcGUgZXNlcXVlbmNlcyBwZXIgMi4xMy4y
LjMgb2YgdGhlIEMrKyBzdGFuZGFyZC4KLV9SRV9QQVRURVJOX0NMRUFOU0VfTElORV9FU0NBUEVT
ID0gcmUuY29tcGlsZSgKLSAgICByJ1xcKFthYmZucnR2PyJcXFwnXXxcZCt8eFswLTlhLWZBLUZd
KyknKQotIyBNYXRjaGVzIHN0cmluZ3MuICBFc2NhcGUgY29kZXMgc2hvdWxkIGFscmVhZHkgYmUg
cmVtb3ZlZCBieSBFU0NBUEVTLgotX1JFX1BBVFRFUk5fQ0xFQU5TRV9MSU5FX0RPVUJMRV9RVU9U
RVMgPSByZS5jb21waWxlKHInIlteIl0qIicpCi0jIE1hdGNoZXMgY2hhcmFjdGVycy4gIEVzY2Fw
ZSBjb2RlcyBzaG91bGQgYWxyZWFkeSBiZSByZW1vdmVkIGJ5IEVTQ0FQRVMuCi1fUkVfUEFUVEVS
Tl9DTEVBTlNFX0xJTkVfU0lOR0xFX1FVT1RFUyA9IHJlLmNvbXBpbGUociInLiciKQotIyBNYXRj
aGVzIG11bHRpLWxpbmUgQysrIGNvbW1lbnRzLgotIyBUaGlzIFJFIGlzIGEgbGl0dGxlIGJpdCBt
b3JlIGNvbXBsaWNhdGVkIHRoYW4gb25lIG1pZ2h0IGV4cGVjdCwgYmVjYXVzZSB3ZQotIyBoYXZl
IHRvIHRha2UgY2FyZSBvZiBzcGFjZSByZW1vdmFscyB0b29scyBzbyB3ZSBjYW4gaGFuZGxlIGNv
bW1lbnRzIGluc2lkZQotIyBzdGF0ZW1lbnRzIGJldHRlci4KLSMgVGhlIGN1cnJlbnQgcnVsZSBp
czogV2Ugb25seSBjbGVhciBzcGFjZXMgZnJvbSBib3RoIHNpZGVzIHdoZW4gd2UncmUgYXQgdGhl
Ci0jIGVuZCBvZiB0aGUgbGluZS4gT3RoZXJ3aXNlLCB3ZSB0cnkgdG8gcmVtb3ZlIHNwYWNlcyBm
cm9tIHRoZSByaWdodCBzaWRlLAotIyBpZiB0aGlzIGRvZXNuJ3Qgd29yayB3ZSB0cnkgb24gbGVm
dCBzaWRlIGJ1dCBvbmx5IGlmIHRoZXJlJ3MgYSBub24tY2hhcmFjdGVyCi0jIG9uIHRoZSByaWdo
dC4KLV9SRV9QQVRURVJOX0NMRUFOU0VfTElORV9DX0NPTU1FTlRTID0gcmUuY29tcGlsZSgKLSAg
ICByIiIiKFxzKi9cKi4qXCovXHMqJHwKLSAgICAgICAgICAgIC9cKi4qXCovXHMrfAotICAgICAg
ICAgXHMrL1wqLipcKi8oPz1cVyl8Ci0gICAgICAgICAgICAvXCouKlwqLykiIiIsIHJlLlZFUkJP
U0UpCi0KLQotZGVmIGlzX2NwcF9zdHJpbmcobGluZSk6Ci0gICAgIiIiRG9lcyBsaW5lIHRlcm1p
bmF0ZSBzbywgdGhhdCB0aGUgbmV4dCBzeW1ib2wgaXMgaW4gc3RyaW5nIGNvbnN0YW50LgotCi0g
ICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjb25zaWRlciBzaW5nbGUtbGluZSBub3IgbXVsdGkt
bGluZSBjb21tZW50cy4KLQotICAgIEFyZ3M6Ci0gICAgICBsaW5lOiBpcyBhIHBhcnRpYWwgbGlu
ZSBvZiBjb2RlIHN0YXJ0aW5nIGZyb20gdGhlIDAuLm4uCi0KLSAgICBSZXR1cm5zOgotICAgICAg
VHJ1ZSwgaWYgbmV4dCBjaGFyYWN0ZXIgYXBwZW5kZWQgdG8gJ2xpbmUnIGlzIGluc2lkZSBhCi0g
ICAgICBzdHJpbmcgY29uc3RhbnQuCi0gICAgIiIiCi0KLSAgICBsaW5lID0gbGluZS5yZXBsYWNl
KHInXFwnLCAnWFgnKSAgIyBhZnRlciB0aGlzLCBcXCIgZG9lcyBub3QgbWF0Y2ggdG8gXCIKLSAg
ICByZXR1cm4gKChsaW5lLmNvdW50KCciJykgLSBsaW5lLmNvdW50KHInXCInKSAtIGxpbmUuY291
bnQoIidcIiciKSkgJiAxKSA9PSAxCi0KLQotZGVmIGZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1l
bnRfc3RhcnQobGluZXMsIGxpbmVfaW5kZXgpOgotICAgICIiIkZpbmQgdGhlIGJlZ2lubmluZyBt
YXJrZXIgZm9yIGEgbXVsdGlsaW5lIGNvbW1lbnQuIiIiCi0gICAgd2hpbGUgbGluZV9pbmRleCA8
IGxlbihsaW5lcyk6Ci0gICAgICAgIGlmIGxpbmVzW2xpbmVfaW5kZXhdLnN0cmlwKCkuc3RhcnRz
d2l0aCgnLyonKToKLSAgICAgICAgICAgICMgT25seSByZXR1cm4gdGhpcyBtYXJrZXIgaWYgdGhl
IGNvbW1lbnQgZ29lcyBiZXlvbmQgdGhpcyBsaW5lCi0gICAgICAgICAgICBpZiBsaW5lc1tsaW5l
X2luZGV4XS5zdHJpcCgpLmZpbmQoJyovJywgMikgPCAwOgotICAgICAgICAgICAgICAgIHJldHVy
biBsaW5lX2luZGV4Ci0gICAgICAgIGxpbmVfaW5kZXggKz0gMQotICAgIHJldHVybiBsZW4obGlu
ZXMpCi0KLQotZGVmIGZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfZW5kKGxpbmVzLCBsaW5l
X2luZGV4KToKLSAgICAiIiJXZSBhcmUgaW5zaWRlIGEgY29tbWVudCwgZmluZCB0aGUgZW5kIG1h
cmtlci4iIiIKLSAgICB3aGlsZSBsaW5lX2luZGV4IDwgbGVuKGxpbmVzKToKLSAgICAgICAgaWYg
bGluZXNbbGluZV9pbmRleF0uc3RyaXAoKS5lbmRzd2l0aCgnKi8nKToKLSAgICAgICAgICAgIHJl
dHVybiBsaW5lX2luZGV4Ci0gICAgICAgIGxpbmVfaW5kZXggKz0gMQotICAgIHJldHVybiBsZW4o
bGluZXMpCi0KLQotZGVmIHJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzX2Zyb21fcmFuZ2UobGlu
ZXMsIGJlZ2luLCBlbmQpOgotICAgICIiIkNsZWFycyBhIHJhbmdlIG9mIGxpbmVzIGZvciBtdWx0
aS1saW5lIGNvbW1lbnRzLiIiIgotICAgICMgSGF2aW5nIC8vIGR1bW15IGNvbW1lbnRzIG1ha2Vz
IHRoZSBsaW5lcyBub24tZW1wdHksIHNvIHdlIHdpbGwgbm90IGdldAotICAgICMgdW5uZWNlc3Nh
cnkgYmxhbmsgbGluZSB3YXJuaW5ncyBsYXRlciBpbiB0aGUgY29kZS4KLSAgICBmb3IgaSBpbiBy
YW5nZShiZWdpbiwgZW5kKToKLSAgICAgICAgbGluZXNbaV0gPSAnLy8gZHVtbXknCi0KLQotZGVm
IHJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpOgotICAg
ICIiIlJlbW92ZXMgbXVsdGlsaW5lIChjLXN0eWxlKSBjb21tZW50cyBmcm9tIGxpbmVzLiIiIgot
ICAgIGxpbmVfaW5kZXggPSAwCi0gICAgd2hpbGUgbGluZV9pbmRleCA8IGxlbihsaW5lcyk6Ci0g
ICAgICAgIGxpbmVfaW5kZXhfYmVnaW4gPSBmaW5kX25leHRfbXVsdGlfbGluZV9jb21tZW50X3N0
YXJ0KGxpbmVzLCBsaW5lX2luZGV4KQotICAgICAgICBpZiBsaW5lX2luZGV4X2JlZ2luID49IGxl
bihsaW5lcyk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgbGluZV9pbmRleF9lbmQgPSBm
aW5kX25leHRfbXVsdGlfbGluZV9jb21tZW50X2VuZChsaW5lcywgbGluZV9pbmRleF9iZWdpbikK
LSAgICAgICAgaWYgbGluZV9pbmRleF9lbmQgPj0gbGVuKGxpbmVzKToKLSAgICAgICAgICAgIGVy
cm9yKGZpbGVuYW1lLCBsaW5lX2luZGV4X2JlZ2luICsgMSwgJ3JlYWRhYmlsaXR5L211bHRpbGlu
ZV9jb21tZW50JywgNSwKLSAgICAgICAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCBlbmQgb2Yg
bXVsdGktbGluZSBjb21tZW50JykKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICByZW1vdmVf
bXVsdGlfbGluZV9jb21tZW50c19mcm9tX3JhbmdlKGxpbmVzLCBsaW5lX2luZGV4X2JlZ2luLCBs
aW5lX2luZGV4X2VuZCArIDEpCi0gICAgICAgIGxpbmVfaW5kZXggPSBsaW5lX2luZGV4X2VuZCAr
IDEKLQotCi1kZWYgY2xlYW5zZV9jb21tZW50cyhsaW5lKToKLSAgICAiIiJSZW1vdmVzIC8vLWNv
bW1lbnRzIGFuZCBzaW5nbGUtbGluZSBDLXN0eWxlIC8qICovIGNvbW1lbnRzLgotCi0gICAgQXJn
czoKLSAgICAgIGxpbmU6IEEgbGluZSBvZiBDKysgc291cmNlLgotCi0gICAgUmV0dXJuczoKLSAg
ICAgIFRoZSBsaW5lIHdpdGggc2luZ2xlLWxpbmUgY29tbWVudHMgcmVtb3ZlZC4KLSAgICAiIiIK
LSAgICBjb21tZW50X3Bvc2l0aW9uID0gbGluZS5maW5kKCcvLycpCi0gICAgaWYgY29tbWVudF9w
b3NpdGlvbiAhPSAtMSBhbmQgbm90IGlzX2NwcF9zdHJpbmcobGluZVs6Y29tbWVudF9wb3NpdGlv
bl0pOgotICAgICAgICBsaW5lID0gbGluZVs6Y29tbWVudF9wb3NpdGlvbl0KLSAgICAjIGdldCBy
aWQgb2YgLyogLi4uICovCi0gICAgcmV0dXJuIF9SRV9QQVRURVJOX0NMRUFOU0VfTElORV9DX0NP
TU1FTlRTLnN1YignJywgbGluZSkKLQotCi1jbGFzcyBDbGVhbnNlZExpbmVzKG9iamVjdCk6Ci0g
ICAgIiIiSG9sZHMgMyBjb3BpZXMgb2YgYWxsIGxpbmVzIHdpdGggZGlmZmVyZW50IHByZXByb2Nl
c3NpbmcgYXBwbGllZCB0byB0aGVtLgotCi0gICAgMSkgZWxpZGVkIG1lbWJlciBjb250YWlucyBs
aW5lcyB3aXRob3V0IHN0cmluZ3MgYW5kIGNvbW1lbnRzLAotICAgIDIpIGxpbmVzIG1lbWJlciBj
b250YWlucyBsaW5lcyB3aXRob3V0IGNvbW1lbnRzLCBhbmQKLSAgICAzKSByYXcgbWVtYmVyIGNv
bnRhaW5zIGFsbCB0aGUgbGluZXMgd2l0aG91dCBwcm9jZXNzaW5nLgotICAgIEFsbCB0aGVzZSB0
aHJlZSBtZW1iZXJzIGFyZSBvZiA8dHlwZSAnbGlzdCc+LCBhbmQgb2YgdGhlIHNhbWUgbGVuZ3Ro
LgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVzKToKLSAgICAgICAgc2Vs
Zi5lbGlkZWQgPSBbXQotICAgICAgICBzZWxmLmxpbmVzID0gW10KLSAgICAgICAgc2VsZi5yYXdf
bGluZXMgPSBsaW5lcwotICAgICAgICBzZWxmLl9udW1fbGluZXMgPSBsZW4obGluZXMpCi0gICAg
ICAgIGZvciBsaW5lX251bWJlciBpbiByYW5nZShsZW4obGluZXMpKToKLSAgICAgICAgICAgIHNl
bGYubGluZXMuYXBwZW5kKGNsZWFuc2VfY29tbWVudHMobGluZXNbbGluZV9udW1iZXJdKSkKLSAg
ICAgICAgICAgIGVsaWRlZCA9IHNlbGYuX2NvbGxhcHNlX3N0cmluZ3MobGluZXNbbGluZV9udW1i
ZXJdKQotICAgICAgICAgICAgc2VsZi5lbGlkZWQuYXBwZW5kKGNsZWFuc2VfY29tbWVudHMoZWxp
ZGVkKSkKLQotICAgIGRlZiBudW1fbGluZXMoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgdGhl
IG51bWJlciBvZiBsaW5lcyByZXByZXNlbnRlZC4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX251
bV9saW5lcwotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfY29sbGFwc2Vfc3RyaW5ncyhl
bGlkZWQpOgotICAgICAgICAiIiJDb2xsYXBzZXMgc3RyaW5ncyBhbmQgY2hhcnMgb24gYSBsaW5l
IHRvIHNpbXBsZSAiIiBvciAnJyBibG9ja3MuCi0KLSAgICAgICAgV2Ugbml4IHN0cmluZ3MgZmly
c3Qgc28gd2UncmUgbm90IGZvb2xlZCBieSB0ZXh0IGxpa2UgJyJodHRwOi8vIicKLQotICAgICAg
ICBBcmdzOgotICAgICAgICAgIGVsaWRlZDogVGhlIGxpbmUgYmVpbmcgcHJvY2Vzc2VkLgotCi0g
ICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgVGhlIGxpbmUgd2l0aCBjb2xsYXBzZWQgc3RyaW5n
cy4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBfUkVfUEFUVEVSTl9JTkNMVURFLm1hdGNo
KGVsaWRlZCk6Ci0gICAgICAgICAgICAjIFJlbW92ZSBlc2NhcGVkIGNoYXJhY3RlcnMgZmlyc3Qg
dG8gbWFrZSBxdW90ZS9zaW5nbGUgcXVvdGUgY29sbGFwc2luZwotICAgICAgICAgICAgIyBiYXNp
Yy4gIFRoaW5ncyB0aGF0IGxvb2sgbGlrZSBlc2NhcGVkIGNoYXJhY3RlcnMgc2hvdWxkbid0IG9j
Y3VyCi0gICAgICAgICAgICAjIG91dHNpZGUgb2Ygc3RyaW5ncyBhbmQgY2hhcnMuCi0gICAgICAg
ICAgICBlbGlkZWQgPSBfUkVfUEFUVEVSTl9DTEVBTlNFX0xJTkVfRVNDQVBFUy5zdWIoJycsIGVs
aWRlZCkKLSAgICAgICAgICAgIGVsaWRlZCA9IF9SRV9QQVRURVJOX0NMRUFOU0VfTElORV9TSU5H
TEVfUVVPVEVTLnN1YigiJyciLCBlbGlkZWQpCi0gICAgICAgICAgICBlbGlkZWQgPSBfUkVfUEFU
VEVSTl9DTEVBTlNFX0xJTkVfRE9VQkxFX1FVT1RFUy5zdWIoJyIiJywgZWxpZGVkKQotICAgICAg
ICByZXR1cm4gZWxpZGVkCi0KLQotZGVmIGNsb3NlX2V4cHJlc3Npb24oY2xlYW5fbGluZXMsIGxp
bmVfbnVtYmVyLCBwb3MpOgotICAgICIiIklmIGlucHV0IHBvaW50cyB0byAoIG9yIHsgb3IgWywg
ZmluZHMgdGhlIHBvc2l0aW9uIHRoYXQgY2xvc2VzIGl0LgotCi0gICAgSWYgbGluZXNbbGluZV9u
dW1iZXJdW3Bvc10gcG9pbnRzIHRvIGEgJygnIG9yICd7JyBvciAnWycsIGZpbmRzIHRoZSB0aGUK
LSAgICBsaW5lX251bWJlci9wb3MgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSBjbG9zaW5nIG9mIHRo
ZSBleHByZXNzaW9uLgotCi0gICAgQXJnczoKLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2Vk
TGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBU
aGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgcG9zOiBBIHBvc2l0aW9uIG9u
IHRoZSBsaW5lLgotCi0gICAgUmV0dXJuczoKLSAgICAgIEEgdHVwbGUgKGxpbmUsIGxpbmVfbnVt
YmVyLCBwb3MpIHBvaW50ZXIgKnBhc3QqIHRoZSBjbG9zaW5nIGJyYWNlLCBvcgotICAgICAgKGxp
bmUsIGxlbihsaW5lcyksIC0xKSBpZiB3ZSBuZXZlciBmaW5kIGEgY2xvc2UuICBOb3RlIHdlIGln
bm9yZQotICAgICAgc3RyaW5ncyBhbmQgY29tbWVudHMgd2hlbiBtYXRjaGluZzsgYW5kIHRoZSBs
aW5lIHdlIHJldHVybiBpcyB0aGUKLSAgICAgICdjbGVhbnNlZCcgbGluZSBhdCBsaW5lX251bWJl
ci4KLSAgICAiIiIKLQotICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJd
Ci0gICAgc3RhcnRfY2hhcmFjdGVyID0gbGluZVtwb3NdCi0gICAgaWYgc3RhcnRfY2hhcmFjdGVy
IG5vdCBpbiAnKHtbJzoKLSAgICAgICAgcmV0dXJuIChsaW5lLCBjbGVhbl9saW5lcy5udW1fbGlu
ZXMoKSwgLTEpCi0gICAgaWYgc3RhcnRfY2hhcmFjdGVyID09ICcoJzoKLSAgICAgICAgZW5kX2No
YXJhY3RlciA9ICcpJwotICAgIGlmIHN0YXJ0X2NoYXJhY3RlciA9PSAnWyc6Ci0gICAgICAgIGVu
ZF9jaGFyYWN0ZXIgPSAnXScKLSAgICBpZiBzdGFydF9jaGFyYWN0ZXIgPT0gJ3snOgotICAgICAg
ICBlbmRfY2hhcmFjdGVyID0gJ30nCi0KLSAgICBudW1fb3BlbiA9IGxpbmUuY291bnQoc3RhcnRf
Y2hhcmFjdGVyKSAtIGxpbmUuY291bnQoZW5kX2NoYXJhY3RlcikKLSAgICB3aGlsZSBsaW5lX251
bWJlciA8IGNsZWFuX2xpbmVzLm51bV9saW5lcygpIGFuZCBudW1fb3BlbiA+IDA6Ci0gICAgICAg
IGxpbmVfbnVtYmVyICs9IDEKLSAgICAgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5l
X251bWJlcl0KLSAgICAgICAgbnVtX29wZW4gKz0gbGluZS5jb3VudChzdGFydF9jaGFyYWN0ZXIp
IC0gbGluZS5jb3VudChlbmRfY2hhcmFjdGVyKQotICAgICMgT0ssIG5vdyBmaW5kIHRoZSBlbmRf
Y2hhcmFjdGVyIHRoYXQgYWN0dWFsbHkgZ290IHVzIGJhY2sgdG8gZXZlbgotICAgIGVuZHBvcyA9
IGxlbihsaW5lKQotICAgIHdoaWxlIG51bV9vcGVuID49IDA6Ci0gICAgICAgIGVuZHBvcyA9IGxp
bmUucmZpbmQoJyknLCAwLCBlbmRwb3MpCi0gICAgICAgIG51bV9vcGVuIC09IDEgICAgICAgICAg
ICAgICAgICMgY2hvcHBlZCBvZmYgYW5vdGhlciApCi0gICAgcmV0dXJuIChsaW5lLCBsaW5lX251
bWJlciwgZW5kcG9zICsgMSkKLQotCi1kZWYgY2hlY2tfZm9yX2NvcHlyaWdodChmaWxlbmFtZSwg
bGluZXMsIGVycm9yKToKLSAgICAiIiJMb2dzIGFuIGVycm9yIGlmIG5vIENvcHlyaWdodCBtZXNz
YWdlIGFwcGVhcnMgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZS4iIiIKLQotICAgICMgV2UnbGwgc2F5
IGl0IHNob3VsZCBvY2N1ciBieSBsaW5lIDEwLiBEb24ndCBmb3JnZXQgdGhlcmUncyBhCi0gICAg
IyBkdW1teSBsaW5lIGF0IHRoZSBmcm9udC4KLSAgICBmb3IgbGluZSBpbiB4cmFuZ2UoMSwgbWlu
KGxlbihsaW5lcyksIDExKSk6Ci0gICAgICAgIGlmIHJlLnNlYXJjaChyJ0NvcHlyaWdodCcsIGxp
bmVzW2xpbmVdLCByZS5JKToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgZWxzZTogICAgICAgICAg
ICAgICAgICAgICAgICMgbWVhbnMgbm8gY29weXJpZ2h0IGxpbmUgd2FzIGZvdW5kCi0gICAgICAg
IGVycm9yKGZpbGVuYW1lLCAwLCAnbGVnYWwvY29weXJpZ2h0JywgNSwKLSAgICAgICAgICAgICAg
J05vIGNvcHlyaWdodCBtZXNzYWdlIGZvdW5kLiAgJwotICAgICAgICAgICAgICAnWW91IHNob3Vs
ZCBoYXZlIGEgbGluZTogIkNvcHlyaWdodCBbeWVhcl0gPENvcHlyaWdodCBPd25lcj4iJykKLQot
Ci1kZWYgZ2V0X2hlYWRlcl9ndWFyZF9jcHBfdmFyaWFibGUoZmlsZW5hbWUpOgotICAgICIiIlJl
dHVybnMgdGhlIENQUCB2YXJpYWJsZSB0aGF0IHNob3VsZCBiZSB1c2VkIGFzIGEgaGVhZGVyIGd1
YXJkLgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiBhIEMrKyBoZWFk
ZXIgZmlsZS4KLQotICAgIFJldHVybnM6Ci0gICAgICBUaGUgQ1BQIHZhcmlhYmxlIHRoYXQgc2hv
dWxkIGJlIHVzZWQgYXMgYSBoZWFkZXIgZ3VhcmQgaW4gdGhlCi0gICAgICBuYW1lZCBmaWxlLgot
Ci0gICAgIiIiCi0KLSAgICBmaWxlaW5mbyA9IEZpbGVJbmZvKGZpbGVuYW1lKQotICAgIHJldHVy
biByZS5zdWIocidbLS4vXHNdJywgJ18nLCBmaWxlaW5mby5yZXBvc2l0b3J5X25hbWUoKSkudXBw
ZXIoKSArICdfJwotCi0KLWRlZiBjaGVja19mb3JfaGVhZGVyX2d1YXJkKGZpbGVuYW1lLCBsaW5l
cywgZXJyb3IpOgotICAgICIiIkNoZWNrcyB0aGF0IHRoZSBmaWxlIGNvbnRhaW5zIGEgaGVhZGVy
IGd1YXJkLgotCi0gICAgTG9ncyBhbiBlcnJvciBpZiBubyAjaWZuZGVmIGhlYWRlciBndWFyZCBp
cyBwcmVzZW50LiAgRm9yIG90aGVyCi0gICAgaGVhZGVycywgY2hlY2tzIHRoYXQgdGhlIGZ1bGwg
cGF0aG5hbWUgaXMgdXNlZC4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUg
b2YgdGhlIEMrKyBoZWFkZXIgZmlsZS4KLSAgICAgIGxpbmVzOiBBbiBhcnJheSBvZiBzdHJpbmdz
LCBlYWNoIHJlcHJlc2VudGluZyBhIGxpbmUgb2YgdGhlIGZpbGUuCi0gICAgICBlcnJvcjogVGhl
IGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICIiIgotCi0gICAg
Y3BwdmFyID0gZ2V0X2hlYWRlcl9ndWFyZF9jcHBfdmFyaWFibGUoZmlsZW5hbWUpCi0KLSAgICBp
Zm5kZWYgPSBOb25lCi0gICAgaWZuZGVmX2xpbmVfbnVtYmVyID0gMAotICAgIGRlZmluZSA9IE5v
bmUKLSAgICBlbmRpZiA9IE5vbmUKLSAgICBlbmRpZl9saW5lX251bWJlciA9IDAKLSAgICBmb3Ig
bGluZV9udW1iZXIsIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToKLSAgICAgICAgbGluZV9zcGxp
dCA9IGxpbmUuc3BsaXQoKQotICAgICAgICBpZiBsZW4obGluZV9zcGxpdCkgPj0gMjoKLSAgICAg
ICAgICAgICMgZmluZCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAjaWZuZGVmIGFuZCAjZGVmaW5l
LCBzYXZlIGFyZwotICAgICAgICAgICAgaWYgbm90IGlmbmRlZiBhbmQgbGluZV9zcGxpdFswXSA9
PSAnI2lmbmRlZic6Ci0gICAgICAgICAgICAgICAgIyBzZXQgaWZuZGVmIHRvIHRoZSBoZWFkZXIg
Z3VhcmQgcHJlc2VudGVkIG9uIHRoZSAjaWZuZGVmIGxpbmUuCi0gICAgICAgICAgICAgICAgaWZu
ZGVmID0gbGluZV9zcGxpdFsxXQotICAgICAgICAgICAgICAgIGlmbmRlZl9saW5lX251bWJlciA9
IGxpbmVfbnVtYmVyCi0gICAgICAgICAgICBpZiBub3QgZGVmaW5lIGFuZCBsaW5lX3NwbGl0WzBd
ID09ICcjZGVmaW5lJzoKLSAgICAgICAgICAgICAgICBkZWZpbmUgPSBsaW5lX3NwbGl0WzFdCi0g
ICAgICAgICMgZmluZCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICNlbmRpZiwgc2F2ZSBlbnRpcmUg
bGluZQotICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyNlbmRpZicpOgotICAgICAgICAgICAg
ZW5kaWYgPSBsaW5lCi0gICAgICAgICAgICBlbmRpZl9saW5lX251bWJlciA9IGxpbmVfbnVtYmVy
Ci0KLSAgICBpZiBub3QgaWZuZGVmIG9yIG5vdCBkZWZpbmUgb3IgaWZuZGVmICE9IGRlZmluZToK
LSAgICAgICAgZXJyb3IoZmlsZW5hbWUsIDAsICdidWlsZC9oZWFkZXJfZ3VhcmQnLCA1LAotICAg
ICAgICAgICAgICAnTm8gI2lmbmRlZiBoZWFkZXIgZ3VhcmQgZm91bmQsIHN1Z2dlc3RlZCBDUFAg
dmFyaWFibGUgaXM6ICVzJyAlCi0gICAgICAgICAgICAgIGNwcHZhcikKLSAgICAgICAgcmV0dXJu
Ci0KLSAgICAjIFRoZSBndWFyZCBzaG91bGQgYmUgUEFUSF9GSUxFX0hfLCBidXQgd2UgYWxzbyBh
bGxvdyBQQVRIX0ZJTEVfSF9fCi0gICAgIyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KLSAg
ICBpZiBpZm5kZWYgIT0gY3BwdmFyOgotICAgICAgICBlcnJvcl9sZXZlbCA9IDAKLSAgICAgICAg
aWYgaWZuZGVmICE9IGNwcHZhciArICdfJzoKLSAgICAgICAgICAgIGVycm9yX2xldmVsID0gNQot
Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBpZm5kZWZfbGluZV9udW1iZXIsICdidWlsZC9oZWFk
ZXJfZ3VhcmQnLCBlcnJvcl9sZXZlbCwKLSAgICAgICAgICAgICAgJyNpZm5kZWYgaGVhZGVyIGd1
YXJkIGhhcyB3cm9uZyBzdHlsZSwgcGxlYXNlIHVzZTogJXMnICUgY3BwdmFyKQotCi0gICAgaWYg
ZW5kaWYgIT0gKCcjZW5kaWYgIC8vICVzJyAlIGNwcHZhcik6Ci0gICAgICAgIGVycm9yX2xldmVs
ID0gMAotICAgICAgICBpZiBlbmRpZiAhPSAoJyNlbmRpZiAgLy8gJXMnICUgKGNwcHZhciArICdf
JykpOgotICAgICAgICAgICAgZXJyb3JfbGV2ZWwgPSA1Ci0KLSAgICAgICAgZXJyb3IoZmlsZW5h
bWUsIGVuZGlmX2xpbmVfbnVtYmVyLCAnYnVpbGQvaGVhZGVyX2d1YXJkJywgZXJyb3JfbGV2ZWws
Ci0gICAgICAgICAgICAgICcjZW5kaWYgbGluZSBzaG91bGQgYmUgIiNlbmRpZiAgLy8gJXMiJyAl
IGNwcHZhcikKLQotCi1kZWYgY2hlY2tfZm9yX3VuaWNvZGVfcmVwbGFjZW1lbnRfY2hhcmFjdGVy
cyhmaWxlbmFtZSwgbGluZXMsIGVycm9yKToKLSAgICAiIiJMb2dzIGFuIGVycm9yIGZvciBlYWNo
IGxpbmUgY29udGFpbmluZyBVbmljb2RlIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMuCi0KLSAgICBU
aGVzZSBpbmRpY2F0ZSB0aGF0IGVpdGhlciB0aGUgZmlsZSBjb250YWluZWQgaW52YWxpZCBVVEYt
OCAobGlrZWx5KQotICAgIG9yIFVuaWNvZGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVycyAod2hpY2gg
aXQgc2hvdWxkbid0KS4gIE5vdGUgdGhhdAotICAgIGl0J3MgcG9zc2libGUgZm9yIHRoaXMgdG8g
dGhyb3cgb2ZmIGxpbmUgbnVtYmVyaW5nIGlmIHRoZSBpbnZhbGlkCi0gICAgVVRGLTggb2NjdXJy
ZWQgYWRqYWNlbnQgdG8gYSBuZXdsaW5lLgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBU
aGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgotICAgICAgbGluZXM6IEFuIGFycmF5IG9mIHN0
cmluZ3MsIGVhY2ggcmVwcmVzZW50aW5nIGEgbGluZSBvZiB0aGUgZmlsZS4KLSAgICAgIGVycm9y
OiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCi0gICAgIiIiCi0g
ICAgZm9yIGxpbmVfbnVtYmVyLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6Ci0gICAgICAgIGlm
IHUnXHVmZmZkJyBpbiBsaW5lOgotICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVt
YmVyLCAncmVhZGFiaWxpdHkvdXRmOCcsIDUsCi0gICAgICAgICAgICAgICAgICAnTGluZSBjb250
YWlucyBpbnZhbGlkIFVURi04IChvciBVbmljb2RlIHJlcGxhY2VtZW50IGNoYXJhY3RlcikuJykK
LQotCi1kZWYgY2hlY2tfZm9yX25ld19saW5lX2F0X2VvZihmaWxlbmFtZSwgbGluZXMsIGVycm9y
KToKLSAgICAiIiJMb2dzIGFuIGVycm9yIGlmIHRoZXJlIGlzIG5vIG5ld2xpbmUgY2hhciBhdCB0
aGUgZW5kIG9mIHRoZSBmaWxlLgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFt
ZSBvZiB0aGUgY3VycmVudCBmaWxlLgotICAgICAgbGluZXM6IEFuIGFycmF5IG9mIHN0cmluZ3Ms
IGVhY2ggcmVwcmVzZW50aW5nIGEgbGluZSBvZiB0aGUgZmlsZS4KLSAgICAgIGVycm9yOiBUaGUg
ZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCi0gICAgIiIiCi0KLSAgICAj
IFRoZSBhcnJheSBsaW5lcygpIHdhcyBjcmVhdGVkIGJ5IGFkZGluZyB0d28gbmV3bGluZXMgdG8g
dGhlCi0gICAgIyBvcmlnaW5hbCBmaWxlIChnbyBmaWd1cmUpLCB0aGVuIHNwbGl0dGluZyBvbiBc
bi4KLSAgICAjIFRvIHZlcmlmeSB0aGF0IHRoZSBmaWxlIGVuZHMgaW4gXG4sIHdlIGp1c3QgaGF2
ZSB0byBtYWtlIHN1cmUgdGhlCi0gICAgIyBsYXN0LWJ1dC10d28gZWxlbWVudCBvZiBsaW5lcygp
IGV4aXN0cyBhbmQgaXMgZW1wdHkuCi0gICAgaWYgbGVuKGxpbmVzKSA8IDMgb3IgbGluZXNbLTJd
OgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGVuKGxpbmVzKSAtIDIsICd3aGl0ZXNwYWNlL2Vu
ZGluZ19uZXdsaW5lJywgNSwKLSAgICAgICAgICAgICAgJ0NvdWxkIG5vdCBmaW5kIGEgbmV3bGlu
ZSBjaGFyYWN0ZXIgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZS4nKQotCi0KLWRlZiBjaGVja19mb3Jf
bXVsdGlsaW5lX2NvbW1lbnRzX2FuZF9zdHJpbmdzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGlu
ZV9udW1iZXIsIGVycm9yKToKLSAgICAiIiJMb2dzIGFuIGVycm9yIGlmIHdlIHNlZSAvKiAuLi4g
Ki8gb3IgIi4uLiIgdGhhdCBleHRlbmQgcGFzdCBvbmUgbGluZS4KLQotICAgIC8qIC4uLiAqLyBj
b21tZW50cyBhcmUgbGVnaXQgaW5zaWRlIG1hY3JvcywgZm9yIG9uZSBsaW5lLgotICAgIE90aGVy
d2lzZSwgd2UgcHJlZmVyIC8vIGNvbW1lbnRzLCBzbyBpdCdzIG9rIHRvIHdhcm4gYWJvdXQgdGhl
Ci0gICAgb3RoZXIuICBMaWtld2lzZSwgaXQncyBvayBmb3Igc3RyaW5ncyB0byBleHRlbmQgYWNy
b3NzIG11bHRpcGxlCi0gICAgbGluZXMsIGFzIGxvbmcgYXMgYSBsaW5lIGNvbnRpbnVhdGlvbiBj
aGFyYWN0ZXIgKGJhY2tzbGFzaCkKLSAgICB0ZXJtaW5hdGVzIGVhY2ggbGluZS4gQWx0aG91Z2gg
bm90IGN1cnJlbnRseSBwcm9oaWJpdGVkIGJ5IHRoZSBDKysKLSAgICBzdHlsZSBndWlkZSwgaXQn
cyB1Z2x5IGFuZCB1bm5lY2Vzc2FyeS4gV2UgZG9uJ3QgZG8gd2VsbCB3aXRoIGVpdGhlcgotICAg
IGluIHRoaXMgbGludCBwcm9ncmFtLCBzbyB3ZSB3YXJuIGFib3V0IGJvdGguCi0KLSAgICBBcmdz
OgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCi0gICAgICBj
bGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUu
Ci0gICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KLSAg
ICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCi0g
ICAgIiIiCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0KLQotICAg
ICMgUmVtb3ZlIGFsbCBcXCAoZXNjYXBlZCBiYWNrc2xhc2hlcykgZnJvbSB0aGUgbGluZS4gVGhl
eSBhcmUgT0ssIGFuZCB0aGUKLSAgICAjIHNlY29uZCAoZXNjYXBlZCkgc2xhc2ggbWF5IHRyaWdn
ZXIgbGF0ZXIgXCIgZGV0ZWN0aW9uIGVycm9uZW91c2x5LgotICAgIGxpbmUgPSBsaW5lLnJlcGxh
Y2UoJ1xcXFwnLCAnJykKLQotICAgIGlmIGxpbmUuY291bnQoJy8qJykgPiBsaW5lLmNvdW50KCcq
LycpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9t
dWx0aWxpbmVfY29tbWVudCcsIDUsCi0gICAgICAgICAgICAgICdDb21wbGV4IG11bHRpLWxpbmUg
LyouLi4qLy1zdHlsZSBjb21tZW50IGZvdW5kLiAnCi0gICAgICAgICAgICAgICdMaW50IG1heSBn
aXZlIGJvZ3VzIHdhcm5pbmdzLiAgJwotICAgICAgICAgICAgICAnQ29uc2lkZXIgcmVwbGFjaW5n
IHRoZXNlIHdpdGggLy8tc3R5bGUgY29tbWVudHMsICcKLSAgICAgICAgICAgICAgJ3dpdGggI2lm
IDAuLi4jZW5kaWYsICcKLSAgICAgICAgICAgICAgJ29yIHdpdGggbW9yZSBjbGVhcmx5IHN0cnVj
dHVyZWQgbXVsdGktbGluZSBjb21tZW50cy4nKQotCi0gICAgaWYgKGxpbmUuY291bnQoJyInKSAt
IGxpbmUuY291bnQoJ1xcIicpKSAlIDI6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251
bWJlciwgJ3JlYWRhYmlsaXR5L211bHRpbGluZV9zdHJpbmcnLCA1LAotICAgICAgICAgICAgICAn
TXVsdGktbGluZSBzdHJpbmcgKCIuLi4iKSBmb3VuZC4gIFRoaXMgbGludCBzY3JpcHQgZG9lc25c
J3QgJwotICAgICAgICAgICAgICAnZG8gd2VsbCB3aXRoIHN1Y2ggc3RyaW5ncywgYW5kIG1heSBn
aXZlIGJvZ3VzIHdhcm5pbmdzLiAgVGhleVwncmUgJwotICAgICAgICAgICAgICAndWdseSBhbmQg
dW5uZWNlc3NhcnksIGFuZCB5b3Ugc2hvdWxkIHVzZSBjb25jYXRlbmF0aW9uIGluc3RlYWQiLicp
Ci0KLQotX1RIUkVBRElOR19MSVNUID0gKAotICAgICgnYXNjdGltZSgnLCAnYXNjdGltZV9yKCcp
LAotICAgICgnY3RpbWUoJywgJ2N0aW1lX3IoJyksCi0gICAgKCdnZXRncmdpZCgnLCAnZ2V0Z3Jn
aWRfcignKSwKLSAgICAoJ2dldGdybmFtKCcsICdnZXRncm5hbV9yKCcpLAotICAgICgnZ2V0bG9n
aW4oJywgJ2dldGxvZ2luX3IoJyksCi0gICAgKCdnZXRwd25hbSgnLCAnZ2V0cHduYW1fcignKSwK
LSAgICAoJ2dldHB3dWlkKCcsICdnZXRwd3VpZF9yKCcpLAotICAgICgnZ210aW1lKCcsICdnbXRp
bWVfcignKSwKLSAgICAoJ2xvY2FsdGltZSgnLCAnbG9jYWx0aW1lX3IoJyksCi0gICAgKCdyYW5k
KCcsICdyYW5kX3IoJyksCi0gICAgKCdyZWFkZGlyKCcsICdyZWFkZGlyX3IoJyksCi0gICAgKCdz
dHJ0b2soJywgJ3N0cnRva19yKCcpLAotICAgICgndHR5bmFtZSgnLCAndHR5bmFtZV9yKCcpLAot
ICAgICkKLQotCi1kZWYgY2hlY2tfcG9zaXhfdGhyZWFkaW5nKGZpbGVuYW1lLCBjbGVhbl9saW5l
cywgbGluZV9udW1iZXIsIGVycm9yKToKLSAgICAiIiJDaGVja3MgZm9yIGNhbGxzIHRvIHRocmVh
ZC11bnNhZmUgZnVuY3Rpb25zLgotCi0gICAgTXVjaCBjb2RlIGhhcyBiZWVuIG9yaWdpbmFsbHkg
d3JpdHRlbiB3aXRob3V0IGNvbnNpZGVyYXRpb24gb2YKLSAgICBtdWx0aS10aHJlYWRpbmcuIEFs
c28sIGVuZ2luZWVycyBhcmUgcmVseWluZyBvbiB0aGVpciBvbGQgZXhwZXJpZW5jZTsKLSAgICB0
aGV5IGhhdmUgbGVhcm5lZCBwb3NpeCBiZWZvcmUgdGhyZWFkaW5nIGV4dGVuc2lvbnMgd2VyZSBh
ZGRlZC4gVGhlc2UKLSAgICB0ZXN0cyBndWlkZSB0aGUgZW5naW5lZXJzIHRvIHVzZSB0aHJlYWQt
c2FmZSBmdW5jdGlvbnMgKHdoZW4gdXNpbmcKLSAgICBwb3NpeCBkaXJlY3RseSkuCi0KLSAgICBB
cmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCi0gICAg
ICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZp
bGUuCi0gICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4K
LSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQu
Ci0gICAgIiIiCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0KLSAg
ICBmb3Igc2luZ2xlX3RocmVhZF9mdW5jdGlvbiwgbXVsdGl0aHJlYWRfc2FmZV9mdW5jdGlvbiBp
biBfVEhSRUFESU5HX0xJU1Q6Ci0gICAgICAgIGluZGV4ID0gbGluZS5maW5kKHNpbmdsZV90aHJl
YWRfZnVuY3Rpb24pCi0gICAgICAgICMgQ29tcGFyaXNvbnMgbWFkZSBleHBsaWNpdCBmb3IgY2xh
cml0eSAtLSBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAzCi0gICAgICAgIGlmIGluZGV4ID49IDAg
YW5kIChpbmRleCA9PSAwIG9yIChub3QgbGluZVtpbmRleCAtIDFdLmlzYWxudW0oKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxpbmVbaW5kZXggLSAxXSBu
b3QgaW4gKCdfJywgJy4nLCAnPicpKSk6Ci0gICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGlu
ZV9udW1iZXIsICdydW50aW1lL3RocmVhZHNhZmVfZm4nLCAyLAotICAgICAgICAgICAgICAgICAg
J0NvbnNpZGVyIHVzaW5nICcgKyBtdWx0aXRocmVhZF9zYWZlX2Z1bmN0aW9uICsKLSAgICAgICAg
ICAgICAgICAgICcuLi4pIGluc3RlYWQgb2YgJyArIHNpbmdsZV90aHJlYWRfZnVuY3Rpb24gKwot
ICAgICAgICAgICAgICAgICAgJy4uLikgZm9yIGltcHJvdmVkIHRocmVhZCBzYWZldHkuJykKLQot
Ci0jIE1hdGNoZXMgaW52YWxpZCBpbmNyZW1lbnQ6ICpjb3VudCsrLCB3aGljaCBtb3ZlcyBwb2lu
dGVyIGluc3RlYWQgb2YKLSMgaW5jcmVtZW50aW5nIGEgdmFsdWUuCi1fUkVfUEFUVEVSTl9JTlZB
TElEX0lOQ1JFTUVOVCA9IHJlLmNvbXBpbGUoCi0gICAgcideXHMqXCpcdysoXCtcK3wtLSk7JykK
LQotCi1kZWYgY2hlY2tfaW52YWxpZF9pbmNyZW1lbnQoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBs
aW5lX251bWJlciwgZXJyb3IpOgotICAgICIiIkNoZWNrcyBmb3IgaW52YWxpZCBpbmNyZW1lbnQg
KmNvdW50KysuCi0KLSAgICBGb3IgZXhhbXBsZSBmb2xsb3dpbmcgZnVuY3Rpb246Ci0gICAgdm9p
ZCBpbmNyZW1lbnRfY291bnRlcihpbnQqIGNvdW50KSB7Ci0gICAgICAgICpjb3VudCsrOwotICAg
IH0KLSAgICBpcyBpbnZhbGlkLCBiZWNhdXNlIGl0IGVmZmVjdGl2ZWx5IGRvZXMgY291bnQrKywg
bW92aW5nIHBvaW50ZXIsIGFuZCBzaG91bGQKLSAgICBiZSByZXBsYWNlZCB3aXRoICsrKmNvdW50
LCAoKmNvdW50KSsrIG9yICpjb3VudCArPSAxLgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1l
OiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgotICAgICAgY2xlYW5fbGluZXM6IEEgQ2xl
YW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgotICAgICAgbGluZV9udW1i
ZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCi0gICAgICBlcnJvcjogVGhlIGZ1
bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICIiIgotICAgIGxpbmUg
PSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCi0gICAgaWYgX1JFX1BBVFRFUk5fSU5W
QUxJRF9JTkNSRU1FTlQubWF0Y2gobGluZSk6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5l
X251bWJlciwgJ3J1bnRpbWUvaW52YWxpZF9pbmNyZW1lbnQnLCA1LAotICAgICAgICAgICAgICAn
Q2hhbmdpbmcgcG9pbnRlciBpbnN0ZWFkIG9mIHZhbHVlIChvciB1bnVzZWQgdmFsdWUgb2Ygb3Bl
cmF0b3IqKS4nKQotCi0KLWNsYXNzIF9DbGFzc0luZm8ob2JqZWN0KToKLSAgICAiIiJTdG9yZXMg
aW5mb3JtYXRpb24gYWJvdXQgYSBjbGFzcy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBu
YW1lLCBsaW5lX251bWJlcik6Ci0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2Vs
Zi5saW5lX251bWJlciA9IGxpbmVfbnVtYmVyCi0gICAgICAgIHNlbGYuc2Vlbl9vcGVuX2JyYWNl
ID0gRmFsc2UKLSAgICAgICAgc2VsZi5pc19kZXJpdmVkID0gRmFsc2UKLSAgICAgICAgc2VsZi52
aXJ0dWFsX21ldGhvZF9saW5lX251bWJlciA9IE5vbmUKLSAgICAgICAgc2VsZi5oYXNfdmlydHVh
bF9kZXN0cnVjdG9yID0gRmFsc2UKLSAgICAgICAgc2VsZi5icmFjZV9kZXB0aCA9IDAKLQotCi1j
bGFzcyBfQ2xhc3NTdGF0ZShvYmplY3QpOgotICAgICIiIkhvbGRzIHRoZSBjdXJyZW50IHN0YXRl
IG9mIHRoZSBwYXJzZSByZWxhdGluZyB0byBjbGFzcyBkZWNsYXJhdGlvbnMuCi0KLSAgICBJdCBt
YWludGFpbnMgYSBzdGFjayBvZiBfQ2xhc3NJbmZvcyByZXByZXNlbnRpbmcgdGhlIHBhcnNlcidz
IGd1ZXNzCi0gICAgYXMgdG8gdGhlIGN1cnJlbnQgbmVzdGluZyBvZiBjbGFzcyBkZWNsYXJhdGlv
bnMuIFRoZSBpbm5lcm1vc3QgY2xhc3MKLSAgICBpcyBhdCB0aGUgdG9wIChiYWNrKSBvZiB0aGUg
c3RhY2suIFR5cGljYWxseSwgdGhlIHN0YWNrIHdpbGwgZWl0aGVyCi0gICAgYmUgZW1wdHkgb3Ig
aGF2ZSBleGFjdGx5IG9uZSBlbnRyeS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
KToKLSAgICAgICAgc2VsZi5jbGFzc2luZm9fc3RhY2sgPSBbXQotCi0gICAgZGVmIGNoZWNrX2Zp
bmlzaGVkKHNlbGYsIGZpbGVuYW1lLCBlcnJvcik6Ci0gICAgICAgICIiIkNoZWNrcyB0aGF0IGFs
bCBjbGFzc2VzIGhhdmUgYmVlbiBjb21wbGV0ZWx5IHBhcnNlZC4KLQotICAgICAgICBDYWxsIHRo
aXMgd2hlbiBhbGwgbGluZXMgaW4gYSBmaWxlIGhhdmUgYmVlbiBwcm9jZXNzZWQuCi0gICAgICAg
IEFyZ3M6Ci0gICAgICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUu
Ci0gICAgICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBm
b3VuZC4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuY2xhc3NpbmZvX3N0YWNrOgotICAg
ICAgICAgICAgIyBOb3RlOiBUaGlzIHRlc3QgY2FuIHJlc3VsdCBpbiBmYWxzZSBwb3NpdGl2ZXMg
aWYgI2lmZGVmIGNvbnN0cnVjdHMKLSAgICAgICAgICAgICMgZ2V0IGluIHRoZSB3YXkgb2YgYnJh
Y2UgbWF0Y2hpbmcuIFNlZSB0aGUgdGVzdEJ1aWxkQ2xhc3MgdGVzdCBpbgotICAgICAgICAgICAg
IyBjcHBsaW50X3VuaXR0ZXN0LnB5IGZvciBhbiBleGFtcGxlIG9mIHRoaXMuCi0gICAgICAgICAg
ICBlcnJvcihmaWxlbmFtZSwgc2VsZi5jbGFzc2luZm9fc3RhY2tbMF0ubGluZV9udW1iZXIsICdi
dWlsZC9jbGFzcycsIDUsCi0gICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGZpbmQgY29tcGxl
dGUgZGVjbGFyYXRpb24gb2YgY2xhc3MgJXMnICUKLSAgICAgICAgICAgICAgICAgIHNlbGYuY2xh
c3NpbmZvX3N0YWNrWzBdLm5hbWUpCi0KLQotZGVmIGNoZWNrX2Zvcl9ub25fc3RhbmRhcmRfY29u
c3RydWN0cyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc19zdGF0ZSwgZXJyb3IpOgotICAgICIiIkxv
Z3MgYW4gZXJyb3IgaWYgd2Ugc2VlIGNlcnRhaW4gbm9uLUFOU0kgY29uc3RydWN0cyBpZ25vcmVk
IGJ5IGdjYy0yLgotCi0gICAgQ29tcGxhaW4gYWJvdXQgc2V2ZXJhbCBjb25zdHJ1Y3RzIHdoaWNo
IGdjYy0yIGFjY2VwdHMsIGJ1dCB3aGljaCBhcmUKLSAgICBub3Qgc3RhbmRhcmQgQysrLiAgV2Fy
bmluZyBhYm91dCB0aGVzZSBpbiBsaW50IGlzIG9uZSB3YXkgdG8gZWFzZSB0aGUKLSAgICB0cmFu
c2l0aW9uIHRvIG5ldyBjb21waWxlcnMuCi0gICAgLSBwdXQgc3RvcmFnZSBjbGFzcyBmaXJzdCAo
ZS5nLiAic3RhdGljIGNvbnN0IiBpbnN0ZWFkIG9mICJjb25zdCBzdGF0aWMiKS4KLSAgICAtICIl
bGxkIiBpbnN0ZWFkIG9mICVxZCIgaW4gcHJpbnRmLXR5cGUgZnVuY3Rpb25zLgotICAgIC0gIiUx
JGQiIGlzIG5vbi1zdGFuZGFyZCBpbiBwcmludGYtdHlwZSBmdW5jdGlvbnMuCi0gICAgLSAiXCUi
IGlzIGFuIHVuZGVmaW5lZCBjaGFyYWN0ZXIgZXNjYXBlIHNlcXVlbmNlLgotICAgIC0gdGV4dCBh
ZnRlciAjZW5kaWYgaXMgbm90IGFsbG93ZWQuCi0gICAgLSBpbnZhbGlkIGlubmVyLXN0eWxlIGZv
cndhcmQgZGVjbGFyYXRpb24uCi0gICAgLSA+PyBhbmQgPD8gb3BlcmF0b3JzLCBhbmQgdGhlaXIg
Pj89IGFuZCA8Pz0gY291c2lucy4KLSAgICAtIGNsYXNzZXMgd2l0aCB2aXJ0dWFsIG1ldGhvZHMg
bmVlZCB2aXJ0dWFsIGRlc3RydWN0b3JzIChjb21waWxlciB3YXJuaW5nCi0gICAgICAgIGF2YWls
YWJsZSwgYnV0IG5vdCB0dXJuZWQgb24geWV0LikKLQotICAgIEFkZGl0aW9uYWxseSwgY2hlY2sg
Zm9yIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3Igc3R5bGUgdmlvbGF0aW9ucyBhcyBpdAotICAgIGlz
IHZlcnkgY29udmVuaWVudCB0byBkbyBzbyB3aGlsZSBjaGVja2luZyBmb3IgZ2NjLTIgY29tcGxp
YW5jZS4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJl
bnQgZmlsZS4KLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29u
dGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBs
aW5lIHRvIGNoZWNrLgotICAgICAgY2xhc3Nfc3RhdGU6IEEgX0NsYXNzU3RhdGUgaW5zdGFuY2Ug
d2hpY2ggbWFpbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0Ci0gICAgICAgICAgICAgICAgICAgdGhl
IGN1cnJlbnQgc3RhY2sgb2YgbmVzdGVkIGNsYXNzIGRlY2xhcmF0aW9ucyBiZWluZyBwYXJzZWQu
Ci0gICAgICBlcnJvcjogQSBjYWxsYWJsZSB0byB3aGljaCBlcnJvcnMgYXJlIHJlcG9ydGVkLCB3
aGljaCB0YWtlcyA0IGFyZ3VtZW50czoKLSAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZSBudW1i
ZXIsIGVycm9yIGxldmVsLCBhbmQgbWVzc2FnZQotICAgICIiIgotCi0gICAgIyBSZW1vdmUgY29t
bWVudHMgZnJvbSB0aGUgbGluZSwgYnV0IGxlYXZlIGluIHN0cmluZ3MgZm9yIG5vdy4KLSAgICBs
aW5lID0gY2xlYW5fbGluZXMubGluZXNbbGluZV9udW1iZXJdCi0KLSAgICBpZiBzZWFyY2gocidw
cmludGZccypcKC4qIi4qJVstKyBdP1xkKnEnLCBsaW5lKToKLSAgICAgICAgZXJyb3IoZmlsZW5h
bWUsIGxpbmVfbnVtYmVyLCAncnVudGltZS9wcmludGZfZm9ybWF0JywgMywKLSAgICAgICAgICAg
ICAgJyVxIGluIGZvcm1hdCBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxsIGluc3RlYWQu
JykKLQotICAgIGlmIHNlYXJjaChyJ3ByaW50ZlxzKlwoLioiLiolXGQrXCQnLCBsaW5lKToKLSAg
ICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncnVudGltZS9wcmludGZfZm9ybWF0
JywgMiwKLSAgICAgICAgICAgICAgJyVOJCBmb3JtYXRzIGFyZSB1bmNvbnZlbnRpb25hbC4gIFRy
eSByZXdyaXRpbmcgdG8gYXZvaWQgdGhlbS4nKQotCi0gICAgIyBSZW1vdmUgZXNjYXBlZCBiYWNr
c2xhc2hlcyBiZWZvcmUgbG9va2luZyBmb3IgdW5kZWZpbmVkIGVzY2FwZXMuCi0gICAgbGluZSA9
IGxpbmUucmVwbGFjZSgnXFxcXCcsICcnKQotCi0gICAgaWYgc2VhcmNoKHInKCJ8XCcpLipcXCgl
fFxbfFwofHspJywgbGluZSk6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwg
J2J1aWxkL3ByaW50Zl9mb3JtYXQnLCAzLAotICAgICAgICAgICAgICAnJSwgWywgKCwgYW5kIHsg
YXJlIHVuZGVmaW5lZCBjaGFyYWN0ZXIgZXNjYXBlcy4gIFVuZXNjYXBlIHRoZW0uJykKLQotICAg
ICMgRm9yIHRoZSByZXN0LCB3b3JrIHdpdGggYm90aCBjb21tZW50cyBhbmQgc3RyaW5ncyByZW1v
dmVkLgotICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCi0KLSAgICBp
ZiBzZWFyY2gocidcYihjb25zdHx2b2xhdGlsZXx2b2lkfGNoYXJ8c2hvcnR8aW50fGxvbmcnCi0g
ICAgICAgICAgICAgIHInfGZsb2F0fGRvdWJsZXxzaWduZWR8dW5zaWduZWQnCi0gICAgICAgICAg
ICAgIHInfHNjaGFyfHU/aW50OHx1P2ludDE2fHU/aW50MzJ8dT9pbnQ2NCknCi0gICAgICAgICAg
ICAgIHInXHMrKGF1dG98cmVnaXN0ZXJ8c3RhdGljfGV4dGVybnx0eXBlZGVmKVxiJywKLSAgICAg
ICAgICAgICAgbGluZSk6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ2J1
aWxkL3N0b3JhZ2VfY2xhc3MnLCA1LAotICAgICAgICAgICAgICAnU3RvcmFnZSBjbGFzcyAoc3Rh
dGljLCBleHRlcm4sIHR5cGVkZWYsIGV0Yykgc2hvdWxkIGJlIGZpcnN0LicpCi0KLSAgICBpZiBt
YXRjaChyJ1xzKiNccyplbmRpZlxzKlteL1xzXSsnLCBsaW5lKToKLSAgICAgICAgZXJyb3IoZmls
ZW5hbWUsIGxpbmVfbnVtYmVyLCAnYnVpbGQvZW5kaWZfY29tbWVudCcsIDUsCi0gICAgICAgICAg
ICAgICdVbmNvbW1lbnRlZCB0ZXh0IGFmdGVyICNlbmRpZiBpcyBub24tc3RhbmRhcmQuICBVc2Ug
YSBjb21tZW50LicpCi0KLSAgICBpZiBtYXRjaChyJ1xzKmNsYXNzXHMrKFx3K1xzKjo6XHMqKStc
dytccyo7JywgbGluZSk6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ2J1
aWxkL2ZvcndhcmRfZGVjbCcsIDUsCi0gICAgICAgICAgICAgICdJbm5lci1zdHlsZSBmb3J3YXJk
IGRlY2xhcmF0aW9ucyBhcmUgaW52YWxpZC4gIFJlbW92ZSB0aGlzIGxpbmUuJykKLQotICAgIGlm
IHNlYXJjaChyJyhcdyt8WystXT9cZCsoXC5cZCopPylccyooPHw+KVw/PT9ccyooXHcrfFsrLV0/
XGQrKShcLlxkKik/JywgbGluZSk6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJl
ciwgJ2J1aWxkL2RlcHJlY2F0ZWQnLCAzLAotICAgICAgICAgICAgICAnPj8gYW5kIDw/IChtYXgg
YW5kIG1pbikgb3BlcmF0b3JzIGFyZSBub24tc3RhbmRhcmQgYW5kIGRlcHJlY2F0ZWQuJykKLQot
ICAgICMgVHJhY2sgY2xhc3MgZW50cnkgYW5kIGV4aXQsIGFuZCBhdHRlbXB0IHRvIGZpbmQgY2Fz
ZXMgd2l0aGluIHRoZQotICAgICMgY2xhc3MgZGVjbGFyYXRpb24gdGhhdCBkb24ndCBtZWV0IHRo
ZSBDKysgc3R5bGUKLSAgICAjIGd1aWRlbGluZXMuIFRyYWNraW5nIGlzIHZlcnkgZGVwZW5kZW50
IG9uIHRoZSBjb2RlIG1hdGNoaW5nIEdvb2dsZQotICAgICMgc3R5bGUgZ3VpZGVsaW5lcywgYnV0
IGl0IHNlZW1zIHRvIHBlcmZvcm0gd2VsbCBlbm91Z2ggaW4gdGVzdGluZwotICAgICMgdG8gYmUg
YSB3b3J0aHdoaWxlIGFkZGl0aW9uIHRvIHRoZSBjaGVja3MuCi0gICAgY2xhc3NpbmZvX3N0YWNr
ID0gY2xhc3Nfc3RhdGUuY2xhc3NpbmZvX3N0YWNrCi0gICAgIyBMb29rIGZvciBhIGNsYXNzIGRl
Y2xhcmF0aW9uCi0gICAgY2xhc3NfZGVjbF9tYXRjaCA9IG1hdGNoKAotICAgICAgICByJ1xzKih0
ZW1wbGF0ZVxzKjxbXHdcczw+LDpdKj5ccyopPyhjbGFzc3xzdHJ1Y3QpXHMrKFx3Kyg6Olx3Kykq
KScsIGxpbmUpCi0gICAgaWYgY2xhc3NfZGVjbF9tYXRjaDoKLSAgICAgICAgY2xhc3NpbmZvX3N0
YWNrLmFwcGVuZChfQ2xhc3NJbmZvKGNsYXNzX2RlY2xfbWF0Y2guZ3JvdXAoMyksIGxpbmVfbnVt
YmVyKSkKLQotICAgICMgRXZlcnl0aGluZyBlbHNlIGluIHRoaXMgZnVuY3Rpb24gdXNlcyB0aGUg
dG9wIG9mIHRoZSBzdGFjayBpZiBpdCdzCi0gICAgIyBub3QgZW1wdHkuCi0gICAgaWYgbm90IGNs
YXNzaW5mb19zdGFjazoKLSAgICAgICAgcmV0dXJuCi0KLSAgICBjbGFzc2luZm8gPSBjbGFzc2lu
Zm9fc3RhY2tbLTFdCi0KLSAgICAjIElmIHRoZSBvcGVuaW5nIGJyYWNlIGhhc24ndCBiZWVuIHNl
ZW4gbG9vayBmb3IgaXQgYW5kIGFsc28KLSAgICAjIHBhcmVudCBjbGFzcyBkZWNsYXJhdGlvbnMu
Ci0gICAgaWYgbm90IGNsYXNzaW5mby5zZWVuX29wZW5fYnJhY2U6Ci0gICAgICAgICMgSWYgdGhl
IGxpbmUgaGFzIGEgJzsnIGluIGl0LCBhc3N1bWUgaXQncyBhIGZvcndhcmQgZGVjbGFyYXRpb24g
b3IKLSAgICAgICAgIyBhIHNpbmdsZS1saW5lIGNsYXNzIGRlY2xhcmF0aW9uLCB3aGljaCB3ZSB3
b24ndCBwcm9jZXNzLgotICAgICAgICBpZiBsaW5lLmZpbmQoJzsnKSAhPSAtMToKLSAgICAgICAg
ICAgIGNsYXNzaW5mb19zdGFjay5wb3AoKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGNs
YXNzaW5mby5zZWVuX29wZW5fYnJhY2UgPSAobGluZS5maW5kKCd7JykgIT0gLTEpCi0gICAgICAg
ICMgTG9vayBmb3IgYSBiYXJlICc6JwotICAgICAgICBpZiBzZWFyY2goJyhefFteOl0pOigkfFte
Ol0pJywgbGluZSk6Ci0gICAgICAgICAgICBjbGFzc2luZm8uaXNfZGVyaXZlZCA9IFRydWUKLSAg
ICAgICAgaWYgbm90IGNsYXNzaW5mby5zZWVuX29wZW5fYnJhY2U6Ci0gICAgICAgICAgICByZXR1
cm4gICMgRXZlcnl0aGluZyBlbHNlIGluIHRoaXMgZnVuY3Rpb24gaXMgZm9yIGFmdGVyIG9wZW4g
YnJhY2UKLQotICAgICMgVGhlIGNsYXNzIG1heSBoYXZlIGJlZW4gZGVjbGFyZWQgd2l0aCBuYW1l
c3BhY2Ugb3IgY2xhc3NuYW1lIHF1YWxpZmllcnMuCi0gICAgIyBUaGUgY29uc3RydWN0b3IgYW5k
IGRlc3RydWN0b3Igd2lsbCBub3QgaGF2ZSB0aG9zZSBxdWFsaWZpZXJzLgotICAgIGJhc2VfY2xh
c3NuYW1lID0gY2xhc3NpbmZvLm5hbWUuc3BsaXQoJzo6JylbLTFdCi0KLSAgICAjIExvb2sgZm9y
IHNpbmdsZS1hcmd1bWVudCBjb25zdHJ1Y3RvcnMgdGhhdCBhcmVuJ3QgbWFya2VkIGV4cGxpY2l0
LgotICAgICMgVGVjaG5pY2FsbHkgYSB2YWxpZCBjb25zdHJ1Y3QsIGJ1dCBhZ2FpbnN0IHN0eWxl
LgotICAgIGFyZ3MgPSBtYXRjaChyJyg/PCFleHBsaWNpdClccyslc1xzKlwoKFteLCgpXSspXCkn
Ci0gICAgICAgICAgICAgICAgICUgcmUuZXNjYXBlKGJhc2VfY2xhc3NuYW1lKSwKLSAgICAgICAg
ICAgICAgICAgbGluZSkKLSAgICBpZiAoYXJncwotICAgICAgICBhbmQgYXJncy5ncm91cCgxKSAh
PSAndm9pZCcKLSAgICAgICAgYW5kIG5vdCBtYXRjaChyJyhjb25zdFxzKyk/JXNccyomJyAlIHJl
LmVzY2FwZShiYXNlX2NsYXNzbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgYXJncy5ncm91
cCgxKS5zdHJpcCgpKSk6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3J1
bnRpbWUvZXhwbGljaXQnLCA1LAotICAgICAgICAgICAgICAnU2luZ2xlLWFyZ3VtZW50IGNvbnN0
cnVjdG9ycyBzaG91bGQgYmUgbWFya2VkIGV4cGxpY2l0LicpCi0KLSAgICAjIExvb2sgZm9yIG1l
dGhvZHMgZGVjbGFyZWQgdmlydHVhbC4KLSAgICBpZiBzZWFyY2gocidcYnZpcnR1YWxcYicsIGxp
bmUpOgotICAgICAgICBjbGFzc2luZm8udmlydHVhbF9tZXRob2RfbGluZV9udW1iZXIgPSBsaW5l
X251bWJlcgotICAgICAgICAjIE9ubHkgbG9vayBmb3IgYSBkZXN0cnVjdG9yIGRlY2xhcmF0aW9u
IG9uIHRoZSBzYW1lIGxpbmUuIEl0IHdvdWxkCi0gICAgICAgICMgYmUgZXh0cmVtZWx5IHVubGlr
ZWx5IGZvciB0aGUgZGVzdHJ1Y3RvciBkZWNsYXJhdGlvbiB0byBvY2N1cHkKLSAgICAgICAgIyBt
b3JlIHRoYW4gb25lIGxpbmUuCi0gICAgICAgIGlmIHNlYXJjaChyJ34lc1xzKlwoJyAlIGJhc2Vf
Y2xhc3NuYW1lLCBsaW5lKToKLSAgICAgICAgICAgIGNsYXNzaW5mby5oYXNfdmlydHVhbF9kZXN0
cnVjdG9yID0gVHJ1ZQotCi0gICAgIyBMb29rIGZvciBjbGFzcyBlbmQuCi0gICAgYnJhY2VfZGVw
dGggPSBjbGFzc2luZm8uYnJhY2VfZGVwdGgKLSAgICBicmFjZV9kZXB0aCA9IGJyYWNlX2RlcHRo
ICsgbGluZS5jb3VudCgneycpIC0gbGluZS5jb3VudCgnfScpCi0gICAgaWYgYnJhY2VfZGVwdGgg
PD0gMDoKLSAgICAgICAgY2xhc3NpbmZvID0gY2xhc3NpbmZvX3N0YWNrLnBvcCgpCi0gICAgICAg
ICMgVHJ5IHRvIGRldGVjdCBtaXNzaW5nIHZpcnR1YWwgZGVzdHJ1Y3RvciBkZWNsYXJhdGlvbnMu
Ci0gICAgICAgICMgRm9yIG5vdywgb25seSB3YXJuIGlmIGEgbm9uLWRlcml2ZWQgY2xhc3Mgd2l0
aCB2aXJ0dWFsIG1ldGhvZHMgbGFja3MKLSAgICAgICAgIyBhIHZpcnR1YWwgZGVzdHJ1Y3Rvci4g
VGhpcyBpcyB0byBtYWtlIGl0IGxlc3MgbGlrZWx5IHRoYXQgcGVvcGxlIHdpbGwKLSAgICAgICAg
IyBkZWNsYXJlIGRlcml2ZWQgdmlydHVhbCBkZXN0cnVjdG9ycyB3aXRob3V0IGRlY2xhcmluZyB0
aGUgYmFzZQotICAgICAgICAjIGRlc3RydWN0b3IgdmlydHVhbC4KLSAgICAgICAgaWYgKChjbGFz
c2luZm8udmlydHVhbF9tZXRob2RfbGluZV9udW1iZXIgaXMgbm90IE5vbmUpCi0gICAgICAgICAg
ICBhbmQgKG5vdCBjbGFzc2luZm8uaGFzX3ZpcnR1YWxfZGVzdHJ1Y3RvcikKLSAgICAgICAgICAg
IGFuZCAobm90IGNsYXNzaW5mby5pc19kZXJpdmVkKSk6ICAjIE9ubHkgd2FybiBmb3IgYmFzZSBj
bGFzc2VzCi0gICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgY2xhc3NpbmZvLmxpbmVfbnVtYmVy
LCAncnVudGltZS92aXJ0dWFsJywgNCwKLSAgICAgICAgICAgICAgICAgICdUaGUgY2xhc3MgJXMg
cHJvYmFibHkgbmVlZHMgYSB2aXJ0dWFsIGRlc3RydWN0b3IgZHVlIHRvICcKLSAgICAgICAgICAg
ICAgICAgICdoYXZpbmcgdmlydHVhbCBtZXRob2QocyksIG9uZSBkZWNsYXJlZCBhdCBsaW5lICVk
LicKLSAgICAgICAgICAgICAgICAgICUgKGNsYXNzaW5mby5uYW1lLCBjbGFzc2luZm8udmlydHVh
bF9tZXRob2RfbGluZV9udW1iZXIpKQotICAgIGVsc2U6Ci0gICAgICAgIGNsYXNzaW5mby5icmFj
ZV9kZXB0aCA9IGJyYWNlX2RlcHRoCi0KLQotZGVmIGNoZWNrX3NwYWNpbmdfZm9yX2Z1bmN0aW9u
X2NhbGwoZmlsZW5hbWUsIGxpbmUsIGxpbmVfbnVtYmVyLCBlcnJvcik6Ci0gICAgIiIiQ2hlY2tz
IGZvciB0aGUgY29ycmVjdG5lc3Mgb2YgdmFyaW91cyBzcGFjaW5nIGFyb3VuZCBmdW5jdGlvbiBj
YWxscy4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJl
bnQgZmlsZS4KLSAgICAgIGxpbmU6IFRoZSB0ZXh0IG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAg
ICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCi0gICAgICBl
cnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICIi
IgotCi0gICAgIyBTaW5jZSBmdW5jdGlvbiBjYWxscyBvZnRlbiBvY2N1ciBpbnNpZGUgaWYvZm9y
L3doaWxlL3N3aXRjaAotICAgICMgZXhwcmVzc2lvbnMgLSB3aGljaCBoYXZlIHRoZWlyIG93biwg
bW9yZSBsaWJlcmFsIGNvbnZlbnRpb25zIC0gd2UKLSAgICAjIGZpcnN0IHNlZSBpZiB3ZSBzaG91
bGQgYmUgbG9va2luZyBpbnNpZGUgc3VjaCBhbiBleHByZXNzaW9uIGZvciBhCi0gICAgIyBmdW5j
dGlvbiBjYWxsLCB0byB3aGljaCB3ZSBjYW4gYXBwbHkgbW9yZSBzdHJpY3Qgc3RhbmRhcmRzLgot
ICAgIGZ1bmN0aW9uX2NhbGwgPSBsaW5lICAgICMgaWYgdGhlcmUncyBubyBjb250cm9sIGZsb3cg
Y29uc3RydWN0LCBsb29rIGF0IHdob2xlIGxpbmUKLSAgICBmb3IgcGF0dGVybiBpbiAocidcYmlm
XHMqXCgoLiopXClccyp7JywKLSAgICAgICAgICAgICAgICAgICAgcidcYmZvclxzKlwoKC4qKVwp
XHMqeycsCi0gICAgICAgICAgICAgICAgICAgIHInXGJ3aGlsZVxzKlwoKC4qKVwpXHMqW3s7XScs
Ci0gICAgICAgICAgICAgICAgICAgIHInXGJzd2l0Y2hccypcKCguKilcKVxzKnsnKToKLSAgICAg
ICAgbWF0Y2hlZCA9IHNlYXJjaChwYXR0ZXJuLCBsaW5lKQotICAgICAgICBpZiBtYXRjaGVkOgot
ICAgICAgICAgICAgZnVuY3Rpb25fY2FsbCA9IG1hdGNoZWQuZ3JvdXAoMSkgICAgIyBsb29rIGlu
c2lkZSB0aGUgcGFyZW5zIGZvciBmdW5jdGlvbiBjYWxscwotICAgICAgICAgICAgYnJlYWsKLQot
ICAgICMgRXhjZXB0IGluIGlmL2Zvci93aGlsZS9zd2l0Y2gsIHRoZXJlIHNob3VsZCBuZXZlciBi
ZSBzcGFjZQotICAgICMgaW1tZWRpYXRlbHkgaW5zaWRlIHBhcmVucyAoZWcgImYoIDMsIDQgKSIp
LiAgV2UgbWFrZSBhbiBleGNlcHRpb24KLSAgICAjIGZvciBuZXN0ZWQgcGFyZW5zICggKGErYikg
KyBjICkuICBMaWtld2lzZSwgdGhlcmUgc2hvdWxkIG5ldmVyIGJlCi0gICAgIyBhIHNwYWNlIGJl
Zm9yZSBhICggd2hlbiBpdCdzIGEgZnVuY3Rpb24gYXJndW1lbnQuICBJIGFzc3VtZSBpdCdzIGEK
LSAgICAjIGZ1bmN0aW9uIGFyZ3VtZW50IHdoZW4gdGhlIGNoYXIgYmVmb3JlIHRoZSB3aGl0ZXNw
YWNlIGlzIGxlZ2FsIGluCi0gICAgIyBhIGZ1bmN0aW9uIG5hbWUgKGFsbnVtICsgXykgYW5kIHdl
J3JlIG5vdCBzdGFydGluZyBhIG1hY3JvLiBBbHNvIGlnbm9yZQotICAgICMgcG9pbnRlcnMgYW5k
IHJlZmVyZW5jZXMgdG8gYXJyYXlzIGFuZCBmdW5jdGlvbnMgY296IHRoZXkncmUgdG9vIHRyaWNr
eToKLSAgICAjIHdlIHVzZSBhIHZlcnkgc2ltcGxlIHdheSB0byByZWNvZ25pemUgdGhlc2U6Ci0g
ICAgIyAiIChzb21ldGhpbmcpKG1heWJlLXNvbWV0aGluZykiIG9yCi0gICAgIyAiIChzb21ldGhp
bmcpKG1heWJlLXNvbWV0aGluZywiIG9yCi0gICAgIyAiIChzb21ldGhpbmcpW3NvbWV0aGluZ10i
Ci0gICAgIyBOb3RlIHRoYXQgd2UgYXNzdW1lIHRoZSBjb250ZW50cyBvZiBbXSB0byBiZSBzaG9y
dCBlbm91Z2ggdGhhdAotICAgICMgdGhleSdsbCBuZXZlciBuZWVkIHRvIHdyYXAuCi0gICAgaWYg
KCAgIyBJZ25vcmUgY29udHJvbCBzdHJ1Y3R1cmVzLgotICAgICAgICBub3Qgc2VhcmNoKHInXGIo
aWZ8Zm9yfHdoaWxlfHN3aXRjaHxyZXR1cm58bmV3fGRlbGV0ZSlcYicsIGZ1bmN0aW9uX2NhbGwp
Ci0gICAgICAgICMgSWdub3JlIHBvaW50ZXJzL3JlZmVyZW5jZXMgdG8gZnVuY3Rpb25zLgotICAg
ICAgICBhbmQgbm90IHNlYXJjaChyJyBcKFteKV0rXClcKFteKV0qKFwpfCwkKScsIGZ1bmN0aW9u
X2NhbGwpCi0gICAgICAgICMgSWdub3JlIHBvaW50ZXJzL3JlZmVyZW5jZXMgdG8gYXJyYXlzLgot
ICAgICAgICBhbmQgbm90IHNlYXJjaChyJyBcKFteKV0rXClcW1teXF1dK1xdJywgZnVuY3Rpb25f
Y2FsbCkpOgotICAgICAgICBpZiBzZWFyY2gocidcd1xzKlwoWyBcdF0oPyFccypcXCQpJywgZnVu
Y3Rpb25fY2FsbCk6ICAgICAgIyBhICggdXNlZCBmb3IgYSBmbiBjYWxsCi0gICAgICAgICAgICBl
cnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVucycsIDQsCi0gICAg
ICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgYWZ0ZXIgKCBpbiBmdW5jdGlvbiBjYWxsJykKLSAg
ICAgICAgZWxpZiBzZWFyY2gocidcKFsgXHRdKyg/IShccypcXCl8XCgpJywgZnVuY3Rpb25fY2Fs
bCk6Ci0gICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNl
L3BhcmVucycsIDIsCi0gICAgICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgYWZ0ZXIgKCcpCi0g
ICAgICAgIGlmIChzZWFyY2gocidcd1xzK1woJywgZnVuY3Rpb25fY2FsbCkKLSAgICAgICAgICAg
IGFuZCBub3Qgc2VhcmNoKHInI1xzKmRlZmluZXx0eXBlZGVmJywgZnVuY3Rpb25fY2FsbCkpOgot
ICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJl
bnMnLCA0LAotICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSAoIGluIGZ1bmN0
aW9uIGNhbGwnKQotICAgICAgICAjIElmIHRoZSApIGlzIGZvbGxvd2VkIG9ubHkgYnkgYSBuZXds
aW5lIG9yIGEgeyArIG5ld2xpbmUsIGFzc3VtZSBpdCdzCi0gICAgICAgICMgcGFydCBvZiBhIGNv
bnRyb2wgc3RhdGVtZW50IChpZi93aGlsZS9ldGMpLCBhbmQgZG9uJ3QgY29tcGxhaW4KLSAgICAg
ICAgaWYgc2VhcmNoKHInW14pXHNdXHMrXCkoPyFccyokfHtccyokKScsIGZ1bmN0aW9uX2NhbGwp
OgotICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9w
YXJlbnMnLCAyLAotICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSApJykKLQot
Ci1kZWYgaXNfYmxhbmtfbGluZShsaW5lKToKLSAgICAiIiJSZXR1cm5zIHRydWUgaWYgdGhlIGdp
dmVuIGxpbmUgaXMgYmxhbmsuCi0KLSAgICBXZSBjb25zaWRlciBhIGxpbmUgdG8gYmUgYmxhbmsg
aWYgdGhlIGxpbmUgaXMgZW1wdHkgb3IgY29uc2lzdHMgb2YKLSAgICBvbmx5IHdoaXRlIHNwYWNl
cy4KLQotICAgIEFyZ3M6Ci0gICAgICBsaW5lOiBBIGxpbmUgb2YgYSBzdHJpbmcuCi0KLSAgICBS
ZXR1cm5zOgotICAgICAgVHJ1ZSwgaWYgdGhlIGdpdmVuIGxpbmUgaXMgYmxhbmsuCi0gICAgIiIi
Ci0gICAgcmV0dXJuIG5vdCBsaW5lIG9yIGxpbmUuaXNzcGFjZSgpCi0KLQotZGVmIGNoZWNrX2Zv
cl9mdW5jdGlvbl9sZW5ndGhzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fc3RhdGUsIGVycm9yKToKLSAg
ICAiIiJSZXBvcnRzIGZvciBsb25nIGZ1bmN0aW9uIGJvZGllcy4KLQotICAgIEZvciBhbiBvdmVy
dmlldyB3aHkgdGhpcyBpcyBkb25lLCBzZWU6Ci0gICAgaHR0cDovL2dvb2dsZS1zdHlsZWd1aWRl
Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9jcHBndWlkZS54bWwjV3JpdGVfU2hvcnRfRnVuY3Rp
b25zCi0KLSAgICBVc2VzIGEgc2ltcGxpc3RpYyBhbGdvcml0aG0gYXNzdW1pbmcgb3RoZXIgc3R5
bGUgZ3VpZGVsaW5lcwotICAgIChlc3BlY2lhbGx5IHNwYWNpbmcpIGFyZSBmb2xsb3dlZC4KLSAg
ICBPbmx5IGNoZWNrcyB1bmluZGVudGVkIGZ1bmN0aW9ucywgc28gY2xhc3MgbWVtYmVycyBhcmUg
dW5jaGVja2VkLgotICAgIFRyaXZpYWwgYm9kaWVzIGFyZSB1bmNoZWNrZWQsIHNvIGNvbnN0cnVj
dG9ycyB3aXRoIGh1Z2UgaW5pdGlhbGl6ZXIgbGlzdHMKLSAgICBtYXkgYmUgbWlzc2VkLgotICAg
IEJsYW5rL2NvbW1lbnQgbGluZXMgYXJlIG5vdCBjb3VudGVkIHNvIGFzIHRvIGF2b2lkIGVuY291
cmFnaW5nIHRoZSByZW1vdmFsCi0gICAgb2YgdmVydGljYWwgc3BhY2UgYW5kIGNvbW1tZW50cyBq
dXN0IHRvIGdldCB0aHJvdWdoIGEgbGludCBjaGVjay4KLSAgICBOT0xJTlQgKm9uIHRoZSBsYXN0
IGxpbmUgb2YgYSBmdW5jdGlvbiogZGlzYWJsZXMgdGhpcyBjaGVjay4KLQotICAgIEFyZ3M6Ci0g
ICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KLSAgICAgIGNsZWFu
X2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KLSAg
ICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAg
ZnVuY3Rpb25fc3RhdGU6IEN1cnJlbnQgZnVuY3Rpb24gbmFtZSBhbmQgbGluZXMgaW4gYm9keSBz
byBmYXIuCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3Jz
IGZvdW5kLgotICAgICIiIgotICAgIGxpbmVzID0gY2xlYW5fbGluZXMubGluZXMKLSAgICBsaW5l
ID0gbGluZXNbbGluZV9udW1iZXJdCi0gICAgcmF3ID0gY2xlYW5fbGluZXMucmF3X2xpbmVzCi0g
ICAgcmF3X2xpbmUgPSByYXdbbGluZV9udW1iZXJdCi0gICAgam9pbmVkX2xpbmUgPSAnJwotCi0g
ICAgc3RhcnRpbmdfZnVuYyA9IEZhbHNlCi0gICAgcmVnZXhwID0gcicoXHcoXHd8Ojp8XCp8XCZ8
XHMpKilcKCcgICMgZGVjbHMgKiAmIHNwYWNlOjpuYW1lKCAuLi4KLSAgICBtYXRjaF9yZXN1bHQg
PSBtYXRjaChyZWdleHAsIGxpbmUpCi0gICAgaWYgbWF0Y2hfcmVzdWx0OgotICAgICAgICAjIElm
IHRoZSBuYW1lIGlzIGFsbCBjYXBzIGFuZCB1bmRlcnNjb3JlcywgZmlndXJlIGl0J3MgYSBtYWNy
byBhbmQKLSAgICAgICAgIyBpZ25vcmUgaXQsIHVubGVzcyBpdCdzIFRFU1Qgb3IgVEVTVF9GLgot
ICAgICAgICBmdW5jdGlvbl9uYW1lID0gbWF0Y2hfcmVzdWx0Lmdyb3VwKDEpLnNwbGl0KClbLTFd
Ci0gICAgICAgIGlmIGZ1bmN0aW9uX25hbWUgPT0gJ1RFU1QnIG9yIGZ1bmN0aW9uX25hbWUgPT0g
J1RFU1RfRicgb3IgKG5vdCBtYXRjaChyJ1tBLVpfXSskJywgZnVuY3Rpb25fbmFtZSkpOgotICAg
ICAgICAgICAgc3RhcnRpbmdfZnVuYyA9IFRydWUKLQotICAgIGlmIHN0YXJ0aW5nX2Z1bmM6Ci0g
ICAgICAgIGJvZHlfZm91bmQgPSBGYWxzZQotICAgICAgICBmb3Igc3RhcnRfbGluZV9udW1iZXIg
aW4geHJhbmdlKGxpbmVfbnVtYmVyLCBjbGVhbl9saW5lcy5udW1fbGluZXMoKSk6Ci0gICAgICAg
ICAgICBzdGFydF9saW5lID0gbGluZXNbc3RhcnRfbGluZV9udW1iZXJdCi0gICAgICAgICAgICBq
b2luZWRfbGluZSArPSAnICcgKyBzdGFydF9saW5lLmxzdHJpcCgpCi0gICAgICAgICAgICBpZiBz
ZWFyY2gocicoO3x9KScsIHN0YXJ0X2xpbmUpOiAgIyBEZWNsYXJhdGlvbnMgYW5kIHRyaXZpYWwg
ZnVuY3Rpb25zCi0gICAgICAgICAgICAgICAgYm9keV9mb3VuZCA9IFRydWUKLSAgICAgICAgICAg
ICAgICBicmVhayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgLi4uIGlnbm9yZQotICAg
ICAgICAgICAgaWYgc2VhcmNoKHIneycsIHN0YXJ0X2xpbmUpOgotICAgICAgICAgICAgICAgIGJv
ZHlfZm91bmQgPSBUcnVlCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24gPSBzZWFyY2gocicoKFx3
fDopKilcKCcsIGxpbmUpLmdyb3VwKDEpCi0gICAgICAgICAgICAgICAgaWYgbWF0Y2gocidURVNU
JywgZnVuY3Rpb24pOiAgICAjIEhhbmRsZSBURVNULi4uIG1hY3JvcwotICAgICAgICAgICAgICAg
ICAgICBwYXJhbWV0ZXJfcmVnZXhwID0gc2VhcmNoKHInKFwoLipcKSknLCBqb2luZWRfbGluZSkK
LSAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW1ldGVyX3JlZ2V4cDogICAgICAgICAgICAgIyBJ
Z25vcmUgYmFkIHN5bnRheAotICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKz0gcGFy
YW1ldGVyX3JlZ2V4cC5ncm91cCgxKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICs9ICcoKScKLSAgICAgICAgICAgICAgICBmdW5jdGlvbl9zdGF0
ZS5iZWdpbihmdW5jdGlvbikKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBub3Qg
Ym9keV9mb3VuZDoKLSAgICAgICAgICAgICMgTm8gYm9keSBmb3IgdGhlIGZ1bmN0aW9uIChvciBl
dmlkZW5jZSBvZiBhIG5vbi1mdW5jdGlvbikgd2FzIGZvdW5kLgotICAgICAgICAgICAgZXJyb3Io
ZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvZm5fc2l6ZScsIDUsCi0gICAgICAg
ICAgICAgICAgICAnTGludCBmYWlsZWQgdG8gZmluZCBzdGFydCBvZiBmdW5jdGlvbiBib2R5Licp
Ci0gICAgZWxpZiBtYXRjaChyJ15cfVxzKiQnLCBsaW5lKTogICMgZnVuY3Rpb24gZW5kCi0gICAg
ICAgIGlmIG5vdCBzZWFyY2gocidcYk5PTElOVFxiJywgcmF3X2xpbmUpOgotICAgICAgICAgICAg
ZnVuY3Rpb25fc3RhdGUuY2hlY2soZXJyb3IsIGZpbGVuYW1lLCBsaW5lX251bWJlcikKLSAgICAg
ICAgZnVuY3Rpb25fc3RhdGUuZW5kKCkKLSAgICBlbGlmIG5vdCBtYXRjaChyJ15ccyokJywgbGlu
ZSk6Ci0gICAgICAgIGZ1bmN0aW9uX3N0YXRlLmNvdW50KCkgICMgQ291bnQgbm9uLWJsYW5rL25v
bi1jb21tZW50IGxpbmVzLgotCi0KLWRlZiBjaGVja19zcGFjaW5nKGZpbGVuYW1lLCBjbGVhbl9s
aW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKLSAgICAiIiJDaGVja3MgZm9yIHRoZSBjb3JyZWN0
bmVzcyBvZiB2YXJpb3VzIHNwYWNpbmcgaXNzdWVzIGluIHRoZSBjb2RlLgotCi0gICAgVGhpbmdz
IHdlIGNoZWNrIGZvcjogc3BhY2VzIGFyb3VuZCBvcGVyYXRvcnMsIHNwYWNlcyBhZnRlcgotICAg
IGlmL2Zvci93aGlsZS9zd2l0Y2gsIG5vIHNwYWNlcyBhcm91bmQgcGFyZW5zIGluIGZ1bmN0aW9u
IGNhbGxzLCB0d28KLSAgICBzcGFjZXMgYmV0d2VlbiBjb2RlIGFuZCBjb21tZW50LCBkb24ndCBz
dGFydCBhIGJsb2NrIHdpdGggYSBibGFuawotICAgIGxpbmUsIGRvbid0IGVuZCBhIGZ1bmN0aW9u
IHdpdGggYSBibGFuayBsaW5lLCBkb24ndCBoYXZlIHRvbyBtYW55Ci0gICAgYmxhbmsgbGluZXMg
aW4gYSByb3cuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBj
dXJyZW50IGZpbGUuCi0gICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNl
IGNvbnRhaW5pbmcgdGhlIGZpbGUuCi0gICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0
aGUgbGluZSB0byBjaGVjay4KLSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRo
IGFueSBlcnJvcnMgZm91bmQuCi0gICAgIiIiCi0KLSAgICByYXcgPSBjbGVhbl9saW5lcy5yYXdf
bGluZXMKLSAgICBsaW5lID0gcmF3W2xpbmVfbnVtYmVyXQotCi0gICAgIyBCZWZvcmUgbml4aW5n
IGNvbW1lbnRzLCBjaGVjayBpZiB0aGUgbGluZSBpcyBibGFuayBmb3Igbm8gZ29vZAotICAgICMg
cmVhc29uLiAgVGhpcyBpbmNsdWRlcyB0aGUgZmlyc3QgbGluZSBhZnRlciBhIGJsb2NrIGlzIG9w
ZW5lZCwgYW5kCi0gICAgIyBibGFuayBsaW5lcyBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24gKGll
LCByaWdodCBiZWZvcmUgYSBsaW5lIGxpa2UgJ30nCi0gICAgaWYgaXNfYmxhbmtfbGluZShsaW5l
KToKLSAgICAgICAgZWxpZGVkID0gY2xlYW5fbGluZXMuZWxpZGVkCi0gICAgICAgIHByZXZpb3Vz
X2xpbmUgPSBlbGlkZWRbbGluZV9udW1iZXIgLSAxXQotICAgICAgICBwcmV2aW91c19icmFjZSA9
IHByZXZpb3VzX2xpbmUucmZpbmQoJ3snKQotICAgICAgICAjIEZJWE1FOiBEb24ndCBjb21wbGFp
biBpZiBsaW5lIGJlZm9yZSBibGFuayBsaW5lLCBhbmQgbGluZSBhZnRlciwKLSAgICAgICAgIyAg
ICAgICAgYm90aCBzdGFydCB3aXRoIGFsbnVtcyBhbmQgYXJlIGluZGVudGVkIHRoZSBzYW1lIGFt
b3VudC4KLSAgICAgICAgIyAgICAgICAgVGhpcyBpZ25vcmVzIHdoaXRlc3BhY2UgYXQgdGhlIHN0
YXJ0IG9mIGEgbmFtZXNwYWNlIGJsb2NrCi0gICAgICAgICMgICAgICAgIGJlY2F1c2UgdGhvc2Ug
YXJlIG5vdCB1c3VhbGx5IGluZGVudGVkLgotICAgICAgICBpZiAocHJldmlvdXNfYnJhY2UgIT0g
LTEgYW5kIHByZXZpb3VzX2xpbmVbcHJldmlvdXNfYnJhY2U6XS5maW5kKCd9JykgPT0gLTEKLSAg
ICAgICAgICAgIGFuZCBwcmV2aW91c19saW5lWzpwcmV2aW91c19icmFjZV0uZmluZCgnbmFtZXNw
YWNlJykgPT0gLTEpOgotICAgICAgICAgICAgIyBPSywgd2UgaGF2ZSBhIGJsYW5rIGxpbmUgYXQg
dGhlIHN0YXJ0IG9mIGEgY29kZSBibG9jay4gIEJlZm9yZSB3ZQotICAgICAgICAgICAgIyBjb21w
bGFpbiwgd2UgY2hlY2sgaWYgaXQgaXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBydWxlOiBUaGUgcHJl
dmlvdXMKLSAgICAgICAgICAgICMgbm9uLWVtcHR5IGxpbmUgaGFzIHRoZSBwYXJhbXRlcnMgb2Yg
YSBmdW5jdGlvbiBoZWFkZXIgdGhhdCBhcmUgaW5kZW50ZWQKLSAgICAgICAgICAgICMgNCBzcGFj
ZXMgKGJlY2F1c2UgdGhleSBkaWQgbm90IGZpdCBpbiBhIDgwIGNvbHVtbiBsaW5lIHdoZW4gcGxh
Y2VkIG9uCi0gICAgICAgICAgICAjIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGZ1bmN0aW9uIG5hbWUp
LiAgV2UgYWxzbyBjaGVjayBmb3IgdGhlIGNhc2Ugd2hlcmUKLSAgICAgICAgICAgICMgdGhlIHBy
ZXZpb3VzIGxpbmUgaXMgaW5kZW50ZWQgNiBzcGFjZXMsIHdoaWNoIG1heSBoYXBwZW4gd2hlbiB0
aGUKLSAgICAgICAgICAgICMgaW5pdGlhbGl6ZXJzIG9mIGEgY29uc3RydWN0b3IgZG8gbm90IGZp
dCBpbnRvIGEgODAgY29sdW1uIGxpbmUuCi0gICAgICAgICAgICBleGNlcHRpb24gPSBGYWxzZQot
ICAgICAgICAgICAgaWYgbWF0Y2gocicgezZ9XHcnLCBwcmV2aW91c19saW5lKTogICMgSW5pdGlh
bGl6ZXIgbGlzdD8KLSAgICAgICAgICAgICAgICAjIFdlIGFyZSBsb29raW5nIGZvciB0aGUgb3Bl
bmluZyBjb2x1bW4gb2YgaW5pdGlhbGl6ZXIgbGlzdCwgd2hpY2gKLSAgICAgICAgICAgICAgICAj
IHNob3VsZCBiZSBpbmRlbnRlZCA0IHNwYWNlcyB0byBjYXVzZSA2IHNwYWNlIGluZGVudGF0aW9u
IGFmdGVyd2FyZHMuCi0gICAgICAgICAgICAgICAgc2VhcmNoX3Bvc2l0aW9uID0gbGluZV9udW1i
ZXIgLSAyCi0gICAgICAgICAgICAgICAgd2hpbGUgKHNlYXJjaF9wb3NpdGlvbiA+PSAwCi0gICAg
ICAgICAgICAgICAgICAgICAgIGFuZCBtYXRjaChyJyB7Nn1cdycsIGVsaWRlZFtzZWFyY2hfcG9z
aXRpb25dKSk6Ci0gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9wb3NpdGlvbiAtPSAxCi0gICAg
ICAgICAgICAgICAgZXhjZXB0aW9uID0gKHNlYXJjaF9wb3NpdGlvbiA+PSAwCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZCBlbGlkZWRbc2VhcmNoX3Bvc2l0aW9uXVs6NV0gPT0gJyAg
ICA6JykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBTZWFyY2ggZm9yIHRo
ZSBmdW5jdGlvbiBhcmd1bWVudHMgb3IgYW4gaW5pdGlhbGl6ZXIgbGlzdC4gIFdlIHVzZSBhCi0g
ICAgICAgICAgICAgICAgIyBzaW1wbGUgaGV1cmlzdGljIGhlcmU6IElmIHRoZSBsaW5lIGlzIGlu
ZGVudGVkIDQgc3BhY2VzOyBhbmQgd2UgaGF2ZSBhCi0gICAgICAgICAgICAgICAgIyBjbG9zaW5n
IHBhcmVuLCB3aXRob3V0IHRoZSBvcGVuaW5nIHBhcmVuLCBmb2xsb3dlZCBieSBhbiBvcGVuaW5n
IGJyYWNlCi0gICAgICAgICAgICAgICAgIyBvciBjb2xvbiAoZm9yIGluaXRpYWxpemVyIGxpc3Rz
KSB3ZSBhc3N1bWUgdGhhdCBpdCBpcyB0aGUgbGFzdCBsaW5lIG9mCi0gICAgICAgICAgICAgICAg
IyBhIGZ1bmN0aW9uIGhlYWRlci4gIElmIHdlIGhhdmUgYSBjb2xvbiBpbmRlbnRlZCA0IHNwYWNl
cywgaXQgaXMgYW4KLSAgICAgICAgICAgICAgICAjIGluaXRpYWxpemVyIGxpc3QuCi0gICAgICAg
ICAgICAgICAgZXhjZXB0aW9uID0gKG1hdGNoKHInIHs0fVx3W15cKF0qXClccyooY29uc3Rccyop
Pyhce1xzKiR8OiknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91
c19saW5lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBtYXRjaChyJyB7NH06Jywg
cHJldmlvdXNfbGluZSkpCi0KLSAgICAgICAgICAgIGlmIG5vdCBleGNlcHRpb246Ci0gICAgICAg
ICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9ibGFua19s
aW5lJywgMiwKLSAgICAgICAgICAgICAgICAgICAgICAnQmxhbmsgbGluZSBhdCB0aGUgc3RhcnQg
b2YgYSBjb2RlIGJsb2NrLiAgSXMgdGhpcyBuZWVkZWQ/JykKLSAgICAgICAgIyBUaGlzIGRvZXNu
J3QgaWdub3JlIHdoaXRlc3BhY2UgYXQgdGhlIGVuZCBvZiBhIG5hbWVzcGFjZSBibG9jawotICAg
ICAgICAjIGJlY2F1c2UgdGhhdCBpcyB0b28gaGFyZCB3aXRob3V0IHBhaXJpbmcgb3Blbi9jbG9z
ZSBicmFjZXM7Ci0gICAgICAgICMgaG93ZXZlciwgYSBzcGVjaWFsIGV4Y2VwdGlvbiBpcyBtYWRl
IGZvciBuYW1lc3BhY2UgY2xvc2luZwotICAgICAgICAjIGJyYWNrZXRzIHdoaWNoIGhhdmUgYSBj
b21tZW50IGNvbnRhaW5pbmcgIm5hbWVzcGFjZSIuCi0gICAgICAgICMKLSAgICAgICAgIyBBbHNv
LCBpZ25vcmUgYmxhbmsgbGluZXMgYXQgdGhlIGVuZCBvZiBhIGJsb2NrIGluIGEgbG9uZyBpZi1l
bHNlCi0gICAgICAgICMgY2hhaW4sIGxpa2UgdGhpczoKLSAgICAgICAgIyAgIGlmIChjb25kaXRp
b24xKSB7Ci0gICAgICAgICMgICAgIC8vIFNvbWV0aGluZyBmb2xsb3dlZCBieSBhIGJsYW5rIGxp
bmUKLSAgICAgICAgIwotICAgICAgICAjICAgfSBlbHNlIGlmIChjb25kaXRpb24yKSB7Ci0gICAg
ICAgICMgICAgIC8vIFNvbWV0aGluZyBlbHNlCi0gICAgICAgICMgICB9Ci0gICAgICAgIGlmIGxp
bmVfbnVtYmVyICsgMSA8IGNsZWFuX2xpbmVzLm51bV9saW5lcygpOgotICAgICAgICAgICAgbmV4
dF9saW5lID0gcmF3W2xpbmVfbnVtYmVyICsgMV0KLSAgICAgICAgICAgIGlmIChuZXh0X2xpbmUK
LSAgICAgICAgICAgICAgICBhbmQgbWF0Y2gocidccyp9JywgbmV4dF9saW5lKQotICAgICAgICAg
ICAgICAgIGFuZCBuZXh0X2xpbmUuZmluZCgnbmFtZXNwYWNlJykgPT0gLTEKLSAgICAgICAgICAg
ICAgICBhbmQgbmV4dF9saW5lLmZpbmQoJ30gZWxzZSAnKSA9PSAtMSk6Ci0gICAgICAgICAgICAg
ICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9ibGFua19saW5lJywg
MywKLSAgICAgICAgICAgICAgICAgICAgICAnQmxhbmsgbGluZSBhdCB0aGUgZW5kIG9mIGEgY29k
ZSBibG9jay4gIElzIHRoaXMgbmVlZGVkPycpCi0KLSAgICAjIE5leHQsIHdlIGNvbXBsYWluIGlm
IHRoZXJlJ3MgYSBjb21tZW50IHRvbyBuZWFyIHRoZSB0ZXh0Ci0gICAgY29tbWVudF9wb3NpdGlv
biA9IGxpbmUuZmluZCgnLy8nKQotICAgIGlmIGNvbW1lbnRfcG9zaXRpb24gIT0gLTE6Ci0gICAg
ICAgICMgQ2hlY2sgaWYgdGhlIC8vIG1heSBiZSBpbiBxdW90ZXMuICBJZiBzbywgaWdub3JlIGl0
Ci0gICAgICAgICMgQ29tcGFyaXNvbnMgbWFkZSBleHBsaWNpdCBmb3IgY2xhcml0eSAtLSBweWxp
bnQ6IGRpc2FibGUtbXNnPUM2NDAzCi0gICAgICAgIGlmIChsaW5lLmNvdW50KCciJywgMCwgY29t
bWVudF9wb3NpdGlvbikgLSBsaW5lLmNvdW50KCdcXCInLCAwLCBjb21tZW50X3Bvc2l0aW9uKSkg
JSAyID09IDA6ICAgIyBub3QgaW4gcXVvdGVzCi0gICAgICAgICAgICAjIEFsbG93IG9uZSBzcGFj
ZSBmb3IgbmV3IHNjb3BlcywgdHdvIHNwYWNlcyBvdGhlcndpc2U6Ci0gICAgICAgICAgICBpZiAo
bm90IG1hdGNoKHInXlxzKnsgLy8nLCBsaW5lKQotICAgICAgICAgICAgICAgIGFuZCAoKGNvbW1l
bnRfcG9zaXRpb24gPj0gMQotICAgICAgICAgICAgICAgICAgICAgIGFuZCBsaW5lW2NvbW1lbnRf
cG9zaXRpb24tMV0gbm90IGluIHN0cmluZy53aGl0ZXNwYWNlKQotICAgICAgICAgICAgICAgICAg
ICAgb3IgKGNvbW1lbnRfcG9zaXRpb24gPj0gMgotICAgICAgICAgICAgICAgICAgICAgICAgIGFu
ZCBsaW5lW2NvbW1lbnRfcG9zaXRpb24tMl0gbm90IGluIHN0cmluZy53aGl0ZXNwYWNlKSkpOgot
ICAgICAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2Uv
Y29tbWVudHMnLCAyLAotICAgICAgICAgICAgICAgICAgICAgICdBdCBsZWFzdCB0d28gc3BhY2Vz
IGlzIGJlc3QgYmV0d2VlbiBjb2RlIGFuZCBjb21tZW50cycpCi0gICAgICAgICAgICAjIFRoZXJl
IHNob3VsZCBhbHdheXMgYmUgYSBzcGFjZSBiZXR3ZWVuIHRoZSAvLyBhbmQgdGhlIGNvbW1lbnQK
LSAgICAgICAgICAgIGNvbW1lbnRlbmQgPSBjb21tZW50X3Bvc2l0aW9uICsgMgotICAgICAgICAg
ICAgaWYgY29tbWVudGVuZCA8IGxlbihsaW5lKSBhbmQgbm90IGxpbmVbY29tbWVudGVuZF0gPT0g
JyAnOgotICAgICAgICAgICAgICAgICMgYnV0IHNvbWUgbGluZXMgYXJlIGV4Y2VwdGlvbnMgLS0g
ZS5nLiBpZiB0aGV5J3JlIGJpZwotICAgICAgICAgICAgICAgICMgY29tbWVudCBkZWxpbWl0ZXJz
IGxpa2U6Ci0gICAgICAgICAgICAgICAgIyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAjIG9yIHRoZXkg
YmVnaW4gd2l0aCBtdWx0aXBsZSBzbGFzaGVzIGZvbGxvd2VkIGJ5IGEgc3BhY2U6Ci0gICAgICAg
ICAgICAgICAgIyAvLy8vLy8vLyBIZWFkZXIgY29tbWVudAotICAgICAgICAgICAgICAgIG1hdGNo
ZWQgPSAoc2VhcmNoKHInWz0vLV17NCx9XHMqJCcsIGxpbmVbY29tbWVudGVuZDpdKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3Igc2VhcmNoKHInXi8rICcsIGxpbmVbY29tbWVudGVuZDpd
KSkKLSAgICAgICAgICAgICAgICBpZiBub3QgbWF0Y2hlZDoKLSAgICAgICAgICAgICAgICAgICAg
ZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9jb21tZW50cycsIDQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICdTaG91bGQgaGF2ZSBhIHNwYWNlIGJldHdlZW4gLy8g
YW5kIGNvbW1lbnQnKQotCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJl
cl0gICMgZ2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncwotCi0gICAgIyBEb24ndCB0cnkg
dG8gZG8gc3BhY2luZyBjaGVja3MgZm9yIG9wZXJhdG9yIG1ldGhvZHMKLSAgICBsaW5lID0gcmUu
c3ViKHInb3BlcmF0b3IoPT18IT18PHw8PHw8PXw+PXw+Pnw+KVwoJywgJ29wZXJhdG9yXCgnLCBs
aW5lKQotCi0gICAgIyBXZSBhbGxvdyBuby1zcGFjZXMgYXJvdW5kID0gd2l0aGluIGFuIGlmOiAi
aWYgKCAoYT1Gb28oKSkgPT0gMCApIi4KLSAgICAjIE90aGVyd2lzZSBub3QuICBOb3RlIHdlIG9u
bHkgY2hlY2sgZm9yIG5vbi1zcGFjZXMgb24gKmJvdGgqIHNpZGVzOwotICAgICMgc29tZXRpbWVz
IHBlb3BsZSBwdXQgbm9uLXNwYWNlcyBvbiBvbmUgc2lkZSB3aGVuIGFsaWduaW5nID0ncyBhbW9u
ZwotICAgICMgbWFueSBsaW5lcyAobm90IHRoYXQgdGhpcyBpcyBiZWhhdmlvciB0aGF0IEkgYXBw
cm92ZSBvZi4uLikKLSAgICBpZiBzZWFyY2gocidbXHcuXT1bXHcuXScsIGxpbmUpIGFuZCBub3Qg
c2VhcmNoKHInXGIoaWZ8d2hpbGUpICcsIGxpbmUpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwg
bGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL29wZXJhdG9ycycsIDQsCi0gICAgICAgICAgICAgICdN
aXNzaW5nIHNwYWNlcyBhcm91bmQgPScpCi0KLSAgICAjIEZJWE1FOiBJdCdzIG5vdCBvayB0byBo
YXZlIHNwYWNlcyBhcm91bmQgYmluYXJ5IG9wZXJhdG9ycyBsaWtlICsgLSAqIC8gLgotCi0gICAg
IyBZb3Ugc2hvdWxkIGFsd2F5cyBoYXZlIHdoaXRlc3BhY2UgYXJvdW5kIGJpbmFyeSBvcGVyYXRv
cnMuCi0gICAgIyBBbGFzLCB3ZSBjYW4ndCB0ZXN0IDwgb3IgPiBiZWNhdXNlIHRoZXkncmUgbGVn
aXRpbWF0ZWx5IHVzZWQgc2FucyBzcGFjZXMKLSAgICAjIChhLT5iLCB2ZWN0b3I8aW50PiBhKS4g
IFRoZSBvbmx5IHRpbWUgd2UgY2FuIHRlbGwgaXMgYSA8IHdpdGggbm8gPiwgYW5kCi0gICAgIyBv
bmx5IGlmIGl0J3Mgbm90IHRlbXBsYXRlIHBhcmFtcyBsaXN0IHNwaWxsaW5nIGludG8gdGhlIG5l
eHQgbGluZS4KLSAgICBtYXRjaGVkID0gc2VhcmNoKHInW148Pj0hXHNdKD09fCE9fDw9fD49KVte
PD49IVxzXScsIGxpbmUpCi0gICAgaWYgbm90IG1hdGNoZWQ6Ci0gICAgICAgICMgTm90ZSB0aGF0
IHdoaWxlIGl0IHNlZW1zIHRoYXQgdGhlICc8W148XSonIHRlcm0gaW4gdGhlIGZvbGxvd2luZwot
ICAgICAgICAjIHJlZ2V4cCBjb3VsZCBiZSBzaW1wbGlmaWVkIHRvICc8LionLCB3aGljaCB3b3Vs
ZCBpbmRlZWQgbWF0Y2gKLSAgICAgICAgIyB0aGUgc2FtZSBjbGFzcyBvZiBzdHJpbmdzLCB0aGUg
W148XSBtZWFucyB0aGF0IHNlYXJjaGluZyBmb3IgdGhlCi0gICAgICAgICMgcmVnZXhwIHRha2Vz
IGxpbmVhciByYXRoZXIgdGhhbiBxdWFkcmF0aWMgdGltZS4KLSAgICAgICAgaWYgbm90IHNlYXJj
aChyJzxbXjxdKixccyokJywgbGluZSk6ICAjIHRlbXBsYXRlIHBhcmFtcyBzcGlsbAotICAgICAg
ICAgICAgbWF0Y2hlZCA9IHNlYXJjaChyJ1tePD49IVxzXSg8KVtePD49IVxzXShbXj5dfC0+KSok
JywgbGluZSkKLSAgICBpZiBtYXRjaGVkOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9u
dW1iZXIsICd3aGl0ZXNwYWNlL29wZXJhdG9ycycsIDMsCi0gICAgICAgICAgICAgICdNaXNzaW5n
IHNwYWNlcyBhcm91bmQgJXMnICUgbWF0Y2hlZC5ncm91cCgxKSkKLSAgICAjIFdlIGFsbG93IG5v
LXNwYWNlcyBhcm91bmQgPDwgYW5kID4+IHdoZW4gdXNlZCBsaWtlIHRoaXM6IDEwPDwyMCwgYnV0
Ci0gICAgIyBub3Qgb3RoZXJ3aXNlIChwYXJ0aWN1bGFybHksIG5vdCB3aGVuIHVzZWQgYXMgc3Ry
ZWFtcykKLSAgICBtYXRjaGVkID0gc2VhcmNoKHInW14wLTlcc10oPDx8Pj4pW14wLTlcc10nLCBs
aW5lKQotICAgIGlmIG1hdGNoZWQ6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJl
ciwgJ3doaXRlc3BhY2Uvb3BlcmF0b3JzJywgMywKLSAgICAgICAgICAgICAgJ01pc3Npbmcgc3Bh
Y2VzIGFyb3VuZCAlcycgJSBtYXRjaGVkLmdyb3VwKDEpKQotCi0gICAgIyBUaGVyZSBzaG91bGRu
J3QgYmUgc3BhY2UgYXJvdW5kIHVuYXJ5IG9wZXJhdG9ycwotICAgIG1hdGNoZWQgPSBzZWFyY2go
cicoIVxzfH5cc3xbXHNdLS1bXHM7XXxbXHNdXCtcK1tccztdKScsIGxpbmUpCi0gICAgaWYgbWF0
Y2hlZDoKLSAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9v
cGVyYXRvcnMnLCA0LAotICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgZm9yIG9wZXJhdG9yICVz
JyAlIG1hdGNoZWQuZ3JvdXAoMSkpCi0KLSAgICAjIEEgcGV0IHBlZXZlIG9mIG1pbmU6IG5vIHNw
YWNlcyBhZnRlciBhbiBpZiwgd2hpbGUsIHN3aXRjaCwgb3IgZm9yCi0gICAgbWF0Y2hlZCA9IHNl
YXJjaChyJyAoaWZcKHxmb3JcKHx3aGlsZVwofHN3aXRjaFwoKScsIGxpbmUpCi0gICAgaWYgbWF0
Y2hlZDoKLSAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9w
YXJlbnMnLCA1LAotICAgICAgICAgICAgICAnTWlzc2luZyBzcGFjZSBiZWZvcmUgKCBpbiAlcycg
JSBtYXRjaGVkLmdyb3VwKDEpKQotCi0gICAgIyBGb3IgaWYvZm9yL3doaWxlL3N3aXRjaCwgdGhl
IGxlZnQgYW5kIHJpZ2h0IHBhcmVucyBzaG91bGQgYmUKLSAgICAjIGNvbnNpc3RlbnQgYWJvdXQg
aG93IG1hbnkgc3BhY2VzIGFyZSBpbnNpZGUgdGhlIHBhcmVucywgYW5kCi0gICAgIyB0aGVyZSBz
aG91bGQgZWl0aGVyIGJlIHplcm8gb3Igb25lIHNwYWNlcyBpbnNpZGUgdGhlIHBhcmVucy4KLSAg
ICAjIFdlIGRvbid0IHdhbnQ6ICJpZiAoIGZvbykiIG9yICJpZiAoIGZvbyAgICkiLgotICAgICMg
RXhjZXB0aW9uOiAiZm9yICggOyBmb287IGJhcikiIGFuZCAiZm9yIChmb287IGJhcjsgKSIgYXJl
IGFsbG93ZWQuCi0gICAgbWF0Y2hlZCA9IHNlYXJjaChyJ1xiKGlmfGZvcnx3aGlsZXxzd2l0Y2gp
XHMqXCgoWyBdKikoLikuKlteIF0rKFsgXSopXClccyp7XHMqJCcsCi0gICAgICAgICAgICAgICAg
ICAgICBsaW5lKQotICAgIGlmIG1hdGNoZWQ6Ci0gICAgICAgIGlmIGxlbihtYXRjaGVkLmdyb3Vw
KDIpKSAhPSBsZW4obWF0Y2hlZC5ncm91cCg0KSk6Ci0gICAgICAgICAgICBpZiBub3QgKG1hdGNo
ZWQuZ3JvdXAoMykgPT0gJzsnCi0gICAgICAgICAgICAgICAgICAgIGFuZCBsZW4obWF0Y2hlZC5n
cm91cCgyKSkgPT0gMSArIGxlbihtYXRjaGVkLmdyb3VwKDQpKQotICAgICAgICAgICAgICAgICAg
ICBvciBub3QgbWF0Y2hlZC5ncm91cCgyKSBhbmQgc2VhcmNoKHInXGJmb3JccypcKC4qOyBcKScs
IGxpbmUpKToKLSAgICAgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3
aGl0ZXNwYWNlL3BhcmVucycsIDUsCi0gICAgICAgICAgICAgICAgICAgICAgJ01pc21hdGNoaW5n
IHNwYWNlcyBpbnNpZGUgKCkgaW4gJXMnICUgbWF0Y2hlZC5ncm91cCgxKSkKLSAgICAgICAgaWYg
bm90IGxlbihtYXRjaGVkLmdyb3VwKDIpKSBpbiBbMCwgMV06Ci0gICAgICAgICAgICBlcnJvcihm
aWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVucycsIDUsCi0gICAgICAgICAg
ICAgICAgICAnU2hvdWxkIGhhdmUgemVybyBvciBvbmUgc3BhY2VzIGluc2lkZSAoIGFuZCApIGlu
ICVzJyAlCi0gICAgICAgICAgICAgICAgICBtYXRjaGVkLmdyb3VwKDEpKQotCi0gICAgIyBZb3Ug
c2hvdWxkIGFsd2F5cyBoYXZlIGEgc3BhY2UgYWZ0ZXIgYSBjb21tYSAoZWl0aGVyIGFzIGZuIGFy
ZyBvciBvcGVyYXRvcikKLSAgICBpZiBzZWFyY2gocicsW15cc10nLCBsaW5lKToKLSAgICAgICAg
ZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9jb21tYScsIDMsCi0gICAg
ICAgICAgICAgICdNaXNzaW5nIHNwYWNlIGFmdGVyICwnKQotCi0gICAgIyBOZXh0IHdlIHdpbGwg
bG9vayBmb3IgaXNzdWVzIHdpdGggZnVuY3Rpb24gY2FsbHMuCi0gICAgY2hlY2tfc3BhY2luZ19m
b3JfZnVuY3Rpb25fY2FsbChmaWxlbmFtZSwgbGluZSwgbGluZV9udW1iZXIsIGVycm9yKQotCi0g
ICAgIyBFeGNlcHQgYWZ0ZXIgYW4gb3BlbmluZyBwYXJlbiwgeW91IHNob3VsZCBoYXZlIHNwYWNl
cyBiZWZvcmUgeW91ciBicmFjZXMuCi0gICAgIyBBbmQgc2luY2UgeW91IHNob3VsZCBuZXZlciBo
YXZlIGJyYWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSwgdGhpcyBpcwotICAgICMgYW4g
ZWFzeSB0ZXN0LgotICAgIGlmIHNlYXJjaChyJ1teICh7XXsnLCBsaW5lKToKLSAgICAgICAgZXJy
b3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9icmFjZXMnLCA1LAotICAgICAg
ICAgICAgICAnTWlzc2luZyBzcGFjZSBiZWZvcmUgeycpCi0KLSAgICAjIE1ha2Ugc3VyZSAnfSBl
bHNlIHsnIGhhcyBzcGFjZXMuCi0gICAgaWYgc2VhcmNoKHInfWVsc2UnLCBsaW5lKToKLSAgICAg
ICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9icmFjZXMnLCA1LAot
ICAgICAgICAgICAgICAnTWlzc2luZyBzcGFjZSBiZWZvcmUgZWxzZScpCi0KLSAgICAjIFlvdSBz
aG91bGRuJ3QgaGF2ZSBzcGFjZXMgYmVmb3JlIHlvdXIgYnJhY2tldHMsIGV4Y2VwdCBtYXliZSBh
ZnRlcgotICAgICMgJ2RlbGV0ZSBbXScgb3IgJ25ldyBjaGFyICogW10nLgotICAgIGlmIHNlYXJj
aChyJ1x3XHMrXFsnLCBsaW5lKSBhbmQgbm90IHNlYXJjaChyJ2RlbGV0ZVxzK1xbJywgbGluZSk6
Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvYnJhY2Vz
JywgNSwKLSAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSBbJykKLQotICAgICMgWW91
IHNob3VsZG4ndCBoYXZlIGEgc3BhY2UgYmVmb3JlIGEgc2VtaWNvbG9uIGF0IHRoZSBlbmQgb2Yg
dGhlIGxpbmUuCi0gICAgIyBUaGVyZSdzIGEgc3BlY2lhbCBjYXNlIGZvciAiZm9yIiBzaW5jZSB0
aGUgc3R5bGUgZ3VpZGUgYWxsb3dzIHNwYWNlIGJlZm9yZQotICAgICMgdGhlIHNlbWljb2xvbiB0
aGVyZS4KLSAgICBpZiBzZWFyY2gocic6XHMqO1xzKiQnLCBsaW5lKToKLSAgICAgICAgZXJyb3Io
ZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9zZW1pY29sb24nLCA1LAotICAgICAg
ICAgICAgICAnU2VtaWNvbG9uIGRlZmluaW5nIGVtcHR5IHN0YXRlbWVudC4gVXNlIHsgfSBpbnN0
ZWFkLicpCi0gICAgZWxpZiBzZWFyY2gocideXHMqO1xzKiQnLCBsaW5lKToKLSAgICAgICAgZXJy
b3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9zZW1pY29sb24nLCA1LAotICAg
ICAgICAgICAgICAnTGluZSBjb250YWlucyBvbmx5IHNlbWljb2xvbi4gSWYgdGhpcyBzaG91bGQg
YmUgYW4gZW1wdHkgc3RhdGVtZW50LCAnCi0gICAgICAgICAgICAgICd1c2UgeyB9IGluc3RlYWQu
JykKLSAgICBlbGlmIChzZWFyY2gocidccys7XHMqJCcsIGxpbmUpIGFuZCBub3Qgc2VhcmNoKHIn
XGJmb3JcYicsIGxpbmUpKToKLSAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAn
d2hpdGVzcGFjZS9zZW1pY29sb24nLCA1LAotICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgYmVm
b3JlIGxhc3Qgc2VtaWNvbG9uLiBJZiB0aGlzIHNob3VsZCBiZSBhbiBlbXB0eSAnCi0gICAgICAg
ICAgICAgICdzdGF0ZW1lbnQsIHVzZSB7IH0gaW5zdGVhZC4nKQotICAgIGVsaWYgKHNlYXJjaChy
J1xiKGZvcnx3aGlsZSlccypcKC4qXClccyo7XHMqJCcsIGxpbmUpCi0gICAgICAgICAgYW5kIGxp
bmUuY291bnQoJygnKSA9PSBsaW5lLmNvdW50KCcpJykKLSAgICAgICAgICAjIEFsbG93IGRvIHt9
IHdoaWxlKCk7Ci0gICAgICAgICAgYW5kIG5vdCBzZWFyY2gocid9XHMqd2hpbGUnLCBsaW5lKSk6
Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2Uvc2VtaWNv
bG9uJywgNSwKLSAgICAgICAgICAgICAgJ1NlbWljb2xvbiBkZWZpbmluZyBlbXB0eSBzdGF0ZW1l
bnQgZm9yIHRoaXMgbG9vcC4gVXNlIHsgfSBpbnN0ZWFkLicpCi0KLQotZGVmIGdldF9wcmV2aW91
c19ub25fYmxhbmtfbGluZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIpOgotICAgICIiIlJldHVy
biB0aGUgbW9zdCByZWNlbnQgbm9uLWJsYW5rIGxpbmUgYW5kIGl0cyBsaW5lIG51bWJlci4KLQot
ICAgIEFyZ3M6Ci0gICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNv
bnRhaW5pbmcgdGhlIGZpbGUgY29udGVudHMuCi0gICAgICBsaW5lX251bWJlcjogVGhlIG51bWJl
ciBvZiB0aGUgbGluZSB0byBjaGVjay4KLQotICAgIFJldHVybnM6Ci0gICAgICBBIHR1cGxlIHdp
dGggdHdvIGVsZW1lbnRzLiAgVGhlIGZpcnN0IGVsZW1lbnQgaXMgdGhlIGNvbnRlbnRzIG9mIHRo
ZSBsYXN0Ci0gICAgICBub24tYmxhbmsgbGluZSBiZWZvcmUgdGhlIGN1cnJlbnQgbGluZSwgb3Ig
dGhlIGVtcHR5IHN0cmluZyBpZiB0aGlzIGlzIHRoZQotICAgICAgZmlyc3Qgbm9uLWJsYW5rIGxp
bmUuICBUaGUgc2Vjb25kIGlzIHRoZSBsaW5lIG51bWJlciBvZiB0aGF0IGxpbmUsIG9yIC0xCi0g
ICAgICBpZiB0aGlzIGlzIHRoZSBmaXJzdCBub24tYmxhbmsgbGluZS4KLSAgICAiIiIKLQotICAg
IHByZXZpb3VzX2xpbmVfbnVtYmVyID0gbGluZV9udW1iZXIgLSAxCi0gICAgd2hpbGUgcHJldmlv
dXNfbGluZV9udW1iZXIgPj0gMDoKLSAgICAgICAgcHJldmlvdXNfbGluZSA9IGNsZWFuX2xpbmVz
LmVsaWRlZFtwcmV2aW91c19saW5lX251bWJlcl0KLSAgICAgICAgaWYgbm90IGlzX2JsYW5rX2xp
bmUocHJldmlvdXNfbGluZSk6ICAgICAjIGlmIG5vdCBhIGJsYW5rIGxpbmUuLi4KLSAgICAgICAg
ICAgIHJldHVybiAocHJldmlvdXNfbGluZSwgcHJldmlvdXNfbGluZV9udW1iZXIpCi0gICAgICAg
IHByZXZpb3VzX2xpbmVfbnVtYmVyIC09IDEKLSAgICByZXR1cm4gKCcnLCAtMSkKLQotCi1kZWYg
Y2hlY2tfYnJhY2VzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToK
LSAgICAiIiJMb29rcyBmb3IgbWlzcGxhY2VkIGJyYWNlcyAoZS5nLiBhdCB0aGUgZW5kIG9mIGxp
bmUpLgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVu
dCBmaWxlLgotICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250
YWluaW5nIHRoZSBmaWxlLgotICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxp
bmUgdG8gY2hlY2suCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkg
ZXJyb3JzIGZvdW5kLgotICAgICIiIgotCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFts
aW5lX251bWJlcl0gICAgICAgICMgZ2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncwotCi0g
ICAgaWYgbWF0Y2gocidccyp7XHMqJCcsIGxpbmUpOgotICAgICAgICAjIFdlIGFsbG93IGFuIG9w
ZW4gYnJhY2UgdG8gc3RhcnQgYSBsaW5lIGluIHRoZSBjYXNlIHdoZXJlIHNvbWVvbmUKLSAgICAg
ICAgIyBpcyB1c2luZyBicmFjZXMgZm9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgaW4gYSBibG9j
ayB0bwotICAgICAgICAjIGV4cGxpY2l0bHkgY3JlYXRlIGEgbmV3IHNjb3BlLCB3aGljaCBpcyBj
b21tb25seSB1c2VkIHRvIGNvbnRyb2wKLSAgICAgICAgIyB0aGUgbGlmZXRpbWUgb2Ygc3RhY2st
YWxsb2NhdGVkIHZhcmlhYmxlcy4gIFdlIGRvbid0IGRldGVjdCB0aGlzCi0gICAgICAgICMgcGVy
ZmVjdGx5OiB3ZSBqdXN0IGRvbid0IGNvbXBsYWluIGlmIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNl
Ci0gICAgICAgICMgY2hhcmFjdGVyIG9uIHRoZSBwcmV2aW91cyBub24tYmxhbmsgbGluZSBpcyAn
OycsICc6JywgJ3snLCAnfScsCi0gICAgICAgICMgJyknLCBvciAnKSBjb25zdCcuICBXZSBhbHNv
IGFsbG93ICcjJyBmb3IgI2VuZGlmIGFuZCAnPScgZm9yCi0gICAgICAgICMgYXJyYXkgaW5pdGlh
bGl6YXRpb24uCi0gICAgICAgIHByZXZpb3VzX2xpbmUgPSBnZXRfcHJldmlvdXNfbm9uX2JsYW5r
X2xpbmUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyKVswXQotICAgICAgICBpZiAobm90IHNlYXJj
aChyJ1s7On17KT1dXHMqJHxcKVxzKmNvbnN0XHMqJCcsIHByZXZpb3VzX2xpbmUpCi0gICAgICAg
ICAgICBhbmQgcHJldmlvdXNfbGluZS5maW5kKCcjJykgPCAwKToKLSAgICAgICAgICAgIGVycm9y
KGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvYnJhY2VzJywgNCwKLSAgICAgICAg
ICAgICAgICAgICdUaGlzIHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxp
bmUnKQotICAgIGVsaWYgKHNlYXJjaChyJ1wpXHMqKGNvbnN0XHMqKT97XHMqJCcsIGxpbmUpCi0g
ICAgICAgICAgYW5kIGxpbmUuY291bnQoJygnKSA9PSBsaW5lLmNvdW50KCcpJykKLSAgICAgICAg
ICBhbmQgbm90IHNlYXJjaChyJ1xiKGlmfGZvcnx3aGlsZXxzd2l0Y2gpXGInLCBsaW5lKSk6Ci0g
ICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvYnJhY2VzJywg
NCwKLSAgICAgICAgICAgICAgJ1BsYWNlIGJyYWNlIG9uIGl0cyBvd24gbGluZSBmb3IgZnVuY3Rp
b24gZGVmaW5pdGlvbnMuJykKLQotICAgICMgQW4gZWxzZSBjbGF1c2Ugc2hvdWxkIGJlIG9uIHRo
ZSBzYW1lIGxpbmUgYXMgdGhlIHByZWNlZGluZyBjbG9zaW5nIGJyYWNlLgotICAgIGlmIG1hdGNo
KHInXHMqZWxzZVxzKicsIGxpbmUpOgotICAgICAgICBwcmV2aW91c19saW5lID0gZ2V0X3ByZXZp
b3VzX25vbl9ibGFua19saW5lKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlcilbMF0KLSAgICAgICAg
aWYgbWF0Y2gocidccyp9XHMqJCcsIHByZXZpb3VzX2xpbmUpOgotICAgICAgICAgICAgZXJyb3Io
ZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9uZXdsaW5lJywgNCwKLSAgICAgICAg
ICAgICAgICAgICdBbiBlbHNlIHNob3VsZCBhcHBlYXIgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUg
cHJlY2VkaW5nIH0nKQotCi0gICAgIyBMaWtld2lzZSwgYW4gZWxzZSBzaG91bGQgbmV2ZXIgaGF2
ZSB0aGUgZWxzZSBjbGF1c2Ugb24gdGhlIHNhbWUgbGluZQotICAgIGlmIHNlYXJjaChyJ1xiZWxz
ZSBbXlxze10nLCBsaW5lKSBhbmQgbm90IHNlYXJjaChyJ1xiZWxzZSBpZlxiJywgbGluZSk6Ci0g
ICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvbmV3bGluZScs
IDQsCi0gICAgICAgICAgICAgICdFbHNlIGNsYXVzZSBzaG91bGQgbmV2ZXIgYmUgb24gc2FtZSBs
aW5lIGFzIGVsc2UgKHVzZSAyIGxpbmVzKScpCi0KLSAgICAjIEluIHRoZSBzYW1lIHdheSwgYSBk
by93aGlsZSBzaG91bGQgbmV2ZXIgYmUgb24gb25lIGxpbmUKLSAgICBpZiBtYXRjaChyJ1xzKmRv
IFteXHN7XScsIGxpbmUpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3
aGl0ZXNwYWNlL25ld2xpbmUnLCA0LAotICAgICAgICAgICAgICAnZG8vd2hpbGUgY2xhdXNlcyBz
aG91bGQgbm90IGJlIG9uIGEgc2luZ2xlIGxpbmUnKQotCi0gICAgIyBCcmFjZXMgc2hvdWxkbid0
IGJlIGZvbGxvd2VkIGJ5IGEgOyB1bmxlc3MgdGhleSdyZSBkZWZpbmluZyBhIHN0cnVjdAotICAg
ICMgb3IgaW5pdGlhbGl6aW5nIGFuIGFycmF5LgotICAgICMgV2UgY2FuJ3QgdGVsbCBpbiBnZW5l
cmFsLCBidXQgd2UgY2FuIGZvciBzb21lIGNvbW1vbiBjYXNlcy4KLSAgICBwcmV2aW91c19saW5l
X251bWJlciA9IGxpbmVfbnVtYmVyCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgKHByZXZpb3Vz
X2xpbmUsIHByZXZpb3VzX2xpbmVfbnVtYmVyKSA9IGdldF9wcmV2aW91c19ub25fYmxhbmtfbGlu
ZShjbGVhbl9saW5lcywgcHJldmlvdXNfbGluZV9udW1iZXIpCi0gICAgICAgIGlmIG1hdGNoKHIn
XHMrey4qfVxzKjsnLCBsaW5lKSBhbmQgbm90IHByZXZpb3VzX2xpbmUuY291bnQoJzsnKToKLSAg
ICAgICAgICAgIGxpbmUgPSBwcmV2aW91c19saW5lICsgbGluZQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgYnJlYWsKLSAgICBpZiAoc2VhcmNoKHIney4qfVxzKjsnLCBsaW5lKQotICAgICAg
ICBhbmQgbGluZS5jb3VudCgneycpID09IGxpbmUuY291bnQoJ30nKQotICAgICAgICBhbmQgbm90
IHNlYXJjaChyJ3N0cnVjdHxjbGFzc3xlbnVtfFxzKj1ccyp7JywgbGluZSkpOgotICAgICAgICBl
cnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9icmFjZXMnLCA0LAotICAg
ICAgICAgICAgICAiWW91IGRvbid0IG5lZWQgYSA7IGFmdGVyIGEgfSIpCi0KLQotZGVmIHJlcGxh
Y2VhYmxlX2NoZWNrKG9wZXJhdG9yLCBtYWNybywgbGluZSk6Ci0gICAgIiIiRGV0ZXJtaW5lIHdo
ZXRoZXIgYSBiYXNpYyBDSEVDSyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIG1vcmUgc3BlY2lmaWMg
b25lLgotCi0gICAgRm9yIGV4YW1wbGUgc3VnZ2VzdCB1c2luZyBDSEVDS19FUSBpbnN0ZWFkIG9m
IENIRUNLKGEgPT0gYikgYW5kCi0gICAgc2ltaWxhcmx5IGZvciBDSEVDS19HRSwgQ0hFQ0tfR1Qs
IENIRUNLX0xFLCBDSEVDS19MVCwgQ0hFQ0tfTkUuCi0KLSAgICBBcmdzOgotICAgICAgb3BlcmF0
b3I6IFRoZSBDKysgb3BlcmF0b3IgdXNlZCBpbiB0aGUgQ0hFQ0suCi0gICAgICBtYWNybzogVGhl
IENIRUNLIG9yIEVYUEVDVCBtYWNybyBiZWluZyBjYWxsZWQuCi0gICAgICBsaW5lOiBUaGUgY3Vy
cmVudCBzb3VyY2UgbGluZS4KLQotICAgIFJldHVybnM6Ci0gICAgICBUcnVlIGlmIHRoZSBDSEVD
SyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIG1vcmUgc3BlY2lmaWMgb25lLgotICAgICIiIgotCi0g
ICAgIyBUaGlzIG1hdGNoZXMgZGVjaW1hbCBhbmQgaGV4IGludGVnZXJzLCBzdHJpbmdzLCBhbmQg
Y2hhcnMgKGluIHRoYXQgb3JkZXIpLgotICAgIG1hdGNoX2NvbnN0YW50ID0gcicoWy0rXT8oXGQr
fDBbeFhdWzAtOWEtZkEtRl0rKVtsTHVVXXswLDN9fCIuKiJ8XCcuKlwnKScKLQotICAgICMgRXhw
cmVzc2lvbiB0byBtYXRjaCB0d28gc2lkZXMgb2YgdGhlIG9wZXJhdG9yIHdpdGggc29tZXRoaW5n
IHRoYXQKLSAgICAjIGxvb2tzIGxpa2UgYSBsaXRlcmFsLCBzaW5jZSBDSEVDSyh4ID09IGl0ZXJh
dG9yKSB3b24ndCBjb21waWxlLgotICAgICMgVGhpcyBtZWFucyB3ZSBjYW4ndCBjYXRjaCBhbGwg
dGhlIGNhc2VzIHdoZXJlIGEgbW9yZSBzcGVjaWZpYwotICAgICMgQ0hFQ0sgaXMgcG9zc2libGUs
IGJ1dCBpdCdzIGxlc3MgYW5ub3lpbmcgdGhhbiBkZWFsaW5nIHdpdGgKLSAgICAjIGV4dHJhbmVv
dXMgd2FybmluZ3MuCi0gICAgbWF0Y2hfdGhpcyA9IChyJ1xzKicgKyBtYWNybyArIHInXCgoXHMq
JyArCi0gICAgICAgICAgICAgICAgICBtYXRjaF9jb25zdGFudCArIHInXHMqJyArIG9wZXJhdG9y
ICsgcidbXjw+XS4qfCcKLSAgICAgICAgICAgICAgICAgIHInLipbXjw+XScgKyBvcGVyYXRvciAr
IHInXHMqJyArIG1hdGNoX2NvbnN0YW50ICsKLSAgICAgICAgICAgICAgICAgIHInXHMqXCkpJykK
LQotICAgICMgRG9uJ3QgY29tcGxhaW4gYWJvdXQgQ0hFQ0soeCA9PSBOVUxMKSBvciBzaW1pbGFy
IGJlY2F1c2UKLSAgICAjIENIRUNLX0VRKHgsIE5VTEwpIHdvbid0IGNvbXBpbGUgKHJlcXVpcmVz
IGEgY2FzdCkuCi0gICAgIyBBbHNvLCBkb24ndCBjb21wbGFpbiBhYm91dCBtb3JlIGNvbXBsZXgg
Ym9vbGVhbiBleHByZXNzaW9ucwotICAgICMgaW52b2x2aW5nICYmIG9yIHx8IHN1Y2ggYXMgQ0hF
Q0soYSA9PSBiIHx8IGMgPT0gZCkuCi0gICAgcmV0dXJuIG1hdGNoKG1hdGNoX3RoaXMsIGxpbmUp
IGFuZCBub3Qgc2VhcmNoKHInTlVMTHwmJnxcfFx8JywgbGluZSkKLQotCi1kZWYgY2hlY2tfY2hl
Y2soZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgotICAgICIiIkNo
ZWNrcyB0aGUgdXNlIG9mIENIRUNLIGFuZCBFWFBFQ1QgbWFjcm9zLgotCi0gICAgQXJnczoKLSAg
ICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgotICAgICAgY2xlYW5f
bGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgotICAg
ICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCi0gICAgICBl
cnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICIi
IgotCi0gICAgIyBEZWNpZGUgdGhlIHNldCBvZiByZXBsYWNlbWVudCBtYWNyb3MgdGhhdCBzaG91
bGQgYmUgc3VnZ2VzdGVkCi0gICAgcmF3X2xpbmVzID0gY2xlYW5fbGluZXMucmF3X2xpbmVzCi0g
ICAgY3VycmVudF9tYWNybyA9ICcnCi0gICAgZm9yIG1hY3JvIGluIF9DSEVDS19NQUNST1M6Ci0g
ICAgICAgIGlmIHJhd19saW5lc1tsaW5lX251bWJlcl0uZmluZChtYWNybykgPj0gMDoKLSAgICAg
ICAgICAgIGN1cnJlbnRfbWFjcm8gPSBtYWNybwotICAgICAgICAgICAgYnJlYWsKLSAgICBpZiBu
b3QgY3VycmVudF9tYWNybzoKLSAgICAgICAgIyBEb24ndCB3YXN0ZSB0aW1lIGhlcmUgaWYgbGlu
ZSBkb2Vzbid0IGNvbnRhaW4gJ0NIRUNLJyBvciAnRVhQRUNUJwotICAgICAgICByZXR1cm4KLQot
ICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICAgICAgICAjIGdldCBy
aWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MKLQotICAgICMgRW5jb3VyYWdlIHJlcGxhY2luZyBw
bGFpbiBDSEVDS3Mgd2l0aCBDSEVDS19FUS9DSEVDS19ORS9ldGMuCi0gICAgZm9yIG9wZXJhdG9y
IGluIFsnPT0nLCAnIT0nLCAnPj0nLCAnPicsICc8PScsICc8J106Ci0gICAgICAgIGlmIHJlcGxh
Y2VhYmxlX2NoZWNrKG9wZXJhdG9yLCBjdXJyZW50X21hY3JvLCBsaW5lKToKLSAgICAgICAgICAg
IGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L2NoZWNrJywgMiwKLSAg
ICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyAlcyBpbnN0ZWFkIG9mICVzKGEgJXMgYikn
ICUgKAotICAgICAgICAgICAgICAgICAgICAgIF9DSEVDS19SRVBMQUNFTUVOVFtjdXJyZW50X21h
Y3JvXVtvcGVyYXRvcl0sCi0gICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9tYWNybywgb3Bl
cmF0b3IpKQotICAgICAgICAgICAgYnJlYWsKLQotCi1kZWYgZ2V0X2xpbmVfd2lkdGgobGluZSk6
Ci0gICAgIiIiRGV0ZXJtaW5lcyB0aGUgd2lkdGggb2YgdGhlIGxpbmUgaW4gY29sdW1uIHBvc2l0
aW9ucy4KLQotICAgIEFyZ3M6Ci0gICAgICBsaW5lOiBBIHN0cmluZywgd2hpY2ggbWF5IGJlIGEg
VW5pY29kZSBzdHJpbmcuCi0KLSAgICBSZXR1cm5zOgotICAgICAgVGhlIHdpZHRoIG9mIHRoZSBs
aW5lIGluIGNvbHVtbiBwb3NpdGlvbnMsIGFjY291bnRpbmcgZm9yIFVuaWNvZGUKLSAgICAgIGNv
bWJpbmluZyBjaGFyYWN0ZXJzIGFuZCB3aWRlIGNoYXJhY3RlcnMuCi0gICAgIiIiCi0gICAgaWYg
aXNpbnN0YW5jZShsaW5lLCB1bmljb2RlKToKLSAgICAgICAgd2lkdGggPSAwCi0gICAgICAgIGZv
ciBjIGluIHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgnTkZDJywgbGluZSk6Ci0gICAgICAgICAgICBp
ZiB1bmljb2RlZGF0YS5lYXN0X2FzaWFuX3dpZHRoKGMpIGluICgnVycsICdGJyk6Ci0gICAgICAg
ICAgICAgICAgd2lkdGggKz0gMgotICAgICAgICAgICAgZWxpZiBub3QgdW5pY29kZWRhdGEuY29t
YmluaW5nKGMpOgotICAgICAgICAgICAgICAgIHdpZHRoICs9IDEKLSAgICAgICAgcmV0dXJuIHdp
ZHRoCi0gICAgcmV0dXJuIGxlbihsaW5lKQotCi0KLWRlZiBjaGVja19zdHlsZShmaWxlbmFtZSwg
Y2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwgZXJyb3IpOgotICAgICIi
IkNoZWNrcyBydWxlcyBmcm9tIHRoZSAnQysrIHN0eWxlIHJ1bGVzJyBzZWN0aW9uIG9mIGNwcGd1
aWRlLmh0bWwuCi0KLSAgICBNb3N0IG9mIHRoZXNlIHJ1bGVzIGFyZSBoYXJkIHRvIHRlc3QgKG5h
bWluZywgY29tbWVudCBzdHlsZSksIGJ1dCB3ZQotICAgIGRvIHdoYXQgd2UgY2FuLiAgSW4gcGFy
dGljdWxhciB3ZSBjaGVjayBmb3IgNC1zcGFjZSBpbmRlbnRzLCBsaW5lIGxlbmd0aHMsCi0gICAg
dGFiIHVzYWdlLCBzcGFjZXMgaW5zaWRlIGNvZGUsIGV0Yy4KLQotICAgIEFyZ3M6Ci0gICAgICBm
aWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KLSAgICAgIGNsZWFuX2xpbmVz
OiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGxp
bmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgZmlsZV9l
eHRlbnNpb246IFRoZSBleHRlbnNpb24gKHdpdGhvdXQgdGhlIGRvdCkgb2YgdGhlIGZpbGVuYW1l
LgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3Vu
ZC4KLSAgICAiIiIKLQotICAgIHJhd19saW5lcyA9IGNsZWFuX2xpbmVzLnJhd19saW5lcwotICAg
IGxpbmUgPSByYXdfbGluZXNbbGluZV9udW1iZXJdCi0KLSAgICBpZiBsaW5lLmZpbmQoJ1x0Jykg
IT0gLTE6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2Uv
dGFiJywgMSwKLSAgICAgICAgICAgICAgJ1RhYiBmb3VuZDsgYmV0dGVyIHRvIHVzZSBzcGFjZXMn
KQotCi0gICAgIyBPbmUgb3IgdGhyZWUgYmxhbmsgc3BhY2VzIGF0IHRoZSBiZWdpbm5pbmcgb2Yg
dGhlIGxpbmUgaXMgd2VpcmQ7IGl0J3MKLSAgICAjIGhhcmQgdG8gcmVjb25jaWxlIHRoYXQgd2l0
aCA0LXNwYWNlIGluZGVudHMuCi0gICAgIyBOT1RFOiBoZXJlIGFyZSB0aGUgY29uZGl0aW9ucyBy
b2IgcGlrZSB1c2VkIGZvciBoaXMgdGVzdHMuICBNaW5lIGFyZW4ndAotICAgICMgYXMgc29waGlz
dGljYXRlZCwgYnV0IGl0IG1heSBiZSB3b3J0aCBiZWNvbWluZyBzbzogIFJMRU5HVEg9PWluaXRp
YWxfc3BhY2VzCi0gICAgIyBpZihSTEVOR1RIID4gMjApIGNvbXBsYWluID0gMDsKLSAgICAjIGlm
KG1hdGNoKCQwLCAiICsoZXJyb3J8cHJpdmF0ZXxwdWJsaWN8cHJvdGVjdGVkKToiKSkgY29tcGxh
aW4gPSAwOwotICAgICMgaWYobWF0Y2gocHJldiwgIiYmICokIikpIGNvbXBsYWluID0gMDsKLSAg
ICAjIGlmKG1hdGNoKHByZXYsICJcXHxcXHwgKiQiKSkgY29tcGxhaW4gPSAwOwotICAgICMgaWYo
bWF0Y2gocHJldiwgIltcIiw9PjxdICokIikpIGNvbXBsYWluID0gMDsKLSAgICAjIGlmKG1hdGNo
KCQwLCAiIDw8IikpIGNvbXBsYWluID0gMDsKLSAgICAjIGlmKG1hdGNoKHByZXYsICIgK2ZvciBc
XCgiKSkgY29tcGxhaW4gPSAwOwotICAgICMgaWYocHJldm9kZCAmJiBtYXRjaChwcmV2cHJldiwg
IiArZm9yIFxcKCIpKSBjb21wbGFpbiA9IDA7Ci0gICAgaW5pdGlhbF9zcGFjZXMgPSAwCi0gICAg
Y2xlYW5zZWRfbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0KLSAgICB3aGls
ZSBpbml0aWFsX3NwYWNlcyA8IGxlbihsaW5lKSBhbmQgbGluZVtpbml0aWFsX3NwYWNlc10gPT0g
JyAnOgotICAgICAgICBpbml0aWFsX3NwYWNlcyArPSAxCi0gICAgaWYgbGluZSBhbmQgbGluZVst
MV0uaXNzcGFjZSgpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0
ZXNwYWNlL2VuZF9vZl9saW5lJywgNCwKLSAgICAgICAgICAgICAgJ0xpbmUgZW5kcyBpbiB3aGl0
ZXNwYWNlLiAgQ29uc2lkZXIgZGVsZXRpbmcgdGhlc2UgZXh0cmEgc3BhY2VzLicpCi0gICAgIyBU
aGVyZSBhcmUgY2VydGFpbiBzaXR1YXRpb25zIHdlIGFsbG93IG9uZSBzcGFjZSwgbm90YWJseSBm
b3IgbGFiZWxzCi0gICAgZWxpZiAoKGluaXRpYWxfc3BhY2VzID49IDEgYW5kIGluaXRpYWxfc3Bh
Y2VzIDw9IDMpCi0gICAgICAgICAgYW5kIG5vdCBtYXRjaChyJ1xzKlx3K1xzKjpccyokJywgY2xl
YW5zZWRfbGluZSkpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0
ZXNwYWNlL2luZGVudCcsIDMsCi0gICAgICAgICAgICAgICdXZWlyZCBudW1iZXIgb2Ygc3BhY2Vz
IGF0IGxpbmUtc3RhcnQuICAnCi0gICAgICAgICAgICAgICdBcmUgeW91IHVzaW5nIGEgNC1zcGFj
ZSBpbmRlbnQ/JykKLSAgICAjIExhYmVscyBzaG91bGQgYWx3YXlzIGJlIGluZGVudGVkIGF0IGxl
YXN0IG9uZSBzcGFjZS4KLSAgICBlbGlmIG5vdCBpbml0aWFsX3NwYWNlcyBhbmQgbGluZVs6Ml0g
IT0gJy8vJyBhbmQgc2VhcmNoKHInW146XTpccyokJywgbGluZSk6Ci0gICAgICAgIGVycm9yKGZp
bGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvbGFiZWxzJywgNCwKLSAgICAgICAgICAg
ICAgJ0xhYmVscyBzaG91bGQgYWx3YXlzIGJlIGluZGVudGVkIGF0IGxlYXN0IG9uZSBzcGFjZS4g
ICcKLSAgICAgICAgICAgICAgJ0lmIHRoaXMgaXMgYSBtZW1iZXItaW5pdGlhbGl6ZXIgbGlzdCBp
biBhIGNvbnN0cnVjdG9yLCAnCi0gICAgICAgICAgICAgICd0aGUgY29sb24gc2hvdWxkIGJlIG9u
IHRoZSBsaW5lIGFmdGVyIHRoZSBkZWZpbml0aW9uIGhlYWRlci4nKQotCi0gICAgaWYgKGNsZWFu
c2VkX2xpbmUuY291bnQoJzsnKSA+IDEKLSAgICAgICAgIyBmb3IgbG9vcHMgYXJlIGFsbG93ZWQg
dHdvIDsncyAoYW5kIG1heSBydW4gb3ZlciB0d28gbGluZXMpLgotICAgICAgICBhbmQgY2xlYW5z
ZWRfbGluZS5maW5kKCdmb3InKSA9PSAtMQotICAgICAgICBhbmQgKGdldF9wcmV2aW91c19ub25f
YmxhbmtfbGluZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIpWzBdLmZpbmQoJ2ZvcicpID09IC0x
Ci0gICAgICAgICAgICAgb3IgZ2V0X3ByZXZpb3VzX25vbl9ibGFua19saW5lKGNsZWFuX2xpbmVz
LCBsaW5lX251bWJlcilbMF0uZmluZCgnOycpICE9IC0xKQotICAgICAgICAjIEl0J3Mgb2sgdG8g
aGF2ZSBtYW55IGNvbW1hbmRzIGluIGEgc3dpdGNoIGNhc2UgdGhhdCBmaXRzIGluIDEgbGluZQot
ICAgICAgICBhbmQgbm90ICgoY2xlYW5zZWRfbGluZS5maW5kKCdjYXNlICcpICE9IC0xCi0gICAg
ICAgICAgICAgICAgICBvciBjbGVhbnNlZF9saW5lLmZpbmQoJ2RlZmF1bHQ6JykgIT0gLTEpCi0g
ICAgICAgICAgICAgICAgIGFuZCBjbGVhbnNlZF9saW5lLmZpbmQoJ2JyZWFrOycpICE9IC0xKSk6
Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvbmV3bGlu
ZScsIDQsCi0gICAgICAgICAgICAgICdNb3JlIHRoYW4gb25lIGNvbW1hbmQgb24gdGhlIHNhbWUg
bGluZScpCi0KLSAgICAjIFNvbWUgbW9yZSBzdHlsZSBjaGVja3MKLSAgICBjaGVja19icmFjZXMo
ZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpCi0gICAgY2hlY2tfc3Bh
Y2luZyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKLSAgICBjaGVj
a19jaGVjayhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKLQotCi1f
UkVfUEFUVEVSTl9JTkNMVURFX05FV19TVFlMRSA9IHJlLmNvbXBpbGUocicjaW5jbHVkZSArIlte
L10rXC5oIicpCi1fUkVfUEFUVEVSTl9JTkNMVURFID0gcmUuY29tcGlsZShyJ15ccyojXHMqaW5j
bHVkZVxzKihbPCJdKShbXj4iXSopWz4iXS4qJCcpCi0jIE1hdGNoZXMgdGhlIGZpcnN0IGNvbXBv
bmVudCBvZiBhIGZpbGVuYW1lIGRlbGltaXRlZCBieSAtcyBhbmQgX3MuIFRoYXQgaXM6Ci0jICBf
UkVfRklSU1RfQ09NUE9ORU5ULm1hdGNoKCdmb28nKS5ncm91cCgwKSA9PSAnZm9vJwotIyAgX1JF
X0ZJUlNUX0NPTVBPTkVOVC5tYXRjaCgnZm9vLmNjJykuZ3JvdXAoMCkgPT0gJ2ZvbycKLSMgIF9S
RV9GSVJTVF9DT01QT05FTlQubWF0Y2goJ2Zvby1iYXJfYmF6LmNjJykuZ3JvdXAoMCkgPT0gJ2Zv
bycKLSMgIF9SRV9GSVJTVF9DT01QT05FTlQubWF0Y2goJ2Zvb19iYXItYmF6LmNjJykuZ3JvdXAo
MCkgPT0gJ2ZvbycKLV9SRV9GSVJTVF9DT01QT05FTlQgPSByZS5jb21waWxlKHInXlteLV8uXSsn
KQotCi0KLWRlZiBfZHJvcF9jb21tb25fc3VmZml4ZXMoZmlsZW5hbWUpOgotICAgICIiIkRyb3Bz
IGNvbW1vbiBzdWZmaXhlcyBsaWtlIF90ZXN0LmNjIG9yIC1pbmwuaCBmcm9tIGZpbGVuYW1lLgot
Ci0gICAgRm9yIGV4YW1wbGU6Ci0gICAgICA+Pj4gX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28v
Zm9vLWlubC5oJykKLSAgICAgICdmb28vZm9vJwotICAgICAgPj4+IF9kcm9wX2NvbW1vbl9zdWZm
aXhlcygnZm9vL2Jhci9mb28uY2MnKQotICAgICAgJ2Zvby9iYXIvZm9vJwotICAgICAgPj4+IF9k
cm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvb19pbnRlcm5hbC5oJykKLSAgICAgICdmb28vZm9v
JwotICAgICAgPj4+IF9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvb191bnVzdWFsaW50ZXJu
YWwuaCcpCi0gICAgICAnZm9vL2Zvb191bnVzdWFsaW50ZXJuYWwnCi0KLSAgICBBcmdzOgotICAg
ICAgZmlsZW5hbWU6IFRoZSBpbnB1dCBmaWxlbmFtZS4KLQotICAgIFJldHVybnM6Ci0gICAgICBU
aGUgZmlsZW5hbWUgd2l0aCB0aGUgY29tbW9uIHN1ZmZpeCByZW1vdmVkLgotICAgICIiIgotICAg
IGZvciBzdWZmaXggaW4gKCd0ZXN0LmNjJywgJ3JlZ3Rlc3QuY2MnLCAndW5pdHRlc3QuY2MnLAot
ICAgICAgICAgICAgICAgICAgICdpbmwuaCcsICdpbXBsLmgnLCAnaW50ZXJuYWwuaCcpOgotICAg
ICAgICBpZiAoZmlsZW5hbWUuZW5kc3dpdGgoc3VmZml4KSBhbmQgbGVuKGZpbGVuYW1lKSA+IGxl
bihzdWZmaXgpCi0gICAgICAgICAgICBhbmQgZmlsZW5hbWVbLWxlbihzdWZmaXgpIC0gMV0gaW4g
KCctJywgJ18nKSk6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZW5hbWVbOi1sZW4oc3VmZml4KSAt
IDFdCi0gICAgcmV0dXJuIG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdCi0KLQotZGVmIF9p
c190ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKToKLSAgICAiIiJEZXRlcm1pbmVzIGlmIHRoZSBnaXZl
biBmaWxlbmFtZSBoYXMgYSBzdWZmaXggdGhhdCBpZGVudGlmaWVzIGl0IGFzIGEgdGVzdC4KLQot
ICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIGlucHV0IGZpbGVuYW1lLgotCi0gICAgUmV0
dXJuczoKLSAgICAgIFRydWUgaWYgJ2ZpbGVuYW1lJyBsb29rcyBsaWtlIGEgdGVzdCwgRmFsc2Ug
b3RoZXJ3aXNlLgotICAgICIiIgotICAgIGlmIChmaWxlbmFtZS5lbmRzd2l0aCgnX3Rlc3QuY2Mn
KQotICAgICAgICBvciBmaWxlbmFtZS5lbmRzd2l0aCgnX3VuaXR0ZXN0LmNjJykKLSAgICAgICAg
b3IgZmlsZW5hbWUuZW5kc3dpdGgoJ19yZWd0ZXN0LmNjJykpOgotICAgICAgICByZXR1cm4gVHJ1
ZQotICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBfY2xhc3NpZnlfaW5jbHVkZShmaWxlaW5mbywg
aW5jbHVkZSwgaXNfc3lzdGVtKToKLSAgICAiIiJGaWd1cmVzIG91dCB3aGF0IGtpbmQgb2YgaGVh
ZGVyICdpbmNsdWRlJyBpcy4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlaW5mbzogVGhlIGN1cnJl
bnQgZmlsZSBjcHBsaW50IGlzIHJ1bm5pbmcgb3Zlci4gQSBGaWxlSW5mbyBpbnN0YW5jZS4KLSAg
ICAgIGluY2x1ZGU6IFRoZSBwYXRoIHRvIGEgI2luY2x1ZGVkIGZpbGUuCi0gICAgICBpc19zeXN0
ZW06IFRydWUgaWYgdGhlICNpbmNsdWRlIHVzZWQgPD4gcmF0aGVyIHRoYW4gIiIuCi0KLSAgICBS
ZXR1cm5zOgotICAgICAgT25lIG9mIHRoZSBfWFhYX0hFQURFUiBjb25zdGFudHMuCi0KLSAgICBG
b3IgZXhhbXBsZToKLSAgICAgID4+PiBfY2xhc3NpZnlfaW5jbHVkZShGaWxlSW5mbygnZm9vL2Zv
by5jYycpLCAnc3RkaW8uaCcsIFRydWUpCi0gICAgICBfQ19TWVNfSEVBREVSCi0gICAgICA+Pj4g
X2NsYXNzaWZ5X2luY2x1ZGUoRmlsZUluZm8oJ2Zvby9mb28uY2MnKSwgJ3N0cmluZycsIFRydWUp
Ci0gICAgICBfQ1BQX1NZU19IRUFERVIKLSAgICAgID4+PiBfY2xhc3NpZnlfaW5jbHVkZShGaWxl
SW5mbygnZm9vL2Zvby5jYycpLCAnZm9vL2Zvby5oJywgRmFsc2UpCi0gICAgICBfTElLRUxZX01Z
X0hFQURFUgotICAgICAgPj4+IF9jbGFzc2lmeV9pbmNsdWRlKEZpbGVJbmZvKCdmb28vZm9vX3Vu
a25vd25fZXh0ZW5zaW9uLmNjJyksCi0gICAgICAuLi4gICAgICAgICAgICAgICAgICAnYmFyL2Zv
b19vdGhlcl9leHQuaCcsIEZhbHNlKQotICAgICAgX1BPU1NJQkxFX01ZX0hFQURFUgotICAgICAg
Pj4+IF9jbGFzc2lmeV9pbmNsdWRlKEZpbGVJbmZvKCdmb28vZm9vLmNjJyksICdmb28vYmFyLmgn
LCBGYWxzZSkKLSAgICAgIF9PVEhFUl9IRUFERVIKLSAgICAiIiIKLSAgICAjIFRoaXMgaXMgYSBs
aXN0IG9mIGFsbCBzdGFuZGFyZCBjKysgaGVhZGVyIGZpbGVzLCBleGNlcHQKLSAgICAjIHRob3Nl
IGFscmVhZHkgY2hlY2tlZCBmb3IgYWJvdmUuCi0gICAgaXNfc3RsX2ggPSBpbmNsdWRlIGluIF9T
VExfSEVBREVSUwotICAgIGlzX2NwcF9oID0gaXNfc3RsX2ggb3IgaW5jbHVkZSBpbiBfQ1BQX0hF
QURFUlMKLQotICAgIGlmIGlzX3N5c3RlbToKLSAgICAgICAgaWYgaXNfY3BwX2g6Ci0gICAgICAg
ICAgICByZXR1cm4gX0NQUF9TWVNfSEVBREVSCi0gICAgICAgIHJldHVybiBfQ19TWVNfSEVBREVS
Ci0KLSAgICAjIElmIHRoZSB0YXJnZXQgZmlsZSBhbmQgdGhlIGluY2x1ZGUgd2UncmUgY2hlY2tp
bmcgc2hhcmUgYQotICAgICMgYmFzZW5hbWUgd2hlbiB3ZSBkcm9wIGNvbW1vbiBleHRlbnNpb25z
LCBhbmQgdGhlIGluY2x1ZGUKLSAgICAjIGxpdmVzIGluIC4gLCB0aGVuIGl0J3MgbGlrZWx5IHRv
IGJlIG93bmVkIGJ5IHRoZSB0YXJnZXQgZmlsZS4KLSAgICB0YXJnZXRfZGlyLCB0YXJnZXRfYmFz
ZSA9ICgKLSAgICAgICAgb3MucGF0aC5zcGxpdChfZHJvcF9jb21tb25fc3VmZml4ZXMoZmlsZWlu
Zm8ucmVwb3NpdG9yeV9uYW1lKCkpKSkKLSAgICBpbmNsdWRlX2RpciwgaW5jbHVkZV9iYXNlID0g
b3MucGF0aC5zcGxpdChfZHJvcF9jb21tb25fc3VmZml4ZXMoaW5jbHVkZSkpCi0gICAgaWYgKHRh
cmdldF9iYXNlID09IGluY2x1ZGVfYmFzZQotICAgICAgICBhbmQgKGluY2x1ZGVfZGlyID09IHRh
cmdldF9kaXIKLSAgICAgICAgICAgICBvciBpbmNsdWRlX2RpciA9PSBvcy5wYXRoLm5vcm1wYXRo
KHRhcmdldF9kaXIgKyAnLy4uL3B1YmxpYycpKSk6Ci0gICAgICAgIHJldHVybiBfTElLRUxZX01Z
X0hFQURFUgotCi0gICAgIyBJZiB0aGUgdGFyZ2V0IGFuZCBpbmNsdWRlIHNoYXJlIHNvbWUgaW5p
dGlhbCBiYXNlbmFtZQotICAgICMgY29tcG9uZW50LCBpdCdzIHBvc3NpYmxlIHRoZSB0YXJnZXQg
aXMgaW1wbGVtZW50aW5nIHRoZQotICAgICMgaW5jbHVkZSwgc28gaXQncyBhbGxvd2VkIHRvIGJl
IGZpcnN0LCBidXQgd2UnbGwgbmV2ZXIKLSAgICAjIGNvbXBsYWluIGlmIGl0J3Mgbm90IHRoZXJl
LgotICAgIHRhcmdldF9maXJzdF9jb21wb25lbnQgPSBfUkVfRklSU1RfQ09NUE9ORU5ULm1hdGNo
KHRhcmdldF9iYXNlKQotICAgIGluY2x1ZGVfZmlyc3RfY29tcG9uZW50ID0gX1JFX0ZJUlNUX0NP
TVBPTkVOVC5tYXRjaChpbmNsdWRlX2Jhc2UpCi0gICAgaWYgKHRhcmdldF9maXJzdF9jb21wb25l
bnQgYW5kIGluY2x1ZGVfZmlyc3RfY29tcG9uZW50Ci0gICAgICAgIGFuZCB0YXJnZXRfZmlyc3Rf
Y29tcG9uZW50Lmdyb3VwKDApID09IGluY2x1ZGVfZmlyc3RfY29tcG9uZW50Lmdyb3VwKDApKToK
LSAgICAgICAgcmV0dXJuIF9QT1NTSUJMRV9NWV9IRUFERVIKLQotICAgIHJldHVybiBfT1RIRVJf
SEVBREVSCi0KLQotCi1kZWYgY2hlY2tfaW5jbHVkZV9saW5lKGZpbGVuYW1lLCBjbGVhbl9saW5l
cywgbGluZV9udW1iZXIsIGluY2x1ZGVfc3RhdGUsIGVycm9yKToKLSAgICAiIiJDaGVjayBydWxl
cyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvICNpbmNsdWRlIGxpbmVzLgotCi0gICAgU3RyaW5ncyBv
biAjaW5jbHVkZSBsaW5lcyBhcmUgTk9UIHJlbW92ZWQgZnJvbSBlbGlkZWQgbGluZSwgdG8gbWFr
ZQotICAgIGNlcnRhaW4gdGFza3MgZWFzaWVyLiBIb3dldmVyLCB0byBwcmV2ZW50IGZhbHNlIHBv
c2l0aXZlcywgY2hlY2tzCi0gICAgYXBwbGljYWJsZSB0byAjaW5jbHVkZSBsaW5lcyBpbiBDaGVj
a0xhbmd1YWdlIG11c3QgYmUgcHV0IGhlcmUuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6
IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCi0gICAgICBjbGVhbl9saW5lczogQSBDbGVh
bnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCi0gICAgICBsaW5lX251bWJl
cjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KLSAgICAgIGluY2x1ZGVfc3RhdGU6
IEFuIF9JbmNsdWRlU3RhdGUgaW5zdGFuY2UgaW4gd2hpY2ggdGhlIGhlYWRlcnMgYXJlIGluc2Vy
dGVkLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBm
b3VuZC4KLSAgICAiIiIKLSAgICBmaWxlaW5mbyA9IEZpbGVJbmZvKGZpbGVuYW1lKQotCi0gICAg
bGluZSA9IGNsZWFuX2xpbmVzLmxpbmVzW2xpbmVfbnVtYmVyXQotCi0gICAgIyMgImluY2x1ZGUi
IHNob3VsZCB1c2UgdGhlIG5ldyBzdHlsZSAiZm9vL2Jhci5oIiBpbnN0ZWFkIG9mIGp1c3QgImJh
ci5oIgotICAgICNpZiBfUkVfUEFUVEVSTl9JTkNMVURFX05FV19TVFlMRS5zZWFyY2gobGluZSk6
Ci0gICAgIyAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnYnVpbGQvaW5jbHVkZScsIDQs
Ci0gICAgIyAgICAgICAgJ0luY2x1ZGUgdGhlIGRpcmVjdG9yeSB3aGVuIG5hbWluZyAuaCBmaWxl
cycpCi0KLSAgICAjIHdlIHNob3VsZG4ndCBpbmNsdWRlIGEgZmlsZSBtb3JlIHRoYW4gb25jZS4g
YWN0dWFsbHksIHRoZXJlIGFyZSBhCi0gICAgIyBoYW5kZnVsIG9mIGluc3RhbmNlcyB3aGVyZSBk
b2luZyBzbyBpcyBva2F5LCBidXQgaW4gZ2VuZXJhbCBpdCdzCi0gICAgIyBub3QuCi0gICAgbWF0
Y2hlZCA9IF9SRV9QQVRURVJOX0lOQ0xVREUuc2VhcmNoKGxpbmUpCi0gICAgaWYgbWF0Y2hlZDoK
LSAgICAgICAgaW5jbHVkZSA9IG1hdGNoZWQuZ3JvdXAoMikKLSAgICAgICAgaXNfc3lzdGVtID0g
KG1hdGNoZWQuZ3JvdXAoMSkgPT0gJzwnKQotICAgICAgICBpZiBpbmNsdWRlIGluIGluY2x1ZGVf
c3RhdGU6Ci0gICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdidWlsZC9p
bmNsdWRlJywgNCwKLSAgICAgICAgICAgICAgICAgICciJXMiIGFscmVhZHkgaW5jbHVkZWQgYXQg
JXM6JXMnICUKLSAgICAgICAgICAgICAgICAgIChpbmNsdWRlLCBmaWxlbmFtZSwgaW5jbHVkZV9z
dGF0ZVtpbmNsdWRlXSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpbmNsdWRlX3N0YXRl
W2luY2x1ZGVdID0gbGluZV9udW1iZXIKLQotICAgICAgICAgICAgIyBXZSB3YW50IHRvIGVuc3Vy
ZSB0aGF0IGhlYWRlcnMgYXBwZWFyIGluIHRoZSByaWdodCBvcmRlcjoKLSAgICAgICAgICAgICMg
MSkgZm9yIGZvby5jYywgZm9vLmggIChwcmVmZXJyZWQgbG9jYXRpb24pCi0gICAgICAgICAgICAj
IDIpIGMgc3lzdGVtIGZpbGVzCi0gICAgICAgICAgICAjIDMpIGNwcCBzeXN0ZW0gZmlsZXMKLSAg
ICAgICAgICAgICMgNCkgZm9yIGZvby5jYywgZm9vLmggIChkZXByZWNhdGVkIGxvY2F0aW9uKQot
ICAgICAgICAgICAgIyA1KSBvdGhlciBnb29nbGUgaGVhZGVycwotICAgICAgICAgICAgIwotICAg
ICAgICAgICAgIyBXZSBjbGFzc2lmeSBlYWNoIGluY2x1ZGUgc3RhdGVtZW50IGFzIG9uZSBvZiB0
aG9zZSA1IHR5cGVzCi0gICAgICAgICAgICAjIHVzaW5nIGEgbnVtYmVyIG9mIHRlY2huaXF1ZXMu
IFRoZSBpbmNsdWRlX3N0YXRlIG9iamVjdCBrZWVwcwotICAgICAgICAgICAgIyB0cmFjayBvZiB0
aGUgaGlnaGVzdCB0eXBlIHNlZW4sIGFuZCBjb21wbGFpbnMgaWYgd2Ugc2VlIGEKLSAgICAgICAg
ICAgICMgbG93ZXIgdHlwZSBhZnRlciB0aGF0LgotICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9
IGluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKAotICAgICAgICAgICAgICAg
IF9jbGFzc2lmeV9pbmNsdWRlKGZpbGVpbmZvLCBpbmNsdWRlLCBpc19zeXN0ZW0pKQotICAgICAg
ICAgICAgaWYgZXJyb3JfbWVzc2FnZToKLSAgICAgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwg
bGluZV9udW1iZXIsICdidWlsZC9pbmNsdWRlX29yZGVyJywgNCwKLSAgICAgICAgICAgICAgICAg
ICAgICAnJXMuIFNob3VsZCBiZTogJXMuaCwgYyBzeXN0ZW0sIGMrKyBzeXN0ZW0sIG90aGVyLicg
JQotICAgICAgICAgICAgICAgICAgICAgIChlcnJvcl9tZXNzYWdlLCBmaWxlaW5mby5iYXNlX25h
bWUoKSkpCi0KLSAgICAjIExvb2sgZm9yIGFueSBvZiB0aGUgc3RyZWFtIGNsYXNzZXMgdGhhdCBh
cmUgcGFydCBvZiBzdGFuZGFyZCBDKysuCi0gICAgbWF0Y2hlZCA9IF9SRV9QQVRURVJOX0lOQ0xV
REUubWF0Y2gobGluZSkKLSAgICBpZiBtYXRjaGVkOgotICAgICAgICBpbmNsdWRlID0gbWF0Y2hl
ZC5ncm91cCgyKQotICAgICAgICBpZiBtYXRjaChyJyhmfGluZHxpb3xpfG98cGFyc2V8cGZ8c3Rk
aW98c3RyfCk/c3RyZWFtJCcsIGluY2x1ZGUpOgotICAgICAgICAgICAgIyBNYW55IHVuaXQgdGVz
dHMgdXNlIGNvdXQsIHNvIHdlIGV4ZW1wdCB0aGVtLgotICAgICAgICAgICAgaWYgbm90IF9pc190
ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKToKLSAgICAgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwg
bGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9zdHJlYW1zJywgMywKLSAgICAgICAgICAgICAgICAg
ICAgICAnU3RyZWFtcyBhcmUgaGlnaGx5IGRpc2NvdXJhZ2VkLicpCi0KLWRlZiBjaGVja19sYW5n
dWFnZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwg
aW5jbHVkZV9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICBlcnJvcik6Ci0gICAgIiIiQ2hlY2tz
IHJ1bGVzIGZyb20gdGhlICdDKysgbGFuZ3VhZ2UgcnVsZXMnIHNlY3Rpb24gb2YgY3BwZ3VpZGUu
aHRtbC4KLQotICAgIFNvbWUgb2YgdGhlc2UgcnVsZXMgYXJlIGhhcmQgdG8gdGVzdCAoZnVuY3Rp
b24gb3ZlcmxvYWRpbmcsIHVzaW5nCi0gICAgdWludDMyIGluYXBwcm9wcmlhdGVseSksIGJ1dCB3
ZSBkbyB0aGUgYmVzdCB3ZSBjYW4uCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBu
YW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCi0gICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExp
bmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCi0gICAgICBsaW5lX251bWJlcjogVGhl
IG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KLSAgICAgIGZpbGVfZXh0ZW5zaW9uOiBUaGUg
ZXh0ZW5zaW9uICh3aXRob3V0IHRoZSBkb3QpIG9mIHRoZSBmaWxlbmFtZS4KLSAgICAgIGluY2x1
ZGVfc3RhdGU6IEFuIF9JbmNsdWRlU3RhdGUgaW5zdGFuY2UgaW4gd2hpY2ggdGhlIGhlYWRlcnMg
YXJlIGluc2VydGVkLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55
IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLSAgICAjIElmIHRoZSBsaW5lIGlzIGVtcHR5IG9yIGNv
bnNpc3RzIG9mIGVudGlyZWx5IGEgY29tbWVudCwgbm8gbmVlZCB0bwotICAgICMgY2hlY2sgaXQu
Ci0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0KLSAgICBpZiBub3Qg
bGluZToKLSAgICAgICAgcmV0dXJuCi0KLSAgICBtYXRjaGVkID0gX1JFX1BBVFRFUk5fSU5DTFVE
RS5zZWFyY2gobGluZSkKLSAgICBpZiBtYXRjaGVkOgotICAgICAgICBjaGVja19pbmNsdWRlX2xp
bmUoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgaW5jbHVkZV9zdGF0ZSwgZXJy
b3IpCi0gICAgICAgIHJldHVybgotCi0gICAgIyBGSVhNRTogZmlndXJlIG91dCBpZiB0aGV5J3Jl
IHVzaW5nIGRlZmF1bHQgYXJndW1lbnRzIGluIGZuIHByb3RvLgotCi0gICAgIyBDaGVjayB0byBz
ZWUgaWYgdGhleSdyZSB1c2luZyBhbiBjb252ZXJzaW9uIGZ1bmN0aW9uIGNhc3QuCi0gICAgIyBJ
IGp1c3QgdHJ5IHRvIGNhcHR1cmUgdGhlIG1vc3QgY29tbW9uIGJhc2ljIHR5cGVzLCB0aG91Z2gg
dGhlcmUgYXJlIG1vcmUuCi0gICAgIyBQYXJhbWV0ZXJsZXNzIGNvbnZlcnNpb24gZnVuY3Rpb25z
LCBzdWNoIGFzIGJvb2woKSwgYXJlIGFsbG93ZWQgYXMgdGhleSBhcmUKLSAgICAjIHByb2JhYmx5
IGEgbWVtYmVyIG9wZXJhdG9yIGRlY2xhcmF0aW9uIG9yIGRlZmF1bHQgY29uc3RydWN0b3IuCi0g
ICAgbWF0Y2hlZCA9IHNlYXJjaCgKLSAgICAgICAgcidcYihpbnR8ZmxvYXR8ZG91YmxlfGJvb2x8
Y2hhcnxpbnQzMnx1aW50MzJ8aW50NjR8dWludDY0KVwoW14pXScsIGxpbmUpCi0gICAgaWYgbWF0
Y2hlZDoKLSAgICAgICAgIyBnTW9jayBtZXRob2RzIGFyZSBkZWZpbmVkIHVzaW5nIHNvbWUgdmFy
aWFudCBvZiBNT0NLX01FVEhPRHgobmFtZSwgdHlwZSkKLSAgICAgICAgIyB3aGVyZSB0eXBlIG1h
eSBiZSBmbG9hdCgpLCBpbnQoc3RyaW5nKSwgZXRjLiAgV2l0aG91dCBjb250ZXh0IHRoZXkgYXJl
Ci0gICAgICAgICMgdmlydHVhbGx5IGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gaW50KHgpIGNhc3Rz
LgotICAgICAgICBpZiBub3QgbWF0Y2gocideXHMqTU9DS18oQ09OU1RfKT9NRVRIT0RcZCsoX1Qp
P1woJywgbGluZSk6Ci0gICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdy
ZWFkYWJpbGl0eS9jYXN0aW5nJywgNCwKLSAgICAgICAgICAgICAgICAgICdVc2luZyBkZXByZWNh
dGVkIGNhc3Rpbmcgc3R5bGUuICAnCi0gICAgICAgICAgICAgICAgICAnVXNlIHN0YXRpY19jYXN0
PCVzPiguLi4pIGluc3RlYWQnICUKLSAgICAgICAgICAgICAgICAgIG1hdGNoZWQuZ3JvdXAoMSkp
Ci0KLSAgICBjaGVja19jX3N0eWxlX2Nhc3QoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBsaW5lLCBj
bGVhbl9saW5lcy5yYXdfbGluZXNbbGluZV9udW1iZXJdLAotICAgICAgICAgICAgICAgICAgICAg
ICAnc3RhdGljX2Nhc3QnLAotICAgICAgICAgICAgICAgICAgICAgICByJ1woKGludHxmbG9hdHxk
b3VibGV8Ym9vbHxjaGFyfHU/aW50KDE2fDMyfDY0KSlcKScsCi0gICAgICAgICAgICAgICAgICAg
ICAgIGVycm9yKQotICAgICMgVGhpcyBkb2Vzbid0IGNhdGNoIGFsbCBjYXNlcy4gIENvbnNpZGVy
IChjb25zdCBjaGFyICogY29uc3QpImhlbGxvIi4KLSAgICBjaGVja19jX3N0eWxlX2Nhc3QoZmls
ZW5hbWUsIGxpbmVfbnVtYmVyLCBsaW5lLCBjbGVhbl9saW5lcy5yYXdfbGluZXNbbGluZV9udW1i
ZXJdLAotICAgICAgICAgICAgICAgICAgICAgICAncmVpbnRlcnByZXRfY2FzdCcsIHInXCgoXHcr
XHM/XCorXHM/KVwpJywgZXJyb3IpCi0KLSAgICAjIEluIGFkZGl0aW9uLCB3ZSBsb29rIGZvciBw
ZW9wbGUgdGFraW5nIHRoZSBhZGRyZXNzIG9mIGEgY2FzdC4gIFRoaXMKLSAgICAjIGlzIGRhbmdl
cm91cyAtLSBjYXN0cyBjYW4gYXNzaWduIHRvIHRlbXBvcmFyaWVzLCBzbyB0aGUgcG9pbnRlciBk
b2Vzbid0Ci0gICAgIyBwb2ludCB3aGVyZSB5b3UgdGhpbmsuCi0gICAgaWYgc2VhcmNoKAotICAg
ICAgICByJygmXChbXildK1wpW1x3KF0pfCgmKHN0YXRpY3xkeW5hbWljfHJlaW50ZXJwcmV0KV9j
YXN0XGIpJywgbGluZSk6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3J1
bnRpbWUvY2FzdGluZycsIDQsCi0gICAgICAgICAgICAgICgnQXJlIHlvdSB0YWtpbmcgYW4gYWRk
cmVzcyBvZiBhIGNhc3Q/ICAnCi0gICAgICAgICAgICAgICAnVGhpcyBpcyBkYW5nZXJvdXM6IGNv
dWxkIGJlIGEgdGVtcCB2YXIuICAnCi0gICAgICAgICAgICAgICAnVGFrZSB0aGUgYWRkcmVzcyBi
ZWZvcmUgZG9pbmcgdGhlIGNhc3QsIHJhdGhlciB0aGFuIGFmdGVyJykpCi0KLSAgICAjIENoZWNr
IGZvciBwZW9wbGUgZGVjbGFyaW5nIHN0YXRpYy9nbG9iYWwgU1RMIHN0cmluZ3MgYXQgdGhlIHRv
cCBsZXZlbC4KLSAgICAjIFRoaXMgaXMgZGFuZ2Vyb3VzIGJlY2F1c2UgdGhlIEMrKyBsYW5ndWFn
ZSBkb2VzIG5vdCBndWFyYW50ZWUgdGhhdAotICAgICMgZ2xvYmFscyB3aXRoIGNvbnN0cnVjdG9y
cyBhcmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBmaXJzdCBhY2Nlc3MuCi0gICAgbWF0Y2hlZCA9
IG1hdGNoKAotICAgICAgICByJygoPzp8c3RhdGljICspKD86fGNvbnN0ICspKXN0cmluZyArKFth
LXpBLVowLTlfOl0rKVxiKC4qKScsCi0gICAgICAgIGxpbmUpCi0gICAgIyBNYWtlIHN1cmUgaXQn
cyBub3QgYSBmdW5jdGlvbi4KLSAgICAjIEZ1bmN0aW9uIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9u
IGxvb2tzIGxpa2U6ICJzdHJpbmcgZm9vPFR5cGU+KC4uLiIuCi0gICAgIyBDbGFzcyB0ZW1wbGF0
ZSBkZWZpbml0aW9ucyBsb29rIGxpa2U6ICJzdHJpbmcgRm9vPFR5cGU+OjpNZXRob2QoLi4uIi4K
LSAgICBpZiBtYXRjaGVkIGFuZCBub3QgbWF0Y2gocidccyooPC4qPik/KDo6W2EtekEtWjAtOV9d
Kyk/XHMqXCgoW14iXXwkKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQu
Z3JvdXAoMykpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdydW50aW1l
L3N0cmluZycsIDQsCi0gICAgICAgICAgICAgICdGb3IgYSBzdGF0aWMvZ2xvYmFsIHN0cmluZyBj
b25zdGFudCwgdXNlIGEgQyBzdHlsZSBzdHJpbmcgaW5zdGVhZDogJwotICAgICAgICAgICAgICAn
IiVzY2hhciAlc1tdIi4nICUKLSAgICAgICAgICAgICAgKG1hdGNoZWQuZ3JvdXAoMSksIG1hdGNo
ZWQuZ3JvdXAoMikpKQotCi0gICAgIyBDaGVjayB0aGF0IHdlJ3JlIG5vdCB1c2luZyBSVFRJIG91
dHNpZGUgb2YgdGVzdGluZyBjb2RlLgotICAgIGlmIHNlYXJjaChyJ1xiZHluYW1pY19jYXN0PCcs
IGxpbmUpIGFuZCBub3QgX2lzX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUpOgotICAgICAgICBlcnJv
cihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdydW50aW1lL3J0dGknLCA1LAotICAgICAgICAgICAg
ICAnRG8gbm90IHVzZSBkeW5hbWljX2Nhc3Q8Pi4gIElmIHlvdSBuZWVkIHRvIGNhc3Qgd2l0aGlu
IGEgY2xhc3MgJwotICAgICAgICAgICAgICAiaGllcmFyY2h5LCB1c2Ugc3RhdGljX2Nhc3Q8PiB0
byB1cGNhc3QuICBHb29nbGUgZG9lc24ndCBzdXBwb3J0ICIKLSAgICAgICAgICAgICAgJ1JUVEku
JykKLQotICAgIGlmIHNlYXJjaChyJ1xiKFtBLVphLXowLTlfXSpfKVwoXDFcKScsIGxpbmUpOgot
ICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdydW50aW1lL2luaXQnLCA0LAot
ICAgICAgICAgICAgICAnWW91IHNlZW0gdG8gYmUgaW5pdGlhbGl6aW5nIGEgbWVtYmVyIHZhcmlh
YmxlIHdpdGggaXRzZWxmLicpCi0KLSAgICBpZiBmaWxlX2V4dGVuc2lvbiA9PSAnaCc6Ci0gICAg
ICAgICMgRklYTUU6IGNoZWNrIHRoYXQgMS1hcmcgY29uc3RydWN0b3JzIGFyZSBleHBsaWNpdC4K
LSAgICAgICAgIyAgICAgICAgSG93IHRvIHRlbGwgaXQncyBhIGNvbnN0cnVjdG9yPwotICAgICAg
ICAjICAgICAgICAoaGFuZGxlZCBpbiBjaGVja19mb3Jfbm9uX3N0YW5kYXJkX2NvbnN0cnVjdHMg
Zm9yIG5vdykKLSAgICAgICAgcGFzcwotCi0gICAgIyBDaGVjayBpZiBwZW9wbGUgYXJlIHVzaW5n
IHRoZSB2ZXJib3RlbiBDIGJhc2ljIHR5cGVzLiAgVGhlIG9ubHkgZXhjZXB0aW9uCi0gICAgIyB3
ZSByZWd1bGFybHkgYWxsb3cgaXMgInVuc2lnbmVkIHNob3J0IHBvcnQiIGZvciBwb3J0LgotICAg
IGlmIHNlYXJjaChyJ1xic2hvcnQgcG9ydFxiJywgbGluZSk6Ci0gICAgICAgIGlmIG5vdCBzZWFy
Y2gocidcYnVuc2lnbmVkIHNob3J0IHBvcnRcYicsIGxpbmUpOgotICAgICAgICAgICAgZXJyb3Io
ZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncnVudGltZS9pbnQnLCA0LAotICAgICAgICAgICAgICAg
ICAgJ1VzZSAidW5zaWduZWQgc2hvcnQiIGZvciBwb3J0cywgbm90ICJzaG9ydCInKQotCi0gICAg
IyBXaGVuIHNucHJpbnRmIGlzIHVzZWQsIHRoZSBzZWNvbmQgYXJndW1lbnQgc2hvdWxkbid0IGJl
IGEgbGl0ZXJhbC4KLSAgICBtYXRjaGVkID0gc2VhcmNoKHInc25wcmludGZccypcKChbXixdKiks
XHMqKFswLTldKilccyosJywgbGluZSkKLSAgICBpZiBtYXRjaGVkOgotICAgICAgICBlcnJvcihm
aWxlbmFtZSwgbGluZV9udW1iZXIsICdydW50aW1lL3ByaW50ZicsIDMsCi0gICAgICAgICAgICAg
ICdJZiB5b3UgY2FuLCB1c2Ugc2l6ZW9mKCVzKSBpbnN0ZWFkIG9mICVzIGFzIHRoZSAybmQgYXJn
ICcKLSAgICAgICAgICAgICAgJ3RvIHNucHJpbnRmLicgJSAobWF0Y2hlZC5ncm91cCgxKSwgbWF0
Y2hlZC5ncm91cCgyKSkpCi0KLSAgICAjIENoZWNrIGlmIHNvbWUgdmVyYm90ZW4gQyBmdW5jdGlv
bnMgYXJlIGJlaW5nIHVzZWQuCi0gICAgaWYgc2VhcmNoKHInXGJzcHJpbnRmXGInLCBsaW5lKToK
LSAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncnVudGltZS9wcmludGYnLCA1
LAotICAgICAgICAgICAgICAnTmV2ZXIgdXNlIHNwcmludGYuICBVc2Ugc25wcmludGYgaW5zdGVh
ZC4nKQotICAgIG1hdGNoZWQgPSBzZWFyY2gocidcYihzdHJjcHl8c3RyY2F0KVxiJywgbGluZSkK
LSAgICBpZiBtYXRjaGVkOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdy
dW50aW1lL3ByaW50ZicsIDQsCi0gICAgICAgICAgICAgICdBbG1vc3QgYWx3YXlzLCBzbnByaW50
ZiBpcyBiZXR0ZXIgdGhhbiAlcycgJSBtYXRjaGVkLmdyb3VwKDEpKQotCi0gICAgaWYgc2VhcmNo
KHInXGJzc2NhbmZcYicsIGxpbmUpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1i
ZXIsICdydW50aW1lL3ByaW50ZicsIDEsCi0gICAgICAgICAgICAgICdzc2NhbmYgY2FuIGJlIG9r
LCBidXQgaXMgc2xvdyBhbmQgY2FuIG92ZXJmbG93IGJ1ZmZlcnMuJykKLQotICAgICMgQ2hlY2sg
Zm9yIHN1c3BpY2lvdXMgdXNhZ2Ugb2YgImlmIiBsaWtlCi0gICAgIyB9IGlmIChhID09IGIpIHsK
LSAgICBpZiBzZWFyY2gocidcfVxzKmlmXHMqXCgnLCBsaW5lKToKLSAgICAgICAgZXJyb3IoZmls
ZW5hbWUsIGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvYnJhY2VzJywgNCwKLSAgICAgICAgICAg
ICAgJ0RpZCB5b3UgbWVhbiAiZWxzZSBpZiI/IElmIG5vdCwgc3RhcnQgYSBuZXcgbGluZSBmb3Ig
ImlmIi4nKQotCi0gICAgIyBDaGVjayBmb3IgcG90ZW50aWFsIGZvcm1hdCBzdHJpbmcgYnVncyBs
aWtlIHByaW50Zihmb28pLgotICAgICMgV2UgY29uc3RyYWluIHRoZSBwYXR0ZXJuIG5vdCB0byBw
aWNrIHRoaW5ncyBsaWtlIERvY2lkRm9yUHJpbnRmKGZvbykuCi0gICAgIyBOb3QgcGVyZmVjdCBi
dXQgaXQgY2FuIGNhdGNoIHByaW50Zihmb28uY19zdHIoKSkgYW5kIHByaW50Zihmb28tPmNfc3Ry
KCkpCi0gICAgbWF0Y2hlZCA9IHJlLnNlYXJjaChyJ1xiKCg/OnN0cmluZyk/cHJpbnRmKVxzKlwo
KFtcdy5cLT4oKV0rKVwpJywgbGluZSwgcmUuSSkKLSAgICBpZiBtYXRjaGVkOgotICAgICAgICBl
cnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdydW50aW1lL3ByaW50ZicsIDQsCi0gICAgICAg
ICAgICAgICdQb3RlbnRpYWwgZm9ybWF0IHN0cmluZyBidWcuIERvICVzKCIlJXMiLCAlcykgaW5z
dGVhZC4nCi0gICAgICAgICAgICAgICUgKG1hdGNoZWQuZ3JvdXAoMSksIG1hdGNoZWQuZ3JvdXAo
MikpKQotCi0gICAgIyBDaGVjayBmb3IgcG90ZW50aWFsIG1lbXNldCBidWdzIGxpa2UgbWVtc2V0
KGJ1Ziwgc2l6ZW9mKGJ1ZiksIDApLgotICAgIG1hdGNoZWQgPSBzZWFyY2gocidtZW1zZXRccypc
KChbXixdKiksXHMqKFteLF0qKSxccyowXHMqXCknLCBsaW5lKQotICAgIGlmIG1hdGNoZWQgYW5k
IG5vdCBtYXRjaChyIl4nJ3wtP1swLTldK3wweFswLTlBLUZhLWZdJCIsIG1hdGNoZWQuZ3JvdXAo
MikpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdydW50aW1lL21lbXNl
dCcsIDQsCi0gICAgICAgICAgICAgICdEaWQgeW91IG1lYW4gIm1lbXNldCglcywgMCwgJXMpIj8n
Ci0gICAgICAgICAgICAgICUgKG1hdGNoZWQuZ3JvdXAoMSksIG1hdGNoZWQuZ3JvdXAoMikpKQot
Ci0gICAgIyBEZXRlY3QgdmFyaWFibGUtbGVuZ3RoIGFycmF5cy4KLSAgICBtYXRjaGVkID0gbWF0
Y2gocidccyooLis6Oik/KFx3KykgW2Etel1cdypcWyguKyldOycsIGxpbmUpCi0gICAgaWYgKG1h
dGNoZWQgYW5kIG1hdGNoZWQuZ3JvdXAoMikgIT0gJ3JldHVybicgYW5kIG1hdGNoZWQuZ3JvdXAo
MikgIT0gJ2RlbGV0ZScgYW5kCi0gICAgICAgIG1hdGNoZWQuZ3JvdXAoMykuZmluZCgnXScpID09
IC0xKToKLSAgICAgICAgIyBTcGxpdCB0aGUgc2l6ZSB1c2luZyBzcGFjZSBhbmQgYXJpdGhtZXRp
YyBvcGVyYXRvcnMgYXMgZGVsaW1pdGVycy4KLSAgICAgICAgIyBJZiBhbnkgb2YgdGhlIHJlc3Vs
dGluZyB0b2tlbnMgYXJlIG5vdCBjb21waWxlIHRpbWUgY29uc3RhbnRzIHRoZW4KLSAgICAgICAg
IyByZXBvcnQgdGhlIGVycm9yLgotICAgICAgICB0b2tlbnMgPSByZS5zcGxpdChyJ1xzfFwrfFwt
fFwqfFwvfDw8fD4+XScsIG1hdGNoZWQuZ3JvdXAoMykpCi0gICAgICAgIGlzX2NvbnN0ID0gVHJ1
ZQotICAgICAgICBza2lwX25leHQgPSBGYWxzZQotICAgICAgICBmb3IgdG9rIGluIHRva2VuczoK
LSAgICAgICAgICAgIGlmIHNraXBfbmV4dDoKLSAgICAgICAgICAgICAgICBza2lwX25leHQgPSBG
YWxzZQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIGlmIHNlYXJjaChy
J3NpemVvZlwoLitcKScsIHRvayk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAg
ICAgIGlmIHNlYXJjaChyJ2FycmF5c2l6ZVwoXHcrXCknLCB0b2spOgotICAgICAgICAgICAgICAg
IGNvbnRpbnVlCi0KLSAgICAgICAgICAgIHRvayA9IHRvay5sc3RyaXAoJygnKQotICAgICAgICAg
ICAgdG9rID0gdG9rLnJzdHJpcCgnKScpCi0gICAgICAgICAgICBpZiBub3QgdG9rOgotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBtYXRjaChyJ1xkKycsIHRvayk6Ci0g
ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIG1hdGNoKHInMFt4WF1bMC05
YS1mQS1GXSsnLCB0b2spOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBp
ZiBtYXRjaChyJ2tbQS1aMC05XVx3KicsIHRvayk6Ci0gICAgICAgICAgICAgICAgY29udGludWUK
LSAgICAgICAgICAgIGlmIG1hdGNoKHInKC4rOjopP2tbQS1aMC05XVx3KicsIHRvayk6Ci0gICAg
ICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIG1hdGNoKHInKC4rOjopP1tBLVpd
W0EtWjAtOV9dKicsIHRvayk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg
ICMgQSBjYXRjaCBhbGwgZm9yIHRyaWNreSBzaXplb2YgY2FzZXMsIGluY2x1ZGluZyAnc2l6ZW9m
IGV4cHJlc3Npb24nLAotICAgICAgICAgICAgIyAnc2l6ZW9mKCp0eXBlKScsICdzaXplb2YoY29u
c3QgdHlwZSknLCAnc2l6ZW9mKHN0cnVjdCBTdHJ1Y3ROYW1lKScKLSAgICAgICAgICAgICMgcmVx
dWlyZXMgc2tpcHBpbmcgdGhlIG5leHQgdG9rZW4gYmVjYXN1ZSB3ZSBzcGxpdCBvbiAnICcgYW5k
ICcqJy4KLSAgICAgICAgICAgIGlmIHRvay5zdGFydHN3aXRoKCdzaXplb2YnKToKLSAgICAgICAg
ICAgICAgICBza2lwX25leHQgPSBUcnVlCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAg
ICAgICAgIGlzX2NvbnN0ID0gRmFsc2UKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIG5v
dCBpc19jb25zdDoKLSAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3J1
bnRpbWUvYXJyYXlzJywgMSwKLSAgICAgICAgICAgICAgICAgICdEbyBub3QgdXNlIHZhcmlhYmxl
LWxlbmd0aCBhcnJheXMuICBVc2UgYW4gYXBwcm9wcmlhdGVseSBuYW1lZCAnCi0gICAgICAgICAg
ICAgICAgICAiKCdrJyBmb2xsb3dlZCBieSBDYW1lbENhc2UpIGNvbXBpbGUtdGltZSBjb25zdGFu
dCBmb3IgdGhlIHNpemUuIikKLQotICAgICMgQ2hlY2sgZm9yIHVzZSBvZiB1bm5hbWVkIG5hbWVz
cGFjZXMgaW4gaGVhZGVyIGZpbGVzLiAgUmVnaXN0cmF0aW9uCi0gICAgIyBtYWNyb3MgYXJlIHR5
cGljYWxseSBPSywgc28gd2UgYWxsb3cgdXNlIG9mICJuYW1lc3BhY2UgeyIgb24gbGluZXMKLSAg
ICAjIHRoYXQgZW5kIHdpdGggYmFja3NsYXNoZXMuCi0gICAgaWYgKGZpbGVfZXh0ZW5zaW9uID09
ICdoJwotICAgICAgICBhbmQgc2VhcmNoKHInXGJuYW1lc3BhY2Vccyp7JywgbGluZSkKLSAgICAg
ICAgYW5kIGxpbmVbLTFdICE9ICdcXCcpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9u
dW1iZXIsICdidWlsZC9uYW1lc3BhY2VzJywgNCwKLSAgICAgICAgICAgICAgJ0RvIG5vdCB1c2Ug
dW5uYW1lZCBuYW1lc3BhY2VzIGluIGhlYWRlciBmaWxlcy4gIFNlZSAnCi0gICAgICAgICAgICAg
ICdodHRwOi8vZ29vZ2xlLXN0eWxlZ3VpZGUuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcGd1
aWRlLnhtbCNOYW1lc3BhY2VzJwotICAgICAgICAgICAgICAnIGZvciBtb3JlIGluZm9ybWF0aW9u
LicpCi0KLQotZGVmIGNoZWNrX2Nfc3R5bGVfY2FzdChmaWxlbmFtZSwgbGluZV9udW1iZXIsIGxp
bmUsIHJhd19saW5lLCBjYXN0X3R5cGUsIHBhdHRlcm4sCi0gICAgICAgICAgICAgICAgICAgICAg
IGVycm9yKToKLSAgICAiIiJDaGVja3MgZm9yIGEgQy1zdHlsZSBjYXN0IGJ5IGxvb2tpbmcgZm9y
IHRoZSBwYXR0ZXJuLgotCi0gICAgVGhpcyBhbHNvIGhhbmRsZXMgc2l6ZW9mKHR5cGUpIHdhcm5p
bmdzLCBkdWUgdG8gc2ltaWxhcml0eSBvZiBjb250ZW50LgotCi0gICAgQXJnczoKLSAgICAgIGZp
bGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgotICAgICAgbGluZV9udW1iZXI6
IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCi0gICAgICBsaW5lOiBUaGUgbGluZSBv
ZiBjb2RlIHRvIGNoZWNrLgotICAgICAgcmF3X2xpbmU6IFRoZSByYXcgbGluZSBvZiBjb2RlIHRv
IGNoZWNrLCB3aXRoIGNvbW1lbnRzLgotICAgICAgY2FzdF90eXBlOiBUaGUgc3RyaW5nIGZvciB0
aGUgQysrIGNhc3QgdG8gcmVjb21tZW5kLiAgVGhpcyBpcyBlaXRoZXIKLSAgICAgICAgICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdCBvciBzdGF0aWNfY2FzdCwgZGVwZW5kaW5nLgotICAgICAgcGF0
dGVybjogVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIHRvIGZpbmQgQy1zdHlsZSBjYXN0cy4K
LSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQu
Ci0gICAgIiIiCi0gICAgbWF0Y2hlZCA9IHNlYXJjaChwYXR0ZXJuLCBsaW5lKQotICAgIGlmIG5v
dCBtYXRjaGVkOgotICAgICAgICByZXR1cm4KLQotICAgICMgZS5nLiwgc2l6ZW9mKGludCkKLSAg
ICBzaXplb2ZfbWF0Y2ggPSBtYXRjaChyJy4qc2l6ZW9mXHMqJCcsIGxpbmVbMDptYXRjaGVkLnN0
YXJ0KDEpIC0gMV0pCi0gICAgaWYgc2l6ZW9mX21hdGNoOgotICAgICAgICBlcnJvcihmaWxlbmFt
ZSwgbGluZV9udW1iZXIsICdydW50aW1lL3NpemVvZicsIDEsCi0gICAgICAgICAgICAgICdVc2lu
ZyBzaXplb2YodHlwZSkuICBVc2Ugc2l6ZW9mKHZhcm5hbWUpIGluc3RlYWQgaWYgcG9zc2libGUn
KQotICAgICAgICByZXR1cm4KLQotICAgIHJlbWFpbmRlciA9IGxpbmVbbWF0Y2hlZC5lbmQoMCk6
XQotCi0gICAgIyBUaGUgY2xvc2UgcGFyZW4gaXMgZm9yIGZ1bmN0aW9uIHBvaW50ZXJzIGFzIGFy
Z3VtZW50cyB0byBhIGZ1bmN0aW9uLgotICAgICMgZWcsIHZvaWQgZm9vKHZvaWQgKCpiYXIpKGlu
dCkpOwotICAgICMgVGhlIHNlbWljb2xvbiBjaGVjayBpcyBhIG1vcmUgYmFzaWMgZnVuY3Rpb24g
Y2hlY2s7IGFsc28gcG9zc2libHkgYQotICAgICMgZnVuY3Rpb24gcG9pbnRlciB0eXBlZGVmLgot
ICAgICMgZWcsIHZvaWQgZm9vKGludCk7IG9yIHZvaWQgZm9vKGludCkgY29uc3Q7Ci0gICAgIyBU
aGUgZXF1YWxzIGNoZWNrIGlzIGZvciBmdW5jdGlvbiBwb2ludGVyIGFzc2lnbm1lbnQuCi0gICAg
IyBlZywgdm9pZCAqKCpmb28pKGludCkgPSAuLi4KLSAgICAjCi0gICAgIyBSaWdodCBub3csIHRo
aXMgd2lsbCBvbmx5IGNhdGNoIGNhc2VzIHdoZXJlIHRoZXJlJ3MgYSBzaW5nbGUgYXJndW1lbnQs
IGFuZAotICAgICMgaXQncyB1bm5hbWVkLiAgSXQgc2hvdWxkIHByb2JhYmx5IGJlIGV4cGFuZGVk
IHRvIGNoZWNrIGZvciBtdWx0aXBsZQotICAgICMgYXJndW1lbnRzIHdpdGggc29tZSB1bm5hbWVk
LgotICAgIGZ1bmN0aW9uX21hdGNoID0gbWF0Y2gocidccyooXCl8PXwoY29uc3QpP1xzKig7fFx7
fHRocm93XChcKSkpJywgcmVtYWluZGVyKQotICAgIGlmIGZ1bmN0aW9uX21hdGNoOgotICAgICAg
ICBpZiAobm90IGZ1bmN0aW9uX21hdGNoLmdyb3VwKDMpCi0gICAgICAgICAgICBvciBmdW5jdGlv
bl9tYXRjaC5ncm91cCgzKSA9PSAnOycKLSAgICAgICAgICAgIG9yIHJhd19saW5lLmZpbmQoJy8q
JykgPCAwKToKLSAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3JlYWRh
YmlsaXR5L2Z1bmN0aW9uJywgMywKLSAgICAgICAgICAgICAgICAgICdBbGwgcGFyYW1ldGVycyBz
aG91bGQgYmUgbmFtZWQgaW4gYSBmdW5jdGlvbicpCi0gICAgICAgIHJldHVybgotCi0gICAgIyBB
dCB0aGlzIHBvaW50LCBhbGwgdGhhdCBzaG91bGQgYmUgbGVmdCBpcyBhY3R1YWwgY2FzdHMuCi0g
ICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvY2FzdGluZycsIDQs
Ci0gICAgICAgICAgJ1VzaW5nIEMtc3R5bGUgY2FzdC4gIFVzZSAlczwlcz4oLi4uKSBpbnN0ZWFk
JyAlCi0gICAgICAgICAgKGNhc3RfdHlwZSwgbWF0Y2hlZC5ncm91cCgxKSkpCi0KLQotX0hFQURF
UlNfQ09OVEFJTklOR19URU1QTEFURVMgPSAoCi0gICAgKCc8ZGVxdWU+JywgKCdkZXF1ZScsKSks
Ci0gICAgKCc8ZnVuY3Rpb25hbD4nLCAoJ3VuYXJ5X2Z1bmN0aW9uJywgJ2JpbmFyeV9mdW5jdGlv
bicsCi0gICAgICAgICAgICAgICAgICAgICAgJ3BsdXMnLCAnbWludXMnLCAnbXVsdGlwbGllcycs
ICdkaXZpZGVzJywgJ21vZHVsdXMnLAotICAgICAgICAgICAgICAgICAgICAgICduZWdhdGUnLAot
ICAgICAgICAgICAgICAgICAgICAgICdlcXVhbF90bycsICdub3RfZXF1YWxfdG8nLCAnZ3JlYXRl
cicsICdsZXNzJywKLSAgICAgICAgICAgICAgICAgICAgICAnZ3JlYXRlcl9lcXVhbCcsICdsZXNz
X2VxdWFsJywKLSAgICAgICAgICAgICAgICAgICAgICAnbG9naWNhbF9hbmQnLCAnbG9naWNhbF9v
cicsICdsb2dpY2FsX25vdCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ3VuYXJ5X25lZ2F0ZScs
ICdub3QxJywgJ2JpbmFyeV9uZWdhdGUnLCAnbm90MicsCi0gICAgICAgICAgICAgICAgICAgICAg
J2JpbmQxc3QnLCAnYmluZDJuZCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXJfdG9f
dW5hcnlfZnVuY3Rpb24nLAotICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyX3RvX2JpbmFy
eV9mdW5jdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgJ3B0cl9mdW4nLAotICAgICAgICAg
ICAgICAgICAgICAgICdtZW1fZnVuX3QnLCAnbWVtX2Z1bicsICdtZW1fZnVuMV90JywgJ21lbV9m
dW4xX3JlZl90JywKLSAgICAgICAgICAgICAgICAgICAgICAnbWVtX2Z1bl9yZWZfdCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgJ2NvbnN0X21lbV9mdW5fdCcsICdjb25zdF9tZW1fZnVuMV90JywK
LSAgICAgICAgICAgICAgICAgICAgICAnY29uc3RfbWVtX2Z1bl9yZWZfdCcsICdjb25zdF9tZW1f
ZnVuMV9yZWZfdCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ21lbV9mdW5fcmVmJywKLSAgICAg
ICAgICAgICAgICAgICAgICkpLAotICAgICgnPGxpbWl0cz4nLCAoJ251bWVyaWNfbGltaXRzJywp
KSwKLSAgICAoJzxsaXN0PicsICgnbGlzdCcsKSksCi0gICAgKCc8bWFwPicsICgnbWFwJywgJ211
bHRpbWFwJywpKSwKLSAgICAoJzxtZW1vcnk+JywgKCdhbGxvY2F0b3InLCkpLAotICAgICgnPHF1
ZXVlPicsICgncXVldWUnLCAncHJpb3JpdHlfcXVldWUnLCkpLAotICAgICgnPHNldD4nLCAoJ3Nl
dCcsICdtdWx0aXNldCcsKSksCi0gICAgKCc8c3RhY2s+JywgKCdzdGFjaycsKSksCi0gICAgKCc8
c3RyaW5nPicsICgnY2hhcl90cmFpdHMnLCAnYmFzaWNfc3RyaW5nJywpKSwKLSAgICAoJzx1dGls
aXR5PicsICgncGFpcicsKSksCi0gICAgKCc8dmVjdG9yPicsICgndmVjdG9yJywpKSwKLQotICAg
ICMgZ2NjIGV4dGVuc2lvbnMuCi0gICAgIyBOb3RlOiBzdGQ6Omhhc2ggaXMgdGhlaXIgaGFzaCwg
OjpoYXNoIGlzIG91ciBoYXNoCi0gICAgKCc8aGFzaF9tYXA+JywgKCdoYXNoX21hcCcsICdoYXNo
X211bHRpbWFwJywpKSwKLSAgICAoJzxoYXNoX3NldD4nLCAoJ2hhc2hfc2V0JywgJ2hhc2hfbXVs
dGlzZXQnLCkpLAotICAgICgnPHNsaXN0PicsICgnc2xpc3QnLCkpLAotICAgICkKLQotX0hFQURF
UlNfQUNDRVBURURfQlVUX05PVF9QUk9NT1RFRCA9IHsKLSAgICAjIFdlIGNhbiB0cnVzdCB3aXRo
IHJlYXNvbmFibGUgY29uZmlkZW5jZSB0aGF0IG1hcCBnaXZlcyB1cyBwYWlyPD4sIHRvby4KLSAg
ICAncGFpcjw+JzogKCdtYXAnLCAnbXVsdGltYXAnLCAnaGFzaF9tYXAnLCAnaGFzaF9tdWx0aW1h
cCcpCi19Ci0KLV9SRV9QQVRURVJOX1NUUklORyA9IHJlLmNvbXBpbGUocidcYnN0cmluZ1xiJykK
LQotX3JlX3BhdHRlcm5fYWxnb3JpdGhtX2hlYWRlciA9IFtdCi1mb3IgX3RlbXBsYXRlIGluICgn
Y29weScsICdtYXgnLCAnbWluJywgJ21pbl9lbGVtZW50JywgJ3NvcnQnLCAnc3dhcCcsCi0gICAg
ICAgICAgICAgICAgICAndHJhbnNmb3JtJyk6Ci0gICAgIyBNYXRjaCBtYXg8dHlwZT4oLi4uLCAu
Li4pLCBtYXgoLi4uLCAuLi4pLCBidXQgbm90IGZvby0+bWF4LCBmb28ubWF4IG9yCi0gICAgIyB0
eXBlOjptYXgoKS4KLSAgICBfcmVfcGF0dGVybl9hbGdvcml0aG1faGVhZGVyLmFwcGVuZCgKLSAg
ICAgICAgKHJlLmNvbXBpbGUocidbXj4uXVxiJyArIF90ZW1wbGF0ZSArIHInKDwuKj8+KT9cKFte
XCldJyksCi0gICAgICAgICBfdGVtcGxhdGUsCi0gICAgICAgICAnPGFsZ29yaXRobT4nKSkKLQot
X3JlX3BhdHRlcm5fdGVtcGxhdGVzID0gW10KLWZvciBfaGVhZGVyLCBfdGVtcGxhdGVzIGluIF9I
RUFERVJTX0NPTlRBSU5JTkdfVEVNUExBVEVTOgotICAgIGZvciBfdGVtcGxhdGUgaW4gX3RlbXBs
YXRlczoKLSAgICAgICAgX3JlX3BhdHRlcm5fdGVtcGxhdGVzLmFwcGVuZCgKLSAgICAgICAgICAg
IChyZS5jb21waWxlKHInKFw8fFxiKScgKyBfdGVtcGxhdGUgKyByJ1xzKlw8JyksCi0gICAgICAg
ICAgICAgX3RlbXBsYXRlICsgJzw+JywKLSAgICAgICAgICAgICBfaGVhZGVyKSkKLQotCi1kZWYg
ZmlsZXNfYmVsb25nX3RvX3NhbWVfbW9kdWxlKGZpbGVuYW1lX2NjLCBmaWxlbmFtZV9oKToKLSAg
ICAiIiJDaGVjayBpZiB0aGVzZSB0d28gZmlsZW5hbWVzIGJlbG9uZyB0byB0aGUgc2FtZSBtb2R1
bGUuCi0KLSAgICBUaGUgY29uY2VwdCBvZiBhICdtb2R1bGUnIGhlcmUgaXMgYSBhcyBmb2xsb3dz
OgotICAgIGZvby5oLCBmb28taW5sLmgsIGZvby5jYywgZm9vX3Rlc3QuY2MgYW5kIGZvb191bml0
dGVzdC5jYyBiZWxvbmcgdG8gdGhlCi0gICAgc2FtZSAnbW9kdWxlJyBpZiB0aGV5IGFyZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuCi0gICAgc29tZS9wYXRoL3B1YmxpYy94eXp6eSBhbmQgc29tZS9w
YXRoL2ludGVybmFsL3h5enp5IGFyZSBhbHNvIGNvbnNpZGVyZWQKLSAgICB0byBiZWxvbmcgdG8g
dGhlIHNhbWUgbW9kdWxlIGhlcmUuCi0KLSAgICBJZiB0aGUgZmlsZW5hbWVfY2MgY29udGFpbnMg
YSBsb25nZXIgcGF0aCB0aGFuIHRoZSBmaWxlbmFtZV9oLCBmb3IgZXhhbXBsZSwKLSAgICAnL2Fi
c29sdXRlL3BhdGgvdG8vYmFzZS9zeXNpbmZvLmNjJywgYW5kIHRoaXMgZmlsZSB3b3VsZCBpbmNs
dWRlCi0gICAgJ2Jhc2Uvc3lzaW5mby5oJywgdGhpcyBmdW5jdGlvbiBhbHNvIHByb2R1Y2VzIHRo
ZSBwcmVmaXggbmVlZGVkIHRvIG9wZW4gdGhlCi0gICAgaGVhZGVyLiBUaGlzIGlzIHVzZWQgYnkg
dGhlIGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9uIHRvIG1vcmUgcm9idXN0bHkgb3BlbiB0aGUKLSAg
ICBoZWFkZXIgZmlsZS4gV2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHJlYWwgaW5jbHVkZSBw
YXRocyBpbiB0aGlzIGNvbnRleHQsCi0gICAgc28gd2UgbmVlZCB0aGlzIGd1ZXNzd29yayBoZXJl
LgotCi0gICAgS25vd24gYnVnczogdG9vbHMvYmFzZS9iYXIuY2MgYW5kIGJhc2UvYmFyLmggYmVs
b25nIHRvIHRoZSBzYW1lIG1vZHVsZQotICAgIGFjY29yZGluZyB0byB0aGlzIGltcGxlbWVudGF0
aW9uLiBCZWNhdXNlIG9mIHRoaXMsIHRoaXMgZnVuY3Rpb24gZ2l2ZXMKLSAgICBzb21lIGZhbHNl
IHBvc2l0aXZlcy4gVGhpcyBzaG91bGQgYmUgc3VmZmljaWVudGx5IHJhcmUgaW4gcHJhY3RpY2Uu
Ci0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWVfY2M6IGlzIHRoZSBwYXRoIGZvciB0aGUgLmNj
IGZpbGUKLSAgICAgIGZpbGVuYW1lX2g6IGlzIHRoZSBwYXRoIGZvciB0aGUgaGVhZGVyIHBhdGgK
LQotICAgIFJldHVybnM6Ci0gICAgICBUdXBsZSB3aXRoIGEgYm9vbCBhbmQgYSBzdHJpbmc6Ci0g
ICAgICBib29sOiBUcnVlIGlmIGZpbGVuYW1lX2NjIGFuZCBmaWxlbmFtZV9oIGJlbG9uZyB0byB0
aGUgc2FtZSBtb2R1bGUuCi0gICAgICBzdHJpbmc6IHRoZSBhZGRpdGlvbmFsIHByZWZpeCBuZWVk
ZWQgdG8gb3BlbiB0aGUgaGVhZGVyIGZpbGUuCi0gICAgIiIiCi0KLSAgICBpZiBub3QgZmlsZW5h
bWVfY2MuZW5kc3dpdGgoJy5jYycpOgotICAgICAgICByZXR1cm4gKEZhbHNlLCAnJykKLSAgICBm
aWxlbmFtZV9jYyA9IGZpbGVuYW1lX2NjWzotbGVuKCcuY2MnKV0KLSAgICBpZiBmaWxlbmFtZV9j
Yy5lbmRzd2l0aCgnX3VuaXR0ZXN0Jyk6Ci0gICAgICAgIGZpbGVuYW1lX2NjID0gZmlsZW5hbWVf
Y2NbOi1sZW4oJ191bml0dGVzdCcpXQotICAgIGVsaWYgZmlsZW5hbWVfY2MuZW5kc3dpdGgoJ190
ZXN0Jyk6Ci0gICAgICAgIGZpbGVuYW1lX2NjID0gZmlsZW5hbWVfY2NbOi1sZW4oJ190ZXN0Jyld
Ci0gICAgZmlsZW5hbWVfY2MgPSBmaWxlbmFtZV9jYy5yZXBsYWNlKCcvcHVibGljLycsICcvJykK
LSAgICBmaWxlbmFtZV9jYyA9IGZpbGVuYW1lX2NjLnJlcGxhY2UoJy9pbnRlcm5hbC8nLCAnLycp
Ci0KLSAgICBpZiBub3QgZmlsZW5hbWVfaC5lbmRzd2l0aCgnLmgnKToKLSAgICAgICAgcmV0dXJu
IChGYWxzZSwgJycpCi0gICAgZmlsZW5hbWVfaCA9IGZpbGVuYW1lX2hbOi1sZW4oJy5oJyldCi0g
ICAgaWYgZmlsZW5hbWVfaC5lbmRzd2l0aCgnLWlubCcpOgotICAgICAgICBmaWxlbmFtZV9oID0g
ZmlsZW5hbWVfaFs6LWxlbignLWlubCcpXQotICAgIGZpbGVuYW1lX2ggPSBmaWxlbmFtZV9oLnJl
cGxhY2UoJy9wdWJsaWMvJywgJy8nKQotICAgIGZpbGVuYW1lX2ggPSBmaWxlbmFtZV9oLnJlcGxh
Y2UoJy9pbnRlcm5hbC8nLCAnLycpCi0KLSAgICBmaWxlc19iZWxvbmdfdG9fc2FtZV9tb2R1bGUg
PSBmaWxlbmFtZV9jYy5lbmRzd2l0aChmaWxlbmFtZV9oKQotICAgIGNvbW1vbl9wYXRoID0gJycK
LSAgICBpZiBmaWxlc19iZWxvbmdfdG9fc2FtZV9tb2R1bGU6Ci0gICAgICAgIGNvbW1vbl9wYXRo
ID0gZmlsZW5hbWVfY2NbOi1sZW4oZmlsZW5hbWVfaCldCi0gICAgcmV0dXJuIGZpbGVzX2JlbG9u
Z190b19zYW1lX21vZHVsZSwgY29tbW9uX3BhdGgKLQotCi1kZWYgdXBkYXRlX2luY2x1ZGVfc3Rh
dGUoZmlsZW5hbWUsIGluY2x1ZGVfc3RhdGUsIGlvPWNvZGVjcyk6Ci0gICAgIiIiRmlsbCB1cCB0
aGUgaW5jbHVkZV9zdGF0ZSB3aXRoIG5ldyBpbmNsdWRlcyBmb3VuZCBmcm9tIHRoZSBmaWxlLgot
Ci0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiB0aGUgbmFtZSBvZiB0aGUgaGVhZGVyIHRvIHJl
YWQuCi0gICAgICBpbmNsdWRlX3N0YXRlOiBhbiBfSW5jbHVkZVN0YXRlIGluc3RhbmNlIGluIHdo
aWNoIHRoZSBoZWFkZXJzIGFyZSBpbnNlcnRlZC4KLSAgICAgIGlvOiBUaGUgaW8gZmFjdG9yeSB0
byB1c2UgdG8gcmVhZCB0aGUgZmlsZS4gUHJvdmlkZWQgZm9yIHRlc3RhYmlsaXR5LgotCi0gICAg
UmV0dXJuczoKLSAgICAgIFRydWUgaWYgYSBoZWFkZXIgd2FzIHN1Y2Nlc2Z1bGx5IGFkZGVkLiBG
YWxzZSBvdGhlcndpc2UuCi0gICAgIiIiCi0gICAgaGVhZGVyX2ZpbGUgPSBOb25lCi0gICAgdHJ5
OgotICAgICAgICBoZWFkZXJfZmlsZSA9IGlvLm9wZW4oZmlsZW5hbWUsICdyJywgJ3V0ZjgnLCAn
cmVwbGFjZScpCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAg
IGxpbmVfbnVtYmVyID0gMAotICAgIGZvciBsaW5lIGluIGhlYWRlcl9maWxlOgotICAgICAgICBs
aW5lX251bWJlciArPSAxCi0gICAgICAgIGNsZWFuX2xpbmUgPSBjbGVhbnNlX2NvbW1lbnRzKGxp
bmUpCi0gICAgICAgIG1hdGNoZWQgPSBfUkVfUEFUVEVSTl9JTkNMVURFLnNlYXJjaChjbGVhbl9s
aW5lKQotICAgICAgICBpZiBtYXRjaGVkOgotICAgICAgICAgICAgaW5jbHVkZSA9IG1hdGNoZWQu
Z3JvdXAoMikKLSAgICAgICAgICAgICMgVGhlIHZhbHVlIGZvcm1hdHRpbmcgaXMgY3V0ZSwgYnV0
IG5vdCByZWFsbHkgdXNlZCByaWdodCBub3cuCi0gICAgICAgICAgICAjIFdoYXQgbWF0dGVycyBo
ZXJlIGlzIHRoYXQgdGhlIGtleSBpcyBpbiBpbmNsdWRlX3N0YXRlLgotICAgICAgICAgICAgaW5j
bHVkZV9zdGF0ZS5zZXRkZWZhdWx0KGluY2x1ZGUsICclczolZCcgJSAoZmlsZW5hbWUsIGxpbmVf
bnVtYmVyKSkKLSAgICByZXR1cm4gVHJ1ZQotCi0KLWRlZiBjaGVja19mb3JfaW5jbHVkZV93aGF0
X3lvdV91c2UoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBpbmNsdWRlX3N0YXRlLCBlcnJvciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW89Y29kZWNzKToKLSAgICAiIiJSZXBv
cnRzIGZvciBtaXNzaW5nIHN0bCBpbmNsdWRlcy4KLQotICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBv
dXRwdXQgd2FybmluZ3MgdG8gbWFrZSBzdXJlIHlvdSBhcmUgaW5jbHVkaW5nIHRoZSBoZWFkZXJz
Ci0gICAgbmVjZXNzYXJ5IGZvciB0aGUgc3RsIGNvbnRhaW5lcnMgYW5kIGZ1bmN0aW9ucyB0aGF0
IHlvdSB1c2UuIFdlIG9ubHkgZ2l2ZSBvbmUKLSAgICByZWFzb24gdG8gaW5jbHVkZSBhIGhlYWRl
ci4gRm9yIGV4YW1wbGUsIGlmIHlvdSB1c2UgYm90aCBlcXVhbF90bzw+IGFuZAotICAgIGxlc3M8
PiBpbiBhIC5oIGZpbGUsIG9ubHkgb25lICh0aGUgbGF0dGVyIGluIHRoZSBmaWxlKSBvZiB0aGVz
ZSB3aWxsIGJlCi0gICAgcmVwb3J0ZWQgYXMgYSByZWFzb24gdG8gaW5jbHVkZSB0aGUgPGZ1bmN0
aW9uYWw+LgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3Vy
cmVudCBmaWxlLgotICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBj
b250YWluaW5nIHRoZSBmaWxlLgotICAgICAgaW5jbHVkZV9zdGF0ZTogQW4gX0luY2x1ZGVTdGF0
ZSBpbnN0YW5jZS4KLSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBl
cnJvcnMgZm91bmQuCi0gICAgICBpbzogVGhlIElPIGZhY3RvcnkgdG8gdXNlIHRvIHJlYWQgdGhl
IGhlYWRlciBmaWxlLiBQcm92aWRlZCBmb3IgdW5pdHRlc3QKLSAgICAgICAgICBpbmplY3Rpb24u
Ci0gICAgIiIiCi0gICAgcmVxdWlyZWQgPSB7fSAgIyBBIG1hcCBvZiBoZWFkZXIgbmFtZSB0byBs
aW5lX251bWJlciBhbmQgdGhlIHRlbXBsYXRlIGVudGl0eS4KLSAgICAgICAgIyBFeGFtcGxlIG9m
IHJlcXVpcmVkOiB7ICc8ZnVuY3Rpb25hbD4nOiAoMTIxOSwgJ2xlc3M8PicpIH0KLQotICAgIGZv
ciBsaW5lX251bWJlciBpbiB4cmFuZ2UoY2xlYW5fbGluZXMubnVtX2xpbmVzKCkpOgotICAgICAg
ICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXQotICAgICAgICBpZiBub3Qg
bGluZSBvciBsaW5lWzBdID09ICcjJzoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAg
IyBTdHJpbmcgaXMgc3BlY2lhbCAtLSBpdCBpcyBhIG5vbi10ZW1wbGF0aXplZCB0eXBlIGluIFNU
TC4KLSAgICAgICAgaWYgX1JFX1BBVFRFUk5fU1RSSU5HLnNlYXJjaChsaW5lKToKLSAgICAgICAg
ICAgIHJlcXVpcmVkWyc8c3RyaW5nPiddID0gKGxpbmVfbnVtYmVyLCAnc3RyaW5nJykKLQotICAg
ICAgICBmb3IgcGF0dGVybiwgdGVtcGxhdGUsIGhlYWRlciBpbiBfcmVfcGF0dGVybl9hbGdvcml0
aG1faGVhZGVyOgotICAgICAgICAgICAgaWYgcGF0dGVybi5zZWFyY2gobGluZSk6Ci0gICAgICAg
ICAgICAgICAgcmVxdWlyZWRbaGVhZGVyXSA9IChsaW5lX251bWJlciwgdGVtcGxhdGUpCi0KLSAg
ICAgICAgIyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGlzIGp1c3QgYSBzcGVlZCB1cCwgbm8gc2Vt
YW50aWNzIGFyZSBjaGFuZ2VkLgotICAgICAgICBpZiBub3QgJzwnIGluIGxpbmU6ICAjIFJlZHVj
ZXMgdGhlIGNwdSB0aW1lIHVzYWdlIGJ5IHNraXBwaW5nIGxpbmVzLgotICAgICAgICAgICAgY29u
dGludWUKLQotICAgICAgICBmb3IgcGF0dGVybiwgdGVtcGxhdGUsIGhlYWRlciBpbiBfcmVfcGF0
dGVybl90ZW1wbGF0ZXM6Ci0gICAgICAgICAgICBpZiBwYXR0ZXJuLnNlYXJjaChsaW5lKToKLSAg
ICAgICAgICAgICAgICByZXF1aXJlZFtoZWFkZXJdID0gKGxpbmVfbnVtYmVyLCB0ZW1wbGF0ZSkK
LQotICAgICMgVGhlIHBvbGljeSBpcyB0aGF0IGlmIHlvdSAjaW5jbHVkZSBzb21ldGhpbmcgaW4g
Zm9vLmggeW91IGRvbid0IG5lZWQgdG8KLSAgICAjIGluY2x1ZGUgaXQgYWdhaW4gaW4gZm9vLmNj
LiBIZXJlLCB3ZSB3aWxsIGxvb2sgYXQgcG9zc2libGUgaW5jbHVkZXMuCi0gICAgIyBMZXQncyBj
b3B5IHRoZSBpbmNsdWRlX3N0YXRlIHNvIGl0IGlzIG9ubHkgbWVzc2VkIHVwIHdpdGhpbiB0aGlz
IGZ1bmN0aW9uLgotICAgIGluY2x1ZGVfc3RhdGUgPSBpbmNsdWRlX3N0YXRlLmNvcHkoKQotCi0g
ICAgIyBEaWQgd2UgZmluZCB0aGUgaGVhZGVyIGZvciB0aGlzIGZpbGUgKGlmIGFueSkgYW5kIHN1
Y2Nlc2Z1bGx5IGxvYWQgaXQ/Ci0gICAgaGVhZGVyX2ZvdW5kID0gRmFsc2UKLQotICAgICMgVXNl
IHRoZSBhYnNvbHV0ZSBwYXRoIHNvIHRoYXQgbWF0Y2hpbmcgd29ya3MgcHJvcGVybHkuCi0gICAg
YWJzX2ZpbGVuYW1lID0gb3MucGF0aC5hYnNwYXRoKGZpbGVuYW1lKQotCi0gICAgIyBGb3IgRW1h
Y3MncyBmbHltYWtlLgotICAgICMgSWYgY3BwbGludCBpcyBpbnZva2VkIGZyb20gRW1hY3MncyBm
bHltYWtlLCBhIHRlbXBvcmFyeSBmaWxlIGlzIGdlbmVyYXRlZAotICAgICMgYnkgZmx5bWFrZSBh
bmQgdGhhdCBmaWxlIG5hbWUgbWlnaHQgZW5kIHdpdGggJ19mbHltYWtlLmNjJy4gSW4gdGhhdCBj
YXNlLAotICAgICMgcmVzdG9yZSBvcmlnaW5hbCBmaWxlIG5hbWUgaGVyZSBzbyB0aGF0IHRoZSBj
b3JyZXNwb25kaW5nIGhlYWRlciBmaWxlIGNhbiBiZQotICAgICMgZm91bmQuCi0gICAgIyBlLmcu
IElmIHRoZSBmaWxlIG5hbWUgaXMgJ2Zvb19mbHltYWtlLmNjJywgd2Ugc2hvdWxkIHNlYXJjaCBm
b3IgJ2Zvby5oJwotICAgICMgaW5zdGVhZCBvZiAnZm9vX2ZseW1ha2UuaCcKLSAgICBlbWFjc19m
bHltYWtlX3N1ZmZpeCA9ICdfZmx5bWFrZS5jYycKLSAgICBpZiBhYnNfZmlsZW5hbWUuZW5kc3dp
dGgoZW1hY3NfZmx5bWFrZV9zdWZmaXgpOgotICAgICAgICBhYnNfZmlsZW5hbWUgPSBhYnNfZmls
ZW5hbWVbOi1sZW4oZW1hY3NfZmx5bWFrZV9zdWZmaXgpXSArICcuY2MnCi0KLSAgICAjIGluY2x1
ZGVfc3RhdGUgaXMgbW9kaWZpZWQgZHVyaW5nIGl0ZXJhdGlvbiwgc28gd2UgaXRlcmF0ZSBvdmVy
IGEgY29weSBvZgotICAgICMgdGhlIGtleXMuCi0gICAgZm9yIGhlYWRlciBpbiBpbmNsdWRlX3N0
YXRlLmtleXMoKTogICNOT0xJTlQKLSAgICAgICAgKHNhbWVfbW9kdWxlLCBjb21tb25fcGF0aCkg
PSBmaWxlc19iZWxvbmdfdG9fc2FtZV9tb2R1bGUoYWJzX2ZpbGVuYW1lLCBoZWFkZXIpCi0gICAg
ICAgIGZ1bGxwYXRoID0gY29tbW9uX3BhdGggKyBoZWFkZXIKLSAgICAgICAgaWYgc2FtZV9tb2R1
bGUgYW5kIHVwZGF0ZV9pbmNsdWRlX3N0YXRlKGZ1bGxwYXRoLCBpbmNsdWRlX3N0YXRlLCBpbyk6
Ci0gICAgICAgICAgICBoZWFkZXJfZm91bmQgPSBUcnVlCi0KLSAgICAjIElmIHdlIGNhbid0IGZp
bmQgdGhlIGhlYWRlciBmaWxlIGZvciBhIC5jYywgYXNzdW1lIGl0J3MgYmVjYXVzZSB3ZSBkb24n
dAotICAgICMga25vdyB3aGVyZSB0byBsb29rLiBJbiB0aGF0IGNhc2Ugd2UnbGwgZ2l2ZSB1cCBh
cyB3ZSdyZSBub3Qgc3VyZSB0aGV5Ci0gICAgIyBkaWRuJ3QgaW5jbHVkZSBpdCBpbiB0aGUgLmgg
ZmlsZS4KLSAgICAjIEZJWE1FOiBEbyBhIGJldHRlciBqb2Igb2YgZmluZGluZyAuaCBmaWxlcyBz
byB3ZSBhcmUgY29uZmlkZW50IHRoYXQKLSAgICAjICAgICAgICBub3QgaGF2aW5nIHRoZSAuaCBm
aWxlIG1lYW5zIHRoZXJlIGlzbid0IG9uZS4KLSAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnLmNj
JykgYW5kIG5vdCBoZWFkZXJfZm91bmQ6Ci0gICAgICAgIHJldHVybgotCi0gICAgIyBBbGwgdGhl
IGxpbmVzIGhhdmUgYmVlbiBwcm9jZXNzZWQsIHJlcG9ydCB0aGUgZXJyb3JzIGZvdW5kLgotICAg
IGZvciByZXF1aXJlZF9oZWFkZXJfdW5zdHJpcHBlZCBpbiByZXF1aXJlZDoKLSAgICAgICAgdGVt
cGxhdGUgPSByZXF1aXJlZFtyZXF1aXJlZF9oZWFkZXJfdW5zdHJpcHBlZF1bMV0KLSAgICAgICAg
aWYgdGVtcGxhdGUgaW4gX0hFQURFUlNfQUNDRVBURURfQlVUX05PVF9QUk9NT1RFRDoKLSAgICAg
ICAgICAgIGhlYWRlcnMgPSBfSEVBREVSU19BQ0NFUFRFRF9CVVRfTk9UX1BST01PVEVEW3RlbXBs
YXRlXQotICAgICAgICAgICAgaWYgW1RydWUgZm9yIGhlYWRlciBpbiBoZWFkZXJzIGlmIGhlYWRl
ciBpbiBpbmNsdWRlX3N0YXRlXToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBp
ZiByZXF1aXJlZF9oZWFkZXJfdW5zdHJpcHBlZC5zdHJpcCgnPD4iJykgbm90IGluIGluY2x1ZGVf
c3RhdGU6Ci0gICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgcmVxdWlyZWRbcmVxdWlyZWRfaGVh
ZGVyX3Vuc3RyaXBwZWRdWzBdLAotICAgICAgICAgICAgICAgICAgJ2J1aWxkL2luY2x1ZGVfd2hh
dF95b3VfdXNlJywgNCwKLSAgICAgICAgICAgICAgICAgICdBZGQgI2luY2x1ZGUgJyArIHJlcXVp
cmVkX2hlYWRlcl91bnN0cmlwcGVkICsgJyBmb3IgJyArIHRlbXBsYXRlKQotCi0KLWRlZiBwcm9j
ZXNzX2xpbmUoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLAotICAgICAgICAgICAgICAgICBjbGVh
bl9saW5lcywgbGluZSwgaW5jbHVkZV9zdGF0ZSwgZnVuY3Rpb25fc3RhdGUsCi0gICAgICAgICAg
ICAgICAgIGNsYXNzX3N0YXRlLCBlcnJvcik6Ci0gICAgIiIiUHJvY2Vzc2VzIGEgc2luZ2xlIGxp
bmUgaW4gdGhlIGZpbGUuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IEZpbGVuYW1lIG9m
IHRoZSBmaWxlIHRoYXQgaXMgYmVpbmcgcHJvY2Vzc2VkLgotICAgICAgZmlsZV9leHRlbnNpb246
IFRoZSBleHRlbnNpb24gKGRvdCBub3QgaW5jbHVkZWQpIG9mIHRoZSBmaWxlLgotICAgICAgY2xl
YW5fbGluZXM6IEFuIGFycmF5IG9mIHN0cmluZ3MsIGVhY2ggcmVwcmVzZW50aW5nIGEgbGluZSBv
ZiB0aGUgZmlsZSwKLSAgICAgICAgICAgICAgICAgICB3aXRoIGNvbW1lbnRzIHN0cmlwcGVkLgot
ICAgICAgbGluZTogTnVtYmVyIG9mIGxpbmUgYmVpbmcgcHJvY2Vzc2VkLgotICAgICAgaW5jbHVk
ZV9zdGF0ZTogQW4gX0luY2x1ZGVTdGF0ZSBpbnN0YW5jZSBpbiB3aGljaCB0aGUgaGVhZGVycyBh
cmUgaW5zZXJ0ZWQuCi0gICAgICBmdW5jdGlvbl9zdGF0ZTogQSBfRnVuY3Rpb25TdGF0ZSBpbnN0
YW5jZSB3aGljaCBjb3VudHMgZnVuY3Rpb24gbGluZXMsIGV0Yy4KLSAgICAgIGNsYXNzX3N0YXRl
OiBBIF9DbGFzc1N0YXRlIGluc3RhbmNlIHdoaWNoIG1haW50YWlucyBpbmZvcm1hdGlvbiBhYm91
dAotICAgICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50IHN0YWNrIG9mIG5lc3RlZCBjbGFzcyBk
ZWNsYXJhdGlvbnMgYmVpbmcgcGFyc2VkLgotICAgICAgZXJyb3I6IEEgY2FsbGFibGUgdG8gd2hp
Y2ggZXJyb3JzIGFyZSByZXBvcnRlZCwgd2hpY2ggdGFrZXMgNCBhcmd1bWVudHM6Ci0gICAgICAg
ICAgICAgZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBlcnJvciBsZXZlbCwgYW5kIG1lc3NhZ2UKLQot
ICAgICIiIgotICAgIHJhd19saW5lcyA9IGNsZWFuX2xpbmVzLnJhd19saW5lcwotICAgIGNoZWNr
X2Zvcl9mdW5jdGlvbl9sZW5ndGhzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZSwgZnVuY3Rp
b25fc3RhdGUsIGVycm9yKQotICAgIGlmIHNlYXJjaChyJ1xiTk9MSU5UXGInLCByYXdfbGluZXNb
bGluZV0pOiAgIyBpZ25vcmUgbm9saW50IGxpbmVzCi0gICAgICAgIHJldHVybgotICAgIGNoZWNr
X2Zvcl9tdWx0aWxpbmVfY29tbWVudHNfYW5kX3N0cmluZ3MoZmlsZW5hbWUsIGNsZWFuX2xpbmVz
LCBsaW5lLCBlcnJvcikKLSAgICBjaGVja19zdHlsZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxp
bmUsIGZpbGVfZXh0ZW5zaW9uLCBlcnJvcikKLSAgICBjaGVja19sYW5ndWFnZShmaWxlbmFtZSwg
Y2xlYW5fbGluZXMsIGxpbmUsIGZpbGVfZXh0ZW5zaW9uLCBpbmNsdWRlX3N0YXRlLAotICAgICAg
ICAgICAgICAgICAgIGVycm9yKQotICAgIGNoZWNrX2Zvcl9ub25fc3RhbmRhcmRfY29uc3RydWN0
cyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNsYXNzX3N0YXRlLCBlcnJvcikKLSAgICBjaGVja19wb3NpeF90aHJlYWRp
bmcoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lLCBlcnJvcikKLSAgICBjaGVja19pbnZhbGlk
X2luY3JlbWVudChmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmUsIGVycm9yKQotCi0KLWRlZiBw
cm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJvcik6
Ci0gICAgIiIiUGVyZm9ybXMgbGludCBjaGVja3MgYW5kIHJlcG9ydHMgYW55IGVycm9ycyB0byB0
aGUgZ2l2ZW4gZXJyb3IgZnVuY3Rpb24uCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IEZp
bGVuYW1lIG9mIHRoZSBmaWxlIHRoYXQgaXMgYmVpbmcgcHJvY2Vzc2VkLgotICAgICAgZmlsZV9l
eHRlbnNpb246IFRoZSBleHRlbnNpb24gKGRvdCBub3QgaW5jbHVkZWQpIG9mIHRoZSBmaWxlLgot
ICAgICAgbGluZXM6IEFuIGFycmF5IG9mIHN0cmluZ3MsIGVhY2ggcmVwcmVzZW50aW5nIGEgbGlu
ZSBvZiB0aGUgZmlsZSwgd2l0aCB0aGUKLSAgICAgICAgICAgICBsYXN0IGVsZW1lbnQgYmVpbmcg
ZW1wdHkgaWYgdGhlIGZpbGUgaXMgdGVybWluZWQgd2l0aCBhIG5ld2xpbmUuCi0gICAgICBlcnJv
cjogQSBjYWxsYWJsZSB0byB3aGljaCBlcnJvcnMgYXJlIHJlcG9ydGVkLCB3aGljaCB0YWtlcyA0
IGFyZ3VtZW50czoKLSAgICAiIiIKLSAgICBsaW5lcyA9IChbJy8vIG1hcmtlciBzbyBsaW5lIG51
bWJlcnMgYW5kIGluZGljZXMgYm90aCBzdGFydCBhdCAxJ10gKyBsaW5lcyArCi0gICAgICAgICAg
ICAgWycvLyBtYXJrZXIgc28gbGluZSBudW1iZXJzIGVuZCBpbiBhIGtub3duIHdheSddKQotCi0g
ICAgaW5jbHVkZV9zdGF0ZSA9IF9JbmNsdWRlU3RhdGUoKQotICAgIGZ1bmN0aW9uX3N0YXRlID0g
X0Z1bmN0aW9uU3RhdGUoKQotICAgIGNsYXNzX3N0YXRlID0gX0NsYXNzU3RhdGUoKQotCi0gICAg
Y2hlY2tfZm9yX2NvcHlyaWdodChmaWxlbmFtZSwgbGluZXMsIGVycm9yKQotCi0gICAgaWYgZmls
ZV9leHRlbnNpb24gPT0gJ2gnOgotICAgICAgICBjaGVja19mb3JfaGVhZGVyX2d1YXJkKGZpbGVu
YW1lLCBsaW5lcywgZXJyb3IpCi0KLSAgICByZW1vdmVfbXVsdGlfbGluZV9jb21tZW50cyhmaWxl
bmFtZSwgbGluZXMsIGVycm9yKQotICAgIGNsZWFuX2xpbmVzID0gQ2xlYW5zZWRMaW5lcyhsaW5l
cykKLSAgICBmb3IgbGluZSBpbiB4cmFuZ2UoY2xlYW5fbGluZXMubnVtX2xpbmVzKCkpOgotICAg
ICAgICBwcm9jZXNzX2xpbmUoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLCBjbGVhbl9saW5lcywg
bGluZSwKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfc3RhdGUsIGZ1bmN0aW9uX3N0YXRl
LCBjbGFzc19zdGF0ZSwgZXJyb3IpCi0gICAgY2xhc3Nfc3RhdGUuY2hlY2tfZmluaXNoZWQoZmls
ZW5hbWUsIGVycm9yKQotCi0gICAgY2hlY2tfZm9yX2luY2x1ZGVfd2hhdF95b3VfdXNlKGZpbGVu
YW1lLCBjbGVhbl9saW5lcywgaW5jbHVkZV9zdGF0ZSwgZXJyb3IpCi0KLSAgICAjIFdlIGNoZWNr
IGhlcmUgcmF0aGVyIHRoYW4gaW5zaWRlIHByb2Nlc3NfbGluZSBzbyB0aGF0IHdlIHNlZSByYXcK
LSAgICAjIGxpbmVzIHJhdGhlciB0aGFuICJjbGVhbmVkIiBsaW5lcy4KLSAgICBjaGVja19mb3Jf
dW5pY29kZV9yZXBsYWNlbWVudF9jaGFyYWN0ZXJzKGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpCi0K
LSAgICBjaGVja19mb3JfbmV3X2xpbmVfYXRfZW9mKGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpCi0K
LQotZGVmIHByb2Nlc3NfZmlsZShmaWxlbmFtZSwgdmxldmVsKToKLSAgICAiIiJEb2VzIGdvb2ds
ZS1saW50IG9uIGEgc2luZ2xlIGZpbGUuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRo
ZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHBhcnNlLgotCi0gICAgICB2bGV2ZWw6IFRoZSBsZXZlbCBv
ZiBlcnJvcnMgdG8gcmVwb3J0LiAgRXZlcnkgZXJyb3Igb2YgY29uZmlkZW5jZQotICAgICAgPj0g
dmVyYm9zZV9sZXZlbCB3aWxsIGJlIHJlcG9ydGVkLiAgMCBpcyBhIGdvb2QgZGVmYXVsdC4KLSAg
ICAiIiIKLQotICAgIF9zZXRfdmVyYm9zZV9sZXZlbCh2bGV2ZWwpCi0KLSAgICB0cnk6Ci0gICAg
ICAgICMgU3VwcG9ydCB0aGUgVU5JWCBjb252ZW50aW9uIG9mIHVzaW5nICItIiBmb3Igc3RkaW4u
ICBOb3RlIHRoYXQKLSAgICAgICAgIyB3ZSBhcmUgbm90IG9wZW5pbmcgdGhlIGZpbGUgd2l0aCB1
bml2ZXJzYWwgbmV3bGluZSBzdXBwb3J0Ci0gICAgICAgICMgKHdoaWNoIGNvZGVjcyBkb2Vzbid0
IHN1cHBvcnQgYW55d2F5KSwgc28gdGhlIHJlc3VsdGluZyBsaW5lcyBkbwotICAgICAgICAjIGNv
bnRhaW4gdHJhaWxpbmcgJ1xyJyBjaGFyYWN0ZXJzIGlmIHdlIGFyZSByZWFkaW5nIGEgZmlsZSB0
aGF0Ci0gICAgICAgICMgaGFzIENSTEYgZW5kaW5ncy4KLSAgICAgICAgIyBJZiBhZnRlciB0aGUg
c3BsaXQgYSB0cmFpbGluZyAnXHInIGlzIHByZXNlbnQsIGl0IGlzIHJlbW92ZWQKLSAgICAgICAg
IyBiZWxvdy4gSWYgaXQgaXMgbm90IGV4cGVjdGVkIHRvIGJlIHByZXNlbnQgKGkuZS4gb3MubGlu
ZXNlcCAhPQotICAgICAgICAjICdcclxuJyBhcyBpbiBXaW5kb3dzKSwgYSB3YXJuaW5nIGlzIGlz
c3VlZCBiZWxvdyBpZiB0aGlzIGZpbGUKLSAgICAgICAgIyBpcyBwcm9jZXNzZWQuCi0KLSAgICAg
ICAgaWYgZmlsZW5hbWUgPT0gJy0nOgotICAgICAgICAgICAgbGluZXMgPSBjb2RlY3MuU3RyZWFt
UmVhZGVyV3JpdGVyKHN5cy5zdGRpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb2RlY3MuZ2V0cmVhZGVyKCd1dGY4JyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHdyaXRlcigndXRmOCcpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNlJyku
cmVhZCgpLnNwbGl0KCdcbicpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsaW5lcyA9IGNv
ZGVjcy5vcGVuKGZpbGVuYW1lLCAncicsICd1dGY4JywgJ3JlcGxhY2UnKS5yZWFkKCkuc3BsaXQo
J1xuJykKLQotICAgICAgICBjYXJyaWFnZV9yZXR1cm5fZm91bmQgPSBGYWxzZQotICAgICAgICAj
IFJlbW92ZSB0cmFpbGluZyAnXHInLgotICAgICAgICBmb3IgbGluZV9udW1iZXIgaW4gcmFuZ2Uo
bGVuKGxpbmVzKSk6Ci0gICAgICAgICAgICBpZiBsaW5lc1tsaW5lX251bWJlcl0uZW5kc3dpdGgo
J1xyJyk6Ci0gICAgICAgICAgICAgICAgbGluZXNbbGluZV9udW1iZXJdID0gbGluZXNbbGluZV9u
dW1iZXJdLnJzdHJpcCgnXHInKQotICAgICAgICAgICAgICAgIGNhcnJpYWdlX3JldHVybl9mb3Vu
ZCA9IFRydWUKLQotICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KAotICAgICAgICAgICAgIlNraXBwaW5nIGlucHV0ICclcyc6IENhbid0IG9wZW4gZm9yIHJlYWRp
bmdcbiIgJSBmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuCi0KLSAgICAjIE5vdGUsIGlmIG5vIGRv
dCBpcyBmb3VuZCwgdGhpcyB3aWxsIGdpdmUgdGhlIGVudGlyZSBmaWxlbmFtZSBhcyB0aGUgZXh0
LgotICAgIGZpbGVfZXh0ZW5zaW9uID0gZmlsZW5hbWVbZmlsZW5hbWUucmZpbmQoJy4nKSArIDE6
XQotCi0gICAgIyBXaGVuIHJlYWRpbmcgZnJvbSBzdGRpbiwgdGhlIGV4dGVuc2lvbiBpcyB1bmtu
b3duLCBzbyBubyBjcHBsaW50IHRlc3RzCi0gICAgIyBzaG91bGQgcmVseSBvbiB0aGUgZXh0ZW5z
aW9uLgotICAgIGlmIChmaWxlbmFtZSAhPSAnLScgYW5kIGZpbGVfZXh0ZW5zaW9uICE9ICdjYycg
YW5kIGZpbGVfZXh0ZW5zaW9uICE9ICdoJwotICAgICAgICBhbmQgZmlsZV9leHRlbnNpb24gIT0g
J2NwcCcpOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdJZ25vcmluZyAlczsgbm90IGEgLmNj
IG9yIC5oIGZpbGVcbicgJSBmaWxlbmFtZSkKLSAgICBlbHNlOgotICAgICAgICBwcm9jZXNzX2Zp
bGVfZGF0YShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJvcikKLSAgICAgICAg
aWYgY2FycmlhZ2VfcmV0dXJuX2ZvdW5kIGFuZCBvcy5saW5lc2VwICE9ICdcclxuJzoKLSAgICAg
ICAgICAgICMgVXNlIDAgZm9yIGxpbmVfbnVtYmVyIHNpbmNlIG91dHB1dGluZyBvbmx5IG9uZSBl
cnJvciBmb3IgcG90ZW50aWFsbHkKLSAgICAgICAgICAgICMgc2V2ZXJhbCBsaW5lcy4KLSAgICAg
ICAgICAgIGVycm9yKGZpbGVuYW1lLCAwLCAnd2hpdGVzcGFjZS9uZXdsaW5lJywgMSwKLSAgICAg
ICAgICAgICAgICAgICdPbmUgb3IgbW9yZSB1bmV4cGVjdGVkIFxcciAoXk0pIGZvdW5kOycKLSAg
ICAgICAgICAgICAgICAgICdiZXR0ZXIgdG8gdXNlIG9ubHkgYSBcXG4nKQotCi0gICAgc3lzLnN0
ZGVyci53cml0ZSgnRG9uZSBwcm9jZXNzaW5nICVzXG4nICUgZmlsZW5hbWUpCi0KLQotZGVmIHBy
aW50X3VzYWdlKG1lc3NhZ2UpOgotICAgICIiIlByaW50cyBhIGJyaWVmIHVzYWdlIHN0cmluZyBh
bmQgZXhpdHMsIG9wdGlvbmFsbHkgd2l0aCBhbiBlcnJvciBtZXNzYWdlLgotCi0gICAgQXJnczoK
LSAgICAgIG1lc3NhZ2U6IFRoZSBvcHRpb25hbCBlcnJvciBtZXNzYWdlLgotICAgICIiIgotICAg
IHN5cy5zdGRlcnIud3JpdGUoX1VTQUdFKQotICAgIGlmIG1lc3NhZ2U6Ci0gICAgICAgIHN5cy5l
eGl0KCdcbkZBVEFMIEVSUk9SOiAnICsgbWVzc2FnZSkKLSAgICBlbHNlOgotICAgICAgICBzeXMu
ZXhpdCgxKQotCi0KLWRlZiBwcmludF9jYXRlZ29yaWVzKCk6Ci0gICAgIiIiUHJpbnRzIGEgbGlz
dCBvZiBhbGwgdGhlIGVycm9yLWNhdGVnb3JpZXMgdXNlZCBieSBlcnJvciBtZXNzYWdlcy4KLQot
ICAgIFRoZXNlIGFyZSB0aGUgY2F0ZWdvcmllcyB1c2VkIHRvIGZpbHRlciBtZXNzYWdlcyB2aWEg
LS1maWx0ZXIuCi0gICAgIiIiCi0gICAgc3lzLnN0ZGVyci53cml0ZShfRVJST1JfQ0FURUdPUklF
UykKLSAgICBzeXMuZXhpdCgwKQotCi0KLWRlZiBwYXJzZV9hcmd1bWVudHMoYXJncyk6Ci0gICAg
IiIiUGFyc2VzIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgotCi0gICAgVGhpcyBtYXkgc2V0
IHRoZSBvdXRwdXQgZm9ybWF0IGFuZCB2ZXJib3NpdHkgbGV2ZWwgYXMgc2lkZS1lZmZlY3RzLgot
Ci0gICAgQXJnczoKLSAgICAgIGFyZ3M6IFRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzOgotCi0g
ICAgUmV0dXJuczoKLSAgICAgIFRoZSBsaXN0IG9mIGZpbGVuYW1lcyB0byBsaW50LgotICAgICIi
IgotICAgIHRyeToKLSAgICAgICAgKG9wdHMsIGZpbGVuYW1lcykgPSBnZXRvcHQuZ2V0b3B0KGFy
Z3MsICcnLCBbJ2hlbHAnLCAnb3V0cHV0PScsICd2ZXJib3NlPScsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWx0ZXI9J10pCi0gICAgZXhj
ZXB0IGdldG9wdC5HZXRvcHRFcnJvcjoKLSAgICAgICAgcHJpbnRfdXNhZ2UoJ0ludmFsaWQgYXJn
dW1lbnRzLicpCi0KLSAgICB2ZXJib3NpdHkgPSBfdmVyYm9zZV9sZXZlbCgpCi0gICAgb3V0cHV0
X2Zvcm1hdCA9IF9vdXRwdXRfZm9ybWF0KCkKLSAgICBmaWx0ZXJzID0gJycKLQotICAgIGZvciAo
b3B0LCB2YWwpIGluIG9wdHM6Ci0gICAgICAgIGlmIG9wdCA9PSAnLS1oZWxwJzoKLSAgICAgICAg
ICAgIHByaW50X3VzYWdlKE5vbmUpCi0gICAgICAgIGVsaWYgb3B0ID09ICctLW91dHB1dCc6Ci0g
ICAgICAgICAgICBpZiBub3QgdmFsIGluICgnZW1hY3MnLCAndnM3Jyk6Ci0gICAgICAgICAgICAg
ICAgcHJpbnRfdXNhZ2UoJ1RoZSBvbmx5IGFsbG93ZWQgb3V0cHV0IGZvcm1hdHMgYXJlIGVtYWNz
IGFuZCB2czcuJykKLSAgICAgICAgICAgIG91dHB1dF9mb3JtYXQgPSB2YWwKLSAgICAgICAgZWxp
ZiBvcHQgPT0gJy0tdmVyYm9zZSc6Ci0gICAgICAgICAgICB2ZXJib3NpdHkgPSBpbnQodmFsKQot
ICAgICAgICBlbGlmIG9wdCA9PSAnLS1maWx0ZXInOgotICAgICAgICAgICAgZmlsdGVycyA9IHZh
bAotICAgICAgICAgICAgaWYgbm90IGZpbHRlcnM6Ci0gICAgICAgICAgICAgICAgcHJpbnRfY2F0
ZWdvcmllcygpCi0KLSAgICBpZiBub3QgZmlsZW5hbWVzOgotICAgICAgICBwcmludF91c2FnZSgn
Tm8gZmlsZXMgd2VyZSBzcGVjaWZpZWQuJykKLQotICAgIF9zZXRfb3V0cHV0X2Zvcm1hdChvdXRw
dXRfZm9ybWF0KQotICAgIF9zZXRfdmVyYm9zZV9sZXZlbCh2ZXJib3NpdHkpCi0gICAgX3NldF9m
aWx0ZXJzKGZpbHRlcnMpCi0KLSAgICByZXR1cm4gZmlsZW5hbWVzCi0KLQotZGVmIHVzZV93ZWJr
aXRfc3R5bGVzKCk6Ci0gICAgIiIiRGlzYWJsZXMgc29tZSBmZWF0dXJlcyB3aGljaCBhcmUgbm90
IHN1aXRhYmxlIGZvciBXZWJLaXQuIiIiCi0gICAgIyBGSVhNRTogRm9yIGZpbHRlcnMgd2Ugd2ls
bCBuZXZlciB3YW50IHRvIGhhdmUsIHJlbW92ZSB0aGVtLgotICAgICMgICAgICAgIEZvciBmaWx0
ZXJzIHdlIHdhbnQgdG8gaGF2ZSBzaW1pbGFyIGZ1bmN0aW9uYWxpdGllcywKLSAgICAjICAgICAg
ICBtb2RpZnkgdGhlIGltcGxlbWVudGF0aW9uIGFuZCBlbmFibGUgdGhlbS4KLSAgICBnbG9iYWwg
X0RFRkFVTFRfRklMVEVSUwotICAgIF9ERUZBVUxUX0ZJTFRFUlMgPSBbCi0gICAgICAgICctd2hp
dGVzcGFjZS9lbmRfb2ZfbGluZScsCi0gICAgICAgICctd2hpdGVzcGFjZS9jb21tZW50cycsCi0g
ICAgICAgICctd2hpdGVzcGFjZS9ibGFua19saW5lJywKLSAgICAgICAgJy13aGl0ZXNwYWNlL25l
d2xpbmUnLCAgIyAnXHInCi0gICAgICAgICctcnVudGltZS9leHBsaWNpdCcsICAjIGV4cGxpY2l0
Ci0gICAgICAgICctcnVudGltZS92aXJ0dWFsJywgICMgdmlydHVhbCBkdG9yCi0gICAgICAgICct
cnVudGltZS9wcmludGYnLAotICAgICAgICAnLXJ1bnRpbWUvdGhyZWFkc2FmZV9mbicsCi0gICAg
ICAgICctcnVudGltZS9ydHRpJywKLSAgICAgICAgJy1idWlsZC9pbmNsdWRlX3doYXRfeW91X3Vz
ZScsICAjIDxzdHJpbmc+IGZvciBzdGQ6OnN0cmluZwotICAgICAgICAnLWxlZ2FsL2NvcHlyaWdo
dCcsCi0gICAgICAgICctcmVhZGFiaWxpdHkvbXVsdGlsaW5lX2NvbW1lbnQnLAotICAgICAgICAn
LXJlYWRhYmlsaXR5L2JyYWNlcycsICAjIGludCBmb28oKSB7fTsKLSAgICAgICAgJy1yZWFkYWJp
bGl0eS9mbl9zaXplJywKLSAgICAgICAgJy1idWlsZC9zdG9yYWdlX2NsYXNzJywgICMgY29uc3Qg
c3RhdGljCi0gICAgICAgICctYnVpbGQvaW5jbHVkZV9vcmRlcicsCi0gICAgICAgICctYnVpbGQv
aW5jbHVkZScsCi0gICAgICAgICctYnVpbGQvZW5kaWZfY29tbWVudCcsCi0gICAgICAgICctd2hp
dGVzcGFjZS9sYWJlbHMnLAotICAgICAgICAnLXJ1bnRpbWUvYXJyYXlzJywgICMgdmFyaWFibGUg
bGVuZ3RoIGFycmF5Ci0gICAgICAgICctYnVpbGQvaGVhZGVyX2d1YXJkJywKLSAgICAgICAgJy1y
ZWFkYWJpbGl0eS9jYXN0aW5nJywKLSAgICAgICAgJy1yZWFkYWJpbGl0eS9mdW5jdGlvbicsCi0g
ICAgICAgICctcnVudGltZS9jYXN0aW5nJywKLSAgICAgICAgJy1ydW50aW1lL3NpemVvZicsCi0g
ICAgXQotCi0KLWRlZiBtYWluKCk6Ci0gICAgc3lzLnN0ZGVyci53cml0ZSgKLSAgICAgICAgJycn
KioqKioqKioqKioqKioqKioqKioqIFdBUk5JTkcgV0FSTklORyBXQVJOSU5HICoqKioqKioqKioq
KioqKioqKioqKgotCi1UaGlzIHRvb2wgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgZGV2ZWxvcG1lbnQg
YW5kIG1heSBnaXZlIGluYWNjdXJhdGUKLXJlc3VsdHMgYXQgcHJlc2VudC4gIFBsZWFzZSBmaWxl
IGJ1Z3MgKGFuZC9vciBwYXRjaGVzKSBmb3IgdGhpbmdzCi10aGF0IHlvdSBub3RpY2UgdGhhdCBp
dCBmbGFncyBpbmNvcnJlY3RseS4KLQotKioqKioqKioqKioqKioqKioqKioqIFdBUk5JTkcgV0FS
TklORyBXQVJOSU5HICoqKioqKioqKioqKioqKioqKioqKgotCi0nJycpCi0KLSAgICB1c2Vfd2Vi
a2l0X3N0eWxlcygpCi0KLSAgICBmaWxlbmFtZXMgPSBwYXJzZV9hcmd1bWVudHMoc3lzLmFyZ3Zb
MTpdKQotCi0gICAgIyBDaGFuZ2Ugc3RkZXJyIHRvIHdyaXRlIHdpdGggcmVwbGFjZW1lbnQgY2hh
cmFjdGVycyBzbyB3ZSBkb24ndCBkaWUKLSAgICAjIGlmIHdlIHRyeSB0byBwcmludCBzb21ldGhp
bmcgY29udGFpbmluZyBub24tQVNDSUkgY2hhcmFjdGVycy4KLSAgICBzeXMuc3RkZXJyID0gY29k
ZWNzLlN0cmVhbVJlYWRlcldyaXRlcihzeXMuc3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5nZXRyZWFkZXIoJ3V0ZjgnKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0d3JpdGVyKCd1dGY4
JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2Un
KQotCi0gICAgX2NwcGxpbnRfc3RhdGUucmVzZXRfZXJyb3JfY291bnQoKQotICAgIGZvciBmaWxl
bmFtZSBpbiBmaWxlbmFtZXM6Ci0gICAgICAgIHByb2Nlc3NfZmlsZShmaWxlbmFtZSwgX2NwcGxp
bnRfc3RhdGUudmVyYm9zZV9sZXZlbCkKLSAgICBzeXMuc3RkZXJyLndyaXRlKCdUb3RhbCBlcnJv
cnMgZm91bmQ6ICVkXG4nICUgX2NwcGxpbnRfc3RhdGUuZXJyb3JfY291bnQpCi0gICAgc3lzLmV4
aXQoX2NwcGxpbnRfc3RhdGUuZXJyb3JfY291bnQgPiAwKQotCi0KLWlmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL2Nw
cGxpbnRfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL2NwcGxpbnRfdW5pdHRlc3Qu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwNjMyYTcuLjAwMDAwMDAKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9jcHBsaW50X3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAg
LTEsMjk1MCArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIyAtKi0gY29kaW5nOiB1dGYtODsg
LSotCi0jCi0jIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVW5pdCB0ZXN0IGZvciBjcHBsaW50LnB5LiIiIgot
Ci0jIEZJWE1FOiBBZGQgYSBnb29kIHRlc3QgdGhhdCB0ZXN0cyBVcGRhdGVJbmNsdWRlU3RhdGUu
Ci0KLWltcG9ydCBjb2RlY3MKLWltcG9ydCBvcwotaW1wb3J0IHJhbmRvbQotaW1wb3J0IHJlCi1p
bXBvcnQgdW5pdHRlc3QKLWltcG9ydCBjcHBsaW50Ci0KLQotIyBUaGlzIGNsYXNzIHdvcmtzIGFz
IGFuIGVycm9yIGNvbGxlY3RvciBhbmQgcmVwbGFjZXMgY3BwbGludC5FcnJvcgotIyBmdW5jdGlv
biBmb3IgdGhlIHVuaXQgdGVzdHMuICBXZSBhbHNvIHZlcmlmeSBlYWNoIGNhdGVnb3J5IHdlIHNl
ZQotIyBpcyBpbiBjcHBsaW50Ll9FUlJPUl9DQVRFR09SSUVTLCB0byBoZWxwIGtlZXAgdGhhdCBs
aXN0IHVwIHRvIGRhdGUuCi1jbGFzcyBFcnJvckNvbGxlY3RvcjoKLSAgICAjIFRoZXNlIGFyZSBh
IGdsb2JhbCBsaXN0LCBjb3ZlcmluZyBhbGwgY2F0ZWdvcmllcyBzZWVuIGV2ZXIuCi0gICAgX0VS
Uk9SX0NBVEVHT1JJRVMgPSBbeC5zdHJpcCgpICAgICMgZ2V0IHJpZCBvZiBsZWFkaW5nIHdoaXRl
c3BhY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBjcHBsaW50Ll9FUlJPUl9D
QVRFR09SSUVTLnNwbGl0KCldCi0gICAgX1NFRU5fRVJST1JfQ0FURUdPUklFUyA9IHt9Ci0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgYXNzZXJ0X2ZuKToKLSAgICAgICAgIiIiYXNzZXJ0X2ZuOiBh
IGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB3ZSBub3RpY2UgYSBwcm9ibGVtLiIiIgotICAgICAgICBz
ZWxmLl9hc3NlcnRfZm4gPSBhc3NlcnRfZm4KLSAgICAgICAgc2VsZi5fZXJyb3JzID0gW10KLQot
ICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB1bnVzZWRfZmlsZW5hbWUsIHVudXNlZF9saW5lbnVtLAot
ICAgICAgICAgICAgICAgICBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSk6Ci0gICAgICAg
IHNlbGYuX2Fzc2VydF9mbihjYXRlZ29yeSBpbiBzZWxmLl9FUlJPUl9DQVRFR09SSUVTLAotICAg
ICAgICAgICAgICAgICAgICAgICAgJ01lc3NhZ2UgIiVzIiBoYXMgY2F0ZWdvcnkgIiVzIiwnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnIHdoaWNoIGlzIG5vdCBpbiBfRVJST1JfQ0FURUdPUklF
UycgJSAobWVzc2FnZSwgY2F0ZWdvcnkpKQotICAgICAgICBzZWxmLl9TRUVOX0VSUk9SX0NBVEVH
T1JJRVNbY2F0ZWdvcnldID0gMQotICAgICAgICBpZiBjcHBsaW50Ll9zaG91bGRfcHJpbnRfZXJy
b3IoY2F0ZWdvcnksIGNvbmZpZGVuY2UpOgotICAgICAgICAgICAgc2VsZi5fZXJyb3JzLmFwcGVu
ZCgnJXMgIFslc10gWyVkXScgJSAobWVzc2FnZSwgY2F0ZWdvcnksIGNvbmZpZGVuY2UpKQotCi0g
ICAgZGVmIHJlc3VsdHMoc2VsZik6Ci0gICAgICAgIGlmIGxlbihzZWxmLl9lcnJvcnMpIDwgMjoK
LSAgICAgICAgICAgIHJldHVybiAnJy5qb2luKHNlbGYuX2Vycm9ycykgICMgTW9zdCB0ZXN0cyBl
eHBlY3QgdG8gaGF2ZSBhIHN0cmluZy4KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVy
biBzZWxmLl9lcnJvcnMgICMgTGV0J3MgZ2l2ZSBhIGxpc3QgaWYgdGhlcmUgaXMgbW9yZSB0aGFu
IG9uZS4KLQotICAgIGRlZiByZXN1bHRfbGlzdChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
X2Vycm9ycwotCi0gICAgZGVmIHZlcmlmeV9hbGxfY2F0ZWdvcmllc19hcmVfc2VlbihzZWxmKToK
LSAgICAgICAgIiIiRmFpbHMgaWYgdGhlcmUncyBhIGNhdGVnb3J5IGluIF9FUlJPUl9DQVRFR09S
SUVTIC0gX1NFRU5fRVJST1JfQ0FURUdPUklFUy4KLQotICAgICAgICBUaGlzIHNob3VsZCBvbmx5
IGJlIGNhbGxlZCBhZnRlciBhbGwgdGVzdHMgYXJlIHJ1biwgc28KLSAgICAgICAgX1NFRU5fRVJS
T1JfQ0FURUdPUklFUyBoYXMgaGFkIGEgY2hhbmNlIHRvIGZ1bGx5IHBvcHVsYXRlLiAgU2luY2UK
LSAgICAgICAgdGhpcyBpc24ndCBjYWxsZWQgZnJvbSB3aXRoaW4gdGhlIG5vcm1hbCB1bml0dGVz
dCBmcmFtZXdvcmssIHdlCi0gICAgICAgIGNhbid0IHVzZSB0aGUgbm9ybWFsIHVuaXR0ZXN0IGFz
c2VydCBtYWNyb3MuICBJbnN0ZWFkIHdlIGp1c3QgZXhpdAotICAgICAgICB3aGVuIHdlIHNlZSBh
biBlcnJvci4gIEdvb2QgdGhpbmcgdGhpcyB0ZXN0IGlzIGFsd2F5cyBydW4gbGFzdCEKLSAgICAg
ICAgIiIiCi0gICAgICAgIGZvciBjYXRlZ29yeSBpbiBzZWxmLl9FUlJPUl9DQVRFR09SSUVTOgot
ICAgICAgICAgICAgaWYgY2F0ZWdvcnkgbm90IGluIHNlbGYuX1NFRU5fRVJST1JfQ0FURUdPUklF
UzoKLSAgICAgICAgICAgICAgICBpbXBvcnQgc3lzCi0gICAgICAgICAgICAgICAgc3lzLmV4aXQo
J0ZBVEFMIEVSUk9SOiBUaGVyZSBhcmUgbm8gdGVzdHMgZm9yIGNhdGVnb3J5ICIlcyInICUgY2F0
ZWdvcnkpCi0KLSAgICBkZWYgcmVtb3ZlX2lmX3ByZXNlbnQoc2VsZiwgc3Vic3RyKToKLSAgICAg
ICAgZm9yIChpbmRleCwgZXJyb3IpIGluIGVudW1lcmF0ZShzZWxmLl9lcnJvcnMpOgotICAgICAg
ICAgICAgaWYgZXJyb3IuZmluZChzdWJzdHIpICE9IC0xOgotICAgICAgICAgICAgICAgIHNlbGYu
X2Vycm9ycyA9IHNlbGYuX2Vycm9yc1swOmluZGV4XSArIHNlbGYuX2Vycm9yc1soaW5kZXggKyAx
KTpdCi0gICAgICAgICAgICAgICAgYnJlYWsKLQotCi0jIFRoaXMgY2xhc3MgaXMgYSBsYW1lIG1v
Y2sgb2YgY29kZWNzLiBXZSBkbyBub3QgdmVyaWZ5IGZpbGVuYW1lLCBtb2RlLCBvcgotIyBlbmNv
ZGluZywgYnV0IGZvciB0aGUgY3VycmVudCB1c2UgY2FzZSBpdCBpcyBub3QgbmVlZGVkLgotY2xh
c3MgTW9ja0lvOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2NrX2ZpbGUpOgotICAgICAgICBz
ZWxmLm1vY2tfZmlsZSA9IG1vY2tfZmlsZQotCi0gICAgZGVmIG9wZW4oc2VsZiwgdW51c2VkX2Zp
bGVuYW1lLCB1bnVzZWRfbW9kZSwgdW51c2VkX2VuY29kaW5nLCBfKTogICMgTk9MSU5UCi0gICAg
ICAgICMgKGxpbnQgZG9lc24ndCBsaWtlIG9wZW4gYXMgYSBtZXRob2QgbmFtZSkKLSAgICAgICAg
cmV0dXJuIHNlbGYubW9ja19maWxlCi0KLQotY2xhc3MgQ3BwbGludFRlc3RCYXNlKHVuaXR0ZXN0
LlRlc3RDYXNlKToKLSAgICAiIiJQcm92aWRlcyBzb21lIHVzZWZ1bCBoZWxwZXIgZnVuY3Rpb25z
IGZvciBjcHBsaW50IHRlc3RzLiIiIgotCi0gICAgIyBQZXJmb3JtIGxpbnQgb24gc2luZ2xlIGxp
bmUgb2YgaW5wdXQgYW5kIHJldHVybiB0aGUgZXJyb3IgbWVzc2FnZS4KLSAgICBkZWYgcGVyZm9y
bV9zaW5nbGVfbGluZV9saW50KHNlbGYsIGNvZGUpOgotICAgICAgICBlcnJvcl9jb2xsZWN0b3Ig
PSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGxpbmVzID0gY29kZS5zcGxp
dCgnXG4nKQotICAgICAgICBjcHBsaW50LnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKCdmb28u
aCcsIGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGNsZWFuX2xpbmVzID0gY3BwbGlu
dC5DbGVhbnNlZExpbmVzKGxpbmVzKQotICAgICAgICBpbmNsdWRlX3N0YXRlID0gY3BwbGludC5f
SW5jbHVkZVN0YXRlKCkKLSAgICAgICAgZnVuY3Rpb25fc3RhdGUgPSBjcHBsaW50Ll9GdW5jdGlv
blN0YXRlKCkKLSAgICAgICAgY2xhc3Nfc3RhdGUgPSBjcHBsaW50Ll9DbGFzc1N0YXRlKCkKLSAg
ICAgICAgY3BwbGludC5wcm9jZXNzX2xpbmUoJ2Zvby5jYycsICdjYycsIGNsZWFuX2xpbmVzLCAw
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX3N0YXRlLCBmdW5jdGlvbl9z
dGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nfc3RhdGUsIGVycm9yX2Nv
bGxlY3RvcikKLSAgICAgICAgIyBTaW5nbGUtbGluZSBsaW50IHRlc3RzIGFyZSBhbGxvd2VkIHRv
IGZhaWwgdGhlICd1bmxpbnRhYmxlIGZ1bmN0aW9uJwotICAgICAgICAjIGNoZWNrLgotICAgICAg
ICBlcnJvcl9jb2xsZWN0b3IucmVtb3ZlX2lmX3ByZXNlbnQoCi0gICAgICAgICAgICAnTGludCBm
YWlsZWQgdG8gZmluZCBzdGFydCBvZiBmdW5jdGlvbiBib2R5LicpCi0gICAgICAgIHJldHVybiBl
cnJvcl9jb2xsZWN0b3IucmVzdWx0cygpCi0KLSAgICAjIFBlcmZvcm0gbGludCBvdmVyIG11bHRp
cGxlIGxpbmVzIGFuZCByZXR1cm4gdGhlIGVycm9yIG1lc3NhZ2UuCi0gICAgZGVmIHBlcmZvcm1f
bXVsdGlfbGluZV9saW50KHNlbGYsIGNvZGUpOgotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBF
cnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGxpbmVzID0gY29kZS5zcGxpdCgn
XG4nKQotICAgICAgICBjcHBsaW50LnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKCdmb28uaCcs
IGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGxpbmVzID0gY3BwbGludC5DbGVhbnNl
ZExpbmVzKGxpbmVzKQotICAgICAgICBjbGFzc19zdGF0ZSA9IGNwcGxpbnQuX0NsYXNzU3RhdGUo
KQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobGluZXMubnVtX2xpbmVzKCkpOgotICAgICAgICAg
ICAgY3BwbGludC5jaGVja19zdHlsZSgnZm9vLmgnLCBsaW5lcywgaSwgJ2gnLCBlcnJvcl9jb2xs
ZWN0b3IpCi0gICAgICAgICAgICBjcHBsaW50LmNoZWNrX2Zvcl9ub25fc3RhbmRhcmRfY29uc3Ry
dWN0cygnZm9vLmgnLCBsaW5lcywgaSwgY2xhc3Nfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAg
ICAgIGNsYXNzX3N0YXRlLmNoZWNrX2ZpbmlzaGVkKCdmb28uaCcsIGVycm9yX2NvbGxlY3RvcikK
LSAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkKLQotICAgICMgU2ltaWxh
ciB0byBwZXJmb3JtX211bHRpX2xpbmVfbGludCwgYnV0IGNhbGxzIGNoZWNrX2xhbmd1YWdlIGlu
c3RlYWQgb2YKLSAgICAjIGNoZWNrX2Zvcl9ub25fc3RhbmRhcmRfY29uc3RydWN0cwotICAgIGRl
ZiBwZXJmb3JtX2xhbmd1YWdlX3J1bGVzX2NoZWNrKHNlbGYsIGZpbGVfbmFtZSwgY29kZSk6Ci0g
ICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAg
ICAgICAgaW5jbHVkZV9zdGF0ZSA9IGNwcGxpbnQuX0luY2x1ZGVTdGF0ZSgpCi0gICAgICAgIGxp
bmVzID0gY29kZS5zcGxpdCgnXG4nKQotICAgICAgICBjcHBsaW50LnJlbW92ZV9tdWx0aV9saW5l
X2NvbW1lbnRzKGZpbGVfbmFtZSwgbGluZXMsIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgbGlu
ZXMgPSBjcHBsaW50LkNsZWFuc2VkTGluZXMobGluZXMpCi0gICAgICAgIGV4dCA9IGZpbGVfbmFt
ZVtmaWxlX25hbWUucmZpbmQoJy4nKSArIDE6XQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobGlu
ZXMubnVtX2xpbmVzKCkpOgotICAgICAgICAgICAgY3BwbGludC5jaGVja19sYW5ndWFnZShmaWxl
X25hbWUsIGxpbmVzLCBpLCBleHQsIGluY2x1ZGVfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgcmV0dXJuIGVycm9yX2Nv
bGxlY3Rvci5yZXN1bHRzKCkKLQotICAgIGRlZiBwZXJmb3JtX2Z1bmN0aW9uX2xlbmd0aHNfY2hl
Y2soc2VsZiwgY29kZSk6Ci0gICAgICAgICIiIlBlcmZvcm0gTGludCBmdW5jdGlvbiBsZW5ndGgg
Y2hlY2sgb24gYmxvY2sgb2YgY29kZSBhbmQgcmV0dXJuIHdhcm5pbmdzLgotCi0gICAgICAgIEJ1
aWxkcyB1cCBhbiBhcnJheSBvZiBsaW5lcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb2RlIGFuZCBz
dHJpcHMgY29tbWVudHMKLSAgICAgICAgdXNpbmcgY3BwbGludCBmdW5jdGlvbnMuCi0KLSAgICAg
ICAgRXN0YWJsaXNoZXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCBpbnZva2VzIHRoZSBmdW5jdGlv
biBsZW5ndGggY2hlY2tpbmcKLSAgICAgICAgZnVuY3Rpb24gZm9sbG93aW5nIGNwcGxpbnQncyBw
YXR0ZXJuLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgY29kZTogQysrIHNvdXJjZSBjb2Rl
IGV4cGVjdGVkIHRvIGdlbmVyYXRlIGEgd2FybmluZyBtZXNzYWdlLgotCi0gICAgICAgIFJldHVy
bnM6Ci0gICAgICAgICAgVGhlIGFjY3VtdWxhdGVkIGVycm9ycy4KLSAgICAgICAgIiIiCi0gICAg
ICAgIGZpbGVfbmFtZSA9ICdmb28uY2MnCi0gICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9y
Q29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgZnVuY3Rpb25fc3RhdGUgPSBjcHBsaW50
Ll9GdW5jdGlvblN0YXRlKCkKLSAgICAgICAgbGluZXMgPSBjb2RlLnNwbGl0KCdcbicpCi0gICAg
ICAgIGNwcGxpbnQucmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMoZmlsZV9uYW1lLCBsaW5lcywg
ZXJyb3JfY29sbGVjdG9yKQotICAgICAgICBsaW5lcyA9IGNwcGxpbnQuQ2xlYW5zZWRMaW5lcyhs
aW5lcykKLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxpbmVzLm51bV9saW5lcygpKToKLSAgICAg
ICAgICAgIGNwcGxpbnQuY2hlY2tfZm9yX2Z1bmN0aW9uX2xlbmd0aHMoZmlsZV9uYW1lLCBsaW5l
cywgaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb25fc3RhdGUsIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxl
Y3Rvci5yZXN1bHRzKCkKLQotICAgIGRlZiBwZXJmb3JtX2luY2x1ZGVfd2hhdF95b3VfdXNlKHNl
bGYsIGNvZGUsIGZpbGVuYW1lPSdmb28uaCcsIGlvPWNvZGVjcyk6Ci0gICAgICAgICMgRmlyc3Qs
IGJ1aWxkIHVwIHRoZSBpbmNsdWRlIHN0YXRlLgotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBF
cnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGluY2x1ZGVfc3RhdGUgPSBjcHBs
aW50Ll9JbmNsdWRlU3RhdGUoKQotICAgICAgICBsaW5lcyA9IGNvZGUuc3BsaXQoJ1xuJykKLSAg
ICAgICAgY3BwbGludC5yZW1vdmVfbXVsdGlfbGluZV9jb21tZW50cyhmaWxlbmFtZSwgbGluZXMs
IGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgbGluZXMgPSBjcHBsaW50LkNsZWFuc2VkTGluZXMo
bGluZXMpCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShsaW5lcy5udW1fbGluZXMoKSk6Ci0gICAg
ICAgICAgICBjcHBsaW50LmNoZWNrX2xhbmd1YWdlKGZpbGVuYW1lLCBsaW5lcywgaSwgJy5oJywg
aW5jbHVkZV9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jf
Y29sbGVjdG9yKQotICAgICAgICAjIFdlIGNvdWxkIGNsZWFyIHRoZSBlcnJvcl9jb2xsZWN0b3Ig
aGVyZSwgYnV0IHRoaXMgc2hvdWxkCi0gICAgICAgICMgYWxzbyBiZSBmaW5lLCBzaW5jZSBvdXIg
SW5jbHVkZVdoYXRZb3VVc2UgdW5pdHRlc3RzIGRvIG5vdAotICAgICAgICAjIGhhdmUgbGFuZ3Vh
Z2UgcHJvYmxlbXMuCi0KLSAgICAgICAgIyBTZWNvbmQsIGxvb2sgZm9yIG1pc3NpbmcgaW5jbHVk
ZXMuCi0gICAgICAgIGNwcGxpbnQuY2hlY2tfZm9yX2luY2x1ZGVfd2hhdF95b3VfdXNlKGZpbGVu
YW1lLCBsaW5lcywgaW5jbHVkZV9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLCBpbykKLSAgICAgICAgcmV0dXJuIGVy
cm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkKLQotICAgICMgUGVyZm9ybSBsaW50IGFuZCBjb21wYXJl
IHRoZSBlcnJvciBtZXNzYWdlIHdpdGggImV4cGVjdGVkX21lc3NhZ2UiLgotICAgIGRlZiBhc3Nl
cnRfbGludChzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlKToKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwgc2VsZi5wZXJmb3JtX3NpbmdsZV9saW5lX2xpbnQo
Y29kZSkpCi0KLSAgICBkZWYgYXNzZXJ0X211bHRpX2xpbmVfbGludChzZWxmLCBjb2RlLCBleHBl
Y3RlZF9tZXNzYWdlKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2Fn
ZSwgc2VsZi5wZXJmb3JtX211bHRpX2xpbmVfbGludChjb2RlKSkKLQotICAgIGRlZiBhc3NlcnRf
bXVsdGlfbGluZV9saW50X3JlKHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2VfcmUpOgotICAg
ICAgICBtZXNzYWdlID0gc2VsZi5wZXJmb3JtX211bHRpX2xpbmVfbGludChjb2RlKQotICAgICAg
ICBpZiBub3QgcmUuc2VhcmNoKGV4cGVjdGVkX21lc3NhZ2VfcmUsIG1lc3NhZ2UpOgotICAgICAg
ICAgICAgc2VsZi5mYWlsKCdNZXNzYWdlIHdhczpcbicgKyBtZXNzYWdlICsgJ0V4cGVjdGVkIG1h
dGNoIHRvICInICsgZXhwZWN0ZWRfbWVzc2FnZV9yZSArICciJykKLQotICAgIGRlZiBhc3NlcnRf
bGFuZ3VhZ2VfcnVsZXNfY2hlY2soc2VsZiwgZmlsZV9uYW1lLCBjb2RlLCBleHBlY3RlZF9tZXNz
YWdlKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5wZXJmb3JtX2xhbmd1YWdlX3J1bGVzX2NoZWNrKGZp
bGVfbmFtZSwgY29kZSkpCi0KLSAgICBkZWYgYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKHNl
bGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2UpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhl
eHBlY3RlZF9tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBlcmZvcm1f
aW5jbHVkZV93aGF0X3lvdV91c2UoY29kZSkpCi0KLSAgICBkZWYgYXNzZXJ0X2JsYW5rX2xpbmVz
X2NoZWNrKHNlbGYsIGxpbmVzLCBzdGFydF9lcnJvcnMsIGVuZF9lcnJvcnMpOgotICAgICAgICBl
cnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGNw
cGxpbnQucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jYycsICdjYycsIGxpbmVzLCBlcnJvcl9jb2xs
ZWN0b3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAotICAgICAgICAgICAgc3RhcnRfZXJy
b3JzLAotICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKS5jb3VudCgKLSAgICAg
ICAgICAgICAgICAnQmxhbmsgbGluZSBhdCB0aGUgc3RhcnQgb2YgYSBjb2RlIGJsb2NrLiAgSXMg
dGhpcyBuZWVkZWQ/JwotICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2JsYW5rX2xpbmVd
IFsyXScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKLSAgICAgICAgICAgIGVuZF9lcnJv
cnMsCi0gICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpLmNvdW50KAotICAgICAg
ICAgICAgICAgICdCbGFuayBsaW5lIGF0IHRoZSBlbmQgb2YgYSBjb2RlIGJsb2NrLiAgSXMgdGhp
cyBuZWVkZWQ/JwotICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2JsYW5rX2xpbmVdIFsz
XScpKQotCi0KLWNsYXNzIENwcGxpbnRUZXN0KENwcGxpbnRUZXN0QmFzZSk6Ci0KLSAgICAjIFRl
c3QgZ2V0IGxpbmUgd2lkdGguCi0gICAgZGVmIHRlc3RfZ2V0X2xpbmVfd2lkdGgoc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIGNwcGxpbnQuZ2V0X2xpbmVfd2lkdGgoJycpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxMCwgY3BwbGludC5nZXRfbGluZV93aWR0aCh1J3gn
ICogMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxNiwgY3BwbGludC5nZXRfbGluZV93
aWR0aCh1J+mDvXzpgZN85bqcfOecjHzmlK/luoEnKSkKLQotICAgIGRlZiB0ZXN0X2ZpbmRfbmV4
dF9tdWx0aV9saW5lX2NvbW1lbnRfc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKDEsIGNwcGxpbnQuZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9zdGFydChbJyddLCAw
KSkKLQotICAgICAgICBsaW5lcyA9IFsnYScsICdiJywgJy8qIGMnXQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscygyLCBjcHBsaW50LmZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfc3RhcnQo
bGluZXMsIDApKQotCi0gICAgICAgIGxpbmVzID0gWydjaGFyIGFbXSA9ICIvKiI7J10gICMgbm90
IHJlY29nbml6ZWQgYXMgY29tbWVudC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgY3Bw
bGludC5maW5kX25leHRfbXVsdGlfbGluZV9jb21tZW50X3N0YXJ0KGxpbmVzLCAwKSkKLQotICAg
IGRlZiB0ZXN0X2ZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfZW5kKHNlbGYpOgotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscygxLCBjcHBsaW50LmZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1l
bnRfZW5kKFsnJ10sIDApKQotICAgICAgICBsaW5lcyA9IFsnYScsICdiJywgJyBjICovJ10KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMiwgY3BwbGludC5maW5kX25leHRfbXVsdGlfbGluZV9j
b21tZW50X2VuZChsaW5lcywgMCkpCi0KLSAgICBkZWYgdGVzdF9yZW1vdmVfbXVsdGlfbGluZV9j
b21tZW50c19mcm9tX3JhbmdlKHNlbGYpOgotICAgICAgICBsaW5lcyA9IFsnYScsICcgIC8qIGNv
bW1lbnQgJywgJyAqIHN0aWxsIGNvbW1lbnQnLCAnIGNvbW1lbnQgKi8gICAnLCAnYiddCi0gICAg
ICAgIGNwcGxpbnQucmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHNfZnJvbV9yYW5nZShsaW5lcywg
MSwgNCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydhJywgJy8vIGR1bW15JywgJy8vIGR1
bW15JywgJy8vIGR1bW15JywgJ2InXSwgbGluZXMpCi0KLSAgICBkZWYgdGVzdF9zcGFjZXNfYXRf
ZW5kX29mX2xpbmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAg
ICAnLy8gSGVsbG8gdGhlcmUgJywKLSAgICAgICAgICAgICdMaW5lIGVuZHMgaW4gd2hpdGVzcGFj
ZS4gIENvbnNpZGVyIGRlbGV0aW5nIHRoZXNlIGV4dHJhIHNwYWNlcy4nCi0gICAgICAgICAgICAn
ICBbd2hpdGVzcGFjZS9lbmRfb2ZfbGluZV0gWzRdJykKLQotICAgICMgVGVzdCBDLXN0eWxlIGNh
c3QgY2FzZXMuCi0gICAgZGVmIHRlc3RfY3N0eWxlX2Nhc3Qoc2VsZik6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnaW50IGEgPSAoaW50KTEuMDsnLAotICAgICAgICAg
ICAgJ1VzaW5nIEMtc3R5bGUgY2FzdC4gIFVzZSBzdGF0aWNfY2FzdDxpbnQ+KC4uLikgaW5zdGVh
ZCcKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jYXN0aW5nXSBbNF0nKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ2ludCAqYSA9IChpbnQgKilOVUxMOycsCi0g
ICAgICAgICAgICAnVXNpbmcgQy1zdHlsZSBjYXN0LiAgVXNlIHJlaW50ZXJwcmV0X2Nhc3Q8aW50
ICo+KC4uLikgaW5zdGVhZCcKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jYXN0aW5nXSBb
NF0nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAndWludDE2IGEg
PSAodWludDE2KTEuMDsnLAotICAgICAgICAgICAgJ1VzaW5nIEMtc3R5bGUgY2FzdC4gIFVzZSBz
dGF0aWNfY2FzdDx1aW50MTY+KC4uLikgaW5zdGVhZCcKLSAgICAgICAgICAgICcgIFtyZWFkYWJp
bGl0eS9jYXN0aW5nXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAg
ICAgJ2ludDMyIGEgPSAoaW50MzIpMS4wOycsCi0gICAgICAgICAgICAnVXNpbmcgQy1zdHlsZSBj
YXN0LiAgVXNlIHN0YXRpY19jYXN0PGludDMyPiguLi4pIGluc3RlYWQnCi0gICAgICAgICAgICAn
ICBbcmVhZGFiaWxpdHkvY2FzdGluZ10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgK
LSAgICAgICAgICAgICd1aW50NjQgYSA9ICh1aW50NjQpMS4wOycsCi0gICAgICAgICAgICAnVXNp
bmcgQy1zdHlsZSBjYXN0LiAgVXNlIHN0YXRpY19jYXN0PHVpbnQ2ND4oLi4uKSBpbnN0ZWFkJwot
ICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2Nhc3RpbmddIFs0XScpCi0KLSAgICAgICAgIyBU
aGVzZSBzaG91bGRuJ3QgYmUgcmVjb2duaXplZCBjYXN0cy4KLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgndSBhID0gKHUpTlVMTDsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndWlu
dCBhID0gKHVpbnQpTlVMTDsnLCAnJykKLQotICAgICMgVGVzdCB0YWtpbmcgYWRkcmVzcyBvZiBj
YXN0cyAocnVudGltZS9jYXN0aW5nKQotICAgIGRlZiB0ZXN0X3J1bnRpbWVfY2FzdGluZyhzZWxm
KToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdpbnQqIHggPSAmc3Rh
dGljX2Nhc3Q8aW50Kj4oZm9vKTsnLAotICAgICAgICAgICAgJ0FyZSB5b3UgdGFraW5nIGFuIGFk
ZHJlc3Mgb2YgYSBjYXN0PyAgJwotICAgICAgICAgICAgJ1RoaXMgaXMgZGFuZ2Vyb3VzOiBjb3Vs
ZCBiZSBhIHRlbXAgdmFyLiAgJwotICAgICAgICAgICAgJ1Rha2UgdGhlIGFkZHJlc3MgYmVmb3Jl
IGRvaW5nIHRoZSBjYXN0LCByYXRoZXIgdGhhbiBhZnRlcicKLSAgICAgICAgICAgICcgIFtydW50
aW1lL2Nhc3RpbmddIFs0XScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAg
ICAgICdpbnQqIHggPSAmZHluYW1pY19jYXN0PGludCAqPihmb28pOycsCi0gICAgICAgICAgICBb
J0FyZSB5b3UgdGFraW5nIGFuIGFkZHJlc3Mgb2YgYSBjYXN0PyAgJwotICAgICAgICAgICAgICdU
aGlzIGlzIGRhbmdlcm91czogY291bGQgYmUgYSB0ZW1wIHZhci4gICcKLSAgICAgICAgICAgICAn
VGFrZSB0aGUgYWRkcmVzcyBiZWZvcmUgZG9pbmcgdGhlIGNhc3QsIHJhdGhlciB0aGFuIGFmdGVy
JwotICAgICAgICAgICAgICcgIFtydW50aW1lL2Nhc3RpbmddIFs0XScsCi0gICAgICAgICAgICAg
J0RvIG5vdCB1c2UgZHluYW1pY19jYXN0PD4uICBJZiB5b3UgbmVlZCB0byBjYXN0IHdpdGhpbiBh
IGNsYXNzICcKLSAgICAgICAgICAgICAnaGllcmFyY2h5LCB1c2Ugc3RhdGljX2Nhc3Q8PiB0byB1
cGNhc3QuICBHb29nbGUgZG9lc25cJ3Qgc3VwcG9ydCAnCi0gICAgICAgICAgICAgJ1JUVEkuICBb
cnVudGltZS9ydHRpXSBbNV0nXSkKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAg
ICAgICAgJ2ludCogeCA9ICZyZWludGVycHJldF9jYXN0PGludCAqPihmb28pOycsCi0gICAgICAg
ICAgICAnQXJlIHlvdSB0YWtpbmcgYW4gYWRkcmVzcyBvZiBhIGNhc3Q/ICAnCi0gICAgICAgICAg
ICAnVGhpcyBpcyBkYW5nZXJvdXM6IGNvdWxkIGJlIGEgdGVtcCB2YXIuICAnCi0gICAgICAgICAg
ICAnVGFrZSB0aGUgYWRkcmVzcyBiZWZvcmUgZG9pbmcgdGhlIGNhc3QsIHJhdGhlciB0aGFuIGFm
dGVyJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvY2FzdGluZ10gWzRdJykKLQotICAgICAgICAj
IEl0J3MgT0sgdG8gY2FzdCBhbiBhZGRyZXNzLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAot
ICAgICAgICAgICAgJ2ludCogeCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50ICo+KCZmb28pOycsCi0g
ICAgICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0X3J1bnRpbWVfc2VsZmluaXQoc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnRm9vOjpGb28oQmFyIHIsIEJl
bCBsKSA6IHJfKHJfKSwgbF8obF8pIHsgfScsCi0gICAgICAgICAgICAnWW91IHNlZW0gdG8gYmUg
aW5pdGlhbGl6aW5nIGEgbWVtYmVyIHZhcmlhYmxlIHdpdGggaXRzZWxmLicKLSAgICAgICAgICAg
ICcgIFtydW50aW1lL2luaXRdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAg
ICAgICAgICAnRm9vOjpGb28oQmFyIHIsIEJlbCBsKSA6IHJfKHIpLCBsXyhsKSB7IH0nLAotICAg
ICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnRm9v
OjpGb28oQmFyIHIpIDogcl8ociksIGxfKHJfKSwgbGxfKGxfKSB7IH0nLAotICAgICAgICAgICAg
JycpCi0KLSAgICBkZWYgdGVzdF9ydW50aW1lX3J0dGkoc2VsZik6Ci0gICAgICAgIHN0YXRlbWVu
dCA9ICdpbnQqIHggPSBkeW5hbWljX2Nhc3Q8aW50Kj4oJmZvbyk7JwotICAgICAgICBlcnJvcl9t
ZXNzYWdlID0gKAotICAgICAgICAgICAgJ0RvIG5vdCB1c2UgZHluYW1pY19jYXN0PD4uICBJZiB5
b3UgbmVlZCB0byBjYXN0IHdpdGhpbiBhIGNsYXNzICcKLSAgICAgICAgICAgICdoaWVyYXJjaHks
IHVzZSBzdGF0aWNfY2FzdDw+IHRvIHVwY2FzdC4gIEdvb2dsZSBkb2VzblwndCBzdXBwb3J0ICcK
LSAgICAgICAgICAgICdSVFRJLiAgW3J1bnRpbWUvcnR0aV0gWzVdJykKLSAgICAgICAgIyBkeW5h
bWljX2Nhc3QgaXMgZGlzYWxsb3dlZCBpbiBtb3N0IGZpbGVzLgotICAgICAgICBzZWxmLmFzc2Vy
dF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmNjJywgc3RhdGVtZW50LCBlcnJvcl9tZXNzYWdl
KQotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmgnLCBzdGF0
ZW1lbnQsIGVycm9yX21lc3NhZ2UpCi0gICAgICAgICMgSXQgaXMgZXhwbGljaXRseSBhbGxvd2Vk
IGluIHRlc3RzLCBob3dldmVyLgotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19j
aGVjaygnZm9vX3Rlc3QuY2MnLCBzdGF0ZW1lbnQsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9s
YW5ndWFnZV9ydWxlc19jaGVjaygnZm9vX3VuaXR0ZXN0LmNjJywgc3RhdGVtZW50LCAnJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvb19yZWd0ZXN0LmNjJywg
c3RhdGVtZW50LCAnJykKLQotICAgICMgV2UgY2Fubm90IHRlc3QgdGhpcyBmdW5jdGlvbmFsaXR5
IGJlY2F1c2Ugb2YgZGlmZmVyZW5jZSBvZgotICAgICMgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBB
bnl3YXksIHdlIG1heSBuZXZlciBlbmFibGUgdGhpcy4KLSAgICAjCi0gICAgIyAjIFRlc3QgZm9y
IHVubmFtZWQgYXJndW1lbnRzIGluIGEgbWV0aG9kLgotICAgICMgZGVmIHRlc3RfY2hlY2tfZm9y
X3VubmFtZWRfcGFyYW1zKHNlbGYpOgotICAgICMgICBtZXNzYWdlID0gKCdBbGwgcGFyYW1ldGVy
cyBzaG91bGQgYmUgbmFtZWQgaW4gYSBmdW5jdGlvbicKLSAgICAjICAgICAgICAgICAgICAnICBb
cmVhZGFiaWxpdHkvZnVuY3Rpb25dIFszXScpCi0gICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3Zp
cnR1YWwgdm9pZCBBKGludCopIGNvbnN0OycsIG1lc3NhZ2UpCi0gICAgIyAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ3ZpcnR1YWwgdm9pZCBCKHZvaWQgKCpmbikoaW50KikpOycsIG1lc3NhZ2UpCi0gICAg
IyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZpcnR1YWwgdm9pZCBDKGludCopOycsIG1lc3NhZ2UpCi0g
ICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgKigqZikodm9pZCAqKSA9IHg7JywgbWVzc2Fn
ZSkKLSAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCBNZXRob2QoY2hhciopIHsnLCBtZXNz
YWdlKQotICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIE1ldGhvZChjaGFyKik7JywgbWVz
c2FnZSkKLSAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCBNZXRob2QoY2hhciogLyp4Ki8p
OycsIG1lc3NhZ2UpCi0gICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5cGVkZWYgdm9pZCAoKk1l
dGhvZCkoaW50MzIpOycsIG1lc3NhZ2UpCi0gICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0YXRp
YyB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqKSB0aHJvdygpOycsIG1lc3NhZ2UpCi0gICAg
IyAKLSAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndmlydHVhbCB2b2lkIEQoaW50KiBwKTsnLCAn
JykKLSAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCog
eCkgdGhyb3coKTsnLCAnJykKLSAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCBNZXRob2Qo
Y2hhciogeClcbnsnLCAnJykKLSAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCBNZXRob2Qo
Y2hhciogLyp4Ki8pXG57JywgJycpCi0gICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgTWV0
aG9kKGNoYXIqIHgpOycsICcnKQotICAgICMgICBzZWxmLmFzc2VydF9saW50KCd0eXBlZGVmIHZv
aWQgKCpNZXRob2QpKGludDMyIHgpOycsICcnKQotICAgICMgICBzZWxmLmFzc2VydF9saW50KCdz
dGF0aWMgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiB4KSB0aHJvdygpOycsICcnKQotICAg
ICMgICBzZWxmLmFzc2VydF9saW50KCdzdGF0aWMgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lk
KiAvKngqLykgdGhyb3coKTsnLCAnJykKLSAgICAjIAotICAgICMgICAjIFRoaXMgb25lIHNob3Vs
ZCB0ZWNobmljYWxseSB3YXJuLCBidXQgZG9lc24ndCBiZWNhdXNlIHRoZSBmdW5jdGlvbgotICAg
ICMgICAjIHBvaW50ZXIgaXMgY29uZnVzaW5nLgotICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2
aXJ0dWFsIHZvaWQgRSh2b2lkICgqZm4pKGludCogcCkpOycsICcnKQotCi0gICAgIyBUZXN0IGRl
cHJlY2F0ZWQgY2FzdHMgc3VjaCBhcyBpbnQoZCkKLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2Nh
c3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnaW50IGEg
PSBpbnQoMi4yKTsnLAotICAgICAgICAgICAgJ1VzaW5nIGRlcHJlY2F0ZWQgY2FzdGluZyBzdHls
ZS4gICcKLSAgICAgICAgICAgICdVc2Ugc3RhdGljX2Nhc3Q8aW50PiguLi4pIGluc3RlYWQnCi0g
ICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2FzdGluZ10gWzRdJykKLSAgICAgICAgIyBDaGVj
a3MgZm9yIGZhbHNlIHBvc2l0aXZlcy4uLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAg
ICAgICAgICAgJ2ludCBhID0gaW50KCk7ICAvLyBDb25zdHJ1Y3Rvciwgby5rLicsCi0gICAgICAg
ICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdYOjpYKCkg
OiBhKGludCgpKSB7fSAgLy8gZGVmYXVsdCBDb25zdHJ1Y3Rvciwgby5rLicsCi0gICAgICAgICAg
ICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdvcGVyYXRvciBi
b29sKCk7ICAvLyBDb252ZXJzaW9uIG9wZXJhdG9yLCBvLmsuJywKLSAgICAgICAgICAgICcnKQot
Ci0gICAgIyBUaGUgc2Vjb25kIHBhcmFtZXRlciB0byBhIGdNb2NrIG1ldGhvZCBkZWZpbml0aW9u
IGlzIGEgZnVuY3Rpb24gc2lnbmF0dXJlCi0gICAgIyB0aGF0IG9mdGVuIGxvb2tzIGxpa2UgYSBi
YWQgY2FzdCBidXQgc2hvdWxkIG5vdCBwaWNrZWQgdXAgYnkgbGludC4KLSAgICBkZWYgdGVzdF9t
b2NrX21ldGhvZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAg
ICdNT0NLX01FVEhPRDAobWV0aG9kLCBpbnQoKSk7JywKLSAgICAgICAgICAgICcnKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ01PQ0tfQ09OU1RfTUVUSE9EMShtZXRo
b2QsIGZsb2F0KHN0cmluZykpOycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgKLSAgICAgICAgICAgICdNT0NLX0NPTlNUX01FVEhPRDJfVChtZXRob2QsIGRvdWJs
ZShmbG9hdCwgZmxvYXQpKTsnLAotICAgICAgICAgICAgJycpCi0KLSAgICAjIFRlc3Qgc2l6ZW9m
KHR5cGUpIGNhc2VzLgotICAgIGRlZiB0ZXN0X3NpemVvZl90eXBlKHNlbGYpOgotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ3NpemVvZihpbnQpOycsCi0gICAgICAgICAg
ICAnVXNpbmcgc2l6ZW9mKHR5cGUpLiAgVXNlIHNpemVvZih2YXJuYW1lKSBpbnN0ZWFkIGlmIHBv
c3NpYmxlJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvc2l6ZW9mXSBbMV0nKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ3NpemVvZihpbnQgKik7JywKLSAgICAgICAg
ICAgICdVc2luZyBzaXplb2YodHlwZSkuICBVc2Ugc2l6ZW9mKHZhcm5hbWUpIGluc3RlYWQgaWYg
cG9zc2libGUnCi0gICAgICAgICAgICAnICBbcnVudGltZS9zaXplb2ZdIFsxXScpCi0KLSAgICAj
IFRlc3QgZmFsc2UgZXJyb3JzIHRoYXQgaGFwcGVuZWQgd2l0aCBzb21lIGluY2x1ZGUgZmlsZSBu
YW1lcwotICAgIGRlZiB0ZXN0X2luY2x1ZGVfZmlsZW5hbWVfZmFsc2VfZXJyb3Ioc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnI2luY2x1ZGUgImZvby9sb25n
LWZvby5oIicsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAg
ICAgICAgICAgICcjaW5jbHVkZSAiZm9vL3NwcmludGYuaCInLAotICAgICAgICAgICAgJycpCi0K
LSAgICAjIFRlc3QgdHlwZWRlZiBjYXNlcy4gIFRoZXJlIHdhcyBhIGJ1ZyB0aGF0IGNwcGxpbnQg
bWlzaWRlbnRpZmllZAotICAgICMgdHlwZWRlZiBmb3IgcG9pbnRlciB0byBmdW5jdGlvbiBhcyBD
LXN0eWxlIGNhc3QgYW5kIHByb2R1Y2VkCi0gICAgIyBmYWxzZS1wb3NpdGl2ZSBlcnJvciBtZXNz
YWdlcy4KLSAgICBkZWYgdGVzdF90eXBlZGVmX2Zvcl9wb2ludGVyX3RvX2Z1bmN0aW9uKHNlbGYp
OgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ3R5cGVkZWYgdm9pZCAo
KkZ1bmMpKGludCB4KTsnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoCi0gICAgICAgICAgICAndHlwZWRlZiB2b2lkICgqRnVuYykoaW50ICp4KTsnLAotICAgICAg
ICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAndHlwZWRl
ZiB2b2lkIEZ1bmMoaW50IHgpOycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgKLSAgICAgICAgICAgICd0eXBlZGVmIHZvaWQgRnVuYyhpbnQgKngpOycsCi0gICAg
ICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0X2luY2x1ZGVfd2hhdF95b3VfdXNlX25vX2ltcGxl
bWVudGF0aW9uX2ZpbGVzKHNlbGYpOgotICAgICAgICBjb2RlID0gJ3N0ZDo6dmVjdG9yPGludD4g
Zm9vOycKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ0FkZCAjaW5jbHVkZSA8dmVjdG9yPiBm
b3IgdmVjdG9yPD4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtidWlsZC9pbmNsdWRl
X3doYXRfeW91X3VzZV0gWzRdJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wZXJm
b3JtX2luY2x1ZGVfd2hhdF95b3VfdXNlKGNvZGUsICdmb28uaCcpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscygnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wZXJmb3JtX2lu
Y2x1ZGVfd2hhdF95b3VfdXNlKGNvZGUsICdmb28uY2MnKSkKLQotICAgIGRlZiB0ZXN0X2luY2x1
ZGVfd2hhdF95b3VfdXNlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRf
eW91X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlIDx2ZWN0b3I+Ci0gICAgICAgICAgICAg
ICBzdGQ6OnZlY3RvcjxpbnQ+IGZvbzsKLSAgICAgICAgICAgICcnJywKLSAgICAgICAgICAgICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAg
ICcnJyNpbmNsdWRlIDxtYXA+Ci0gICAgICAgICAgICAgICBzdGQ6OnBhaXI8aW50LGludD4gZm9v
OwotICAgICAgICAgICAgJycnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAgJycnI2luY2x1ZGUgPG11bHRpbWFw
PgotICAgICAgICAgICAgICAgc3RkOjpwYWlyPGludCxpbnQ+IGZvbzsKLSAgICAgICAgICAgICcn
JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91
X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlIDxoYXNoX21hcD4KLSAgICAgICAgICAgICAg
IHN0ZDo6cGFpcjxpbnQsaW50PiBmb287Ci0gICAgICAgICAgICAnJycsCi0gICAgICAgICAgICAn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAg
ICAnJycjaW5jbHVkZSA8dXRpbGl0eT4KLSAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxpbnQsaW50
PiBmb287Ci0gICAgICAgICAgICAnJycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSA8dmVj
dG9yPgotICAgICAgICAgICAgICAgREVDTEFSRV9zdHJpbmcoZm9vYmFyKTsKLSAgICAgICAgICAg
ICcnJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRf
eW91X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlIDx2ZWN0b3I+Ci0gICAgICAgICAgICAg
ICBERUZJTkVfc3RyaW5nKGZvb2JhciwgIiIsICIiKTsKLSAgICAgICAgICAgICcnJywKLSAgICAg
ICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAg
ICAgICAgICAgICcnJyNpbmNsdWRlIDx2ZWN0b3I+Ci0gICAgICAgICAgICAgICBzdGQ6OnBhaXI8
aW50LGludD4gZm9vOwotICAgICAgICAgICAgJycnLAotICAgICAgICAgICAgJ0FkZCAjaW5jbHVk
ZSA8dXRpbGl0eT4gZm9yIHBhaXI8PicKLSAgICAgICAgICAgICcgIFtidWlsZC9pbmNsdWRlX3do
YXRfeW91X3VzZV0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91
c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSAiYmFzZS9mb29iYXIuaCIKLSAgICAgICAgICAg
ICAgIHN0ZDo6dmVjdG9yPGludD4gZm9vOwotICAgICAgICAgICAgJycnLAotICAgICAgICAgICAg
J0FkZCAjaW5jbHVkZSA8dmVjdG9yPiBmb3IgdmVjdG9yPD4nCi0gICAgICAgICAgICAnICBbYnVp
bGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1
ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAgJycnI2luY2x1ZGUgPHZlY3Rvcj4KLSAgICAg
ICAgICAgICAgIHN0ZDo6c2V0PGludD4gZm9vOwotICAgICAgICAgICAgJycnLAotICAgICAgICAg
ICAgJ0FkZCAjaW5jbHVkZSA8c2V0PiBmb3Igc2V0PD4nCi0gICAgICAgICAgICAnICBbYnVpbGQv
aW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVf
d2hhdF95b3VfdXNlKAotICAgICAgICAgICAgJycnI2luY2x1ZGUgImJhc2UvZm9vYmFyLmgiCi0g
ICAgICAgICAgICAgIGhhc2hfbWFwPGludCwgaW50PiBmb29iYXI7Ci0gICAgICAgICAgICAnJycs
Ci0gICAgICAgICAgICAnQWRkICNpbmNsdWRlIDxoYXNoX21hcD4gZm9yIGhhc2hfbWFwPD4nCi0g
ICAgICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAgJycnI2luY2x1
ZGUgImJhc2UvZm9vYmFyLmgiCi0gICAgICAgICAgICAgICBib29sIGZvb2JhciA9IHN0ZDo6bGVz
czxpbnQ+KDAsMSk7Ci0gICAgICAgICAgICAnJycsCi0gICAgICAgICAgICAnQWRkICNpbmNsdWRl
IDxmdW5jdGlvbmFsPiBmb3IgbGVzczw+JwotICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVf
d2hhdF95b3VfdXNlXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91
X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlICJiYXNlL2Zvb2Jhci5oIgotICAgICAgICAg
ICAgICAgYm9vbCBmb29iYXIgPSBtaW48aW50PigwLDEpOwotICAgICAgICAgICAgJycnLAotICAg
ICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8YWxnb3JpdGhtPiBmb3IgbWluICBbYnVpbGQvaW5jbHVk
ZV93aGF0X3lvdV91c2VdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95
b3VfdXNlKAotICAgICAgICAgICAgJ3ZvaWQgYShjb25zdCBzdHJpbmcgJmZvb2Jhcik7JywKLSAg
ICAgICAgICAgICdBZGQgI2luY2x1ZGUgPHN0cmluZz4gZm9yIHN0cmluZyAgW2J1aWxkL2luY2x1
ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRf
eW91X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlICJiYXNlL2Zvb2Jhci5oIgotICAgICAg
ICAgICAgICAgYm9vbCBmb29iYXIgPSBzd2FwKDAsMSk7Ci0gICAgICAgICAgICAnJycsCi0gICAg
ICAgICAgICAnQWRkICNpbmNsdWRlIDxhbGdvcml0aG0+IGZvciBzd2FwICBbYnVpbGQvaW5jbHVk
ZV93aGF0X3lvdV91c2VdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95
b3VfdXNlKAotICAgICAgICAgICAgJycnI2luY2x1ZGUgImJhc2UvZm9vYmFyLmgiCi0gICAgICAg
ICAgICAgICBib29sIGZvb2JhciA9IHRyYW5zZm9ybShhLmJlZ2luKCksIGEuZW5kKCksIGIuc3Rh
cnQoKSwgRm9vKTsKLSAgICAgICAgICAgICcnJywKLSAgICAgICAgICAgICdBZGQgI2luY2x1ZGUg
PGFsZ29yaXRobT4gZm9yIHRyYW5zZm9ybSAgJwotICAgICAgICAgICAgJ1tidWlsZC9pbmNsdWRl
X3doYXRfeW91X3VzZV0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lv
dV91c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSAiYmFzZS9mb29iYXIuaCIKLSAgICAgICAg
ICAgICAgIGJvb2wgZm9vYmFyID0gbWluX2VsZW1lbnQoYS5iZWdpbigpLCBhLmVuZCgpKTsKLSAg
ICAgICAgICAgICcnJywKLSAgICAgICAgICAgICdBZGQgI2luY2x1ZGUgPGFsZ29yaXRobT4gZm9y
IG1pbl9lbGVtZW50ICAnCi0gICAgICAgICAgICAnW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNl
XSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAg
ICAgICAgICcnJ2Zvby0+c3dhcCgwLDEpOwotICAgICAgICAgICAgICAgZm9vLnN3YXAoMCwxKTsK
LSAgICAgICAgICAgICcnJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9p
bmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlIDxzdHJpbmc+Ci0g
ICAgICAgICAgICAgICB2b2lkIGEoY29uc3Qgc3RkOjptdWx0aW1hcDxpbnQsc3RyaW5nPiAmZm9v
YmFyKTsKLSAgICAgICAgICAgICcnJywKLSAgICAgICAgICAgICdBZGQgI2luY2x1ZGUgPG1hcD4g
Zm9yIG11bHRpbWFwPD4nCi0gICAgICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91
c2VdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAg
ICAgICAgICAgJycnI2luY2x1ZGUgPHF1ZXVlPgotICAgICAgICAgICAgICAgdm9pZCBhKGNvbnN0
IHN0ZDo6cHJpb3JpdHlfcXVldWU8aW50PiAmZm9vYmFyKTsKLSAgICAgICAgICAgICcnJywKLSAg
ICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgK
LSAgICAgICAgICAgICcnJyNpbmNsdWRlIDxhc3NlcnQuaD4KLSAgICAgICAgICAgICAgICNpbmNs
dWRlIDxzdHJpbmc+Ci0gICAgICAgICAgICAgICAjaW5jbHVkZSA8dmVjdG9yPgotICAgICAgICAg
ICAgICAgI2luY2x1ZGUgImJhc2UvYmFzaWN0eXBlcy5oIgotICAgICAgICAgICAgICAgI2luY2x1
ZGUgImJhc2UvcG9ydC5oIgotICAgICAgICAgICAgICAgdmVjdG9yPHN0cmluZz4gaGFqb2E7Jycn
LCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAg
ICAgICAnJycjaW5jbHVkZSA8c3RyaW5nPgotICAgICAgICAgICAgICAgaW50IGkgPSBudW1lcmlj
X2xpbWl0czxpbnQ+OjptYXgoKQotICAgICAgICAgICAgJycnLAotICAgICAgICAgICAgJ0FkZCAj
aW5jbHVkZSA8bGltaXRzPiBmb3IgbnVtZXJpY19saW1pdHM8PicKLSAgICAgICAgICAgICcgIFti
dWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5j
bHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSA8bGltaXRzPgotICAg
ICAgICAgICAgICAgaW50IGkgPSBudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKQotICAgICAgICAg
ICAgJycnLAotICAgICAgICAgICAgJycpCi0KLSAgICAgICAgIyBUZXN0IHRoZSBVcGRhdGVJbmNs
dWRlU3RhdGUgY29kZSBwYXRoLgotICAgICAgICBtb2NrX2hlYWRlcl9jb250ZW50cyA9IFsnI2lu
Y2x1ZGUgImJsYWgvZm9vLmgiJywgJyNpbmNsdWRlICJibGFoL2Jhci5oIiddCi0gICAgICAgIG1l
c3NhZ2UgPSBzZWxmLnBlcmZvcm1faW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAn
I2luY2x1ZGUgImJsYWgvYS5oIicsCi0gICAgICAgICAgICBmaWxlbmFtZT0nYmxhaC9hLmNjJywK
LSAgICAgICAgICAgIGlvPU1vY2tJbyhtb2NrX2hlYWRlcl9jb250ZW50cykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKG1lc3NhZ2UsICcnKQotCi0gICAgICAgIG1vY2tfaGVhZGVyX2NvbnRl
bnRzID0gWycjaW5jbHVkZSA8c2V0PiddCi0gICAgICAgIG1lc3NhZ2UgPSBzZWxmLnBlcmZvcm1f
aW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSAiYmxhaC9hLmgi
Ci0gICAgICAgICAgICAgICBzdGQ6OnNldDxpbnQ+IGZvbzsnJycsCi0gICAgICAgICAgICBmaWxl
bmFtZT0nYmxhaC9hLmNjJywKLSAgICAgICAgICAgIGlvPU1vY2tJbyhtb2NrX2hlYWRlcl9jb250
ZW50cykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1lc3NhZ2UsICcnKQotCi0gICAgICAg
ICMgTWFrZSBzdXJlIHdlIGNhbiBmaW5kIHRoZSBjb3JyZWN0IGhlYWRlciBmaWxlIGlmIHRoZSBj
YyBmaWxlIHNlZW1zIHRvIGJlCi0gICAgICAgICMgYSB0ZW1wb3JhcnkgZmlsZSBnZW5lcmF0ZWQg
YnkgRW1hY3MncyBmbHltYWtlLgotICAgICAgICBtb2NrX2hlYWRlcl9jb250ZW50cyA9IFsnJ10K
LSAgICAgICAgbWVzc2FnZSA9IHNlbGYucGVyZm9ybV9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAg
ICAgICAgICAgICcnJyNpbmNsdWRlICJibGFoL2EuaCIKLSAgICAgICAgICAgICAgIHN0ZDo6c2V0
PGludD4gZm9vOycnJywKLSAgICAgICAgICAgIGZpbGVuYW1lPSdibGFoL2FfZmx5bWFrZS5jYycs
Ci0gICAgICAgICAgICBpbz1Nb2NrSW8obW9ja19oZWFkZXJfY29udGVudHMpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhtZXNzYWdlLCAnQWRkICNpbmNsdWRlIDxzZXQ+IGZvciBzZXQ8PiAg
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnW2J1aWxkL2luY2x1ZGVfd2hh
dF95b3VfdXNlXSBbNF0nKQotCi0gICAgICAgICMgSWYgdGhlcmUncyBqdXN0IGEgY2MgYW5kIHRo
ZSBoZWFkZXIgY2FuJ3QgYmUgZm91bmQgdGhlbiBpdCdzIG9rLgotICAgICAgICBtZXNzYWdlID0g
c2VsZi5wZXJmb3JtX2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAgJycnI2luY2x1
ZGUgImJsYWgvYS5oIgotICAgICAgICAgICAgICAgc3RkOjpzZXQ8aW50PiBmb287JycnLAotICAg
ICAgICAgICAgZmlsZW5hbWU9J2JsYWgvYS5jYycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KG1lc3NhZ2UsICcnKQotCi0gICAgICAgICMgTWFrZSBzdXJlIHdlIGZpbmQgdGhlIGhlYWRlcnMg
d2l0aCByZWxhdGl2ZSBwYXRocy4KLSAgICAgICAgbW9ja19oZWFkZXJfY29udGVudHMgPSBbJydd
Ci0gICAgICAgIG1lc3NhZ2UgPSBzZWxmLnBlcmZvcm1faW5jbHVkZV93aGF0X3lvdV91c2UoCi0g
ICAgICAgICAgICAnJycjaW5jbHVkZSAiJXMvYS5oIgotICAgICAgICAgICAgICAgc3RkOjpzZXQ8
aW50PiBmb287JycnICUgb3MucGF0aC5iYXNlbmFtZShvcy5nZXRjd2QoKSksCi0gICAgICAgICAg
ICBmaWxlbmFtZT0nYS5jYycsCi0gICAgICAgICAgICBpbz1Nb2NrSW8obW9ja19oZWFkZXJfY29u
dGVudHMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtZXNzYWdlLCAnQWRkICNpbmNsdWRl
IDxzZXQ+IGZvciBzZXQ8PiAgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
W2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQotCi0gICAgZGVmIHRlc3RfZmlsZXNf
YmVsb25nX3RvX3NhbWVfbW9kdWxlKHNlbGYpOgotICAgICAgICBmID0gY3BwbGludC5maWxlc19i
ZWxvbmdfdG9fc2FtZV9tb2R1bGUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICcn
KSwgZignYS5jYycsICdhLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICcn
KSwgZignYmFzZS9nb29nbGUuY2MnLCAnYmFzZS9nb29nbGUuaCcpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscygoVHJ1ZSwgJycpLCBmKCdiYXNlL2dvb2dsZV90ZXN0LmNjJywgJ2Jhc2UvZ29v
Z2xlLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICcnKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgZignYmFzZS9nb29nbGVfdW5pdHRlc3QuY2MnLCAnYmFzZS9nb29n
bGUuaCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoVHJ1ZSwgJycpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBmKCdiYXNlL2ludGVybmFsL2dvb2dsZV91bml0dGVzdC5jYycsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UvcHVibGljL2dvb2dsZS5oJykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChUcnVlLCAneHh4L3l5eS8nKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgZigneHh4L3l5eS9iYXNlL2ludGVybmFsL2dvb2dsZV91bml0dGVzdC5jYycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UvcHVibGljL2dvb2dsZS5oJykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChUcnVlLCAneHh4L3l5eS8nKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgZigneHh4L3l5eS9iYXNlL2dvb2dsZV91bml0dGVzdC5jYycsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UvcHVibGljL2dvb2dsZS5oJykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKChUcnVlLCAnJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IGYoJ2Jhc2UvZ29vZ2xlX3VuaXR0ZXN0LmNjJywgJ2Jhc2UvZ29vZ2xlLWlubC5oJykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChUcnVlLCAnL2hvbWUvYnVpbGQvZ29vZ2xlMy8nKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgZignL2hvbWUvYnVpbGQvZ29vZ2xlMy9iYXNlL2dvb2ds
ZS5jYycsICdiYXNlL2dvb2dsZS5oJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKEZh
bHNlLCAnJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGYoJy9ob21lL2J1aWxkL2dvb2ds
ZTMvYmFzZS9nb29nbGUuY2MnLCAnYmFzdS9nb29nbGUuaCcpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygoRmFsc2UsICcnKSwgZignYS5jYycsICdiLmgnKSkKLQotICAgIGRlZiB0ZXN0X2Ns
ZWFuc2VfbGluZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ2ludCBmb28gPSAw
OyAgJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5jbGVhbnNlX2NvbW1lbnRz
KCdpbnQgZm9vID0gMDsgIC8vIGRhbmdlciEnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
J2ludCBvID0gMDsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50LmNsZWFuc2Vf
Y29tbWVudHMoJ2ludCAvKiBmb28gKi8gbyA9IDA7JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKCdmb28oaW50IGEsIGludCBiKTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBs
aW50LmNsZWFuc2VfY29tbWVudHMoJ2ZvbyhpbnQgYSAvKiBhYmMgKi8sIGludCBiKTsnKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZihhLCBiKTsnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIGNwcGxpbnQuY2xlYW5zZV9jb21tZW50cygnZihhLCAvKiBuYW1lICovIGIpOycpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdmKGEsIGIpOycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgY3BwbGludC5jbGVhbnNlX2NvbW1lbnRzKCdmKGEgLyogbmFtZSAqLywgYik7JykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2YoYSwgYik7JywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBjcHBsaW50LmNsZWFuc2VfY29tbWVudHMoJ2YoYSwgLyogbmFtZSAqL2IpOycpKQotCi0gICAg
ZGVmIHRlc3RfbXVsdGlfbGluZV9jb21tZW50cyhzZWxmKToKLSAgICAgICAgIyBtaXNzaW5nIGV4
cGxpY2l0IGlzIGJhZAotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAg
ICAgICAgICByJycnaW50IGEgPSAwOwotICAgICAgICAgICAgICAgIC8qIG11bHRpLWxpbmVyCi0g
ICAgICAgICAgICAgICAgY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICBGb28oaW50IGYpOyAg
Ly8gc2hvdWxkIGNhdXNlIGEgbGludCB3YXJuaW5nIGluIGNvZGUKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAqLyAnJycsCi0gICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICByJycnLyogaW50IGEgPSAwOyBtdWx0aS1saW5l
cgotICAgICAgICAgICAgc3RhdGljIGNvbnN0IGludCBiID0gMDsnJycsCi0gICAgICAnQ291bGQg
bm90IGZpbmQgZW5kIG9mIG11bHRpLWxpbmUgY29tbWVudCcKLSAgICAgICcgIFtyZWFkYWJpbGl0
eS9tdWx0aWxpbmVfY29tbWVudF0gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KHInJycgICAgLyogbXVsdGktbGluZSBjb21tZW50JycnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0NvdWxkIG5vdCBmaW5kIGVuZCBvZiBtdWx0aS1saW5lIGNv
bW1lbnQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxp
dHkvbXVsdGlsaW5lX2NvbW1lbnRdIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludChyJycnICAgIC8vIC8qIGNvbW1lbnQsIGJ1dCBub3QgbXVsdGktbGluZScnJywgJycp
Ci0KLSAgICBkZWYgdGVzdF9tdWx0aWxpbmVfc3RyaW5ncyhzZWxmKToKLSAgICAgICAgbXVsdGls
aW5lX3N0cmluZ19lcnJvcl9tZXNzYWdlID0gKAotICAgICAgICAgICAgJ011bHRpLWxpbmUgc3Ry
aW5nICgiLi4uIikgZm91bmQuICBUaGlzIGxpbnQgc2NyaXB0IGRvZXNuXCd0ICcKLSAgICAgICAg
ICAgICdkbyB3ZWxsIHdpdGggc3VjaCBzdHJpbmdzLCBhbmQgbWF5IGdpdmUgYm9ndXMgd2Fybmlu
Z3MuICBUaGV5XCdyZSAnCi0gICAgICAgICAgICAndWdseSBhbmQgdW5uZWNlc3NhcnksIGFuZCB5
b3Ugc2hvdWxkIHVzZSBjb25jYXRlbmF0aW9uIGluc3RlYWQiLicKLSAgICAgICAgICAgICcgIFty
ZWFkYWJpbGl0eS9tdWx0aWxpbmVfc3RyaW5nXSBbNV0nKQotCi0gICAgICAgIGZpbGVfcGF0aCA9
ICdteWRpci9mb28uY2MnCi0KLSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0
b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVf
cGF0aCwgJ2NjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2NvbnN0IGNo
YXIqIHN0ciA9ICJUaGlzIGlzIGFcXCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcgbXVsdGlsaW5lIHN0cmluZy4iOyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCi0gICAg
ICAgICAgICAyLCAgIyBPbmUgcGVyIGxpbmUuCi0gICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3Iu
cmVzdWx0X2xpc3QoKS5jb3VudChtdWx0aWxpbmVfc3RyaW5nX2Vycm9yX21lc3NhZ2UpKQotCi0g
ICAgIyBUZXN0IG5vbi1leHBsaWNpdCBzaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzCi0gICAg
ZGVmIHRlc3RfZXhwbGljaXRfc2luZ2xlX2FyZ3VtZW50X2NvbnN0cnVjdG9ycyhzZWxmKToKLSAg
ICAgICAgIyBtaXNzaW5nIGV4cGxpY2l0IGlzIGJhZAotICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28gewotICAgICAgICAgICAgICAg
ICBGb28oaW50IGYpOwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnU2luZ2xl
LWFyZ3VtZW50IGNvbnN0cnVjdG9ycyBzaG91bGQgYmUgbWFya2VkIGV4cGxpY2l0LicKLSAgICAg
ICAgICAgICcgIFtydW50aW1lL2V4cGxpY2l0XSBbNV0nKQotICAgICAgICAjIG1pc3NpbmcgZXhw
bGljaXQgaXMgYmFkLCBldmVuIHdpdGggd2hpdGVzcGFjZQotICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28gewotICAgICAgICAgICAg
ICAgICBGb28gKGludCBmKTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgWydF
eHRyYSBzcGFjZSBiZWZvcmUgKCBpbiBmdW5jdGlvbiBjYWxsICBbd2hpdGVzcGFjZS9wYXJlbnNd
IFs0XScsCi0gICAgICAgICAgICAgJ1NpbmdsZS1hcmd1bWVudCBjb25zdHJ1Y3RvcnMgc2hvdWxk
IGJlIG1hcmtlZCBleHBsaWNpdC4nCi0gICAgICAgICAgICAgJyAgW3J1bnRpbWUvZXhwbGljaXRd
IFs1XSddKQotICAgICAgICAjIG1pc3NpbmcgZXhwbGljaXQsIHdpdGggZGlzdHJhY3RpbmcgY29t
bWVudCwgaXMgc3RpbGwgYmFkCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
LSAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAgIEZvbyhpbnQgZik7
ICAvLyBzaW1wbGVyIHRoYW4gRm9vKGJsYXJnaCwgYmxhcmcpCi0gICAgICAgICAgICAgICB9Oycn
JywKLSAgICAgICAgICAgICdTaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHNob3VsZCBiZSBt
YXJrZWQgZXhwbGljaXQuJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvZXhwbGljaXRdIFs1XScp
Ci0gICAgICAgICMgbWlzc2luZyBleHBsaWNpdCwgd2l0aCBxdWFsaWZpZWQgY2xhc3NuYW1lCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2NsYXNz
IFF1YWxpZmllcjo6QW5vdGhlck9uZTo6Rm9vIHsKLSAgICAgICAgICAgICAgICAgRm9vKGludCBm
KTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJ1NpbmdsZS1hcmd1bWVudCBj
b25zdHJ1Y3RvcnMgc2hvdWxkIGJlIG1hcmtlZCBleHBsaWNpdC4nCi0gICAgICAgICAgICAnICBb
cnVudGltZS9leHBsaWNpdF0gWzVdJykKLSAgICAgICAgIyBzdHJ1Y3RzIGFyZSBjYXVnaHQgYXMg
d2VsbC4KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAg
Jycnc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICAgICAgIEZvbyhpbnQgZik7Ci0gICAgICAgICAg
ICAgICB9OycnJywKLSAgICAgICAgICAgICdTaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHNo
b3VsZCBiZSBtYXJrZWQgZXhwbGljaXQuJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvZXhwbGlj
aXRdIFs1XScpCi0gICAgICAgICMgVGVtcGxhdGl6ZWQgY2xhc3NlcyBhcmUgY2F1Z2h0IGFzIHdl
bGwuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcn
J3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAgIEZvbyhp
bnQgZik7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICdTaW5nbGUtYXJndW1l
bnQgY29uc3RydWN0b3JzIHNob3VsZCBiZSBtYXJrZWQgZXhwbGljaXQuJwotICAgICAgICAgICAg
JyAgW3J1bnRpbWUvZXhwbGljaXRdIFs1XScpCi0gICAgICAgICMgcHJvcGVyIHN0eWxlIGlzIG9r
YXkKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycn
Y2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgZXhwbGljaXQgRm9vKGludCBmKTsKLSAgICAg
ICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJycpCi0gICAgICAgICMgdHdvIGFyZ3VtZW50
IGNvbnN0cnVjdG9yIGlzIG9rYXkKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgRm9vKGludCBm
LCBpbnQgYik7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICcnKQotICAgICAg
ICAjIHR3byBhcmd1bWVudCBjb25zdHJ1Y3RvciwgYWNyb3NzIHR3byBsaW5lcywgaXMgb2theQot
ICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFz
cyBGb28gewotICAgICAgICAgICAgICAgICBGb28oaW50IGYsCi0gICAgICAgICAgICAgICAgICAg
ICBpbnQgYik7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICcnKQotICAgICAg
ICAjIG5vbi1jb25zdHJ1Y3RvciAoYnV0IHNpbWlsYXIgbmFtZSksIGlzIG9rYXkKLSAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsK
LSAgICAgICAgICAgICAgICAgYUZvbyhpbnQgZik7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAg
ICAgICAgICAgICcnKQotICAgICAgICAjIGNvbnN0cnVjdG9yIHdpdGggdm9pZCBhcmd1bWVudCBp
cyBva2F5Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAg
ICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAgIEZvbyh2b2lkKTsKLSAgICAgICAgICAg
ICAgIH07JycnLAotICAgICAgICAgICAgJycpCi0gICAgICAgICMgc2luZ2xlIGFyZ3VtZW50IG1l
dGhvZCBpcyBva2F5Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAg
ICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAgIEJhcihpbnQgYik7Ci0gICAg
ICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICcnKQotICAgICAgICAjIGNvbW1lbnRzIHNo
b3VsZCBiZSBpZ25vcmVkCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAg
ICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAvLyBGb28oaW50IGYpOwot
ICAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgIyBzaW5nbGUg
YXJndW1lbnQgZnVuY3Rpb24gZm9sbG93aW5nIGNsYXNzIGRlZmluaXRpb24gaXMgb2theQotICAg
ICAgICAjIChva2F5LCBpdCdzIG5vdCBhY3R1YWxseSB2YWxpZCwgYnV0IHdlIGRvbid0IHdhbnQg
YSBmYWxzZSBwb3NpdGl2ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAot
ICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgRm9vKGludCBmLCBp
bnQgYik7Ci0gICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgRm9vKGludCBmKTsnJycs
Ci0gICAgICAgICAgICAnJykKLSAgICAgICAgIyBzaW5nbGUgYXJndW1lbnQgZnVuY3Rpb24gaXMg
b2theQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAn
JydzdGF0aWMgRm9vKGludCBmKTsnJycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgIyBzaW5n
bGUgYXJndW1lbnQgY29weSBjb25zdHJ1Y3RvciBpcyBva2F5LgotICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28gewotICAgICAgICAg
ICAgICAgICBGb28oY29uc3QgRm9vJik7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAg
ICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAg
ICAnJydjbGFzcyBGb28gewotICAgICAgICAgICAgICAgICBGb28oRm9vJik7Ci0gICAgICAgICAg
ICAgICB9OycnJywKLSAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRlc3Rfc2xhc2hfc3Rhcl9j
b21tZW50X29uX3NpbmdsZV9saW5lKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnQoCi0gICAgICAgICAgICAnJycvKiBzdGF0aWMgKi8gRm9vKGludCBmKTsnJycsCi0g
ICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAg
ICAgICAgICAgJycnLyovIHN0YXRpYyAqLyAgRm9vKGludCBmKTsnJycsCi0gICAgICAgICAgICAn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycn
LyovIHN0YXRpYyBGb28oaW50IGYpOycnJywKLSAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCBl
bmQgb2YgbXVsdGktbGluZSBjb21tZW50JwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L211
bHRpbGluZV9jb21tZW50XSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xp
bnQoCi0gICAgICAgICAgICAnJycgICAgLyovIHN0YXRpYyBGb28oaW50IGYpOycnJywKLSAgICAg
ICAgICAgICdDb3VsZCBub3QgZmluZCBlbmQgb2YgbXVsdGktbGluZSBjb21tZW50JwotICAgICAg
ICAgICAgJyAgW3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50XSBbNV0nKQotICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJycgICAgLyoqLyBzdGF0
aWMgRm9vKGludCBmKTsnJycsCi0gICAgICAgICAgICAnJykKLQotICAgICMgVGVzdCBzdXNwaWNp
b3VzIHVzYWdlIG9mICJpZiIgbGlrZSB0aGlzOgotICAgICMgaWYgKGEgPT0gYikgewotICAgICMg
ICBEb1NvbWV0aGluZygpOwotICAgICMgfSBpZiAoYSA9PSBjKSB7ICAgLy8gU2hvdWxkIGJlICJl
bHNlIGlmIi4KLSAgICAjICAgRG9Tb21ldGhpbmcoKTsgIC8vIFRoaXMgZ2V0cyBjYWxsZWQgdHdp
Y2UgaWYgYSA9PSBiICYmIGEgPT0gYy4KLSAgICAjIH0KLSAgICBkZWYgdGVzdF9zdXNwaWNpb3Vz
X3VzYWdlX29mX2lmKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAg
ICAgJyAgICBpZiAoYSA9PSBiKSB7JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KAotICAgICAgICAgICAgJyAgICB9IGlmIChhID09IGIpIHsnLAotICAgICAgICAg
ICAgJ0RpZCB5b3UgbWVhbiAiZWxzZSBpZiI/IElmIG5vdCwgc3RhcnQgYSBuZXcgbGluZSBmb3Ig
ImlmIi4nCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvYnJhY2VzXSBbNF0nKQotCi0gICAg
IyBUZXN0IHN1c3BpY2lvdXMgdXNhZ2Ugb2YgbWVtc2V0LiBTcGVjaWZpY2FsbHksIGEgMAotICAg
ICMgYXMgdGhlIGZpbmFsIGFyZ3VtZW50IGlzIGFsbW9zdCBjZXJ0YWlubHkgYW4gZXJyb3IuCi0g
ICAgZGVmIHRlc3Rfc3VzcGljaW91c191c2FnZV9vZl9tZW1zZXQoc2VsZik6Ci0gICAgICAgICMg
Tm9ybWFsIHVzZSBpcyBva2F5LgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAg
ICAgJyAgICBtZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSknLAotICAgICAgICAgICAgJycpCi0K
LSAgICAgICAgIyBBIDAgYXMgdGhlIGZpbmFsIGFyZ3VtZW50IGlzIGFsbW9zdCBjZXJ0YWlubHkg
YW4gZXJyb3IuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnICAgIG1l
bXNldChidWYsIHNpemVvZihidWYpLCAwKScsCi0gICAgICAgICAgICAnRGlkIHlvdSBtZWFuICJt
ZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSkiPycKLSAgICAgICAgICAgICcgIFtydW50aW1lL21l
bXNldF0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICcgICAg
bWVtc2V0KGJ1ZiwgeHNpemUgKiB5c2l6ZSwgMCknLAotICAgICAgICAgICAgJ0RpZCB5b3UgbWVh
biAibWVtc2V0KGJ1ZiwgMCwgeHNpemUgKiB5c2l6ZSkiPycKLSAgICAgICAgICAgICcgIFtydW50
aW1lL21lbXNldF0gWzRdJykKLQotICAgICAgICAjIFRoZXJlIGlzIGxlZ2l0aW1hdGUgdGVzdCBj
b2RlIHRoYXQgdXNlcyB0aGlzIGZvcm0uCi0gICAgICAgICMgVGhpcyBpcyBva2F5IHNpbmNlIHRo
ZSBzZWNvbmQgYXJndW1lbnQgaXMgYSBsaXRlcmFsLgotICAgICAgICBzZWxmLmFzc2VydF9saW50
KAotICAgICAgICAgICAgIiAgICBtZW1zZXQoYnVmLCAneScsIDApIiwKLSAgICAgICAgICAgICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJyAgICBtZW1zZXQoYnVm
LCA0LCAwKScsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAg
ICAgICAgICAgICcgICAgbWVtc2V0KGJ1ZiwgLTEsIDApJywKLSAgICAgICAgICAgICcnKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJyAgICBtZW1zZXQoYnVmLCAweEYx
LCAwKScsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAg
ICAgICAgICcgICAgbWVtc2V0KGJ1ZiwgMHhjZCwgMCknLAotICAgICAgICAgICAgJycpCi0KLSAg
ICBkZWYgdGVzdF9jaGVja19kZXByZWNhdGVkKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9s
YW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmNjJywgJyNpbmNsdWRlIDxpb3N0cmVhbT4nLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU3RyZWFtcyBhcmUgaGlnaGx5
IGRpc2NvdXJhZ2VkLicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyAgW3JlYWRhYmlsaXR5L3N0cmVhbXNdIFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1
YWdlX3J1bGVzX2NoZWNrKCdmb29fdGVzdC5jYycsICcjaW5jbHVkZSA8aW9zdHJlYW0+JywgJycp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb29fdW5pdHRlc3Qu
Y2MnLCAnI2luY2x1ZGUgPGlvc3RyZWFtPicsICcnKQotCi0gICAgZGVmIHRlc3RfY2hlY2tfcG9z
aXhfdGhyZWFkaW5nKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzY3RpbWVfcigp
JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cnRva19yKCknLCAnJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnICAgIHN0cnRva19yKGZvbywgYmEsIHIpJywgJycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2JyYW5kKCknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnX3JhbmQoKScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcucmFuZCgpJywg
JycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJz5yYW5kKCknLCAnJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgncmFuZCgpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lk
ZXIgdXNpbmcgcmFuZF9yKC4uLikgaW5zdGVhZCBvZiByYW5kKC4uLiknCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJyBmb3IgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eS4nCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJyAgW3J1bnRpbWUvdGhyZWFkc2FmZV9mbl0gWzJdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnc3RydG9rKCknLAotICAgICAgICAgICAgICAgICAgICAgICAgICdDb25z
aWRlciB1c2luZyBzdHJ0b2tfciguLi4pICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnaW5z
dGVhZCBvZiBzdHJ0b2soLi4uKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnIGZvciBpbXBy
b3ZlZCB0aHJlYWQgc2FmZXR5LicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcnVudGlt
ZS90aHJlYWRzYWZlX2ZuXSBbMl0nKQotCi0gICAgIyBUZXN0IHBvdGVudGlhbCBmb3JtYXQgc3Ry
aW5nIGJ1Z3MgbGlrZSBwcmludGYoZm9vKS4KLSAgICBkZWYgdGVzdF9mb3JtYXRfc3RyaW5ncyhz
ZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgncHJpbnRmKCJmb28iKScsICcnKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdwcmludGYoImZvbzogJXMiLCBmb28pJywgJycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0RvY2lkRm9yUHJpbnRmKGRvY2lkKScsICcnKSAgIyBTaG91
bGQgbm90IHRyaWdnZXIuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAn
cHJpbnRmKGZvbyknLAotICAgICAgICAgICAgJ1BvdGVudGlhbCBmb3JtYXQgc3RyaW5nIGJ1Zy4g
RG8gcHJpbnRmKCIlcyIsIGZvbykgaW5zdGVhZC4nCi0gICAgICAgICAgICAnICBbcnVudGltZS9w
cmludGZdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAncHJp
bnRmKGZvby5jX3N0cigpKScsCi0gICAgICAgICAgICAnUG90ZW50aWFsIGZvcm1hdCBzdHJpbmcg
YnVnLiAnCi0gICAgICAgICAgICAnRG8gcHJpbnRmKCIlcyIsIGZvby5jX3N0cigpKSBpbnN0ZWFk
LicKLSAgICAgICAgICAgICcgIFtydW50aW1lL3ByaW50Zl0gWzRdJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKLSAgICAgICAgICAgICdwcmludGYoZm9vLT5jX3N0cigpKScsCi0gICAgICAg
ICAgICAnUG90ZW50aWFsIGZvcm1hdCBzdHJpbmcgYnVnLiAnCi0gICAgICAgICAgICAnRG8gcHJp
bnRmKCIlcyIsIGZvby0+Y19zdHIoKSkgaW5zdGVhZC4nCi0gICAgICAgICAgICAnICBbcnVudGlt
ZS9wcmludGZdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAn
U3RyaW5nUHJpbnRmKGZvbyknLAotICAgICAgICAgICAgJ1BvdGVudGlhbCBmb3JtYXQgc3RyaW5n
IGJ1Zy4gRG8gU3RyaW5nUHJpbnRmKCIlcyIsIGZvbykgaW5zdGVhZC4nCi0gICAgICAgICAgICAn
JwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmXSBbNF0nKQotCi0gICAgIyBWYXJpYWJs
ZS1sZW5ndGggYXJyYXlzIGFyZSBub3QgcGVybWl0dGVkLgotICAgIGRlZiB0ZXN0X3ZhcmlhYmxl
X2xlbmd0aF9hcnJheV9kZXRlY3Rpb24oc2VsZik6Ci0gICAgICAgIGVycm1zZyA9ICgnRG8gbm90
IHVzZSB2YXJpYWJsZS1sZW5ndGggYXJyYXlzLiAgVXNlIGFuIGFwcHJvcHJpYXRlbHkgbmFtZWQg
JwotICAgICAgICAgICAgICAgICAgIignaycgZm9sbG93ZWQgYnkgQ2FtZWxDYXNlKSBjb21waWxl
LXRpbWUgY29uc3RhbnQgZm9yIHRoZSBzaXplLiIKLSAgICAgICAgICAgICAgICAgICcgIFtydW50
aW1lL2FycmF5c10gWzFdJykKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVthbnlf
b2xkX3ZhcmlhYmxlXTsnLCBlcnJtc2cpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBk
b3VibGVzaXplW3NvbWVfdmFyICogMl07JywgZXJybXNnKQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdpbnQgYVthZnVuY3Rpb24oKV07JywgZXJybXNnKQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdpbnQgYVtmdW5jdGlvbihrTWF4Rm9vQmFycyldOycsIGVycm1zZykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnYm9vbCBhX2xpc3RbaXRlbXNfLT5zaXplKCldOycsIGVycm1zZykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnbmFtZXNwYWNlOjpUeXBlIGJ1ZmZlcltsZW4rMV07Jywg
ZXJybXNnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhWzY0XTsnLCAnJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbMHhGRl07JywgJycpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ2ludCBmaXJzdFsyNTZdLCBzZWNvbmRbMjU2XTsnLCAnJykKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnaW50IGFycmF5X25hbWVba0NvbXBpbGVUaW1lQ29uc3RhbnRdOycs
ICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjaGFyIGJ1Zltzb21lbmFtZXNwYWNlOjpr
QnVmU2l6ZV07JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhcnJheV9uYW1l
W0FMTF9DQVBTXTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQUNsYXNzIGFycmF5
MVtmb286OmJhcjo6QUxMX0NBUFNdOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdp
bnQgYVtrTWF4U3RyTGVuICsgMV07JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lu
dCBhW3NpemVvZihmb28pXTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFb
c2l6ZW9mKCpmb28pXTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbc2l6
ZW9mIGZvb107JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhW3NpemVvZihz
dHJ1Y3QgRm9vKV07JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhWzEyOCAt
IHNpemVvZihjb25zdCBiYXIpXTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50
IGFbKHNpemVvZihmb28pICogNCldOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdp
bnQgYVsoYXJyYXlzaXplKGZpeGVkX3NpemVfYXJyYXkpLzIpIDw8IDFdOycsICcnKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdkZWxldGUgYVtzb21lX3Zhcl07JywgJycpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ3JldHVybiBhW3NvbWVfdmFyXTsnLCAnJykKLQotICAgICMgQnJhY2Ug
dXNhZ2UKLSAgICBkZWYgdGVzdF9icmFjZXMoc2VsZik6Ci0gICAgICAgICMgQnJhY2VzIHNob3Vs
ZG4ndCBiZSBmb2xsb3dlZCBieSBhIDsgdW5sZXNzIHRoZXkncmUgZGVmaW5pbmcgYSBzdHJ1Y3QK
LSAgICAgICAgIyBvciBpbml0aWFsaXppbmcgYW4gYXJyYXkKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnaW50IGFbM10gPSB7IDEsIDIsIDMgfTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgKLSAgICAgICAgICAgICcnJ2NvbnN0IGludCBmb29bXSA9Ci0gICAgICAgICAgICAgICAg
ICAgezEsIDIsIDMgfTsnJycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgIyBGb3Igc2luZ2xl
IGxpbmUsIHVubWF0Y2hlZCAnfScgd2l0aCBhICc7JyBpcyBpZ25vcmVkIChub3QgZW5vdWdoIGNv
bnRleHQpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAg
ICcnJ2ludCBhWzNdID0geyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMyB9OycnJywKLSAgICAgICAgICAgICcnKQotICAgICAg
ICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydpbnQgYVsyXVsz
XSA9IHsgeyAxLCAyIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgMywgNCB9IH07
JycnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKLSAgICAgICAgICAgICcnJ2ludCBhWzJdWzNdID0KLSAgICAgICAgICAgICAgICAgICB7IHsg
MSwgMiB9LAotICAgICAgICAgICAgICAgICAgICAgeyAzLCA0IH0gfTsnJycsCi0gICAgICAgICAg
ICAnJykKLQotICAgICMgQ0hFQ0svRVhQRUNUX1RSVUUvRVhQRUNUX0ZBTFNFIHJlcGxhY2VtZW50
cwotICAgIGRlZiB0ZXN0X2NoZWNrX2NoZWNrKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdDSEVDSyh4ID09IDQyKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVy
IHVzaW5nIENIRUNLX0VRIGluc3RlYWQgb2YgQ0hFQ0soYSA9PSBiKScKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ0NIRUNLKHggIT0gNDIpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnQ29u
c2lkZXIgdXNpbmcgQ0hFQ0tfTkUgaW5zdGVhZCBvZiBDSEVDSyhhICE9IGIpJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnQ0hFQ0soeCA+PSA0MiknLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICdDb25zaWRlciB1c2luZyBDSEVDS19HRSBpbnN0ZWFkIG9mIENIRUNLKGEgPj0gYiknCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdDSEVDSyh4ID4gNDIpJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAnQ29uc2lkZXIgdXNpbmcgQ0hFQ0tfR1QgaW5zdGVhZCBvZiBDSEVDSyhhID4gYiknCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdDSEVDSyh4IDw9IDQyKScsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIENIRUNLX0xFIGluc3RlYWQgb2YgQ0hFQ0soYSA8PSBi
KScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0NIRUNLKHggPCA0MiknLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBDSEVDS19MVCBpbnN0ZWFkIG9mIENIRUNLKGEg
PCBiKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsy
XScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRENIRUNLKHggPT0gNDIpJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRENIRUNLX0VRIGluc3RlYWQgb2Yg
RENIRUNLKGEgPT0gYiknCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5
L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdEQ0hFQ0soeCAhPSA0Mikn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBEQ0hFQ0tfTkUgaW5z
dGVhZCBvZiBEQ0hFQ0soYSAhPSBiKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVh
ZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0RDSEVDSyh4
ID49IDQyKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIERDSEVD
S19HRSBpbnN0ZWFkIG9mIERDSEVDSyhhID49IGIpJwotICAgICAgICAgICAgICAgICAgICAgICAg
ICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
RENIRUNLKHggPiA0MiknLAotICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2lu
ZyBEQ0hFQ0tfR1QgaW5zdGVhZCBvZiBEQ0hFQ0soYSA+IGIpJwotICAgICAgICAgICAgICAgICAg
ICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnRENIRUNLKHggPD0gNDIpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lk
ZXIgdXNpbmcgRENIRUNLX0xFIGluc3RlYWQgb2YgRENIRUNLKGEgPD0gYiknCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdEQ0hFQ0soeCA8IDQyKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
J0NvbnNpZGVyIHVzaW5nIERDSEVDS19MVCBpbnN0ZWFkIG9mIERDSEVDSyhhIDwgYiknCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnRVhQRUNUX1RSVUUoIjQyIiA9PSB4
KScsCi0gICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNUX0VRIGluc3RlYWQgb2YgRVhQ
RUNUX1RSVUUoYSA9PSBiKScKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJd
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdFWFBFQ1RfVFJVRSgi
NDIiICE9IHgpJywKLSAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfTkUgaW5zdGVh
ZCBvZiBFWFBFQ1RfVFJVRShhICE9IGIpJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2No
ZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ0VYUEVD
VF9UUlVFKCs0MiA+PSB4KScsCi0gICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNUX0dF
IGluc3RlYWQgb2YgRVhQRUNUX1RSVUUoYSA+PSBiKScKLSAgICAgICAgICAgICcgIFtyZWFkYWJp
bGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAg
ICdFWFBFQ1RfVFJVRV9NKC00MiA+IHgpJywKLSAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBF
WFBFQ1RfR1RfTSBpbnN0ZWFkIG9mIEVYUEVDVF9UUlVFX00oYSA+IGIpJwotICAgICAgICAgICAg
JyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAot
ICAgICAgICAgICAgJ0VYUEVDVF9UUlVFX00oNDJVIDw9IHgpJywKLSAgICAgICAgICAgICdDb25z
aWRlciB1c2luZyBFWFBFQ1RfTEVfTSBpbnN0ZWFkIG9mIEVYUEVDVF9UUlVFX00oYSA8PSBiKScK
LSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKLSAgICAgICAgICAgICdFWFBFQ1RfVFJVRV9NKDQyTCA8IHgpJywKLSAgICAg
ICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfTFRfTSBpbnN0ZWFkIG9mIEVYUEVDVF9UUlVF
X00oYSA8IGIpJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnRVhQRUNUX0ZBTFNFKHggPT0g
NDIpJywKLSAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfTkUgaW5zdGVhZCBvZiBF
WFBFQ1RfRkFMU0UoYSA9PSBiKScKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10g
WzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdFWFBFQ1RfRkFM
U0UoeCAhPSA0MiknLAotICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEVYUEVDVF9FUSBpbnN0
ZWFkIG9mIEVYUEVDVF9GQUxTRShhICE9IGIpJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5
L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ0VY
UEVDVF9GQUxTRSh4ID49IDQyKScsCi0gICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNU
X0xUIGluc3RlYWQgb2YgRVhQRUNUX0ZBTFNFKGEgPj0gYiknCi0gICAgICAgICAgICAnICBbcmVh
ZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAg
ICAgICAnQVNTRVJUX0ZBTFNFKHggPiA0MiknLAotICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5n
IEFTU0VSVF9MRSBpbnN0ZWFkIG9mIEFTU0VSVF9GQUxTRShhID4gYiknCi0gICAgICAgICAgICAn
ICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0g
ICAgICAgICAgICAnQVNTRVJUX0ZBTFNFKHggPD0gNDIpJywKLSAgICAgICAgICAgICdDb25zaWRl
ciB1c2luZyBBU1NFUlRfR1QgaW5zdGVhZCBvZiBBU1NFUlRfRkFMU0UoYSA8PSBiKScKLSAgICAg
ICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgKLSAgICAgICAgICAgICdBU1NFUlRfRkFMU0VfTSh4IDwgNDIpJywKLSAgICAgICAgICAg
ICdDb25zaWRlciB1c2luZyBBU1NFUlRfR0VfTSBpbnN0ZWFkIG9mIEFTU0VSVF9GQUxTRV9NKGEg
PCBiKScKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKLQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdDSEVDSyhzb21lX2l0ZXJhdG9yID09IG9iai5lbmQoKSknLCAn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRVhQRUNUX1RSVUUoc29tZV9pdGVyYXRvciA9
PSBvYmouZW5kKCkpJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0VYUEVDVF9GQUxT
RShzb21lX2l0ZXJhdG9yID09IG9iai5lbmQoKSknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnQ0hFQ0soc29tZV9wb2ludGVyICE9IE5VTEwpJywgJycpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ0VYUEVDVF9UUlVFKHNvbWVfcG9pbnRlciAhPSBOVUxMKScsICcnKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdFWFBFQ1RfRkFMU0Uoc29tZV9wb2ludGVyICE9IE5VTEwpJywg
JycpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soQ3JlYXRlVGVzdEZpbGUoZGly
LCAoMSA8PCAyMCkpKTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soQ3Jl
YXRlVGVzdEZpbGUoZGlyLCAoMSA+PiAyMCkpKTsnLCAnJykKLQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdDSEVDSyh4PDQyKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydNaXNzaW5n
IHNwYWNlcyBhcm91bmQgPCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3Bh
Y2Uvb3BlcmF0b3JzXSBbM10nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIg
dXNpbmcgQ0hFQ0tfTFQgaW5zdGVhZCBvZiBDSEVDSyhhIDwgYiknCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJ10pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ0NIRUNLKHg+NDIpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lk
ZXIgdXNpbmcgQ0hFQ0tfR1QgaW5zdGVhZCBvZiBDSEVDSyhhID4gYiknCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnICAgIEVYUEVDVF9UUlVFKDQyIDwgeCkgIC8vIFJh
bmRvbSBjb21tZW50LicsCi0gICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNUX0xUIGlu
c3RlYWQgb2YgRVhQRUNUX1RSVUUoYSA8IGIpJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5
L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ0VY
UEVDVF9UUlVFKCA0MiA8IHggKScsCi0gICAgICAgICAgICBbJ0V4dHJhIHNwYWNlIGFmdGVyICgg
aW4gZnVuY3Rpb24gY2FsbCcKLSAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs0
XScsCi0gICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEVYUEVDVF9MVCBpbnN0ZWFkIG9mIEVY
UEVDVF9UUlVFKGEgPCBiKScKLSAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsy
XSddKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ0NIRUNLKCJmb28i
ID09ICJmb28iKScsCi0gICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgQ0hFQ0tfRVEgaW5zdGVh
ZCBvZiBDSEVDSyhhID09IGIpJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBb
Ml0nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0NIRUNLX0VRKCJmb28iLCAiZm9vIikn
LCAnJykKLQotICAgIGRlZiB0ZXN0X2JyYWNlX2F0X2JlZ2luX29mX2xpbmUoc2VsZik6Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3snLAotICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlz
IHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUnCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQotICAgICAgICBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnI2VuZGlmXG4nCi0gICAgICAg
ICAgICAne1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAnJykKLSAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2lmIChjb25kaXRpb24p
IHsnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKLSAgICAgICAgICAgICdpbnQgZm9vKCkgeycsCi0gICAgICAgICAgICAnUGxhY2UgYnJhY2Ug
b24gaXRzIG93biBsaW5lIGZvciBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFt3aGl0ZXNwYWNlL2Jy
YWNlc10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAg
ICAgICAgJ2ludCBmb28oKSBjb25zdCB7JywKLSAgICAgICAgICAgICdQbGFjZSBicmFjZSBvbiBp
dHMgb3duIGxpbmUgZm9yIGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgW3doaXRlc3BhY2UvYnJhY2Vz
XSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAg
ICAnaW50IGZvbygpIGNvbnN0XG4nCi0gICAgICAgICAgICAne1xuJwotICAgICAgICAgICAgJ31c
bicsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAotICAgICAgICAgICAgJ2lmIChjb25kaXRpb24gJiZcbicKLSAgICAgICAgICAgICcgICAgY29u
ZGl0aW9uMiAmJlxuJwotICAgICAgICAgICAgJyAgICBjb25kaXRpb24zKSB7XG4nLAotICAgICAg
ICAgICAgJycpCi0KLSAgICBkZWYgdGVzdF9taXNtYXRjaGluZ19zcGFjZXNfaW5fcGFyZW5zKHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAoZm9vICkgeycsICdNaXNtYXRjaGlu
ZyBzcGFjZXMgaW5zaWRlICgpIGluIGlmJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3
aGl0ZXNwYWNlL3BhcmVuc10gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3dpdGNo
ICggZm9vKSB7JywgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkgaW4gc3dpdGNoJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzVdJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChmb287IGJhOyBiYXIgKSB7JywgJ01pc21hdGNoaW5n
IHNwYWNlcyBpbnNpZGUgKCkgaW4gZm9yJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3
aGl0ZXNwYWNlL3BhcmVuc10gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICg7
IGZvbzsgYmFyKSB7JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoIDsgZm9v
OyBiYXIpIHsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICggOyBmb287IGJh
ciApIHsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChmb287IGJhcjsgKSB7
JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3doaWxlICggIGZvbyAgKSB7JywgJ1No
b3VsZCBoYXZlIHplcm8gb3Igb25lIHNwYWNlcyBpbnNpZGUnCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgJyAoIGFuZCApIGluIHdoaWxlICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCi0KLSAg
ICBkZWYgdGVzdF9zcGFjaW5nX2Zvcl9mbmNhbGwoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ2lmIChmb28pIHsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChm
b287YmFyO2JheikgeycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd3aGlsZSAoZm9v
KSB7JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N3aXRjaCAoZm9vKSB7JywgJycp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ25ldyAoUmVuZGVyQXJlbmEoKSkgUmVuZGVySW5s
aW5lKGRvY3VtZW50KCkpJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvbyggYmFy
KScsICdFeHRyYSBzcGFjZSBhZnRlciAoIGluIGZ1bmN0aW9uIGNhbGwnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNF0nKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdmb29iYXIoIFxcJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2Zv
b2JhciggICAgIFxcJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyggYSArIGIpJywg
J0V4dHJhIHNwYWNlIGFmdGVyICgnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRl
c3BhY2UvcGFyZW5zXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcoKGErYikpJywg
JycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvbyAoZm9vKScsICdFeHRyYSBzcGFjZSBi
ZWZvcmUgKCBpbiBmdW5jdGlvbiBjYWxsJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3
aGl0ZXNwYWNlL3BhcmVuc10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndHlwZWRl
ZiBmb28gKCpmb28pKGZvbyknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndHlwZWRl
ZiBmb28gKCpmb28xMmJhcl8pKGZvbyknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
dHlwZWRlZiBmb28gKEZvbzo6KmJhcikoZm9vKScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdmb28gKEZvbzo6KmJhcikoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRXh0cmEg
c3BhY2UgYmVmb3JlICggaW4gZnVuY3Rpb24gY2FsbCcKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAnICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J3R5cGVkZWYgZm9vIChGb286OipiYXIpKCcsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCcoZm9vKShiYXIpJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0ZvbyAoKmZvbyko
YmFyKScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdGb28gKCpmb28pKEJhciBiYXIs
JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NoYXIgKCpwKVtzaXplb2YoZm9vKV0g
PSAmZm9vJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NoYXIgKCZyZWYpW3NpemVv
Zihmb28pXSA9ICZmb28nLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnY29uc3QgY2hh
cjMyICgqdGFibGVbXSlbNl07JywgJycpCi0KLSAgICBkZWYgdGVzdF9zcGFjaW5nX2JlZm9yZV9i
cmFjZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb28peycsICdNaXNz
aW5nIHNwYWNlIGJlZm9yZSB7JwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNw
YWNlL2JyYWNlc10gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yeycsICdNaXNz
aW5nIHNwYWNlIGJlZm9yZSB7JwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNw
YWNlL2JyYWNlc10gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIHsnLCAnJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRVhQRUNUX0RFQlVHX0RFQVRIKHsnLCAnJykKLQot
ICAgIGRlZiB0ZXN0X3NwYWNpbmdfYXJvdW5kX2Vsc2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ31lbHNlIHsnLCAnTWlzc2luZyBzcGFjZSBiZWZvcmUgZWxzZScKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9icmFjZXNdIFs1XScpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ30gZWxzZXsnLCAnTWlzc2luZyBzcGFjZSBiZWZvcmUgeycKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9icmFjZXNdIFs1XScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ30gZWxzZSB7JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ30gZWxzZSBpZicsICcnKQotCi0gICAgZGVmIHRlc3Rfc3BhY2luZ19mb3JfYmluYXJ5X29w
cyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaWYgKGZvbzw9YmFyKSB7JywgJ01p
c3Npbmcgc3BhY2VzIGFyb3VuZCA8PScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hp
dGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChm
b288YmFyKSB7JywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA8JwotICAgICAgICAgICAgICAgICAg
ICAgICAgICcgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnaWYgKGZvbzxiYXItPmJheikgeycsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPCcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb288YmFyLT5iYXIpIHsnLCAnTWlzc2lu
ZyBzcGFjZXMgYXJvdW5kIDwnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3Bh
Y2Uvb3BlcmF0b3JzXSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd0eXBlZGVmIGhh
c2hfbWFwPEZvbywgQmFyJywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA8JwotICAgICAgICAgICAg
ICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgndHlwZWRlZiBoYXNoX21hcDxGb29vb29UeXBlLCBCYWFhYWFyVHlwZSwn
LCAnJykKLQotICAgIGRlZiB0ZXN0X3NwYWNpbmdfYmVmb3JlX2xhc3Rfc2VtaWNvbG9uKHNlbGYp
OgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjYWxsX2Z1bmN0aW9uKCkgOycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSBsYXN0IHNlbWljb2xvbi4gSWYg
dGhpcyBzaG91bGQgYmUgYW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICdlbXB0eSBzdGF0
ZW1lbnQsIHVzZSB7IH0gaW5zdGVhZC4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3do
aXRlc3BhY2Uvc2VtaWNvbG9uXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd3aGls
ZSAodHJ1ZSkgOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9y
ZSBsYXN0IHNlbWljb2xvbi4gSWYgdGhpcyBzaG91bGQgYmUgYW4gJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICdlbXB0eSBzdGF0ZW1lbnQsIHVzZSB7IH0gaW5zdGVhZC4nCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvc2VtaWNvbG9uXSBbNV0nKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdkZWZhdWx0OjsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdT
ZW1pY29sb24gZGVmaW5pbmcgZW1wdHkgc3RhdGVtZW50LiBVc2UgeyB9IGluc3RlYWQuJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3NlbWljb2xvbl0gWzVdJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgICAgOycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJ0xpbmUgY29udGFpbnMgb25seSBzZW1pY29sb24uIElmIHRoaXMgc2hvdWxkIGJlIGFuIGVt
cHR5ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhdGVtZW50LCB1c2UgeyB9IGluc3Rl
YWQuJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3NlbWljb2xvbl0g
WzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChpbnQgaSA9IDA7IDsnLCAnJykK
LQotICAgICMgU3RhdGljIG9yIGdsb2JhbCBTVEwgc3RyaW5ncy4KLSAgICBkZWYgdGVzdF9zdGF0
aWNfb3JfZ2xvYmFsX3N0bHN0cmluZ3Moc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J3N0cmluZyBmb287JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRm9yIGEgc3RhdGljL2ds
b2JhbCBzdHJpbmcgY29uc3RhbnQsIHVzZSBhIEMgc3R5bGUgJwotICAgICAgICAgICAgICAgICAg
ICAgICAgICdzdHJpbmcgaW5zdGVhZDogImNoYXIgZm9vW10iLicKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAnICBbcnVudGltZS9zdHJpbmddIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3N0cmluZyBrRm9vID0gImhlbGxvIjsgIC8vIEVuZ2xpc2gnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICdGb3IgYSBzdGF0aWMvZ2xvYmFsIHN0cmluZyBjb25zdGFudCwgdXNlIGEgQyBz
dHlsZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZyBpbnN0ZWFkOiAiY2hhciBr
Rm9vW10iLicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcnVudGltZS9zdHJpbmddIFs0
XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0YXRpYyBzdHJpbmcgZm9vOycsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgJ0ZvciBhIHN0YXRpYy9nbG9iYWwgc3RyaW5nIGNvbnN0YW50
LCB1c2UgYSBDIHN0eWxlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nIGluc3Rl
YWQ6ICJzdGF0aWMgY2hhciBmb29bXSIuJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFty
dW50aW1lL3N0cmluZ10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RhdGljIGNv
bnN0IHN0cmluZyBmb287JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRm9yIGEgc3RhdGlj
L2dsb2JhbCBzdHJpbmcgY29uc3RhbnQsIHVzZSBhIEMgc3R5bGUgJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICdzdHJpbmcgaW5zdGVhZDogInN0YXRpYyBjb25zdCBjaGFyIGZvb1tdIi4nCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3J1bnRpbWUvc3RyaW5nXSBbNF0nKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdzdHJpbmcgRm9vOjpiYXI7JywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAnRm9yIGEgc3RhdGljL2dsb2JhbCBzdHJpbmcgY29uc3RhbnQsIHVzZSBhIEMgc3R5
bGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcgaW5zdGVhZDogImNoYXIgRm9v
OjpiYXJbXSIuJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtydW50aW1lL3N0cmluZ10g
WzRdJykKLSAgICAgICAgIyBSYXJlIGNhc2UuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0
cmluZyBmb28oImZvb2JhciIpOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0ZvciBhIHN0
YXRpYy9nbG9iYWwgc3RyaW5nIGNvbnN0YW50LCB1c2UgYSBDIHN0eWxlICcKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAnc3RyaW5nIGluc3RlYWQ6ICJjaGFyIGZvb1tdIi4nCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgJyAgW3J1bnRpbWUvc3RyaW5nXSBbNF0nKQotICAgICAgICAjIFNob3Vs
ZCBub3QgY2F0Y2ggbG9jYWwgb3IgbWVtYmVyIHZhcmlhYmxlcy4KLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnICAgIHN0cmluZyBmb28nLCAnJykKLSAgICAgICAgIyBTaG91bGQgbm90IGNhdGNo
IGZ1bmN0aW9ucy4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RyaW5nIEVtcHR5U3RyaW5n
KCkgeyByZXR1cm4gIiI7IH0nLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RyaW5n
IEVtcHR5U3RyaW5nICgpIHsgcmV0dXJuICIiOyB9JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ3N0cmluZyBWZXJ5TG9uZ05hbWVGdW5jdGlvblNvbWV0aW1lc0VuZHNXaXRoKFxuJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgVmVyeUxvbmdOYW1lVHlwZSB2ZXJ5X2xvbmdf
bmFtZV92YXJpYWJsZSkge30nLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndGVtcGxh
dGU8PlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcgRnVuY3Rpb25UZW1wbGF0
ZVNwZWNpYWxpemF0aW9uPFNvbWVUeXBlPihcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAn
ICAgICAgaW50IHgpIHsgcmV0dXJuICIiOyB9JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3RlbXBsYXRlPD5cbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nIEZ1bmN0
aW9uVGVtcGxhdGVTcGVjaWFsaXphdGlvbjx2ZWN0b3I8QTo6Qj4qID4oXG4nCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgJyAgICAgIGludCB4KSB7IHJldHVybiAiIjsgfScsICcnKQotCi0gICAg
ICAgICMgc2hvdWxkIG5vdCBjYXRjaCBtZXRob2RzIG9mIHRlbXBsYXRlIGNsYXNzZXMuCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmluZyBDbGFzczxUeXBlPjo6TWV0aG9kKCkgY29uc3Rc
bicKLSAgICAgICAgICAgICAgICAgICAgICAgICAne1xuJwotICAgICAgICAgICAgICAgICAgICAg
ICAgICcgIHJldHVybiAiIjtcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJywgJycp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmluZyBDbGFzczxUeXBlPjo6TWV0aG9kKFxu
JwotICAgICAgICAgICAgICAgICAgICAgICAgICcgICBpbnQgYXJnKSBjb25zdFxuJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICd7XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgcmV0
dXJuICIiO1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nLCAnJykKLQotICAgIGRl
ZiB0ZXN0X25vX3NwYWNlc19pbl9mdW5jdGlvbl9jYWxscyhzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnVGVsbFN0b3J5KDEsIDMpOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
JycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1RlbGxTdG9yeSgxLCAzICk7JywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgYmVmb3JlICknCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbMl0nKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdUZWxsU3RvcnkoMSAvKiB3b2xmICovLCAzIC8qIHBpZ3MgKi8pOycsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgnI2VuZGlmXG4gICAgKTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJycpCi0KLSAgICBkZWYgdGVzdF90d29fc3BhY2VzX2JldHdlZW5fY29kZV9hbmRfY29tbWVu
dHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ30gLy8gbmFtZXNwYWNlIGZvbycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJ0F0IGxlYXN0IHR3byBzcGFjZXMgaXMgYmVzdCBi
ZXR3ZWVuIGNvZGUgYW5kIGNvbW1lbnRzJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3
aGl0ZXNwYWNlL2NvbW1lbnRzXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd9Ly8g
bmFtZXNwYWNlIGZvbycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0F0IGxlYXN0IHR3byBz
cGFjZXMgaXMgYmVzdCBiZXR3ZWVuIGNvZGUgYW5kIGNvbW1lbnRzJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2NvbW1lbnRzXSBbMl0nKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdwcmludGYoImZvbyIpOyAvLyBPdXRzaWRlIHF1b3Rlcy4nLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICdBdCBsZWFzdCB0d28gc3BhY2VzIGlzIGJlc3QgYmV0d2VlbiBjb2Rl
IGFuZCBjb21tZW50cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9j
b21tZW50c10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGkgPSAwOyAgLy8g
SGF2aW5nIHR3byBzcGFjZXMgaXMgZmluZS4nLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnaW50IGkgPSAwOyAgIC8vIEhhdmluZyB0aHJlZSBzcGFjZXMgaXMgT0suJywgJycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8vIFRvcCBsZXZlbCBjb21tZW50JywgJycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJyAgICAvLyBMaW5lIHN0YXJ0cyB3aXRoIGZvdXIgc3BhY2VzLics
ICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb28oKTtcbicKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAneyAvLyBBIHNjb3BlIGlzIG9wZW5pbmcuJywgJycpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJyAgICBmb28oKTtcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAg
IHsgLy8gQW4gaW5kZW50ZWQgc2NvcGUgaXMgb3BlbmluZy4nLCAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnaWYgKGZvbykgeyAvLyBub3QgYSBwdXJlIHNjb3BlOyBjb21tZW50IGlzIHRv
byBjbG9zZSEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdBdCBsZWFzdCB0d28gc3BhY2Vz
IGlzIGJlc3QgYmV0d2VlbiBjb2RlIGFuZCBjb21tZW50cycKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAnICBbd2hpdGVzcGFjZS9jb21tZW50c10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgncHJpbnRmKCIvLyBJbiBxdW90ZXMuIiknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgncHJpbnRmKCJcXCIlcyAvLyBJbiBxdW90ZXMuIiknLCAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgncHJpbnRmKCIlcyIsICIvLyBJbiBxdW90ZXMuIiknLCAnJykKLQotICAgIGRl
ZiB0ZXN0X3NwYWNlX2FmdGVyX2NvbW1lbnRfbWFya2VyKHNlbGYpOgotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCcvLycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcvL3gnLCAnU2hv
dWxkIGhhdmUgYSBzcGFjZSBiZXR3ZWVuIC8vIGFuZCBjb21tZW50JwotICAgICAgICAgICAgICAg
ICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2NvbW1lbnRzXSBbNF0nKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCcvLyB4JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8vLS0tLScs
ICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcvLz09PT0nLCAnJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnLy8vLy8vJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8v
Ly8vLyB4JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8vLyB4JywgJycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8vLy94JywgJ1Nob3VsZCBoYXZlIGEgc3BhY2UgYmV0d2Vl
biAvLyBhbmQgY29tbWVudCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFj
ZS9jb21tZW50c10gWzRdJykKLQotICAgIGRlZiB0ZXN0X25ld2xpbmVfYXRfZW9mKHNlbGYpOgot
ICAgICAgICBkZWYgZG9fdGVzdChzZWxmLCBkYXRhLCBpc19taXNzaW5nX2VvZik6Ci0gICAgICAg
ICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAg
ICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmlsZV9kYXRhKCdmb28uY2MnLCAnY2MnLCBkYXRhLnNw
bGl0KCdcbicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9j
b2xsZWN0b3IpCi0gICAgICAgICAgICAjIFRoZSB3YXJuaW5nIGFwcGVhcnMgb25seSBvbmNlLgot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCi0gICAgICAgICAgICAgICAgaW50KGlzX21p
c3NpbmdfZW9mKSwKLSAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpLmNv
dW50KAotICAgICAgICAgICAgICAgICAgICAnQ291bGQgbm90IGZpbmQgYSBuZXdsaW5lIGNoYXJh
Y3RlciBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlLicKLSAgICAgICAgICAgICAgICAgICAgJyAgW3do
aXRlc3BhY2UvZW5kaW5nX25ld2xpbmVdIFs1XScpKQotCi0gICAgICAgIGRvX3Rlc3Qoc2VsZiwg
Jy8vIE5ld2xpbmVcbi8vIGF0IEVPRlxuJywgRmFsc2UpCi0gICAgICAgIGRvX3Rlc3Qoc2VsZiwg
Jy8vIE5vIG5ld2xpbmVcbi8vIGF0IEVPRicsIFRydWUpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlk
X3V0Zjgoc2VsZik6Ci0gICAgICAgIGRlZiBkb190ZXN0KHNlbGYsIHJhd19ieXRlcywgaGFzX2lu
dmFsaWRfdXRmOCk6Ci0gICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3Rv
cihzZWxmLmFzc2VydF8pCi0gICAgICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmlsZV9kYXRhKAot
ICAgICAgICAgICAgICAgICdmb28uY2MnLCAnY2MnLAotICAgICAgICAgICAgICAgIHVuaWNvZGUo
cmF3X2J5dGVzLCAndXRmOCcsICdyZXBsYWNlJykuc3BsaXQoJ1xuJyksCi0gICAgICAgICAgICAg
ICAgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICAgICAgIyBUaGUgd2FybmluZyBhcHBlYXJzIG9u
bHkgb25jZS4KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAotICAgICAgICAgICAgICAg
IGludChoYXNfaW52YWxpZF91dGY4KSwKLSAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3Iu
cmVzdWx0cygpLmNvdW50KAotICAgICAgICAgICAgICAgICAgICAnTGluZSBjb250YWlucyBpbnZh
bGlkIFVURi04JwotICAgICAgICAgICAgICAgICAgICAnIChvciBVbmljb2RlIHJlcGxhY2VtZW50
IGNoYXJhY3RlcikuJwotICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvdXRmOF0g
WzVdJykpCi0KLSAgICAgICAgZG9fdGVzdChzZWxmLCAnSGVsbG8gd29ybGRcbicsIEZhbHNlKQot
ICAgICAgICBkb190ZXN0KHNlbGYsICdceGU5XHg4ZVx4YmRcbicsIEZhbHNlKQotICAgICAgICBk
b190ZXN0KHNlbGYsICdceGU5eFx4OGVceGJkXG4nLCBUcnVlKQotICAgICAgICAjIFRoaXMgaXMg
dGhlIGVuY29kaW5nIG9mIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgaXRzZWxmICh3aGljaAot
ICAgICAgICAjIHlvdSBjYW4gc2VlIGJ5IGV2YWx1YXRpbmcgY29kZWNzLmdldGVuY29kZXIoJ3V0
ZjgnKSh1J1x1ZmZmZCcpKS4KLSAgICAgICAgZG9fdGVzdChzZWxmLCAnXHhlZlx4YmZceGJkXG4n
LCBUcnVlKQotCi0gICAgZGVmIHRlc3RfaXNfYmxhbmtfbGluZShzZWxmKToKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfKGNwcGxpbnQuaXNfYmxhbmtfbGluZSgnJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
XyhjcHBsaW50LmlzX2JsYW5rX2xpbmUoJyAnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcGxp
bnQuaXNfYmxhbmtfbGluZSgnIFx0XHJcbicpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IGNw
cGxpbnQuaXNfYmxhbmtfbGluZSgnaW50IGE7JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
Y3BwbGludC5pc19ibGFua19saW5lKCd7JykpCi0KLSAgICBkZWYgdGVzdF9ibGFua19saW5lc19j
aGVjayhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfYmxhbmtfbGluZXNfY2hlY2soWyd7XG4n
LCAnXG4nLCAnXG4nLCAnfVxuJ10sIDEsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2JsYW5rX2xp
bmVzX2NoZWNrKFsnICBpZiAoZm9vKSB7XG4nLCAnXG4nLCAnICB9XG4nXSwgMSwgMSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRfYmxhbmtfbGluZXNfY2hlY2soCi0gICAgICAgICAgICBbJ1xuJywgJy8v
IHtcbicsICdcbicsICdcbicsICcvLyBDb21tZW50XG4nLCAne1xuJywgJ31cbiddLCAwLCAwKQot
ICAgICAgICBzZWxmLmFzc2VydF9ibGFua19saW5lc19jaGVjayhbJ1xuJywgJ3J1bigieyIpO1xu
JywgJ1xuJ10sIDAsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0X2JsYW5rX2xpbmVzX2NoZWNrKFsn
XG4nLCAnICBpZiAoZm9vKSB7IHJldHVybiAwOyB9XG4nLCAnXG4nXSwgMCwgMCkKLQotICAgIGRl
ZiB0ZXN0X2FsbG93X2JsYW5rX2xpbmVfYmVmb3JlX2Nsb3NpbmdfbmFtZXNwYWNlKHNlbGYpOgot
ICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0g
ICAgICAgIGNwcGxpbnQucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jYycsICdjYycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWyduYW1lc3BhY2UgeycsICcnLCAnfSAgLy8gbmFt
ZXNwYWNlJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVj
dG9yKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygwLCBlcnJvcl9jb2xsZWN0b3IucmVzdWx0
cygpLmNvdW50KAotICAgICAgICAgICAgJ0JsYW5rIGxpbmUgYXQgdGhlIGVuZCBvZiBhIGNvZGUg
YmxvY2suICBJcyB0aGlzIG5lZWRlZD8nCi0gICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9ibGFu
a19saW5lXSBbM10nKSkKLQotICAgIGRlZiB0ZXN0X2FsbG93X2JsYW5rX2xpbmVfYmVmb3JlX2lm
X2Vsc2VfY2hhaW4oc2VsZik6Ci0gICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVj
dG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVfZGF0YSgnZm9v
LmNjJywgJ2NjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2lmIChob2dl
KSB7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsICAjIE5vIHdhcm5p
bmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ30gZWxzZSBpZiAocGl5bykg
eycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCAgIyBObyB3YXJuaW5n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9IGVsc2UgaWYgKHBpeW9waXlv
KSB7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgaG9nZSA9IHRydWU7
JywgICMgTm8gd2FybmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfSBl
bHNlIHsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgICMgV2Fybmlu
ZyBvbiB0aGlzIGxpbmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ30nXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscygxLCBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpLmNvdW50KAot
ICAgICAgICAgICAgJ0JsYW5rIGxpbmUgYXQgdGhlIGVuZCBvZiBhIGNvZGUgYmxvY2suICBJcyB0
aGlzIG5lZWRlZD8nCi0gICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9ibGFua19saW5lXSBbM10n
KSkKLQotICAgIGRlZiB0ZXN0X2Vsc2Vfb25fc2FtZV9saW5lX2FzX2Nsb3NpbmdfYnJhY2VzKHNl
bGYpOgotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2Vy
dF8pCi0gICAgICAgIGNwcGxpbnQucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jYycsICdjYycsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydpZiAoaG9nZSkgeycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnfScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgZWxz
ZSB7JyAgIyBXYXJuaW5nIG9uIHRoaXMgbGluZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ30nXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkuY291bnQoCi0g
ICAgICAgICAgICAnQW4gZWxzZSBzaG91bGQgYXBwZWFyIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhl
IHByZWNlZGluZyB9JwotICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJykp
Ci0KLSAgICBkZWYgdGVzdF9lbHNlX2NsYXVzZV9ub3Rfb25fc2FtZV9saW5lX2FzX2Vsc2Uoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgICBlbHNlIERvU29tZXRoaW5nRWxzZSgp
OycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0Vsc2UgY2xhdXNlIHNob3VsZCBuZXZlciBi
ZSBvbiBzYW1lIGxpbmUgYXMgZWxzZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyh1c2Ug
MiBsaW5lcykgIFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJyAgICBlbHNlIGlmRG9Tb21ldGhpbmdFbHNlKCk7JywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAnRWxzZSBjbGF1c2Ugc2hvdWxkIG5ldmVyIGJlIG9uIHNhbWUgbGluZSBhcyBlbHNl
ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnKHVzZSAyIGxpbmVzKSAgW3doaXRlc3BhY2Uv
bmV3bGluZV0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgIGVsc2UgaWYgKGJs
YWgpIHsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgIHZhcmlhYmxlX2VuZHNf
aW5fZWxzZSA9IHRydWU7JywgJycpCi0KLSAgICBkZWYgdGVzdF9jb21tYShzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnYSA9IGYoMSwyKTsnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICdNaXNzaW5nIHNwYWNlIGFmdGVyICwgIFt3aGl0ZXNwYWNlL2NvbW1hXSBbM10nKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgdG1wPWEsYT1iLGI9dG1wOycsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgWydNaXNzaW5nIHNwYWNlcyBhcm91bmQgPSAgW3doaXRlc3BhY2Uvb3Bl
cmF0b3JzXSBbNF0nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnTWlzc2luZyBzcGFjZSBh
ZnRlciAsICBbd2hpdGVzcGFjZS9jb21tYV0gWzNdJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2YoYSwgLyogbmFtZSAqLyBiKTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
ZihhLCAvKiBuYW1lICovYik7JywgJycpCi0KLSAgICBkZWYgdGVzdF9pbmRlbnQoc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0YXRpYyBpbnQgbm9pbmRlbnQ7JywgJycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgICBpbnQgZm91cl9zcGFjZV9pbmRlbnQ7JywgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyBpbnQgb25lX3NwYWNlX2luZGVudDsnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICdXZWlyZCBudW1iZXIgb2Ygc3BhY2VzIGF0IGxpbmUtc3RhcnQu
ICAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0FyZSB5b3UgdXNpbmcgYSA0LXNwYWNlIGlu
ZGVudD8gIFt3aGl0ZXNwYWNlL2luZGVudF0gWzNdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnICAgaW50IHRocmVlX3NwYWNlX2luZGVudDsnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICdXZWlyZCBudW1iZXIgb2Ygc3BhY2VzIGF0IGxpbmUtc3RhcnQuICAnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJ0FyZSB5b3UgdXNpbmcgYSA0LXNwYWNlIGluZGVudD8gIFt3aGl0ZXNwYWNl
L2luZGVudF0gWzNdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnIGNoYXIqIG9uZV9zcGFj
ZV9pbmRlbnQgPSAicHVibGljOiI7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnV2VpcmQg
bnVtYmVyIG9mIHNwYWNlcyBhdCBsaW5lLXN0YXJ0LiAgJwotICAgICAgICAgICAgICAgICAgICAg
ICAgICdBcmUgeW91IHVzaW5nIGEgNC1zcGFjZSBpbmRlbnQ/ICBbd2hpdGVzcGFjZS9pbmRlbnRd
IFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyBwdWJsaWM6JywgJycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJyAgcHVibGljOicsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCcgICBwdWJsaWM6JywgJycpCi0KLSAgICBkZWYgdGVzdF9sYWJlbChzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgncHVibGljOicsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
J0xhYmVscyBzaG91bGQgYWx3YXlzIGJlIGluZGVudGVkIGF0IGxlYXN0IG9uZSBzcGFjZS4gICcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAnSWYgdGhpcyBpcyBhIG1lbWJlci1pbml0aWFsaXpl
ciBsaXN0IGluIGEgY29uc3RydWN0b3IsICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAndGhl
IGNvbG9uIHNob3VsZCBiZSBvbiB0aGUgbGluZSBhZnRlciB0aGUgZGVmaW5pdGlvbiAnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgJ2hlYWRlci4gIFt3aGl0ZXNwYWNlL2xhYmVsc10gWzRdJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICBwdWJsaWM6JywgJycpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJyAgIHB1YmxpYzonLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
IHB1YmxpYzonLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICBwdWJsaWM6JywgJycp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgIHB1YmxpYzonLCAnJykKLQotICAgIGRlZiB0
ZXN0X25vdF9hbGFiZWwoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ015VmVyeUxv
bmdOYW1lc3BhY2U6Ok15VmVyeUxvbmdDbGFzc05hbWU6OicsICcnKQotCi0gICAgZGVmIHRlc3Rf
dGFiKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdcdGludCBhOycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgJ1RhYiBmb3VuZDsgYmV0dGVyIHRvIHVzZSBzcGFjZXMgIFt3aGl0
ZXNwYWNlL3RhYl0gWzFdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGEgPSA1O1x0
XHQvLyBzZXQgYSB0byA1JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnVGFiIGZvdW5kOyBi
ZXR0ZXIgdG8gdXNlIHNwYWNlcyAgW3doaXRlc3BhY2UvdGFiXSBbMV0nKQotCi0gICAgZGVmIHRl
c3RfcGFyc2VfYXJndW1lbnRzKHNlbGYpOgotICAgICAgICBvbGRfdXNhZ2UgPSBjcHBsaW50Ll9V
U0FHRQotICAgICAgICBvbGRfZXJyb3JfY2F0ZWdvcmllcyA9IGNwcGxpbnQuX0VSUk9SX0NBVEVH
T1JJRVMKLSAgICAgICAgb2xkX291dHB1dF9mb3JtYXQgPSBjcHBsaW50Ll9jcHBsaW50X3N0YXRl
Lm91dHB1dF9mb3JtYXQKLSAgICAgICAgb2xkX3ZlcmJvc2VfbGV2ZWwgPSBjcHBsaW50Ll9jcHBs
aW50X3N0YXRlLnZlcmJvc2VfbGV2ZWwKLSAgICAgICAgb2xkX2ZpbHRlcnMgPSBjcHBsaW50Ll9j
cHBsaW50X3N0YXRlLmZpbHRlcnMKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBEb24ndCBw
cmludCB1c2FnZSBkdXJpbmcgdGhlIHRlc3RzLCBvciBmaWx0ZXIgY2F0ZWdvcmllcwotICAgICAg
ICAgICAgY3BwbGludC5fVVNBR0UgPSAnJwotICAgICAgICAgICAgY3BwbGludC5fRVJST1JfQ0FU
RUdPUklFUyA9ICcnCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQs
IGNwcGxpbnQucGFyc2VfYXJndW1lbnRzLCBbXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFN5c3RlbUV4aXQsIGNwcGxpbnQucGFyc2VfYXJndW1lbnRzLCBbJy0tYmFkb3B0J10pCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBjcHBsaW50LnBhcnNlX2Fy
Z3VtZW50cywgWyctLWhlbHAnXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3Rl
bUV4aXQsIGNwcGxpbnQucGFyc2VfYXJndW1lbnRzLCBbJy0tdj0wJ10pCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cywgWyct
LWZpbHRlcj0nXSkKLSAgICAgICAgICAgICMgVGhpcyBpcyBpbGxlZ2FsIGJlY2F1c2UgYWxsIGZp
bHRlcnMgbXVzdCBzdGFydCB3aXRoICsgb3IgLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoU3lzdGVtRXhpdCwgY3BwbGludC5wYXJzZV9hcmd1bWVudHMsIFsnLS1maWx0ZXI9Zm9vJ10p
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBjcHBsaW50LnBhcnNl
X2FyZ3VtZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnLS1maWx0ZXI9K2Es
YiwtYyddKQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ2Zvby5jYyddLCBjcHBs
aW50LnBhcnNlX2FyZ3VtZW50cyhbJ2Zvby5jYyddKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKG9sZF9vdXRwdXRfZm9ybWF0LCBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLm91dHB1dF9m
b3JtYXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvbGRfdmVyYm9zZV9sZXZlbCwg
Y3BwbGludC5fY3BwbGludF9zdGF0ZS52ZXJib3NlX2xldmVsKQotCi0gICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhbJ2Zvby5jYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3BwbGludC5wYXJzZV9hcmd1bWVudHMoWyctLXY9MScsICdmb28uY2MnXSkpCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscygxLCBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLnZlcmJvc2VfbGV2
ZWwpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ2Zvby5oJ10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cyhbJy0tdj0zJywgJ2Zv
by5oJ10pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMywgY3BwbGludC5fY3BwbGlu
dF9zdGF0ZS52ZXJib3NlX2xldmVsKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydm
b28uY3BwJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50LnBhcnNlX2Fy
Z3VtZW50cyhbJy0tdmVyYm9zZT01JywgJ2Zvby5jcHAnXSkpCi0gICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyg1LCBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLnZlcmJvc2VfbGV2ZWwpCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3BwbGludC5wYXJzZV9hcmd1bWVudHMsIFsnLS12PWYnLCAnZm9vLmNjJ10p
Ci0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsnZm9vLmNjJ10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cyhbJy0tb3V0cHV0PWVt
YWNzJywgJ2Zvby5jYyddKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdlbWFjcycs
IGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUub3V0cHV0X2Zvcm1hdCkKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKFsnZm9vLmgnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNw
cGxpbnQucGFyc2VfYXJndW1lbnRzKFsnLS1vdXRwdXQ9dnM3JywgJ2Zvby5oJ10pKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3ZzNycsIGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUub3V0
cHV0X2Zvcm1hdCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cywgWyct
LW91dHB1dD1ibGFoJywgJ2Zvby5jYyddKQotCi0gICAgICAgICAgICBmaWx0ID0gJy0sK3doaXRl
c3BhY2UsLXdoaXRlc3BhY2UvaW5kZW50JwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
Wydmb28uaCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5wYXJzZV9h
cmd1bWVudHMoWyctLWZpbHRlcj0nK2ZpbHQsICdmb28uaCddKSkKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKFsnLScsICcrd2hpdGVzcGFjZScsICctd2hpdGVzcGFjZS9pbmRlbnQnXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUuZmls
dGVycykKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydmb28uY2MnLCAnZm9vLmgn
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcGxpbnQucGFyc2VfYXJndW1lbnRz
KFsnZm9vLmNjJywgJ2Zvby5oJ10pKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY3Bw
bGludC5fVVNBR0UgPSBvbGRfdXNhZ2UKLSAgICAgICAgICAgIGNwcGxpbnQuX0VSUk9SX0NBVEVH
T1JJRVMgPSBvbGRfZXJyb3JfY2F0ZWdvcmllcwotICAgICAgICAgICAgY3BwbGludC5fY3BwbGlu
dF9zdGF0ZS5vdXRwdXRfZm9ybWF0ID0gb2xkX291dHB1dF9mb3JtYXQKLSAgICAgICAgICAgIGNw
cGxpbnQuX2NwcGxpbnRfc3RhdGUudmVyYm9zZV9sZXZlbCA9IG9sZF92ZXJib3NlX2xldmVsCi0g
ICAgICAgICAgICBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLmZpbHRlcnMgPSBvbGRfZmlsdGVycwot
Ci0gICAgZGVmIHRlc3RfZmlsdGVyKHNlbGYpOgotICAgICAgICBvbGRfZmlsdGVycyA9IGNwcGxp
bnQuX2NwcGxpbnRfc3RhdGUuZmlsdGVycwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjcHBs
aW50Ll9jcHBsaW50X3N0YXRlLnNldF9maWx0ZXJzKCctLCt3aGl0ZXNwYWNlLC13aGl0ZXNwYWNl
L2luZGVudCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgICAg
ICcvLyBIZWxsbyB0aGVyZSAnLAotICAgICAgICAgICAgICAgICdMaW5lIGVuZHMgaW4gd2hpdGVz
cGFjZS4gIENvbnNpZGVyIGRlbGV0aW5nIHRoZXNlIGV4dHJhIHNwYWNlcy4nCi0gICAgICAgICAg
ICAgICAgJyAgW3doaXRlc3BhY2UvZW5kX29mX2xpbmVdIFs0XScpCi0gICAgICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdpbnQgYSA9IChpbnQpMS4wOycsICcnKQotICAgICAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnIHdlaXJkIG9wZW5pbmcgc3BhY2UnLCAnJykKLSAgICAgICAgZmluYWxseToK
LSAgICAgICAgICAgIGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUuZmlsdGVycyA9IG9sZF9maWx0ZXJz
Ci0KLSAgICBkZWYgdGVzdF9kZWZhdWx0X2ZpbHRlcihzZWxmKToKLSAgICAgICAgZGVmYXVsdF9m
aWx0ZXJzID0gY3BwbGludC5fREVGQVVMVF9GSUxURVJTCi0gICAgICAgIG9sZF9maWx0ZXJzID0g
Y3BwbGludC5fY3BwbGludF9zdGF0ZS5maWx0ZXJzCi0gICAgICAgIGNwcGxpbnQuX0RFRkFVTFRf
RklMVEVSUyA9IFsgJy13aGl0ZXNwYWNlJyBdCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMg
UmVzZXQgZmlsdGVycwotICAgICAgICAgICAgY3BwbGludC5fY3BwbGludF9zdGF0ZS5zZXRfZmls
dGVycygnJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8vIEhlbGxvIHRoZXJlICcs
ICcnKQotICAgICAgICAgICAgY3BwbGludC5fY3BwbGludF9zdGF0ZS5zZXRfZmlsdGVycygnK3do
aXRlc3BhY2UvZW5kX29mX2xpbmUnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAg
ICAgICAgICAgICAgICAnLy8gSGVsbG8gdGhlcmUgJywKLSAgICAgICAgICAgICAgICAnTGluZSBl
bmRzIGluIHdoaXRlc3BhY2UuICBDb25zaWRlciBkZWxldGluZyB0aGVzZSBleHRyYSBzcGFjZXMu
JwotICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2VuZF9vZl9saW5lXSBbNF0nKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnIHdlaXJkIG9wZW5pbmcgc3BhY2UnLCAnJykKLSAg
ICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUuZmlsdGVy
cyA9IG9sZF9maWx0ZXJzCi0gICAgICAgICAgICBjcHBsaW50Ll9ERUZBVUxUX0ZJTFRFUlMgPSBk
ZWZhdWx0X2ZpbHRlcnMKLQotICAgIGRlZiB0ZXN0X3VubmFtZWRfbmFtZXNwYWNlc19pbl9oZWFk
ZXJzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygKLSAg
ICAgICAgICAgICdmb28uaCcsICduYW1lc3BhY2UgeycsCi0gICAgICAgICAgICAnRG8gbm90IHVz
ZSB1bm5hbWVkIG5hbWVzcGFjZXMgaW4gaGVhZGVyIGZpbGVzLiAgU2VlJwotICAgICAgICAgICAg
JyBodHRwOi8vZ29vZ2xlLXN0eWxlZ3VpZGUuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcGd1
aWRlLnhtbCNOYW1lc3BhY2VzJwotICAgICAgICAgICAgJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4g
IFtidWlsZC9uYW1lc3BhY2VzXSBbNF0nKQotICAgICAgICAjIG5hbWVzcGFjZSByZWdpc3RyYXRp
b24gbWFjcm9zIGFyZSBPSy4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hl
Y2soJ2Zvby5oJywgJ25hbWVzcGFjZSB7ICBcXCcsICcnKQotICAgICAgICAjIG5hbWVkIG5hbWVz
cGFjZXMgYXJlIE9LLgotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygn
Zm9vLmgnLCAnbmFtZXNwYWNlIGZvbyB7JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1
YWdlX3J1bGVzX2NoZWNrKCdmb28uaCcsICduYW1lc3BhY2UgZm9vbmFtZXNwYWNlIHsnLCAnJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5jYycsICduYW1l
c3BhY2UgeycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygn
Zm9vLmNjJywgJ25hbWVzcGFjZSBmb28geycsICcnKQotCi0gICAgZGVmIHRlc3RfYnVpbGRfY2xh
c3Moc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IHRoZSBsaW50ZXIgY2FuIHBhcnNlIHRvIHRo
ZSBlbmQgb2YgY2xhc3MgZGVmaW5pdGlvbnMsCi0gICAgICAgICMgYW5kIHRoYXQgaXQgd2lsbCBy
ZXBvcnQgd2hlbiBpdCBjYW4ndC4KLSAgICAgICAgIyBVc2UgbXVsdGktbGluZSBsaW50ZXIgYmVj
YXVzZSBpdCBwZXJmb3JtcyB0aGUgQ2xhc3NTdGF0ZSBjaGVjay4KLSAgICAgICAgc2VsZi5hc3Nl
cnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2NsYXNzIEZvbyB7JywKLSAgICAgICAg
ICAgICdGYWlsZWQgdG8gZmluZCBjb21wbGV0ZSBkZWNsYXJhdGlvbiBvZiBjbGFzcyBGb28nCi0g
ICAgICAgICAgICAnICBbYnVpbGQvY2xhc3NdIFs1XScpCi0gICAgICAgICMgRG9uJ3Qgd2FybiBv
biBmb3J3YXJkIGRlY2xhcmF0aW9ucyBvZiB2YXJpb3VzIHR5cGVzLgotICAgICAgICBzZWxmLmFz
c2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnY2xhc3MgRm9vOycsCi0gICAgICAg
ICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAg
ICAgJycnc3RydWN0IEZvbyoKLSAgICAgICAgICAgICAgICAgZm9vID0gTmV3Rm9vKCk7JycnLAot
ICAgICAgICAgICAgJycpCi0gICAgICAgICMgSGVyZSBpcyBhbiBleGFtcGxlIHdoZXJlIHRoZSBs
aW50ZXIgZ2V0cyBjb25mdXNlZCwgZXZlbiB0aG91Z2gKLSAgICAgICAgIyB0aGUgY29kZSBkb2Vz
bid0IHZpb2xhdGUgdGhlIHN0eWxlIGd1aWRlLgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28KLSAgICAgICAgICAgICNpZmRlZiBE
RVJJVkVfRlJPTV9HT08KLSAgICAgICAgICAgICAgOiBwdWJsaWMgR29vIHsKLSAgICAgICAgICAg
ICNlbHNlCi0gICAgICAgICAgICAgIDogcHVibGljIEhvbyB7Ci0gICAgICAgICAgICAjZW5kaWYK
LSAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnRmFpbGVkIHRvIGZpbmQgY29tcGxl
dGUgZGVjbGFyYXRpb24gb2YgY2xhc3MgRm9vJwotICAgICAgICAgICAgJyAgW2J1aWxkL2NsYXNz
XSBbNV0nKQotCi0gICAgZGVmIHRlc3RfYnVpbGRfZW5kX2NvbW1lbnQoc2VsZik6Ci0gICAgICAg
ICMgVGhlIGNyb3NzdG9vbCBjb21waWxlciB3ZSBjdXJyZW50bHkgdXNlIHdpbGwgZmFpbCB0byBj
b21waWxlIHRoZQotICAgICAgICAjIGNvZGUgaW4gdGhpcyB0ZXN0LCBzbyB3ZSBtaWdodCBjb25z
aWRlciByZW1vdmluZyB0aGUgbGludCBjaGVjay4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
I2VuZGlmIE5vdCBhIGNvbW1lbnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdVbmNvbW1l
bnRlZCB0ZXh0IGFmdGVyICNlbmRpZiBpcyBub24tc3RhbmRhcmQuJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICcgIFVzZSBhIGNvbW1lbnQuJwotICAgICAgICAgICAgICAgICAgICAgICAgICcg
IFtidWlsZC9lbmRpZl9jb21tZW50XSBbNV0nKQotCi0gICAgZGVmIHRlc3RfYnVpbGRfZm9yd2Fy
ZF9kZWNsKHNlbGYpOgotICAgICAgICAjIFRoZSBjcm9zc3Rvb2wgY29tcGlsZXIgd2UgY3VycmVu
dGx5IHVzZSB3aWxsIGZhaWwgdG8gY29tcGlsZSB0aGUKLSAgICAgICAgIyBjb2RlIGluIHRoaXMg
dGVzdCwgc28gd2UgbWlnaHQgY29uc2lkZXIgcmVtb3ZpbmcgdGhlIGxpbnQgY2hlY2suCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NsYXNzIEZvbzo6R29vOycsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgJ0lubmVyLXN0eWxlIGZvcndhcmQgZGVjbGFyYXRpb25zIGFyZSBpbnZhbGlkLicK
LSAgICAgICAgICAgICAgICAgICAgICAgICAnICBSZW1vdmUgdGhpcyBsaW5lLicKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAnICBbYnVpbGQvZm9yd2FyZF9kZWNsXSBbNV0nKQotCi0gICAgZGVm
IHRlc3RfYnVpbGRfaGVhZGVyX2d1YXJkKHNlbGYpOgotICAgICAgICBmaWxlX3BhdGggPSAnbXlk
aXIvZm9vLmgnCi0KLSAgICAgICAgIyBXZSBjYW4ndCByZWx5IG9uIG91ciBpbnRlcm5hbCBzdHVm
ZiB0byBnZXQgYSBzYW5lIHBhdGggb24gdGhlIG9wZW4gc291cmNlCi0gICAgICAgICMgc2lkZSBv
ZiB0aGluZ3MsIHNvIGp1c3QgcGFyc2Ugb3V0IHRoZSBzdWdnZXN0ZWQgaGVhZGVyIGd1YXJkLiBU
aGlzCi0gICAgICAgICMgZG9lc24ndCBhbGxvdyB1cyB0byB0ZXN0IHRoZSBzdWdnZXN0ZWQgaGVh
ZGVyIGd1YXJkLCBidXQgaXQgZG9lcyBsZXQgdXMKLSAgICAgICAgIyB0ZXN0IGFsbCB0aGUgb3Ro
ZXIgaGVhZGVyIHRlc3RzLgotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3Rv
cihzZWxmLmFzc2VydF8pCi0gICAgICAgIGNwcGxpbnQucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9w
YXRoLCAnaCcsIFtdLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGV4cGVjdGVkX2d1YXJkID0g
JycKLSAgICAgICAgbWF0Y2hlciA9IHJlLmNvbXBpbGUoCi0gICAgICAgICAgICAnTm8gXCNpZm5k
ZWYgaGVhZGVyIGd1YXJkIGZvdW5kXCwgc3VnZ2VzdGVkIENQUCB2YXJpYWJsZSBpc1w6IChbQS1a
X10rKSAnKQotICAgICAgICBmb3IgZXJyb3IgaW4gZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0
KCk6Ci0gICAgICAgICAgICBtYXRjaGVzID0gbWF0Y2hlci5tYXRjaChlcnJvcikKLSAgICAgICAg
ICAgIGlmIG1hdGNoZXM6Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfZ3VhcmQgPSBtYXRjaGVz
Lmdyb3VwKDEpCi0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAjIE1ha2Ugc3VyZSB3
ZSBleHRyYWN0ZWQgc29tZXRoaW5nIGZvciBvdXIgaGVhZGVyIGd1YXJkLgotICAgICAgICBzZWxm
LmFzc2VydE5vdEVxdWFsKGV4cGVjdGVkX2d1YXJkLCAnJykKLQotICAgICAgICAjIFdyb25nIGd1
YXJkCi0gICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0
XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJyNpZm5kZWYgRk9PX0gnLCAnI2RlZmlu
ZSBGT09fSCddLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAot
ICAgICAgICAgICAgMSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgp
LmNvdW50KAotICAgICAgICAgICAgICAgICcjaWZuZGVmIGhlYWRlciBndWFyZCBoYXMgd3Jvbmcg
c3R5bGUsIHBsZWFzZSB1c2U6ICVzJwotICAgICAgICAgICAgICAgICcgIFtidWlsZC9oZWFkZXJf
Z3VhcmRdIFs1XScgJSBleHBlY3RlZF9ndWFyZCksCi0gICAgICAgICAgICBlcnJvcl9jb2xsZWN0
b3IucmVzdWx0X2xpc3QoKSkKLQotICAgICAgICAjIE5vIGRlZmluZQotICAgICAgICBlcnJvcl9j
b2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGNwcGxpbnQu
cHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAnaCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWycjaWZuZGVmICVzJyAlIGV4cGVjdGVkX2d1YXJkXSwgZXJyb3JfY29sbGVj
dG9yKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKLSAgICAgICAgICAgIDEsCi0gICAgICAg
ICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKS5jb3VudCgKLSAgICAgICAgICAgICAg
ICAnTm8gI2lmbmRlZiBoZWFkZXIgZ3VhcmQgZm91bmQsIHN1Z2dlc3RlZCBDUFAgdmFyaWFibGUg
aXM6ICVzJwotICAgICAgICAgICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3VhcmRdIFs1XScgJSBl
eHBlY3RlZF9ndWFyZCksCi0gICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3Qo
KSkKLQotICAgICAgICAjIE1pc21hdGNoZWQgZGVmaW5lCi0gICAgICAgIGVycm9yX2NvbGxlY3Rv
ciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNz
X2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbJyNpZm5kZWYgJXMnICUgZXhwZWN0ZWRfZ3VhcmQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcjZGVmaW5lIEZPT19IJ10sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygK
LSAgICAgICAgICAgIDEsCi0gICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3Qo
KS5jb3VudCgKLSAgICAgICAgICAgICAgICAnTm8gI2lmbmRlZiBoZWFkZXIgZ3VhcmQgZm91bmQs
IHN1Z2dlc3RlZCBDUFAgdmFyaWFibGUgaXM6ICVzJwotICAgICAgICAgICAgICAgICcgIFtidWls
ZC9oZWFkZXJfZ3VhcmRdIFs1XScgJSBleHBlY3RlZF9ndWFyZCksCi0gICAgICAgICAgICBlcnJv
cl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKSkKLQotICAgICAgICAjIE5vIGVuZGlmCi0gICAgICAg
IGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAg
Y3BwbGludC5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbJyNpZm5kZWYgJXMnICUgZXhwZWN0ZWRfZ3VhcmQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZGVmaW5lICVzJyAlIGV4cGVjdGVkX2d1
YXJkXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3Ip
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAotICAgICAgICAgICAgMSwKLSAgICAgICAgICAg
IGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpLmNvdW50KAotICAgICAgICAgICAgICAgICcj
ZW5kaWYgbGluZSBzaG91bGQgYmUgIiNlbmRpZiAgLy8gJXMiJwotICAgICAgICAgICAgICAgICcg
IFtidWlsZC9oZWFkZXJfZ3VhcmRdIFs1XScgJSBleHBlY3RlZF9ndWFyZCksCi0gICAgICAgICAg
ICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKSkKLQotICAgICAgICAjIENvbW1lbnRsZXNz
IGVuZGlmCi0gICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNz
ZXJ0XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJyNpZm5kZWYgJXMnICUgZXhwZWN0
ZWRfZ3VhcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZGVmaW5lICVz
JyAlIGV4cGVjdGVkX2d1YXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
I2VuZGlmJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVj
dG9yKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKLSAgICAgICAgICAgIDEsCi0gICAgICAg
ICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKS5jb3VudCgKLSAgICAgICAgICAgICAg
ICAnI2VuZGlmIGxpbmUgc2hvdWxkIGJlICIjZW5kaWYgIC8vICVzIicKLSAgICAgICAgICAgICAg
ICAnICBbYnVpbGQvaGVhZGVyX2d1YXJkXSBbNV0nICUgZXhwZWN0ZWRfZ3VhcmQpLAotICAgICAg
ICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkpCi0KLSAgICAgICAgIyBDb21tZW50
bGVzcyBlbmRpZiBmb3Igb2xkLXN0eWxlIGd1YXJkCi0gICAgICAgIGVycm9yX2NvbGxlY3RvciA9
IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNzX2Zp
bGVfZGF0YShmaWxlX3BhdGgsICdoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbJyNpZm5kZWYgJXNfJyAlIGV4cGVjdGVkX2d1YXJkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnI2RlZmluZSAlc18nICUgZXhwZWN0ZWRfZ3VhcmQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICcjZW5kaWYnXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KAotICAgICAgICAgICAgMSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlz
dCgpLmNvdW50KAotICAgICAgICAgICAgICAgICcjZW5kaWYgbGluZSBzaG91bGQgYmUgIiNlbmRp
ZiAgLy8gJXMiJwotICAgICAgICAgICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3VhcmRdIFs1XScg
JSBleHBlY3RlZF9ndWFyZCksCi0gICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xp
c3QoKSkKLQotICAgICAgICAjIE5vIGhlYWRlciBndWFyZCBlcnJvcnMKLSAgICAgICAgZXJyb3Jf
Y29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBjcHBsaW50
LnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsnI2lmbmRlZiAlcycgJSBleHBlY3RlZF9ndWFyZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJyNkZWZpbmUgJXMnICUgZXhwZWN0ZWRfZ3VhcmQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZW5kaWYgIC8vICVzJyAlIGV4cGVj
dGVkX2d1YXJkXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xs
ZWN0b3IpCi0gICAgICAgIGZvciBsaW5lIGluIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgp
OgotICAgICAgICAgICAgaWYgbGluZS5maW5kKCdidWlsZC9oZWFkZXJfZ3VhcmQnKSAhPSAtMToK
LSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZXJyb3I6ICVzJyAlIGxpbmUp
Ci0KLSAgICAgICAgIyBObyBoZWFkZXIgZ3VhcmQgZXJyb3JzIGZvciBvbGQtc3R5bGUgZ3VhcmQK
LSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQot
ICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiAlc18nICUgZXhwZWN0ZWRfZ3Vh
cmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZGVmaW5lICVzXycgJSBl
eHBlY3RlZF9ndWFyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNlbmRp
ZiAgLy8gJXNfJyAlIGV4cGVjdGVkX2d1YXJkXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGZvciBsaW5lIGluIGVycm9yX2NvbGxl
Y3Rvci5yZXN1bHRfbGlzdCgpOgotICAgICAgICAgICAgaWYgbGluZS5maW5kKCdidWlsZC9oZWFk
ZXJfZ3VhcmQnKSAhPSAtMToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQg
ZXJyb3I6ICVzJyAlIGxpbmUpCi0KLSAgICAgICAgb2xkX3ZlcmJvc2VfbGV2ZWwgPSBjcHBsaW50
Ll9jcHBsaW50X3N0YXRlLnZlcmJvc2VfbGV2ZWwKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
Y3BwbGludC5fY3BwbGludF9zdGF0ZS52ZXJib3NlX2xldmVsID0gMAotICAgICAgICAgICAgIyBX
YXJuIG9uIG9sZC1zdHlsZSBndWFyZCBpZiB2ZXJib3NpdHkgaXMgMC4KLSAgICAgICAgICAgIGVy
cm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgICAg
IGNwcGxpbnQucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAnaCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiAlc18nICUgZXhwZWN0ZWRfZ3VhcmQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2RlZmluZSAlc18nICUg
ZXhwZWN0ZWRfZ3VhcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
I2VuZGlmICAvLyAlc18nICUgZXhwZWN0ZWRfZ3VhcmRdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygKLSAgICAgICAgICAgICAgICAxLAotICAgICAgICAgICAgICAgIGVycm9yX2NvbGxl
Y3Rvci5yZXN1bHRfbGlzdCgpLmNvdW50KAotICAgICAgICAgICAgICAgICAgICAnI2lmbmRlZiBo
ZWFkZXIgZ3VhcmQgaGFzIHdyb25nIHN0eWxlLCBwbGVhc2UgdXNlOiAlcycKLSAgICAgICAgICAg
ICAgICAgICAgJyAgW2J1aWxkL2hlYWRlcl9ndWFyZF0gWzBdJyAlIGV4cGVjdGVkX2d1YXJkKSwK
LSAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKSkKLSAgICAgICAg
ZmluYWxseToKLSAgICAgICAgICAgIGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUudmVyYm9zZV9sZXZl
bCA9IG9sZF92ZXJib3NlX2xldmVsCi0KLSAgICAgICAgIyBDb21wbGV0ZWx5IGluY29ycmVjdCBo
ZWFkZXIgZ3VhcmQKLSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2Vs
Zi5hc3NlcnRfKQotICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwg
J2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiBGT08nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2RlZmluZSBGT08nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2VuZGlmICAvLyBGT08nXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKAotICAgICAgICAgICAgMSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rv
ci5yZXN1bHRfbGlzdCgpLmNvdW50KAotICAgICAgICAgICAgICAgICcjaWZuZGVmIGhlYWRlciBn
dWFyZCBoYXMgd3Jvbmcgc3R5bGUsIHBsZWFzZSB1c2U6ICVzJwotICAgICAgICAgICAgICAgICcg
IFtidWlsZC9oZWFkZXJfZ3VhcmRdIFs1XScgJSBleHBlY3RlZF9ndWFyZCksCi0gICAgICAgICAg
ICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoCi0gICAgICAgICAgICAxLAotICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9s
aXN0KCkuY291bnQoCi0gICAgICAgICAgICAgICAgJyNlbmRpZiBsaW5lIHNob3VsZCBiZSAiI2Vu
ZGlmICAvLyAlcyInCi0gICAgICAgICAgICAgICAgJyAgW2J1aWxkL2hlYWRlcl9ndWFyZF0gWzVd
JyAlIGV4cGVjdGVkX2d1YXJkKSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRf
bGlzdCgpKQotCi0gICAgZGVmIHRlc3RfYnVpbGRfcHJpbnRmX2Zvcm1hdChzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgIHIncHJpbnRmKCJcJSVkIiwgdmFsdWUp
OycsCi0gICAgICAgICAgICAnJSwgWywgKCwgYW5kIHsgYXJlIHVuZGVmaW5lZCBjaGFyYWN0ZXIg
ZXNjYXBlcy4gIFVuZXNjYXBlIHRoZW0uJwotICAgICAgICAgICAgJyAgW2J1aWxkL3ByaW50Zl9m
b3JtYXRdIFszXScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgIHIn
c25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIlxbJWQiLCB2YWx1ZSk7JywKLSAgICAg
ICAgICAgICclLCBbLCAoLCBhbmQgeyBhcmUgdW5kZWZpbmVkIGNoYXJhY3RlciBlc2NhcGVzLiAg
VW5lc2NhcGUgdGhlbS4nCi0gICAgICAgICAgICAnICBbYnVpbGQvcHJpbnRmX2Zvcm1hdF0gWzNd
JykKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgcidmcHJpbnRmKGZp
bGUsICJcKCVkIiwgdmFsdWUpOycsCi0gICAgICAgICAgICAnJSwgWywgKCwgYW5kIHsgYXJlIHVu
ZGVmaW5lZCBjaGFyYWN0ZXIgZXNjYXBlcy4gIFVuZXNjYXBlIHRoZW0uJwotICAgICAgICAgICAg
JyAgW2J1aWxkL3ByaW50Zl9mb3JtYXRdIFszXScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgKLSAgICAgICAgICAgIHIndnNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJcXFx7
JWQiLCBhcCk7JywKLSAgICAgICAgICAgICclLCBbLCAoLCBhbmQgeyBhcmUgdW5kZWZpbmVkIGNo
YXJhY3RlciBlc2NhcGVzLiAgVW5lc2NhcGUgdGhlbS4nCi0gICAgICAgICAgICAnICBbYnVpbGQv
cHJpbnRmX2Zvcm1hdF0gWzNdJykKLQotICAgICAgICAjIERvbid0IHdhcm4gaWYgZG91YmxlLXNs
YXNoIHByZWNlZGVzIHRoZSBzeW1ib2wKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludChyJ3ByaW50
ZigiXFwlJSVkIiwgdmFsdWUpOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJycpCi0KLSAg
ICBkZWYgdGVzdF9ydW50aW1lX3ByaW50Zl9mb3JtYXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoCi0gICAgICAgICAgICByJ2ZwcmludGYoZmlsZSwgIiVxIiwgdmFsdWUpOycsCi0g
ICAgICAgICAgICAnJXEgaW4gZm9ybWF0IHN0cmluZ3MgaXMgZGVwcmVjYXRlZC4gIFVzZSAlbGwg
aW5zdGVhZC4nCi0gICAgICAgICAgICAnICBbcnVudGltZS9wcmludGZfZm9ybWF0XSBbM10nKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICByJ2FwcmludGYoZmlsZSwg
IlRoZSBudW1iZXIgaXMgJTEycSIsIHZhbHVlKTsnLAotICAgICAgICAgICAgJyVxIGluIGZvcm1h
dCBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxsIGluc3RlYWQuJwotICAgICAgICAgICAg
JyAgW3J1bnRpbWUvcHJpbnRmX2Zvcm1hdF0gWzNdJykKLQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KAotICAgICAgICAgICAgcidwcmludGYoZmlsZSwgIlRoZSBudW1iZXIgaXMiICIlLTEycSIs
IHZhbHVlKTsnLAotICAgICAgICAgICAgJyVxIGluIGZvcm1hdCBzdHJpbmdzIGlzIGRlcHJlY2F0
ZWQuICBVc2UgJWxsIGluc3RlYWQuJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmX2Zv
cm1hdF0gWzNdJykKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgcidw
cmludGYoZmlsZSwgIlRoZSBudW1iZXIgaXMiICIlKzEycSIsIHZhbHVlKTsnLAotICAgICAgICAg
ICAgJyVxIGluIGZvcm1hdCBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxsIGluc3RlYWQu
JwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmX2Zvcm1hdF0gWzNdJykKLQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgcidwcmludGYoZmlsZSwgIlRoZSBudW1i
ZXIgaXMiICIlIDEycSIsIHZhbHVlKTsnLAotICAgICAgICAgICAgJyVxIGluIGZvcm1hdCBzdHJp
bmdzIGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxsIGluc3RlYWQuJwotICAgICAgICAgICAgJyAgW3J1
bnRpbWUvcHJpbnRmX2Zvcm1hdF0gWzNdJykKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAot
ICAgICAgICAgICAgcidzbnByaW50ZihmaWxlLCAiTmV2ZXIgbWl4ICVkIGFuZCAlMSRkIHBhcm1h
ZXRlcnMhIiwgdmFsdWUpOycsCi0gICAgICAgICAgICAnJU4kIGZvcm1hdHMgYXJlIHVuY29udmVu
dGlvbmFsLiAgVHJ5IHJld3JpdGluZyB0byBhdm9pZCB0aGVtLicKLSAgICAgICAgICAgICcgIFty
dW50aW1lL3ByaW50Zl9mb3JtYXRdIFsyXScpCi0KLSAgICBkZWYgYXNzZXJ0X2xpbnRMb2dDb2Rl
T25FcnJvcihzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlKToKLSAgICAgICAgIyBTcGVjaWFs
IGFzc2VydF9saW50IHdoaWNoIGxvZ3MgdGhlIGlucHV0IGNvZGUgb24gZXJyb3IuCi0gICAgICAg
IHJlc3VsdCA9IHNlbGYucGVyZm9ybV9zaW5nbGVfbGluZV9saW50KGNvZGUpCi0gICAgICAgIGlm
IHJlc3VsdCAhPSBleHBlY3RlZF9tZXNzYWdlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdGb3Ig
Y29kZTogIiVzIlxuR290OiAiJXMiXG5FeHBlY3RlZDogIiVzIicKLSAgICAgICAgICAgICAgICAg
ICAgICAlIChjb2RlLCByZXN1bHQsIGV4cGVjdGVkX21lc3NhZ2UpKQotCi0gICAgZGVmIHRlc3Rf
YnVpbGRfc3RvcmFnZV9jbGFzcyhzZWxmKToKLSAgICAgICAgcXVhbGlmaWVycyA9IFtOb25lLCAn
Y29uc3QnLCAndm9sYXRpbGUnXQotICAgICAgICBzaWducyA9IFtOb25lLCAnc2lnbmVkJywgJ3Vu
c2lnbmVkJ10KLSAgICAgICAgdHlwZXMgPSBbJ3ZvaWQnLCAnY2hhcicsICdpbnQnLCAnZmxvYXQn
LCAnZG91YmxlJywKLSAgICAgICAgICAgICAgICAgJ3NjaGFyJywgJ2ludDgnLCAndWludDgnLCAn
aW50MTYnLCAndWludDE2JywKLSAgICAgICAgICAgICAgICAgJ2ludDMyJywgJ3VpbnQzMicsICdp
bnQ2NCcsICd1aW50NjQnXQotICAgICAgICBzdG9yYWdlX2NsYXNzZXMgPSBbJ2F1dG8nLCAnZXh0
ZXJuJywgJ3JlZ2lzdGVyJywgJ3N0YXRpYycsICd0eXBlZGVmJ10KLQotICAgICAgICBidWlsZF9z
dG9yYWdlX2NsYXNzX2Vycm9yX21lc3NhZ2UgPSAoCi0gICAgICAgICAgICAnU3RvcmFnZSBjbGFz
cyAoc3RhdGljLCBleHRlcm4sIHR5cGVkZWYsIGV0Yykgc2hvdWxkIGJlIGZpcnN0LicKLSAgICAg
ICAgICAgICcgIFtidWlsZC9zdG9yYWdlX2NsYXNzXSBbNV0nKQotCi0gICAgICAgICMgU29tZSBl
eHBsaWNpdCBjYXNlcy4gTGVnYWwgaW4gQysrLCBkZXByZWNhdGVkIGluIEM5OS4KLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnY29uc3QgaW50IHN0YXRpYyBmb28gPSA1OycsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgYnVpbGRfc3RvcmFnZV9jbGFzc19lcnJvcl9tZXNzYWdlKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NoYXIgc3RhdGljIGZvbzsnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGJ1aWxkX3N0b3JhZ2VfY2xhc3NfZXJyb3JfbWVzc2FnZSkKLQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdkb3VibGUgY29uc3Qgc3RhdGljIGZvbyA9IDIuMDsnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkX3N0b3JhZ2VfY2xhc3NfZXJyb3JfbWVzc2FnZSkKLQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCd1aW50NjQgdHlwZWRlZiB1bnNpZ25lZF9sb25nX2xv
bmc7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9zdG9yYWdlX2NsYXNzX2Vycm9y
X21lc3NhZ2UpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IHJlZ2lzdGVyIGZvbyA9
IDA7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9zdG9yYWdlX2NsYXNzX2Vycm9y
X21lc3NhZ2UpCi0KLSAgICAgICAgIyBTaW5jZSB0aGVyZSBhcmUgYSB2ZXJ5IGxhcmdlIG51bWJl
ciBvZiBwb3NzaWJpbGl0aWVzLCByYW5kb21seQotICAgICAgICAjIGNvbnN0cnVjdCBkZWNsYXJh
dGlvbnMuCi0gICAgICAgICMgTWFrZSBzdXJlIHRoYXQgdGhlIGRlY2xhcmF0aW9uIGlzIGxvZ2dl
ZCBpZiB0aGVyZSdzIGFuIGVycm9yLgotICAgICAgICAjIFNlZWQgZ2VuZXJhdG9yIHdpdGggYW4g
aW50ZWdlciBmb3IgYWJzb2x1dGUgcmVwcm9kdWNpYmlsaXR5LgotICAgICAgICByYW5kb20uc2Vl
ZCgyNSkKLSAgICAgICAgZm9yIHVudXNlZF9pIGluIHJhbmdlKDEwKToKLSAgICAgICAgICAgICMg
QnVpbGQgdXAgcmFuZG9tIGxpc3Qgb2Ygbm9uLXN0b3JhZ2UtY2xhc3MgZGVjbGFyYXRpb24gc3Bl
Y3MuCi0gICAgICAgICAgICBvdGhlcl9kZWNsX3NwZWNzID0gW3JhbmRvbS5jaG9pY2UocXVhbGlm
aWVycyksIHJhbmRvbS5jaG9pY2Uoc2lnbnMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByYW5kb20uY2hvaWNlKHR5cGVzKV0KLSAgICAgICAgICAgICMgcmVtb3ZlIE5vbmUKLSAg
ICAgICAgICAgIG90aGVyX2RlY2xfc3BlY3MgPSBmaWx0ZXIobGFtYmRhIHg6IHggaXMgbm90IE5v
bmUsIG90aGVyX2RlY2xfc3BlY3MpCi0KLSAgICAgICAgICAgICMgc2h1ZmZsZQotICAgICAgICAg
ICAgcmFuZG9tLnNodWZmbGUob3RoZXJfZGVjbF9zcGVjcykKLQotICAgICAgICAgICAgIyBpbnNl
cnQgc3RvcmFnZSBjbGFzcyBhZnRlciB0aGUgZmlyc3QKLSAgICAgICAgICAgIHN0b3JhZ2VfY2xh
c3MgPSByYW5kb20uY2hvaWNlKHN0b3JhZ2VfY2xhc3NlcykKLSAgICAgICAgICAgIGluc2VydGlv
bl9wb2ludCA9IHJhbmRvbS5yYW5kaW50KDEsIGxlbihvdGhlcl9kZWNsX3NwZWNzKSkKLSAgICAg
ICAgICAgIGRlY2xfc3BlY3MgPSAob3RoZXJfZGVjbF9zcGVjc1swOmluc2VydGlvbl9wb2ludF0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgKyBbc3RvcmFnZV9jbGFzc10KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgKyBvdGhlcl9kZWNsX3NwZWNzW2luc2VydGlvbl9wb2ludDpdKQotCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydF9saW50TG9nQ29kZU9uRXJyb3IoCi0gICAgICAgICAgICAg
ICAgJyAnLmpvaW4oZGVjbF9zcGVjcykgKyAnOycsCi0gICAgICAgICAgICAgICAgYnVpbGRfc3Rv
cmFnZV9jbGFzc19lcnJvcl9tZXNzYWdlKQotCi0gICAgICAgICAgICAjIGJ1dCBubyBlcnJvciBp
ZiBzdG9yYWdlIGNsYXNzIGlzIGZpcnN0Ci0gICAgICAgICAgICBzZWxmLmFzc2VydF9saW50TG9n
Q29kZU9uRXJyb3IoCi0gICAgICAgICAgICAgICAgc3RvcmFnZV9jbGFzcyArICcgJyArICcgJy5q
b2luKG90aGVyX2RlY2xfc3BlY3MpLAotICAgICAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRl
c3RfbGVnYWxfY29weXJpZ2h0KHNlbGYpOgotICAgICAgICBsZWdhbF9jb3B5cmlnaHRfbWVzc2Fn
ZSA9ICgKLSAgICAgICAgICAgICdObyBjb3B5cmlnaHQgbWVzc2FnZSBmb3VuZC4gICcKLSAgICAg
ICAgICAgICdZb3Ugc2hvdWxkIGhhdmUgYSBsaW5lOiAiQ29weXJpZ2h0IFt5ZWFyXSA8Q29weXJp
Z2h0IE93bmVyPiInCi0gICAgICAgICAgICAnICBbbGVnYWwvY29weXJpZ2h0XSBbNV0nKQotCi0g
ICAgICAgIGNvcHlyaWdodF9saW5lID0gJy8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuJwotCi0gICAgICAgIGZpbGVfcGF0aCA9ICdteWRpci9nb29nbGVj
bGllbnQvZm9vLmNjJwotCi0gICAgICAgICMgVGhlcmUgc2hvdWxkIGJlIGEgY29weXJpZ2h0IG1l
c3NhZ2UgaW4gdGhlIGZpcnN0IDEwIGxpbmVzCi0gICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVy
cm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVf
ZGF0YShmaWxlX3BhdGgsICdjYycsIFtdLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKAotICAgICAgICAgICAgMSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rv
ci5yZXN1bHRfbGlzdCgpLmNvdW50KGxlZ2FsX2NvcHlyaWdodF9tZXNzYWdlKSkKLQotICAgICAg
ICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAg
IGNwcGxpbnQucHJvY2Vzc19maWxlX2RhdGEoCi0gICAgICAgICAgICBmaWxlX3BhdGgsICdjYycs
Ci0gICAgICAgICAgICBbJycgZm9yIHVudXNlZF9pIGluIHJhbmdlKDEwKV0gKyBbY29weXJpZ2h0
X2xpbmVdLAotICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygKLSAgICAgICAgICAgIDEsCi0gICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVz
dWx0X2xpc3QoKS5jb3VudChsZWdhbF9jb3B5cmlnaHRfbWVzc2FnZSkpCi0KLSAgICAgICAgIyBU
ZXN0IHRoYXQgd2FybmluZyBpc24ndCBpc3N1ZWQgaWYgQ29weXJpZ2h0IGxpbmUgYXBwZWFycyBl
YXJseSBlbm91Z2guCi0gICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNl
bGYuYXNzZXJ0XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgs
ICdjYycsIFtjb3B5cmlnaHRfbGluZV0sIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgZm9yIG1l
c3NhZ2UgaW4gZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCk6Ci0gICAgICAgICAgICBpZiBt
ZXNzYWdlLmZpbmQoJ2xlZ2FsL2NvcHlyaWdodCcpICE9IC0xOgotICAgICAgICAgICAgICAgIHNl
bGYuZmFpbCgnVW5leHBlY3RlZCBlcnJvcjogJXMnICUgbWVzc2FnZSkKLQotICAgICAgICBlcnJv
cl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGNwcGxp
bnQucHJvY2Vzc19maWxlX2RhdGEoCi0gICAgICAgICAgICBmaWxlX3BhdGgsICdjYycsCi0gICAg
ICAgICAgICBbJycgZm9yIHVudXNlZF9pIGluIHJhbmdlKDkpXSArIFtjb3B5cmlnaHRfbGluZV0s
Ci0gICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGZvciBtZXNzYWdlIGluIGVy
cm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpOgotICAgICAgICAgICAgaWYgbWVzc2FnZS5maW5k
KCdsZWdhbC9jb3B5cmlnaHQnKSAhPSAtMToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1Vu
ZXhwZWN0ZWQgZXJyb3I6ICVzJyAlIG1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX2lu
Y3JlbWVudChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnKmNvdW50Kys7JywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnQ2hhbmdpbmcgcG9pbnRlciBpbnN0ZWFkIG9mIHZhbHVl
IChvciB1bnVzZWQgdmFsdWUgb2YgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdvcGVyYXRv
ciopLiAgW3J1bnRpbWUvaW52YWxpZF9pbmNyZW1lbnRdIFs1XScpCi0KLWNsYXNzIENsZWFuc2Vk
TGluZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgot
ICAgICAgICBsaW5lcyA9IFsnTGluZSAxJywKLSAgICAgICAgICAgICAgICAgJ0xpbmUgMicsCi0g
ICAgICAgICAgICAgICAgICdMaW5lIDMgLy8gQ29tbWVudCB0ZXN0JywKLSAgICAgICAgICAgICAg
ICAgJ0xpbmUgNCAiZm9vIiddCi0KLSAgICAgICAgY2xlYW5fbGluZXMgPSBjcHBsaW50LkNsZWFu
c2VkTGluZXMobGluZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxpbmVzLCBjbGVhbl9s
aW5lcy5yYXdfbGluZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDQsIGNsZWFuX2xpbmVz
Lm51bV9saW5lcygpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsnTGluZSAxJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdMaW5lIDInLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0xpbmUgMyAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xpbmUgNCAiZm9v
IiddLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbl9saW5lcy5saW5lcykKLQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ0xpbmUgMScsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAnTGluZSAyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdMaW5lIDMgJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdMaW5lIDQgIiInXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xlYW5fbGluZXMuZWxpZGVkKQotCi0gICAgZGVmIHRlc3RfaW5pdF9lbXB0eShz
ZWxmKToKLSAgICAgICAgY2xlYW5fbGluZXMgPSBjcHBsaW50LkNsZWFuc2VkTGluZXMoW10pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFtdLCBjbGVhbl9saW5lcy5yYXdfbGluZXMpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIGNsZWFuX2xpbmVzLm51bV9saW5lcygpKQotCi0gICAg
ZGVmIHRlc3RfY29sbGFwc2Vfc3RyaW5ncyhzZWxmKToKLSAgICAgICAgY29sbGFwc2UgPSBjcHBs
aW50LkNsZWFuc2VkTGluZXMuX2NvbGxhcHNlX3N0cmluZ3MKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoJyIiJywgY29sbGFwc2UoJyIiJykpICAgICAgICAgICAgICMgIiIgICAgIChlbXB0eSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyIiIicsIGNvbGxhcHNlKCciIiInKSkgICAgICAg
ICAgICMgIiIiICAgIChiYWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCciIicsIGNvbGxh
cHNlKCcieHl6IicpKSAgICAgICAgICAjICJ4eXoiICAoc3RyaW5nKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscygnIiInLCBjb2xsYXBzZSgnIlxcXCIiJykpICAgICAgICAgIyAiXCIiICAgKHN0
cmluZykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyIiJywgY29sbGFwc2UoJyJcJyInKSkg
ICAgICAgICAgICMgIiciICAgIChzdHJpbmcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCci
XCInLCBjb2xsYXBzZSgnIlwiJykpICAgICAgICAgICAjICJcIiAgICAoYmFkKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygnIiInLCBjb2xsYXBzZSgnIlxcXFwiJykpICAgICAgICAgIyAiXFwi
ICAgKHN0cmluZykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyInLCBjb2xsYXBzZSgnIlxc
XFxcXCInKSkgICAgICAgICMgIlxcXCIgIChiYWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KCciIicsIGNvbGxhcHNlKCciXFxcXFxcXFwiJykpICAgICAjICJcXFxcIiAoc3RyaW5nKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdcJ1wnJywgY29sbGFwc2UoJ1wnXCcnKSkgICAgICAg
ICAjICcnICAgICAoZW1wdHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdcJ1wnJywgY29s
bGFwc2UoJ1wnYVwnJykpICAgICAgICAjICdhJyAgICAoY2hhcikKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoJ1wnXCcnLCBjb2xsYXBzZSgnXCdcXFwnXCcnKSkgICAgICMgJ1wnJyAgIChjaGFy
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnXCcnLCBjb2xsYXBzZSgnXCdcXFwnJykpICAg
ICAgICAgIyAnXCcgICAgKGJhZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJycsIGNvbGxh
cHNlKCdcXDAxMicpKSAgICAgICAgICAgICMgJ1wwMTInIChjaGFyKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscygnJywgY29sbGFwc2UoJ1xceGZGMCcpKSAgICAgICAgICAgIyAnXHhmRjAnIChj
aGFyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnJywgY29sbGFwc2UoJ1xcbicpKSAgICAg
ICAgICAgICAgIyAnXG4nIChjaGFyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnXCMnLCBj
b2xsYXBzZSgnXFwjJykpICAgICAgICAgICAgIyAnXCMnIChiYWQpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoJ1N0cmluZ1JlcGxhY2UoYm9keSwgIiIsICIiKTsnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb2xsYXBzZSgnU3RyaW5nUmVwbGFjZShib2R5LCAiXFxcXCIsICJcXFxc
XFxcXCIpOycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnXCdcJyAiIicsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlKCdcJyJcJyAiZm9vIicpKQotCi0KLWNsYXNzIE9y
ZGVyT2ZJbmNsdWRlc1Rlc3QoQ3BwbGludFRlc3RCYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6
Ci0gICAgICAgIHNlbGYuaW5jbHVkZV9zdGF0ZSA9IGNwcGxpbnQuX0luY2x1ZGVTdGF0ZSgpCi0K
LSAgICAgICAgIyBDaGVhdCBvcy5wYXRoLmFic3BhdGggY2FsbGVkIGluIEZpbGVJbmZvIGNsYXNz
LgotICAgICAgICBzZWxmLm9zX3BhdGhfYWJzcGF0aF9vcmlnID0gb3MucGF0aC5hYnNwYXRoCi0g
ICAgICAgIG9zLnBhdGguYWJzcGF0aCA9IGxhbWJkYSB2YWx1ZTogdmFsdWUKLQotICAgIGRlZiB0
ZWFyRG93bihzZWxmKToKLSAgICAgICAgb3MucGF0aC5hYnNwYXRoID0gc2VsZi5vc19wYXRoX2Fi
c3BhdGhfb3JpZwotCi0gICAgZGVmIHRlc3RfdHJ5X2Ryb3BfY29tbW9uX3N1ZmZpeGVzKHNlbGYp
OgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28vZm9vJywgY3BwbGludC5fZHJvcF9jb21t
b25fc3VmZml4ZXMoJ2Zvby9mb28taW5sLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
Zm9vL2Jhci9mb28nLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNwcGxpbnQuX2Ryb3BfY29t
bW9uX3N1ZmZpeGVzKCdmb28vYmFyL2Zvb19pbmwuaCcpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdmb28vZm9vJywgY3BwbGludC5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9mb28uY2Mn
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vL2Zvb191bnVzdWFsaW50ZXJuYWwnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGNwcGxpbnQuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdm
b28vZm9vX3VudXN1YWxpbnRlcm5hbC5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5fZHJvcF9jb21tb25fc3VmZml4ZXMo
J190ZXN0LmNjJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Rlc3QnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIGNwcGxpbnQuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCd0ZXN0LmNjJykp
Ci0KLQotY2xhc3MgT3JkZXJPZkluY2x1ZGVzVGVzdChDcHBsaW50VGVzdEJhc2UpOgotICAgIGRl
ZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5pbmNsdWRlX3N0YXRlID0gY3BwbGludC5fSW5j
bHVkZVN0YXRlKCkKLQotICAgICAgICAjIENoZWF0IG9zLnBhdGguYWJzcGF0aCBjYWxsZWQgaW4g
RmlsZUluZm8gY2xhc3MuCi0gICAgICAgIHNlbGYub3NfcGF0aF9hYnNwYXRoX29yaWcgPSBvcy5w
YXRoLmFic3BhdGgKLSAgICAgICAgb3MucGF0aC5hYnNwYXRoID0gbGFtYmRhIHZhbHVlOiB2YWx1
ZQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBvcy5wYXRoLmFic3BhdGggPSBz
ZWxmLm9zX3BhdGhfYWJzcGF0aF9vcmlnCi0KLSAgICBkZWYgdGVzdF9jaGVja19uZXh0X2luY2x1
ZGVfb3JkZXJfX290aGVyX3RoZW5fY3BwKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCcnLCBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKAotICAgICAg
ICAgICAgY3BwbGludC5fT1RIRVJfSEVBREVSKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
Rm91bmQgQysrIHN5c3RlbSBoZWFkZXIgYWZ0ZXIgb3RoZXIgaGVhZGVyJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVy
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50Ll9DUFBfU1lTX0hFQURFUikp
Ci0KLSAgICBkZWYgdGVzdF9jaGVja19uZXh0X2luY2x1ZGVfb3JkZXJfX2NwcF90aGVuX2Moc2Vs
Zik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVj
a19uZXh0X2luY2x1ZGVfb3JkZXIoCi0gICAgICAgICAgICBjcHBsaW50Ll9DUFBfU1lTX0hFQURF
UikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ZvdW5kIEMgc3lzdGVtIGhlYWRlciBhZnRl
ciBDKysgc3lzdGVtIGhlYWRlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmNs
dWRlX3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9vcmRlcigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3BwbGludC5fQ19TWVNfSEVBREVSKSkKLQotICAgIGRlZiB0ZXN0X2NoZWNrX25l
eHRfaW5jbHVkZV9vcmRlcl9fbGlrZWx5X3RoZW5fY3BwKHNlbGYpOgotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCcnLCBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVy
KAotICAgICAgICAgICAgY3BwbGludC5fTElLRUxZX01ZX0hFQURFUikpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJycsIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3Jk
ZXIoCi0gICAgICAgICAgICBjcHBsaW50Ll9DUFBfU1lTX0hFQURFUikpCi0KLSAgICBkZWYgdGVz
dF9jaGVja19uZXh0X2luY2x1ZGVfb3JkZXJfX3Bvc3NpYmxlX3RoZW5fY3BwKHNlbGYpOgotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9p
bmNsdWRlX29yZGVyKAotICAgICAgICAgICAgY3BwbGludC5fUE9TU0lCTEVfTVlfSEVBREVSKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgc2VsZi5pbmNsdWRlX3N0YXRlLmNoZWNrX25l
eHRfaW5jbHVkZV9vcmRlcigKLSAgICAgICAgICAgIGNwcGxpbnQuX0NQUF9TWVNfSEVBREVSKSkK
LQotICAgIGRlZiB0ZXN0X2NoZWNrX25leHRfaW5jbHVkZV9vcmRlcl9fY3BwX3RoZW5fbGlrZWx5
KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzZWxmLmluY2x1ZGVfc3RhdGUu
Y2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKAotICAgICAgICAgICAgY3BwbGludC5fQ1BQX1NZU19I
RUFERVIpKQotICAgICAgICAjIFRoaXMgd2lsbCBldmVudHVhbGx5IGZhaWwuCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJycsIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVf
b3JkZXIoCi0gICAgICAgICAgICBjcHBsaW50Ll9MSUtFTFlfTVlfSEVBREVSKSkKLQotICAgIGRl
ZiB0ZXN0X2NoZWNrX25leHRfaW5jbHVkZV9vcmRlcl9fY3BwX3RoZW5fcG9zc2libGUoc2VsZik6
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19u
ZXh0X2luY2x1ZGVfb3JkZXIoCi0gICAgICAgICAgICBjcHBsaW50Ll9DUFBfU1lTX0hFQURFUikp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19u
ZXh0X2luY2x1ZGVfb3JkZXIoCi0gICAgICAgICAgICBjcHBsaW50Ll9QT1NTSUJMRV9NWV9IRUFE
RVIpKQotCi0gICAgZGVmIHRlc3RfY2xhc3NpZnlfaW5jbHVkZShzZWxmKToKLSAgICAgICAgZmls
ZV9pbmZvID0gY3BwbGludC5GaWxlSW5mbwotICAgICAgICBjbGFzc2lmeV9pbmNsdWRlID0gY3Bw
bGludC5fY2xhc3NpZnlfaW5jbHVkZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNwcGxpbnQu
X0NfU1lTX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2lmeV9pbmNsdWRl
KGZpbGVfaW5mbygnZm9vL2Zvby5jYycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3N0ZGlvLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVHJ1ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3BwbGludC5fQ1BQX1NZ
U19IRUFERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZShmaWxl
X2luZm8oJ2Zvby9mb28uY2MnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVHJ1ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3BwbGludC5fQ1BQX1NZU19IRUFE
RVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZShmaWxlX2luZm8o
J2Zvby9mb28uY2MnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICd0eXBlaW5mbycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
cnVlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcHBsaW50Ll9PVEhFUl9IRUFERVIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZShmaWxlX2luZm8oJ2Zvby9m
b28uY2MnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJp
bmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3BwbGludC5fTElLRUxZX01ZX0hFQURFUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2lmeV9pbmNsdWRlKGZpbGVfaW5mbygnZm9vL2Zv
by5jYycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvby9m
b28taW5sLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFs
c2UpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNwcGxpbnQuX0xJS0VMWV9NWV9IRUFERVIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZShmaWxlX2luZm8oJ2Zv
by9pbnRlcm5hbC9mb28uY2MnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdmb28vcHVibGljL2Zvby5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZhbHNlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcHBsaW50Ll9Q
T1NTSUJMRV9NWV9IRUFERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5j
bHVkZShmaWxlX2luZm8oJ2Zvby9pbnRlcm5hbC9mb28uY2MnKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdmb28vb3RoZXIvcHVibGljL2Zvby5oJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjcHBsaW50Ll9PVEhFUl9IRUFERVIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgY2xhc3NpZnlfaW5jbHVkZShmaWxlX2luZm8oJ2Zvby9pbnRlcm5hbC9mb28uY2MnKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28vb3RoZXIvcHVi
bGljL2Zvb3AuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
YWxzZSkpCi0KLSAgICBkZWYgdGVzdF90cnlfZHJvcF9jb21tb25fc3VmZml4ZXMoc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Zvby9mb28nLCBjcHBsaW50Ll9kcm9wX2NvbW1vbl9z
dWZmaXhlcygnZm9vL2Zvby1pbmwuaCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28v
YmFyL2ZvbycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5fZHJvcF9jb21tb25f
c3VmZml4ZXMoJ2Zvby9iYXIvZm9vX2lubC5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J2Zvby9mb28nLCBjcHBsaW50Ll9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvby5jYycpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28vZm9vX3VudXN1YWxpbnRlcm5hbCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9m
b29fdW51c3VhbGludGVybmFsLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50Ll9kcm9wX2NvbW1vbl9zdWZmaXhlcygnX3Rl
c3QuY2MnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndGVzdCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgY3BwbGludC5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ3Rlc3QuY2MnKSkKLQot
ICAgIGRlZiB0ZXN0X3JlZ3Jlc3Npb24oc2VsZik6Ci0gICAgICAgIGRlZiBmb3JtYXQoaW5jbHVk
ZXMpOgotICAgICAgICAgICAgcmV0dXJuICcnLmpvaW4oWycjaW5jbHVkZSAlc1xuJyAlIGluY2x1
ZGUgZm9yIGluY2x1ZGUgaW4gaW5jbHVkZXNdKQotCi0gICAgICAgICMgVGVzdCBzaW5nbGV0b24g
Y2FzZXMgZmlyc3QuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdm
b28vZm9vLmNjJywgZm9ybWF0KFsnImZvby9mb28uaCInXSksICcnKQotICAgICAgICBzZWxmLmFz
c2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vL2Zvby5jYycsIGZvcm1hdChbJzxzdGRpby5o
PiddKSwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28v
Zm9vLmNjJywgZm9ybWF0KFsnPHN0cmluZz4nXSksICcnKQotICAgICAgICBzZWxmLmFzc2VydF9s
YW5ndWFnZV9ydWxlc19jaGVjaygnZm9vL2Zvby5jYycsIGZvcm1hdChbJyJmb28vZm9vLWlubC5o
IiddKSwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28v
Zm9vLmNjJywgZm9ybWF0KFsnImJhci9iYXItaW5sLmgiJ10pLCAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby9mb28uY2MnLCBmb3JtYXQoWyciYmFyL2Jh
ci5oIiddKSwgJycpCi0KLSAgICAgICAgIyBUZXN0IGV2ZXJ5dGhpbmcgaW4gYSBnb29kIGFuZCBu
ZXcgb3JkZXIuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28v
Zm9vLmNjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0
KFsnImZvby9mb28uaCInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICciZm9vL2Zvby1pbmwuaCInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICc8c3RkaW8uaD4nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3RyaW5nPicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJiYXIvYmFyLWlubC5oIicsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJiYXIvYmFyLmgi
J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKLSAgICAg
ICAgIyBUZXN0IGV2ZXJ5dGhpbmcgaW4gYSBnb29kIGJ1dCBzbGlnaHRseSBkZXByZWNhdGVkIG9y
ZGVyLgotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vL2Zvby5j
YycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChbJyJm
b28vZm9vLmgiJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnPHN0ZGlvLmg+JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnPHN0cmluZz4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICciZm9vL2Zvby1pbmwuaCInLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICciYmFyL2Jhci1pbmwuaCInLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciYmFyL2Jhci5oIiddKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCi0gICAgICAgICMg
VGVzdCBldmVyeXRoaW5nIGluIGEgZ29vZCBidXQgZGVwcmVjYXRlZCBvcmRlci4KLSAgICAgICAg
c2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby9mb28uY2MnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoWyc8c3RkaW8uaD4nLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3RyaW5nPics
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJmb28v
Zm9vLWlubC5oIicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyJiYXIvYmFyLWlubC5oIicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyJmb28vZm9vLmgiJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnImJhci9iYXIuaCInXSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotCi0gICAgICAgICMgVGVzdCBiYWQgb3Jk
ZXJzLgotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygKLSAgICAgICAg
ICAgICdmb28vZm9vLmNjJywKLSAgICAgICAgICAgIGZvcm1hdChbJzxzdHJpbmc+JywgJzxzdGRp
by5oPiddKSwKLSAgICAgICAgICAgICdGb3VuZCBDIHN5c3RlbSBoZWFkZXIgYWZ0ZXIgQysrIHN5
c3RlbSBoZWFkZXIuJwotICAgICAgICAgICAgJyBTaG91bGQgYmU6IGZvby5oLCBjIHN5c3RlbSwg
YysrIHN5c3RlbSwgb3RoZXIuJwotICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVfb3JkZXJd
IFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKAotICAgICAg
ICAgICAgJ2Zvby9mb28uY2MnLAotICAgICAgICAgICAgZm9ybWF0KFsnImZvby9iYXItaW5sLmgi
JywKLSAgICAgICAgICAgICAgICAgICAgJyJmb28vZm9vLWlubC5oIiddKSwKLSAgICAgICAgICAg
ICcnKQotICAgICAgICAjIC1pbmwuaCBoZWFkZXJzIGFyZSBubyBsb25nZXIgc3BlY2lhbC4KLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby9mb28uY2MnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoWyciZm9vL2Zvby1p
bmwuaCInLCAnPHN0cmluZz4nXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9v
L2Zvby5jYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1h
dChbJyJmb28vYmFyLmgiJywgJyJmb28vYmFyLWlubC5oIiddKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJycpCi0gICAgICAgICMgVGVzdCBjb21wb25lbnRpemVk
IGhlYWRlci4gIE9LIHRvIGhhdmUgbXkgaGVhZGVyIGluIC4uL3B1YmxpYyBkaXIuCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28vaW50ZXJuYWwvZm9vLmNjJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KFsnImZvby9w
dWJsaWMvZm9vLmgiJywgJzxzdHJpbmc+J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnJykKLSAgICAgICAgIyBPSyB0byBoYXZlIG15IGhlYWRlciBpbiBvdGhl
ciBkaXIgKG5vdCBzdHlsaXN0aWNhbGx5LCBidXQKLSAgICAgICAgIyBjcHBsaW50IGlzbid0IGFz
IGdvb2QgYXMgYSBodW1hbikuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2No
ZWNrKCdmb28vaW50ZXJuYWwvZm9vLmNjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZm9ybWF0KFsnImZvby9vdGhlci9wdWJsaWMvZm9vLmgiJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHN0cmluZz4nXSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotCi0KLWNsYXNzIENo
ZWNrRm9yRnVuY3Rpb25MZW5ndGhzVGVzdChDcHBsaW50VGVzdEJhc2UpOgotICAgIGRlZiBzZXRV
cChzZWxmKToKLSAgICAgICAgIyBSZWR1Y2luZyB0aGVzZSB0aHJlc2hvbGRzIGZvciB0aGUgdGVz
dHMgc3BlZWRzIHVwIHRlc3RzIHNpZ25pZmljYW50bHkuCi0gICAgICAgIHNlbGYub2xkX25vcm1h
bF90cmlnZ2VyID0gY3BwbGludC5fRnVuY3Rpb25TdGF0ZS5fTk9STUFMX1RSSUdHRVIKLSAgICAg
ICAgc2VsZi5vbGRfdGVzdF90cmlnZ2VyID0gY3BwbGludC5fRnVuY3Rpb25TdGF0ZS5fVEVTVF9U
UklHR0VSCi0KLSAgICAgICAgY3BwbGludC5fRnVuY3Rpb25TdGF0ZS5fTk9STUFMX1RSSUdHRVIg
PSAxMAotICAgICAgICBjcHBsaW50Ll9GdW5jdGlvblN0YXRlLl9URVNUX1RSSUdHRVIgPSAyNQot
Ci0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBjcHBsaW50Ll9GdW5jdGlvblN0YXRl
Ll9OT1JNQUxfVFJJR0dFUiA9IHNlbGYub2xkX25vcm1hbF90cmlnZ2VyCi0gICAgICAgIGNwcGxp
bnQuX0Z1bmN0aW9uU3RhdGUuX1RFU1RfVFJJR0dFUiA9IHNlbGYub2xkX3Rlc3RfdHJpZ2dlcgot
Ci0gICAgZGVmIGFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKHNlbGYsIGNvZGUsIGV4cGVj
dGVkX21lc3NhZ2UpOgotICAgICAgICAiIiJDaGVjayB3YXJuaW5ncyBmb3IgbG9uZyBmdW5jdGlv
biBib2RpZXMgYXJlIGFzIGV4cGVjdGVkLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgY29k
ZTogQysrIHNvdXJjZSBjb2RlIGV4cGVjdGVkIHRvIGdlbmVyYXRlIGEgd2FybmluZyBtZXNzYWdl
LgotICAgICAgICAgIGV4cGVjdGVkX21lc3NhZ2U6IE1lc3NhZ2UgZXhwZWN0ZWQgdG8gYmUgZ2Vu
ZXJhdGVkIGJ5IHRoZSBDKysgY29kZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGV4cGVjdGVkX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
cGVyZm9ybV9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKGNvZGUpKQotCi0gICAgZGVmIHRyaWdnZXJf
bGluZXMoc2VsZiwgZXJyb3JfbGV2ZWwpOgotICAgICAgICAiIiJSZXR1cm4gbnVtYmVyIG9mIGxp
bmVzIG5lZWRlZCB0byB0cmlnZ2VyIGEgZnVuY3Rpb24gbGVuZ3RoIHdhcm5pbmcuCi0KLSAgICAg
ICAgQXJnczoKLSAgICAgICAgICBlcnJvcl9sZXZlbDogLS12IHNldHRpbmcgZm9yIGNwcGxpbnQu
Ci0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICBOdW1iZXIgb2YgbGluZXMgbmVlZGVkIHRv
IHRyaWdnZXIgYSBmdW5jdGlvbiBsZW5ndGggd2FybmluZy4KLSAgICAgICAgIiIiCi0gICAgICAg
IHJldHVybiBjcHBsaW50Ll9GdW5jdGlvblN0YXRlLl9OT1JNQUxfVFJJR0dFUiAqIDIgKiogZXJy
b3JfbGV2ZWwKLQotICAgIGRlZiB0cmlnZ2VyX3Rlc3RfbGluZXMoc2VsZiwgZXJyb3JfbGV2ZWwp
OgotICAgICAgICAiIiJSZXR1cm4gbnVtYmVyIG9mIGxpbmVzIG5lZWRlZCB0byB0cmlnZ2VyIGEg
dGVzdCBmdW5jdGlvbiBsZW5ndGggd2FybmluZy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg
IGVycm9yX2xldmVsOiAtLXYgc2V0dGluZyBmb3IgY3BwbGludC4KLQotICAgICAgICBSZXR1cm5z
OgotICAgICAgICAgIE51bWJlciBvZiBsaW5lcyBuZWVkZWQgdG8gdHJpZ2dlciBhIHRlc3QgZnVu
Y3Rpb24gbGVuZ3RoIHdhcm5pbmcuCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gY3BwbGlu
dC5fRnVuY3Rpb25TdGF0ZS5fVEVTVF9UUklHR0VSICogMiAqKiBlcnJvcl9sZXZlbAotCi0gICAg
ZGVmIGFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbihzZWxmLCBsaW5lcywg
ZXJyb3JfbGV2ZWwpOgotICAgICAgICAiIiJHZW5lcmF0ZSBsb25nIGZ1bmN0aW9uIGRlZmluaXRp
b24gYW5kIGNoZWNrIHdhcm5pbmdzIGFyZSBhcyBleHBlY3RlZC4KLQotICAgICAgICBBcmdzOgot
ICAgICAgICAgIGxpbmVzOiBOdW1iZXIgb2YgbGluZXMgdG8gZ2VuZXJhdGUuCi0gICAgICAgICAg
ZXJyb3JfbGV2ZWw6ICAtLXYgc2V0dGluZyBmb3IgY3BwbGludC4KLSAgICAgICAgIiIiCi0gICAg
ICAgIHRyaWdnZXJfbGV2ZWwgPSBzZWxmLnRyaWdnZXJfbGluZXMoY3BwbGludC5fdmVyYm9zZV9s
ZXZlbCgpKQotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAotICAg
ICAgICAgICAgJ3ZvaWQgdGVzdChpbnQgeCknICsgc2VsZi5mdW5jdGlvbl9ib2R5KGxpbmVzKSwK
LSAgICAgICAgICAgICgnU21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6
ICcKLSAgICAgICAgICAgICAndGVzdCgpIGhhcyAlZCBub24tY29tbWVudCBsaW5lcyAnCi0gICAg
ICAgICAgICAgJyhlcnJvciB0cmlnZ2VyZWQgYnkgZXhjZWVkaW5nICVkIGxpbmVzKS4nCi0gICAg
ICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2ZuX3NpemVdIFslZF0nCi0gICAgICAgICAgICAgJSAo
bGluZXMsIHRyaWdnZXJfbGV2ZWwsIGVycm9yX2xldmVsKSkpCi0KLSAgICBkZWYgYXNzZXJ0X2Z1
bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX29rKHNlbGYsIGxpbmVzKToKLSAgICAgICAg
IiIiR2VuZXJhdGUgc2hvcnRlciBmdW5jdGlvbiBkZWZpbml0aW9uIGFuZCBjaGVjayBubyB3YXJu
aW5nIGlzIHByb2R1Y2VkLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgbGluZXM6IE51bWJl
ciBvZiBsaW5lcyB0byBnZW5lcmF0ZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCi0gICAgICAgICAgICAndm9pZCB0ZXN0KGludCB4KScg
KyBzZWxmLmZ1bmN0aW9uX2JvZHkobGluZXMpLAotICAgICAgICAgICAgJycpCi0KLSAgICBkZWYg
YXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hdF9lcnJvcl9sZXZlbChzZWxmLCBlcnJvcl9s
ZXZlbCk6Ci0gICAgICAgICIiIkdlbmVyYXRlIGFuZCBjaGVjayBmdW5jdGlvbiBhdCB0aGUgdHJp
Z2dlciBsZXZlbCBmb3IgLS12IHNldHRpbmcuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBl
cnJvcl9sZXZlbDogLS12IHNldHRpbmcgZm9yIGNwcGxpbnQuCi0gICAgICAgICIiIgotICAgICAg
ICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbihzZWxmLnRyaWdn
ZXJfbGluZXMoZXJyb3JfbGV2ZWwpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlcnJvcl9sZXZlbCkKLQotICAgIGRlZiBhc3NlcnRfZnVuY3Rp
b25fbGVuZ3RoX2NoZWNrX2JlbG93X2Vycm9yX2xldmVsKHNlbGYsIGVycm9yX2xldmVsKToKLSAg
ICAgICAgIiIiR2VuZXJhdGUgYW5kIGNoZWNrIGZ1bmN0aW9uIGp1c3QgYmVsb3cgdGhlIHRyaWdn
ZXIgbGV2ZWwgZm9yIC0tdiBzZXR0aW5nLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZXJy
b3JfbGV2ZWw6IC0tdiBzZXR0aW5nIGZvciBjcHBsaW50LgotICAgICAgICAiIiIKLSAgICAgICAg
c2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb24oc2VsZi50cmlnZ2Vy
X2xpbmVzKGVycm9yX2xldmVsKSAtIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2xldmVsIC0gMSkKLQotICAgIGRlZiBhc3NlcnRf
ZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2Fib3ZlX2Vycm9yX2xldmVsKHNlbGYsIGVycm9yX2xldmVs
KToKLSAgICAgICAgIiIiR2VuZXJhdGUgYW5kIGNoZWNrIGZ1bmN0aW9uIGp1c3QgYWJvdmUgdGhl
IHRyaWdnZXIgbGV2ZWwgZm9yIC0tdiBzZXR0aW5nLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAg
ICAgZXJyb3JfbGV2ZWw6IC0tdiBzZXR0aW5nIGZvciBjcHBsaW50LgotICAgICAgICAiIiIKLSAg
ICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb24oc2VsZi50
cmlnZ2VyX2xpbmVzKGVycm9yX2xldmVsKSArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2xldmVsKQotCi0gICAgZGVmIGZ1bmN0
aW9uX2JvZHkoc2VsZiwgbnVtYmVyX29mX2xpbmVzKToKLSAgICAgICAgcmV0dXJuICcge1xuJyAr
ICcgICAgdGhpc19pc19qdXN0X2FfdGVzdCgpO1xuJyAqIG51bWJlcl9vZl9saW5lcyArICd9Jwot
Ci0gICAgZGVmIGZ1bmN0aW9uX2JvZHlfd2l0aF9ibGFua19saW5lcyhzZWxmLCBudW1iZXJfb2Zf
bGluZXMpOgotICAgICAgICByZXR1cm4gJyB7XG4nICsgJyAgICB0aGlzX2lzX2p1c3RfYV90ZXN0
KCk7XG5cbicgKiBudW1iZXJfb2ZfbGluZXMgKyAnfScKLQotICAgIGRlZiBmdW5jdGlvbl9ib2R5
X3dpdGhfbm9fbGludHMoc2VsZiwgbnVtYmVyX29mX2xpbmVzKToKLSAgICAgICAgcmV0dXJuICcg
e1xuJyArICcgICAgdGhpc19pc19qdXN0X2FfdGVzdCgpOyAgLy8gTk9MSU5UXG4nICogbnVtYmVy
X29mX2xpbmVzICsgJ30nCi0KLSAgICAjIFRlc3QgbGluZSBsZW5ndGggY2hlY2tzLgotICAgIGRl
ZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWNsYXJhdGlvbihzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAgICd2b2lkIHRl
c3QoKTsnLCAgIyBOb3QgYSBmdW5jdGlvbiBkZWZpbml0aW9uCi0gICAgICAgICAgICAnJykKLQot
ICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWNsYXJhdGlvbl93aXRoX2Jsb2Nr
X2ZvbGxvd2luZyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19j
aGVjaygKLSAgICAgICAgICAgICgndm9pZCB0ZXN0KCk7XG4nCi0gICAgICAgICAgICAgKyBzZWxm
LmZ1bmN0aW9uX2JvZHkoNjYpKSwgICMgTm90IGEgZnVuY3Rpb24gZGVmaW5pdGlvbgotICAgICAg
ICAgICAgJycpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfY2xhc3NfZGVm
aW5pdGlvbihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVj
ayggICMgTm90IGEgZnVuY3Rpb24gZGVmaW5pdGlvbgotICAgICAgICAgICAgJ2NsYXNzIFRlc3Qn
ICsgc2VsZi5mdW5jdGlvbl9ib2R5KDY2KSArICc7JywKLSAgICAgICAgICAgICcnKQotCi0gICAg
ZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX3RyaXZpYWwoc2VsZik6Ci0gICAgICAgIHNl
bGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCi0gICAgICAgICAgICAndm9pZCB0ZXN0
KCkge30nLCAgIyBOb3QgY291bnRlZAotICAgICAgICAgICAgJycpCi0KLSAgICBkZWYgdGVzdF9m
dW5jdGlvbl9sZW5ndGhfY2hlY2tfZW1wdHkoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1
bmN0aW9uX2xlbmd0aHNfY2hlY2soCi0gICAgICAgICAgICAndm9pZCB0ZXN0KCkge1xufScsCi0g
ICAgICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZp
bml0aW9uX2JlbG93X3NldmVyaXR5MChzZWxmKToKLSAgICAgICAgb2xkX3ZlcmJvc2l0eSA9IGNw
cGxpbnQuX3NldF92ZXJib3NlX2xldmVsKDApCi0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9u
X2xlbmd0aF9jaGVja19kZWZpbml0aW9uX29rKHNlbGYudHJpZ2dlcl9saW5lcygwKSAtIDEpCi0g
ICAgICAgIGNwcGxpbnQuX3NldF92ZXJib3NlX2xldmVsKG9sZF92ZXJib3NpdHkpCi0KLSAgICBk
ZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9hdF9zZXZlcml0eTAoc2Vs
Zik6Ci0gICAgICAgIG9sZF92ZXJib3NpdHkgPSBjcHBsaW50Ll9zZXRfdmVyYm9zZV9sZXZlbCgw
KQotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9v
ayhzZWxmLnRyaWdnZXJfbGluZXMoMCkpCi0gICAgICAgIGNwcGxpbnQuX3NldF92ZXJib3NlX2xl
dmVsKG9sZF92ZXJib3NpdHkpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tf
ZGVmaW5pdGlvbl9hYm92ZV9zZXZlcml0eTAoc2VsZik6Ci0gICAgICAgIG9sZF92ZXJib3NpdHkg
PSBjcHBsaW50Ll9zZXRfdmVyYm9zZV9sZXZlbCgwKQotICAgICAgICBzZWxmLmFzc2VydF9mdW5j
dGlvbl9sZW5ndGhfY2hlY2tfYWJvdmVfZXJyb3JfbGV2ZWwoMCkKLSAgICAgICAgY3BwbGludC5f
c2V0X3ZlcmJvc2VfbGV2ZWwob2xkX3ZlcmJvc2l0eSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9u
X2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2JlbG93X3NldmVyaXR5MXYwKHNlbGYpOgotICAgICAg
ICBvbGRfdmVyYm9zaXR5ID0gY3BwbGludC5fc2V0X3ZlcmJvc2VfbGV2ZWwoMCkKLSAgICAgICAg
c2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2JlbG93X2Vycm9yX2xldmVsKDEpCi0g
ICAgICAgIGNwcGxpbnQuX3NldF92ZXJib3NlX2xldmVsKG9sZF92ZXJib3NpdHkpCi0KLSAgICBk
ZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9hdF9zZXZlcml0eTF2MChz
ZWxmKToKLSAgICAgICAgb2xkX3ZlcmJvc2l0eSA9IGNwcGxpbnQuX3NldF92ZXJib3NlX2xldmVs
KDApCi0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hdF9lcnJvcl9s
ZXZlbCgxKQotICAgICAgICBjcHBsaW50Ll9zZXRfdmVyYm9zZV9sZXZlbChvbGRfdmVyYm9zaXR5
KQotCi0gICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYmVsb3df
c2V2ZXJpdHkxKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hl
Y2tfZGVmaW5pdGlvbl9vayhzZWxmLnRyaWdnZXJfbGluZXMoMSkgLSAxKQotCi0gICAgZGVmIHRl
c3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYXRfc2V2ZXJpdHkxKHNlbGYpOgot
ICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9vayhz
ZWxmLnRyaWdnZXJfbGluZXMoMSkpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hl
Y2tfZGVmaW5pdGlvbl9hYm92ZV9zZXZlcml0eTEoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0
X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbCgxKQotCi0gICAgZGVmIHRl
c3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fc2V2ZXJpdHkxX3BsdXNfYmxhbmtz
KHNlbGYpOgotICAgICAgICBlcnJvcl9sZXZlbCA9IDEKLSAgICAgICAgZXJyb3JfbGluZXMgPSBz
ZWxmLnRyaWdnZXJfbGluZXMoZXJyb3JfbGV2ZWwpICsgMQotICAgICAgICB0cmlnZ2VyX2xldmVs
ID0gc2VsZi50cmlnZ2VyX2xpbmVzKGNwcGxpbnQuX3ZlcmJvc2VfbGV2ZWwoKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAgICd2b2lkIHRl
c3RfYmxhbmtzKGludCB4KScgKyBzZWxmLmZ1bmN0aW9uX2JvZHkoZXJyb3JfbGluZXMpLAotICAg
ICAgICAgICAgKCdTbWFsbCBhbmQgZm9jdXNlZCBmdW5jdGlvbnMgYXJlIHByZWZlcnJlZDogJwot
ICAgICAgICAgICAgICd0ZXN0X2JsYW5rcygpIGhhcyAlZCBub24tY29tbWVudCBsaW5lcyAnCi0g
ICAgICAgICAgICAgJyhlcnJvciB0cmlnZ2VyZWQgYnkgZXhjZWVkaW5nICVkIGxpbmVzKS4nCi0g
ICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2ZuX3NpemVdIFslZF0nKQotICAgICAgICAgICAg
JSAoZXJyb3JfbGluZXMsIHRyaWdnZXJfbGV2ZWwsIGVycm9yX2xldmVsKSkKLQotICAgIGRlZiB0
ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19jb21wbGV4X2RlZmluaXRpb25fc2V2ZXJpdHkxKHNl
bGYpOgotICAgICAgICBlcnJvcl9sZXZlbCA9IDEKLSAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxm
LnRyaWdnZXJfbGluZXMoZXJyb3JfbGV2ZWwpICsgMQotICAgICAgICB0cmlnZ2VyX2xldmVsID0g
c2VsZi50cmlnZ2VyX2xpbmVzKGNwcGxpbnQuX3ZlcmJvc2VfbGV2ZWwoKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAgICgnbXlfbmFtZXNw
YWNlOjpteV9vdGhlcl9uYW1lc3BhY2U6Ok15VmVyeUxvbmdUeXBlTmFtZSpcbicKLSAgICAgICAg
ICAgICAnbXlfbmFtZXNwYWNlOjpteV9vdGhlcl9uYW1lc3BhY2U6Ok15RnVuY3Rpb24oaW50IGFy
ZzEsIGNoYXIqIGFyZzIpJwotICAgICAgICAgICAgICsgc2VsZi5mdW5jdGlvbl9ib2R5KGVycm9y
X2xpbmVzKSksCi0gICAgICAgICAgICAoJ1NtYWxsIGFuZCBmb2N1c2VkIGZ1bmN0aW9ucyBhcmUg
cHJlZmVycmVkOiAnCi0gICAgICAgICAgICAgJ215X25hbWVzcGFjZTo6bXlfb3RoZXJfbmFtZXNw
YWNlOjpNeUZ1bmN0aW9uKCknCi0gICAgICAgICAgICAgJyBoYXMgJWQgbm9uLWNvbW1lbnQgbGlu
ZXMgJwotICAgICAgICAgICAgICcoZXJyb3IgdHJpZ2dlcmVkIGJ5IGV4Y2VlZGluZyAlZCBsaW5l
cykuJwotICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9mbl9zaXplXSBbJWRdJykKLSAgICAg
ICAgICAgICUgKGVycm9yX2xpbmVzLCB0cmlnZ2VyX2xldmVsLCBlcnJvcl9sZXZlbCkpCi0KLSAg
ICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0eTFfZm9y
X3Rlc3Qoc2VsZik6Ci0gICAgICAgIGVycm9yX2xldmVsID0gMQotICAgICAgICBlcnJvcl9saW5l
cyA9IHNlbGYudHJpZ2dlcl90ZXN0X2xpbmVzKGVycm9yX2xldmVsKSArIDEKLSAgICAgICAgdHJp
Z2dlcl9sZXZlbCA9IHNlbGYudHJpZ2dlcl90ZXN0X2xpbmVzKGNwcGxpbnQuX3ZlcmJvc2VfbGV2
ZWwoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAg
ICAgICAgICdURVNUX0YoVGVzdCwgTXV0YXRvciknICsgc2VsZi5mdW5jdGlvbl9ib2R5KGVycm9y
X2xpbmVzKSwKLSAgICAgICAgICAgICgnU21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBw
cmVmZXJyZWQ6ICcKLSAgICAgICAgICAgICAnVEVTVF9GKFRlc3QsIE11dGF0b3IpIGhhcyAlZCBu
b24tY29tbWVudCBsaW5lcyAnCi0gICAgICAgICAgICAgJyhlcnJvciB0cmlnZ2VyZWQgYnkgZXhj
ZWVkaW5nICVkIGxpbmVzKS4nCi0gICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2ZuX3NpemVd
IFslZF0nKQotICAgICAgICAgICAgJSAoZXJyb3JfbGluZXMsIHRyaWdnZXJfbGV2ZWwsIGVycm9y
X2xldmVsKSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9u
X3NldmVyaXR5MV9mb3Jfc3BsaXRfbGluZV90ZXN0KHNlbGYpOgotICAgICAgICBlcnJvcl9sZXZl
bCA9IDEKLSAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxmLnRyaWdnZXJfdGVzdF9saW5lcyhlcnJv
cl9sZXZlbCkgKyAxCi0gICAgICAgIHRyaWdnZXJfbGV2ZWwgPSBzZWxmLnRyaWdnZXJfdGVzdF9s
aW5lcyhjcHBsaW50Ll92ZXJib3NlX2xldmVsKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0
aW9uX2xlbmd0aHNfY2hlY2soCi0gICAgICAgICAgICAoJ1RFU1RfRihHb29nbGVVcGRhdGVSZWNv
dmVyeVJlZ2lzdHJ5UHJvdGVjdGVkVGVzdCxcbicKLSAgICAgICAgICAgICAnICAgIEZpeEdvb2ds
ZVVwZGF0ZV9BbGxWYWx1ZXNfTWFjaGluZUFwcCknICAjIG5vdGU6IDQgc3BhY2VzCi0gICAgICAg
ICAgICAgKyBzZWxmLmZ1bmN0aW9uX2JvZHkoZXJyb3JfbGluZXMpKSwKLSAgICAgICAgICAgICgn
U21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcKLSAgICAgICAgICAg
ICAnVEVTVF9GKEdvb2dsZVVwZGF0ZVJlY292ZXJ5UmVnaXN0cnlQcm90ZWN0ZWRUZXN0LCAnICAj
IDEgc3BhY2UKLSAgICAgICAgICAgICAnRml4R29vZ2xlVXBkYXRlX0FsbFZhbHVlc19NYWNoaW5l
QXBwKSBoYXMgJWQgbm9uLWNvbW1lbnQgbGluZXMgJwotICAgICAgICAgICAgICcoZXJyb3IgdHJp
Z2dlcmVkIGJ5IGV4Y2VlZGluZyAlZCBsaW5lcykuJwotICAgICAgICAgICAgICcgIFtyZWFkYWJp
bGl0eS9mbl9zaXplXSBbJWRdJykKLSAgICAgICAgICAgICUgKGVycm9yX2xpbmVzKzEsIHRyaWdn
ZXJfbGV2ZWwsIGVycm9yX2xldmVsKSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9j
aGVja19kZWZpbml0aW9uX3NldmVyaXR5MV9mb3JfYmFkX3Rlc3RfZG9lc250X2JyZWFrKHNlbGYp
OgotICAgICAgICBlcnJvcl9sZXZlbCA9IDEKLSAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxmLnRy
aWdnZXJfdGVzdF9saW5lcyhlcnJvcl9sZXZlbCkgKyAxCi0gICAgICAgIHRyaWdnZXJfbGV2ZWwg
PSBzZWxmLnRyaWdnZXJfdGVzdF9saW5lcyhjcHBsaW50Ll92ZXJib3NlX2xldmVsKCkpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCi0gICAgICAgICAgICAoJ1RF
U1RfRignCi0gICAgICAgICAgICAgKyBzZWxmLmZ1bmN0aW9uX2JvZHkoZXJyb3JfbGluZXMpKSwK
LSAgICAgICAgICAgICgnU21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6
ICcKLSAgICAgICAgICAgICAnVEVTVF9GIGhhcyAlZCBub24tY29tbWVudCBsaW5lcyAnCi0gICAg
ICAgICAgICAgJyhlcnJvciB0cmlnZ2VyZWQgYnkgZXhjZWVkaW5nICVkIGxpbmVzKS4nCi0gICAg
ICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2ZuX3NpemVdIFslZF0nKQotICAgICAgICAgICAgJSAo
ZXJyb3JfbGluZXMsIHRyaWdnZXJfbGV2ZWwsIGVycm9yX2xldmVsKSkKLQotICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX3NldmVyaXR5MV93aXRoX2VtYmVkZGVk
X25vX2xpbnRzKHNlbGYpOgotICAgICAgICBlcnJvcl9sZXZlbCA9IDEKLSAgICAgICAgZXJyb3Jf
bGluZXMgPSBzZWxmLnRyaWdnZXJfbGluZXMoZXJyb3JfbGV2ZWwpICsgMQotICAgICAgICB0cmln
Z2VyX2xldmVsID0gc2VsZi50cmlnZ2VyX2xpbmVzKGNwcGxpbnQuX3ZlcmJvc2VfbGV2ZWwoKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAg
ICd2b2lkIHRlc3QoaW50IHgpJyArIHNlbGYuZnVuY3Rpb25fYm9keV93aXRoX25vX2xpbnRzKGVy
cm9yX2xpbmVzKSwKLSAgICAgICAgICAgICgnU21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFy
ZSBwcmVmZXJyZWQ6ICcKLSAgICAgICAgICAgICAndGVzdCgpIGhhcyAlZCBub24tY29tbWVudCBs
aW5lcyAnCi0gICAgICAgICAgICAgJyhlcnJvciB0cmlnZ2VyZWQgYnkgZXhjZWVkaW5nICVkIGxp
bmVzKS4nCi0gICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2ZuX3NpemVdIFslZF0nKQotICAg
ICAgICAgICAgJSAoZXJyb3JfbGluZXMsIHRyaWdnZXJfbGV2ZWwsIGVycm9yX2xldmVsKSkKLQot
ICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX3NldmVyaXR5MV93
aXRoX25vX2xpbnQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNf
Y2hlY2soCi0gICAgICAgICAgICAoJ3ZvaWQgdGVzdChpbnQgeCknICsgc2VsZi5mdW5jdGlvbl9i
b2R5KHNlbGYudHJpZ2dlcl9saW5lcygxKSkKLSAgICAgICAgICAgICArICcgIC8vIE5PTElOVCAt
LSBsb25nIGZ1bmN0aW9uJyksCi0gICAgICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0X2Z1bmN0
aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2JlbG93X3NldmVyaXR5MihzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2JlbG93X2Vycm9yX2xldmVsKDIp
Ci0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0
eTIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hdF9l
cnJvcl9sZXZlbCgyKQotCi0gICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmlu
aXRpb25fYWJvdmVfc2V2ZXJpdHkyKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlv
bl9sZW5ndGhfY2hlY2tfYWJvdmVfZXJyb3JfbGV2ZWwoMikKLQotICAgIGRlZiB0ZXN0X2Z1bmN0
aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2JlbG93X3NldmVyaXR5MyhzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2JlbG93X2Vycm9yX2xldmVsKDMp
Ci0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0
eTMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hdF9l
cnJvcl9sZXZlbCgzKQotCi0gICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmlu
aXRpb25fYWJvdmVfc2V2ZXJpdHkzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlv
bl9sZW5ndGhfY2hlY2tfYWJvdmVfZXJyb3JfbGV2ZWwoMykKLQotICAgIGRlZiB0ZXN0X2Z1bmN0
aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2JlbG93X3NldmVyaXR5NChzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2JlbG93X2Vycm9yX2xldmVsKDQp
Ci0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0
eTQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hdF9l
cnJvcl9sZXZlbCg0KQotCi0gICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmlu
aXRpb25fYWJvdmVfc2V2ZXJpdHk0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlv
bl9sZW5ndGhfY2hlY2tfYWJvdmVfZXJyb3JfbGV2ZWwoNCkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0
aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2JlbG93X3NldmVyaXR5NShzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2JlbG93X2Vycm9yX2xldmVsKDUp
Ci0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9hdF9zZXZl
cml0eTUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19h
dF9lcnJvcl9sZXZlbCg1KQotCi0gICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2Rl
ZmluaXRpb25fYWJvdmVfc2V2ZXJpdHk1KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5j
dGlvbl9sZW5ndGhfY2hlY2tfYWJvdmVfZXJyb3JfbGV2ZWwoNSkKLQotICAgIGRlZiB0ZXN0X2Z1
bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2h1Z2VfbGluZXMoc2VsZik6Ci0gICAgICAg
ICMgNSBpcyB0aGUgbGltaXQKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2No
ZWNrX2RlZmluaXRpb24oc2VsZi50cmlnZ2VyX2xpbmVzKDEwKSwgNSkKLQotICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uX2xlbmd0aF9ub3RfZGV0ZXJtaW5hYmxlKHNlbGYpOgotICAgICAgICAjIE1hY3Jv
IGludm9jYXRpb24gd2l0aG91dCB0ZXJtaW5hdGluZyBzZW1pY29sb24uCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCi0gICAgICAgICAgICAnTUFDUk8oYXJnKScs
Ci0gICAgICAgICAgICAnJykKLQotICAgICAgICAjIE1hY3JvIHdpdGggdW5kZXJzY29yZXMKLSAg
ICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAgICdN
QUNST19XSVRIX1VOREVSU0NPUkVTKGFyZzEsIGFyZzIsIGFyZzMpJywKLSAgICAgICAgICAgICcn
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCi0gICAgICAg
ICAgICAnTm9uTWFjcm8oYXJnKScsCi0gICAgICAgICAgICAnTGludCBmYWlsZWQgdG8gZmluZCBz
dGFydCBvZiBmdW5jdGlvbiBib2R5LicKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9mbl9z
aXplXSBbNV0nKQotCi0KLWNsYXNzIE5vTm9uVmlydHVhbERlc3RydWN0b3JzVGVzdChDcHBsaW50
VGVzdEJhc2UpOgotCi0gICAgZGVmIHRlc3Rfbm9fZXJyb3Ioc2VsZik6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAg
ICAgICAgICAgICAgICAgdmlydHVhbCB+Rm9vKCk7Ci0gICAgICAgICAgICAgICAgICAgdmlydHVh
bCB2b2lkIGZvbygpOwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnJykKLQot
ICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFz
cyBGb28gewotICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgaW5saW5lIH5Gb28oKTsKLSAgICAg
ICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7Ci0gICAgICAgICAgICAgICB9OycnJywK
LSAgICAgICAgICAgICcnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
LSAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAgICAgaW5saW5lIHZp
cnR1YWwgfkZvbygpOwotICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBmb28oKTsKLSAg
ICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJycpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vOjpHb28gewotICAg
ICAgICAgICAgICAgICAgIHZpcnR1YWwgfkdvbygpOwotICAgICAgICAgICAgICAgICAgIHZpcnR1
YWwgdm9pZCBnb28oKTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdjbGFzcyBG
b28geyB2b2lkIGZvbygpOyB9OycsCi0gICAgICAgICAgICAnTW9yZSB0aGFuIG9uZSBjb21tYW5k
IG9uIHRoZSBzYW1lIGxpbmUgIFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XScpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnY2xhc3MgUXVhbGlm
aWVkOjpHb28gOiBwdWJsaWMgRm9vIHsKLSAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQg
Z29vKCk7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICcnKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICMgTGluZS1lbmRpbmcg
OgotICAgICAgICAgICAgJycnY2xhc3MgR29vIDoKLSAgICAgICAgICAgICAgIHB1YmxpYyBGb28g
ewotICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZ29vKCk7Ci0gICAgICAgICAgICAg
ICB9OycnJywKLSAgICAgICAgICAgICdMYWJlbHMgc2hvdWxkIGFsd2F5cyBiZSBpbmRlbnRlZCBh
dCBsZWFzdCBvbmUgc3BhY2UuICBJZiB0aGlzIGlzIGEgJwotICAgICAgICAgICAgJ21lbWJlci1p
bml0aWFsaXplciBsaXN0IGluIGEgY29uc3RydWN0b3IsIHRoZSBjb2xvbiBzaG91bGQgYmUgb24g
dGhlICcKLSAgICAgICAgICAgICdsaW5lIGFmdGVyIHRoZSBkZWZpbml0aW9uIGhlYWRlci4gIFt3
aGl0ZXNwYWNlL2xhYmVsc10gWzRdJykKLQotICAgIGRlZiB0ZXN0X25vX2Rlc3RydWN0b3Jfd2hl
bl92aXJ0dWFsX25lZWRlZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50X3JlKAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgICB2
aXJ0dWFsIHZvaWQgZm9vKCk7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICdU
aGUgY2xhc3MgRm9vIHByb2JhYmx5IG5lZWRzIGEgdmlydHVhbCBkZXN0cnVjdG9yJykKLQotICAg
IGRlZiB0ZXN0X2Rlc3RydWN0b3Jfbm9uX3ZpcnR1YWxfd2hlbl92aXJ0dWFsX25lZWRlZChzZWxm
KToKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50X3JlKAotICAgICAgICAgICAg
JycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgICB+Rm9vKCk7Ci0gICAgICAgICAgICAg
ICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAg
ICAgICAnVGhlIGNsYXNzIEZvbyBwcm9iYWJseSBuZWVkcyBhIHZpcnR1YWwgZGVzdHJ1Y3Rvcicp
Ci0KLSAgICBkZWYgdGVzdF9ub193YXJuX3doZW5fZGVyaXZlZChzZWxmKToKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIDogcHVi
bGljIEdvbyB7Ci0gICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwotICAgICAg
ICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0X2ludGVybmFs
X2JyYWNlcyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50X3JlKAot
ICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgICBlbnVtIEdvbyB7
Ci0gICAgICAgICAgICAgICAgICAgICAgIEdPTwotICAgICAgICAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwotICAgICAgICAgICAgICAgfTsnJycs
Ci0gICAgICAgICAgICAnVGhlIGNsYXNzIEZvbyBwcm9iYWJseSBuZWVkcyBhIHZpcnR1YWwgZGVz
dHJ1Y3RvcicpCi0KLSAgICBkZWYgdGVzdF9pbm5lcl9jbGFzc19uZWVkc192aXJ0dWFsX2Rlc3Ry
dWN0b3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludF9yZSgKLSAg
ICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAgICAgY2xhc3MgR29vIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGdvbygpOwotICAgICAgICAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICdUaGUgY2xhc3Mg
R29vIHByb2JhYmx5IG5lZWRzIGEgdmlydHVhbCBkZXN0cnVjdG9yJykKLQotICAgIGRlZiB0ZXN0
X291dGVyX2NsYXNzX25lZWRzX3ZpcnR1YWxfZGVzdHJ1Y3RvcihzZWxmKToKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50X3JlKAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsK
LSAgICAgICAgICAgICAgICAgICBjbGFzcyBHb28gewotICAgICAgICAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwotICAgICAgICAgICAgICAgfTsn
JycsCi0gICAgICAgICAgICAnVGhlIGNsYXNzIEZvbyBwcm9iYWJseSBuZWVkcyBhIHZpcnR1YWwg
ZGVzdHJ1Y3RvcicpCi0KLSAgICBkZWYgdGVzdF9xdWFsaWZpZWRfY2xhc3NfbmVlZHNfdmlydHVh
bF9kZXN0cnVjdG9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnRf
cmUoCi0gICAgICAgICAgICAnJydjbGFzcyBRdWFsaWZpZWQ6OkZvbyB7Ci0gICAgICAgICAgICAg
ICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAg
ICAgICAnVGhlIGNsYXNzIFF1YWxpZmllZDo6Rm9vIHByb2JhYmx5IG5lZWRzIGEgdmlydHVhbCBk
ZXN0cnVjdG9yJykKLQotICAgIGRlZiB0ZXN0X211bHRpX2xpbmVfZGVjbGFyYXRpb25fbm9fZXJy
b3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludF9yZSgKLSAgICAg
ICAgICAgICcnJ2NsYXNzIEZvbwotICAgICAgICAgICAgICAgICAgIDogcHVibGljIEdvbyB7Ci0g
ICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwotICAgICAgICAgICAgICAgfTsn
JycsCi0gICAgICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0X211bHRpX2xpbmVfZGVjbGFyYXRp
b25fd2l0aF9lcnJvcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAg
ICAgICAgICBbJ1RoaXMgeyBzaG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGlu
ZSAgJwotICAgICAgICAgICAgICdbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScsCi0gICAgICAgICAg
ICAgJ1RoZSBjbGFzcyBGb28gcHJvYmFibHkgbmVlZHMgYSB2aXJ0dWFsIGRlc3RydWN0b3IgZHVl
IHRvIGhhdmluZyAnCi0gICAgICAgICAgICAgJ3ZpcnR1YWwgbWV0aG9kKHMpLCBvbmUgZGVjbGFy
ZWQgYXQgbGluZSAyLiAgW3J1bnRpbWUvdmlydHVhbF0gWzRdJ10pCi0KLQotY2xhc3MgV2ViS2l0
U3R5bGVUZXN0KENwcGxpbnRUZXN0QmFzZSk6Ci0KLSAgICAjIGZvciBodHRwOi8vd2Via2l0Lm9y
Zy9jb2RpbmcvY29kaW5nLXN0eWxlLmh0bWwKLSAgICBkZWYgdGVzdF9pbmRlbnRhdGlvbihzZWxm
KToKLSAgICAgICAgIyAxLiBVc2Ugc3BhY2VzLCBub3QgdGFicy4gVGFicyBzaG91bGQgb25seSBh
cHBlYXIgaW4gZmlsZXMgdGhhdAotICAgICAgICAjICAgIHJlcXVpcmUgdGhlbSBmb3Igc2VtYW50
aWMgbWVhbmluZywgbGlrZSBNYWtlZmlsZXMuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludCgKLSAgICAgICAgICAgICdjbGFzcyBGb28ge1xuJwotICAgICAgICAgICAgJyAgICBp
bnQgZ29vO1xuJwotICAgICAgICAgICAgJ307JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnY2xhc3MgRm9vIHtcbicK
LSAgICAgICAgICAgICdcdGludCBnb287XG4nCi0gICAgICAgICAgICAnfTsnLAotICAgICAgICAg
ICAgJ1RhYiBmb3VuZDsgYmV0dGVyIHRvIHVzZSBzcGFjZXMgIFt3aGl0ZXNwYWNlL3RhYl0gWzFd
JykKLQotICAgICAgICAjIDIuIFRoZSBpbmRlbnQgc2l6ZSBpcyA0IHNwYWNlcy4KLSAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2NsYXNzIEZvbyB7XG4n
Ci0gICAgICAgICAgICAnICAgIGludCBnb287XG4nCi0gICAgICAgICAgICAnfTsnLAotICAgICAg
ICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAg
ICAgICdjbGFzcyBGb28ge1xuJwotICAgICAgICAgICAgJyAgIGludCBnb287XG4nCi0gICAgICAg
ICAgICAnfTsnLAotICAgICAgICAgICAgJ1dlaXJkIG51bWJlciBvZiBzcGFjZXMgYXQgbGluZS1z
dGFydC4gIEFyZSB5b3UgdXNpbmcgYSA0LXNwYWNlIGluZGVudD8gIFt3aGl0ZXNwYWNlL2luZGVu
dF0gWzNdJykKLSAgICAgICAgIyBGSVhNRTogTm8gdGVzdHMgZm9yIDgtc3BhY2VzLgotCi0gICAg
ICAgICMgMy4gSW4gYSBoZWFkZXIsIGNvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBiZSBp
bmRlbnRlZC4KLSAgICAgICAgIyBGSVhNRTogTm8gdGVzdHMgZm9yIHRoaXMgcnVsZS4KLQotICAg
ICAgICAjIDQuIEluIGFuIGltcGxlbWVudGF0aW9uIGZpbGUgKGZpbGVzIHdpdGggdGhlIGV4dGVu
c2lvbiAuY3BwLCAuYwotICAgICAgICAjICAgIG9yIC5tbSksIGNvZGUgaW5zaWRlIGEgbmFtZXNw
YWNlIHNob3VsZCBub3QgYmUgaW5kZW50ZWQuCi0gICAgICAgICMgRklYTUU6IE5vIHRlc3RzIGZv
ciB0aGlzIHJ1bGUuCi0KLSAgICAgICAgIyA1LiBBIGNhc2UgbGFiZWwgc2hvdWxkIGxpbmUgdXAg
d2l0aCBpdHMgc3dpdGNoIHN0YXRlbWVudC4gVGhlCi0gICAgICAgICMgICAgY2FzZSBzdGF0ZW1l
bnQgaXMgaW5kZW50ZWQuCi0gICAgICAgICMgRklYTUU6IE5vIHRlc3RzIGZvciB0aGlzIHJ1bGUu
IFRoZSBmb2xsb3dpbmcgc2hvdWxkIGZhaWwuCi0gICAgICAgICMgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAotICAgICAgICAjICAgICAnICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7XG4nCi0g
ICAgICAgICMgICAgICcgICAgICAgIGNhc2UgZm9vQ29uZGl0aW9uOlxuJwotICAgICAgICAjICAg
ICAnICAgICAgICBjYXNlIGJhckNvbmRpdGlvbjpcbicKLSAgICAgICAgIyAgICAgJyAgICAgICAg
ICAgIGkrKztcbicKLSAgICAgICAgIyAgICAgJyAgICAgICAgICAgIGJyZWFrO1xuJwotICAgICAg
ICAjICAgICAnICAgICAgICBkZWZhdWx0OlxuJwotICAgICAgICAjICAgICAnICAgICAgICAgICAg
aS0tO1xuJywKLSAgICAgICAgIyAgICAgJycpCi0KLSAgICAgICAgIyA2LiBCb29sZWFuIGV4cHJl
c3Npb25zIGF0IHRoZSBzYW1lIG5lc3RpbmcgbGV2ZWwgdGhhdCBzcGFuCi0gICAgICAgICMgICBt
dWx0aXBsZSBsaW5lcyBzaG91bGQgaGF2ZSB0aGVpciBvcGVyYXRvcnMgb24gdGhlIGxlZnQgc2lk
ZSBvZgotICAgICAgICAjICAgdGhlIGxpbmUgaW5zdGVhZCBvZiB0aGUgcmlnaHQgc2lkZS4KLSAg
ICAgICAgIyBGSVhNRTogTm8gdGVzdHMgZm9yIHRoaXMgcnVsZS4gVGhlIGZvbGxvd2luZyBzaG91
bGQgZmFpbC4KLSAgICAgICAgIyBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAg
ICMgICAgICcgICAgcmV0dXJuIGF0dHItPm5hbWUoKSA9PSBzcmNBdHRyIHx8XG4nCi0gICAgICAg
ICMgICAgICcgICAgICAgIGF0dHItPm5hbWUoKSA9PSBsb3dzcmNBdHRyIHx8XG4nCi0gICAgICAg
ICMgICAgICcgICAgICAgIChhdHRyLT5uYW1lKCkgPT0gdXNlbWFwQXR0ciAmJiBhdHRyLT52YWx1
ZSgpLmRvbVN0cmluZygpWzBdICE9IFwnI1wnKTtcbicsCi0gICAgICAgICMgICAgICcnKQotCi0g
ICAgZGVmIHRlc3Rfc3BhY2luZyhzZWxmKToKLSAgICAgICAgIyAxLiBEbyBub3QgcGxhY2Ugc3Bh
Y2VzIGFyb3VuZCB1bmFyeSBvcGVyYXRvcnMuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludCgKLSAgICAgICAgICAgICdpKys7JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaSArKzsnLAotICAgICAg
ICAgICAgJ0V4dHJhIHNwYWNlIGZvciBvcGVyYXRvciAgKys7ICBbd2hpdGVzcGFjZS9vcGVyYXRv
cnNdIFs0XScpCi0KLSAgICAgICAgIyAyLiBEbyBwbGFjZSBzcGFjZXMgYXJvdW5kIGJpbmFyeSBh
bmQgdGVybmFyeSBvcGVyYXRvcnMuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKLSAgICAgICAgICAgICd5ID0gbSAqIHggKyBiOycsCi0gICAgICAgICAgICAnJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2YoYSwgYik7JywK
LSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0g
ICAgICAgICAgICAnYyA9IGEgfCBiOycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ3JldHVybiBjb25kaXRpb24gPyAx
IDogMDsnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKLSAgICAgICAgICAgICd5PW0qeCtiOycsCi0gICAgICAgICAgICAnTWlzc2luZyBzcGFj
ZXMgYXJvdW5kID0gIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzRdJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2YoYSxiKTsnLAotICAgICAgICAg
ICAgJ01pc3Npbmcgc3BhY2UgYWZ0ZXIgLCAgW3doaXRlc3BhY2UvY29tbWFdIFszXScpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdjID0gYXxiOycs
Ci0gICAgICAgICAgICAnJykKLSAgICAgICAgIyBGSVhNRTogV2UgY2Fubm90IGNhdGNoIHRoaXMg
bGludCBlcnJvci4KLSAgICAgICAgIyBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAg
ICAgICMgICAgICdyZXR1cm4gY29uZGl0aW9uID8gMTowOycsCi0gICAgICAgICMgICAgICcnKQot
Ci0gICAgICAgICMgMy4gUGxhY2Ugc3BhY2VzIGJldHdlZW4gY29udHJvbCBzdGF0ZW1lbnRzIGFu
ZCB0aGVpciBwYXJlbnRoZXNlcy4KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAotICAgICAgICAgICAgJyAgICBpZiAoY29uZGl0aW9uKVxuJwotICAgICAgICAgICAgJyAgICAg
ICAgZG9JdCgpO1xuJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnICAgIGlmKGNvbmRpdGlvbilcbicKLSAgICAgICAg
ICAgICcgICAgICAgIGRvSXQoKTtcbicsCi0gICAgICAgICAgICAnTWlzc2luZyBzcGFjZSBiZWZv
cmUgKCBpbiBpZiggIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzVdJykKLQotICAgICAgICAjIDQuIERv
IG5vdCBwbGFjZSBzcGFjZXMgYmV0d2VlbiBhIGZ1bmN0aW9uIGFuZCBpdHMgcGFyZW50aGVzZXMs
Ci0gICAgICAgICMgICAgb3IgYmV0d2VlbiBhIHBhcmVudGhlc2lzIGFuZCBpdHMgY29udGVudC4K
LSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2YoYSwg
Yik7JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xp
bnQoCi0gICAgICAgICAgICAnZiAoYSwgYik7JywKLSAgICAgICAgICAgICdFeHRyYSBzcGFjZSBi
ZWZvcmUgKCBpbiBmdW5jdGlvbiBjYWxsICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs0XScpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdmKCBhLCBiICk7
JywKLSAgICAgICAgICAgIFsnRXh0cmEgc3BhY2UgYWZ0ZXIgKCBpbiBmdW5jdGlvbiBjYWxsICBb
d2hpdGVzcGFjZS9wYXJlbnNdIFs0XScsCi0gICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9y
ZSApICBbd2hpdGVzcGFjZS9wYXJlbnNdIFsyXSddKQotCi0gICAgZGVmIHRlc3RfbGluZV9icmVh
a2luZyhzZWxmKToKLSAgICAgICAgIyAxLiBFYWNoIHN0YXRlbWVudCBzaG91bGQgZ2V0IGl0cyBv
d24gbGluZS4KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAg
ICAgJyAgICB4Kys7XG4nCi0gICAgICAgICAgICAnICAgIHkrKztcbicKLSAgICAgICAgICAgICcg
ICAgaWYgKGNvbmRpdGlvbik7XG4nCi0gICAgICAgICAgICAnICAgICAgICBkb0l0KCk7XG4nLAot
ICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAg
ICAgICAgICAgICcgICAgeCsrOyB5Kys7JywKLSAgICAgICAgICAgICdNb3JlIHRoYW4gb25lIGNv
bW1hbmQgb24gdGhlIHNhbWUgbGluZSAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJykKLSAgICAg
ICAgIyBGSVhNRTogTWFrZSB0aGlzIGZhaWwuCi0gICAgICAgICMgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAotICAgICAgICAjICAgICAnICAgIGlmIChjb25kaXRpb24pIGRvSXQoKTtcbics
Ci0gICAgICAgICMgICAgICcnKQotCi0gICAgICAgICMgMi4gQW4gZWxzZSBzdGF0ZW1lbnQgc2hv
dWxkIGdvIG9uIHRoZSBzYW1lIGxpbmUgYXMgYSBwcmVjZWRpbmcKLSAgICAgICAgIyAgIGNsb3Nl
IGJyYWNlIGlmIG9uZSBpcyBwcmVzZW50LCBlbHNlIGl0IHNob3VsZCBsaW5lIHVwIHdpdGggdGhl
Ci0gICAgICAgICMgICBpZiBzdGF0ZW1lbnQuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludCgKLSAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKSB7XG4nCi0gICAgICAgICAgICAn
ICAgIGRvU29tZXRoaW5nKCk7XG4nCi0gICAgICAgICAgICAnfSBlbHNlIHtcbicKLSAgICAgICAg
ICAgICcgICAgZG9Tb21ldGhpbmdFbHNlKCk7XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAgICAg
ICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAg
ICAgICAnaWYgKGNvbmRpdGlvbilcbicKLSAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmcoKTtc
bicKLSAgICAgICAgICAgICdlbHNlXG4nCi0gICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nRWxz
ZSgpO1xuJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCi0gICAgICAgICAgICAnaWYgKGNvbmRpdGlvbilcbicKLSAgICAgICAgICAgICcgICAg
ZG9Tb21ldGhpbmcoKTtcbicKLSAgICAgICAgICAgICdlbHNlIHtcbicKLSAgICAgICAgICAgICcg
ICAgZG9Tb21ldGhpbmdFbHNlKCk7XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAg
ICcnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAg
ICdpZiAoY29uZGl0aW9uKSB7XG4nCi0gICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nKCk7XG4n
Ci0gICAgICAgICAgICAnfVxuJwotICAgICAgICAgICAgJ2Vsc2Uge1xuJwotICAgICAgICAgICAg
JyAgICBkb1NvbWV0aGluZ0Vsc2UoKTtcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAg
ICAgJ0FuIGVsc2Ugc2hvdWxkIGFwcGVhciBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBwcmVjZWRp
bmcgfSAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVs
dGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2lmIChjb25kaXRpb24pIGRvU29tZXRoaW5nKCk7
IGVsc2UgZG9Tb21ldGhpbmdFbHNlKCk7XG4nLAotICAgICAgICAgICAgWydNb3JlIHRoYW4gb25l
IGNvbW1hbmQgb24gdGhlIHNhbWUgbGluZSAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJywKLSAg
ICAgICAgICAgICAnRWxzZSBjbGF1c2Ugc2hvdWxkIG5ldmVyIGJlIG9uIHNhbWUgbGluZSBhcyBl
bHNlICh1c2UgMiBsaW5lcykgIFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XSddKQotICAgICAgICAj
IEZJWE1FOiBNYWtlIHRoaXMgZmFpbC4KLSAgICAgICAgIyBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCi0gICAgICAgICMgICAgICdpZiAoY29uZGl0aW9uKSBkb1NvbWV0aGluZygpOyBlbHNl
IHtcbicKLSAgICAgICAgIyAgICAgJyAgICBkb1NvbWV0aGluZ0Vsc2UoKTtcbicKLSAgICAgICAg
IyAgICAgJ31cbicsCi0gICAgICAgICMgICAgICcnKQotCi0gICAgICAgICMgMy4gQW4gZWxzZSBp
ZiBzdGF0ZW1lbnQgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgYW4gaWYgc3RhdGVtZW50Ci0gICAgICAg
ICMgICAgd2hlbiB0aGUgcHJpb3IgaWYgY29uY2x1ZGVzIHdpdGggYSByZXR1cm4gc3RhdGVtZW50
LgotICAgICAgICAjIEZJWE1FOiBObyB0ZXN0cyBmb3IgdGhpcy4KLQotICAgIGRlZiB0ZXN0X2Jy
YWNlcyhzZWxmKToKLSAgICAgICAgIyAxLiBGdW5jdGlvbiBkZWZpbml0aW9uczogcGxhY2UgZWFj
aCBicmFjZSBvbiBpdHMgb3duIGxpbmUuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKLSAgICAgICAgICAgICdpbnQgbWFpbigpXG4nCi0gICAgICAgICAgICAne1xuJwotICAg
ICAgICAgICAgJyAgICBkb1NvbWV0aGluZygpO1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAg
ICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAg
ICAgICAgJ2ludCBtYWluKCkge1xuJwotICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZygpO1xu
JwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAnUGxhY2UgYnJhY2Ugb24gaXRzIG93
biBsaW5lIGZvciBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRd
JykKLQotICAgICAgICAjIDIuIE90aGVyIGJyYWNlczogcGxhY2UgdGhlIG9wZW4gYnJhY2Ugb24g
dGhlIGxpbmUgcHJlY2VkaW5nIHRoZQotICAgICAgICAjICAgIGNvZGUgYmxvY2s7IHBsYWNlIHRo
ZSBjbG9zZSBicmFjZSBvbiBpdHMgb3duIGxpbmUuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRp
X2xpbmVfbGludCgKLSAgICAgICAgICAgICdjbGFzcyBNeUNsYXNzIHtcbicKLSAgICAgICAgICAg
ICcgICAgaW50IGZvbztcbicKLSAgICAgICAgICAgICd9O1xuJywKLSAgICAgICAgICAgICcnKQot
ICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnbmFtZXNw
YWNlIFdlYkNvcmUge1xuJwotICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJwotICAgICAgICAg
ICAgJ307XG4nLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludCgKLSAgICAgICAgICAgICdmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHtcbicK
LSAgICAgICAgICAgICcgICAgRG9Tb21ldGhpbmcoKTtcbicKLSAgICAgICAgICAgICd9O1xuJywK
LSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0g
ICAgICAgICAgICAnY2xhc3MgTXlDbGFzc1xuJwotICAgICAgICAgICAgJ3tcbicKLSAgICAgICAg
ICAgICcgICAgaW50IGZvbztcbicKLSAgICAgICAgICAgICd9O1xuJywKLSAgICAgICAgICAgICdU
aGlzIHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUgIFt3aGl0ZXNw
YWNlL2JyYWNlc10gWzRdJykKLQotICAgICAgICAjIDMuIE9uZS1saW5lIGNvbnRyb2wgY2xhdXNl
cyBzaG91bGQgbm90IHVzZSBicmFjZXMgdW5sZXNzCi0gICAgICAgICMgICAgY29tbWVudHMgYXJl
IGluY2x1ZGVkIG9yIGEgc2luZ2xlIHN0YXRlbWVudCBzcGFucyBtdWx0aXBsZQotICAgICAgICAj
ICAgIGxpbmVzLgotICAgICAgICAjIEZJWE1FOiBObyB0ZXN0cyBmb3IgdGhpcyBydWxlLgotCi0g
ICAgICAgICMgNC4gQ29udHJvbCBjbGF1c2VzIHdpdGhvdXQgYSBib2R5IHNob3VsZCB1c2UgZW1w
dHkgYnJhY2VzLgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAg
ICAgICAnZm9yICggOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dCkgeyB9XG4nLAot
ICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAg
ICAgICAgICAgICdmb3IgKCA7IGN1cnJlbnQ7XG4nCi0gICAgICAgICAgICAnICAgICBjdXJyZW50
ID0gY3VycmVudC0+bmV4dCkge31cbicsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2ZvciAoIDsgY3VycmVudDsgY3Vy
cmVudCA9IGN1cnJlbnQtPm5leHQpO1xuJywKLSAgICAgICAgICAgICdTZW1pY29sb24gZGVmaW5p
bmcgZW1wdHkgc3RhdGVtZW50IGZvciB0aGlzIGxvb3AuIFVzZSB7IH0gaW5zdGVhZC4gIFt3aGl0
ZXNwYWNlL3NlbWljb2xvbl0gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50KAotICAgICAgICAgICAgJ3doaWxlICh0cnVlKTtcbicsCi0gICAgICAgICAgICAnU2VtaWNv
bG9uIGRlZmluaW5nIGVtcHR5IHN0YXRlbWVudCBmb3IgdGhpcyBsb29wLiBVc2UgeyB9IGluc3Rl
YWQuICBbd2hpdGVzcGFjZS9zZW1pY29sb25dIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICd9IHdoaWxlICh0cnVlKTtcbicsCi0gICAgICAg
ICAgICAnJykKLQotICAgIGRlZiB0ZXN0X251bGxfZmFsc2VfemVybyhzZWxmKToKLSAgICAgICAg
IyAxLiBJbiBDKyssIHRoZSBudWxsIHBvaW50ZXIgdmFsdWUgc2hvdWxkIGJlIHdyaXR0ZW4gYXMg
MC4gSW4gQywKLSAgICAgICAgIyAgICBpdCBzaG91bGQgYmUgd3JpdHRlbiBhcyBOVUxMLiBJbiBP
YmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKywKLSAgICAgICAgIyAgICBmb2xsb3cgdGhlIGd1
aWRlbGluZSBmb3IgQyBvciBDKyssIHJlc3BlY3RpdmVseSwgYnV0IHVzZSBuaWwgdG8KLSAgICAg
ICAgIyAgICByZXByZXNlbnQgYSBudWxsIE9iamVjdGl2ZS1DIG9iamVjdC4KLSAgICAgICAgIyBG
SVhNRTogSW1wbGVtZW50IHRoaXMuCi0KLSAgICAgICAgIyAyLiBDKysgYW5kIEMgYm9vbCB2YWx1
ZXMgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgdHJ1ZSBhbmQKLSAgICAgICAgIyAgICBmYWxzZS4gT2Jq
ZWN0aXZlLUMgQk9PTCB2YWx1ZXMgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgWUVTIGFuZCBOTy4KLSAg
ICAgICAgIyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0KLSAgICAgICAgIyAzLiBUZXN0cyBmb3Ig
dHJ1ZS9mYWxzZSwgbnVsbC9ub24tbnVsbCwgYW5kIHplcm8vbm9uLXplcm8gc2hvdWxkCi0gICAg
ICAgICMgICAgYWxsIGJlIGRvbmUgd2l0aG91dCBlcXVhbGl0eSBjb21wYXJpc29ucy4KLSAgICAg
ICAgIyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0ZXN0
X25hbWVzKHNlbGYpOgotICAgICAgICAjIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLSAgICAgICAg
cGFzcwotCi0gICAgZGVmIHRlc3Rfb3RoZXIoc2VsZik6Ci0gICAgICAgICMgRklYTUU6IEltcGxl
bWVudCB0aGlzLgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgdGVzdF9pbmNsdWRlKHNlbGYpOgot
ICAgICAgICAjIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLSAgICAgICAgcGFzcwotCi0KLWRlZiB0
ZWFyRG93bigpOgotICAgICIiIkEgZ2xvYmFsIGNoZWNrIHRvIG1ha2Ugc3VyZSBhbGwgZXJyb3It
Y2F0ZWdvcmllcyBoYXZlIGJlZW4gdGVzdGVkLgotCi0gICAgVGhlIG1haW4gdGVhckRvd24oKSBy
b3V0aW5lIGlzIHRoZSBvbmx5IGNvZGUgd2UgY2FuIGd1YXJhbnRlZSB3aWxsIGJlCi0gICAgcnVu
IGFmdGVyIGFsbCBvdGhlciB0ZXN0cyBoYXZlIGJlZW4gZXhlY3V0ZWQuCi0gICAgIiIiCi0gICAg
dHJ5OgotICAgICAgICBpZiBfcnVuX3ZlcmlmeWFsbGNhdGVnb3JpZXNzZWVuOgotICAgICAgICAg
ICAgRXJyb3JDb2xsZWN0b3IoTm9uZSkudmVyaWZ5X2FsbF9jYXRlZ29yaWVzX2FyZV9zZWVuKCkK
LSAgICBleGNlcHQgTmFtZUVycm9yOgotICAgICAgICAjIElmIG5vYm9keSBzZXQgdGhlIGdsb2Jh
bCBfcnVuX3ZlcmlmeWFsbGNhdGVnb3JpZXNzZWVuLCB0aGVuCi0gICAgICAgICMgd2UgYXNzdW1l
IHdlIHNob3VsZG4ndCBydW4gdGhlIHRlc3QKLSAgICAgICAgcGFzcwotCi1pZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgotICAgIGltcG9ydCBzeXMKLSAgICAjIFdlIGRvbid0IHdhbnQgdG8gcnVu
IHRoZSB2ZXJpZnlfYWxsX2NhdGVnb3JpZXNfYXJlX3NlZW4oKSB0ZXN0IHVubGVzcwotICAgICMg
d2UncmUgcnVubmluZyB0aGUgZnVsbCB0ZXN0IHN1aXRlOiBpZiB3ZSBvbmx5IHJ1biBvbmUgdGVz
dCwKLSAgICAjIG9idmlvdXNseSB3ZSdyZSBub3QgZ29pbmcgdG8gc2VlIGFsbCB0aGUgZXJyb3Ig
Y2F0ZWdvcmllcy4gIFNvIHdlCi0gICAgIyBvbmx5IHJ1biB2ZXJpZnlfYWxsX2NhdGVnb3JpZXNf
YXJlX3NlZW4oKSB3aGVuIG5vIGNvbW1hbmRsaW5lIGZsYWdzCi0gICAgIyBhcmUgcGFzc2VkIGlu
LgotICAgIGdsb2JhbCBfcnVuX3ZlcmlmeWFsbGNhdGVnb3JpZXNzZWVuCi0gICAgX3J1bl92ZXJp
ZnlhbGxjYXRlZ29yaWVzc2VlbiA9IChsZW4oc3lzLmFyZ3YpID09IDEpCi0KLSAgICB1bml0dGVz
dC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcHBsaW50
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnQucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1NDkyMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcHBsaW50LnB5CkBAIC0wLDAgKzEsMjgyNSBAQAorIyEv
dXNyL2Jpbi9weXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFRoaXMgaXMgdGhlIG1vZGlmaWVk
IHZlcnNpb24gb2YgR29vZ2xlJ3MgY3BwbGludC4gVGhlIG9yaWdpbmFsIGNvZGUgaXMKKyMgaHR0
cDovL2dvb2dsZS1zdHlsZWd1aWRlLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9jcHBsaW50L2Nw
cGxpbnQucHkKKworIiIiRG9lcyBXZWJLaXQtbGludCBvbiBjKysgZmlsZXMuCisKK1RoZSBnb2Fs
IG9mIHRoaXMgc2NyaXB0IGlzIHRvIGlkZW50aWZ5IHBsYWNlcyBpbiB0aGUgY29kZSB0aGF0ICpt
YXkqCitiZSBpbiBub24tY29tcGxpYW5jZSB3aXRoIFdlYktpdCBzdHlsZS4gIEl0IGRvZXMgbm90
IGF0dGVtcHQgdG8gZml4Cit1cCB0aGVzZSBwcm9ibGVtcyAtLSB0aGUgcG9pbnQgaXMgdG8gZWR1
Y2F0ZS4gIEl0IGRvZXMgYWxzbyBub3QKK2F0dGVtcHQgdG8gZmluZCBhbGwgcHJvYmxlbXMsIG9y
IHRvIGVuc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgaXQgZG9lcworZmluZCBpcyBsZWdpdGltYXRlbHkg
YSBwcm9ibGVtLgorCitJbiBwYXJ0aWN1bGFyLCB3ZSBjYW4gZ2V0IHZlcnkgY29uZnVzZWQgYnkg
LyogYW5kIC8vIGluc2lkZSBzdHJpbmdzIQorV2UgZG8gYSBzbWFsbCBoYWNrLCB3aGljaCBpcyB0
byBpZ25vcmUgLy8ncyB3aXRoICIncyBhZnRlciB0aGVtIG9uIHRoZQorc2FtZSBsaW5lLCBidXQg
aXQgaXMgZmFyIGZyb20gcGVyZmVjdCAoaW4gZWl0aGVyIGRpcmVjdGlvbikuCisiIiIKKworaW1w
b3J0IGNvZGVjcworaW1wb3J0IGdldG9wdAoraW1wb3J0IG1hdGggICMgZm9yIGxvZworaW1wb3J0
IG9zCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHJlCitpbXBvcnQgc3JlX2NvbXBpbGUKK2ltcG9y
dCBzdHJpbmcKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bmljb2RlZGF0YQorCisKK19VU0FHRSA9ICIi
IgorU3ludGF4OiBjcHBsaW50LnB5IFstLXZlcmJvc2U9I10gWy0tb3V0cHV0PXZzN10gWy0tZmls
dGVyPS14LCt5LC4uLl0KKyAgICAgICAgPGZpbGU+IFtmaWxlXSAuLi4KKworICBUaGUgc3R5bGUg
Z3VpZGVsaW5lcyB0aGlzIHRyaWVzIHRvIGZvbGxvdyBhcmUgdGhvc2UgaW4KKyAgICBodHRwOi8v
d2Via2l0Lm9yZy9jb2RpbmcvY29kaW5nLXN0eWxlLmh0bWwKKworICBFdmVyeSBwcm9ibGVtIGlz
IGdpdmVuIGEgY29uZmlkZW5jZSBzY29yZSBmcm9tIDEtNSwgd2l0aCA1IG1lYW5pbmcgd2UgYXJl
CisgIGNlcnRhaW4gb2YgdGhlIHByb2JsZW0sIGFuZCAxIG1lYW5pbmcgaXQgY291bGQgYmUgYSBs
ZWdpdGltYXRlIGNvbnN0cnVjdC4KKyAgVGhpcyB3aWxsIG1pc3Mgc29tZSBlcnJvcnMsIGFuZCBp
cyBub3QgYSBzdWJzdGl0dXRlIGZvciBhIGNvZGUgcmV2aWV3LgorCisgIFRvIHByZXZlbnQgc3Bl
Y2lmaWMgbGluZXMgZnJvbSBiZWluZyBsaW50ZWQsIGFkZCBhICcvLyBOT0xJTlQnIGNvbW1lbnQg
dG8gdGhlCisgIGVuZCBvZiB0aGUgbGluZS4KKworICBUaGUgZmlsZXMgcGFzc2VkIGluIHdpbGwg
YmUgbGludGVkOyBhdCBsZWFzdCBvbmUgZmlsZSBtdXN0IGJlIHByb3ZpZGVkLgorICBMaW50ZWQg
ZXh0ZW5zaW9ucyBhcmUgLmNjLCAuY3BwLCBhbmQgLmguICBPdGhlciBmaWxlIHR5cGVzIHdpbGwg
YmUgaWdub3JlZC4KKworICBGbGFnczoKKworICAgIG91dHB1dD12czcKKyAgICAgIEJ5IGRlZmF1
bHQsIHRoZSBvdXRwdXQgaXMgZm9ybWF0dGVkIHRvIGVhc2UgZW1hY3MgcGFyc2luZy4gIFZpc3Vh
bCBTdHVkaW8KKyAgICAgIGNvbXBhdGlibGUgb3V0cHV0ICh2czcpIG1heSBhbHNvIGJlIHVzZWQu
ICBPdGhlciBmb3JtYXRzIGFyZSB1bnN1cHBvcnRlZC4KKworICAgIHZlcmJvc2U9IworICAgICAg
U3BlY2lmeSBhIG51bWJlciAwLTUgdG8gcmVzdHJpY3QgZXJyb3JzIHRvIGNlcnRhaW4gdmVyYm9z
aXR5IGxldmVscy4KKworICAgIGZpbHRlcj0teCwreSwuLi4KKyAgICAgIFNwZWNpZnkgYSBjb21t
YS1zZXBhcmF0ZWQgbGlzdCBvZiBjYXRlZ29yeS1maWx0ZXJzIHRvIGFwcGx5OiBvbmx5CisgICAg
ICBlcnJvciBtZXNzYWdlcyB3aG9zZSBjYXRlZ29yeSBuYW1lcyBwYXNzIHRoZSBmaWx0ZXJzIHdp
bGwgYmUgcHJpbnRlZC4KKyAgICAgIChDYXRlZ29yeSBuYW1lcyBhcmUgcHJpbnRlZCB3aXRoIHRo
ZSBtZXNzYWdlIGFuZCBsb29rIGxpa2UKKyAgICAgICJbd2hpdGVzcGFjZS9pbmRlbnRdIi4pICBG
aWx0ZXJzIGFyZSBldmFsdWF0ZWQgbGVmdCB0byByaWdodC4KKyAgICAgICItRk9PIiBhbmQgIkZP
TyIgbWVhbnMgImRvIG5vdCBwcmludCBjYXRlZ29yaWVzIHRoYXQgc3RhcnQgd2l0aCBGT08iLgor
ICAgICAgIitGT08iIG1lYW5zICJkbyBwcmludCBjYXRlZ29yaWVzIHRoYXQgc3RhcnQgd2l0aCBG
T08iLgorCisgICAgICBFeGFtcGxlczogLS1maWx0ZXI9LXdoaXRlc3BhY2UsK3doaXRlc3BhY2Uv
YnJhY2VzCisgICAgICAgICAgICAgICAgLS1maWx0ZXI9d2hpdGVzcGFjZSxydW50aW1lL3ByaW50
ZiwrcnVudGltZS9wcmludGZfZm9ybWF0CisgICAgICAgICAgICAgICAgLS1maWx0ZXI9LSwrYnVp
bGQvaW5jbHVkZV93aGF0X3lvdV91c2UKKworICAgICAgVG8gc2VlIGEgbGlzdCBvZiBhbGwgdGhl
IGNhdGVnb3JpZXMgdXNlZCBpbiBjcHBsaW50LCBwYXNzIG5vIGFyZzoKKyAgICAgICAgIC0tZmls
dGVyPQorIiIiCisKKyMgV2UgY2F0ZWdvcml6ZSBlYWNoIGVycm9yIG1lc3NhZ2Ugd2UgcHJpbnQu
ICBIZXJlIGFyZSB0aGUgY2F0ZWdvcmllcy4KKyMgV2Ugd2FudCBhbiBleHBsaWNpdCBsaXN0IHNv
IHdlIGNhbiBsaXN0IHRoZW0gYWxsIGluIGNwcGxpbnQgLS1maWx0ZXI9LgorIyBJZiB5b3UgYWRk
IGEgbmV3IGVycm9yIG1lc3NhZ2Ugd2l0aCBhIG5ldyBjYXRlZ29yeSwgYWRkIGl0IHRvIHRoZSBs
aXN0CisjIGhlcmUhICBjcHBsaW50X3VuaXR0ZXN0LnB5IHNob3VsZCB0ZWxsIHlvdSBpZiB5b3Ug
Zm9yZ2V0IHRvIGRvIHRoaXMuCisjIFwgdXNlZCBmb3IgY2xlYXJlciBsYXlvdXQgLS0gcHlsaW50
OiBkaXNhYmxlLW1zZz1DNjAxMworX0VSUk9SX0NBVEVHT1JJRVMgPSAnJydcCisgICAgYnVpbGQv
Y2xhc3MKKyAgICBidWlsZC9kZXByZWNhdGVkCisgICAgYnVpbGQvZW5kaWZfY29tbWVudAorICAg
IGJ1aWxkL2ZvcndhcmRfZGVjbAorICAgIGJ1aWxkL2hlYWRlcl9ndWFyZAorICAgIGJ1aWxkL2lu
Y2x1ZGUKKyAgICBidWlsZC9pbmNsdWRlX29yZGVyCisgICAgYnVpbGQvaW5jbHVkZV93aGF0X3lv
dV91c2UKKyAgICBidWlsZC9uYW1lc3BhY2VzCisgICAgYnVpbGQvcHJpbnRmX2Zvcm1hdAorICAg
IGJ1aWxkL3N0b3JhZ2VfY2xhc3MKKyAgICBsZWdhbC9jb3B5cmlnaHQKKyAgICByZWFkYWJpbGl0
eS9icmFjZXMKKyAgICByZWFkYWJpbGl0eS9jYXN0aW5nCisgICAgcmVhZGFiaWxpdHkvY2hlY2sK
KyAgICByZWFkYWJpbGl0eS9jb25zdHJ1Y3RvcnMKKyAgICByZWFkYWJpbGl0eS9mbl9zaXplCisg
ICAgcmVhZGFiaWxpdHkvZnVuY3Rpb24KKyAgICByZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVu
dAorICAgIHJlYWRhYmlsaXR5L211bHRpbGluZV9zdHJpbmcKKyAgICByZWFkYWJpbGl0eS9zdHJl
YW1zCisgICAgcmVhZGFiaWxpdHkvdG9kbworICAgIHJlYWRhYmlsaXR5L3V0ZjgKKyAgICBydW50
aW1lL2FycmF5cworICAgIHJ1bnRpbWUvY2FzdGluZworICAgIHJ1bnRpbWUvZXhwbGljaXQKKyAg
ICBydW50aW1lL2ludAorICAgIHJ1bnRpbWUvaW5pdAorICAgIHJ1bnRpbWUvaW52YWxpZF9pbmNy
ZW1lbnQKKyAgICBydW50aW1lL21lbXNldAorICAgIHJ1bnRpbWUvcHJpbnRmCisgICAgcnVudGlt
ZS9wcmludGZfZm9ybWF0CisgICAgcnVudGltZS9yZWZlcmVuY2VzCisgICAgcnVudGltZS9ydHRp
CisgICAgcnVudGltZS9zaXplb2YKKyAgICBydW50aW1lL3N0cmluZworICAgIHJ1bnRpbWUvdGhy
ZWFkc2FmZV9mbgorICAgIHJ1bnRpbWUvdmlydHVhbAorICAgIHdoaXRlc3BhY2UvYmxhbmtfbGlu
ZQorICAgIHdoaXRlc3BhY2UvYnJhY2VzCisgICAgd2hpdGVzcGFjZS9jb21tYQorICAgIHdoaXRl
c3BhY2UvY29tbWVudHMKKyAgICB3aGl0ZXNwYWNlL2VuZF9vZl9saW5lCisgICAgd2hpdGVzcGFj
ZS9lbmRpbmdfbmV3bGluZQorICAgIHdoaXRlc3BhY2UvaW5kZW50CisgICAgd2hpdGVzcGFjZS9s
YWJlbHMKKyAgICB3aGl0ZXNwYWNlL2xpbmVfbGVuZ3RoCisgICAgd2hpdGVzcGFjZS9uZXdsaW5l
CisgICAgd2hpdGVzcGFjZS9vcGVyYXRvcnMKKyAgICB3aGl0ZXNwYWNlL3BhcmVucworICAgIHdo
aXRlc3BhY2Uvc2VtaWNvbG9uCisgICAgd2hpdGVzcGFjZS90YWIKKyAgICB3aGl0ZXNwYWNlL3Rv
ZG8KKycnJworCisjIFRoZSBkZWZhdWx0IHN0YXRlIG9mIHRoZSBjYXRlZ29yeSBmaWx0ZXIuIFRo
aXMgaXMgb3ZlcnJpZGVkIGJ5IHRoZSAtLWZpbHRlcj0KKyMgZmxhZy4gQnkgZGVmYXVsdCBhbGwg
ZXJyb3JzIGFyZSBvbiwgc28gb25seSBhZGQgaGVyZSBjYXRlZ29yaWVzIHRoYXQgc2hvdWxkIGJl
CisjIG9mZiBieSBkZWZhdWx0IChpLmUuLCBjYXRlZ29yaWVzIHRoYXQgbXVzdCBiZSBlbmFibGVk
IGJ5IHRoZSAtLWZpbHRlcj0gZmxhZ3MpLgorIyBBbGwgZW50cmllcyBoZXJlIHNob3VsZCBzdGFy
dCB3aXRoIGEgJy0nIG9yICcrJywgYXMgaW4gdGhlIC0tZmlsdGVyPSBmbGFnLgorX0RFRkFVTFRf
RklMVEVSUyA9IFtdCisKKyMgSGVhZGVycyB0aGF0IHdlIGNvbnNpZGVyIFNUTCBoZWFkZXJzLgor
X1NUTF9IRUFERVJTID0gZnJvemVuc2V0KFsKKyAgICAnYWxnb2Jhc2UuaCcsICdhbGdvcml0aG0n
LCAnYWxsb2MuaCcsICdiaXRzZXQnLCAnZGVxdWUnLCAnZXhjZXB0aW9uJywKKyAgICAnZnVuY3Rp
b24uaCcsICdmdW5jdGlvbmFsJywgJ2hhc2hfbWFwJywgJ2hhc2hfbWFwLmgnLCAnaGFzaF9zZXQn
LAorICAgICdoYXNoX3NldC5oJywgJ2l0ZXJhdG9yJywgJ2xpc3QnLCAnbGlzdC5oJywgJ21hcCcs
ICdtZW1vcnknLCAncGFpci5oJywKKyAgICAncHRocmVhZF9hbGxvYycsICdxdWV1ZScsICdzZXQn
LCAnc2V0LmgnLCAnc3N0cmVhbScsICdzdGFjaycsCisgICAgJ3N0bF9hbGxvYy5oJywgJ3N0bF9y
ZWxvcHMuaCcsICd0eXBlX3RyYWl0cy5oJywKKyAgICAndXRpbGl0eScsICd2ZWN0b3InLCAndmVj
dG9yLmgnLAorICAgIF0pCisKKworIyBOb24tU1RMIEMrKyBzeXN0ZW0gaGVhZGVycy4KK19DUFBf
SEVBREVSUyA9IGZyb3plbnNldChbCisgICAgJ2FsZ28uaCcsICdidWlsdGluYnVmLmgnLCAnYnZl
Y3Rvci5oJywgJ2Nhc3NlcnQnLCAnY2N0eXBlJywKKyAgICAnY2Vycm5vJywgJ2NmbG9hdCcsICdj
aXNvNjQ2JywgJ2NsaW1pdHMnLCAnY2xvY2FsZScsICdjbWF0aCcsCisgICAgJ2NvbXBsZXgnLCAn
Y29tcGxleC5oJywgJ2NzZXRqbXAnLCAnY3NpZ25hbCcsICdjc3RkYXJnJywgJ2NzdGRkZWYnLAor
ICAgICdjc3RkaW8nLCAnY3N0ZGxpYicsICdjc3RyaW5nJywgJ2N0aW1lJywgJ2N3Y2hhcicsICdj
d2N0eXBlJywKKyAgICAnZGVmYWxsb2MuaCcsICdkZXF1ZS5oJywgJ2VkaXRidWYuaCcsICdleGNl
cHRpb24nLCAnZnN0cmVhbScsCisgICAgJ2ZzdHJlYW0uaCcsICdoYXNodGFibGUuaCcsICdoZWFw
LmgnLCAnaW5kc3RyZWFtLmgnLCAnaW9tYW5pcCcsCisgICAgJ2lvbWFuaXAuaCcsICdpb3MnLCAn
aW9zZndkJywgJ2lvc3RyZWFtJywgJ2lvc3RyZWFtLmgnLCAnaXN0cmVhbS5oJywKKyAgICAnaXRl
cmF0b3IuaCcsICdsaW1pdHMnLCAnbWFwLmgnLCAnbXVsdGltYXAuaCcsICdtdWx0aXNldC5oJywK
KyAgICAnbnVtZXJpYycsICdvc3RyZWFtLmgnLCAncGFyc2VzdHJlYW0uaCcsICdwZnN0cmVhbS5o
JywgJ1Bsb3RGaWxlLmgnLAorICAgICdwcm9jYnVmLmgnLCAncHRocmVhZF9hbGxvYy5oJywgJ3Jv
cGUnLCAncm9wZS5oJywgJ3JvcGVpbXBsLmgnLAorICAgICdTRmlsZS5oJywgJ3NsaXN0JywgJ3Ns
aXN0LmgnLCAnc3RhY2suaCcsICdzdGRleGNlcHQnLAorICAgICdzdGRpb3N0cmVhbS5oJywgJ3N0
cmVhbWJ1Zi5oJywgJ3N0cmVhbS5oJywgJ3N0cmZpbGUuaCcsICdzdHJpbmcnLAorICAgICdzdHJz
dHJlYW0nLCAnc3Ryc3RyZWFtLmgnLCAndGVtcGJ1Zi5oJywgJ3RyZWUuaCcsICd0eXBlaW5mbycs
ICd2YWxhcnJheScsCisgICAgXSkKKworCisjIEFzc2VydGlvbiBtYWNyb3MuICBUaGVzZSBhcmUg
ZGVmaW5lZCBpbiBiYXNlL2xvZ2dpbmcuaCBhbmQKKyMgdGVzdGluZy9iYXNlL2d1bml0LmguICBO
b3RlIHRoYXQgdGhlIF9NIHZlcnNpb25zIG5lZWQgdG8gY29tZSBmaXJzdAorIyBmb3Igc3Vic3Ry
aW5nIG1hdGNoaW5nIHRvIHdvcmsuCitfQ0hFQ0tfTUFDUk9TID0gWworICAgICdEQ0hFQ0snLCAn
Q0hFQ0snLAorICAgICdFWFBFQ1RfVFJVRV9NJywgJ0VYUEVDVF9UUlVFJywKKyAgICAnQVNTRVJU
X1RSVUVfTScsICdBU1NFUlRfVFJVRScsCisgICAgJ0VYUEVDVF9GQUxTRV9NJywgJ0VYUEVDVF9G
QUxTRScsCisgICAgJ0FTU0VSVF9GQUxTRV9NJywgJ0FTU0VSVF9GQUxTRScsCisgICAgXQorCisj
IFJlcGxhY2VtZW50IG1hY3JvcyBmb3IgQ0hFQ0svRENIRUNLL0VYUEVDVF9UUlVFL0VYUEVDVF9G
QUxTRQorX0NIRUNLX1JFUExBQ0VNRU5UID0gZGljdChbKG0sIHt9KSBmb3IgbSBpbiBfQ0hFQ0tf
TUFDUk9TXSkKKworZm9yIG9wLCByZXBsYWNlbWVudCBpbiBbKCc9PScsICdFUScpLCAoJyE9Jywg
J05FJyksCisgICAgICAgICAgICAgICAgICAgICAgICAoJz49JywgJ0dFJyksICgnPicsICdHVCcp
LAorICAgICAgICAgICAgICAgICAgICAgICAgKCc8PScsICdMRScpLCAoJzwnLCAnTFQnKV06Cisg
ICAgX0NIRUNLX1JFUExBQ0VNRU5UWydEQ0hFQ0snXVtvcF0gPSAnRENIRUNLXyVzJyAlIHJlcGxh
Y2VtZW50CisgICAgX0NIRUNLX1JFUExBQ0VNRU5UWydDSEVDSyddW29wXSA9ICdDSEVDS18lcycg
JSByZXBsYWNlbWVudAorICAgIF9DSEVDS19SRVBMQUNFTUVOVFsnRVhQRUNUX1RSVUUnXVtvcF0g
PSAnRVhQRUNUXyVzJyAlIHJlcGxhY2VtZW50CisgICAgX0NIRUNLX1JFUExBQ0VNRU5UWydBU1NF
UlRfVFJVRSddW29wXSA9ICdBU1NFUlRfJXMnICUgcmVwbGFjZW1lbnQKKyAgICBfQ0hFQ0tfUkVQ
TEFDRU1FTlRbJ0VYUEVDVF9UUlVFX00nXVtvcF0gPSAnRVhQRUNUXyVzX00nICUgcmVwbGFjZW1l
bnQKKyAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0FTU0VSVF9UUlVFX00nXVtvcF0gPSAnQVNTRVJU
XyVzX00nICUgcmVwbGFjZW1lbnQKKworZm9yIG9wLCBpbnZfcmVwbGFjZW1lbnQgaW4gWygnPT0n
LCAnTkUnKSwgKCchPScsICdFUScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPj0n
LCAnTFQnKSwgKCc+JywgJ0xFJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc8PScs
ICdHVCcpLCAoJzwnLCAnR0UnKV06CisgICAgX0NIRUNLX1JFUExBQ0VNRU5UWydFWFBFQ1RfRkFM
U0UnXVtvcF0gPSAnRVhQRUNUXyVzJyAlIGludl9yZXBsYWNlbWVudAorICAgIF9DSEVDS19SRVBM
QUNFTUVOVFsnQVNTRVJUX0ZBTFNFJ11bb3BdID0gJ0FTU0VSVF8lcycgJSBpbnZfcmVwbGFjZW1l
bnQKKyAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0VYUEVDVF9GQUxTRV9NJ11bb3BdID0gJ0VYUEVD
VF8lc19NJyAlIGludl9yZXBsYWNlbWVudAorICAgIF9DSEVDS19SRVBMQUNFTUVOVFsnQVNTRVJU
X0ZBTFNFX00nXVtvcF0gPSAnQVNTRVJUXyVzX00nICUgaW52X3JlcGxhY2VtZW50CisKKworIyBU
aGVzZSBjb25zdGFudHMgZGVmaW5lIHR5cGVzIG9mIGhlYWRlcnMgZm9yIHVzZSB3aXRoCisjIF9J
bmNsdWRlU3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKCkuCitfQ19TWVNfSEVBREVSID0g
MQorX0NQUF9TWVNfSEVBREVSID0gMgorX0xJS0VMWV9NWV9IRUFERVIgPSAzCitfUE9TU0lCTEVf
TVlfSEVBREVSID0gNAorX09USEVSX0hFQURFUiA9IDUKKworCitfcmVnZXhwX2NvbXBpbGVfY2Fj
aGUgPSB7fQorCisKK2RlZiBtYXRjaChwYXR0ZXJuLCBzKToKKyAgICAiIiJNYXRjaGVzIHRoZSBz
dHJpbmcgd2l0aCB0aGUgcGF0dGVybiwgY2FjaGluZyB0aGUgY29tcGlsZWQgcmVnZXhwLiIiIgor
ICAgICMgVGhlIHJlZ2V4cCBjb21waWxhdGlvbiBjYWNoaW5nIGlzIGlubGluZWQgaW4gYm90aCBt
YXRjaCBhbmQgc2VhcmNoIGZvcgorICAgICMgcGVyZm9ybWFuY2UgcmVhc29uczsgZmFjdG9yaW5n
IGl0IG91dCBpbnRvIGEgc2VwYXJhdGUgZnVuY3Rpb24gdHVybnMgb3V0CisgICAgIyB0byBiZSBu
b3RpY2VhYmx5IGV4cGVuc2l2ZS4KKyAgICBpZiBub3QgcGF0dGVybiBpbiBfcmVnZXhwX2NvbXBp
bGVfY2FjaGU6CisgICAgICAgIF9yZWdleHBfY29tcGlsZV9jYWNoZVtwYXR0ZXJuXSA9IHNyZV9j
b21waWxlLmNvbXBpbGUocGF0dGVybikKKyAgICByZXR1cm4gX3JlZ2V4cF9jb21waWxlX2NhY2hl
W3BhdHRlcm5dLm1hdGNoKHMpCisKKworZGVmIHNlYXJjaChwYXR0ZXJuLCBzKToKKyAgICAiIiJT
ZWFyY2hlcyB0aGUgc3RyaW5nIGZvciB0aGUgcGF0dGVybiwgY2FjaGluZyB0aGUgY29tcGlsZWQg
cmVnZXhwLiIiIgorICAgIGlmIG5vdCBwYXR0ZXJuIGluIF9yZWdleHBfY29tcGlsZV9jYWNoZToK
KyAgICAgICAgX3JlZ2V4cF9jb21waWxlX2NhY2hlW3BhdHRlcm5dID0gc3JlX2NvbXBpbGUuY29t
cGlsZShwYXR0ZXJuKQorICAgIHJldHVybiBfcmVnZXhwX2NvbXBpbGVfY2FjaGVbcGF0dGVybl0u
c2VhcmNoKHMpCisKKworY2xhc3MgX0luY2x1ZGVTdGF0ZShkaWN0KToKKyAgICAiIiJUcmFja3Mg
bGluZSBudW1iZXJzIGZvciBpbmNsdWRlcywgYW5kIHRoZSBvcmRlciBpbiB3aGljaCBpbmNsdWRl
cyBhcHBlYXIuCisKKyAgICBBcyBhIGRpY3QsIGFuIF9JbmNsdWRlU3RhdGUgb2JqZWN0IHNlcnZl
cyBhcyBhIG1hcHBpbmcgYmV0d2VlbiBpbmNsdWRlCisgICAgZmlsZW5hbWUgYW5kIGxpbmUgbnVt
YmVyIG9uIHdoaWNoIHRoYXQgZmlsZSB3YXMgaW5jbHVkZWQuCisKKyAgICBDYWxsIGNoZWNrX25l
eHRfaW5jbHVkZV9vcmRlcigpIG9uY2UgZm9yIGVhY2ggaGVhZGVyIGluIHRoZSBmaWxlLCBwYXNz
aW5nCisgICAgaW4gdGhlIHR5cGUgY29uc3RhbnRzIGRlZmluZWQgYWJvdmUuIENhbGxzIGluIGFu
IGlsbGVnYWwgb3JkZXIgd2lsbAorICAgIHJhaXNlIGFuIF9JbmNsdWRlRXJyb3Igd2l0aCBhbiBh
cHByb3ByaWF0ZSBlcnJvciBtZXNzYWdlLgorCisgICAgIiIiCisgICAgIyBzZWxmLl9zZWN0aW9u
IHdpbGwgbW92ZSBtb25vdG9uaWNhbGx5IHRocm91Z2ggdGhpcyBzZXQuIElmIGl0IGV2ZXIKKyAg
ICAjIG5lZWRzIHRvIG1vdmUgYmFja3dhcmRzLCBjaGVja19uZXh0X2luY2x1ZGVfb3JkZXIgd2ls
bCByYWlzZSBhbiBlcnJvci4KKyAgICBfSU5JVElBTF9TRUNUSU9OID0gMAorICAgIF9NWV9IX1NF
Q1RJT04gPSAxCisgICAgX0NfU0VDVElPTiA9IDIKKyAgICBfQ1BQX1NFQ1RJT04gPSAzCisgICAg
X09USEVSX0hfU0VDVElPTiA9IDQKKworICAgIF9UWVBFX05BTUVTID0geworICAgICAgICBfQ19T
WVNfSEVBREVSOiAnQyBzeXN0ZW0gaGVhZGVyJywKKyAgICAgICAgX0NQUF9TWVNfSEVBREVSOiAn
QysrIHN5c3RlbSBoZWFkZXInLAorICAgICAgICBfTElLRUxZX01ZX0hFQURFUjogJ2hlYWRlciB0
aGlzIGZpbGUgaW1wbGVtZW50cycsCisgICAgICAgIF9QT1NTSUJMRV9NWV9IRUFERVI6ICdoZWFk
ZXIgdGhpcyBmaWxlIG1heSBpbXBsZW1lbnQnLAorICAgICAgICBfT1RIRVJfSEVBREVSOiAnb3Ro
ZXIgaGVhZGVyJywKKyAgICAgICAgfQorICAgIF9TRUNUSU9OX05BTUVTID0geworICAgICAgICBf
SU5JVElBTF9TRUNUSU9OOiAiLi4uIG5vdGhpbmcuIChUaGlzIGNhbid0IGJlIGFuIGVycm9yLiki
LAorICAgICAgICBfTVlfSF9TRUNUSU9OOiAnYSBoZWFkZXIgdGhpcyBmaWxlIGltcGxlbWVudHMn
LAorICAgICAgICBfQ19TRUNUSU9OOiAnQyBzeXN0ZW0gaGVhZGVyJywKKyAgICAgICAgX0NQUF9T
RUNUSU9OOiAnQysrIHN5c3RlbSBoZWFkZXInLAorICAgICAgICBfT1RIRVJfSF9TRUNUSU9OOiAn
b3RoZXIgaGVhZGVyJywKKyAgICAgICAgfQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAg
ICAgICBkaWN0Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuX3NlY3Rpb24gPSBzZWxmLl9J
TklUSUFMX1NFQ1RJT04KKworICAgIGRlZiBjaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoc2VsZiwg
aGVhZGVyX3R5cGUpOgorICAgICAgICAiIiJSZXR1cm5zIGEgbm9uLWVtcHR5IGVycm9yIG1lc3Nh
Z2UgaWYgdGhlIG5leHQgaGVhZGVyIGlzIG91dCBvZiBvcmRlci4KKworICAgICAgICBUaGlzIGZ1
bmN0aW9uIGFsc28gdXBkYXRlcyB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gYmUgcmVhZHkgdG8gY2hl
Y2sKKyAgICAgICAgdGhlIG5leHQgaW5jbHVkZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAg
IGhlYWRlcl90eXBlOiBPbmUgb2YgdGhlIF9YWFhfSEVBREVSIGNvbnN0YW50cyBkZWZpbmVkIGFi
b3ZlLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgVGhlIGVtcHR5IHN0cmluZyBpZiB0
aGUgaGVhZGVyIGlzIGluIHRoZSByaWdodCBvcmRlciwgb3IgYW4KKyAgICAgICAgICBlcnJvciBt
ZXNzYWdlIGRlc2NyaWJpbmcgd2hhdCdzIHdyb25nLgorCisgICAgICAgICIiIgorICAgICAgICAj
IEZJWE1FOiBUaGlzIGlzbid0IFdlYktpdCdzIHJ1bGUuIFdlIGFyZSBqdXN0IGRpc2FibGluZyB0
aGlzIGZvciBub3cuCisgICAgICAgIGVycm9yX21lc3NhZ2UgPSAoJ0ZvdW5kICVzIGFmdGVyICVz
JyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX1RZUEVfTkFNRVNbaGVhZGVyX3R5
cGVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9TRUNUSU9OX05BTUVTW3NlbGYu
X3NlY3Rpb25dKSkKKworICAgICAgICBpZiBoZWFkZXJfdHlwZSA9PSBfQ19TWVNfSEVBREVSOgor
ICAgICAgICAgICAgaWYgc2VsZi5fc2VjdGlvbiA8PSBzZWxmLl9DX1NFQ1RJT046CisgICAgICAg
ICAgICAgICAgc2VsZi5fc2VjdGlvbiA9IHNlbGYuX0NfU0VDVElPTgorICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JfbWVzc2FnZQorICAgICAgICBlbGlmIGhl
YWRlcl90eXBlID09IF9DUFBfU1lTX0hFQURFUjoKKyAgICAgICAgICAgIGlmIHNlbGYuX3NlY3Rp
b24gPD0gc2VsZi5fQ1BQX1NFQ1RJT046CisgICAgICAgICAgICAgICAgc2VsZi5fc2VjdGlvbiA9
IHNlbGYuX0NQUF9TRUNUSU9OCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJl
dHVybiBlcnJvcl9tZXNzYWdlCisgICAgICAgIGVsaWYgaGVhZGVyX3R5cGUgPT0gX0xJS0VMWV9N
WV9IRUFERVI6CisgICAgICAgICAgICBpZiBzZWxmLl9zZWN0aW9uIDw9IHNlbGYuX01ZX0hfU0VD
VElPTjoKKyAgICAgICAgICAgICAgICBzZWxmLl9zZWN0aW9uID0gc2VsZi5fTVlfSF9TRUNUSU9O
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX3NlY3Rpb24gPSBzZWxm
Ll9PVEhFUl9IX1NFQ1RJT04KKyAgICAgICAgZWxpZiBoZWFkZXJfdHlwZSA9PSBfUE9TU0lCTEVf
TVlfSEVBREVSOgorICAgICAgICAgICAgaWYgc2VsZi5fc2VjdGlvbiA8PSBzZWxmLl9NWV9IX1NF
Q1RJT046CisgICAgICAgICAgICAgICAgc2VsZi5fc2VjdGlvbiA9IHNlbGYuX01ZX0hfU0VDVElP
TgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIFRoaXMgd2lsbCBhbHdheXMg
YmUgdGhlIGZhbGxiYWNrIGJlY2F1c2Ugd2UncmUgbm90IHN1cmUKKyAgICAgICAgICAgICAgICAj
IGVub3VnaCB0aGF0IHRoZSBoZWFkZXIgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZmlsZS4KKyAg
ICAgICAgICAgICAgICBzZWxmLl9zZWN0aW9uID0gc2VsZi5fT1RIRVJfSF9TRUNUSU9OCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgaGVhZGVyX3R5cGUgPT0gX09USEVSX0hFQURF
UgorICAgICAgICAgICAgc2VsZi5fc2VjdGlvbiA9IHNlbGYuX09USEVSX0hfU0VDVElPTgorCisg
ICAgICAgIHJldHVybiAnJworCisKK2NsYXNzIF9DcHBMaW50U3RhdGUob2JqZWN0KToKKyAgICAi
IiJNYWludGFpbnMgbW9kdWxlLXdpZGUgc3RhdGUuLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYpOgorICAgICAgICBzZWxmLnZlcmJvc2VfbGV2ZWwgPSAxICAjIGdsb2JhbCBzZXR0aW5nLgor
ICAgICAgICBzZWxmLmVycm9yX2NvdW50ID0gMCAgICAjIGdsb2JhbCBjb3VudCBvZiByZXBvcnRl
ZCBlcnJvcnMKKyAgICAgICAgIyBmaWx0ZXJzIHRvIGFwcGx5IHdoZW4gZW1pdHRpbmcgZXJyb3Ig
bWVzc2FnZXMKKyAgICAgICAgc2VsZi5maWx0ZXJzID0gX0RFRkFVTFRfRklMVEVSU1s6XQorCisg
ICAgICAgICMgb3V0cHV0IGZvcm1hdDoKKyAgICAgICAgIyAiZW1hY3MiIC0gZm9ybWF0IHRoYXQg
ZW1hY3MgY2FuIHBhcnNlIChkZWZhdWx0KQorICAgICAgICAjICJ2czciIC0gZm9ybWF0IHRoYXQg
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gNyBjYW4gcGFyc2UKKyAgICAgICAgc2VsZi5vdXRwdXRf
Zm9ybWF0ID0gJ2VtYWNzJworCisgICAgZGVmIHNldF9vdXRwdXRfZm9ybWF0KHNlbGYsIG91dHB1
dF9mb3JtYXQpOgorICAgICAgICAiIiJTZXRzIHRoZSBvdXRwdXQgZm9ybWF0IGZvciBlcnJvcnMu
IiIiCisgICAgICAgIHNlbGYub3V0cHV0X2Zvcm1hdCA9IG91dHB1dF9mb3JtYXQKKworICAgIGRl
ZiBzZXRfdmVyYm9zZV9sZXZlbChzZWxmLCBsZXZlbCk6CisgICAgICAgICIiIlNldHMgdGhlIG1v
ZHVsZSdzIHZlcmJvc2l0eSwgYW5kIHJldHVybnMgdGhlIHByZXZpb3VzIHNldHRpbmcuIiIiCisg
ICAgICAgIGxhc3RfdmVyYm9zZV9sZXZlbCA9IHNlbGYudmVyYm9zZV9sZXZlbAorICAgICAgICBz
ZWxmLnZlcmJvc2VfbGV2ZWwgPSBsZXZlbAorICAgICAgICByZXR1cm4gbGFzdF92ZXJib3NlX2xl
dmVsCisKKyAgICBkZWYgc2V0X2ZpbHRlcnMoc2VsZiwgZmlsdGVycyk6CisgICAgICAgICIiIlNl
dHMgdGhlIGVycm9yLW1lc3NhZ2UgZmlsdGVycy4KKworICAgICAgICBUaGVzZSBmaWx0ZXJzIGFy
ZSBhcHBsaWVkIHdoZW4gZGVjaWRpbmcgd2hldGhlciB0byBlbWl0IGEgZ2l2ZW4KKyAgICAgICAg
ZXJyb3IgbWVzc2FnZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIGZpbHRlcnM6IEEgc3Ry
aW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBmaWx0ZXJzIChlZyAiK3doaXRlc3BhY2UvaW5kZW50Iiku
CisgICAgICAgICAgICAgICAgICAgRWFjaCBmaWx0ZXIgc2hvdWxkIHN0YXJ0IHdpdGggKyBvciAt
OyBlbHNlIHdlIGRpZS4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgVmFsdWVFcnJvcjog
VGhlIGNvbW1hLXNlcGFyYXRlZCBmaWx0ZXJzIGRpZCBub3QgYWxsIHN0YXJ0IHdpdGggJysnIG9y
ICctJy4KKyAgICAgICAgICAgICAgICAgICAgICBFLmcuICItLCt3aGl0ZXNwYWNlLC13aGl0ZXNw
YWNlL2luZGVudCx3aGl0ZXNwYWNlL2JhZGZpbHRlciIKKyAgICAgICAgIiIiCisgICAgICAgICMg
RGVmYXVsdCBmaWx0ZXJzIGFsd2F5cyBoYXZlIGxlc3MgcHJpb3JpdHkgdGhhbiB0aGUgZmxhZyBv
bmVzLgorICAgICAgICBzZWxmLmZpbHRlcnMgPSBfREVGQVVMVF9GSUxURVJTWzpdCisgICAgICAg
IGZvciBmaWx0ZXIgaW4gZmlsdGVycy5zcGxpdCgnLCcpOgorICAgICAgICAgICAgY2xlYW5fZmls
dGVyID0gZmlsdGVyLnN0cmlwKCkKKyAgICAgICAgICAgIGlmIGNsZWFuX2ZpbHRlcjoKKyAgICAg
ICAgICAgICAgICBzZWxmLmZpbHRlcnMuYXBwZW5kKGNsZWFuX2ZpbHRlcikKKyAgICAgICAgZm9y
IGZpbHRlciBpbiBzZWxmLmZpbHRlcnM6CisgICAgICAgICAgICBpZiBub3QgKGZpbHRlci5zdGFy
dHN3aXRoKCcrJykgb3IgZmlsdGVyLnN0YXJ0c3dpdGgoJy0nKSk6CisgICAgICAgICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcignRXZlcnkgZmlsdGVyIGluIC0tZmlsdGVycyBtdXN0IHN0YXJ0IHdp
dGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJysgb3IgLSAoJXMgZG9lcyBu
b3QpJyAlIGZpbHRlcikKKworICAgIGRlZiByZXNldF9lcnJvcl9jb3VudChzZWxmKToKKyAgICAg
ICAgIiIiU2V0cyB0aGUgbW9kdWxlJ3MgZXJyb3Igc3RhdGlzdGljIGJhY2sgdG8gemVyby4iIiIK
KyAgICAgICAgc2VsZi5lcnJvcl9jb3VudCA9IDAKKworICAgIGRlZiBpbmNyZW1lbnRfZXJyb3Jf
Y291bnQoc2VsZik6CisgICAgICAgICIiIkJ1bXBzIHRoZSBtb2R1bGUncyBlcnJvciBzdGF0aXN0
aWMuIiIiCisgICAgICAgIHNlbGYuZXJyb3JfY291bnQgKz0gMQorCisKK19jcHBsaW50X3N0YXRl
ID0gX0NwcExpbnRTdGF0ZSgpCisKKworZGVmIF9vdXRwdXRfZm9ybWF0KCk6CisgICAgIiIiR2V0
cyB0aGUgbW9kdWxlJ3Mgb3V0cHV0IGZvcm1hdC4iIiIKKyAgICByZXR1cm4gX2NwcGxpbnRfc3Rh
dGUub3V0cHV0X2Zvcm1hdAorCisKK2RlZiBfc2V0X291dHB1dF9mb3JtYXQob3V0cHV0X2Zvcm1h
dCk6CisgICAgIiIiU2V0cyB0aGUgbW9kdWxlJ3Mgb3V0cHV0IGZvcm1hdC4iIiIKKyAgICBfY3Bw
bGludF9zdGF0ZS5zZXRfb3V0cHV0X2Zvcm1hdChvdXRwdXRfZm9ybWF0KQorCisKK2RlZiBfdmVy
Ym9zZV9sZXZlbCgpOgorICAgICIiIlJldHVybnMgdGhlIG1vZHVsZSdzIHZlcmJvc2l0eSBzZXR0
aW5nLiIiIgorICAgIHJldHVybiBfY3BwbGludF9zdGF0ZS52ZXJib3NlX2xldmVsCisKKworZGVm
IF9zZXRfdmVyYm9zZV9sZXZlbChsZXZlbCk6CisgICAgIiIiU2V0cyB0aGUgbW9kdWxlJ3MgdmVy
Ym9zaXR5LCBhbmQgcmV0dXJucyB0aGUgcHJldmlvdXMgc2V0dGluZy4iIiIKKyAgICByZXR1cm4g
X2NwcGxpbnRfc3RhdGUuc2V0X3ZlcmJvc2VfbGV2ZWwobGV2ZWwpCisKKworZGVmIF9maWx0ZXJz
KCk6CisgICAgIiIiUmV0dXJucyB0aGUgbW9kdWxlJ3MgbGlzdCBvZiBvdXRwdXQgZmlsdGVycywg
YXMgYSBsaXN0LiIiIgorICAgIHJldHVybiBfY3BwbGludF9zdGF0ZS5maWx0ZXJzCisKKworZGVm
IF9zZXRfZmlsdGVycyhmaWx0ZXJzKToKKyAgICAiIiJTZXRzIHRoZSBtb2R1bGUncyBlcnJvci1t
ZXNzYWdlIGZpbHRlcnMuCisKKyAgICBUaGVzZSBmaWx0ZXJzIGFyZSBhcHBsaWVkIHdoZW4gZGVj
aWRpbmcgd2hldGhlciB0byBlbWl0IGEgZ2l2ZW4KKyAgICBlcnJvciBtZXNzYWdlLgorCisgICAg
QXJnczoKKyAgICAgIGZpbHRlcnM6IEEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBmaWx0ZXJz
IChlZyAid2hpdGVzcGFjZS9pbmRlbnQiKS4KKyAgICAgICAgICAgICAgIEVhY2ggZmlsdGVyIHNo
b3VsZCBzdGFydCB3aXRoICsgb3IgLTsgZWxzZSB3ZSBkaWUuCisgICAgIiIiCisgICAgX2NwcGxp
bnRfc3RhdGUuc2V0X2ZpbHRlcnMoZmlsdGVycykKKworCitjbGFzcyBfRnVuY3Rpb25TdGF0ZShv
YmplY3QpOgorICAgICIiIlRyYWNrcyBjdXJyZW50IGZ1bmN0aW9uIG5hbWUgYW5kIHRoZSBudW1i
ZXIgb2YgbGluZXMgaW4gaXRzIGJvZHkuIiIiCisKKyAgICBfTk9STUFMX1RSSUdHRVIgPSAyNTAg
ICMgZm9yIC0tdj0wLCA1MDAgZm9yIC0tdj0xLCBldGMuCisgICAgX1RFU1RfVFJJR0dFUiA9IDQw
MCAgICAjIGFib3V0IDUwJSBtb3JlIHRoYW4gX05PUk1BTF9UUklHR0VSLgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmluX2FfZnVuY3Rpb24gPSBGYWxzZQorICAgICAg
ICBzZWxmLmxpbmVzX2luX2Z1bmN0aW9uID0gMAorICAgICAgICBzZWxmLmN1cnJlbnRfZnVuY3Rp
b24gPSAnJworCisgICAgZGVmIGJlZ2luKHNlbGYsIGZ1bmN0aW9uX25hbWUpOgorICAgICAgICAi
IiJTdGFydCBhbmFseXppbmcgZnVuY3Rpb24gYm9keS4KKworICAgICAgICBBcmdzOgorICAgICAg
ICAgICAgZnVuY3Rpb25fbmFtZTogVGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIGJlaW5nIHRyYWNr
ZWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmluX2FfZnVuY3Rpb24gPSBUcnVlCisgICAg
ICAgIHNlbGYubGluZXNfaW5fZnVuY3Rpb24gPSAwCisgICAgICAgIHNlbGYuY3VycmVudF9mdW5j
dGlvbiA9IGZ1bmN0aW9uX25hbWUKKworICAgIGRlZiBjb3VudChzZWxmKToKKyAgICAgICAgIiIi
Q291bnQgbGluZSBpbiBjdXJyZW50IGZ1bmN0aW9uIGJvZHkuIiIiCisgICAgICAgIGlmIHNlbGYu
aW5fYV9mdW5jdGlvbjoKKyAgICAgICAgICAgIHNlbGYubGluZXNfaW5fZnVuY3Rpb24gKz0gMQor
CisgICAgZGVmIGNoZWNrKHNlbGYsIGVycm9yLCBmaWxlbmFtZSwgbGluZV9udW1iZXIpOgorICAg
ICAgICAiIiJSZXBvcnQgaWYgdG9vIG1hbnkgbGluZXMgaW4gZnVuY3Rpb24gYm9keS4KKworICAg
ICAgICBBcmdzOgorICAgICAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFu
eSBlcnJvcnMgZm91bmQuCisgICAgICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJy
ZW50IGZpbGUuCisgICAgICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUg
dG8gY2hlY2suCisgICAgICAgICIiIgorICAgICAgICBpZiBtYXRjaChyJ1QoRVNUfGVzdCknLCBz
ZWxmLmN1cnJlbnRfZnVuY3Rpb24pOgorICAgICAgICAgICAgYmFzZV90cmlnZ2VyID0gc2VsZi5f
VEVTVF9UUklHR0VSCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiYXNlX3RyaWdnZXIgPSBz
ZWxmLl9OT1JNQUxfVFJJR0dFUgorICAgICAgICB0cmlnZ2VyID0gYmFzZV90cmlnZ2VyICogMiAq
KiBfdmVyYm9zZV9sZXZlbCgpCisKKyAgICAgICAgaWYgc2VsZi5saW5lc19pbl9mdW5jdGlvbiA+
IHRyaWdnZXI6CisgICAgICAgICAgICBlcnJvcl9sZXZlbCA9IGludChtYXRoLmxvZyhzZWxmLmxp
bmVzX2luX2Z1bmN0aW9uIC8gYmFzZV90cmlnZ2VyLCAyKSkKKyAgICAgICAgICAgICMgNTAgPT4g
MCwgMTAwID0+IDEsIDIwMCA9PiAyLCA0MDAgPT4gMywgODAwID0+IDQsIDE2MDAgPT4gNSwgLi4u
CisgICAgICAgICAgICBpZiBlcnJvcl9sZXZlbCA+IDU6CisgICAgICAgICAgICAgICAgZXJyb3Jf
bGV2ZWwgPSA1CisgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdyZWFk
YWJpbGl0eS9mbl9zaXplJywgZXJyb3JfbGV2ZWwsCisgICAgICAgICAgICAgICAgICAnU21hbGwg
YW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6JworICAgICAgICAgICAgICAgICAg
JyAlcyBoYXMgJWQgbm9uLWNvbW1lbnQgbGluZXMnCisgICAgICAgICAgICAgICAgICAnIChlcnJv
ciB0cmlnZ2VyZWQgYnkgZXhjZWVkaW5nICVkIGxpbmVzKS4nICAlICgKKyAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLmN1cnJlbnRfZnVuY3Rpb24sIHNlbGYubGluZXNfaW5fZnVuY3Rpb24sIHRy
aWdnZXIpKQorCisgICAgZGVmIGVuZChzZWxmKToKKyAgICAgICAgIiIiU3RvcCBhbmFsaXppbmcg
ZnVuY3Rpb24gYm9keS4iIiIKKyAgICAgICAgc2VsZi5pbl9hX2Z1bmN0aW9uID0gRmFsc2UKKwor
CitjbGFzcyBfSW5jbHVkZUVycm9yKEV4Y2VwdGlvbik6CisgICAgIiIiSW5kaWNhdGVzIGEgcHJv
YmxlbSB3aXRoIHRoZSBpbmNsdWRlIG9yZGVyIGluIGEgZmlsZS4iIiIKKyAgICBwYXNzCisKKwor
Y2xhc3MgRmlsZUluZm86CisgICAgIiIiUHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGZp
bGVuYW1lcy4KKworICAgIEZpbGVJbmZvIHByb3ZpZGVzIGVhc3kgYWNjZXNzIHRvIHRoZSBjb21w
b25lbnRzIG9mIGEgZmlsZSdzIHBhdGgKKyAgICByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290
LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAg
c2VsZi5fZmlsZW5hbWUgPSBmaWxlbmFtZQorCisgICAgZGVmIGZ1bGxfbmFtZShzZWxmKToKKyAg
ICAgICAgIiIiTWFrZSBXaW5kb3dzIHBhdGhzIGxpa2UgVW5peC4iIiIKKyAgICAgICAgcmV0dXJu
IG9zLnBhdGguYWJzcGF0aChzZWxmLl9maWxlbmFtZSkucmVwbGFjZSgnXFwnLCAnLycpCisKKyAg
ICBkZWYgcmVwb3NpdG9yeV9uYW1lKHNlbGYpOgorICAgICAgICAiIiJGdWxsIG5hbWUgYWZ0ZXIg
cmVtb3ZpbmcgdGhlIGxvY2FsIHBhdGggdG8gdGhlIHJlcG9zaXRvcnkuCisKKyAgICAgICAgSWYg
d2UgaGF2ZSBhIHJlYWwgYWJzb2x1dGUgcGF0aCBuYW1lIGhlcmUgd2UgY2FuIHRyeSB0byBkbyBz
b21ldGhpbmcgc21hcnQ6CisgICAgICAgIGRldGVjdGluZyB0aGUgcm9vdCBvZiB0aGUgY2hlY2tv
dXQgYW5kIHRydW5jYXRpbmcgL3BhdGgvdG8vY2hlY2tvdXQgZnJvbQorICAgICAgICB0aGUgbmFt
ZSBzbyB0aGF0IHdlIGdldCBoZWFkZXIgZ3VhcmRzIHRoYXQgZG9uJ3QgaW5jbHVkZSB0aGluZ3Mg
bGlrZQorICAgICAgICAiQzpcRG9jdW1lbnRzIGFuZCBTZXR0aW5nc1wuLi4iIG9yICIvaG9tZS91
c2VybmFtZS8uLi4iIGluIHRoZW0gYW5kIHRodXMKKyAgICAgICAgcGVvcGxlIG9uIGRpZmZlcmVu
dCBjb21wdXRlcnMgd2hvIGhhdmUgY2hlY2tlZCB0aGUgc291cmNlIG91dCB0byBkaWZmZXJlbnQK
KyAgICAgICAgbG9jYXRpb25zIHdvbid0IHNlZSBib2d1cyBlcnJvcnMuCisgICAgICAgICIiIgor
ICAgICAgICBmdWxsbmFtZSA9IHNlbGYuZnVsbF9uYW1lKCkKKworICAgICAgICBpZiBvcy5wYXRo
LmV4aXN0cyhmdWxsbmFtZSk6CisgICAgICAgICAgICBwcm9qZWN0X2RpciA9IG9zLnBhdGguZGly
bmFtZShmdWxsbmFtZSkKKworICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5q
b2luKHByb2plY3RfZGlyLCAiLnN2biIpKToKKyAgICAgICAgICAgICAgICAjIElmIHRoZXJlJ3Mg
YSAuc3ZuIGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCB3ZQorICAgICAgICAgICAgICAg
ICMgcmVjdXJzaXZlbHkgbG9vayB1cCB0aGUgZGlyZWN0b3J5IHRyZWUgZm9yIHRoZSB0b3AKKyAg
ICAgICAgICAgICAgICAjIG9mIHRoZSBTVk4gY2hlY2tvdXQKKyAgICAgICAgICAgICAgICByb290
X2RpciA9IHByb2plY3RfZGlyCisgICAgICAgICAgICAgICAgb25lX3VwX2RpciA9IG9zLnBhdGgu
ZGlybmFtZShyb290X2RpcikKKyAgICAgICAgICAgICAgICB3aGlsZSBvcy5wYXRoLmV4aXN0cyhv
cy5wYXRoLmpvaW4ob25lX3VwX2RpciwgIi5zdm4iKSk6CisgICAgICAgICAgICAgICAgICAgIHJv
b3RfZGlyID0gb3MucGF0aC5kaXJuYW1lKHJvb3RfZGlyKQorICAgICAgICAgICAgICAgICAgICBv
bmVfdXBfZGlyID0gb3MucGF0aC5kaXJuYW1lKG9uZV91cF9kaXIpCisKKyAgICAgICAgICAgICAg
ICBwcmVmaXggPSBvcy5wYXRoLmNvbW1vbnByZWZpeChbcm9vdF9kaXIsIHByb2plY3RfZGlyXSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZnVsbG5hbWVbbGVuKHByZWZpeCkgKyAxOl0KKworICAg
ICAgICAgICAgIyBOb3QgU1ZOPyBUcnkgdG8gZmluZCBhIGdpdCB0b3AgbGV2ZWwgZGlyZWN0b3J5
IGJ5CisgICAgICAgICAgICAjIHNlYXJjaGluZyB1cCBmcm9tIHRoZSBjdXJyZW50IHBhdGguCisg
ICAgICAgICAgICByb290X2RpciA9IG9zLnBhdGguZGlybmFtZShmdWxsbmFtZSkKKyAgICAgICAg
ICAgIHdoaWxlIChyb290X2RpciAhPSBvcy5wYXRoLmRpcm5hbWUocm9vdF9kaXIpCisgICAgICAg
ICAgICAgICAgICAgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocm9vdF9kaXIs
ICIuZ2l0IikpKToKKyAgICAgICAgICAgICAgICByb290X2RpciA9IG9zLnBhdGguZGlybmFtZShy
b290X2RpcikKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4o
cm9vdF9kaXIsICIuZ2l0IikpOgorICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSBvcy5wYXRo
LmNvbW1vbnByZWZpeChbcm9vdF9kaXIsIHByb2plY3RfZGlyXSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZ1bGxuYW1lW2xlbihwcmVmaXgpICsgMTpdCisKKyAgICAgICAgIyBEb24ndCBr
bm93IHdoYXQgdG8gZG87IGhlYWRlciBndWFyZCB3YXJuaW5ncyBtYXkgYmUgd3JvbmcuLi4KKyAg
ICAgICAgcmV0dXJuIGZ1bGxuYW1lCisKKyAgICBkZWYgc3BsaXQoc2VsZik6CisgICAgICAgICIi
IlNwbGl0cyB0aGUgZmlsZSBpbnRvIHRoZSBkaXJlY3RvcnksIGJhc2VuYW1lLCBhbmQgZXh0ZW5z
aW9uLgorCisgICAgICAgIEZvciAnY2hyb21lL2Jyb3dzZXIvYnJvd3Nlci5jYycsIFNwbGl0KCkg
d291bGQKKyAgICAgICAgcmV0dXJuICgnY2hyb21lL2Jyb3dzZXInLCAnYnJvd3NlcicsICcuY2Mn
KQorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgQSB0dXBsZSBvZiAoZGlyZWN0b3J5LCBi
YXNlbmFtZSwgZXh0ZW5zaW9uKS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZ29vZ2xlbmFtZSA9
IHNlbGYucmVwb3NpdG9yeV9uYW1lKCkKKyAgICAgICAgcHJvamVjdCwgcmVzdCA9IG9zLnBhdGgu
c3BsaXQoZ29vZ2xlbmFtZSkKKyAgICAgICAgcmV0dXJuIChwcm9qZWN0LCkgKyBvcy5wYXRoLnNw
bGl0ZXh0KHJlc3QpCisKKyAgICBkZWYgYmFzZV9uYW1lKHNlbGYpOgorICAgICAgICAiIiJGaWxl
IGJhc2UgbmFtZSAtIHRleHQgYWZ0ZXIgdGhlIGZpbmFsIHNsYXNoLCBiZWZvcmUgdGhlIGZpbmFs
IHBlcmlvZC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuc3BsaXQoKVsxXQorCisgICAgZGVmIGV4
dGVuc2lvbihzZWxmKToKKyAgICAgICAgIiIiRmlsZSBleHRlbnNpb24gLSB0ZXh0IGZvbGxvd2lu
ZyB0aGUgZmluYWwgcGVyaW9kLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5zcGxpdCgpWzJdCisK
KyAgICBkZWYgbm9fZXh0ZW5zaW9uKHNlbGYpOgorICAgICAgICAiIiJGaWxlIGhhcyBubyBzb3Vy
Y2UgZmlsZSBleHRlbnNpb24uIiIiCisgICAgICAgIHJldHVybiAnLycuam9pbihzZWxmLnNwbGl0
KClbMDoyXSkKKworICAgIGRlZiBpc19zb3VyY2Uoc2VsZik6CisgICAgICAgICIiIkZpbGUgaGFz
IGEgc291cmNlIGZpbGUgZXh0ZW5zaW9uLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5leHRlbnNp
b24oKVsxOl0gaW4gKCdjJywgJ2NjJywgJ2NwcCcsICdjeHgnKQorCisKK2RlZiBfc2hvdWxkX3By
aW50X2Vycm9yKGNhdGVnb3J5LCBjb25maWRlbmNlKToKKyAgICAiIiJSZXR1cm5zIHRydWUgaWZm
IGNvbmZpZGVuY2UgPj0gdmVyYm9zZSwgYW5kIGNhdGVnb3J5IHBhc3NlcyBmaWx0ZXIuIiIiCisg
ICAgIyBUaGVyZSBhcmUgdHdvIHdheXMgd2UgbWlnaHQgZGVjaWRlIG5vdCB0byBwcmludCBhbiBl
cnJvciBtZXNzYWdlOgorICAgICMgdGhlIHZlcmJvc2l0eSBsZXZlbCBpc24ndCBoaWdoIGVub3Vn
aCwgb3IgdGhlIGZpbHRlcnMgZmlsdGVyIGl0IG91dC4KKyAgICBpZiBjb25maWRlbmNlIDwgX2Nw
cGxpbnRfc3RhdGUudmVyYm9zZV9sZXZlbDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBp
c19maWx0ZXJlZCA9IEZhbHNlCisgICAgZm9yIG9uZV9maWx0ZXIgaW4gX2ZpbHRlcnMoKToKKyAg
ICAgICAgaWYgb25lX2ZpbHRlci5zdGFydHN3aXRoKCctJyk6CisgICAgICAgICAgICBpZiBjYXRl
Z29yeS5zdGFydHN3aXRoKG9uZV9maWx0ZXJbMTpdKToKKyAgICAgICAgICAgICAgICBpc19maWx0
ZXJlZCA9IFRydWUKKyAgICAgICAgZWxpZiBvbmVfZmlsdGVyLnN0YXJ0c3dpdGgoJysnKToKKyAg
ICAgICAgICAgIGlmIGNhdGVnb3J5LnN0YXJ0c3dpdGgob25lX2ZpbHRlclsxOl0pOgorICAgICAg
ICAgICAgICAgIGlzX2ZpbHRlcmVkID0gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IGFzc2VydCBGYWxzZSAgIyBzaG91bGQgaGF2ZSBiZWVuIGNoZWNrZWQgZm9yIGluIFNldEZpbHRl
ci4KKyAgICBpZiBpc19maWx0ZXJlZDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICByZXR1
cm4gVHJ1ZQorCisKK2RlZiBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5LCBj
b25maWRlbmNlLCBtZXNzYWdlKToKKyAgICAiIiJMb2dzIHRoZSBmYWN0IHdlJ3ZlIGZvdW5kIGEg
bGludCBlcnJvci4KKworICAgIFdlIGxvZyB3aGVyZSB0aGUgZXJyb3Igd2FzIGZvdW5kLCBhbmQg
YWxzbyBvdXIgY29uZmlkZW5jZSBpbiB0aGUgZXJyb3IsCisgICAgdGhhdCBpcywgaG93IGNlcnRh
aW4gd2UgYXJlIHRoaXMgaXMgYSBsZWdpdGltYXRlIHN0eWxlIHJlZ3Jlc3Npb24sIGFuZAorICAg
IG5vdCBhIG1pc2lkZW50aWZpY2F0aW9uIG9yIGEgdXNlIHRoYXQncyBzb21ldGltZXMganVzdGlm
aWVkLgorCisgICAgQXJnczoKKyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgZmlsZSBj
b250YWluaW5nIHRoZSBlcnJvci4KKyAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRo
ZSBsaW5lIGNvbnRhaW5pbmcgdGhlIGVycm9yLgorICAgICAgY2F0ZWdvcnk6IEEgc3RyaW5nIHVz
ZWQgdG8gZGVzY3JpYmUgdGhlICJjYXRlZ29yeSIgdGhpcyBidWcKKyAgICAgICAgICAgICAgICBm
YWxscyB1bmRlcjogIndoaXRlc3BhY2UiLCBzYXksIG9yICJydW50aW1lIi4gIENhdGVnb3JpZXMK
KyAgICAgICAgICAgICAgICBtYXkgaGF2ZSBhIGhpZXJhcmNoeSBzZXBhcmF0ZWQgYnkgc2xhc2hl
czogIndoaXRlc3BhY2UvaW5kZW50Ii4KKyAgICAgIGNvbmZpZGVuY2U6IEEgbnVtYmVyIGZyb20g
MS01IHJlcHJlc2VudGluZyBhIGNvbmZpZGVuY2Ugc2NvcmUgZm9yCisgICAgICAgICAgICAgICAg
ICB0aGUgZXJyb3IsIHdpdGggNSBtZWFuaW5nIHRoYXQgd2UgYXJlIGNlcnRhaW4gb2YgdGhlIHBy
b2JsZW0sCisgICAgICAgICAgICAgICAgICBhbmQgMSBtZWFuaW5nIHRoYXQgaXQgY291bGQgYmUg
YSBsZWdpdGltYXRlIGNvbnN0cnVjdC4KKyAgICAgIG1lc3NhZ2U6IFRoZSBlcnJvciBtZXNzYWdl
LgorICAgICIiIgorICAgICMgVGhlcmUgYXJlIHR3byB3YXlzIHdlIG1pZ2h0IGRlY2lkZSBub3Qg
dG8gcHJpbnQgYW4gZXJyb3IgbWVzc2FnZToKKyAgICAjIHRoZSB2ZXJib3NpdHkgbGV2ZWwgaXNu
J3QgaGlnaCBlbm91Z2gsIG9yIHRoZSBmaWx0ZXJzIGZpbHRlciBpdCBvdXQuCisgICAgaWYgX3No
b3VsZF9wcmludF9lcnJvcihjYXRlZ29yeSwgY29uZmlkZW5jZSk6CisgICAgICAgIF9jcHBsaW50
X3N0YXRlLmluY3JlbWVudF9lcnJvcl9jb3VudCgpCisgICAgICAgIGlmIF9jcHBsaW50X3N0YXRl
Lm91dHB1dF9mb3JtYXQgPT0gJ3ZzNyc6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCcl
cyglcyk6ICAlcyAgWyVzXSBbJWRdXG4nICUgKAorICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBs
aW5lX251bWJlciwgbWVzc2FnZSwgY2F0ZWdvcnksIGNvbmZpZGVuY2UpKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnJXM6JXM6ICAlcyAgWyVzXSBbJWRdXG4n
ICUgKAorICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lX251bWJlciwgbWVzc2FnZSwgY2F0
ZWdvcnksIGNvbmZpZGVuY2UpKQorCisKKyMgTWF0Y2hlcyBzdGFuZGFyZCBDKysgZXNjYXBlIGVz
ZXF1ZW5jZXMgcGVyIDIuMTMuMi4zIG9mIHRoZSBDKysgc3RhbmRhcmQuCitfUkVfUEFUVEVSTl9D
TEVBTlNFX0xJTkVfRVNDQVBFUyA9IHJlLmNvbXBpbGUoCisgICAgcidcXChbYWJmbnJ0dj8iXFxc
J118XGQrfHhbMC05YS1mQS1GXSspJykKKyMgTWF0Y2hlcyBzdHJpbmdzLiAgRXNjYXBlIGNvZGVz
IHNob3VsZCBhbHJlYWR5IGJlIHJlbW92ZWQgYnkgRVNDQVBFUy4KK19SRV9QQVRURVJOX0NMRUFO
U0VfTElORV9ET1VCTEVfUVVPVEVTID0gcmUuY29tcGlsZShyJyJbXiJdKiInKQorIyBNYXRjaGVz
IGNoYXJhY3RlcnMuICBFc2NhcGUgY29kZXMgc2hvdWxkIGFscmVhZHkgYmUgcmVtb3ZlZCBieSBF
U0NBUEVTLgorX1JFX1BBVFRFUk5fQ0xFQU5TRV9MSU5FX1NJTkdMRV9RVU9URVMgPSByZS5jb21w
aWxlKHIiJy4nIikKKyMgTWF0Y2hlcyBtdWx0aS1saW5lIEMrKyBjb21tZW50cy4KKyMgVGhpcyBS
RSBpcyBhIGxpdHRsZSBiaXQgbW9yZSBjb21wbGljYXRlZCB0aGFuIG9uZSBtaWdodCBleHBlY3Qs
IGJlY2F1c2Ugd2UKKyMgaGF2ZSB0byB0YWtlIGNhcmUgb2Ygc3BhY2UgcmVtb3ZhbHMgdG9vbHMg
c28gd2UgY2FuIGhhbmRsZSBjb21tZW50cyBpbnNpZGUKKyMgc3RhdGVtZW50cyBiZXR0ZXIuCisj
IFRoZSBjdXJyZW50IHJ1bGUgaXM6IFdlIG9ubHkgY2xlYXIgc3BhY2VzIGZyb20gYm90aCBzaWRl
cyB3aGVuIHdlJ3JlIGF0IHRoZQorIyBlbmQgb2YgdGhlIGxpbmUuIE90aGVyd2lzZSwgd2UgdHJ5
IHRvIHJlbW92ZSBzcGFjZXMgZnJvbSB0aGUgcmlnaHQgc2lkZSwKKyMgaWYgdGhpcyBkb2Vzbid0
IHdvcmsgd2UgdHJ5IG9uIGxlZnQgc2lkZSBidXQgb25seSBpZiB0aGVyZSdzIGEgbm9uLWNoYXJh
Y3RlcgorIyBvbiB0aGUgcmlnaHQuCitfUkVfUEFUVEVSTl9DTEVBTlNFX0xJTkVfQ19DT01NRU5U
UyA9IHJlLmNvbXBpbGUoCisgICAgciIiIihccyovXCouKlwqL1xzKiR8CisgICAgICAgICAgICAv
XCouKlwqL1xzK3wKKyAgICAgICAgIFxzKy9cKi4qXCovKD89XFcpfAorICAgICAgICAgICAgL1wq
LipcKi8pIiIiLCByZS5WRVJCT1NFKQorCisKK2RlZiBpc19jcHBfc3RyaW5nKGxpbmUpOgorICAg
ICIiIkRvZXMgbGluZSB0ZXJtaW5hdGUgc28sIHRoYXQgdGhlIG5leHQgc3ltYm9sIGlzIGluIHN0
cmluZyBjb25zdGFudC4KKworICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY29uc2lkZXIgc2lu
Z2xlLWxpbmUgbm9yIG11bHRpLWxpbmUgY29tbWVudHMuCisKKyAgICBBcmdzOgorICAgICAgbGlu
ZTogaXMgYSBwYXJ0aWFsIGxpbmUgb2YgY29kZSBzdGFydGluZyBmcm9tIHRoZSAwLi5uLgorCisg
ICAgUmV0dXJuczoKKyAgICAgIFRydWUsIGlmIG5leHQgY2hhcmFjdGVyIGFwcGVuZGVkIHRvICds
aW5lJyBpcyBpbnNpZGUgYQorICAgICAgc3RyaW5nIGNvbnN0YW50LgorICAgICIiIgorCisgICAg
bGluZSA9IGxpbmUucmVwbGFjZShyJ1xcJywgJ1hYJykgICMgYWZ0ZXIgdGhpcywgXFwiIGRvZXMg
bm90IG1hdGNoIHRvIFwiCisgICAgcmV0dXJuICgobGluZS5jb3VudCgnIicpIC0gbGluZS5jb3Vu
dChyJ1wiJykgLSBsaW5lLmNvdW50KCInXCInIikpICYgMSkgPT0gMQorCisKK2RlZiBmaW5kX25l
eHRfbXVsdGlfbGluZV9jb21tZW50X3N0YXJ0KGxpbmVzLCBsaW5lX2luZGV4KToKKyAgICAiIiJG
aW5kIHRoZSBiZWdpbm5pbmcgbWFya2VyIGZvciBhIG11bHRpbGluZSBjb21tZW50LiIiIgorICAg
IHdoaWxlIGxpbmVfaW5kZXggPCBsZW4obGluZXMpOgorICAgICAgICBpZiBsaW5lc1tsaW5lX2lu
ZGV4XS5zdHJpcCgpLnN0YXJ0c3dpdGgoJy8qJyk6CisgICAgICAgICAgICAjIE9ubHkgcmV0dXJu
IHRoaXMgbWFya2VyIGlmIHRoZSBjb21tZW50IGdvZXMgYmV5b25kIHRoaXMgbGluZQorICAgICAg
ICAgICAgaWYgbGluZXNbbGluZV9pbmRleF0uc3RyaXAoKS5maW5kKCcqLycsIDIpIDwgMDoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbGluZV9pbmRleAorICAgICAgICBsaW5lX2luZGV4ICs9IDEK
KyAgICByZXR1cm4gbGVuKGxpbmVzKQorCisKK2RlZiBmaW5kX25leHRfbXVsdGlfbGluZV9jb21t
ZW50X2VuZChsaW5lcywgbGluZV9pbmRleCk6CisgICAgIiIiV2UgYXJlIGluc2lkZSBhIGNvbW1l
bnQsIGZpbmQgdGhlIGVuZCBtYXJrZXIuIiIiCisgICAgd2hpbGUgbGluZV9pbmRleCA8IGxlbihs
aW5lcyk6CisgICAgICAgIGlmIGxpbmVzW2xpbmVfaW5kZXhdLnN0cmlwKCkuZW5kc3dpdGgoJyov
Jyk6CisgICAgICAgICAgICByZXR1cm4gbGluZV9pbmRleAorICAgICAgICBsaW5lX2luZGV4ICs9
IDEKKyAgICByZXR1cm4gbGVuKGxpbmVzKQorCisKK2RlZiByZW1vdmVfbXVsdGlfbGluZV9jb21t
ZW50c19mcm9tX3JhbmdlKGxpbmVzLCBiZWdpbiwgZW5kKToKKyAgICAiIiJDbGVhcnMgYSByYW5n
ZSBvZiBsaW5lcyBmb3IgbXVsdGktbGluZSBjb21tZW50cy4iIiIKKyAgICAjIEhhdmluZyAvLyBk
dW1teSBjb21tZW50cyBtYWtlcyB0aGUgbGluZXMgbm9uLWVtcHR5LCBzbyB3ZSB3aWxsIG5vdCBn
ZXQKKyAgICAjIHVubmVjZXNzYXJ5IGJsYW5rIGxpbmUgd2FybmluZ3MgbGF0ZXIgaW4gdGhlIGNv
ZGUuCisgICAgZm9yIGkgaW4gcmFuZ2UoYmVnaW4sIGVuZCk6CisgICAgICAgIGxpbmVzW2ldID0g
Jy8vIGR1bW15JworCisKK2RlZiByZW1vdmVfbXVsdGlfbGluZV9jb21tZW50cyhmaWxlbmFtZSwg
bGluZXMsIGVycm9yKToKKyAgICAiIiJSZW1vdmVzIG11bHRpbGluZSAoYy1zdHlsZSkgY29tbWVu
dHMgZnJvbSBsaW5lcy4iIiIKKyAgICBsaW5lX2luZGV4ID0gMAorICAgIHdoaWxlIGxpbmVfaW5k
ZXggPCBsZW4obGluZXMpOgorICAgICAgICBsaW5lX2luZGV4X2JlZ2luID0gZmluZF9uZXh0X211
bHRpX2xpbmVfY29tbWVudF9zdGFydChsaW5lcywgbGluZV9pbmRleCkKKyAgICAgICAgaWYgbGlu
ZV9pbmRleF9iZWdpbiA+PSBsZW4obGluZXMpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAg
IGxpbmVfaW5kZXhfZW5kID0gZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9lbmQobGluZXMs
IGxpbmVfaW5kZXhfYmVnaW4pCisgICAgICAgIGlmIGxpbmVfaW5kZXhfZW5kID49IGxlbihsaW5l
cyk6CisgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9pbmRleF9iZWdpbiArIDEsICdy
ZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudCcsIDUsCisgICAgICAgICAgICAgICAgICAnQ291
bGQgbm90IGZpbmQgZW5kIG9mIG11bHRpLWxpbmUgY29tbWVudCcpCisgICAgICAgICAgICByZXR1
cm4KKyAgICAgICAgcmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHNfZnJvbV9yYW5nZShsaW5lcywg
bGluZV9pbmRleF9iZWdpbiwgbGluZV9pbmRleF9lbmQgKyAxKQorICAgICAgICBsaW5lX2luZGV4
ID0gbGluZV9pbmRleF9lbmQgKyAxCisKKworZGVmIGNsZWFuc2VfY29tbWVudHMobGluZSk6Cisg
ICAgIiIiUmVtb3ZlcyAvLy1jb21tZW50cyBhbmQgc2luZ2xlLWxpbmUgQy1zdHlsZSAvKiAqLyBj
b21tZW50cy4KKworICAgIEFyZ3M6CisgICAgICBsaW5lOiBBIGxpbmUgb2YgQysrIHNvdXJjZS4K
KworICAgIFJldHVybnM6CisgICAgICBUaGUgbGluZSB3aXRoIHNpbmdsZS1saW5lIGNvbW1lbnRz
IHJlbW92ZWQuCisgICAgIiIiCisgICAgY29tbWVudF9wb3NpdGlvbiA9IGxpbmUuZmluZCgnLy8n
KQorICAgIGlmIGNvbW1lbnRfcG9zaXRpb24gIT0gLTEgYW5kIG5vdCBpc19jcHBfc3RyaW5nKGxp
bmVbOmNvbW1lbnRfcG9zaXRpb25dKToKKyAgICAgICAgbGluZSA9IGxpbmVbOmNvbW1lbnRfcG9z
aXRpb25dCisgICAgIyBnZXQgcmlkIG9mIC8qIC4uLiAqLworICAgIHJldHVybiBfUkVfUEFUVEVS
Tl9DTEVBTlNFX0xJTkVfQ19DT01NRU5UUy5zdWIoJycsIGxpbmUpCisKKworY2xhc3MgQ2xlYW5z
ZWRMaW5lcyhvYmplY3QpOgorICAgICIiIkhvbGRzIDMgY29waWVzIG9mIGFsbCBsaW5lcyB3aXRo
IGRpZmZlcmVudCBwcmVwcm9jZXNzaW5nIGFwcGxpZWQgdG8gdGhlbS4KKworICAgIDEpIGVsaWRl
ZCBtZW1iZXIgY29udGFpbnMgbGluZXMgd2l0aG91dCBzdHJpbmdzIGFuZCBjb21tZW50cywKKyAg
ICAyKSBsaW5lcyBtZW1iZXIgY29udGFpbnMgbGluZXMgd2l0aG91dCBjb21tZW50cywgYW5kCisg
ICAgMykgcmF3IG1lbWJlciBjb250YWlucyBhbGwgdGhlIGxpbmVzIHdpdGhvdXQgcHJvY2Vzc2lu
Zy4KKyAgICBBbGwgdGhlc2UgdGhyZWUgbWVtYmVycyBhcmUgb2YgPHR5cGUgJ2xpc3QnPiwgYW5k
IG9mIHRoZSBzYW1lIGxlbmd0aC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBs
aW5lcyk6CisgICAgICAgIHNlbGYuZWxpZGVkID0gW10KKyAgICAgICAgc2VsZi5saW5lcyA9IFtd
CisgICAgICAgIHNlbGYucmF3X2xpbmVzID0gbGluZXMKKyAgICAgICAgc2VsZi5fbnVtX2xpbmVz
ID0gbGVuKGxpbmVzKQorICAgICAgICBmb3IgbGluZV9udW1iZXIgaW4gcmFuZ2UobGVuKGxpbmVz
KSk6CisgICAgICAgICAgICBzZWxmLmxpbmVzLmFwcGVuZChjbGVhbnNlX2NvbW1lbnRzKGxpbmVz
W2xpbmVfbnVtYmVyXSkpCisgICAgICAgICAgICBlbGlkZWQgPSBzZWxmLl9jb2xsYXBzZV9zdHJp
bmdzKGxpbmVzW2xpbmVfbnVtYmVyXSkKKyAgICAgICAgICAgIHNlbGYuZWxpZGVkLmFwcGVuZChj
bGVhbnNlX2NvbW1lbnRzKGVsaWRlZCkpCisKKyAgICBkZWYgbnVtX2xpbmVzKHNlbGYpOgorICAg
ICAgICAiIiJSZXR1cm5zIHRoZSBudW1iZXIgb2YgbGluZXMgcmVwcmVzZW50ZWQuIiIiCisgICAg
ICAgIHJldHVybiBzZWxmLl9udW1fbGluZXMKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYg
X2NvbGxhcHNlX3N0cmluZ3MoZWxpZGVkKToKKyAgICAgICAgIiIiQ29sbGFwc2VzIHN0cmluZ3Mg
YW5kIGNoYXJzIG9uIGEgbGluZSB0byBzaW1wbGUgIiIgb3IgJycgYmxvY2tzLgorCisgICAgICAg
IFdlIG5peCBzdHJpbmdzIGZpcnN0IHNvIHdlJ3JlIG5vdCBmb29sZWQgYnkgdGV4dCBsaWtlICci
aHR0cDovLyInCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBlbGlkZWQ6IFRoZSBsaW5lIGJl
aW5nIHByb2Nlc3NlZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgIFRoZSBsaW5lIHdp
dGggY29sbGFwc2VkIHN0cmluZ3MuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgX1JFX1BB
VFRFUk5fSU5DTFVERS5tYXRjaChlbGlkZWQpOgorICAgICAgICAgICAgIyBSZW1vdmUgZXNjYXBl
ZCBjaGFyYWN0ZXJzIGZpcnN0IHRvIG1ha2UgcXVvdGUvc2luZ2xlIHF1b3RlIGNvbGxhcHNpbmcK
KyAgICAgICAgICAgICMgYmFzaWMuICBUaGluZ3MgdGhhdCBsb29rIGxpa2UgZXNjYXBlZCBjaGFy
YWN0ZXJzIHNob3VsZG4ndCBvY2N1cgorICAgICAgICAgICAgIyBvdXRzaWRlIG9mIHN0cmluZ3Mg
YW5kIGNoYXJzLgorICAgICAgICAgICAgZWxpZGVkID0gX1JFX1BBVFRFUk5fQ0xFQU5TRV9MSU5F
X0VTQ0FQRVMuc3ViKCcnLCBlbGlkZWQpCisgICAgICAgICAgICBlbGlkZWQgPSBfUkVfUEFUVEVS
Tl9DTEVBTlNFX0xJTkVfU0lOR0xFX1FVT1RFUy5zdWIoIicnIiwgZWxpZGVkKQorICAgICAgICAg
ICAgZWxpZGVkID0gX1JFX1BBVFRFUk5fQ0xFQU5TRV9MSU5FX0RPVUJMRV9RVU9URVMuc3ViKCci
IicsIGVsaWRlZCkKKyAgICAgICAgcmV0dXJuIGVsaWRlZAorCisKK2RlZiBjbG9zZV9leHByZXNz
aW9uKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgcG9zKToKKyAgICAiIiJJZiBpbnB1dCBwb2lu
dHMgdG8gKCBvciB7IG9yIFssIGZpbmRzIHRoZSBwb3NpdGlvbiB0aGF0IGNsb3NlcyBpdC4KKwor
ICAgIElmIGxpbmVzW2xpbmVfbnVtYmVyXVtwb3NdIHBvaW50cyB0byBhICcoJyBvciAneycgb3Ig
J1snLCBmaW5kcyB0aGUgdGhlCisgICAgbGluZV9udW1iZXIvcG9zIHRoYXQgY29ycmVzcG9uZCB0
byB0aGUgY2xvc2luZyBvZiB0aGUgZXhwcmVzc2lvbi4KKworICAgIEFyZ3M6CisgICAgICBjbGVh
bl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCisg
ICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KKyAgICAg
IHBvczogQSBwb3NpdGlvbiBvbiB0aGUgbGluZS4KKworICAgIFJldHVybnM6CisgICAgICBBIHR1
cGxlIChsaW5lLCBsaW5lX251bWJlciwgcG9zKSBwb2ludGVyICpwYXN0KiB0aGUgY2xvc2luZyBi
cmFjZSwgb3IKKyAgICAgIChsaW5lLCBsZW4obGluZXMpLCAtMSkgaWYgd2UgbmV2ZXIgZmluZCBh
IGNsb3NlLiAgTm90ZSB3ZSBpZ25vcmUKKyAgICAgIHN0cmluZ3MgYW5kIGNvbW1lbnRzIHdoZW4g
bWF0Y2hpbmc7IGFuZCB0aGUgbGluZSB3ZSByZXR1cm4gaXMgdGhlCisgICAgICAnY2xlYW5zZWQn
IGxpbmUgYXQgbGluZV9udW1iZXIuCisgICAgIiIiCisKKyAgICBsaW5lID0gY2xlYW5fbGluZXMu
ZWxpZGVkW2xpbmVfbnVtYmVyXQorICAgIHN0YXJ0X2NoYXJhY3RlciA9IGxpbmVbcG9zXQorICAg
IGlmIHN0YXJ0X2NoYXJhY3RlciBub3QgaW4gJyh7Wyc6CisgICAgICAgIHJldHVybiAobGluZSwg
Y2xlYW5fbGluZXMubnVtX2xpbmVzKCksIC0xKQorICAgIGlmIHN0YXJ0X2NoYXJhY3RlciA9PSAn
KCc6CisgICAgICAgIGVuZF9jaGFyYWN0ZXIgPSAnKScKKyAgICBpZiBzdGFydF9jaGFyYWN0ZXIg
PT0gJ1snOgorICAgICAgICBlbmRfY2hhcmFjdGVyID0gJ10nCisgICAgaWYgc3RhcnRfY2hhcmFj
dGVyID09ICd7JzoKKyAgICAgICAgZW5kX2NoYXJhY3RlciA9ICd9JworCisgICAgbnVtX29wZW4g
PSBsaW5lLmNvdW50KHN0YXJ0X2NoYXJhY3RlcikgLSBsaW5lLmNvdW50KGVuZF9jaGFyYWN0ZXIp
CisgICAgd2hpbGUgbGluZV9udW1iZXIgPCBjbGVhbl9saW5lcy5udW1fbGluZXMoKSBhbmQgbnVt
X29wZW4gPiAwOgorICAgICAgICBsaW5lX251bWJlciArPSAxCisgICAgICAgIGxpbmUgPSBjbGVh
bl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCisgICAgICAgIG51bV9vcGVuICs9IGxpbmUuY291
bnQoc3RhcnRfY2hhcmFjdGVyKSAtIGxpbmUuY291bnQoZW5kX2NoYXJhY3RlcikKKyAgICAjIE9L
LCBub3cgZmluZCB0aGUgZW5kX2NoYXJhY3RlciB0aGF0IGFjdHVhbGx5IGdvdCB1cyBiYWNrIHRv
IGV2ZW4KKyAgICBlbmRwb3MgPSBsZW4obGluZSkKKyAgICB3aGlsZSBudW1fb3BlbiA+PSAwOgor
ICAgICAgICBlbmRwb3MgPSBsaW5lLnJmaW5kKCcpJywgMCwgZW5kcG9zKQorICAgICAgICBudW1f
b3BlbiAtPSAxICAgICAgICAgICAgICAgICAjIGNob3BwZWQgb2ZmIGFub3RoZXIgKQorICAgIHJl
dHVybiAobGluZSwgbGluZV9udW1iZXIsIGVuZHBvcyArIDEpCisKKworZGVmIGNoZWNrX2Zvcl9j
b3B5cmlnaHQoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcik6CisgICAgIiIiTG9ncyBhbiBlcnJvciBp
ZiBubyBDb3B5cmlnaHQgbWVzc2FnZSBhcHBlYXJzIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUuIiIi
CisKKyAgICAjIFdlJ2xsIHNheSBpdCBzaG91bGQgb2NjdXIgYnkgbGluZSAxMC4gRG9uJ3QgZm9y
Z2V0IHRoZXJlJ3MgYQorICAgICMgZHVtbXkgbGluZSBhdCB0aGUgZnJvbnQuCisgICAgZm9yIGxp
bmUgaW4geHJhbmdlKDEsIG1pbihsZW4obGluZXMpLCAxMSkpOgorICAgICAgICBpZiByZS5zZWFy
Y2gocidDb3B5cmlnaHQnLCBsaW5lc1tsaW5lXSwgcmUuSSk6CisgICAgICAgICAgICBicmVhawor
ICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAjIG1lYW5zIG5vIGNvcHlyaWdodCBsaW5l
IHdhcyBmb3VuZAorICAgICAgICBlcnJvcihmaWxlbmFtZSwgMCwgJ2xlZ2FsL2NvcHlyaWdodCcs
IDUsCisgICAgICAgICAgICAgICdObyBjb3B5cmlnaHQgbWVzc2FnZSBmb3VuZC4gICcKKyAgICAg
ICAgICAgICAgJ1lvdSBzaG91bGQgaGF2ZSBhIGxpbmU6ICJDb3B5cmlnaHQgW3llYXJdIDxDb3B5
cmlnaHQgT3duZXI+IicpCisKKworZGVmIGdldF9oZWFkZXJfZ3VhcmRfY3BwX3ZhcmlhYmxlKGZp
bGVuYW1lKToKKyAgICAiIiJSZXR1cm5zIHRoZSBDUFAgdmFyaWFibGUgdGhhdCBzaG91bGQgYmUg
dXNlZCBhcyBhIGhlYWRlciBndWFyZC4KKworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTogVGhl
IG5hbWUgb2YgYSBDKysgaGVhZGVyIGZpbGUuCisKKyAgICBSZXR1cm5zOgorICAgICAgVGhlIENQ
UCB2YXJpYWJsZSB0aGF0IHNob3VsZCBiZSB1c2VkIGFzIGEgaGVhZGVyIGd1YXJkIGluIHRoZQor
ICAgICAgbmFtZWQgZmlsZS4KKworICAgICIiIgorCisgICAgZmlsZWluZm8gPSBGaWxlSW5mbyhm
aWxlbmFtZSkKKyAgICByZXR1cm4gcmUuc3ViKHInWy0uL1xzXScsICdfJywgZmlsZWluZm8ucmVw
b3NpdG9yeV9uYW1lKCkpLnVwcGVyKCkgKyAnXycKKworCitkZWYgY2hlY2tfZm9yX2hlYWRlcl9n
dWFyZChmaWxlbmFtZSwgbGluZXMsIGVycm9yKToKKyAgICAiIiJDaGVja3MgdGhhdCB0aGUgZmls
ZSBjb250YWlucyBhIGhlYWRlciBndWFyZC4KKworICAgIExvZ3MgYW4gZXJyb3IgaWYgbm8gI2lm
bmRlZiBoZWFkZXIgZ3VhcmQgaXMgcHJlc2VudC4gIEZvciBvdGhlcgorICAgIGhlYWRlcnMsIGNo
ZWNrcyB0aGF0IHRoZSBmdWxsIHBhdGhuYW1lIGlzIHVzZWQuCisKKyAgICBBcmdzOgorICAgICAg
ZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBDKysgaGVhZGVyIGZpbGUuCisgICAgICBsaW5lczog
QW4gYXJyYXkgb2Ygc3RyaW5ncywgZWFjaCByZXByZXNlbnRpbmcgYSBsaW5lIG9mIHRoZSBmaWxl
LgorICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3Vu
ZC4KKyAgICAiIiIKKworICAgIGNwcHZhciA9IGdldF9oZWFkZXJfZ3VhcmRfY3BwX3ZhcmlhYmxl
KGZpbGVuYW1lKQorCisgICAgaWZuZGVmID0gTm9uZQorICAgIGlmbmRlZl9saW5lX251bWJlciA9
IDAKKyAgICBkZWZpbmUgPSBOb25lCisgICAgZW5kaWYgPSBOb25lCisgICAgZW5kaWZfbGluZV9u
dW1iZXIgPSAwCisgICAgZm9yIGxpbmVfbnVtYmVyLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6
CisgICAgICAgIGxpbmVfc3BsaXQgPSBsaW5lLnNwbGl0KCkKKyAgICAgICAgaWYgbGVuKGxpbmVf
c3BsaXQpID49IDI6CisgICAgICAgICAgICAjIGZpbmQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2Yg
I2lmbmRlZiBhbmQgI2RlZmluZSwgc2F2ZSBhcmcKKyAgICAgICAgICAgIGlmIG5vdCBpZm5kZWYg
YW5kIGxpbmVfc3BsaXRbMF0gPT0gJyNpZm5kZWYnOgorICAgICAgICAgICAgICAgICMgc2V0IGlm
bmRlZiB0byB0aGUgaGVhZGVyIGd1YXJkIHByZXNlbnRlZCBvbiB0aGUgI2lmbmRlZiBsaW5lLgor
ICAgICAgICAgICAgICAgIGlmbmRlZiA9IGxpbmVfc3BsaXRbMV0KKyAgICAgICAgICAgICAgICBp
Zm5kZWZfbGluZV9udW1iZXIgPSBsaW5lX251bWJlcgorICAgICAgICAgICAgaWYgbm90IGRlZmlu
ZSBhbmQgbGluZV9zcGxpdFswXSA9PSAnI2RlZmluZSc6CisgICAgICAgICAgICAgICAgZGVmaW5l
ID0gbGluZV9zcGxpdFsxXQorICAgICAgICAjIGZpbmQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiAj
ZW5kaWYsIHNhdmUgZW50aXJlIGxpbmUKKyAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcjZW5k
aWYnKToKKyAgICAgICAgICAgIGVuZGlmID0gbGluZQorICAgICAgICAgICAgZW5kaWZfbGluZV9u
dW1iZXIgPSBsaW5lX251bWJlcgorCisgICAgaWYgbm90IGlmbmRlZiBvciBub3QgZGVmaW5lIG9y
IGlmbmRlZiAhPSBkZWZpbmU6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCAwLCAnYnVpbGQvaGVh
ZGVyX2d1YXJkJywgNSwKKyAgICAgICAgICAgICAgJ05vICNpZm5kZWYgaGVhZGVyIGd1YXJkIGZv
dW5kLCBzdWdnZXN0ZWQgQ1BQIHZhcmlhYmxlIGlzOiAlcycgJQorICAgICAgICAgICAgICBjcHB2
YXIpCisgICAgICAgIHJldHVybgorCisgICAgIyBUaGUgZ3VhcmQgc2hvdWxkIGJlIFBBVEhfRklM
RV9IXywgYnV0IHdlIGFsc28gYWxsb3cgUEFUSF9GSUxFX0hfXworICAgICMgZm9yIGJhY2t3YXJk
IGNvbXBhdGliaWxpdHkuCisgICAgaWYgaWZuZGVmICE9IGNwcHZhcjoKKyAgICAgICAgZXJyb3Jf
bGV2ZWwgPSAwCisgICAgICAgIGlmIGlmbmRlZiAhPSBjcHB2YXIgKyAnXyc6CisgICAgICAgICAg
ICBlcnJvcl9sZXZlbCA9IDUKKworICAgICAgICBlcnJvcihmaWxlbmFtZSwgaWZuZGVmX2xpbmVf
bnVtYmVyLCAnYnVpbGQvaGVhZGVyX2d1YXJkJywgZXJyb3JfbGV2ZWwsCisgICAgICAgICAgICAg
ICcjaWZuZGVmIGhlYWRlciBndWFyZCBoYXMgd3Jvbmcgc3R5bGUsIHBsZWFzZSB1c2U6ICVzJyAl
IGNwcHZhcikKKworICAgIGlmIGVuZGlmICE9ICgnI2VuZGlmICAvLyAlcycgJSBjcHB2YXIpOgor
ICAgICAgICBlcnJvcl9sZXZlbCA9IDAKKyAgICAgICAgaWYgZW5kaWYgIT0gKCcjZW5kaWYgIC8v
ICVzJyAlIChjcHB2YXIgKyAnXycpKToKKyAgICAgICAgICAgIGVycm9yX2xldmVsID0gNQorCisg
ICAgICAgIGVycm9yKGZpbGVuYW1lLCBlbmRpZl9saW5lX251bWJlciwgJ2J1aWxkL2hlYWRlcl9n
dWFyZCcsIGVycm9yX2xldmVsLAorICAgICAgICAgICAgICAnI2VuZGlmIGxpbmUgc2hvdWxkIGJl
ICIjZW5kaWYgIC8vICVzIicgJSBjcHB2YXIpCisKKworZGVmIGNoZWNrX2Zvcl91bmljb2RlX3Jl
cGxhY2VtZW50X2NoYXJhY3RlcnMoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcik6CisgICAgIiIiTG9n
cyBhbiBlcnJvciBmb3IgZWFjaCBsaW5lIGNvbnRhaW5pbmcgVW5pY29kZSByZXBsYWNlbWVudCBj
aGFyYWN0ZXJzLgorCisgICAgVGhlc2UgaW5kaWNhdGUgdGhhdCBlaXRoZXIgdGhlIGZpbGUgY29u
dGFpbmVkIGludmFsaWQgVVRGLTggKGxpa2VseSkKKyAgICBvciBVbmljb2RlIHJlcGxhY2VtZW50
IGNoYXJhY3RlcnMgKHdoaWNoIGl0IHNob3VsZG4ndCkuICBOb3RlIHRoYXQKKyAgICBpdCdzIHBv
c3NpYmxlIGZvciB0aGlzIHRvIHRocm93IG9mZiBsaW5lIG51bWJlcmluZyBpZiB0aGUgaW52YWxp
ZAorICAgIFVURi04IG9jY3VycmVkIGFkamFjZW50IHRvIGEgbmV3bGluZS4KKworICAgIEFyZ3M6
CisgICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgIGxp
bmVzOiBBbiBhcnJheSBvZiBzdHJpbmdzLCBlYWNoIHJlcHJlc2VudGluZyBhIGxpbmUgb2YgdGhl
IGZpbGUuCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3Jz
IGZvdW5kLgorICAgICIiIgorICAgIGZvciBsaW5lX251bWJlciwgbGluZSBpbiBlbnVtZXJhdGUo
bGluZXMpOgorICAgICAgICBpZiB1J1x1ZmZmZCcgaW4gbGluZToKKyAgICAgICAgICAgIGVycm9y
KGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L3V0ZjgnLCA1LAorICAgICAgICAg
ICAgICAgICAgJ0xpbmUgY29udGFpbnMgaW52YWxpZCBVVEYtOCAob3IgVW5pY29kZSByZXBsYWNl
bWVudCBjaGFyYWN0ZXIpLicpCisKKworZGVmIGNoZWNrX2Zvcl9uZXdfbGluZV9hdF9lb2YoZmls
ZW5hbWUsIGxpbmVzLCBlcnJvcik6CisgICAgIiIiTG9ncyBhbiBlcnJvciBpZiB0aGVyZSBpcyBu
byBuZXdsaW5lIGNoYXIgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZS4KKworICAgIEFyZ3M6CisgICAg
ICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgIGxpbmVzOiBB
biBhcnJheSBvZiBzdHJpbmdzLCBlYWNoIHJlcHJlc2VudGluZyBhIGxpbmUgb2YgdGhlIGZpbGUu
CisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5k
LgorICAgICIiIgorCisgICAgIyBUaGUgYXJyYXkgbGluZXMoKSB3YXMgY3JlYXRlZCBieSBhZGRp
bmcgdHdvIG5ld2xpbmVzIHRvIHRoZQorICAgICMgb3JpZ2luYWwgZmlsZSAoZ28gZmlndXJlKSwg
dGhlbiBzcGxpdHRpbmcgb24gXG4uCisgICAgIyBUbyB2ZXJpZnkgdGhhdCB0aGUgZmlsZSBlbmRz
IGluIFxuLCB3ZSBqdXN0IGhhdmUgdG8gbWFrZSBzdXJlIHRoZQorICAgICMgbGFzdC1idXQtdHdv
IGVsZW1lbnQgb2YgbGluZXMoKSBleGlzdHMgYW5kIGlzIGVtcHR5LgorICAgIGlmIGxlbihsaW5l
cykgPCAzIG9yIGxpbmVzWy0yXToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxlbihsaW5lcykg
LSAyLCAnd2hpdGVzcGFjZS9lbmRpbmdfbmV3bGluZScsIDUsCisgICAgICAgICAgICAgICdDb3Vs
ZCBub3QgZmluZCBhIG5ld2xpbmUgY2hhcmFjdGVyIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUuJykK
KworCitkZWYgY2hlY2tfZm9yX211bHRpbGluZV9jb21tZW50c19hbmRfc3RyaW5ncyhmaWxlbmFt
ZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CisgICAgIiIiTG9ncyBhbiBlcnJv
ciBpZiB3ZSBzZWUgLyogLi4uICovIG9yICIuLi4iIHRoYXQgZXh0ZW5kIHBhc3Qgb25lIGxpbmUu
CisKKyAgICAvKiAuLi4gKi8gY29tbWVudHMgYXJlIGxlZ2l0IGluc2lkZSBtYWNyb3MsIGZvciBv
bmUgbGluZS4KKyAgICBPdGhlcndpc2UsIHdlIHByZWZlciAvLyBjb21tZW50cywgc28gaXQncyBv
ayB0byB3YXJuIGFib3V0IHRoZQorICAgIG90aGVyLiAgTGlrZXdpc2UsIGl0J3Mgb2sgZm9yIHN0
cmluZ3MgdG8gZXh0ZW5kIGFjcm9zcyBtdWx0aXBsZQorICAgIGxpbmVzLCBhcyBsb25nIGFzIGEg
bGluZSBjb250aW51YXRpb24gY2hhcmFjdGVyIChiYWNrc2xhc2gpCisgICAgdGVybWluYXRlcyBl
YWNoIGxpbmUuIEFsdGhvdWdoIG5vdCBjdXJyZW50bHkgcHJvaGliaXRlZCBieSB0aGUgQysrCisg
ICAgc3R5bGUgZ3VpZGUsIGl0J3MgdWdseSBhbmQgdW5uZWNlc3NhcnkuIFdlIGRvbid0IGRvIHdl
bGwgd2l0aCBlaXRoZXIKKyAgICBpbiB0aGlzIGxpbnQgcHJvZ3JhbSwgc28gd2Ugd2FybiBhYm91
dCBib3RoLgorCisgICAgQXJnczoKKyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3Vy
cmVudCBmaWxlLgorICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBj
b250YWluaW5nIHRoZSBmaWxlLgorICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhl
IGxpbmUgdG8gY2hlY2suCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBh
bnkgZXJyb3JzIGZvdW5kLgorICAgICIiIgorICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRb
bGluZV9udW1iZXJdCisKKyAgICAjIFJlbW92ZSBhbGwgXFwgKGVzY2FwZWQgYmFja3NsYXNoZXMp
IGZyb20gdGhlIGxpbmUuIFRoZXkgYXJlIE9LLCBhbmQgdGhlCisgICAgIyBzZWNvbmQgKGVzY2Fw
ZWQpIHNsYXNoIG1heSB0cmlnZ2VyIGxhdGVyIFwiIGRldGVjdGlvbiBlcnJvbmVvdXNseS4KKyAg
ICBsaW5lID0gbGluZS5yZXBsYWNlKCdcXFxcJywgJycpCisKKyAgICBpZiBsaW5lLmNvdW50KCcv
KicpID4gbGluZS5jb3VudCgnKi8nKToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVt
YmVyLCAncmVhZGFiaWxpdHkvbXVsdGlsaW5lX2NvbW1lbnQnLCA1LAorICAgICAgICAgICAgICAn
Q29tcGxleCBtdWx0aS1saW5lIC8qLi4uKi8tc3R5bGUgY29tbWVudCBmb3VuZC4gJworICAgICAg
ICAgICAgICAnTGludCBtYXkgZ2l2ZSBib2d1cyB3YXJuaW5ncy4gICcKKyAgICAgICAgICAgICAg
J0NvbnNpZGVyIHJlcGxhY2luZyB0aGVzZSB3aXRoIC8vLXN0eWxlIGNvbW1lbnRzLCAnCisgICAg
ICAgICAgICAgICd3aXRoICNpZiAwLi4uI2VuZGlmLCAnCisgICAgICAgICAgICAgICdvciB3aXRo
IG1vcmUgY2xlYXJseSBzdHJ1Y3R1cmVkIG11bHRpLWxpbmUgY29tbWVudHMuJykKKworICAgIGlm
IChsaW5lLmNvdW50KCciJykgLSBsaW5lLmNvdW50KCdcXCInKSkgJSAyOgorICAgICAgICBlcnJv
cihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9tdWx0aWxpbmVfc3RyaW5nJywg
NSwKKyAgICAgICAgICAgICAgJ011bHRpLWxpbmUgc3RyaW5nICgiLi4uIikgZm91bmQuICBUaGlz
IGxpbnQgc2NyaXB0IGRvZXNuXCd0ICcKKyAgICAgICAgICAgICAgJ2RvIHdlbGwgd2l0aCBzdWNo
IHN0cmluZ3MsIGFuZCBtYXkgZ2l2ZSBib2d1cyB3YXJuaW5ncy4gIFRoZXlcJ3JlICcKKyAgICAg
ICAgICAgICAgJ3VnbHkgYW5kIHVubmVjZXNzYXJ5LCBhbmQgeW91IHNob3VsZCB1c2UgY29uY2F0
ZW5hdGlvbiBpbnN0ZWFkIi4nKQorCisKK19USFJFQURJTkdfTElTVCA9ICgKKyAgICAoJ2FzY3Rp
bWUoJywgJ2FzY3RpbWVfcignKSwKKyAgICAoJ2N0aW1lKCcsICdjdGltZV9yKCcpLAorICAgICgn
Z2V0Z3JnaWQoJywgJ2dldGdyZ2lkX3IoJyksCisgICAgKCdnZXRncm5hbSgnLCAnZ2V0Z3JuYW1f
cignKSwKKyAgICAoJ2dldGxvZ2luKCcsICdnZXRsb2dpbl9yKCcpLAorICAgICgnZ2V0cHduYW0o
JywgJ2dldHB3bmFtX3IoJyksCisgICAgKCdnZXRwd3VpZCgnLCAnZ2V0cHd1aWRfcignKSwKKyAg
ICAoJ2dtdGltZSgnLCAnZ210aW1lX3IoJyksCisgICAgKCdsb2NhbHRpbWUoJywgJ2xvY2FsdGlt
ZV9yKCcpLAorICAgICgncmFuZCgnLCAncmFuZF9yKCcpLAorICAgICgncmVhZGRpcignLCAncmVh
ZGRpcl9yKCcpLAorICAgICgnc3RydG9rKCcsICdzdHJ0b2tfcignKSwKKyAgICAoJ3R0eW5hbWUo
JywgJ3R0eW5hbWVfcignKSwKKyAgICApCisKKworZGVmIGNoZWNrX3Bvc2l4X3RocmVhZGluZyhm
aWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CisgICAgIiIiQ2hlY2tz
IGZvciBjYWxscyB0byB0aHJlYWQtdW5zYWZlIGZ1bmN0aW9ucy4KKworICAgIE11Y2ggY29kZSBo
YXMgYmVlbiBvcmlnaW5hbGx5IHdyaXR0ZW4gd2l0aG91dCBjb25zaWRlcmF0aW9uIG9mCisgICAg
bXVsdGktdGhyZWFkaW5nLiBBbHNvLCBlbmdpbmVlcnMgYXJlIHJlbHlpbmcgb24gdGhlaXIgb2xk
IGV4cGVyaWVuY2U7CisgICAgdGhleSBoYXZlIGxlYXJuZWQgcG9zaXggYmVmb3JlIHRocmVhZGlu
ZyBleHRlbnNpb25zIHdlcmUgYWRkZWQuIFRoZXNlCisgICAgdGVzdHMgZ3VpZGUgdGhlIGVuZ2lu
ZWVycyB0byB1c2UgdGhyZWFkLXNhZmUgZnVuY3Rpb25zICh3aGVuIHVzaW5nCisgICAgcG9zaXgg
ZGlyZWN0bHkpLgorCisgICAgQXJnczoKKyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUg
Y3VycmVudCBmaWxlLgorICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5j
ZSBjb250YWluaW5nIHRoZSBmaWxlLgorICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2Yg
dGhlIGxpbmUgdG8gY2hlY2suCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0
aCBhbnkgZXJyb3JzIGZvdW5kLgorICAgICIiIgorICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlk
ZWRbbGluZV9udW1iZXJdCisgICAgZm9yIHNpbmdsZV90aHJlYWRfZnVuY3Rpb24sIG11bHRpdGhy
ZWFkX3NhZmVfZnVuY3Rpb24gaW4gX1RIUkVBRElOR19MSVNUOgorICAgICAgICBpbmRleCA9IGxp
bmUuZmluZChzaW5nbGVfdGhyZWFkX2Z1bmN0aW9uKQorICAgICAgICAjIENvbXBhcmlzb25zIG1h
ZGUgZXhwbGljaXQgZm9yIGNsYXJpdHkgLS0gcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwMworICAg
ICAgICBpZiBpbmRleCA+PSAwIGFuZCAoaW5kZXggPT0gMCBvciAobm90IGxpbmVbaW5kZXggLSAx
XS5pc2FsbnVtKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
ZCBsaW5lW2luZGV4IC0gMV0gbm90IGluICgnXycsICcuJywgJz4nKSkpOgorICAgICAgICAgICAg
ZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncnVudGltZS90aHJlYWRzYWZlX2ZuJywgMiwK
KyAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyAnICsgbXVsdGl0aHJlYWRfc2FmZV9m
dW5jdGlvbiArCisgICAgICAgICAgICAgICAgICAnLi4uKSBpbnN0ZWFkIG9mICcgKyBzaW5nbGVf
dGhyZWFkX2Z1bmN0aW9uICsKKyAgICAgICAgICAgICAgICAgICcuLi4pIGZvciBpbXByb3ZlZCB0
aHJlYWQgc2FmZXR5LicpCisKKworIyBNYXRjaGVzIGludmFsaWQgaW5jcmVtZW50OiAqY291bnQr
Kywgd2hpY2ggbW92ZXMgcG9pbnRlciBpbnN0ZWFkIG9mCisjIGluY3JlbWVudGluZyBhIHZhbHVl
LgorX1JFX1BBVFRFUk5fSU5WQUxJRF9JTkNSRU1FTlQgPSByZS5jb21waWxlKAorICAgIHInXlxz
KlwqXHcrKFwrXCt8LS0pOycpCisKKworZGVmIGNoZWNrX2ludmFsaWRfaW5jcmVtZW50KGZpbGVu
YW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKKyAgICAiIiJDaGVja3MgZm9y
IGludmFsaWQgaW5jcmVtZW50ICpjb3VudCsrLgorCisgICAgRm9yIGV4YW1wbGUgZm9sbG93aW5n
IGZ1bmN0aW9uOgorICAgIHZvaWQgaW5jcmVtZW50X2NvdW50ZXIoaW50KiBjb3VudCkgeworICAg
ICAgICAqY291bnQrKzsKKyAgICB9CisgICAgaXMgaW52YWxpZCwgYmVjYXVzZSBpdCBlZmZlY3Rp
dmVseSBkb2VzIGNvdW50KyssIG1vdmluZyBwb2ludGVyLCBhbmQgc2hvdWxkCisgICAgYmUgcmVw
bGFjZWQgd2l0aCArKypjb3VudCwgKCpjb3VudCkrKyBvciAqY291bnQgKz0gMS4KKworICAgIEFy
Z3M6CisgICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAg
IGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmls
ZS4KKyAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgor
ICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4K
KyAgICAiIiIKKyAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXQorICAg
IGlmIF9SRV9QQVRURVJOX0lOVkFMSURfSU5DUkVNRU5ULm1hdGNoKGxpbmUpOgorICAgICAgICBl
cnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdydW50aW1lL2ludmFsaWRfaW5jcmVtZW50Jywg
NSwKKyAgICAgICAgICAgICAgJ0NoYW5naW5nIHBvaW50ZXIgaW5zdGVhZCBvZiB2YWx1ZSAob3Ig
dW51c2VkIHZhbHVlIG9mIG9wZXJhdG9yKikuJykKKworCitjbGFzcyBfQ2xhc3NJbmZvKG9iamVj
dCk6CisgICAgIiIiU3RvcmVzIGluZm9ybWF0aW9uIGFib3V0IGEgY2xhc3MuIiIiCisKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbmFtZSwgbGluZV9udW1iZXIpOgorICAgICAgICBzZWxmLm5hbWUg
PSBuYW1lCisgICAgICAgIHNlbGYubGluZV9udW1iZXIgPSBsaW5lX251bWJlcgorICAgICAgICBz
ZWxmLnNlZW5fb3Blbl9icmFjZSA9IEZhbHNlCisgICAgICAgIHNlbGYuaXNfZGVyaXZlZCA9IEZh
bHNlCisgICAgICAgIHNlbGYudmlydHVhbF9tZXRob2RfbGluZV9udW1iZXIgPSBOb25lCisgICAg
ICAgIHNlbGYuaGFzX3ZpcnR1YWxfZGVzdHJ1Y3RvciA9IEZhbHNlCisgICAgICAgIHNlbGYuYnJh
Y2VfZGVwdGggPSAwCisKKworY2xhc3MgX0NsYXNzU3RhdGUob2JqZWN0KToKKyAgICAiIiJIb2xk
cyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgcGFyc2UgcmVsYXRpbmcgdG8gY2xhc3MgZGVjbGFy
YXRpb25zLgorCisgICAgSXQgbWFpbnRhaW5zIGEgc3RhY2sgb2YgX0NsYXNzSW5mb3MgcmVwcmVz
ZW50aW5nIHRoZSBwYXJzZXIncyBndWVzcworICAgIGFzIHRvIHRoZSBjdXJyZW50IG5lc3Rpbmcg
b2YgY2xhc3MgZGVjbGFyYXRpb25zLiBUaGUgaW5uZXJtb3N0IGNsYXNzCisgICAgaXMgYXQgdGhl
IHRvcCAoYmFjaykgb2YgdGhlIHN0YWNrLiBUeXBpY2FsbHksIHRoZSBzdGFjayB3aWxsIGVpdGhl
cgorICAgIGJlIGVtcHR5IG9yIGhhdmUgZXhhY3RseSBvbmUgZW50cnkuCisgICAgIiIiCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuY2xhc3NpbmZvX3N0YWNrID0gW10K
KworICAgIGRlZiBjaGVja19maW5pc2hlZChzZWxmLCBmaWxlbmFtZSwgZXJyb3IpOgorICAgICAg
ICAiIiJDaGVja3MgdGhhdCBhbGwgY2xhc3NlcyBoYXZlIGJlZW4gY29tcGxldGVseSBwYXJzZWQu
CisKKyAgICAgICAgQ2FsbCB0aGlzIHdoZW4gYWxsIGxpbmVzIGluIGEgZmlsZSBoYXZlIGJlZW4g
cHJvY2Vzc2VkLgorICAgICAgICBBcmdzOgorICAgICAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBv
ZiB0aGUgY3VycmVudCBmaWxlLgorICAgICAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2Fs
bCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLmNs
YXNzaW5mb19zdGFjazoKKyAgICAgICAgICAgICMgTm90ZTogVGhpcyB0ZXN0IGNhbiByZXN1bHQg
aW4gZmFsc2UgcG9zaXRpdmVzIGlmICNpZmRlZiBjb25zdHJ1Y3RzCisgICAgICAgICAgICAjIGdl
dCBpbiB0aGUgd2F5IG9mIGJyYWNlIG1hdGNoaW5nLiBTZWUgdGhlIHRlc3RCdWlsZENsYXNzIHRl
c3QgaW4KKyAgICAgICAgICAgICMgY3BwbGludF91bml0dGVzdC5weSBmb3IgYW4gZXhhbXBsZSBv
ZiB0aGlzLgorICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIHNlbGYuY2xhc3NpbmZvX3N0YWNr
WzBdLmxpbmVfbnVtYmVyLCAnYnVpbGQvY2xhc3MnLCA1LAorICAgICAgICAgICAgICAgICAgJ0Zh
aWxlZCB0byBmaW5kIGNvbXBsZXRlIGRlY2xhcmF0aW9uIG9mIGNsYXNzICVzJyAlCisgICAgICAg
ICAgICAgICAgICBzZWxmLmNsYXNzaW5mb19zdGFja1swXS5uYW1lKQorCisKK2RlZiBjaGVja19m
b3Jfbm9uX3N0YW5kYXJkX2NvbnN0cnVjdHMoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251
bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nfc3RhdGUs
IGVycm9yKToKKyAgICAiIiJMb2dzIGFuIGVycm9yIGlmIHdlIHNlZSBjZXJ0YWluIG5vbi1BTlNJ
IGNvbnN0cnVjdHMgaWdub3JlZCBieSBnY2MtMi4KKworICAgIENvbXBsYWluIGFib3V0IHNldmVy
YWwgY29uc3RydWN0cyB3aGljaCBnY2MtMiBhY2NlcHRzLCBidXQgd2hpY2ggYXJlCisgICAgbm90
IHN0YW5kYXJkIEMrKy4gIFdhcm5pbmcgYWJvdXQgdGhlc2UgaW4gbGludCBpcyBvbmUgd2F5IHRv
IGVhc2UgdGhlCisgICAgdHJhbnNpdGlvbiB0byBuZXcgY29tcGlsZXJzLgorICAgIC0gcHV0IHN0
b3JhZ2UgY2xhc3MgZmlyc3QgKGUuZy4gInN0YXRpYyBjb25zdCIgaW5zdGVhZCBvZiAiY29uc3Qg
c3RhdGljIikuCisgICAgLSAiJWxsZCIgaW5zdGVhZCBvZiAlcWQiIGluIHByaW50Zi10eXBlIGZ1
bmN0aW9ucy4KKyAgICAtICIlMSRkIiBpcyBub24tc3RhbmRhcmQgaW4gcHJpbnRmLXR5cGUgZnVu
Y3Rpb25zLgorICAgIC0gIlwlIiBpcyBhbiB1bmRlZmluZWQgY2hhcmFjdGVyIGVzY2FwZSBzZXF1
ZW5jZS4KKyAgICAtIHRleHQgYWZ0ZXIgI2VuZGlmIGlzIG5vdCBhbGxvd2VkLgorICAgIC0gaW52
YWxpZCBpbm5lci1zdHlsZSBmb3J3YXJkIGRlY2xhcmF0aW9uLgorICAgIC0gPj8gYW5kIDw/IG9w
ZXJhdG9ycywgYW5kIHRoZWlyID4/PSBhbmQgPD89IGNvdXNpbnMuCisgICAgLSBjbGFzc2VzIHdp
dGggdmlydHVhbCBtZXRob2RzIG5lZWQgdmlydHVhbCBkZXN0cnVjdG9ycyAoY29tcGlsZXIgd2Fy
bmluZworICAgICAgICBhdmFpbGFibGUsIGJ1dCBub3QgdHVybmVkIG9uIHlldC4pCisKKyAgICBB
ZGRpdGlvbmFsbHksIGNoZWNrIGZvciBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIHN0eWxlIHZpb2xh
dGlvbnMgYXMgaXQKKyAgICBpcyB2ZXJ5IGNvbnZlbmllbnQgdG8gZG8gc28gd2hpbGUgY2hlY2tp
bmcgZm9yIGdjYy0yIGNvbXBsaWFuY2UuCisKKyAgICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRo
ZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCisgICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNl
ZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCisgICAgICBsaW5lX251bWJlcjog
VGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KKyAgICAgIGNsYXNzX3N0YXRlOiBBIF9D
bGFzc1N0YXRlIGluc3RhbmNlIHdoaWNoIG1haW50YWlucyBpbmZvcm1hdGlvbiBhYm91dAorICAg
ICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50IHN0YWNrIG9mIG5lc3RlZCBjbGFzcyBkZWNsYXJh
dGlvbnMgYmVpbmcgcGFyc2VkLgorICAgICAgZXJyb3I6IEEgY2FsbGFibGUgdG8gd2hpY2ggZXJy
b3JzIGFyZSByZXBvcnRlZCwgd2hpY2ggdGFrZXMgNCBhcmd1bWVudHM6CisgICAgICAgICAgICAg
ZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBlcnJvciBsZXZlbCwgYW5kIG1lc3NhZ2UKKyAgICAiIiIK
KworICAgICMgUmVtb3ZlIGNvbW1lbnRzIGZyb20gdGhlIGxpbmUsIGJ1dCBsZWF2ZSBpbiBzdHJp
bmdzIGZvciBub3cuCisgICAgbGluZSA9IGNsZWFuX2xpbmVzLmxpbmVzW2xpbmVfbnVtYmVyXQor
CisgICAgaWYgc2VhcmNoKHIncHJpbnRmXHMqXCguKiIuKiVbLSsgXT9cZCpxJywgbGluZSk6Cisg
ICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3J1bnRpbWUvcHJpbnRmX2Zvcm1h
dCcsIDMsCisgICAgICAgICAgICAgICclcSBpbiBmb3JtYXQgc3RyaW5ncyBpcyBkZXByZWNhdGVk
LiAgVXNlICVsbCBpbnN0ZWFkLicpCisKKyAgICBpZiBzZWFyY2gocidwcmludGZccypcKC4qIi4q
JVxkK1wkJywgbGluZSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3J1
bnRpbWUvcHJpbnRmX2Zvcm1hdCcsIDIsCisgICAgICAgICAgICAgICclTiQgZm9ybWF0cyBhcmUg
dW5jb252ZW50aW9uYWwuICBUcnkgcmV3cml0aW5nIHRvIGF2b2lkIHRoZW0uJykKKworICAgICMg
UmVtb3ZlIGVzY2FwZWQgYmFja3NsYXNoZXMgYmVmb3JlIGxvb2tpbmcgZm9yIHVuZGVmaW5lZCBl
c2NhcGVzLgorICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoJ1xcXFwnLCAnJykKKworICAgIGlmIHNl
YXJjaChyJygifFwnKS4qXFwoJXxcW3xcKHx7KScsIGxpbmUpOgorICAgICAgICBlcnJvcihmaWxl
bmFtZSwgbGluZV9udW1iZXIsICdidWlsZC9wcmludGZfZm9ybWF0JywgMywKKyAgICAgICAgICAg
ICAgJyUsIFssICgsIGFuZCB7IGFyZSB1bmRlZmluZWQgY2hhcmFjdGVyIGVzY2FwZXMuICBVbmVz
Y2FwZSB0aGVtLicpCisKKyAgICAjIEZvciB0aGUgcmVzdCwgd29yayB3aXRoIGJvdGggY29tbWVu
dHMgYW5kIHN0cmluZ3MgcmVtb3ZlZC4KKyAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xp
bmVfbnVtYmVyXQorCisgICAgaWYgc2VhcmNoKHInXGIoY29uc3R8dm9sYXRpbGV8dm9pZHxjaGFy
fHNob3J0fGludHxsb25nJworICAgICAgICAgICAgICByJ3xmbG9hdHxkb3VibGV8c2lnbmVkfHVu
c2lnbmVkJworICAgICAgICAgICAgICByJ3xzY2hhcnx1P2ludDh8dT9pbnQxNnx1P2ludDMyfHU/
aW50NjQpJworICAgICAgICAgICAgICByJ1xzKyhhdXRvfHJlZ2lzdGVyfHN0YXRpY3xleHRlcm58
dHlwZWRlZilcYicsCisgICAgICAgICAgICAgIGxpbmUpOgorICAgICAgICBlcnJvcihmaWxlbmFt
ZSwgbGluZV9udW1iZXIsICdidWlsZC9zdG9yYWdlX2NsYXNzJywgNSwKKyAgICAgICAgICAgICAg
J1N0b3JhZ2UgY2xhc3MgKHN0YXRpYywgZXh0ZXJuLCB0eXBlZGVmLCBldGMpIHNob3VsZCBiZSBm
aXJzdC4nKQorCisgICAgaWYgbWF0Y2gocidccyojXHMqZW5kaWZccypbXi9cc10rJywgbGluZSk6
CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ2J1aWxkL2VuZGlmX2NvbW1l
bnQnLCA1LAorICAgICAgICAgICAgICAnVW5jb21tZW50ZWQgdGV4dCBhZnRlciAjZW5kaWYgaXMg
bm9uLXN0YW5kYXJkLiAgVXNlIGEgY29tbWVudC4nKQorCisgICAgaWYgbWF0Y2gocidccypjbGFz
c1xzKyhcdytccyo6OlxzKikrXHcrXHMqOycsIGxpbmUpOgorICAgICAgICBlcnJvcihmaWxlbmFt
ZSwgbGluZV9udW1iZXIsICdidWlsZC9mb3J3YXJkX2RlY2wnLCA1LAorICAgICAgICAgICAgICAn
SW5uZXItc3R5bGUgZm9yd2FyZCBkZWNsYXJhdGlvbnMgYXJlIGludmFsaWQuICBSZW1vdmUgdGhp
cyBsaW5lLicpCisKKyAgICBpZiBzZWFyY2gocicoXHcrfFsrLV0/XGQrKFwuXGQqKT8pXHMqKDx8
PilcPz0/XHMqKFx3K3xbKy1dP1xkKykoXC5cZCopPycsIGxpbmUpOgorICAgICAgICBlcnJvcihm
aWxlbmFtZSwgbGluZV9udW1iZXIsICdidWlsZC9kZXByZWNhdGVkJywgMywKKyAgICAgICAgICAg
ICAgJz4/IGFuZCA8PyAobWF4IGFuZCBtaW4pIG9wZXJhdG9ycyBhcmUgbm9uLXN0YW5kYXJkIGFu
ZCBkZXByZWNhdGVkLicpCisKKyAgICAjIFRyYWNrIGNsYXNzIGVudHJ5IGFuZCBleGl0LCBhbmQg
YXR0ZW1wdCB0byBmaW5kIGNhc2VzIHdpdGhpbiB0aGUKKyAgICAjIGNsYXNzIGRlY2xhcmF0aW9u
IHRoYXQgZG9uJ3QgbWVldCB0aGUgQysrIHN0eWxlCisgICAgIyBndWlkZWxpbmVzLiBUcmFja2lu
ZyBpcyB2ZXJ5IGRlcGVuZGVudCBvbiB0aGUgY29kZSBtYXRjaGluZyBHb29nbGUKKyAgICAjIHN0
eWxlIGd1aWRlbGluZXMsIGJ1dCBpdCBzZWVtcyB0byBwZXJmb3JtIHdlbGwgZW5vdWdoIGluIHRl
c3RpbmcKKyAgICAjIHRvIGJlIGEgd29ydGh3aGlsZSBhZGRpdGlvbiB0byB0aGUgY2hlY2tzLgor
ICAgIGNsYXNzaW5mb19zdGFjayA9IGNsYXNzX3N0YXRlLmNsYXNzaW5mb19zdGFjaworICAgICMg
TG9vayBmb3IgYSBjbGFzcyBkZWNsYXJhdGlvbgorICAgIGNsYXNzX2RlY2xfbWF0Y2ggPSBtYXRj
aCgKKyAgICAgICAgcidccyoodGVtcGxhdGVccyo8W1x3XHM8Piw6XSo+XHMqKT8oY2xhc3N8c3Ry
dWN0KVxzKyhcdysoOjpcdyspKiknLCBsaW5lKQorICAgIGlmIGNsYXNzX2RlY2xfbWF0Y2g6Cisg
ICAgICAgIGNsYXNzaW5mb19zdGFjay5hcHBlbmQoX0NsYXNzSW5mbyhjbGFzc19kZWNsX21hdGNo
Lmdyb3VwKDMpLCBsaW5lX251bWJlcikpCisKKyAgICAjIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGlz
IGZ1bmN0aW9uIHVzZXMgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaWYgaXQncworICAgICMgbm90IGVt
cHR5LgorICAgIGlmIG5vdCBjbGFzc2luZm9fc3RhY2s6CisgICAgICAgIHJldHVybgorCisgICAg
Y2xhc3NpbmZvID0gY2xhc3NpbmZvX3N0YWNrWy0xXQorCisgICAgIyBJZiB0aGUgb3BlbmluZyBi
cmFjZSBoYXNuJ3QgYmVlbiBzZWVuIGxvb2sgZm9yIGl0IGFuZCBhbHNvCisgICAgIyBwYXJlbnQg
Y2xhc3MgZGVjbGFyYXRpb25zLgorICAgIGlmIG5vdCBjbGFzc2luZm8uc2Vlbl9vcGVuX2JyYWNl
OgorICAgICAgICAjIElmIHRoZSBsaW5lIGhhcyBhICc7JyBpbiBpdCwgYXNzdW1lIGl0J3MgYSBm
b3J3YXJkIGRlY2xhcmF0aW9uIG9yCisgICAgICAgICMgYSBzaW5nbGUtbGluZSBjbGFzcyBkZWNs
YXJhdGlvbiwgd2hpY2ggd2Ugd29uJ3QgcHJvY2Vzcy4KKyAgICAgICAgaWYgbGluZS5maW5kKCc7
JykgIT0gLTE6CisgICAgICAgICAgICBjbGFzc2luZm9fc3RhY2sucG9wKCkKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICBjbGFzc2luZm8uc2Vlbl9vcGVuX2JyYWNlID0gKGxpbmUuZmluZCgn
eycpICE9IC0xKQorICAgICAgICAjIExvb2sgZm9yIGEgYmFyZSAnOicKKyAgICAgICAgaWYgc2Vh
cmNoKCcoXnxbXjpdKTooJHxbXjpdKScsIGxpbmUpOgorICAgICAgICAgICAgY2xhc3NpbmZvLmlz
X2Rlcml2ZWQgPSBUcnVlCisgICAgICAgIGlmIG5vdCBjbGFzc2luZm8uc2Vlbl9vcGVuX2JyYWNl
OgorICAgICAgICAgICAgcmV0dXJuICAjIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGlzIGZ1bmN0aW9u
IGlzIGZvciBhZnRlciBvcGVuIGJyYWNlCisKKyAgICAjIFRoZSBjbGFzcyBtYXkgaGF2ZSBiZWVu
IGRlY2xhcmVkIHdpdGggbmFtZXNwYWNlIG9yIGNsYXNzbmFtZSBxdWFsaWZpZXJzLgorICAgICMg
VGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIHdpbGwgbm90IGhhdmUgdGhvc2UgcXVhbGlm
aWVycy4KKyAgICBiYXNlX2NsYXNzbmFtZSA9IGNsYXNzaW5mby5uYW1lLnNwbGl0KCc6OicpWy0x
XQorCisgICAgIyBMb29rIGZvciBzaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHRoYXQgYXJl
bid0IG1hcmtlZCBleHBsaWNpdC4KKyAgICAjIFRlY2huaWNhbGx5IGEgdmFsaWQgY29uc3RydWN0
LCBidXQgYWdhaW5zdCBzdHlsZS4KKyAgICBhcmdzID0gbWF0Y2gocicoPzwhZXhwbGljaXQpXHMr
JXNccypcKChbXiwoKV0rKVwpJworICAgICAgICAgICAgICAgICAlIHJlLmVzY2FwZShiYXNlX2Ns
YXNzbmFtZSksCisgICAgICAgICAgICAgICAgIGxpbmUpCisgICAgaWYgKGFyZ3MKKyAgICAgICAg
YW5kIGFyZ3MuZ3JvdXAoMSkgIT0gJ3ZvaWQnCisgICAgICAgIGFuZCBub3QgbWF0Y2gocicoY29u
c3RccyspPyVzXHMqJicgJSByZS5lc2NhcGUoYmFzZV9jbGFzc25hbWUpLAorICAgICAgICAgICAg
ICAgICAgICAgIGFyZ3MuZ3JvdXAoMSkuc3RyaXAoKSkpOgorICAgICAgICBlcnJvcihmaWxlbmFt
ZSwgbGluZV9udW1iZXIsICdydW50aW1lL2V4cGxpY2l0JywgNSwKKyAgICAgICAgICAgICAgJ1Np
bmdsZS1hcmd1bWVudCBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJlIG1hcmtlZCBleHBsaWNpdC4nKQor
CisgICAgIyBMb29rIGZvciBtZXRob2RzIGRlY2xhcmVkIHZpcnR1YWwuCisgICAgaWYgc2VhcmNo
KHInXGJ2aXJ0dWFsXGInLCBsaW5lKToKKyAgICAgICAgY2xhc3NpbmZvLnZpcnR1YWxfbWV0aG9k
X2xpbmVfbnVtYmVyID0gbGluZV9udW1iZXIKKyAgICAgICAgIyBPbmx5IGxvb2sgZm9yIGEgZGVz
dHJ1Y3RvciBkZWNsYXJhdGlvbiBvbiB0aGUgc2FtZSBsaW5lLiBJdCB3b3VsZAorICAgICAgICAj
IGJlIGV4dHJlbWVseSB1bmxpa2VseSBmb3IgdGhlIGRlc3RydWN0b3IgZGVjbGFyYXRpb24gdG8g
b2NjdXB5CisgICAgICAgICMgbW9yZSB0aGFuIG9uZSBsaW5lLgorICAgICAgICBpZiBzZWFyY2go
cid+JXNccypcKCcgJSBiYXNlX2NsYXNzbmFtZSwgbGluZSk6CisgICAgICAgICAgICBjbGFzc2lu
Zm8uaGFzX3ZpcnR1YWxfZGVzdHJ1Y3RvciA9IFRydWUKKworICAgICMgTG9vayBmb3IgY2xhc3Mg
ZW5kLgorICAgIGJyYWNlX2RlcHRoID0gY2xhc3NpbmZvLmJyYWNlX2RlcHRoCisgICAgYnJhY2Vf
ZGVwdGggPSBicmFjZV9kZXB0aCArIGxpbmUuY291bnQoJ3snKSAtIGxpbmUuY291bnQoJ30nKQor
ICAgIGlmIGJyYWNlX2RlcHRoIDw9IDA6CisgICAgICAgIGNsYXNzaW5mbyA9IGNsYXNzaW5mb19z
dGFjay5wb3AoKQorICAgICAgICAjIFRyeSB0byBkZXRlY3QgbWlzc2luZyB2aXJ0dWFsIGRlc3Ry
dWN0b3IgZGVjbGFyYXRpb25zLgorICAgICAgICAjIEZvciBub3csIG9ubHkgd2FybiBpZiBhIG5v
bi1kZXJpdmVkIGNsYXNzIHdpdGggdmlydHVhbCBtZXRob2RzIGxhY2tzCisgICAgICAgICMgYSB2
aXJ0dWFsIGRlc3RydWN0b3IuIFRoaXMgaXMgdG8gbWFrZSBpdCBsZXNzIGxpa2VseSB0aGF0IHBl
b3BsZSB3aWxsCisgICAgICAgICMgZGVjbGFyZSBkZXJpdmVkIHZpcnR1YWwgZGVzdHJ1Y3RvcnMg
d2l0aG91dCBkZWNsYXJpbmcgdGhlIGJhc2UKKyAgICAgICAgIyBkZXN0cnVjdG9yIHZpcnR1YWwu
CisgICAgICAgIGlmICgoY2xhc3NpbmZvLnZpcnR1YWxfbWV0aG9kX2xpbmVfbnVtYmVyIGlzIG5v
dCBOb25lKQorICAgICAgICAgICAgYW5kIChub3QgY2xhc3NpbmZvLmhhc192aXJ0dWFsX2Rlc3Ry
dWN0b3IpCisgICAgICAgICAgICBhbmQgKG5vdCBjbGFzc2luZm8uaXNfZGVyaXZlZCkpOiAgIyBP
bmx5IHdhcm4gZm9yIGJhc2UgY2xhc3NlcworICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGNs
YXNzaW5mby5saW5lX251bWJlciwgJ3J1bnRpbWUvdmlydHVhbCcsIDQsCisgICAgICAgICAgICAg
ICAgICAnVGhlIGNsYXNzICVzIHByb2JhYmx5IG5lZWRzIGEgdmlydHVhbCBkZXN0cnVjdG9yIGR1
ZSB0byAnCisgICAgICAgICAgICAgICAgICAnaGF2aW5nIHZpcnR1YWwgbWV0aG9kKHMpLCBvbmUg
ZGVjbGFyZWQgYXQgbGluZSAlZC4nCisgICAgICAgICAgICAgICAgICAlIChjbGFzc2luZm8ubmFt
ZSwgY2xhc3NpbmZvLnZpcnR1YWxfbWV0aG9kX2xpbmVfbnVtYmVyKSkKKyAgICBlbHNlOgorICAg
ICAgICBjbGFzc2luZm8uYnJhY2VfZGVwdGggPSBicmFjZV9kZXB0aAorCisKK2RlZiBjaGVja19z
cGFjaW5nX2Zvcl9mdW5jdGlvbl9jYWxsKGZpbGVuYW1lLCBsaW5lLCBsaW5lX251bWJlciwgZXJy
b3IpOgorICAgICIiIkNoZWNrcyBmb3IgdGhlIGNvcnJlY3RuZXNzIG9mIHZhcmlvdXMgc3BhY2lu
ZyBhcm91bmQgZnVuY3Rpb24gY2FsbHMuCisKKyAgICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRo
ZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCisgICAgICBsaW5lOiBUaGUgdGV4dCBvZiB0aGUg
bGluZSB0byBjaGVjay4KKyAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5l
IHRvIGNoZWNrLgorICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVy
cm9ycyBmb3VuZC4KKyAgICAiIiIKKworICAgICMgU2luY2UgZnVuY3Rpb24gY2FsbHMgb2Z0ZW4g
b2NjdXIgaW5zaWRlIGlmL2Zvci93aGlsZS9zd2l0Y2gKKyAgICAjIGV4cHJlc3Npb25zIC0gd2hp
Y2ggaGF2ZSB0aGVpciBvd24sIG1vcmUgbGliZXJhbCBjb252ZW50aW9ucyAtIHdlCisgICAgIyBm
aXJzdCBzZWUgaWYgd2Ugc2hvdWxkIGJlIGxvb2tpbmcgaW5zaWRlIHN1Y2ggYW4gZXhwcmVzc2lv
biBmb3IgYQorICAgICMgZnVuY3Rpb24gY2FsbCwgdG8gd2hpY2ggd2UgY2FuIGFwcGx5IG1vcmUg
c3RyaWN0IHN0YW5kYXJkcy4KKyAgICBmdW5jdGlvbl9jYWxsID0gbGluZSAgICAjIGlmIHRoZXJl
J3Mgbm8gY29udHJvbCBmbG93IGNvbnN0cnVjdCwgbG9vayBhdCB3aG9sZSBsaW5lCisgICAgZm9y
IHBhdHRlcm4gaW4gKHInXGJpZlxzKlwoKC4qKVwpXHMqeycsCisgICAgICAgICAgICAgICAgICAg
IHInXGJmb3JccypcKCguKilcKVxzKnsnLAorICAgICAgICAgICAgICAgICAgICByJ1xid2hpbGVc
cypcKCguKilcKVxzKlt7O10nLAorICAgICAgICAgICAgICAgICAgICByJ1xic3dpdGNoXHMqXCgo
LiopXClccyp7Jyk6CisgICAgICAgIG1hdGNoZWQgPSBzZWFyY2gocGF0dGVybiwgbGluZSkKKyAg
ICAgICAgaWYgbWF0Y2hlZDoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2NhbGwgPSBtYXRjaGVkLmdy
b3VwKDEpICAgICMgbG9vayBpbnNpZGUgdGhlIHBhcmVucyBmb3IgZnVuY3Rpb24gY2FsbHMKKyAg
ICAgICAgICAgIGJyZWFrCisKKyAgICAjIEV4Y2VwdCBpbiBpZi9mb3Ivd2hpbGUvc3dpdGNoLCB0
aGVyZSBzaG91bGQgbmV2ZXIgYmUgc3BhY2UKKyAgICAjIGltbWVkaWF0ZWx5IGluc2lkZSBwYXJl
bnMgKGVnICJmKCAzLCA0ICkiKS4gIFdlIG1ha2UgYW4gZXhjZXB0aW9uCisgICAgIyBmb3IgbmVz
dGVkIHBhcmVucyAoIChhK2IpICsgYyApLiAgTGlrZXdpc2UsIHRoZXJlIHNob3VsZCBuZXZlciBi
ZQorICAgICMgYSBzcGFjZSBiZWZvcmUgYSAoIHdoZW4gaXQncyBhIGZ1bmN0aW9uIGFyZ3VtZW50
LiAgSSBhc3N1bWUgaXQncyBhCisgICAgIyBmdW5jdGlvbiBhcmd1bWVudCB3aGVuIHRoZSBjaGFy
IGJlZm9yZSB0aGUgd2hpdGVzcGFjZSBpcyBsZWdhbCBpbgorICAgICMgYSBmdW5jdGlvbiBuYW1l
IChhbG51bSArIF8pIGFuZCB3ZSdyZSBub3Qgc3RhcnRpbmcgYSBtYWNyby4gQWxzbyBpZ25vcmUK
KyAgICAjIHBvaW50ZXJzIGFuZCByZWZlcmVuY2VzIHRvIGFycmF5cyBhbmQgZnVuY3Rpb25zIGNv
eiB0aGV5J3JlIHRvbyB0cmlja3k6CisgICAgIyB3ZSB1c2UgYSB2ZXJ5IHNpbXBsZSB3YXkgdG8g
cmVjb2duaXplIHRoZXNlOgorICAgICMgIiAoc29tZXRoaW5nKShtYXliZS1zb21ldGhpbmcpIiBv
cgorICAgICMgIiAoc29tZXRoaW5nKShtYXliZS1zb21ldGhpbmcsIiBvcgorICAgICMgIiAoc29t
ZXRoaW5nKVtzb21ldGhpbmddIgorICAgICMgTm90ZSB0aGF0IHdlIGFzc3VtZSB0aGUgY29udGVu
dHMgb2YgW10gdG8gYmUgc2hvcnQgZW5vdWdoIHRoYXQKKyAgICAjIHRoZXknbGwgbmV2ZXIgbmVl
ZCB0byB3cmFwLgorICAgIGlmICggICMgSWdub3JlIGNvbnRyb2wgc3RydWN0dXJlcy4KKyAgICAg
ICAgbm90IHNlYXJjaChyJ1xiKGlmfGZvcnx3aGlsZXxzd2l0Y2h8cmV0dXJufG5ld3xkZWxldGUp
XGInLCBmdW5jdGlvbl9jYWxsKQorICAgICAgICAjIElnbm9yZSBwb2ludGVycy9yZWZlcmVuY2Vz
IHRvIGZ1bmN0aW9ucy4KKyAgICAgICAgYW5kIG5vdCBzZWFyY2gocicgXChbXildK1wpXChbXild
KihcKXwsJCknLCBmdW5jdGlvbl9jYWxsKQorICAgICAgICAjIElnbm9yZSBwb2ludGVycy9yZWZl
cmVuY2VzIHRvIGFycmF5cy4KKyAgICAgICAgYW5kIG5vdCBzZWFyY2gocicgXChbXildK1wpXFtb
XlxdXStcXScsIGZ1bmN0aW9uX2NhbGwpKToKKyAgICAgICAgaWYgc2VhcmNoKHInXHdccypcKFsg
XHRdKD8hXHMqXFwkKScsIGZ1bmN0aW9uX2NhbGwpOiAgICAgICMgYSAoIHVzZWQgZm9yIGEgZm4g
Y2FsbAorICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFj
ZS9wYXJlbnMnLCA0LAorICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGFmdGVyICggaW4g
ZnVuY3Rpb24gY2FsbCcpCisgICAgICAgIGVsaWYgc2VhcmNoKHInXChbIFx0XSsoPyEoXHMqXFwp
fFwoKScsIGZ1bmN0aW9uX2NhbGwpOgorICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVf
bnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJlbnMnLCAyLAorICAgICAgICAgICAgICAgICAgJ0V4dHJh
IHNwYWNlIGFmdGVyICgnKQorICAgICAgICBpZiAoc2VhcmNoKHInXHdccytcKCcsIGZ1bmN0aW9u
X2NhbGwpCisgICAgICAgICAgICBhbmQgbm90IHNlYXJjaChyJyNccypkZWZpbmV8dHlwZWRlZics
IGZ1bmN0aW9uX2NhbGwpKToKKyAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJl
ciwgJ3doaXRlc3BhY2UvcGFyZW5zJywgNCwKKyAgICAgICAgICAgICAgICAgICdFeHRyYSBzcGFj
ZSBiZWZvcmUgKCBpbiBmdW5jdGlvbiBjYWxsJykKKyAgICAgICAgIyBJZiB0aGUgKSBpcyBmb2xs
b3dlZCBvbmx5IGJ5IGEgbmV3bGluZSBvciBhIHsgKyBuZXdsaW5lLCBhc3N1bWUgaXQncworICAg
ICAgICAjIHBhcnQgb2YgYSBjb250cm9sIHN0YXRlbWVudCAoaWYvd2hpbGUvZXRjKSwgYW5kIGRv
bid0IGNvbXBsYWluCisgICAgICAgIGlmIHNlYXJjaChyJ1teKVxzXVxzK1wpKD8hXHMqJHx7XHMq
JCknLCBmdW5jdGlvbl9jYWxsKToKKyAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251
bWJlciwgJ3doaXRlc3BhY2UvcGFyZW5zJywgMiwKKyAgICAgICAgICAgICAgICAgICdFeHRyYSBz
cGFjZSBiZWZvcmUgKScpCisKKworZGVmIGlzX2JsYW5rX2xpbmUobGluZSk6CisgICAgIiIiUmV0
dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBsaW5lIGlzIGJsYW5rLgorCisgICAgV2UgY29uc2lkZXIg
YSBsaW5lIHRvIGJlIGJsYW5rIGlmIHRoZSBsaW5lIGlzIGVtcHR5IG9yIGNvbnNpc3RzIG9mCisg
ICAgb25seSB3aGl0ZSBzcGFjZXMuCisKKyAgICBBcmdzOgorICAgICAgbGluZTogQSBsaW5lIG9m
IGEgc3RyaW5nLgorCisgICAgUmV0dXJuczoKKyAgICAgIFRydWUsIGlmIHRoZSBnaXZlbiBsaW5l
IGlzIGJsYW5rLgorICAgICIiIgorICAgIHJldHVybiBub3QgbGluZSBvciBsaW5lLmlzc3BhY2Uo
KQorCisKK2RlZiBjaGVja19mb3JfZnVuY3Rpb25fbGVuZ3RocyhmaWxlbmFtZSwgY2xlYW5fbGlu
ZXMsIGxpbmVfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
X3N0YXRlLCBlcnJvcik6CisgICAgIiIiUmVwb3J0cyBmb3IgbG9uZyBmdW5jdGlvbiBib2RpZXMu
CisKKyAgICBGb3IgYW4gb3ZlcnZpZXcgd2h5IHRoaXMgaXMgZG9uZSwgc2VlOgorICAgIGh0dHA6
Ly9nb29nbGUtc3R5bGVndWlkZS5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvY3BwZ3VpZGUueG1s
I1dyaXRlX1Nob3J0X0Z1bmN0aW9ucworCisgICAgVXNlcyBhIHNpbXBsaXN0aWMgYWxnb3JpdGht
IGFzc3VtaW5nIG90aGVyIHN0eWxlIGd1aWRlbGluZXMKKyAgICAoZXNwZWNpYWxseSBzcGFjaW5n
KSBhcmUgZm9sbG93ZWQuCisgICAgT25seSBjaGVja3MgdW5pbmRlbnRlZCBmdW5jdGlvbnMsIHNv
IGNsYXNzIG1lbWJlcnMgYXJlIHVuY2hlY2tlZC4KKyAgICBUcml2aWFsIGJvZGllcyBhcmUgdW5j
aGVja2VkLCBzbyBjb25zdHJ1Y3RvcnMgd2l0aCBodWdlIGluaXRpYWxpemVyIGxpc3RzCisgICAg
bWF5IGJlIG1pc3NlZC4KKyAgICBCbGFuay9jb21tZW50IGxpbmVzIGFyZSBub3QgY291bnRlZCBz
byBhcyB0byBhdm9pZCBlbmNvdXJhZ2luZyB0aGUgcmVtb3ZhbAorICAgIG9mIHZlcnRpY2FsIHNw
YWNlIGFuZCBjb21tbWVudHMganVzdCB0byBnZXQgdGhyb3VnaCBhIGxpbnQgY2hlY2suCisgICAg
Tk9MSU5UICpvbiB0aGUgbGFzdCBsaW5lIG9mIGEgZnVuY3Rpb24qIGRpc2FibGVzIHRoaXMgY2hl
Y2suCisKKyAgICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50
IGZpbGUuCisgICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRh
aW5pbmcgdGhlIGZpbGUuCisgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGlu
ZSB0byBjaGVjay4KKyAgICAgIGZ1bmN0aW9uX3N0YXRlOiBDdXJyZW50IGZ1bmN0aW9uIG5hbWUg
YW5kIGxpbmVzIGluIGJvZHkgc28gZmFyLgorICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBj
YWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KKyAgICAiIiIKKyAgICBsaW5lcyA9IGNsZWFuX2xp
bmVzLmxpbmVzCisgICAgbGluZSA9IGxpbmVzW2xpbmVfbnVtYmVyXQorICAgIHJhdyA9IGNsZWFu
X2xpbmVzLnJhd19saW5lcworICAgIHJhd19saW5lID0gcmF3W2xpbmVfbnVtYmVyXQorICAgIGpv
aW5lZF9saW5lID0gJycKKworICAgIHN0YXJ0aW5nX2Z1bmMgPSBGYWxzZQorICAgIHJlZ2V4cCA9
IHInKFx3KFx3fDo6fFwqfFwmfFxzKSopXCgnICAjIGRlY2xzICogJiBzcGFjZTo6bmFtZSggLi4u
CisgICAgbWF0Y2hfcmVzdWx0ID0gbWF0Y2gocmVnZXhwLCBsaW5lKQorICAgIGlmIG1hdGNoX3Jl
c3VsdDoKKyAgICAgICAgIyBJZiB0aGUgbmFtZSBpcyBhbGwgY2FwcyBhbmQgdW5kZXJzY29yZXMs
IGZpZ3VyZSBpdCdzIGEgbWFjcm8gYW5kCisgICAgICAgICMgaWdub3JlIGl0LCB1bmxlc3MgaXQn
cyBURVNUIG9yIFRFU1RfRi4KKyAgICAgICAgZnVuY3Rpb25fbmFtZSA9IG1hdGNoX3Jlc3VsdC5n
cm91cCgxKS5zcGxpdCgpWy0xXQorICAgICAgICBpZiBmdW5jdGlvbl9uYW1lID09ICdURVNUJyBv
ciBmdW5jdGlvbl9uYW1lID09ICdURVNUX0YnIG9yIChub3QgbWF0Y2gocidbQS1aX10rJCcsIGZ1
bmN0aW9uX25hbWUpKToKKyAgICAgICAgICAgIHN0YXJ0aW5nX2Z1bmMgPSBUcnVlCisKKyAgICBp
ZiBzdGFydGluZ19mdW5jOgorICAgICAgICBib2R5X2ZvdW5kID0gRmFsc2UKKyAgICAgICAgZm9y
IHN0YXJ0X2xpbmVfbnVtYmVyIGluIHhyYW5nZShsaW5lX251bWJlciwgY2xlYW5fbGluZXMubnVt
X2xpbmVzKCkpOgorICAgICAgICAgICAgc3RhcnRfbGluZSA9IGxpbmVzW3N0YXJ0X2xpbmVfbnVt
YmVyXQorICAgICAgICAgICAgam9pbmVkX2xpbmUgKz0gJyAnICsgc3RhcnRfbGluZS5sc3RyaXAo
KQorICAgICAgICAgICAgaWYgc2VhcmNoKHInKDt8fSknLCBzdGFydF9saW5lKTogICMgRGVjbGFy
YXRpb25zIGFuZCB0cml2aWFsIGZ1bmN0aW9ucworICAgICAgICAgICAgICAgIGJvZHlfZm91bmQg
PSBUcnVlCisgICAgICAgICAgICAgICAgYnJlYWsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjIC4uLiBpZ25vcmUKKyAgICAgICAgICAgIGlmIHNlYXJjaChyJ3snLCBzdGFydF9saW5lKToK
KyAgICAgICAgICAgICAgICBib2R5X2ZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgIGZ1bmN0
aW9uID0gc2VhcmNoKHInKChcd3w6KSopXCgnLCBsaW5lKS5ncm91cCgxKQorICAgICAgICAgICAg
ICAgIGlmIG1hdGNoKHInVEVTVCcsIGZ1bmN0aW9uKTogICAgIyBIYW5kbGUgVEVTVC4uLiBtYWNy
b3MKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyX3JlZ2V4cCA9IHNlYXJjaChyJyhcKC4q
XCkpJywgam9pbmVkX2xpbmUpCisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtZXRlcl9yZWdl
eHA6ICAgICAgICAgICAgICMgSWdub3JlIGJhZCBzeW50YXgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uICs9IHBhcmFtZXRlcl9yZWdleHAuZ3JvdXAoMSkKKyAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiArPSAnKCknCisgICAgICAgICAg
ICAgICAgZnVuY3Rpb25fc3RhdGUuYmVnaW4oZnVuY3Rpb24pCisgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgaWYgbm90IGJvZHlfZm91bmQ6CisgICAgICAgICAgICAjIE5vIGJvZHkgZm9y
IHRoZSBmdW5jdGlvbiAob3IgZXZpZGVuY2Ugb2YgYSBub24tZnVuY3Rpb24pIHdhcyBmb3VuZC4K
KyAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L2Zu
X3NpemUnLCA1LAorICAgICAgICAgICAgICAgICAgJ0xpbnQgZmFpbGVkIHRvIGZpbmQgc3RhcnQg
b2YgZnVuY3Rpb24gYm9keS4nKQorICAgIGVsaWYgbWF0Y2gocideXH1ccyokJywgbGluZSk6ICAj
IGZ1bmN0aW9uIGVuZAorICAgICAgICBpZiBub3Qgc2VhcmNoKHInXGJOT0xJTlRcYicsIHJhd19s
aW5lKToKKyAgICAgICAgICAgIGZ1bmN0aW9uX3N0YXRlLmNoZWNrKGVycm9yLCBmaWxlbmFtZSwg
bGluZV9udW1iZXIpCisgICAgICAgIGZ1bmN0aW9uX3N0YXRlLmVuZCgpCisgICAgZWxpZiBub3Qg
bWF0Y2gocideXHMqJCcsIGxpbmUpOgorICAgICAgICBmdW5jdGlvbl9zdGF0ZS5jb3VudCgpICAj
IENvdW50IG5vbi1ibGFuay9ub24tY29tbWVudCBsaW5lcy4KKworCitkZWYgY2hlY2tfc3BhY2lu
ZyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CisgICAgIiIiQ2hl
Y2tzIGZvciB0aGUgY29ycmVjdG5lc3Mgb2YgdmFyaW91cyBzcGFjaW5nIGlzc3VlcyBpbiB0aGUg
Y29kZS4KKworICAgIFRoaW5ncyB3ZSBjaGVjayBmb3I6IHNwYWNlcyBhcm91bmQgb3BlcmF0b3Jz
LCBzcGFjZXMgYWZ0ZXIKKyAgICBpZi9mb3Ivd2hpbGUvc3dpdGNoLCBubyBzcGFjZXMgYXJvdW5k
IHBhcmVucyBpbiBmdW5jdGlvbiBjYWxscywgdHdvCisgICAgc3BhY2VzIGJldHdlZW4gY29kZSBh
bmQgY29tbWVudCwgZG9uJ3Qgc3RhcnQgYSBibG9jayB3aXRoIGEgYmxhbmsKKyAgICBsaW5lLCBk
b24ndCBlbmQgYSBmdW5jdGlvbiB3aXRoIGEgYmxhbmsgbGluZSwgZG9uJ3QgaGF2ZSB0b28gbWFu
eQorICAgIGJsYW5rIGxpbmVzIGluIGEgcm93LgorCisgICAgQXJnczoKKyAgICAgIGZpbGVuYW1l
OiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgorICAgICAgY2xlYW5fbGluZXM6IEEgQ2xl
YW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgorICAgICAgbGluZV9udW1i
ZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCisgICAgICBlcnJvcjogVGhlIGZ1
bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgorICAgICIiIgorCisgICAgcmF3
ID0gY2xlYW5fbGluZXMucmF3X2xpbmVzCisgICAgbGluZSA9IHJhd1tsaW5lX251bWJlcl0KKwor
ICAgICMgQmVmb3JlIG5peGluZyBjb21tZW50cywgY2hlY2sgaWYgdGhlIGxpbmUgaXMgYmxhbmsg
Zm9yIG5vIGdvb2QKKyAgICAjIHJlYXNvbi4gIFRoaXMgaW5jbHVkZXMgdGhlIGZpcnN0IGxpbmUg
YWZ0ZXIgYSBibG9jayBpcyBvcGVuZWQsIGFuZAorICAgICMgYmxhbmsgbGluZXMgYXQgdGhlIGVu
ZCBvZiBhIGZ1bmN0aW9uIChpZSwgcmlnaHQgYmVmb3JlIGEgbGluZSBsaWtlICd9JworICAgIGlm
IGlzX2JsYW5rX2xpbmUobGluZSk6CisgICAgICAgIGVsaWRlZCA9IGNsZWFuX2xpbmVzLmVsaWRl
ZAorICAgICAgICBwcmV2aW91c19saW5lID0gZWxpZGVkW2xpbmVfbnVtYmVyIC0gMV0KKyAgICAg
ICAgcHJldmlvdXNfYnJhY2UgPSBwcmV2aW91c19saW5lLnJmaW5kKCd7JykKKyAgICAgICAgIyBG
SVhNRTogRG9uJ3QgY29tcGxhaW4gaWYgbGluZSBiZWZvcmUgYmxhbmsgbGluZSwgYW5kIGxpbmUg
YWZ0ZXIsCisgICAgICAgICMgICAgICAgIGJvdGggc3RhcnQgd2l0aCBhbG51bXMgYW5kIGFyZSBp
bmRlbnRlZCB0aGUgc2FtZSBhbW91bnQuCisgICAgICAgICMgICAgICAgIFRoaXMgaWdub3JlcyB3
aGl0ZXNwYWNlIGF0IHRoZSBzdGFydCBvZiBhIG5hbWVzcGFjZSBibG9jaworICAgICAgICAjICAg
ICAgICBiZWNhdXNlIHRob3NlIGFyZSBub3QgdXN1YWxseSBpbmRlbnRlZC4KKyAgICAgICAgaWYg
KHByZXZpb3VzX2JyYWNlICE9IC0xIGFuZCBwcmV2aW91c19saW5lW3ByZXZpb3VzX2JyYWNlOl0u
ZmluZCgnfScpID09IC0xCisgICAgICAgICAgICBhbmQgcHJldmlvdXNfbGluZVs6cHJldmlvdXNf
YnJhY2VdLmZpbmQoJ25hbWVzcGFjZScpID09IC0xKToKKyAgICAgICAgICAgICMgT0ssIHdlIGhh
dmUgYSBibGFuayBsaW5lIGF0IHRoZSBzdGFydCBvZiBhIGNvZGUgYmxvY2suICBCZWZvcmUgd2UK
KyAgICAgICAgICAgICMgY29tcGxhaW4sIHdlIGNoZWNrIGlmIGl0IGlzIGFuIGV4Y2VwdGlvbiB0
byB0aGUgcnVsZTogVGhlIHByZXZpb3VzCisgICAgICAgICAgICAjIG5vbi1lbXB0eSBsaW5lIGhh
cyB0aGUgcGFyYW10ZXJzIG9mIGEgZnVuY3Rpb24gaGVhZGVyIHRoYXQgYXJlIGluZGVudGVkCisg
ICAgICAgICAgICAjIDQgc3BhY2VzIChiZWNhdXNlIHRoZXkgZGlkIG5vdCBmaXQgaW4gYSA4MCBj
b2x1bW4gbGluZSB3aGVuIHBsYWNlZCBvbgorICAgICAgICAgICAgIyB0aGUgc2FtZSBsaW5lIGFz
IHRoZSBmdW5jdGlvbiBuYW1lKS4gIFdlIGFsc28gY2hlY2sgZm9yIHRoZSBjYXNlIHdoZXJlCisg
ICAgICAgICAgICAjIHRoZSBwcmV2aW91cyBsaW5lIGlzIGluZGVudGVkIDYgc3BhY2VzLCB3aGlj
aCBtYXkgaGFwcGVuIHdoZW4gdGhlCisgICAgICAgICAgICAjIGluaXRpYWxpemVycyBvZiBhIGNv
bnN0cnVjdG9yIGRvIG5vdCBmaXQgaW50byBhIDgwIGNvbHVtbiBsaW5lLgorICAgICAgICAgICAg
ZXhjZXB0aW9uID0gRmFsc2UKKyAgICAgICAgICAgIGlmIG1hdGNoKHInIHs2fVx3JywgcHJldmlv
dXNfbGluZSk6ICAjIEluaXRpYWxpemVyIGxpc3Q/CisgICAgICAgICAgICAgICAgIyBXZSBhcmUg
bG9va2luZyBmb3IgdGhlIG9wZW5pbmcgY29sdW1uIG9mIGluaXRpYWxpemVyIGxpc3QsIHdoaWNo
CisgICAgICAgICAgICAgICAgIyBzaG91bGQgYmUgaW5kZW50ZWQgNCBzcGFjZXMgdG8gY2F1c2Ug
NiBzcGFjZSBpbmRlbnRhdGlvbiBhZnRlcndhcmRzLgorICAgICAgICAgICAgICAgIHNlYXJjaF9w
b3NpdGlvbiA9IGxpbmVfbnVtYmVyIC0gMgorICAgICAgICAgICAgICAgIHdoaWxlIChzZWFyY2hf
cG9zaXRpb24gPj0gMAorICAgICAgICAgICAgICAgICAgICAgICBhbmQgbWF0Y2gocicgezZ9XHcn
LCBlbGlkZWRbc2VhcmNoX3Bvc2l0aW9uXSkpOgorICAgICAgICAgICAgICAgICAgICBzZWFyY2hf
cG9zaXRpb24gLT0gMQorICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IChzZWFyY2hfcG9zaXRp
b24gPj0gMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZWxpZGVkW3NlYXJjaF9w
b3NpdGlvbl1bOjVdID09ICcgICAgOicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgICMgU2VhcmNoIGZvciB0aGUgZnVuY3Rpb24gYXJndW1lbnRzIG9yIGFuIGluaXRpYWxpemVy
IGxpc3QuICBXZSB1c2UgYQorICAgICAgICAgICAgICAgICMgc2ltcGxlIGhldXJpc3RpYyBoZXJl
OiBJZiB0aGUgbGluZSBpcyBpbmRlbnRlZCA0IHNwYWNlczsgYW5kIHdlIGhhdmUgYQorICAgICAg
ICAgICAgICAgICMgY2xvc2luZyBwYXJlbiwgd2l0aG91dCB0aGUgb3BlbmluZyBwYXJlbiwgZm9s
bG93ZWQgYnkgYW4gb3BlbmluZyBicmFjZQorICAgICAgICAgICAgICAgICMgb3IgY29sb24gKGZv
ciBpbml0aWFsaXplciBsaXN0cykgd2UgYXNzdW1lIHRoYXQgaXQgaXMgdGhlIGxhc3QgbGluZSBv
ZgorICAgICAgICAgICAgICAgICMgYSBmdW5jdGlvbiBoZWFkZXIuICBJZiB3ZSBoYXZlIGEgY29s
b24gaW5kZW50ZWQgNCBzcGFjZXMsIGl0IGlzIGFuCisgICAgICAgICAgICAgICAgIyBpbml0aWFs
aXplciBsaXN0LgorICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IChtYXRjaChyJyB7NH1cd1te
XChdKlwpXHMqKGNvbnN0XHMqKT8oXHtccyokfDopJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJldmlvdXNfbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3IgbWF0Y2gocicgezR9OicsIHByZXZpb3VzX2xpbmUpKQorCisgICAgICAgICAgICBpZiBub3Qg
ZXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwg
J3doaXRlc3BhY2UvYmxhbmtfbGluZScsIDIsCisgICAgICAgICAgICAgICAgICAgICAgJ0JsYW5r
IGxpbmUgYXQgdGhlIHN0YXJ0IG9mIGEgY29kZSBibG9jay4gIElzIHRoaXMgbmVlZGVkPycpCisg
ICAgICAgICMgVGhpcyBkb2Vzbid0IGlnbm9yZSB3aGl0ZXNwYWNlIGF0IHRoZSBlbmQgb2YgYSBu
YW1lc3BhY2UgYmxvY2sKKyAgICAgICAgIyBiZWNhdXNlIHRoYXQgaXMgdG9vIGhhcmQgd2l0aG91
dCBwYWlyaW5nIG9wZW4vY2xvc2UgYnJhY2VzOworICAgICAgICAjIGhvd2V2ZXIsIGEgc3BlY2lh
bCBleGNlcHRpb24gaXMgbWFkZSBmb3IgbmFtZXNwYWNlIGNsb3NpbmcKKyAgICAgICAgIyBicmFj
a2V0cyB3aGljaCBoYXZlIGEgY29tbWVudCBjb250YWluaW5nICJuYW1lc3BhY2UiLgorICAgICAg
ICAjCisgICAgICAgICMgQWxzbywgaWdub3JlIGJsYW5rIGxpbmVzIGF0IHRoZSBlbmQgb2YgYSBi
bG9jayBpbiBhIGxvbmcgaWYtZWxzZQorICAgICAgICAjIGNoYWluLCBsaWtlIHRoaXM6CisgICAg
ICAgICMgICBpZiAoY29uZGl0aW9uMSkgeworICAgICAgICAjICAgICAvLyBTb21ldGhpbmcgZm9s
bG93ZWQgYnkgYSBibGFuayBsaW5lCisgICAgICAgICMKKyAgICAgICAgIyAgIH0gZWxzZSBpZiAo
Y29uZGl0aW9uMikgeworICAgICAgICAjICAgICAvLyBTb21ldGhpbmcgZWxzZQorICAgICAgICAj
ICAgfQorICAgICAgICBpZiBsaW5lX251bWJlciArIDEgPCBjbGVhbl9saW5lcy5udW1fbGluZXMo
KToKKyAgICAgICAgICAgIG5leHRfbGluZSA9IHJhd1tsaW5lX251bWJlciArIDFdCisgICAgICAg
ICAgICBpZiAobmV4dF9saW5lCisgICAgICAgICAgICAgICAgYW5kIG1hdGNoKHInXHMqfScsIG5l
eHRfbGluZSkKKyAgICAgICAgICAgICAgICBhbmQgbmV4dF9saW5lLmZpbmQoJ25hbWVzcGFjZScp
ID09IC0xCisgICAgICAgICAgICAgICAgYW5kIG5leHRfbGluZS5maW5kKCd9IGVsc2UgJykgPT0g
LTEpOgorICAgICAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRl
c3BhY2UvYmxhbmtfbGluZScsIDMsCisgICAgICAgICAgICAgICAgICAgICAgJ0JsYW5rIGxpbmUg
YXQgdGhlIGVuZCBvZiBhIGNvZGUgYmxvY2suICBJcyB0aGlzIG5lZWRlZD8nKQorCisgICAgIyBO
ZXh0LCB3ZSBjb21wbGFpbiBpZiB0aGVyZSdzIGEgY29tbWVudCB0b28gbmVhciB0aGUgdGV4dAor
ICAgIGNvbW1lbnRfcG9zaXRpb24gPSBsaW5lLmZpbmQoJy8vJykKKyAgICBpZiBjb21tZW50X3Bv
c2l0aW9uICE9IC0xOgorICAgICAgICAjIENoZWNrIGlmIHRoZSAvLyBtYXkgYmUgaW4gcXVvdGVz
LiAgSWYgc28sIGlnbm9yZSBpdAorICAgICAgICAjIENvbXBhcmlzb25zIG1hZGUgZXhwbGljaXQg
Zm9yIGNsYXJpdHkgLS0gcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwMworICAgICAgICBpZiAobGlu
ZS5jb3VudCgnIicsIDAsIGNvbW1lbnRfcG9zaXRpb24pIC0gbGluZS5jb3VudCgnXFwiJywgMCwg
Y29tbWVudF9wb3NpdGlvbikpICUgMiA9PSAwOiAgICMgbm90IGluIHF1b3RlcworICAgICAgICAg
ICAgIyBBbGxvdyBvbmUgc3BhY2UgZm9yIG5ldyBzY29wZXMsIHR3byBzcGFjZXMgb3RoZXJ3aXNl
OgorICAgICAgICAgICAgaWYgKG5vdCBtYXRjaChyJ15ccyp7IC8vJywgbGluZSkKKyAgICAgICAg
ICAgICAgICBhbmQgKChjb21tZW50X3Bvc2l0aW9uID49IDEKKyAgICAgICAgICAgICAgICAgICAg
ICBhbmQgbGluZVtjb21tZW50X3Bvc2l0aW9uLTFdIG5vdCBpbiBzdHJpbmcud2hpdGVzcGFjZSkK
KyAgICAgICAgICAgICAgICAgICAgIG9yIChjb21tZW50X3Bvc2l0aW9uID49IDIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmQgbGluZVtjb21tZW50X3Bvc2l0aW9uLTJdIG5vdCBpbiBzdHJp
bmcud2hpdGVzcGFjZSkpKToKKyAgICAgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9u
dW1iZXIsICd3aGl0ZXNwYWNlL2NvbW1lbnRzJywgMiwKKyAgICAgICAgICAgICAgICAgICAgICAn
QXQgbGVhc3QgdHdvIHNwYWNlcyBpcyBiZXN0IGJldHdlZW4gY29kZSBhbmQgY29tbWVudHMnKQor
ICAgICAgICAgICAgIyBUaGVyZSBzaG91bGQgYWx3YXlzIGJlIGEgc3BhY2UgYmV0d2VlbiB0aGUg
Ly8gYW5kIHRoZSBjb21tZW50CisgICAgICAgICAgICBjb21tZW50ZW5kID0gY29tbWVudF9wb3Np
dGlvbiArIDIKKyAgICAgICAgICAgIGlmIGNvbW1lbnRlbmQgPCBsZW4obGluZSkgYW5kIG5vdCBs
aW5lW2NvbW1lbnRlbmRdID09ICcgJzoKKyAgICAgICAgICAgICAgICAjIGJ1dCBzb21lIGxpbmVz
IGFyZSBleGNlcHRpb25zIC0tIGUuZy4gaWYgdGhleSdyZSBiaWcKKyAgICAgICAgICAgICAgICAj
IGNvbW1lbnQgZGVsaW1pdGVycyBsaWtlOgorICAgICAgICAgICAgICAgICMgLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg
ICAgICAgICAgIyBvciB0aGV5IGJlZ2luIHdpdGggbXVsdGlwbGUgc2xhc2hlcyBmb2xsb3dlZCBi
eSBhIHNwYWNlOgorICAgICAgICAgICAgICAgICMgLy8vLy8vLy8gSGVhZGVyIGNvbW1lbnQKKyAg
ICAgICAgICAgICAgICBtYXRjaGVkID0gKHNlYXJjaChyJ1s9Ly1dezQsfVxzKiQnLCBsaW5lW2Nv
bW1lbnRlbmQ6XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHNlYXJjaChyJ14vKyAn
LCBsaW5lW2NvbW1lbnRlbmQ6XSkpCisgICAgICAgICAgICAgICAgaWYgbm90IG1hdGNoZWQ6Cisg
ICAgICAgICAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3Bh
Y2UvY29tbWVudHMnLCA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAnU2hvdWxkIGhhdmUg
YSBzcGFjZSBiZXR3ZWVuIC8vIGFuZCBjb21tZW50JykKKworICAgIGxpbmUgPSBjbGVhbl9saW5l
cy5lbGlkZWRbbGluZV9udW1iZXJdICAjIGdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MK
KworICAgICMgRG9uJ3QgdHJ5IHRvIGRvIHNwYWNpbmcgY2hlY2tzIGZvciBvcGVyYXRvciBtZXRo
b2RzCisgICAgbGluZSA9IHJlLnN1YihyJ29wZXJhdG9yKD09fCE9fDx8PDx8PD18Pj18Pj58Pilc
KCcsICdvcGVyYXRvclwoJywgbGluZSkKKworICAgICMgV2UgYWxsb3cgbm8tc3BhY2VzIGFyb3Vu
ZCA9IHdpdGhpbiBhbiBpZjogImlmICggKGE9Rm9vKCkpID09IDAgKSIuCisgICAgIyBPdGhlcndp
c2Ugbm90LiAgTm90ZSB3ZSBvbmx5IGNoZWNrIGZvciBub24tc3BhY2VzIG9uICpib3RoKiBzaWRl
czsKKyAgICAjIHNvbWV0aW1lcyBwZW9wbGUgcHV0IG5vbi1zcGFjZXMgb24gb25lIHNpZGUgd2hl
biBhbGlnbmluZyA9J3MgYW1vbmcKKyAgICAjIG1hbnkgbGluZXMgKG5vdCB0aGF0IHRoaXMgaXMg
YmVoYXZpb3IgdGhhdCBJIGFwcHJvdmUgb2YuLi4pCisgICAgaWYgc2VhcmNoKHInW1x3Ll09W1x3
Ll0nLCBsaW5lKSBhbmQgbm90IHNlYXJjaChyJ1xiKGlmfHdoaWxlKSAnLCBsaW5lKToKKyAgICAg
ICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9vcGVyYXRvcnMnLCA0
LAorICAgICAgICAgICAgICAnTWlzc2luZyBzcGFjZXMgYXJvdW5kID0nKQorCisgICAgIyBGSVhN
RTogSXQncyBub3Qgb2sgdG8gaGF2ZSBzcGFjZXMgYXJvdW5kIGJpbmFyeSBvcGVyYXRvcnMgbGlr
ZSArIC0gKiAvIC4KKworICAgICMgWW91IHNob3VsZCBhbHdheXMgaGF2ZSB3aGl0ZXNwYWNlIGFy
b3VuZCBiaW5hcnkgb3BlcmF0b3JzLgorICAgICMgQWxhcywgd2UgY2FuJ3QgdGVzdCA8IG9yID4g
YmVjYXVzZSB0aGV5J3JlIGxlZ2l0aW1hdGVseSB1c2VkIHNhbnMgc3BhY2VzCisgICAgIyAoYS0+
YiwgdmVjdG9yPGludD4gYSkuICBUaGUgb25seSB0aW1lIHdlIGNhbiB0ZWxsIGlzIGEgPCB3aXRo
IG5vID4sIGFuZAorICAgICMgb25seSBpZiBpdCdzIG5vdCB0ZW1wbGF0ZSBwYXJhbXMgbGlzdCBz
cGlsbGluZyBpbnRvIHRoZSBuZXh0IGxpbmUuCisgICAgbWF0Y2hlZCA9IHNlYXJjaChyJ1tePD49
IVxzXSg9PXwhPXw8PXw+PSlbXjw+PSFcc10nLCBsaW5lKQorICAgIGlmIG5vdCBtYXRjaGVkOgor
ICAgICAgICAjIE5vdGUgdGhhdCB3aGlsZSBpdCBzZWVtcyB0aGF0IHRoZSAnPFtePF0qJyB0ZXJt
IGluIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgIyByZWdleHAgY291bGQgYmUgc2ltcGxpZmllZCB0
byAnPC4qJywgd2hpY2ggd291bGQgaW5kZWVkIG1hdGNoCisgICAgICAgICMgdGhlIHNhbWUgY2xh
c3Mgb2Ygc3RyaW5ncywgdGhlIFtePF0gbWVhbnMgdGhhdCBzZWFyY2hpbmcgZm9yIHRoZQorICAg
ICAgICAjIHJlZ2V4cCB0YWtlcyBsaW5lYXIgcmF0aGVyIHRoYW4gcXVhZHJhdGljIHRpbWUuCisg
ICAgICAgIGlmIG5vdCBzZWFyY2gocic8W148XSosXHMqJCcsIGxpbmUpOiAgIyB0ZW1wbGF0ZSBw
YXJhbXMgc3BpbGwKKyAgICAgICAgICAgIG1hdGNoZWQgPSBzZWFyY2gocidbXjw+PSFcc10oPClb
Xjw+PSFcc10oW14+XXwtPikqJCcsIGxpbmUpCisgICAgaWYgbWF0Y2hlZDoKKyAgICAgICAgZXJy
b3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9vcGVyYXRvcnMnLCAzLAorICAg
ICAgICAgICAgICAnTWlzc2luZyBzcGFjZXMgYXJvdW5kICVzJyAlIG1hdGNoZWQuZ3JvdXAoMSkp
CisgICAgIyBXZSBhbGxvdyBuby1zcGFjZXMgYXJvdW5kIDw8IGFuZCA+PiB3aGVuIHVzZWQgbGlr
ZSB0aGlzOiAxMDw8MjAsIGJ1dAorICAgICMgbm90IG90aGVyd2lzZSAocGFydGljdWxhcmx5LCBu
b3Qgd2hlbiB1c2VkIGFzIHN0cmVhbXMpCisgICAgbWF0Y2hlZCA9IHNlYXJjaChyJ1teMC05XHNd
KDw8fD4+KVteMC05XHNdJywgbGluZSkKKyAgICBpZiBtYXRjaGVkOgorICAgICAgICBlcnJvcihm
aWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL29wZXJhdG9ycycsIDMsCisgICAgICAg
ICAgICAgICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgJXMnICUgbWF0Y2hlZC5ncm91cCgxKSkKKwor
ICAgICMgVGhlcmUgc2hvdWxkbid0IGJlIHNwYWNlIGFyb3VuZCB1bmFyeSBvcGVyYXRvcnMKKyAg
ICBtYXRjaGVkID0gc2VhcmNoKHInKCFcc3x+XHN8W1xzXS0tW1xzO118W1xzXVwrXCtbXHM7XSkn
LCBsaW5lKQorICAgIGlmIG1hdGNoZWQ6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251
bWJlciwgJ3doaXRlc3BhY2Uvb3BlcmF0b3JzJywgNCwKKyAgICAgICAgICAgICAgJ0V4dHJhIHNw
YWNlIGZvciBvcGVyYXRvciAlcycgJSBtYXRjaGVkLmdyb3VwKDEpKQorCisgICAgIyBBIHBldCBw
ZWV2ZSBvZiBtaW5lOiBubyBzcGFjZXMgYWZ0ZXIgYW4gaWYsIHdoaWxlLCBzd2l0Y2gsIG9yIGZv
cgorICAgIG1hdGNoZWQgPSBzZWFyY2gocicgKGlmXCh8Zm9yXCh8d2hpbGVcKHxzd2l0Y2hcKCkn
LCBsaW5lKQorICAgIGlmIG1hdGNoZWQ6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251
bWJlciwgJ3doaXRlc3BhY2UvcGFyZW5zJywgNSwKKyAgICAgICAgICAgICAgJ01pc3Npbmcgc3Bh
Y2UgYmVmb3JlICggaW4gJXMnICUgbWF0Y2hlZC5ncm91cCgxKSkKKworICAgICMgRm9yIGlmL2Zv
ci93aGlsZS9zd2l0Y2gsIHRoZSBsZWZ0IGFuZCByaWdodCBwYXJlbnMgc2hvdWxkIGJlCisgICAg
IyBjb25zaXN0ZW50IGFib3V0IGhvdyBtYW55IHNwYWNlcyBhcmUgaW5zaWRlIHRoZSBwYXJlbnMs
IGFuZAorICAgICMgdGhlcmUgc2hvdWxkIGVpdGhlciBiZSB6ZXJvIG9yIG9uZSBzcGFjZXMgaW5z
aWRlIHRoZSBwYXJlbnMuCisgICAgIyBXZSBkb24ndCB3YW50OiAiaWYgKCBmb28pIiBvciAiaWYg
KCBmb28gICApIi4KKyAgICAjIEV4Y2VwdGlvbjogImZvciAoIDsgZm9vOyBiYXIpIiBhbmQgImZv
ciAoZm9vOyBiYXI7ICkiIGFyZSBhbGxvd2VkLgorICAgIG1hdGNoZWQgPSBzZWFyY2gocidcYihp
Znxmb3J8d2hpbGV8c3dpdGNoKVxzKlwoKFsgXSopKC4pLipbXiBdKyhbIF0qKVwpXHMqe1xzKiQn
LAorICAgICAgICAgICAgICAgICAgICAgbGluZSkKKyAgICBpZiBtYXRjaGVkOgorICAgICAgICBp
ZiBsZW4obWF0Y2hlZC5ncm91cCgyKSkgIT0gbGVuKG1hdGNoZWQuZ3JvdXAoNCkpOgorICAgICAg
ICAgICAgaWYgbm90IChtYXRjaGVkLmdyb3VwKDMpID09ICc7JworICAgICAgICAgICAgICAgICAg
ICBhbmQgbGVuKG1hdGNoZWQuZ3JvdXAoMikpID09IDEgKyBsZW4obWF0Y2hlZC5ncm91cCg0KSkK
KyAgICAgICAgICAgICAgICAgICAgb3Igbm90IG1hdGNoZWQuZ3JvdXAoMikgYW5kIHNlYXJjaChy
J1xiZm9yXHMqXCguKjsgXCknLCBsaW5lKSk6CisgICAgICAgICAgICAgICAgZXJyb3IoZmlsZW5h
bWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJlbnMnLCA1LAorICAgICAgICAgICAgICAg
ICAgICAgICdNaXNtYXRjaGluZyBzcGFjZXMgaW5zaWRlICgpIGluICVzJyAlIG1hdGNoZWQuZ3Jv
dXAoMSkpCisgICAgICAgIGlmIG5vdCBsZW4obWF0Y2hlZC5ncm91cCgyKSkgaW4gWzAsIDFdOgor
ICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJl
bnMnLCA1LAorICAgICAgICAgICAgICAgICAgJ1Nob3VsZCBoYXZlIHplcm8gb3Igb25lIHNwYWNl
cyBpbnNpZGUgKCBhbmQgKSBpbiAlcycgJQorICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5ncm91
cCgxKSkKKworICAgICMgWW91IHNob3VsZCBhbHdheXMgaGF2ZSBhIHNwYWNlIGFmdGVyIGEgY29t
bWEgKGVpdGhlciBhcyBmbiBhcmcgb3Igb3BlcmF0b3IpCisgICAgaWYgc2VhcmNoKHInLFteXHNd
JywgbGluZSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3Bh
Y2UvY29tbWEnLCAzLAorICAgICAgICAgICAgICAnTWlzc2luZyBzcGFjZSBhZnRlciAsJykKKwor
ICAgICMgTmV4dCB3ZSB3aWxsIGxvb2sgZm9yIGlzc3VlcyB3aXRoIGZ1bmN0aW9uIGNhbGxzLgor
ICAgIGNoZWNrX3NwYWNpbmdfZm9yX2Z1bmN0aW9uX2NhbGwoZmlsZW5hbWUsIGxpbmUsIGxpbmVf
bnVtYmVyLCBlcnJvcikKKworICAgICMgRXhjZXB0IGFmdGVyIGFuIG9wZW5pbmcgcGFyZW4sIHlv
dSBzaG91bGQgaGF2ZSBzcGFjZXMgYmVmb3JlIHlvdXIgYnJhY2VzLgorICAgICMgQW5kIHNpbmNl
IHlvdSBzaG91bGQgbmV2ZXIgaGF2ZSBicmFjZXMgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUs
IHRoaXMgaXMKKyAgICAjIGFuIGVhc3kgdGVzdC4KKyAgICBpZiBzZWFyY2gocidbXiAoe117Jywg
bGluZSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2Uv
YnJhY2VzJywgNSwKKyAgICAgICAgICAgICAgJ01pc3Npbmcgc3BhY2UgYmVmb3JlIHsnKQorCisg
ICAgIyBNYWtlIHN1cmUgJ30gZWxzZSB7JyBoYXMgc3BhY2VzLgorICAgIGlmIHNlYXJjaChyJ31l
bHNlJywgbGluZSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRl
c3BhY2UvYnJhY2VzJywgNSwKKyAgICAgICAgICAgICAgJ01pc3Npbmcgc3BhY2UgYmVmb3JlIGVs
c2UnKQorCisgICAgIyBZb3Ugc2hvdWxkbid0IGhhdmUgc3BhY2VzIGJlZm9yZSB5b3VyIGJyYWNr
ZXRzLCBleGNlcHQgbWF5YmUgYWZ0ZXIKKyAgICAjICdkZWxldGUgW10nIG9yICduZXcgY2hhciAq
IFtdJy4KKyAgICBpZiBzZWFyY2gocidcd1xzK1xbJywgbGluZSkgYW5kIG5vdCBzZWFyY2gocidk
ZWxldGVccytcWycsIGxpbmUpOgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIs
ICd3aGl0ZXNwYWNlL2JyYWNlcycsIDUsCisgICAgICAgICAgICAgICdFeHRyYSBzcGFjZSBiZWZv
cmUgWycpCisKKyAgICAjIFlvdSBzaG91bGRuJ3QgaGF2ZSBhIHNwYWNlIGJlZm9yZSBhIHNlbWlj
b2xvbiBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lLgorICAgICMgVGhlcmUncyBhIHNwZWNpYWwgY2Fz
ZSBmb3IgImZvciIgc2luY2UgdGhlIHN0eWxlIGd1aWRlIGFsbG93cyBzcGFjZSBiZWZvcmUKKyAg
ICAjIHRoZSBzZW1pY29sb24gdGhlcmUuCisgICAgaWYgc2VhcmNoKHInOlxzKjtccyokJywgbGlu
ZSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2Uvc2Vt
aWNvbG9uJywgNSwKKyAgICAgICAgICAgICAgJ1NlbWljb2xvbiBkZWZpbmluZyBlbXB0eSBzdGF0
ZW1lbnQuIFVzZSB7IH0gaW5zdGVhZC4nKQorICAgIGVsaWYgc2VhcmNoKHInXlxzKjtccyokJywg
bGluZSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2Uv
c2VtaWNvbG9uJywgNSwKKyAgICAgICAgICAgICAgJ0xpbmUgY29udGFpbnMgb25seSBzZW1pY29s
b24uIElmIHRoaXMgc2hvdWxkIGJlIGFuIGVtcHR5IHN0YXRlbWVudCwgJworICAgICAgICAgICAg
ICAndXNlIHsgfSBpbnN0ZWFkLicpCisgICAgZWxpZiAoc2VhcmNoKHInXHMrO1xzKiQnLCBsaW5l
KSBhbmQgbm90IHNlYXJjaChyJ1xiZm9yXGInLCBsaW5lKSk6CisgICAgICAgIGVycm9yKGZpbGVu
YW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2Uvc2VtaWNvbG9uJywgNSwKKyAgICAgICAgICAg
ICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSBsYXN0IHNlbWljb2xvbi4gSWYgdGhpcyBzaG91bGQgYmUg
YW4gZW1wdHkgJworICAgICAgICAgICAgICAnc3RhdGVtZW50LCB1c2UgeyB9IGluc3RlYWQuJykK
KyAgICBlbGlmIChzZWFyY2gocidcYihmb3J8d2hpbGUpXHMqXCguKlwpXHMqO1xzKiQnLCBsaW5l
KQorICAgICAgICAgIGFuZCBsaW5lLmNvdW50KCcoJykgPT0gbGluZS5jb3VudCgnKScpCisgICAg
ICAgICAgIyBBbGxvdyBkbyB7fSB3aGlsZSgpOworICAgICAgICAgIGFuZCBub3Qgc2VhcmNoKHIn
fVxzKndoaWxlJywgbGluZSkpOgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIs
ICd3aGl0ZXNwYWNlL3NlbWljb2xvbicsIDUsCisgICAgICAgICAgICAgICdTZW1pY29sb24gZGVm
aW5pbmcgZW1wdHkgc3RhdGVtZW50IGZvciB0aGlzIGxvb3AuIFVzZSB7IH0gaW5zdGVhZC4nKQor
CisKK2RlZiBnZXRfcHJldmlvdXNfbm9uX2JsYW5rX2xpbmUoY2xlYW5fbGluZXMsIGxpbmVfbnVt
YmVyKToKKyAgICAiIiJSZXR1cm4gdGhlIG1vc3QgcmVjZW50IG5vbi1ibGFuayBsaW5lIGFuZCBp
dHMgbGluZSBudW1iZXIuCisKKyAgICBBcmdzOgorICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5z
ZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlIGNvbnRlbnRzLgorICAgICAgbGlu
ZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCisKKyAgICBSZXR1cm5z
OgorICAgICAgQSB0dXBsZSB3aXRoIHR3byBlbGVtZW50cy4gIFRoZSBmaXJzdCBlbGVtZW50IGlz
IHRoZSBjb250ZW50cyBvZiB0aGUgbGFzdAorICAgICAgbm9uLWJsYW5rIGxpbmUgYmVmb3JlIHRo
ZSBjdXJyZW50IGxpbmUsIG9yIHRoZSBlbXB0eSBzdHJpbmcgaWYgdGhpcyBpcyB0aGUKKyAgICAg
IGZpcnN0IG5vbi1ibGFuayBsaW5lLiAgVGhlIHNlY29uZCBpcyB0aGUgbGluZSBudW1iZXIgb2Yg
dGhhdCBsaW5lLCBvciAtMQorICAgICAgaWYgdGhpcyBpcyB0aGUgZmlyc3Qgbm9uLWJsYW5rIGxp
bmUuCisgICAgIiIiCisKKyAgICBwcmV2aW91c19saW5lX251bWJlciA9IGxpbmVfbnVtYmVyIC0g
MQorICAgIHdoaWxlIHByZXZpb3VzX2xpbmVfbnVtYmVyID49IDA6CisgICAgICAgIHByZXZpb3Vz
X2xpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbcHJldmlvdXNfbGluZV9udW1iZXJdCisgICAgICAg
IGlmIG5vdCBpc19ibGFua19saW5lKHByZXZpb3VzX2xpbmUpOiAgICAgIyBpZiBub3QgYSBibGFu
ayBsaW5lLi4uCisgICAgICAgICAgICByZXR1cm4gKHByZXZpb3VzX2xpbmUsIHByZXZpb3VzX2xp
bmVfbnVtYmVyKQorICAgICAgICBwcmV2aW91c19saW5lX251bWJlciAtPSAxCisgICAgcmV0dXJu
ICgnJywgLTEpCisKKworZGVmIGNoZWNrX2JyYWNlcyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxp
bmVfbnVtYmVyLCBlcnJvcik6CisgICAgIiIiTG9va3MgZm9yIG1pc3BsYWNlZCBicmFjZXMgKGUu
Zy4gYXQgdGhlIGVuZCBvZiBsaW5lKS4KKworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTogVGhl
IG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2Vk
TGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KKyAgICAgIGxpbmVfbnVtYmVyOiBU
aGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAgICAgZXJyb3I6IFRoZSBmdW5jdGlv
biB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KKyAgICAiIiIKKworICAgIGxpbmUgPSBj
bGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICAgICAgICAjIGdldCByaWQgb2YgY29tbWVu
dHMgYW5kIHN0cmluZ3MKKworICAgIGlmIG1hdGNoKHInXHMqe1xzKiQnLCBsaW5lKToKKyAgICAg
ICAgIyBXZSBhbGxvdyBhbiBvcGVuIGJyYWNlIHRvIHN0YXJ0IGEgbGluZSBpbiB0aGUgY2FzZSB3
aGVyZSBzb21lb25lCisgICAgICAgICMgaXMgdXNpbmcgYnJhY2VzIGZvciBmdW5jdGlvbiBkZWZp
bml0aW9uIG9yIGluIGEgYmxvY2sgdG8KKyAgICAgICAgIyBleHBsaWNpdGx5IGNyZWF0ZSBhIG5l
dyBzY29wZSwgd2hpY2ggaXMgY29tbW9ubHkgdXNlZCB0byBjb250cm9sCisgICAgICAgICMgdGhl
IGxpZmV0aW1lIG9mIHN0YWNrLWFsbG9jYXRlZCB2YXJpYWJsZXMuICBXZSBkb24ndCBkZXRlY3Qg
dGhpcworICAgICAgICAjIHBlcmZlY3RseTogd2UganVzdCBkb24ndCBjb21wbGFpbiBpZiB0aGUg
bGFzdCBub24td2hpdGVzcGFjZQorICAgICAgICAjIGNoYXJhY3RlciBvbiB0aGUgcHJldmlvdXMg
bm9uLWJsYW5rIGxpbmUgaXMgJzsnLCAnOicsICd7JywgJ30nLAorICAgICAgICAjICcpJywgb3Ig
JykgY29uc3QnLiAgV2UgYWxzbyBhbGxvdyAnIycgZm9yICNlbmRpZiBhbmQgJz0nIGZvcgorICAg
ICAgICAjIGFycmF5IGluaXRpYWxpemF0aW9uLgorICAgICAgICBwcmV2aW91c19saW5lID0gZ2V0
X3ByZXZpb3VzX25vbl9ibGFua19saW5lKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlcilbMF0KKyAg
ICAgICAgaWYgKG5vdCBzZWFyY2gocidbOzp9eyk9XVxzKiR8XClccypjb25zdFxzKiQnLCBwcmV2
aW91c19saW5lKQorICAgICAgICAgICAgYW5kIHByZXZpb3VzX2xpbmUuZmluZCgnIycpIDwgMCk6
CisgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2Jy
YWNlcycsIDQsCisgICAgICAgICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5k
IG9mIHRoZSBwcmV2aW91cyBsaW5lJykKKyAgICBlbGlmIChzZWFyY2gocidcKVxzKihjb25zdFxz
Kik/e1xzKiQnLCBsaW5lKQorICAgICAgICAgIGFuZCBsaW5lLmNvdW50KCcoJykgPT0gbGluZS5j
b3VudCgnKScpCisgICAgICAgICAgYW5kIG5vdCBzZWFyY2gocidcYihpZnxmb3J8d2hpbGV8c3dp
dGNoKVxiJywgbGluZSkpOgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3
aGl0ZXNwYWNlL2JyYWNlcycsIDQsCisgICAgICAgICAgICAgICdQbGFjZSBicmFjZSBvbiBpdHMg
b3duIGxpbmUgZm9yIGZ1bmN0aW9uIGRlZmluaXRpb25zLicpCisKKyAgICAjIEFuIGVsc2UgY2xh
dXNlIHNob3VsZCBiZSBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBwcmVjZWRpbmcgY2xvc2luZyBi
cmFjZS4KKyAgICBpZiBtYXRjaChyJ1xzKmVsc2VccyonLCBsaW5lKToKKyAgICAgICAgcHJldmlv
dXNfbGluZSA9IGdldF9wcmV2aW91c19ub25fYmxhbmtfbGluZShjbGVhbl9saW5lcywgbGluZV9u
dW1iZXIpWzBdCisgICAgICAgIGlmIG1hdGNoKHInXHMqfVxzKiQnLCBwcmV2aW91c19saW5lKToK
KyAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvbmV3
bGluZScsIDQsCisgICAgICAgICAgICAgICAgICAnQW4gZWxzZSBzaG91bGQgYXBwZWFyIG9uIHRo
ZSBzYW1lIGxpbmUgYXMgdGhlIHByZWNlZGluZyB9JykKKworICAgICMgTGlrZXdpc2UsIGFuIGVs
c2Ugc2hvdWxkIG5ldmVyIGhhdmUgdGhlIGVsc2UgY2xhdXNlIG9uIHRoZSBzYW1lIGxpbmUKKyAg
ICBpZiBzZWFyY2gocidcYmVsc2UgW15cc3tdJywgbGluZSkgYW5kIG5vdCBzZWFyY2gocidcYmVs
c2UgaWZcYicsIGxpbmUpOgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3
aGl0ZXNwYWNlL25ld2xpbmUnLCA0LAorICAgICAgICAgICAgICAnRWxzZSBjbGF1c2Ugc2hvdWxk
IG5ldmVyIGJlIG9uIHNhbWUgbGluZSBhcyBlbHNlICh1c2UgMiBsaW5lcyknKQorCisgICAgIyBJ
biB0aGUgc2FtZSB3YXksIGEgZG8vd2hpbGUgc2hvdWxkIG5ldmVyIGJlIG9uIG9uZSBsaW5lCisg
ICAgaWYgbWF0Y2gocidccypkbyBbXlxze10nLCBsaW5lKToKKyAgICAgICAgZXJyb3IoZmlsZW5h
bWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9uZXdsaW5lJywgNCwKKyAgICAgICAgICAgICAg
J2RvL3doaWxlIGNsYXVzZXMgc2hvdWxkIG5vdCBiZSBvbiBhIHNpbmdsZSBsaW5lJykKKworICAg
ICMgQnJhY2VzIHNob3VsZG4ndCBiZSBmb2xsb3dlZCBieSBhIDsgdW5sZXNzIHRoZXkncmUgZGVm
aW5pbmcgYSBzdHJ1Y3QKKyAgICAjIG9yIGluaXRpYWxpemluZyBhbiBhcnJheS4KKyAgICAjIFdl
IGNhbid0IHRlbGwgaW4gZ2VuZXJhbCwgYnV0IHdlIGNhbiBmb3Igc29tZSBjb21tb24gY2FzZXMu
CisgICAgcHJldmlvdXNfbGluZV9udW1iZXIgPSBsaW5lX251bWJlcgorICAgIHdoaWxlIFRydWU6
CisgICAgICAgIChwcmV2aW91c19saW5lLCBwcmV2aW91c19saW5lX251bWJlcikgPSBnZXRfcHJl
dmlvdXNfbm9uX2JsYW5rX2xpbmUoY2xlYW5fbGluZXMsIHByZXZpb3VzX2xpbmVfbnVtYmVyKQor
ICAgICAgICBpZiBtYXRjaChyJ1xzK3suKn1ccyo7JywgbGluZSkgYW5kIG5vdCBwcmV2aW91c19s
aW5lLmNvdW50KCc7Jyk6CisgICAgICAgICAgICBsaW5lID0gcHJldmlvdXNfbGluZSArIGxpbmUK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJyZWFrCisgICAgaWYgKHNlYXJjaChyJ3suKn1c
cyo7JywgbGluZSkKKyAgICAgICAgYW5kIGxpbmUuY291bnQoJ3snKSA9PSBsaW5lLmNvdW50KCd9
JykKKyAgICAgICAgYW5kIG5vdCBzZWFyY2gocidzdHJ1Y3R8Y2xhc3N8ZW51bXxccyo9XHMqeycs
IGxpbmUpKToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncmVhZGFiaWxp
dHkvYnJhY2VzJywgNCwKKyAgICAgICAgICAgICAgIllvdSBkb24ndCBuZWVkIGEgOyBhZnRlciBh
IH0iKQorCisKK2RlZiByZXBsYWNlYWJsZV9jaGVjayhvcGVyYXRvciwgbWFjcm8sIGxpbmUpOgor
ICAgICIiIkRldGVybWluZSB3aGV0aGVyIGEgYmFzaWMgQ0hFQ0sgY2FuIGJlIHJlcGxhY2VkIHdp
dGggYSBtb3JlIHNwZWNpZmljIG9uZS4KKworICAgIEZvciBleGFtcGxlIHN1Z2dlc3QgdXNpbmcg
Q0hFQ0tfRVEgaW5zdGVhZCBvZiBDSEVDSyhhID09IGIpIGFuZAorICAgIHNpbWlsYXJseSBmb3Ig
Q0hFQ0tfR0UsIENIRUNLX0dULCBDSEVDS19MRSwgQ0hFQ0tfTFQsIENIRUNLX05FLgorCisgICAg
QXJnczoKKyAgICAgIG9wZXJhdG9yOiBUaGUgQysrIG9wZXJhdG9yIHVzZWQgaW4gdGhlIENIRUNL
LgorICAgICAgbWFjcm86IFRoZSBDSEVDSyBvciBFWFBFQ1QgbWFjcm8gYmVpbmcgY2FsbGVkLgor
ICAgICAgbGluZTogVGhlIGN1cnJlbnQgc291cmNlIGxpbmUuCisKKyAgICBSZXR1cm5zOgorICAg
ICAgVHJ1ZSBpZiB0aGUgQ0hFQ0sgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBtb3JlIHNwZWNpZmlj
IG9uZS4KKyAgICAiIiIKKworICAgICMgVGhpcyBtYXRjaGVzIGRlY2ltYWwgYW5kIGhleCBpbnRl
Z2Vycywgc3RyaW5ncywgYW5kIGNoYXJzIChpbiB0aGF0IG9yZGVyKS4KKyAgICBtYXRjaF9jb25z
dGFudCA9IHInKFstK10/KFxkK3wwW3hYXVswLTlhLWZBLUZdKylbbEx1VV17MCwzfXwiLioifFwn
LipcJyknCisKKyAgICAjIEV4cHJlc3Npb24gdG8gbWF0Y2ggdHdvIHNpZGVzIG9mIHRoZSBvcGVy
YXRvciB3aXRoIHNvbWV0aGluZyB0aGF0CisgICAgIyBsb29rcyBsaWtlIGEgbGl0ZXJhbCwgc2lu
Y2UgQ0hFQ0soeCA9PSBpdGVyYXRvcikgd29uJ3QgY29tcGlsZS4KKyAgICAjIFRoaXMgbWVhbnMg
d2UgY2FuJ3QgY2F0Y2ggYWxsIHRoZSBjYXNlcyB3aGVyZSBhIG1vcmUgc3BlY2lmaWMKKyAgICAj
IENIRUNLIGlzIHBvc3NpYmxlLCBidXQgaXQncyBsZXNzIGFubm95aW5nIHRoYW4gZGVhbGluZyB3
aXRoCisgICAgIyBleHRyYW5lb3VzIHdhcm5pbmdzLgorICAgIG1hdGNoX3RoaXMgPSAocidccyon
ICsgbWFjcm8gKyByJ1woKFxzKicgKworICAgICAgICAgICAgICAgICAgbWF0Y2hfY29uc3RhbnQg
KyByJ1xzKicgKyBvcGVyYXRvciArIHInW148Pl0uKnwnCisgICAgICAgICAgICAgICAgICByJy4q
W148Pl0nICsgb3BlcmF0b3IgKyByJ1xzKicgKyBtYXRjaF9jb25zdGFudCArCisgICAgICAgICAg
ICAgICAgICByJ1xzKlwpKScpCisKKyAgICAjIERvbid0IGNvbXBsYWluIGFib3V0IENIRUNLKHgg
PT0gTlVMTCkgb3Igc2ltaWxhciBiZWNhdXNlCisgICAgIyBDSEVDS19FUSh4LCBOVUxMKSB3b24n
dCBjb21waWxlIChyZXF1aXJlcyBhIGNhc3QpLgorICAgICMgQWxzbywgZG9uJ3QgY29tcGxhaW4g
YWJvdXQgbW9yZSBjb21wbGV4IGJvb2xlYW4gZXhwcmVzc2lvbnMKKyAgICAjIGludm9sdmluZyAm
JiBvciB8fCBzdWNoIGFzIENIRUNLKGEgPT0gYiB8fCBjID09IGQpLgorICAgIHJldHVybiBtYXRj
aChtYXRjaF90aGlzLCBsaW5lKSBhbmQgbm90IHNlYXJjaChyJ05VTEx8JiZ8XHxcfCcsIGxpbmUp
CisKKworZGVmIGNoZWNrX2NoZWNrKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIs
IGVycm9yKToKKyAgICAiIiJDaGVja3MgdGhlIHVzZSBvZiBDSEVDSyBhbmQgRVhQRUNUIG1hY3Jv
cy4KKworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQg
ZmlsZS4KKyAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFp
bmluZyB0aGUgZmlsZS4KKyAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5l
IHRvIGNoZWNrLgorICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVy
cm9ycyBmb3VuZC4KKyAgICAiIiIKKworICAgICMgRGVjaWRlIHRoZSBzZXQgb2YgcmVwbGFjZW1l
bnQgbWFjcm9zIHRoYXQgc2hvdWxkIGJlIHN1Z2dlc3RlZAorICAgIHJhd19saW5lcyA9IGNsZWFu
X2xpbmVzLnJhd19saW5lcworICAgIGN1cnJlbnRfbWFjcm8gPSAnJworICAgIGZvciBtYWNybyBp
biBfQ0hFQ0tfTUFDUk9TOgorICAgICAgICBpZiByYXdfbGluZXNbbGluZV9udW1iZXJdLmZpbmQo
bWFjcm8pID49IDA6CisgICAgICAgICAgICBjdXJyZW50X21hY3JvID0gbWFjcm8KKyAgICAgICAg
ICAgIGJyZWFrCisgICAgaWYgbm90IGN1cnJlbnRfbWFjcm86CisgICAgICAgICMgRG9uJ3Qgd2Fz
dGUgdGltZSBoZXJlIGlmIGxpbmUgZG9lc24ndCBjb250YWluICdDSEVDSycgb3IgJ0VYUEVDVCcK
KyAgICAgICAgcmV0dXJuCisKKyAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVt
YmVyXSAgICAgICAgIyBnZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzCisKKyAgICAjIEVu
Y291cmFnZSByZXBsYWNpbmcgcGxhaW4gQ0hFQ0tzIHdpdGggQ0hFQ0tfRVEvQ0hFQ0tfTkUvZXRj
LgorICAgIGZvciBvcGVyYXRvciBpbiBbJz09JywgJyE9JywgJz49JywgJz4nLCAnPD0nLCAnPCdd
OgorICAgICAgICBpZiByZXBsYWNlYWJsZV9jaGVjayhvcGVyYXRvciwgY3VycmVudF9tYWNybywg
bGluZSk6CisgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdyZWFkYWJp
bGl0eS9jaGVjaycsIDIsCisgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgJXMgaW5z
dGVhZCBvZiAlcyhhICVzIGIpJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICBfQ0hFQ0tfUkVQ
TEFDRU1FTlRbY3VycmVudF9tYWNyb11bb3BlcmF0b3JdLAorICAgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRfbWFjcm8sIG9wZXJhdG9yKSkKKyAgICAgICAgICAgIGJyZWFrCisKKworZGVmIGdl
dF9saW5lX3dpZHRoKGxpbmUpOgorICAgICIiIkRldGVybWluZXMgdGhlIHdpZHRoIG9mIHRoZSBs
aW5lIGluIGNvbHVtbiBwb3NpdGlvbnMuCisKKyAgICBBcmdzOgorICAgICAgbGluZTogQSBzdHJp
bmcsIHdoaWNoIG1heSBiZSBhIFVuaWNvZGUgc3RyaW5nLgorCisgICAgUmV0dXJuczoKKyAgICAg
IFRoZSB3aWR0aCBvZiB0aGUgbGluZSBpbiBjb2x1bW4gcG9zaXRpb25zLCBhY2NvdW50aW5nIGZv
ciBVbmljb2RlCisgICAgICBjb21iaW5pbmcgY2hhcmFjdGVycyBhbmQgd2lkZSBjaGFyYWN0ZXJz
LgorICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2UobGluZSwgdW5pY29kZSk6CisgICAgICAgIHdp
ZHRoID0gMAorICAgICAgICBmb3IgYyBpbiB1bmljb2RlZGF0YS5ub3JtYWxpemUoJ05GQycsIGxp
bmUpOgorICAgICAgICAgICAgaWYgdW5pY29kZWRhdGEuZWFzdF9hc2lhbl93aWR0aChjKSBpbiAo
J1cnLCAnRicpOgorICAgICAgICAgICAgICAgIHdpZHRoICs9IDIKKyAgICAgICAgICAgIGVsaWYg
bm90IHVuaWNvZGVkYXRhLmNvbWJpbmluZyhjKToKKyAgICAgICAgICAgICAgICB3aWR0aCArPSAx
CisgICAgICAgIHJldHVybiB3aWR0aAorICAgIHJldHVybiBsZW4obGluZSkKKworCitkZWYgY2hl
Y2tfc3R5bGUoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9leHRlbnNp
b24sIGVycm9yKToKKyAgICAiIiJDaGVja3MgcnVsZXMgZnJvbSB0aGUgJ0MrKyBzdHlsZSBydWxl
cycgc2VjdGlvbiBvZiBjcHBndWlkZS5odG1sLgorCisgICAgTW9zdCBvZiB0aGVzZSBydWxlcyBh
cmUgaGFyZCB0byB0ZXN0IChuYW1pbmcsIGNvbW1lbnQgc3R5bGUpLCBidXQgd2UKKyAgICBkbyB3
aGF0IHdlIGNhbi4gIEluIHBhcnRpY3VsYXIgd2UgY2hlY2sgZm9yIDQtc3BhY2UgaW5kZW50cywg
bGluZSBsZW5ndGhzLAorICAgIHRhYiB1c2FnZSwgc3BhY2VzIGluc2lkZSBjb2RlLCBldGMuCisK
KyAgICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUu
CisgICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcg
dGhlIGZpbGUuCisgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBj
aGVjay4KKyAgICAgIGZpbGVfZXh0ZW5zaW9uOiBUaGUgZXh0ZW5zaW9uICh3aXRob3V0IHRoZSBk
b3QpIG9mIHRoZSBmaWxlbmFtZS4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3
aXRoIGFueSBlcnJvcnMgZm91bmQuCisgICAgIiIiCisKKyAgICByYXdfbGluZXMgPSBjbGVhbl9s
aW5lcy5yYXdfbGluZXMKKyAgICBsaW5lID0gcmF3X2xpbmVzW2xpbmVfbnVtYmVyXQorCisgICAg
aWYgbGluZS5maW5kKCdcdCcpICE9IC0xOgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9u
dW1iZXIsICd3aGl0ZXNwYWNlL3RhYicsIDEsCisgICAgICAgICAgICAgICdUYWIgZm91bmQ7IGJl
dHRlciB0byB1c2Ugc3BhY2VzJykKKworICAgICMgT25lIG9yIHRocmVlIGJsYW5rIHNwYWNlcyBh
dCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIGlzIHdlaXJkOyBpdCdzCisgICAgIyBoYXJkIHRv
IHJlY29uY2lsZSB0aGF0IHdpdGggNC1zcGFjZSBpbmRlbnRzLgorICAgICMgTk9URTogaGVyZSBh
cmUgdGhlIGNvbmRpdGlvbnMgcm9iIHBpa2UgdXNlZCBmb3IgaGlzIHRlc3RzLiAgTWluZSBhcmVu
J3QKKyAgICAjIGFzIHNvcGhpc3RpY2F0ZWQsIGJ1dCBpdCBtYXkgYmUgd29ydGggYmVjb21pbmcg
c286ICBSTEVOR1RIPT1pbml0aWFsX3NwYWNlcworICAgICMgaWYoUkxFTkdUSCA+IDIwKSBjb21w
bGFpbiA9IDA7CisgICAgIyBpZihtYXRjaCgkMCwgIiArKGVycm9yfHByaXZhdGV8cHVibGljfHBy
b3RlY3RlZCk6IikpIGNvbXBsYWluID0gMDsKKyAgICAjIGlmKG1hdGNoKHByZXYsICImJiAqJCIp
KSBjb21wbGFpbiA9IDA7CisgICAgIyBpZihtYXRjaChwcmV2LCAiXFx8XFx8ICokIikpIGNvbXBs
YWluID0gMDsKKyAgICAjIGlmKG1hdGNoKHByZXYsICJbXCIsPT48XSAqJCIpKSBjb21wbGFpbiA9
IDA7CisgICAgIyBpZihtYXRjaCgkMCwgIiA8PCIpKSBjb21wbGFpbiA9IDA7CisgICAgIyBpZiht
YXRjaChwcmV2LCAiICtmb3IgXFwoIikpIGNvbXBsYWluID0gMDsKKyAgICAjIGlmKHByZXZvZGQg
JiYgbWF0Y2gocHJldnByZXYsICIgK2ZvciBcXCgiKSkgY29tcGxhaW4gPSAwOworICAgIGluaXRp
YWxfc3BhY2VzID0gMAorICAgIGNsZWFuc2VkX2xpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGlu
ZV9udW1iZXJdCisgICAgd2hpbGUgaW5pdGlhbF9zcGFjZXMgPCBsZW4obGluZSkgYW5kIGxpbmVb
aW5pdGlhbF9zcGFjZXNdID09ICcgJzoKKyAgICAgICAgaW5pdGlhbF9zcGFjZXMgKz0gMQorICAg
IGlmIGxpbmUgYW5kIGxpbmVbLTFdLmlzc3BhY2UoKToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUs
IGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9lbmRfb2ZfbGluZScsIDQsCisgICAgICAgICAgICAg
ICdMaW5lIGVuZHMgaW4gd2hpdGVzcGFjZS4gIENvbnNpZGVyIGRlbGV0aW5nIHRoZXNlIGV4dHJh
IHNwYWNlcy4nKQorICAgICMgVGhlcmUgYXJlIGNlcnRhaW4gc2l0dWF0aW9ucyB3ZSBhbGxvdyBv
bmUgc3BhY2UsIG5vdGFibHkgZm9yIGxhYmVscworICAgIGVsaWYgKChpbml0aWFsX3NwYWNlcyA+
PSAxIGFuZCBpbml0aWFsX3NwYWNlcyA8PSAzKQorICAgICAgICAgIGFuZCBub3QgbWF0Y2gocidc
cypcdytccyo6XHMqJCcsIGNsZWFuc2VkX2xpbmUpKToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUs
IGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9pbmRlbnQnLCAzLAorICAgICAgICAgICAgICAnV2Vp
cmQgbnVtYmVyIG9mIHNwYWNlcyBhdCBsaW5lLXN0YXJ0LiAgJworICAgICAgICAgICAgICAnQXJl
IHlvdSB1c2luZyBhIDQtc3BhY2UgaW5kZW50PycpCisgICAgIyBMYWJlbHMgc2hvdWxkIGFsd2F5
cyBiZSBpbmRlbnRlZCBhdCBsZWFzdCBvbmUgc3BhY2UuCisgICAgZWxpZiBub3QgaW5pdGlhbF9z
cGFjZXMgYW5kIGxpbmVbOjJdICE9ICcvLycgYW5kIHNlYXJjaChyJ1teOl06XHMqJCcsIGxpbmUp
OgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2xhYmVs
cycsIDQsCisgICAgICAgICAgICAgICdMYWJlbHMgc2hvdWxkIGFsd2F5cyBiZSBpbmRlbnRlZCBh
dCBsZWFzdCBvbmUgc3BhY2UuICAnCisgICAgICAgICAgICAgICdJZiB0aGlzIGlzIGEgbWVtYmVy
LWluaXRpYWxpemVyIGxpc3QgaW4gYSBjb25zdHJ1Y3RvciwgJworICAgICAgICAgICAgICAndGhl
IGNvbG9uIHNob3VsZCBiZSBvbiB0aGUgbGluZSBhZnRlciB0aGUgZGVmaW5pdGlvbiBoZWFkZXIu
JykKKworICAgIGlmIChjbGVhbnNlZF9saW5lLmNvdW50KCc7JykgPiAxCisgICAgICAgICMgZm9y
IGxvb3BzIGFyZSBhbGxvd2VkIHR3byA7J3MgKGFuZCBtYXkgcnVuIG92ZXIgdHdvIGxpbmVzKS4K
KyAgICAgICAgYW5kIGNsZWFuc2VkX2xpbmUuZmluZCgnZm9yJykgPT0gLTEKKyAgICAgICAgYW5k
IChnZXRfcHJldmlvdXNfbm9uX2JsYW5rX2xpbmUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyKVsw
XS5maW5kKCdmb3InKSA9PSAtMQorICAgICAgICAgICAgIG9yIGdldF9wcmV2aW91c19ub25fYmxh
bmtfbGluZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIpWzBdLmZpbmQoJzsnKSAhPSAtMSkKKyAg
ICAgICAgIyBJdCdzIG9rIHRvIGhhdmUgbWFueSBjb21tYW5kcyBpbiBhIHN3aXRjaCBjYXNlIHRo
YXQgZml0cyBpbiAxIGxpbmUKKyAgICAgICAgYW5kIG5vdCAoKGNsZWFuc2VkX2xpbmUuZmluZCgn
Y2FzZSAnKSAhPSAtMQorICAgICAgICAgICAgICAgICAgb3IgY2xlYW5zZWRfbGluZS5maW5kKCdk
ZWZhdWx0OicpICE9IC0xKQorICAgICAgICAgICAgICAgICBhbmQgY2xlYW5zZWRfbGluZS5maW5k
KCdicmVhazsnKSAhPSAtMSkpOgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIs
ICd3aGl0ZXNwYWNlL25ld2xpbmUnLCA0LAorICAgICAgICAgICAgICAnTW9yZSB0aGFuIG9uZSBj
b21tYW5kIG9uIHRoZSBzYW1lIGxpbmUnKQorCisgICAgIyBTb21lIG1vcmUgc3R5bGUgY2hlY2tz
CisgICAgY2hlY2tfYnJhY2VzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVy
cm9yKQorICAgIGNoZWNrX3NwYWNpbmcoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJl
ciwgZXJyb3IpCisgICAgY2hlY2tfY2hlY2soZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251
bWJlciwgZXJyb3IpCisKKworX1JFX1BBVFRFUk5fSU5DTFVERV9ORVdfU1RZTEUgPSByZS5jb21w
aWxlKHInI2luY2x1ZGUgKyJbXi9dK1wuaCInKQorX1JFX1BBVFRFUk5fSU5DTFVERSA9IHJlLmNv
bXBpbGUocideXHMqI1xzKmluY2x1ZGVccyooWzwiXSkoW14+Il0qKVs+Il0uKiQnKQorIyBNYXRj
aGVzIHRoZSBmaXJzdCBjb21wb25lbnQgb2YgYSBmaWxlbmFtZSBkZWxpbWl0ZWQgYnkgLXMgYW5k
IF9zLiBUaGF0IGlzOgorIyAgX1JFX0ZJUlNUX0NPTVBPTkVOVC5tYXRjaCgnZm9vJykuZ3JvdXAo
MCkgPT0gJ2ZvbycKKyMgIF9SRV9GSVJTVF9DT01QT05FTlQubWF0Y2goJ2Zvby5jYycpLmdyb3Vw
KDApID09ICdmb28nCisjICBfUkVfRklSU1RfQ09NUE9ORU5ULm1hdGNoKCdmb28tYmFyX2Jhei5j
YycpLmdyb3VwKDApID09ICdmb28nCisjICBfUkVfRklSU1RfQ09NUE9ORU5ULm1hdGNoKCdmb29f
YmFyLWJhei5jYycpLmdyb3VwKDApID09ICdmb28nCitfUkVfRklSU1RfQ09NUE9ORU5UID0gcmUu
Y29tcGlsZShyJ15bXi1fLl0rJykKKworCitkZWYgX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKGZpbGVu
YW1lKToKKyAgICAiIiJEcm9wcyBjb21tb24gc3VmZml4ZXMgbGlrZSBfdGVzdC5jYyBvciAtaW5s
LmggZnJvbSBmaWxlbmFtZS4KKworICAgIEZvciBleGFtcGxlOgorICAgICAgPj4+IF9kcm9wX2Nv
bW1vbl9zdWZmaXhlcygnZm9vL2Zvby1pbmwuaCcpCisgICAgICAnZm9vL2ZvbycKKyAgICAgID4+
PiBfZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9iYXIvZm9vLmNjJykKKyAgICAgICdmb28vYmFy
L2ZvbycKKyAgICAgID4+PiBfZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9mb29faW50ZXJuYWwu
aCcpCisgICAgICAnZm9vL2ZvbycKKyAgICAgID4+PiBfZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zv
by9mb29fdW51c3VhbGludGVybmFsLmgnKQorICAgICAgJ2Zvby9mb29fdW51c3VhbGludGVybmFs
JworCisgICAgQXJnczoKKyAgICAgIGZpbGVuYW1lOiBUaGUgaW5wdXQgZmlsZW5hbWUuCisKKyAg
ICBSZXR1cm5zOgorICAgICAgVGhlIGZpbGVuYW1lIHdpdGggdGhlIGNvbW1vbiBzdWZmaXggcmVt
b3ZlZC4KKyAgICAiIiIKKyAgICBmb3Igc3VmZml4IGluICgndGVzdC5jYycsICdyZWd0ZXN0LmNj
JywgJ3VuaXR0ZXN0LmNjJywKKyAgICAgICAgICAgICAgICAgICAnaW5sLmgnLCAnaW1wbC5oJywg
J2ludGVybmFsLmgnKToKKyAgICAgICAgaWYgKGZpbGVuYW1lLmVuZHN3aXRoKHN1ZmZpeCkgYW5k
IGxlbihmaWxlbmFtZSkgPiBsZW4oc3VmZml4KQorICAgICAgICAgICAgYW5kIGZpbGVuYW1lWy1s
ZW4oc3VmZml4KSAtIDFdIGluICgnLScsICdfJykpOgorICAgICAgICAgICAgcmV0dXJuIGZpbGVu
YW1lWzotbGVuKHN1ZmZpeCkgLSAxXQorICAgIHJldHVybiBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVu
YW1lKVswXQorCisKK2RlZiBfaXNfdGVzdF9maWxlbmFtZShmaWxlbmFtZSk6CisgICAgIiIiRGV0
ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gZmlsZW5hbWUgaGFzIGEgc3VmZml4IHRoYXQgaWRlbnRpZmll
cyBpdCBhcyBhIHRlc3QuCisKKyAgICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRoZSBpbnB1dCBm
aWxlbmFtZS4KKworICAgIFJldHVybnM6CisgICAgICBUcnVlIGlmICdmaWxlbmFtZScgbG9va3Mg
bGlrZSBhIHRlc3QsIEZhbHNlIG90aGVyd2lzZS4KKyAgICAiIiIKKyAgICBpZiAoZmlsZW5hbWUu
ZW5kc3dpdGgoJ190ZXN0LmNjJykKKyAgICAgICAgb3IgZmlsZW5hbWUuZW5kc3dpdGgoJ191bml0
dGVzdC5jYycpCisgICAgICAgIG9yIGZpbGVuYW1lLmVuZHN3aXRoKCdfcmVndGVzdC5jYycpKToK
KyAgICAgICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gRmFsc2UKKworCitkZWYgX2NsYXNzaWZ5
X2luY2x1ZGUoZmlsZWluZm8sIGluY2x1ZGUsIGlzX3N5c3RlbSk6CisgICAgIiIiRmlndXJlcyBv
dXQgd2hhdCBraW5kIG9mIGhlYWRlciAnaW5jbHVkZScgaXMuCisKKyAgICBBcmdzOgorICAgICAg
ZmlsZWluZm86IFRoZSBjdXJyZW50IGZpbGUgY3BwbGludCBpcyBydW5uaW5nIG92ZXIuIEEgRmls
ZUluZm8gaW5zdGFuY2UuCisgICAgICBpbmNsdWRlOiBUaGUgcGF0aCB0byBhICNpbmNsdWRlZCBm
aWxlLgorICAgICAgaXNfc3lzdGVtOiBUcnVlIGlmIHRoZSAjaW5jbHVkZSB1c2VkIDw+IHJhdGhl
ciB0aGFuICIiLgorCisgICAgUmV0dXJuczoKKyAgICAgIE9uZSBvZiB0aGUgX1hYWF9IRUFERVIg
Y29uc3RhbnRzLgorCisgICAgRm9yIGV4YW1wbGU6CisgICAgICA+Pj4gX2NsYXNzaWZ5X2luY2x1
ZGUoRmlsZUluZm8oJ2Zvby9mb28uY2MnKSwgJ3N0ZGlvLmgnLCBUcnVlKQorICAgICAgX0NfU1lT
X0hFQURFUgorICAgICAgPj4+IF9jbGFzc2lmeV9pbmNsdWRlKEZpbGVJbmZvKCdmb28vZm9vLmNj
JyksICdzdHJpbmcnLCBUcnVlKQorICAgICAgX0NQUF9TWVNfSEVBREVSCisgICAgICA+Pj4gX2Ns
YXNzaWZ5X2luY2x1ZGUoRmlsZUluZm8oJ2Zvby9mb28uY2MnKSwgJ2Zvby9mb28uaCcsIEZhbHNl
KQorICAgICAgX0xJS0VMWV9NWV9IRUFERVIKKyAgICAgID4+PiBfY2xhc3NpZnlfaW5jbHVkZShG
aWxlSW5mbygnZm9vL2Zvb191bmtub3duX2V4dGVuc2lvbi5jYycpLAorICAgICAgLi4uICAgICAg
ICAgICAgICAgICAgJ2Jhci9mb29fb3RoZXJfZXh0LmgnLCBGYWxzZSkKKyAgICAgIF9QT1NTSUJM
RV9NWV9IRUFERVIKKyAgICAgID4+PiBfY2xhc3NpZnlfaW5jbHVkZShGaWxlSW5mbygnZm9vL2Zv
by5jYycpLCAnZm9vL2Jhci5oJywgRmFsc2UpCisgICAgICBfT1RIRVJfSEVBREVSCisgICAgIiIi
CisgICAgIyBUaGlzIGlzIGEgbGlzdCBvZiBhbGwgc3RhbmRhcmQgYysrIGhlYWRlciBmaWxlcywg
ZXhjZXB0CisgICAgIyB0aG9zZSBhbHJlYWR5IGNoZWNrZWQgZm9yIGFib3ZlLgorICAgIGlzX3N0
bF9oID0gaW5jbHVkZSBpbiBfU1RMX0hFQURFUlMKKyAgICBpc19jcHBfaCA9IGlzX3N0bF9oIG9y
IGluY2x1ZGUgaW4gX0NQUF9IRUFERVJTCisKKyAgICBpZiBpc19zeXN0ZW06CisgICAgICAgIGlm
IGlzX2NwcF9oOgorICAgICAgICAgICAgcmV0dXJuIF9DUFBfU1lTX0hFQURFUgorICAgICAgICBy
ZXR1cm4gX0NfU1lTX0hFQURFUgorCisgICAgIyBJZiB0aGUgdGFyZ2V0IGZpbGUgYW5kIHRoZSBp
bmNsdWRlIHdlJ3JlIGNoZWNraW5nIHNoYXJlIGEKKyAgICAjIGJhc2VuYW1lIHdoZW4gd2UgZHJv
cCBjb21tb24gZXh0ZW5zaW9ucywgYW5kIHRoZSBpbmNsdWRlCisgICAgIyBsaXZlcyBpbiAuICwg
dGhlbiBpdCdzIGxpa2VseSB0byBiZSBvd25lZCBieSB0aGUgdGFyZ2V0IGZpbGUuCisgICAgdGFy
Z2V0X2RpciwgdGFyZ2V0X2Jhc2UgPSAoCisgICAgICAgIG9zLnBhdGguc3BsaXQoX2Ryb3BfY29t
bW9uX3N1ZmZpeGVzKGZpbGVpbmZvLnJlcG9zaXRvcnlfbmFtZSgpKSkpCisgICAgaW5jbHVkZV9k
aXIsIGluY2x1ZGVfYmFzZSA9IG9zLnBhdGguc3BsaXQoX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKGlu
Y2x1ZGUpKQorICAgIGlmICh0YXJnZXRfYmFzZSA9PSBpbmNsdWRlX2Jhc2UKKyAgICAgICAgYW5k
IChpbmNsdWRlX2RpciA9PSB0YXJnZXRfZGlyCisgICAgICAgICAgICAgb3IgaW5jbHVkZV9kaXIg
PT0gb3MucGF0aC5ub3JtcGF0aCh0YXJnZXRfZGlyICsgJy8uLi9wdWJsaWMnKSkpOgorICAgICAg
ICByZXR1cm4gX0xJS0VMWV9NWV9IRUFERVIKKworICAgICMgSWYgdGhlIHRhcmdldCBhbmQgaW5j
bHVkZSBzaGFyZSBzb21lIGluaXRpYWwgYmFzZW5hbWUKKyAgICAjIGNvbXBvbmVudCwgaXQncyBw
b3NzaWJsZSB0aGUgdGFyZ2V0IGlzIGltcGxlbWVudGluZyB0aGUKKyAgICAjIGluY2x1ZGUsIHNv
IGl0J3MgYWxsb3dlZCB0byBiZSBmaXJzdCwgYnV0IHdlJ2xsIG5ldmVyCisgICAgIyBjb21wbGFp
biBpZiBpdCdzIG5vdCB0aGVyZS4KKyAgICB0YXJnZXRfZmlyc3RfY29tcG9uZW50ID0gX1JFX0ZJ
UlNUX0NPTVBPTkVOVC5tYXRjaCh0YXJnZXRfYmFzZSkKKyAgICBpbmNsdWRlX2ZpcnN0X2NvbXBv
bmVudCA9IF9SRV9GSVJTVF9DT01QT05FTlQubWF0Y2goaW5jbHVkZV9iYXNlKQorICAgIGlmICh0
YXJnZXRfZmlyc3RfY29tcG9uZW50IGFuZCBpbmNsdWRlX2ZpcnN0X2NvbXBvbmVudAorICAgICAg
ICBhbmQgdGFyZ2V0X2ZpcnN0X2NvbXBvbmVudC5ncm91cCgwKSA9PSBpbmNsdWRlX2ZpcnN0X2Nv
bXBvbmVudC5ncm91cCgwKSk6CisgICAgICAgIHJldHVybiBfUE9TU0lCTEVfTVlfSEVBREVSCisK
KyAgICByZXR1cm4gX09USEVSX0hFQURFUgorCisKKworZGVmIGNoZWNrX2luY2x1ZGVfbGluZShm
aWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBpbmNsdWRlX3N0YXRlLCBlcnJvcik6
CisgICAgIiIiQ2hlY2sgcnVsZXMgdGhhdCBhcmUgYXBwbGljYWJsZSB0byAjaW5jbHVkZSBsaW5l
cy4KKworICAgIFN0cmluZ3Mgb24gI2luY2x1ZGUgbGluZXMgYXJlIE5PVCByZW1vdmVkIGZyb20g
ZWxpZGVkIGxpbmUsIHRvIG1ha2UKKyAgICBjZXJ0YWluIHRhc2tzIGVhc2llci4gSG93ZXZlciwg
dG8gcHJldmVudCBmYWxzZSBwb3NpdGl2ZXMsIGNoZWNrcworICAgIGFwcGxpY2FibGUgdG8gI2lu
Y2x1ZGUgbGluZXMgaW4gQ2hlY2tMYW5ndWFnZSBtdXN0IGJlIHB1dCBoZXJlLgorCisgICAgQXJn
czoKKyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgorICAgICAg
Y2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxl
LgorICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCisg
ICAgICBpbmNsdWRlX3N0YXRlOiBBbiBfSW5jbHVkZVN0YXRlIGluc3RhbmNlIGluIHdoaWNoIHRo
ZSBoZWFkZXJzIGFyZSBpbnNlcnRlZC4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2Fs
bCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCisgICAgIiIiCisgICAgZmlsZWluZm8gPSBGaWxlSW5m
byhmaWxlbmFtZSkKKworICAgIGxpbmUgPSBjbGVhbl9saW5lcy5saW5lc1tsaW5lX251bWJlcl0K
KworICAgICMjICJpbmNsdWRlIiBzaG91bGQgdXNlIHRoZSBuZXcgc3R5bGUgImZvby9iYXIuaCIg
aW5zdGVhZCBvZiBqdXN0ICJiYXIuaCIKKyAgICAjaWYgX1JFX1BBVFRFUk5fSU5DTFVERV9ORVdf
U1RZTEUuc2VhcmNoKGxpbmUpOgorICAgICMgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwg
J2J1aWxkL2luY2x1ZGUnLCA0LAorICAgICMgICAgICAgICdJbmNsdWRlIHRoZSBkaXJlY3Rvcnkg
d2hlbiBuYW1pbmcgLmggZmlsZXMnKQorCisgICAgIyB3ZSBzaG91bGRuJ3QgaW5jbHVkZSBhIGZp
bGUgbW9yZSB0aGFuIG9uY2UuIGFjdHVhbGx5LCB0aGVyZSBhcmUgYQorICAgICMgaGFuZGZ1bCBv
ZiBpbnN0YW5jZXMgd2hlcmUgZG9pbmcgc28gaXMgb2theSwgYnV0IGluIGdlbmVyYWwgaXQncwor
ICAgICMgbm90LgorICAgIG1hdGNoZWQgPSBfUkVfUEFUVEVSTl9JTkNMVURFLnNlYXJjaChsaW5l
KQorICAgIGlmIG1hdGNoZWQ6CisgICAgICAgIGluY2x1ZGUgPSBtYXRjaGVkLmdyb3VwKDIpCisg
ICAgICAgIGlzX3N5c3RlbSA9IChtYXRjaGVkLmdyb3VwKDEpID09ICc8JykKKyAgICAgICAgaWYg
aW5jbHVkZSBpbiBpbmNsdWRlX3N0YXRlOgorICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxp
bmVfbnVtYmVyLCAnYnVpbGQvaW5jbHVkZScsIDQsCisgICAgICAgICAgICAgICAgICAnIiVzIiBh
bHJlYWR5IGluY2x1ZGVkIGF0ICVzOiVzJyAlCisgICAgICAgICAgICAgICAgICAoaW5jbHVkZSwg
ZmlsZW5hbWUsIGluY2x1ZGVfc3RhdGVbaW5jbHVkZV0pKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgaW5jbHVkZV9zdGF0ZVtpbmNsdWRlXSA9IGxpbmVfbnVtYmVyCisKKyAgICAgICAgICAg
ICMgV2Ugd2FudCB0byBlbnN1cmUgdGhhdCBoZWFkZXJzIGFwcGVhciBpbiB0aGUgcmlnaHQgb3Jk
ZXI6CisgICAgICAgICAgICAjIDEpIGZvciBmb28uY2MsIGZvby5oICAocHJlZmVycmVkIGxvY2F0
aW9uKQorICAgICAgICAgICAgIyAyKSBjIHN5c3RlbSBmaWxlcworICAgICAgICAgICAgIyAzKSBj
cHAgc3lzdGVtIGZpbGVzCisgICAgICAgICAgICAjIDQpIGZvciBmb28uY2MsIGZvby5oICAoZGVw
cmVjYXRlZCBsb2NhdGlvbikKKyAgICAgICAgICAgICMgNSkgb3RoZXIgZ29vZ2xlIGhlYWRlcnMK
KyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgV2UgY2xhc3NpZnkgZWFjaCBpbmNsdWRlIHN0
YXRlbWVudCBhcyBvbmUgb2YgdGhvc2UgNSB0eXBlcworICAgICAgICAgICAgIyB1c2luZyBhIG51
bWJlciBvZiB0ZWNobmlxdWVzLiBUaGUgaW5jbHVkZV9zdGF0ZSBvYmplY3Qga2VlcHMKKyAgICAg
ICAgICAgICMgdHJhY2sgb2YgdGhlIGhpZ2hlc3QgdHlwZSBzZWVuLCBhbmQgY29tcGxhaW5zIGlm
IHdlIHNlZSBhCisgICAgICAgICAgICAjIGxvd2VyIHR5cGUgYWZ0ZXIgdGhhdC4KKyAgICAgICAg
ICAgIGVycm9yX21lc3NhZ2UgPSBpbmNsdWRlX3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9vcmRl
cigKKyAgICAgICAgICAgICAgICBfY2xhc3NpZnlfaW5jbHVkZShmaWxlaW5mbywgaW5jbHVkZSwg
aXNfc3lzdGVtKSkKKyAgICAgICAgICAgIGlmIGVycm9yX21lc3NhZ2U6CisgICAgICAgICAgICAg
ICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnYnVpbGQvaW5jbHVkZV9vcmRlcicsIDQs
CisgICAgICAgICAgICAgICAgICAgICAgJyVzLiBTaG91bGQgYmU6ICVzLmgsIGMgc3lzdGVtLCBj
Kysgc3lzdGVtLCBvdGhlci4nICUKKyAgICAgICAgICAgICAgICAgICAgICAoZXJyb3JfbWVzc2Fn
ZSwgZmlsZWluZm8uYmFzZV9uYW1lKCkpKQorCisgICAgIyBMb29rIGZvciBhbnkgb2YgdGhlIHN0
cmVhbSBjbGFzc2VzIHRoYXQgYXJlIHBhcnQgb2Ygc3RhbmRhcmQgQysrLgorICAgIG1hdGNoZWQg
PSBfUkVfUEFUVEVSTl9JTkNMVURFLm1hdGNoKGxpbmUpCisgICAgaWYgbWF0Y2hlZDoKKyAgICAg
ICAgaW5jbHVkZSA9IG1hdGNoZWQuZ3JvdXAoMikKKyAgICAgICAgaWYgbWF0Y2gocicoZnxpbmR8
aW98aXxvfHBhcnNlfHBmfHN0ZGlvfHN0cnwpP3N0cmVhbSQnLCBpbmNsdWRlKToKKyAgICAgICAg
ICAgICMgTWFueSB1bml0IHRlc3RzIHVzZSBjb3V0LCBzbyB3ZSBleGVtcHQgdGhlbS4KKyAgICAg
ICAgICAgIGlmIG5vdCBfaXNfdGVzdF9maWxlbmFtZShmaWxlbmFtZSk6CisgICAgICAgICAgICAg
ICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvc3RyZWFtcycsIDMs
CisgICAgICAgICAgICAgICAgICAgICAgJ1N0cmVhbXMgYXJlIGhpZ2hseSBkaXNjb3VyYWdlZC4n
KQorCitkZWYgY2hlY2tfbGFuZ3VhZ2UoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJl
ciwgZmlsZV9leHRlbnNpb24sIGluY2x1ZGVfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgZXJy
b3IpOgorICAgICIiIkNoZWNrcyBydWxlcyBmcm9tIHRoZSAnQysrIGxhbmd1YWdlIHJ1bGVzJyBz
ZWN0aW9uIG9mIGNwcGd1aWRlLmh0bWwuCisKKyAgICBTb21lIG9mIHRoZXNlIHJ1bGVzIGFyZSBo
YXJkIHRvIHRlc3QgKGZ1bmN0aW9uIG92ZXJsb2FkaW5nLCB1c2luZworICAgIHVpbnQzMiBpbmFw
cHJvcHJpYXRlbHkpLCBidXQgd2UgZG8gdGhlIGJlc3Qgd2UgY2FuLgorCisgICAgQXJnczoKKyAg
ICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgorICAgICAgY2xlYW5f
bGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgorICAg
ICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCisgICAgICBm
aWxlX2V4dGVuc2lvbjogVGhlIGV4dGVuc2lvbiAod2l0aG91dCB0aGUgZG90KSBvZiB0aGUgZmls
ZW5hbWUuCisgICAgICBpbmNsdWRlX3N0YXRlOiBBbiBfSW5jbHVkZVN0YXRlIGluc3RhbmNlIGlu
IHdoaWNoIHRoZSBoZWFkZXJzIGFyZSBpbnNlcnRlZC4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rp
b24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCisgICAgIiIiCisgICAgIyBJZiB0aGUg
bGluZSBpcyBlbXB0eSBvciBjb25zaXN0cyBvZiBlbnRpcmVseSBhIGNvbW1lbnQsIG5vIG5lZWQg
dG8KKyAgICAjIGNoZWNrIGl0LgorICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9u
dW1iZXJdCisgICAgaWYgbm90IGxpbmU6CisgICAgICAgIHJldHVybgorCisgICAgbWF0Y2hlZCA9
IF9SRV9QQVRURVJOX0lOQ0xVREUuc2VhcmNoKGxpbmUpCisgICAgaWYgbWF0Y2hlZDoKKyAgICAg
ICAgY2hlY2tfaW5jbHVkZV9saW5lKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIs
IGluY2x1ZGVfc3RhdGUsIGVycm9yKQorICAgICAgICByZXR1cm4KKworICAgICMgRklYTUU6IGZp
Z3VyZSBvdXQgaWYgdGhleSdyZSB1c2luZyBkZWZhdWx0IGFyZ3VtZW50cyBpbiBmbiBwcm90by4K
KworICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZXkncmUgdXNpbmcgYW4gY29udmVyc2lvbiBmdW5j
dGlvbiBjYXN0LgorICAgICMgSSBqdXN0IHRyeSB0byBjYXB0dXJlIHRoZSBtb3N0IGNvbW1vbiBi
YXNpYyB0eXBlcywgdGhvdWdoIHRoZXJlIGFyZSBtb3JlLgorICAgICMgUGFyYW1ldGVybGVzcyBj
b252ZXJzaW9uIGZ1bmN0aW9ucywgc3VjaCBhcyBib29sKCksIGFyZSBhbGxvd2VkIGFzIHRoZXkg
YXJlCisgICAgIyBwcm9iYWJseSBhIG1lbWJlciBvcGVyYXRvciBkZWNsYXJhdGlvbiBvciBkZWZh
dWx0IGNvbnN0cnVjdG9yLgorICAgIG1hdGNoZWQgPSBzZWFyY2goCisgICAgICAgIHInXGIoaW50
fGZsb2F0fGRvdWJsZXxib29sfGNoYXJ8aW50MzJ8dWludDMyfGludDY0fHVpbnQ2NClcKFteKV0n
LCBsaW5lKQorICAgIGlmIG1hdGNoZWQ6CisgICAgICAgICMgZ01vY2sgbWV0aG9kcyBhcmUgZGVm
aW5lZCB1c2luZyBzb21lIHZhcmlhbnQgb2YgTU9DS19NRVRIT0R4KG5hbWUsIHR5cGUpCisgICAg
ICAgICMgd2hlcmUgdHlwZSBtYXkgYmUgZmxvYXQoKSwgaW50KHN0cmluZyksIGV0Yy4gIFdpdGhv
dXQgY29udGV4dCB0aGV5IGFyZQorICAgICAgICAjIHZpcnR1YWxseSBpbmRpc3Rpbmd1aXNoYWJs
ZSBmcm9tIGludCh4KSBjYXN0cy4KKyAgICAgICAgaWYgbm90IG1hdGNoKHInXlxzKk1PQ0tfKENP
TlNUXyk/TUVUSE9EXGQrKF9UKT9cKCcsIGxpbmUpOgorICAgICAgICAgICAgZXJyb3IoZmlsZW5h
bWUsIGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvY2FzdGluZycsIDQsCisgICAgICAgICAgICAg
ICAgICAnVXNpbmcgZGVwcmVjYXRlZCBjYXN0aW5nIHN0eWxlLiAgJworICAgICAgICAgICAgICAg
ICAgJ1VzZSBzdGF0aWNfY2FzdDwlcz4oLi4uKSBpbnN0ZWFkJyAlCisgICAgICAgICAgICAgICAg
ICBtYXRjaGVkLmdyb3VwKDEpKQorCisgICAgY2hlY2tfY19zdHlsZV9jYXN0KGZpbGVuYW1lLCBs
aW5lX251bWJlciwgbGluZSwgY2xlYW5fbGluZXMucmF3X2xpbmVzW2xpbmVfbnVtYmVyXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgJ3N0YXRpY19jYXN0JywKKyAgICAgICAgICAgICAgICAgICAg
ICAgcidcKChpbnR8ZmxvYXR8ZG91YmxlfGJvb2x8Y2hhcnx1P2ludCgxNnwzMnw2NCkpXCknLAor
ICAgICAgICAgICAgICAgICAgICAgICBlcnJvcikKKyAgICAjIFRoaXMgZG9lc24ndCBjYXRjaCBh
bGwgY2FzZXMuICBDb25zaWRlciAoY29uc3QgY2hhciAqIGNvbnN0KSJoZWxsbyIuCisgICAgY2hl
Y2tfY19zdHlsZV9jYXN0KGZpbGVuYW1lLCBsaW5lX251bWJlciwgbGluZSwgY2xlYW5fbGluZXMu
cmF3X2xpbmVzW2xpbmVfbnVtYmVyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgJ3JlaW50ZXJw
cmV0X2Nhc3QnLCByJ1woKFx3K1xzP1wqK1xzPylcKScsIGVycm9yKQorCisgICAgIyBJbiBhZGRp
dGlvbiwgd2UgbG9vayBmb3IgcGVvcGxlIHRha2luZyB0aGUgYWRkcmVzcyBvZiBhIGNhc3QuICBU
aGlzCisgICAgIyBpcyBkYW5nZXJvdXMgLS0gY2FzdHMgY2FuIGFzc2lnbiB0byB0ZW1wb3Jhcmll
cywgc28gdGhlIHBvaW50ZXIgZG9lc24ndAorICAgICMgcG9pbnQgd2hlcmUgeW91IHRoaW5rLgor
ICAgIGlmIHNlYXJjaCgKKyAgICAgICAgcicoJlwoW14pXStcKVtcdyhdKXwoJihzdGF0aWN8ZHlu
YW1pY3xyZWludGVycHJldClfY2FzdFxiKScsIGxpbmUpOgorICAgICAgICBlcnJvcihmaWxlbmFt
ZSwgbGluZV9udW1iZXIsICdydW50aW1lL2Nhc3RpbmcnLCA0LAorICAgICAgICAgICAgICAoJ0Fy
ZSB5b3UgdGFraW5nIGFuIGFkZHJlc3Mgb2YgYSBjYXN0PyAgJworICAgICAgICAgICAgICAgJ1Ro
aXMgaXMgZGFuZ2Vyb3VzOiBjb3VsZCBiZSBhIHRlbXAgdmFyLiAgJworICAgICAgICAgICAgICAg
J1Rha2UgdGhlIGFkZHJlc3MgYmVmb3JlIGRvaW5nIHRoZSBjYXN0LCByYXRoZXIgdGhhbiBhZnRl
cicpKQorCisgICAgIyBDaGVjayBmb3IgcGVvcGxlIGRlY2xhcmluZyBzdGF0aWMvZ2xvYmFsIFNU
TCBzdHJpbmdzIGF0IHRoZSB0b3AgbGV2ZWwuCisgICAgIyBUaGlzIGlzIGRhbmdlcm91cyBiZWNh
dXNlIHRoZSBDKysgbGFuZ3VhZ2UgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQKKyAgICAjIGdsb2Jh
bHMgd2l0aCBjb25zdHJ1Y3RvcnMgYXJlIGluaXRpYWxpemVkIGJlZm9yZSB0aGUgZmlyc3QgYWNj
ZXNzLgorICAgIG1hdGNoZWQgPSBtYXRjaCgKKyAgICAgICAgcicoKD86fHN0YXRpYyArKSg/Onxj
b25zdCArKSlzdHJpbmcgKyhbYS16QS1aMC05XzpdKylcYiguKiknLAorICAgICAgICBsaW5lKQor
ICAgICMgTWFrZSBzdXJlIGl0J3Mgbm90IGEgZnVuY3Rpb24uCisgICAgIyBGdW5jdGlvbiB0ZW1w
bGF0ZSBzcGVjaWFsaXphdGlvbiBsb29rcyBsaWtlOiAic3RyaW5nIGZvbzxUeXBlPiguLi4iLgor
ICAgICMgQ2xhc3MgdGVtcGxhdGUgZGVmaW5pdGlvbnMgbG9vayBsaWtlOiAic3RyaW5nIEZvbzxU
eXBlPjo6TWV0aG9kKC4uLiIuCisgICAgaWYgbWF0Y2hlZCBhbmQgbm90IG1hdGNoKHInXHMqKDwu
Kj4pPyg6OlthLXpBLVowLTlfXSspP1xzKlwoKFteIl18JCknLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaGVkLmdyb3VwKDMpKToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxp
bmVfbnVtYmVyLCAncnVudGltZS9zdHJpbmcnLCA0LAorICAgICAgICAgICAgICAnRm9yIGEgc3Rh
dGljL2dsb2JhbCBzdHJpbmcgY29uc3RhbnQsIHVzZSBhIEMgc3R5bGUgc3RyaW5nIGluc3RlYWQ6
ICcKKyAgICAgICAgICAgICAgJyIlc2NoYXIgJXNbXSIuJyAlCisgICAgICAgICAgICAgIChtYXRj
aGVkLmdyb3VwKDEpLCBtYXRjaGVkLmdyb3VwKDIpKSkKKworICAgICMgQ2hlY2sgdGhhdCB3ZSdy
ZSBub3QgdXNpbmcgUlRUSSBvdXRzaWRlIG9mIHRlc3RpbmcgY29kZS4KKyAgICBpZiBzZWFyY2go
cidcYmR5bmFtaWNfY2FzdDwnLCBsaW5lKSBhbmQgbm90IF9pc190ZXN0X2ZpbGVuYW1lKGZpbGVu
YW1lKToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncnVudGltZS9ydHRp
JywgNSwKKyAgICAgICAgICAgICAgJ0RvIG5vdCB1c2UgZHluYW1pY19jYXN0PD4uICBJZiB5b3Ug
bmVlZCB0byBjYXN0IHdpdGhpbiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgImhpZXJhcmNoeSwg
dXNlIHN0YXRpY19jYXN0PD4gdG8gdXBjYXN0LiAgR29vZ2xlIGRvZXNuJ3Qgc3VwcG9ydCAiCisg
ICAgICAgICAgICAgICdSVFRJLicpCisKKyAgICBpZiBzZWFyY2gocidcYihbQS1aYS16MC05X10q
XylcKFwxXCknLCBsaW5lKToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAn
cnVudGltZS9pbml0JywgNCwKKyAgICAgICAgICAgICAgJ1lvdSBzZWVtIHRvIGJlIGluaXRpYWxp
emluZyBhIG1lbWJlciB2YXJpYWJsZSB3aXRoIGl0c2VsZi4nKQorCisgICAgaWYgZmlsZV9leHRl
bnNpb24gPT0gJ2gnOgorICAgICAgICAjIEZJWE1FOiBjaGVjayB0aGF0IDEtYXJnIGNvbnN0cnVj
dG9ycyBhcmUgZXhwbGljaXQuCisgICAgICAgICMgICAgICAgIEhvdyB0byB0ZWxsIGl0J3MgYSBj
b25zdHJ1Y3Rvcj8KKyAgICAgICAgIyAgICAgICAgKGhhbmRsZWQgaW4gY2hlY2tfZm9yX25vbl9z
dGFuZGFyZF9jb25zdHJ1Y3RzIGZvciBub3cpCisgICAgICAgIHBhc3MKKworICAgICMgQ2hlY2sg
aWYgcGVvcGxlIGFyZSB1c2luZyB0aGUgdmVyYm90ZW4gQyBiYXNpYyB0eXBlcy4gIFRoZSBvbmx5
IGV4Y2VwdGlvbgorICAgICMgd2UgcmVndWxhcmx5IGFsbG93IGlzICJ1bnNpZ25lZCBzaG9ydCBw
b3J0IiBmb3IgcG9ydC4KKyAgICBpZiBzZWFyY2gocidcYnNob3J0IHBvcnRcYicsIGxpbmUpOgor
ICAgICAgICBpZiBub3Qgc2VhcmNoKHInXGJ1bnNpZ25lZCBzaG9ydCBwb3J0XGInLCBsaW5lKToK
KyAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3J1bnRpbWUvaW50Jywg
NCwKKyAgICAgICAgICAgICAgICAgICdVc2UgInVuc2lnbmVkIHNob3J0IiBmb3IgcG9ydHMsIG5v
dCAic2hvcnQiJykKKworICAgICMgV2hlbiBzbnByaW50ZiBpcyB1c2VkLCB0aGUgc2Vjb25kIGFy
Z3VtZW50IHNob3VsZG4ndCBiZSBhIGxpdGVyYWwuCisgICAgbWF0Y2hlZCA9IHNlYXJjaChyJ3Nu
cHJpbnRmXHMqXCgoW14sXSopLFxzKihbMC05XSopXHMqLCcsIGxpbmUpCisgICAgaWYgbWF0Y2hl
ZDoKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncnVudGltZS9wcmludGYn
LCAzLAorICAgICAgICAgICAgICAnSWYgeW91IGNhbiwgdXNlIHNpemVvZiglcykgaW5zdGVhZCBv
ZiAlcyBhcyB0aGUgMm5kIGFyZyAnCisgICAgICAgICAgICAgICd0byBzbnByaW50Zi4nICUgKG1h
dGNoZWQuZ3JvdXAoMSksIG1hdGNoZWQuZ3JvdXAoMikpKQorCisgICAgIyBDaGVjayBpZiBzb21l
IHZlcmJvdGVuIEMgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkLgorICAgIGlmIHNlYXJjaChyJ1xi
c3ByaW50ZlxiJywgbGluZSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwg
J3J1bnRpbWUvcHJpbnRmJywgNSwKKyAgICAgICAgICAgICAgJ05ldmVyIHVzZSBzcHJpbnRmLiAg
VXNlIHNucHJpbnRmIGluc3RlYWQuJykKKyAgICBtYXRjaGVkID0gc2VhcmNoKHInXGIoc3RyY3B5
fHN0cmNhdClcYicsIGxpbmUpCisgICAgaWYgbWF0Y2hlZDoKKyAgICAgICAgZXJyb3IoZmlsZW5h
bWUsIGxpbmVfbnVtYmVyLCAncnVudGltZS9wcmludGYnLCA0LAorICAgICAgICAgICAgICAnQWxt
b3N0IGFsd2F5cywgc25wcmludGYgaXMgYmV0dGVyIHRoYW4gJXMnICUgbWF0Y2hlZC5ncm91cCgx
KSkKKworICAgIGlmIHNlYXJjaChyJ1xic3NjYW5mXGInLCBsaW5lKToKKyAgICAgICAgZXJyb3Io
ZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncnVudGltZS9wcmludGYnLCAxLAorICAgICAgICAgICAg
ICAnc3NjYW5mIGNhbiBiZSBvaywgYnV0IGlzIHNsb3cgYW5kIGNhbiBvdmVyZmxvdyBidWZmZXJz
LicpCisKKyAgICAjIENoZWNrIGZvciBzdXNwaWNpb3VzIHVzYWdlIG9mICJpZiIgbGlrZQorICAg
ICMgfSBpZiAoYSA9PSBiKSB7CisgICAgaWYgc2VhcmNoKHInXH1ccyppZlxzKlwoJywgbGluZSk6
CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L2JyYWNl
cycsIDQsCisgICAgICAgICAgICAgICdEaWQgeW91IG1lYW4gImVsc2UgaWYiPyBJZiBub3QsIHN0
YXJ0IGEgbmV3IGxpbmUgZm9yICJpZiIuJykKKworICAgICMgQ2hlY2sgZm9yIHBvdGVudGlhbCBm
b3JtYXQgc3RyaW5nIGJ1Z3MgbGlrZSBwcmludGYoZm9vKS4KKyAgICAjIFdlIGNvbnN0cmFpbiB0
aGUgcGF0dGVybiBub3QgdG8gcGljayB0aGluZ3MgbGlrZSBEb2NpZEZvclByaW50Zihmb28pLgor
ICAgICMgTm90IHBlcmZlY3QgYnV0IGl0IGNhbiBjYXRjaCBwcmludGYoZm9vLmNfc3RyKCkpIGFu
ZCBwcmludGYoZm9vLT5jX3N0cigpKQorICAgIG1hdGNoZWQgPSByZS5zZWFyY2gocidcYigoPzpz
dHJpbmcpP3ByaW50ZilccypcKChbXHcuXC0+KCldKylcKScsIGxpbmUsIHJlLkkpCisgICAgaWYg
bWF0Y2hlZDoKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncnVudGltZS9w
cmludGYnLCA0LAorICAgICAgICAgICAgICAnUG90ZW50aWFsIGZvcm1hdCBzdHJpbmcgYnVnLiBE
byAlcygiJSVzIiwgJXMpIGluc3RlYWQuJworICAgICAgICAgICAgICAlIChtYXRjaGVkLmdyb3Vw
KDEpLCBtYXRjaGVkLmdyb3VwKDIpKSkKKworICAgICMgQ2hlY2sgZm9yIHBvdGVudGlhbCBtZW1z
ZXQgYnVncyBsaWtlIG1lbXNldChidWYsIHNpemVvZihidWYpLCAwKS4KKyAgICBtYXRjaGVkID0g
c2VhcmNoKHInbWVtc2V0XHMqXCgoW14sXSopLFxzKihbXixdKiksXHMqMFxzKlwpJywgbGluZSkK
KyAgICBpZiBtYXRjaGVkIGFuZCBub3QgbWF0Y2gociJeJyd8LT9bMC05XSt8MHhbMC05QS1GYS1m
XSQiLCBtYXRjaGVkLmdyb3VwKDIpKToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVt
YmVyLCAncnVudGltZS9tZW1zZXQnLCA0LAorICAgICAgICAgICAgICAnRGlkIHlvdSBtZWFuICJt
ZW1zZXQoJXMsIDAsICVzKSI/JworICAgICAgICAgICAgICAlIChtYXRjaGVkLmdyb3VwKDEpLCBt
YXRjaGVkLmdyb3VwKDIpKSkKKworICAgICMgRGV0ZWN0IHZhcmlhYmxlLWxlbmd0aCBhcnJheXMu
CisgICAgbWF0Y2hlZCA9IG1hdGNoKHInXHMqKC4rOjopPyhcdyspIFthLXpdXHcqXFsoLispXTsn
LCBsaW5lKQorICAgIGlmIChtYXRjaGVkIGFuZCBtYXRjaGVkLmdyb3VwKDIpICE9ICdyZXR1cm4n
IGFuZCBtYXRjaGVkLmdyb3VwKDIpICE9ICdkZWxldGUnIGFuZAorICAgICAgICBtYXRjaGVkLmdy
b3VwKDMpLmZpbmQoJ10nKSA9PSAtMSk6CisgICAgICAgICMgU3BsaXQgdGhlIHNpemUgdXNpbmcg
c3BhY2UgYW5kIGFyaXRobWV0aWMgb3BlcmF0b3JzIGFzIGRlbGltaXRlcnMuCisgICAgICAgICMg
SWYgYW55IG9mIHRoZSByZXN1bHRpbmcgdG9rZW5zIGFyZSBub3QgY29tcGlsZSB0aW1lIGNvbnN0
YW50cyB0aGVuCisgICAgICAgICMgcmVwb3J0IHRoZSBlcnJvci4KKyAgICAgICAgdG9rZW5zID0g
cmUuc3BsaXQocidcc3xcK3xcLXxcKnxcL3w8PHw+Pl0nLCBtYXRjaGVkLmdyb3VwKDMpKQorICAg
ICAgICBpc19jb25zdCA9IFRydWUKKyAgICAgICAgc2tpcF9uZXh0ID0gRmFsc2UKKyAgICAgICAg
Zm9yIHRvayBpbiB0b2tlbnM6CisgICAgICAgICAgICBpZiBza2lwX25leHQ6CisgICAgICAgICAg
ICAgICAgc2tpcF9uZXh0ID0gRmFsc2UKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgICAgICBpZiBzZWFyY2gocidzaXplb2ZcKC4rXCknLCB0b2spOgorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgICAgICBpZiBzZWFyY2gocidhcnJheXNpemVcKFx3K1wpJywgdG9r
KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICB0b2sgPSB0b2subHN0
cmlwKCcoJykKKyAgICAgICAgICAgIHRvayA9IHRvay5yc3RyaXAoJyknKQorICAgICAgICAgICAg
aWYgbm90IHRvazoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgbWF0
Y2gocidcZCsnLCB0b2spOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBp
ZiBtYXRjaChyJzBbeFhdWzAtOWEtZkEtRl0rJywgdG9rKToKKyAgICAgICAgICAgICAgICBjb250
aW51ZQorICAgICAgICAgICAgaWYgbWF0Y2gocidrW0EtWjAtOV1cdyonLCB0b2spOgorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBtYXRjaChyJyguKzo6KT9rW0EtWjAt
OV1cdyonLCB0b2spOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBt
YXRjaChyJyguKzo6KT9bQS1aXVtBLVowLTlfXSonLCB0b2spOgorICAgICAgICAgICAgICAgIGNv
bnRpbnVlCisgICAgICAgICAgICAjIEEgY2F0Y2ggYWxsIGZvciB0cmlja3kgc2l6ZW9mIGNhc2Vz
LCBpbmNsdWRpbmcgJ3NpemVvZiBleHByZXNzaW9uJywKKyAgICAgICAgICAgICMgJ3NpemVvZigq
dHlwZSknLCAnc2l6ZW9mKGNvbnN0IHR5cGUpJywgJ3NpemVvZihzdHJ1Y3QgU3RydWN0TmFtZSkn
CisgICAgICAgICAgICAjIHJlcXVpcmVzIHNraXBwaW5nIHRoZSBuZXh0IHRva2VuIGJlY2FzdWUg
d2Ugc3BsaXQgb24gJyAnIGFuZCAnKicuCisgICAgICAgICAgICBpZiB0b2suc3RhcnRzd2l0aCgn
c2l6ZW9mJyk6CisgICAgICAgICAgICAgICAgc2tpcF9uZXh0ID0gVHJ1ZQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpc19jb25zdCA9IEZhbHNlCisgICAgICAgICAgICBi
cmVhaworICAgICAgICBpZiBub3QgaXNfY29uc3Q6CisgICAgICAgICAgICBlcnJvcihmaWxlbmFt
ZSwgbGluZV9udW1iZXIsICdydW50aW1lL2FycmF5cycsIDEsCisgICAgICAgICAgICAgICAgICAn
RG8gbm90IHVzZSB2YXJpYWJsZS1sZW5ndGggYXJyYXlzLiAgVXNlIGFuIGFwcHJvcHJpYXRlbHkg
bmFtZWQgJworICAgICAgICAgICAgICAgICAgIignaycgZm9sbG93ZWQgYnkgQ2FtZWxDYXNlKSBj
b21waWxlLXRpbWUgY29uc3RhbnQgZm9yIHRoZSBzaXplLiIpCisKKyAgICAjIENoZWNrIGZvciB1
c2Ugb2YgdW5uYW1lZCBuYW1lc3BhY2VzIGluIGhlYWRlciBmaWxlcy4gIFJlZ2lzdHJhdGlvbgor
ICAgICMgbWFjcm9zIGFyZSB0eXBpY2FsbHkgT0ssIHNvIHdlIGFsbG93IHVzZSBvZiAibmFtZXNw
YWNlIHsiIG9uIGxpbmVzCisgICAgIyB0aGF0IGVuZCB3aXRoIGJhY2tzbGFzaGVzLgorICAgIGlm
IChmaWxlX2V4dGVuc2lvbiA9PSAnaCcKKyAgICAgICAgYW5kIHNlYXJjaChyJ1xibmFtZXNwYWNl
XHMqeycsIGxpbmUpCisgICAgICAgIGFuZCBsaW5lWy0xXSAhPSAnXFwnKToKKyAgICAgICAgZXJy
b3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnYnVpbGQvbmFtZXNwYWNlcycsIDQsCisgICAgICAg
ICAgICAgICdEbyBub3QgdXNlIHVubmFtZWQgbmFtZXNwYWNlcyBpbiBoZWFkZXIgZmlsZXMuICBT
ZWUgJworICAgICAgICAgICAgICAnaHR0cDovL2dvb2dsZS1zdHlsZWd1aWRlLmdvb2dsZWNvZGUu
Y29tL3N2bi90cnVuay9jcHBndWlkZS54bWwjTmFtZXNwYWNlcycKKyAgICAgICAgICAgICAgJyBm
b3IgbW9yZSBpbmZvcm1hdGlvbi4nKQorCisKK2RlZiBjaGVja19jX3N0eWxlX2Nhc3QoZmlsZW5h
bWUsIGxpbmVfbnVtYmVyLCBsaW5lLCByYXdfbGluZSwgY2FzdF90eXBlLCBwYXR0ZXJuLAorICAg
ICAgICAgICAgICAgICAgICAgICBlcnJvcik6CisgICAgIiIiQ2hlY2tzIGZvciBhIEMtc3R5bGUg
Y2FzdCBieSBsb29raW5nIGZvciB0aGUgcGF0dGVybi4KKworICAgIFRoaXMgYWxzbyBoYW5kbGVz
IHNpemVvZih0eXBlKSB3YXJuaW5ncywgZHVlIHRvIHNpbWlsYXJpdHkgb2YgY29udGVudC4KKwor
ICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4K
KyAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAg
ICAgbGluZTogVGhlIGxpbmUgb2YgY29kZSB0byBjaGVjay4KKyAgICAgIHJhd19saW5lOiBUaGUg
cmF3IGxpbmUgb2YgY29kZSB0byBjaGVjaywgd2l0aCBjb21tZW50cy4KKyAgICAgIGNhc3RfdHlw
ZTogVGhlIHN0cmluZyBmb3IgdGhlIEMrKyBjYXN0IHRvIHJlY29tbWVuZC4gIFRoaXMgaXMgZWl0
aGVyCisgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Qgb3Igc3RhdGljX2Nhc3QsIGRl
cGVuZGluZy4KKyAgICAgIHBhdHRlcm46IFRoZSByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byBm
aW5kIEMtc3R5bGUgY2FzdHMuCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0
aCBhbnkgZXJyb3JzIGZvdW5kLgorICAgICIiIgorICAgIG1hdGNoZWQgPSBzZWFyY2gocGF0dGVy
biwgbGluZSkKKyAgICBpZiBub3QgbWF0Y2hlZDoKKyAgICAgICAgcmV0dXJuCisKKyAgICAjIGUu
Zy4sIHNpemVvZihpbnQpCisgICAgc2l6ZW9mX21hdGNoID0gbWF0Y2gocicuKnNpemVvZlxzKiQn
LCBsaW5lWzA6bWF0Y2hlZC5zdGFydCgxKSAtIDFdKQorICAgIGlmIHNpemVvZl9tYXRjaDoKKyAg
ICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncnVudGltZS9zaXplb2YnLCAxLAor
ICAgICAgICAgICAgICAnVXNpbmcgc2l6ZW9mKHR5cGUpLiAgVXNlIHNpemVvZih2YXJuYW1lKSBp
bnN0ZWFkIGlmIHBvc3NpYmxlJykKKyAgICAgICAgcmV0dXJuCisKKyAgICByZW1haW5kZXIgPSBs
aW5lW21hdGNoZWQuZW5kKDApOl0KKworICAgICMgVGhlIGNsb3NlIHBhcmVuIGlzIGZvciBmdW5j
dGlvbiBwb2ludGVycyBhcyBhcmd1bWVudHMgdG8gYSBmdW5jdGlvbi4KKyAgICAjIGVnLCB2b2lk
IGZvbyh2b2lkICgqYmFyKShpbnQpKTsKKyAgICAjIFRoZSBzZW1pY29sb24gY2hlY2sgaXMgYSBt
b3JlIGJhc2ljIGZ1bmN0aW9uIGNoZWNrOyBhbHNvIHBvc3NpYmx5IGEKKyAgICAjIGZ1bmN0aW9u
IHBvaW50ZXIgdHlwZWRlZi4KKyAgICAjIGVnLCB2b2lkIGZvbyhpbnQpOyBvciB2b2lkIGZvbyhp
bnQpIGNvbnN0OworICAgICMgVGhlIGVxdWFscyBjaGVjayBpcyBmb3IgZnVuY3Rpb24gcG9pbnRl
ciBhc3NpZ25tZW50LgorICAgICMgZWcsIHZvaWQgKigqZm9vKShpbnQpID0gLi4uCisgICAgIwor
ICAgICMgUmlnaHQgbm93LCB0aGlzIHdpbGwgb25seSBjYXRjaCBjYXNlcyB3aGVyZSB0aGVyZSdz
IGEgc2luZ2xlIGFyZ3VtZW50LCBhbmQKKyAgICAjIGl0J3MgdW5uYW1lZC4gIEl0IHNob3VsZCBw
cm9iYWJseSBiZSBleHBhbmRlZCB0byBjaGVjayBmb3IgbXVsdGlwbGUKKyAgICAjIGFyZ3VtZW50
cyB3aXRoIHNvbWUgdW5uYW1lZC4KKyAgICBmdW5jdGlvbl9tYXRjaCA9IG1hdGNoKHInXHMqKFwp
fD18KGNvbnN0KT9ccyooO3xce3x0aHJvd1woXCkpKScsIHJlbWFpbmRlcikKKyAgICBpZiBmdW5j
dGlvbl9tYXRjaDoKKyAgICAgICAgaWYgKG5vdCBmdW5jdGlvbl9tYXRjaC5ncm91cCgzKQorICAg
ICAgICAgICAgb3IgZnVuY3Rpb25fbWF0Y2guZ3JvdXAoMykgPT0gJzsnCisgICAgICAgICAgICBv
ciByYXdfbGluZS5maW5kKCcvKicpIDwgMCk6CisgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwg
bGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9mdW5jdGlvbicsIDMsCisgICAgICAgICAgICAgICAg
ICAnQWxsIHBhcmFtZXRlcnMgc2hvdWxkIGJlIG5hbWVkIGluIGEgZnVuY3Rpb24nKQorICAgICAg
ICByZXR1cm4KKworICAgICMgQXQgdGhpcyBwb2ludCwgYWxsIHRoYXQgc2hvdWxkIGJlIGxlZnQg
aXMgYWN0dWFsIGNhc3RzLgorICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3JlYWRh
YmlsaXR5L2Nhc3RpbmcnLCA0LAorICAgICAgICAgICdVc2luZyBDLXN0eWxlIGNhc3QuICBVc2Ug
JXM8JXM+KC4uLikgaW5zdGVhZCcgJQorICAgICAgICAgIChjYXN0X3R5cGUsIG1hdGNoZWQuZ3Jv
dXAoMSkpKQorCisKK19IRUFERVJTX0NPTlRBSU5JTkdfVEVNUExBVEVTID0gKAorICAgICgnPGRl
cXVlPicsICgnZGVxdWUnLCkpLAorICAgICgnPGZ1bmN0aW9uYWw+JywgKCd1bmFyeV9mdW5jdGlv
bicsICdiaW5hcnlfZnVuY3Rpb24nLAorICAgICAgICAgICAgICAgICAgICAgICdwbHVzJywgJ21p
bnVzJywgJ211bHRpcGxpZXMnLCAnZGl2aWRlcycsICdtb2R1bHVzJywKKyAgICAgICAgICAgICAg
ICAgICAgICAnbmVnYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAnZXF1YWxfdG8nLCAnbm90
X2VxdWFsX3RvJywgJ2dyZWF0ZXInLCAnbGVzcycsCisgICAgICAgICAgICAgICAgICAgICAgJ2dy
ZWF0ZXJfZXF1YWwnLCAnbGVzc19lcXVhbCcsCisgICAgICAgICAgICAgICAgICAgICAgJ2xvZ2lj
YWxfYW5kJywgJ2xvZ2ljYWxfb3InLCAnbG9naWNhbF9ub3QnLAorICAgICAgICAgICAgICAgICAg
ICAgICd1bmFyeV9uZWdhdGUnLCAnbm90MScsICdiaW5hcnlfbmVnYXRlJywgJ25vdDInLAorICAg
ICAgICAgICAgICAgICAgICAgICdiaW5kMXN0JywgJ2JpbmQybmQnLAorICAgICAgICAgICAgICAg
ICAgICAgICdwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uJywKKyAgICAgICAgICAgICAgICAgICAg
ICAncG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24nLAorICAgICAgICAgICAgICAgICAgICAgICdw
dHJfZnVuJywKKyAgICAgICAgICAgICAgICAgICAgICAnbWVtX2Z1bl90JywgJ21lbV9mdW4nLCAn
bWVtX2Z1bjFfdCcsICdtZW1fZnVuMV9yZWZfdCcsCisgICAgICAgICAgICAgICAgICAgICAgJ21l
bV9mdW5fcmVmX3QnLAorICAgICAgICAgICAgICAgICAgICAgICdjb25zdF9tZW1fZnVuX3QnLCAn
Y29uc3RfbWVtX2Z1bjFfdCcsCisgICAgICAgICAgICAgICAgICAgICAgJ2NvbnN0X21lbV9mdW5f
cmVmX3QnLCAnY29uc3RfbWVtX2Z1bjFfcmVmX3QnLAorICAgICAgICAgICAgICAgICAgICAgICdt
ZW1fZnVuX3JlZicsCisgICAgICAgICAgICAgICAgICAgICApKSwKKyAgICAoJzxsaW1pdHM+Jywg
KCdudW1lcmljX2xpbWl0cycsKSksCisgICAgKCc8bGlzdD4nLCAoJ2xpc3QnLCkpLAorICAgICgn
PG1hcD4nLCAoJ21hcCcsICdtdWx0aW1hcCcsKSksCisgICAgKCc8bWVtb3J5PicsICgnYWxsb2Nh
dG9yJywpKSwKKyAgICAoJzxxdWV1ZT4nLCAoJ3F1ZXVlJywgJ3ByaW9yaXR5X3F1ZXVlJywpKSwK
KyAgICAoJzxzZXQ+JywgKCdzZXQnLCAnbXVsdGlzZXQnLCkpLAorICAgICgnPHN0YWNrPicsICgn
c3RhY2snLCkpLAorICAgICgnPHN0cmluZz4nLCAoJ2NoYXJfdHJhaXRzJywgJ2Jhc2ljX3N0cmlu
ZycsKSksCisgICAgKCc8dXRpbGl0eT4nLCAoJ3BhaXInLCkpLAorICAgICgnPHZlY3Rvcj4nLCAo
J3ZlY3RvcicsKSksCisKKyAgICAjIGdjYyBleHRlbnNpb25zLgorICAgICMgTm90ZTogc3RkOjpo
YXNoIGlzIHRoZWlyIGhhc2gsIDo6aGFzaCBpcyBvdXIgaGFzaAorICAgICgnPGhhc2hfbWFwPics
ICgnaGFzaF9tYXAnLCAnaGFzaF9tdWx0aW1hcCcsKSksCisgICAgKCc8aGFzaF9zZXQ+JywgKCdo
YXNoX3NldCcsICdoYXNoX211bHRpc2V0JywpKSwKKyAgICAoJzxzbGlzdD4nLCAoJ3NsaXN0Jywp
KSwKKyAgICApCisKK19IRUFERVJTX0FDQ0VQVEVEX0JVVF9OT1RfUFJPTU9URUQgPSB7CisgICAg
IyBXZSBjYW4gdHJ1c3Qgd2l0aCByZWFzb25hYmxlIGNvbmZpZGVuY2UgdGhhdCBtYXAgZ2l2ZXMg
dXMgcGFpcjw+LCB0b28uCisgICAgJ3BhaXI8Pic6ICgnbWFwJywgJ211bHRpbWFwJywgJ2hhc2hf
bWFwJywgJ2hhc2hfbXVsdGltYXAnKQorfQorCitfUkVfUEFUVEVSTl9TVFJJTkcgPSByZS5jb21w
aWxlKHInXGJzdHJpbmdcYicpCisKK19yZV9wYXR0ZXJuX2FsZ29yaXRobV9oZWFkZXIgPSBbXQor
Zm9yIF90ZW1wbGF0ZSBpbiAoJ2NvcHknLCAnbWF4JywgJ21pbicsICdtaW5fZWxlbWVudCcsICdz
b3J0JywgJ3N3YXAnLAorICAgICAgICAgICAgICAgICAgJ3RyYW5zZm9ybScpOgorICAgICMgTWF0
Y2ggbWF4PHR5cGU+KC4uLiwgLi4uKSwgbWF4KC4uLiwgLi4uKSwgYnV0IG5vdCBmb28tPm1heCwg
Zm9vLm1heCBvcgorICAgICMgdHlwZTo6bWF4KCkuCisgICAgX3JlX3BhdHRlcm5fYWxnb3JpdGht
X2hlYWRlci5hcHBlbmQoCisgICAgICAgIChyZS5jb21waWxlKHInW14+Ll1cYicgKyBfdGVtcGxh
dGUgKyByJyg8Lio/Pik/XChbXlwpXScpLAorICAgICAgICAgX3RlbXBsYXRlLAorICAgICAgICAg
JzxhbGdvcml0aG0+JykpCisKK19yZV9wYXR0ZXJuX3RlbXBsYXRlcyA9IFtdCitmb3IgX2hlYWRl
ciwgX3RlbXBsYXRlcyBpbiBfSEVBREVSU19DT05UQUlOSU5HX1RFTVBMQVRFUzoKKyAgICBmb3Ig
X3RlbXBsYXRlIGluIF90ZW1wbGF0ZXM6CisgICAgICAgIF9yZV9wYXR0ZXJuX3RlbXBsYXRlcy5h
cHBlbmQoCisgICAgICAgICAgICAocmUuY29tcGlsZShyJyhcPHxcYiknICsgX3RlbXBsYXRlICsg
cidccypcPCcpLAorICAgICAgICAgICAgIF90ZW1wbGF0ZSArICc8PicsCisgICAgICAgICAgICAg
X2hlYWRlcikpCisKKworZGVmIGZpbGVzX2JlbG9uZ190b19zYW1lX21vZHVsZShmaWxlbmFtZV9j
YywgZmlsZW5hbWVfaCk6CisgICAgIiIiQ2hlY2sgaWYgdGhlc2UgdHdvIGZpbGVuYW1lcyBiZWxv
bmcgdG8gdGhlIHNhbWUgbW9kdWxlLgorCisgICAgVGhlIGNvbmNlcHQgb2YgYSAnbW9kdWxlJyBo
ZXJlIGlzIGEgYXMgZm9sbG93czoKKyAgICBmb28uaCwgZm9vLWlubC5oLCBmb28uY2MsIGZvb190
ZXN0LmNjIGFuZCBmb29fdW5pdHRlc3QuY2MgYmVsb25nIHRvIHRoZQorICAgIHNhbWUgJ21vZHVs
ZScgaWYgdGhleSBhcmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICAgIHNvbWUvcGF0aC9wdWJs
aWMveHl6enkgYW5kIHNvbWUvcGF0aC9pbnRlcm5hbC94eXp6eSBhcmUgYWxzbyBjb25zaWRlcmVk
CisgICAgdG8gYmVsb25nIHRvIHRoZSBzYW1lIG1vZHVsZSBoZXJlLgorCisgICAgSWYgdGhlIGZp
bGVuYW1lX2NjIGNvbnRhaW5zIGEgbG9uZ2VyIHBhdGggdGhhbiB0aGUgZmlsZW5hbWVfaCwgZm9y
IGV4YW1wbGUsCisgICAgJy9hYnNvbHV0ZS9wYXRoL3RvL2Jhc2Uvc3lzaW5mby5jYycsIGFuZCB0
aGlzIGZpbGUgd291bGQgaW5jbHVkZQorICAgICdiYXNlL3N5c2luZm8uaCcsIHRoaXMgZnVuY3Rp
b24gYWxzbyBwcm9kdWNlcyB0aGUgcHJlZml4IG5lZWRlZCB0byBvcGVuIHRoZQorICAgIGhlYWRl
ci4gVGhpcyBpcyB1c2VkIGJ5IHRoZSBjYWxsZXIgb2YgdGhpcyBmdW5jdGlvbiB0byBtb3JlIHJv
YnVzdGx5IG9wZW4gdGhlCisgICAgaGVhZGVyIGZpbGUuIFdlIGRvbid0IGhhdmUgYWNjZXNzIHRv
IHRoZSByZWFsIGluY2x1ZGUgcGF0aHMgaW4gdGhpcyBjb250ZXh0LAorICAgIHNvIHdlIG5lZWQg
dGhpcyBndWVzc3dvcmsgaGVyZS4KKworICAgIEtub3duIGJ1Z3M6IHRvb2xzL2Jhc2UvYmFyLmNj
IGFuZCBiYXNlL2Jhci5oIGJlbG9uZyB0byB0aGUgc2FtZSBtb2R1bGUKKyAgICBhY2NvcmRpbmcg
dG8gdGhpcyBpbXBsZW1lbnRhdGlvbi4gQmVjYXVzZSBvZiB0aGlzLCB0aGlzIGZ1bmN0aW9uIGdp
dmVzCisgICAgc29tZSBmYWxzZSBwb3NpdGl2ZXMuIFRoaXMgc2hvdWxkIGJlIHN1ZmZpY2llbnRs
eSByYXJlIGluIHByYWN0aWNlLgorCisgICAgQXJnczoKKyAgICAgIGZpbGVuYW1lX2NjOiBpcyB0
aGUgcGF0aCBmb3IgdGhlIC5jYyBmaWxlCisgICAgICBmaWxlbmFtZV9oOiBpcyB0aGUgcGF0aCBm
b3IgdGhlIGhlYWRlciBwYXRoCisKKyAgICBSZXR1cm5zOgorICAgICAgVHVwbGUgd2l0aCBhIGJv
b2wgYW5kIGEgc3RyaW5nOgorICAgICAgYm9vbDogVHJ1ZSBpZiBmaWxlbmFtZV9jYyBhbmQgZmls
ZW5hbWVfaCBiZWxvbmcgdG8gdGhlIHNhbWUgbW9kdWxlLgorICAgICAgc3RyaW5nOiB0aGUgYWRk
aXRpb25hbCBwcmVmaXggbmVlZGVkIHRvIG9wZW4gdGhlIGhlYWRlciBmaWxlLgorICAgICIiIgor
CisgICAgaWYgbm90IGZpbGVuYW1lX2NjLmVuZHN3aXRoKCcuY2MnKToKKyAgICAgICAgcmV0dXJu
IChGYWxzZSwgJycpCisgICAgZmlsZW5hbWVfY2MgPSBmaWxlbmFtZV9jY1s6LWxlbignLmNjJyld
CisgICAgaWYgZmlsZW5hbWVfY2MuZW5kc3dpdGgoJ191bml0dGVzdCcpOgorICAgICAgICBmaWxl
bmFtZV9jYyA9IGZpbGVuYW1lX2NjWzotbGVuKCdfdW5pdHRlc3QnKV0KKyAgICBlbGlmIGZpbGVu
YW1lX2NjLmVuZHN3aXRoKCdfdGVzdCcpOgorICAgICAgICBmaWxlbmFtZV9jYyA9IGZpbGVuYW1l
X2NjWzotbGVuKCdfdGVzdCcpXQorICAgIGZpbGVuYW1lX2NjID0gZmlsZW5hbWVfY2MucmVwbGFj
ZSgnL3B1YmxpYy8nLCAnLycpCisgICAgZmlsZW5hbWVfY2MgPSBmaWxlbmFtZV9jYy5yZXBsYWNl
KCcvaW50ZXJuYWwvJywgJy8nKQorCisgICAgaWYgbm90IGZpbGVuYW1lX2guZW5kc3dpdGgoJy5o
Jyk6CisgICAgICAgIHJldHVybiAoRmFsc2UsICcnKQorICAgIGZpbGVuYW1lX2ggPSBmaWxlbmFt
ZV9oWzotbGVuKCcuaCcpXQorICAgIGlmIGZpbGVuYW1lX2guZW5kc3dpdGgoJy1pbmwnKToKKyAg
ICAgICAgZmlsZW5hbWVfaCA9IGZpbGVuYW1lX2hbOi1sZW4oJy1pbmwnKV0KKyAgICBmaWxlbmFt
ZV9oID0gZmlsZW5hbWVfaC5yZXBsYWNlKCcvcHVibGljLycsICcvJykKKyAgICBmaWxlbmFtZV9o
ID0gZmlsZW5hbWVfaC5yZXBsYWNlKCcvaW50ZXJuYWwvJywgJy8nKQorCisgICAgZmlsZXNfYmVs
b25nX3RvX3NhbWVfbW9kdWxlID0gZmlsZW5hbWVfY2MuZW5kc3dpdGgoZmlsZW5hbWVfaCkKKyAg
ICBjb21tb25fcGF0aCA9ICcnCisgICAgaWYgZmlsZXNfYmVsb25nX3RvX3NhbWVfbW9kdWxlOgor
ICAgICAgICBjb21tb25fcGF0aCA9IGZpbGVuYW1lX2NjWzotbGVuKGZpbGVuYW1lX2gpXQorICAg
IHJldHVybiBmaWxlc19iZWxvbmdfdG9fc2FtZV9tb2R1bGUsIGNvbW1vbl9wYXRoCisKKworZGVm
IHVwZGF0ZV9pbmNsdWRlX3N0YXRlKGZpbGVuYW1lLCBpbmNsdWRlX3N0YXRlLCBpbz1jb2RlY3Mp
OgorICAgICIiIkZpbGwgdXAgdGhlIGluY2x1ZGVfc3RhdGUgd2l0aCBuZXcgaW5jbHVkZXMgZm91
bmQgZnJvbSB0aGUgZmlsZS4KKworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTogdGhlIG5hbWUg
b2YgdGhlIGhlYWRlciB0byByZWFkLgorICAgICAgaW5jbHVkZV9zdGF0ZTogYW4gX0luY2x1ZGVT
dGF0ZSBpbnN0YW5jZSBpbiB3aGljaCB0aGUgaGVhZGVycyBhcmUgaW5zZXJ0ZWQuCisgICAgICBp
bzogVGhlIGlvIGZhY3RvcnkgdG8gdXNlIHRvIHJlYWQgdGhlIGZpbGUuIFByb3ZpZGVkIGZvciB0
ZXN0YWJpbGl0eS4KKworICAgIFJldHVybnM6CisgICAgICBUcnVlIGlmIGEgaGVhZGVyIHdhcyBz
dWNjZXNmdWxseSBhZGRlZC4gRmFsc2Ugb3RoZXJ3aXNlLgorICAgICIiIgorICAgIGhlYWRlcl9m
aWxlID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgaGVhZGVyX2ZpbGUgPSBpby5vcGVuKGZpbGVu
YW1lLCAncicsICd1dGY4JywgJ3JlcGxhY2UnKQorICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAg
ICByZXR1cm4gRmFsc2UKKyAgICBsaW5lX251bWJlciA9IDAKKyAgICBmb3IgbGluZSBpbiBoZWFk
ZXJfZmlsZToKKyAgICAgICAgbGluZV9udW1iZXIgKz0gMQorICAgICAgICBjbGVhbl9saW5lID0g
Y2xlYW5zZV9jb21tZW50cyhsaW5lKQorICAgICAgICBtYXRjaGVkID0gX1JFX1BBVFRFUk5fSU5D
TFVERS5zZWFyY2goY2xlYW5fbGluZSkKKyAgICAgICAgaWYgbWF0Y2hlZDoKKyAgICAgICAgICAg
IGluY2x1ZGUgPSBtYXRjaGVkLmdyb3VwKDIpCisgICAgICAgICAgICAjIFRoZSB2YWx1ZSBmb3Jt
YXR0aW5nIGlzIGN1dGUsIGJ1dCBub3QgcmVhbGx5IHVzZWQgcmlnaHQgbm93LgorICAgICAgICAg
ICAgIyBXaGF0IG1hdHRlcnMgaGVyZSBpcyB0aGF0IHRoZSBrZXkgaXMgaW4gaW5jbHVkZV9zdGF0
ZS4KKyAgICAgICAgICAgIGluY2x1ZGVfc3RhdGUuc2V0ZGVmYXVsdChpbmNsdWRlLCAnJXM6JWQn
ICUgKGZpbGVuYW1lLCBsaW5lX251bWJlcikpCisgICAgcmV0dXJuIFRydWUKKworCitkZWYgY2hl
Y2tfZm9yX2luY2x1ZGVfd2hhdF95b3VfdXNlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgaW5jbHVk
ZV9zdGF0ZSwgZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvPWNv
ZGVjcyk6CisgICAgIiIiUmVwb3J0cyBmb3IgbWlzc2luZyBzdGwgaW5jbHVkZXMuCisKKyAgICBU
aGlzIGZ1bmN0aW9uIHdpbGwgb3V0cHV0IHdhcm5pbmdzIHRvIG1ha2Ugc3VyZSB5b3UgYXJlIGlu
Y2x1ZGluZyB0aGUgaGVhZGVycworICAgIG5lY2Vzc2FyeSBmb3IgdGhlIHN0bCBjb250YWluZXJz
IGFuZCBmdW5jdGlvbnMgdGhhdCB5b3UgdXNlLiBXZSBvbmx5IGdpdmUgb25lCisgICAgcmVhc29u
IHRvIGluY2x1ZGUgYSBoZWFkZXIuIEZvciBleGFtcGxlLCBpZiB5b3UgdXNlIGJvdGggZXF1YWxf
dG88PiBhbmQKKyAgICBsZXNzPD4gaW4gYSAuaCBmaWxlLCBvbmx5IG9uZSAodGhlIGxhdHRlciBp
biB0aGUgZmlsZSkgb2YgdGhlc2Ugd2lsbCBiZQorICAgIHJlcG9ydGVkIGFzIGEgcmVhc29uIHRv
IGluY2x1ZGUgdGhlIDxmdW5jdGlvbmFsPi4KKworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTog
VGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFu
c2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KKyAgICAgIGluY2x1ZGVfc3Rh
dGU6IEFuIF9JbmNsdWRlU3RhdGUgaW5zdGFuY2UuCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9u
IHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgorICAgICAgaW86IFRoZSBJTyBmYWN0b3J5
IHRvIHVzZSB0byByZWFkIHRoZSBoZWFkZXIgZmlsZS4gUHJvdmlkZWQgZm9yIHVuaXR0ZXN0Cisg
ICAgICAgICAgaW5qZWN0aW9uLgorICAgICIiIgorICAgIHJlcXVpcmVkID0ge30gICMgQSBtYXAg
b2YgaGVhZGVyIG5hbWUgdG8gbGluZV9udW1iZXIgYW5kIHRoZSB0ZW1wbGF0ZSBlbnRpdHkuCisg
ICAgICAgICMgRXhhbXBsZSBvZiByZXF1aXJlZDogeyAnPGZ1bmN0aW9uYWw+JzogKDEyMTksICds
ZXNzPD4nKSB9CisKKyAgICBmb3IgbGluZV9udW1iZXIgaW4geHJhbmdlKGNsZWFuX2xpbmVzLm51
bV9saW5lcygpKToKKyAgICAgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJl
cl0KKyAgICAgICAgaWYgbm90IGxpbmUgb3IgbGluZVswXSA9PSAnIyc6CisgICAgICAgICAgICBj
b250aW51ZQorCisgICAgICAgICMgU3RyaW5nIGlzIHNwZWNpYWwgLS0gaXQgaXMgYSBub24tdGVt
cGxhdGl6ZWQgdHlwZSBpbiBTVEwuCisgICAgICAgIGlmIF9SRV9QQVRURVJOX1NUUklORy5zZWFy
Y2gobGluZSk6CisgICAgICAgICAgICByZXF1aXJlZFsnPHN0cmluZz4nXSA9IChsaW5lX251bWJl
ciwgJ3N0cmluZycpCisKKyAgICAgICAgZm9yIHBhdHRlcm4sIHRlbXBsYXRlLCBoZWFkZXIgaW4g
X3JlX3BhdHRlcm5fYWxnb3JpdGhtX2hlYWRlcjoKKyAgICAgICAgICAgIGlmIHBhdHRlcm4uc2Vh
cmNoKGxpbmUpOgorICAgICAgICAgICAgICAgIHJlcXVpcmVkW2hlYWRlcl0gPSAobGluZV9udW1i
ZXIsIHRlbXBsYXRlKQorCisgICAgICAgICMgVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBqdXN0
IGEgc3BlZWQgdXAsIG5vIHNlbWFudGljcyBhcmUgY2hhbmdlZC4KKyAgICAgICAgaWYgbm90ICc8
JyBpbiBsaW5lOiAgIyBSZWR1Y2VzIHRoZSBjcHUgdGltZSB1c2FnZSBieSBza2lwcGluZyBsaW5l
cy4KKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgZm9yIHBhdHRlcm4sIHRlbXBsYXRl
LCBoZWFkZXIgaW4gX3JlX3BhdHRlcm5fdGVtcGxhdGVzOgorICAgICAgICAgICAgaWYgcGF0dGVy
bi5zZWFyY2gobGluZSk6CisgICAgICAgICAgICAgICAgcmVxdWlyZWRbaGVhZGVyXSA9IChsaW5l
X251bWJlciwgdGVtcGxhdGUpCisKKyAgICAjIFRoZSBwb2xpY3kgaXMgdGhhdCBpZiB5b3UgI2lu
Y2x1ZGUgc29tZXRoaW5nIGluIGZvby5oIHlvdSBkb24ndCBuZWVkIHRvCisgICAgIyBpbmNsdWRl
IGl0IGFnYWluIGluIGZvby5jYy4gSGVyZSwgd2Ugd2lsbCBsb29rIGF0IHBvc3NpYmxlIGluY2x1
ZGVzLgorICAgICMgTGV0J3MgY29weSB0aGUgaW5jbHVkZV9zdGF0ZSBzbyBpdCBpcyBvbmx5IG1l
c3NlZCB1cCB3aXRoaW4gdGhpcyBmdW5jdGlvbi4KKyAgICBpbmNsdWRlX3N0YXRlID0gaW5jbHVk
ZV9zdGF0ZS5jb3B5KCkKKworICAgICMgRGlkIHdlIGZpbmQgdGhlIGhlYWRlciBmb3IgdGhpcyBm
aWxlIChpZiBhbnkpIGFuZCBzdWNjZXNmdWxseSBsb2FkIGl0PworICAgIGhlYWRlcl9mb3VuZCA9
IEZhbHNlCisKKyAgICAjIFVzZSB0aGUgYWJzb2x1dGUgcGF0aCBzbyB0aGF0IG1hdGNoaW5nIHdv
cmtzIHByb3Blcmx5LgorICAgIGFic19maWxlbmFtZSA9IG9zLnBhdGguYWJzcGF0aChmaWxlbmFt
ZSkKKworICAgICMgRm9yIEVtYWNzJ3MgZmx5bWFrZS4KKyAgICAjIElmIGNwcGxpbnQgaXMgaW52
b2tlZCBmcm9tIEVtYWNzJ3MgZmx5bWFrZSwgYSB0ZW1wb3JhcnkgZmlsZSBpcyBnZW5lcmF0ZWQK
KyAgICAjIGJ5IGZseW1ha2UgYW5kIHRoYXQgZmlsZSBuYW1lIG1pZ2h0IGVuZCB3aXRoICdfZmx5
bWFrZS5jYycuIEluIHRoYXQgY2FzZSwKKyAgICAjIHJlc3RvcmUgb3JpZ2luYWwgZmlsZSBuYW1l
IGhlcmUgc28gdGhhdCB0aGUgY29ycmVzcG9uZGluZyBoZWFkZXIgZmlsZSBjYW4gYmUKKyAgICAj
IGZvdW5kLgorICAgICMgZS5nLiBJZiB0aGUgZmlsZSBuYW1lIGlzICdmb29fZmx5bWFrZS5jYycs
IHdlIHNob3VsZCBzZWFyY2ggZm9yICdmb28uaCcKKyAgICAjIGluc3RlYWQgb2YgJ2Zvb19mbHlt
YWtlLmgnCisgICAgZW1hY3NfZmx5bWFrZV9zdWZmaXggPSAnX2ZseW1ha2UuY2MnCisgICAgaWYg
YWJzX2ZpbGVuYW1lLmVuZHN3aXRoKGVtYWNzX2ZseW1ha2Vfc3VmZml4KToKKyAgICAgICAgYWJz
X2ZpbGVuYW1lID0gYWJzX2ZpbGVuYW1lWzotbGVuKGVtYWNzX2ZseW1ha2Vfc3VmZml4KV0gKyAn
LmNjJworCisgICAgIyBpbmNsdWRlX3N0YXRlIGlzIG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24s
IHNvIHdlIGl0ZXJhdGUgb3ZlciBhIGNvcHkgb2YKKyAgICAjIHRoZSBrZXlzLgorICAgIGZvciBo
ZWFkZXIgaW4gaW5jbHVkZV9zdGF0ZS5rZXlzKCk6ICAjTk9MSU5UCisgICAgICAgIChzYW1lX21v
ZHVsZSwgY29tbW9uX3BhdGgpID0gZmlsZXNfYmVsb25nX3RvX3NhbWVfbW9kdWxlKGFic19maWxl
bmFtZSwgaGVhZGVyKQorICAgICAgICBmdWxscGF0aCA9IGNvbW1vbl9wYXRoICsgaGVhZGVyCisg
ICAgICAgIGlmIHNhbWVfbW9kdWxlIGFuZCB1cGRhdGVfaW5jbHVkZV9zdGF0ZShmdWxscGF0aCwg
aW5jbHVkZV9zdGF0ZSwgaW8pOgorICAgICAgICAgICAgaGVhZGVyX2ZvdW5kID0gVHJ1ZQorCisg
ICAgIyBJZiB3ZSBjYW4ndCBmaW5kIHRoZSBoZWFkZXIgZmlsZSBmb3IgYSAuY2MsIGFzc3VtZSBp
dCdzIGJlY2F1c2Ugd2UgZG9uJ3QKKyAgICAjIGtub3cgd2hlcmUgdG8gbG9vay4gSW4gdGhhdCBj
YXNlIHdlJ2xsIGdpdmUgdXAgYXMgd2UncmUgbm90IHN1cmUgdGhleQorICAgICMgZGlkbid0IGlu
Y2x1ZGUgaXQgaW4gdGhlIC5oIGZpbGUuCisgICAgIyBGSVhNRTogRG8gYSBiZXR0ZXIgam9iIG9m
IGZpbmRpbmcgLmggZmlsZXMgc28gd2UgYXJlIGNvbmZpZGVudCB0aGF0CisgICAgIyAgICAgICAg
bm90IGhhdmluZyB0aGUgLmggZmlsZSBtZWFucyB0aGVyZSBpc24ndCBvbmUuCisgICAgaWYgZmls
ZW5hbWUuZW5kc3dpdGgoJy5jYycpIGFuZCBub3QgaGVhZGVyX2ZvdW5kOgorICAgICAgICByZXR1
cm4KKworICAgICMgQWxsIHRoZSBsaW5lcyBoYXZlIGJlZW4gcHJvY2Vzc2VkLCByZXBvcnQgdGhl
IGVycm9ycyBmb3VuZC4KKyAgICBmb3IgcmVxdWlyZWRfaGVhZGVyX3Vuc3RyaXBwZWQgaW4gcmVx
dWlyZWQ6CisgICAgICAgIHRlbXBsYXRlID0gcmVxdWlyZWRbcmVxdWlyZWRfaGVhZGVyX3Vuc3Ry
aXBwZWRdWzFdCisgICAgICAgIGlmIHRlbXBsYXRlIGluIF9IRUFERVJTX0FDQ0VQVEVEX0JVVF9O
T1RfUFJPTU9URUQ6CisgICAgICAgICAgICBoZWFkZXJzID0gX0hFQURFUlNfQUNDRVBURURfQlVU
X05PVF9QUk9NT1RFRFt0ZW1wbGF0ZV0KKyAgICAgICAgICAgIGlmIFtUcnVlIGZvciBoZWFkZXIg
aW4gaGVhZGVycyBpZiBoZWFkZXIgaW4gaW5jbHVkZV9zdGF0ZV06CisgICAgICAgICAgICAgICAg
Y29udGludWUKKyAgICAgICAgaWYgcmVxdWlyZWRfaGVhZGVyX3Vuc3RyaXBwZWQuc3RyaXAoJzw+
IicpIG5vdCBpbiBpbmNsdWRlX3N0YXRlOgorICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIHJl
cXVpcmVkW3JlcXVpcmVkX2hlYWRlcl91bnN0cmlwcGVkXVswXSwKKyAgICAgICAgICAgICAgICAg
ICdidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZScsIDQsCisgICAgICAgICAgICAgICAgICAnQWRk
ICNpbmNsdWRlICcgKyByZXF1aXJlZF9oZWFkZXJfdW5zdHJpcHBlZCArICcgZm9yICcgKyB0ZW1w
bGF0ZSkKKworCitkZWYgcHJvY2Vzc19saW5lKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwKKyAg
ICAgICAgICAgICAgICAgY2xlYW5fbGluZXMsIGxpbmUsIGluY2x1ZGVfc3RhdGUsIGZ1bmN0aW9u
X3N0YXRlLAorICAgICAgICAgICAgICAgICBjbGFzc19zdGF0ZSwgZXJyb3IpOgorICAgICIiIlBy
b2Nlc3NlcyBhIHNpbmdsZSBsaW5lIGluIHRoZSBmaWxlLgorCisgICAgQXJnczoKKyAgICAgIGZp
bGVuYW1lOiBGaWxlbmFtZSBvZiB0aGUgZmlsZSB0aGF0IGlzIGJlaW5nIHByb2Nlc3NlZC4KKyAg
ICAgIGZpbGVfZXh0ZW5zaW9uOiBUaGUgZXh0ZW5zaW9uIChkb3Qgbm90IGluY2x1ZGVkKSBvZiB0
aGUgZmlsZS4KKyAgICAgIGNsZWFuX2xpbmVzOiBBbiBhcnJheSBvZiBzdHJpbmdzLCBlYWNoIHJl
cHJlc2VudGluZyBhIGxpbmUgb2YgdGhlIGZpbGUsCisgICAgICAgICAgICAgICAgICAgd2l0aCBj
b21tZW50cyBzdHJpcHBlZC4KKyAgICAgIGxpbmU6IE51bWJlciBvZiBsaW5lIGJlaW5nIHByb2Nl
c3NlZC4KKyAgICAgIGluY2x1ZGVfc3RhdGU6IEFuIF9JbmNsdWRlU3RhdGUgaW5zdGFuY2UgaW4g
d2hpY2ggdGhlIGhlYWRlcnMgYXJlIGluc2VydGVkLgorICAgICAgZnVuY3Rpb25fc3RhdGU6IEEg
X0Z1bmN0aW9uU3RhdGUgaW5zdGFuY2Ugd2hpY2ggY291bnRzIGZ1bmN0aW9uIGxpbmVzLCBldGMu
CisgICAgICBjbGFzc19zdGF0ZTogQSBfQ2xhc3NTdGF0ZSBpbnN0YW5jZSB3aGljaCBtYWludGFp
bnMgaW5mb3JtYXRpb24gYWJvdXQKKyAgICAgICAgICAgICAgICAgICB0aGUgY3VycmVudCBzdGFj
ayBvZiBuZXN0ZWQgY2xhc3MgZGVjbGFyYXRpb25zIGJlaW5nIHBhcnNlZC4KKyAgICAgIGVycm9y
OiBBIGNhbGxhYmxlIHRvIHdoaWNoIGVycm9ycyBhcmUgcmVwb3J0ZWQsIHdoaWNoIHRha2VzIDQg
YXJndW1lbnRzOgorICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgZXJyb3IgbGV2
ZWwsIGFuZCBtZXNzYWdlCisKKyAgICAiIiIKKyAgICByYXdfbGluZXMgPSBjbGVhbl9saW5lcy5y
YXdfbGluZXMKKyAgICBjaGVja19mb3JfZnVuY3Rpb25fbGVuZ3RocyhmaWxlbmFtZSwgY2xlYW5f
bGluZXMsIGxpbmUsIGZ1bmN0aW9uX3N0YXRlLCBlcnJvcikKKyAgICBpZiBzZWFyY2gocidcYk5P
TElOVFxiJywgcmF3X2xpbmVzW2xpbmVdKTogICMgaWdub3JlIG5vbGludCBsaW5lcworICAgICAg
ICByZXR1cm4KKyAgICBjaGVja19mb3JfbXVsdGlsaW5lX2NvbW1lbnRzX2FuZF9zdHJpbmdzKGZp
bGVuYW1lLCBjbGVhbl9saW5lcywgbGluZSwgZXJyb3IpCisgICAgY2hlY2tfc3R5bGUoZmlsZW5h
bWUsIGNsZWFuX2xpbmVzLCBsaW5lLCBmaWxlX2V4dGVuc2lvbiwgZXJyb3IpCisgICAgY2hlY2tf
bGFuZ3VhZ2UoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lLCBmaWxlX2V4dGVuc2lvbiwgaW5j
bHVkZV9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICBlcnJvcikKKyAgICBjaGVja19mb3Jfbm9u
X3N0YW5kYXJkX2NvbnN0cnVjdHMoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc19zdGF0ZSwgZXJyb3IpCisgICAg
Y2hlY2tfcG9zaXhfdGhyZWFkaW5nKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZSwgZXJyb3Ip
CisgICAgY2hlY2tfaW52YWxpZF9pbmNyZW1lbnQoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5l
LCBlcnJvcikKKworCitkZWYgcHJvY2Vzc19maWxlX2RhdGEoZmlsZW5hbWUsIGZpbGVfZXh0ZW5z
aW9uLCBsaW5lcywgZXJyb3IpOgorICAgICIiIlBlcmZvcm1zIGxpbnQgY2hlY2tzIGFuZCByZXBv
cnRzIGFueSBlcnJvcnMgdG8gdGhlIGdpdmVuIGVycm9yIGZ1bmN0aW9uLgorCisgICAgQXJnczoK
KyAgICAgIGZpbGVuYW1lOiBGaWxlbmFtZSBvZiB0aGUgZmlsZSB0aGF0IGlzIGJlaW5nIHByb2Nl
c3NlZC4KKyAgICAgIGZpbGVfZXh0ZW5zaW9uOiBUaGUgZXh0ZW5zaW9uIChkb3Qgbm90IGluY2x1
ZGVkKSBvZiB0aGUgZmlsZS4KKyAgICAgIGxpbmVzOiBBbiBhcnJheSBvZiBzdHJpbmdzLCBlYWNo
IHJlcHJlc2VudGluZyBhIGxpbmUgb2YgdGhlIGZpbGUsIHdpdGggdGhlCisgICAgICAgICAgICAg
bGFzdCBlbGVtZW50IGJlaW5nIGVtcHR5IGlmIHRoZSBmaWxlIGlzIHRlcm1pbmVkIHdpdGggYSBu
ZXdsaW5lLgorICAgICAgZXJyb3I6IEEgY2FsbGFibGUgdG8gd2hpY2ggZXJyb3JzIGFyZSByZXBv
cnRlZCwgd2hpY2ggdGFrZXMgNCBhcmd1bWVudHM6CisgICAgIiIiCisgICAgbGluZXMgPSAoWycv
LyBtYXJrZXIgc28gbGluZSBudW1iZXJzIGFuZCBpbmRpY2VzIGJvdGggc3RhcnQgYXQgMSddICsg
bGluZXMgKworICAgICAgICAgICAgIFsnLy8gbWFya2VyIHNvIGxpbmUgbnVtYmVycyBlbmQgaW4g
YSBrbm93biB3YXknXSkKKworICAgIGluY2x1ZGVfc3RhdGUgPSBfSW5jbHVkZVN0YXRlKCkKKyAg
ICBmdW5jdGlvbl9zdGF0ZSA9IF9GdW5jdGlvblN0YXRlKCkKKyAgICBjbGFzc19zdGF0ZSA9IF9D
bGFzc1N0YXRlKCkKKworICAgIGNoZWNrX2Zvcl9jb3B5cmlnaHQoZmlsZW5hbWUsIGxpbmVzLCBl
cnJvcikKKworICAgIGlmIGZpbGVfZXh0ZW5zaW9uID09ICdoJzoKKyAgICAgICAgY2hlY2tfZm9y
X2hlYWRlcl9ndWFyZChmaWxlbmFtZSwgbGluZXMsIGVycm9yKQorCisgICAgcmVtb3ZlX211bHRp
X2xpbmVfY29tbWVudHMoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcikKKyAgICBjbGVhbl9saW5lcyA9
IENsZWFuc2VkTGluZXMobGluZXMpCisgICAgZm9yIGxpbmUgaW4geHJhbmdlKGNsZWFuX2xpbmVz
Lm51bV9saW5lcygpKToKKyAgICAgICAgcHJvY2Vzc19saW5lKGZpbGVuYW1lLCBmaWxlX2V4dGVu
c2lvbiwgY2xlYW5fbGluZXMsIGxpbmUsCisgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX3N0
YXRlLCBmdW5jdGlvbl9zdGF0ZSwgY2xhc3Nfc3RhdGUsIGVycm9yKQorICAgIGNsYXNzX3N0YXRl
LmNoZWNrX2ZpbmlzaGVkKGZpbGVuYW1lLCBlcnJvcikKKworICAgIGNoZWNrX2Zvcl9pbmNsdWRl
X3doYXRfeW91X3VzZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGluY2x1ZGVfc3RhdGUsIGVycm9y
KQorCisgICAgIyBXZSBjaGVjayBoZXJlIHJhdGhlciB0aGFuIGluc2lkZSBwcm9jZXNzX2xpbmUg
c28gdGhhdCB3ZSBzZWUgcmF3CisgICAgIyBsaW5lcyByYXRoZXIgdGhhbiAiY2xlYW5lZCIgbGlu
ZXMuCisgICAgY2hlY2tfZm9yX3VuaWNvZGVfcmVwbGFjZW1lbnRfY2hhcmFjdGVycyhmaWxlbmFt
ZSwgbGluZXMsIGVycm9yKQorCisgICAgY2hlY2tfZm9yX25ld19saW5lX2F0X2VvZihmaWxlbmFt
ZSwgbGluZXMsIGVycm9yKQorCisKK2RlZiBwcm9jZXNzX2ZpbGUoZmlsZW5hbWUsIHZsZXZlbCk6
CisgICAgIiIiRG9lcyBnb29nbGUtbGludCBvbiBhIHNpbmdsZSBmaWxlLgorCisgICAgQXJnczoK
KyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgZmlsZSB0byBwYXJzZS4KKworICAgICAg
dmxldmVsOiBUaGUgbGV2ZWwgb2YgZXJyb3JzIHRvIHJlcG9ydC4gIEV2ZXJ5IGVycm9yIG9mIGNv
bmZpZGVuY2UKKyAgICAgID49IHZlcmJvc2VfbGV2ZWwgd2lsbCBiZSByZXBvcnRlZC4gIDAgaXMg
YSBnb29kIGRlZmF1bHQuCisgICAgIiIiCisKKyAgICBfc2V0X3ZlcmJvc2VfbGV2ZWwodmxldmVs
KQorCisgICAgdHJ5OgorICAgICAgICAjIFN1cHBvcnQgdGhlIFVOSVggY29udmVudGlvbiBvZiB1
c2luZyAiLSIgZm9yIHN0ZGluLiAgTm90ZSB0aGF0CisgICAgICAgICMgd2UgYXJlIG5vdCBvcGVu
aW5nIHRoZSBmaWxlIHdpdGggdW5pdmVyc2FsIG5ld2xpbmUgc3VwcG9ydAorICAgICAgICAjICh3
aGljaCBjb2RlY3MgZG9lc24ndCBzdXBwb3J0IGFueXdheSksIHNvIHRoZSByZXN1bHRpbmcgbGlu
ZXMgZG8KKyAgICAgICAgIyBjb250YWluIHRyYWlsaW5nICdccicgY2hhcmFjdGVycyBpZiB3ZSBh
cmUgcmVhZGluZyBhIGZpbGUgdGhhdAorICAgICAgICAjIGhhcyBDUkxGIGVuZGluZ3MuCisgICAg
ICAgICMgSWYgYWZ0ZXIgdGhlIHNwbGl0IGEgdHJhaWxpbmcgJ1xyJyBpcyBwcmVzZW50LCBpdCBp
cyByZW1vdmVkCisgICAgICAgICMgYmVsb3cuIElmIGl0IGlzIG5vdCBleHBlY3RlZCB0byBiZSBw
cmVzZW50IChpLmUuIG9zLmxpbmVzZXAgIT0KKyAgICAgICAgIyAnXHJcbicgYXMgaW4gV2luZG93
cyksIGEgd2FybmluZyBpcyBpc3N1ZWQgYmVsb3cgaWYgdGhpcyBmaWxlCisgICAgICAgICMgaXMg
cHJvY2Vzc2VkLgorCisgICAgICAgIGlmIGZpbGVuYW1lID09ICctJzoKKyAgICAgICAgICAgIGxp
bmVzID0gY29kZWNzLlN0cmVhbVJlYWRlcldyaXRlcihzeXMuc3RkaW4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHJlYWRlcigndXRmOCcp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5n
ZXR3cml0ZXIoJ3V0ZjgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAncmVwbGFjZScpLnJlYWQoKS5zcGxpdCgnXG4nKQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgbGluZXMgPSBjb2RlY3Mub3BlbihmaWxlbmFtZSwgJ3InLCAndXRmOCcsICdyZXBs
YWNlJykucmVhZCgpLnNwbGl0KCdcbicpCisKKyAgICAgICAgY2FycmlhZ2VfcmV0dXJuX2ZvdW5k
ID0gRmFsc2UKKyAgICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgJ1xyJy4KKyAgICAgICAgZm9yIGxp
bmVfbnVtYmVyIGluIHJhbmdlKGxlbihsaW5lcykpOgorICAgICAgICAgICAgaWYgbGluZXNbbGlu
ZV9udW1iZXJdLmVuZHN3aXRoKCdccicpOgorICAgICAgICAgICAgICAgIGxpbmVzW2xpbmVfbnVt
YmVyXSA9IGxpbmVzW2xpbmVfbnVtYmVyXS5yc3RyaXAoJ1xyJykKKyAgICAgICAgICAgICAgICBj
YXJyaWFnZV9yZXR1cm5fZm91bmQgPSBUcnVlCisKKyAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAg
ICAgc3lzLnN0ZGVyci53cml0ZSgKKyAgICAgICAgICAgICJTa2lwcGluZyBpbnB1dCAnJXMnOiBD
YW4ndCBvcGVuIGZvciByZWFkaW5nXG4iICUgZmlsZW5hbWUpCisgICAgICAgIHJldHVybgorCisg
ICAgIyBOb3RlLCBpZiBubyBkb3QgaXMgZm91bmQsIHRoaXMgd2lsbCBnaXZlIHRoZSBlbnRpcmUg
ZmlsZW5hbWUgYXMgdGhlIGV4dC4KKyAgICBmaWxlX2V4dGVuc2lvbiA9IGZpbGVuYW1lW2ZpbGVu
YW1lLnJmaW5kKCcuJykgKyAxOl0KKworICAgICMgV2hlbiByZWFkaW5nIGZyb20gc3RkaW4sIHRo
ZSBleHRlbnNpb24gaXMgdW5rbm93biwgc28gbm8gY3BwbGludCB0ZXN0cworICAgICMgc2hvdWxk
IHJlbHkgb24gdGhlIGV4dGVuc2lvbi4KKyAgICBpZiAoZmlsZW5hbWUgIT0gJy0nIGFuZCBmaWxl
X2V4dGVuc2lvbiAhPSAnY2MnIGFuZCBmaWxlX2V4dGVuc2lvbiAhPSAnaCcKKyAgICAgICAgYW5k
IGZpbGVfZXh0ZW5zaW9uICE9ICdjcHAnKToKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnSWdu
b3JpbmcgJXM7IG5vdCBhIC5jYyBvciAuaCBmaWxlXG4nICUgZmlsZW5hbWUpCisgICAgZWxzZToK
KyAgICAgICAgcHJvY2Vzc19maWxlX2RhdGEoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLCBsaW5l
cywgZXJyb3IpCisgICAgICAgIGlmIGNhcnJpYWdlX3JldHVybl9mb3VuZCBhbmQgb3MubGluZXNl
cCAhPSAnXHJcbic6CisgICAgICAgICAgICAjIFVzZSAwIGZvciBsaW5lX251bWJlciBzaW5jZSBv
dXRwdXRpbmcgb25seSBvbmUgZXJyb3IgZm9yIHBvdGVudGlhbGx5CisgICAgICAgICAgICAjIHNl
dmVyYWwgbGluZXMuCisgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgMCwgJ3doaXRlc3BhY2Uv
bmV3bGluZScsIDEsCisgICAgICAgICAgICAgICAgICAnT25lIG9yIG1vcmUgdW5leHBlY3RlZCBc
XHIgKF5NKSBmb3VuZDsnCisgICAgICAgICAgICAgICAgICAnYmV0dGVyIHRvIHVzZSBvbmx5IGEg
XFxuJykKKworICAgIHN5cy5zdGRlcnIud3JpdGUoJ0RvbmUgcHJvY2Vzc2luZyAlc1xuJyAlIGZp
bGVuYW1lKQorCisKK2RlZiBwcmludF91c2FnZShtZXNzYWdlKToKKyAgICAiIiJQcmludHMgYSBi
cmllZiB1c2FnZSBzdHJpbmcgYW5kIGV4aXRzLCBvcHRpb25hbGx5IHdpdGggYW4gZXJyb3IgbWVz
c2FnZS4KKworICAgIEFyZ3M6CisgICAgICBtZXNzYWdlOiBUaGUgb3B0aW9uYWwgZXJyb3IgbWVz
c2FnZS4KKyAgICAiIiIKKyAgICBzeXMuc3RkZXJyLndyaXRlKF9VU0FHRSkKKyAgICBpZiBtZXNz
YWdlOgorICAgICAgICBzeXMuZXhpdCgnXG5GQVRBTCBFUlJPUjogJyArIG1lc3NhZ2UpCisgICAg
ZWxzZToKKyAgICAgICAgc3lzLmV4aXQoMSkKKworCitkZWYgcHJpbnRfY2F0ZWdvcmllcygpOgor
ICAgICIiIlByaW50cyBhIGxpc3Qgb2YgYWxsIHRoZSBlcnJvci1jYXRlZ29yaWVzIHVzZWQgYnkg
ZXJyb3IgbWVzc2FnZXMuCisKKyAgICBUaGVzZSBhcmUgdGhlIGNhdGVnb3JpZXMgdXNlZCB0byBm
aWx0ZXIgbWVzc2FnZXMgdmlhIC0tZmlsdGVyLgorICAgICIiIgorICAgIHN5cy5zdGRlcnIud3Jp
dGUoX0VSUk9SX0NBVEVHT1JJRVMpCisgICAgc3lzLmV4aXQoMCkKKworCitkZWYgcGFyc2VfYXJn
dW1lbnRzKGFyZ3MpOgorICAgICIiIlBhcnNlcyB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4K
KworICAgIFRoaXMgbWF5IHNldCB0aGUgb3V0cHV0IGZvcm1hdCBhbmQgdmVyYm9zaXR5IGxldmVs
IGFzIHNpZGUtZWZmZWN0cy4KKworICAgIEFyZ3M6CisgICAgICBhcmdzOiBUaGUgY29tbWFuZCBs
aW5lIGFyZ3VtZW50czoKKworICAgIFJldHVybnM6CisgICAgICBUaGUgbGlzdCBvZiBmaWxlbmFt
ZXMgdG8gbGludC4KKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIChvcHRzLCBmaWxlbmFtZXMp
ID0gZ2V0b3B0LmdldG9wdChhcmdzLCAnJywgWydoZWxwJywgJ291dHB1dD0nLCAndmVyYm9zZT0n
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
ZmlsdGVyPSddKQorICAgIGV4Y2VwdCBnZXRvcHQuR2V0b3B0RXJyb3I6CisgICAgICAgIHByaW50
X3VzYWdlKCdJbnZhbGlkIGFyZ3VtZW50cy4nKQorCisgICAgdmVyYm9zaXR5ID0gX3ZlcmJvc2Vf
bGV2ZWwoKQorICAgIG91dHB1dF9mb3JtYXQgPSBfb3V0cHV0X2Zvcm1hdCgpCisgICAgZmlsdGVy
cyA9ICcnCisKKyAgICBmb3IgKG9wdCwgdmFsKSBpbiBvcHRzOgorICAgICAgICBpZiBvcHQgPT0g
Jy0taGVscCc6CisgICAgICAgICAgICBwcmludF91c2FnZShOb25lKQorICAgICAgICBlbGlmIG9w
dCA9PSAnLS1vdXRwdXQnOgorICAgICAgICAgICAgaWYgbm90IHZhbCBpbiAoJ2VtYWNzJywgJ3Zz
NycpOgorICAgICAgICAgICAgICAgIHByaW50X3VzYWdlKCdUaGUgb25seSBhbGxvd2VkIG91dHB1
dCBmb3JtYXRzIGFyZSBlbWFjcyBhbmQgdnM3LicpCisgICAgICAgICAgICBvdXRwdXRfZm9ybWF0
ID0gdmFsCisgICAgICAgIGVsaWYgb3B0ID09ICctLXZlcmJvc2UnOgorICAgICAgICAgICAgdmVy
Ym9zaXR5ID0gaW50KHZhbCkKKyAgICAgICAgZWxpZiBvcHQgPT0gJy0tZmlsdGVyJzoKKyAgICAg
ICAgICAgIGZpbHRlcnMgPSB2YWwKKyAgICAgICAgICAgIGlmIG5vdCBmaWx0ZXJzOgorICAgICAg
ICAgICAgICAgIHByaW50X2NhdGVnb3JpZXMoKQorCisgICAgaWYgbm90IGZpbGVuYW1lczoKKyAg
ICAgICAgcHJpbnRfdXNhZ2UoJ05vIGZpbGVzIHdlcmUgc3BlY2lmaWVkLicpCisKKyAgICBfc2V0
X291dHB1dF9mb3JtYXQob3V0cHV0X2Zvcm1hdCkKKyAgICBfc2V0X3ZlcmJvc2VfbGV2ZWwodmVy
Ym9zaXR5KQorICAgIF9zZXRfZmlsdGVycyhmaWx0ZXJzKQorCisgICAgcmV0dXJuIGZpbGVuYW1l
cworCisKK2RlZiB1c2Vfd2Via2l0X3N0eWxlcygpOgorICAgICIiIkRpc2FibGVzIHNvbWUgZmVh
dHVyZXMgd2hpY2ggYXJlIG5vdCBzdWl0YWJsZSBmb3IgV2ViS2l0LiIiIgorICAgICMgRklYTUU6
IEZvciBmaWx0ZXJzIHdlIHdpbGwgbmV2ZXIgd2FudCB0byBoYXZlLCByZW1vdmUgdGhlbS4KKyAg
ICAjICAgICAgICBGb3IgZmlsdGVycyB3ZSB3YW50IHRvIGhhdmUgc2ltaWxhciBmdW5jdGlvbmFs
aXRpZXMsCisgICAgIyAgICAgICAgbW9kaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgZW5hYmxl
IHRoZW0uCisgICAgZ2xvYmFsIF9ERUZBVUxUX0ZJTFRFUlMKKyAgICBfREVGQVVMVF9GSUxURVJT
ID0gWworICAgICAgICAnLXdoaXRlc3BhY2UvZW5kX29mX2xpbmUnLAorICAgICAgICAnLXdoaXRl
c3BhY2UvY29tbWVudHMnLAorICAgICAgICAnLXdoaXRlc3BhY2UvYmxhbmtfbGluZScsCisgICAg
ICAgICctd2hpdGVzcGFjZS9uZXdsaW5lJywgICMgJ1xyJworICAgICAgICAnLXJ1bnRpbWUvZXhw
bGljaXQnLCAgIyBleHBsaWNpdAorICAgICAgICAnLXJ1bnRpbWUvdmlydHVhbCcsICAjIHZpcnR1
YWwgZHRvcgorICAgICAgICAnLXJ1bnRpbWUvcHJpbnRmJywKKyAgICAgICAgJy1ydW50aW1lL3Ro
cmVhZHNhZmVfZm4nLAorICAgICAgICAnLXJ1bnRpbWUvcnR0aScsCisgICAgICAgICctYnVpbGQv
aW5jbHVkZV93aGF0X3lvdV91c2UnLCAgIyA8c3RyaW5nPiBmb3Igc3RkOjpzdHJpbmcKKyAgICAg
ICAgJy1sZWdhbC9jb3B5cmlnaHQnLAorICAgICAgICAnLXJlYWRhYmlsaXR5L211bHRpbGluZV9j
b21tZW50JywKKyAgICAgICAgJy1yZWFkYWJpbGl0eS9icmFjZXMnLCAgIyBpbnQgZm9vKCkge307
CisgICAgICAgICctcmVhZGFiaWxpdHkvZm5fc2l6ZScsCisgICAgICAgICctYnVpbGQvc3RvcmFn
ZV9jbGFzcycsICAjIGNvbnN0IHN0YXRpYworICAgICAgICAnLWJ1aWxkL2luY2x1ZGVfb3JkZXIn
LAorICAgICAgICAnLWJ1aWxkL2luY2x1ZGUnLAorICAgICAgICAnLWJ1aWxkL2VuZGlmX2NvbW1l
bnQnLAorICAgICAgICAnLXdoaXRlc3BhY2UvbGFiZWxzJywKKyAgICAgICAgJy1ydW50aW1lL2Fy
cmF5cycsICAjIHZhcmlhYmxlIGxlbmd0aCBhcnJheQorICAgICAgICAnLWJ1aWxkL2hlYWRlcl9n
dWFyZCcsCisgICAgICAgICctcmVhZGFiaWxpdHkvY2FzdGluZycsCisgICAgICAgICctcmVhZGFi
aWxpdHkvZnVuY3Rpb24nLAorICAgICAgICAnLXJ1bnRpbWUvY2FzdGluZycsCisgICAgICAgICct
cnVudGltZS9zaXplb2YnLAorICAgIF0KKworCitkZWYgbWFpbigpOgorICAgIHN5cy5zdGRlcnIu
d3JpdGUoCisgICAgICAgICcnJyoqKioqKioqKioqKioqKioqKioqKiBXQVJOSU5HIFdBUk5JTkcg
V0FSTklORyAqKioqKioqKioqKioqKioqKioqKioKKworVGhpcyB0b29sIGlzIGluIHRoZSBwcm9j
ZXNzIG9mIGRldmVsb3BtZW50IGFuZCBtYXkgZ2l2ZSBpbmFjY3VyYXRlCityZXN1bHRzIGF0IHBy
ZXNlbnQuICBQbGVhc2UgZmlsZSBidWdzIChhbmQvb3IgcGF0Y2hlcykgZm9yIHRoaW5ncwordGhh
dCB5b3Ugbm90aWNlIHRoYXQgaXQgZmxhZ3MgaW5jb3JyZWN0bHkuCisKKyoqKioqKioqKioqKioq
KioqKioqKiBXQVJOSU5HIFdBUk5JTkcgV0FSTklORyAqKioqKioqKioqKioqKioqKioqKioKKwor
JycnKQorCisgICAgdXNlX3dlYmtpdF9zdHlsZXMoKQorCisgICAgZmlsZW5hbWVzID0gcGFyc2Vf
YXJndW1lbnRzKHN5cy5hcmd2WzE6XSkKKworICAgICMgQ2hhbmdlIHN0ZGVyciB0byB3cml0ZSB3
aXRoIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgc28gd2UgZG9uJ3QgZGllCisgICAgIyBpZiB3ZSB0
cnkgdG8gcHJpbnQgc29tZXRoaW5nIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCisg
ICAgc3lzLnN0ZGVyciA9IGNvZGVjcy5TdHJlYW1SZWFkZXJXcml0ZXIoc3lzLnN0ZGVyciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0cmVhZGVy
KCd1dGY4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29k
ZWNzLmdldHdyaXRlcigndXRmOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdyZXBsYWNlJykKKworICAgIF9jcHBsaW50X3N0YXRlLnJlc2V0X2Vycm9yX2Nv
dW50KCkKKyAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgorICAgICAgICBwcm9jZXNzX2Zp
bGUoZmlsZW5hbWUsIF9jcHBsaW50X3N0YXRlLnZlcmJvc2VfbGV2ZWwpCisgICAgc3lzLnN0ZGVy
ci53cml0ZSgnVG90YWwgZXJyb3JzIGZvdW5kOiAlZFxuJyAlIF9jcHBsaW50X3N0YXRlLmVycm9y
X2NvdW50KQorICAgIHN5cy5leGl0KF9jcHBsaW50X3N0YXRlLmVycm9yX2NvdW50ID4gMCkKKwor
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnRfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL21vZHVsZXMvY3BwbGludF91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xMDYzMmE3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9tb2R1bGVzL2NwcGxpbnRfdW5pdHRlc3QucHkKQEAgLTAsMCArMSwyOTUwIEBACisj
IS91c3IvYmluL3B5dGhvbgorIyAtKi0gY29kaW5nOiB1dGYtODsgLSotCisjCisjIENvcHlyaWdo
dCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisj
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworIiIiVW5pdCB0ZXN0IGZvciBjcHBsaW50LnB5LiIiIgorCisjIEZJWE1FOiBBZGQgYSBn
b29kIHRlc3QgdGhhdCB0ZXN0cyBVcGRhdGVJbmNsdWRlU3RhdGUuCisKK2ltcG9ydCBjb2RlY3MK
K2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitpbXBvcnQgdW5pdHRlc3QKK2lt
cG9ydCBjcHBsaW50CisKKworIyBUaGlzIGNsYXNzIHdvcmtzIGFzIGFuIGVycm9yIGNvbGxlY3Rv
ciBhbmQgcmVwbGFjZXMgY3BwbGludC5FcnJvcgorIyBmdW5jdGlvbiBmb3IgdGhlIHVuaXQgdGVz
dHMuICBXZSBhbHNvIHZlcmlmeSBlYWNoIGNhdGVnb3J5IHdlIHNlZQorIyBpcyBpbiBjcHBsaW50
Ll9FUlJPUl9DQVRFR09SSUVTLCB0byBoZWxwIGtlZXAgdGhhdCBsaXN0IHVwIHRvIGRhdGUuCitj
bGFzcyBFcnJvckNvbGxlY3RvcjoKKyAgICAjIFRoZXNlIGFyZSBhIGdsb2JhbCBsaXN0LCBjb3Zl
cmluZyBhbGwgY2F0ZWdvcmllcyBzZWVuIGV2ZXIuCisgICAgX0VSUk9SX0NBVEVHT1JJRVMgPSBb
eC5zdHJpcCgpICAgICMgZ2V0IHJpZCBvZiBsZWFkaW5nIHdoaXRlc3BhY2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgeCBpbiBjcHBsaW50Ll9FUlJPUl9DQVRFR09SSUVTLnNwbGl0KCld
CisgICAgX1NFRU5fRVJST1JfQ0FURUdPUklFUyA9IHt9CisKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgYXNzZXJ0X2ZuKToKKyAgICAgICAgIiIiYXNzZXJ0X2ZuOiBhIGZ1bmN0aW9uIHRvIGNhbGwg
d2hlbiB3ZSBub3RpY2UgYSBwcm9ibGVtLiIiIgorICAgICAgICBzZWxmLl9hc3NlcnRfZm4gPSBh
c3NlcnRfZm4KKyAgICAgICAgc2VsZi5fZXJyb3JzID0gW10KKworICAgIGRlZiBfX2NhbGxfXyhz
ZWxmLCB1bnVzZWRfZmlsZW5hbWUsIHVudXNlZF9saW5lbnVtLAorICAgICAgICAgICAgICAgICBj
YXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSk6CisgICAgICAgIHNlbGYuX2Fzc2VydF9mbihj
YXRlZ29yeSBpbiBzZWxmLl9FUlJPUl9DQVRFR09SSUVTLAorICAgICAgICAgICAgICAgICAgICAg
ICAgJ01lc3NhZ2UgIiVzIiBoYXMgY2F0ZWdvcnkgIiVzIiwnCisgICAgICAgICAgICAgICAgICAg
ICAgICAnIHdoaWNoIGlzIG5vdCBpbiBfRVJST1JfQ0FURUdPUklFUycgJSAobWVzc2FnZSwgY2F0
ZWdvcnkpKQorICAgICAgICBzZWxmLl9TRUVOX0VSUk9SX0NBVEVHT1JJRVNbY2F0ZWdvcnldID0g
MQorICAgICAgICBpZiBjcHBsaW50Ll9zaG91bGRfcHJpbnRfZXJyb3IoY2F0ZWdvcnksIGNvbmZp
ZGVuY2UpOgorICAgICAgICAgICAgc2VsZi5fZXJyb3JzLmFwcGVuZCgnJXMgIFslc10gWyVkXScg
JSAobWVzc2FnZSwgY2F0ZWdvcnksIGNvbmZpZGVuY2UpKQorCisgICAgZGVmIHJlc3VsdHMoc2Vs
Zik6CisgICAgICAgIGlmIGxlbihzZWxmLl9lcnJvcnMpIDwgMjoKKyAgICAgICAgICAgIHJldHVy
biAnJy5qb2luKHNlbGYuX2Vycm9ycykgICMgTW9zdCB0ZXN0cyBleHBlY3QgdG8gaGF2ZSBhIHN0
cmluZy4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9lcnJvcnMgICMg
TGV0J3MgZ2l2ZSBhIGxpc3QgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZS4KKworICAgIGRlZiBy
ZXN1bHRfbGlzdChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Vycm9ycworCisgICAgZGVm
IHZlcmlmeV9hbGxfY2F0ZWdvcmllc19hcmVfc2VlbihzZWxmKToKKyAgICAgICAgIiIiRmFpbHMg
aWYgdGhlcmUncyBhIGNhdGVnb3J5IGluIF9FUlJPUl9DQVRFR09SSUVTIC0gX1NFRU5fRVJST1Jf
Q0FURUdPUklFUy4KKworICAgICAgICBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBh
bGwgdGVzdHMgYXJlIHJ1biwgc28KKyAgICAgICAgX1NFRU5fRVJST1JfQ0FURUdPUklFUyBoYXMg
aGFkIGEgY2hhbmNlIHRvIGZ1bGx5IHBvcHVsYXRlLiAgU2luY2UKKyAgICAgICAgdGhpcyBpc24n
dCBjYWxsZWQgZnJvbSB3aXRoaW4gdGhlIG5vcm1hbCB1bml0dGVzdCBmcmFtZXdvcmssIHdlCisg
ICAgICAgIGNhbid0IHVzZSB0aGUgbm9ybWFsIHVuaXR0ZXN0IGFzc2VydCBtYWNyb3MuICBJbnN0
ZWFkIHdlIGp1c3QgZXhpdAorICAgICAgICB3aGVuIHdlIHNlZSBhbiBlcnJvci4gIEdvb2QgdGhp
bmcgdGhpcyB0ZXN0IGlzIGFsd2F5cyBydW4gbGFzdCEKKyAgICAgICAgIiIiCisgICAgICAgIGZv
ciBjYXRlZ29yeSBpbiBzZWxmLl9FUlJPUl9DQVRFR09SSUVTOgorICAgICAgICAgICAgaWYgY2F0
ZWdvcnkgbm90IGluIHNlbGYuX1NFRU5fRVJST1JfQ0FURUdPUklFUzoKKyAgICAgICAgICAgICAg
ICBpbXBvcnQgc3lzCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoJ0ZBVEFMIEVSUk9SOiBUaGVy
ZSBhcmUgbm8gdGVzdHMgZm9yIGNhdGVnb3J5ICIlcyInICUgY2F0ZWdvcnkpCisKKyAgICBkZWYg
cmVtb3ZlX2lmX3ByZXNlbnQoc2VsZiwgc3Vic3RyKToKKyAgICAgICAgZm9yIChpbmRleCwgZXJy
b3IpIGluIGVudW1lcmF0ZShzZWxmLl9lcnJvcnMpOgorICAgICAgICAgICAgaWYgZXJyb3IuZmlu
ZChzdWJzdHIpICE9IC0xOgorICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9ycyA9IHNlbGYuX2Vy
cm9yc1swOmluZGV4XSArIHNlbGYuX2Vycm9yc1soaW5kZXggKyAxKTpdCisgICAgICAgICAgICAg
ICAgYnJlYWsKKworCisjIFRoaXMgY2xhc3MgaXMgYSBsYW1lIG1vY2sgb2YgY29kZWNzLiBXZSBk
byBub3QgdmVyaWZ5IGZpbGVuYW1lLCBtb2RlLCBvcgorIyBlbmNvZGluZywgYnV0IGZvciB0aGUg
Y3VycmVudCB1c2UgY2FzZSBpdCBpcyBub3QgbmVlZGVkLgorY2xhc3MgTW9ja0lvOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBtb2NrX2ZpbGUpOgorICAgICAgICBzZWxmLm1vY2tfZmlsZSA9IG1v
Y2tfZmlsZQorCisgICAgZGVmIG9wZW4oc2VsZiwgdW51c2VkX2ZpbGVuYW1lLCB1bnVzZWRfbW9k
ZSwgdW51c2VkX2VuY29kaW5nLCBfKTogICMgTk9MSU5UCisgICAgICAgICMgKGxpbnQgZG9lc24n
dCBsaWtlIG9wZW4gYXMgYSBtZXRob2QgbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYubW9ja19m
aWxlCisKKworY2xhc3MgQ3BwbGludFRlc3RCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAi
IiJQcm92aWRlcyBzb21lIHVzZWZ1bCBoZWxwZXIgZnVuY3Rpb25zIGZvciBjcHBsaW50IHRlc3Rz
LiIiIgorCisgICAgIyBQZXJmb3JtIGxpbnQgb24gc2luZ2xlIGxpbmUgb2YgaW5wdXQgYW5kIHJl
dHVybiB0aGUgZXJyb3IgbWVzc2FnZS4KKyAgICBkZWYgcGVyZm9ybV9zaW5nbGVfbGluZV9saW50
KHNlbGYsIGNvZGUpOgorICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3Rvcihz
ZWxmLmFzc2VydF8pCisgICAgICAgIGxpbmVzID0gY29kZS5zcGxpdCgnXG4nKQorICAgICAgICBj
cHBsaW50LnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKCdmb28uaCcsIGxpbmVzLCBlcnJvcl9j
b2xsZWN0b3IpCisgICAgICAgIGNsZWFuX2xpbmVzID0gY3BwbGludC5DbGVhbnNlZExpbmVzKGxp
bmVzKQorICAgICAgICBpbmNsdWRlX3N0YXRlID0gY3BwbGludC5fSW5jbHVkZVN0YXRlKCkKKyAg
ICAgICAgZnVuY3Rpb25fc3RhdGUgPSBjcHBsaW50Ll9GdW5jdGlvblN0YXRlKCkKKyAgICAgICAg
Y2xhc3Nfc3RhdGUgPSBjcHBsaW50Ll9DbGFzc1N0YXRlKCkKKyAgICAgICAgY3BwbGludC5wcm9j
ZXNzX2xpbmUoJ2Zvby5jYycsICdjYycsIGNsZWFuX2xpbmVzLCAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmNsdWRlX3N0YXRlLCBmdW5jdGlvbl9zdGF0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xhc3Nfc3RhdGUsIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAg
IyBTaW5nbGUtbGluZSBsaW50IHRlc3RzIGFyZSBhbGxvd2VkIHRvIGZhaWwgdGhlICd1bmxpbnRh
YmxlIGZ1bmN0aW9uJworICAgICAgICAjIGNoZWNrLgorICAgICAgICBlcnJvcl9jb2xsZWN0b3Iu
cmVtb3ZlX2lmX3ByZXNlbnQoCisgICAgICAgICAgICAnTGludCBmYWlsZWQgdG8gZmluZCBzdGFy
dCBvZiBmdW5jdGlvbiBib2R5LicpCisgICAgICAgIHJldHVybiBlcnJvcl9jb2xsZWN0b3IucmVz
dWx0cygpCisKKyAgICAjIFBlcmZvcm0gbGludCBvdmVyIG11bHRpcGxlIGxpbmVzIGFuZCByZXR1
cm4gdGhlIGVycm9yIG1lc3NhZ2UuCisgICAgZGVmIHBlcmZvcm1fbXVsdGlfbGluZV9saW50KHNl
bGYsIGNvZGUpOgorICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxm
LmFzc2VydF8pCisgICAgICAgIGxpbmVzID0gY29kZS5zcGxpdCgnXG4nKQorICAgICAgICBjcHBs
aW50LnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKCdmb28uaCcsIGxpbmVzLCBlcnJvcl9jb2xs
ZWN0b3IpCisgICAgICAgIGxpbmVzID0gY3BwbGludC5DbGVhbnNlZExpbmVzKGxpbmVzKQorICAg
ICAgICBjbGFzc19zdGF0ZSA9IGNwcGxpbnQuX0NsYXNzU3RhdGUoKQorICAgICAgICBmb3IgaSBp
biB4cmFuZ2UobGluZXMubnVtX2xpbmVzKCkpOgorICAgICAgICAgICAgY3BwbGludC5jaGVja19z
dHlsZSgnZm9vLmgnLCBsaW5lcywgaSwgJ2gnLCBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgICAg
ICBjcHBsaW50LmNoZWNrX2Zvcl9ub25fc3RhbmRhcmRfY29uc3RydWN0cygnZm9vLmgnLCBsaW5l
cywgaSwgY2xhc3Nfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIGNsYXNzX3N0YXRlLmNo
ZWNrX2ZpbmlzaGVkKCdmb28uaCcsIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgcmV0dXJuIGVy
cm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkKKworICAgICMgU2ltaWxhciB0byBwZXJmb3JtX211bHRp
X2xpbmVfbGludCwgYnV0IGNhbGxzIGNoZWNrX2xhbmd1YWdlIGluc3RlYWQgb2YKKyAgICAjIGNo
ZWNrX2Zvcl9ub25fc3RhbmRhcmRfY29uc3RydWN0cworICAgIGRlZiBwZXJmb3JtX2xhbmd1YWdl
X3J1bGVzX2NoZWNrKHNlbGYsIGZpbGVfbmFtZSwgY29kZSk6CisgICAgICAgIGVycm9yX2NvbGxl
Y3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKKyAgICAgICAgaW5jbHVkZV9zdGF0
ZSA9IGNwcGxpbnQuX0luY2x1ZGVTdGF0ZSgpCisgICAgICAgIGxpbmVzID0gY29kZS5zcGxpdCgn
XG4nKQorICAgICAgICBjcHBsaW50LnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGZpbGVfbmFt
ZSwgbGluZXMsIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgbGluZXMgPSBjcHBsaW50LkNsZWFu
c2VkTGluZXMobGluZXMpCisgICAgICAgIGV4dCA9IGZpbGVfbmFtZVtmaWxlX25hbWUucmZpbmQo
Jy4nKSArIDE6XQorICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobGluZXMubnVtX2xpbmVzKCkpOgor
ICAgICAgICAgICAgY3BwbGludC5jaGVja19sYW5ndWFnZShmaWxlX25hbWUsIGxpbmVzLCBpLCBl
eHQsIGluY2x1ZGVfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy
cm9yX2NvbGxlY3RvcikKKyAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkK
KworICAgIGRlZiBwZXJmb3JtX2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soc2VsZiwgY29kZSk6Cisg
ICAgICAgICIiIlBlcmZvcm0gTGludCBmdW5jdGlvbiBsZW5ndGggY2hlY2sgb24gYmxvY2sgb2Yg
Y29kZSBhbmQgcmV0dXJuIHdhcm5pbmdzLgorCisgICAgICAgIEJ1aWxkcyB1cCBhbiBhcnJheSBv
ZiBsaW5lcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb2RlIGFuZCBzdHJpcHMgY29tbWVudHMKKyAg
ICAgICAgdXNpbmcgY3BwbGludCBmdW5jdGlvbnMuCisKKyAgICAgICAgRXN0YWJsaXNoZXMgYW4g
ZXJyb3IgY29sbGVjdG9yIGFuZCBpbnZva2VzIHRoZSBmdW5jdGlvbiBsZW5ndGggY2hlY2tpbmcK
KyAgICAgICAgZnVuY3Rpb24gZm9sbG93aW5nIGNwcGxpbnQncyBwYXR0ZXJuLgorCisgICAgICAg
IEFyZ3M6CisgICAgICAgICAgY29kZTogQysrIHNvdXJjZSBjb2RlIGV4cGVjdGVkIHRvIGdlbmVy
YXRlIGEgd2FybmluZyBtZXNzYWdlLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgVGhl
IGFjY3VtdWxhdGVkIGVycm9ycy4KKyAgICAgICAgIiIiCisgICAgICAgIGZpbGVfbmFtZSA9ICdm
b28uY2MnCisgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNz
ZXJ0XykKKyAgICAgICAgZnVuY3Rpb25fc3RhdGUgPSBjcHBsaW50Ll9GdW5jdGlvblN0YXRlKCkK
KyAgICAgICAgbGluZXMgPSBjb2RlLnNwbGl0KCdcbicpCisgICAgICAgIGNwcGxpbnQucmVtb3Zl
X211bHRpX2xpbmVfY29tbWVudHMoZmlsZV9uYW1lLCBsaW5lcywgZXJyb3JfY29sbGVjdG9yKQor
ICAgICAgICBsaW5lcyA9IGNwcGxpbnQuQ2xlYW5zZWRMaW5lcyhsaW5lcykKKyAgICAgICAgZm9y
IGkgaW4geHJhbmdlKGxpbmVzLm51bV9saW5lcygpKToKKyAgICAgICAgICAgIGNwcGxpbnQuY2hl
Y2tfZm9yX2Z1bmN0aW9uX2xlbmd0aHMoZmlsZV9uYW1lLCBsaW5lcywgaSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fc3RhdGUsIGVycm9y
X2NvbGxlY3RvcikKKyAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkKKwor
ICAgIGRlZiBwZXJmb3JtX2luY2x1ZGVfd2hhdF95b3VfdXNlKHNlbGYsIGNvZGUsIGZpbGVuYW1l
PSdmb28uaCcsIGlvPWNvZGVjcyk6CisgICAgICAgICMgRmlyc3QsIGJ1aWxkIHVwIHRoZSBpbmNs
dWRlIHN0YXRlLgorICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxm
LmFzc2VydF8pCisgICAgICAgIGluY2x1ZGVfc3RhdGUgPSBjcHBsaW50Ll9JbmNsdWRlU3RhdGUo
KQorICAgICAgICBsaW5lcyA9IGNvZGUuc3BsaXQoJ1xuJykKKyAgICAgICAgY3BwbGludC5yZW1v
dmVfbXVsdGlfbGluZV9jb21tZW50cyhmaWxlbmFtZSwgbGluZXMsIGVycm9yX2NvbGxlY3RvcikK
KyAgICAgICAgbGluZXMgPSBjcHBsaW50LkNsZWFuc2VkTGluZXMobGluZXMpCisgICAgICAgIGZv
ciBpIGluIHhyYW5nZShsaW5lcy5udW1fbGluZXMoKSk6CisgICAgICAgICAgICBjcHBsaW50LmNo
ZWNrX2xhbmd1YWdlKGZpbGVuYW1lLCBsaW5lcywgaSwgJy5oJywgaW5jbHVkZV9zdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQorICAgICAg
ICAjIFdlIGNvdWxkIGNsZWFyIHRoZSBlcnJvcl9jb2xsZWN0b3IgaGVyZSwgYnV0IHRoaXMgc2hv
dWxkCisgICAgICAgICMgYWxzbyBiZSBmaW5lLCBzaW5jZSBvdXIgSW5jbHVkZVdoYXRZb3VVc2Ug
dW5pdHRlc3RzIGRvIG5vdAorICAgICAgICAjIGhhdmUgbGFuZ3VhZ2UgcHJvYmxlbXMuCisKKyAg
ICAgICAgIyBTZWNvbmQsIGxvb2sgZm9yIG1pc3NpbmcgaW5jbHVkZXMuCisgICAgICAgIGNwcGxp
bnQuY2hlY2tfZm9yX2luY2x1ZGVfd2hhdF95b3VfdXNlKGZpbGVuYW1lLCBsaW5lcywgaW5jbHVk
ZV9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXJyb3JfY29sbGVjdG9yLCBpbykKKyAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rvci5yZXN1
bHRzKCkKKworICAgICMgUGVyZm9ybSBsaW50IGFuZCBjb21wYXJlIHRoZSBlcnJvciBtZXNzYWdl
IHdpdGggImV4cGVjdGVkX21lc3NhZ2UiLgorICAgIGRlZiBhc3NlcnRfbGludChzZWxmLCBjb2Rl
LCBleHBlY3RlZF9tZXNzYWdlKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRf
bWVzc2FnZSwgc2VsZi5wZXJmb3JtX3NpbmdsZV9saW5lX2xpbnQoY29kZSkpCisKKyAgICBkZWYg
YXNzZXJ0X211bHRpX2xpbmVfbGludChzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwgc2VsZi5wZXJmb3JtX211
bHRpX2xpbmVfbGludChjb2RlKSkKKworICAgIGRlZiBhc3NlcnRfbXVsdGlfbGluZV9saW50X3Jl
KHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2VfcmUpOgorICAgICAgICBtZXNzYWdlID0gc2Vs
Zi5wZXJmb3JtX211bHRpX2xpbmVfbGludChjb2RlKQorICAgICAgICBpZiBub3QgcmUuc2VhcmNo
KGV4cGVjdGVkX21lc3NhZ2VfcmUsIG1lc3NhZ2UpOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdN
ZXNzYWdlIHdhczpcbicgKyBtZXNzYWdlICsgJ0V4cGVjdGVkIG1hdGNoIHRvICInICsgZXhwZWN0
ZWRfbWVzc2FnZV9yZSArICciJykKKworICAgIGRlZiBhc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hl
Y2soc2VsZiwgZmlsZV9uYW1lLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5wZXJmb3JtX2xhbmd1YWdlX3J1bGVzX2NoZWNrKGZpbGVfbmFtZSwgY29kZSkpCisK
KyAgICBkZWYgYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKHNlbGYsIGNvZGUsIGV4cGVjdGVk
X21lc3NhZ2UpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZF9tZXNzYWdlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBlcmZvcm1faW5jbHVkZV93aGF0X3lvdV91
c2UoY29kZSkpCisKKyAgICBkZWYgYXNzZXJ0X2JsYW5rX2xpbmVzX2NoZWNrKHNlbGYsIGxpbmVz
LCBzdGFydF9lcnJvcnMsIGVuZF9lcnJvcnMpOgorICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBF
cnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisgICAgICAgIGNwcGxpbnQucHJvY2Vzc19maWxl
X2RhdGEoJ2Zvby5jYycsICdjYycsIGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKAorICAgICAgICAgICAgc3RhcnRfZXJyb3JzLAorICAgICAgICAgICAg
ZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKS5jb3VudCgKKyAgICAgICAgICAgICAgICAnQmxhbmsg
bGluZSBhdCB0aGUgc3RhcnQgb2YgYSBjb2RlIGJsb2NrLiAgSXMgdGhpcyBuZWVkZWQ/JworICAg
ICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2JsYW5rX2xpbmVdIFsyXScpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygKKyAgICAgICAgICAgIGVuZF9lcnJvcnMsCisgICAgICAgICAgICBl
cnJvcl9jb2xsZWN0b3IucmVzdWx0cygpLmNvdW50KAorICAgICAgICAgICAgICAgICdCbGFuayBs
aW5lIGF0IHRoZSBlbmQgb2YgYSBjb2RlIGJsb2NrLiAgSXMgdGhpcyBuZWVkZWQ/JworICAgICAg
ICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2JsYW5rX2xpbmVdIFszXScpKQorCisKK2NsYXNzIENw
cGxpbnRUZXN0KENwcGxpbnRUZXN0QmFzZSk6CisKKyAgICAjIFRlc3QgZ2V0IGxpbmUgd2lkdGgu
CisgICAgZGVmIHRlc3RfZ2V0X2xpbmVfd2lkdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKDAsIGNwcGxpbnQuZ2V0X2xpbmVfd2lkdGgoJycpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygxMCwgY3BwbGludC5nZXRfbGluZV93aWR0aCh1J3gnICogMTApKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygxNiwgY3BwbGludC5nZXRfbGluZV93aWR0aCh1J+mDvXzpgZN85bqc
fOecjHzmlK/luoEnKSkKKworICAgIGRlZiB0ZXN0X2ZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1l
bnRfc3RhcnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGNwcGxpbnQuZmlu
ZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9zdGFydChbJyddLCAwKSkKKworICAgICAgICBsaW5l
cyA9IFsnYScsICdiJywgJy8qIGMnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygyLCBjcHBs
aW50LmZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfc3RhcnQobGluZXMsIDApKQorCisgICAg
ICAgIGxpbmVzID0gWydjaGFyIGFbXSA9ICIvKiI7J10gICMgbm90IHJlY29nbml6ZWQgYXMgY29t
bWVudC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgY3BwbGludC5maW5kX25leHRfbXVs
dGlfbGluZV9jb21tZW50X3N0YXJ0KGxpbmVzLCAwKSkKKworICAgIGRlZiB0ZXN0X2ZpbmRfbmV4
dF9tdWx0aV9saW5lX2NvbW1lbnRfZW5kKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cygxLCBjcHBsaW50LmZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfZW5kKFsnJ10sIDApKQor
ICAgICAgICBsaW5lcyA9IFsnYScsICdiJywgJyBjICovJ10KKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoMiwgY3BwbGludC5maW5kX25leHRfbXVsdGlfbGluZV9jb21tZW50X2VuZChsaW5lcywg
MCkpCisKKyAgICBkZWYgdGVzdF9yZW1vdmVfbXVsdGlfbGluZV9jb21tZW50c19mcm9tX3Jhbmdl
KHNlbGYpOgorICAgICAgICBsaW5lcyA9IFsnYScsICcgIC8qIGNvbW1lbnQgJywgJyAqIHN0aWxs
IGNvbW1lbnQnLCAnIGNvbW1lbnQgKi8gICAnLCAnYiddCisgICAgICAgIGNwcGxpbnQucmVtb3Zl
X211bHRpX2xpbmVfY29tbWVudHNfZnJvbV9yYW5nZShsaW5lcywgMSwgNCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoWydhJywgJy8vIGR1bW15JywgJy8vIGR1bW15JywgJy8vIGR1bW15Jywg
J2InXSwgbGluZXMpCisKKyAgICBkZWYgdGVzdF9zcGFjZXNfYXRfZW5kX29mX2xpbmUoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnLy8gSGVsbG8gdGhlcmUg
JywKKyAgICAgICAgICAgICdMaW5lIGVuZHMgaW4gd2hpdGVzcGFjZS4gIENvbnNpZGVyIGRlbGV0
aW5nIHRoZXNlIGV4dHJhIHNwYWNlcy4nCisgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9lbmRf
b2ZfbGluZV0gWzRdJykKKworICAgICMgVGVzdCBDLXN0eWxlIGNhc3QgY2FzZXMuCisgICAgZGVm
IHRlc3RfY3N0eWxlX2Nhc3Qoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAg
ICAgICAgICAnaW50IGEgPSAoaW50KTEuMDsnLAorICAgICAgICAgICAgJ1VzaW5nIEMtc3R5bGUg
Y2FzdC4gIFVzZSBzdGF0aWNfY2FzdDxpbnQ+KC4uLikgaW5zdGVhZCcKKyAgICAgICAgICAgICcg
IFtyZWFkYWJpbGl0eS9jYXN0aW5nXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAor
ICAgICAgICAgICAgJ2ludCAqYSA9IChpbnQgKilOVUxMOycsCisgICAgICAgICAgICAnVXNpbmcg
Qy1zdHlsZSBjYXN0LiAgVXNlIHJlaW50ZXJwcmV0X2Nhc3Q8aW50ICo+KC4uLikgaW5zdGVhZCcK
KyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jYXN0aW5nXSBbNF0nKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAndWludDE2IGEgPSAodWludDE2KTEuMDsnLAor
ICAgICAgICAgICAgJ1VzaW5nIEMtc3R5bGUgY2FzdC4gIFVzZSBzdGF0aWNfY2FzdDx1aW50MTY+
KC4uLikgaW5zdGVhZCcKKyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jYXN0aW5nXSBbNF0n
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2ludDMyIGEgPSAoaW50
MzIpMS4wOycsCisgICAgICAgICAgICAnVXNpbmcgQy1zdHlsZSBjYXN0LiAgVXNlIHN0YXRpY19j
YXN0PGludDMyPiguLi4pIGluc3RlYWQnCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2Fz
dGluZ10gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICd1aW50
NjQgYSA9ICh1aW50NjQpMS4wOycsCisgICAgICAgICAgICAnVXNpbmcgQy1zdHlsZSBjYXN0LiAg
VXNlIHN0YXRpY19jYXN0PHVpbnQ2ND4oLi4uKSBpbnN0ZWFkJworICAgICAgICAgICAgJyAgW3Jl
YWRhYmlsaXR5L2Nhc3RpbmddIFs0XScpCisKKyAgICAgICAgIyBUaGVzZSBzaG91bGRuJ3QgYmUg
cmVjb2duaXplZCBjYXN0cy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndSBhID0gKHUpTlVM
TDsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndWludCBhID0gKHVpbnQpTlVMTDsn
LCAnJykKKworICAgICMgVGVzdCB0YWtpbmcgYWRkcmVzcyBvZiBjYXN0cyAocnVudGltZS9jYXN0
aW5nKQorICAgIGRlZiB0ZXN0X3J1bnRpbWVfY2FzdGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKKyAgICAgICAgICAgICdpbnQqIHggPSAmc3RhdGljX2Nhc3Q8aW50Kj4oZm9v
KTsnLAorICAgICAgICAgICAgJ0FyZSB5b3UgdGFraW5nIGFuIGFkZHJlc3Mgb2YgYSBjYXN0PyAg
JworICAgICAgICAgICAgJ1RoaXMgaXMgZGFuZ2Vyb3VzOiBjb3VsZCBiZSBhIHRlbXAgdmFyLiAg
JworICAgICAgICAgICAgJ1Rha2UgdGhlIGFkZHJlc3MgYmVmb3JlIGRvaW5nIHRoZSBjYXN0LCBy
YXRoZXIgdGhhbiBhZnRlcicKKyAgICAgICAgICAgICcgIFtydW50aW1lL2Nhc3RpbmddIFs0XScp
CisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdpbnQqIHggPSAmZHlu
YW1pY19jYXN0PGludCAqPihmb28pOycsCisgICAgICAgICAgICBbJ0FyZSB5b3UgdGFraW5nIGFu
IGFkZHJlc3Mgb2YgYSBjYXN0PyAgJworICAgICAgICAgICAgICdUaGlzIGlzIGRhbmdlcm91czog
Y291bGQgYmUgYSB0ZW1wIHZhci4gICcKKyAgICAgICAgICAgICAnVGFrZSB0aGUgYWRkcmVzcyBi
ZWZvcmUgZG9pbmcgdGhlIGNhc3QsIHJhdGhlciB0aGFuIGFmdGVyJworICAgICAgICAgICAgICcg
IFtydW50aW1lL2Nhc3RpbmddIFs0XScsCisgICAgICAgICAgICAgJ0RvIG5vdCB1c2UgZHluYW1p
Y19jYXN0PD4uICBJZiB5b3UgbmVlZCB0byBjYXN0IHdpdGhpbiBhIGNsYXNzICcKKyAgICAgICAg
ICAgICAnaGllcmFyY2h5LCB1c2Ugc3RhdGljX2Nhc3Q8PiB0byB1cGNhc3QuICBHb29nbGUgZG9l
c25cJ3Qgc3VwcG9ydCAnCisgICAgICAgICAgICAgJ1JUVEkuICBbcnVudGltZS9ydHRpXSBbNV0n
XSkKKworICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2ludCogeCA9ICZy
ZWludGVycHJldF9jYXN0PGludCAqPihmb28pOycsCisgICAgICAgICAgICAnQXJlIHlvdSB0YWtp
bmcgYW4gYWRkcmVzcyBvZiBhIGNhc3Q/ICAnCisgICAgICAgICAgICAnVGhpcyBpcyBkYW5nZXJv
dXM6IGNvdWxkIGJlIGEgdGVtcCB2YXIuICAnCisgICAgICAgICAgICAnVGFrZSB0aGUgYWRkcmVz
cyBiZWZvcmUgZG9pbmcgdGhlIGNhc3QsIHJhdGhlciB0aGFuIGFmdGVyJworICAgICAgICAgICAg
JyAgW3J1bnRpbWUvY2FzdGluZ10gWzRdJykKKworICAgICAgICAjIEl0J3MgT0sgdG8gY2FzdCBh
biBhZGRyZXNzLgorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2ludCog
eCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50ICo+KCZmb28pOycsCisgICAgICAgICAgICAnJykKKwor
ICAgIGRlZiB0ZXN0X3J1bnRpbWVfc2VsZmluaXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoCisgICAgICAgICAgICAnRm9vOjpGb28oQmFyIHIsIEJlbCBsKSA6IHJfKHJfKSwgbF8o
bF8pIHsgfScsCisgICAgICAgICAgICAnWW91IHNlZW0gdG8gYmUgaW5pdGlhbGl6aW5nIGEgbWVt
YmVyIHZhcmlhYmxlIHdpdGggaXRzZWxmLicKKyAgICAgICAgICAgICcgIFtydW50aW1lL2luaXRd
IFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnRm9vOjpGb28o
QmFyIHIsIEJlbCBsKSA6IHJfKHIpLCBsXyhsKSB7IH0nLAorICAgICAgICAgICAgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnRm9vOjpGb28oQmFyIHIpIDogcl8o
ciksIGxfKHJfKSwgbGxfKGxfKSB7IH0nLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVz
dF9ydW50aW1lX3J0dGkoc2VsZik6CisgICAgICAgIHN0YXRlbWVudCA9ICdpbnQqIHggPSBkeW5h
bWljX2Nhc3Q8aW50Kj4oJmZvbyk7JworICAgICAgICBlcnJvcl9tZXNzYWdlID0gKAorICAgICAg
ICAgICAgJ0RvIG5vdCB1c2UgZHluYW1pY19jYXN0PD4uICBJZiB5b3UgbmVlZCB0byBjYXN0IHdp
dGhpbiBhIGNsYXNzICcKKyAgICAgICAgICAgICdoaWVyYXJjaHksIHVzZSBzdGF0aWNfY2FzdDw+
IHRvIHVwY2FzdC4gIEdvb2dsZSBkb2VzblwndCBzdXBwb3J0ICcKKyAgICAgICAgICAgICdSVFRJ
LiAgW3J1bnRpbWUvcnR0aV0gWzVdJykKKyAgICAgICAgIyBkeW5hbWljX2Nhc3QgaXMgZGlzYWxs
b3dlZCBpbiBtb3N0IGZpbGVzLgorICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19j
aGVjaygnZm9vLmNjJywgc3RhdGVtZW50LCBlcnJvcl9tZXNzYWdlKQorICAgICAgICBzZWxmLmFz
c2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmgnLCBzdGF0ZW1lbnQsIGVycm9yX21lc3Nh
Z2UpCisgICAgICAgICMgSXQgaXMgZXhwbGljaXRseSBhbGxvd2VkIGluIHRlc3RzLCBob3dldmVy
LgorICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vX3Rlc3QuY2Mn
LCBzdGF0ZW1lbnQsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVj
aygnZm9vX3VuaXR0ZXN0LmNjJywgc3RhdGVtZW50LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvb19yZWd0ZXN0LmNjJywgc3RhdGVtZW50LCAnJykKKwor
ICAgICMgV2UgY2Fubm90IHRlc3QgdGhpcyBmdW5jdGlvbmFsaXR5IGJlY2F1c2Ugb2YgZGlmZmVy
ZW5jZSBvZgorICAgICMgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBBbnl3YXksIHdlIG1heSBuZXZl
ciBlbmFibGUgdGhpcy4KKyAgICAjCisgICAgIyAjIFRlc3QgZm9yIHVubmFtZWQgYXJndW1lbnRz
IGluIGEgbWV0aG9kLgorICAgICMgZGVmIHRlc3RfY2hlY2tfZm9yX3VubmFtZWRfcGFyYW1zKHNl
bGYpOgorICAgICMgICBtZXNzYWdlID0gKCdBbGwgcGFyYW1ldGVycyBzaG91bGQgYmUgbmFtZWQg
aW4gYSBmdW5jdGlvbicKKyAgICAjICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvZnVuY3Rp
b25dIFszXScpCisgICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZpcnR1YWwgdm9pZCBBKGludCop
IGNvbnN0OycsIG1lc3NhZ2UpCisgICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZpcnR1YWwgdm9p
ZCBCKHZvaWQgKCpmbikoaW50KikpOycsIG1lc3NhZ2UpCisgICAgIyAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3ZpcnR1YWwgdm9pZCBDKGludCopOycsIG1lc3NhZ2UpCisgICAgIyAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ3ZvaWQgKigqZikodm9pZCAqKSA9IHg7JywgbWVzc2FnZSkKKyAgICAjICAgc2VsZi5h
c3NlcnRfbGludCgndm9pZCBNZXRob2QoY2hhciopIHsnLCBtZXNzYWdlKQorICAgICMgICBzZWxm
LmFzc2VydF9saW50KCd2b2lkIE1ldGhvZChjaGFyKik7JywgbWVzc2FnZSkKKyAgICAjICAgc2Vs
Zi5hc3NlcnRfbGludCgndm9pZCBNZXRob2QoY2hhciogLyp4Ki8pOycsIG1lc3NhZ2UpCisgICAg
IyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5cGVkZWYgdm9pZCAoKk1ldGhvZCkoaW50MzIpOycsIG1l
c3NhZ2UpCisgICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0YXRpYyB2b2lkIG9wZXJhdG9yIGRl
bGV0ZVtdKHZvaWQqKSB0aHJvdygpOycsIG1lc3NhZ2UpCisgICAgIyAKKyAgICAjICAgc2VsZi5h
c3NlcnRfbGludCgndmlydHVhbCB2b2lkIEQoaW50KiBwKTsnLCAnJykKKyAgICAjICAgc2VsZi5h
c3NlcnRfbGludCgndm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogeCkgdGhyb3coKTsnLCAnJykK
KyAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCBNZXRob2QoY2hhciogeClcbnsnLCAnJykK
KyAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCBNZXRob2QoY2hhciogLyp4Ki8pXG57Jywg
JycpCisgICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgTWV0aG9kKGNoYXIqIHgpOycsICcn
KQorICAgICMgICBzZWxmLmFzc2VydF9saW50KCd0eXBlZGVmIHZvaWQgKCpNZXRob2QpKGludDMy
IHgpOycsICcnKQorICAgICMgICBzZWxmLmFzc2VydF9saW50KCdzdGF0aWMgdm9pZCBvcGVyYXRv
ciBkZWxldGVbXSh2b2lkKiB4KSB0aHJvdygpOycsICcnKQorICAgICMgICBzZWxmLmFzc2VydF9s
aW50KCdzdGF0aWMgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiAvKngqLykgdGhyb3coKTsn
LCAnJykKKyAgICAjIAorICAgICMgICAjIFRoaXMgb25lIHNob3VsZCB0ZWNobmljYWxseSB3YXJu
LCBidXQgZG9lc24ndCBiZWNhdXNlIHRoZSBmdW5jdGlvbgorICAgICMgICAjIHBvaW50ZXIgaXMg
Y29uZnVzaW5nLgorICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2aXJ0dWFsIHZvaWQgRSh2b2lk
ICgqZm4pKGludCogcCkpOycsICcnKQorCisgICAgIyBUZXN0IGRlcHJlY2F0ZWQgY2FzdHMgc3Vj
aCBhcyBpbnQoZCkKKyAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2Nhc3Qoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnaW50IGEgPSBpbnQoMi4yKTsnLAorICAg
ICAgICAgICAgJ1VzaW5nIGRlcHJlY2F0ZWQgY2FzdGluZyBzdHlsZS4gICcKKyAgICAgICAgICAg
ICdVc2Ugc3RhdGljX2Nhc3Q8aW50PiguLi4pIGluc3RlYWQnCisgICAgICAgICAgICAnICBbcmVh
ZGFiaWxpdHkvY2FzdGluZ10gWzRdJykKKyAgICAgICAgIyBDaGVja3MgZm9yIGZhbHNlIHBvc2l0
aXZlcy4uLgorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2ludCBhID0g
aW50KCk7ICAvLyBDb25zdHJ1Y3Rvciwgby5rLicsCisgICAgICAgICAgICAnJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdYOjpYKCkgOiBhKGludCgpKSB7fSAgLy8g
ZGVmYXVsdCBDb25zdHJ1Y3Rvciwgby5rLicsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdvcGVyYXRvciBib29sKCk7ICAvLyBDb252ZXJz
aW9uIG9wZXJhdG9yLCBvLmsuJywKKyAgICAgICAgICAgICcnKQorCisgICAgIyBUaGUgc2Vjb25k
IHBhcmFtZXRlciB0byBhIGdNb2NrIG1ldGhvZCBkZWZpbml0aW9uIGlzIGEgZnVuY3Rpb24gc2ln
bmF0dXJlCisgICAgIyB0aGF0IG9mdGVuIGxvb2tzIGxpa2UgYSBiYWQgY2FzdCBidXQgc2hvdWxk
IG5vdCBwaWNrZWQgdXAgYnkgbGludC4KKyAgICBkZWYgdGVzdF9tb2NrX21ldGhvZChzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdNT0NLX01FVEhPRDAobWV0
aG9kLCBpbnQoKSk7JywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50
KAorICAgICAgICAgICAgJ01PQ0tfQ09OU1RfTUVUSE9EMShtZXRob2QsIGZsb2F0KHN0cmluZykp
OycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAg
ICAgICdNT0NLX0NPTlNUX01FVEhPRDJfVChtZXRob2QsIGRvdWJsZShmbG9hdCwgZmxvYXQpKTsn
LAorICAgICAgICAgICAgJycpCisKKyAgICAjIFRlc3Qgc2l6ZW9mKHR5cGUpIGNhc2VzLgorICAg
IGRlZiB0ZXN0X3NpemVvZl90eXBlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9saW50KAor
ICAgICAgICAgICAgJ3NpemVvZihpbnQpOycsCisgICAgICAgICAgICAnVXNpbmcgc2l6ZW9mKHR5
cGUpLiAgVXNlIHNpemVvZih2YXJuYW1lKSBpbnN0ZWFkIGlmIHBvc3NpYmxlJworICAgICAgICAg
ICAgJyAgW3J1bnRpbWUvc2l6ZW9mXSBbMV0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAor
ICAgICAgICAgICAgJ3NpemVvZihpbnQgKik7JywKKyAgICAgICAgICAgICdVc2luZyBzaXplb2Yo
dHlwZSkuICBVc2Ugc2l6ZW9mKHZhcm5hbWUpIGluc3RlYWQgaWYgcG9zc2libGUnCisgICAgICAg
ICAgICAnICBbcnVudGltZS9zaXplb2ZdIFsxXScpCisKKyAgICAjIFRlc3QgZmFsc2UgZXJyb3Jz
IHRoYXQgaGFwcGVuZWQgd2l0aCBzb21lIGluY2x1ZGUgZmlsZSBuYW1lcworICAgIGRlZiB0ZXN0
X2luY2x1ZGVfZmlsZW5hbWVfZmFsc2VfZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoCisgICAgICAgICAgICAnI2luY2x1ZGUgImZvby9sb25nLWZvby5oIicsCisgICAgICAg
ICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICcjaW5jbHVk
ZSAiZm9vL3NwcmludGYuaCInLAorICAgICAgICAgICAgJycpCisKKyAgICAjIFRlc3QgdHlwZWRl
ZiBjYXNlcy4gIFRoZXJlIHdhcyBhIGJ1ZyB0aGF0IGNwcGxpbnQgbWlzaWRlbnRpZmllZAorICAg
ICMgdHlwZWRlZiBmb3IgcG9pbnRlciB0byBmdW5jdGlvbiBhcyBDLXN0eWxlIGNhc3QgYW5kIHBy
b2R1Y2VkCisgICAgIyBmYWxzZS1wb3NpdGl2ZSBlcnJvciBtZXNzYWdlcy4KKyAgICBkZWYgdGVz
dF90eXBlZGVmX2Zvcl9wb2ludGVyX3RvX2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFz
c2VydF9saW50KAorICAgICAgICAgICAgJ3R5cGVkZWYgdm9pZCAoKkZ1bmMpKGludCB4KTsnLAor
ICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAn
dHlwZWRlZiB2b2lkICgqRnVuYykoaW50ICp4KTsnLAorICAgICAgICAgICAgJycpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAndHlwZWRlZiB2b2lkIEZ1bmMoaW50IHgp
OycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAg
ICAgICd0eXBlZGVmIHZvaWQgRnVuYyhpbnQgKngpOycsCisgICAgICAgICAgICAnJykKKworICAg
IGRlZiB0ZXN0X2luY2x1ZGVfd2hhdF95b3VfdXNlX25vX2ltcGxlbWVudGF0aW9uX2ZpbGVzKHNl
bGYpOgorICAgICAgICBjb2RlID0gJ3N0ZDo6dmVjdG9yPGludD4gZm9vOycKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoJ0FkZCAjaW5jbHVkZSA8dmVjdG9yPiBmb3IgdmVjdG9yPD4nCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICcgIFtidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRd
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wZXJmb3JtX2luY2x1ZGVfd2hhdF95
b3VfdXNlKGNvZGUsICdmb28uaCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wZXJmb3JtX2luY2x1ZGVfd2hhdF95b3VfdXNl
KGNvZGUsICdmb28uY2MnKSkKKworICAgIGRlZiB0ZXN0X2luY2x1ZGVfd2hhdF95b3VfdXNlKHNl
bGYpOgorICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAg
ICAgICcnJyNpbmNsdWRlIDx2ZWN0b3I+CisgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+
IGZvbzsKKyAgICAgICAgICAgICcnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFz
c2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcnJyNpbmNsdWRlIDxtYXA+
CisgICAgICAgICAgICAgICBzdGQ6OnBhaXI8aW50LGludD4gZm9vOworICAgICAgICAgICAgJycn
LAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3Vf
dXNlKAorICAgICAgICAgICAgJycnI2luY2x1ZGUgPG11bHRpbWFwPgorICAgICAgICAgICAgICAg
c3RkOjpwYWlyPGludCxpbnQ+IGZvbzsKKyAgICAgICAgICAgICcnJywKKyAgICAgICAgICAgICcn
KQorICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAg
ICcnJyNpbmNsdWRlIDxoYXNoX21hcD4KKyAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxpbnQsaW50
PiBmb287CisgICAgICAgICAgICAnJycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAnJycjaW5jbHVkZSA8dXRp
bGl0eT4KKyAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxpbnQsaW50PiBmb287CisgICAgICAgICAg
ICAnJycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0
X3lvdV91c2UoCisgICAgICAgICAgICAnJycjaW5jbHVkZSA8dmVjdG9yPgorICAgICAgICAgICAg
ICAgREVDTEFSRV9zdHJpbmcoZm9vYmFyKTsKKyAgICAgICAgICAgICcnJywKKyAgICAgICAgICAg
ICcnKQorICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAg
ICAgICcnJyNpbmNsdWRlIDx2ZWN0b3I+CisgICAgICAgICAgICAgICBERUZJTkVfc3RyaW5nKGZv
b2JhciwgIiIsICIiKTsKKyAgICAgICAgICAgICcnJywKKyAgICAgICAgICAgICcnKQorICAgICAg
ICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcnJyNpbmNs
dWRlIDx2ZWN0b3I+CisgICAgICAgICAgICAgICBzdGQ6OnBhaXI8aW50LGludD4gZm9vOworICAg
ICAgICAgICAgJycnLAorICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8dXRpbGl0eT4gZm9yIHBh
aXI8PicKKyAgICAgICAgICAgICcgIFtidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAn
JycjaW5jbHVkZSAiYmFzZS9mb29iYXIuaCIKKyAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGlu
dD4gZm9vOworICAgICAgICAgICAgJycnLAorICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8dmVj
dG9yPiBmb3IgdmVjdG9yPD4nCisgICAgICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV93aGF0X3lv
dV91c2VdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAor
ICAgICAgICAgICAgJycnI2luY2x1ZGUgPHZlY3Rvcj4KKyAgICAgICAgICAgICAgIHN0ZDo6c2V0
PGludD4gZm9vOworICAgICAgICAgICAgJycnLAorICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8
c2V0PiBmb3Igc2V0PD4nCisgICAgICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91
c2VdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAorICAg
ICAgICAgICAgJycnI2luY2x1ZGUgImJhc2UvZm9vYmFyLmgiCisgICAgICAgICAgICAgIGhhc2hf
bWFwPGludCwgaW50PiBmb29iYXI7CisgICAgICAgICAgICAnJycsCisgICAgICAgICAgICAnQWRk
ICNpbmNsdWRlIDxoYXNoX21hcD4gZm9yIGhhc2hfbWFwPD4nCisgICAgICAgICAgICAnICBbYnVp
bGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1
ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAgICAgJycnI2luY2x1ZGUgImJhc2UvZm9vYmFyLmgi
CisgICAgICAgICAgICAgICBib29sIGZvb2JhciA9IHN0ZDo6bGVzczxpbnQ+KDAsMSk7CisgICAg
ICAgICAgICAnJycsCisgICAgICAgICAgICAnQWRkICNpbmNsdWRlIDxmdW5jdGlvbmFsPiBmb3Ig
bGVzczw+JworICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0n
KQorICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAg
ICcnJyNpbmNsdWRlICJiYXNlL2Zvb2Jhci5oIgorICAgICAgICAgICAgICAgYm9vbCBmb29iYXIg
PSBtaW48aW50PigwLDEpOworICAgICAgICAgICAgJycnLAorICAgICAgICAgICAgJ0FkZCAjaW5j
bHVkZSA8YWxnb3JpdGhtPiBmb3IgbWluICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0
XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAg
ICAgJ3ZvaWQgYShjb25zdCBzdHJpbmcgJmZvb2Jhcik7JywKKyAgICAgICAgICAgICdBZGQgI2lu
Y2x1ZGUgPHN0cmluZz4gZm9yIHN0cmluZyAgW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBb
NF0nKQorICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAg
ICAgICcnJyNpbmNsdWRlICJiYXNlL2Zvb2Jhci5oIgorICAgICAgICAgICAgICAgYm9vbCBmb29i
YXIgPSBzd2FwKDAsMSk7CisgICAgICAgICAgICAnJycsCisgICAgICAgICAgICAnQWRkICNpbmNs
dWRlIDxhbGdvcml0aG0+IGZvciBzd2FwICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0
XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAg
ICAgJycnI2luY2x1ZGUgImJhc2UvZm9vYmFyLmgiCisgICAgICAgICAgICAgICBib29sIGZvb2Jh
ciA9IHRyYW5zZm9ybShhLmJlZ2luKCksIGEuZW5kKCksIGIuc3RhcnQoKSwgRm9vKTsKKyAgICAg
ICAgICAgICcnJywKKyAgICAgICAgICAgICdBZGQgI2luY2x1ZGUgPGFsZ29yaXRobT4gZm9yIHRy
YW5zZm9ybSAgJworICAgICAgICAgICAgJ1tidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRd
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAg
ICAnJycjaW5jbHVkZSAiYmFzZS9mb29iYXIuaCIKKyAgICAgICAgICAgICAgIGJvb2wgZm9vYmFy
ID0gbWluX2VsZW1lbnQoYS5iZWdpbigpLCBhLmVuZCgpKTsKKyAgICAgICAgICAgICcnJywKKyAg
ICAgICAgICAgICdBZGQgI2luY2x1ZGUgPGFsZ29yaXRobT4gZm9yIG1pbl9lbGVtZW50ICAnCisg
ICAgICAgICAgICAnW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQorICAgICAgICBz
ZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcnJ2Zvby0+c3dh
cCgwLDEpOworICAgICAgICAgICAgICAgZm9vLnN3YXAoMCwxKTsKKyAgICAgICAgICAgICcnJywK
KyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3Vz
ZSgKKyAgICAgICAgICAgICcnJyNpbmNsdWRlIDxzdHJpbmc+CisgICAgICAgICAgICAgICB2b2lk
IGEoY29uc3Qgc3RkOjptdWx0aW1hcDxpbnQsc3RyaW5nPiAmZm9vYmFyKTsKKyAgICAgICAgICAg
ICcnJywKKyAgICAgICAgICAgICdBZGQgI2luY2x1ZGUgPG1hcD4gZm9yIG11bHRpbWFwPD4nCisg
ICAgICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAgICAgJycnI2luY2x1
ZGUgPHF1ZXVlPgorICAgICAgICAgICAgICAgdm9pZCBhKGNvbnN0IHN0ZDo6cHJpb3JpdHlfcXVl
dWU8aW50PiAmZm9vYmFyKTsKKyAgICAgICAgICAgICcnJywKKyAgICAgICAgICAgICcnKQorICAg
ICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcnJyNp
bmNsdWRlIDxhc3NlcnQuaD4KKyAgICAgICAgICAgICAgICNpbmNsdWRlIDxzdHJpbmc+CisgICAg
ICAgICAgICAgICAjaW5jbHVkZSA8dmVjdG9yPgorICAgICAgICAgICAgICAgI2luY2x1ZGUgImJh
c2UvYmFzaWN0eXBlcy5oIgorICAgICAgICAgICAgICAgI2luY2x1ZGUgImJhc2UvcG9ydC5oIgor
ICAgICAgICAgICAgICAgdmVjdG9yPHN0cmluZz4gaGFqb2E7JycnLCAnJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAnJycjaW5jbHVkZSA8
c3RyaW5nPgorICAgICAgICAgICAgICAgaW50IGkgPSBudW1lcmljX2xpbWl0czxpbnQ+OjptYXgo
KQorICAgICAgICAgICAgJycnLAorICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8bGltaXRzPiBm
b3IgbnVtZXJpY19saW1pdHM8PicKKyAgICAgICAgICAgICcgIFtidWlsZC9pbmNsdWRlX3doYXRf
eW91X3VzZV0gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2Uo
CisgICAgICAgICAgICAnJycjaW5jbHVkZSA8bGltaXRzPgorICAgICAgICAgICAgICAgaW50IGkg
PSBudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKQorICAgICAgICAgICAgJycnLAorICAgICAgICAg
ICAgJycpCisKKyAgICAgICAgIyBUZXN0IHRoZSBVcGRhdGVJbmNsdWRlU3RhdGUgY29kZSBwYXRo
LgorICAgICAgICBtb2NrX2hlYWRlcl9jb250ZW50cyA9IFsnI2luY2x1ZGUgImJsYWgvZm9vLmgi
JywgJyNpbmNsdWRlICJibGFoL2Jhci5oIiddCisgICAgICAgIG1lc3NhZ2UgPSBzZWxmLnBlcmZv
cm1faW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAnI2luY2x1ZGUgImJsYWgvYS5o
IicsCisgICAgICAgICAgICBmaWxlbmFtZT0nYmxhaC9hLmNjJywKKyAgICAgICAgICAgIGlvPU1v
Y2tJbyhtb2NrX2hlYWRlcl9jb250ZW50cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1l
c3NhZ2UsICcnKQorCisgICAgICAgIG1vY2tfaGVhZGVyX2NvbnRlbnRzID0gWycjaW5jbHVkZSA8
c2V0PiddCisgICAgICAgIG1lc3NhZ2UgPSBzZWxmLnBlcmZvcm1faW5jbHVkZV93aGF0X3lvdV91
c2UoCisgICAgICAgICAgICAnJycjaW5jbHVkZSAiYmxhaC9hLmgiCisgICAgICAgICAgICAgICBz
dGQ6OnNldDxpbnQ+IGZvbzsnJycsCisgICAgICAgICAgICBmaWxlbmFtZT0nYmxhaC9hLmNjJywK
KyAgICAgICAgICAgIGlvPU1vY2tJbyhtb2NrX2hlYWRlcl9jb250ZW50cykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKG1lc3NhZ2UsICcnKQorCisgICAgICAgICMgTWFrZSBzdXJlIHdlIGNh
biBmaW5kIHRoZSBjb3JyZWN0IGhlYWRlciBmaWxlIGlmIHRoZSBjYyBmaWxlIHNlZW1zIHRvIGJl
CisgICAgICAgICMgYSB0ZW1wb3JhcnkgZmlsZSBnZW5lcmF0ZWQgYnkgRW1hY3MncyBmbHltYWtl
LgorICAgICAgICBtb2NrX2hlYWRlcl9jb250ZW50cyA9IFsnJ10KKyAgICAgICAgbWVzc2FnZSA9
IHNlbGYucGVyZm9ybV9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcnJyNpbmNs
dWRlICJibGFoL2EuaCIKKyAgICAgICAgICAgICAgIHN0ZDo6c2V0PGludD4gZm9vOycnJywKKyAg
ICAgICAgICAgIGZpbGVuYW1lPSdibGFoL2FfZmx5bWFrZS5jYycsCisgICAgICAgICAgICBpbz1N
b2NrSW8obW9ja19oZWFkZXJfY29udGVudHMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyht
ZXNzYWdlLCAnQWRkICNpbmNsdWRlIDxzZXQ+IGZvciBzZXQ8PiAgJworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQor
CisgICAgICAgICMgSWYgdGhlcmUncyBqdXN0IGEgY2MgYW5kIHRoZSBoZWFkZXIgY2FuJ3QgYmUg
Zm91bmQgdGhlbiBpdCdzIG9rLgorICAgICAgICBtZXNzYWdlID0gc2VsZi5wZXJmb3JtX2luY2x1
ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAgICAgJycnI2luY2x1ZGUgImJsYWgvYS5oIgorICAg
ICAgICAgICAgICAgc3RkOjpzZXQ8aW50PiBmb287JycnLAorICAgICAgICAgICAgZmlsZW5hbWU9
J2JsYWgvYS5jYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1lc3NhZ2UsICcnKQorCisg
ICAgICAgICMgTWFrZSBzdXJlIHdlIGZpbmQgdGhlIGhlYWRlcnMgd2l0aCByZWxhdGl2ZSBwYXRo
cy4KKyAgICAgICAgbW9ja19oZWFkZXJfY29udGVudHMgPSBbJyddCisgICAgICAgIG1lc3NhZ2Ug
PSBzZWxmLnBlcmZvcm1faW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAnJycjaW5j
bHVkZSAiJXMvYS5oIgorICAgICAgICAgICAgICAgc3RkOjpzZXQ8aW50PiBmb287JycnICUgb3Mu
cGF0aC5iYXNlbmFtZShvcy5nZXRjd2QoKSksCisgICAgICAgICAgICBmaWxlbmFtZT0nYS5jYycs
CisgICAgICAgICAgICBpbz1Nb2NrSW8obW9ja19oZWFkZXJfY29udGVudHMpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhtZXNzYWdlLCAnQWRkICNpbmNsdWRlIDxzZXQ+IGZvciBzZXQ8PiAg
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnW2J1aWxkL2luY2x1ZGVfd2hh
dF95b3VfdXNlXSBbNF0nKQorCisgICAgZGVmIHRlc3RfZmlsZXNfYmVsb25nX3RvX3NhbWVfbW9k
dWxlKHNlbGYpOgorICAgICAgICBmID0gY3BwbGludC5maWxlc19iZWxvbmdfdG9fc2FtZV9tb2R1
bGUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICcnKSwgZignYS5jYycsICdhLmgn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICcnKSwgZignYmFzZS9nb29nbGUu
Y2MnLCAnYmFzZS9nb29nbGUuaCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoVHJ1ZSwg
JycpLCBmKCdiYXNlL2dvb2dsZV90ZXN0LmNjJywgJ2Jhc2UvZ29vZ2xlLmgnKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ZignYmFzZS9nb29nbGVfdW5pdHRlc3QuY2MnLCAnYmFzZS9nb29nbGUuaCcpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygoVHJ1ZSwgJycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBm
KCdiYXNlL2ludGVybmFsL2dvb2dsZV91bml0dGVzdC5jYycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2Jhc2UvcHVibGljL2dvb2dsZS5oJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKChUcnVlLCAneHh4L3l5eS8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZigneHh4
L3l5eS9iYXNlL2ludGVybmFsL2dvb2dsZV91bml0dGVzdC5jYycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2Jhc2UvcHVibGljL2dvb2dsZS5oJykpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKChUcnVlLCAneHh4L3l5eS8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZign
eHh4L3l5eS9iYXNlL2dvb2dsZV91bml0dGVzdC5jYycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2Jhc2UvcHVibGljL2dvb2dsZS5oJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KChUcnVlLCAnJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGYoJ2Jhc2UvZ29vZ2xlX3Vu
aXR0ZXN0LmNjJywgJ2Jhc2UvZ29vZ2xlLWlubC5oJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKChUcnVlLCAnL2hvbWUvYnVpbGQvZ29vZ2xlMy8nKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgZignL2hvbWUvYnVpbGQvZ29vZ2xlMy9iYXNlL2dvb2dsZS5jYycsICdiYXNlL2dvb2ds
ZS5oJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKEZhbHNlLCAnJyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGYoJy9ob21lL2J1aWxkL2dvb2dsZTMvYmFzZS9nb29nbGUuY2Mn
LCAnYmFzdS9nb29nbGUuaCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoRmFsc2UsICcn
KSwgZignYS5jYycsICdiLmgnKSkKKworICAgIGRlZiB0ZXN0X2NsZWFuc2VfbGluZShzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ2ludCBmb28gPSAwOyAgJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3BwbGludC5jbGVhbnNlX2NvbW1lbnRzKCdpbnQgZm9vID0gMDsgIC8v
IGRhbmdlciEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ2ludCBvID0gMDsnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50LmNsZWFuc2VfY29tbWVudHMoJ2ludCAvKiBm
b28gKi8gbyA9IDA7JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdmb28oaW50IGEsIGlu
dCBiKTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50LmNsZWFuc2VfY29tbWVu
dHMoJ2ZvbyhpbnQgYSAvKiBhYmMgKi8sIGludCBiKTsnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnZihhLCBiKTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNwcGxpbnQuY2xlYW5z
ZV9jb21tZW50cygnZihhLCAvKiBuYW1lICovIGIpOycpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdmKGEsIGIpOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5jbGVhbnNl
X2NvbW1lbnRzKCdmKGEgLyogbmFtZSAqLywgYik7JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ2YoYSwgYik7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50LmNsZWFuc2Vf
Y29tbWVudHMoJ2YoYSwgLyogbmFtZSAqL2IpOycpKQorCisgICAgZGVmIHRlc3RfbXVsdGlfbGlu
ZV9jb21tZW50cyhzZWxmKToKKyAgICAgICAgIyBtaXNzaW5nIGV4cGxpY2l0IGlzIGJhZAorICAg
ICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICByJycnaW50IGEg
PSAwOworICAgICAgICAgICAgICAgIC8qIG11bHRpLWxpbmVyCisgICAgICAgICAgICAgICAgY2xh
c3MgRm9vIHsKKyAgICAgICAgICAgICAgICBGb28oaW50IGYpOyAgLy8gc2hvdWxkIGNhdXNlIGEg
bGludCB3YXJuaW5nIGluIGNvZGUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAqLyAn
JycsCisgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisg
ICAgICAgICAgICByJycnLyogaW50IGEgPSAwOyBtdWx0aS1saW5lcgorICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBiID0gMDsnJycsCisgICAgICAnQ291bGQgbm90IGZpbmQgZW5kIG9mIG11
bHRpLWxpbmUgY29tbWVudCcKKyAgICAgICcgIFtyZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVu
dF0gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KHInJycgICAgLyog
bXVsdGktbGluZSBjb21tZW50JycnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0NvdWxkIG5vdCBmaW5kIGVuZCBvZiBtdWx0aS1saW5lIGNvbW1lbnQnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvbXVsdGlsaW5lX2NvbW1l
bnRdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludChyJycnICAgIC8v
IC8qIGNvbW1lbnQsIGJ1dCBub3QgbXVsdGktbGluZScnJywgJycpCisKKyAgICBkZWYgdGVzdF9t
dWx0aWxpbmVfc3RyaW5ncyhzZWxmKToKKyAgICAgICAgbXVsdGlsaW5lX3N0cmluZ19lcnJvcl9t
ZXNzYWdlID0gKAorICAgICAgICAgICAgJ011bHRpLWxpbmUgc3RyaW5nICgiLi4uIikgZm91bmQu
ICBUaGlzIGxpbnQgc2NyaXB0IGRvZXNuXCd0ICcKKyAgICAgICAgICAgICdkbyB3ZWxsIHdpdGgg
c3VjaCBzdHJpbmdzLCBhbmQgbWF5IGdpdmUgYm9ndXMgd2FybmluZ3MuICBUaGV5XCdyZSAnCisg
ICAgICAgICAgICAndWdseSBhbmQgdW5uZWNlc3NhcnksIGFuZCB5b3Ugc2hvdWxkIHVzZSBjb25j
YXRlbmF0aW9uIGluc3RlYWQiLicKKyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9tdWx0aWxp
bmVfc3RyaW5nXSBbNV0nKQorCisgICAgICAgIGZpbGVfcGF0aCA9ICdteWRpci9mb28uY2MnCisK
KyAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQor
ICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2NjJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2NvbnN0IGNoYXIqIHN0ciA9ICJUaGlzIGlz
IGFcXCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgbXVsdGlsaW5lIHN0
cmluZy4iOyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxl
Y3RvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisgICAgICAgICAgICAyLCAgIyBPbmUg
cGVyIGxpbmUuCisgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKS5jb3Vu
dChtdWx0aWxpbmVfc3RyaW5nX2Vycm9yX21lc3NhZ2UpKQorCisgICAgIyBUZXN0IG5vbi1leHBs
aWNpdCBzaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzCisgICAgZGVmIHRlc3RfZXhwbGljaXRf
c2luZ2xlX2FyZ3VtZW50X2NvbnN0cnVjdG9ycyhzZWxmKToKKyAgICAgICAgIyBtaXNzaW5nIGV4
cGxpY2l0IGlzIGJhZAorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAg
ICAgICAgICAnJydjbGFzcyBGb28geworICAgICAgICAgICAgICAgICBGb28oaW50IGYpOworICAg
ICAgICAgICAgICAgfTsnJycsCisgICAgICAgICAgICAnU2luZ2xlLWFyZ3VtZW50IGNvbnN0cnVj
dG9ycyBzaG91bGQgYmUgbWFya2VkIGV4cGxpY2l0LicKKyAgICAgICAgICAgICcgIFtydW50aW1l
L2V4cGxpY2l0XSBbNV0nKQorICAgICAgICAjIG1pc3NpbmcgZXhwbGljaXQgaXMgYmFkLCBldmVu
IHdpdGggd2hpdGVzcGFjZQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisg
ICAgICAgICAgICAnJydjbGFzcyBGb28geworICAgICAgICAgICAgICAgICBGb28gKGludCBmKTsK
KyAgICAgICAgICAgICAgIH07JycnLAorICAgICAgICAgICAgWydFeHRyYSBzcGFjZSBiZWZvcmUg
KCBpbiBmdW5jdGlvbiBjYWxsICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs0XScsCisgICAgICAgICAg
ICAgJ1NpbmdsZS1hcmd1bWVudCBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJlIG1hcmtlZCBleHBsaWNp
dC4nCisgICAgICAgICAgICAgJyAgW3J1bnRpbWUvZXhwbGljaXRdIFs1XSddKQorICAgICAgICAj
IG1pc3NpbmcgZXhwbGljaXQsIHdpdGggZGlzdHJhY3RpbmcgY29tbWVudCwgaXMgc3RpbGwgYmFk
CisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ2Ns
YXNzIEZvbyB7CisgICAgICAgICAgICAgICAgIEZvbyhpbnQgZik7ICAvLyBzaW1wbGVyIHRoYW4g
Rm9vKGJsYXJnaCwgYmxhcmcpCisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICdT
aW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHNob3VsZCBiZSBtYXJrZWQgZXhwbGljaXQuJwor
ICAgICAgICAgICAgJyAgW3J1bnRpbWUvZXhwbGljaXRdIFs1XScpCisgICAgICAgICMgbWlzc2lu
ZyBleHBsaWNpdCwgd2l0aCBxdWFsaWZpZWQgY2xhc3NuYW1lCisgICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ2NsYXNzIFF1YWxpZmllcjo6QW5vdGhl
ck9uZTo6Rm9vIHsKKyAgICAgICAgICAgICAgICAgRm9vKGludCBmKTsKKyAgICAgICAgICAgICAg
IH07JycnLAorICAgICAgICAgICAgJ1NpbmdsZS1hcmd1bWVudCBjb25zdHJ1Y3RvcnMgc2hvdWxk
IGJlIG1hcmtlZCBleHBsaWNpdC4nCisgICAgICAgICAgICAnICBbcnVudGltZS9leHBsaWNpdF0g
WzVdJykKKyAgICAgICAgIyBzdHJ1Y3RzIGFyZSBjYXVnaHQgYXMgd2VsbC4KKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnc3RydWN0IEZvbyB7Cisg
ICAgICAgICAgICAgICAgIEZvbyhpbnQgZik7CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAg
ICAgICAgICdTaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHNob3VsZCBiZSBtYXJrZWQgZXhw
bGljaXQuJworICAgICAgICAgICAgJyAgW3J1bnRpbWUvZXhwbGljaXRdIFs1XScpCisgICAgICAg
ICMgVGVtcGxhdGl6ZWQgY2xhc3NlcyBhcmUgY2F1Z2h0IGFzIHdlbGwuCisgICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IGNsYXNzIEZvbyB7CisgICAgICAgICAgICAgICAgIEZvbyhpbnQgZik7CisgICAgICAgICAg
ICAgICB9OycnJywKKyAgICAgICAgICAgICdTaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHNo
b3VsZCBiZSBtYXJrZWQgZXhwbGljaXQuJworICAgICAgICAgICAgJyAgW3J1bnRpbWUvZXhwbGlj
aXRdIFs1XScpCisgICAgICAgICMgcHJvcGVyIHN0eWxlIGlzIG9rYXkKKyAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKKyAgICAg
ICAgICAgICAgICAgZXhwbGljaXQgRm9vKGludCBmKTsKKyAgICAgICAgICAgICAgIH07JycnLAor
ICAgICAgICAgICAgJycpCisgICAgICAgICMgdHdvIGFyZ3VtZW50IGNvbnN0cnVjdG9yIGlzIG9r
YXkKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycn
Y2xhc3MgRm9vIHsKKyAgICAgICAgICAgICAgICAgRm9vKGludCBmLCBpbnQgYik7CisgICAgICAg
ICAgICAgICB9OycnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICAjIHR3byBhcmd1bWVudCBj
b25zdHJ1Y3RvciwgYWNyb3NzIHR3byBsaW5lcywgaXMgb2theQorICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnJydjbGFzcyBGb28geworICAgICAgICAg
ICAgICAgICBGb28oaW50IGYsCisgICAgICAgICAgICAgICAgICAgICBpbnQgYik7CisgICAgICAg
ICAgICAgICB9OycnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICAjIG5vbi1jb25zdHJ1Y3Rv
ciAoYnV0IHNpbWlsYXIgbmFtZSksIGlzIG9rYXkKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAorICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKKyAgICAgICAgICAgICAgICAg
YUZvbyhpbnQgZik7CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICcnKQorICAg
ICAgICAjIGNvbnN0cnVjdG9yIHdpdGggdm9pZCBhcmd1bWVudCBpcyBva2F5CisgICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Cisg
ICAgICAgICAgICAgICAgIEZvbyh2b2lkKTsKKyAgICAgICAgICAgICAgIH07JycnLAorICAgICAg
ICAgICAgJycpCisgICAgICAgICMgc2luZ2xlIGFyZ3VtZW50IG1ldGhvZCBpcyBva2F5CisgICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ2NsYXNzIEZv
byB7CisgICAgICAgICAgICAgICAgIEJhcihpbnQgYik7CisgICAgICAgICAgICAgICB9OycnJywK
KyAgICAgICAgICAgICcnKQorICAgICAgICAjIGNvbW1lbnRzIHNob3VsZCBiZSBpZ25vcmVkCisg
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ2NsYXNz
IEZvbyB7CisgICAgICAgICAgICAgICAvLyBGb28oaW50IGYpOworICAgICAgICAgICAgICAgfTsn
JycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgIyBzaW5nbGUgYXJndW1lbnQgZnVuY3Rpb24g
Zm9sbG93aW5nIGNsYXNzIGRlZmluaXRpb24gaXMgb2theQorICAgICAgICAjIChva2F5LCBpdCdz
IG5vdCBhY3R1YWxseSB2YWxpZCwgYnV0IHdlIGRvbid0IHdhbnQgYSBmYWxzZSBwb3NpdGl2ZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnY2xh
c3MgRm9vIHsKKyAgICAgICAgICAgICAgICAgRm9vKGludCBmLCBpbnQgYik7CisgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgRm9vKGludCBmKTsnJycsCisgICAgICAgICAgICAnJykK
KyAgICAgICAgIyBzaW5nbGUgYXJndW1lbnQgZnVuY3Rpb24gaXMgb2theQorICAgICAgICBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnJydzdGF0aWMgRm9vKGludCBm
KTsnJycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgIyBzaW5nbGUgYXJndW1lbnQgY29weSBj
b25zdHJ1Y3RvciBpcyBva2F5LgorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQo
CisgICAgICAgICAgICAnJydjbGFzcyBGb28geworICAgICAgICAgICAgICAgICBGb28oY29uc3Qg
Rm9vJik7CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnJydjbGFzcyBGb28gewor
ICAgICAgICAgICAgICAgICBGb28oRm9vJik7CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAg
ICAgICAgICcnKQorCisgICAgZGVmIHRlc3Rfc2xhc2hfc3Rhcl9jb21tZW50X29uX3NpbmdsZV9s
aW5lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAg
ICAgICAnJycvKiBzdGF0aWMgKi8gRm9vKGludCBmKTsnJycsCisgICAgICAgICAgICAnJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnLyovIHN0
YXRpYyAqLyAgRm9vKGludCBmKTsnJycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnLyovIHN0YXRpYyBGb28oaW50
IGYpOycnJywKKyAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCBlbmQgb2YgbXVsdGktbGluZSBj
b21tZW50JworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50XSBb
NV0nKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAn
JycgICAgLyovIHN0YXRpYyBGb28oaW50IGYpOycnJywKKyAgICAgICAgICAgICdDb3VsZCBub3Qg
ZmluZCBlbmQgb2YgbXVsdGktbGluZSBjb21tZW50JworICAgICAgICAgICAgJyAgW3JlYWRhYmls
aXR5L211bHRpbGluZV9jb21tZW50XSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnQoCisgICAgICAgICAgICAnJycgICAgLyoqLyBzdGF0aWMgRm9vKGludCBmKTsnJycs
CisgICAgICAgICAgICAnJykKKworICAgICMgVGVzdCBzdXNwaWNpb3VzIHVzYWdlIG9mICJpZiIg
bGlrZSB0aGlzOgorICAgICMgaWYgKGEgPT0gYikgeworICAgICMgICBEb1NvbWV0aGluZygpOwor
ICAgICMgfSBpZiAoYSA9PSBjKSB7ICAgLy8gU2hvdWxkIGJlICJlbHNlIGlmIi4KKyAgICAjICAg
RG9Tb21ldGhpbmcoKTsgIC8vIFRoaXMgZ2V0cyBjYWxsZWQgdHdpY2UgaWYgYSA9PSBiICYmIGEg
PT0gYy4KKyAgICAjIH0KKyAgICBkZWYgdGVzdF9zdXNwaWNpb3VzX3VzYWdlX29mX2lmKHNlbGYp
OgorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJyAgICBpZiAoYSA9PSBi
KSB7JywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAg
ICAgICAgJyAgICB9IGlmIChhID09IGIpIHsnLAorICAgICAgICAgICAgJ0RpZCB5b3UgbWVhbiAi
ZWxzZSBpZiI/IElmIG5vdCwgc3RhcnQgYSBuZXcgbGluZSBmb3IgImlmIi4nCisgICAgICAgICAg
ICAnICBbcmVhZGFiaWxpdHkvYnJhY2VzXSBbNF0nKQorCisgICAgIyBUZXN0IHN1c3BpY2lvdXMg
dXNhZ2Ugb2YgbWVtc2V0LiBTcGVjaWZpY2FsbHksIGEgMAorICAgICMgYXMgdGhlIGZpbmFsIGFy
Z3VtZW50IGlzIGFsbW9zdCBjZXJ0YWlubHkgYW4gZXJyb3IuCisgICAgZGVmIHRlc3Rfc3VzcGlj
aW91c191c2FnZV9vZl9tZW1zZXQoc2VsZik6CisgICAgICAgICMgTm9ybWFsIHVzZSBpcyBva2F5
LgorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJyAgICBtZW1zZXQoYnVm
LCAwLCBzaXplb2YoYnVmKSknLAorICAgICAgICAgICAgJycpCisKKyAgICAgICAgIyBBIDAgYXMg
dGhlIGZpbmFsIGFyZ3VtZW50IGlzIGFsbW9zdCBjZXJ0YWlubHkgYW4gZXJyb3IuCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnICAgIG1lbXNldChidWYsIHNpemVvZihi
dWYpLCAwKScsCisgICAgICAgICAgICAnRGlkIHlvdSBtZWFuICJtZW1zZXQoYnVmLCAwLCBzaXpl
b2YoYnVmKSkiPycKKyAgICAgICAgICAgICcgIFtydW50aW1lL21lbXNldF0gWzRdJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICcgICAgbWVtc2V0KGJ1ZiwgeHNpemUg
KiB5c2l6ZSwgMCknLAorICAgICAgICAgICAgJ0RpZCB5b3UgbWVhbiAibWVtc2V0KGJ1ZiwgMCwg
eHNpemUgKiB5c2l6ZSkiPycKKyAgICAgICAgICAgICcgIFtydW50aW1lL21lbXNldF0gWzRdJykK
KworICAgICAgICAjIFRoZXJlIGlzIGxlZ2l0aW1hdGUgdGVzdCBjb2RlIHRoYXQgdXNlcyB0aGlz
IGZvcm0uCisgICAgICAgICMgVGhpcyBpcyBva2F5IHNpbmNlIHRoZSBzZWNvbmQgYXJndW1lbnQg
aXMgYSBsaXRlcmFsLgorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgIiAg
ICBtZW1zZXQoYnVmLCAneScsIDApIiwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFz
c2VydF9saW50KAorICAgICAgICAgICAgJyAgICBtZW1zZXQoYnVmLCA0LCAwKScsCisgICAgICAg
ICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICcgICAgbWVt
c2V0KGJ1ZiwgLTEsIDApJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KAorICAgICAgICAgICAgJyAgICBtZW1zZXQoYnVmLCAweEYxLCAwKScsCisgICAgICAgICAg
ICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICcgICAgbWVtc2V0
KGJ1ZiwgMHhjZCwgMCknLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9jaGVja19k
ZXByZWNhdGVkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVj
aygnZm9vLmNjJywgJyNpbmNsdWRlIDxpb3N0cmVhbT4nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnU3RyZWFtcyBhcmUgaGlnaGx5IGRpc2NvdXJhZ2VkLicKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L3N0
cmVhbXNdIFszXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdm
b29fdGVzdC5jYycsICcjaW5jbHVkZSA8aW9zdHJlYW0+JywgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb29fdW5pdHRlc3QuY2MnLCAnI2luY2x1ZGUgPGlv
c3RyZWFtPicsICcnKQorCisgICAgZGVmIHRlc3RfY2hlY2tfcG9zaXhfdGhyZWFkaW5nKHNlbGYp
OgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzY3RpbWVfcigpJywgJycpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ3N0cnRva19yKCknLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnICAgIHN0cnRva19yKGZvbywgYmEsIHIpJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2JyYW5kKCknLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnX3JhbmQoKScsICcn
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcucmFuZCgpJywgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJz5yYW5kKCknLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgncmFu
ZCgpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgcmFuZF9yKC4u
LikgaW5zdGVhZCBvZiByYW5kKC4uLiknCisgICAgICAgICAgICAgICAgICAgICAgICAgJyBmb3Ig
aW1wcm92ZWQgdGhyZWFkIHNhZmV0eS4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3J1
bnRpbWUvdGhyZWFkc2FmZV9mbl0gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3Ry
dG9rKCknLAorICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBzdHJ0b2tf
ciguLi4pICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnaW5zdGVhZCBvZiBzdHJ0b2soLi4u
KScKKyAgICAgICAgICAgICAgICAgICAgICAgICAnIGZvciBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5
LicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcnVudGltZS90aHJlYWRzYWZlX2ZuXSBb
Ml0nKQorCisgICAgIyBUZXN0IHBvdGVudGlhbCBmb3JtYXQgc3RyaW5nIGJ1Z3MgbGlrZSBwcmlu
dGYoZm9vKS4KKyAgICBkZWYgdGVzdF9mb3JtYXRfc3RyaW5ncyhzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgncHJpbnRmKCJmb28iKScsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdwcmludGYoImZvbzogJXMiLCBmb28pJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ0RvY2lkRm9yUHJpbnRmKGRvY2lkKScsICcnKSAgIyBTaG91bGQgbm90IHRyaWdnZXIuCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAncHJpbnRmKGZvbyknLAorICAg
ICAgICAgICAgJ1BvdGVudGlhbCBmb3JtYXQgc3RyaW5nIGJ1Zy4gRG8gcHJpbnRmKCIlcyIsIGZv
bykgaW5zdGVhZC4nCisgICAgICAgICAgICAnICBbcnVudGltZS9wcmludGZdIFs0XScpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAncHJpbnRmKGZvby5jX3N0cigpKScs
CisgICAgICAgICAgICAnUG90ZW50aWFsIGZvcm1hdCBzdHJpbmcgYnVnLiAnCisgICAgICAgICAg
ICAnRG8gcHJpbnRmKCIlcyIsIGZvby5jX3N0cigpKSBpbnN0ZWFkLicKKyAgICAgICAgICAgICcg
IFtydW50aW1lL3ByaW50Zl0gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAg
ICAgICAgICdwcmludGYoZm9vLT5jX3N0cigpKScsCisgICAgICAgICAgICAnUG90ZW50aWFsIGZv
cm1hdCBzdHJpbmcgYnVnLiAnCisgICAgICAgICAgICAnRG8gcHJpbnRmKCIlcyIsIGZvby0+Y19z
dHIoKSkgaW5zdGVhZC4nCisgICAgICAgICAgICAnICBbcnVudGltZS9wcmludGZdIFs0XScpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnU3RyaW5nUHJpbnRmKGZvbykn
LAorICAgICAgICAgICAgJ1BvdGVudGlhbCBmb3JtYXQgc3RyaW5nIGJ1Zy4gRG8gU3RyaW5nUHJp
bnRmKCIlcyIsIGZvbykgaW5zdGVhZC4nCisgICAgICAgICAgICAnJworICAgICAgICAgICAgJyAg
W3J1bnRpbWUvcHJpbnRmXSBbNF0nKQorCisgICAgIyBWYXJpYWJsZS1sZW5ndGggYXJyYXlzIGFy
ZSBub3QgcGVybWl0dGVkLgorICAgIGRlZiB0ZXN0X3ZhcmlhYmxlX2xlbmd0aF9hcnJheV9kZXRl
Y3Rpb24oc2VsZik6CisgICAgICAgIGVycm1zZyA9ICgnRG8gbm90IHVzZSB2YXJpYWJsZS1sZW5n
dGggYXJyYXlzLiAgVXNlIGFuIGFwcHJvcHJpYXRlbHkgbmFtZWQgJworICAgICAgICAgICAgICAg
ICAgIignaycgZm9sbG93ZWQgYnkgQ2FtZWxDYXNlKSBjb21waWxlLXRpbWUgY29uc3RhbnQgZm9y
IHRoZSBzaXplLiIKKyAgICAgICAgICAgICAgICAgICcgIFtydW50aW1lL2FycmF5c10gWzFdJykK
KworICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVthbnlfb2xkX3ZhcmlhYmxlXTsnLCBl
cnJtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBkb3VibGVzaXplW3NvbWVfdmFy
ICogMl07JywgZXJybXNnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVthZnVuY3Rp
b24oKV07JywgZXJybXNnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVtmdW5jdGlv
bihrTWF4Rm9vQmFycyldOycsIGVycm1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYm9v
bCBhX2xpc3RbaXRlbXNfLT5zaXplKCldOycsIGVycm1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnbmFtZXNwYWNlOjpUeXBlIGJ1ZmZlcltsZW4rMV07JywgZXJybXNnKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhWzY0XTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnaW50IGFbMHhGRl07JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBm
aXJzdFsyNTZdLCBzZWNvbmRbMjU2XTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
aW50IGFycmF5X25hbWVba0NvbXBpbGVUaW1lQ29uc3RhbnRdOycsICcnKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdjaGFyIGJ1Zltzb21lbmFtZXNwYWNlOjprQnVmU2l6ZV07JywgJycpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhcnJheV9uYW1lW0FMTF9DQVBTXTsnLCAnJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQUNsYXNzIGFycmF5MVtmb286OmJhcjo6QUxMX0NB
UFNdOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVtrTWF4U3RyTGVuICsg
MV07JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhW3NpemVvZihmb28pXTsn
LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbc2l6ZW9mKCpmb28pXTsnLCAn
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbc2l6ZW9mIGZvb107JywgJycpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhW3NpemVvZihzdHJ1Y3QgRm9vKV07JywgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhWzEyOCAtIHNpemVvZihjb25zdCBiYXIp
XTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbKHNpemVvZihmb28pICog
NCldOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVsoYXJyYXlzaXplKGZp
eGVkX3NpemVfYXJyYXkpLzIpIDw8IDFdOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdkZWxldGUgYVtzb21lX3Zhcl07JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3Jl
dHVybiBhW3NvbWVfdmFyXTsnLCAnJykKKworICAgICMgQnJhY2UgdXNhZ2UKKyAgICBkZWYgdGVz
dF9icmFjZXMoc2VsZik6CisgICAgICAgICMgQnJhY2VzIHNob3VsZG4ndCBiZSBmb2xsb3dlZCBi
eSBhIDsgdW5sZXNzIHRoZXkncmUgZGVmaW5pbmcgYSBzdHJ1Y3QKKyAgICAgICAgIyBvciBpbml0
aWFsaXppbmcgYW4gYXJyYXkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbM10gPSB7
IDEsIDIsIDMgfTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAg
ICcnJ2NvbnN0IGludCBmb29bXSA9CisgICAgICAgICAgICAgICAgICAgezEsIDIsIDMgfTsnJycs
CisgICAgICAgICAgICAnJykKKyAgICAgICAgIyBGb3Igc2luZ2xlIGxpbmUsIHVubWF0Y2hlZCAn
fScgd2l0aCBhICc7JyBpcyBpZ25vcmVkIChub3QgZW5vdWdoIGNvbnRleHQpCisgICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ2ludCBhWzNdID0geyAx
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMyB9OycnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnJydpbnQgYVsyXVszXSA9IHsgeyAxLCAyIH0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgMywgNCB9IH07JycnLAorICAgICAgICAgICAg
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcn
J2ludCBhWzJdWzNdID0KKyAgICAgICAgICAgICAgICAgICB7IHsgMSwgMiB9LAorICAgICAgICAg
ICAgICAgICAgICAgeyAzLCA0IH0gfTsnJycsCisgICAgICAgICAgICAnJykKKworICAgICMgQ0hF
Q0svRVhQRUNUX1RSVUUvRVhQRUNUX0ZBTFNFIHJlcGxhY2VtZW50cworICAgIGRlZiB0ZXN0X2No
ZWNrX2NoZWNrKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdDSEVDSyh4ID09IDQy
KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIENIRUNLX0VRIGlu
c3RlYWQgb2YgQ0hFQ0soYSA9PSBiKScKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVh
ZGFiaWxpdHkvY2hlY2tdIFsyXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0NIRUNLKHgg
IT0gNDIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgQ0hFQ0tf
TkUgaW5zdGVhZCBvZiBDSEVDSyhhICE9IGIpJworICAgICAgICAgICAgICAgICAgICAgICAgICcg
IFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQ0hF
Q0soeCA+PSA0MiknLAorICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBD
SEVDS19HRSBpbnN0ZWFkIG9mIENIRUNLKGEgPj0gYiknCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdDSEVDSyh4ID4gNDIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNp
bmcgQ0hFQ0tfR1QgaW5zdGVhZCBvZiBDSEVDSyhhID4gYiknCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdDSEVDSyh4IDw9IDQyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVy
IHVzaW5nIENIRUNLX0xFIGluc3RlYWQgb2YgQ0hFQ0soYSA8PSBiKScKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ0NIRUNLKHggPCA0MiknLAorICAgICAgICAgICAgICAgICAgICAgICAgICdDb25z
aWRlciB1c2luZyBDSEVDS19MVCBpbnN0ZWFkIG9mIENIRUNLKGEgPCBiKScKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnRENIRUNLKHggPT0gNDIpJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAnQ29uc2lkZXIgdXNpbmcgRENIRUNLX0VRIGluc3RlYWQgb2YgRENIRUNLKGEgPT0gYiknCisg
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdEQ0hFQ0soeCAhPSA0MiknLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICdDb25zaWRlciB1c2luZyBEQ0hFQ0tfTkUgaW5zdGVhZCBvZiBEQ0hFQ0soYSAh
PSBiKScKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsy
XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0RDSEVDSyh4ID49IDQyKScsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIERDSEVDS19HRSBpbnN0ZWFkIG9mIERD
SEVDSyhhID49IGIpJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9j
aGVja10gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRENIRUNLKHggPiA0MiknLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBEQ0hFQ0tfR1QgaW5zdGVh
ZCBvZiBEQ0hFQ0soYSA+IGIpJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJp
bGl0eS9jaGVja10gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRENIRUNLKHggPD0g
NDIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRENIRUNLX0xF
IGluc3RlYWQgb2YgRENIRUNLKGEgPD0gYiknCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAg
W3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdEQ0hF
Q0soeCA8IDQyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIERD
SEVDS19MVCBpbnN0ZWFkIG9mIERDSEVDSyhhIDwgYiknCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoCisgICAgICAgICAgICAnRVhQRUNUX1RSVUUoIjQyIiA9PSB4KScsCisgICAgICAgICAgICAn
Q29uc2lkZXIgdXNpbmcgRVhQRUNUX0VRIGluc3RlYWQgb2YgRVhQRUNUX1RSVUUoYSA9PSBiKScK
KyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKKyAgICAgICAgICAgICdFWFBFQ1RfVFJVRSgiNDIiICE9IHgpJywKKyAgICAg
ICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfTkUgaW5zdGVhZCBvZiBFWFBFQ1RfVFJVRShh
ICE9IGIpJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ0VYUEVDVF9UUlVFKCs0MiA+PSB4KScs
CisgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNUX0dFIGluc3RlYWQgb2YgRVhQRUNU
X1RSVUUoYSA+PSBiKScKKyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdFWFBFQ1RfVFJVRV9NKC00
MiA+IHgpJywKKyAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfR1RfTSBpbnN0ZWFk
IG9mIEVYUEVDVF9UUlVFX00oYSA+IGIpJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2No
ZWNrXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ0VYUEVD
VF9UUlVFX00oNDJVIDw9IHgpJywKKyAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1Rf
TEVfTSBpbnN0ZWFkIG9mIEVYUEVDVF9UUlVFX00oYSA8PSBiKScKKyAgICAgICAgICAgICcgIFty
ZWFkYWJpbGl0eS9jaGVja10gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAg
ICAgICAgICdFWFBFQ1RfVFJVRV9NKDQyTCA8IHgpJywKKyAgICAgICAgICAgICdDb25zaWRlciB1
c2luZyBFWFBFQ1RfTFRfTSBpbnN0ZWFkIG9mIEVYUEVDVF9UUlVFX00oYSA8IGIpJworICAgICAg
ICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoCisgICAgICAgICAgICAnRVhQRUNUX0ZBTFNFKHggPT0gNDIpJywKKyAgICAgICAgICAg
ICdDb25zaWRlciB1c2luZyBFWFBFQ1RfTkUgaW5zdGVhZCBvZiBFWFBFQ1RfRkFMU0UoYSA9PSBi
KScKKyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdFWFBFQ1RfRkFMU0UoeCAhPSA0MiknLAorICAg
ICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEVYUEVDVF9FUSBpbnN0ZWFkIG9mIEVYUEVDVF9GQUxT
RShhICE9IGIpJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAg
ICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ0VYUEVDVF9GQUxTRSh4ID49IDQy
KScsCisgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNUX0xUIGluc3RlYWQgb2YgRVhQ
RUNUX0ZBTFNFKGEgPj0gYiknCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsy
XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnQVNTRVJUX0ZBTFNF
KHggPiA0MiknLAorICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEFTU0VSVF9MRSBpbnN0ZWFk
IG9mIEFTU0VSVF9GQUxTRShhID4gYiknCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hl
Y2tdIFsyXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnQVNTRVJU
X0ZBTFNFKHggPD0gNDIpJywKKyAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBBU1NFUlRfR1Qg
aW5zdGVhZCBvZiBBU1NFUlRfRkFMU0UoYSA8PSBiKScKKyAgICAgICAgICAgICcgIFtyZWFkYWJp
bGl0eS9jaGVja10gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAg
ICdBU1NFUlRfRkFMU0VfTSh4IDwgNDIpJywKKyAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBB
U1NFUlRfR0VfTSBpbnN0ZWFkIG9mIEFTU0VSVF9GQUxTRV9NKGEgPCBiKScKKyAgICAgICAgICAg
ICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdDSEVDSyhzb21lX2l0ZXJhdG9yID09IG9iai5lbmQoKSknLCAnJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnRVhQRUNUX1RSVUUoc29tZV9pdGVyYXRvciA9PSBvYmouZW5kKCkpJywgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0VYUEVDVF9GQUxTRShzb21lX2l0ZXJhdG9yID09
IG9iai5lbmQoKSknLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soc29tZV9w
b2ludGVyICE9IE5VTEwpJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0VYUEVDVF9U
UlVFKHNvbWVfcG9pbnRlciAhPSBOVUxMKScsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdFWFBFQ1RfRkFMU0Uoc29tZV9wb2ludGVyICE9IE5VTEwpJywgJycpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnQ0hFQ0soQ3JlYXRlVGVzdEZpbGUoZGlyLCAoMSA8PCAyMCkpKTsnLCAn
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soQ3JlYXRlVGVzdEZpbGUoZGlyLCAo
MSA+PiAyMCkpKTsnLCAnJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50KCdDSEVDSyh4PDQy
KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgWydNaXNzaW5nIHNwYWNlcyBhcm91bmQgPCcK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10n
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgQ0hFQ0tfTFQgaW5z
dGVhZCBvZiBDSEVDSyhhIDwgYiknCisgICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFk
YWJpbGl0eS9jaGVja10gWzJdJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0NIRUNLKHg+
NDIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgQ0hFQ0tfR1Qg
aW5zdGVhZCBvZiBDSEVDSyhhID4gYiknCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3Jl
YWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAg
ICAgICAgICAnICAgIEVYUEVDVF9UUlVFKDQyIDwgeCkgIC8vIFJhbmRvbSBjb21tZW50LicsCisg
ICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNUX0xUIGluc3RlYWQgb2YgRVhQRUNUX1RS
VUUoYSA8IGIpJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAg
ICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ0VYUEVDVF9UUlVFKCA0MiA8IHgg
KScsCisgICAgICAgICAgICBbJ0V4dHJhIHNwYWNlIGFmdGVyICggaW4gZnVuY3Rpb24gY2FsbCcK
KyAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs0XScsCisgICAgICAgICAgICAg
J0NvbnNpZGVyIHVzaW5nIEVYUEVDVF9MVCBpbnN0ZWFkIG9mIEVYUEVDVF9UUlVFKGEgPCBiKScK
KyAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXSddKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KAorICAgICAgICAgICAgJ0NIRUNLKCJmb28iID09ICJmb28iKScsCisgICAg
ICAgICAgICAnQ29uc2lkZXIgdXNpbmcgQ0hFQ0tfRVEgaW5zdGVhZCBvZiBDSEVDSyhhID09IGIp
JworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ0NIRUNLX0VRKCJmb28iLCAiZm9vIiknLCAnJykKKworICAgIGRlZiB0
ZXN0X2JyYWNlX2F0X2JlZ2luX29mX2xpbmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3snLAorICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIHsgc2hvdWxkIGJlIGF0IHRo
ZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAg
W3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCisgICAgICAgICAgICAnI2VuZGlmXG4nCisgICAgICAgICAgICAne1xuJworICAgICAg
ICAgICAgJ31cbicsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAorICAgICAgICAgICAgJ2lmIChjb25kaXRpb24pIHsnLAorICAgICAgICAgICAg
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdp
bnQgZm9vKCkgeycsCisgICAgICAgICAgICAnUGxhY2UgYnJhY2Ugb24gaXRzIG93biBsaW5lIGZv
ciBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2ludCBmb28oKSBj
b25zdCB7JywKKyAgICAgICAgICAgICdQbGFjZSBicmFjZSBvbiBpdHMgb3duIGxpbmUgZm9yIGZ1
bmN0aW9uIGRlZmluaXRpb25zLiAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQorICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnaW50IGZvbygpIGNvbnN0
XG4nCisgICAgICAgICAgICAne1xuJworICAgICAgICAgICAgJ31cbicsCisgICAgICAgICAgICAn
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2lm
IChjb25kaXRpb24gJiZcbicKKyAgICAgICAgICAgICcgICAgY29uZGl0aW9uMiAmJlxuJworICAg
ICAgICAgICAgJyAgICBjb25kaXRpb24zKSB7XG4nLAorICAgICAgICAgICAgJycpCisKKyAgICBk
ZWYgdGVzdF9taXNtYXRjaGluZ19zcGFjZXNfaW5fcGFyZW5zKHNlbGYpOgorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdpZiAoZm9vICkgeycsICdNaXNtYXRjaGluZyBzcGFjZXMgaW5zaWRlICgp
IGluIGlmJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10g
WzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3dpdGNoICggZm9vKSB7JywgJ01pc21h
dGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkgaW4gc3dpdGNoJworICAgICAgICAgICAgICAgICAgICAg
ICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnZm9yIChmb287IGJhOyBiYXIgKSB7JywgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkg
aW4gZm9yJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10g
WzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICg7IGZvbzsgYmFyKSB7JywgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoIDsgZm9vOyBiYXIpIHsnLCAnJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICggOyBmb287IGJhciApIHsnLCAnJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChmb287IGJhcjsgKSB7JywgJycpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ3doaWxlICggIGZvbyAgKSB7JywgJ1Nob3VsZCBoYXZlIHplcm8gb3Ig
b25lIHNwYWNlcyBpbnNpZGUnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAoIGFuZCApIGlu
IHdoaWxlICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCisKKyAgICBkZWYgdGVzdF9zcGFjaW5n
X2Zvcl9mbmNhbGwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb28pIHsn
LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChmb287YmFyO2JheikgeycsICcn
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCd3aGlsZSAoZm9vKSB7JywgJycpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ3N3aXRjaCAoZm9vKSB7JywgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ25ldyAoUmVuZGVyQXJlbmEoKSkgUmVuZGVySW5saW5lKGRvY3VtZW50KCkpJywg
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvbyggYmFyKScsICdFeHRyYSBzcGFjZSBh
ZnRlciAoIGluIGZ1bmN0aW9uIGNhbGwnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3do
aXRlc3BhY2UvcGFyZW5zXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb29iYXIo
IFxcJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2Zvb2JhciggICAgIFxcJywgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyggYSArIGIpJywgJ0V4dHJhIHNwYWNlIGFmdGVy
ICgnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbMl0n
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcoKGErYikpJywgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ2ZvbyAoZm9vKScsICdFeHRyYSBzcGFjZSBiZWZvcmUgKCBpbiBmdW5jdGlv
biBjYWxsJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10g
WzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndHlwZWRlZiBmb28gKCpmb28pKGZvbykn
LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndHlwZWRlZiBmb28gKCpmb28xMmJhcl8p
KGZvbyknLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndHlwZWRlZiBmb28gKEZvbzo6
KmJhcikoZm9vKScsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb28gKEZvbzo6KmJh
cikoJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgYmVmb3JlICggaW4g
ZnVuY3Rpb24gY2FsbCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9w
YXJlbnNdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5cGVkZWYgZm9vIChGb286
OipiYXIpKCcsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcoZm9vKShiYXIpJywgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0ZvbyAoKmZvbykoYmFyKScsICcnKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdGb28gKCpmb28pKEJhciBiYXIsJywgJycpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ2NoYXIgKCpwKVtzaXplb2YoZm9vKV0gPSAmZm9vJywgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NoYXIgKCZyZWYpW3NpemVvZihmb28pXSA9ICZmb28nLCAn
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnY29uc3QgY2hhcjMyICgqdGFibGVbXSlbNl07
JywgJycpCisKKyAgICBkZWYgdGVzdF9zcGFjaW5nX2JlZm9yZV9icmFjZXMoc2VsZik6CisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb28peycsICdNaXNzaW5nIHNwYWNlIGJlZm9yZSB7
JworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzVdJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yeycsICdNaXNzaW5nIHNwYWNlIGJlZm9yZSB7
JworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzVdJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIHsnLCAnJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnRVhQRUNUX0RFQlVHX0RFQVRIKHsnLCAnJykKKworICAgIGRlZiB0ZXN0X3NwYWNp
bmdfYXJvdW5kX2Vsc2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ31lbHNlIHsn
LCAnTWlzc2luZyBzcGFjZSBiZWZvcmUgZWxzZScKKyAgICAgICAgICAgICAgICAgICAgICAgICAn
ICBbd2hpdGVzcGFjZS9icmFjZXNdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ30g
ZWxzZXsnLCAnTWlzc2luZyBzcGFjZSBiZWZvcmUgeycKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAnICBbd2hpdGVzcGFjZS9icmFjZXNdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J30gZWxzZSB7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ30gZWxzZSBpZicsICcn
KQorCisgICAgZGVmIHRlc3Rfc3BhY2luZ19mb3JfYmluYXJ5X29wcyhzZWxmKToKKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnaWYgKGZvbzw9YmFyKSB7JywgJ01pc3Npbmcgc3BhY2VzIGFyb3Vu
ZCA8PScKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNd
IFszXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb288YmFyKSB7JywgJ01pc3Np
bmcgc3BhY2VzIGFyb3VuZCA8JworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNw
YWNlL29wZXJhdG9yc10gWzNdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaWYgKGZvbzxi
YXItPmJheikgeycsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPCcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAnICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ2lmIChmb288YmFyLT5iYXIpIHsnLCAnTWlzc2luZyBzcGFjZXMgYXJvdW5kIDwn
CisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10n
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCd0eXBlZGVmIGhhc2hfbWFwPEZvbywgQmFyJywg
J01pc3Npbmcgc3BhY2VzIGFyb3VuZCA8JworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3
aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndHlw
ZWRlZiBoYXNoX21hcDxGb29vb29UeXBlLCBCYWFhYWFyVHlwZSwnLCAnJykKKworICAgIGRlZiB0
ZXN0X3NwYWNpbmdfYmVmb3JlX2xhc3Rfc2VtaWNvbG9uKHNlbGYpOgorICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdjYWxsX2Z1bmN0aW9uKCkgOycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
J0V4dHJhIHNwYWNlIGJlZm9yZSBsYXN0IHNlbWljb2xvbi4gSWYgdGhpcyBzaG91bGQgYmUgYW4g
JworICAgICAgICAgICAgICAgICAgICAgICAgICdlbXB0eSBzdGF0ZW1lbnQsIHVzZSB7IH0gaW5z
dGVhZC4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvc2VtaWNvbG9u
XSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCd3aGlsZSAodHJ1ZSkgOycsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSBsYXN0IHNlbWljb2xvbi4g
SWYgdGhpcyBzaG91bGQgYmUgYW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICdlbXB0eSBz
dGF0ZW1lbnQsIHVzZSB7IH0gaW5zdGVhZC4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAg
W3doaXRlc3BhY2Uvc2VtaWNvbG9uXSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdk
ZWZhdWx0OjsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdTZW1pY29sb24gZGVmaW5pbmcg
ZW1wdHkgc3RhdGVtZW50LiBVc2UgeyB9IGluc3RlYWQuJworICAgICAgICAgICAgICAgICAgICAg
ICAgICcgIFt3aGl0ZXNwYWNlL3NlbWljb2xvbl0gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnICAgICAgOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0xpbmUgY29udGFpbnMg
b25seSBzZW1pY29sb24uIElmIHRoaXMgc2hvdWxkIGJlIGFuIGVtcHR5ICcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnc3RhdGVtZW50LCB1c2UgeyB9IGluc3RlYWQuJworICAgICAgICAgICAg
ICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3NlbWljb2xvbl0gWzVdJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnZm9yIChpbnQgaSA9IDA7IDsnLCAnJykKKworICAgICMgU3RhdGljIG9y
IGdsb2JhbCBTVEwgc3RyaW5ncy4KKyAgICBkZWYgdGVzdF9zdGF0aWNfb3JfZ2xvYmFsX3N0bHN0
cmluZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmluZyBmb287JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAnRm9yIGEgc3RhdGljL2dsb2JhbCBzdHJpbmcgY29uc3Rh
bnQsIHVzZSBhIEMgc3R5bGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcgaW5z
dGVhZDogImNoYXIgZm9vW10iLicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcnVudGlt
ZS9zdHJpbmddIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmluZyBrRm9vID0g
ImhlbGxvIjsgIC8vIEVuZ2xpc2gnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdGb3IgYSBz
dGF0aWMvZ2xvYmFsIHN0cmluZyBjb25zdGFudCwgdXNlIGEgQyBzdHlsZSAnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3N0cmluZyBpbnN0ZWFkOiAiY2hhciBrRm9vW10iLicKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAnICBbcnVudGltZS9zdHJpbmddIFs0XScpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ3N0YXRpYyBzdHJpbmcgZm9vOycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0ZvciBhIHN0YXRpYy9nbG9iYWwgc3RyaW5nIGNvbnN0YW50LCB1c2UgYSBDIHN0eWxlICcK
KyAgICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nIGluc3RlYWQ6ICJzdGF0aWMgY2hhciBm
b29bXSIuJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtydW50aW1lL3N0cmluZ10gWzRd
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RhdGljIGNvbnN0IHN0cmluZyBmb287JywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAnRm9yIGEgc3RhdGljL2dsb2JhbCBzdHJpbmcgY29u
c3RhbnQsIHVzZSBhIEMgc3R5bGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcg
aW5zdGVhZDogInN0YXRpYyBjb25zdCBjaGFyIGZvb1tdIi4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJyAgW3J1bnRpbWUvc3RyaW5nXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdzdHJpbmcgRm9vOjpiYXI7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRm9yIGEgc3Rh
dGljL2dsb2JhbCBzdHJpbmcgY29uc3RhbnQsIHVzZSBhIEMgc3R5bGUgJworICAgICAgICAgICAg
ICAgICAgICAgICAgICdzdHJpbmcgaW5zdGVhZDogImNoYXIgRm9vOjpiYXJbXSIuJworICAgICAg
ICAgICAgICAgICAgICAgICAgICcgIFtydW50aW1lL3N0cmluZ10gWzRdJykKKyAgICAgICAgIyBS
YXJlIGNhc2UuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmluZyBmb28oImZvb2JhciIp
OycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZvciBhIHN0YXRpYy9nbG9iYWwgc3RyaW5n
IGNvbnN0YW50LCB1c2UgYSBDIHN0eWxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3Ry
aW5nIGluc3RlYWQ6ICJjaGFyIGZvb1tdIi4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAg
W3J1bnRpbWUvc3RyaW5nXSBbNF0nKQorICAgICAgICAjIFNob3VsZCBub3QgY2F0Y2ggbG9jYWwg
b3IgbWVtYmVyIHZhcmlhYmxlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgIHN0cmlu
ZyBmb28nLCAnJykKKyAgICAgICAgIyBTaG91bGQgbm90IGNhdGNoIGZ1bmN0aW9ucy4KKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnc3RyaW5nIEVtcHR5U3RyaW5nKCkgeyByZXR1cm4gIiI7IH0n
LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RyaW5nIEVtcHR5U3RyaW5nICgpIHsg
cmV0dXJuICIiOyB9JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmluZyBWZXJ5
TG9uZ05hbWVGdW5jdGlvblNvbWV0aW1lc0VuZHNXaXRoKFxuJworICAgICAgICAgICAgICAgICAg
ICAgICAgICcgICAgVmVyeUxvbmdOYW1lVHlwZSB2ZXJ5X2xvbmdfbmFtZV92YXJpYWJsZSkge30n
LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndGVtcGxhdGU8PlxuJworICAgICAgICAg
ICAgICAgICAgICAgICAgICdzdHJpbmcgRnVuY3Rpb25UZW1wbGF0ZVNwZWNpYWxpemF0aW9uPFNv
bWVUeXBlPihcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgaW50IHgpIHsgcmV0
dXJuICIiOyB9JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3RlbXBsYXRlPD5cbicK
KyAgICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nIEZ1bmN0aW9uVGVtcGxhdGVTcGVjaWFs
aXphdGlvbjx2ZWN0b3I8QTo6Qj4qID4oXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAg
ICAgIGludCB4KSB7IHJldHVybiAiIjsgfScsICcnKQorCisgICAgICAgICMgc2hvdWxkIG5vdCBj
YXRjaCBtZXRob2RzIG9mIHRlbXBsYXRlIGNsYXNzZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3N0cmluZyBDbGFzczxUeXBlPjo6TWV0aG9kKCkgY29uc3RcbicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAne1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIHJldHVybiAiIjtc
bicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJywgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ3N0cmluZyBDbGFzczxUeXBlPjo6TWV0aG9kKFxuJworICAgICAgICAgICAgICAg
ICAgICAgICAgICcgICBpbnQgYXJnKSBjb25zdFxuJworICAgICAgICAgICAgICAgICAgICAgICAg
ICd7XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgcmV0dXJuICIiO1xuJworICAgICAg
ICAgICAgICAgICAgICAgICAgICd9XG4nLCAnJykKKworICAgIGRlZiB0ZXN0X25vX3NwYWNlc19p
bl9mdW5jdGlvbl9jYWxscyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnVGVsbFN0
b3J5KDEsIDMpOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ1RlbGxTdG9yeSgxLCAzICk7JywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAnRXh0cmEgc3BhY2UgYmVmb3JlICknCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3do
aXRlc3BhY2UvcGFyZW5zXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdUZWxsU3Rv
cnkoMSAvKiB3b2xmICovLCAzIC8qIHBpZ3MgKi8pOycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgnI2VuZGlmXG4gICAg
KTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYg
dGVzdF90d29fc3BhY2VzX2JldHdlZW5fY29kZV9hbmRfY29tbWVudHMoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ30gLy8gbmFtZXNwYWNlIGZvbycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0F0IGxlYXN0IHR3byBzcGFjZXMgaXMgYmVzdCBiZXR3ZWVuIGNvZGUgYW5kIGNv
bW1lbnRzJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2NvbW1lbnRz
XSBbMl0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCd9Ly8gbmFtZXNwYWNlIGZvbycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0F0IGxlYXN0IHR3byBzcGFjZXMgaXMgYmVzdCBiZXR3
ZWVuIGNvZGUgYW5kIGNvbW1lbnRzJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0
ZXNwYWNlL2NvbW1lbnRzXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdwcmludGYo
ImZvbyIpOyAvLyBPdXRzaWRlIHF1b3Rlcy4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdB
dCBsZWFzdCB0d28gc3BhY2VzIGlzIGJlc3QgYmV0d2VlbiBjb2RlIGFuZCBjb21tZW50cycKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9jb21tZW50c10gWzJdJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGkgPSAwOyAgLy8gSGF2aW5nIHR3byBzcGFjZXMg
aXMgZmluZS4nLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGkgPSAwOyAgIC8v
IEhhdmluZyB0aHJlZSBzcGFjZXMgaXMgT0suJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJy8vIFRvcCBsZXZlbCBjb21tZW50JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
JyAgICAvLyBMaW5lIHN0YXJ0cyB3aXRoIGZvdXIgc3BhY2VzLicsICcnKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdmb28oKTtcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAneyAvLyBB
IHNjb3BlIGlzIG9wZW5pbmcuJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgICBm
b28oKTtcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIHsgLy8gQW4gaW5kZW50ZWQg
c2NvcGUgaXMgb3BlbmluZy4nLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaWYgKGZv
bykgeyAvLyBub3QgYSBwdXJlIHNjb3BlOyBjb21tZW50IGlzIHRvbyBjbG9zZSEnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICdBdCBsZWFzdCB0d28gc3BhY2VzIGlzIGJlc3QgYmV0d2VlbiBj
b2RlIGFuZCBjb21tZW50cycKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFj
ZS9jb21tZW50c10gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgncHJpbnRmKCIvLyBJ
biBxdW90ZXMuIiknLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgncHJpbnRmKCJcXCIl
cyAvLyBJbiBxdW90ZXMuIiknLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgncHJpbnRm
KCIlcyIsICIvLyBJbiBxdW90ZXMuIiknLCAnJykKKworICAgIGRlZiB0ZXN0X3NwYWNlX2FmdGVy
X2NvbW1lbnRfbWFya2VyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcvLycsICcn
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcvL3gnLCAnU2hvdWxkIGhhdmUgYSBzcGFjZSBi
ZXR3ZWVuIC8vIGFuZCBjb21tZW50JworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0
ZXNwYWNlL2NvbW1lbnRzXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcvLyB4Jywg
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8vLS0tLScsICcnKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCcvLz09PT0nLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy8v
Ly8vJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8vLy8vLyB4JywgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8vLyB4JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJy8vLy94JywgJ1Nob3VsZCBoYXZlIGEgc3BhY2UgYmV0d2VlbiAvLyBhbmQgY29tbWVudCcK
KyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9jb21tZW50c10gWzRdJykK
KworICAgIGRlZiB0ZXN0X25ld2xpbmVfYXRfZW9mKHNlbGYpOgorICAgICAgICBkZWYgZG9fdGVz
dChzZWxmLCBkYXRhLCBpc19taXNzaW5nX2VvZik6CisgICAgICAgICAgICBlcnJvcl9jb2xsZWN0
b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisgICAgICAgICAgICBjcHBsaW50LnBy
b2Nlc3NfZmlsZV9kYXRhKCdmb28uY2MnLCAnY2MnLCBkYXRhLnNwbGl0KCdcbicpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAg
ICAgICAjIFRoZSB3YXJuaW5nIGFwcGVhcnMgb25seSBvbmNlLgorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoCisgICAgICAgICAgICAgICAgaW50KGlzX21pc3NpbmdfZW9mKSwKKyAgICAg
ICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpLmNvdW50KAorICAgICAgICAgICAg
ICAgICAgICAnQ291bGQgbm90IGZpbmQgYSBuZXdsaW5lIGNoYXJhY3RlciBhdCB0aGUgZW5kIG9m
IHRoZSBmaWxlLicKKyAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvZW5kaW5nX25l
d2xpbmVdIFs1XScpKQorCisgICAgICAgIGRvX3Rlc3Qoc2VsZiwgJy8vIE5ld2xpbmVcbi8vIGF0
IEVPRlxuJywgRmFsc2UpCisgICAgICAgIGRvX3Rlc3Qoc2VsZiwgJy8vIE5vIG5ld2xpbmVcbi8v
IGF0IEVPRicsIFRydWUpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3V0Zjgoc2VsZik6CisgICAg
ICAgIGRlZiBkb190ZXN0KHNlbGYsIHJhd19ieXRlcywgaGFzX2ludmFsaWRfdXRmOCk6CisgICAg
ICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisg
ICAgICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmlsZV9kYXRhKAorICAgICAgICAgICAgICAgICdm
b28uY2MnLCAnY2MnLAorICAgICAgICAgICAgICAgIHVuaWNvZGUocmF3X2J5dGVzLCAndXRmOCcs
ICdyZXBsYWNlJykuc3BsaXQoJ1xuJyksCisgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9y
KQorICAgICAgICAgICAgIyBUaGUgd2FybmluZyBhcHBlYXJzIG9ubHkgb25jZS4KKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorICAgICAgICAgICAgICAgIGludChoYXNfaW52YWxpZF91
dGY4KSwKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpLmNvdW50KAor
ICAgICAgICAgICAgICAgICAgICAnTGluZSBjb250YWlucyBpbnZhbGlkIFVURi04JworICAgICAg
ICAgICAgICAgICAgICAnIChvciBVbmljb2RlIHJlcGxhY2VtZW50IGNoYXJhY3RlcikuJworICAg
ICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvdXRmOF0gWzVdJykpCisKKyAgICAgICAg
ZG9fdGVzdChzZWxmLCAnSGVsbG8gd29ybGRcbicsIEZhbHNlKQorICAgICAgICBkb190ZXN0KHNl
bGYsICdceGU5XHg4ZVx4YmRcbicsIEZhbHNlKQorICAgICAgICBkb190ZXN0KHNlbGYsICdceGU5
eFx4OGVceGJkXG4nLCBUcnVlKQorICAgICAgICAjIFRoaXMgaXMgdGhlIGVuY29kaW5nIG9mIHRo
ZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgaXRzZWxmICh3aGljaAorICAgICAgICAjIHlvdSBjYW4g
c2VlIGJ5IGV2YWx1YXRpbmcgY29kZWNzLmdldGVuY29kZXIoJ3V0ZjgnKSh1J1x1ZmZmZCcpKS4K
KyAgICAgICAgZG9fdGVzdChzZWxmLCAnXHhlZlx4YmZceGJkXG4nLCBUcnVlKQorCisgICAgZGVm
IHRlc3RfaXNfYmxhbmtfbGluZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfKGNwcGxpbnQu
aXNfYmxhbmtfbGluZSgnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0XyhjcHBsaW50LmlzX2JsYW5r
X2xpbmUoJyAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRfKGNwcGxpbnQuaXNfYmxhbmtfbGluZSgn
IFx0XHJcbicpKQorICAgICAgICBzZWxmLmFzc2VydF8obm90IGNwcGxpbnQuaXNfYmxhbmtfbGlu
ZSgnaW50IGE7JykpCisgICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwbGludC5pc19ibGFua19s
aW5lKCd7JykpCisKKyAgICBkZWYgdGVzdF9ibGFua19saW5lc19jaGVjayhzZWxmKToKKyAgICAg
ICAgc2VsZi5hc3NlcnRfYmxhbmtfbGluZXNfY2hlY2soWyd7XG4nLCAnXG4nLCAnXG4nLCAnfVxu
J10sIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2JsYW5rX2xpbmVzX2NoZWNrKFsnICBpZiAo
Zm9vKSB7XG4nLCAnXG4nLCAnICB9XG4nXSwgMSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfYmxh
bmtfbGluZXNfY2hlY2soCisgICAgICAgICAgICBbJ1xuJywgJy8vIHtcbicsICdcbicsICdcbics
ICcvLyBDb21tZW50XG4nLCAne1xuJywgJ31cbiddLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2Vy
dF9ibGFua19saW5lc19jaGVjayhbJ1xuJywgJ3J1bigieyIpO1xuJywgJ1xuJ10sIDAsIDApCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2JsYW5rX2xpbmVzX2NoZWNrKFsnXG4nLCAnICBpZiAoZm9vKSB7
IHJldHVybiAwOyB9XG4nLCAnXG4nXSwgMCwgMCkKKworICAgIGRlZiB0ZXN0X2FsbG93X2JsYW5r
X2xpbmVfYmVmb3JlX2Nsb3NpbmdfbmFtZXNwYWNlKHNlbGYpOgorICAgICAgICBlcnJvcl9jb2xs
ZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisgICAgICAgIGNwcGxpbnQucHJv
Y2Vzc19maWxlX2RhdGEoJ2Zvby5jYycsICdjYycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWyduYW1lc3BhY2UgeycsICcnLCAnfSAgLy8gbmFtZXNwYWNlJ10sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygwLCBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpLmNvdW50KAorICAgICAg
ICAgICAgJ0JsYW5rIGxpbmUgYXQgdGhlIGVuZCBvZiBhIGNvZGUgYmxvY2suICBJcyB0aGlzIG5l
ZWRlZD8nCisgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9ibGFua19saW5lXSBbM10nKSkKKwor
ICAgIGRlZiB0ZXN0X2FsbG93X2JsYW5rX2xpbmVfYmVmb3JlX2lmX2Vsc2VfY2hhaW4oc2VsZik6
CisgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykK
KyAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVfZGF0YSgnZm9vLmNjJywgJ2NjJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2lmIChob2dlKSB7JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJycsICAjIE5vIHdhcm5pbmcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ30gZWxzZSBpZiAocGl5bykgeycsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcnLCAgIyBObyB3YXJuaW5nCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd9IGVsc2UgaWYgKHBpeW9waXlvKSB7JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgaG9nZSA9IHRydWU7JywgICMgTm8gd2FybmluZwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfSBlbHNlIHsnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgICMgV2FybmluZyBvbiB0aGlzIGxpbmUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ30nXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cygxLCBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpLmNvdW50KAorICAgICAgICAgICAgJ0JsYW5r
IGxpbmUgYXQgdGhlIGVuZCBvZiBhIGNvZGUgYmxvY2suICBJcyB0aGlzIG5lZWRlZD8nCisgICAg
ICAgICAgICAnICBbd2hpdGVzcGFjZS9ibGFua19saW5lXSBbM10nKSkKKworICAgIGRlZiB0ZXN0
X2Vsc2Vfb25fc2FtZV9saW5lX2FzX2Nsb3NpbmdfYnJhY2VzKHNlbGYpOgorICAgICAgICBlcnJv
cl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisgICAgICAgIGNwcGxp
bnQucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jYycsICdjYycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWydpZiAoaG9nZSkgeycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfScsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgZWxzZSB7JyAgIyBXYXJuaW5nIG9u
IHRoaXMgbGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ30nXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KDEsIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkuY291bnQoCisgICAgICAgICAgICAnQW4gZWxz
ZSBzaG91bGQgYXBwZWFyIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIHByZWNlZGluZyB9JworICAg
ICAgICAgICAgJyAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJykpCisKKyAgICBkZWYgdGVzdF9l
bHNlX2NsYXVzZV9ub3Rfb25fc2FtZV9saW5lX2FzX2Vsc2Uoc2VsZik6CisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJyAgICBlbHNlIERvU29tZXRoaW5nRWxzZSgpOycsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0Vsc2UgY2xhdXNlIHNob3VsZCBuZXZlciBiZSBvbiBzYW1lIGxpbmUgYXMg
ZWxzZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyh1c2UgMiBsaW5lcykgIFt3aGl0ZXNw
YWNlL25ld2xpbmVdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgICBlbHNlIGlm
RG9Tb21ldGhpbmdFbHNlKCk7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRWxzZSBjbGF1
c2Ugc2hvdWxkIG5ldmVyIGJlIG9uIHNhbWUgbGluZSBhcyBlbHNlICcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAnKHVzZSAyIGxpbmVzKSAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgIGVsc2UgaWYgKGJsYWgpIHsnLCAnJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnICAgIHZhcmlhYmxlX2VuZHNfaW5fZWxzZSA9IHRydWU7Jywg
JycpCisKKyAgICBkZWYgdGVzdF9jb21tYShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnYSA9IGYoMSwyKTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNaXNzaW5nIHNwYWNl
IGFmdGVyICwgIFt3aGl0ZXNwYWNlL2NvbW1hXSBbM10nKQorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdpbnQgdG1wPWEsYT1iLGI9dG1wOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgWydN
aXNzaW5nIHNwYWNlcyBhcm91bmQgPSAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbNF0nLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAnTWlzc2luZyBzcGFjZSBhZnRlciAsICBbd2hpdGVzcGFj
ZS9jb21tYV0gWzNdJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2YoYSwgLyogbmFtZSAq
LyBiKTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZihhLCAvKiBuYW1lICovYik7
JywgJycpCisKKyAgICBkZWYgdGVzdF9pbmRlbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ3N0YXRpYyBpbnQgbm9pbmRlbnQ7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJyAgICBpbnQgZm91cl9zcGFjZV9pbmRlbnQ7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJyBpbnQgb25lX3NwYWNlX2luZGVudDsnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICdXZWlyZCBudW1iZXIgb2Ygc3BhY2VzIGF0IGxpbmUtc3RhcnQuICAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0FyZSB5b3UgdXNpbmcgYSA0LXNwYWNlIGluZGVudD8gIFt3aGl0ZXNwYWNl
L2luZGVudF0gWzNdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgaW50IHRocmVlX3Nw
YWNlX2luZGVudDsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdXZWlyZCBudW1iZXIgb2Yg
c3BhY2VzIGF0IGxpbmUtc3RhcnQuICAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0FyZSB5
b3UgdXNpbmcgYSA0LXNwYWNlIGluZGVudD8gIFt3aGl0ZXNwYWNlL2luZGVudF0gWzNdJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnIGNoYXIqIG9uZV9zcGFjZV9pbmRlbnQgPSAicHVibGlj
OiI7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnV2VpcmQgbnVtYmVyIG9mIHNwYWNlcyBh
dCBsaW5lLXN0YXJ0LiAgJworICAgICAgICAgICAgICAgICAgICAgICAgICdBcmUgeW91IHVzaW5n
IGEgNC1zcGFjZSBpbmRlbnQ/ICBbd2hpdGVzcGFjZS9pbmRlbnRdIFszXScpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJyBwdWJsaWM6JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
JyAgcHVibGljOicsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICBwdWJsaWM6Jywg
JycpCisKKyAgICBkZWYgdGVzdF9sYWJlbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgncHVibGljOicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0xhYmVscyBzaG91bGQgYWx3
YXlzIGJlIGluZGVudGVkIGF0IGxlYXN0IG9uZSBzcGFjZS4gICcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAnSWYgdGhpcyBpcyBhIG1lbWJlci1pbml0aWFsaXplciBsaXN0IGluIGEgY29uc3Ry
dWN0b3IsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIGNvbG9uIHNob3VsZCBiZSBv
biB0aGUgbGluZSBhZnRlciB0aGUgZGVmaW5pdGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2hlYWRlci4gIFt3aGl0ZXNwYWNlL2xhYmVsc10gWzRdJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnICBwdWJsaWM6JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgIHB1
YmxpYzonLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnIHB1YmxpYzonLCAnJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnICBwdWJsaWM6JywgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJyAgIHB1YmxpYzonLCAnJykKKworICAgIGRlZiB0ZXN0X25vdF9hbGFiZWwoc2Vs
Zik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ015VmVyeUxvbmdOYW1lc3BhY2U6Ok15VmVy
eUxvbmdDbGFzc05hbWU6OicsICcnKQorCisgICAgZGVmIHRlc3RfdGFiKHNlbGYpOgorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdcdGludCBhOycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
J1RhYiBmb3VuZDsgYmV0dGVyIHRvIHVzZSBzcGFjZXMgIFt3aGl0ZXNwYWNlL3RhYl0gWzFdJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGEgPSA1O1x0XHQvLyBzZXQgYSB0byA1JywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAnVGFiIGZvdW5kOyBiZXR0ZXIgdG8gdXNlIHNwYWNl
cyAgW3doaXRlc3BhY2UvdGFiXSBbMV0nKQorCisgICAgZGVmIHRlc3RfcGFyc2VfYXJndW1lbnRz
KHNlbGYpOgorICAgICAgICBvbGRfdXNhZ2UgPSBjcHBsaW50Ll9VU0FHRQorICAgICAgICBvbGRf
ZXJyb3JfY2F0ZWdvcmllcyA9IGNwcGxpbnQuX0VSUk9SX0NBVEVHT1JJRVMKKyAgICAgICAgb2xk
X291dHB1dF9mb3JtYXQgPSBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLm91dHB1dF9mb3JtYXQKKyAg
ICAgICAgb2xkX3ZlcmJvc2VfbGV2ZWwgPSBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLnZlcmJvc2Vf
bGV2ZWwKKyAgICAgICAgb2xkX2ZpbHRlcnMgPSBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLmZpbHRl
cnMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBEb24ndCBwcmludCB1c2FnZSBkdXJpbmcg
dGhlIHRlc3RzLCBvciBmaWx0ZXIgY2F0ZWdvcmllcworICAgICAgICAgICAgY3BwbGludC5fVVNB
R0UgPSAnJworICAgICAgICAgICAgY3BwbGludC5fRVJST1JfQ0FURUdPUklFUyA9ICcnCisKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIGNwcGxpbnQucGFyc2VfYXJn
dW1lbnRzLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIGNw
cGxpbnQucGFyc2VfYXJndW1lbnRzLCBbJy0tYmFkb3B0J10pCisgICAgICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cywgWyctLWhlbHAn
XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIGNwcGxpbnQucGFy
c2VfYXJndW1lbnRzLCBbJy0tdj0wJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhT
eXN0ZW1FeGl0LCBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cywgWyctLWZpbHRlcj0nXSkKKyAgICAg
ICAgICAgICMgVGhpcyBpcyBpbGxlZ2FsIGJlY2F1c2UgYWxsIGZpbHRlcnMgbXVzdCBzdGFydCB3
aXRoICsgb3IgLQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgY3Bw
bGludC5wYXJzZV9hcmd1bWVudHMsIFsnLS1maWx0ZXI9Zm9vJ10pCisgICAgICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsnLS1maWx0ZXI9K2EsYiwtYyddKQorCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ2Zvby5jYyddLCBjcHBsaW50LnBhcnNlX2FyZ3VtZW50
cyhbJ2Zvby5jYyddKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9sZF9vdXRwdXRf
Zm9ybWF0LCBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLm91dHB1dF9mb3JtYXQpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhvbGRfdmVyYm9zZV9sZXZlbCwgY3BwbGludC5fY3BwbGludF9z
dGF0ZS52ZXJib3NlX2xldmVsKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ2Zv
by5jYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5wYXJzZV9hcmd1
bWVudHMoWyctLXY9MScsICdmb28uY2MnXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cygxLCBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLnZlcmJvc2VfbGV2ZWwpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhbJ2Zvby5oJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cyhbJy0tdj0zJywgJ2Zvby5oJ10pKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoMywgY3BwbGludC5fY3BwbGludF9zdGF0ZS52ZXJib3NlX2xl
dmVsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydmb28uY3BwJ10sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cyhbJy0tdmVyYm9z
ZT01JywgJ2Zvby5jcHAnXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyg1LCBjcHBs
aW50Ll9jcHBsaW50X3N0YXRlLnZlcmJvc2VfbGV2ZWwpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGlu
dC5wYXJzZV9hcmd1bWVudHMsIFsnLS12PWYnLCAnZm9vLmNjJ10pCisKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKFsnZm9vLmNjJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cyhbJy0tb3V0cHV0PWVtYWNzJywgJ2Zvby5jYyddKSkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdlbWFjcycsIGNwcGxpbnQuX2NwcGxpbnRf
c3RhdGUub3V0cHV0X2Zvcm1hdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsnZm9v
LmgnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcGxpbnQucGFyc2VfYXJndW1l
bnRzKFsnLS1vdXRwdXQ9dnM3JywgJ2Zvby5oJ10pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoJ3ZzNycsIGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUub3V0cHV0X2Zvcm1hdCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cywgWyctLW91dHB1dD1ibGFoJywgJ2Zv
by5jYyddKQorCisgICAgICAgICAgICBmaWx0ID0gJy0sK3doaXRlc3BhY2UsLXdoaXRlc3BhY2Uv
aW5kZW50JworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydmb28uaCddLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5wYXJzZV9hcmd1bWVudHMoWyctLWZpbHRl
cj0nK2ZpbHQsICdmb28uaCddKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsnLScs
ICcrd2hpdGVzcGFjZScsICctd2hpdGVzcGFjZS9pbmRlbnQnXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUuZmlsdGVycykKKworICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoWydmb28uY2MnLCAnZm9vLmgnXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNwcGxpbnQucGFyc2VfYXJndW1lbnRzKFsnZm9vLmNjJywgJ2Zvby5o
J10pKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgY3BwbGludC5fVVNBR0UgPSBvbGRf
dXNhZ2UKKyAgICAgICAgICAgIGNwcGxpbnQuX0VSUk9SX0NBVEVHT1JJRVMgPSBvbGRfZXJyb3Jf
Y2F0ZWdvcmllcworICAgICAgICAgICAgY3BwbGludC5fY3BwbGludF9zdGF0ZS5vdXRwdXRfZm9y
bWF0ID0gb2xkX291dHB1dF9mb3JtYXQKKyAgICAgICAgICAgIGNwcGxpbnQuX2NwcGxpbnRfc3Rh
dGUudmVyYm9zZV9sZXZlbCA9IG9sZF92ZXJib3NlX2xldmVsCisgICAgICAgICAgICBjcHBsaW50
Ll9jcHBsaW50X3N0YXRlLmZpbHRlcnMgPSBvbGRfZmlsdGVycworCisgICAgZGVmIHRlc3RfZmls
dGVyKHNlbGYpOgorICAgICAgICBvbGRfZmlsdGVycyA9IGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUu
ZmlsdGVycworICAgICAgICB0cnk6CisgICAgICAgICAgICBjcHBsaW50Ll9jcHBsaW50X3N0YXRl
LnNldF9maWx0ZXJzKCctLCt3aGl0ZXNwYWNlLC13aGl0ZXNwYWNlL2luZGVudCcpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgICAgICcvLyBIZWxsbyB0aGVyZSAn
LAorICAgICAgICAgICAgICAgICdMaW5lIGVuZHMgaW4gd2hpdGVzcGFjZS4gIENvbnNpZGVyIGRl
bGV0aW5nIHRoZXNlIGV4dHJhIHNwYWNlcy4nCisgICAgICAgICAgICAgICAgJyAgW3doaXRlc3Bh
Y2UvZW5kX29mX2xpbmVdIFs0XScpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQg
YSA9IChpbnQpMS4wOycsICcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnIHdlaXJk
IG9wZW5pbmcgc3BhY2UnLCAnJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGNwcGxp
bnQuX2NwcGxpbnRfc3RhdGUuZmlsdGVycyA9IG9sZF9maWx0ZXJzCisKKyAgICBkZWYgdGVzdF9k
ZWZhdWx0X2ZpbHRlcihzZWxmKToKKyAgICAgICAgZGVmYXVsdF9maWx0ZXJzID0gY3BwbGludC5f
REVGQVVMVF9GSUxURVJTCisgICAgICAgIG9sZF9maWx0ZXJzID0gY3BwbGludC5fY3BwbGludF9z
dGF0ZS5maWx0ZXJzCisgICAgICAgIGNwcGxpbnQuX0RFRkFVTFRfRklMVEVSUyA9IFsgJy13aGl0
ZXNwYWNlJyBdCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgUmVzZXQgZmlsdGVycworICAg
ICAgICAgICAgY3BwbGludC5fY3BwbGludF9zdGF0ZS5zZXRfZmlsdGVycygnJykKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8vIEhlbGxvIHRoZXJlICcsICcnKQorICAgICAgICAgICAg
Y3BwbGludC5fY3BwbGludF9zdGF0ZS5zZXRfZmlsdGVycygnK3doaXRlc3BhY2UvZW5kX29mX2xp
bmUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICAgICAnLy8g
SGVsbG8gdGhlcmUgJywKKyAgICAgICAgICAgICAgICAnTGluZSBlbmRzIGluIHdoaXRlc3BhY2Uu
ICBDb25zaWRlciBkZWxldGluZyB0aGVzZSBleHRyYSBzcGFjZXMuJworICAgICAgICAgICAgICAg
ICcgIFt3aGl0ZXNwYWNlL2VuZF9vZl9saW5lXSBbNF0nKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnIHdlaXJkIG9wZW5pbmcgc3BhY2UnLCAnJykKKyAgICAgICAgZmluYWxseToKKyAg
ICAgICAgICAgIGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUuZmlsdGVycyA9IG9sZF9maWx0ZXJzCisg
ICAgICAgICAgICBjcHBsaW50Ll9ERUZBVUxUX0ZJTFRFUlMgPSBkZWZhdWx0X2ZpbHRlcnMKKwor
ICAgIGRlZiB0ZXN0X3VubmFtZWRfbmFtZXNwYWNlc19pbl9oZWFkZXJzKHNlbGYpOgorICAgICAg
ICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygKKyAgICAgICAgICAgICdmb28uaCcs
ICduYW1lc3BhY2UgeycsCisgICAgICAgICAgICAnRG8gbm90IHVzZSB1bm5hbWVkIG5hbWVzcGFj
ZXMgaW4gaGVhZGVyIGZpbGVzLiAgU2VlJworICAgICAgICAgICAgJyBodHRwOi8vZ29vZ2xlLXN0
eWxlZ3VpZGUuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcGd1aWRlLnhtbCNOYW1lc3BhY2Vz
JworICAgICAgICAgICAgJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gIFtidWlsZC9uYW1lc3BhY2Vz
XSBbNF0nKQorICAgICAgICAjIG5hbWVzcGFjZSByZWdpc3RyYXRpb24gbWFjcm9zIGFyZSBPSy4K
KyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5oJywgJ25hbWVz
cGFjZSB7ICBcXCcsICcnKQorICAgICAgICAjIG5hbWVkIG5hbWVzcGFjZXMgYXJlIE9LLgorICAg
ICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmgnLCAnbmFtZXNwYWNl
IGZvbyB7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdm
b28uaCcsICduYW1lc3BhY2UgZm9vbmFtZXNwYWNlIHsnLCAnJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5jYycsICduYW1lc3BhY2UgeycsICcnKQorICAg
ICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmNjJywgJ25hbWVzcGFj
ZSBmb28geycsICcnKQorCisgICAgZGVmIHRlc3RfYnVpbGRfY2xhc3Moc2VsZik6CisgICAgICAg
ICMgVGVzdCB0aGF0IHRoZSBsaW50ZXIgY2FuIHBhcnNlIHRvIHRoZSBlbmQgb2YgY2xhc3MgZGVm
aW5pdGlvbnMsCisgICAgICAgICMgYW5kIHRoYXQgaXQgd2lsbCByZXBvcnQgd2hlbiBpdCBjYW4n
dC4KKyAgICAgICAgIyBVc2UgbXVsdGktbGluZSBsaW50ZXIgYmVjYXVzZSBpdCBwZXJmb3JtcyB0
aGUgQ2xhc3NTdGF0ZSBjaGVjay4KKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAorICAgICAgICAgICAgJ2NsYXNzIEZvbyB7JywKKyAgICAgICAgICAgICdGYWlsZWQgdG8gZmlu
ZCBjb21wbGV0ZSBkZWNsYXJhdGlvbiBvZiBjbGFzcyBGb28nCisgICAgICAgICAgICAnICBbYnVp
bGQvY2xhc3NdIFs1XScpCisgICAgICAgICMgRG9uJ3Qgd2FybiBvbiBmb3J3YXJkIGRlY2xhcmF0
aW9ucyBvZiB2YXJpb3VzIHR5cGVzLgorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xp
bnQoCisgICAgICAgICAgICAnY2xhc3MgRm9vOycsCisgICAgICAgICAgICAnJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnc3RydWN0IEZvbyoK
KyAgICAgICAgICAgICAgICAgZm9vID0gTmV3Rm9vKCk7JycnLAorICAgICAgICAgICAgJycpCisg
ICAgICAgICMgSGVyZSBpcyBhbiBleGFtcGxlIHdoZXJlIHRoZSBsaW50ZXIgZ2V0cyBjb25mdXNl
ZCwgZXZlbiB0aG91Z2gKKyAgICAgICAgIyB0aGUgY29kZSBkb2Vzbid0IHZpb2xhdGUgdGhlIHN0
eWxlIGd1aWRlLgorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAg
ICAgICAnJydjbGFzcyBGb28KKyAgICAgICAgICAgICNpZmRlZiBERVJJVkVfRlJPTV9HT08KKyAg
ICAgICAgICAgICAgOiBwdWJsaWMgR29vIHsKKyAgICAgICAgICAgICNlbHNlCisgICAgICAgICAg
ICAgIDogcHVibGljIEhvbyB7CisgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgfTsn
JycsCisgICAgICAgICAgICAnRmFpbGVkIHRvIGZpbmQgY29tcGxldGUgZGVjbGFyYXRpb24gb2Yg
Y2xhc3MgRm9vJworICAgICAgICAgICAgJyAgW2J1aWxkL2NsYXNzXSBbNV0nKQorCisgICAgZGVm
IHRlc3RfYnVpbGRfZW5kX2NvbW1lbnQoc2VsZik6CisgICAgICAgICMgVGhlIGNyb3NzdG9vbCBj
b21waWxlciB3ZSBjdXJyZW50bHkgdXNlIHdpbGwgZmFpbCB0byBjb21waWxlIHRoZQorICAgICAg
ICAjIGNvZGUgaW4gdGhpcyB0ZXN0LCBzbyB3ZSBtaWdodCBjb25zaWRlciByZW1vdmluZyB0aGUg
bGludCBjaGVjay4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnI2VuZGlmIE5vdCBhIGNvbW1l
bnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdVbmNvbW1lbnRlZCB0ZXh0IGFmdGVyICNl
bmRpZiBpcyBub24tc3RhbmRhcmQuJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFVzZSBh
IGNvbW1lbnQuJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtidWlsZC9lbmRpZl9jb21t
ZW50XSBbNV0nKQorCisgICAgZGVmIHRlc3RfYnVpbGRfZm9yd2FyZF9kZWNsKHNlbGYpOgorICAg
ICAgICAjIFRoZSBjcm9zc3Rvb2wgY29tcGlsZXIgd2UgY3VycmVudGx5IHVzZSB3aWxsIGZhaWwg
dG8gY29tcGlsZSB0aGUKKyAgICAgICAgIyBjb2RlIGluIHRoaXMgdGVzdCwgc28gd2UgbWlnaHQg
Y29uc2lkZXIgcmVtb3ZpbmcgdGhlIGxpbnQgY2hlY2suCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2NsYXNzIEZvbzo6R29vOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0lubmVyLXN0
eWxlIGZvcndhcmQgZGVjbGFyYXRpb25zIGFyZSBpbnZhbGlkLicKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAnICBSZW1vdmUgdGhpcyBsaW5lLicKKyAgICAgICAgICAgICAgICAgICAgICAgICAn
ICBbYnVpbGQvZm9yd2FyZF9kZWNsXSBbNV0nKQorCisgICAgZGVmIHRlc3RfYnVpbGRfaGVhZGVy
X2d1YXJkKHNlbGYpOgorICAgICAgICBmaWxlX3BhdGggPSAnbXlkaXIvZm9vLmgnCisKKyAgICAg
ICAgIyBXZSBjYW4ndCByZWx5IG9uIG91ciBpbnRlcm5hbCBzdHVmZiB0byBnZXQgYSBzYW5lIHBh
dGggb24gdGhlIG9wZW4gc291cmNlCisgICAgICAgICMgc2lkZSBvZiB0aGluZ3MsIHNvIGp1c3Qg
cGFyc2Ugb3V0IHRoZSBzdWdnZXN0ZWQgaGVhZGVyIGd1YXJkLiBUaGlzCisgICAgICAgICMgZG9l
c24ndCBhbGxvdyB1cyB0byB0ZXN0IHRoZSBzdWdnZXN0ZWQgaGVhZGVyIGd1YXJkLCBidXQgaXQg
ZG9lcyBsZXQgdXMKKyAgICAgICAgIyB0ZXN0IGFsbCB0aGUgb3RoZXIgaGVhZGVyIHRlc3RzLgor
ICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisg
ICAgICAgIGNwcGxpbnQucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAnaCcsIFtdLCBlcnJv
cl9jb2xsZWN0b3IpCisgICAgICAgIGV4cGVjdGVkX2d1YXJkID0gJycKKyAgICAgICAgbWF0Y2hl
ciA9IHJlLmNvbXBpbGUoCisgICAgICAgICAgICAnTm8gXCNpZm5kZWYgaGVhZGVyIGd1YXJkIGZv
dW5kXCwgc3VnZ2VzdGVkIENQUCB2YXJpYWJsZSBpc1w6IChbQS1aX10rKSAnKQorICAgICAgICBm
b3IgZXJyb3IgaW4gZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCk6CisgICAgICAgICAgICBt
YXRjaGVzID0gbWF0Y2hlci5tYXRjaChlcnJvcikKKyAgICAgICAgICAgIGlmIG1hdGNoZXM6Cisg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRfZ3VhcmQgPSBtYXRjaGVzLmdyb3VwKDEpCisgICAgICAg
ICAgICAgICAgYnJlYWsKKworICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBleHRyYWN0ZWQgc29tZXRo
aW5nIGZvciBvdXIgaGVhZGVyIGd1YXJkLgorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGV4
cGVjdGVkX2d1YXJkLCAnJykKKworICAgICAgICAjIFdyb25nIGd1YXJkCisgICAgICAgIGVycm9y
X2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKKyAgICAgICAgY3BwbGlu
dC5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbJyNpZm5kZWYgRk9PX0gnLCAnI2RlZmluZSBGT09fSCddLCBlcnJvcl9j
b2xsZWN0b3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorICAgICAgICAgICAgMSwKKyAg
ICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpLmNvdW50KAorICAgICAgICAg
ICAgICAgICcjaWZuZGVmIGhlYWRlciBndWFyZCBoYXMgd3Jvbmcgc3R5bGUsIHBsZWFzZSB1c2U6
ICVzJworICAgICAgICAgICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3VhcmRdIFs1XScgJSBleHBl
Y3RlZF9ndWFyZCksCisgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKSkK
KworICAgICAgICAjIE5vIGRlZmluZQorICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNv
bGxlY3RvcihzZWxmLmFzc2VydF8pCisgICAgICAgIGNwcGxpbnQucHJvY2Vzc19maWxlX2RhdGEo
ZmlsZV9wYXRoLCAnaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycjaWZu
ZGVmICVzJyAlIGV4cGVjdGVkX2d1YXJkXSwgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICBlcnJvcl9jb2xsZWN0
b3IucmVzdWx0X2xpc3QoKS5jb3VudCgKKyAgICAgICAgICAgICAgICAnTm8gI2lmbmRlZiBoZWFk
ZXIgZ3VhcmQgZm91bmQsIHN1Z2dlc3RlZCBDUFAgdmFyaWFibGUgaXM6ICVzJworICAgICAgICAg
ICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3VhcmRdIFs1XScgJSBleHBlY3RlZF9ndWFyZCksCisg
ICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKSkKKworICAgICAgICAjIE1p
c21hdGNoZWQgZGVmaW5lCisgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9y
KHNlbGYuYXNzZXJ0XykKKyAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3Bh
dGgsICdoJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJyNpZm5kZWYgJXMn
ICUgZXhwZWN0ZWRfZ3VhcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcj
ZGVmaW5lIEZPT19IJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jf
Y29sbGVjdG9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKyAgICAgICAgICAgIDEsCisg
ICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKS5jb3VudCgKKyAgICAgICAg
ICAgICAgICAnTm8gI2lmbmRlZiBoZWFkZXIgZ3VhcmQgZm91bmQsIHN1Z2dlc3RlZCBDUFAgdmFy
aWFibGUgaXM6ICVzJworICAgICAgICAgICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3VhcmRdIFs1
XScgJSBleHBlY3RlZF9ndWFyZCksCisgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0
X2xpc3QoKSkKKworICAgICAgICAjIE5vIGVuZGlmCisgICAgICAgIGVycm9yX2NvbGxlY3RvciA9
IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKKyAgICAgICAgY3BwbGludC5wcm9jZXNzX2Zp
bGVfZGF0YShmaWxlX3BhdGgsICdoJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbJyNpZm5kZWYgJXMnICUgZXhwZWN0ZWRfZ3VhcmQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICcjZGVmaW5lICVzJyAlIGV4cGVjdGVkX2d1YXJkXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5y
ZXN1bHRfbGlzdCgpLmNvdW50KAorICAgICAgICAgICAgICAgICcjZW5kaWYgbGluZSBzaG91bGQg
YmUgIiNlbmRpZiAgLy8gJXMiJworICAgICAgICAgICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3Vh
cmRdIFs1XScgJSBleHBlY3RlZF9ndWFyZCksCisgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3Iu
cmVzdWx0X2xpc3QoKSkKKworICAgICAgICAjIENvbW1lbnRsZXNzIGVuZGlmCisgICAgICAgIGVy
cm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKKyAgICAgICAgY3Bw
bGludC5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbJyNpZm5kZWYgJXMnICUgZXhwZWN0ZWRfZ3VhcmQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZGVmaW5lICVzJyAlIGV4cGVjdGVkX2d1YXJk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2VuZGlmJ10sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICBlcnJvcl9jb2xsZWN0
b3IucmVzdWx0X2xpc3QoKS5jb3VudCgKKyAgICAgICAgICAgICAgICAnI2VuZGlmIGxpbmUgc2hv
dWxkIGJlICIjZW5kaWYgIC8vICVzIicKKyAgICAgICAgICAgICAgICAnICBbYnVpbGQvaGVhZGVy
X2d1YXJkXSBbNV0nICUgZXhwZWN0ZWRfZ3VhcmQpLAorICAgICAgICAgICAgZXJyb3JfY29sbGVj
dG9yLnJlc3VsdF9saXN0KCkpCisKKyAgICAgICAgIyBDb21tZW50bGVzcyBlbmRpZiBmb3Igb2xk
LXN0eWxlIGd1YXJkCisgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNl
bGYuYXNzZXJ0XykKKyAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgs
ICdoJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJyNpZm5kZWYgJXNfJyAl
IGV4cGVjdGVkX2d1YXJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2Rl
ZmluZSAlc18nICUgZXhwZWN0ZWRfZ3VhcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjZW5kaWYnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJv
cl9jb2xsZWN0b3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorICAgICAgICAgICAgMSwK
KyAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpLmNvdW50KAorICAgICAg
ICAgICAgICAgICcjZW5kaWYgbGluZSBzaG91bGQgYmUgIiNlbmRpZiAgLy8gJXMiJworICAgICAg
ICAgICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3VhcmRdIFs1XScgJSBleHBlY3RlZF9ndWFyZCks
CisgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKSkKKworICAgICAgICAj
IE5vIGhlYWRlciBndWFyZCBlcnJvcnMKKyAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JD
b2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQorICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmlsZV9kYXRh
KGZpbGVfcGF0aCwgJ2gnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lm
bmRlZiAlcycgJSBleHBlY3RlZF9ndWFyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyNkZWZpbmUgJXMnICUgZXhwZWN0ZWRfZ3VhcmQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcjZW5kaWYgIC8vICVzJyAlIGV4cGVjdGVkX2d1YXJkXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIGZv
ciBsaW5lIGluIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpOgorICAgICAgICAgICAgaWYg
bGluZS5maW5kKCdidWlsZC9oZWFkZXJfZ3VhcmQnKSAhPSAtMToKKyAgICAgICAgICAgICAgICBz
ZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZXJyb3I6ICVzJyAlIGxpbmUpCisKKyAgICAgICAgIyBObyBo
ZWFkZXIgZ3VhcmQgZXJyb3JzIGZvciBvbGQtc3R5bGUgZ3VhcmQKKyAgICAgICAgZXJyb3JfY29s
bGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQorICAgICAgICBjcHBsaW50LnBy
b2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsnI2lmbmRlZiAlc18nICUgZXhwZWN0ZWRfZ3VhcmQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcjZGVmaW5lICVzXycgJSBleHBlY3RlZF9ndWFyZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNlbmRpZiAgLy8gJXNfJyAlIGV4cGVj
dGVkX2d1YXJkXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xs
ZWN0b3IpCisgICAgICAgIGZvciBsaW5lIGluIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgp
OgorICAgICAgICAgICAgaWYgbGluZS5maW5kKCdidWlsZC9oZWFkZXJfZ3VhcmQnKSAhPSAtMToK
KyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZXJyb3I6ICVzJyAlIGxpbmUp
CisKKyAgICAgICAgb2xkX3ZlcmJvc2VfbGV2ZWwgPSBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLnZl
cmJvc2VfbGV2ZWwKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY3BwbGludC5fY3BwbGludF9z
dGF0ZS52ZXJib3NlX2xldmVsID0gMAorICAgICAgICAgICAgIyBXYXJuIG9uIG9sZC1zdHlsZSBn
dWFyZCBpZiB2ZXJib3NpdHkgaXMgMC4KKyAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVy
cm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKKyAgICAgICAgICAgIGNwcGxpbnQucHJvY2Vzc19m
aWxlX2RhdGEoZmlsZV9wYXRoLCAnaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsnI2lmbmRlZiAlc18nICUgZXhwZWN0ZWRfZ3VhcmQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnI2RlZmluZSAlc18nICUgZXhwZWN0ZWRfZ3VhcmQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2VuZGlmICAvLyAlc18nICUg
ZXhwZWN0ZWRfZ3VhcmRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
cnJvcl9jb2xsZWN0b3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKyAgICAgICAg
ICAgICAgICAxLAorICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgp
LmNvdW50KAorICAgICAgICAgICAgICAgICAgICAnI2lmbmRlZiBoZWFkZXIgZ3VhcmQgaGFzIHdy
b25nIHN0eWxlLCBwbGVhc2UgdXNlOiAlcycKKyAgICAgICAgICAgICAgICAgICAgJyAgW2J1aWxk
L2hlYWRlcl9ndWFyZF0gWzBdJyAlIGV4cGVjdGVkX2d1YXJkKSwKKyAgICAgICAgICAgICAgICBl
cnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAg
ICAgIGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUudmVyYm9zZV9sZXZlbCA9IG9sZF92ZXJib3NlX2xl
dmVsCisKKyAgICAgICAgIyBDb21wbGV0ZWx5IGluY29ycmVjdCBoZWFkZXIgZ3VhcmQKKyAgICAg
ICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQorICAgICAg
ICBjcHBsaW50LnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiBGT08nLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnI2RlZmluZSBGT08nLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnI2VuZGlmICAvLyBGT08nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorICAg
ICAgICAgICAgMSwKKyAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpLmNv
dW50KAorICAgICAgICAgICAgICAgICcjaWZuZGVmIGhlYWRlciBndWFyZCBoYXMgd3Jvbmcgc3R5
bGUsIHBsZWFzZSB1c2U6ICVzJworICAgICAgICAgICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3Vh
cmRdIFs1XScgJSBleHBlY3RlZF9ndWFyZCksCisgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3Iu
cmVzdWx0X2xpc3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisgICAgICAgICAgICAx
LAorICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291bnQoCisgICAg
ICAgICAgICAgICAgJyNlbmRpZiBsaW5lIHNob3VsZCBiZSAiI2VuZGlmICAvLyAlcyInCisgICAg
ICAgICAgICAgICAgJyAgW2J1aWxkL2hlYWRlcl9ndWFyZF0gWzVdJyAlIGV4cGVjdGVkX2d1YXJk
KSwKKyAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpKQorCisgICAgZGVm
IHRlc3RfYnVpbGRfcHJpbnRmX2Zvcm1hdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgKKyAgICAgICAgICAgIHIncHJpbnRmKCJcJSVkIiwgdmFsdWUpOycsCisgICAgICAgICAgICAn
JSwgWywgKCwgYW5kIHsgYXJlIHVuZGVmaW5lZCBjaGFyYWN0ZXIgZXNjYXBlcy4gIFVuZXNjYXBl
IHRoZW0uJworICAgICAgICAgICAgJyAgW2J1aWxkL3ByaW50Zl9mb3JtYXRdIFszXScpCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgIHInc25wcmludGYoYnVmZmVyLCBz
aXplb2YoYnVmZmVyKSwgIlxbJWQiLCB2YWx1ZSk7JywKKyAgICAgICAgICAgICclLCBbLCAoLCBh
bmQgeyBhcmUgdW5kZWZpbmVkIGNoYXJhY3RlciBlc2NhcGVzLiAgVW5lc2NhcGUgdGhlbS4nCisg
ICAgICAgICAgICAnICBbYnVpbGQvcHJpbnRmX2Zvcm1hdF0gWzNdJykKKworICAgICAgICBzZWxm
LmFzc2VydF9saW50KAorICAgICAgICAgICAgcidmcHJpbnRmKGZpbGUsICJcKCVkIiwgdmFsdWUp
OycsCisgICAgICAgICAgICAnJSwgWywgKCwgYW5kIHsgYXJlIHVuZGVmaW5lZCBjaGFyYWN0ZXIg
ZXNjYXBlcy4gIFVuZXNjYXBlIHRoZW0uJworICAgICAgICAgICAgJyAgW2J1aWxkL3ByaW50Zl9m
b3JtYXRdIFszXScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgIHIn
dnNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJcXFx7JWQiLCBhcCk7JywKKyAgICAg
ICAgICAgICclLCBbLCAoLCBhbmQgeyBhcmUgdW5kZWZpbmVkIGNoYXJhY3RlciBlc2NhcGVzLiAg
VW5lc2NhcGUgdGhlbS4nCisgICAgICAgICAgICAnICBbYnVpbGQvcHJpbnRmX2Zvcm1hdF0gWzNd
JykKKworICAgICAgICAjIERvbid0IHdhcm4gaWYgZG91YmxlLXNsYXNoIHByZWNlZGVzIHRoZSBz
eW1ib2wKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludChyJ3ByaW50ZigiXFwlJSVkIiwgdmFsdWUp
OycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9ydW50aW1l
X3ByaW50Zl9mb3JtYXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAg
ICAgICByJ2ZwcmludGYoZmlsZSwgIiVxIiwgdmFsdWUpOycsCisgICAgICAgICAgICAnJXEgaW4g
Zm9ybWF0IHN0cmluZ3MgaXMgZGVwcmVjYXRlZC4gIFVzZSAlbGwgaW5zdGVhZC4nCisgICAgICAg
ICAgICAnICBbcnVudGltZS9wcmludGZfZm9ybWF0XSBbM10nKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoCisgICAgICAgICAgICByJ2FwcmludGYoZmlsZSwgIlRoZSBudW1iZXIgaXMgJTEy
cSIsIHZhbHVlKTsnLAorICAgICAgICAgICAgJyVxIGluIGZvcm1hdCBzdHJpbmdzIGlzIGRlcHJl
Y2F0ZWQuICBVc2UgJWxsIGluc3RlYWQuJworICAgICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRm
X2Zvcm1hdF0gWzNdJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAg
cidwcmludGYoZmlsZSwgIlRoZSBudW1iZXIgaXMiICIlLTEycSIsIHZhbHVlKTsnLAorICAgICAg
ICAgICAgJyVxIGluIGZvcm1hdCBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxsIGluc3Rl
YWQuJworICAgICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmX2Zvcm1hdF0gWzNdJykKKworICAg
ICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgcidwcmludGYoZmlsZSwgIlRoZSBu
dW1iZXIgaXMiICIlKzEycSIsIHZhbHVlKTsnLAorICAgICAgICAgICAgJyVxIGluIGZvcm1hdCBz
dHJpbmdzIGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxsIGluc3RlYWQuJworICAgICAgICAgICAgJyAg
W3J1bnRpbWUvcHJpbnRmX2Zvcm1hdF0gWzNdJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50
KAorICAgICAgICAgICAgcidwcmludGYoZmlsZSwgIlRoZSBudW1iZXIgaXMiICIlIDEycSIsIHZh
bHVlKTsnLAorICAgICAgICAgICAgJyVxIGluIGZvcm1hdCBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQu
ICBVc2UgJWxsIGluc3RlYWQuJworICAgICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmX2Zvcm1h
dF0gWzNdJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgcidzbnBy
aW50ZihmaWxlLCAiTmV2ZXIgbWl4ICVkIGFuZCAlMSRkIHBhcm1hZXRlcnMhIiwgdmFsdWUpOycs
CisgICAgICAgICAgICAnJU4kIGZvcm1hdHMgYXJlIHVuY29udmVudGlvbmFsLiAgVHJ5IHJld3Jp
dGluZyB0byBhdm9pZCB0aGVtLicKKyAgICAgICAgICAgICcgIFtydW50aW1lL3ByaW50Zl9mb3Jt
YXRdIFsyXScpCisKKyAgICBkZWYgYXNzZXJ0X2xpbnRMb2dDb2RlT25FcnJvcihzZWxmLCBjb2Rl
LCBleHBlY3RlZF9tZXNzYWdlKToKKyAgICAgICAgIyBTcGVjaWFsIGFzc2VydF9saW50IHdoaWNo
IGxvZ3MgdGhlIGlucHV0IGNvZGUgb24gZXJyb3IuCisgICAgICAgIHJlc3VsdCA9IHNlbGYucGVy
Zm9ybV9zaW5nbGVfbGluZV9saW50KGNvZGUpCisgICAgICAgIGlmIHJlc3VsdCAhPSBleHBlY3Rl
ZF9tZXNzYWdlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdGb3IgY29kZTogIiVzIlxuR290OiAi
JXMiXG5FeHBlY3RlZDogIiVzIicKKyAgICAgICAgICAgICAgICAgICAgICAlIChjb2RlLCByZXN1
bHQsIGV4cGVjdGVkX21lc3NhZ2UpKQorCisgICAgZGVmIHRlc3RfYnVpbGRfc3RvcmFnZV9jbGFz
cyhzZWxmKToKKyAgICAgICAgcXVhbGlmaWVycyA9IFtOb25lLCAnY29uc3QnLCAndm9sYXRpbGUn
XQorICAgICAgICBzaWducyA9IFtOb25lLCAnc2lnbmVkJywgJ3Vuc2lnbmVkJ10KKyAgICAgICAg
dHlwZXMgPSBbJ3ZvaWQnLCAnY2hhcicsICdpbnQnLCAnZmxvYXQnLCAnZG91YmxlJywKKyAgICAg
ICAgICAgICAgICAgJ3NjaGFyJywgJ2ludDgnLCAndWludDgnLCAnaW50MTYnLCAndWludDE2JywK
KyAgICAgICAgICAgICAgICAgJ2ludDMyJywgJ3VpbnQzMicsICdpbnQ2NCcsICd1aW50NjQnXQor
ICAgICAgICBzdG9yYWdlX2NsYXNzZXMgPSBbJ2F1dG8nLCAnZXh0ZXJuJywgJ3JlZ2lzdGVyJywg
J3N0YXRpYycsICd0eXBlZGVmJ10KKworICAgICAgICBidWlsZF9zdG9yYWdlX2NsYXNzX2Vycm9y
X21lc3NhZ2UgPSAoCisgICAgICAgICAgICAnU3RvcmFnZSBjbGFzcyAoc3RhdGljLCBleHRlcm4s
IHR5cGVkZWYsIGV0Yykgc2hvdWxkIGJlIGZpcnN0LicKKyAgICAgICAgICAgICcgIFtidWlsZC9z
dG9yYWdlX2NsYXNzXSBbNV0nKQorCisgICAgICAgICMgU29tZSBleHBsaWNpdCBjYXNlcy4gTGVn
YWwgaW4gQysrLCBkZXByZWNhdGVkIGluIEM5OS4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
Y29uc3QgaW50IHN0YXRpYyBmb28gPSA1OycsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnVp
bGRfc3RvcmFnZV9jbGFzc19lcnJvcl9tZXNzYWdlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2NoYXIgc3RhdGljIGZvbzsnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX3N0
b3JhZ2VfY2xhc3NfZXJyb3JfbWVzc2FnZSkKKworICAgICAgICBzZWxmLmFzc2VydF9saW50KCdk
b3VibGUgY29uc3Qgc3RhdGljIGZvbyA9IDIuMDsnLAorICAgICAgICAgICAgICAgICAgICAgICAg
IGJ1aWxkX3N0b3JhZ2VfY2xhc3NfZXJyb3JfbWVzc2FnZSkKKworICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCd1aW50NjQgdHlwZWRlZiB1bnNpZ25lZF9sb25nX2xvbmc7JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBidWlsZF9zdG9yYWdlX2NsYXNzX2Vycm9yX21lc3NhZ2UpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnaW50IHJlZ2lzdGVyIGZvbyA9IDA7JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBidWlsZF9zdG9yYWdlX2NsYXNzX2Vycm9yX21lc3NhZ2UpCisKKyAgICAg
ICAgIyBTaW5jZSB0aGVyZSBhcmUgYSB2ZXJ5IGxhcmdlIG51bWJlciBvZiBwb3NzaWJpbGl0aWVz
LCByYW5kb21seQorICAgICAgICAjIGNvbnN0cnVjdCBkZWNsYXJhdGlvbnMuCisgICAgICAgICMg
TWFrZSBzdXJlIHRoYXQgdGhlIGRlY2xhcmF0aW9uIGlzIGxvZ2dlZCBpZiB0aGVyZSdzIGFuIGVy
cm9yLgorICAgICAgICAjIFNlZWQgZ2VuZXJhdG9yIHdpdGggYW4gaW50ZWdlciBmb3IgYWJzb2x1
dGUgcmVwcm9kdWNpYmlsaXR5LgorICAgICAgICByYW5kb20uc2VlZCgyNSkKKyAgICAgICAgZm9y
IHVudXNlZF9pIGluIHJhbmdlKDEwKToKKyAgICAgICAgICAgICMgQnVpbGQgdXAgcmFuZG9tIGxp
c3Qgb2Ygbm9uLXN0b3JhZ2UtY2xhc3MgZGVjbGFyYXRpb24gc3BlY3MuCisgICAgICAgICAgICBv
dGhlcl9kZWNsX3NwZWNzID0gW3JhbmRvbS5jaG9pY2UocXVhbGlmaWVycyksIHJhbmRvbS5jaG9p
Y2Uoc2lnbnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kb20uY2hvaWNl
KHR5cGVzKV0KKyAgICAgICAgICAgICMgcmVtb3ZlIE5vbmUKKyAgICAgICAgICAgIG90aGVyX2Rl
Y2xfc3BlY3MgPSBmaWx0ZXIobGFtYmRhIHg6IHggaXMgbm90IE5vbmUsIG90aGVyX2RlY2xfc3Bl
Y3MpCisKKyAgICAgICAgICAgICMgc2h1ZmZsZQorICAgICAgICAgICAgcmFuZG9tLnNodWZmbGUo
b3RoZXJfZGVjbF9zcGVjcykKKworICAgICAgICAgICAgIyBpbnNlcnQgc3RvcmFnZSBjbGFzcyBh
ZnRlciB0aGUgZmlyc3QKKyAgICAgICAgICAgIHN0b3JhZ2VfY2xhc3MgPSByYW5kb20uY2hvaWNl
KHN0b3JhZ2VfY2xhc3NlcykKKyAgICAgICAgICAgIGluc2VydGlvbl9wb2ludCA9IHJhbmRvbS5y
YW5kaW50KDEsIGxlbihvdGhlcl9kZWNsX3NwZWNzKSkKKyAgICAgICAgICAgIGRlY2xfc3BlY3Mg
PSAob3RoZXJfZGVjbF9zcGVjc1swOmluc2VydGlvbl9wb2ludF0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgKyBbc3RvcmFnZV9jbGFzc10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKyBv
dGhlcl9kZWNsX3NwZWNzW2luc2VydGlvbl9wb2ludDpdKQorCisgICAgICAgICAgICBzZWxmLmFz
c2VydF9saW50TG9nQ29kZU9uRXJyb3IoCisgICAgICAgICAgICAgICAgJyAnLmpvaW4oZGVjbF9z
cGVjcykgKyAnOycsCisgICAgICAgICAgICAgICAgYnVpbGRfc3RvcmFnZV9jbGFzc19lcnJvcl9t
ZXNzYWdlKQorCisgICAgICAgICAgICAjIGJ1dCBubyBlcnJvciBpZiBzdG9yYWdlIGNsYXNzIGlz
IGZpcnN0CisgICAgICAgICAgICBzZWxmLmFzc2VydF9saW50TG9nQ29kZU9uRXJyb3IoCisgICAg
ICAgICAgICAgICAgc3RvcmFnZV9jbGFzcyArICcgJyArICcgJy5qb2luKG90aGVyX2RlY2xfc3Bl
Y3MpLAorICAgICAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfbGVnYWxfY29weXJpZ2h0
KHNlbGYpOgorICAgICAgICBsZWdhbF9jb3B5cmlnaHRfbWVzc2FnZSA9ICgKKyAgICAgICAgICAg
ICdObyBjb3B5cmlnaHQgbWVzc2FnZSBmb3VuZC4gICcKKyAgICAgICAgICAgICdZb3Ugc2hvdWxk
IGhhdmUgYSBsaW5lOiAiQ29weXJpZ2h0IFt5ZWFyXSA8Q29weXJpZ2h0IE93bmVyPiInCisgICAg
ICAgICAgICAnICBbbGVnYWwvY29weXJpZ2h0XSBbNV0nKQorCisgICAgICAgIGNvcHlyaWdodF9s
aW5lID0gJy8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
JworCisgICAgICAgIGZpbGVfcGF0aCA9ICdteWRpci9nb29nbGVjbGllbnQvZm9vLmNjJworCisg
ICAgICAgICMgVGhlcmUgc2hvdWxkIGJlIGEgY29weXJpZ2h0IG1lc3NhZ2UgaW4gdGhlIGZpcnN0
IDEwIGxpbmVzCisgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYu
YXNzZXJ0XykKKyAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdj
YycsIFtdLCBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorICAg
ICAgICAgICAgMSwKKyAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpLmNv
dW50KGxlZ2FsX2NvcHlyaWdodF9tZXNzYWdlKSkKKworICAgICAgICBlcnJvcl9jb2xsZWN0b3Ig
PSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisgICAgICAgIGNwcGxpbnQucHJvY2Vzc19m
aWxlX2RhdGEoCisgICAgICAgICAgICBmaWxlX3BhdGgsICdjYycsCisgICAgICAgICAgICBbJycg
Zm9yIHVudXNlZF9pIGluIHJhbmdlKDEwKV0gKyBbY29weXJpZ2h0X2xpbmVdLAorICAgICAgICAg
ICAgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKyAgICAgICAg
ICAgIDEsCisgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKS5jb3VudChs
ZWdhbF9jb3B5cmlnaHRfbWVzc2FnZSkpCisKKyAgICAgICAgIyBUZXN0IHRoYXQgd2FybmluZyBp
c24ndCBpc3N1ZWQgaWYgQ29weXJpZ2h0IGxpbmUgYXBwZWFycyBlYXJseSBlbm91Z2guCisgICAg
ICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKKyAgICAg
ICAgY3BwbGludC5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdjYycsIFtjb3B5cmlnaHRf
bGluZV0sIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gZXJyb3JfY29s
bGVjdG9yLnJlc3VsdF9saXN0KCk6CisgICAgICAgICAgICBpZiBtZXNzYWdlLmZpbmQoJ2xlZ2Fs
L2NvcHlyaWdodCcpICE9IC0xOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3Rl
ZCBlcnJvcjogJXMnICUgbWVzc2FnZSkKKworICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJv
ckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisgICAgICAgIGNwcGxpbnQucHJvY2Vzc19maWxlX2Rh
dGEoCisgICAgICAgICAgICBmaWxlX3BhdGgsICdjYycsCisgICAgICAgICAgICBbJycgZm9yIHVu
dXNlZF9pIGluIHJhbmdlKDkpXSArIFtjb3B5cmlnaHRfbGluZV0sCisgICAgICAgICAgICBlcnJv
cl9jb2xsZWN0b3IpCisgICAgICAgIGZvciBtZXNzYWdlIGluIGVycm9yX2NvbGxlY3Rvci5yZXN1
bHRfbGlzdCgpOgorICAgICAgICAgICAgaWYgbWVzc2FnZS5maW5kKCdsZWdhbC9jb3B5cmlnaHQn
KSAhPSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZXJyb3I6ICVz
JyAlIG1lc3NhZ2UpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2luY3JlbWVudChzZWxmKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnKmNvdW50Kys7JywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAnQ2hhbmdpbmcgcG9pbnRlciBpbnN0ZWFkIG9mIHZhbHVlIChvciB1bnVzZWQgdmFsdWUg
b2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICdvcGVyYXRvciopLiAgW3J1bnRpbWUvaW52
YWxpZF9pbmNyZW1lbnRdIFs1XScpCisKK2NsYXNzIENsZWFuc2VkTGluZXNUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBsaW5lcyA9IFsn
TGluZSAxJywKKyAgICAgICAgICAgICAgICAgJ0xpbmUgMicsCisgICAgICAgICAgICAgICAgICdM
aW5lIDMgLy8gQ29tbWVudCB0ZXN0JywKKyAgICAgICAgICAgICAgICAgJ0xpbmUgNCAiZm9vIidd
CisKKyAgICAgICAgY2xlYW5fbGluZXMgPSBjcHBsaW50LkNsZWFuc2VkTGluZXMobGluZXMpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxpbmVzLCBjbGVhbl9saW5lcy5yYXdfbGluZXMpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDQsIGNsZWFuX2xpbmVzLm51bV9saW5lcygpKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsnTGluZSAxJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdMaW5lIDInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xpbmUgMyAnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xpbmUgNCAiZm9vIiddLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGVhbl9saW5lcy5saW5lcykKKworICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhbJ0xpbmUgMScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnTGluZSAyJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdMaW5lIDMgJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdMaW5lIDQgIiInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW5fbGlu
ZXMuZWxpZGVkKQorCisgICAgZGVmIHRlc3RfaW5pdF9lbXB0eShzZWxmKToKKyAgICAgICAgY2xl
YW5fbGluZXMgPSBjcHBsaW50LkNsZWFuc2VkTGluZXMoW10pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKFtdLCBjbGVhbl9saW5lcy5yYXdfbGluZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKDAsIGNsZWFuX2xpbmVzLm51bV9saW5lcygpKQorCisgICAgZGVmIHRlc3RfY29sbGFwc2Vf
c3RyaW5ncyhzZWxmKToKKyAgICAgICAgY29sbGFwc2UgPSBjcHBsaW50LkNsZWFuc2VkTGluZXMu
X2NvbGxhcHNlX3N0cmluZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyIiJywgY29sbGFw
c2UoJyIiJykpICAgICAgICAgICAgICMgIiIgICAgIChlbXB0eSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoJyIiIicsIGNvbGxhcHNlKCciIiInKSkgICAgICAgICAgICMgIiIiICAgIChiYWQp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCciIicsIGNvbGxhcHNlKCcieHl6IicpKSAgICAg
ICAgICAjICJ4eXoiICAoc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnIiInLCBj
b2xsYXBzZSgnIlxcXCIiJykpICAgICAgICAgIyAiXCIiICAgKHN0cmluZykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoJyIiJywgY29sbGFwc2UoJyJcJyInKSkgICAgICAgICAgICMgIiciICAg
IChzdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCciXCInLCBjb2xsYXBzZSgnIlwi
JykpICAgICAgICAgICAjICJcIiAgICAoYmFkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygn
IiInLCBjb2xsYXBzZSgnIlxcXFwiJykpICAgICAgICAgIyAiXFwiICAgKHN0cmluZykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoJyInLCBjb2xsYXBzZSgnIlxcXFxcXCInKSkgICAgICAgICMg
IlxcXCIgIChiYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCciIicsIGNvbGxhcHNlKCci
XFxcXFxcXFwiJykpICAgICAjICJcXFxcIiAoc3RyaW5nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKCdcJ1wnJywgY29sbGFwc2UoJ1wnXCcnKSkgICAgICAgICAjICcnICAgICAoZW1wdHkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdcJ1wnJywgY29sbGFwc2UoJ1wnYVwnJykpICAg
ICAgICAjICdhJyAgICAoY2hhcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ1wnXCcnLCBj
b2xsYXBzZSgnXCdcXFwnXCcnKSkgICAgICMgJ1wnJyAgIChjaGFyKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFscygnXCcnLCBjb2xsYXBzZSgnXCdcXFwnJykpICAgICAgICAgIyAnXCcgICAgKGJh
ZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJycsIGNvbGxhcHNlKCdcXDAxMicpKSAgICAg
ICAgICAgICMgJ1wwMTInIChjaGFyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnJywgY29s
bGFwc2UoJ1xceGZGMCcpKSAgICAgICAgICAgIyAnXHhmRjAnIChjaGFyKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygnJywgY29sbGFwc2UoJ1xcbicpKSAgICAgICAgICAgICAgIyAnXG4nIChj
aGFyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnXCMnLCBjb2xsYXBzZSgnXFwjJykpICAg
ICAgICAgICAgIyAnXCMnIChiYWQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ1N0cmlu
Z1JlcGxhY2UoYm9keSwgIiIsICIiKTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xs
YXBzZSgnU3RyaW5nUmVwbGFjZShib2R5LCAiXFxcXCIsICJcXFxcXFxcXCIpOycpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscygnXCdcJyAiIicsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbGxhcHNlKCdcJyJcJyAiZm9vIicpKQorCisKK2NsYXNzIE9yZGVyT2ZJbmNsdWRlc1Rlc3Qo
Q3BwbGludFRlc3RCYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuaW5j
bHVkZV9zdGF0ZSA9IGNwcGxpbnQuX0luY2x1ZGVTdGF0ZSgpCisKKyAgICAgICAgIyBDaGVhdCBv
cy5wYXRoLmFic3BhdGggY2FsbGVkIGluIEZpbGVJbmZvIGNsYXNzLgorICAgICAgICBzZWxmLm9z
X3BhdGhfYWJzcGF0aF9vcmlnID0gb3MucGF0aC5hYnNwYXRoCisgICAgICAgIG9zLnBhdGguYWJz
cGF0aCA9IGxhbWJkYSB2YWx1ZTogdmFsdWUKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAg
ICAgICAgb3MucGF0aC5hYnNwYXRoID0gc2VsZi5vc19wYXRoX2Fic3BhdGhfb3JpZworCisgICAg
ZGVmIHRlc3RfdHJ5X2Ryb3BfY29tbW9uX3N1ZmZpeGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdmb28vZm9vJywgY3BwbGludC5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9m
b28taW5sLmgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vL2Jhci9mb28nLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGNwcGxpbnQuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28v
YmFyL2Zvb19pbmwuaCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28vZm9vJywgY3Bw
bGludC5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9mb28uY2MnKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnZm9vL2Zvb191bnVzdWFsaW50ZXJuYWwnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIGNwcGxpbnQuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vZm9vX3VudXN1YWxpbnRl
cm5hbC5oJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgY3BwbGludC5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ190ZXN0LmNjJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Rlc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNw
cGxpbnQuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCd0ZXN0LmNjJykpCisKKworY2xhc3MgT3JkZXJP
ZkluY2x1ZGVzVGVzdChDcHBsaW50VGVzdEJhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAg
ICAgICAgc2VsZi5pbmNsdWRlX3N0YXRlID0gY3BwbGludC5fSW5jbHVkZVN0YXRlKCkKKworICAg
ICAgICAjIENoZWF0IG9zLnBhdGguYWJzcGF0aCBjYWxsZWQgaW4gRmlsZUluZm8gY2xhc3MuCisg
ICAgICAgIHNlbGYub3NfcGF0aF9hYnNwYXRoX29yaWcgPSBvcy5wYXRoLmFic3BhdGgKKyAgICAg
ICAgb3MucGF0aC5hYnNwYXRoID0gbGFtYmRhIHZhbHVlOiB2YWx1ZQorCisgICAgZGVmIHRlYXJE
b3duKHNlbGYpOgorICAgICAgICBvcy5wYXRoLmFic3BhdGggPSBzZWxmLm9zX3BhdGhfYWJzcGF0
aF9vcmlnCisKKyAgICBkZWYgdGVzdF9jaGVja19uZXh0X2luY2x1ZGVfb3JkZXJfX290aGVyX3Ro
ZW5fY3BwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzZWxmLmluY2x1ZGVf
c3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKAorICAgICAgICAgICAgY3BwbGludC5fT1RI
RVJfSEVBREVSKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRm91bmQgQysrIHN5c3RlbSBo
ZWFkZXIgYWZ0ZXIgb3RoZXIgaGVhZGVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcHBsaW50Ll9DUFBfU1lTX0hFQURFUikpCisKKyAgICBkZWYgdGVzdF9j
aGVja19uZXh0X2luY2x1ZGVfb3JkZXJfX2NwcF90aGVuX2Moc2VsZik6CisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJycsIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3Jk
ZXIoCisgICAgICAgICAgICBjcHBsaW50Ll9DUFBfU1lTX0hFQURFUikpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ0ZvdW5kIEMgc3lzdGVtIGhlYWRlciBhZnRlciBDKysgc3lzdGVtIGhlYWRl
cicsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmNsdWRlX3N0YXRlLmNoZWNrX25l
eHRfaW5jbHVkZV9vcmRlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5f
Q19TWVNfSEVBREVSKSkKKworICAgIGRlZiB0ZXN0X2NoZWNrX25leHRfaW5jbHVkZV9vcmRlcl9f
bGlrZWx5X3RoZW5fY3BwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzZWxm
LmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKAorICAgICAgICAgICAgY3Bw
bGludC5fTElLRUxZX01ZX0hFQURFUikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIHNl
bGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoCisgICAgICAgICAgICBj
cHBsaW50Ll9DUFBfU1lTX0hFQURFUikpCisKKyAgICBkZWYgdGVzdF9jaGVja19uZXh0X2luY2x1
ZGVfb3JkZXJfX3Bvc3NpYmxlX3RoZW5fY3BwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCcnLCBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKAorICAg
ICAgICAgICAgY3BwbGludC5fUE9TU0lCTEVfTVlfSEVBREVSKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnJywgc2VsZi5pbmNsdWRlX3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9vcmRlcigK
KyAgICAgICAgICAgIGNwcGxpbnQuX0NQUF9TWVNfSEVBREVSKSkKKworICAgIGRlZiB0ZXN0X2No
ZWNrX25leHRfaW5jbHVkZV9vcmRlcl9fY3BwX3RoZW5fbGlrZWx5KHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCcnLCBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRl
X29yZGVyKAorICAgICAgICAgICAgY3BwbGludC5fQ1BQX1NZU19IRUFERVIpKQorICAgICAgICAj
IFRoaXMgd2lsbCBldmVudHVhbGx5IGZhaWwuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycs
IHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoCisgICAgICAgICAg
ICBjcHBsaW50Ll9MSUtFTFlfTVlfSEVBREVSKSkKKworICAgIGRlZiB0ZXN0X2NoZWNrX25leHRf
aW5jbHVkZV9vcmRlcl9fY3BwX3RoZW5fcG9zc2libGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJycsIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIo
CisgICAgICAgICAgICBjcHBsaW50Ll9DUFBfU1lTX0hFQURFUikpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJycsIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIo
CisgICAgICAgICAgICBjcHBsaW50Ll9QT1NTSUJMRV9NWV9IRUFERVIpKQorCisgICAgZGVmIHRl
c3RfY2xhc3NpZnlfaW5jbHVkZShzZWxmKToKKyAgICAgICAgZmlsZV9pbmZvID0gY3BwbGludC5G
aWxlSW5mbworICAgICAgICBjbGFzc2lmeV9pbmNsdWRlID0gY3BwbGludC5fY2xhc3NpZnlfaW5j
bHVkZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNwcGxpbnQuX0NfU1lTX0hFQURFUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2lmeV9pbmNsdWRlKGZpbGVfaW5mbygnZm9vL2Zv
by5jYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZGlv
LmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3BwbGludC5fQ1BQX1NZU19IRUFERVIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZShmaWxlX2luZm8oJ2Zvby9mb28uY2Mn
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY3BwbGludC5fQ1BQX1NZU19IRUFERVIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZShmaWxlX2luZm8oJ2Zvby9mb28uY2MnKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlaW5mbycsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjcHBsaW50Ll9PVEhFUl9IRUFERVIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgY2xhc3NpZnlfaW5jbHVkZShmaWxlX2luZm8oJ2Zvby9mb28uY2MnKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY3BwbGludC5fTElLRUxZX01ZX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjbGFzc2lmeV9pbmNsdWRlKGZpbGVfaW5mbygnZm9vL2Zvby5jYycpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvby9mb28taW5sLmgnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNwcGxpbnQuX0xJS0VMWV9NWV9IRUFERVIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZShmaWxlX2luZm8oJ2Zvby9pbnRlcm5hbC9mb28uY2Mn
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28vcHVibGlj
L2Zvby5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNl
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcHBsaW50Ll9QT1NTSUJMRV9NWV9IRUFERVIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZShmaWxlX2luZm8oJ2Zv
by9pbnRlcm5hbC9mb28uY2MnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdmb28vb3RoZXIvcHVibGljL2Zvby5oJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcHBs
aW50Ll9PVEhFUl9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5j
bHVkZShmaWxlX2luZm8oJ2Zvby9pbnRlcm5hbC9mb28uY2MnKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdmb28vb3RoZXIvcHVibGljL2Zvb3AuaCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSkpCisKKyAgICBkZWYg
dGVzdF90cnlfZHJvcF9jb21tb25fc3VmZml4ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2Zvby9mb28nLCBjcHBsaW50Ll9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvby1p
bmwuaCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28vYmFyL2ZvbycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgY3BwbGludC5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9iYXIv
Zm9vX2lubC5oJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Zvby9mb28nLCBjcHBsaW50
Ll9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvby5jYycpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdmb28vZm9vX3VudXN1YWxpbnRlcm5hbCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY3BwbGludC5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9mb29fdW51c3VhbGludGVybmFs
LmgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjcHBsaW50Ll9kcm9wX2NvbW1vbl9zdWZmaXhlcygnX3Rlc3QuY2MnKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgndGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGlu
dC5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ3Rlc3QuY2MnKSkKKworICAgIGRlZiB0ZXN0X3JlZ3Jl
c3Npb24oc2VsZik6CisgICAgICAgIGRlZiBmb3JtYXQoaW5jbHVkZXMpOgorICAgICAgICAgICAg
cmV0dXJuICcnLmpvaW4oWycjaW5jbHVkZSAlc1xuJyAlIGluY2x1ZGUgZm9yIGluY2x1ZGUgaW4g
aW5jbHVkZXNdKQorCisgICAgICAgICMgVGVzdCBzaW5nbGV0b24gY2FzZXMgZmlyc3QuCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28vZm9vLmNjJywgZm9ybWF0
KFsnImZvby9mb28uaCInXSksICcnKQorICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxl
c19jaGVjaygnZm9vL2Zvby5jYycsIGZvcm1hdChbJzxzdGRpby5oPiddKSwgJycpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28vZm9vLmNjJywgZm9ybWF0KFsn
PHN0cmluZz4nXSksICcnKQorICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVj
aygnZm9vL2Zvby5jYycsIGZvcm1hdChbJyJmb28vZm9vLWlubC5oIiddKSwgJycpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28vZm9vLmNjJywgZm9ybWF0KFsn
ImJhci9iYXItaW5sLmgiJ10pLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVs
ZXNfY2hlY2soJ2Zvby9mb28uY2MnLCBmb3JtYXQoWyciYmFyL2Jhci5oIiddKSwgJycpCisKKyAg
ICAgICAgIyBUZXN0IGV2ZXJ5dGhpbmcgaW4gYSBnb29kIGFuZCBuZXcgb3JkZXIuCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28vZm9vLmNjJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KFsnImZvby9mb28uaCInLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciZm9vL2Zv
by1pbmwuaCInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICc8c3RkaW8uaD4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICc8c3RyaW5nPicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJyJiYXIvYmFyLWlubC5oIicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJiYXIvYmFyLmgiJ10pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgIyBUZXN0IGV2ZXJ5dGhp
bmcgaW4gYSBnb29kIGJ1dCBzbGlnaHRseSBkZXByZWNhdGVkIG9yZGVyLgorICAgICAgICBzZWxm
LmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vL2Zvby5jYycsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChbJyJmb28vZm9vLmgiJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHN0ZGlvLmg+JywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHN0cmlu
Zz4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICci
Zm9vL2Zvby1pbmwuaCInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICciYmFyL2Jhci1pbmwuaCInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICciYmFyL2Jhci5oIiddKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJycpCisgICAgICAgICMgVGVzdCBldmVyeXRoaW5nIGlu
IGEgZ29vZCBidXQgZGVwcmVjYXRlZCBvcmRlci4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3Vh
Z2VfcnVsZXNfY2hlY2soJ2Zvby9mb28uY2MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3JtYXQoWyc8c3RkaW8uaD4nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3RyaW5nPicsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJmb28vZm9vLWlubC5oIicsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJiYXIvYmFyLWlu
bC5oIicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyJmb28vZm9vLmgiJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnImJhci9iYXIuaCInXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcnKQorCisgICAgICAgICMgVGVzdCBiYWQgb3JkZXJzLgorICAgICAgICBzZWxm
LmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygKKyAgICAgICAgICAgICdmb28vZm9vLmNjJywK
KyAgICAgICAgICAgIGZvcm1hdChbJzxzdHJpbmc+JywgJzxzdGRpby5oPiddKSwKKyAgICAgICAg
ICAgICdGb3VuZCBDIHN5c3RlbSBoZWFkZXIgYWZ0ZXIgQysrIHN5c3RlbSBoZWFkZXIuJworICAg
ICAgICAgICAgJyBTaG91bGQgYmU6IGZvby5oLCBjIHN5c3RlbSwgYysrIHN5c3RlbSwgb3RoZXIu
JworICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVfb3JkZXJdIFs0XScpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKAorICAgICAgICAgICAgJ2Zvby9mb28uY2Mn
LAorICAgICAgICAgICAgZm9ybWF0KFsnImZvby9iYXItaW5sLmgiJywKKyAgICAgICAgICAgICAg
ICAgICAgJyJmb28vZm9vLWlubC5oIiddKSwKKyAgICAgICAgICAgICcnKQorICAgICAgICAjIC1p
bmwuaCBoZWFkZXJzIGFyZSBubyBsb25nZXIgc3BlY2lhbC4KKyAgICAgICAgc2VsZi5hc3NlcnRf
bGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby9mb28uY2MnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3JtYXQoWyciZm9vL2Zvby1pbmwuaCInLCAnPHN0cmluZz4n
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAg
ICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vL2Zvby5jYycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChbJyJmb28vYmFyLmgiJywg
JyJmb28vYmFyLWlubC5oIiddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJycpCisgICAgICAgICMgVGVzdCBjb21wb25lbnRpemVkIGhlYWRlci4gIE9LIHRvIGhh
dmUgbXkgaGVhZGVyIGluIC4uL3B1YmxpYyBkaXIuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1
YWdlX3J1bGVzX2NoZWNrKCdmb28vaW50ZXJuYWwvZm9vLmNjJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KFsnImZvby9wdWJsaWMvZm9vLmgiJywgJzxz
dHJpbmc+J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykK
KyAgICAgICAgIyBPSyB0byBoYXZlIG15IGhlYWRlciBpbiBvdGhlciBkaXIgKG5vdCBzdHlsaXN0
aWNhbGx5LCBidXQKKyAgICAgICAgIyBjcHBsaW50IGlzbid0IGFzIGdvb2QgYXMgYSBodW1hbiku
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28vaW50ZXJuYWwv
Zm9vLmNjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0
KFsnImZvby9vdGhlci9wdWJsaWMvZm9vLmgiJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnPHN0cmluZz4nXSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcnKQorCisKK2NsYXNzIENoZWNrRm9yRnVuY3Rpb25MZW5n
dGhzVGVzdChDcHBsaW50VGVzdEJhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAg
IyBSZWR1Y2luZyB0aGVzZSB0aHJlc2hvbGRzIGZvciB0aGUgdGVzdHMgc3BlZWRzIHVwIHRlc3Rz
IHNpZ25pZmljYW50bHkuCisgICAgICAgIHNlbGYub2xkX25vcm1hbF90cmlnZ2VyID0gY3BwbGlu
dC5fRnVuY3Rpb25TdGF0ZS5fTk9STUFMX1RSSUdHRVIKKyAgICAgICAgc2VsZi5vbGRfdGVzdF90
cmlnZ2VyID0gY3BwbGludC5fRnVuY3Rpb25TdGF0ZS5fVEVTVF9UUklHR0VSCisKKyAgICAgICAg
Y3BwbGludC5fRnVuY3Rpb25TdGF0ZS5fTk9STUFMX1RSSUdHRVIgPSAxMAorICAgICAgICBjcHBs
aW50Ll9GdW5jdGlvblN0YXRlLl9URVNUX1RSSUdHRVIgPSAyNQorCisgICAgZGVmIHRlYXJEb3du
KHNlbGYpOgorICAgICAgICBjcHBsaW50Ll9GdW5jdGlvblN0YXRlLl9OT1JNQUxfVFJJR0dFUiA9
IHNlbGYub2xkX25vcm1hbF90cmlnZ2VyCisgICAgICAgIGNwcGxpbnQuX0Z1bmN0aW9uU3RhdGUu
X1RFU1RfVFJJR0dFUiA9IHNlbGYub2xkX3Rlc3RfdHJpZ2dlcgorCisgICAgZGVmIGFzc2VydF9m
dW5jdGlvbl9sZW5ndGhzX2NoZWNrKHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2UpOgorICAg
ICAgICAiIiJDaGVjayB3YXJuaW5ncyBmb3IgbG9uZyBmdW5jdGlvbiBib2RpZXMgYXJlIGFzIGV4
cGVjdGVkLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgY29kZTogQysrIHNvdXJjZSBjb2Rl
IGV4cGVjdGVkIHRvIGdlbmVyYXRlIGEgd2FybmluZyBtZXNzYWdlLgorICAgICAgICAgIGV4cGVj
dGVkX21lc3NhZ2U6IE1lc3NhZ2UgZXhwZWN0ZWQgdG8gYmUgZ2VuZXJhdGVkIGJ5IHRoZSBDKysg
Y29kZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX21l
c3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGVyZm9ybV9mdW5jdGlvbl9s
ZW5ndGhzX2NoZWNrKGNvZGUpKQorCisgICAgZGVmIHRyaWdnZXJfbGluZXMoc2VsZiwgZXJyb3Jf
bGV2ZWwpOgorICAgICAgICAiIiJSZXR1cm4gbnVtYmVyIG9mIGxpbmVzIG5lZWRlZCB0byB0cmln
Z2VyIGEgZnVuY3Rpb24gbGVuZ3RoIHdhcm5pbmcuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg
ICBlcnJvcl9sZXZlbDogLS12IHNldHRpbmcgZm9yIGNwcGxpbnQuCisKKyAgICAgICAgUmV0dXJu
czoKKyAgICAgICAgICBOdW1iZXIgb2YgbGluZXMgbmVlZGVkIHRvIHRyaWdnZXIgYSBmdW5jdGlv
biBsZW5ndGggd2FybmluZy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBjcHBsaW50Ll9G
dW5jdGlvblN0YXRlLl9OT1JNQUxfVFJJR0dFUiAqIDIgKiogZXJyb3JfbGV2ZWwKKworICAgIGRl
ZiB0cmlnZ2VyX3Rlc3RfbGluZXMoc2VsZiwgZXJyb3JfbGV2ZWwpOgorICAgICAgICAiIiJSZXR1
cm4gbnVtYmVyIG9mIGxpbmVzIG5lZWRlZCB0byB0cmlnZ2VyIGEgdGVzdCBmdW5jdGlvbiBsZW5n
dGggd2FybmluZy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIGVycm9yX2xldmVsOiAtLXYg
c2V0dGluZyBmb3IgY3BwbGludC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgIE51bWJl
ciBvZiBsaW5lcyBuZWVkZWQgdG8gdHJpZ2dlciBhIHRlc3QgZnVuY3Rpb24gbGVuZ3RoIHdhcm5p
bmcuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gY3BwbGludC5fRnVuY3Rpb25TdGF0ZS5f
VEVTVF9UUklHR0VSICogMiAqKiBlcnJvcl9sZXZlbAorCisgICAgZGVmIGFzc2VydF9mdW5jdGlv
bl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbihzZWxmLCBsaW5lcywgZXJyb3JfbGV2ZWwpOgorICAg
ICAgICAiIiJHZW5lcmF0ZSBsb25nIGZ1bmN0aW9uIGRlZmluaXRpb24gYW5kIGNoZWNrIHdhcm5p
bmdzIGFyZSBhcyBleHBlY3RlZC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIGxpbmVzOiBO
dW1iZXIgb2YgbGluZXMgdG8gZ2VuZXJhdGUuCisgICAgICAgICAgZXJyb3JfbGV2ZWw6ICAtLXYg
c2V0dGluZyBmb3IgY3BwbGludC4KKyAgICAgICAgIiIiCisgICAgICAgIHRyaWdnZXJfbGV2ZWwg
PSBzZWxmLnRyaWdnZXJfbGluZXMoY3BwbGludC5fdmVyYm9zZV9sZXZlbCgpKQorICAgICAgICBz
ZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAorICAgICAgICAgICAgJ3ZvaWQgdGVz
dChpbnQgeCknICsgc2VsZi5mdW5jdGlvbl9ib2R5KGxpbmVzKSwKKyAgICAgICAgICAgICgnU21h
bGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcKKyAgICAgICAgICAgICAn
dGVzdCgpIGhhcyAlZCBub24tY29tbWVudCBsaW5lcyAnCisgICAgICAgICAgICAgJyhlcnJvciB0
cmlnZ2VyZWQgYnkgZXhjZWVkaW5nICVkIGxpbmVzKS4nCisgICAgICAgICAgICAgJyAgW3JlYWRh
YmlsaXR5L2ZuX3NpemVdIFslZF0nCisgICAgICAgICAgICAgJSAobGluZXMsIHRyaWdnZXJfbGV2
ZWwsIGVycm9yX2xldmVsKSkpCisKKyAgICBkZWYgYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVj
a19kZWZpbml0aW9uX29rKHNlbGYsIGxpbmVzKToKKyAgICAgICAgIiIiR2VuZXJhdGUgc2hvcnRl
ciBmdW5jdGlvbiBkZWZpbml0aW9uIGFuZCBjaGVjayBubyB3YXJuaW5nIGlzIHByb2R1Y2VkLgor
CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgbGluZXM6IE51bWJlciBvZiBsaW5lcyB0byBnZW5l
cmF0ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNf
Y2hlY2soCisgICAgICAgICAgICAndm9pZCB0ZXN0KGludCB4KScgKyBzZWxmLmZ1bmN0aW9uX2Jv
ZHkobGluZXMpLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgYXNzZXJ0X2Z1bmN0aW9uX2xl
bmd0aF9jaGVja19hdF9lcnJvcl9sZXZlbChzZWxmLCBlcnJvcl9sZXZlbCk6CisgICAgICAgICIi
IkdlbmVyYXRlIGFuZCBjaGVjayBmdW5jdGlvbiBhdCB0aGUgdHJpZ2dlciBsZXZlbCBmb3IgLS12
IHNldHRpbmcuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBlcnJvcl9sZXZlbDogLS12IHNl
dHRpbmcgZm9yIGNwcGxpbnQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmFzc2VydF9mdW5j
dGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbihzZWxmLnRyaWdnZXJfbGluZXMoZXJyb3JfbGV2
ZWwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlcnJvcl9sZXZlbCkKKworICAgIGRlZiBhc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2Jl
bG93X2Vycm9yX2xldmVsKHNlbGYsIGVycm9yX2xldmVsKToKKyAgICAgICAgIiIiR2VuZXJhdGUg
YW5kIGNoZWNrIGZ1bmN0aW9uIGp1c3QgYmVsb3cgdGhlIHRyaWdnZXIgbGV2ZWwgZm9yIC0tdiBz
ZXR0aW5nLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZXJyb3JfbGV2ZWw6IC0tdiBzZXR0
aW5nIGZvciBjcHBsaW50LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rp
b25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb24oc2VsZi50cmlnZ2VyX2xpbmVzKGVycm9yX2xldmVs
KSAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVycm9yX2xldmVsIC0gMSkKKworICAgIGRlZiBhc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2No
ZWNrX2Fib3ZlX2Vycm9yX2xldmVsKHNlbGYsIGVycm9yX2xldmVsKToKKyAgICAgICAgIiIiR2Vu
ZXJhdGUgYW5kIGNoZWNrIGZ1bmN0aW9uIGp1c3QgYWJvdmUgdGhlIHRyaWdnZXIgbGV2ZWwgZm9y
IC0tdiBzZXR0aW5nLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZXJyb3JfbGV2ZWw6IC0t
diBzZXR0aW5nIGZvciBjcHBsaW50LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRf
ZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb24oc2VsZi50cmlnZ2VyX2xpbmVzKGVycm9y
X2xldmVsKSArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVycm9yX2xldmVsKQorCisgICAgZGVmIGZ1bmN0aW9uX2JvZHkoc2VsZiwgbnVt
YmVyX29mX2xpbmVzKToKKyAgICAgICAgcmV0dXJuICcge1xuJyArICcgICAgdGhpc19pc19qdXN0
X2FfdGVzdCgpO1xuJyAqIG51bWJlcl9vZl9saW5lcyArICd9JworCisgICAgZGVmIGZ1bmN0aW9u
X2JvZHlfd2l0aF9ibGFua19saW5lcyhzZWxmLCBudW1iZXJfb2ZfbGluZXMpOgorICAgICAgICBy
ZXR1cm4gJyB7XG4nICsgJyAgICB0aGlzX2lzX2p1c3RfYV90ZXN0KCk7XG5cbicgKiBudW1iZXJf
b2ZfbGluZXMgKyAnfScKKworICAgIGRlZiBmdW5jdGlvbl9ib2R5X3dpdGhfbm9fbGludHMoc2Vs
ZiwgbnVtYmVyX29mX2xpbmVzKToKKyAgICAgICAgcmV0dXJuICcge1xuJyArICcgICAgdGhpc19p
c19qdXN0X2FfdGVzdCgpOyAgLy8gTk9MSU5UXG4nICogbnVtYmVyX29mX2xpbmVzICsgJ30nCisK
KyAgICAjIFRlc3QgbGluZSBsZW5ndGggY2hlY2tzLgorICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xl
bmd0aF9jaGVja19kZWNsYXJhdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rp
b25fbGVuZ3Roc19jaGVjaygKKyAgICAgICAgICAgICd2b2lkIHRlc3QoKTsnLCAgIyBOb3QgYSBm
dW5jdGlvbiBkZWZpbml0aW9uCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2Z1bmN0
aW9uX2xlbmd0aF9jaGVja19kZWNsYXJhdGlvbl93aXRoX2Jsb2NrX2ZvbGxvd2luZyhzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKKyAgICAgICAgICAg
ICgndm9pZCB0ZXN0KCk7XG4nCisgICAgICAgICAgICAgKyBzZWxmLmZ1bmN0aW9uX2JvZHkoNjYp
KSwgICMgTm90IGEgZnVuY3Rpb24gZGVmaW5pdGlvbgorICAgICAgICAgICAgJycpCisKKyAgICBk
ZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfY2xhc3NfZGVmaW5pdGlvbihzZWxmKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjayggICMgTm90IGEgZnVuY3Rp
b24gZGVmaW5pdGlvbgorICAgICAgICAgICAgJ2NsYXNzIFRlc3QnICsgc2VsZi5mdW5jdGlvbl9i
b2R5KDY2KSArICc7JywKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25f
bGVuZ3RoX2NoZWNrX3RyaXZpYWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9u
X2xlbmd0aHNfY2hlY2soCisgICAgICAgICAgICAndm9pZCB0ZXN0KCkge30nLCAgIyBOb3QgY291
bnRlZAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hl
Y2tfZW1wdHkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hl
Y2soCisgICAgICAgICAgICAndm9pZCB0ZXN0KCkge1xufScsCisgICAgICAgICAgICAnJykKKwor
ICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2JlbG93X3NldmVy
aXR5MChzZWxmKToKKyAgICAgICAgb2xkX3ZlcmJvc2l0eSA9IGNwcGxpbnQuX3NldF92ZXJib3Nl
X2xldmVsKDApCisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZp
bml0aW9uX29rKHNlbGYudHJpZ2dlcl9saW5lcygwKSAtIDEpCisgICAgICAgIGNwcGxpbnQuX3Nl
dF92ZXJib3NlX2xldmVsKG9sZF92ZXJib3NpdHkpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9s
ZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9hdF9zZXZlcml0eTAoc2VsZik6CisgICAgICAgIG9sZF92
ZXJib3NpdHkgPSBjcHBsaW50Ll9zZXRfdmVyYm9zZV9sZXZlbCgwKQorICAgICAgICBzZWxmLmFz
c2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9vayhzZWxmLnRyaWdnZXJfbGlu
ZXMoMCkpCisgICAgICAgIGNwcGxpbnQuX3NldF92ZXJib3NlX2xldmVsKG9sZF92ZXJib3NpdHkp
CisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9hYm92ZV9z
ZXZlcml0eTAoc2VsZik6CisgICAgICAgIG9sZF92ZXJib3NpdHkgPSBjcHBsaW50Ll9zZXRfdmVy
Ym9zZV9sZXZlbCgwKQorICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tf
YWJvdmVfZXJyb3JfbGV2ZWwoMCkKKyAgICAgICAgY3BwbGludC5fc2V0X3ZlcmJvc2VfbGV2ZWwo
b2xkX3ZlcmJvc2l0eSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZp
bml0aW9uX2JlbG93X3NldmVyaXR5MXYwKHNlbGYpOgorICAgICAgICBvbGRfdmVyYm9zaXR5ID0g
Y3BwbGludC5fc2V0X3ZlcmJvc2VfbGV2ZWwoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rp
b25fbGVuZ3RoX2NoZWNrX2JlbG93X2Vycm9yX2xldmVsKDEpCisgICAgICAgIGNwcGxpbnQuX3Nl
dF92ZXJib3NlX2xldmVsKG9sZF92ZXJib3NpdHkpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9s
ZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9hdF9zZXZlcml0eTF2MChzZWxmKToKKyAgICAgICAgb2xk
X3ZlcmJvc2l0eSA9IGNwcGxpbnQuX3NldF92ZXJib3NlX2xldmVsKDApCisgICAgICAgIHNlbGYu
YXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hdF9lcnJvcl9sZXZlbCgxKQorICAgICAgICBj
cHBsaW50Ll9zZXRfdmVyYm9zZV9sZXZlbChvbGRfdmVyYm9zaXR5KQorCisgICAgZGVmIHRlc3Rf
ZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYmVsb3dfc2V2ZXJpdHkxKHNlbGYpOgor
ICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9vayhz
ZWxmLnRyaWdnZXJfbGluZXMoMSkgLSAxKQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3Ro
X2NoZWNrX2RlZmluaXRpb25fYXRfc2V2ZXJpdHkxKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2Vy
dF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9vayhzZWxmLnRyaWdnZXJfbGluZXMo
MSkpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9hYm92
ZV9zZXZlcml0eTEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9j
aGVja19hYm92ZV9lcnJvcl9sZXZlbCgxKQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3Ro
X2NoZWNrX2RlZmluaXRpb25fc2V2ZXJpdHkxX3BsdXNfYmxhbmtzKHNlbGYpOgorICAgICAgICBl
cnJvcl9sZXZlbCA9IDEKKyAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxmLnRyaWdnZXJfbGluZXMo
ZXJyb3JfbGV2ZWwpICsgMQorICAgICAgICB0cmlnZ2VyX2xldmVsID0gc2VsZi50cmlnZ2VyX2xp
bmVzKGNwcGxpbnQuX3ZlcmJvc2VfbGV2ZWwoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rp
b25fbGVuZ3Roc19jaGVjaygKKyAgICAgICAgICAgICd2b2lkIHRlc3RfYmxhbmtzKGludCB4KScg
KyBzZWxmLmZ1bmN0aW9uX2JvZHkoZXJyb3JfbGluZXMpLAorICAgICAgICAgICAgKCdTbWFsbCBh
bmQgZm9jdXNlZCBmdW5jdGlvbnMgYXJlIHByZWZlcnJlZDogJworICAgICAgICAgICAgICd0ZXN0
X2JsYW5rcygpIGhhcyAlZCBub24tY29tbWVudCBsaW5lcyAnCisgICAgICAgICAgICAgJyhlcnJv
ciB0cmlnZ2VyZWQgYnkgZXhjZWVkaW5nICVkIGxpbmVzKS4nCisgICAgICAgICAgICAgJyAgW3Jl
YWRhYmlsaXR5L2ZuX3NpemVdIFslZF0nKQorICAgICAgICAgICAgJSAoZXJyb3JfbGluZXMsIHRy
aWdnZXJfbGV2ZWwsIGVycm9yX2xldmVsKSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0
aF9jaGVja19jb21wbGV4X2RlZmluaXRpb25fc2V2ZXJpdHkxKHNlbGYpOgorICAgICAgICBlcnJv
cl9sZXZlbCA9IDEKKyAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxmLnRyaWdnZXJfbGluZXMoZXJy
b3JfbGV2ZWwpICsgMQorICAgICAgICB0cmlnZ2VyX2xldmVsID0gc2VsZi50cmlnZ2VyX2xpbmVz
KGNwcGxpbnQuX3ZlcmJvc2VfbGV2ZWwoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25f
bGVuZ3Roc19jaGVjaygKKyAgICAgICAgICAgICgnbXlfbmFtZXNwYWNlOjpteV9vdGhlcl9uYW1l
c3BhY2U6Ok15VmVyeUxvbmdUeXBlTmFtZSpcbicKKyAgICAgICAgICAgICAnbXlfbmFtZXNwYWNl
OjpteV9vdGhlcl9uYW1lc3BhY2U6Ok15RnVuY3Rpb24oaW50IGFyZzEsIGNoYXIqIGFyZzIpJwor
ICAgICAgICAgICAgICsgc2VsZi5mdW5jdGlvbl9ib2R5KGVycm9yX2xpbmVzKSksCisgICAgICAg
ICAgICAoJ1NtYWxsIGFuZCBmb2N1c2VkIGZ1bmN0aW9ucyBhcmUgcHJlZmVycmVkOiAnCisgICAg
ICAgICAgICAgJ215X25hbWVzcGFjZTo6bXlfb3RoZXJfbmFtZXNwYWNlOjpNeUZ1bmN0aW9uKCkn
CisgICAgICAgICAgICAgJyBoYXMgJWQgbm9uLWNvbW1lbnQgbGluZXMgJworICAgICAgICAgICAg
ICcoZXJyb3IgdHJpZ2dlcmVkIGJ5IGV4Y2VlZGluZyAlZCBsaW5lcykuJworICAgICAgICAgICAg
ICcgIFtyZWFkYWJpbGl0eS9mbl9zaXplXSBbJWRdJykKKyAgICAgICAgICAgICUgKGVycm9yX2xp
bmVzLCB0cmlnZ2VyX2xldmVsLCBlcnJvcl9sZXZlbCkpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlv
bl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0eTFfZm9yX3Rlc3Qoc2VsZik6CisgICAg
ICAgIGVycm9yX2xldmVsID0gMQorICAgICAgICBlcnJvcl9saW5lcyA9IHNlbGYudHJpZ2dlcl90
ZXN0X2xpbmVzKGVycm9yX2xldmVsKSArIDEKKyAgICAgICAgdHJpZ2dlcl9sZXZlbCA9IHNlbGYu
dHJpZ2dlcl90ZXN0X2xpbmVzKGNwcGxpbnQuX3ZlcmJvc2VfbGV2ZWwoKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKKyAgICAgICAgICAgICdURVNUX0YoVGVz
dCwgTXV0YXRvciknICsgc2VsZi5mdW5jdGlvbl9ib2R5KGVycm9yX2xpbmVzKSwKKyAgICAgICAg
ICAgICgnU21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcKKyAgICAg
ICAgICAgICAnVEVTVF9GKFRlc3QsIE11dGF0b3IpIGhhcyAlZCBub24tY29tbWVudCBsaW5lcyAn
CisgICAgICAgICAgICAgJyhlcnJvciB0cmlnZ2VyZWQgYnkgZXhjZWVkaW5nICVkIGxpbmVzKS4n
CisgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2ZuX3NpemVdIFslZF0nKQorICAgICAgICAg
ICAgJSAoZXJyb3JfbGluZXMsIHRyaWdnZXJfbGV2ZWwsIGVycm9yX2xldmVsKSkKKworICAgIGRl
ZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX3NldmVyaXR5MV9mb3Jfc3Bs
aXRfbGluZV90ZXN0KHNlbGYpOgorICAgICAgICBlcnJvcl9sZXZlbCA9IDEKKyAgICAgICAgZXJy
b3JfbGluZXMgPSBzZWxmLnRyaWdnZXJfdGVzdF9saW5lcyhlcnJvcl9sZXZlbCkgKyAxCisgICAg
ICAgIHRyaWdnZXJfbGV2ZWwgPSBzZWxmLnRyaWdnZXJfdGVzdF9saW5lcyhjcHBsaW50Ll92ZXJi
b3NlX2xldmVsKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2so
CisgICAgICAgICAgICAoJ1RFU1RfRihHb29nbGVVcGRhdGVSZWNvdmVyeVJlZ2lzdHJ5UHJvdGVj
dGVkVGVzdCxcbicKKyAgICAgICAgICAgICAnICAgIEZpeEdvb2dsZVVwZGF0ZV9BbGxWYWx1ZXNf
TWFjaGluZUFwcCknICAjIG5vdGU6IDQgc3BhY2VzCisgICAgICAgICAgICAgKyBzZWxmLmZ1bmN0
aW9uX2JvZHkoZXJyb3JfbGluZXMpKSwKKyAgICAgICAgICAgICgnU21hbGwgYW5kIGZvY3VzZWQg
ZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcKKyAgICAgICAgICAgICAnVEVTVF9GKEdvb2dsZVVw
ZGF0ZVJlY292ZXJ5UmVnaXN0cnlQcm90ZWN0ZWRUZXN0LCAnICAjIDEgc3BhY2UKKyAgICAgICAg
ICAgICAnRml4R29vZ2xlVXBkYXRlX0FsbFZhbHVlc19NYWNoaW5lQXBwKSBoYXMgJWQgbm9uLWNv
bW1lbnQgbGluZXMgJworICAgICAgICAgICAgICcoZXJyb3IgdHJpZ2dlcmVkIGJ5IGV4Y2VlZGlu
ZyAlZCBsaW5lcykuJworICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9mbl9zaXplXSBbJWRd
JykKKyAgICAgICAgICAgICUgKGVycm9yX2xpbmVzKzEsIHRyaWdnZXJfbGV2ZWwsIGVycm9yX2xl
dmVsKSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX3Nl
dmVyaXR5MV9mb3JfYmFkX3Rlc3RfZG9lc250X2JyZWFrKHNlbGYpOgorICAgICAgICBlcnJvcl9s
ZXZlbCA9IDEKKyAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxmLnRyaWdnZXJfdGVzdF9saW5lcyhl
cnJvcl9sZXZlbCkgKyAxCisgICAgICAgIHRyaWdnZXJfbGV2ZWwgPSBzZWxmLnRyaWdnZXJfdGVz
dF9saW5lcyhjcHBsaW50Ll92ZXJib3NlX2xldmVsKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1
bmN0aW9uX2xlbmd0aHNfY2hlY2soCisgICAgICAgICAgICAoJ1RFU1RfRignCisgICAgICAgICAg
ICAgKyBzZWxmLmZ1bmN0aW9uX2JvZHkoZXJyb3JfbGluZXMpKSwKKyAgICAgICAgICAgICgnU21h
bGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcKKyAgICAgICAgICAgICAn
VEVTVF9GIGhhcyAlZCBub24tY29tbWVudCBsaW5lcyAnCisgICAgICAgICAgICAgJyhlcnJvciB0
cmlnZ2VyZWQgYnkgZXhjZWVkaW5nICVkIGxpbmVzKS4nCisgICAgICAgICAgICAgJyAgW3JlYWRh
YmlsaXR5L2ZuX3NpemVdIFslZF0nKQorICAgICAgICAgICAgJSAoZXJyb3JfbGluZXMsIHRyaWdn
ZXJfbGV2ZWwsIGVycm9yX2xldmVsKSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9j
aGVja19kZWZpbml0aW9uX3NldmVyaXR5MV93aXRoX2VtYmVkZGVkX25vX2xpbnRzKHNlbGYpOgor
ICAgICAgICBlcnJvcl9sZXZlbCA9IDEKKyAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxmLnRyaWdn
ZXJfbGluZXMoZXJyb3JfbGV2ZWwpICsgMQorICAgICAgICB0cmlnZ2VyX2xldmVsID0gc2VsZi50
cmlnZ2VyX2xpbmVzKGNwcGxpbnQuX3ZlcmJvc2VfbGV2ZWwoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKKyAgICAgICAgICAgICd2b2lkIHRlc3QoaW50IHgp
JyArIHNlbGYuZnVuY3Rpb25fYm9keV93aXRoX25vX2xpbnRzKGVycm9yX2xpbmVzKSwKKyAgICAg
ICAgICAgICgnU21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcKKyAg
ICAgICAgICAgICAndGVzdCgpIGhhcyAlZCBub24tY29tbWVudCBsaW5lcyAnCisgICAgICAgICAg
ICAgJyhlcnJvciB0cmlnZ2VyZWQgYnkgZXhjZWVkaW5nICVkIGxpbmVzKS4nCisgICAgICAgICAg
ICAgJyAgW3JlYWRhYmlsaXR5L2ZuX3NpemVdIFslZF0nKQorICAgICAgICAgICAgJSAoZXJyb3Jf
bGluZXMsIHRyaWdnZXJfbGV2ZWwsIGVycm9yX2xldmVsKSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0
aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX3NldmVyaXR5MV93aXRoX25vX2xpbnQoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCisgICAgICAgICAg
ICAoJ3ZvaWQgdGVzdChpbnQgeCknICsgc2VsZi5mdW5jdGlvbl9ib2R5KHNlbGYudHJpZ2dlcl9s
aW5lcygxKSkKKyAgICAgICAgICAgICArICcgIC8vIE5PTElOVCAtLSBsb25nIGZ1bmN0aW9uJyks
CisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19k
ZWZpbml0aW9uX2JlbG93X3NldmVyaXR5MihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVu
Y3Rpb25fbGVuZ3RoX2NoZWNrX2JlbG93X2Vycm9yX2xldmVsKDIpCisKKyAgICBkZWYgdGVzdF9m
dW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0eTIoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hdF9lcnJvcl9sZXZlbCgyKQorCisg
ICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYWJvdmVfc2V2ZXJp
dHkyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYWJv
dmVfZXJyb3JfbGV2ZWwoMikKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19k
ZWZpbml0aW9uX2JlbG93X3NldmVyaXR5MyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVu
Y3Rpb25fbGVuZ3RoX2NoZWNrX2JlbG93X2Vycm9yX2xldmVsKDMpCisKKyAgICBkZWYgdGVzdF9m
dW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0eTMoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hdF9lcnJvcl9sZXZlbCgzKQorCisg
ICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYWJvdmVfc2V2ZXJp
dHkzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYWJv
dmVfZXJyb3JfbGV2ZWwoMykKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19k
ZWZpbml0aW9uX2JlbG93X3NldmVyaXR5NChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVu
Y3Rpb25fbGVuZ3RoX2NoZWNrX2JlbG93X2Vycm9yX2xldmVsKDQpCisKKyAgICBkZWYgdGVzdF9m
dW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0eTQoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hdF9lcnJvcl9sZXZlbCg0KQorCisg
ICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYWJvdmVfc2V2ZXJp
dHk0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYWJv
dmVfZXJyb3JfbGV2ZWwoNCkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19k
ZWZpbml0aW9uX2JlbG93X3NldmVyaXR5NShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVu
Y3Rpb25fbGVuZ3RoX2NoZWNrX2JlbG93X2Vycm9yX2xldmVsKDUpCisKKyAgICBkZWYgdGVzdF9m
dW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9hdF9zZXZlcml0eTUoc2VsZik6CisgICAg
ICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hdF9lcnJvcl9sZXZlbCg1KQor
CisgICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYWJvdmVfc2V2
ZXJpdHk1KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tf
YWJvdmVfZXJyb3JfbGV2ZWwoNSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVj
a19kZWZpbml0aW9uX2h1Z2VfbGluZXMoc2VsZik6CisgICAgICAgICMgNSBpcyB0aGUgbGltaXQK
KyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb24oc2Vs
Zi50cmlnZ2VyX2xpbmVzKDEwKSwgNSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9u
b3RfZGV0ZXJtaW5hYmxlKHNlbGYpOgorICAgICAgICAjIE1hY3JvIGludm9jYXRpb24gd2l0aG91
dCB0ZXJtaW5hdGluZyBzZW1pY29sb24uCisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xl
bmd0aHNfY2hlY2soCisgICAgICAgICAgICAnTUFDUk8oYXJnKScsCisgICAgICAgICAgICAnJykK
KworICAgICAgICAjIE1hY3JvIHdpdGggdW5kZXJzY29yZXMKKyAgICAgICAgc2VsZi5hc3NlcnRf
ZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKKyAgICAgICAgICAgICdNQUNST19XSVRIX1VOREVSU0NP
UkVTKGFyZzEsIGFyZzIsIGFyZzMpJywKKyAgICAgICAgICAgICcnKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCisgICAgICAgICAgICAnTm9uTWFjcm8oYXJn
KScsCisgICAgICAgICAgICAnTGludCBmYWlsZWQgdG8gZmluZCBzdGFydCBvZiBmdW5jdGlvbiBi
b2R5LicKKyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9mbl9zaXplXSBbNV0nKQorCisKK2Ns
YXNzIE5vTm9uVmlydHVhbERlc3RydWN0b3JzVGVzdChDcHBsaW50VGVzdEJhc2UpOgorCisgICAg
ZGVmIHRlc3Rfbm9fZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKKyAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7CisgICAgICAgICAgICAgICAgICAgdmly
dHVhbCB+Rm9vKCk7CisgICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOworICAg
ICAgICAgICAgICAgfTsnJycsCisgICAgICAgICAgICAnJykKKworICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnJydjbGFzcyBGb28geworICAgICAgICAg
ICAgICAgICAgIHZpcnR1YWwgaW5saW5lIH5Gb28oKTsKKyAgICAgICAgICAgICAgICAgICB2aXJ0
dWFsIHZvaWQgZm9vKCk7CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICcnKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ2Ns
YXNzIEZvbyB7CisgICAgICAgICAgICAgICAgICAgaW5saW5lIHZpcnR1YWwgfkZvbygpOworICAg
ICAgICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBmb28oKTsKKyAgICAgICAgICAgICAgIH07Jycn
LAorICAgICAgICAgICAgJycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAorICAgICAgICAgICAgJycnY2xhc3MgRm9vOjpHb28geworICAgICAgICAgICAgICAgICAgIHZp
cnR1YWwgfkdvbygpOworICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBnb28oKTsKKyAg
ICAgICAgICAgICAgIH07JycnLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdjbGFzcyBGb28geyB2b2lkIGZvbygpOyB9
OycsCisgICAgICAgICAgICAnTW9yZSB0aGFuIG9uZSBjb21tYW5kIG9uIHRoZSBzYW1lIGxpbmUg
IFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAorICAgICAgICAgICAgJycnY2xhc3MgUXVhbGlmaWVkOjpHb28gOiBwdWJsaWMg
Rm9vIHsKKyAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZ29vKCk7CisgICAgICAgICAg
ICAgICB9OycnJywKKyAgICAgICAgICAgICcnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRp
X2xpbmVfbGludCgKKyAgICAgICAgICAgICMgTGluZS1lbmRpbmcgOgorICAgICAgICAgICAgJycn
Y2xhc3MgR29vIDoKKyAgICAgICAgICAgICAgIHB1YmxpYyBGb28geworICAgICAgICAgICAgICAg
ICAgICB2aXJ0dWFsIHZvaWQgZ29vKCk7CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAg
ICAgICdMYWJlbHMgc2hvdWxkIGFsd2F5cyBiZSBpbmRlbnRlZCBhdCBsZWFzdCBvbmUgc3BhY2Uu
ICBJZiB0aGlzIGlzIGEgJworICAgICAgICAgICAgJ21lbWJlci1pbml0aWFsaXplciBsaXN0IGlu
IGEgY29uc3RydWN0b3IsIHRoZSBjb2xvbiBzaG91bGQgYmUgb24gdGhlICcKKyAgICAgICAgICAg
ICdsaW5lIGFmdGVyIHRoZSBkZWZpbml0aW9uIGhlYWRlci4gIFt3aGl0ZXNwYWNlL2xhYmVsc10g
WzRdJykKKworICAgIGRlZiB0ZXN0X25vX2Rlc3RydWN0b3Jfd2hlbl92aXJ0dWFsX25lZWRlZChz
ZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50X3JlKAorICAgICAgICAg
ICAgJycnY2xhc3MgRm9vIHsKKyAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7
CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICdUaGUgY2xhc3MgRm9vIHByb2Jh
Ymx5IG5lZWRzIGEgdmlydHVhbCBkZXN0cnVjdG9yJykKKworICAgIGRlZiB0ZXN0X2Rlc3RydWN0
b3Jfbm9uX3ZpcnR1YWxfd2hlbl92aXJ0dWFsX25lZWRlZChzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50X3JlKAorICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKKyAg
ICAgICAgICAgICAgICAgICB+Rm9vKCk7CisgICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lk
IGZvbygpOworICAgICAgICAgICAgICAgfTsnJycsCisgICAgICAgICAgICAnVGhlIGNsYXNzIEZv
byBwcm9iYWJseSBuZWVkcyBhIHZpcnR1YWwgZGVzdHJ1Y3RvcicpCisKKyAgICBkZWYgdGVzdF9u
b193YXJuX3doZW5fZGVyaXZlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KAorICAgICAgICAgICAgJycnY2xhc3MgRm9vIDogcHVibGljIEdvbyB7CisgICAgICAg
ICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOworICAgICAgICAgICAgICAgfTsnJycsCisg
ICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2ludGVybmFsX2JyYWNlcyhzZWxmKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50X3JlKAorICAgICAgICAgICAgJycnY2xh
c3MgRm9vIHsKKyAgICAgICAgICAgICAgICAgICBlbnVtIEdvbyB7CisgICAgICAgICAgICAgICAg
ICAgICAgIEdPTworICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgdmly
dHVhbCB2b2lkIGZvbygpOworICAgICAgICAgICAgICAgfTsnJycsCisgICAgICAgICAgICAnVGhl
IGNsYXNzIEZvbyBwcm9iYWJseSBuZWVkcyBhIHZpcnR1YWwgZGVzdHJ1Y3RvcicpCisKKyAgICBk
ZWYgdGVzdF9pbm5lcl9jbGFzc19uZWVkc192aXJ0dWFsX2Rlc3RydWN0b3Ioc2VsZik6CisgICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludF9yZSgKKyAgICAgICAgICAgICcnJ2NsYXNz
IEZvbyB7CisgICAgICAgICAgICAgICAgICAgY2xhc3MgR29vIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgdmlydHVhbCB2b2lkIGdvbygpOworICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICB9OycnJywKKyAgICAgICAgICAgICdUaGUgY2xhc3MgR29vIHByb2JhYmx5IG5lZWRz
IGEgdmlydHVhbCBkZXN0cnVjdG9yJykKKworICAgIGRlZiB0ZXN0X291dGVyX2NsYXNzX25lZWRz
X3ZpcnR1YWxfZGVzdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50X3JlKAorICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKKyAgICAgICAgICAgICAgICAg
ICBjbGFzcyBHb28geworICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAg
dmlydHVhbCB2b2lkIGZvbygpOworICAgICAgICAgICAgICAgfTsnJycsCisgICAgICAgICAgICAn
VGhlIGNsYXNzIEZvbyBwcm9iYWJseSBuZWVkcyBhIHZpcnR1YWwgZGVzdHJ1Y3RvcicpCisKKyAg
ICBkZWYgdGVzdF9xdWFsaWZpZWRfY2xhc3NfbmVlZHNfdmlydHVhbF9kZXN0cnVjdG9yKHNlbGYp
OgorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnRfcmUoCisgICAgICAgICAgICAn
JydjbGFzcyBRdWFsaWZpZWQ6OkZvbyB7CisgICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lk
IGZvbygpOworICAgICAgICAgICAgICAgfTsnJycsCisgICAgICAgICAgICAnVGhlIGNsYXNzIFF1
YWxpZmllZDo6Rm9vIHByb2JhYmx5IG5lZWRzIGEgdmlydHVhbCBkZXN0cnVjdG9yJykKKworICAg
IGRlZiB0ZXN0X211bHRpX2xpbmVfZGVjbGFyYXRpb25fbm9fZXJyb3Ioc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludF9yZSgKKyAgICAgICAgICAgICcnJ2NsYXNzIEZv
bworICAgICAgICAgICAgICAgICAgIDogcHVibGljIEdvbyB7CisgICAgICAgICAgICAgICAgICAg
dmlydHVhbCB2b2lkIGZvbygpOworICAgICAgICAgICAgICAgfTsnJycsCisgICAgICAgICAgICAn
JykKKworICAgIGRlZiB0ZXN0X211bHRpX2xpbmVfZGVjbGFyYXRpb25fd2l0aF9lcnJvcihzZWxm
KToKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycn
Y2xhc3MgRm9vCisgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgdmlydHVhbCB2
b2lkIGZvbygpOworICAgICAgICAgICAgICAgfTsnJycsCisgICAgICAgICAgICBbJ1RoaXMgeyBz
aG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZSAgJworICAgICAgICAgICAg
ICdbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScsCisgICAgICAgICAgICAgJ1RoZSBjbGFzcyBGb28g
cHJvYmFibHkgbmVlZHMgYSB2aXJ0dWFsIGRlc3RydWN0b3IgZHVlIHRvIGhhdmluZyAnCisgICAg
ICAgICAgICAgJ3ZpcnR1YWwgbWV0aG9kKHMpLCBvbmUgZGVjbGFyZWQgYXQgbGluZSAyLiAgW3J1
bnRpbWUvdmlydHVhbF0gWzRdJ10pCisKKworY2xhc3MgV2ViS2l0U3R5bGVUZXN0KENwcGxpbnRU
ZXN0QmFzZSk6CisKKyAgICAjIGZvciBodHRwOi8vd2Via2l0Lm9yZy9jb2RpbmcvY29kaW5nLXN0
eWxlLmh0bWwKKyAgICBkZWYgdGVzdF9pbmRlbnRhdGlvbihzZWxmKToKKyAgICAgICAgIyAxLiBV
c2Ugc3BhY2VzLCBub3QgdGFicy4gVGFicyBzaG91bGQgb25seSBhcHBlYXIgaW4gZmlsZXMgdGhh
dAorICAgICAgICAjICAgIHJlcXVpcmUgdGhlbSBmb3Igc2VtYW50aWMgbWVhbmluZywgbGlrZSBN
YWtlZmlsZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAg
ICAgICdjbGFzcyBGb28ge1xuJworICAgICAgICAgICAgJyAgICBpbnQgZ29vO1xuJworICAgICAg
ICAgICAgJ307JywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnQoCisgICAgICAgICAgICAnY2xhc3MgRm9vIHtcbicKKyAgICAgICAgICAgICdcdGlu
dCBnb287XG4nCisgICAgICAgICAgICAnfTsnLAorICAgICAgICAgICAgJ1RhYiBmb3VuZDsgYmV0
dGVyIHRvIHVzZSBzcGFjZXMgIFt3aGl0ZXNwYWNlL3RhYl0gWzFdJykKKworICAgICAgICAjIDIu
IFRoZSBpbmRlbnQgc2l6ZSBpcyA0IHNwYWNlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAorICAgICAgICAgICAgJ2NsYXNzIEZvbyB7XG4nCisgICAgICAgICAgICAnICAg
IGludCBnb287XG4nCisgICAgICAgICAgICAnfTsnLAorICAgICAgICAgICAgJycpCisgICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdjbGFzcyBGb28ge1xu
JworICAgICAgICAgICAgJyAgIGludCBnb287XG4nCisgICAgICAgICAgICAnfTsnLAorICAgICAg
ICAgICAgJ1dlaXJkIG51bWJlciBvZiBzcGFjZXMgYXQgbGluZS1zdGFydC4gIEFyZSB5b3UgdXNp
bmcgYSA0LXNwYWNlIGluZGVudD8gIFt3aGl0ZXNwYWNlL2luZGVudF0gWzNdJykKKyAgICAgICAg
IyBGSVhNRTogTm8gdGVzdHMgZm9yIDgtc3BhY2VzLgorCisgICAgICAgICMgMy4gSW4gYSBoZWFk
ZXIsIGNvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBiZSBpbmRlbnRlZC4KKyAgICAgICAg
IyBGSVhNRTogTm8gdGVzdHMgZm9yIHRoaXMgcnVsZS4KKworICAgICAgICAjIDQuIEluIGFuIGlt
cGxlbWVudGF0aW9uIGZpbGUgKGZpbGVzIHdpdGggdGhlIGV4dGVuc2lvbiAuY3BwLCAuYworICAg
ICAgICAjICAgIG9yIC5tbSksIGNvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBub3QgYmUg
aW5kZW50ZWQuCisgICAgICAgICMgRklYTUU6IE5vIHRlc3RzIGZvciB0aGlzIHJ1bGUuCisKKyAg
ICAgICAgIyA1LiBBIGNhc2UgbGFiZWwgc2hvdWxkIGxpbmUgdXAgd2l0aCBpdHMgc3dpdGNoIHN0
YXRlbWVudC4gVGhlCisgICAgICAgICMgICAgY2FzZSBzdGF0ZW1lbnQgaXMgaW5kZW50ZWQuCisg
ICAgICAgICMgRklYTUU6IE5vIHRlc3RzIGZvciB0aGlzIHJ1bGUuIFRoZSBmb2xsb3dpbmcgc2hv
dWxkIGZhaWwuCisgICAgICAgICMgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAg
ICAjICAgICAnICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7XG4nCisgICAgICAgICMgICAgICcgICAg
ICAgIGNhc2UgZm9vQ29uZGl0aW9uOlxuJworICAgICAgICAjICAgICAnICAgICAgICBjYXNlIGJh
ckNvbmRpdGlvbjpcbicKKyAgICAgICAgIyAgICAgJyAgICAgICAgICAgIGkrKztcbicKKyAgICAg
ICAgIyAgICAgJyAgICAgICAgICAgIGJyZWFrO1xuJworICAgICAgICAjICAgICAnICAgICAgICBk
ZWZhdWx0OlxuJworICAgICAgICAjICAgICAnICAgICAgICAgICAgaS0tO1xuJywKKyAgICAgICAg
IyAgICAgJycpCisKKyAgICAgICAgIyA2LiBCb29sZWFuIGV4cHJlc3Npb25zIGF0IHRoZSBzYW1l
IG5lc3RpbmcgbGV2ZWwgdGhhdCBzcGFuCisgICAgICAgICMgICBtdWx0aXBsZSBsaW5lcyBzaG91
bGQgaGF2ZSB0aGVpciBvcGVyYXRvcnMgb24gdGhlIGxlZnQgc2lkZSBvZgorICAgICAgICAjICAg
dGhlIGxpbmUgaW5zdGVhZCBvZiB0aGUgcmlnaHQgc2lkZS4KKyAgICAgICAgIyBGSVhNRTogTm8g
dGVzdHMgZm9yIHRoaXMgcnVsZS4gVGhlIGZvbGxvd2luZyBzaG91bGQgZmFpbC4KKyAgICAgICAg
IyBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICMgICAgICcgICAgcmV0dXJu
IGF0dHItPm5hbWUoKSA9PSBzcmNBdHRyIHx8XG4nCisgICAgICAgICMgICAgICcgICAgICAgIGF0
dHItPm5hbWUoKSA9PSBsb3dzcmNBdHRyIHx8XG4nCisgICAgICAgICMgICAgICcgICAgICAgIChh
dHRyLT5uYW1lKCkgPT0gdXNlbWFwQXR0ciAmJiBhdHRyLT52YWx1ZSgpLmRvbVN0cmluZygpWzBd
ICE9IFwnI1wnKTtcbicsCisgICAgICAgICMgICAgICcnKQorCisgICAgZGVmIHRlc3Rfc3BhY2lu
ZyhzZWxmKToKKyAgICAgICAgIyAxLiBEbyBub3QgcGxhY2Ugc3BhY2VzIGFyb3VuZCB1bmFyeSBv
cGVyYXRvcnMuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAg
ICAgICdpKys7JywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnQoCisgICAgICAgICAgICAnaSArKzsnLAorICAgICAgICAgICAgJ0V4dHJhIHNwYWNl
IGZvciBvcGVyYXRvciAgKys7ICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFs0XScpCisKKyAgICAg
ICAgIyAyLiBEbyBwbGFjZSBzcGFjZXMgYXJvdW5kIGJpbmFyeSBhbmQgdGVybmFyeSBvcGVyYXRv
cnMuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICd5
ID0gbSAqIHggKyBiOycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVs
dGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2YoYSwgYik7JywKKyAgICAgICAgICAgICcnKQor
ICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnYyA9IGEg
fCBiOycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50KAorICAgICAgICAgICAgJ3JldHVybiBjb25kaXRpb24gPyAxIDogMDsnLAorICAgICAgICAg
ICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAg
ICd5PW0qeCtiOycsCisgICAgICAgICAgICAnTWlzc2luZyBzcGFjZXMgYXJvdW5kID0gIFt3aGl0
ZXNwYWNlL29wZXJhdG9yc10gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50KAorICAgICAgICAgICAgJ2YoYSxiKTsnLAorICAgICAgICAgICAgJ01pc3Npbmcgc3BhY2Ug
YWZ0ZXIgLCAgW3doaXRlc3BhY2UvY29tbWFdIFszXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdjID0gYXxiOycsCisgICAgICAgICAgICAnJykK
KyAgICAgICAgIyBGSVhNRTogV2UgY2Fubm90IGNhdGNoIHRoaXMgbGludCBlcnJvci4KKyAgICAg
ICAgIyBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICMgICAgICdyZXR1cm4g
Y29uZGl0aW9uID8gMTowOycsCisgICAgICAgICMgICAgICcnKQorCisgICAgICAgICMgMy4gUGxh
Y2Ugc3BhY2VzIGJldHdlZW4gY29udHJvbCBzdGF0ZW1lbnRzIGFuZCB0aGVpciBwYXJlbnRoZXNl
cy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJyAg
ICBpZiAoY29uZGl0aW9uKVxuJworICAgICAgICAgICAgJyAgICAgICAgZG9JdCgpO1xuJywKKyAg
ICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAg
ICAgICAgICAnICAgIGlmKGNvbmRpdGlvbilcbicKKyAgICAgICAgICAgICcgICAgICAgIGRvSXQo
KTtcbicsCisgICAgICAgICAgICAnTWlzc2luZyBzcGFjZSBiZWZvcmUgKCBpbiBpZiggIFt3aGl0
ZXNwYWNlL3BhcmVuc10gWzVdJykKKworICAgICAgICAjIDQuIERvIG5vdCBwbGFjZSBzcGFjZXMg
YmV0d2VlbiBhIGZ1bmN0aW9uIGFuZCBpdHMgcGFyZW50aGVzZXMsCisgICAgICAgICMgICAgb3Ig
YmV0d2VlbiBhIHBhcmVudGhlc2lzIGFuZCBpdHMgY29udGVudC4KKyAgICAgICAgc2VsZi5hc3Nl
cnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2YoYSwgYik7JywKKyAgICAgICAgICAg
ICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAn
ZiAoYSwgYik7JywKKyAgICAgICAgICAgICdFeHRyYSBzcGFjZSBiZWZvcmUgKCBpbiBmdW5jdGlv
biBjYWxsICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdmKCBhLCBiICk7JywKKyAgICAgICAgICAgIFsn
RXh0cmEgc3BhY2UgYWZ0ZXIgKCBpbiBmdW5jdGlvbiBjYWxsICBbd2hpdGVzcGFjZS9wYXJlbnNd
IFs0XScsCisgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSApICBbd2hpdGVzcGFjZS9w
YXJlbnNdIFsyXSddKQorCisgICAgZGVmIHRlc3RfbGluZV9icmVha2luZyhzZWxmKToKKyAgICAg
ICAgIyAxLiBFYWNoIHN0YXRlbWVudCBzaG91bGQgZ2V0IGl0cyBvd24gbGluZS4KKyAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJyAgICB4Kys7XG4nCisg
ICAgICAgICAgICAnICAgIHkrKztcbicKKyAgICAgICAgICAgICcgICAgaWYgKGNvbmRpdGlvbik7
XG4nCisgICAgICAgICAgICAnICAgICAgICBkb0l0KCk7XG4nLAorICAgICAgICAgICAgJycpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcgICAgeCsr
OyB5Kys7JywKKyAgICAgICAgICAgICdNb3JlIHRoYW4gb25lIGNvbW1hbmQgb24gdGhlIHNhbWUg
bGluZSAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJykKKyAgICAgICAgIyBGSVhNRTogTWFrZSB0
aGlzIGZhaWwuCisgICAgICAgICMgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAg
ICAjICAgICAnICAgIGlmIChjb25kaXRpb24pIGRvSXQoKTtcbicsCisgICAgICAgICMgICAgICcn
KQorCisgICAgICAgICMgMi4gQW4gZWxzZSBzdGF0ZW1lbnQgc2hvdWxkIGdvIG9uIHRoZSBzYW1l
IGxpbmUgYXMgYSBwcmVjZWRpbmcKKyAgICAgICAgIyAgIGNsb3NlIGJyYWNlIGlmIG9uZSBpcyBw
cmVzZW50LCBlbHNlIGl0IHNob3VsZCBsaW5lIHVwIHdpdGggdGhlCisgICAgICAgICMgICBpZiBz
dGF0ZW1lbnQuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAg
ICAgICdpZiAoY29uZGl0aW9uKSB7XG4nCisgICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nKCk7
XG4nCisgICAgICAgICAgICAnfSBlbHNlIHtcbicKKyAgICAgICAgICAgICcgICAgZG9Tb21ldGhp
bmdFbHNlKCk7XG4nCisgICAgICAgICAgICAnfVxuJywKKyAgICAgICAgICAgICcnKQorICAgICAg
ICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnaWYgKGNvbmRpdGlv
bilcbicKKyAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmcoKTtcbicKKyAgICAgICAgICAgICdl
bHNlXG4nCisgICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nRWxzZSgpO1xuJywKKyAgICAgICAg
ICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAg
ICAnaWYgKGNvbmRpdGlvbilcbicKKyAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmcoKTtcbicK
KyAgICAgICAgICAgICdlbHNlIHtcbicKKyAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmdFbHNl
KCk7XG4nCisgICAgICAgICAgICAnfVxuJywKKyAgICAgICAgICAgICcnKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKSB7
XG4nCisgICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nKCk7XG4nCisgICAgICAgICAgICAnfVxu
JworICAgICAgICAgICAgJ2Vsc2Uge1xuJworICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZ0Vs
c2UoKTtcbicKKyAgICAgICAgICAgICd9XG4nLAorICAgICAgICAgICAgJ0FuIGVsc2Ugc2hvdWxk
IGFwcGVhciBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBwcmVjZWRpbmcgfSAgW3doaXRlc3BhY2Uv
bmV3bGluZV0gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAg
ICAgICAgICAgJ2lmIChjb25kaXRpb24pIGRvU29tZXRoaW5nKCk7IGVsc2UgZG9Tb21ldGhpbmdF
bHNlKCk7XG4nLAorICAgICAgICAgICAgWydNb3JlIHRoYW4gb25lIGNvbW1hbmQgb24gdGhlIHNh
bWUgbGluZSAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJywKKyAgICAgICAgICAgICAnRWxzZSBj
bGF1c2Ugc2hvdWxkIG5ldmVyIGJlIG9uIHNhbWUgbGluZSBhcyBlbHNlICh1c2UgMiBsaW5lcykg
IFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XSddKQorICAgICAgICAjIEZJWE1FOiBNYWtlIHRoaXMg
ZmFpbC4KKyAgICAgICAgIyBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICMg
ICAgICdpZiAoY29uZGl0aW9uKSBkb1NvbWV0aGluZygpOyBlbHNlIHtcbicKKyAgICAgICAgIyAg
ICAgJyAgICBkb1NvbWV0aGluZ0Vsc2UoKTtcbicKKyAgICAgICAgIyAgICAgJ31cbicsCisgICAg
ICAgICMgICAgICcnKQorCisgICAgICAgICMgMy4gQW4gZWxzZSBpZiBzdGF0ZW1lbnQgc2hvdWxk
IGJlIHdyaXR0ZW4gYXMgYW4gaWYgc3RhdGVtZW50CisgICAgICAgICMgICAgd2hlbiB0aGUgcHJp
b3IgaWYgY29uY2x1ZGVzIHdpdGggYSByZXR1cm4gc3RhdGVtZW50LgorICAgICAgICAjIEZJWE1F
OiBObyB0ZXN0cyBmb3IgdGhpcy4KKworICAgIGRlZiB0ZXN0X2JyYWNlcyhzZWxmKToKKyAgICAg
ICAgIyAxLiBGdW5jdGlvbiBkZWZpbml0aW9uczogcGxhY2UgZWFjaCBicmFjZSBvbiBpdHMgb3du
IGxpbmUuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAg
ICdpbnQgbWFpbigpXG4nCisgICAgICAgICAgICAne1xuJworICAgICAgICAgICAgJyAgICBkb1Nv
bWV0aGluZygpO1xuJworICAgICAgICAgICAgJ31cbicsCisgICAgICAgICAgICAnJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2ludCBtYWluKCkg
e1xuJworICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZygpO1xuJworICAgICAgICAgICAgJ31c
bicsCisgICAgICAgICAgICAnUGxhY2UgYnJhY2Ugb24gaXRzIG93biBsaW5lIGZvciBmdW5jdGlv
biBkZWZpbml0aW9ucy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKKworICAgICAgICAjIDIu
IE90aGVyIGJyYWNlczogcGxhY2UgdGhlIG9wZW4gYnJhY2Ugb24gdGhlIGxpbmUgcHJlY2VkaW5n
IHRoZQorICAgICAgICAjICAgIGNvZGUgYmxvY2s7IHBsYWNlIHRoZSBjbG9zZSBicmFjZSBvbiBp
dHMgb3duIGxpbmUuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAg
ICAgICAgICdjbGFzcyBNeUNsYXNzIHtcbicKKyAgICAgICAgICAgICcgICAgaW50IGZvbztcbicK
KyAgICAgICAgICAgICd9O1xuJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnbmFtZXNwYWNlIFdlYkNvcmUge1xuJwor
ICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJworICAgICAgICAgICAgJ307XG4nLAorICAgICAg
ICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAg
ICAgICdmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHtcbicKKyAgICAgICAgICAgICcgICAg
RG9Tb21ldGhpbmcoKTtcbicKKyAgICAgICAgICAgICd9O1xuJywKKyAgICAgICAgICAgICcnKQor
ICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnY2xhc3Mg
TXlDbGFzc1xuJworICAgICAgICAgICAgJ3tcbicKKyAgICAgICAgICAgICcgICAgaW50IGZvbztc
bicKKyAgICAgICAgICAgICd9O1xuJywKKyAgICAgICAgICAgICdUaGlzIHsgc2hvdWxkIGJlIGF0
IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykK
KworICAgICAgICAjIDMuIE9uZS1saW5lIGNvbnRyb2wgY2xhdXNlcyBzaG91bGQgbm90IHVzZSBi
cmFjZXMgdW5sZXNzCisgICAgICAgICMgICAgY29tbWVudHMgYXJlIGluY2x1ZGVkIG9yIGEgc2lu
Z2xlIHN0YXRlbWVudCBzcGFucyBtdWx0aXBsZQorICAgICAgICAjICAgIGxpbmVzLgorICAgICAg
ICAjIEZJWE1FOiBObyB0ZXN0cyBmb3IgdGhpcyBydWxlLgorCisgICAgICAgICMgNC4gQ29udHJv
bCBjbGF1c2VzIHdpdGhvdXQgYSBib2R5IHNob3VsZCB1c2UgZW1wdHkgYnJhY2VzLgorICAgICAg
ICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnZm9yICggOyBjdXJy
ZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dCkgeyB9XG4nLAorICAgICAgICAgICAgJycpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdmb3IgKCA7
IGN1cnJlbnQ7XG4nCisgICAgICAgICAgICAnICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4dCkg
e31cbicsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50KAorICAgICAgICAgICAgJ2ZvciAoIDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5l
eHQpO1xuJywKKyAgICAgICAgICAgICdTZW1pY29sb24gZGVmaW5pbmcgZW1wdHkgc3RhdGVtZW50
IGZvciB0aGlzIGxvb3AuIFVzZSB7IH0gaW5zdGVhZC4gIFt3aGl0ZXNwYWNlL3NlbWljb2xvbl0g
WzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAg
J3doaWxlICh0cnVlKTtcbicsCisgICAgICAgICAgICAnU2VtaWNvbG9uIGRlZmluaW5nIGVtcHR5
IHN0YXRlbWVudCBmb3IgdGhpcyBsb29wLiBVc2UgeyB9IGluc3RlYWQuICBbd2hpdGVzcGFjZS9z
ZW1pY29sb25dIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAg
ICAgICAgICAgICd9IHdoaWxlICh0cnVlKTtcbicsCisgICAgICAgICAgICAnJykKKworICAgIGRl
ZiB0ZXN0X251bGxfZmFsc2VfemVybyhzZWxmKToKKyAgICAgICAgIyAxLiBJbiBDKyssIHRoZSBu
dWxsIHBvaW50ZXIgdmFsdWUgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgMC4gSW4gQywKKyAgICAgICAg
IyAgICBpdCBzaG91bGQgYmUgd3JpdHRlbiBhcyBOVUxMLiBJbiBPYmplY3RpdmUtQyBhbmQgT2Jq
ZWN0aXZlLUMrKywKKyAgICAgICAgIyAgICBmb2xsb3cgdGhlIGd1aWRlbGluZSBmb3IgQyBvciBD
KyssIHJlc3BlY3RpdmVseSwgYnV0IHVzZSBuaWwgdG8KKyAgICAgICAgIyAgICByZXByZXNlbnQg
YSBudWxsIE9iamVjdGl2ZS1DIG9iamVjdC4KKyAgICAgICAgIyBGSVhNRTogSW1wbGVtZW50IHRo
aXMuCisKKyAgICAgICAgIyAyLiBDKysgYW5kIEMgYm9vbCB2YWx1ZXMgc2hvdWxkIGJlIHdyaXR0
ZW4gYXMgdHJ1ZSBhbmQKKyAgICAgICAgIyAgICBmYWxzZS4gT2JqZWN0aXZlLUMgQk9PTCB2YWx1
ZXMgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgWUVTIGFuZCBOTy4KKyAgICAgICAgIyBGSVhNRTogSW1w
bGVtZW50IHRoaXMuCisKKyAgICAgICAgIyAzLiBUZXN0cyBmb3IgdHJ1ZS9mYWxzZSwgbnVsbC9u
b24tbnVsbCwgYW5kIHplcm8vbm9uLXplcm8gc2hvdWxkCisgICAgICAgICMgICAgYWxsIGJlIGRv
bmUgd2l0aG91dCBlcXVhbGl0eSBjb21wYXJpc29ucy4KKyAgICAgICAgIyBGSVhNRTogSW1wbGVt
ZW50IHRoaXMuCisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X25hbWVzKHNlbGYpOgorICAg
ICAgICAjIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICAgICAgcGFzcworCisgICAgZGVmIHRl
c3Rfb3RoZXIoc2VsZik6CisgICAgICAgICMgRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgICAg
ICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbmNsdWRlKHNlbGYpOgorICAgICAgICAjIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcy4KKyAgICAgICAgcGFzcworCisKK2RlZiB0ZWFyRG93bigpOgorICAgICIi
IkEgZ2xvYmFsIGNoZWNrIHRvIG1ha2Ugc3VyZSBhbGwgZXJyb3ItY2F0ZWdvcmllcyBoYXZlIGJl
ZW4gdGVzdGVkLgorCisgICAgVGhlIG1haW4gdGVhckRvd24oKSByb3V0aW5lIGlzIHRoZSBvbmx5
IGNvZGUgd2UgY2FuIGd1YXJhbnRlZSB3aWxsIGJlCisgICAgcnVuIGFmdGVyIGFsbCBvdGhlciB0
ZXN0cyBoYXZlIGJlZW4gZXhlY3V0ZWQuCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICBpZiBf
cnVuX3ZlcmlmeWFsbGNhdGVnb3JpZXNzZWVuOgorICAgICAgICAgICAgRXJyb3JDb2xsZWN0b3Io
Tm9uZSkudmVyaWZ5X2FsbF9jYXRlZ29yaWVzX2FyZV9zZWVuKCkKKyAgICBleGNlcHQgTmFtZUVy
cm9yOgorICAgICAgICAjIElmIG5vYm9keSBzZXQgdGhlIGdsb2JhbCBfcnVuX3ZlcmlmeWFsbGNh
dGVnb3JpZXNzZWVuLCB0aGVuCisgICAgICAgICMgd2UgYXNzdW1lIHdlIHNob3VsZG4ndCBydW4g
dGhlIHRlc3QKKyAgICAgICAgcGFzcworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAg
IGltcG9ydCBzeXMKKyAgICAjIFdlIGRvbid0IHdhbnQgdG8gcnVuIHRoZSB2ZXJpZnlfYWxsX2Nh
dGVnb3JpZXNfYXJlX3NlZW4oKSB0ZXN0IHVubGVzcworICAgICMgd2UncmUgcnVubmluZyB0aGUg
ZnVsbCB0ZXN0IHN1aXRlOiBpZiB3ZSBvbmx5IHJ1biBvbmUgdGVzdCwKKyAgICAjIG9idmlvdXNs
eSB3ZSdyZSBub3QgZ29pbmcgdG8gc2VlIGFsbCB0aGUgZXJyb3IgY2F0ZWdvcmllcy4gIFNvIHdl
CisgICAgIyBvbmx5IHJ1biB2ZXJpZnlfYWxsX2NhdGVnb3JpZXNfYXJlX3NlZW4oKSB3aGVuIG5v
IGNvbW1hbmRsaW5lIGZsYWdzCisgICAgIyBhcmUgcGFzc2VkIGluLgorICAgIGdsb2JhbCBfcnVu
X3ZlcmlmeWFsbGNhdGVnb3JpZXNzZWVuCisgICAgX3J1bl92ZXJpZnlhbGxjYXRlZ29yaWVzc2Vl
biA9IChsZW4oc3lzLmFyZ3YpID09IDEpCisKKyAgICB1bml0dGVzdC5tYWluKCk=
</data>
<flag name="review"
          id="17157"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>