<?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>34060</bug_id>
          
          <creation_ts>2010-01-24 13:19:42 -0800</creation_ts>
          <short_desc>check-webkit-style: Create a webkitpy/style/processors directory for the different processors</short_desc>
          <delta_ts>2010-01-26 18:56:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>1</everconfirmed>
          <reporter name="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Chris Jerdonek">cjerdonek</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>184100</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-24 13:19:42 -0800</bug_when>
    <thetext>This will be a bit nicer for us as we--

(1) Add a shared processor file containing logic and checks common to multiple processors (e.g. the tab-check FIXME)
(1) Add a Python processor.
(3) Break checker.py into more than one file.

I will be doing (1) soon.

The file moves can go like this:

cpp_style.py -&gt; processors/cpp.py
text_style.py -&gt; processors/text.py

(and similarly for the associated unit test files)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184590</commentid>
    <comment_count>1</comment_count>
      <attachid>47411</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-26 07:34:44 -0800</bug_when>
    <thetext>Created attachment 47411
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184664</commentid>
    <comment_count>2</comment_count>
      <attachid>47411</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-26 12:08:33 -0800</bug_when>
    <thetext>Comment on attachment 47411
Proposed patch

Assuming all you&apos;re doing is moving code, looks OK to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184881</commentid>
    <comment_count>3</comment_count>
      <attachid>47411</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-26 18:09:52 -0800</bug_when>
    <thetext>Comment on attachment 47411
Proposed patch

Going to use webkit-patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184894</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-26 18:56:50 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 47411 [details])
&gt; Going to use webkit-patch.

Semi-automatically committed r53882 (via webkit-patch):

http://trac.webkit.org/changeset/53882

Encountered this bug in the process:

https://bugs.webkit.org/show_bug.cgi?id=34193</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47411</attachid>
            <date>2010-01-26 07:34:44 -0800</date>
            <delta_ts>2010-01-26 18:09:52 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>_patch-34060-1.txt</filename>
            <type>text/plain</type>
            <size>610538</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUzODU0KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDEtMjYgIENocmlzIEplcmRvbmVrICA8
Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZWQgdGhlIGNoZWNrLXdlYmtpdC1zdHlsZSBwcm9jZXNzb3JzIGlu
dG8gYSBuZXcKKyAgICAgICAgd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycyBkaXJlY3RvcnkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MDYwCisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlLnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5OiBSZW1vdmVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29yczogQWRkZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL19faW5pdF9fLnB5OiBBZGRlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY3BwLnB5OiBDb3Bp
ZWQgZnJvbSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZS5weS4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY3BwX3VuaXR0ZXN0
LnB5OiBDb3BpZWQgZnJvbSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9z
dHlsZV91bml0dGVzdC5weS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nl
c3NvcnMvdGV4dC5weTogQ29waWVkIGZyb20gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS90ZXh0X3N0eWxlLnB5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJv
Y2Vzc29ycy90ZXh0X3VuaXR0ZXN0LnB5OiBDb3BpZWQgZnJvbSBXZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL3RleHRfc3R5bGVfdW5pdHRlc3QucHkuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9zdHlsZS90ZXh0X3N0eWxlLnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZV91bml0dGVzdC5weTogUmVtb3ZlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3VuaXR0ZXN0cy5weToKKwogMjAxMC0wMS0yNSAg
Q2hyaXMgSmVyZG9uZWsgIDxjamVyZG9uZWtAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTaGluaWNoaXJvIEhhbWFqaS4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXIucHkJKHJldmlzaW9uIDUzODQxKQorKysgV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4
ICszNSw4IEBAIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc3lzCiAKIGZyb20gLi4gc3R5bGVfcmVm
ZXJlbmNlcyBpbXBvcnQgcGFyc2VfcGF0Y2gKLWZyb20gY3BwX3N0eWxlIGltcG9ydCBDcHBQcm9j
ZXNzb3IKLWZyb20gdGV4dF9zdHlsZSBpbXBvcnQgVGV4dFByb2Nlc3NvcgorZnJvbSBwcm9jZXNz
b3JzLmNwcCBpbXBvcnQgQ3BwUHJvY2Vzc29yCitmcm9tIHByb2Nlc3NvcnMudGV4dCBpbXBvcnQg
VGV4dFByb2Nlc3NvcgogCiAKICMgVGhlc2UgZGVmYXVsdHMgYXJlIHVzZWQgYnkgY2hlY2std2Vi
a2l0LXN0eWxlLgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2VyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5weQkocmV2aXNpb24gNTM4NDEpCisrKyBXZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDggKzQxLDggQEAgZnJvbSBjaGVja2VyIGltcG9ydCBDYXRlZ29yeUZpbHRl
cgogZnJvbSBjaGVja2VyIGltcG9ydCBQcm9jZXNzb3JEaXNwYXRjaGVyCiBmcm9tIGNoZWNrZXIg
aW1wb3J0IFByb2Nlc3Nvck9wdGlvbnMKIGZyb20gY2hlY2tlciBpbXBvcnQgU3R5bGVDaGVja2Vy
Ci1mcm9tIGNwcF9zdHlsZSBpbXBvcnQgQ3BwUHJvY2Vzc29yCi1mcm9tIHRleHRfc3R5bGUgaW1w
b3J0IFRleHRQcm9jZXNzb3IKK2Zyb20gcHJvY2Vzc29ycy5jcHAgaW1wb3J0IENwcFByb2Nlc3Nv
cgorZnJvbSBwcm9jZXNzb3JzLnRleHQgaW1wb3J0IFRleHRQcm9jZXNzb3IKIAogY2xhc3MgQ2F0
ZWdvcnlGaWx0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApJbmRleDogV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGUucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGUucHkJKHJldmlzaW9uIDUzODQx
KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGUucHkJKHdv
cmtpbmcgY29weSkKQEAgLTEsMjkwOCArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIyAtKi0g
Y29kaW5nOiB1dGYtOCAtKi0KLSMKLSMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5j
LgotIyBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IyBDb3B5cmlnaHQgKEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3Jn
KQotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlv
bi4KLSMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLQotIyBUaGlzIGlzIHRoZSBtb2RpZmllZCB2ZXJzaW9uIG9mIEdv
b2dsZSdzIGNwcGxpbnQuIFRoZSBvcmlnaW5hbCBjb2RlIGlzCi0jIGh0dHA6Ly9nb29nbGUtc3R5
bGVndWlkZS5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvY3BwbGludC9jcHBsaW50LnB5Ci0KLSIi
IlN1cHBvcnQgZm9yIGNoZWNrLXdlYmtpdC1zdHlsZS4iIiIKLQotaW1wb3J0IGNvZGVjcwotaW1w
b3J0IG1hdGggICMgZm9yIGxvZwotaW1wb3J0IG9zCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHJl
Ci1pbXBvcnQgc3JlX2NvbXBpbGUKLWltcG9ydCBzdHJpbmcKLWltcG9ydCBzeXMKLWltcG9ydCB1
bmljb2RlZGF0YQotCi0KLSMgSGVhZGVycyB0aGF0IHdlIGNvbnNpZGVyIFNUTCBoZWFkZXJzLgot
X1NUTF9IRUFERVJTID0gZnJvemVuc2V0KFsKLSAgICAnYWxnb2Jhc2UuaCcsICdhbGdvcml0aG0n
LCAnYWxsb2MuaCcsICdiaXRzZXQnLCAnZGVxdWUnLCAnZXhjZXB0aW9uJywKLSAgICAnZnVuY3Rp
b24uaCcsICdmdW5jdGlvbmFsJywgJ2hhc2hfbWFwJywgJ2hhc2hfbWFwLmgnLCAnaGFzaF9zZXQn
LAotICAgICdoYXNoX3NldC5oJywgJ2l0ZXJhdG9yJywgJ2xpc3QnLCAnbGlzdC5oJywgJ21hcCcs
ICdtZW1vcnknLCAncGFpci5oJywKLSAgICAncHRocmVhZF9hbGxvYycsICdxdWV1ZScsICdzZXQn
LCAnc2V0LmgnLCAnc3N0cmVhbScsICdzdGFjaycsCi0gICAgJ3N0bF9hbGxvYy5oJywgJ3N0bF9y
ZWxvcHMuaCcsICd0eXBlX3RyYWl0cy5oJywKLSAgICAndXRpbGl0eScsICd2ZWN0b3InLCAndmVj
dG9yLmgnLAotICAgIF0pCi0KLQotIyBOb24tU1RMIEMrKyBzeXN0ZW0gaGVhZGVycy4KLV9DUFBf
SEVBREVSUyA9IGZyb3plbnNldChbCi0gICAgJ2FsZ28uaCcsICdidWlsdGluYnVmLmgnLCAnYnZl
Y3Rvci5oJywgJ2Nhc3NlcnQnLCAnY2N0eXBlJywKLSAgICAnY2Vycm5vJywgJ2NmbG9hdCcsICdj
aXNvNjQ2JywgJ2NsaW1pdHMnLCAnY2xvY2FsZScsICdjbWF0aCcsCi0gICAgJ2NvbXBsZXgnLCAn
Y29tcGxleC5oJywgJ2NzZXRqbXAnLCAnY3NpZ25hbCcsICdjc3RkYXJnJywgJ2NzdGRkZWYnLAot
ICAgICdjc3RkaW8nLCAnY3N0ZGxpYicsICdjc3RyaW5nJywgJ2N0aW1lJywgJ2N3Y2hhcicsICdj
d2N0eXBlJywKLSAgICAnZGVmYWxsb2MuaCcsICdkZXF1ZS5oJywgJ2VkaXRidWYuaCcsICdleGNl
cHRpb24nLCAnZnN0cmVhbScsCi0gICAgJ2ZzdHJlYW0uaCcsICdoYXNodGFibGUuaCcsICdoZWFw
LmgnLCAnaW5kc3RyZWFtLmgnLCAnaW9tYW5pcCcsCi0gICAgJ2lvbWFuaXAuaCcsICdpb3MnLCAn
aW9zZndkJywgJ2lvc3RyZWFtJywgJ2lvc3RyZWFtLmgnLCAnaXN0cmVhbS5oJywKLSAgICAnaXRl
cmF0b3IuaCcsICdsaW1pdHMnLCAnbWFwLmgnLCAnbXVsdGltYXAuaCcsICdtdWx0aXNldC5oJywK
LSAgICAnbnVtZXJpYycsICdvc3RyZWFtLmgnLCAncGFyc2VzdHJlYW0uaCcsICdwZnN0cmVhbS5o
JywgJ1Bsb3RGaWxlLmgnLAotICAgICdwcm9jYnVmLmgnLCAncHRocmVhZF9hbGxvYy5oJywgJ3Jv
cGUnLCAncm9wZS5oJywgJ3JvcGVpbXBsLmgnLAotICAgICdTRmlsZS5oJywgJ3NsaXN0JywgJ3Ns
aXN0LmgnLCAnc3RhY2suaCcsICdzdGRleGNlcHQnLAotICAgICdzdGRpb3N0cmVhbS5oJywgJ3N0
cmVhbWJ1Zi5oJywgJ3N0cmVhbS5oJywgJ3N0cmZpbGUuaCcsICdzdHJpbmcnLAotICAgICdzdHJz
dHJlYW0nLCAnc3Ryc3RyZWFtLmgnLCAndGVtcGJ1Zi5oJywgJ3RyZWUuaCcsICd0eXBlaW5mbycs
ICd2YWxhcnJheScsCi0gICAgXSkKLQotCi0jIEFzc2VydGlvbiBtYWNyb3MuICBUaGVzZSBhcmUg
ZGVmaW5lZCBpbiBiYXNlL2xvZ2dpbmcuaCBhbmQKLSMgdGVzdGluZy9iYXNlL2d1bml0LmguICBO
b3RlIHRoYXQgdGhlIF9NIHZlcnNpb25zIG5lZWQgdG8gY29tZSBmaXJzdAotIyBmb3Igc3Vic3Ry
aW5nIG1hdGNoaW5nIHRvIHdvcmsuCi1fQ0hFQ0tfTUFDUk9TID0gWwotICAgICdEQ0hFQ0snLCAn
Q0hFQ0snLAotICAgICdFWFBFQ1RfVFJVRV9NJywgJ0VYUEVDVF9UUlVFJywKLSAgICAnQVNTRVJU
X1RSVUVfTScsICdBU1NFUlRfVFJVRScsCi0gICAgJ0VYUEVDVF9GQUxTRV9NJywgJ0VYUEVDVF9G
QUxTRScsCi0gICAgJ0FTU0VSVF9GQUxTRV9NJywgJ0FTU0VSVF9GQUxTRScsCi0gICAgXQotCi0j
IFJlcGxhY2VtZW50IG1hY3JvcyBmb3IgQ0hFQ0svRENIRUNLL0VYUEVDVF9UUlVFL0VYUEVDVF9G
QUxTRQotX0NIRUNLX1JFUExBQ0VNRU5UID0gZGljdChbKG0sIHt9KSBmb3IgbSBpbiBfQ0hFQ0tf
TUFDUk9TXSkKLQotZm9yIG9wLCByZXBsYWNlbWVudCBpbiBbKCc9PScsICdFUScpLCAoJyE9Jywg
J05FJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAoJz49JywgJ0dFJyksICgnPicsICdHVCcp
LAotICAgICAgICAgICAgICAgICAgICAgICAgKCc8PScsICdMRScpLCAoJzwnLCAnTFQnKV06Ci0g
ICAgX0NIRUNLX1JFUExBQ0VNRU5UWydEQ0hFQ0snXVtvcF0gPSAnRENIRUNLXyVzJyAlIHJlcGxh
Y2VtZW50Ci0gICAgX0NIRUNLX1JFUExBQ0VNRU5UWydDSEVDSyddW29wXSA9ICdDSEVDS18lcycg
JSByZXBsYWNlbWVudAotICAgIF9DSEVDS19SRVBMQUNFTUVOVFsnRVhQRUNUX1RSVUUnXVtvcF0g
PSAnRVhQRUNUXyVzJyAlIHJlcGxhY2VtZW50Ci0gICAgX0NIRUNLX1JFUExBQ0VNRU5UWydBU1NF
UlRfVFJVRSddW29wXSA9ICdBU1NFUlRfJXMnICUgcmVwbGFjZW1lbnQKLSAgICBfQ0hFQ0tfUkVQ
TEFDRU1FTlRbJ0VYUEVDVF9UUlVFX00nXVtvcF0gPSAnRVhQRUNUXyVzX00nICUgcmVwbGFjZW1l
bnQKLSAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0FTU0VSVF9UUlVFX00nXVtvcF0gPSAnQVNTRVJU
XyVzX00nICUgcmVwbGFjZW1lbnQKLQotZm9yIG9wLCBpbnZfcmVwbGFjZW1lbnQgaW4gWygnPT0n
LCAnTkUnKSwgKCchPScsICdFUScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPj0n
LCAnTFQnKSwgKCc+JywgJ0xFJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc8PScs
ICdHVCcpLCAoJzwnLCAnR0UnKV06Ci0gICAgX0NIRUNLX1JFUExBQ0VNRU5UWydFWFBFQ1RfRkFM
U0UnXVtvcF0gPSAnRVhQRUNUXyVzJyAlIGludl9yZXBsYWNlbWVudAotICAgIF9DSEVDS19SRVBM
QUNFTUVOVFsnQVNTRVJUX0ZBTFNFJ11bb3BdID0gJ0FTU0VSVF8lcycgJSBpbnZfcmVwbGFjZW1l
bnQKLSAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0VYUEVDVF9GQUxTRV9NJ11bb3BdID0gJ0VYUEVD
VF8lc19NJyAlIGludl9yZXBsYWNlbWVudAotICAgIF9DSEVDS19SRVBMQUNFTUVOVFsnQVNTRVJU
X0ZBTFNFX00nXVtvcF0gPSAnQVNTRVJUXyVzX00nICUgaW52X3JlcGxhY2VtZW50Ci0KLQotIyBU
aGVzZSBjb25zdGFudHMgZGVmaW5lIHR5cGVzIG9mIGhlYWRlcnMgZm9yIHVzZSB3aXRoCi0jIF9J
bmNsdWRlU3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKCkuCi1fQ09ORklHX0hFQURFUiA9
IDAKLV9QUklNQVJZX0hFQURFUiA9IDEKLV9PVEhFUl9IRUFERVIgPSAyCi1fTU9DX0hFQURFUiA9
IDMKLQotCi0jIFRoZSByZWdleHAgY29tcGlsYXRpb24gY2FjaGluZyBpcyBpbmxpbmVkIGluIGFs
bCByZWdleHAgZnVuY3Rpb25zIGZvcgotIyBwZXJmb3JtYW5jZSByZWFzb25zOyBmYWN0b3Jpbmcg
aXQgb3V0IGludG8gYSBzZXBhcmF0ZSBmdW5jdGlvbiB0dXJucyBvdXQKLSMgdG8gYmUgbm90aWNl
YWJseSBleHBlbnNpdmUuCi1fcmVnZXhwX2NvbXBpbGVfY2FjaGUgPSB7fQotCi0KLWRlZiBtYXRj
aChwYXR0ZXJuLCBzKToKLSAgICAiIiJNYXRjaGVzIHRoZSBzdHJpbmcgd2l0aCB0aGUgcGF0dGVy
biwgY2FjaGluZyB0aGUgY29tcGlsZWQgcmVnZXhwLiIiIgotICAgIGlmIG5vdCBwYXR0ZXJuIGlu
IF9yZWdleHBfY29tcGlsZV9jYWNoZToKLSAgICAgICAgX3JlZ2V4cF9jb21waWxlX2NhY2hlW3Bh
dHRlcm5dID0gc3JlX2NvbXBpbGUuY29tcGlsZShwYXR0ZXJuKQotICAgIHJldHVybiBfcmVnZXhw
X2NvbXBpbGVfY2FjaGVbcGF0dGVybl0ubWF0Y2gocykKLQotCi1kZWYgc2VhcmNoKHBhdHRlcm4s
IHMpOgotICAgICIiIlNlYXJjaGVzIHRoZSBzdHJpbmcgZm9yIHRoZSBwYXR0ZXJuLCBjYWNoaW5n
IHRoZSBjb21waWxlZCByZWdleHAuIiIiCi0gICAgaWYgbm90IHBhdHRlcm4gaW4gX3JlZ2V4cF9j
b21waWxlX2NhY2hlOgotICAgICAgICBfcmVnZXhwX2NvbXBpbGVfY2FjaGVbcGF0dGVybl0gPSBz
cmVfY29tcGlsZS5jb21waWxlKHBhdHRlcm4pCi0gICAgcmV0dXJuIF9yZWdleHBfY29tcGlsZV9j
YWNoZVtwYXR0ZXJuXS5zZWFyY2gocykKLQotCi1kZWYgc3ViKHBhdHRlcm4sIHJlcGxhY2VtZW50
LCBzKToKLSAgICAiIiJTdWJzdGl0dXRlcyBvY2N1cnJlbmNlcyBvZiBhIHBhdHRlcm4sIGNhY2hp
bmcgdGhlIGNvbXBpbGVkIHJlZ2V4cC4iIiIKLSAgICBpZiBub3QgcGF0dGVybiBpbiBfcmVnZXhw
X2NvbXBpbGVfY2FjaGU6Ci0gICAgICAgIF9yZWdleHBfY29tcGlsZV9jYWNoZVtwYXR0ZXJuXSA9
IHNyZV9jb21waWxlLmNvbXBpbGUocGF0dGVybikKLSAgICByZXR1cm4gX3JlZ2V4cF9jb21waWxl
X2NhY2hlW3BhdHRlcm5dLnN1YihyZXBsYWNlbWVudCwgcykKLQotCi1kZWYgc3VibihwYXR0ZXJu
LCByZXBsYWNlbWVudCwgcyk6Ci0gICAgIiIiU3Vic3RpdHV0ZXMgb2NjdXJyZW5jZXMgb2YgYSBw
YXR0ZXJuLCBjYWNoaW5nIHRoZSBjb21waWxlZCByZWdleHAuIiIiCi0gICAgaWYgbm90IHBhdHRl
cm4gaW4gX3JlZ2V4cF9jb21waWxlX2NhY2hlOgotICAgICAgICBfcmVnZXhwX2NvbXBpbGVfY2Fj
aGVbcGF0dGVybl0gPSBzcmVfY29tcGlsZS5jb21waWxlKHBhdHRlcm4pCi0gICAgcmV0dXJuIF9y
ZWdleHBfY29tcGlsZV9jYWNoZVtwYXR0ZXJuXS5zdWJuKHJlcGxhY2VtZW50LCBzKQotCi0KLWNs
YXNzIF9JbmNsdWRlU3RhdGUoZGljdCk6Ci0gICAgIiIiVHJhY2tzIGxpbmUgbnVtYmVycyBmb3Ig
aW5jbHVkZXMsIGFuZCB0aGUgb3JkZXIgaW4gd2hpY2ggaW5jbHVkZXMgYXBwZWFyLgotCi0gICAg
QXMgYSBkaWN0LCBhbiBfSW5jbHVkZVN0YXRlIG9iamVjdCBzZXJ2ZXMgYXMgYSBtYXBwaW5nIGJl
dHdlZW4gaW5jbHVkZQotICAgIGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlciBvbiB3aGljaCB0aGF0
IGZpbGUgd2FzIGluY2x1ZGVkLgotCi0gICAgQ2FsbCBjaGVja19uZXh0X2luY2x1ZGVfb3JkZXIo
KSBvbmNlIGZvciBlYWNoIGhlYWRlciBpbiB0aGUgZmlsZSwgcGFzc2luZwotICAgIGluIHRoZSB0
eXBlIGNvbnN0YW50cyBkZWZpbmVkIGFib3ZlLiBDYWxscyBpbiBhbiBpbGxlZ2FsIG9yZGVyIHdp
bGwKLSAgICByYWlzZSBhbiBfSW5jbHVkZUVycm9yIHdpdGggYW4gYXBwcm9wcmlhdGUgZXJyb3Ig
bWVzc2FnZS4KLQotICAgICIiIgotICAgICMgc2VsZi5fc2VjdGlvbiB3aWxsIG1vdmUgbW9ub3Rv
bmljYWxseSB0aHJvdWdoIHRoaXMgc2V0LiBJZiBpdCBldmVyCi0gICAgIyBuZWVkcyB0byBtb3Zl
IGJhY2t3YXJkcywgY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyIHdpbGwgcmFpc2UgYW4gZXJyb3Iu
Ci0gICAgX0lOSVRJQUxfU0VDVElPTiA9IDAKLSAgICBfQ09ORklHX1NFQ1RJT04gPSAxCi0gICAg
X1BSSU1BUllfU0VDVElPTiA9IDIKLSAgICBfT1RIRVJfU0VDVElPTiA9IDMKLQotICAgIF9UWVBF
X05BTUVTID0gewotICAgICAgICBfQ09ORklHX0hFQURFUjogJ1dlYkNvcmUgY29uZmlnLmgnLAot
ICAgICAgICBfUFJJTUFSWV9IRUFERVI6ICdoZWFkZXIgdGhpcyBmaWxlIGltcGxlbWVudHMnLAot
ICAgICAgICBfT1RIRVJfSEVBREVSOiAnb3RoZXIgaGVhZGVyJywKLSAgICAgICAgX01PQ19IRUFE
RVI6ICdtb2MgZmlsZScsCi0gICAgICAgIH0KLSAgICBfU0VDVElPTl9OQU1FUyA9IHsKLSAgICAg
ICAgX0lOSVRJQUxfU0VDVElPTjogIi4uLiBub3RoaW5nLiIsCi0gICAgICAgIF9DT05GSUdfU0VD
VElPTjogIldlYkNvcmUgY29uZmlnLmguIiwKLSAgICAgICAgX1BSSU1BUllfU0VDVElPTjogJ2Eg
aGVhZGVyIHRoaXMgZmlsZSBpbXBsZW1lbnRzLicsCi0gICAgICAgIF9PVEhFUl9TRUNUSU9OOiAn
b3RoZXIgaGVhZGVyLicsCi0gICAgICAgIH0KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAg
ICAgICAgZGljdC5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9zZWN0aW9uID0gc2VsZi5f
SU5JVElBTF9TRUNUSU9OCi0gICAgICAgIHNlbGYuX3Zpc2l0ZWRfcHJpbWFyeV9zZWN0aW9uID0g
RmFsc2UKLSAgICAgICAgc2VsZi5oZWFkZXJfdHlwZXMgPSBkaWN0KCk7Ci0KLSAgICBkZWYgdmlz
aXRlZF9wcmltYXJ5X3NlY3Rpb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl92aXNpdGVk
X3ByaW1hcnlfc2VjdGlvbgotCi0gICAgZGVmIGNoZWNrX25leHRfaW5jbHVkZV9vcmRlcihzZWxm
LCBoZWFkZXJfdHlwZSwgZmlsZV9pc19oZWFkZXIpOgotICAgICAgICAiIiJSZXR1cm5zIGEgbm9u
LWVtcHR5IGVycm9yIG1lc3NhZ2UgaWYgdGhlIG5leHQgaGVhZGVyIGlzIG91dCBvZiBvcmRlci4K
LQotICAgICAgICBUaGlzIGZ1bmN0aW9uIGFsc28gdXBkYXRlcyB0aGUgaW50ZXJuYWwgc3RhdGUg
dG8gYmUgcmVhZHkgdG8gY2hlY2sKLSAgICAgICAgdGhlIG5leHQgaW5jbHVkZS4KLQotICAgICAg
ICBBcmdzOgotICAgICAgICAgIGhlYWRlcl90eXBlOiBPbmUgb2YgdGhlIF9YWFhfSEVBREVSIGNv
bnN0YW50cyBkZWZpbmVkIGFib3ZlLgotICAgICAgICAgIGZpbGVfaXNfaGVhZGVyOiBXaGV0aGVy
IHRoZSBmaWxlIHRoYXQgb3ducyB0aGlzIF9JbmNsdWRlU3RhdGUgaXMgaXRzZWxmIGEgaGVhZGVy
Ci0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICBUaGUgZW1wdHkgc3RyaW5nIGlmIHRoZSBo
ZWFkZXIgaXMgaW4gdGhlIHJpZ2h0IG9yZGVyLCBvciBhbgotICAgICAgICAgIGVycm9yIG1lc3Nh
Z2UgZGVzY3JpYmluZyB3aGF0J3Mgd3JvbmcuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGhl
YWRlcl90eXBlID09IF9DT05GSUdfSEVBREVSIGFuZCBmaWxlX2lzX2hlYWRlcjoKLSAgICAgICAg
ICAgIHJldHVybiAnSGVhZGVyIGZpbGUgc2hvdWxkIG5vdCBjb250YWluIFdlYkNvcmUgY29uZmln
LmguJwotICAgICAgICBpZiBoZWFkZXJfdHlwZSA9PSBfUFJJTUFSWV9IRUFERVIgYW5kIGZpbGVf
aXNfaGVhZGVyOgotICAgICAgICAgICAgcmV0dXJuICdIZWFkZXIgZmlsZSBzaG91bGQgbm90IGNv
bnRhaW4gaXRzZWxmLicKLSAgICAgICAgaWYgaGVhZGVyX3R5cGUgPT0gX01PQ19IRUFERVI6Ci0g
ICAgICAgICAgICByZXR1cm4gJycKLQotICAgICAgICBlcnJvcl9tZXNzYWdlID0gJycKLSAgICAg
ICAgaWYgc2VsZi5fc2VjdGlvbiAhPSBzZWxmLl9PVEhFUl9TRUNUSU9OOgotICAgICAgICAgICAg
YmVmb3JlX2Vycm9yX21lc3NhZ2UgPSAoJ0ZvdW5kICVzIGJlZm9yZSAlcycgJQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX1RZUEVfTkFNRVNbaGVhZGVyX3R5cGVd
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1NFQ1RJT05fTkFN
RVNbc2VsZi5fc2VjdGlvbiArIDFdKSkKLSAgICAgICAgYWZ0ZXJfZXJyb3JfbWVzc2FnZSA9ICgn
Rm91bmQgJXMgYWZ0ZXIgJXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNl
bGYuX1RZUEVfTkFNRVNbaGVhZGVyX3R5cGVdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fU0VDVElPTl9OQU1FU1tzZWxmLl9zZWN0aW9uXSkpCi0KLSAgICAgICAgaWYg
aGVhZGVyX3R5cGUgPT0gX0NPTkZJR19IRUFERVI6Ci0gICAgICAgICAgICBpZiBzZWxmLl9zZWN0
aW9uID49IHNlbGYuX0NPTkZJR19TRUNUSU9OOgotICAgICAgICAgICAgICAgIGVycm9yX21lc3Nh
Z2UgPSBhZnRlcl9lcnJvcl9tZXNzYWdlCi0gICAgICAgICAgICBzZWxmLl9zZWN0aW9uID0gc2Vs
Zi5fQ09ORklHX1NFQ1RJT04KLSAgICAgICAgZWxpZiBoZWFkZXJfdHlwZSA9PSBfUFJJTUFSWV9I
RUFERVI6Ci0gICAgICAgICAgICBpZiBzZWxmLl9zZWN0aW9uID49IHNlbGYuX1BSSU1BUllfU0VD
VElPTjoKLSAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gYWZ0ZXJfZXJyb3JfbWVzc2Fn
ZQotICAgICAgICAgICAgZWxpZiBzZWxmLl9zZWN0aW9uIDwgc2VsZi5fQ09ORklHX1NFQ1RJT046
Ci0gICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9IGJlZm9yZV9lcnJvcl9tZXNzYWdlCi0g
ICAgICAgICAgICBzZWxmLl9zZWN0aW9uID0gc2VsZi5fUFJJTUFSWV9TRUNUSU9OCi0gICAgICAg
ICAgICBzZWxmLl92aXNpdGVkX3ByaW1hcnlfc2VjdGlvbiA9IFRydWUKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIGFzc2VydCBoZWFkZXJfdHlwZSA9PSBfT1RIRVJfSEVBREVSCi0gICAgICAg
ICAgICBpZiBub3QgZmlsZV9pc19oZWFkZXIgYW5kIHNlbGYuX3NlY3Rpb24gPCBzZWxmLl9QUklN
QVJZX1NFQ1RJT046Ci0gICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9IGJlZm9yZV9lcnJv
cl9tZXNzYWdlCi0gICAgICAgICAgICBzZWxmLl9zZWN0aW9uID0gc2VsZi5fT1RIRVJfU0VDVElP
TgotCi0gICAgICAgIHJldHVybiBlcnJvcl9tZXNzYWdlCi0KLQotY2xhc3MgX0Z1bmN0aW9uU3Rh
dGUob2JqZWN0KToKLSAgICAiIiJUcmFja3MgY3VycmVudCBmdW5jdGlvbiBuYW1lIGFuZCB0aGUg
bnVtYmVyIG9mIGxpbmVzIGluIGl0cyBib2R5LgotCi0gICAgQXR0cmlidXRlczoKLSAgICAgIHZl
cmJvc2l0eTogVGhlIHZlcmJvc2l0eSBsZXZlbCB0byB1c2Ugd2hpbGUgY2hlY2tpbmcgc3R5bGUu
Ci0KLSAgICAiIiIKLQotICAgIF9OT1JNQUxfVFJJR0dFUiA9IDI1MCAgIyBmb3IgLS12PTAsIDUw
MCBmb3IgLS12PTEsIGV0Yy4KLSAgICBfVEVTVF9UUklHR0VSID0gNDAwICAgICMgYWJvdXQgNTAl
IG1vcmUgdGhhbiBfTk9STUFMX1RSSUdHRVIuCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmVy
Ym9zaXR5KToKLSAgICAgICAgc2VsZi52ZXJib3NpdHkgPSB2ZXJib3NpdHkKLSAgICAgICAgc2Vs
Zi5pbl9hX2Z1bmN0aW9uID0gRmFsc2UKLSAgICAgICAgc2VsZi5saW5lc19pbl9mdW5jdGlvbiA9
IDAKLSAgICAgICAgc2VsZi5jdXJyZW50X2Z1bmN0aW9uID0gJycKLQotICAgIGRlZiBiZWdpbihz
ZWxmLCBmdW5jdGlvbl9uYW1lKToKLSAgICAgICAgIiIiU3RhcnQgYW5hbHl6aW5nIGZ1bmN0aW9u
IGJvZHkuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGZ1bmN0aW9uX25hbWU6IFRoZSBu
YW1lIG9mIHRoZSBmdW5jdGlvbiBiZWluZyB0cmFja2VkLgotICAgICAgICAiIiIKLSAgICAgICAg
c2VsZi5pbl9hX2Z1bmN0aW9uID0gVHJ1ZQotICAgICAgICBzZWxmLmxpbmVzX2luX2Z1bmN0aW9u
ID0gMAotICAgICAgICBzZWxmLmN1cnJlbnRfZnVuY3Rpb24gPSBmdW5jdGlvbl9uYW1lCi0KLSAg
ICBkZWYgY291bnQoc2VsZik6Ci0gICAgICAgICIiIkNvdW50IGxpbmUgaW4gY3VycmVudCBmdW5j
dGlvbiBib2R5LiIiIgotICAgICAgICBpZiBzZWxmLmluX2FfZnVuY3Rpb246Ci0gICAgICAgICAg
ICBzZWxmLmxpbmVzX2luX2Z1bmN0aW9uICs9IDEKLQotICAgIGRlZiBjaGVjayhzZWxmLCBlcnJv
ciwgZmlsZW5hbWUsIGxpbmVfbnVtYmVyKToKLSAgICAgICAgIiIiUmVwb3J0IGlmIHRvbyBtYW55
IGxpbmVzIGluIGZ1bmN0aW9uIGJvZHkuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBlcnJv
cjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICAgICAg
IGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgotICAgICAgICAgIGxpbmVf
bnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgICAiIiIKLSAg
ICAgICAgaWYgbWF0Y2gocidUKEVTVHxlc3QpJywgc2VsZi5jdXJyZW50X2Z1bmN0aW9uKToKLSAg
ICAgICAgICAgIGJhc2VfdHJpZ2dlciA9IHNlbGYuX1RFU1RfVFJJR0dFUgotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgYmFzZV90cmlnZ2VyID0gc2VsZi5fTk9STUFMX1RSSUdHRVIKLSAgICAg
ICAgdHJpZ2dlciA9IGJhc2VfdHJpZ2dlciAqIDIgKiogc2VsZi52ZXJib3NpdHkKLQotICAgICAg
ICBpZiBzZWxmLmxpbmVzX2luX2Z1bmN0aW9uID4gdHJpZ2dlcjoKLSAgICAgICAgICAgIGVycm9y
X2xldmVsID0gaW50KG1hdGgubG9nKHNlbGYubGluZXNfaW5fZnVuY3Rpb24gLyBiYXNlX3RyaWdn
ZXIsIDIpKQotICAgICAgICAgICAgIyA1MCA9PiAwLCAxMDAgPT4gMSwgMjAwID0+IDIsIDQwMCA9
PiAzLCA4MDAgPT4gNCwgMTYwMCA9PiA1LCAuLi4KLSAgICAgICAgICAgIGlmIGVycm9yX2xldmVs
ID4gNToKLSAgICAgICAgICAgICAgICBlcnJvcl9sZXZlbCA9IDUKLSAgICAgICAgICAgIGVycm9y
KGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvZm5fc2l6ZScsIGVycm9yX2xldmVsLAotICAgICAg
ICAgICAgICAgICAgJ1NtYWxsIGFuZCBmb2N1c2VkIGZ1bmN0aW9ucyBhcmUgcHJlZmVycmVkOicK
LSAgICAgICAgICAgICAgICAgICcgJXMgaGFzICVkIG5vbi1jb21tZW50IGxpbmVzJwotICAgICAg
ICAgICAgICAgICAgJyAoZXJyb3IgdHJpZ2dlcmVkIGJ5IGV4Y2VlZGluZyAlZCBsaW5lcykuJyAg
JSAoCi0gICAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50X2Z1bmN0aW9uLCBzZWxmLmxp
bmVzX2luX2Z1bmN0aW9uLCB0cmlnZ2VyKSkKLQotICAgIGRlZiBlbmQoc2VsZik6Ci0gICAgICAg
ICIiIlN0b3AgYW5hbGl6aW5nIGZ1bmN0aW9uIGJvZHkuIiIiCi0gICAgICAgIHNlbGYuaW5fYV9m
dW5jdGlvbiA9IEZhbHNlCi0KLQotY2xhc3MgX0luY2x1ZGVFcnJvcihFeGNlcHRpb24pOgotICAg
ICIiIkluZGljYXRlcyBhIHByb2JsZW0gd2l0aCB0aGUgaW5jbHVkZSBvcmRlciBpbiBhIGZpbGUu
IiIiCi0gICAgcGFzcwotCi0KLWNsYXNzIEZpbGVJbmZvOgotICAgICIiIlByb3ZpZGVzIHV0aWxp
dHkgZnVuY3Rpb25zIGZvciBmaWxlbmFtZXMuCi0KLSAgICBGaWxlSW5mbyBwcm92aWRlcyBlYXN5
IGFjY2VzcyB0byB0aGUgY29tcG9uZW50cyBvZiBhIGZpbGUncyBwYXRoCi0gICAgcmVsYXRpdmUg
dG8gdGhlIHByb2plY3Qgcm9vdC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBm
aWxlbmFtZSk6Ci0gICAgICAgIHNlbGYuX2ZpbGVuYW1lID0gZmlsZW5hbWUKLQotICAgIGRlZiBm
dWxsX25hbWUoc2VsZik6Ci0gICAgICAgICIiIk1ha2UgV2luZG93cyBwYXRocyBsaWtlIFVuaXgu
IiIiCi0gICAgICAgIHJldHVybiBvcy5wYXRoLmFic3BhdGgoc2VsZi5fZmlsZW5hbWUpLnJlcGxh
Y2UoJ1xcJywgJy8nKQotCi0gICAgZGVmIHJlcG9zaXRvcnlfbmFtZShzZWxmKToKLSAgICAgICAg
IiIiRnVsbCBuYW1lIGFmdGVyIHJlbW92aW5nIHRoZSBsb2NhbCBwYXRoIHRvIHRoZSByZXBvc2l0
b3J5LgotCi0gICAgICAgIElmIHdlIGhhdmUgYSByZWFsIGFic29sdXRlIHBhdGggbmFtZSBoZXJl
IHdlIGNhbiB0cnkgdG8gZG8gc29tZXRoaW5nIHNtYXJ0OgotICAgICAgICBkZXRlY3RpbmcgdGhl
IHJvb3Qgb2YgdGhlIGNoZWNrb3V0IGFuZCB0cnVuY2F0aW5nIC9wYXRoL3RvL2NoZWNrb3V0IGZy
b20KLSAgICAgICAgdGhlIG5hbWUgc28gdGhhdCB3ZSBnZXQgaGVhZGVyIGd1YXJkcyB0aGF0IGRv
bid0IGluY2x1ZGUgdGhpbmdzIGxpa2UKLSAgICAgICAgIkM6XERvY3VtZW50cyBhbmQgU2V0dGlu
Z3NcLi4uIiBvciAiL2hvbWUvdXNlcm5hbWUvLi4uIiBpbiB0aGVtIGFuZCB0aHVzCi0gICAgICAg
IHBlb3BsZSBvbiBkaWZmZXJlbnQgY29tcHV0ZXJzIHdobyBoYXZlIGNoZWNrZWQgdGhlIHNvdXJj
ZSBvdXQgdG8gZGlmZmVyZW50Ci0gICAgICAgIGxvY2F0aW9ucyB3b24ndCBzZWUgYm9ndXMgZXJy
b3JzLgotICAgICAgICAiIiIKLSAgICAgICAgZnVsbG5hbWUgPSBzZWxmLmZ1bGxfbmFtZSgpCi0K
LSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZnVsbG5hbWUpOgotICAgICAgICAgICAgcHJvamVj
dF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoZnVsbG5hbWUpCi0KLSAgICAgICAgICAgIGlmIG9zLnBh
dGguZXhpc3RzKG9zLnBhdGguam9pbihwcm9qZWN0X2RpciwgIi5zdm4iKSk6Ci0gICAgICAgICAg
ICAgICAgIyBJZiB0aGVyZSdzIGEgLnN2biBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwg
d2UKLSAgICAgICAgICAgICAgICAjIHJlY3Vyc2l2ZWx5IGxvb2sgdXAgdGhlIGRpcmVjdG9yeSB0
cmVlIGZvciB0aGUgdG9wCi0gICAgICAgICAgICAgICAgIyBvZiB0aGUgU1ZOIGNoZWNrb3V0Ci0g
ICAgICAgICAgICAgICAgcm9vdF9kaXIgPSBwcm9qZWN0X2RpcgotICAgICAgICAgICAgICAgIG9u
ZV91cF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUocm9vdF9kaXIpCi0gICAgICAgICAgICAgICAgd2hp
bGUgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKG9uZV91cF9kaXIsICIuc3ZuIikpOgotICAg
ICAgICAgICAgICAgICAgICByb290X2RpciA9IG9zLnBhdGguZGlybmFtZShyb290X2RpcikKLSAg
ICAgICAgICAgICAgICAgICAgb25lX3VwX2RpciA9IG9zLnBhdGguZGlybmFtZShvbmVfdXBfZGly
KQotCi0gICAgICAgICAgICAgICAgcHJlZml4ID0gb3MucGF0aC5jb21tb25wcmVmaXgoW3Jvb3Rf
ZGlyLCBwcm9qZWN0X2Rpcl0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bGxuYW1lW2xlbihw
cmVmaXgpICsgMTpdCi0KLSAgICAgICAgICAgICMgTm90IFNWTj8gVHJ5IHRvIGZpbmQgYSBnaXQg
dG9wIGxldmVsIGRpcmVjdG9yeSBieQotICAgICAgICAgICAgIyBzZWFyY2hpbmcgdXAgZnJvbSB0
aGUgY3VycmVudCBwYXRoLgotICAgICAgICAgICAgcm9vdF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUo
ZnVsbG5hbWUpCi0gICAgICAgICAgICB3aGlsZSAocm9vdF9kaXIgIT0gb3MucGF0aC5kaXJuYW1l
KHJvb3RfZGlyKQotICAgICAgICAgICAgICAgICAgIGFuZCBub3Qgb3MucGF0aC5leGlzdHMob3Mu
cGF0aC5qb2luKHJvb3RfZGlyLCAiLmdpdCIpKSk6Ci0gICAgICAgICAgICAgICAgcm9vdF9kaXIg
PSBvcy5wYXRoLmRpcm5hbWUocm9vdF9kaXIpCi0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5l
eGlzdHMob3MucGF0aC5qb2luKHJvb3RfZGlyLCAiLmdpdCIpKToKLSAgICAgICAgICAgICAgICAg
ICAgcHJlZml4ID0gb3MucGF0aC5jb21tb25wcmVmaXgoW3Jvb3RfZGlyLCBwcm9qZWN0X2Rpcl0p
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmdWxsbmFtZVtsZW4ocHJlZml4KSArIDE6XQot
Ci0gICAgICAgICMgRG9uJ3Qga25vdyB3aGF0IHRvIGRvOyBoZWFkZXIgZ3VhcmQgd2FybmluZ3Mg
bWF5IGJlIHdyb25nLi4uCi0gICAgICAgIHJldHVybiBmdWxsbmFtZQotCi0gICAgZGVmIHNwbGl0
KHNlbGYpOgotICAgICAgICAiIiJTcGxpdHMgdGhlIGZpbGUgaW50byB0aGUgZGlyZWN0b3J5LCBi
YXNlbmFtZSwgYW5kIGV4dGVuc2lvbi4KLQotICAgICAgICBGb3IgJ2Nocm9tZS9icm93c2VyL2Jy
b3dzZXIuY3BwJywgU3BsaXQoKSB3b3VsZAotICAgICAgICByZXR1cm4gKCdjaHJvbWUvYnJvd3Nl
cicsICdicm93c2VyJywgJy5jcHAnKQotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgQSB0
dXBsZSBvZiAoZGlyZWN0b3J5LCBiYXNlbmFtZSwgZXh0ZW5zaW9uKS4KLSAgICAgICAgIiIiCi0K
LSAgICAgICAgZ29vZ2xlbmFtZSA9IHNlbGYucmVwb3NpdG9yeV9uYW1lKCkKLSAgICAgICAgcHJv
amVjdCwgcmVzdCA9IG9zLnBhdGguc3BsaXQoZ29vZ2xlbmFtZSkKLSAgICAgICAgcmV0dXJuIChw
cm9qZWN0LCkgKyBvcy5wYXRoLnNwbGl0ZXh0KHJlc3QpCi0KLSAgICBkZWYgYmFzZV9uYW1lKHNl
bGYpOgotICAgICAgICAiIiJGaWxlIGJhc2UgbmFtZSAtIHRleHQgYWZ0ZXIgdGhlIGZpbmFsIHNs
YXNoLCBiZWZvcmUgdGhlIGZpbmFsIHBlcmlvZC4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuc3Bs
aXQoKVsxXQotCi0gICAgZGVmIGV4dGVuc2lvbihzZWxmKToKLSAgICAgICAgIiIiRmlsZSBleHRl
bnNpb24gLSB0ZXh0IGZvbGxvd2luZyB0aGUgZmluYWwgcGVyaW9kLiIiIgotICAgICAgICByZXR1
cm4gc2VsZi5zcGxpdCgpWzJdCi0KLSAgICBkZWYgbm9fZXh0ZW5zaW9uKHNlbGYpOgotICAgICAg
ICAiIiJGaWxlIGhhcyBubyBzb3VyY2UgZmlsZSBleHRlbnNpb24uIiIiCi0gICAgICAgIHJldHVy
biAnLycuam9pbihzZWxmLnNwbGl0KClbMDoyXSkKLQotICAgIGRlZiBpc19zb3VyY2Uoc2VsZik6
Ci0gICAgICAgICIiIkZpbGUgaGFzIGEgc291cmNlIGZpbGUgZXh0ZW5zaW9uLiIiIgotICAgICAg
ICByZXR1cm4gc2VsZi5leHRlbnNpb24oKVsxOl0gaW4gKCdjJywgJ2NjJywgJ2NwcCcsICdjeHgn
KQotCi0KLSMgTWF0Y2hlcyBzdGFuZGFyZCBDKysgZXNjYXBlIGVzZXF1ZW5jZXMgcGVyIDIuMTMu
Mi4zIG9mIHRoZSBDKysgc3RhbmRhcmQuCi1fUkVfUEFUVEVSTl9DTEVBTlNFX0xJTkVfRVNDQVBF
UyA9IHJlLmNvbXBpbGUoCi0gICAgcidcXChbYWJmbnJ0dj8iXFxcJ118XGQrfHhbMC05YS1mQS1G
XSspJykKLSMgTWF0Y2hlcyBzdHJpbmdzLiAgRXNjYXBlIGNvZGVzIHNob3VsZCBhbHJlYWR5IGJl
IHJlbW92ZWQgYnkgRVNDQVBFUy4KLV9SRV9QQVRURVJOX0NMRUFOU0VfTElORV9ET1VCTEVfUVVP
VEVTID0gcmUuY29tcGlsZShyJyJbXiJdKiInKQotIyBNYXRjaGVzIGNoYXJhY3RlcnMuICBFc2Nh
cGUgY29kZXMgc2hvdWxkIGFscmVhZHkgYmUgcmVtb3ZlZCBieSBFU0NBUEVTLgotX1JFX1BBVFRF
Uk5fQ0xFQU5TRV9MSU5FX1NJTkdMRV9RVU9URVMgPSByZS5jb21waWxlKHIiJy4nIikKLSMgTWF0
Y2hlcyBtdWx0aS1saW5lIEMrKyBjb21tZW50cy4KLSMgVGhpcyBSRSBpcyBhIGxpdHRsZSBiaXQg
bW9yZSBjb21wbGljYXRlZCB0aGFuIG9uZSBtaWdodCBleHBlY3QsIGJlY2F1c2Ugd2UKLSMgaGF2
ZSB0byB0YWtlIGNhcmUgb2Ygc3BhY2UgcmVtb3ZhbHMgdG9vbHMgc28gd2UgY2FuIGhhbmRsZSBj
b21tZW50cyBpbnNpZGUKLSMgc3RhdGVtZW50cyBiZXR0ZXIuCi0jIFRoZSBjdXJyZW50IHJ1bGUg
aXM6IFdlIG9ubHkgY2xlYXIgc3BhY2VzIGZyb20gYm90aCBzaWRlcyB3aGVuIHdlJ3JlIGF0IHRo
ZQotIyBlbmQgb2YgdGhlIGxpbmUuIE90aGVyd2lzZSwgd2UgdHJ5IHRvIHJlbW92ZSBzcGFjZXMg
ZnJvbSB0aGUgcmlnaHQgc2lkZSwKLSMgaWYgdGhpcyBkb2Vzbid0IHdvcmsgd2UgdHJ5IG9uIGxl
ZnQgc2lkZSBidXQgb25seSBpZiB0aGVyZSdzIGEgbm9uLWNoYXJhY3RlcgotIyBvbiB0aGUgcmln
aHQuCi1fUkVfUEFUVEVSTl9DTEVBTlNFX0xJTkVfQ19DT01NRU5UUyA9IHJlLmNvbXBpbGUoCi0g
ICAgciIiIihccyovXCouKlwqL1xzKiR8Ci0gICAgICAgICAgICAvXCouKlwqL1xzK3wKLSAgICAg
ICAgIFxzKy9cKi4qXCovKD89XFcpfAotICAgICAgICAgICAgL1wqLipcKi8pIiIiLCByZS5WRVJC
T1NFKQotCi0KLWRlZiBpc19jcHBfc3RyaW5nKGxpbmUpOgotICAgICIiIkRvZXMgbGluZSB0ZXJt
aW5hdGUgc28sIHRoYXQgdGhlIG5leHQgc3ltYm9sIGlzIGluIHN0cmluZyBjb25zdGFudC4KLQot
ICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY29uc2lkZXIgc2luZ2xlLWxpbmUgbm9yIG11bHRp
LWxpbmUgY29tbWVudHMuCi0KLSAgICBBcmdzOgotICAgICAgbGluZTogaXMgYSBwYXJ0aWFsIGxp
bmUgb2YgY29kZSBzdGFydGluZyBmcm9tIHRoZSAwLi5uLgotCi0gICAgUmV0dXJuczoKLSAgICAg
IFRydWUsIGlmIG5leHQgY2hhcmFjdGVyIGFwcGVuZGVkIHRvICdsaW5lJyBpcyBpbnNpZGUgYQot
ICAgICAgc3RyaW5nIGNvbnN0YW50LgotICAgICIiIgotCi0gICAgbGluZSA9IGxpbmUucmVwbGFj
ZShyJ1xcJywgJ1hYJykgICMgYWZ0ZXIgdGhpcywgXFwiIGRvZXMgbm90IG1hdGNoIHRvIFwiCi0g
ICAgcmV0dXJuICgobGluZS5jb3VudCgnIicpIC0gbGluZS5jb3VudChyJ1wiJykgLSBsaW5lLmNv
dW50KCInXCInIikpICYgMSkgPT0gMQotCi0KLWRlZiBmaW5kX25leHRfbXVsdGlfbGluZV9jb21t
ZW50X3N0YXJ0KGxpbmVzLCBsaW5lX2luZGV4KToKLSAgICAiIiJGaW5kIHRoZSBiZWdpbm5pbmcg
bWFya2VyIGZvciBhIG11bHRpbGluZSBjb21tZW50LiIiIgotICAgIHdoaWxlIGxpbmVfaW5kZXgg
PCBsZW4obGluZXMpOgotICAgICAgICBpZiBsaW5lc1tsaW5lX2luZGV4XS5zdHJpcCgpLnN0YXJ0
c3dpdGgoJy8qJyk6Ci0gICAgICAgICAgICAjIE9ubHkgcmV0dXJuIHRoaXMgbWFya2VyIGlmIHRo
ZSBjb21tZW50IGdvZXMgYmV5b25kIHRoaXMgbGluZQotICAgICAgICAgICAgaWYgbGluZXNbbGlu
ZV9pbmRleF0uc3RyaXAoKS5maW5kKCcqLycsIDIpIDwgMDoKLSAgICAgICAgICAgICAgICByZXR1
cm4gbGluZV9pbmRleAotICAgICAgICBsaW5lX2luZGV4ICs9IDEKLSAgICByZXR1cm4gbGVuKGxp
bmVzKQotCi0KLWRlZiBmaW5kX25leHRfbXVsdGlfbGluZV9jb21tZW50X2VuZChsaW5lcywgbGlu
ZV9pbmRleCk6Ci0gICAgIiIiV2UgYXJlIGluc2lkZSBhIGNvbW1lbnQsIGZpbmQgdGhlIGVuZCBt
YXJrZXIuIiIiCi0gICAgd2hpbGUgbGluZV9pbmRleCA8IGxlbihsaW5lcyk6Ci0gICAgICAgIGlm
IGxpbmVzW2xpbmVfaW5kZXhdLnN0cmlwKCkuZW5kc3dpdGgoJyovJyk6Ci0gICAgICAgICAgICBy
ZXR1cm4gbGluZV9pbmRleAotICAgICAgICBsaW5lX2luZGV4ICs9IDEKLSAgICByZXR1cm4gbGVu
KGxpbmVzKQotCi0KLWRlZiByZW1vdmVfbXVsdGlfbGluZV9jb21tZW50c19mcm9tX3JhbmdlKGxp
bmVzLCBiZWdpbiwgZW5kKToKLSAgICAiIiJDbGVhcnMgYSByYW5nZSBvZiBsaW5lcyBmb3IgbXVs
dGktbGluZSBjb21tZW50cy4iIiIKLSAgICAjIEhhdmluZyAvLyBkdW1teSBjb21tZW50cyBtYWtl
cyB0aGUgbGluZXMgbm9uLWVtcHR5LCBzbyB3ZSB3aWxsIG5vdCBnZXQKLSAgICAjIHVubmVjZXNz
YXJ5IGJsYW5rIGxpbmUgd2FybmluZ3MgbGF0ZXIgaW4gdGhlIGNvZGUuCi0gICAgZm9yIGkgaW4g
cmFuZ2UoYmVnaW4sIGVuZCk6Ci0gICAgICAgIGxpbmVzW2ldID0gJy8vIGR1bW15JwotCi0KLWRl
ZiByZW1vdmVfbXVsdGlfbGluZV9jb21tZW50cyhmaWxlbmFtZSwgbGluZXMsIGVycm9yKToKLSAg
ICAiIiJSZW1vdmVzIG11bHRpbGluZSAoYy1zdHlsZSkgY29tbWVudHMgZnJvbSBsaW5lcy4iIiIK
LSAgICBsaW5lX2luZGV4ID0gMAotICAgIHdoaWxlIGxpbmVfaW5kZXggPCBsZW4obGluZXMpOgot
ICAgICAgICBsaW5lX2luZGV4X2JlZ2luID0gZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9z
dGFydChsaW5lcywgbGluZV9pbmRleCkKLSAgICAgICAgaWYgbGluZV9pbmRleF9iZWdpbiA+PSBs
ZW4obGluZXMpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGxpbmVfaW5kZXhfZW5kID0g
ZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9lbmQobGluZXMsIGxpbmVfaW5kZXhfYmVnaW4p
Ci0gICAgICAgIGlmIGxpbmVfaW5kZXhfZW5kID49IGxlbihsaW5lcyk6Ci0gICAgICAgICAgICBl
cnJvcihsaW5lX2luZGV4X2JlZ2luICsgMSwgJ3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50
JywgNSwKLSAgICAgICAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCBlbmQgb2YgbXVsdGktbGlu
ZSBjb21tZW50JykKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICByZW1vdmVfbXVsdGlfbGlu
ZV9jb21tZW50c19mcm9tX3JhbmdlKGxpbmVzLCBsaW5lX2luZGV4X2JlZ2luLCBsaW5lX2luZGV4
X2VuZCArIDEpCi0gICAgICAgIGxpbmVfaW5kZXggPSBsaW5lX2luZGV4X2VuZCArIDEKLQotCi1k
ZWYgY2xlYW5zZV9jb21tZW50cyhsaW5lKToKLSAgICAiIiJSZW1vdmVzIC8vLWNvbW1lbnRzIGFu
ZCBzaW5nbGUtbGluZSBDLXN0eWxlIC8qICovIGNvbW1lbnRzLgotCi0gICAgQXJnczoKLSAgICAg
IGxpbmU6IEEgbGluZSBvZiBDKysgc291cmNlLgotCi0gICAgUmV0dXJuczoKLSAgICAgIFRoZSBs
aW5lIHdpdGggc2luZ2xlLWxpbmUgY29tbWVudHMgcmVtb3ZlZC4KLSAgICAiIiIKLSAgICBjb21t
ZW50X3Bvc2l0aW9uID0gbGluZS5maW5kKCcvLycpCi0gICAgaWYgY29tbWVudF9wb3NpdGlvbiAh
PSAtMSBhbmQgbm90IGlzX2NwcF9zdHJpbmcobGluZVs6Y29tbWVudF9wb3NpdGlvbl0pOgotICAg
ICAgICBsaW5lID0gbGluZVs6Y29tbWVudF9wb3NpdGlvbl0KLSAgICAjIGdldCByaWQgb2YgLyog
Li4uICovCi0gICAgcmV0dXJuIF9SRV9QQVRURVJOX0NMRUFOU0VfTElORV9DX0NPTU1FTlRTLnN1
YignJywgbGluZSkKLQotCi1jbGFzcyBDbGVhbnNlZExpbmVzKG9iamVjdCk6Ci0gICAgIiIiSG9s
ZHMgMyBjb3BpZXMgb2YgYWxsIGxpbmVzIHdpdGggZGlmZmVyZW50IHByZXByb2Nlc3NpbmcgYXBw
bGllZCB0byB0aGVtLgotCi0gICAgMSkgZWxpZGVkIG1lbWJlciBjb250YWlucyBsaW5lcyB3aXRo
b3V0IHN0cmluZ3MgYW5kIGNvbW1lbnRzLAotICAgIDIpIGxpbmVzIG1lbWJlciBjb250YWlucyBs
aW5lcyB3aXRob3V0IGNvbW1lbnRzLCBhbmQKLSAgICAzKSByYXcgbWVtYmVyIGNvbnRhaW5zIGFs
bCB0aGUgbGluZXMgd2l0aG91dCBwcm9jZXNzaW5nLgotICAgIEFsbCB0aGVzZSB0aHJlZSBtZW1i
ZXJzIGFyZSBvZiA8dHlwZSAnbGlzdCc+LCBhbmQgb2YgdGhlIHNhbWUgbGVuZ3RoLgotICAgICIi
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVzKToKLSAgICAgICAgc2VsZi5lbGlkZWQg
PSBbXQotICAgICAgICBzZWxmLmxpbmVzID0gW10KLSAgICAgICAgc2VsZi5yYXdfbGluZXMgPSBs
aW5lcwotICAgICAgICBzZWxmLl9udW1fbGluZXMgPSBsZW4obGluZXMpCi0gICAgICAgIGZvciBs
aW5lX251bWJlciBpbiByYW5nZShsZW4obGluZXMpKToKLSAgICAgICAgICAgIHNlbGYubGluZXMu
YXBwZW5kKGNsZWFuc2VfY29tbWVudHMobGluZXNbbGluZV9udW1iZXJdKSkKLSAgICAgICAgICAg
IGVsaWRlZCA9IHNlbGYuY29sbGFwc2Vfc3RyaW5ncyhsaW5lc1tsaW5lX251bWJlcl0pCi0gICAg
ICAgICAgICBzZWxmLmVsaWRlZC5hcHBlbmQoY2xlYW5zZV9jb21tZW50cyhlbGlkZWQpKQotCi0g
ICAgZGVmIG51bV9saW5lcyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgbnVtYmVyIG9m
IGxpbmVzIHJlcHJlc2VudGVkLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fbnVtX2xpbmVzCi0K
LSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGNvbGxhcHNlX3N0cmluZ3MoZWxpZGVkKToKLSAg
ICAgICAgIiIiQ29sbGFwc2VzIHN0cmluZ3MgYW5kIGNoYXJzIG9uIGEgbGluZSB0byBzaW1wbGUg
IiIgb3IgJycgYmxvY2tzLgotCi0gICAgICAgIFdlIG5peCBzdHJpbmdzIGZpcnN0IHNvIHdlJ3Jl
IG5vdCBmb29sZWQgYnkgdGV4dCBsaWtlICciaHR0cDovLyInCi0KLSAgICAgICAgQXJnczoKLSAg
ICAgICAgICBlbGlkZWQ6IFRoZSBsaW5lIGJlaW5nIHByb2Nlc3NlZC4KLQotICAgICAgICBSZXR1
cm5zOgotICAgICAgICAgIFRoZSBsaW5lIHdpdGggY29sbGFwc2VkIHN0cmluZ3MuCi0gICAgICAg
ICIiIgotICAgICAgICBpZiBub3QgX1JFX1BBVFRFUk5fSU5DTFVERS5tYXRjaChlbGlkZWQpOgot
ICAgICAgICAgICAgIyBSZW1vdmUgZXNjYXBlZCBjaGFyYWN0ZXJzIGZpcnN0IHRvIG1ha2UgcXVv
dGUvc2luZ2xlIHF1b3RlIGNvbGxhcHNpbmcKLSAgICAgICAgICAgICMgYmFzaWMuICBUaGluZ3Mg
dGhhdCBsb29rIGxpa2UgZXNjYXBlZCBjaGFyYWN0ZXJzIHNob3VsZG4ndCBvY2N1cgotICAgICAg
ICAgICAgIyBvdXRzaWRlIG9mIHN0cmluZ3MgYW5kIGNoYXJzLgotICAgICAgICAgICAgZWxpZGVk
ID0gX1JFX1BBVFRFUk5fQ0xFQU5TRV9MSU5FX0VTQ0FQRVMuc3ViKCcnLCBlbGlkZWQpCi0gICAg
ICAgICAgICBlbGlkZWQgPSBfUkVfUEFUVEVSTl9DTEVBTlNFX0xJTkVfU0lOR0xFX1FVT1RFUy5z
dWIoIicnIiwgZWxpZGVkKQotICAgICAgICAgICAgZWxpZGVkID0gX1JFX1BBVFRFUk5fQ0xFQU5T
RV9MSU5FX0RPVUJMRV9RVU9URVMuc3ViKCciIicsIGVsaWRlZCkKLSAgICAgICAgcmV0dXJuIGVs
aWRlZAotCi0KLWRlZiBjbG9zZV9leHByZXNzaW9uKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwg
cG9zKToKLSAgICAiIiJJZiBpbnB1dCBwb2ludHMgdG8gKCBvciB7IG9yIFssIGZpbmRzIHRoZSBw
b3NpdGlvbiB0aGF0IGNsb3NlcyBpdC4KLQotICAgIElmIGxpbmVzW2xpbmVfbnVtYmVyXVtwb3Nd
IHBvaW50cyB0byBhICcoJyBvciAneycgb3IgJ1snLCBmaW5kcyB0aGUgdGhlCi0gICAgbGluZV9u
dW1iZXIvcG9zIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgY2xvc2luZyBvZiB0aGUgZXhwcmVzc2lv
bi4KLQotICAgIEFyZ3M6Ci0gICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3Rh
bmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCi0gICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBv
ZiB0aGUgbGluZSB0byBjaGVjay4KLSAgICAgIHBvczogQSBwb3NpdGlvbiBvbiB0aGUgbGluZS4K
LQotICAgIFJldHVybnM6Ci0gICAgICBBIHR1cGxlIChsaW5lLCBsaW5lX251bWJlciwgcG9zKSBw
b2ludGVyICpwYXN0KiB0aGUgY2xvc2luZyBicmFjZSwgb3IKLSAgICAgIChsaW5lLCBsZW4obGlu
ZXMpLCAtMSkgaWYgd2UgbmV2ZXIgZmluZCBhIGNsb3NlLiAgTm90ZSB3ZSBpZ25vcmUKLSAgICAg
IHN0cmluZ3MgYW5kIGNvbW1lbnRzIHdoZW4gbWF0Y2hpbmc7IGFuZCB0aGUgbGluZSB3ZSByZXR1
cm4gaXMgdGhlCi0gICAgICAnY2xlYW5zZWQnIGxpbmUgYXQgbGluZV9udW1iZXIuCi0gICAgIiIi
Ci0KLSAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXQotICAgIHN0YXJ0
X2NoYXJhY3RlciA9IGxpbmVbcG9zXQotICAgIGlmIHN0YXJ0X2NoYXJhY3RlciBub3QgaW4gJyh7
Wyc6Ci0gICAgICAgIHJldHVybiAobGluZSwgY2xlYW5fbGluZXMubnVtX2xpbmVzKCksIC0xKQot
ICAgIGlmIHN0YXJ0X2NoYXJhY3RlciA9PSAnKCc6Ci0gICAgICAgIGVuZF9jaGFyYWN0ZXIgPSAn
KScKLSAgICBpZiBzdGFydF9jaGFyYWN0ZXIgPT0gJ1snOgotICAgICAgICBlbmRfY2hhcmFjdGVy
ID0gJ10nCi0gICAgaWYgc3RhcnRfY2hhcmFjdGVyID09ICd7JzoKLSAgICAgICAgZW5kX2NoYXJh
Y3RlciA9ICd9JwotCi0gICAgbnVtX29wZW4gPSBsaW5lLmNvdW50KHN0YXJ0X2NoYXJhY3Rlcikg
LSBsaW5lLmNvdW50KGVuZF9jaGFyYWN0ZXIpCi0gICAgd2hpbGUgbGluZV9udW1iZXIgPCBjbGVh
bl9saW5lcy5udW1fbGluZXMoKSBhbmQgbnVtX29wZW4gPiAwOgotICAgICAgICBsaW5lX251bWJl
ciArPSAxCi0gICAgICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCi0g
ICAgICAgIG51bV9vcGVuICs9IGxpbmUuY291bnQoc3RhcnRfY2hhcmFjdGVyKSAtIGxpbmUuY291
bnQoZW5kX2NoYXJhY3RlcikKLSAgICAjIE9LLCBub3cgZmluZCB0aGUgZW5kX2NoYXJhY3RlciB0
aGF0IGFjdHVhbGx5IGdvdCB1cyBiYWNrIHRvIGV2ZW4KLSAgICBlbmRwb3MgPSBsZW4obGluZSkK
LSAgICB3aGlsZSBudW1fb3BlbiA+PSAwOgotICAgICAgICBlbmRwb3MgPSBsaW5lLnJmaW5kKCcp
JywgMCwgZW5kcG9zKQotICAgICAgICBudW1fb3BlbiAtPSAxICAgICAgICAgICAgICAgICAjIGNo
b3BwZWQgb2ZmIGFub3RoZXIgKQotICAgIHJldHVybiAobGluZSwgbGluZV9udW1iZXIsIGVuZHBv
cyArIDEpCi0KLQotZGVmIGNoZWNrX2Zvcl9jb3B5cmlnaHQoZmlsZW5hbWUsIGxpbmVzLCBlcnJv
cik6Ci0gICAgIiIiTG9ncyBhbiBlcnJvciBpZiBubyBDb3B5cmlnaHQgbWVzc2FnZSBhcHBlYXJz
IGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUuIiIiCi0KLSAgICAjIFdlJ2xsIHNheSBpdCBzaG91bGQg
b2NjdXIgYnkgbGluZSAxMC4gRG9uJ3QgZm9yZ2V0IHRoZXJlJ3MgYQotICAgICMgZHVtbXkgbGlu
ZSBhdCB0aGUgZnJvbnQuCi0gICAgZm9yIGxpbmUgaW4geHJhbmdlKDEsIG1pbihsZW4obGluZXMp
LCAxMSkpOgotICAgICAgICBpZiByZS5zZWFyY2gocidDb3B5cmlnaHQnLCBsaW5lc1tsaW5lXSwg
cmUuSSk6Ci0gICAgICAgICAgICBicmVhawotICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAg
ICAjIG1lYW5zIG5vIGNvcHlyaWdodCBsaW5lIHdhcyBmb3VuZAotICAgICAgICBlcnJvcigwLCAn
bGVnYWwvY29weXJpZ2h0JywgNSwKLSAgICAgICAgICAgICAgJ05vIGNvcHlyaWdodCBtZXNzYWdl
IGZvdW5kLiAgJwotICAgICAgICAgICAgICAnWW91IHNob3VsZCBoYXZlIGEgbGluZTogIkNvcHly
aWdodCBbeWVhcl0gPENvcHlyaWdodCBPd25lcj4iJykKLQotCi1kZWYgZ2V0X2hlYWRlcl9ndWFy
ZF9jcHBfdmFyaWFibGUoZmlsZW5hbWUpOgotICAgICIiIlJldHVybnMgdGhlIENQUCB2YXJpYWJs
ZSB0aGF0IHNob3VsZCBiZSB1c2VkIGFzIGEgaGVhZGVyIGd1YXJkLgotCi0gICAgQXJnczoKLSAg
ICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiBhIEMrKyBoZWFkZXIgZmlsZS4KLQotICAgIFJldHVy
bnM6Ci0gICAgICBUaGUgQ1BQIHZhcmlhYmxlIHRoYXQgc2hvdWxkIGJlIHVzZWQgYXMgYSBoZWFk
ZXIgZ3VhcmQgaW4gdGhlCi0gICAgICBuYW1lZCBmaWxlLgotCi0gICAgIiIiCi0KLSAgICByZXR1
cm4gc3ViKHInWy0uXHNdJywgJ18nLCBvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSkKLQotCi1k
ZWYgY2hlY2tfZm9yX2hlYWRlcl9ndWFyZChmaWxlbmFtZSwgbGluZXMsIGVycm9yKToKLSAgICAi
IiJDaGVja3MgdGhhdCB0aGUgZmlsZSBjb250YWlucyBhIGhlYWRlciBndWFyZC4KLQotICAgIExv
Z3MgYW4gZXJyb3IgaWYgbm8gI2lmbmRlZiBoZWFkZXIgZ3VhcmQgaXMgcHJlc2VudC4gIEZvciBv
dGhlcgotICAgIGhlYWRlcnMsIGNoZWNrcyB0aGF0IHRoZSBmdWxsIHBhdGhuYW1lIGlzIHVzZWQu
Ci0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBDKysgaGVhZGVy
IGZpbGUuCi0gICAgICBsaW5lczogQW4gYXJyYXkgb2Ygc3RyaW5ncywgZWFjaCByZXByZXNlbnRp
bmcgYSBsaW5lIG9mIHRoZSBmaWxlLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxs
IHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLQotICAgIGNwcHZhciA9IGdldF9oZWFk
ZXJfZ3VhcmRfY3BwX3ZhcmlhYmxlKGZpbGVuYW1lKQotCi0gICAgaWZuZGVmID0gTm9uZQotICAg
IGlmbmRlZl9saW5lX251bWJlciA9IDAKLSAgICBkZWZpbmUgPSBOb25lCi0gICAgZm9yIGxpbmVf
bnVtYmVyLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6Ci0gICAgICAgIGxpbmVfc3BsaXQgPSBs
aW5lLnNwbGl0KCkKLSAgICAgICAgaWYgbGVuKGxpbmVfc3BsaXQpID49IDI6Ci0gICAgICAgICAg
ICAjIGZpbmQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgI2lmbmRlZiBhbmQgI2RlZmluZSwgc2F2
ZSBhcmcKLSAgICAgICAgICAgIGlmIG5vdCBpZm5kZWYgYW5kIGxpbmVfc3BsaXRbMF0gPT0gJyNp
Zm5kZWYnOgotICAgICAgICAgICAgICAgICMgc2V0IGlmbmRlZiB0byB0aGUgaGVhZGVyIGd1YXJk
IHByZXNlbnRlZCBvbiB0aGUgI2lmbmRlZiBsaW5lLgotICAgICAgICAgICAgICAgIGlmbmRlZiA9
IGxpbmVfc3BsaXRbMV0KLSAgICAgICAgICAgICAgICBpZm5kZWZfbGluZV9udW1iZXIgPSBsaW5l
X251bWJlcgotICAgICAgICAgICAgaWYgbm90IGRlZmluZSBhbmQgbGluZV9zcGxpdFswXSA9PSAn
I2RlZmluZSc6Ci0gICAgICAgICAgICAgICAgZGVmaW5lID0gbGluZV9zcGxpdFsxXQotICAgICAg
ICAgICAgaWYgZGVmaW5lIGFuZCBpZm5kZWY6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAg
IGlmIG5vdCBpZm5kZWYgb3Igbm90IGRlZmluZSBvciBpZm5kZWYgIT0gZGVmaW5lOgotICAgICAg
ICBlcnJvcigwLCAnYnVpbGQvaGVhZGVyX2d1YXJkJywgNSwKLSAgICAgICAgICAgICAgJ05vICNp
Zm5kZWYgaGVhZGVyIGd1YXJkIGZvdW5kLCBzdWdnZXN0ZWQgQ1BQIHZhcmlhYmxlIGlzOiAlcycg
JQotICAgICAgICAgICAgICBjcHB2YXIpCi0gICAgICAgIHJldHVybgotCi0gICAgIyBUaGUgZ3Vh
cmQgc2hvdWxkIGJlIEZpbGVfaC4KLSAgICBpZiBpZm5kZWYgIT0gY3BwdmFyOgotICAgICAgICBl
cnJvcihpZm5kZWZfbGluZV9udW1iZXIsICdidWlsZC9oZWFkZXJfZ3VhcmQnLCA1LAotICAgICAg
ICAgICAgICAnI2lmbmRlZiBoZWFkZXIgZ3VhcmQgaGFzIHdyb25nIHN0eWxlLCBwbGVhc2UgdXNl
OiAlcycgJSBjcHB2YXIpCi0KLQotZGVmIGNoZWNrX2Zvcl91bmljb2RlX3JlcGxhY2VtZW50X2No
YXJhY3RlcnMoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcik6Ci0gICAgIiIiTG9ncyBhbiBlcnJvciBm
b3IgZWFjaCBsaW5lIGNvbnRhaW5pbmcgVW5pY29kZSByZXBsYWNlbWVudCBjaGFyYWN0ZXJzLgot
Ci0gICAgVGhlc2UgaW5kaWNhdGUgdGhhdCBlaXRoZXIgdGhlIGZpbGUgY29udGFpbmVkIGludmFs
aWQgVVRGLTggKGxpa2VseSkKLSAgICBvciBVbmljb2RlIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMg
KHdoaWNoIGl0IHNob3VsZG4ndCkuICBOb3RlIHRoYXQKLSAgICBpdCdzIHBvc3NpYmxlIGZvciB0
aGlzIHRvIHRocm93IG9mZiBsaW5lIG51bWJlcmluZyBpZiB0aGUgaW52YWxpZAotICAgIFVURi04
IG9jY3VycmVkIGFkamFjZW50IHRvIGEgbmV3bGluZS4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxl
bmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KLSAgICAgIGxpbmVzOiBBbiBhcnJh
eSBvZiBzdHJpbmdzLCBlYWNoIHJlcHJlc2VudGluZyBhIGxpbmUgb2YgdGhlIGZpbGUuCi0gICAg
ICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAg
ICIiIgotICAgIGZvciBsaW5lX251bWJlciwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgotICAg
ICAgICBpZiB1J1x1ZmZmZCcgaW4gbGluZToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVy
LCAncmVhZGFiaWxpdHkvdXRmOCcsIDUsCi0gICAgICAgICAgICAgICAgICAnTGluZSBjb250YWlu
cyBpbnZhbGlkIFVURi04IChvciBVbmljb2RlIHJlcGxhY2VtZW50IGNoYXJhY3RlcikuJykKLQot
Ci1kZWYgY2hlY2tfZm9yX25ld19saW5lX2F0X2VvZihmaWxlbmFtZSwgbGluZXMsIGVycm9yKToK
LSAgICAiIiJMb2dzIGFuIGVycm9yIGlmIHRoZXJlIGlzIG5vIG5ld2xpbmUgY2hhciBhdCB0aGUg
ZW5kIG9mIHRoZSBmaWxlLgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBv
ZiB0aGUgY3VycmVudCBmaWxlLgotICAgICAgbGluZXM6IEFuIGFycmF5IG9mIHN0cmluZ3MsIGVh
Y2ggcmVwcmVzZW50aW5nIGEgbGluZSBvZiB0aGUgZmlsZS4KLSAgICAgIGVycm9yOiBUaGUgZnVu
Y3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCi0gICAgIiIiCi0KLSAgICAjIFRo
ZSBhcnJheSBsaW5lcygpIHdhcyBjcmVhdGVkIGJ5IGFkZGluZyB0d28gbmV3bGluZXMgdG8gdGhl
Ci0gICAgIyBvcmlnaW5hbCBmaWxlIChnbyBmaWd1cmUpLCB0aGVuIHNwbGl0dGluZyBvbiBcbi4K
LSAgICAjIFRvIHZlcmlmeSB0aGF0IHRoZSBmaWxlIGVuZHMgaW4gXG4sIHdlIGp1c3QgaGF2ZSB0
byBtYWtlIHN1cmUgdGhlCi0gICAgIyBsYXN0LWJ1dC10d28gZWxlbWVudCBvZiBsaW5lcygpIGV4
aXN0cyBhbmQgaXMgZW1wdHkuCi0gICAgaWYgbGVuKGxpbmVzKSA8IDMgb3IgbGluZXNbLTJdOgot
ICAgICAgICBlcnJvcihsZW4obGluZXMpIC0gMiwgJ3doaXRlc3BhY2UvZW5kaW5nX25ld2xpbmUn
LCA1LAotICAgICAgICAgICAgICAnQ291bGQgbm90IGZpbmQgYSBuZXdsaW5lIGNoYXJhY3RlciBh
dCB0aGUgZW5kIG9mIHRoZSBmaWxlLicpCi0KLQotZGVmIGNoZWNrX2Zvcl9tdWx0aWxpbmVfY29t
bWVudHNfYW5kX3N0cmluZ3MoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJy
b3IpOgotICAgICIiIkxvZ3MgYW4gZXJyb3IgaWYgd2Ugc2VlIC8qIC4uLiAqLyBvciAiLi4uIiB0
aGF0IGV4dGVuZCBwYXN0IG9uZSBsaW5lLgotCi0gICAgLyogLi4uICovIGNvbW1lbnRzIGFyZSBs
ZWdpdCBpbnNpZGUgbWFjcm9zLCBmb3Igb25lIGxpbmUuCi0gICAgT3RoZXJ3aXNlLCB3ZSBwcmVm
ZXIgLy8gY29tbWVudHMsIHNvIGl0J3Mgb2sgdG8gd2FybiBhYm91dCB0aGUKLSAgICBvdGhlci4g
IExpa2V3aXNlLCBpdCdzIG9rIGZvciBzdHJpbmdzIHRvIGV4dGVuZCBhY3Jvc3MgbXVsdGlwbGUK
LSAgICBsaW5lcywgYXMgbG9uZyBhcyBhIGxpbmUgY29udGludWF0aW9uIGNoYXJhY3RlciAoYmFj
a3NsYXNoKQotICAgIHRlcm1pbmF0ZXMgZWFjaCBsaW5lLiBBbHRob3VnaCBub3QgY3VycmVudGx5
IHByb2hpYml0ZWQgYnkgdGhlIEMrKwotICAgIHN0eWxlIGd1aWRlLCBpdCdzIHVnbHkgYW5kIHVu
bmVjZXNzYXJ5LiBXZSBkb24ndCBkbyB3ZWxsIHdpdGggZWl0aGVyCi0gICAgaW4gdGhpcyBsaW50
IHByb2dyYW0sIHNvIHdlIHdhcm4gYWJvdXQgYm90aC4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxl
bmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KLSAgICAgIGNsZWFuX2xpbmVzOiBB
IENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGxpbmVf
bnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgZXJyb3I6IFRo
ZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLSAgICBs
aW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXQotCi0gICAgIyBSZW1vdmUgYWxs
IFxcIChlc2NhcGVkIGJhY2tzbGFzaGVzKSBmcm9tIHRoZSBsaW5lLiBUaGV5IGFyZSBPSywgYW5k
IHRoZQotICAgICMgc2Vjb25kIChlc2NhcGVkKSBzbGFzaCBtYXkgdHJpZ2dlciBsYXRlciBcIiBk
ZXRlY3Rpb24gZXJyb25lb3VzbHkuCi0gICAgbGluZSA9IGxpbmUucmVwbGFjZSgnXFxcXCcsICcn
KQotCi0gICAgaWYgbGluZS5jb3VudCgnLyonKSA+IGxpbmUuY291bnQoJyovJyk6Ci0gICAgICAg
IGVycm9yKGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvbXVsdGlsaW5lX2NvbW1lbnQnLCA1LAot
ICAgICAgICAgICAgICAnQ29tcGxleCBtdWx0aS1saW5lIC8qLi4uKi8tc3R5bGUgY29tbWVudCBm
b3VuZC4gJwotICAgICAgICAgICAgICAnTGludCBtYXkgZ2l2ZSBib2d1cyB3YXJuaW5ncy4gICcK
LSAgICAgICAgICAgICAgJ0NvbnNpZGVyIHJlcGxhY2luZyB0aGVzZSB3aXRoIC8vLXN0eWxlIGNv
bW1lbnRzLCAnCi0gICAgICAgICAgICAgICd3aXRoICNpZiAwLi4uI2VuZGlmLCAnCi0gICAgICAg
ICAgICAgICdvciB3aXRoIG1vcmUgY2xlYXJseSBzdHJ1Y3R1cmVkIG11bHRpLWxpbmUgY29tbWVu
dHMuJykKLQotICAgIGlmIChsaW5lLmNvdW50KCciJykgLSBsaW5lLmNvdW50KCdcXCInKSkgJSAy
OgotICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L211bHRpbGluZV9zdHJp
bmcnLCA1LAotICAgICAgICAgICAgICAnTXVsdGktbGluZSBzdHJpbmcgKCIuLi4iKSBmb3VuZC4g
IFRoaXMgbGludCBzY3JpcHQgZG9lc25cJ3QgJwotICAgICAgICAgICAgICAnZG8gd2VsbCB3aXRo
IHN1Y2ggc3RyaW5ncywgYW5kIG1heSBnaXZlIGJvZ3VzIHdhcm5pbmdzLiAgVGhleVwncmUgJwot
ICAgICAgICAgICAgICAndWdseSBhbmQgdW5uZWNlc3NhcnksIGFuZCB5b3Ugc2hvdWxkIHVzZSBj
b25jYXRlbmF0aW9uIGluc3RlYWQiLicpCi0KLQotX1RIUkVBRElOR19MSVNUID0gKAotICAgICgn
YXNjdGltZSgnLCAnYXNjdGltZV9yKCcpLAotICAgICgnY3RpbWUoJywgJ2N0aW1lX3IoJyksCi0g
ICAgKCdnZXRncmdpZCgnLCAnZ2V0Z3JnaWRfcignKSwKLSAgICAoJ2dldGdybmFtKCcsICdnZXRn
cm5hbV9yKCcpLAotICAgICgnZ2V0bG9naW4oJywgJ2dldGxvZ2luX3IoJyksCi0gICAgKCdnZXRw
d25hbSgnLCAnZ2V0cHduYW1fcignKSwKLSAgICAoJ2dldHB3dWlkKCcsICdnZXRwd3VpZF9yKCcp
LAotICAgICgnZ210aW1lKCcsICdnbXRpbWVfcignKSwKLSAgICAoJ2xvY2FsdGltZSgnLCAnbG9j
YWx0aW1lX3IoJyksCi0gICAgKCdyYW5kKCcsICdyYW5kX3IoJyksCi0gICAgKCdyZWFkZGlyKCcs
ICdyZWFkZGlyX3IoJyksCi0gICAgKCdzdHJ0b2soJywgJ3N0cnRva19yKCcpLAotICAgICgndHR5
bmFtZSgnLCAndHR5bmFtZV9yKCcpLAotICAgICkKLQotCi1kZWYgY2hlY2tfcG9zaXhfdGhyZWFk
aW5nKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKLSAgICAiIiJD
aGVja3MgZm9yIGNhbGxzIHRvIHRocmVhZC11bnNhZmUgZnVuY3Rpb25zLgotCi0gICAgTXVjaCBj
b2RlIGhhcyBiZWVuIG9yaWdpbmFsbHkgd3JpdHRlbiB3aXRob3V0IGNvbnNpZGVyYXRpb24gb2YK
LSAgICBtdWx0aS10aHJlYWRpbmcuIEFsc28sIGVuZ2luZWVycyBhcmUgcmVseWluZyBvbiB0aGVp
ciBvbGQgZXhwZXJpZW5jZTsKLSAgICB0aGV5IGhhdmUgbGVhcm5lZCBwb3NpeCBiZWZvcmUgdGhy
ZWFkaW5nIGV4dGVuc2lvbnMgd2VyZSBhZGRlZC4gVGhlc2UKLSAgICB0ZXN0cyBndWlkZSB0aGUg
ZW5naW5lZXJzIHRvIHVzZSB0aHJlYWQtc2FmZSBmdW5jdGlvbnMgKHdoZW4gdXNpbmcKLSAgICBw
b3NpeCBkaXJlY3RseSkuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9m
IHRoZSBjdXJyZW50IGZpbGUuCi0gICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGlu
c3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCi0gICAgICBsaW5lX251bWJlcjogVGhlIG51bWJl
ciBvZiB0aGUgbGluZSB0byBjaGVjay4KLSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2Fs
bCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCi0gICAgIiIiCi0gICAgbGluZSA9IGNsZWFuX2xpbmVz
LmVsaWRlZFtsaW5lX251bWJlcl0KLSAgICBmb3Igc2luZ2xlX3RocmVhZF9mdW5jdGlvbiwgbXVs
dGl0aHJlYWRfc2FmZV9mdW5jdGlvbiBpbiBfVEhSRUFESU5HX0xJU1Q6Ci0gICAgICAgIGluZGV4
ID0gbGluZS5maW5kKHNpbmdsZV90aHJlYWRfZnVuY3Rpb24pCi0gICAgICAgICMgQ29tcGFyaXNv
bnMgbWFkZSBleHBsaWNpdCBmb3IgY2xhcml0eSAtLSBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAz
Ci0gICAgICAgIGlmIGluZGV4ID49IDAgYW5kIChpbmRleCA9PSAwIG9yIChub3QgbGluZVtpbmRl
eCAtIDFdLmlzYWxudW0oKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5kIGxpbmVbaW5kZXggLSAxXSBub3QgaW4gKCdfJywgJy4nLCAnPicpKSk6Ci0gICAgICAg
ICAgICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvdGhyZWFkc2FmZV9mbicsIDIsCi0gICAg
ICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgJyArIG11bHRpdGhyZWFkX3NhZmVfZnVuY3Rp
b24gKwotICAgICAgICAgICAgICAgICAgJy4uLikgaW5zdGVhZCBvZiAnICsgc2luZ2xlX3RocmVh
ZF9mdW5jdGlvbiArCi0gICAgICAgICAgICAgICAgICAnLi4uKSBmb3IgaW1wcm92ZWQgdGhyZWFk
IHNhZmV0eS4nKQotCi0KLSMgTWF0Y2hlcyBpbnZhbGlkIGluY3JlbWVudDogKmNvdW50KyssIHdo
aWNoIG1vdmVzIHBvaW50ZXIgaW5zdGVhZCBvZgotIyBpbmNyZW1lbnRpbmcgYSB2YWx1ZS4KLV9S
RV9QQVRURVJOX0lOVkFMSURfSU5DUkVNRU5UID0gcmUuY29tcGlsZSgKLSAgICByJ15ccypcKlx3
KyhcK1wrfC0tKTsnKQotCi0KLWRlZiBjaGVja19pbnZhbGlkX2luY3JlbWVudChmaWxlbmFtZSwg
Y2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6Ci0gICAgIiIiQ2hlY2tzIGZvciBpbnZh
bGlkIGluY3JlbWVudCAqY291bnQrKy4KLQotICAgIEZvciBleGFtcGxlIGZvbGxvd2luZyBmdW5j
dGlvbjoKLSAgICB2b2lkIGluY3JlbWVudF9jb3VudGVyKGludCogY291bnQpIHsKLSAgICAgICAg
KmNvdW50Kys7Ci0gICAgfQotICAgIGlzIGludmFsaWQsIGJlY2F1c2UgaXQgZWZmZWN0aXZlbHkg
ZG9lcyBjb3VudCsrLCBtb3ZpbmcgcG9pbnRlciwgYW5kIHNob3VsZAotICAgIGJlIHJlcGxhY2Vk
IHdpdGggKysqY291bnQsICgqY291bnQpKysgb3IgKmNvdW50ICs9IDEuCi0KLSAgICBBcmdzOgot
ICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCi0gICAgICBjbGVh
bl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCi0g
ICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KLSAgICAg
IGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCi0gICAg
IiIiCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0KLSAgICBpZiBf
UkVfUEFUVEVSTl9JTlZBTElEX0lOQ1JFTUVOVC5tYXRjaChsaW5lKToKLSAgICAgICAgZXJyb3Io
bGluZV9udW1iZXIsICdydW50aW1lL2ludmFsaWRfaW5jcmVtZW50JywgNSwKLSAgICAgICAgICAg
ICAgJ0NoYW5naW5nIHBvaW50ZXIgaW5zdGVhZCBvZiB2YWx1ZSAob3IgdW51c2VkIHZhbHVlIG9m
IG9wZXJhdG9yKikuJykKLQotCi1jbGFzcyBfQ2xhc3NJbmZvKG9iamVjdCk6Ci0gICAgIiIiU3Rv
cmVzIGluZm9ybWF0aW9uIGFib3V0IGEgY2xhc3MuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbmFtZSwgbGluZV9udW1iZXIpOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAg
IHNlbGYubGluZV9udW1iZXIgPSBsaW5lX251bWJlcgotICAgICAgICBzZWxmLnNlZW5fb3Blbl9i
cmFjZSA9IEZhbHNlCi0gICAgICAgIHNlbGYuaXNfZGVyaXZlZCA9IEZhbHNlCi0gICAgICAgIHNl
bGYudmlydHVhbF9tZXRob2RfbGluZV9udW1iZXIgPSBOb25lCi0gICAgICAgIHNlbGYuaGFzX3Zp
cnR1YWxfZGVzdHJ1Y3RvciA9IEZhbHNlCi0gICAgICAgIHNlbGYuYnJhY2VfZGVwdGggPSAwCi0K
LQotY2xhc3MgX0NsYXNzU3RhdGUob2JqZWN0KToKLSAgICAiIiJIb2xkcyB0aGUgY3VycmVudCBz
dGF0ZSBvZiB0aGUgcGFyc2UgcmVsYXRpbmcgdG8gY2xhc3MgZGVjbGFyYXRpb25zLgotCi0gICAg
SXQgbWFpbnRhaW5zIGEgc3RhY2sgb2YgX0NsYXNzSW5mb3MgcmVwcmVzZW50aW5nIHRoZSBwYXJz
ZXIncyBndWVzcwotICAgIGFzIHRvIHRoZSBjdXJyZW50IG5lc3Rpbmcgb2YgY2xhc3MgZGVjbGFy
YXRpb25zLiBUaGUgaW5uZXJtb3N0IGNsYXNzCi0gICAgaXMgYXQgdGhlIHRvcCAoYmFjaykgb2Yg
dGhlIHN0YWNrLiBUeXBpY2FsbHksIHRoZSBzdGFjayB3aWxsIGVpdGhlcgotICAgIGJlIGVtcHR5
IG9yIGhhdmUgZXhhY3RseSBvbmUgZW50cnkuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18o
c2VsZik6Ci0gICAgICAgIHNlbGYuY2xhc3NpbmZvX3N0YWNrID0gW10KLQotICAgIGRlZiBjaGVj
a19maW5pc2hlZChzZWxmLCBmaWxlbmFtZSwgZXJyb3IpOgotICAgICAgICAiIiJDaGVja3MgdGhh
dCBhbGwgY2xhc3NlcyBoYXZlIGJlZW4gY29tcGxldGVseSBwYXJzZWQuCi0KLSAgICAgICAgQ2Fs
bCB0aGlzIHdoZW4gYWxsIGxpbmVzIGluIGEgZmlsZSBoYXZlIGJlZW4gcHJvY2Vzc2VkLgotICAg
ICAgICBBcmdzOgotICAgICAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBm
aWxlLgotICAgICAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJv
cnMgZm91bmQuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmNsYXNzaW5mb19zdGFjazoK
LSAgICAgICAgICAgICMgTm90ZTogVGhpcyB0ZXN0IGNhbiByZXN1bHQgaW4gZmFsc2UgcG9zaXRp
dmVzIGlmICNpZmRlZiBjb25zdHJ1Y3RzCi0gICAgICAgICAgICAjIGdldCBpbiB0aGUgd2F5IG9m
IGJyYWNlIG1hdGNoaW5nLiBTZWUgdGhlIHRlc3RCdWlsZENsYXNzIHRlc3QgaW4KLSAgICAgICAg
ICAgICMgY3BwX3N0eWxlX3VuaXR0ZXN0LnB5IGZvciBhbiBleGFtcGxlIG9mIHRoaXMuCi0gICAg
ICAgICAgICBlcnJvcihzZWxmLmNsYXNzaW5mb19zdGFja1swXS5saW5lX251bWJlciwgJ2J1aWxk
L2NsYXNzJywgNSwKLSAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gZmluZCBjb21wbGV0ZSBk
ZWNsYXJhdGlvbiBvZiBjbGFzcyAlcycgJQotICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc2lu
Zm9fc3RhY2tbMF0ubmFtZSkKLQotCi1jbGFzcyBfRmlsZVN0YXRlKG9iamVjdCk6Ci0gICAgZGVm
IF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLl9kaWRfaW5zaWRlX25hbWVzcGFjZV9pbmRl
bnRfd2FybmluZyA9IEZhbHNlCi0KLSAgICBkZWYgc2V0X2RpZF9pbnNpZGVfbmFtZXNwYWNlX2lu
ZGVudF93YXJuaW5nKHNlbGYpOgotICAgICAgICBzZWxmLl9kaWRfaW5zaWRlX25hbWVzcGFjZV9p
bmRlbnRfd2FybmluZyA9IFRydWUKLQotICAgIGRlZiBkaWRfaW5zaWRlX25hbWVzcGFjZV9pbmRl
bnRfd2FybmluZyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2RpZF9pbnNpZGVfbmFtZXNw
YWNlX2luZGVudF93YXJuaW5nCi0KLWRlZiBjaGVja19mb3Jfbm9uX3N0YW5kYXJkX2NvbnN0cnVj
dHMoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xhc3Nfc3RhdGUsIGVycm9yKToKLSAgICAiIiJMb2dzIGFu
IGVycm9yIGlmIHdlIHNlZSBjZXJ0YWluIG5vbi1BTlNJIGNvbnN0cnVjdHMgaWdub3JlZCBieSBn
Y2MtMi4KLQotICAgIENvbXBsYWluIGFib3V0IHNldmVyYWwgY29uc3RydWN0cyB3aGljaCBnY2Mt
MiBhY2NlcHRzLCBidXQgd2hpY2ggYXJlCi0gICAgbm90IHN0YW5kYXJkIEMrKy4gIFdhcm5pbmcg
YWJvdXQgdGhlc2UgaW4gbGludCBpcyBvbmUgd2F5IHRvIGVhc2UgdGhlCi0gICAgdHJhbnNpdGlv
biB0byBuZXcgY29tcGlsZXJzLgotICAgIC0gcHV0IHN0b3JhZ2UgY2xhc3MgZmlyc3QgKGUuZy4g
InN0YXRpYyBjb25zdCIgaW5zdGVhZCBvZiAiY29uc3Qgc3RhdGljIikuCi0gICAgLSAiJWxsZCIg
aW5zdGVhZCBvZiAlcWQiIGluIHByaW50Zi10eXBlIGZ1bmN0aW9ucy4KLSAgICAtICIlMSRkIiBp
cyBub24tc3RhbmRhcmQgaW4gcHJpbnRmLXR5cGUgZnVuY3Rpb25zLgotICAgIC0gIlwlIiBpcyBh
biB1bmRlZmluZWQgY2hhcmFjdGVyIGVzY2FwZSBzZXF1ZW5jZS4KLSAgICAtIHRleHQgYWZ0ZXIg
I2VuZGlmIGlzIG5vdCBhbGxvd2VkLgotICAgIC0gaW52YWxpZCBpbm5lci1zdHlsZSBmb3J3YXJk
IGRlY2xhcmF0aW9uLgotICAgIC0gPj8gYW5kIDw/IG9wZXJhdG9ycywgYW5kIHRoZWlyID4/PSBh
bmQgPD89IGNvdXNpbnMuCi0gICAgLSBjbGFzc2VzIHdpdGggdmlydHVhbCBtZXRob2RzIG5lZWQg
dmlydHVhbCBkZXN0cnVjdG9ycyAoY29tcGlsZXIgd2FybmluZwotICAgICAgICBhdmFpbGFibGUs
IGJ1dCBub3QgdHVybmVkIG9uIHlldC4pCi0KLSAgICBBZGRpdGlvbmFsbHksIGNoZWNrIGZvciBj
b25zdHJ1Y3Rvci9kZXN0cnVjdG9yIHN0eWxlIHZpb2xhdGlvbnMgYXMgaXQKLSAgICBpcyB2ZXJ5
IGNvbnZlbmllbnQgdG8gZG8gc28gd2hpbGUgY2hlY2tpbmcgZm9yIGdjYy0yIGNvbXBsaWFuY2Uu
Ci0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZp
bGUuCi0gICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5p
bmcgdGhlIGZpbGUuCi0gICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0
byBjaGVjay4KLSAgICAgIGNsYXNzX3N0YXRlOiBBIF9DbGFzc1N0YXRlIGluc3RhbmNlIHdoaWNo
IG1haW50YWlucyBpbmZvcm1hdGlvbiBhYm91dAotICAgICAgICAgICAgICAgICAgIHRoZSBjdXJy
ZW50IHN0YWNrIG9mIG5lc3RlZCBjbGFzcyBkZWNsYXJhdGlvbnMgYmVpbmcgcGFyc2VkLgotICAg
ICAgZXJyb3I6IEEgY2FsbGFibGUgdG8gd2hpY2ggZXJyb3JzIGFyZSByZXBvcnRlZCwgd2hpY2gg
dGFrZXMgNCBhcmd1bWVudHM6Ci0gICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBl
cnJvciBsZXZlbCwgYW5kIG1lc3NhZ2UKLSAgICAiIiIKLQotICAgICMgUmVtb3ZlIGNvbW1lbnRz
IGZyb20gdGhlIGxpbmUsIGJ1dCBsZWF2ZSBpbiBzdHJpbmdzIGZvciBub3cuCi0gICAgbGluZSA9
IGNsZWFuX2xpbmVzLmxpbmVzW2xpbmVfbnVtYmVyXQotCi0gICAgaWYgc2VhcmNoKHIncHJpbnRm
XHMqXCguKiIuKiVbLSsgXT9cZCpxJywgbGluZSk6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVy
LCAncnVudGltZS9wcmludGZfZm9ybWF0JywgMywKLSAgICAgICAgICAgICAgJyVxIGluIGZvcm1h
dCBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxsIGluc3RlYWQuJykKLQotICAgIGlmIHNl
YXJjaChyJ3ByaW50ZlxzKlwoLioiLiolXGQrXCQnLCBsaW5lKToKLSAgICAgICAgZXJyb3IobGlu
ZV9udW1iZXIsICdydW50aW1lL3ByaW50Zl9mb3JtYXQnLCAyLAotICAgICAgICAgICAgICAnJU4k
IGZvcm1hdHMgYXJlIHVuY29udmVudGlvbmFsLiAgVHJ5IHJld3JpdGluZyB0byBhdm9pZCB0aGVt
LicpCi0KLSAgICAjIFJlbW92ZSBlc2NhcGVkIGJhY2tzbGFzaGVzIGJlZm9yZSBsb29raW5nIGZv
ciB1bmRlZmluZWQgZXNjYXBlcy4KLSAgICBsaW5lID0gbGluZS5yZXBsYWNlKCdcXFxcJywgJycp
Ci0KLSAgICBpZiBzZWFyY2gocicoInxcJykuKlxcKCV8XFt8XCh8eyknLCBsaW5lKToKLSAgICAg
ICAgZXJyb3IobGluZV9udW1iZXIsICdidWlsZC9wcmludGZfZm9ybWF0JywgMywKLSAgICAgICAg
ICAgICAgJyUsIFssICgsIGFuZCB7IGFyZSB1bmRlZmluZWQgY2hhcmFjdGVyIGVzY2FwZXMuICBV
bmVzY2FwZSB0aGVtLicpCi0KLSAgICAjIEZvciB0aGUgcmVzdCwgd29yayB3aXRoIGJvdGggY29t
bWVudHMgYW5kIHN0cmluZ3MgcmVtb3ZlZC4KLSAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVk
W2xpbmVfbnVtYmVyXQotCi0gICAgaWYgc2VhcmNoKHInXGIoY29uc3R8dm9sYXRpbGV8dm9pZHxj
aGFyfHNob3J0fGludHxsb25nJwotICAgICAgICAgICAgICByJ3xmbG9hdHxkb3VibGV8c2lnbmVk
fHVuc2lnbmVkJwotICAgICAgICAgICAgICByJ3xzY2hhcnx1P2ludDh8dT9pbnQxNnx1P2ludDMy
fHU/aW50NjQpJwotICAgICAgICAgICAgICByJ1xzKyhhdXRvfHJlZ2lzdGVyfHN0YXRpY3xleHRl
cm58dHlwZWRlZilcYicsCi0gICAgICAgICAgICAgIGxpbmUpOgotICAgICAgICBlcnJvcihsaW5l
X251bWJlciwgJ2J1aWxkL3N0b3JhZ2VfY2xhc3MnLCA1LAotICAgICAgICAgICAgICAnU3RvcmFn
ZSBjbGFzcyAoc3RhdGljLCBleHRlcm4sIHR5cGVkZWYsIGV0Yykgc2hvdWxkIGJlIGZpcnN0Licp
Ci0KLSAgICBpZiBtYXRjaChyJ1xzKiNccyplbmRpZlxzKlteL1xzXSsnLCBsaW5lKToKLSAgICAg
ICAgZXJyb3IobGluZV9udW1iZXIsICdidWlsZC9lbmRpZl9jb21tZW50JywgNSwKLSAgICAgICAg
ICAgICAgJ1VuY29tbWVudGVkIHRleHQgYWZ0ZXIgI2VuZGlmIGlzIG5vbi1zdGFuZGFyZC4gIFVz
ZSBhIGNvbW1lbnQuJykKLQotICAgIGlmIG1hdGNoKHInXHMqY2xhc3NccysoXHcrXHMqOjpccyop
K1x3K1xzKjsnLCBsaW5lKToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdidWlsZC9mb3J3
YXJkX2RlY2wnLCA1LAotICAgICAgICAgICAgICAnSW5uZXItc3R5bGUgZm9yd2FyZCBkZWNsYXJh
dGlvbnMgYXJlIGludmFsaWQuICBSZW1vdmUgdGhpcyBsaW5lLicpCi0KLSAgICBpZiBzZWFyY2go
cicoXHcrfFsrLV0/XGQrKFwuXGQqKT8pXHMqKDx8PilcPz0/XHMqKFx3K3xbKy1dP1xkKykoXC5c
ZCopPycsIGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL2RlcHJlY2F0
ZWQnLCAzLAotICAgICAgICAgICAgICAnPj8gYW5kIDw/IChtYXggYW5kIG1pbikgb3BlcmF0b3Jz
IGFyZSBub24tc3RhbmRhcmQgYW5kIGRlcHJlY2F0ZWQuJykKLQotICAgICMgVHJhY2sgY2xhc3Mg
ZW50cnkgYW5kIGV4aXQsIGFuZCBhdHRlbXB0IHRvIGZpbmQgY2FzZXMgd2l0aGluIHRoZQotICAg
ICMgY2xhc3MgZGVjbGFyYXRpb24gdGhhdCBkb24ndCBtZWV0IHRoZSBDKysgc3R5bGUKLSAgICAj
IGd1aWRlbGluZXMuIFRyYWNraW5nIGlzIHZlcnkgZGVwZW5kZW50IG9uIHRoZSBjb2RlIG1hdGNo
aW5nIEdvb2dsZQotICAgICMgc3R5bGUgZ3VpZGVsaW5lcywgYnV0IGl0IHNlZW1zIHRvIHBlcmZv
cm0gd2VsbCBlbm91Z2ggaW4gdGVzdGluZwotICAgICMgdG8gYmUgYSB3b3J0aHdoaWxlIGFkZGl0
aW9uIHRvIHRoZSBjaGVja3MuCi0gICAgY2xhc3NpbmZvX3N0YWNrID0gY2xhc3Nfc3RhdGUuY2xh
c3NpbmZvX3N0YWNrCi0gICAgIyBMb29rIGZvciBhIGNsYXNzIGRlY2xhcmF0aW9uCi0gICAgY2xh
c3NfZGVjbF9tYXRjaCA9IG1hdGNoKAotICAgICAgICByJ1xzKih0ZW1wbGF0ZVxzKjxbXHdcczw+
LDpdKj5ccyopPyhjbGFzc3xzdHJ1Y3QpXHMrKFx3Kyg6Olx3KykqKScsIGxpbmUpCi0gICAgaWYg
Y2xhc3NfZGVjbF9tYXRjaDoKLSAgICAgICAgY2xhc3NpbmZvX3N0YWNrLmFwcGVuZChfQ2xhc3NJ
bmZvKGNsYXNzX2RlY2xfbWF0Y2guZ3JvdXAoMyksIGxpbmVfbnVtYmVyKSkKLQotICAgICMgRXZl
cnl0aGluZyBlbHNlIGluIHRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgdG9wIG9mIHRoZSBzdGFjayBp
ZiBpdCdzCi0gICAgIyBub3QgZW1wdHkuCi0gICAgaWYgbm90IGNsYXNzaW5mb19zdGFjazoKLSAg
ICAgICAgcmV0dXJuCi0KLSAgICBjbGFzc2luZm8gPSBjbGFzc2luZm9fc3RhY2tbLTFdCi0KLSAg
ICAjIElmIHRoZSBvcGVuaW5nIGJyYWNlIGhhc24ndCBiZWVuIHNlZW4gbG9vayBmb3IgaXQgYW5k
IGFsc28KLSAgICAjIHBhcmVudCBjbGFzcyBkZWNsYXJhdGlvbnMuCi0gICAgaWYgbm90IGNsYXNz
aW5mby5zZWVuX29wZW5fYnJhY2U6Ci0gICAgICAgICMgSWYgdGhlIGxpbmUgaGFzIGEgJzsnIGlu
IGl0LCBhc3N1bWUgaXQncyBhIGZvcndhcmQgZGVjbGFyYXRpb24gb3IKLSAgICAgICAgIyBhIHNp
bmdsZS1saW5lIGNsYXNzIGRlY2xhcmF0aW9uLCB3aGljaCB3ZSB3b24ndCBwcm9jZXNzLgotICAg
ICAgICBpZiBsaW5lLmZpbmQoJzsnKSAhPSAtMToKLSAgICAgICAgICAgIGNsYXNzaW5mb19zdGFj
ay5wb3AoKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGNsYXNzaW5mby5zZWVuX29wZW5f
YnJhY2UgPSAobGluZS5maW5kKCd7JykgIT0gLTEpCi0gICAgICAgICMgTG9vayBmb3IgYSBiYXJl
ICc6JwotICAgICAgICBpZiBzZWFyY2goJyhefFteOl0pOigkfFteOl0pJywgbGluZSk6Ci0gICAg
ICAgICAgICBjbGFzc2luZm8uaXNfZGVyaXZlZCA9IFRydWUKLSAgICAgICAgaWYgbm90IGNsYXNz
aW5mby5zZWVuX29wZW5fYnJhY2U6Ci0gICAgICAgICAgICByZXR1cm4gICMgRXZlcnl0aGluZyBl
bHNlIGluIHRoaXMgZnVuY3Rpb24gaXMgZm9yIGFmdGVyIG9wZW4gYnJhY2UKLQotICAgICMgVGhl
IGNsYXNzIG1heSBoYXZlIGJlZW4gZGVjbGFyZWQgd2l0aCBuYW1lc3BhY2Ugb3IgY2xhc3NuYW1l
IHF1YWxpZmllcnMuCi0gICAgIyBUaGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3Igd2lsbCBu
b3QgaGF2ZSB0aG9zZSBxdWFsaWZpZXJzLgotICAgIGJhc2VfY2xhc3NuYW1lID0gY2xhc3NpbmZv
Lm5hbWUuc3BsaXQoJzo6JylbLTFdCi0KLSAgICAjIExvb2sgZm9yIHNpbmdsZS1hcmd1bWVudCBj
b25zdHJ1Y3RvcnMgdGhhdCBhcmVuJ3QgbWFya2VkIGV4cGxpY2l0LgotICAgICMgVGVjaG5pY2Fs
bHkgYSB2YWxpZCBjb25zdHJ1Y3QsIGJ1dCBhZ2FpbnN0IHN0eWxlLgotICAgIGFyZ3MgPSBtYXRj
aChyJyg/PCFleHBsaWNpdClccyslc1xzKlwoKFteLCgpXSspXCknCi0gICAgICAgICAgICAgICAg
ICUgcmUuZXNjYXBlKGJhc2VfY2xhc3NuYW1lKSwKLSAgICAgICAgICAgICAgICAgbGluZSkKLSAg
ICBpZiAoYXJncwotICAgICAgICBhbmQgYXJncy5ncm91cCgxKSAhPSAndm9pZCcKLSAgICAgICAg
YW5kIG5vdCBtYXRjaChyJyhjb25zdFxzKyk/JXNccyomJyAlIHJlLmVzY2FwZShiYXNlX2NsYXNz
bmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgYXJncy5ncm91cCgxKS5zdHJpcCgpKSk6Ci0g
ICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS9leHBsaWNpdCcsIDUsCi0gICAgICAg
ICAgICAgICdTaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHNob3VsZCBiZSBtYXJrZWQgZXhw
bGljaXQuJykKLQotICAgICMgTG9vayBmb3IgbWV0aG9kcyBkZWNsYXJlZCB2aXJ0dWFsLgotICAg
IGlmIHNlYXJjaChyJ1xidmlydHVhbFxiJywgbGluZSk6Ci0gICAgICAgIGNsYXNzaW5mby52aXJ0
dWFsX21ldGhvZF9saW5lX251bWJlciA9IGxpbmVfbnVtYmVyCi0gICAgICAgICMgT25seSBsb29r
IGZvciBhIGRlc3RydWN0b3IgZGVjbGFyYXRpb24gb24gdGhlIHNhbWUgbGluZS4gSXQgd291bGQK
LSAgICAgICAgIyBiZSBleHRyZW1lbHkgdW5saWtlbHkgZm9yIHRoZSBkZXN0cnVjdG9yIGRlY2xh
cmF0aW9uIHRvIG9jY3VweQotICAgICAgICAjIG1vcmUgdGhhbiBvbmUgbGluZS4KLSAgICAgICAg
aWYgc2VhcmNoKHInfiVzXHMqXCgnICUgYmFzZV9jbGFzc25hbWUsIGxpbmUpOgotICAgICAgICAg
ICAgY2xhc3NpbmZvLmhhc192aXJ0dWFsX2Rlc3RydWN0b3IgPSBUcnVlCi0KLSAgICAjIExvb2sg
Zm9yIGNsYXNzIGVuZC4KLSAgICBicmFjZV9kZXB0aCA9IGNsYXNzaW5mby5icmFjZV9kZXB0aAot
ICAgIGJyYWNlX2RlcHRoID0gYnJhY2VfZGVwdGggKyBsaW5lLmNvdW50KCd7JykgLSBsaW5lLmNv
dW50KCd9JykKLSAgICBpZiBicmFjZV9kZXB0aCA8PSAwOgotICAgICAgICBjbGFzc2luZm8gPSBj
bGFzc2luZm9fc3RhY2sucG9wKCkKLSAgICAgICAgIyBUcnkgdG8gZGV0ZWN0IG1pc3Npbmcgdmly
dHVhbCBkZXN0cnVjdG9yIGRlY2xhcmF0aW9ucy4KLSAgICAgICAgIyBGb3Igbm93LCBvbmx5IHdh
cm4gaWYgYSBub24tZGVyaXZlZCBjbGFzcyB3aXRoIHZpcnR1YWwgbWV0aG9kcyBsYWNrcwotICAg
ICAgICAjIGEgdmlydHVhbCBkZXN0cnVjdG9yLiBUaGlzIGlzIHRvIG1ha2UgaXQgbGVzcyBsaWtl
bHkgdGhhdCBwZW9wbGUgd2lsbAotICAgICAgICAjIGRlY2xhcmUgZGVyaXZlZCB2aXJ0dWFsIGRl
c3RydWN0b3JzIHdpdGhvdXQgZGVjbGFyaW5nIHRoZSBiYXNlCi0gICAgICAgICMgZGVzdHJ1Y3Rv
ciB2aXJ0dWFsLgotICAgICAgICBpZiAoKGNsYXNzaW5mby52aXJ0dWFsX21ldGhvZF9saW5lX251
bWJlciBpcyBub3QgTm9uZSkKLSAgICAgICAgICAgIGFuZCAobm90IGNsYXNzaW5mby5oYXNfdmly
dHVhbF9kZXN0cnVjdG9yKQotICAgICAgICAgICAgYW5kIChub3QgY2xhc3NpbmZvLmlzX2Rlcml2
ZWQpKTogICMgT25seSB3YXJuIGZvciBiYXNlIGNsYXNzZXMKLSAgICAgICAgICAgIGVycm9yKGNs
YXNzaW5mby5saW5lX251bWJlciwgJ3J1bnRpbWUvdmlydHVhbCcsIDQsCi0gICAgICAgICAgICAg
ICAgICAnVGhlIGNsYXNzICVzIHByb2JhYmx5IG5lZWRzIGEgdmlydHVhbCBkZXN0cnVjdG9yIGR1
ZSB0byAnCi0gICAgICAgICAgICAgICAgICAnaGF2aW5nIHZpcnR1YWwgbWV0aG9kKHMpLCBvbmUg
ZGVjbGFyZWQgYXQgbGluZSAlZC4nCi0gICAgICAgICAgICAgICAgICAlIChjbGFzc2luZm8ubmFt
ZSwgY2xhc3NpbmZvLnZpcnR1YWxfbWV0aG9kX2xpbmVfbnVtYmVyKSkKLSAgICBlbHNlOgotICAg
ICAgICBjbGFzc2luZm8uYnJhY2VfZGVwdGggPSBicmFjZV9kZXB0aAotCi0KLWRlZiBjaGVja19z
cGFjaW5nX2Zvcl9mdW5jdGlvbl9jYWxsKGZpbGVuYW1lLCBsaW5lLCBsaW5lX251bWJlciwgZXJy
b3IpOgotICAgICIiIkNoZWNrcyBmb3IgdGhlIGNvcnJlY3RuZXNzIG9mIHZhcmlvdXMgc3BhY2lu
ZyBhcm91bmQgZnVuY3Rpb24gY2FsbHMuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRo
ZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCi0gICAgICBsaW5lOiBUaGUgdGV4dCBvZiB0aGUg
bGluZSB0byBjaGVjay4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5l
IHRvIGNoZWNrLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVy
cm9ycyBmb3VuZC4KLSAgICAiIiIKLQotICAgICMgU2luY2UgZnVuY3Rpb24gY2FsbHMgb2Z0ZW4g
b2NjdXIgaW5zaWRlIGlmL2Zvci9mb3JlYWNoL3doaWxlL3N3aXRjaAotICAgICMgZXhwcmVzc2lv
bnMgLSB3aGljaCBoYXZlIHRoZWlyIG93biwgbW9yZSBsaWJlcmFsIGNvbnZlbnRpb25zIC0gd2UK
LSAgICAjIGZpcnN0IHNlZSBpZiB3ZSBzaG91bGQgYmUgbG9va2luZyBpbnNpZGUgc3VjaCBhbiBl
eHByZXNzaW9uIGZvciBhCi0gICAgIyBmdW5jdGlvbiBjYWxsLCB0byB3aGljaCB3ZSBjYW4gYXBw
bHkgbW9yZSBzdHJpY3Qgc3RhbmRhcmRzLgotICAgIGZ1bmN0aW9uX2NhbGwgPSBsaW5lICAgICMg
aWYgdGhlcmUncyBubyBjb250cm9sIGZsb3cgY29uc3RydWN0LCBsb29rIGF0IHdob2xlIGxpbmUK
LSAgICBmb3IgcGF0dGVybiBpbiAocidcYmlmXHMqXCgoLiopXClccyp7JywKLSAgICAgICAgICAg
ICAgICAgICAgcidcYmZvclxzKlwoKC4qKVwpXHMqeycsCi0gICAgICAgICAgICAgICAgICAgIHIn
XGJmb3JlYWNoXHMqXCgoLiopXClccyp7JywKLSAgICAgICAgICAgICAgICAgICAgcidcYndoaWxl
XHMqXCgoLiopXClccypbeztdJywKLSAgICAgICAgICAgICAgICAgICAgcidcYnN3aXRjaFxzKlwo
KC4qKVwpXHMqeycpOgotICAgICAgICBtYXRjaGVkID0gc2VhcmNoKHBhdHRlcm4sIGxpbmUpCi0g
ICAgICAgIGlmIG1hdGNoZWQ6Ci0gICAgICAgICAgICBmdW5jdGlvbl9jYWxsID0gbWF0Y2hlZC5n
cm91cCgxKSAgICAjIGxvb2sgaW5zaWRlIHRoZSBwYXJlbnMgZm9yIGZ1bmN0aW9uIGNhbGxzCi0g
ICAgICAgICAgICBicmVhawotCi0gICAgIyBFeGNlcHQgaW4gaWYvZm9yL2ZvcmVhY2gvd2hpbGUv
c3dpdGNoLCB0aGVyZSBzaG91bGQgbmV2ZXIgYmUgc3BhY2UKLSAgICAjIGltbWVkaWF0ZWx5IGlu
c2lkZSBwYXJlbnMgKGVnICJmKCAzLCA0ICkiKS4gIFdlIG1ha2UgYW4gZXhjZXB0aW9uCi0gICAg
IyBmb3IgbmVzdGVkIHBhcmVucyAoIChhK2IpICsgYyApLiAgTGlrZXdpc2UsIHRoZXJlIHNob3Vs
ZCBuZXZlciBiZQotICAgICMgYSBzcGFjZSBiZWZvcmUgYSAoIHdoZW4gaXQncyBhIGZ1bmN0aW9u
IGFyZ3VtZW50LiAgSSBhc3N1bWUgaXQncyBhCi0gICAgIyBmdW5jdGlvbiBhcmd1bWVudCB3aGVu
IHRoZSBjaGFyIGJlZm9yZSB0aGUgd2hpdGVzcGFjZSBpcyBsZWdhbCBpbgotICAgICMgYSBmdW5j
dGlvbiBuYW1lIChhbG51bSArIF8pIGFuZCB3ZSdyZSBub3Qgc3RhcnRpbmcgYSBtYWNyby4gQWxz
byBpZ25vcmUKLSAgICAjIHBvaW50ZXJzIGFuZCByZWZlcmVuY2VzIHRvIGFycmF5cyBhbmQgZnVu
Y3Rpb25zIGNveiB0aGV5J3JlIHRvbyB0cmlja3k6Ci0gICAgIyB3ZSB1c2UgYSB2ZXJ5IHNpbXBs
ZSB3YXkgdG8gcmVjb2duaXplIHRoZXNlOgotICAgICMgIiAoc29tZXRoaW5nKShtYXliZS1zb21l
dGhpbmcpIiBvcgotICAgICMgIiAoc29tZXRoaW5nKShtYXliZS1zb21ldGhpbmcsIiBvcgotICAg
ICMgIiAoc29tZXRoaW5nKVtzb21ldGhpbmddIgotICAgICMgTm90ZSB0aGF0IHdlIGFzc3VtZSB0
aGUgY29udGVudHMgb2YgW10gdG8gYmUgc2hvcnQgZW5vdWdoIHRoYXQKLSAgICAjIHRoZXknbGwg
bmV2ZXIgbmVlZCB0byB3cmFwLgotICAgIGlmICggICMgSWdub3JlIGNvbnRyb2wgc3RydWN0dXJl
cy4KLSAgICAgICAgbm90IHNlYXJjaChyJ1xiKGlmfGZvcnxmb3JlYWNofHdoaWxlfHN3aXRjaHxy
ZXR1cm58bmV3fGRlbGV0ZSlcYicsIGZ1bmN0aW9uX2NhbGwpCi0gICAgICAgICMgSWdub3JlIHBv
aW50ZXJzL3JlZmVyZW5jZXMgdG8gZnVuY3Rpb25zLgotICAgICAgICBhbmQgbm90IHNlYXJjaChy
JyBcKFteKV0rXClcKFteKV0qKFwpfCwkKScsIGZ1bmN0aW9uX2NhbGwpCi0gICAgICAgICMgSWdu
b3JlIHBvaW50ZXJzL3JlZmVyZW5jZXMgdG8gYXJyYXlzLgotICAgICAgICBhbmQgbm90IHNlYXJj
aChyJyBcKFteKV0rXClcW1teXF1dK1xdJywgZnVuY3Rpb25fY2FsbCkpOgotICAgICAgICBpZiBz
ZWFyY2gocidcd1xzKlwoWyBcdF0oPyFccypcXCQpJywgZnVuY3Rpb25fY2FsbCk6ICAgICAgIyBh
ICggdXNlZCBmb3IgYSBmbiBjYWxsCi0gICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3do
aXRlc3BhY2UvcGFyZW5zJywgNCwKLSAgICAgICAgICAgICAgICAgICdFeHRyYSBzcGFjZSBhZnRl
ciAoIGluIGZ1bmN0aW9uIGNhbGwnKQotICAgICAgICBlbGlmIHNlYXJjaChyJ1woWyBcdF0rKD8h
KFxzKlxcKXxcKCknLCBmdW5jdGlvbl9jYWxsKToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVt
YmVyLCAnd2hpdGVzcGFjZS9wYXJlbnMnLCAyLAotICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNw
YWNlIGFmdGVyICgnKQotICAgICAgICBpZiAoc2VhcmNoKHInXHdccytcKCcsIGZ1bmN0aW9uX2Nh
bGwpCi0gICAgICAgICAgICBhbmQgbm90IHNlYXJjaChyJyNccypkZWZpbmV8dHlwZWRlZicsIGZ1
bmN0aW9uX2NhbGwpKToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFj
ZS9wYXJlbnMnLCA0LAotICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSAoIGlu
IGZ1bmN0aW9uIGNhbGwnKQotICAgICAgICAjIElmIHRoZSApIGlzIGZvbGxvd2VkIG9ubHkgYnkg
YSBuZXdsaW5lIG9yIGEgeyArIG5ld2xpbmUsIGFzc3VtZSBpdCdzCi0gICAgICAgICMgcGFydCBv
ZiBhIGNvbnRyb2wgc3RhdGVtZW50IChpZi93aGlsZS9ldGMpLCBhbmQgZG9uJ3QgY29tcGxhaW4K
LSAgICAgICAgaWYgc2VhcmNoKHInW14pXHNdXHMrXCkoPyFccyokfHtccyokKScsIGZ1bmN0aW9u
X2NhbGwpOgotICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVu
cycsIDIsCi0gICAgICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgYmVmb3JlICknKQotCi0KLWRl
ZiBpc19ibGFua19saW5lKGxpbmUpOgotICAgICIiIlJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4g
bGluZSBpcyBibGFuay4KLQotICAgIFdlIGNvbnNpZGVyIGEgbGluZSB0byBiZSBibGFuayBpZiB0
aGUgbGluZSBpcyBlbXB0eSBvciBjb25zaXN0cyBvZgotICAgIG9ubHkgd2hpdGUgc3BhY2VzLgot
Ci0gICAgQXJnczoKLSAgICAgIGxpbmU6IEEgbGluZSBvZiBhIHN0cmluZy4KLQotICAgIFJldHVy
bnM6Ci0gICAgICBUcnVlLCBpZiB0aGUgZ2l2ZW4gbGluZSBpcyBibGFuay4KLSAgICAiIiIKLSAg
ICByZXR1cm4gbm90IGxpbmUgb3IgbGluZS5pc3NwYWNlKCkKLQotCi1kZWYgY2hlY2tfZm9yX2Z1
bmN0aW9uX2xlbmd0aHMoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9zdGF0ZSwgZXJyb3IpOgotICAgICIi
IlJlcG9ydHMgZm9yIGxvbmcgZnVuY3Rpb24gYm9kaWVzLgotCi0gICAgRm9yIGFuIG92ZXJ2aWV3
IHdoeSB0aGlzIGlzIGRvbmUsIHNlZToKLSAgICBodHRwOi8vZ29vZ2xlLXN0eWxlZ3VpZGUuZ29v
Z2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcGd1aWRlLnhtbCNXcml0ZV9TaG9ydF9GdW5jdGlvbnMK
LQotICAgIFVzZXMgYSBzaW1wbGlzdGljIGFsZ29yaXRobSBhc3N1bWluZyBvdGhlciBzdHlsZSBn
dWlkZWxpbmVzCi0gICAgKGVzcGVjaWFsbHkgc3BhY2luZykgYXJlIGZvbGxvd2VkLgotICAgIE9u
bHkgY2hlY2tzIHVuaW5kZW50ZWQgZnVuY3Rpb25zLCBzbyBjbGFzcyBtZW1iZXJzIGFyZSB1bmNo
ZWNrZWQuCi0gICAgVHJpdmlhbCBib2RpZXMgYXJlIHVuY2hlY2tlZCwgc28gY29uc3RydWN0b3Jz
IHdpdGggaHVnZSBpbml0aWFsaXplciBsaXN0cwotICAgIG1heSBiZSBtaXNzZWQuCi0gICAgQmxh
bmsvY29tbWVudCBsaW5lcyBhcmUgbm90IGNvdW50ZWQgc28gYXMgdG8gYXZvaWQgZW5jb3VyYWdp
bmcgdGhlIHJlbW92YWwKLSAgICBvZiB2ZXJ0aWNhbCBzcGFjZSBhbmQgY29tbW1lbnRzIGp1c3Qg
dG8gZ2V0IHRocm91Z2ggYSBsaW50IGNoZWNrLgotICAgIE5PTElOVCAqb24gdGhlIGxhc3QgbGlu
ZSBvZiBhIGZ1bmN0aW9uKiBkaXNhYmxlcyB0aGlzIGNoZWNrLgotCi0gICAgQXJnczoKLSAgICAg
IGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgotICAgICAgY2xlYW5fbGlu
ZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgotICAgICAg
bGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCi0gICAgICBmdW5j
dGlvbl9zdGF0ZTogQ3VycmVudCBmdW5jdGlvbiBuYW1lIGFuZCBsaW5lcyBpbiBib2R5IHNvIGZh
ci4KLSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91
bmQuCi0gICAgIiIiCi0gICAgbGluZXMgPSBjbGVhbl9saW5lcy5saW5lcwotICAgIGxpbmUgPSBs
aW5lc1tsaW5lX251bWJlcl0KLSAgICByYXcgPSBjbGVhbl9saW5lcy5yYXdfbGluZXMKLSAgICBy
YXdfbGluZSA9IHJhd1tsaW5lX251bWJlcl0KLSAgICBqb2luZWRfbGluZSA9ICcnCi0KLSAgICBz
dGFydGluZ19mdW5jID0gRmFsc2UKLSAgICByZWdleHAgPSByJyhcdyhcd3w6OnxcKnxcJnxccykq
KVwoJyAgIyBkZWNscyAqICYgc3BhY2U6Om5hbWUoIC4uLgotICAgIG1hdGNoX3Jlc3VsdCA9IG1h
dGNoKHJlZ2V4cCwgbGluZSkKLSAgICBpZiBtYXRjaF9yZXN1bHQ6Ci0gICAgICAgICMgSWYgdGhl
IG5hbWUgaXMgYWxsIGNhcHMgYW5kIHVuZGVyc2NvcmVzLCBmaWd1cmUgaXQncyBhIG1hY3JvIGFu
ZAotICAgICAgICAjIGlnbm9yZSBpdCwgdW5sZXNzIGl0J3MgVEVTVCBvciBURVNUX0YuCi0gICAg
ICAgIGZ1bmN0aW9uX25hbWUgPSBtYXRjaF9yZXN1bHQuZ3JvdXAoMSkuc3BsaXQoKVstMV0KLSAg
ICAgICAgaWYgZnVuY3Rpb25fbmFtZSA9PSAnVEVTVCcgb3IgZnVuY3Rpb25fbmFtZSA9PSAnVEVT
VF9GJyBvciAobm90IG1hdGNoKHInW0EtWl9dKyQnLCBmdW5jdGlvbl9uYW1lKSk6Ci0gICAgICAg
ICAgICBzdGFydGluZ19mdW5jID0gVHJ1ZQotCi0gICAgaWYgc3RhcnRpbmdfZnVuYzoKLSAgICAg
ICAgYm9keV9mb3VuZCA9IEZhbHNlCi0gICAgICAgIGZvciBzdGFydF9saW5lX251bWJlciBpbiB4
cmFuZ2UobGluZV9udW1iZXIsIGNsZWFuX2xpbmVzLm51bV9saW5lcygpKToKLSAgICAgICAgICAg
IHN0YXJ0X2xpbmUgPSBsaW5lc1tzdGFydF9saW5lX251bWJlcl0KLSAgICAgICAgICAgIGpvaW5l
ZF9saW5lICs9ICcgJyArIHN0YXJ0X2xpbmUubHN0cmlwKCkKLSAgICAgICAgICAgIGlmIHNlYXJj
aChyJyg7fH0pJywgc3RhcnRfbGluZSk6ICAjIERlY2xhcmF0aW9ucyBhbmQgdHJpdmlhbCBmdW5j
dGlvbnMKLSAgICAgICAgICAgICAgICBib2R5X2ZvdW5kID0gVHJ1ZQotICAgICAgICAgICAgICAg
IGJyZWFrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAuLi4gaWdub3JlCi0gICAgICAg
ICAgICBpZiBzZWFyY2gocid7Jywgc3RhcnRfbGluZSk6Ci0gICAgICAgICAgICAgICAgYm9keV9m
b3VuZCA9IFRydWUKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiA9IHNlYXJjaChyJygoXHd8Oikq
KVwoJywgbGluZSkuZ3JvdXAoMSkKLSAgICAgICAgICAgICAgICBpZiBtYXRjaChyJ1RFU1QnLCBm
dW5jdGlvbik6ICAgICMgSGFuZGxlIFRFU1QuLi4gbWFjcm9zCi0gICAgICAgICAgICAgICAgICAg
IHBhcmFtZXRlcl9yZWdleHAgPSBzZWFyY2gocicoXCguKlwpKScsIGpvaW5lZF9saW5lKQotICAg
ICAgICAgICAgICAgICAgICBpZiBwYXJhbWV0ZXJfcmVnZXhwOiAgICAgICAgICAgICAjIElnbm9y
ZSBiYWQgc3ludGF4Ci0gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiArPSBwYXJhbWV0
ZXJfcmVnZXhwLmdyb3VwKDEpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKz0gJygpJwotICAgICAgICAgICAgICAgIGZ1bmN0aW9uX3N0YXRlLmJl
Z2luKGZ1bmN0aW9uKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIG5vdCBib2R5
X2ZvdW5kOgotICAgICAgICAgICAgIyBObyBib2R5IGZvciB0aGUgZnVuY3Rpb24gKG9yIGV2aWRl
bmNlIG9mIGEgbm9uLWZ1bmN0aW9uKSB3YXMgZm91bmQuCi0gICAgICAgICAgICBlcnJvcihsaW5l
X251bWJlciwgJ3JlYWRhYmlsaXR5L2ZuX3NpemUnLCA1LAotICAgICAgICAgICAgICAgICAgJ0xp
bnQgZmFpbGVkIHRvIGZpbmQgc3RhcnQgb2YgZnVuY3Rpb24gYm9keS4nKQotICAgIGVsaWYgbWF0
Y2gocideXH1ccyokJywgbGluZSk6ICAjIGZ1bmN0aW9uIGVuZAotICAgICAgICBpZiBub3Qgc2Vh
cmNoKHInXGJOT0xJTlRcYicsIHJhd19saW5lKToKLSAgICAgICAgICAgIGZ1bmN0aW9uX3N0YXRl
LmNoZWNrKGVycm9yLCBmaWxlbmFtZSwgbGluZV9udW1iZXIpCi0gICAgICAgIGZ1bmN0aW9uX3N0
YXRlLmVuZCgpCi0gICAgZWxpZiBub3QgbWF0Y2gocideXHMqJCcsIGxpbmUpOgotICAgICAgICBm
dW5jdGlvbl9zdGF0ZS5jb3VudCgpICAjIENvdW50IG5vbi1ibGFuay9ub24tY29tbWVudCBsaW5l
cy4KLQotCi1kZWYgY2hlY2tfc3BhY2luZyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVt
YmVyLCBlcnJvcik6Ci0gICAgIiIiQ2hlY2tzIGZvciB0aGUgY29ycmVjdG5lc3Mgb2YgdmFyaW91
cyBzcGFjaW5nIGlzc3VlcyBpbiB0aGUgY29kZS4KLQotICAgIFRoaW5ncyB3ZSBjaGVjayBmb3I6
IHNwYWNlcyBhcm91bmQgb3BlcmF0b3JzLCBzcGFjZXMgYWZ0ZXIKLSAgICBpZi9mb3Ivd2hpbGUv
c3dpdGNoLCBubyBzcGFjZXMgYXJvdW5kIHBhcmVucyBpbiBmdW5jdGlvbiBjYWxscywgdHdvCi0g
ICAgc3BhY2VzIGJldHdlZW4gY29kZSBhbmQgY29tbWVudCwgZG9uJ3Qgc3RhcnQgYSBibG9jayB3
aXRoIGEgYmxhbmsKLSAgICBsaW5lLCBkb24ndCBlbmQgYSBmdW5jdGlvbiB3aXRoIGEgYmxhbmsg
bGluZSwgZG9uJ3QgaGF2ZSB0b28gbWFueQotICAgIGJsYW5rIGxpbmVzIGluIGEgcm93LgotCi0g
ICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgot
ICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRo
ZSBmaWxlLgotICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hl
Y2suCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZv
dW5kLgotICAgICIiIgotCi0gICAgcmF3ID0gY2xlYW5fbGluZXMucmF3X2xpbmVzCi0gICAgbGlu
ZSA9IHJhd1tsaW5lX251bWJlcl0KLQotICAgICMgQmVmb3JlIG5peGluZyBjb21tZW50cywgY2hl
Y2sgaWYgdGhlIGxpbmUgaXMgYmxhbmsgZm9yIG5vIGdvb2QKLSAgICAjIHJlYXNvbi4gIFRoaXMg
aW5jbHVkZXMgdGhlIGZpcnN0IGxpbmUgYWZ0ZXIgYSBibG9jayBpcyBvcGVuZWQsIGFuZAotICAg
ICMgYmxhbmsgbGluZXMgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIChpZSwgcmlnaHQgYmVmb3Jl
IGEgbGluZSBsaWtlICd9JykuCi0gICAgaWYgaXNfYmxhbmtfbGluZShsaW5lKToKLSAgICAgICAg
ZWxpZGVkID0gY2xlYW5fbGluZXMuZWxpZGVkCi0gICAgICAgIHByZXZpb3VzX2xpbmUgPSBlbGlk
ZWRbbGluZV9udW1iZXIgLSAxXQotICAgICAgICBwcmV2aW91c19icmFjZSA9IHByZXZpb3VzX2xp
bmUucmZpbmQoJ3snKQotICAgICAgICAjIEZJWE1FOiBEb24ndCBjb21wbGFpbiBpZiBsaW5lIGJl
Zm9yZSBibGFuayBsaW5lLCBhbmQgbGluZSBhZnRlciwKLSAgICAgICAgIyAgICAgICAgYm90aCBz
dGFydCB3aXRoIGFsbnVtcyBhbmQgYXJlIGluZGVudGVkIHRoZSBzYW1lIGFtb3VudC4KLSAgICAg
ICAgIyAgICAgICAgVGhpcyBpZ25vcmVzIHdoaXRlc3BhY2UgYXQgdGhlIHN0YXJ0IG9mIGEgbmFt
ZXNwYWNlIGJsb2NrCi0gICAgICAgICMgICAgICAgIGJlY2F1c2UgdGhvc2UgYXJlIG5vdCB1c3Vh
bGx5IGluZGVudGVkLgotICAgICAgICBpZiAocHJldmlvdXNfYnJhY2UgIT0gLTEgYW5kIHByZXZp
b3VzX2xpbmVbcHJldmlvdXNfYnJhY2U6XS5maW5kKCd9JykgPT0gLTEKLSAgICAgICAgICAgIGFu
ZCBwcmV2aW91c19saW5lWzpwcmV2aW91c19icmFjZV0uZmluZCgnbmFtZXNwYWNlJykgPT0gLTEp
OgotICAgICAgICAgICAgIyBPSywgd2UgaGF2ZSBhIGJsYW5rIGxpbmUgYXQgdGhlIHN0YXJ0IG9m
IGEgY29kZSBibG9jay4gIEJlZm9yZSB3ZQotICAgICAgICAgICAgIyBjb21wbGFpbiwgd2UgY2hl
Y2sgaWYgaXQgaXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBydWxlOiBUaGUgcHJldmlvdXMKLSAgICAg
ICAgICAgICMgbm9uLWVtcHR5IGxpbmUgaGFzIHRoZSBwYXJhbWV0ZXJzIG9mIGEgZnVuY3Rpb24g
aGVhZGVyIHRoYXQgYXJlIGluZGVudGVkCi0gICAgICAgICAgICAjIDQgc3BhY2VzIChiZWNhdXNl
IHRoZXkgZGlkIG5vdCBmaXQgaW4gYSA4MCBjb2x1bW4gbGluZSB3aGVuIHBsYWNlZCBvbgotICAg
ICAgICAgICAgIyB0aGUgc2FtZSBsaW5lIGFzIHRoZSBmdW5jdGlvbiBuYW1lKS4gIFdlIGFsc28g
Y2hlY2sgZm9yIHRoZSBjYXNlIHdoZXJlCi0gICAgICAgICAgICAjIHRoZSBwcmV2aW91cyBsaW5l
IGlzIGluZGVudGVkIDYgc3BhY2VzLCB3aGljaCBtYXkgaGFwcGVuIHdoZW4gdGhlCi0gICAgICAg
ICAgICAjIGluaXRpYWxpemVycyBvZiBhIGNvbnN0cnVjdG9yIGRvIG5vdCBmaXQgaW50byBhIDgw
IGNvbHVtbiBsaW5lLgotICAgICAgICAgICAgZXhjZXB0aW9uID0gRmFsc2UKLSAgICAgICAgICAg
IGlmIG1hdGNoKHInIHs2fVx3JywgcHJldmlvdXNfbGluZSk6ICAjIEluaXRpYWxpemVyIGxpc3Q/
Ci0gICAgICAgICAgICAgICAgIyBXZSBhcmUgbG9va2luZyBmb3IgdGhlIG9wZW5pbmcgY29sdW1u
IG9mIGluaXRpYWxpemVyIGxpc3QsIHdoaWNoCi0gICAgICAgICAgICAgICAgIyBzaG91bGQgYmUg
aW5kZW50ZWQgNCBzcGFjZXMgdG8gY2F1c2UgNiBzcGFjZSBpbmRlbnRhdGlvbiBhZnRlcndhcmRz
LgotICAgICAgICAgICAgICAgIHNlYXJjaF9wb3NpdGlvbiA9IGxpbmVfbnVtYmVyIC0gMgotICAg
ICAgICAgICAgICAgIHdoaWxlIChzZWFyY2hfcG9zaXRpb24gPj0gMAotICAgICAgICAgICAgICAg
ICAgICAgICBhbmQgbWF0Y2gocicgezZ9XHcnLCBlbGlkZWRbc2VhcmNoX3Bvc2l0aW9uXSkpOgot
ICAgICAgICAgICAgICAgICAgICBzZWFyY2hfcG9zaXRpb24gLT0gMQotICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbiA9IChzZWFyY2hfcG9zaXRpb24gPj0gMAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmQgZWxpZGVkW3NlYXJjaF9wb3NpdGlvbl1bOjVdID09ICcgICAgOicpCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgU2VhcmNoIGZvciB0aGUgZnVuY3Rpb24g
YXJndW1lbnRzIG9yIGFuIGluaXRpYWxpemVyIGxpc3QuICBXZSB1c2UgYQotICAgICAgICAgICAg
ICAgICMgc2ltcGxlIGhldXJpc3RpYyBoZXJlOiBJZiB0aGUgbGluZSBpcyBpbmRlbnRlZCA0IHNw
YWNlczsgYW5kIHdlIGhhdmUgYQotICAgICAgICAgICAgICAgICMgY2xvc2luZyBwYXJlbiwgd2l0
aG91dCB0aGUgb3BlbmluZyBwYXJlbiwgZm9sbG93ZWQgYnkgYW4gb3BlbmluZyBicmFjZQotICAg
ICAgICAgICAgICAgICMgb3IgY29sb24gKGZvciBpbml0aWFsaXplciBsaXN0cykgd2UgYXNzdW1l
IHRoYXQgaXQgaXMgdGhlIGxhc3QgbGluZSBvZgotICAgICAgICAgICAgICAgICMgYSBmdW5jdGlv
biBoZWFkZXIuICBJZiB3ZSBoYXZlIGEgY29sb24gaW5kZW50ZWQgNCBzcGFjZXMsIGl0IGlzIGFu
Ci0gICAgICAgICAgICAgICAgIyBpbml0aWFsaXplciBsaXN0LgotICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbiA9IChtYXRjaChyJyB7NH1cd1teXChdKlwpXHMqKGNvbnN0XHMqKT8oXHtccyokfDop
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNfbGluZSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgbWF0Y2gocicgezR9OicsIHByZXZpb3VzX2xp
bmUpKQotCi0gICAgICAgICAgICBpZiBub3QgZXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIGVy
cm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9ibGFua19saW5lJywgMiwKLSAgICAgICAgICAg
ICAgICAgICAgICAnQmxhbmsgbGluZSBhdCB0aGUgc3RhcnQgb2YgYSBjb2RlIGJsb2NrLiAgSXMg
dGhpcyBuZWVkZWQ/JykKLSAgICAgICAgIyBUaGlzIGRvZXNuJ3QgaWdub3JlIHdoaXRlc3BhY2Ug
YXQgdGhlIGVuZCBvZiBhIG5hbWVzcGFjZSBibG9jawotICAgICAgICAjIGJlY2F1c2UgdGhhdCBp
cyB0b28gaGFyZCB3aXRob3V0IHBhaXJpbmcgb3Blbi9jbG9zZSBicmFjZXM7Ci0gICAgICAgICMg
aG93ZXZlciwgYSBzcGVjaWFsIGV4Y2VwdGlvbiBpcyBtYWRlIGZvciBuYW1lc3BhY2UgY2xvc2lu
ZwotICAgICAgICAjIGJyYWNrZXRzIHdoaWNoIGhhdmUgYSBjb21tZW50IGNvbnRhaW5pbmcgIm5h
bWVzcGFjZSIuCi0gICAgICAgICMKLSAgICAgICAgIyBBbHNvLCBpZ25vcmUgYmxhbmsgbGluZXMg
YXQgdGhlIGVuZCBvZiBhIGJsb2NrIGluIGEgbG9uZyBpZi1lbHNlCi0gICAgICAgICMgY2hhaW4s
IGxpa2UgdGhpczoKLSAgICAgICAgIyAgIGlmIChjb25kaXRpb24xKSB7Ci0gICAgICAgICMgICAg
IC8vIFNvbWV0aGluZyBmb2xsb3dlZCBieSBhIGJsYW5rIGxpbmUKLSAgICAgICAgIwotICAgICAg
ICAjICAgfSBlbHNlIGlmIChjb25kaXRpb24yKSB7Ci0gICAgICAgICMgICAgIC8vIFNvbWV0aGlu
ZyBlbHNlCi0gICAgICAgICMgICB9Ci0gICAgICAgIGlmIGxpbmVfbnVtYmVyICsgMSA8IGNsZWFu
X2xpbmVzLm51bV9saW5lcygpOgotICAgICAgICAgICAgbmV4dF9saW5lID0gcmF3W2xpbmVfbnVt
YmVyICsgMV0KLSAgICAgICAgICAgIGlmIChuZXh0X2xpbmUKLSAgICAgICAgICAgICAgICBhbmQg
bWF0Y2gocidccyp9JywgbmV4dF9saW5lKQotICAgICAgICAgICAgICAgIGFuZCBuZXh0X2xpbmUu
ZmluZCgnbmFtZXNwYWNlJykgPT0gLTEKLSAgICAgICAgICAgICAgICBhbmQgbmV4dF9saW5lLmZp
bmQoJ30gZWxzZSAnKSA9PSAtMSk6Ci0gICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIs
ICd3aGl0ZXNwYWNlL2JsYW5rX2xpbmUnLCAzLAotICAgICAgICAgICAgICAgICAgICAgICdCbGFu
ayBsaW5lIGF0IHRoZSBlbmQgb2YgYSBjb2RlIGJsb2NrLiAgSXMgdGhpcyBuZWVkZWQ/JykKLQot
ICAgICMgTmV4dCwgd2UgY29tcGxhaW4gaWYgdGhlcmUncyBhIGNvbW1lbnQgdG9vIG5lYXIgdGhl
IHRleHQKLSAgICBjb21tZW50X3Bvc2l0aW9uID0gbGluZS5maW5kKCcvLycpCi0gICAgaWYgY29t
bWVudF9wb3NpdGlvbiAhPSAtMToKLSAgICAgICAgIyBDaGVjayBpZiB0aGUgLy8gbWF5IGJlIGlu
IHF1b3Rlcy4gIElmIHNvLCBpZ25vcmUgaXQKLSAgICAgICAgIyBDb21wYXJpc29ucyBtYWRlIGV4
cGxpY2l0IGZvciBjbGFyaXR5IC0tIHB5bGludDogZGlzYWJsZS1tc2c9QzY0MDMKLSAgICAgICAg
aWYgKGxpbmUuY291bnQoJyInLCAwLCBjb21tZW50X3Bvc2l0aW9uKSAtIGxpbmUuY291bnQoJ1xc
IicsIDAsIGNvbW1lbnRfcG9zaXRpb24pKSAlIDIgPT0gMDogICAjIG5vdCBpbiBxdW90ZXMKLSAg
ICAgICAgICAgICMgQWxsb3cgb25lIHNwYWNlIGJlZm9yZSBlbmQgb2YgbGluZSBjb21tZW50Lgot
ICAgICAgICAgICAgaWYgKG5vdCBtYXRjaChyJ15ccyokJywgbGluZVs6Y29tbWVudF9wb3NpdGlv
bl0pCi0gICAgICAgICAgICAgICAgYW5kIChjb21tZW50X3Bvc2l0aW9uID49IDEKLSAgICAgICAg
ICAgICAgICBhbmQgKChsaW5lW2NvbW1lbnRfcG9zaXRpb24gLSAxXSBub3QgaW4gc3RyaW5nLndo
aXRlc3BhY2UpCi0gICAgICAgICAgICAgICAgICAgICBvciAoY29tbWVudF9wb3NpdGlvbiA+PSAy
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxpbmVbY29tbWVudF9wb3NpdGlvbiAtIDJd
IGluIHN0cmluZy53aGl0ZXNwYWNlKSkpKToKLSAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251
bWJlciwgJ3doaXRlc3BhY2UvY29tbWVudHMnLCA1LAotICAgICAgICAgICAgICAgICAgICAgICdP
bmUgc3BhY2UgYmVmb3JlIGVuZCBvZiBsaW5lIGNvbW1lbnRzJykKLSAgICAgICAgICAgICMgVGhl
cmUgc2hvdWxkIGFsd2F5cyBiZSBhIHNwYWNlIGJldHdlZW4gdGhlIC8vIGFuZCB0aGUgY29tbWVu
dAotICAgICAgICAgICAgY29tbWVudGVuZCA9IGNvbW1lbnRfcG9zaXRpb24gKyAyCi0gICAgICAg
ICAgICBpZiBjb21tZW50ZW5kIDwgbGVuKGxpbmUpIGFuZCBub3QgbGluZVtjb21tZW50ZW5kXSA9
PSAnICc6Ci0gICAgICAgICAgICAgICAgIyBidXQgc29tZSBsaW5lcyBhcmUgZXhjZXB0aW9ucyAt
LSBlLmcuIGlmIHRoZXkncmUgYmlnCi0gICAgICAgICAgICAgICAgIyBjb21tZW50IGRlbGltaXRl
cnMgbGlrZToKLSAgICAgICAgICAgICAgICAjIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAgICMgb3IgdGhl
eSBiZWdpbiB3aXRoIG11bHRpcGxlIHNsYXNoZXMgZm9sbG93ZWQgYnkgYSBzcGFjZToKLSAgICAg
ICAgICAgICAgICAjIC8vLy8vLy8vIEhlYWRlciBjb21tZW50Ci0gICAgICAgICAgICAgICAgbWF0
Y2hlZCA9IChzZWFyY2gocidbPS8tXXs0LH1ccyokJywgbGluZVtjb21tZW50ZW5kOl0pCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBvciBzZWFyY2gocideLysgJywgbGluZVtjb21tZW50ZW5k
Ol0pKQotICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRjaGVkOgotICAgICAgICAgICAgICAgICAg
ICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvY29tbWVudHMnLCA0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAnU2hvdWxkIGhhdmUgYSBzcGFjZSBiZXR3ZWVuIC8vIGFuZCBjb21t
ZW50JykKLQotICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICAjIGdl
dCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MKLQotICAgICMgRG9uJ3QgdHJ5IHRvIGRvIHNw
YWNpbmcgY2hlY2tzIGZvciBvcGVyYXRvciBtZXRob2RzCi0gICAgbGluZSA9IHN1YihyJ29wZXJh
dG9yKD09fCE9fDx8PDx8PD18Pj18Pj58PilcKCcsICdvcGVyYXRvclwoJywgbGluZSkKLSAgICAj
IERvbid0IHRyeSB0byBkbyBzcGFjaW5nIGNoZWNrcyBmb3IgI2luY2x1ZGUgb3IgI2ltcG9ydCBz
dGF0ZW1lbnRzIGF0Ci0gICAgIyBtaW5pbXVtIGJlY2F1c2UgaXQgbWVzc2VzIHVwIGNoZWNrcyBm
b3Igc3BhY2luZyBhcm91bmQgLwotICAgIGlmIG1hdGNoKHInXHMqI1xzKig/OmluY2x1ZGV8aW1w
b3J0KScsIGxpbmUpOgotICAgICAgICByZXR1cm4KLSAgICBpZiBzZWFyY2gocidbXHcuXT1bXHcu
XScsIGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2Uvb3BlcmF0
b3JzJywgNCwKLSAgICAgICAgICAgICAgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA9JykKLQotICAg
ICMgRklYTUU6IEl0J3Mgbm90IG9rIHRvIGhhdmUgc3BhY2VzIGFyb3VuZCBiaW5hcnkgb3BlcmF0
b3JzIGxpa2UgLgotCi0gICAgIyBZb3Ugc2hvdWxkIGFsd2F5cyBoYXZlIHdoaXRlc3BhY2UgYXJv
dW5kIGJpbmFyeSBvcGVyYXRvcnMuCi0gICAgIyBBbGFzLCB3ZSBjYW4ndCB0ZXN0IDwgb3IgPiBi
ZWNhdXNlIHRoZXkncmUgbGVnaXRpbWF0ZWx5IHVzZWQgc2FucyBzcGFjZXMKLSAgICAjIChhLT5i
LCB2ZWN0b3I8aW50PiBhKS4gIFRoZSBvbmx5IHRpbWUgd2UgY2FuIHRlbGwgaXMgYSA8IHdpdGgg
bm8gPiwgYW5kCi0gICAgIyBvbmx5IGlmIGl0J3Mgbm90IHRlbXBsYXRlIHBhcmFtcyBsaXN0IHNw
aWxsaW5nIGludG8gdGhlIG5leHQgbGluZS4KLSAgICBtYXRjaGVkID0gc2VhcmNoKHInW148Pj0h
XHNdKD09fCE9fFwrPXwtPXxcKj18Lz18L3xcfD18Jj18PDw9fD4+PXw8PXw+PXxcfFx8fFx8fCYm
fD4+fDw8KVtePD49IVxzXScsIGxpbmUpCi0gICAgaWYgbm90IG1hdGNoZWQ6Ci0gICAgICAgICMg
Tm90ZSB0aGF0IHdoaWxlIGl0IHNlZW1zIHRoYXQgdGhlICc8W148XSonIHRlcm0gaW4gdGhlIGZv
bGxvd2luZwotICAgICAgICAjIHJlZ2V4cCBjb3VsZCBiZSBzaW1wbGlmaWVkIHRvICc8LionLCB3
aGljaCB3b3VsZCBpbmRlZWQgbWF0Y2gKLSAgICAgICAgIyB0aGUgc2FtZSBjbGFzcyBvZiBzdHJp
bmdzLCB0aGUgW148XSBtZWFucyB0aGF0IHNlYXJjaGluZyBmb3IgdGhlCi0gICAgICAgICMgcmVn
ZXhwIHRha2VzIGxpbmVhciByYXRoZXIgdGhhbiBxdWFkcmF0aWMgdGltZS4KLSAgICAgICAgaWYg
bm90IHNlYXJjaChyJzxbXjxdKixccyokJywgbGluZSk6ICAjIHRlbXBsYXRlIHBhcmFtcyBzcGls
bAotICAgICAgICAgICAgbWF0Y2hlZCA9IHNlYXJjaChyJ1tePD49IVxzXSg8KVtePD49IVxzXShb
Xj5dfC0+KSokJywgbGluZSkKLSAgICBpZiBtYXRjaGVkOgotICAgICAgICBlcnJvcihsaW5lX251
bWJlciwgJ3doaXRlc3BhY2Uvb3BlcmF0b3JzJywgMywKLSAgICAgICAgICAgICAgJ01pc3Npbmcg
c3BhY2VzIGFyb3VuZCAlcycgJSBtYXRjaGVkLmdyb3VwKDEpKQotCi0gICAgIyBUaGVyZSBzaG91
bGRuJ3QgYmUgc3BhY2UgYXJvdW5kIHVuYXJ5IG9wZXJhdG9ycwotICAgIG1hdGNoZWQgPSBzZWFy
Y2gocicoIVxzfH5cc3xbXHNdLS1bXHM7XXxbXHNdXCtcK1tccztdKScsIGxpbmUpCi0gICAgaWYg
bWF0Y2hlZDoKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL29wZXJhdG9y
cycsIDQsCi0gICAgICAgICAgICAgICdFeHRyYSBzcGFjZSBmb3Igb3BlcmF0b3IgJXMnICUgbWF0
Y2hlZC5ncm91cCgxKSkKLQotICAgICMgQSBwZXQgcGVldmUgb2YgbWluZTogbm8gc3BhY2VzIGFm
dGVyIGFuIGlmLCB3aGlsZSwgc3dpdGNoLCBvciBmb3IKLSAgICBtYXRjaGVkID0gc2VhcmNoKHIn
IChpZlwofGZvclwofGZvcmVhY2hcKHx3aGlsZVwofHN3aXRjaFwoKScsIGxpbmUpCi0gICAgaWYg
bWF0Y2hlZDoKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVucycs
IDUsCi0gICAgICAgICAgICAgICdNaXNzaW5nIHNwYWNlIGJlZm9yZSAoIGluICVzJyAlIG1hdGNo
ZWQuZ3JvdXAoMSkpCi0KLSAgICAjIEZvciBpZi9mb3IvZm9yZWFjaC93aGlsZS9zd2l0Y2gsIHRo
ZSBsZWZ0IGFuZCByaWdodCBwYXJlbnMgc2hvdWxkIGJlCi0gICAgIyBjb25zaXN0ZW50IGFib3V0
IGhvdyBtYW55IHNwYWNlcyBhcmUgaW5zaWRlIHRoZSBwYXJlbnMsIGFuZAotICAgICMgdGhlcmUg
c2hvdWxkIGVpdGhlciBiZSB6ZXJvIG9yIG9uZSBzcGFjZXMgaW5zaWRlIHRoZSBwYXJlbnMuCi0g
ICAgIyBXZSBkb24ndCB3YW50OiAiaWYgKCBmb28pIiBvciAiaWYgKCBmb28gICApIi4KLSAgICAj
IEV4Y2VwdGlvbjogImZvciAoIDsgZm9vOyBiYXIpIiBhbmQgImZvciAoZm9vOyBiYXI7ICkiIGFy
ZSBhbGxvd2VkLgotICAgIG1hdGNoZWQgPSBzZWFyY2gocidcYihpZnxmb3J8Zm9yZWFjaHx3aGls
ZXxzd2l0Y2gpXHMqXCgoWyBdKikoLikuKlteIF0rKFsgXSopXClccyp7XHMqJCcsCi0gICAgICAg
ICAgICAgICAgICAgICBsaW5lKQotICAgIGlmIG1hdGNoZWQ6Ci0gICAgICAgIGlmIGxlbihtYXRj
aGVkLmdyb3VwKDIpKSAhPSBsZW4obWF0Y2hlZC5ncm91cCg0KSk6Ci0gICAgICAgICAgICBpZiBu
b3QgKG1hdGNoZWQuZ3JvdXAoMykgPT0gJzsnCi0gICAgICAgICAgICAgICAgICAgIGFuZCBsZW4o
bWF0Y2hlZC5ncm91cCgyKSkgPT0gMSArIGxlbihtYXRjaGVkLmdyb3VwKDQpKQotICAgICAgICAg
ICAgICAgICAgICBvciBub3QgbWF0Y2hlZC5ncm91cCgyKSBhbmQgc2VhcmNoKHInXGJmb3Jccypc
KC4qOyBcKScsIGxpbmUpKToKLSAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3do
aXRlc3BhY2UvcGFyZW5zJywgNSwKLSAgICAgICAgICAgICAgICAgICAgICAnTWlzbWF0Y2hpbmcg
c3BhY2VzIGluc2lkZSAoKSBpbiAlcycgJSBtYXRjaGVkLmdyb3VwKDEpKQotICAgICAgICBpZiBu
b3QgbGVuKG1hdGNoZWQuZ3JvdXAoMikpIGluIFswLCAxXToKLSAgICAgICAgICAgIGVycm9yKGxp
bmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJlbnMnLCA1LAotICAgICAgICAgICAgICAgICAgJ1No
b3VsZCBoYXZlIHplcm8gb3Igb25lIHNwYWNlcyBpbnNpZGUgKCBhbmQgKSBpbiAlcycgJQotICAg
ICAgICAgICAgICAgICAgbWF0Y2hlZC5ncm91cCgxKSkKLQotICAgICMgWW91IHNob3VsZCBhbHdh
eXMgaGF2ZSBhIHNwYWNlIGFmdGVyIGEgY29tbWEgKGVpdGhlciBhcyBmbiBhcmcgb3Igb3BlcmF0
b3IpCi0gICAgaWYgc2VhcmNoKHInLFteXHNdJywgbGluZSk6Ci0gICAgICAgIGVycm9yKGxpbmVf
bnVtYmVyLCAnd2hpdGVzcGFjZS9jb21tYScsIDMsCi0gICAgICAgICAgICAgICdNaXNzaW5nIHNw
YWNlIGFmdGVyICwnKQotCi0gICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoJy5jcHAnKToKLSAgICAg
ICAgIyBDKysgc2hvdWxkIGhhdmUgdGhlICYgb3IgKiBiZXNpZGUgdGhlIHR5cGUgbm90IHRoZSB2
YXJpYWJsZSBuYW1lLgotICAgICAgICBtYXRjaGVkID0gbWF0Y2gocidccypcdysoPzwhXGJyZXR1
cm4pXHMrKD9QPHBvaW50ZXJfb3BlcmF0b3I+XCp8XCYpXHcrJywgbGluZSkKLSAgICAgICAgaWYg
bWF0Y2hlZDoKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9kZWNs
YXJhdGlvbicsIDMsCi0gICAgICAgICAgICAgICAgICAnRGVjbGFyYXRpb24gaGFzIHNwYWNlIGJl
dHdlZW4gdHlwZSBuYW1lIGFuZCAlcyBpbiAlcycgJSAobWF0Y2hlZC5ncm91cCgncG9pbnRlcl9v
cGVyYXRvcicpLCBtYXRjaGVkLmdyb3VwKDApLnN0cmlwKCkpKQotCi0gICAgZWxpZiBmaWxlbmFt
ZS5lbmRzd2l0aCgnLmMnKToKLSAgICAgICAgIyBDIFBvaW50ZXIgZGVjbGFyYXRpb24gc2hvdWxk
IGhhdmUgdGhlICogYmVzaWRlIHRoZSB2YXJpYWJsZSBub3QgdGhlIHR5cGUgbmFtZS4KLSAgICAg
ICAgbWF0Y2hlZCA9IHNlYXJjaChyJ15ccypcdytcKlxzK1x3KycsIGxpbmUpCi0gICAgICAgIGlm
IG1hdGNoZWQ6Ci0gICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvZGVj
bGFyYXRpb24nLCAzLAotICAgICAgICAgICAgICAgICAgJ0RlY2xhcmF0aW9uIGhhcyBzcGFjZSBi
ZXR3ZWVuICogYW5kIHZhcmlhYmxlIG5hbWUgaW4gJXMnICUgbWF0Y2hlZC5ncm91cCgwKS5zdHJp
cCgpKQotCi0gICAgIyBOZXh0IHdlIHdpbGwgbG9vayBmb3IgaXNzdWVzIHdpdGggZnVuY3Rpb24g
Y2FsbHMuCi0gICAgY2hlY2tfc3BhY2luZ19mb3JfZnVuY3Rpb25fY2FsbChmaWxlbmFtZSwgbGlu
ZSwgbGluZV9udW1iZXIsIGVycm9yKQotCi0gICAgIyBFeGNlcHQgYWZ0ZXIgYW4gb3BlbmluZyBw
YXJlbiwgeW91IHNob3VsZCBoYXZlIHNwYWNlcyBiZWZvcmUgeW91ciBicmFjZXMuCi0gICAgIyBB
bmQgc2luY2UgeW91IHNob3VsZCBuZXZlciBoYXZlIGJyYWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9m
IGEgbGluZSwgdGhpcyBpcwotICAgICMgYW4gZWFzeSB0ZXN0LgotICAgIGlmIHNlYXJjaChyJ1te
ICh7XXsnLCBsaW5lKToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2Jy
YWNlcycsIDUsCi0gICAgICAgICAgICAgICdNaXNzaW5nIHNwYWNlIGJlZm9yZSB7JykKLQotICAg
ICMgTWFrZSBzdXJlICd9IGVsc2UgeycgaGFzIHNwYWNlcy4KLSAgICBpZiBzZWFyY2gocid9ZWxz
ZScsIGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvYnJhY2Vz
JywgNSwKLSAgICAgICAgICAgICAgJ01pc3Npbmcgc3BhY2UgYmVmb3JlIGVsc2UnKQotCi0gICAg
IyBZb3Ugc2hvdWxkbid0IGhhdmUgc3BhY2VzIGJlZm9yZSB5b3VyIGJyYWNrZXRzLCBleGNlcHQg
bWF5YmUgYWZ0ZXIKLSAgICAjICdkZWxldGUgW10nIG9yICduZXcgY2hhciAqIFtdJy4KLSAgICBp
ZiBzZWFyY2gocidcd1xzK1xbJywgbGluZSkgYW5kIG5vdCBzZWFyY2gocidkZWxldGVccytcWycs
IGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvYnJhY2VzJywg
NSwKLSAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSBbJykKLQotICAgICMgWW91IHNo
b3VsZG4ndCBoYXZlIGEgc3BhY2UgYmVmb3JlIGEgc2VtaWNvbG9uIGF0IHRoZSBlbmQgb2YgdGhl
IGxpbmUuCi0gICAgIyBUaGVyZSdzIGEgc3BlY2lhbCBjYXNlIGZvciAiZm9yIiBzaW5jZSB0aGUg
c3R5bGUgZ3VpZGUgYWxsb3dzIHNwYWNlIGJlZm9yZQotICAgICMgdGhlIHNlbWljb2xvbiB0aGVy
ZS4KLSAgICBpZiBzZWFyY2gocic6XHMqO1xzKiQnLCBsaW5lKToKLSAgICAgICAgZXJyb3IobGlu
ZV9udW1iZXIsICd3aGl0ZXNwYWNlL3NlbWljb2xvbicsIDUsCi0gICAgICAgICAgICAgICdTZW1p
Y29sb24gZGVmaW5pbmcgZW1wdHkgc3RhdGVtZW50LiBVc2UgeyB9IGluc3RlYWQuJykKLSAgICBl
bGlmIHNlYXJjaChyJ15ccyo7XHMqJCcsIGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251bWJl
ciwgJ3doaXRlc3BhY2Uvc2VtaWNvbG9uJywgNSwKLSAgICAgICAgICAgICAgJ0xpbmUgY29udGFp
bnMgb25seSBzZW1pY29sb24uIElmIHRoaXMgc2hvdWxkIGJlIGFuIGVtcHR5IHN0YXRlbWVudCwg
JwotICAgICAgICAgICAgICAndXNlIHsgfSBpbnN0ZWFkLicpCi0gICAgZWxpZiAoc2VhcmNoKHIn
XHMrO1xzKiQnLCBsaW5lKSBhbmQgbm90IHNlYXJjaChyJ1xiZm9yXGInLCBsaW5lKSk6Ci0gICAg
ICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9zZW1pY29sb24nLCA1LAotICAgICAg
ICAgICAgICAnRXh0cmEgc3BhY2UgYmVmb3JlIGxhc3Qgc2VtaWNvbG9uLiBJZiB0aGlzIHNob3Vs
ZCBiZSBhbiBlbXB0eSAnCi0gICAgICAgICAgICAgICdzdGF0ZW1lbnQsIHVzZSB7IH0gaW5zdGVh
ZC4nKQotICAgIGVsaWYgKHNlYXJjaChyJ1xiKGZvcnx3aGlsZSlccypcKC4qXClccyo7XHMqJCcs
IGxpbmUpCi0gICAgICAgICAgYW5kIGxpbmUuY291bnQoJygnKSA9PSBsaW5lLmNvdW50KCcpJykK
LSAgICAgICAgICAjIEFsbG93IGRvIHt9IHdoaWxlKCk7Ci0gICAgICAgICAgYW5kIG5vdCBzZWFy
Y2gocid9XHMqd2hpbGUnLCBsaW5lKSk6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hp
dGVzcGFjZS9zZW1pY29sb24nLCA1LAotICAgICAgICAgICAgICAnU2VtaWNvbG9uIGRlZmluaW5n
IGVtcHR5IHN0YXRlbWVudCBmb3IgdGhpcyBsb29wLiBVc2UgeyB9IGluc3RlYWQuJykKLQotCi1k
ZWYgZ2V0X3ByZXZpb3VzX25vbl9ibGFua19saW5lKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlcik6
Ci0gICAgIiIiUmV0dXJuIHRoZSBtb3N0IHJlY2VudCBub24tYmxhbmsgbGluZSBhbmQgaXRzIGxp
bmUgbnVtYmVyLgotCi0gICAgQXJnczoKLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGlu
ZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZSBjb250ZW50cy4KLSAgICAgIGxpbmVfbnVt
YmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotCi0gICAgUmV0dXJuczoKLSAg
ICAgIEEgdHVwbGUgd2l0aCB0d28gZWxlbWVudHMuICBUaGUgZmlyc3QgZWxlbWVudCBpcyB0aGUg
Y29udGVudHMgb2YgdGhlIGxhc3QKLSAgICAgIG5vbi1ibGFuayBsaW5lIGJlZm9yZSB0aGUgY3Vy
cmVudCBsaW5lLCBvciB0aGUgZW1wdHkgc3RyaW5nIGlmIHRoaXMgaXMgdGhlCi0gICAgICBmaXJz
dCBub24tYmxhbmsgbGluZS4gIFRoZSBzZWNvbmQgaXMgdGhlIGxpbmUgbnVtYmVyIG9mIHRoYXQg
bGluZSwgb3IgLTEKLSAgICAgIGlmIHRoaXMgaXMgdGhlIGZpcnN0IG5vbi1ibGFuayBsaW5lLgot
ICAgICIiIgotCi0gICAgcHJldmlvdXNfbGluZV9udW1iZXIgPSBsaW5lX251bWJlciAtIDEKLSAg
ICB3aGlsZSBwcmV2aW91c19saW5lX251bWJlciA+PSAwOgotICAgICAgICBwcmV2aW91c19saW5l
ID0gY2xlYW5fbGluZXMuZWxpZGVkW3ByZXZpb3VzX2xpbmVfbnVtYmVyXQotICAgICAgICBpZiBu
b3QgaXNfYmxhbmtfbGluZShwcmV2aW91c19saW5lKTogICAgICMgaWYgbm90IGEgYmxhbmsgbGlu
ZS4uLgotICAgICAgICAgICAgcmV0dXJuIChwcmV2aW91c19saW5lLCBwcmV2aW91c19saW5lX251
bWJlcikKLSAgICAgICAgcHJldmlvdXNfbGluZV9udW1iZXIgLT0gMQotICAgIHJldHVybiAoJycs
IC0xKQotCi0KLWRlZiBjaGVja19uYW1lc3BhY2VfaW5kZW50YXRpb24oZmlsZW5hbWUsIGNsZWFu
X2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9leHRlbnNpb24sIGZpbGVfc3RhdGUsIGVycm9yKToK
LSAgICAiIiJMb29rcyBmb3IgaW5kZW50YXRpb24gZXJyb3JzIGluc2lkZSBvZiBuYW1lc3BhY2Vz
LgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBm
aWxlLgotICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWlu
aW5nIHRoZSBmaWxlLgotICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUg
dG8gY2hlY2suCi0gICAgICBmaWxlX2V4dGVuc2lvbjogVGhlIGV4dGVuc2lvbiAoZG90IG5vdCBp
bmNsdWRlZCkgb2YgdGhlIGZpbGUuCi0gICAgICBmaWxlX3N0YXRlOiBBIF9GaWxlU3RhdGUgaW5z
dGFuY2Ugd2hpY2ggbWFpbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0Ci0gICAgICAgICAgICAgICAg
ICB0aGUgc3RhdGUgb2YgdGhpbmdzIGluIHRoZSBmaWxlLgotICAgICAgZXJyb3I6IFRoZSBmdW5j
dGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLQotICAgIGxpbmUg
PSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICMgR2V0IHJpZCBvZiBjb21tZW50cyBh
bmQgc3RyaW5ncy4KLQotICAgIG5hbWVzcGFjZV9tYXRjaCA9IG1hdGNoKHInKD9QPG5hbWVzcGFj
ZV9pbmRlbnRhdGlvbj5ccyopbmFtZXNwYWNlXHMrXFMrXHMqe1xzKiQnLCBsaW5lKQotICAgIGlm
IG5vdCBuYW1lc3BhY2VfbWF0Y2g6Ci0gICAgICAgIHJldHVybgotCi0gICAgY3VycmVudF9pbmRl
bnRhdGlvbl9sZXZlbCA9IGxlbihuYW1lc3BhY2VfbWF0Y2guZ3JvdXAoJ25hbWVzcGFjZV9pbmRl
bnRhdGlvbicpKQotICAgIGlmIGN1cnJlbnRfaW5kZW50YXRpb25fbGV2ZWwgPiAwOgotICAgICAg
ICAjIERvbid0IHdhcm4gYWJvdXQgYW4gaW5kZW50ZWQgbmFtZXNwYWNlIGlmIHdlIGFscmVhZHkg
d2FybmVkIGFib3V0IGluZGVudGVkIGNvZGUuCi0gICAgICAgIGlmIG5vdCBmaWxlX3N0YXRlLmRp
ZF9pbnNpZGVfbmFtZXNwYWNlX2luZGVudF93YXJuaW5nKCk6Ci0gICAgICAgICAgICBlcnJvcihs
aW5lX251bWJlciwgJ3doaXRlc3BhY2UvaW5kZW50JywgNCwKLSAgICAgICAgICAgICAgICAgICdu
YW1lc3BhY2Ugc2hvdWxkIG5ldmVyIGJlIGluZGVudGVkLicpCi0gICAgICAgIHJldHVybgotICAg
IGxvb2tpbmdfZm9yX3NlbWljb2xvbiA9IEZhbHNlOwotICAgIGxpbmVfb2Zmc2V0ID0gMAotICAg
IGluX3ByZXByb2Nlc3Nvcl9kaXJlY3RpdmUgPSBGYWxzZTsKLSAgICBmb3IgY3VycmVudF9saW5l
IGluIGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlciArIDE6XToKLSAgICAgICAgbGluZV9v
ZmZzZXQgKz0gMQotICAgICAgICBpZiBub3QgY3VycmVudF9saW5lLnN0cmlwKCk6Ci0gICAgICAg
ICAgICBjb250aW51ZQotICAgICAgICBpZiBub3QgY3VycmVudF9pbmRlbnRhdGlvbl9sZXZlbDoK
LSAgICAgICAgICAgIGlmIG5vdCAoaW5fcHJlcHJvY2Vzc29yX2RpcmVjdGl2ZSBvciBsb29raW5n
X2Zvcl9zZW1pY29sb24pOgotICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRjaChyJ1xTJywgY3Vy
cmVudF9saW5lKSBhbmQgbm90IGZpbGVfc3RhdGUuZGlkX2luc2lkZV9uYW1lc3BhY2VfaW5kZW50
X3dhcm5pbmcoKToKLSAgICAgICAgICAgICAgICAgICAgZmlsZV9zdGF0ZS5zZXRfZGlkX2luc2lk
ZV9uYW1lc3BhY2VfaW5kZW50X3dhcm5pbmcoKQotICAgICAgICAgICAgICAgICAgICBlcnJvcihs
aW5lX251bWJlciArIGxpbmVfb2Zmc2V0LCAnd2hpdGVzcGFjZS9pbmRlbnQnLCA0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAnQ29kZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIG5vdCBi
ZSBpbmRlbnRlZC4nKQotICAgICAgICAgICAgaWYgaW5fcHJlcHJvY2Vzc29yX2RpcmVjdGl2ZSBv
ciAoY3VycmVudF9saW5lLnN0cmlwKClbMF0gPT0gJyMnKTogIyBUaGlzIHRha2VzIGNhcmUgb2Yg
cHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBzeW50YXguCi0gICAgICAgICAgICAgICAgaW5fcHJlcHJv
Y2Vzc29yX2RpcmVjdGl2ZSA9IGN1cnJlbnRfbGluZVstMV0gPT0gJ1xcJwotICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICBsb29raW5nX2Zvcl9zZW1pY29sb24gPSAoKGN1cnJlbnRf
bGluZS5maW5kKCc7JykgPT0gLTEpIGFuZCAoY3VycmVudF9saW5lLnN0cmlwKClbLTFdICE9ICd9
JykpIG9yIChjdXJyZW50X2xpbmVbLTFdID09ICdcXCcpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBsb29raW5nX2Zvcl9zZW1pY29sb24gPSBGYWxzZTsgIyBJZiB3ZSBoYXZlIGEgYnJhY2Ug
d2UgbWF5IG5vdCBuZWVkIGEgc2VtaWNvbG9uLgotICAgICAgICBjdXJyZW50X2luZGVudGF0aW9u
X2xldmVsICs9IGN1cnJlbnRfbGluZS5jb3VudCgneycpIC0gY3VycmVudF9saW5lLmNvdW50KCd9
JykKLSAgICAgICAgaWYgY3VycmVudF9pbmRlbnRhdGlvbl9sZXZlbCA8IDA6Ci0gICAgICAgICAg
ICBicmVhazsKLQotZGVmIGNoZWNrX3VzaW5nX3N0ZChmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxp
bmVfbnVtYmVyLCBlcnJvcik6Ci0gICAgIiIiTG9va3MgZm9yICd1c2luZyBzdGQ6OmZvbzsnIHN0
YXRlbWVudHMgd2hpY2ggc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggJ3VzaW5nIG5hbWVzcGFjZSBz
dGQ7Jy4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJl
bnQgZmlsZS4KLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29u
dGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBs
aW5lIHRvIGNoZWNrLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55
IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLQotICAgICMgVGhpcyBjaGVjayBkb2Vzbid0IGFwcGx5
IHRvIEMgb3IgT2JqZWN0aXZlLUMgaW1wbGVtZW50YXRpb24gZmlsZXMuCi0gICAgaWYgZmlsZW5h
bWUuZW5kc3dpdGgoJy5jJykgb3IgZmlsZW5hbWUuZW5kc3dpdGgoJy5tJyk6Ci0gICAgICAgIHJl
dHVybgotCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0gIyBHZXQg
cmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzLgotCi0gICAgdXNpbmdfc3RkX21hdGNoID0gbWF0
Y2gocidccyp1c2luZ1xzK3N0ZDo6KD9QPG1ldGhvZF9uYW1lPlxTKylccyo7XHMqJCcsIGxpbmUp
Ci0gICAgaWYgbm90IHVzaW5nX3N0ZF9tYXRjaDoKLSAgICAgICAgcmV0dXJuCi0KLSAgICBtZXRo
b2RfbmFtZSA9IHVzaW5nX3N0ZF9tYXRjaC5ncm91cCgnbWV0aG9kX25hbWUnKQotICAgIGVycm9y
KGxpbmVfbnVtYmVyLCAnYnVpbGQvdXNpbmdfc3RkJywgNCwKLSAgICAgICAgICAiVXNlICd1c2lu
ZyBuYW1lc3BhY2Ugc3RkOycgaW5zdGVhZCBvZiAndXNpbmcgc3RkOjolczsnLiIgJSBtZXRob2Rf
bmFtZSkKLQotCi1kZWYgY2hlY2tfbWF4X21pbl9tYWNyb3MoZmlsZW5hbWUsIGNsZWFuX2xpbmVz
LCBsaW5lX251bWJlciwgZXJyb3IpOgotICAgICIiIkxvb2tzIHVzZSBvZiBNQVgoKSBhbmQgTUlO
KCkgbWFjcm9zIHRoYXQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggc3RkOjptYXgoKSBhbmQgc3Rk
OjptaW4oKS4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1
cnJlbnQgZmlsZS4KLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2Ug
Y29udGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRo
ZSBsaW5lIHRvIGNoZWNrLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGgg
YW55IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLQotICAgICMgVGhpcyBjaGVjayBkb2Vzbid0IGFw
cGx5IHRvIEMgb3IgT2JqZWN0aXZlLUMgaW1wbGVtZW50YXRpb24gZmlsZXMuCi0gICAgaWYgZmls
ZW5hbWUuZW5kc3dpdGgoJy5jJykgb3IgZmlsZW5hbWUuZW5kc3dpdGgoJy5tJyk6Ci0gICAgICAg
IHJldHVybgotCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0gIyBH
ZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzLgotCi0gICAgbWF4X21pbl9tYWNyb3Nfc2Vh
cmNoID0gc2VhcmNoKHInXGIoP1A8bWF4X21pbl9tYWNybz4oTUFYfE1JTikpXHMqXCgnLCBsaW5l
KQotICAgIGlmIG5vdCBtYXhfbWluX21hY3Jvc19zZWFyY2g6Ci0gICAgICAgIHJldHVybgotCi0g
ICAgbWF4X21pbl9tYWNybyA9IG1heF9taW5fbWFjcm9zX3NlYXJjaC5ncm91cCgnbWF4X21pbl9t
YWNybycpCi0gICAgbWF4X21pbl9tYWNyb19sb3dlciA9IG1heF9taW5fbWFjcm8ubG93ZXIoKQot
ICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS9tYXhfbWluX21hY3JvcycsIDQsCi0gICAg
ICAgICAgJ1VzZSBzdGQ6OiVzKCkgb3Igc3RkOjolczx0eXBlPigpIGluc3RlYWQgb2YgdGhlICVz
KCkgbWFjcm8uJwotICAgICAgICAgICUgKG1heF9taW5fbWFjcm9fbG93ZXIsIG1heF9taW5fbWFj
cm9fbG93ZXIsIG1heF9taW5fbWFjcm8pKQotCi0KLWRlZiBjaGVja19zd2l0Y2hfaW5kZW50YXRp
b24oZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgotICAgICIiIkxv
b2tzIGZvciBpbmRlbnRhdGlvbiBlcnJvcnMgaW5zaWRlIG9mIHN3aXRjaCBzdGF0ZW1lbnRzLgot
Ci0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxl
LgotICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5n
IHRoZSBmaWxlLgotICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8g
Y2hlY2suCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3Jz
IGZvdW5kLgotICAgICIiIgotCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251
bWJlcl0gIyBHZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzLgotCi0gICAgc3dpdGNoX21h
dGNoID0gbWF0Y2gocicoP1A8c3dpdGNoX2luZGVudGF0aW9uPlxzKilzd2l0Y2hccypcKC4rXClc
cyp7XHMqJCcsIGxpbmUpCi0gICAgaWYgbm90IHN3aXRjaF9tYXRjaDoKLSAgICAgICAgcmV0dXJu
Ci0KLSAgICBzd2l0Y2hfaW5kZW50YXRpb24gPSBzd2l0Y2hfbWF0Y2guZ3JvdXAoJ3N3aXRjaF9p
bmRlbnRhdGlvbicpCi0gICAgaW5uZXJfaW5kZW50YXRpb24gPSBzd2l0Y2hfaW5kZW50YXRpb24g
KyAnICcgKiA0Ci0gICAgbGluZV9vZmZzZXQgPSAwCi0gICAgZW5jb3VudGVyZWRfbmVzdGVkX3N3
aXRjaCA9IEZhbHNlCi0KLSAgICBmb3IgY3VycmVudF9saW5lIGluIGNsZWFuX2xpbmVzLmVsaWRl
ZFtsaW5lX251bWJlciArIDE6XToKLSAgICAgICAgbGluZV9vZmZzZXQgKz0gMQotCi0gICAgICAg
ICMgU2tpcCBub3Qgb25seSBlbXB0eSBsaW5lcyBidXQgYWxzbyB0aG9zZSB3aXRoIHByZXByb2Nl
c3NvciBkaXJlY3RpdmVzLgotICAgICAgICBpZiBjdXJyZW50X2xpbmUuc3RyaXAoKSA9PSAnJyBv
ciBjdXJyZW50X2xpbmUuc3RhcnRzd2l0aCgnIycpOgotICAgICAgICAgICAgY29udGludWUKLQot
ICAgICAgICBpZiBtYXRjaChyJ1xzKnN3aXRjaFxzKlwoLitcKVxzKntccyokJywgY3VycmVudF9s
aW5lKToKLSAgICAgICAgICAgICMgQ29tcGxleGl0eSBhbGFybSAtIGFub3RoZXIgc3dpdGNoIHN0
YXRlbWVudCBuZXN0ZWQgaW5zaWRlIHRoZSBvbmUKLSAgICAgICAgICAgICMgdGhhdCB3ZSdyZSBj
dXJyZW50bHkgdGVzdGluZy4gV2UnbGwgbmVlZCB0byB0cmFjayB0aGUgZXh0ZW50IG9mCi0gICAg
ICAgICAgICAjIHRoYXQgaW5uZXIgc3dpdGNoIGlmIHRoZSB1cGNvbWluZyBsYWJlbCB0ZXN0cyBh
cmUgc3RpbGwgc3VwcG9zZWQKLSAgICAgICAgICAgICMgdG8gd29yayBjb3JyZWN0bHkuIExldCdz
IG5vdCBkbyB0aGF0OyBpbnN0ZWFkLCB3ZSdsbCBmaW5pc2gKLSAgICAgICAgICAgICMgY2hlY2tp
bmcgdGhpcyBsaW5lLCBhbmQgdGhlbiBsZWF2ZSBpdCBsaWtlIHRoYXQuIEFzc3VtaW5nIHRoZQot
ICAgICAgICAgICAgIyBpbmRlbnRhdGlvbiBpcyBkb25lIGNvbnNpc3RlbnRseSAoZXZlbiBpZiBp
bmNvcnJlY3RseSksIHRoaXMgd2lsbAotICAgICAgICAgICAgIyBzdGlsbCBjYXRjaCBhbGwgaW5k
ZW50YXRpb24gaXNzdWVzIGluIHByYWN0aWNlLgotICAgICAgICAgICAgZW5jb3VudGVyZWRfbmVz
dGVkX3N3aXRjaCA9IFRydWUKLQotICAgICAgICBjdXJyZW50X2luZGVudGF0aW9uX21hdGNoID0g
bWF0Y2gocicoP1A8aW5kZW50YXRpb24+XHMqKSg/UDxyZW1haW5pbmdfbGluZT4uKikkJywgY3Vy
cmVudF9saW5lKTsKLSAgICAgICAgY3VycmVudF9pbmRlbnRhdGlvbiA9IGN1cnJlbnRfaW5kZW50
YXRpb25fbWF0Y2guZ3JvdXAoJ2luZGVudGF0aW9uJykKLSAgICAgICAgcmVtYWluaW5nX2xpbmUg
PSBjdXJyZW50X2luZGVudGF0aW9uX21hdGNoLmdyb3VwKCdyZW1haW5pbmdfbGluZScpCi0KLSAg
ICAgICAgIyBFbmQgdGhlIGNoZWNrIGF0IHRoZSBlbmQgb2YgdGhlIHN3aXRjaCBzdGF0ZW1lbnQu
Ci0gICAgICAgIGlmIHJlbWFpbmluZ19saW5lLnN0YXJ0c3dpdGgoJ30nKSBhbmQgY3VycmVudF9p
bmRlbnRhdGlvbiA9PSBzd2l0Y2hfaW5kZW50YXRpb246Ci0gICAgICAgICAgICBicmVhawotICAg
ICAgICAjIENhc2UgYW5kIGRlZmF1bHQgYnJhbmNoZXMgc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4g
VGhlIHJlZ2V4cCBhbHNvCi0gICAgICAgICMgY2F0Y2hlcyBzaW5nbGUtbGluZSBjYXNlcyBsaWtl
ICJkZWZhdWx0OiBicmVhazsiIGJ1dCBkb2VzIG5vdCB0cmlnZ2VyCi0gICAgICAgICMgb24gc3R1
ZmYgbGlrZSAiRG9jdW1lbnQ6OkZvbygpOyIuCi0gICAgICAgIGVsaWYgbWF0Y2gocicoZGVmYXVs
dHxjYXNlXHMrLiopXHMqOihbXjpdLiopPyQnLCByZW1haW5pbmdfbGluZSk6Ci0gICAgICAgICAg
ICBpZiBjdXJyZW50X2luZGVudGF0aW9uICE9IHN3aXRjaF9pbmRlbnRhdGlvbjoKLSAgICAgICAg
ICAgICAgICBlcnJvcihsaW5lX251bWJlciArIGxpbmVfb2Zmc2V0LCAnd2hpdGVzcGFjZS9pbmRl
bnQnLCA0LAotICAgICAgICAgICAgICAgICAgICAgICdBIGNhc2UgbGFiZWwgc2hvdWxkIG5vdCBi
ZSBpbmRlbnRlZCwgYnV0IGxpbmUgdXAgd2l0aCBpdHMgc3dpdGNoIHN0YXRlbWVudC4nKQotICAg
ICAgICAgICAgICAgICMgRG9uJ3QgdGhyb3cgYW4gZXJyb3IgZm9yIG11bHRpcGxlIGJhZGx5IGlu
ZGVudGVkIGxhYmVscywKLSAgICAgICAgICAgICAgICAjIG9uZSBzaG91bGQgYmUgZW5vdWdoIHRv
IGZpZ3VyZSBvdXQgdGhlIHByb2JsZW0uCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAg
IyBXZSBpZ25vcmUgZ290byBsYWJlbHMgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIGEgbGluZS4K
LSAgICAgICAgZWxpZiBtYXRjaChyJ1x3K1xzKjpccyokJywgcmVtYWluaW5nX2xpbmUpOgotICAg
ICAgICAgICAgY29udGludWUKLSAgICAgICAgIyBJdCdzIG5vdCBhIGdvdG8gbGFiZWwsIHNvIGNo
ZWNrIGlmIGl0J3MgaW5kZW50ZWQgYXQgbGVhc3QgYXMgZmFyIGFzCi0gICAgICAgICMgdGhlIHN3
aXRjaCBzdGF0ZW1lbnQgcGx1cyBvbmUgbW9yZSBsZXZlbCBvZiBpbmRlbnRhdGlvbi4KLSAgICAg
ICAgZWxpZiBub3QgY3VycmVudF9pbmRlbnRhdGlvbi5zdGFydHN3aXRoKGlubmVyX2luZGVudGF0
aW9uKToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyICsgbGluZV9vZmZzZXQsICd3aGl0
ZXNwYWNlL2luZGVudCcsIDQsCi0gICAgICAgICAgICAgICAgICAnTm9uLWxhYmVsIGNvZGUgaW5z
aWRlIHN3aXRjaCBzdGF0ZW1lbnRzIHNob3VsZCBiZSBpbmRlbnRlZC4nKQotICAgICAgICAgICAg
IyBEb24ndCB0aHJvdyBhbiBlcnJvciBmb3IgbXVsdGlwbGUgYmFkbHkgaW5kZW50ZWQgc3RhdGVt
ZW50cywKLSAgICAgICAgICAgICMgb25lIHNob3VsZCBiZSBlbm91Z2ggdG8gZmlndXJlIG91dCB0
aGUgcHJvYmxlbS4KLSAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgaWYgZW5jb3VudGVyZWRf
bmVzdGVkX3N3aXRjaDoKLSAgICAgICAgICAgIGJyZWFrCi0KLQotZGVmIGNoZWNrX2JyYWNlcyhm
aWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6Ci0gICAgIiIiTG9va3Mg
Zm9yIG1pc3BsYWNlZCBicmFjZXMgKGUuZy4gYXQgdGhlIGVuZCBvZiBsaW5lKS4KLQotICAgIEFy
Z3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KLSAgICAg
IGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmls
ZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgot
ICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4K
LSAgICAiIiIKLQotICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICMg
R2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncy4KLQotICAgIGlmIG1hdGNoKHInXHMqe1xz
KiQnLCBsaW5lKToKLSAgICAgICAgIyBXZSBhbGxvdyBhbiBvcGVuIGJyYWNlIHRvIHN0YXJ0IGEg
bGluZSBpbiB0aGUgY2FzZSB3aGVyZSBzb21lb25lCi0gICAgICAgICMgaXMgdXNpbmcgYnJhY2Vz
IGZvciBmdW5jdGlvbiBkZWZpbml0aW9uIG9yIGluIGEgYmxvY2sgdG8KLSAgICAgICAgIyBleHBs
aWNpdGx5IGNyZWF0ZSBhIG5ldyBzY29wZSwgd2hpY2ggaXMgY29tbW9ubHkgdXNlZCB0byBjb250
cm9sCi0gICAgICAgICMgdGhlIGxpZmV0aW1lIG9mIHN0YWNrLWFsbG9jYXRlZCB2YXJpYWJsZXMu
ICBXZSBkb24ndCBkZXRlY3QgdGhpcwotICAgICAgICAjIHBlcmZlY3RseTogd2UganVzdCBkb24n
dCBjb21wbGFpbiBpZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZQotICAgICAgICAjIGNoYXJhY3Rl
ciBvbiB0aGUgcHJldmlvdXMgbm9uLWJsYW5rIGxpbmUgaXMgJzsnLCAnOicsICd7JywgJ30nLAot
ICAgICAgICAjICcpJywgb3IgJykgY29uc3QnIGFuZCBkb2Vzbid0IGJlZ2luIHdpdGggJ2lmfGZv
cnx3aGlsZXxzd2l0Y2h8ZWxzZScuCi0gICAgICAgICMgV2UgYWxzbyBhbGxvdyAnIycgZm9yICNl
bmRpZiBhbmQgJz0nIGZvciBhcnJheSBpbml0aWFsaXphdGlvbi4KLSAgICAgICAgcHJldmlvdXNf
bGluZSA9IGdldF9wcmV2aW91c19ub25fYmxhbmtfbGluZShjbGVhbl9saW5lcywgbGluZV9udW1i
ZXIpWzBdCi0gICAgICAgIGlmICgobm90IHNlYXJjaChyJ1s7On17KT1dXHMqJHxcKVxzKmNvbnN0
XHMqJCcsIHByZXZpb3VzX2xpbmUpCi0gICAgICAgICAgICAgb3Igc2VhcmNoKHInXGIoaWZ8Zm9y
fGZvcmVhY2h8d2hpbGV8c3dpdGNofGVsc2UpXGInLCBwcmV2aW91c19saW5lKSkKLSAgICAgICAg
ICAgIGFuZCBwcmV2aW91c19saW5lLmZpbmQoJyMnKSA8IDApOgotICAgICAgICAgICAgZXJyb3Io
bGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2JyYWNlcycsIDQsCi0gICAgICAgICAgICAgICAgICAn
VGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5lJykKLSAgICBl
bGlmIChzZWFyY2gocidcKVxzKihjb25zdFxzKik/e1xzKiQnLCBsaW5lKQotICAgICAgICAgIGFu
ZCBsaW5lLmNvdW50KCcoJykgPT0gbGluZS5jb3VudCgnKScpCi0gICAgICAgICAgYW5kIG5vdCBz
ZWFyY2gocidcYihpZnxmb3J8Zm9yZWFjaHx3aGlsZXxzd2l0Y2gpXGInLCBsaW5lKQotICAgICAg
ICAgIGFuZCBub3QgbWF0Y2gocidccytbQS1aX11bQS1aXzAtOV0rXGInLCBsaW5lKSk6Ci0gICAg
ICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9icmFjZXMnLCA0LAotICAgICAgICAg
ICAgICAnUGxhY2UgYnJhY2Ugb24gaXRzIG93biBsaW5lIGZvciBmdW5jdGlvbiBkZWZpbml0aW9u
cy4nKQotCi0gICAgaWYgKG1hdGNoKHInXHMqfVxzKihlbHNlXHMqKHtccyopPyk/JCcsIGxpbmUp
IGFuZCBsaW5lX251bWJlciA+IDEpOgotICAgICAgICAjIFdlIGNoZWNrIGlmIGEgY2xvc2VkIGJy
YWNlIGhhcyBzdGFydGVkIGEgbGluZSB0byBzZWUgaWYgYQotICAgICAgICAjIG9uZSBsaW5lIGNv
bnRyb2wgc3RhdGVtZW50IHdhcyBwcmV2aW91cy4KLSAgICAgICAgcHJldmlvdXNfbGluZSA9IGNs
ZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlciAtIDJdCi0gICAgICAgIGlmIChwcmV2aW91c19s
aW5lLmZpbmQoJ3snKSA+IDAKLSAgICAgICAgICAgIGFuZCBzZWFyY2gocidcYihpZnxmb3J8Zm9y
ZWFjaHx3aGlsZXxlbHNlKVxiJywgcHJldmlvdXNfbGluZSkpOgotICAgICAgICAgICAgZXJyb3Io
bGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2JyYWNlcycsIDQsCi0gICAgICAgICAgICAgICAgICAn
T25lIGxpbmUgY29udHJvbCBjbGF1c2VzIHNob3VsZCBub3QgdXNlIGJyYWNlcy4nKQotCi0gICAg
IyBBbiBlbHNlIGNsYXVzZSBzaG91bGQgYmUgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgcHJlY2Vk
aW5nIGNsb3NpbmcgYnJhY2UuCi0gICAgaWYgbWF0Y2gocidccyplbHNlXHMqJywgbGluZSk6Ci0g
ICAgICAgIHByZXZpb3VzX2xpbmUgPSBnZXRfcHJldmlvdXNfbm9uX2JsYW5rX2xpbmUoY2xlYW5f
bGluZXMsIGxpbmVfbnVtYmVyKVswXQotICAgICAgICBpZiBtYXRjaChyJ1xzKn1ccyokJywgcHJl
dmlvdXNfbGluZSk6Ci0gICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2Uv
bmV3bGluZScsIDQsCi0gICAgICAgICAgICAgICAgICAnQW4gZWxzZSBzaG91bGQgYXBwZWFyIG9u
IHRoZSBzYW1lIGxpbmUgYXMgdGhlIHByZWNlZGluZyB9JykKLQotICAgICMgTGlrZXdpc2UsIGFu
IGVsc2Ugc2hvdWxkIG5ldmVyIGhhdmUgdGhlIGVsc2UgY2xhdXNlIG9uIHRoZSBzYW1lIGxpbmUK
LSAgICBpZiBzZWFyY2gocidcYmVsc2UgW15cc3tdJywgbGluZSkgYW5kIG5vdCBzZWFyY2gocidc
YmVsc2UgaWZcYicsIGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3Bh
Y2UvbmV3bGluZScsIDQsCi0gICAgICAgICAgICAgICdFbHNlIGNsYXVzZSBzaG91bGQgbmV2ZXIg
YmUgb24gc2FtZSBsaW5lIGFzIGVsc2UgKHVzZSAyIGxpbmVzKScpCi0KLSAgICAjIEluIHRoZSBz
YW1lIHdheSwgYSBkby93aGlsZSBzaG91bGQgbmV2ZXIgYmUgb24gb25lIGxpbmUKLSAgICBpZiBt
YXRjaChyJ1xzKmRvIFteXHN7XScsIGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251bWJlciwg
J3doaXRlc3BhY2UvbmV3bGluZScsIDQsCi0gICAgICAgICAgICAgICdkby93aGlsZSBjbGF1c2Vz
IHNob3VsZCBub3QgYmUgb24gYSBzaW5nbGUgbGluZScpCi0KLSAgICAjIEJyYWNlcyBzaG91bGRu
J3QgYmUgZm9sbG93ZWQgYnkgYSA7IHVubGVzcyB0aGV5J3JlIGRlZmluaW5nIGEgc3RydWN0Ci0g
ICAgIyBvciBpbml0aWFsaXppbmcgYW4gYXJyYXkuCi0gICAgIyBXZSBjYW4ndCB0ZWxsIGluIGdl
bmVyYWwsIGJ1dCB3ZSBjYW4gZm9yIHNvbWUgY29tbW9uIGNhc2VzLgotICAgIHByZXZpb3VzX2xp
bmVfbnVtYmVyID0gbGluZV9udW1iZXIKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICAocHJldmlv
dXNfbGluZSwgcHJldmlvdXNfbGluZV9udW1iZXIpID0gZ2V0X3ByZXZpb3VzX25vbl9ibGFua19s
aW5lKGNsZWFuX2xpbmVzLCBwcmV2aW91c19saW5lX251bWJlcikKLSAgICAgICAgaWYgbWF0Y2go
cidccyt7Lip9XHMqOycsIGxpbmUpIGFuZCBub3QgcHJldmlvdXNfbGluZS5jb3VudCgnOycpOgot
ICAgICAgICAgICAgbGluZSA9IHByZXZpb3VzX2xpbmUgKyBsaW5lCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBicmVhawotICAgIGlmIChzZWFyY2gocid7Lip9XHMqOycsIGxpbmUpCi0gICAg
ICAgIGFuZCBsaW5lLmNvdW50KCd7JykgPT0gbGluZS5jb3VudCgnfScpCi0gICAgICAgIGFuZCBu
b3Qgc2VhcmNoKHInc3RydWN0fGNsYXNzfGVudW18XHMqPVxzKnsnLCBsaW5lKSk6Ci0gICAgICAg
IGVycm9yKGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvYnJhY2VzJywgNCwKLSAgICAgICAgICAg
ICAgIllvdSBkb24ndCBuZWVkIGEgOyBhZnRlciBhIH0iKQotCi0KLWRlZiBjaGVja19leGl0X3N0
YXRlbWVudF9zaW1wbGlmaWNhdGlvbnMoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJl
ciwgZXJyb3IpOgotICAgICIiIkxvb2tzIGZvciBlbHNlIG9yIGVsc2UtaWYgc3RhdGVtZW50cyB0
aGF0IHNob3VsZCBiZSB3cml0dGVuIGFzIGFuCi0gICAgaWYgc3RhdGVtZW50IHdoZW4gdGhlIHBy
aW9yIGlmIGNvbmNsdWRlcyB3aXRoIGEgcmV0dXJuLCBicmVhaywgY29udGludWUgb3IKLSAgICBn
b3RvIHN0YXRlbWVudC4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2Yg
dGhlIGN1cnJlbnQgZmlsZS4KLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5z
dGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVy
IG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxs
IHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLQotICAgIGxpbmUgPSBjbGVhbl9saW5l
cy5lbGlkZWRbbGluZV9udW1iZXJdICMgR2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncy4K
LQotICAgIGVsc2VfbWF0Y2ggPSBtYXRjaChyJyg/UDxlbHNlX2luZGVudGF0aW9uPlxzKikoXH1c
cyopP2Vsc2UoXHMraWZccypcKHwoP1A8ZWxzZT5ccyooXHtccyopP1xaKSknLCBsaW5lKQotICAg
IGlmIG5vdCBlbHNlX21hdGNoOgotICAgICAgICByZXR1cm4KLQotICAgIGVsc2VfaW5kZW50YXRp
b24gPSBlbHNlX21hdGNoLmdyb3VwKCdlbHNlX2luZGVudGF0aW9uJykKLSAgICBpbm5lcl9pbmRl
bnRhdGlvbiA9IGVsc2VfaW5kZW50YXRpb24gKyAnICcgKiA0Ci0KLSAgICBwcmV2aW91c19saW5l
cyA9IGNsZWFuX2xpbmVzLmVsaWRlZFs6bGluZV9udW1iZXJdCi0gICAgcHJldmlvdXNfbGluZXMu
cmV2ZXJzZSgpCi0gICAgbGluZV9vZmZzZXQgPSAwCi0gICAgZW5jb3VudGVyZWRfZXhpdF9zdGF0
ZW1lbnQgPSBGYWxzZQotCi0gICAgZm9yIGN1cnJlbnRfbGluZSBpbiBwcmV2aW91c19saW5lczoK
LSAgICAgICAgbGluZV9vZmZzZXQgLT0gMQotCi0gICAgICAgICMgU2tpcCBub3Qgb25seSBlbXB0
eSBsaW5lcyBidXQgYWxzbyB0aG9zZSB3aXRoIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzCi0gICAg
ICAgICMgYW5kIGdvdG8gbGFiZWxzLgotICAgICAgICBpZiBjdXJyZW50X2xpbmUuc3RyaXAoKSA9
PSAnJyBvciBjdXJyZW50X2xpbmUuc3RhcnRzd2l0aCgnIycpIG9yIG1hdGNoKHInXHcrXHMqOlxz
KiQnLCBjdXJyZW50X2xpbmUpOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAjIFNr
aXAgbGluZXMgd2l0aCBjbG9zaW5nIGJyYWNlcyBvbiB0aGUgb3JpZ2luYWwgaW5kZW50YXRpb24g
bGV2ZWwuCi0gICAgICAgICMgRXZlbiB0aG91Z2ggdGhlIHN0eWxlZ3VpZGUgc2F5cyB0aGV5IHNo
b3VsZCBiZSBvbiB0aGUgc2FtZSBsaW5lIGFzCi0gICAgICAgICMgdGhlICJlbHNlIGlmIiBzdGF0
ZW1lbnQsIHdlIGFsc28gd2FudCB0byBjaGVjayBmb3IgaW5zdGFuY2VzIHdoZXJlCi0gICAgICAg
ICMgdGhlIGN1cnJlbnQgY29kZSBkb2VzIG5vdCBjb21wbHkgd2l0aCB0aGUgY29kaW5nIHN0eWxl
LiBUaHVzLCBpZ25vcmUKLSAgICAgICAgIyB0aGVzZSBsaW5lcyBhbmQgcHJvY2VlZCB0byB0aGUg
bGluZSBiZWZvcmUgdGhhdC4KLSAgICAgICAgaWYgY3VycmVudF9saW5lID09IGVsc2VfaW5kZW50
YXRpb24gKyAnfSc6Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGN1cnJlbnRfaW5k
ZW50YXRpb25fbWF0Y2ggPSBtYXRjaChyJyg/UDxpbmRlbnRhdGlvbj5ccyopKD9QPHJlbWFpbmlu
Z19saW5lPi4qKSQnLCBjdXJyZW50X2xpbmUpOwotICAgICAgICBjdXJyZW50X2luZGVudGF0aW9u
ID0gY3VycmVudF9pbmRlbnRhdGlvbl9tYXRjaC5ncm91cCgnaW5kZW50YXRpb24nKQotICAgICAg
ICByZW1haW5pbmdfbGluZSA9IGN1cnJlbnRfaW5kZW50YXRpb25fbWF0Y2guZ3JvdXAoJ3JlbWFp
bmluZ19saW5lJykKLQotICAgICAgICAjIEFzIHdlJ3JlIGdvaW5nIHVwIHRoZSBsaW5lcywgdGhl
IGZpcnN0IHJlYWwgc3RhdGVtZW50IHRvIGVuY291bnRlcgotICAgICAgICAjIGhhcyB0byBiZSBh
biBleGl0IHN0YXRlbWVudCAocmV0dXJuLCBicmVhaywgY29udGludWUgb3IgZ290bykgLQotICAg
ICAgICAjIG90aGVyd2lzZSwgdGhpcyBjaGVjayBkb2Vzbid0IGFwcGx5LgotICAgICAgICBpZiBu
b3QgZW5jb3VudGVyZWRfZXhpdF9zdGF0ZW1lbnQ6Ci0gICAgICAgICAgICAjIFdlIG9ubHkgd2Fu
dCB0byBmaW5kIGV4aXQgc3RhdGVtZW50cyBpZiB0aGV5IGFyZSBvbiBleGFjdGx5Ci0gICAgICAg
ICAgICAjIHRoZSBzYW1lIGxldmVsIG9mIGluZGVudGF0aW9uIGFzIGV4cGVjdGVkIGZyb20gdGhl
IGNvZGUgaW5zaWRlCi0gICAgICAgICAgICAjIHRoZSBibG9jay4gSWYgdGhlIGluZGVudGF0aW9u
IGRvZXNuJ3Qgc3RyaWN0bHkgbWF0Y2ggdGhlbiB3ZQotICAgICAgICAgICAgIyBtaWdodCBoYXZl
IGEgbmVzdGVkIGlmIG9yIHNvbWV0aGluZywgd2hpY2ggbXVzdCBiZSBpZ25vcmVkLgotICAgICAg
ICAgICAgaWYgY3VycmVudF9pbmRlbnRhdGlvbiAhPSBpbm5lcl9pbmRlbnRhdGlvbjoKLSAgICAg
ICAgICAgICAgICBicmVhawotICAgICAgICAgICAgaWYgbWF0Y2gocicocmV0dXJuKFxXKy4qKXwo
YnJlYWt8Y29udGludWUpXHMqO3xnb3RvXHMqXHcrOykkJywgcmVtYWluaW5nX2xpbmUpOgotICAg
ICAgICAgICAgICAgIGVuY291bnRlcmVkX2V4aXRfc3RhdGVtZW50ID0gVHJ1ZQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBicmVhawotCi0gICAgICAgICMgV2hlbiBjb2Rl
IGV4ZWN1dGlvbiByZWFjaGVzIHRoaXMgcG9pbnQsIHdlJ3ZlIGZvdW5kIGFuIGV4aXQgc3RhdGVt
ZW50Ci0gICAgICAgICMgYXMgbGFzdCBzdGF0ZW1lbnQgb2YgdGhlIHByZXZpb3VzIGJsb2NrLiBO
b3cgd2Ugb25seSBuZWVkIHRvIG1ha2UKLSAgICAgICAgIyBzdXJlIHRoYXQgdGhlIGJsb2NrIGJl
bG9uZ3MgdG8gYW4gImlmIiwgdGhlbiB3ZSBjYW4gdGhyb3cgYW4gZXJyb3IuCi0KLSAgICAgICAg
IyBTa2lwIGxpbmVzIHdpdGggb3BlbmluZyBicmFjZXMgb24gdGhlIG9yaWdpbmFsIGluZGVudGF0
aW9uIGxldmVsLAotICAgICAgICAjIHNpbWlsYXIgdG8gdGhlIGNsb3NpbmcgYnJhY2VzIGNoZWNr
IGFib3ZlLiAoImlmIChjb25kaXRpb24pXG57IikKLSAgICAgICAgaWYgY3VycmVudF9saW5lID09
IGVsc2VfaW5kZW50YXRpb24gKyAneyc6Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAg
ICMgU2tpcCBldmVyeXRoaW5nIHRoYXQncyBmdXJ0aGVyIGluZGVudGVkIHRoYW4gb3VyICJlbHNl
IiBvciAiZWxzZSBpZiIuCi0gICAgICAgIGlmIGN1cnJlbnRfaW5kZW50YXRpb24uc3RhcnRzd2l0
aChlbHNlX2luZGVudGF0aW9uKSBhbmQgY3VycmVudF9pbmRlbnRhdGlvbiAhPSBlbHNlX2luZGVu
dGF0aW9uOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAjIFNvIHdlJ3ZlIGdvdCBh
IGxpbmUgd2l0aCBzYW1lIChvciBsZXNzKSBpbmRlbnRhdGlvbi4gSXMgaXQgYW4gImlmIj8KLSAg
ICAgICAgIyBJZiB5ZXM6IHRocm93IGFuIGVycm9yLiBJZiBubzogZG9uJ3QgdGhyb3cgYW4gZXJy
b3IuCi0gICAgICAgICMgV2hhdGV2ZXIgdGhlIG91dGNvbWUsIHRoaXMgaXMgdGhlIGVuZCBvZiBv
dXIgbG9vcC4KLSAgICAgICAgaWYgbWF0Y2gocidpZlxzKlwoJywgcmVtYWluaW5nX2xpbmUpOgot
ICAgICAgICAgICAgaWYgZWxzZV9tYXRjaC5zdGFydCgnZWxzZScpICE9IC0xOgotICAgICAgICAg
ICAgICAgIGVycm9yKGxpbmVfbnVtYmVyICsgbGluZV9vZmZzZXQsICdyZWFkYWJpbGl0eS9jb250
cm9sX2Zsb3cnLCA0LAotICAgICAgICAgICAgICAgICAgICAgICdBbiBlbHNlIHN0YXRlbWVudCBj
YW4gYmUgcmVtb3ZlZCB3aGVuIHRoZSBwcmlvciAiaWYiICcKLSAgICAgICAgICAgICAgICAgICAg
ICAnY29uY2x1ZGVzIHdpdGggYSByZXR1cm4sIGJyZWFrLCBjb250aW51ZSBvciBnb3RvIHN0YXRl
bWVudC4nKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251
bWJlciArIGxpbmVfb2Zmc2V0LCAncmVhZGFiaWxpdHkvY29udHJvbF9mbG93JywgNCwKLSAgICAg
ICAgICAgICAgICAgICAgICAnQW4gZWxzZSBpZiBzdGF0ZW1lbnQgc2hvdWxkIGJlIHdyaXR0ZW4g
YXMgYW4gaWYgc3RhdGVtZW50ICcKLSAgICAgICAgICAgICAgICAgICAgICAnd2hlbiB0aGUgcHJp
b3IgImlmIiBjb25jbHVkZXMgd2l0aCBhIHJldHVybiwgYnJlYWssICcKLSAgICAgICAgICAgICAg
ICAgICAgICAnY29udGludWUgb3IgZ290byBzdGF0ZW1lbnQuJykKLSAgICAgICAgYnJlYWsKLQot
Ci1kZWYgcmVwbGFjZWFibGVfY2hlY2sob3BlcmF0b3IsIG1hY3JvLCBsaW5lKToKLSAgICAiIiJE
ZXRlcm1pbmUgd2hldGhlciBhIGJhc2ljIENIRUNLIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgbW9y
ZSBzcGVjaWZpYyBvbmUuCi0KLSAgICBGb3IgZXhhbXBsZSBzdWdnZXN0IHVzaW5nIENIRUNLX0VR
IGluc3RlYWQgb2YgQ0hFQ0soYSA9PSBiKSBhbmQKLSAgICBzaW1pbGFybHkgZm9yIENIRUNLX0dF
LCBDSEVDS19HVCwgQ0hFQ0tfTEUsIENIRUNLX0xULCBDSEVDS19ORS4KLQotICAgIEFyZ3M6Ci0g
ICAgICBvcGVyYXRvcjogVGhlIEMrKyBvcGVyYXRvciB1c2VkIGluIHRoZSBDSEVDSy4KLSAgICAg
IG1hY3JvOiBUaGUgQ0hFQ0sgb3IgRVhQRUNUIG1hY3JvIGJlaW5nIGNhbGxlZC4KLSAgICAgIGxp
bmU6IFRoZSBjdXJyZW50IHNvdXJjZSBsaW5lLgotCi0gICAgUmV0dXJuczoKLSAgICAgIFRydWUg
aWYgdGhlIENIRUNLIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgbW9yZSBzcGVjaWZpYyBvbmUuCi0g
ICAgIiIiCi0KLSAgICAjIFRoaXMgbWF0Y2hlcyBkZWNpbWFsIGFuZCBoZXggaW50ZWdlcnMsIHN0
cmluZ3MsIGFuZCBjaGFycyAoaW4gdGhhdCBvcmRlcikuCi0gICAgbWF0Y2hfY29uc3RhbnQgPSBy
JyhbLStdPyhcZCt8MFt4WF1bMC05YS1mQS1GXSspW2xMdVVdezAsM318Ii4qInxcJy4qXCcpJwot
Ci0gICAgIyBFeHByZXNzaW9uIHRvIG1hdGNoIHR3byBzaWRlcyBvZiB0aGUgb3BlcmF0b3Igd2l0
aCBzb21ldGhpbmcgdGhhdAotICAgICMgbG9va3MgbGlrZSBhIGxpdGVyYWwsIHNpbmNlIENIRUNL
KHggPT0gaXRlcmF0b3IpIHdvbid0IGNvbXBpbGUuCi0gICAgIyBUaGlzIG1lYW5zIHdlIGNhbid0
IGNhdGNoIGFsbCB0aGUgY2FzZXMgd2hlcmUgYSBtb3JlIHNwZWNpZmljCi0gICAgIyBDSEVDSyBp
cyBwb3NzaWJsZSwgYnV0IGl0J3MgbGVzcyBhbm5veWluZyB0aGFuIGRlYWxpbmcgd2l0aAotICAg
ICMgZXh0cmFuZW91cyB3YXJuaW5ncy4KLSAgICBtYXRjaF90aGlzID0gKHInXHMqJyArIG1hY3Jv
ICsgcidcKChccyonICsKLSAgICAgICAgICAgICAgICAgIG1hdGNoX2NvbnN0YW50ICsgcidccyon
ICsgb3BlcmF0b3IgKyByJ1tePD5dLip8JwotICAgICAgICAgICAgICAgICAgcicuKltePD5dJyAr
IG9wZXJhdG9yICsgcidccyonICsgbWF0Y2hfY29uc3RhbnQgKwotICAgICAgICAgICAgICAgICAg
cidccypcKSknKQotCi0gICAgIyBEb24ndCBjb21wbGFpbiBhYm91dCBDSEVDSyh4ID09IE5VTEwp
IG9yIHNpbWlsYXIgYmVjYXVzZQotICAgICMgQ0hFQ0tfRVEoeCwgTlVMTCkgd29uJ3QgY29tcGls
ZSAocmVxdWlyZXMgYSBjYXN0KS4KLSAgICAjIEFsc28sIGRvbid0IGNvbXBsYWluIGFib3V0IG1v
cmUgY29tcGxleCBib29sZWFuIGV4cHJlc3Npb25zCi0gICAgIyBpbnZvbHZpbmcgJiYgb3IgfHwg
c3VjaCBhcyBDSEVDSyhhID09IGIgfHwgYyA9PSBkKS4KLSAgICByZXR1cm4gbWF0Y2gobWF0Y2hf
dGhpcywgbGluZSkgYW5kIG5vdCBzZWFyY2gocidOVUxMfCYmfFx8XHwnLCBsaW5lKQotCi0KLWRl
ZiBjaGVja19jaGVjayhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6
Ci0gICAgIiIiQ2hlY2tzIHRoZSB1c2Ugb2YgQ0hFQ0sgYW5kIEVYUEVDVCBtYWNyb3MuCi0KLSAg
ICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCi0g
ICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhl
IGZpbGUuCi0gICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVj
ay4KLSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91
bmQuCi0gICAgIiIiCi0KLSAgICAjIERlY2lkZSB0aGUgc2V0IG9mIHJlcGxhY2VtZW50IG1hY3Jv
cyB0aGF0IHNob3VsZCBiZSBzdWdnZXN0ZWQKLSAgICByYXdfbGluZXMgPSBjbGVhbl9saW5lcy5y
YXdfbGluZXMKLSAgICBjdXJyZW50X21hY3JvID0gJycKLSAgICBmb3IgbWFjcm8gaW4gX0NIRUNL
X01BQ1JPUzoKLSAgICAgICAgaWYgcmF3X2xpbmVzW2xpbmVfbnVtYmVyXS5maW5kKG1hY3JvKSA+
PSAwOgotICAgICAgICAgICAgY3VycmVudF9tYWNybyA9IG1hY3JvCi0gICAgICAgICAgICBicmVh
awotICAgIGlmIG5vdCBjdXJyZW50X21hY3JvOgotICAgICAgICAjIERvbid0IHdhc3RlIHRpbWUg
aGVyZSBpZiBsaW5lIGRvZXNuJ3QgY29udGFpbiAnQ0hFQ0snIG9yICdFWFBFQ1QnCi0gICAgICAg
IHJldHVybgotCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0gICAg
ICAgICMgZ2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncwotCi0gICAgIyBFbmNvdXJhZ2Ug
cmVwbGFjaW5nIHBsYWluIENIRUNLcyB3aXRoIENIRUNLX0VRL0NIRUNLX05FL2V0Yy4KLSAgICBm
b3Igb3BlcmF0b3IgaW4gWyc9PScsICchPScsICc+PScsICc+JywgJzw9JywgJzwnXToKLSAgICAg
ICAgaWYgcmVwbGFjZWFibGVfY2hlY2sob3BlcmF0b3IsIGN1cnJlbnRfbWFjcm8sIGxpbmUpOgot
ICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9jaGVjaycsIDIsCi0g
ICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgJXMgaW5zdGVhZCBvZiAlcyhhICVzIGIp
JyAlICgKLSAgICAgICAgICAgICAgICAgICAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbY3VycmVudF9t
YWNyb11bb3BlcmF0b3JdLAotICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfbWFjcm8sIG9w
ZXJhdG9yKSkKLSAgICAgICAgICAgIGJyZWFrCi0KLQotZGVmIGNoZWNrX2Zvcl9jb21wYXJpc29u
c190b196ZXJvKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKLSAg
ICAjIEdldCB0aGUgbGluZSB3aXRob3V0IGNvbW1lbnRzIGFuZCBzdHJpbmdzLgotICAgIGxpbmUg
PSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCi0KLSAgICAjIEluY2x1ZGUgTlVMTCBo
ZXJlIHNvIHRoYXQgdXNlcnMgZG9uJ3QgaGF2ZSB0byBjb252ZXJ0IE5VTEwgdG8gMCBmaXJzdCBh
bmQgdGhlbiBnZXQgdGhpcyBlcnJvci4KLSAgICBpZiBzZWFyY2gocidbPSFdPVxzKihOVUxMfDB8
dHJ1ZXxmYWxzZSlcVycsIGxpbmUpIG9yIHNlYXJjaChyJ1xXKE5VTEx8MHx0cnVlfGZhbHNlKVxz
Kls9IV09JywgbGluZSk6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkv
Y29tcGFyaXNvbl90b196ZXJvJywgNSwKLSAgICAgICAgICAgICAgJ1Rlc3RzIGZvciB0cnVlL2Zh
bHNlLCBudWxsL25vbi1udWxsLCBhbmQgemVyby9ub24temVybyBzaG91bGQgYWxsIGJlIGRvbmUg
d2l0aG91dCBlcXVhbGl0eSBjb21wYXJpc29ucy4nKQotCi0KLWRlZiBjaGVja19mb3JfbnVsbChm
aWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6Ci0gICAgIyBUaGlzIGNo
ZWNrIGRvZXNuJ3QgYXBwbHkgdG8gQyBvciBPYmplY3RpdmUtQyBpbXBsZW1lbnRhdGlvbiBmaWxl
cy4KLSAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnLmMnKSBvciBmaWxlbmFtZS5lbmRzd2l0aCgn
Lm0nKToKLSAgICAgICAgcmV0dXJuCi0KLSAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xp
bmVfbnVtYmVyXQotCi0gICAgIyBEb24ndCB3YXJuIGFib3V0IE5VTEwgdXNhZ2UgaW4gZ19vYmpl
Y3Rfe2dldCxzZXR9KCkuIFNlZSBCdWcgMzI4NTgKLSAgICBpZiBzZWFyY2gocidcYmdfb2JqZWN0
X1tzZ11ldFxiJywgbGluZSk6Ci0gICAgICAgIHJldHVybgotCi0gICAgaWYgc2VhcmNoKHInXGJO
VUxMXGInLCBsaW5lKToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9u
dWxsJywgNSwgJ1VzZSAwIGluc3RlYWQgb2YgTlVMTC4nKQotICAgICAgICByZXR1cm4KLQotICAg
IGxpbmUgPSBjbGVhbl9saW5lcy5yYXdfbGluZXNbbGluZV9udW1iZXJdCi0gICAgIyBTZWUgaWYg
TlVMTCBvY2N1cnMgaW4gYW55IGNvbW1lbnRzIGluIHRoZSBsaW5lLiBJZiB0aGUgc2VhcmNoIGZv
ciBOVUxMIHVzaW5nIHRoZSByYXcgbGluZQotICAgICMgbWF0Y2hlcywgdGhlbiBkbyB0aGUgY2hl
Y2sgd2l0aCBzdHJpbmdzIGNvbGxhcHNlZCB0byBhdm9pZCBnaXZpbmcgZXJyb3JzIGZvcgotICAg
ICMgTlVMTHMgb2NjdXJyaW5nIGluIHN0cmluZ3MuCi0gICAgaWYgc2VhcmNoKHInXGJOVUxMXGIn
LCBsaW5lKSBhbmQgc2VhcmNoKHInXGJOVUxMXGInLCBDbGVhbnNlZExpbmVzLmNvbGxhcHNlX3N0
cmluZ3MobGluZSkpOgotICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L251
bGwnLCA0LCAnVXNlIDAgaW5zdGVhZCBvZiBOVUxMLicpCi0KLWRlZiBnZXRfbGluZV93aWR0aChs
aW5lKToKLSAgICAiIiJEZXRlcm1pbmVzIHRoZSB3aWR0aCBvZiB0aGUgbGluZSBpbiBjb2x1bW4g
cG9zaXRpb25zLgotCi0gICAgQXJnczoKLSAgICAgIGxpbmU6IEEgc3RyaW5nLCB3aGljaCBtYXkg
YmUgYSBVbmljb2RlIHN0cmluZy4KLQotICAgIFJldHVybnM6Ci0gICAgICBUaGUgd2lkdGggb2Yg
dGhlIGxpbmUgaW4gY29sdW1uIHBvc2l0aW9ucywgYWNjb3VudGluZyBmb3IgVW5pY29kZQotICAg
ICAgY29tYmluaW5nIGNoYXJhY3RlcnMgYW5kIHdpZGUgY2hhcmFjdGVycy4KLSAgICAiIiIKLSAg
ICBpZiBpc2luc3RhbmNlKGxpbmUsIHVuaWNvZGUpOgotICAgICAgICB3aWR0aCA9IDAKLSAgICAg
ICAgZm9yIGMgaW4gdW5pY29kZWRhdGEubm9ybWFsaXplKCdORkMnLCBsaW5lKToKLSAgICAgICAg
ICAgIGlmIHVuaWNvZGVkYXRhLmVhc3RfYXNpYW5fd2lkdGgoYykgaW4gKCdXJywgJ0YnKToKLSAg
ICAgICAgICAgICAgICB3aWR0aCArPSAyCi0gICAgICAgICAgICBlbGlmIG5vdCB1bmljb2RlZGF0
YS5jb21iaW5pbmcoYyk6Ci0gICAgICAgICAgICAgICAgd2lkdGggKz0gMQotICAgICAgICByZXR1
cm4gd2lkdGgKLSAgICByZXR1cm4gbGVuKGxpbmUpCi0KLQotZGVmIGNoZWNrX3N0eWxlKGZpbGVu
YW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBmaWxlX3N0YXRl
LCBlcnJvcik6Ci0gICAgIiIiQ2hlY2tzIHJ1bGVzIGZyb20gdGhlICdDKysgc3R5bGUgcnVsZXMn
IHNlY3Rpb24gb2YgY3BwZ3VpZGUuaHRtbC4KLQotICAgIE1vc3Qgb2YgdGhlc2UgcnVsZXMgYXJl
IGhhcmQgdG8gdGVzdCAobmFtaW5nLCBjb21tZW50IHN0eWxlKSwgYnV0IHdlCi0gICAgZG8gd2hh
dCB3ZSBjYW4uICBJbiBwYXJ0aWN1bGFyIHdlIGNoZWNrIGZvciA0LXNwYWNlIGluZGVudHMsIGxp
bmUgbGVuZ3RocywKLSAgICB0YWIgdXNhZ2UsIHNwYWNlcyBpbnNpZGUgY29kZSwgZXRjLgotCi0g
ICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgot
ICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRo
ZSBmaWxlLgotICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hl
Y2suCi0gICAgICBmaWxlX2V4dGVuc2lvbjogVGhlIGV4dGVuc2lvbiAod2l0aG91dCB0aGUgZG90
KSBvZiB0aGUgZmlsZW5hbWUuCi0gICAgICBmaWxlX3N0YXRlOiBBIF9GaWxlU3RhdGUgaW5zdGFu
Y2Ugd2hpY2ggbWFpbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0Ci0gICAgICAgICAgICAgICAgICB0
aGUgc3RhdGUgb2YgdGhpbmdzIGluIHRoZSBmaWxlLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlv
biB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLQotICAgIHJhd19saW5l
cyA9IGNsZWFuX2xpbmVzLnJhd19saW5lcwotICAgIGxpbmUgPSByYXdfbGluZXNbbGluZV9udW1i
ZXJdCi0KLSAgICBpZiBsaW5lLmZpbmQoJ1x0JykgIT0gLTE6Ci0gICAgICAgIGVycm9yKGxpbmVf
bnVtYmVyLCAnd2hpdGVzcGFjZS90YWInLCAxLAotICAgICAgICAgICAgICAnVGFiIGZvdW5kOyBi
ZXR0ZXIgdG8gdXNlIHNwYWNlcycpCi0KLSAgICAjIE9uZSBvciB0aHJlZSBibGFuayBzcGFjZXMg
YXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSBpcyB3ZWlyZDsgaXQncwotICAgICMgaGFyZCB0
byByZWNvbmNpbGUgdGhhdCB3aXRoIDQtc3BhY2UgaW5kZW50cy4KLSAgICAjIE5PVEU6IGhlcmUg
YXJlIHRoZSBjb25kaXRpb25zIHJvYiBwaWtlIHVzZWQgZm9yIGhpcyB0ZXN0cy4gIE1pbmUgYXJl
bid0Ci0gICAgIyBhcyBzb3BoaXN0aWNhdGVkLCBidXQgaXQgbWF5IGJlIHdvcnRoIGJlY29taW5n
IHNvOiAgUkxFTkdUSD09aW5pdGlhbF9zcGFjZXMKLSAgICAjIGlmKFJMRU5HVEggPiAyMCkgY29t
cGxhaW4gPSAwOwotICAgICMgaWYobWF0Y2goJDAsICIgKyhlcnJvcnxwcml2YXRlfHB1YmxpY3xw
cm90ZWN0ZWQpOiIpKSBjb21wbGFpbiA9IDA7Ci0gICAgIyBpZihtYXRjaChwcmV2LCAiJiYgKiQi
KSkgY29tcGxhaW4gPSAwOwotICAgICMgaWYobWF0Y2gocHJldiwgIlxcfFxcfCAqJCIpKSBjb21w
bGFpbiA9IDA7Ci0gICAgIyBpZihtYXRjaChwcmV2LCAiW1wiLD0+PF0gKiQiKSkgY29tcGxhaW4g
PSAwOwotICAgICMgaWYobWF0Y2goJDAsICIgPDwiKSkgY29tcGxhaW4gPSAwOwotICAgICMgaWYo
bWF0Y2gocHJldiwgIiArZm9yIFxcKCIpKSBjb21wbGFpbiA9IDA7Ci0gICAgIyBpZihwcmV2b2Rk
ICYmIG1hdGNoKHByZXZwcmV2LCAiICtmb3IgXFwoIikpIGNvbXBsYWluID0gMDsKLSAgICBpbml0
aWFsX3NwYWNlcyA9IDAKLSAgICBjbGVhbnNlZF9saW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xp
bmVfbnVtYmVyXQotICAgIHdoaWxlIGluaXRpYWxfc3BhY2VzIDwgbGVuKGxpbmUpIGFuZCBsaW5l
W2luaXRpYWxfc3BhY2VzXSA9PSAnICc6Ci0gICAgICAgIGluaXRpYWxfc3BhY2VzICs9IDEKLSAg
ICBpZiBsaW5lIGFuZCBsaW5lWy0xXS5pc3NwYWNlKCk6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVt
YmVyLCAnd2hpdGVzcGFjZS9lbmRfb2ZfbGluZScsIDQsCi0gICAgICAgICAgICAgICdMaW5lIGVu
ZHMgaW4gd2hpdGVzcGFjZS4gIENvbnNpZGVyIGRlbGV0aW5nIHRoZXNlIGV4dHJhIHNwYWNlcy4n
KQotICAgICMgVGhlcmUgYXJlIGNlcnRhaW4gc2l0dWF0aW9ucyB3ZSBhbGxvdyBvbmUgc3BhY2Us
IG5vdGFibHkgZm9yIGxhYmVscwotICAgIGVsaWYgKChpbml0aWFsX3NwYWNlcyA+PSAxIGFuZCBp
bml0aWFsX3NwYWNlcyA8PSAzKQotICAgICAgICAgIGFuZCBub3QgbWF0Y2gocidccypcdytccyo6
XHMqJCcsIGNsZWFuc2VkX2xpbmUpKToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0
ZXNwYWNlL2luZGVudCcsIDMsCi0gICAgICAgICAgICAgICdXZWlyZCBudW1iZXIgb2Ygc3BhY2Vz
IGF0IGxpbmUtc3RhcnQuICAnCi0gICAgICAgICAgICAgICdBcmUgeW91IHVzaW5nIGEgNC1zcGFj
ZSBpbmRlbnQ/JykKLSAgICAjIExhYmVscyBzaG91bGQgYWx3YXlzIGJlIGluZGVudGVkIGF0IGxl
YXN0IG9uZSBzcGFjZS4KLSAgICBlbGlmIG5vdCBpbml0aWFsX3NwYWNlcyBhbmQgbGluZVs6Ml0g
IT0gJy8vJzoKLSAgICAgICAgbGFiZWxfbWF0Y2ggPSBtYXRjaChyJyg/UDxsYWJlbD5bXjpdKyk6
XHMqJCcsIGxpbmUpCi0KLSAgICAgICAgaWYgbGFiZWxfbWF0Y2g6Ci0gICAgICAgICAgICBsYWJl
bCA9IGxhYmVsX21hdGNoLmdyb3VwKCdsYWJlbCcpCi0gICAgICAgICAgICAjIE9ubHkgdGhyb3cg
ZXJyb3JzIGZvciBzdHVmZiB0aGF0IGlzIGRlZmluaXRlbHkgbm90IGEgZ290byBsYWJlbCwKLSAg
ICAgICAgICAgICMgYmVjYXVzZSBnb3RvIGxhYmVscyBjYW4gaW4gZmFjdCBvY2N1ciBhdCB0aGUg
c3RhcnQgb2YgdGhlIGxpbmUuCi0gICAgICAgICAgICBpZiBsYWJlbCBpbiBbJ3B1YmxpYycsICdw
cml2YXRlJywgJ3Byb3RlY3RlZCddIG9yIGxhYmVsLmZpbmQoJyAnKSAhPSAtMToKLSAgICAgICAg
ICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvbGFiZWxzJywgNCwKLSAgICAg
ICAgICAgICAgICAgICAgICAnTGFiZWxzIHNob3VsZCBhbHdheXMgYmUgaW5kZW50ZWQgYXQgbGVh
c3Qgb25lIHNwYWNlLiAgJwotICAgICAgICAgICAgICAgICAgICAgICdJZiB0aGlzIGlzIGEgbWVt
YmVyLWluaXRpYWxpemVyIGxpc3QgaW4gYSBjb25zdHJ1Y3RvciwgJwotICAgICAgICAgICAgICAg
ICAgICAgICd0aGUgY29sb24gc2hvdWxkIGJlIG9uIHRoZSBsaW5lIGFmdGVyIHRoZSBkZWZpbml0
aW9uIGhlYWRlci4nKQotCi0gICAgaWYgKGNsZWFuc2VkX2xpbmUuY291bnQoJzsnKSA+IDEKLSAg
ICAgICAgIyBmb3IgbG9vcHMgYXJlIGFsbG93ZWQgdHdvIDsncyAoYW5kIG1heSBydW4gb3ZlciB0
d28gbGluZXMpLgotICAgICAgICBhbmQgY2xlYW5zZWRfbGluZS5maW5kKCdmb3InKSA9PSAtMQot
ICAgICAgICBhbmQgKGdldF9wcmV2aW91c19ub25fYmxhbmtfbGluZShjbGVhbl9saW5lcywgbGlu
ZV9udW1iZXIpWzBdLmZpbmQoJ2ZvcicpID09IC0xCi0gICAgICAgICAgICAgb3IgZ2V0X3ByZXZp
b3VzX25vbl9ibGFua19saW5lKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlcilbMF0uZmluZCgnOycp
ICE9IC0xKQotICAgICAgICAjIEl0J3Mgb2sgdG8gaGF2ZSBtYW55IGNvbW1hbmRzIGluIGEgc3dp
dGNoIGNhc2UgdGhhdCBmaXRzIGluIDEgbGluZQotICAgICAgICBhbmQgbm90ICgoY2xlYW5zZWRf
bGluZS5maW5kKCdjYXNlICcpICE9IC0xCi0gICAgICAgICAgICAgICAgICBvciBjbGVhbnNlZF9s
aW5lLmZpbmQoJ2RlZmF1bHQ6JykgIT0gLTEpCi0gICAgICAgICAgICAgICAgIGFuZCBjbGVhbnNl
ZF9saW5lLmZpbmQoJ2JyZWFrOycpICE9IC0xKQotICAgICAgICBhbmQgbm90IGNsZWFuc2VkX2xp
bmUuc3RhcnRzd2l0aCgnI2RlZmluZSAnKSk6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAn
d2hpdGVzcGFjZS9uZXdsaW5lJywgNCwKLSAgICAgICAgICAgICAgJ01vcmUgdGhhbiBvbmUgY29t
bWFuZCBvbiB0aGUgc2FtZSBsaW5lJykKLQotICAgIGlmIGNsZWFuc2VkX2xpbmUuc3RyaXAoKS5l
bmRzd2l0aCgnfHwnKSBvciBjbGVhbnNlZF9saW5lLnN0cmlwKCkuZW5kc3dpdGgoJyYmJyk6Ci0g
ICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9vcGVyYXRvcnMnLCA0LAotICAg
ICAgICAgICAgICAnQm9vbGVhbiBleHByZXNzaW9ucyB0aGF0IHNwYW4gbXVsdGlwbGUgbGluZXMg
c2hvdWxkIGhhdmUgdGhlaXIgJwotICAgICAgICAgICAgICAnb3BlcmF0b3JzIG9uIHRoZSBsZWZ0
IHNpZGUgb2YgdGhlIGxpbmUgaW5zdGVhZCBvZiB0aGUgcmlnaHQgc2lkZS4nKQotCi0gICAgIyBT
b21lIG1vcmUgc3R5bGUgY2hlY2tzCi0gICAgY2hlY2tfbmFtZXNwYWNlX2luZGVudGF0aW9uKGZp
bGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBmaWxlX3N0
YXRlLCBlcnJvcikKLSAgICBjaGVja191c2luZ19zdGQoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBs
aW5lX251bWJlciwgZXJyb3IpCi0gICAgY2hlY2tfbWF4X21pbl9tYWNyb3MoZmlsZW5hbWUsIGNs
ZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpCi0gICAgY2hlY2tfc3dpdGNoX2luZGVudGF0
aW9uKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKQotICAgIGNoZWNr
X2JyYWNlcyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKLSAgICBj
aGVja19leGl0X3N0YXRlbWVudF9zaW1wbGlmaWNhdGlvbnMoZmlsZW5hbWUsIGNsZWFuX2xpbmVz
LCBsaW5lX251bWJlciwgZXJyb3IpCi0gICAgY2hlY2tfc3BhY2luZyhmaWxlbmFtZSwgY2xlYW5f
bGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKLSAgICBjaGVja19jaGVjayhmaWxlbmFtZSwgY2xl
YW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKLSAgICBjaGVja19mb3JfY29tcGFyaXNvbnNf
dG9femVybyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKLSAgICBj
aGVja19mb3JfbnVsbChmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikK
LQotCi1fUkVfUEFUVEVSTl9JTkNMVURFX05FV19TVFlMRSA9IHJlLmNvbXBpbGUocicjaW5jbHVk
ZSArIlteL10rXC5oIicpCi1fUkVfUEFUVEVSTl9JTkNMVURFID0gcmUuY29tcGlsZShyJ15ccyoj
XHMqaW5jbHVkZVxzKihbPCJdKShbXj4iXSopWz4iXS4qJCcpCi0jIE1hdGNoZXMgdGhlIGZpcnN0
IGNvbXBvbmVudCBvZiBhIGZpbGVuYW1lIGRlbGltaXRlZCBieSAtcyBhbmQgX3MuIFRoYXQgaXM6
Ci0jICBfUkVfRklSU1RfQ09NUE9ORU5ULm1hdGNoKCdmb28nKS5ncm91cCgwKSA9PSAnZm9vJwot
IyAgX1JFX0ZJUlNUX0NPTVBPTkVOVC5tYXRjaCgnZm9vLmNwcCcpLmdyb3VwKDApID09ICdmb28n
Ci0jICBfUkVfRklSU1RfQ09NUE9ORU5ULm1hdGNoKCdmb28tYmFyX2Jhei5jcHAnKS5ncm91cCgw
KSA9PSAnZm9vJwotIyAgX1JFX0ZJUlNUX0NPTVBPTkVOVC5tYXRjaCgnZm9vX2Jhci1iYXouY3Bw
JykuZ3JvdXAoMCkgPT0gJ2ZvbycKLV9SRV9GSVJTVF9DT01QT05FTlQgPSByZS5jb21waWxlKHIn
XlteLV8uXSsnKQotCi0KLWRlZiBfZHJvcF9jb21tb25fc3VmZml4ZXMoZmlsZW5hbWUpOgotICAg
ICIiIkRyb3BzIGNvbW1vbiBzdWZmaXhlcyBsaWtlIF90ZXN0LmNwcCBvciAtaW5sLmggZnJvbSBm
aWxlbmFtZS4KLQotICAgIEZvciBleGFtcGxlOgotICAgICAgPj4+IF9kcm9wX2NvbW1vbl9zdWZm
aXhlcygnZm9vL2Zvby1pbmwuaCcpCi0gICAgICAnZm9vL2ZvbycKLSAgICAgID4+PiBfZHJvcF9j
b21tb25fc3VmZml4ZXMoJ2Zvby9iYXIvZm9vLmNwcCcpCi0gICAgICAnZm9vL2Jhci9mb28nCi0g
ICAgICA+Pj4gX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vZm9vX2ludGVybmFsLmgnKQotICAg
ICAgJ2Zvby9mb28nCi0gICAgICA+Pj4gX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vZm9vX3Vu
dXN1YWxpbnRlcm5hbC5oJykKLSAgICAgICdmb28vZm9vX3VudXN1YWxpbnRlcm5hbCcKLQotICAg
IEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIGlucHV0IGZpbGVuYW1lLgotCi0gICAgUmV0dXJu
czoKLSAgICAgIFRoZSBmaWxlbmFtZSB3aXRoIHRoZSBjb21tb24gc3VmZml4IHJlbW92ZWQuCi0g
ICAgIiIiCi0gICAgZm9yIHN1ZmZpeCBpbiAoJ3Rlc3QuY3BwJywgJ3JlZ3Rlc3QuY3BwJywgJ3Vu
aXR0ZXN0LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgJ2lubC5oJywgJ2ltcGwuaCcsICdpbnRl
cm5hbC5oJyk6Ci0gICAgICAgIGlmIChmaWxlbmFtZS5lbmRzd2l0aChzdWZmaXgpIGFuZCBsZW4o
ZmlsZW5hbWUpID4gbGVuKHN1ZmZpeCkKLSAgICAgICAgICAgIGFuZCBmaWxlbmFtZVstbGVuKHN1
ZmZpeCkgLSAxXSBpbiAoJy0nLCAnXycpKToKLSAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZVs6
LWxlbihzdWZmaXgpIC0gMV0KLSAgICByZXR1cm4gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlb
MF0KLQotCi1kZWYgX2lzX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUpOgotICAgICIiIkRldGVybWlu
ZXMgaWYgdGhlIGdpdmVuIGZpbGVuYW1lIGhhcyBhIHN1ZmZpeCB0aGF0IGlkZW50aWZpZXMgaXQg
YXMgYSB0ZXN0LgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgaW5wdXQgZmlsZW5h
bWUuCi0KLSAgICBSZXR1cm5zOgotICAgICAgVHJ1ZSBpZiAnZmlsZW5hbWUnIGxvb2tzIGxpa2Ug
YSB0ZXN0LCBGYWxzZSBvdGhlcndpc2UuCi0gICAgIiIiCi0gICAgaWYgKGZpbGVuYW1lLmVuZHN3
aXRoKCdfdGVzdC5jcHAnKQotICAgICAgICBvciBmaWxlbmFtZS5lbmRzd2l0aCgnX3VuaXR0ZXN0
LmNwcCcpCi0gICAgICAgIG9yIGZpbGVuYW1lLmVuZHN3aXRoKCdfcmVndGVzdC5jcHAnKSk6Ci0g
ICAgICAgIHJldHVybiBUcnVlCi0gICAgcmV0dXJuIEZhbHNlCi0KLQotZGVmIF9jbGFzc2lmeV9p
bmNsdWRlKGZpbGVuYW1lLCBpbmNsdWRlLCBpc19zeXN0ZW0sIGluY2x1ZGVfc3RhdGUpOgotICAg
ICIiIkZpZ3VyZXMgb3V0IHdoYXQga2luZCBvZiBoZWFkZXIgJ2luY2x1ZGUnIGlzLgotCi0gICAg
QXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgY3VycmVudCBmaWxlIGNwcF9zdHlsZSBpcyBydW5u
aW5nIG92ZXIuCi0gICAgICBpbmNsdWRlOiBUaGUgcGF0aCB0byBhICNpbmNsdWRlZCBmaWxlLgot
ICAgICAgaXNfc3lzdGVtOiBUcnVlIGlmIHRoZSAjaW5jbHVkZSB1c2VkIDw+IHJhdGhlciB0aGFu
ICIiLgotICAgICAgaW5jbHVkZV9zdGF0ZTogQW4gX0luY2x1ZGVTdGF0ZSBpbnN0YW5jZSBpbiB3
aGljaCB0aGUgaGVhZGVycyBhcmUgaW5zZXJ0ZWQuCi0KLSAgICBSZXR1cm5zOgotICAgICAgT25l
IG9mIHRoZSBfWFhYX0hFQURFUiBjb25zdGFudHMuCi0KLSAgICBGb3IgZXhhbXBsZToKLSAgICAg
ID4+PiBfY2xhc3NpZnlfaW5jbHVkZSgnZm9vLmNwcCcsICdjb25maWcuaCcsIEZhbHNlKQotICAg
ICAgX0NPTkZJR19IRUFERVIKLSAgICAgID4+PiBfY2xhc3NpZnlfaW5jbHVkZSgnZm9vLmNwcCcs
ICdmb28uaCcsIEZhbHNlKQotICAgICAgX1BSSU1BUllfSEVBREVSCi0gICAgICA+Pj4gX2NsYXNz
aWZ5X2luY2x1ZGUoJ2Zvby5jcHAnLCAnYmFyLmgnLCBGYWxzZSkKLSAgICAgIF9PVEhFUl9IRUFE
RVIKLSAgICAiIiIKLQotICAgICMgSWYgaXQgaXMgYSBzeXN0ZW0gaGVhZGVyIHdlIGtub3cgaXQg
aXMgY2xhc3NpZmllZCBhcyBfT1RIRVJfSEVBREVSLgotICAgIGlmIGlzX3N5c3RlbToKLSAgICAg
ICAgcmV0dXJuIF9PVEhFUl9IRUFERVIKLQotICAgICMgSWYgdGhlIGluY2x1ZGUgaXMgbmFtZWQg
Y29uZmlnLmggdGhlbiB0aGlzIGlzIFdlYkNvcmUvY29uZmlnLmguCi0gICAgaWYgaW5jbHVkZSA9
PSAiY29uZmlnLmgiOgotICAgICAgICByZXR1cm4gX0NPTkZJR19IRUFERVIKLQotICAgICMgVGhl
cmUgY2Fubm90IGJlIHByaW1hcnkgaW5jbHVkZXMgaW4gaGVhZGVyIGZpbGVzIHRoZW1zZWx2ZXMu
IE9ubHkgYW4KLSAgICAjIGluY2x1ZGUgZXhhY3RseSBtYXRjaGVzIHRoZSBoZWFkZXIgZmlsZW5h
bWUgd2lsbCBiZSBpcyBmbGFnZ2VkIGFzCi0gICAgIyBwcmltYXJ5LCBzbyB0aGF0IGl0IHRyaWdn
ZXJzIHRoZSAiZG9uJ3QgaW5jbHVkZSB5b3Vyc2VsZiIgY2hlY2suCi0gICAgaWYgZmlsZW5hbWUu
ZW5kc3dpdGgoJy5oJykgYW5kIGZpbGVuYW1lICE9IGluY2x1ZGU6Ci0gICAgICAgIHJldHVybiBf
T1RIRVJfSEVBREVSOwotCi0gICAgIyBRdCdzIG1vYyBmaWxlcyBkbyBub3QgZm9sbG93IHRoZSBu
YW1pbmcgYW5kIG9yZGVyaW5nIHJ1bGVzLCBzbyB0aGV5IHNob3VsZCBiZSBza2lwcGVkCi0gICAg
aWYgaW5jbHVkZS5zdGFydHN3aXRoKCdtb2NfJykgYW5kIGluY2x1ZGUuZW5kc3dpdGgoJy5jcHAn
KToKLSAgICAgICAgcmV0dXJuIF9NT0NfSEVBREVSCi0KLSAgICBpZiBpbmNsdWRlLmVuZHN3aXRo
KCcubW9jJyk6Ci0gICAgICAgIHJldHVybiBfTU9DX0hFQURFUgotCi0gICAgIyBJZiB0aGUgdGFy
Z2V0IGZpbGUgYmFzZW5hbWUgc3RhcnRzIHdpdGggdGhlIGluY2x1ZGUgd2UncmUgY2hlY2tpbmcK
LSAgICAjIHRoZW4gd2UgY29uc2lkZXIgaXQgdGhlIHByaW1hcnkgaGVhZGVyLgotICAgIHRhcmdl
dF9iYXNlID0gRmlsZUluZm8oZmlsZW5hbWUpLmJhc2VfbmFtZSgpCi0gICAgaW5jbHVkZV9iYXNl
ID0gRmlsZUluZm8oaW5jbHVkZSkuYmFzZV9uYW1lKCkKLQotICAgICMgSWYgd2UgaGF2ZW4ndCBl
bmNvdW50ZXJlZCBhIHByaW1hcnkgaGVhZGVyLCB0aGVuIGJlIGxlbmllbnQgaW4gY2hlY2tpbmcu
Ci0gICAgaWYgbm90IGluY2x1ZGVfc3RhdGUudmlzaXRlZF9wcmltYXJ5X3NlY3Rpb24oKSBhbmQg
dGFyZ2V0X2Jhc2UuZmluZChpbmNsdWRlX2Jhc2UpICE9IC0xOgotICAgICAgICByZXR1cm4gX1BS
SU1BUllfSEVBREVSCi0gICAgIyBJZiB3ZSBhbHJlYWR5IGVuY291bnRlcmVkIGEgcHJpbWFyeSBo
ZWFkZXIsIHBlcmZvcm0gYSBzdHJpY3QgY29tcGFyaXNvbi4KLSAgICAjIEluIGNhc2UgdGhlIHR3
byBmaWxlbmFtZSBiYXNlcyBhcmUgdGhlIHNhbWUgdGhlbiB0aGUgYWJvdmUgbGVuaWVudCBjaGVj
awotICAgICMgcHJvYmFibHkgd2FzIGEgZmFsc2UgcG9zaXRpdmUuCi0gICAgZWxpZiBpbmNsdWRl
X3N0YXRlLnZpc2l0ZWRfcHJpbWFyeV9zZWN0aW9uKCkgYW5kIHRhcmdldF9iYXNlID09IGluY2x1
ZGVfYmFzZToKLSAgICAgICAgaWYgaW5jbHVkZSA9PSAiUmVzb3VyY2VIYW5kbGVXaW4uaCI6Ci0g
ICAgICAgICAgICAjIEZJWE1FOiBUaHVzIGZhciwgd2UndmUgb25seSBzZWVuIG9uZSBleGFtcGxl
IG9mIHRoZXNlLCBidXQgaWYgd2UKLSAgICAgICAgICAgICMgc3RhcnQgdG8gc2VlIG1vcmUsIHBs
ZWFzZSBjb25zaWRlciBnZW5lcmFsaXppbmcgdGhpcyBjaGVjawotICAgICAgICAgICAgIyBzb21l
aG93LgotICAgICAgICAgICAgcmV0dXJuIF9PVEhFUl9IRUFERVIKLSAgICAgICAgcmV0dXJuIF9Q
UklNQVJZX0hFQURFUgotCi0gICAgcmV0dXJuIF9PVEhFUl9IRUFERVIKLQotCi0KLWRlZiBjaGVj
a19pbmNsdWRlX2xpbmUoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgaW5jbHVk
ZV9zdGF0ZSwgZXJyb3IpOgotICAgICIiIkNoZWNrIHJ1bGVzIHRoYXQgYXJlIGFwcGxpY2FibGUg
dG8gI2luY2x1ZGUgbGluZXMuCi0KLSAgICBTdHJpbmdzIG9uICNpbmNsdWRlIGxpbmVzIGFyZSBO
T1QgcmVtb3ZlZCBmcm9tIGVsaWRlZCBsaW5lLCB0byBtYWtlCi0gICAgY2VydGFpbiB0YXNrcyBl
YXNpZXIuIEhvd2V2ZXIsIHRvIHByZXZlbnQgZmFsc2UgcG9zaXRpdmVzLCBjaGVja3MKLSAgICBh
cHBsaWNhYmxlIHRvICNpbmNsdWRlIGxpbmVzIGluIENoZWNrTGFuZ3VhZ2UgbXVzdCBiZSBwdXQg
aGVyZS4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJl
bnQgZmlsZS4KLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29u
dGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBs
aW5lIHRvIGNoZWNrLgotICAgICAgaW5jbHVkZV9zdGF0ZTogQW4gX0luY2x1ZGVTdGF0ZSBpbnN0
YW5jZSBpbiB3aGljaCB0aGUgaGVhZGVycyBhcmUgaW5zZXJ0ZWQuCi0gICAgICBlcnJvcjogVGhl
IGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICIiIgotCi0gICAg
aWYgKGZpbGVuYW1lLmZpbmQoJ1dlYktpdFRvb2xzL1dlYktpdEFQSVRlc3QvJykgPj0gMAotICAg
ICAgICBvciBmaWxlbmFtZS5maW5kKCdXZWJLaXQvcXQvUUdWTGF1bmNoZXIvJykgPj0gMCk6Ci0g
ICAgICAgICMgRmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgYXJlIGNvbnN1bWVycyBvZiB0aGUgV2Vi
S2l0IEFQSSBhbmQKLSAgICAgICAgIyB0aGVyZWZvcmUgZG8gbm90IGZvbGxvdyB0aGUgc2FtZSBo
ZWFkZXIgaW5jbHVkaW5nIGRpc2NpcGxpbmUgYXMKLSAgICAgICAgIyBXZWJDb3JlLgotICAgICAg
ICByZXR1cm4KLQotICAgIGxpbmUgPSBjbGVhbl9saW5lcy5saW5lc1tsaW5lX251bWJlcl0KLQot
ICAgIG1hdGNoZWQgPSBfUkVfUEFUVEVSTl9JTkNMVURFLnNlYXJjaChsaW5lKQotICAgIGlmIG5v
dCBtYXRjaGVkOgotICAgICAgICByZXR1cm4KLQotICAgIGluY2x1ZGUgPSBtYXRjaGVkLmdyb3Vw
KDIpCi0gICAgaXNfc3lzdGVtID0gKG1hdGNoZWQuZ3JvdXAoMSkgPT0gJzwnKQotCi0gICAgIyBM
b29rIGZvciBhbnkgb2YgdGhlIHN0cmVhbSBjbGFzc2VzIHRoYXQgYXJlIHBhcnQgb2Ygc3RhbmRh
cmQgQysrLgotICAgIGlmIG1hdGNoKHInKGZ8aW5kfGlvfGl8b3xwYXJzZXxwZnxzdGRpb3xzdHJ8
KT9zdHJlYW0kJywgaW5jbHVkZSk6Ci0gICAgICAgICMgTWFueSB1bml0IHRlc3RzIHVzZSBjb3V0
LCBzbyB3ZSBleGVtcHQgdGhlbS4KLSAgICAgICAgaWYgbm90IF9pc190ZXN0X2ZpbGVuYW1lKGZp
bGVuYW1lKToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvc3Ry
ZWFtcycsIDMsCi0gICAgICAgICAgICAgICAgICAnU3RyZWFtcyBhcmUgaGlnaGx5IGRpc2NvdXJh
Z2VkLicpCi0KLSAgICAjIExvb2sgZm9yIHNwZWNpZmljIGluY2x1ZGVzIHRvIGZpeC4KLSAgICBp
ZiBpbmNsdWRlLnN0YXJ0c3dpdGgoJ3d0Zi8nKSBhbmQgbm90IGlzX3N5c3RlbToKLSAgICAgICAg
ZXJyb3IobGluZV9udW1iZXIsICdidWlsZC9pbmNsdWRlJywgNCwKLSAgICAgICAgICAgICAgJ3d0
ZiBpbmNsdWRlcyBzaG91bGQgYmUgPHd0Zi9maWxlLmg+IGluc3RlYWQgb2YgInd0Zi9maWxlLmgi
LicpCi0KLSAgICBkdXBsaWNhdGVfaGVhZGVyID0gaW5jbHVkZSBpbiBpbmNsdWRlX3N0YXRlCi0g
ICAgaWYgZHVwbGljYXRlX2hlYWRlcjoKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdidWls
ZC9pbmNsdWRlJywgNCwKLSAgICAgICAgICAgICAgJyIlcyIgYWxyZWFkeSBpbmNsdWRlZCBhdCAl
czolcycgJQotICAgICAgICAgICAgICAoaW5jbHVkZSwgZmlsZW5hbWUsIGluY2x1ZGVfc3RhdGVb
aW5jbHVkZV0pKQotICAgIGVsc2U6Ci0gICAgICAgIGluY2x1ZGVfc3RhdGVbaW5jbHVkZV0gPSBs
aW5lX251bWJlcgotCi0gICAgaGVhZGVyX3R5cGUgPSBfY2xhc3NpZnlfaW5jbHVkZShmaWxlbmFt
ZSwgaW5jbHVkZSwgaXNfc3lzdGVtLCBpbmNsdWRlX3N0YXRlKQotICAgIGluY2x1ZGVfc3RhdGUu
aGVhZGVyX3R5cGVzW2xpbmVfbnVtYmVyXSA9IGhlYWRlcl90eXBlCi0KLSAgICAjIE9ubHkgcHJv
Y2VlZCBpZiB0aGlzIGlzbid0IGEgZHVwbGljYXRlIGhlYWRlci4KLSAgICBpZiBkdXBsaWNhdGVf
aGVhZGVyOgotICAgICAgICByZXR1cm4KLQotICAgICMgV2Ugd2FudCB0byBlbnN1cmUgdGhhdCBo
ZWFkZXJzIGFwcGVhciBpbiB0aGUgcmlnaHQgb3JkZXI6Ci0gICAgIyAxKSBmb3IgaW1wbGVtZW50
YXRpb24gZmlsZXM6IGNvbmZpZy5oLCBwcmltYXJ5IGhlYWRlciwgYmxhbmsgbGluZSwgYWxwaGFi
ZXRpY2FsbHkgc29ydGVkCi0gICAgIyAyKSBmb3IgaGVhZGVyIGZpbGVzOiBhbHBoYWJldGljYWxs
eSBzb3J0ZWQKLSAgICAjIFRoZSBpbmNsdWRlX3N0YXRlIG9iamVjdCBrZWVwcyB0cmFjayBvZiB0
aGUgbGFzdCB0eXBlIHNlZW4KLSAgICAjIGFuZCBjb21wbGFpbnMgaWYgdGhlIGhlYWRlciB0eXBl
cyBhcmUgb3V0IG9mIG9yZGVyIG9yIG1pc3NpbmcuCi0gICAgZXJyb3JfbWVzc2FnZSA9IGluY2x1
ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGhlYWRlcl90eXBlLCBmaWxlbmFtZS5l
bmRzd2l0aCgnLmgnKSkKLQotICAgICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHdlIGhhdmUgYSBibGFu
ayBsaW5lIGFmdGVyIHByaW1hcnkgaGVhZGVyLgotICAgIGlmIG5vdCBlcnJvcl9tZXNzYWdlIGFu
ZCBoZWFkZXJfdHlwZSA9PSBfUFJJTUFSWV9IRUFERVI6Ci0gICAgICAgICBuZXh0X2xpbmUgPSBj
bGVhbl9saW5lcy5yYXdfbGluZXNbbGluZV9udW1iZXIgKyAxXQotICAgICAgICAgaWYgbm90IGlz
X2JsYW5rX2xpbmUobmV4dF9saW5lKToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAn
YnVpbGQvaW5jbHVkZV9vcmRlcicsIDQsCi0gICAgICAgICAgICAgICAgICAnWW91IHNob3VsZCBh
ZGQgYSBibGFuayBsaW5lIGFmdGVyIGltcGxlbWVudGF0aW9uIGZpbGVcJ3Mgb3duIGhlYWRlci4n
KQotCi0gICAgIyBDaGVjayB0byBtYWtlIHN1cmUgYWxsIGhlYWRlcnMgYmVzaWRlcyBjb25maWcu
aCBhbmQgdGhlIHByaW1hcnkgaGVhZGVyIGFyZQotICAgICMgYWxwaGFiZXRpY2FsbHkgc29ydGVk
LiBTa2lwIFF0J3MgbW9jIGZpbGVzLgotICAgIGlmIG5vdCBlcnJvcl9tZXNzYWdlIGFuZCBoZWFk
ZXJfdHlwZSA9PSBfT1RIRVJfSEVBREVSOgotICAgICAgICAgcHJldmlvdXNfbGluZV9udW1iZXIg
PSBsaW5lX251bWJlciAtIDE7Ci0gICAgICAgICBwcmV2aW91c19saW5lID0gY2xlYW5fbGluZXMu
bGluZXNbcHJldmlvdXNfbGluZV9udW1iZXJdCi0gICAgICAgICBwcmV2aW91c19tYXRjaCA9IF9S
RV9QQVRURVJOX0lOQ0xVREUuc2VhcmNoKHByZXZpb3VzX2xpbmUpCi0gICAgICAgICB3aGlsZSAo
bm90IHByZXZpb3VzX21hdGNoIGFuZCBwcmV2aW91c19saW5lX251bWJlciA+IDAKLSAgICAgICAg
ICAgICAgICBhbmQgbm90IHNlYXJjaChyJ1xBKCNpZnwjaWZkZWZ8I2lmbmRlZnwjZWxzZXwjZWxp
ZnwjZW5kaWYpJywgcHJldmlvdXNfbGluZSkpOgotICAgICAgICAgICAgcHJldmlvdXNfbGluZV9u
dW1iZXIgLT0gMTsKLSAgICAgICAgICAgIHByZXZpb3VzX2xpbmUgPSBjbGVhbl9saW5lcy5saW5l
c1twcmV2aW91c19saW5lX251bWJlcl0KLSAgICAgICAgICAgIHByZXZpb3VzX21hdGNoID0gX1JF
X1BBVFRFUk5fSU5DTFVERS5zZWFyY2gocHJldmlvdXNfbGluZSkKLSAgICAgICAgIGlmIHByZXZp
b3VzX21hdGNoOgotICAgICAgICAgICAgcHJldmlvdXNfaGVhZGVyX3R5cGUgPSBpbmNsdWRlX3N0
YXRlLmhlYWRlcl90eXBlc1twcmV2aW91c19saW5lX251bWJlcl0KLSAgICAgICAgICAgIGlmIHBy
ZXZpb3VzX2hlYWRlcl90eXBlID09IF9PVEhFUl9IRUFERVIgYW5kIHByZXZpb3VzX2xpbmUuc3Ry
aXAoKSA+IGxpbmUuc3RyaXAoKToKLSAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwg
J2J1aWxkL2luY2x1ZGVfb3JkZXInLCA0LAotICAgICAgICAgICAgICAgICAgICAgICdBbHBoYWJl
dGljYWwgc29ydGluZyBwcm9ibGVtLicpCi0KLSAgICBpZiBlcnJvcl9tZXNzYWdlOgotICAgICAg
ICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnLmgnKToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVt
YmVyLCAnYnVpbGQvaW5jbHVkZV9vcmRlcicsIDQsCi0gICAgICAgICAgICAgICAgICAnJXMgU2hv
dWxkIGJlOiBhbHBoYWJldGljYWxseSBzb3J0ZWQuJyAlCi0gICAgICAgICAgICAgICAgICBlcnJv
cl9tZXNzYWdlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIs
ICdidWlsZC9pbmNsdWRlX29yZGVyJywgNCwKLSAgICAgICAgICAgICAgICAgICclcyBTaG91bGQg
YmU6IGNvbmZpZy5oLCBwcmltYXJ5IGhlYWRlciwgYmxhbmsgbGluZSwgYW5kIHRoZW4gYWxwaGFi
ZXRpY2FsbHkgc29ydGVkLicgJQotICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSkKLQot
Ci1kZWYgY2hlY2tfbGFuZ3VhZ2UoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwg
ZmlsZV9leHRlbnNpb24sIGluY2x1ZGVfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgZXJyb3Ip
OgotICAgICIiIkNoZWNrcyBydWxlcyBmcm9tIHRoZSAnQysrIGxhbmd1YWdlIHJ1bGVzJyBzZWN0
aW9uIG9mIGNwcGd1aWRlLmh0bWwuCi0KLSAgICBTb21lIG9mIHRoZXNlIHJ1bGVzIGFyZSBoYXJk
IHRvIHRlc3QgKGZ1bmN0aW9uIG92ZXJsb2FkaW5nLCB1c2luZwotICAgIHVpbnQzMiBpbmFwcHJv
cHJpYXRlbHkpLCBidXQgd2UgZG8gdGhlIGJlc3Qgd2UgY2FuLgotCi0gICAgQXJnczoKLSAgICAg
IGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgotICAgICAgY2xlYW5fbGlu
ZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgotICAgICAg
bGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCi0gICAgICBmaWxl
X2V4dGVuc2lvbjogVGhlIGV4dGVuc2lvbiAod2l0aG91dCB0aGUgZG90KSBvZiB0aGUgZmlsZW5h
bWUuCi0gICAgICBpbmNsdWRlX3N0YXRlOiBBbiBfSW5jbHVkZVN0YXRlIGluc3RhbmNlIGluIHdo
aWNoIHRoZSBoZWFkZXJzIGFyZSBpbnNlcnRlZC4KLSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24g
dG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCi0gICAgIiIiCi0gICAgIyBJZiB0aGUgbGlu
ZSBpcyBlbXB0eSBvciBjb25zaXN0cyBvZiBlbnRpcmVseSBhIGNvbW1lbnQsIG5vIG5lZWQgdG8K
LSAgICAjIGNoZWNrIGl0LgotICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1i
ZXJdCi0gICAgaWYgbm90IGxpbmU6Ci0gICAgICAgIHJldHVybgotCi0gICAgbWF0Y2hlZCA9IF9S
RV9QQVRURVJOX0lOQ0xVREUuc2VhcmNoKGxpbmUpCi0gICAgaWYgbWF0Y2hlZDoKLSAgICAgICAg
Y2hlY2tfaW5jbHVkZV9saW5lKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGlu
Y2x1ZGVfc3RhdGUsIGVycm9yKQotICAgICAgICByZXR1cm4KLQotICAgICMgRklYTUU6IGZpZ3Vy
ZSBvdXQgaWYgdGhleSdyZSB1c2luZyBkZWZhdWx0IGFyZ3VtZW50cyBpbiBmbiBwcm90by4KLQot
ICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZXkncmUgdXNpbmcgYW4gY29udmVyc2lvbiBmdW5jdGlv
biBjYXN0LgotICAgICMgSSBqdXN0IHRyeSB0byBjYXB0dXJlIHRoZSBtb3N0IGNvbW1vbiBiYXNp
YyB0eXBlcywgdGhvdWdoIHRoZXJlIGFyZSBtb3JlLgotICAgICMgUGFyYW1ldGVybGVzcyBjb252
ZXJzaW9uIGZ1bmN0aW9ucywgc3VjaCBhcyBib29sKCksIGFyZSBhbGxvd2VkIGFzIHRoZXkgYXJl
Ci0gICAgIyBwcm9iYWJseSBhIG1lbWJlciBvcGVyYXRvciBkZWNsYXJhdGlvbiBvciBkZWZhdWx0
IGNvbnN0cnVjdG9yLgotICAgIG1hdGNoZWQgPSBzZWFyY2goCi0gICAgICAgIHInXGIoaW50fGZs
b2F0fGRvdWJsZXxib29sfGNoYXJ8aW50MzJ8dWludDMyfGludDY0fHVpbnQ2NClcKFteKV0nLCBs
aW5lKQotICAgIGlmIG1hdGNoZWQ6Ci0gICAgICAgICMgZ01vY2sgbWV0aG9kcyBhcmUgZGVmaW5l
ZCB1c2luZyBzb21lIHZhcmlhbnQgb2YgTU9DS19NRVRIT0R4KG5hbWUsIHR5cGUpCi0gICAgICAg
ICMgd2hlcmUgdHlwZSBtYXkgYmUgZmxvYXQoKSwgaW50KHN0cmluZyksIGV0Yy4gIFdpdGhvdXQg
Y29udGV4dCB0aGV5IGFyZQotICAgICAgICAjIHZpcnR1YWxseSBpbmRpc3Rpbmd1aXNoYWJsZSBm
cm9tIGludCh4KSBjYXN0cy4KLSAgICAgICAgaWYgbm90IG1hdGNoKHInXlxzKk1PQ0tfKENPTlNU
Xyk/TUVUSE9EXGQrKF9UKT9cKCcsIGxpbmUpOgotICAgICAgICAgICAgZXJyb3IobGluZV9udW1i
ZXIsICdyZWFkYWJpbGl0eS9jYXN0aW5nJywgNCwKLSAgICAgICAgICAgICAgICAgICdVc2luZyBk
ZXByZWNhdGVkIGNhc3Rpbmcgc3R5bGUuICAnCi0gICAgICAgICAgICAgICAgICAnVXNlIHN0YXRp
Y19jYXN0PCVzPiguLi4pIGluc3RlYWQnICUKLSAgICAgICAgICAgICAgICAgIG1hdGNoZWQuZ3Jv
dXAoMSkpCi0KLSAgICBjaGVja19jX3N0eWxlX2Nhc3QoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBs
aW5lLCBjbGVhbl9saW5lcy5yYXdfbGluZXNbbGluZV9udW1iZXJdLAotICAgICAgICAgICAgICAg
ICAgICAgICAnc3RhdGljX2Nhc3QnLAotICAgICAgICAgICAgICAgICAgICAgICByJ1woKGludHxm
bG9hdHxkb3VibGV8Ym9vbHxjaGFyfHU/aW50KDE2fDMyfDY0KSlcKScsCi0gICAgICAgICAgICAg
ICAgICAgICAgIGVycm9yKQotICAgICMgVGhpcyBkb2Vzbid0IGNhdGNoIGFsbCBjYXNlcy4gIENv
bnNpZGVyIChjb25zdCBjaGFyICogY29uc3QpImhlbGxvIi4KLSAgICBjaGVja19jX3N0eWxlX2Nh
c3QoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBsaW5lLCBjbGVhbl9saW5lcy5yYXdfbGluZXNbbGlu
ZV9udW1iZXJdLAotICAgICAgICAgICAgICAgICAgICAgICAncmVpbnRlcnByZXRfY2FzdCcsIHIn
XCgoXHcrXHM/XCorXHM/KVwpJywgZXJyb3IpCi0KLSAgICAjIEluIGFkZGl0aW9uLCB3ZSBsb29r
IGZvciBwZW9wbGUgdGFraW5nIHRoZSBhZGRyZXNzIG9mIGEgY2FzdC4gIFRoaXMKLSAgICAjIGlz
IGRhbmdlcm91cyAtLSBjYXN0cyBjYW4gYXNzaWduIHRvIHRlbXBvcmFyaWVzLCBzbyB0aGUgcG9p
bnRlciBkb2Vzbid0Ci0gICAgIyBwb2ludCB3aGVyZSB5b3UgdGhpbmsuCi0gICAgaWYgc2VhcmNo
KAotICAgICAgICByJygmXChbXildK1wpW1x3KF0pfCgmKHN0YXRpY3xkeW5hbWljfHJlaW50ZXJw
cmV0KV9jYXN0XGIpJywgbGluZSk6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGlt
ZS9jYXN0aW5nJywgNCwKLSAgICAgICAgICAgICAgKCdBcmUgeW91IHRha2luZyBhbiBhZGRyZXNz
IG9mIGEgY2FzdD8gICcKLSAgICAgICAgICAgICAgICdUaGlzIGlzIGRhbmdlcm91czogY291bGQg
YmUgYSB0ZW1wIHZhci4gICcKLSAgICAgICAgICAgICAgICdUYWtlIHRoZSBhZGRyZXNzIGJlZm9y
ZSBkb2luZyB0aGUgY2FzdCwgcmF0aGVyIHRoYW4gYWZ0ZXInKSkKLQotICAgICMgQ2hlY2sgZm9y
IHBlb3BsZSBkZWNsYXJpbmcgc3RhdGljL2dsb2JhbCBTVEwgc3RyaW5ncyBhdCB0aGUgdG9wIGxl
dmVsLgotICAgICMgVGhpcyBpcyBkYW5nZXJvdXMgYmVjYXVzZSB0aGUgQysrIGxhbmd1YWdlIGRv
ZXMgbm90IGd1YXJhbnRlZSB0aGF0Ci0gICAgIyBnbG9iYWxzIHdpdGggY29uc3RydWN0b3JzIGFy
ZSBpbml0aWFsaXplZCBiZWZvcmUgdGhlIGZpcnN0IGFjY2Vzcy4KLSAgICBtYXRjaGVkID0gbWF0
Y2goCi0gICAgICAgIHInKCg/OnxzdGF0aWMgKykoPzp8Y29uc3QgKykpc3RyaW5nICsoW2EtekEt
WjAtOV86XSspXGIoLiopJywKLSAgICAgICAgbGluZSkKLSAgICAjIE1ha2Ugc3VyZSBpdCdzIG5v
dCBhIGZ1bmN0aW9uLgotICAgICMgRnVuY3Rpb24gdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gbG9v
a3MgbGlrZTogInN0cmluZyBmb288VHlwZT4oLi4uIi4KLSAgICAjIENsYXNzIHRlbXBsYXRlIGRl
ZmluaXRpb25zIGxvb2sgbGlrZTogInN0cmluZyBGb288VHlwZT46Ok1ldGhvZCguLi4iLgotICAg
IGlmIG1hdGNoZWQgYW5kIG5vdCBtYXRjaChyJ1xzKig8Lio+KT8oOjpbYS16QS1aMC05X10rKT9c
cypcKChbXiJdfCQpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5ncm91
cCgzKSk6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS9zdHJpbmcnLCA0LAot
ICAgICAgICAgICAgICAnRm9yIGEgc3RhdGljL2dsb2JhbCBzdHJpbmcgY29uc3RhbnQsIHVzZSBh
IEMgc3R5bGUgc3RyaW5nIGluc3RlYWQ6ICcKLSAgICAgICAgICAgICAgJyIlc2NoYXIgJXNbXSIu
JyAlCi0gICAgICAgICAgICAgIChtYXRjaGVkLmdyb3VwKDEpLCBtYXRjaGVkLmdyb3VwKDIpKSkK
LQotICAgICMgQ2hlY2sgdGhhdCB3ZSdyZSBub3QgdXNpbmcgUlRUSSBvdXRzaWRlIG9mIHRlc3Rp
bmcgY29kZS4KLSAgICBpZiBzZWFyY2gocidcYmR5bmFtaWNfY2FzdDwnLCBsaW5lKSBhbmQgbm90
IF9pc190ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIs
ICdydW50aW1lL3J0dGknLCA1LAotICAgICAgICAgICAgICAnRG8gbm90IHVzZSBkeW5hbWljX2Nh
c3Q8Pi4gIElmIHlvdSBuZWVkIHRvIGNhc3Qgd2l0aGluIGEgY2xhc3MgJwotICAgICAgICAgICAg
ICAiaGllcmFyY2h5LCB1c2Ugc3RhdGljX2Nhc3Q8PiB0byB1cGNhc3QuICBHb29nbGUgZG9lc24n
dCBzdXBwb3J0ICIKLSAgICAgICAgICAgICAgJ1JUVEkuJykKLQotICAgIGlmIHNlYXJjaChyJ1xi
KFtBLVphLXowLTlfXSpfKVwoXDFcKScsIGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251bWJl
ciwgJ3J1bnRpbWUvaW5pdCcsIDQsCi0gICAgICAgICAgICAgICdZb3Ugc2VlbSB0byBiZSBpbml0
aWFsaXppbmcgYSBtZW1iZXIgdmFyaWFibGUgd2l0aCBpdHNlbGYuJykKLQotICAgIGlmIGZpbGVf
ZXh0ZW5zaW9uID09ICdoJzoKLSAgICAgICAgIyBGSVhNRTogY2hlY2sgdGhhdCAxLWFyZyBjb25z
dHJ1Y3RvcnMgYXJlIGV4cGxpY2l0LgotICAgICAgICAjICAgICAgICBIb3cgdG8gdGVsbCBpdCdz
IGEgY29uc3RydWN0b3I/Ci0gICAgICAgICMgICAgICAgIChoYW5kbGVkIGluIGNoZWNrX2Zvcl9u
b25fc3RhbmRhcmRfY29uc3RydWN0cyBmb3Igbm93KQotICAgICAgICBwYXNzCi0KLSAgICAjIENo
ZWNrIGlmIHBlb3BsZSBhcmUgdXNpbmcgdGhlIHZlcmJvdGVuIEMgYmFzaWMgdHlwZXMuICBUaGUg
b25seSBleGNlcHRpb24KLSAgICAjIHdlIHJlZ3VsYXJseSBhbGxvdyBpcyAidW5zaWduZWQgc2hv
cnQgcG9ydCIgZm9yIHBvcnQuCi0gICAgaWYgc2VhcmNoKHInXGJzaG9ydCBwb3J0XGInLCBsaW5l
KToKLSAgICAgICAgaWYgbm90IHNlYXJjaChyJ1xidW5zaWduZWQgc2hvcnQgcG9ydFxiJywgbGlu
ZSk6Ci0gICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvaW50JywgNCwKLSAg
ICAgICAgICAgICAgICAgICdVc2UgInVuc2lnbmVkIHNob3J0IiBmb3IgcG9ydHMsIG5vdCAic2hv
cnQiJykKLQotICAgICMgV2hlbiBzbnByaW50ZiBpcyB1c2VkLCB0aGUgc2Vjb25kIGFyZ3VtZW50
IHNob3VsZG4ndCBiZSBhIGxpdGVyYWwuCi0gICAgbWF0Y2hlZCA9IHNlYXJjaChyJ3NucHJpbnRm
XHMqXCgoW14sXSopLFxzKihbMC05XSopXHMqLCcsIGxpbmUpCi0gICAgaWYgbWF0Y2hlZDoKLSAg
ICAgICAgZXJyb3IobGluZV9udW1iZXIsICdydW50aW1lL3ByaW50ZicsIDMsCi0gICAgICAgICAg
ICAgICdJZiB5b3UgY2FuLCB1c2Ugc2l6ZW9mKCVzKSBpbnN0ZWFkIG9mICVzIGFzIHRoZSAybmQg
YXJnICcKLSAgICAgICAgICAgICAgJ3RvIHNucHJpbnRmLicgJSAobWF0Y2hlZC5ncm91cCgxKSwg
bWF0Y2hlZC5ncm91cCgyKSkpCi0KLSAgICAjIENoZWNrIGlmIHNvbWUgdmVyYm90ZW4gQyBmdW5j
dGlvbnMgYXJlIGJlaW5nIHVzZWQuCi0gICAgaWYgc2VhcmNoKHInXGJzcHJpbnRmXGInLCBsaW5l
KToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdydW50aW1lL3ByaW50ZicsIDUsCi0gICAg
ICAgICAgICAgICdOZXZlciB1c2Ugc3ByaW50Zi4gIFVzZSBzbnByaW50ZiBpbnN0ZWFkLicpCi0g
ICAgbWF0Y2hlZCA9IHNlYXJjaChyJ1xiKHN0cmNweXxzdHJjYXQpXGInLCBsaW5lKQotICAgIGlm
IG1hdGNoZWQ6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS9wcmludGYnLCA0
LAotICAgICAgICAgICAgICAnQWxtb3N0IGFsd2F5cywgc25wcmludGYgaXMgYmV0dGVyIHRoYW4g
JXMnICUgbWF0Y2hlZC5ncm91cCgxKSkKLQotICAgIGlmIHNlYXJjaChyJ1xic3NjYW5mXGInLCBs
aW5lKToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdydW50aW1lL3ByaW50ZicsIDEsCi0g
ICAgICAgICAgICAgICdzc2NhbmYgY2FuIGJlIG9rLCBidXQgaXMgc2xvdyBhbmQgY2FuIG92ZXJm
bG93IGJ1ZmZlcnMuJykKLQotICAgICMgQ2hlY2sgZm9yIHN1c3BpY2lvdXMgdXNhZ2Ugb2YgImlm
IiBsaWtlCi0gICAgIyB9IGlmIChhID09IGIpIHsKLSAgICBpZiBzZWFyY2gocidcfVxzKmlmXHMq
XCgnLCBsaW5lKToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9icmFj
ZXMnLCA0LAotICAgICAgICAgICAgICAnRGlkIHlvdSBtZWFuICJlbHNlIGlmIj8gSWYgbm90LCBz
dGFydCBhIG5ldyBsaW5lIGZvciAiaWYiLicpCi0KLSAgICAjIENoZWNrIGZvciBwb3RlbnRpYWwg
Zm9ybWF0IHN0cmluZyBidWdzIGxpa2UgcHJpbnRmKGZvbykuCi0gICAgIyBXZSBjb25zdHJhaW4g
dGhlIHBhdHRlcm4gbm90IHRvIHBpY2sgdGhpbmdzIGxpa2UgRG9jaWRGb3JQcmludGYoZm9vKS4K
LSAgICAjIE5vdCBwZXJmZWN0IGJ1dCBpdCBjYW4gY2F0Y2ggcHJpbnRmKGZvby5jX3N0cigpKSBh
bmQgcHJpbnRmKGZvby0+Y19zdHIoKSkKLSAgICBtYXRjaGVkID0gcmUuc2VhcmNoKHInXGIoKD86
c3RyaW5nKT9wcmludGYpXHMqXCgoW1x3LlwtPigpXSspXCknLCBsaW5lLCByZS5JKQotICAgIGlm
IG1hdGNoZWQ6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS9wcmludGYnLCA0
LAotICAgICAgICAgICAgICAnUG90ZW50aWFsIGZvcm1hdCBzdHJpbmcgYnVnLiBEbyAlcygiJSVz
IiwgJXMpIGluc3RlYWQuJwotICAgICAgICAgICAgICAlIChtYXRjaGVkLmdyb3VwKDEpLCBtYXRj
aGVkLmdyb3VwKDIpKSkKLQotICAgICMgQ2hlY2sgZm9yIHBvdGVudGlhbCBtZW1zZXQgYnVncyBs
aWtlIG1lbXNldChidWYsIHNpemVvZihidWYpLCAwKS4KLSAgICBtYXRjaGVkID0gc2VhcmNoKHIn
bWVtc2V0XHMqXCgoW14sXSopLFxzKihbXixdKiksXHMqMFxzKlwpJywgbGluZSkKLSAgICBpZiBt
YXRjaGVkIGFuZCBub3QgbWF0Y2gociJeJyd8LT9bMC05XSt8MHhbMC05QS1GYS1mXSQiLCBtYXRj
aGVkLmdyb3VwKDIpKToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdydW50aW1lL21lbXNl
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
dCBpc19jb25zdDoKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS9hcnJh
eXMnLCAxLAotICAgICAgICAgICAgICAgICAgJ0RvIG5vdCB1c2UgdmFyaWFibGUtbGVuZ3RoIGFy
cmF5cy4gIFVzZSBhbiBhcHByb3ByaWF0ZWx5IG5hbWVkICcKLSAgICAgICAgICAgICAgICAgICIo
J2snIGZvbGxvd2VkIGJ5IENhbWVsQ2FzZSkgY29tcGlsZS10aW1lIGNvbnN0YW50IGZvciB0aGUg
c2l6ZS4iKQotCi0gICAgIyBDaGVjayBmb3IgdXNlIG9mIHVubmFtZWQgbmFtZXNwYWNlcyBpbiBo
ZWFkZXIgZmlsZXMuICBSZWdpc3RyYXRpb24KLSAgICAjIG1hY3JvcyBhcmUgdHlwaWNhbGx5IE9L
LCBzbyB3ZSBhbGxvdyB1c2Ugb2YgIm5hbWVzcGFjZSB7IiBvbiBsaW5lcwotICAgICMgdGhhdCBl
bmQgd2l0aCBiYWNrc2xhc2hlcy4KLSAgICBpZiAoZmlsZV9leHRlbnNpb24gPT0gJ2gnCi0gICAg
ICAgIGFuZCBzZWFyY2gocidcYm5hbWVzcGFjZVxzKnsnLCBsaW5lKQotICAgICAgICBhbmQgbGlu
ZVstMV0gIT0gJ1xcJyk6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvbmFtZXNw
YWNlcycsIDQsCi0gICAgICAgICAgICAgICdEbyBub3QgdXNlIHVubmFtZWQgbmFtZXNwYWNlcyBp
biBoZWFkZXIgZmlsZXMuICBTZWUgJwotICAgICAgICAgICAgICAnaHR0cDovL2dvb2dsZS1zdHls
ZWd1aWRlLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9jcHBndWlkZS54bWwjTmFtZXNwYWNlcycK
LSAgICAgICAgICAgICAgJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKQotCi0gICAgY2hlY2tfaWRl
bnRpZmllcl9uYW1lX2luX2RlY2xhcmF0aW9uKGZpbGVuYW1lLCBsaW5lX251bWJlciwgbGluZSwg
ZXJyb3IpCi0KLQotZGVmIGNoZWNrX2lkZW50aWZpZXJfbmFtZV9pbl9kZWNsYXJhdGlvbihmaWxl
bmFtZSwgbGluZV9udW1iZXIsIGxpbmUsIGVycm9yKToKLSAgICAiIiJDaGVja3MgaWYgaWRlbnRp
ZmllciBuYW1lcyBjb250YWluIGFueSB1bmRlcnNjb3Jlcy4KLQotICAgIEFzIGlkZW50aWZpZXJz
IGluIGxpYnJhcmllcyB3ZSBhcmUgdXNpbmcgaGF2ZSBhIGJ1bmNoIG9mCi0gICAgdW5kZXJzY29y
ZXMsIHdlIG9ubHkgd2FybiBhYm91dCB0aGUgZGVjbGFyYXRpb25zIG9mIGlkZW50aWZpZXJzCi0g
ICAgYW5kIGRvbid0IGNoZWNrIHVzZSBvZiBpZGVudGlmaWVycy4KLQotICAgIEFyZ3M6Ci0gICAg
ICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KLSAgICAgIGxpbmVfbnVt
YmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgbGluZTogVGhlIGxp
bmUgb2YgY29kZSB0byBjaGVjay4KLSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3
aXRoIGFueSBlcnJvcnMgZm91bmQuCi0gICAgIiIiCi0gICAgIyBXZSBkb24ndCBjaGVjayBhIHJl
dHVybiBzdGF0ZW1lbnQuCi0gICAgaWYgbWF0Y2gocidccyoocmV0dXJufGRlbGV0ZSlcYicsIGxp
bmUpOgotICAgICAgICByZXR1cm4KLQotICAgICMgQmFzaWNhbGx5LCBhIGRlY2xhcmF0aW9uIGlz
IGEgdHlwZSBuYW1lIGZvbGxvd2VkIGJ5IHdoaXRlc3BhY2VzCi0gICAgIyBmb2xsb3dlZCBieSBh
biBpZGVudGlmaWVyLiBUaGUgdHlwZSBuYW1lIGNhbiBiZSBjb21wbGljYXRlZAotICAgICMgZHVl
IHRvIHR5cGUgYWRqZWN0aXZlcyBhbmQgdGVtcGxhdGVzLiBXZSByZW1vdmUgdGhlbSBmaXJzdCB0
bwotICAgICMgc2ltcGxpZnkgdGhlIHByb2Nlc3MgdG8gZmluZCBkZWNsYXJhdGlvbnMgb2YgaWRl
bnRpZmllcnMuCi0KLSAgICAjIENvbnZlcnQgImxvbmcgbG9uZyIsICJsb25nIGRvdWJsZSIsIGFu
ZCAibG9uZyBsb25nIGludCIgdG8KLSAgICAjIHNpbXBsZSB0eXBlcywgYnV0IGRvbid0IHJlbW92
ZSBzaW1wbGUgImxvbmciLgotICAgIGxpbmUgPSBzdWIocidsb25nIChsb25nICk/KD89bG9uZ3xk
b3VibGV8aW50KScsICcnLCBsaW5lKQotICAgIGxpbmUgPSBzdWIocidcYih1bnNpZ25lZHxzaWdu
ZWR8aW5saW5lfHVzaW5nfHN0YXRpY3xjb25zdHx2b2xhdGlsZXxhdXRvfHJlZ2lzdGVyfGV4dGVy
bnx0eXBlZGVmfHJlc3RyaWN0fHN0cnVjdHxjbGFzc3x2aXJ0dWFsKSg/PVxXKScsICcnLCBsaW5l
KQotCi0gICAgIyBSZW1vdmUgYWxsIHRlbXBsYXRlIHBhcmFtZXRlcnMgYnkgcmVtb3ZpbmcgbWF0
Y2hpbmcgPCBhbmQgPi4KLSAgICAjIExvb3AgdW50aWwgbm8gdGVtcGxhdGVzIGFyZSByZW1vdmVk
IHRvIHJlbW92ZSBuZXN0ZWQgdGVtcGxhdGVzLgotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGxp
bmUsIG51bWJlcl9vZl9yZXBsYWNlbWVudHMgPSBzdWJuKHInPChbXHdcczpdfDo6KStccypbKiZd
KlxzKj4nLCAnJywgbGluZSkKLSAgICAgICAgaWYgbm90IG51bWJlcl9vZl9yZXBsYWNlbWVudHM6
Ci0gICAgICAgICAgICBicmVhawotCi0gICAgIyBEZWNsYXJhdGlvbnMgb2YgbG9jYWwgdmFyaWFi
bGVzIGNhbiBiZSBpbiBjb25kaXRpb24gZXhwcmVzc2lvbnMKLSAgICAjIG9mIGNvbnRyb2wgZmxv
dyBzdGF0ZW1lbnRzIChlLmcuLCAiaWYgKFJlbmRlck9iamVjdCogcCA9IG8tPnBhcmVudCgpKSIp
LgotICAgICMgV2UgcmVtb3ZlIHRoZSBrZXl3b3JkcyBhbmQgdGhlIGZpcnN0IHBhcmVudGhlc2lz
LgotICAgICMKLSAgICAjIERlY2xhcmF0aW9ucyBpbiAid2hpbGUiLCAiaWYiLCBhbmQgInN3aXRj
aCIgYXJlIGRpZmZlcmVudCBmcm9tCi0gICAgIyBvdGhlciBkZWNsYXJhdGlvbnMgaW4gdHdvIGFz
cGVjdHM6Ci0gICAgIwotICAgICMgLSBUaGVyZSBjYW4gYmUgb25seSBvbmUgZGVjbGFyYXRpb24g
YmV0d2VlbiB0aGUgcGFyZW50aGVzZXMuCi0gICAgIyAgIChpLmUuLCB5b3UgY2Fubm90IHdyaXRl
ICJpZiAoaW50IGkgPSAwLCBqID0gMSkge30iKQotICAgICMgLSBUaGUgdmFyaWFibGUgbXVzdCBi
ZSBpbml0aWFsaXplZC4KLSAgICAjICAgKGkuZS4sIHlvdSBjYW5ub3Qgd3JpdGUgImlmIChpbnQg
aSkge30iKQotICAgICMKLSAgICAjIGFuZCB3ZSB3aWxsIG5lZWQgZGlmZmVyZW50IHRyZWF0bWVu
dHMgZm9yIHRoZW0uCi0gICAgbGluZSA9IHN1YihyJ15ccypmb3JccypcKCcsICcnLCBsaW5lKQot
ICAgIGxpbmUsIGNvbnRyb2xfc3RhdGVtZW50ID0gc3VibihyJ15ccyood2hpbGV8ZWxzZSBpZnxp
Znxzd2l0Y2gpXHMqXCgnLCAnJywgbGluZSkKLQotICAgICMgRGV0ZWN0IHZhcmlhYmxlIGFuZCBm
dW5jdGlvbnMuCi0gICAgdHlwZV9yZWdleHAgPSByJ1x3KFtcd118XHMqWyomXVxzKnw6OikrJwot
ICAgIGlkZW50aWZpZXJfcmVnZXhwID0gcicoP1A8aWRlbnRpZmllcj5bXHc6XSspJwotICAgIGNo
YXJhY3Rlcl9hZnRlcl9pZGVudGlmaWVyX3JlZ2V4cCA9IHInKD9QPGNoYXJhY3Rlcl9hZnRlcl9p
ZGVudGlmaWVyPltbOygpPSxdKSg/IT0pJwotICAgIGRlY2xhcmF0aW9uX3dpdGhvdXRfdHlwZV9y
ZWdleHAgPSByJ1xzKicgKyBpZGVudGlmaWVyX3JlZ2V4cCArIHInXHMqJyArIGNoYXJhY3Rlcl9h
ZnRlcl9pZGVudGlmaWVyX3JlZ2V4cAotICAgIGRlY2xhcmF0aW9uX3dpdGhfdHlwZV9yZWdleHAg
PSByJ1xzKicgKyB0eXBlX3JlZ2V4cCArIHInXHMnICsgZGVjbGFyYXRpb25fd2l0aG91dF90eXBl
X3JlZ2V4cAotICAgIGlzX2Z1bmN0aW9uX2FyZ3VtZW50cyA9IEZhbHNlCi0gICAgbnVtYmVyX29m
X2lkZW50aWZpZXJzID0gMAotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICMgSWYgd2UgYXJlIHNl
ZWluZyB0aGUgZmlyc3QgaWRlbnRpZmllciBvciBhcmd1bWVudHMgb2YgYQotICAgICAgICAjIGZ1
bmN0aW9uLCB0aGVyZSBzaG91bGQgYmUgYSB0eXBlIG5hbWUgYmVmb3JlIGFuIGlkZW50aWZpZXIu
Ci0gICAgICAgIGlmIG5vdCBudW1iZXJfb2ZfaWRlbnRpZmllcnMgb3IgaXNfZnVuY3Rpb25fYXJn
dW1lbnRzOgotICAgICAgICAgICAgZGVjbGFyYXRpb25fcmVnZXhwID0gZGVjbGFyYXRpb25fd2l0
aF90eXBlX3JlZ2V4cAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGVjbGFyYXRpb25fcmVn
ZXhwID0gZGVjbGFyYXRpb25fd2l0aG91dF90eXBlX3JlZ2V4cAotCi0gICAgICAgIG1hdGNoZWQg
PSBtYXRjaChkZWNsYXJhdGlvbl9yZWdleHAsIGxpbmUpCi0gICAgICAgIGlmIG5vdCBtYXRjaGVk
OgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlkZW50aWZpZXIgPSBtYXRjaGVkLmdyb3Vw
KCdpZGVudGlmaWVyJykKLSAgICAgICAgY2hhcmFjdGVyX2FmdGVyX2lkZW50aWZpZXIgPSBtYXRj
aGVkLmdyb3VwKCdjaGFyYWN0ZXJfYWZ0ZXJfaWRlbnRpZmllcicpCi0KLSAgICAgICAgIyBJZiB3
ZSByZW1vdmVkIGEgbm9uLWZvci1jb250cm9sIHN0YXRlbWVudCwgdGhlIGNoYXJhY3RlciBhZnRl
cgotICAgICAgICAjIHRoZSBpZGVudGlmaWVyIHNob3VsZCBiZSAnPScuIFdpdGggdGhpcyBydWxl
LCB3ZSBjYW4gYXZvaWQKLSAgICAgICAgIyB3YXJuaW5nIGZvciBjYXNlcyBsaWtlICJpZiAodmFs
ICYgSU5UX01BWCkgeyIuCi0gICAgICAgIGlmIGNvbnRyb2xfc3RhdGVtZW50IGFuZCBjaGFyYWN0
ZXJfYWZ0ZXJfaWRlbnRpZmllciAhPSAnPSc6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAg
ICBpc19mdW5jdGlvbl9hcmd1bWVudHMgPSBpc19mdW5jdGlvbl9hcmd1bWVudHMgb3IgY2hhcmFj
dGVyX2FmdGVyX2lkZW50aWZpZXIgPT0gJygnCi0KLSAgICAgICAgIyBSZW1vdmUgIm1fIiBhbmQg
InNfIiB0byBhbGxvdyB0aGVtLgotICAgICAgICBtb2RpZmllZF9pZGVudGlmaWVyID0gc3ViKHIn
KF58KD88PTo6KSlbbXNdXycsICcnLCBpZGVudGlmaWVyKQotICAgICAgICBpZiBtb2RpZmllZF9p
ZGVudGlmaWVyLmZpbmQoJ18nKSA+PSAwOgotICAgICAgICAgICAgIyBWYXJpb3VzIGV4Y2VwdGlv
bnMgdG8gdGhlIHJ1bGU6IEphdmFTY3JpcHQgb3AgY29kZXMgZnVuY3Rpb25zLCBjb25zdF9pdGVy
YXRvci4KLSAgICAgICAgICAgIGlmIChub3QgKGZpbGVuYW1lLmZpbmQoJ0phdmFTY3JpcHRDb3Jl
JykgPj0gMCBhbmQgbW9kaWZpZWRfaWRlbnRpZmllci5maW5kKCdfb3BfJykgPj0gMCkKLSAgICAg
ICAgICAgICAgICBhbmQgbm90IGZpbGVuYW1lLmZpbmQoJ1dlYktpdC9ndGsvd2Via2l0LycpID49
IDAKLSAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIuc3RhcnRzd2l0
aCgndHN0XycpCi0gICAgICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0
YXJ0c3dpdGgoJ3dlYmtpdF9kb21fb2JqZWN0XycpCi0gICAgICAgICAgICAgICAgYW5kIG5vdCBt
b2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ3F0XycpCi0gICAgICAgICAgICAgICAgYW5k
IG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLmZpbmQoJzo6cXRfJykgPj0gMAotICAgICAgICAgICAg
ICAgIGFuZCBub3QgbW9kaWZpZWRfaWRlbnRpZmllciA9PSAiY29uc3RfaXRlcmF0b3IiKToKLSAg
ICAgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L25hbWluZycsIDQs
IGlkZW50aWZpZXIgKyAiIGlzIGluY29ycmVjdGx5IG5hbWVkLiBEb24ndCB1c2UgdW5kZXJzY29y
ZXMgaW4geW91ciBpZGVudGlmaWVyIG5hbWVzLiIpCi0KLSAgICAgICAgIyBUaGVyZSBjYW4gYmUg
b25seSBvbmUgZGVjbGFyYXRpb24gaW4gbm9uLWZvci1jb250cm9sIHN0YXRlbWVudHMuCi0gICAg
ICAgIGlmIGNvbnRyb2xfc3RhdGVtZW50OgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICMg
V2Ugc2hvdWxkIGNvbnRpbnVlIGNoZWNraW5nIGlmIHRoaXMgaXMgYSBmdW5jdGlvbgotICAgICAg
ICAjIGRlY2xhcmF0aW9uIGJlY2F1c2Ugd2UgbmVlZCB0byBjaGVjayBpdHMgYXJndW1lbnRzLgot
ICAgICAgICAjIEFsc28sIHdlIG5lZWQgdG8gY2hlY2sgbXVsdGlwbGUgZGVjbGFyYXRpb25zLgot
ICAgICAgICBpZiBjaGFyYWN0ZXJfYWZ0ZXJfaWRlbnRpZmllciAhPSAnKCcgYW5kIGNoYXJhY3Rl
cl9hZnRlcl9pZGVudGlmaWVyICE9ICcsJzoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAg
IG51bWJlcl9vZl9pZGVudGlmaWVycyArPSAxCi0gICAgICAgIGxpbmUgPSBsaW5lW21hdGNoZWQu
ZW5kKCk6XQotCi0KLWRlZiBjaGVja19jX3N0eWxlX2Nhc3QoZmlsZW5hbWUsIGxpbmVfbnVtYmVy
LCBsaW5lLCByYXdfbGluZSwgY2FzdF90eXBlLCBwYXR0ZXJuLAotICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvcik6Ci0gICAgIiIiQ2hlY2tzIGZvciBhIEMtc3R5bGUgY2FzdCBieSBsb29raW5n
IGZvciB0aGUgcGF0dGVybi4KLQotICAgIFRoaXMgYWxzbyBoYW5kbGVzIHNpemVvZih0eXBlKSB3
YXJuaW5ncywgZHVlIHRvIHNpbWlsYXJpdHkgb2YgY29udGVudC4KLQotICAgIEFyZ3M6Ci0gICAg
ICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KLSAgICAgIGxpbmVfbnVt
YmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgbGluZTogVGhlIGxp
bmUgb2YgY29kZSB0byBjaGVjay4KLSAgICAgIHJhd19saW5lOiBUaGUgcmF3IGxpbmUgb2YgY29k
ZSB0byBjaGVjaywgd2l0aCBjb21tZW50cy4KLSAgICAgIGNhc3RfdHlwZTogVGhlIHN0cmluZyBm
b3IgdGhlIEMrKyBjYXN0IHRvIHJlY29tbWVuZC4gIFRoaXMgaXMgZWl0aGVyCi0gICAgICAgICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Qgb3Igc3RhdGljX2Nhc3QsIGRlcGVuZGluZy4KLSAgICAg
IHBhdHRlcm46IFRoZSByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byBmaW5kIEMtc3R5bGUgY2Fz
dHMuCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZv
dW5kLgotICAgICIiIgotICAgIG1hdGNoZWQgPSBzZWFyY2gocGF0dGVybiwgbGluZSkKLSAgICBp
ZiBub3QgbWF0Y2hlZDoKLSAgICAgICAgcmV0dXJuCi0KLSAgICAjIGUuZy4sIHNpemVvZihpbnQp
Ci0gICAgc2l6ZW9mX21hdGNoID0gbWF0Y2gocicuKnNpemVvZlxzKiQnLCBsaW5lWzA6bWF0Y2hl
ZC5zdGFydCgxKSAtIDFdKQotICAgIGlmIHNpemVvZl9tYXRjaDoKLSAgICAgICAgZXJyb3IobGlu
ZV9udW1iZXIsICdydW50aW1lL3NpemVvZicsIDEsCi0gICAgICAgICAgICAgICdVc2luZyBzaXpl
b2YodHlwZSkuICBVc2Ugc2l6ZW9mKHZhcm5hbWUpIGluc3RlYWQgaWYgcG9zc2libGUnKQotICAg
ICAgICByZXR1cm4KLQotICAgIHJlbWFpbmRlciA9IGxpbmVbbWF0Y2hlZC5lbmQoMCk6XQotCi0g
ICAgIyBUaGUgY2xvc2UgcGFyZW4gaXMgZm9yIGZ1bmN0aW9uIHBvaW50ZXJzIGFzIGFyZ3VtZW50
cyB0byBhIGZ1bmN0aW9uLgotICAgICMgZWcsIHZvaWQgZm9vKHZvaWQgKCpiYXIpKGludCkpOwot
ICAgICMgVGhlIHNlbWljb2xvbiBjaGVjayBpcyBhIG1vcmUgYmFzaWMgZnVuY3Rpb24gY2hlY2s7
IGFsc28gcG9zc2libHkgYQotICAgICMgZnVuY3Rpb24gcG9pbnRlciB0eXBlZGVmLgotICAgICMg
ZWcsIHZvaWQgZm9vKGludCk7IG9yIHZvaWQgZm9vKGludCkgY29uc3Q7Ci0gICAgIyBUaGUgZXF1
YWxzIGNoZWNrIGlzIGZvciBmdW5jdGlvbiBwb2ludGVyIGFzc2lnbm1lbnQuCi0gICAgIyBlZywg
dm9pZCAqKCpmb28pKGludCkgPSAuLi4KLSAgICAjCi0gICAgIyBSaWdodCBub3csIHRoaXMgd2ls
bCBvbmx5IGNhdGNoIGNhc2VzIHdoZXJlIHRoZXJlJ3MgYSBzaW5nbGUgYXJndW1lbnQsIGFuZAot
ICAgICMgaXQncyB1bm5hbWVkLiAgSXQgc2hvdWxkIHByb2JhYmx5IGJlIGV4cGFuZGVkIHRvIGNo
ZWNrIGZvciBtdWx0aXBsZQotICAgICMgYXJndW1lbnRzIHdpdGggc29tZSB1bm5hbWVkLgotICAg
IGZ1bmN0aW9uX21hdGNoID0gbWF0Y2gocidccyooXCl8PXwoY29uc3QpP1xzKig7fFx7fHRocm93
XChcKSkpJywgcmVtYWluZGVyKQotICAgIGlmIGZ1bmN0aW9uX21hdGNoOgotICAgICAgICBpZiAo
bm90IGZ1bmN0aW9uX21hdGNoLmdyb3VwKDMpCi0gICAgICAgICAgICBvciBmdW5jdGlvbl9tYXRj
aC5ncm91cCgzKSA9PSAnOycKLSAgICAgICAgICAgIG9yIHJhd19saW5lLmZpbmQoJy8qJykgPCAw
KToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvZnVuY3Rpb24n
LCAzLAotICAgICAgICAgICAgICAgICAgJ0FsbCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBuYW1lZCBp
biBhIGZ1bmN0aW9uJykKLSAgICAgICAgcmV0dXJuCi0KLSAgICAjIEF0IHRoaXMgcG9pbnQsIGFs
bCB0aGF0IHNob3VsZCBiZSBsZWZ0IGlzIGFjdHVhbCBjYXN0cy4KLSAgICBlcnJvcihsaW5lX251
bWJlciwgJ3JlYWRhYmlsaXR5L2Nhc3RpbmcnLCA0LAotICAgICAgICAgICdVc2luZyBDLXN0eWxl
IGNhc3QuICBVc2UgJXM8JXM+KC4uLikgaW5zdGVhZCcgJQotICAgICAgICAgIChjYXN0X3R5cGUs
IG1hdGNoZWQuZ3JvdXAoMSkpKQotCi0KLV9IRUFERVJTX0NPTlRBSU5JTkdfVEVNUExBVEVTID0g
KAotICAgICgnPGRlcXVlPicsICgnZGVxdWUnLCkpLAotICAgICgnPGZ1bmN0aW9uYWw+JywgKCd1
bmFyeV9mdW5jdGlvbicsICdiaW5hcnlfZnVuY3Rpb24nLAotICAgICAgICAgICAgICAgICAgICAg
ICdwbHVzJywgJ21pbnVzJywgJ211bHRpcGxpZXMnLCAnZGl2aWRlcycsICdtb2R1bHVzJywKLSAg
ICAgICAgICAgICAgICAgICAgICAnbmVnYXRlJywKLSAgICAgICAgICAgICAgICAgICAgICAnZXF1
YWxfdG8nLCAnbm90X2VxdWFsX3RvJywgJ2dyZWF0ZXInLCAnbGVzcycsCi0gICAgICAgICAgICAg
ICAgICAgICAgJ2dyZWF0ZXJfZXF1YWwnLCAnbGVzc19lcXVhbCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgJ2xvZ2ljYWxfYW5kJywgJ2xvZ2ljYWxfb3InLCAnbG9naWNhbF9ub3QnLAotICAgICAg
ICAgICAgICAgICAgICAgICd1bmFyeV9uZWdhdGUnLCAnbm90MScsICdiaW5hcnlfbmVnYXRlJywg
J25vdDInLAotICAgICAgICAgICAgICAgICAgICAgICdiaW5kMXN0JywgJ2JpbmQybmQnLAotICAg
ICAgICAgICAgICAgICAgICAgICdwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uJywKLSAgICAgICAg
ICAgICAgICAgICAgICAncG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24nLAotICAgICAgICAgICAg
ICAgICAgICAgICdwdHJfZnVuJywKLSAgICAgICAgICAgICAgICAgICAgICAnbWVtX2Z1bl90Jywg
J21lbV9mdW4nLCAnbWVtX2Z1bjFfdCcsICdtZW1fZnVuMV9yZWZfdCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgJ21lbV9mdW5fcmVmX3QnLAotICAgICAgICAgICAgICAgICAgICAgICdjb25zdF9t
ZW1fZnVuX3QnLCAnY29uc3RfbWVtX2Z1bjFfdCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ2Nv
bnN0X21lbV9mdW5fcmVmX3QnLCAnY29uc3RfbWVtX2Z1bjFfcmVmX3QnLAotICAgICAgICAgICAg
ICAgICAgICAgICdtZW1fZnVuX3JlZicsCi0gICAgICAgICAgICAgICAgICAgICApKSwKLSAgICAo
JzxsaW1pdHM+JywgKCdudW1lcmljX2xpbWl0cycsKSksCi0gICAgKCc8bGlzdD4nLCAoJ2xpc3Qn
LCkpLAotICAgICgnPG1hcD4nLCAoJ21hcCcsICdtdWx0aW1hcCcsKSksCi0gICAgKCc8bWVtb3J5
PicsICgnYWxsb2NhdG9yJywpKSwKLSAgICAoJzxxdWV1ZT4nLCAoJ3F1ZXVlJywgJ3ByaW9yaXR5
X3F1ZXVlJywpKSwKLSAgICAoJzxzZXQ+JywgKCdzZXQnLCAnbXVsdGlzZXQnLCkpLAotICAgICgn
PHN0YWNrPicsICgnc3RhY2snLCkpLAotICAgICgnPHN0cmluZz4nLCAoJ2NoYXJfdHJhaXRzJywg
J2Jhc2ljX3N0cmluZycsKSksCi0gICAgKCc8dXRpbGl0eT4nLCAoJ3BhaXInLCkpLAotICAgICgn
PHZlY3Rvcj4nLCAoJ3ZlY3RvcicsKSksCi0KLSAgICAjIGdjYyBleHRlbnNpb25zLgotICAgICMg
Tm90ZTogc3RkOjpoYXNoIGlzIHRoZWlyIGhhc2gsIDo6aGFzaCBpcyBvdXIgaGFzaAotICAgICgn
PGhhc2hfbWFwPicsICgnaGFzaF9tYXAnLCAnaGFzaF9tdWx0aW1hcCcsKSksCi0gICAgKCc8aGFz
aF9zZXQ+JywgKCdoYXNoX3NldCcsICdoYXNoX211bHRpc2V0JywpKSwKLSAgICAoJzxzbGlzdD4n
LCAoJ3NsaXN0JywpKSwKLSAgICApCi0KLV9IRUFERVJTX0FDQ0VQVEVEX0JVVF9OT1RfUFJPTU9U
RUQgPSB7Ci0gICAgIyBXZSBjYW4gdHJ1c3Qgd2l0aCByZWFzb25hYmxlIGNvbmZpZGVuY2UgdGhh
dCBtYXAgZ2l2ZXMgdXMgcGFpcjw+LCB0b28uCi0gICAgJ3BhaXI8Pic6ICgnbWFwJywgJ211bHRp
bWFwJywgJ2hhc2hfbWFwJywgJ2hhc2hfbXVsdGltYXAnKQotfQotCi1fUkVfUEFUVEVSTl9TVFJJ
TkcgPSByZS5jb21waWxlKHInXGJzdHJpbmdcYicpCi0KLV9yZV9wYXR0ZXJuX2FsZ29yaXRobV9o
ZWFkZXIgPSBbXQotZm9yIF90ZW1wbGF0ZSBpbiAoJ2NvcHknLCAnbWF4JywgJ21pbicsICdtaW5f
ZWxlbWVudCcsICdzb3J0JywgJ3N3YXAnLAotICAgICAgICAgICAgICAgICAgJ3RyYW5zZm9ybScp
OgotICAgICMgTWF0Y2ggbWF4PHR5cGU+KC4uLiwgLi4uKSwgbWF4KC4uLiwgLi4uKSwgYnV0IG5v
dCBmb28tPm1heCwgZm9vLm1heCBvcgotICAgICMgdHlwZTo6bWF4KCkuCi0gICAgX3JlX3BhdHRl
cm5fYWxnb3JpdGhtX2hlYWRlci5hcHBlbmQoCi0gICAgICAgIChyZS5jb21waWxlKHInW14+Ll1c
YicgKyBfdGVtcGxhdGUgKyByJyg8Lio/Pik/XChbXlwpXScpLAotICAgICAgICAgX3RlbXBsYXRl
LAotICAgICAgICAgJzxhbGdvcml0aG0+JykpCi0KLV9yZV9wYXR0ZXJuX3RlbXBsYXRlcyA9IFtd
Ci1mb3IgX2hlYWRlciwgX3RlbXBsYXRlcyBpbiBfSEVBREVSU19DT05UQUlOSU5HX1RFTVBMQVRF
UzoKLSAgICBmb3IgX3RlbXBsYXRlIGluIF90ZW1wbGF0ZXM6Ci0gICAgICAgIF9yZV9wYXR0ZXJu
X3RlbXBsYXRlcy5hcHBlbmQoCi0gICAgICAgICAgICAocmUuY29tcGlsZShyJyhcPHxcYiknICsg
X3RlbXBsYXRlICsgcidccypcPCcpLAotICAgICAgICAgICAgIF90ZW1wbGF0ZSArICc8PicsCi0g
ICAgICAgICAgICAgX2hlYWRlcikpCi0KLQotZGVmIGZpbGVzX2JlbG9uZ190b19zYW1lX21vZHVs
ZShmaWxlbmFtZV9jcHAsIGZpbGVuYW1lX2gpOgotICAgICIiIkNoZWNrIGlmIHRoZXNlIHR3byBm
aWxlbmFtZXMgYmVsb25nIHRvIHRoZSBzYW1lIG1vZHVsZS4KLQotICAgIFRoZSBjb25jZXB0IG9m
IGEgJ21vZHVsZScgaGVyZSBpcyBhIGFzIGZvbGxvd3M6Ci0gICAgZm9vLmgsIGZvby1pbmwuaCwg
Zm9vLmNwcCwgZm9vX3Rlc3QuY3BwIGFuZCBmb29fdW5pdHRlc3QuY3BwIGJlbG9uZyB0byB0aGUK
LSAgICBzYW1lICdtb2R1bGUnIGlmIHRoZXkgYXJlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KLSAg
ICBzb21lL3BhdGgvcHVibGljL3h5enp5IGFuZCBzb21lL3BhdGgvaW50ZXJuYWwveHl6enkgYXJl
IGFsc28gY29uc2lkZXJlZAotICAgIHRvIGJlbG9uZyB0byB0aGUgc2FtZSBtb2R1bGUgaGVyZS4K
LQotICAgIElmIHRoZSBmaWxlbmFtZV9jcHAgY29udGFpbnMgYSBsb25nZXIgcGF0aCB0aGFuIHRo
ZSBmaWxlbmFtZV9oLCBmb3IgZXhhbXBsZSwKLSAgICAnL2Fic29sdXRlL3BhdGgvdG8vYmFzZS9z
eXNpbmZvLmNwcCcsIGFuZCB0aGlzIGZpbGUgd291bGQgaW5jbHVkZQotICAgICdiYXNlL3N5c2lu
Zm8uaCcsIHRoaXMgZnVuY3Rpb24gYWxzbyBwcm9kdWNlcyB0aGUgcHJlZml4IG5lZWRlZCB0byBv
cGVuIHRoZQotICAgIGhlYWRlci4gVGhpcyBpcyB1c2VkIGJ5IHRoZSBjYWxsZXIgb2YgdGhpcyBm
dW5jdGlvbiB0byBtb3JlIHJvYnVzdGx5IG9wZW4gdGhlCi0gICAgaGVhZGVyIGZpbGUuIFdlIGRv
bid0IGhhdmUgYWNjZXNzIHRvIHRoZSByZWFsIGluY2x1ZGUgcGF0aHMgaW4gdGhpcyBjb250ZXh0
LAotICAgIHNvIHdlIG5lZWQgdGhpcyBndWVzc3dvcmsgaGVyZS4KLQotICAgIEtub3duIGJ1Z3M6
IHRvb2xzL2Jhc2UvYmFyLmNwcCBhbmQgYmFzZS9iYXIuaCBiZWxvbmcgdG8gdGhlIHNhbWUgbW9k
dWxlCi0gICAgYWNjb3JkaW5nIHRvIHRoaXMgaW1wbGVtZW50YXRpb24uIEJlY2F1c2Ugb2YgdGhp
cywgdGhpcyBmdW5jdGlvbiBnaXZlcwotICAgIHNvbWUgZmFsc2UgcG9zaXRpdmVzLiBUaGlzIHNo
b3VsZCBiZSBzdWZmaWNpZW50bHkgcmFyZSBpbiBwcmFjdGljZS4KLQotICAgIEFyZ3M6Ci0gICAg
ICBmaWxlbmFtZV9jcHA6IGlzIHRoZSBwYXRoIGZvciB0aGUgLmNwcCBmaWxlCi0gICAgICBmaWxl
bmFtZV9oOiBpcyB0aGUgcGF0aCBmb3IgdGhlIGhlYWRlciBwYXRoCi0KLSAgICBSZXR1cm5zOgot
ICAgICAgVHVwbGUgd2l0aCBhIGJvb2wgYW5kIGEgc3RyaW5nOgotICAgICAgYm9vbDogVHJ1ZSBp
ZiBmaWxlbmFtZV9jcHAgYW5kIGZpbGVuYW1lX2ggYmVsb25nIHRvIHRoZSBzYW1lIG1vZHVsZS4K
LSAgICAgIHN0cmluZzogdGhlIGFkZGl0aW9uYWwgcHJlZml4IG5lZWRlZCB0byBvcGVuIHRoZSBo
ZWFkZXIgZmlsZS4KLSAgICAiIiIKLQotICAgIGlmIG5vdCBmaWxlbmFtZV9jcHAuZW5kc3dpdGgo
Jy5jcHAnKToKLSAgICAgICAgcmV0dXJuIChGYWxzZSwgJycpCi0gICAgZmlsZW5hbWVfY3BwID0g
ZmlsZW5hbWVfY3BwWzotbGVuKCcuY3BwJyldCi0gICAgaWYgZmlsZW5hbWVfY3BwLmVuZHN3aXRo
KCdfdW5pdHRlc3QnKToKLSAgICAgICAgZmlsZW5hbWVfY3BwID0gZmlsZW5hbWVfY3BwWzotbGVu
KCdfdW5pdHRlc3QnKV0KLSAgICBlbGlmIGZpbGVuYW1lX2NwcC5lbmRzd2l0aCgnX3Rlc3QnKToK
LSAgICAgICAgZmlsZW5hbWVfY3BwID0gZmlsZW5hbWVfY3BwWzotbGVuKCdfdGVzdCcpXQotICAg
IGZpbGVuYW1lX2NwcCA9IGZpbGVuYW1lX2NwcC5yZXBsYWNlKCcvcHVibGljLycsICcvJykKLSAg
ICBmaWxlbmFtZV9jcHAgPSBmaWxlbmFtZV9jcHAucmVwbGFjZSgnL2ludGVybmFsLycsICcvJykK
LQotICAgIGlmIG5vdCBmaWxlbmFtZV9oLmVuZHN3aXRoKCcuaCcpOgotICAgICAgICByZXR1cm4g
KEZhbHNlLCAnJykKLSAgICBmaWxlbmFtZV9oID0gZmlsZW5hbWVfaFs6LWxlbignLmgnKV0KLSAg
ICBpZiBmaWxlbmFtZV9oLmVuZHN3aXRoKCctaW5sJyk6Ci0gICAgICAgIGZpbGVuYW1lX2ggPSBm
aWxlbmFtZV9oWzotbGVuKCctaW5sJyldCi0gICAgZmlsZW5hbWVfaCA9IGZpbGVuYW1lX2gucmVw
bGFjZSgnL3B1YmxpYy8nLCAnLycpCi0gICAgZmlsZW5hbWVfaCA9IGZpbGVuYW1lX2gucmVwbGFj
ZSgnL2ludGVybmFsLycsICcvJykKLQotICAgIGZpbGVzX2JlbG9uZ190b19zYW1lX21vZHVsZSA9
IGZpbGVuYW1lX2NwcC5lbmRzd2l0aChmaWxlbmFtZV9oKQotICAgIGNvbW1vbl9wYXRoID0gJycK
LSAgICBpZiBmaWxlc19iZWxvbmdfdG9fc2FtZV9tb2R1bGU6Ci0gICAgICAgIGNvbW1vbl9wYXRo
ID0gZmlsZW5hbWVfY3BwWzotbGVuKGZpbGVuYW1lX2gpXQotICAgIHJldHVybiBmaWxlc19iZWxv
bmdfdG9fc2FtZV9tb2R1bGUsIGNvbW1vbl9wYXRoCi0KLQotZGVmIHVwZGF0ZV9pbmNsdWRlX3N0
YXRlKGZpbGVuYW1lLCBpbmNsdWRlX3N0YXRlLCBpbz1jb2RlY3MpOgotICAgICIiIkZpbGwgdXAg
dGhlIGluY2x1ZGVfc3RhdGUgd2l0aCBuZXcgaW5jbHVkZXMgZm91bmQgZnJvbSB0aGUgZmlsZS4K
LQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogdGhlIG5hbWUgb2YgdGhlIGhlYWRlciB0byBy
ZWFkLgotICAgICAgaW5jbHVkZV9zdGF0ZTogYW4gX0luY2x1ZGVTdGF0ZSBpbnN0YW5jZSBpbiB3
aGljaCB0aGUgaGVhZGVycyBhcmUgaW5zZXJ0ZWQuCi0gICAgICBpbzogVGhlIGlvIGZhY3Rvcnkg
dG8gdXNlIHRvIHJlYWQgdGhlIGZpbGUuIFByb3ZpZGVkIGZvciB0ZXN0YWJpbGl0eS4KLQotICAg
IFJldHVybnM6Ci0gICAgICBUcnVlIGlmIGEgaGVhZGVyIHdhcyBzdWNjZXNmdWxseSBhZGRlZC4g
RmFsc2Ugb3RoZXJ3aXNlLgotICAgICIiIgotICAgIGhlYWRlcl9maWxlID0gTm9uZQotICAgIHRy
eToKLSAgICAgICAgaGVhZGVyX2ZpbGUgPSBpby5vcGVuKGZpbGVuYW1lLCAncicsICd1dGY4Jywg
J3JlcGxhY2UnKQotICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAg
ICBsaW5lX251bWJlciA9IDAKLSAgICBmb3IgbGluZSBpbiBoZWFkZXJfZmlsZToKLSAgICAgICAg
bGluZV9udW1iZXIgKz0gMQotICAgICAgICBjbGVhbl9saW5lID0gY2xlYW5zZV9jb21tZW50cyhs
aW5lKQotICAgICAgICBtYXRjaGVkID0gX1JFX1BBVFRFUk5fSU5DTFVERS5zZWFyY2goY2xlYW5f
bGluZSkKLSAgICAgICAgaWYgbWF0Y2hlZDoKLSAgICAgICAgICAgIGluY2x1ZGUgPSBtYXRjaGVk
Lmdyb3VwKDIpCi0gICAgICAgICAgICAjIFRoZSB2YWx1ZSBmb3JtYXR0aW5nIGlzIGN1dGUsIGJ1
dCBub3QgcmVhbGx5IHVzZWQgcmlnaHQgbm93LgotICAgICAgICAgICAgIyBXaGF0IG1hdHRlcnMg
aGVyZSBpcyB0aGF0IHRoZSBrZXkgaXMgaW4gaW5jbHVkZV9zdGF0ZS4KLSAgICAgICAgICAgIGlu
Y2x1ZGVfc3RhdGUuc2V0ZGVmYXVsdChpbmNsdWRlLCAnJXM6JWQnICUgKGZpbGVuYW1lLCBsaW5l
X251bWJlcikpCi0gICAgcmV0dXJuIFRydWUKLQotCi1kZWYgY2hlY2tfZm9yX2luY2x1ZGVfd2hh
dF95b3VfdXNlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgaW5jbHVkZV9zdGF0ZSwgZXJyb3IsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvPWNvZGVjcyk6Ci0gICAgIiIiUmVw
b3J0cyBmb3IgbWlzc2luZyBzdGwgaW5jbHVkZXMuCi0KLSAgICBUaGlzIGZ1bmN0aW9uIHdpbGwg
b3V0cHV0IHdhcm5pbmdzIHRvIG1ha2Ugc3VyZSB5b3UgYXJlIGluY2x1ZGluZyB0aGUgaGVhZGVy
cwotICAgIG5lY2Vzc2FyeSBmb3IgdGhlIHN0bCBjb250YWluZXJzIGFuZCBmdW5jdGlvbnMgdGhh
dCB5b3UgdXNlLiBXZSBvbmx5IGdpdmUgb25lCi0gICAgcmVhc29uIHRvIGluY2x1ZGUgYSBoZWFk
ZXIuIEZvciBleGFtcGxlLCBpZiB5b3UgdXNlIGJvdGggZXF1YWxfdG88PiBhbmQKLSAgICBsZXNz
PD4gaW4gYSAuaCBmaWxlLCBvbmx5IG9uZSAodGhlIGxhdHRlciBpbiB0aGUgZmlsZSkgb2YgdGhl
c2Ugd2lsbCBiZQotICAgIHJlcG9ydGVkIGFzIGEgcmVhc29uIHRvIGluY2x1ZGUgdGhlIDxmdW5j
dGlvbmFsPi4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1
cnJlbnQgZmlsZS4KLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2Ug
Y29udGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGluY2x1ZGVfc3RhdGU6IEFuIF9JbmNsdWRlU3Rh
dGUgaW5zdGFuY2UuCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkg
ZXJyb3JzIGZvdW5kLgotICAgICAgaW86IFRoZSBJTyBmYWN0b3J5IHRvIHVzZSB0byByZWFkIHRo
ZSBoZWFkZXIgZmlsZS4gUHJvdmlkZWQgZm9yIHVuaXR0ZXN0Ci0gICAgICAgICAgaW5qZWN0aW9u
LgotICAgICIiIgotICAgIHJlcXVpcmVkID0ge30gICMgQSBtYXAgb2YgaGVhZGVyIG5hbWUgdG8g
bGluZV9udW1iZXIgYW5kIHRoZSB0ZW1wbGF0ZSBlbnRpdHkuCi0gICAgICAgICMgRXhhbXBsZSBv
ZiByZXF1aXJlZDogeyAnPGZ1bmN0aW9uYWw+JzogKDEyMTksICdsZXNzPD4nKSB9Ci0KLSAgICBm
b3IgbGluZV9udW1iZXIgaW4geHJhbmdlKGNsZWFuX2xpbmVzLm51bV9saW5lcygpKToKLSAgICAg
ICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0KLSAgICAgICAgaWYgbm90
IGxpbmUgb3IgbGluZVswXSA9PSAnIyc6Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAg
ICMgU3RyaW5nIGlzIHNwZWNpYWwgLS0gaXQgaXMgYSBub24tdGVtcGxhdGl6ZWQgdHlwZSBpbiBT
VEwuCi0gICAgICAgIGlmIF9SRV9QQVRURVJOX1NUUklORy5zZWFyY2gobGluZSk6Ci0gICAgICAg
ICAgICByZXF1aXJlZFsnPHN0cmluZz4nXSA9IChsaW5lX251bWJlciwgJ3N0cmluZycpCi0KLSAg
ICAgICAgZm9yIHBhdHRlcm4sIHRlbXBsYXRlLCBoZWFkZXIgaW4gX3JlX3BhdHRlcm5fYWxnb3Jp
dGhtX2hlYWRlcjoKLSAgICAgICAgICAgIGlmIHBhdHRlcm4uc2VhcmNoKGxpbmUpOgotICAgICAg
ICAgICAgICAgIHJlcXVpcmVkW2hlYWRlcl0gPSAobGluZV9udW1iZXIsIHRlbXBsYXRlKQotCi0g
ICAgICAgICMgVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBqdXN0IGEgc3BlZWQgdXAsIG5vIHNl
bWFudGljcyBhcmUgY2hhbmdlZC4KLSAgICAgICAgaWYgbm90ICc8JyBpbiBsaW5lOiAgIyBSZWR1
Y2VzIHRoZSBjcHUgdGltZSB1c2FnZSBieSBza2lwcGluZyBsaW5lcy4KLSAgICAgICAgICAgIGNv
bnRpbnVlCi0KLSAgICAgICAgZm9yIHBhdHRlcm4sIHRlbXBsYXRlLCBoZWFkZXIgaW4gX3JlX3Bh
dHRlcm5fdGVtcGxhdGVzOgotICAgICAgICAgICAgaWYgcGF0dGVybi5zZWFyY2gobGluZSk6Ci0g
ICAgICAgICAgICAgICAgcmVxdWlyZWRbaGVhZGVyXSA9IChsaW5lX251bWJlciwgdGVtcGxhdGUp
Ci0KLSAgICAjIFRoZSBwb2xpY3kgaXMgdGhhdCBpZiB5b3UgI2luY2x1ZGUgc29tZXRoaW5nIGlu
IGZvby5oIHlvdSBkb24ndCBuZWVkIHRvCi0gICAgIyBpbmNsdWRlIGl0IGFnYWluIGluIGZvby5j
cHAuIEhlcmUsIHdlIHdpbGwgbG9vayBhdCBwb3NzaWJsZSBpbmNsdWRlcy4KLSAgICAjIExldCdz
IGNvcHkgdGhlIGluY2x1ZGVfc3RhdGUgc28gaXQgaXMgb25seSBtZXNzZWQgdXAgd2l0aGluIHRo
aXMgZnVuY3Rpb24uCi0gICAgaW5jbHVkZV9zdGF0ZSA9IGluY2x1ZGVfc3RhdGUuY29weSgpCi0K
LSAgICAjIERpZCB3ZSBmaW5kIHRoZSBoZWFkZXIgZm9yIHRoaXMgZmlsZSAoaWYgYW55KSBhbmQg
c3VjY2VzZnVsbHkgbG9hZCBpdD8KLSAgICBoZWFkZXJfZm91bmQgPSBGYWxzZQotCi0gICAgIyBV
c2UgdGhlIGFic29sdXRlIHBhdGggc28gdGhhdCBtYXRjaGluZyB3b3JrcyBwcm9wZXJseS4KLSAg
ICBhYnNfZmlsZW5hbWUgPSBvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpCi0KLSAgICAjIEZvciBF
bWFjcydzIGZseW1ha2UuCi0gICAgIyBJZiBjcHBfc3R5bGUgaXMgaW52b2tlZCBmcm9tIEVtYWNz
J3MgZmx5bWFrZSwgYSB0ZW1wb3JhcnkgZmlsZSBpcyBnZW5lcmF0ZWQKLSAgICAjIGJ5IGZseW1h
a2UgYW5kIHRoYXQgZmlsZSBuYW1lIG1pZ2h0IGVuZCB3aXRoICdfZmx5bWFrZS5jcHAnLiBJbiB0
aGF0IGNhc2UsCi0gICAgIyByZXN0b3JlIG9yaWdpbmFsIGZpbGUgbmFtZSBoZXJlIHNvIHRoYXQg
dGhlIGNvcnJlc3BvbmRpbmcgaGVhZGVyIGZpbGUgY2FuIGJlCi0gICAgIyBmb3VuZC4KLSAgICAj
IGUuZy4gSWYgdGhlIGZpbGUgbmFtZSBpcyAnZm9vX2ZseW1ha2UuY3BwJywgd2Ugc2hvdWxkIHNl
YXJjaCBmb3IgJ2Zvby5oJwotICAgICMgaW5zdGVhZCBvZiAnZm9vX2ZseW1ha2UuaCcKLSAgICBl
bWFjc19mbHltYWtlX3N1ZmZpeCA9ICdfZmx5bWFrZS5jcHAnCi0gICAgaWYgYWJzX2ZpbGVuYW1l
LmVuZHN3aXRoKGVtYWNzX2ZseW1ha2Vfc3VmZml4KToKLSAgICAgICAgYWJzX2ZpbGVuYW1lID0g
YWJzX2ZpbGVuYW1lWzotbGVuKGVtYWNzX2ZseW1ha2Vfc3VmZml4KV0gKyAnLmNwcCcKLQotICAg
ICMgaW5jbHVkZV9zdGF0ZSBpcyBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLCBzbyB3ZSBpdGVy
YXRlIG92ZXIgYSBjb3B5IG9mCi0gICAgIyB0aGUga2V5cy4KLSAgICBmb3IgaGVhZGVyIGluIGlu
Y2x1ZGVfc3RhdGUua2V5cygpOiAgI05PTElOVAotICAgICAgICAoc2FtZV9tb2R1bGUsIGNvbW1v
bl9wYXRoKSA9IGZpbGVzX2JlbG9uZ190b19zYW1lX21vZHVsZShhYnNfZmlsZW5hbWUsIGhlYWRl
cikKLSAgICAgICAgZnVsbHBhdGggPSBjb21tb25fcGF0aCArIGhlYWRlcgotICAgICAgICBpZiBz
YW1lX21vZHVsZSBhbmQgdXBkYXRlX2luY2x1ZGVfc3RhdGUoZnVsbHBhdGgsIGluY2x1ZGVfc3Rh
dGUsIGlvKToKLSAgICAgICAgICAgIGhlYWRlcl9mb3VuZCA9IFRydWUKLQotICAgICMgSWYgd2Ug
Y2FuJ3QgZmluZCB0aGUgaGVhZGVyIGZpbGUgZm9yIGEgLmNwcCwgYXNzdW1lIGl0J3MgYmVjYXVz
ZSB3ZSBkb24ndAotICAgICMga25vdyB3aGVyZSB0byBsb29rLiBJbiB0aGF0IGNhc2Ugd2UnbGwg
Z2l2ZSB1cCBhcyB3ZSdyZSBub3Qgc3VyZSB0aGV5Ci0gICAgIyBkaWRuJ3QgaW5jbHVkZSBpdCBp
biB0aGUgLmggZmlsZS4KLSAgICAjIEZJWE1FOiBEbyBhIGJldHRlciBqb2Igb2YgZmluZGluZyAu
aCBmaWxlcyBzbyB3ZSBhcmUgY29uZmlkZW50IHRoYXQKLSAgICAjICAgICAgICBub3QgaGF2aW5n
IHRoZSAuaCBmaWxlIG1lYW5zIHRoZXJlIGlzbid0IG9uZS4KLSAgICBpZiBmaWxlbmFtZS5lbmRz
d2l0aCgnLmNwcCcpIGFuZCBub3QgaGVhZGVyX2ZvdW5kOgotICAgICAgICByZXR1cm4KLQotICAg
ICMgQWxsIHRoZSBsaW5lcyBoYXZlIGJlZW4gcHJvY2Vzc2VkLCByZXBvcnQgdGhlIGVycm9ycyBm
b3VuZC4KLSAgICBmb3IgcmVxdWlyZWRfaGVhZGVyX3Vuc3RyaXBwZWQgaW4gcmVxdWlyZWQ6Ci0g
ICAgICAgIHRlbXBsYXRlID0gcmVxdWlyZWRbcmVxdWlyZWRfaGVhZGVyX3Vuc3RyaXBwZWRdWzFd
Ci0gICAgICAgIGlmIHRlbXBsYXRlIGluIF9IRUFERVJTX0FDQ0VQVEVEX0JVVF9OT1RfUFJPTU9U
RUQ6Ci0gICAgICAgICAgICBoZWFkZXJzID0gX0hFQURFUlNfQUNDRVBURURfQlVUX05PVF9QUk9N
T1RFRFt0ZW1wbGF0ZV0KLSAgICAgICAgICAgIGlmIFtUcnVlIGZvciBoZWFkZXIgaW4gaGVhZGVy
cyBpZiBoZWFkZXIgaW4gaW5jbHVkZV9zdGF0ZV06Ci0gICAgICAgICAgICAgICAgY29udGludWUK
LSAgICAgICAgaWYgcmVxdWlyZWRfaGVhZGVyX3Vuc3RyaXBwZWQuc3RyaXAoJzw+IicpIG5vdCBp
biBpbmNsdWRlX3N0YXRlOgotICAgICAgICAgICAgZXJyb3IocmVxdWlyZWRbcmVxdWlyZWRfaGVh
ZGVyX3Vuc3RyaXBwZWRdWzBdLAotICAgICAgICAgICAgICAgICAgJ2J1aWxkL2luY2x1ZGVfd2hh
dF95b3VfdXNlJywgNCwKLSAgICAgICAgICAgICAgICAgICdBZGQgI2luY2x1ZGUgJyArIHJlcXVp
cmVkX2hlYWRlcl91bnN0cmlwcGVkICsgJyBmb3IgJyArIHRlbXBsYXRlKQotCi0KLWRlZiBwcm9j
ZXNzX2xpbmUoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLAotICAgICAgICAgICAgICAgICBjbGVh
bl9saW5lcywgbGluZSwgaW5jbHVkZV9zdGF0ZSwgZnVuY3Rpb25fc3RhdGUsCi0gICAgICAgICAg
ICAgICAgIGNsYXNzX3N0YXRlLCBmaWxlX3N0YXRlLCBlcnJvcik6Ci0gICAgIiIiUHJvY2Vzc2Vz
IGEgc2luZ2xlIGxpbmUgaW4gdGhlIGZpbGUuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6
IEZpbGVuYW1lIG9mIHRoZSBmaWxlIHRoYXQgaXMgYmVpbmcgcHJvY2Vzc2VkLgotICAgICAgZmls
ZV9leHRlbnNpb246IFRoZSBleHRlbnNpb24gKGRvdCBub3QgaW5jbHVkZWQpIG9mIHRoZSBmaWxl
LgotICAgICAgY2xlYW5fbGluZXM6IEFuIGFycmF5IG9mIHN0cmluZ3MsIGVhY2ggcmVwcmVzZW50
aW5nIGEgbGluZSBvZiB0aGUgZmlsZSwKLSAgICAgICAgICAgICAgICAgICB3aXRoIGNvbW1lbnRz
IHN0cmlwcGVkLgotICAgICAgbGluZTogTnVtYmVyIG9mIGxpbmUgYmVpbmcgcHJvY2Vzc2VkLgot
ICAgICAgaW5jbHVkZV9zdGF0ZTogQW4gX0luY2x1ZGVTdGF0ZSBpbnN0YW5jZSBpbiB3aGljaCB0
aGUgaGVhZGVycyBhcmUgaW5zZXJ0ZWQuCi0gICAgICBmdW5jdGlvbl9zdGF0ZTogQSBfRnVuY3Rp
b25TdGF0ZSBpbnN0YW5jZSB3aGljaCBjb3VudHMgZnVuY3Rpb24gbGluZXMsIGV0Yy4KLSAgICAg
IGNsYXNzX3N0YXRlOiBBIF9DbGFzc1N0YXRlIGluc3RhbmNlIHdoaWNoIG1haW50YWlucyBpbmZv
cm1hdGlvbiBhYm91dAotICAgICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50IHN0YWNrIG9mIG5l
c3RlZCBjbGFzcyBkZWNsYXJhdGlvbnMgYmVpbmcgcGFyc2VkLgotICAgICAgZmlsZV9zdGF0ZTog
QSBfRmlsZVN0YXRlIGluc3RhbmNlIHdoaWNoIG1haW50YWlucyBpbmZvcm1hdGlvbiBhYm91dAot
ICAgICAgICAgICAgICAgICAgdGhlIHN0YXRlIG9mIHRoaW5ncyBpbiB0aGUgZmlsZS4KLSAgICAg
IGVycm9yOiBBIGNhbGxhYmxlIHRvIHdoaWNoIGVycm9ycyBhcmUgcmVwb3J0ZWQsIHdoaWNoIHRh
a2VzIDQgYXJndW1lbnRzOgotICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgZXJy
b3IgbGV2ZWwsIGFuZCBtZXNzYWdlCi0KLSAgICAiIiIKLSAgICByYXdfbGluZXMgPSBjbGVhbl9s
aW5lcy5yYXdfbGluZXMKLSAgICBjaGVja19mb3JfZnVuY3Rpb25fbGVuZ3RocyhmaWxlbmFtZSwg
Y2xlYW5fbGluZXMsIGxpbmUsIGZ1bmN0aW9uX3N0YXRlLCBlcnJvcikKLSAgICBpZiBzZWFyY2go
cidcYk5PTElOVFxiJywgcmF3X2xpbmVzW2xpbmVdKTogICMgaWdub3JlIG5vbGludCBsaW5lcwot
ICAgICAgICByZXR1cm4KLSAgICBjaGVja19mb3JfbXVsdGlsaW5lX2NvbW1lbnRzX2FuZF9zdHJp
bmdzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZSwgZXJyb3IpCi0gICAgY2hlY2tfc3R5bGUo
ZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lLCBmaWxlX2V4dGVuc2lvbiwgZmlsZV9zdGF0ZSwg
ZXJyb3IpCi0gICAgY2hlY2tfbGFuZ3VhZ2UoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lLCBm
aWxlX2V4dGVuc2lvbiwgaW5jbHVkZV9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICBlcnJvcikK
LSAgICBjaGVja19mb3Jfbm9uX3N0YW5kYXJkX2NvbnN0cnVjdHMoZmlsZW5hbWUsIGNsZWFuX2xp
bmVzLCBsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc19z
dGF0ZSwgZXJyb3IpCi0gICAgY2hlY2tfcG9zaXhfdGhyZWFkaW5nKGZpbGVuYW1lLCBjbGVhbl9s
aW5lcywgbGluZSwgZXJyb3IpCi0gICAgY2hlY2tfaW52YWxpZF9pbmNyZW1lbnQoZmlsZW5hbWUs
IGNsZWFuX2xpbmVzLCBsaW5lLCBlcnJvcikKLQotCi1kZWYgX3Byb2Nlc3NfbGluZXMoZmlsZW5h
bWUsIGZpbGVfZXh0ZW5zaW9uLCBsaW5lcywgZXJyb3IsIHZlcmJvc2l0eSk6Ci0gICAgIiIiUGVy
Zm9ybXMgbGludCBjaGVja3MgYW5kIHJlcG9ydHMgYW55IGVycm9ycyB0byB0aGUgZ2l2ZW4gZXJy
b3IgZnVuY3Rpb24uCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IEZpbGVuYW1lIG9mIHRo
ZSBmaWxlIHRoYXQgaXMgYmVpbmcgcHJvY2Vzc2VkLgotICAgICAgZmlsZV9leHRlbnNpb246IFRo
ZSBleHRlbnNpb24gKGRvdCBub3QgaW5jbHVkZWQpIG9mIHRoZSBmaWxlLgotICAgICAgbGluZXM6
IEFuIGFycmF5IG9mIHN0cmluZ3MsIGVhY2ggcmVwcmVzZW50aW5nIGEgbGluZSBvZiB0aGUgZmls
ZSwgd2l0aCB0aGUKLSAgICAgICAgICAgICBsYXN0IGVsZW1lbnQgYmVpbmcgZW1wdHkgaWYgdGhl
IGZpbGUgaXMgdGVybWluZWQgd2l0aCBhIG5ld2xpbmUuCi0gICAgICBlcnJvcjogQSBjYWxsYWJs
ZSB0byB3aGljaCBlcnJvcnMgYXJlIHJlcG9ydGVkLCB3aGljaCB0YWtlcyA0IGFyZ3VtZW50czoK
LSAgICAiIiIKLSAgICBsaW5lcyA9IChbJy8vIG1hcmtlciBzbyBsaW5lIG51bWJlcnMgYW5kIGlu
ZGljZXMgYm90aCBzdGFydCBhdCAxJ10gKyBsaW5lcyArCi0gICAgICAgICAgICAgWycvLyBtYXJr
ZXIgc28gbGluZSBudW1iZXJzIGVuZCBpbiBhIGtub3duIHdheSddKQotCi0gICAgaW5jbHVkZV9z
dGF0ZSA9IF9JbmNsdWRlU3RhdGUoKQotICAgIGZ1bmN0aW9uX3N0YXRlID0gX0Z1bmN0aW9uU3Rh
dGUodmVyYm9zaXR5KQotICAgIGNsYXNzX3N0YXRlID0gX0NsYXNzU3RhdGUoKQotICAgIGZpbGVf
c3RhdGUgPSBfRmlsZVN0YXRlKCkKLQotICAgIGNoZWNrX2Zvcl9jb3B5cmlnaHQoZmlsZW5hbWUs
IGxpbmVzLCBlcnJvcikKLQotICAgIGlmIGZpbGVfZXh0ZW5zaW9uID09ICdoJzoKLSAgICAgICAg
Y2hlY2tfZm9yX2hlYWRlcl9ndWFyZChmaWxlbmFtZSwgbGluZXMsIGVycm9yKQotCi0gICAgcmVt
b3ZlX211bHRpX2xpbmVfY29tbWVudHMoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcikKLSAgICBjbGVh
bl9saW5lcyA9IENsZWFuc2VkTGluZXMobGluZXMpCi0gICAgZm9yIGxpbmUgaW4geHJhbmdlKGNs
ZWFuX2xpbmVzLm51bV9saW5lcygpKToKLSAgICAgICAgcHJvY2Vzc19saW5lKGZpbGVuYW1lLCBm
aWxlX2V4dGVuc2lvbiwgY2xlYW5fbGluZXMsIGxpbmUsCi0gICAgICAgICAgICAgICAgICAgICBp
bmNsdWRlX3N0YXRlLCBmdW5jdGlvbl9zdGF0ZSwgY2xhc3Nfc3RhdGUsIGZpbGVfc3RhdGUsIGVy
cm9yKQotICAgIGNsYXNzX3N0YXRlLmNoZWNrX2ZpbmlzaGVkKGZpbGVuYW1lLCBlcnJvcikKLQot
ICAgIGNoZWNrX2Zvcl9pbmNsdWRlX3doYXRfeW91X3VzZShmaWxlbmFtZSwgY2xlYW5fbGluZXMs
IGluY2x1ZGVfc3RhdGUsIGVycm9yKQotCi0gICAgIyBXZSBjaGVjayBoZXJlIHJhdGhlciB0aGFu
IGluc2lkZSBwcm9jZXNzX2xpbmUgc28gdGhhdCB3ZSBzZWUgcmF3Ci0gICAgIyBsaW5lcyByYXRo
ZXIgdGhhbiAiY2xlYW5lZCIgbGluZXMuCi0gICAgY2hlY2tfZm9yX3VuaWNvZGVfcmVwbGFjZW1l
bnRfY2hhcmFjdGVycyhmaWxlbmFtZSwgbGluZXMsIGVycm9yKQotCi0gICAgY2hlY2tfZm9yX25l
d19saW5lX2F0X2VvZihmaWxlbmFtZSwgbGluZXMsIGVycm9yKQotCi0KLWNsYXNzIENwcFByb2Nl
c3NvcihvYmplY3QpOgotCi0gICAgIiIiUHJvY2Vzc2VzIEMrKyBsaW5lcyBmb3IgY2hlY2tpbmcg
c3R5bGUuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV9wYXRoLCBmaWxlX2V4dGVu
c2lvbiwgaGFuZGxlX3N0eWxlX2Vycm9yLCB2ZXJib3NpdHkpOgotICAgICAgICAiIiJDcmVhdGUg
YSBDcHBQcm9jZXNzb3IgaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBmaWxl
X2V4dGVuc2lvbjogQSBzdHJpbmcgdGhhdCBpcyB0aGUgZmlsZSBleHRlbnNpb24sIHdpdGhvdXQK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxlYWRpbmcgZG90LgotCi0gICAgICAgICIi
IgotICAgICAgICBzZWxmLmZpbGVfZXh0ZW5zaW9uID0gZmlsZV9leHRlbnNpb24KLSAgICAgICAg
c2VsZi5maWxlX3BhdGggPSBmaWxlX3BhdGgKLSAgICAgICAgc2VsZi5oYW5kbGVfc3R5bGVfZXJy
b3IgPSBoYW5kbGVfc3R5bGVfZXJyb3IKLSAgICAgICAgc2VsZi52ZXJib3NpdHkgPSB2ZXJib3Np
dHkKLQotICAgICMgVXNlZnVsIGZvciB1bml0IHRlc3RpbmcuCi0gICAgZGVmIF9fZXFfXyhzZWxm
LCBvdGhlcik6Ci0gICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoaXMgQ3BwUHJvY2Vzc29yIGlu
c3RhbmNlIGlzIGVxdWFsIHRvIGFub3RoZXIuIiIiCi0gICAgICAgIGlmIHNlbGYuZmlsZV9leHRl
bnNpb24gIT0gb3RoZXIuZmlsZV9leHRlbnNpb246Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UK
LSAgICAgICAgaWYgc2VsZi5maWxlX3BhdGggIT0gb3RoZXIuZmlsZV9wYXRoOgotICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIHNlbGYuaGFuZGxlX3N0eWxlX2Vycm9yICE9IG90
aGVyLmhhbmRsZV9zdHlsZV9lcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAg
ICBpZiBzZWxmLnZlcmJvc2l0eSAhPSBvdGhlci52ZXJib3NpdHk6Ci0gICAgICAgICAgICByZXR1
cm4gRmFsc2UKLQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgIyBVc2VmdWwgZm9yIHVuaXQg
dGVzdGluZy4KLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgIyBQeXRob24g
ZG9lcyBub3QgYXV0b21hdGljYWxseSBkZWR1Y2UgX19uZV9fKCkgZnJvbSBfX2VxX18oKS4KLSAg
ICAgICAgcmV0dXJuIG5vdCBzZWxmLl9fZXFfXyhvdGhlcikKLQotICAgIGRlZiBwcm9jZXNzKHNl
bGYsIGxpbmVzKToKLSAgICAgICAgX3Byb2Nlc3NfbGluZXMoc2VsZi5maWxlX3BhdGgsIHNlbGYu
ZmlsZV9leHRlbnNpb24sIGxpbmVzLAotICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRs
ZV9zdHlsZV9lcnJvciwgc2VsZi52ZXJib3NpdHkpCi0KLQotIyBGSVhNRTogUmVtb3ZlIHRoaXMg
ZnVuY3Rpb24gKHJlcXVpcmVzIHJlZmFjdG9yaW5nIHVuaXQgdGVzdHMpLgotZGVmIHByb2Nlc3Nf
ZmlsZV9kYXRhKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwgbGluZXMsIGVycm9yLCB2ZXJib3Np
dHkpOgotICAgIHByb2Nlc3NvciA9IENwcFByb2Nlc3NvcihmaWxlbmFtZSwgZmlsZV9leHRlbnNp
b24sIGVycm9yLCB2ZXJib3NpdHkpCi0gICAgcHJvY2Vzc29yLnByb2Nlc3MobGluZXMpCi0KSW5k
ZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3Bw
X3N0eWxlX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA1Mzg0MSkKKysrIFdlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDM2ODMgKzAsMCBAQAotIyEvdXNyL2Jpbi9weXRob24KLSMgLSotIGNvZGluZzogdXRmLTg7
IC0qLQotIwotIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCi0jIENvcHlyaWdo
dCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAo
QykgMjAxMCBDaHJpcyBKZXJkb25layAoY2plcmRvbmVrQHdlYmtpdC5vcmcpCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotCi0iIiJVbml0IHRlc3QgZm9yIGNwcF9zdHlsZS5weS4iIiIKLQotIyBGSVhNRTogQWRk
IGEgZ29vZCB0ZXN0IHRoYXQgdGVzdHMgVXBkYXRlSW5jbHVkZVN0YXRlLgotCi1pbXBvcnQgY29k
ZWNzCi1pbXBvcnQgb3MKLWltcG9ydCByYW5kb20KLWltcG9ydCByZQotaW1wb3J0IHVuaXR0ZXN0
Ci1pbXBvcnQgY3BwX3N0eWxlCi1mcm9tIGNwcF9zdHlsZSBpbXBvcnQgQ3BwUHJvY2Vzc29yCi0K
LSMgRklYTUU6IFJlbW92ZSB0aGUgbmVlZCB0byBpbXBvcnQgYW55dGhpbmcgZnJvbSBjaGVja2Vy
LiBTZWUgdGhlCi0jICAgICAgICBGSVhNRSBub3RlcyBuZWFyIHRoZSBTVFlMRV9DQVRFR09SSUVT
IGRlZmluaXRpb24gZm9yIGEKLSMgICAgICAgIHN1Z2dlc3Rpb24gb24gaG93IHRvIGJlc3QgZG8g
dGhpcy4KLWZyb20gY2hlY2tlciBpbXBvcnQgU1RZTEVfQ0FURUdPUklFUwotCi0jIFRoaXMgY2xh
c3Mgd29ya3MgYXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCByZXBsYWNlcyBjcHBfc3R5bGUuRXJy
b3IKLSMgZnVuY3Rpb24gZm9yIHRoZSB1bml0IHRlc3RzLiAgV2UgYWxzbyB2ZXJpZnkgZWFjaCBj
YXRlZ29yeSB3ZSBzZWUKLSMgaXMgaW4gU1RZTEVfQ0FURUdPUklFUywgdG8gaGVscCBrZWVwIHRo
YXQgbGlzdCB1cCB0byBkYXRlLgotY2xhc3MgRXJyb3JDb2xsZWN0b3I6Ci0gICAgX2FsbF9zdHls
ZV9jYXRlZ29yaWVzID0gU1RZTEVfQ0FURUdPUklFUwotICAgICMgVGhpcyBhIGxpc3QgaW5jbHVk
aW5nIGFsbCBjYXRlZ29yaWVzIHNlZW4gaW4gYW55IHVuaXQgdGVzdC4KLSAgICBfc2Vlbl9zdHls
ZV9jYXRlZ29yaWVzID0ge30KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhc3NlcnRfZm4pOgot
ICAgICAgICAiIiJhc3NlcnRfZm46IGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHdlIG5vdGljZSBh
IHByb2JsZW0uIiIiCi0gICAgICAgIHNlbGYuX2Fzc2VydF9mbiA9IGFzc2VydF9mbgotICAgICAg
ICBzZWxmLl9lcnJvcnMgPSBbXQotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHVudXNlZF9saW5l
bnVtLCBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSk6Ci0gICAgICAgIHNlbGYuX2Fzc2Vy
dF9mbihjYXRlZ29yeSBpbiBzZWxmLl9hbGxfc3R5bGVfY2F0ZWdvcmllcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdNZXNzYWdlICIlcyIgaGFzIGNhdGVnb3J5ICIlcyIsJwotICAgICAgICAg
ICAgICAgICAgICAgICAgJyB3aGljaCBpcyBub3QgaW4gU1RZTEVfQ0FURUdPUklFUycgJSAobWVz
c2FnZSwgY2F0ZWdvcnkpKQotICAgICAgICBzZWxmLl9zZWVuX3N0eWxlX2NhdGVnb3JpZXNbY2F0
ZWdvcnldID0gMQotICAgICAgICBzZWxmLl9lcnJvcnMuYXBwZW5kKCclcyAgWyVzXSBbJWRdJyAl
IChtZXNzYWdlLCBjYXRlZ29yeSwgY29uZmlkZW5jZSkpCi0KLSAgICBkZWYgcmVzdWx0cyhzZWxm
KToKLSAgICAgICAgaWYgbGVuKHNlbGYuX2Vycm9ycykgPCAyOgotICAgICAgICAgICAgcmV0dXJu
ICcnLmpvaW4oc2VsZi5fZXJyb3JzKSAgIyBNb3N0IHRlc3RzIGV4cGVjdCB0byBoYXZlIGEgc3Ry
aW5nLgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2Vycm9ycyAgIyBM
ZXQncyBnaXZlIGEgbGlzdCBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lLgotCi0gICAgZGVmIHJl
c3VsdF9saXN0KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fZXJyb3JzCi0KLSAgICBkZWYg
dmVyaWZ5X2FsbF9jYXRlZ29yaWVzX2FyZV9zZWVuKHNlbGYpOgotICAgICAgICAiIiJGYWlscyBp
ZiB0aGVyZSdzIGEgY2F0ZWdvcnkgaW4gX2FsbF9zdHlsZV9jYXRlZ29yaWVzIC0gX3NlZW5fc3R5
bGVfY2F0ZWdvcmllcy4KLQotICAgICAgICBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRl
ciBhbGwgdGVzdHMgYXJlIHJ1biwgc28KLSAgICAgICAgX3NlZW5fc3R5bGVfY2F0ZWdvcmllcyBo
YXMgaGFkIGEgY2hhbmNlIHRvIGZ1bGx5IHBvcHVsYXRlLiAgU2luY2UKLSAgICAgICAgdGhpcyBp
c24ndCBjYWxsZWQgZnJvbSB3aXRoaW4gdGhlIG5vcm1hbCB1bml0dGVzdCBmcmFtZXdvcmssIHdl
Ci0gICAgICAgIGNhbid0IHVzZSB0aGUgbm9ybWFsIHVuaXR0ZXN0IGFzc2VydCBtYWNyb3MuICBJ
bnN0ZWFkIHdlIGp1c3QgZXhpdAotICAgICAgICB3aGVuIHdlIHNlZSBhbiBlcnJvci4gIEdvb2Qg
dGhpbmcgdGhpcyB0ZXN0IGlzIGFsd2F5cyBydW4gbGFzdCEKLSAgICAgICAgIiIiCi0gICAgICAg
IGZvciBjYXRlZ29yeSBpbiBzZWxmLl9hbGxfc3R5bGVfY2F0ZWdvcmllczoKLSAgICAgICAgICAg
IGlmIGNhdGVnb3J5IG5vdCBpbiBzZWxmLl9zZWVuX3N0eWxlX2NhdGVnb3JpZXM6Ci0gICAgICAg
ICAgICAgICAgaW1wb3J0IHN5cwotICAgICAgICAgICAgICAgIHN5cy5leGl0KCdGQVRBTCBFUlJP
UjogVGhlcmUgYXJlIG5vIHRlc3RzIGZvciBjYXRlZ29yeSAiJXMiJyAlIGNhdGVnb3J5KQotCi0g
ICAgZGVmIHJlbW92ZV9pZl9wcmVzZW50KHNlbGYsIHN1YnN0cik6Ci0gICAgICAgIGZvciAoaW5k
ZXgsIGVycm9yKSBpbiBlbnVtZXJhdGUoc2VsZi5fZXJyb3JzKToKLSAgICAgICAgICAgIGlmIGVy
cm9yLmZpbmQoc3Vic3RyKSAhPSAtMToKLSAgICAgICAgICAgICAgICBzZWxmLl9lcnJvcnMgPSBz
ZWxmLl9lcnJvcnNbMDppbmRleF0gKyBzZWxmLl9lcnJvcnNbKGluZGV4ICsgMSk6XQotICAgICAg
ICAgICAgICAgIGJyZWFrCi0KLQotIyBUaGlzIGNsYXNzIGlzIGEgbGFtZSBtb2NrIG9mIGNvZGVj
cy4gV2UgZG8gbm90IHZlcmlmeSBmaWxlbmFtZSwgbW9kZSwgb3IKLSMgZW5jb2RpbmcsIGJ1dCBm
b3IgdGhlIGN1cnJlbnQgdXNlIGNhc2UgaXQgaXMgbm90IG5lZWRlZC4KLWNsYXNzIE1vY2tJbzoK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgbW9ja19maWxlKToKLSAgICAgICAgc2VsZi5tb2NrX2Zp
bGUgPSBtb2NrX2ZpbGUKLQotICAgIGRlZiBvcGVuKHNlbGYsIHVudXNlZF9maWxlbmFtZSwgdW51
c2VkX21vZGUsIHVudXNlZF9lbmNvZGluZywgXyk6ICAjIE5PTElOVAotICAgICAgICAjIChsaW50
IGRvZXNuJ3QgbGlrZSBvcGVuIGFzIGEgbWV0aG9kIG5hbWUpCi0gICAgICAgIHJldHVybiBzZWxm
Lm1vY2tfZmlsZQotCi0KLWNsYXNzIENwcFN0eWxlVGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2Up
OgotICAgICIiIlByb3ZpZGVzIHNvbWUgdXNlZnVsIGhlbHBlciBmdW5jdGlvbnMgZm9yIGNwcF9z
dHlsZSB0ZXN0cy4KLQotICAgIEF0dHJpYnV0ZXM6Ci0gICAgICB2ZXJib3NpdHk6IEFuIGludGVn
ZXIgdGhhdCBpcyB0aGUgY3VycmVudCB2ZXJib3NpdHkgbGV2ZWwgZm9yCi0gICAgICAgICAgICAg
ICAgIHRoZSB0ZXN0cy4KLQotICAgICIiIgotCi0gICAgIyBGSVhNRTogUmVmYWN0b3IgdGhlIHVu
aXQgdGVzdHMgc28gdGhlIHZlcmJvc2l0eSBsZXZlbCBpcyBwYXNzZWQKLSAgICAjICAgICAgICBl
eHBsaWNpdGx5LCBqdXN0IGxpa2UgaXQgaXMgaW4gdGhlIHJlYWwgY29kZS4KLSAgICB2ZXJib3Np
dHkgPSAxOwotCi0gICAgIyBIZWxwZXIgZnVuY3Rpb24gdG8gYXZvaWQgbmVlZGluZyB0byBleHBs
aWNpdGx5IHBhc3MgdmVyYm9zaXR5Ci0gICAgIyBpbiBhbGwgdGhlIHVuaXQgdGVzdCBjYWxscyB0
byBjcHBfc3R5bGUucHJvY2Vzc19maWxlX2RhdGEoKS4KLSAgICBkZWYgcHJvY2Vzc19maWxlX2Rh
dGEoc2VsZiwgZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLCBsaW5lcywgZXJyb3IpOgotICAgICAg
ICAiIiJDYWxsIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGVfZGF0YSgpIHdpdGggdGhlIGN1cnJlbnQg
dmVyYm9zaXR5LiIiIgotICAgICAgICByZXR1cm4gY3BwX3N0eWxlLnByb2Nlc3NfZmlsZV9kYXRh
KGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwgbGluZXMsIGVycm9yLCBzZWxmLnZlcmJvc2l0eSkK
LQotICAgICMgUGVyZm9ybSBsaW50IG9uIHNpbmdsZSBsaW5lIG9mIGlucHV0IGFuZCByZXR1cm4g
dGhlIGVycm9yIG1lc3NhZ2UuCi0gICAgZGVmIHBlcmZvcm1fc2luZ2xlX2xpbmVfbGludChzZWxm
LCBjb2RlLCBmaWxlX25hbWUpOgotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxl
Y3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGxpbmVzID0gY29kZS5zcGxpdCgnXG4nKQotICAg
ICAgICBjcHBfc3R5bGUucmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMoZmlsZV9uYW1lLCBsaW5l
cywgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICBjbGVhbl9saW5lcyA9IGNwcF9zdHlsZS5DbGVh
bnNlZExpbmVzKGxpbmVzKQotICAgICAgICBpbmNsdWRlX3N0YXRlID0gY3BwX3N0eWxlLl9JbmNs
dWRlU3RhdGUoKQotICAgICAgICBmdW5jdGlvbl9zdGF0ZSA9IGNwcF9zdHlsZS5fRnVuY3Rpb25T
dGF0ZShzZWxmLnZlcmJvc2l0eSkKLSAgICAgICAgZXh0ID0gZmlsZV9uYW1lW2ZpbGVfbmFtZS5y
ZmluZCgnLicpICsgMTpdCi0gICAgICAgIGNsYXNzX3N0YXRlID0gY3BwX3N0eWxlLl9DbGFzc1N0
YXRlKCkKLSAgICAgICAgZmlsZV9zdGF0ZSA9IGNwcF9zdHlsZS5fRmlsZVN0YXRlKCkKLSAgICAg
ICAgY3BwX3N0eWxlLnByb2Nlc3NfbGluZShmaWxlX25hbWUsIGV4dCwgY2xlYW5fbGluZXMsIDAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9zdGF0ZSwgZnVuY3Rpb25f
c3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nfc3RhdGUsIGZpbGVf
c3RhdGUsIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgIyBTaW5nbGUtbGluZSBsaW50IHRlc3Rz
IGFyZSBhbGxvd2VkIHRvIGZhaWwgdGhlICd1bmxpbnRhYmxlIGZ1bmN0aW9uJwotICAgICAgICAj
IGNoZWNrLgotICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVtb3ZlX2lmX3ByZXNlbnQoCi0gICAg
ICAgICAgICAnTGludCBmYWlsZWQgdG8gZmluZCBzdGFydCBvZiBmdW5jdGlvbiBib2R5LicpCi0g
ICAgICAgIHJldHVybiBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpCi0KLSAgICAjIFBlcmZvcm0g
bGludCBvdmVyIG11bHRpcGxlIGxpbmVzIGFuZCByZXR1cm4gdGhlIGVycm9yIG1lc3NhZ2UuCi0g
ICAgZGVmIHBlcmZvcm1fbXVsdGlfbGluZV9saW50KHNlbGYsIGNvZGUsIGZpbGVfbmFtZSk6Ci0g
ICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAg
ICAgICAgbGluZXMgPSBjb2RlLnNwbGl0KCdcbicpCi0gICAgICAgIGNwcF9zdHlsZS5yZW1vdmVf
bXVsdGlfbGluZV9jb21tZW50cyhmaWxlX25hbWUsIGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCi0g
ICAgICAgIGxpbmVzID0gY3BwX3N0eWxlLkNsZWFuc2VkTGluZXMobGluZXMpCi0gICAgICAgIGV4
dCA9IGZpbGVfbmFtZVtmaWxlX25hbWUucmZpbmQoJy4nKSArIDE6XQotICAgICAgICBjbGFzc19z
dGF0ZSA9IGNwcF9zdHlsZS5fQ2xhc3NTdGF0ZSgpCi0gICAgICAgIGZpbGVfc3RhdGUgPSBjcHBf
c3R5bGUuX0ZpbGVTdGF0ZSgpCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShsaW5lcy5udW1fbGlu
ZXMoKSk6Ci0gICAgICAgICAgICBjcHBfc3R5bGUuY2hlY2tfc3R5bGUoZmlsZV9uYW1lLCBsaW5l
cywgaSwgZXh0LCBmaWxlX3N0YXRlLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgICAgICBjcHBf
c3R5bGUuY2hlY2tfZm9yX25vbl9zdGFuZGFyZF9jb25zdHJ1Y3RzKGZpbGVfbmFtZSwgbGluZXMs
IGksIGNsYXNzX3N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGNsYXNzX3N0YXRlLmNo
ZWNrX2ZpbmlzaGVkKGZpbGVfbmFtZSwgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICByZXR1cm4g
ZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKQotCi0gICAgIyBTaW1pbGFyIHRvIHBlcmZvcm1fbXVs
dGlfbGluZV9saW50LCBidXQgY2FsbHMgY2hlY2tfbGFuZ3VhZ2UgaW5zdGVhZCBvZgotICAgICMg
Y2hlY2tfZm9yX25vbl9zdGFuZGFyZF9jb25zdHJ1Y3RzCi0gICAgZGVmIHBlcmZvcm1fbGFuZ3Vh
Z2VfcnVsZXNfY2hlY2soc2VsZiwgZmlsZV9uYW1lLCBjb2RlKToKLSAgICAgICAgZXJyb3JfY29s
bGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBpbmNsdWRlX3N0
YXRlID0gY3BwX3N0eWxlLl9JbmNsdWRlU3RhdGUoKQotICAgICAgICBsaW5lcyA9IGNvZGUuc3Bs
aXQoJ1xuJykKLSAgICAgICAgY3BwX3N0eWxlLnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGZp
bGVfbmFtZSwgbGluZXMsIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgbGluZXMgPSBjcHBfc3R5
bGUuQ2xlYW5zZWRMaW5lcyhsaW5lcykKLSAgICAgICAgZXh0ID0gZmlsZV9uYW1lW2ZpbGVfbmFt
ZS5yZmluZCgnLicpICsgMTpdCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShsaW5lcy5udW1fbGlu
ZXMoKSk6Ci0gICAgICAgICAgICBjcHBfc3R5bGUuY2hlY2tfbGFuZ3VhZ2UoZmlsZV9uYW1lLCBs
aW5lcywgaSwgZXh0LCBpbmNsdWRlX3N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rv
ci5yZXN1bHRzKCkKLQotICAgIGRlZiBwZXJmb3JtX2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soc2Vs
ZiwgY29kZSk6Ci0gICAgICAgICIiIlBlcmZvcm0gTGludCBmdW5jdGlvbiBsZW5ndGggY2hlY2sg
b24gYmxvY2sgb2YgY29kZSBhbmQgcmV0dXJuIHdhcm5pbmdzLgotCi0gICAgICAgIEJ1aWxkcyB1
cCBhbiBhcnJheSBvZiBsaW5lcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb2RlIGFuZCBzdHJpcHMg
Y29tbWVudHMKLSAgICAgICAgdXNpbmcgY3BwX3N0eWxlIGZ1bmN0aW9ucy4KLQotICAgICAgICBF
c3RhYmxpc2hlcyBhbiBlcnJvciBjb2xsZWN0b3IgYW5kIGludm9rZXMgdGhlIGZ1bmN0aW9uIGxl
bmd0aCBjaGVja2luZwotICAgICAgICBmdW5jdGlvbiBmb2xsb3dpbmcgY3BwX3N0eWxlJ3MgcGF0
dGVybi4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIGNvZGU6IEMrKyBzb3VyY2UgY29kZSBl
eHBlY3RlZCB0byBnZW5lcmF0ZSBhIHdhcm5pbmcgbWVzc2FnZS4KLQotICAgICAgICBSZXR1cm5z
OgotICAgICAgICAgIFRoZSBhY2N1bXVsYXRlZCBlcnJvcnMuCi0gICAgICAgICIiIgotICAgICAg
ICBmaWxlX25hbWUgPSAnZm9vLmNwcCcKLSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JD
b2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBmdW5jdGlvbl9zdGF0ZSA9IGNwcF9zdHls
ZS5fRnVuY3Rpb25TdGF0ZShzZWxmLnZlcmJvc2l0eSkKLSAgICAgICAgbGluZXMgPSBjb2RlLnNw
bGl0KCdcbicpCi0gICAgICAgIGNwcF9zdHlsZS5yZW1vdmVfbXVsdGlfbGluZV9jb21tZW50cyhm
aWxlX25hbWUsIGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGxpbmVzID0gY3BwX3N0
eWxlLkNsZWFuc2VkTGluZXMobGluZXMpCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShsaW5lcy5u
dW1fbGluZXMoKSk6Ci0gICAgICAgICAgICBjcHBfc3R5bGUuY2hlY2tfZm9yX2Z1bmN0aW9uX2xl
bmd0aHMoZmlsZV9uYW1lLCBsaW5lcywgaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9zdGF0ZSwgZXJyb3JfY29sbGVjdG9yKQotICAg
ICAgICByZXR1cm4gZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKQotCi0gICAgZGVmIHBlcmZvcm1f
aW5jbHVkZV93aGF0X3lvdV91c2Uoc2VsZiwgY29kZSwgZmlsZW5hbWU9J2Zvby5oJywgaW89Y29k
ZWNzKToKLSAgICAgICAgIyBGaXJzdCwgYnVpbGQgdXAgdGhlIGluY2x1ZGUgc3RhdGUuCi0gICAg
ICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAg
ICAgaW5jbHVkZV9zdGF0ZSA9IGNwcF9zdHlsZS5fSW5jbHVkZVN0YXRlKCkKLSAgICAgICAgbGlu
ZXMgPSBjb2RlLnNwbGl0KCdcbicpCi0gICAgICAgIGNwcF9zdHlsZS5yZW1vdmVfbXVsdGlfbGlu
ZV9jb21tZW50cyhmaWxlbmFtZSwgbGluZXMsIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgbGlu
ZXMgPSBjcHBfc3R5bGUuQ2xlYW5zZWRMaW5lcyhsaW5lcykKLSAgICAgICAgZm9yIGkgaW4geHJh
bmdlKGxpbmVzLm51bV9saW5lcygpKToKLSAgICAgICAgICAgIGNwcF9zdHlsZS5jaGVja19sYW5n
dWFnZShmaWxlbmFtZSwgbGluZXMsIGksICcuaCcsIGluY2x1ZGVfc3RhdGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICAjIFdl
IGNvdWxkIGNsZWFyIHRoZSBlcnJvcl9jb2xsZWN0b3IgaGVyZSwgYnV0IHRoaXMgc2hvdWxkCi0g
ICAgICAgICMgYWxzbyBiZSBmaW5lLCBzaW5jZSBvdXIgSW5jbHVkZVdoYXRZb3VVc2UgdW5pdHRl
c3RzIGRvIG5vdAotICAgICAgICAjIGhhdmUgbGFuZ3VhZ2UgcHJvYmxlbXMuCi0KLSAgICAgICAg
IyBTZWNvbmQsIGxvb2sgZm9yIG1pc3NpbmcgaW5jbHVkZXMuCi0gICAgICAgIGNwcF9zdHlsZS5j
aGVja19mb3JfaW5jbHVkZV93aGF0X3lvdV91c2UoZmlsZW5hbWUsIGxpbmVzLCBpbmNsdWRlX3N0
YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy
cm9yX2NvbGxlY3RvciwgaW8pCi0gICAgICAgIHJldHVybiBlcnJvcl9jb2xsZWN0b3IucmVzdWx0
cygpCi0KLSAgICAjIFBlcmZvcm0gbGludCBhbmQgY29tcGFyZSB0aGUgZXJyb3IgbWVzc2FnZSB3
aXRoICJleHBlY3RlZF9tZXNzYWdlIi4KLSAgICBkZWYgYXNzZXJ0X2xpbnQoc2VsZiwgY29kZSwg
ZXhwZWN0ZWRfbWVzc2FnZSwgZmlsZV9uYW1lPSdmb28uY3BwJyk6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKGV4cGVjdGVkX21lc3NhZ2UsIHNlbGYucGVyZm9ybV9zaW5nbGVfbGluZV9saW50
KGNvZGUsIGZpbGVfbmFtZSkpCi0KLSAgICBkZWYgYXNzZXJ0X2xpbnRfb25lX29mX21hbnlfZXJy
b3JzX3JlKHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2VfcmUsIGZpbGVfbmFtZT0nZm9vLmNw
cCcpOgotICAgICAgICBtZXNzYWdlcyA9IHNlbGYucGVyZm9ybV9zaW5nbGVfbGluZV9saW50KGNv
ZGUsIGZpbGVfbmFtZSkKLSAgICAgICAgZm9yIG1lc3NhZ2UgaW4gbWVzc2FnZXM6Ci0gICAgICAg
ICAgICBpZiByZS5zZWFyY2goZXhwZWN0ZWRfbWVzc2FnZV9yZSwgbWVzc2FnZSk6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVz
c2FnZSwgbWVzc2FnZXMpCi0KLSAgICBkZWYgYXNzZXJ0X211bHRpX2xpbmVfbGludChzZWxmLCBj
b2RlLCBleHBlY3RlZF9tZXNzYWdlLCBmaWxlX25hbWU9J2Zvby5oJyk6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKGV4cGVjdGVkX21lc3NhZ2UsIHNlbGYucGVyZm9ybV9tdWx0aV9saW5lX2xp
bnQoY29kZSwgZmlsZV9uYW1lKSkKLQotICAgIGRlZiBhc3NlcnRfbXVsdGlfbGluZV9saW50X3Jl
KHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2VfcmUsIGZpbGVfbmFtZT0nZm9vLmgnKToKLSAg
ICAgICAgbWVzc2FnZSA9IHNlbGYucGVyZm9ybV9tdWx0aV9saW5lX2xpbnQoY29kZSwgZmlsZV9u
YW1lKQotICAgICAgICBpZiBub3QgcmUuc2VhcmNoKGV4cGVjdGVkX21lc3NhZ2VfcmUsIG1lc3Nh
Z2UpOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdNZXNzYWdlIHdhczpcbicgKyBtZXNzYWdlICsg
J0V4cGVjdGVkIG1hdGNoIHRvICInICsgZXhwZWN0ZWRfbWVzc2FnZV9yZSArICciJykKLQotICAg
IGRlZiBhc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soc2VsZiwgZmlsZV9uYW1lLCBjb2RlLCBl
eHBlY3RlZF9tZXNzYWdlKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVz
c2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wZXJmb3JtX2xhbmd1YWdlX3J1
bGVzX2NoZWNrKGZpbGVfbmFtZSwgY29kZSkpCi0KLSAgICBkZWYgYXNzZXJ0X2luY2x1ZGVfd2hh
dF95b3VfdXNlKHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2UpOgotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhleHBlY3RlZF9tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLnBlcmZvcm1faW5jbHVkZV93aGF0X3lvdV91c2UoY29kZSkpCi0KLSAgICBkZWYgYXNzZXJ0
X2JsYW5rX2xpbmVzX2NoZWNrKHNlbGYsIGxpbmVzLCBzdGFydF9lcnJvcnMsIGVuZF9lcnJvcnMp
OgotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8p
Ci0gICAgICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jcHAnLCAnY3BwJywgbGluZXMs
IGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCi0gICAgICAgICAg
ICBzdGFydF9lcnJvcnMsCi0gICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpLmNv
dW50KAotICAgICAgICAgICAgICAgICdCbGFuayBsaW5lIGF0IHRoZSBzdGFydCBvZiBhIGNvZGUg
YmxvY2suICBJcyB0aGlzIG5lZWRlZD8nCi0gICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uv
YmxhbmtfbGluZV0gWzJdJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAotICAgICAgICAg
ICAgZW5kX2Vycm9ycywKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkuY291
bnQoCi0gICAgICAgICAgICAgICAgJ0JsYW5rIGxpbmUgYXQgdGhlIGVuZCBvZiBhIGNvZGUgYmxv
Y2suICBJcyB0aGlzIG5lZWRlZD8nCi0gICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvYmxh
bmtfbGluZV0gWzNdJykpCi0KLQotY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2Up
OgotCi0gICAgIyBUZXN0IGdldCBsaW5lIHdpZHRoLgotICAgIGRlZiB0ZXN0X2dldF9saW5lX3dp
ZHRoKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygwLCBjcHBfc3R5bGUuZ2V0X2xp
bmVfd2lkdGgoJycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxMCwgY3BwX3N0eWxlLmdl
dF9saW5lX3dpZHRoKHUneCcgKiAxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDE2LCBj
cHBfc3R5bGUuZ2V0X2xpbmVfd2lkdGgodSfpg7186YGTfOW6nHznnIx85pSv5bqBJykpCi0KLSAg
ICBkZWYgdGVzdF9maW5kX25leHRfbXVsdGlfbGluZV9jb21tZW50X3N0YXJ0KHNlbGYpOgotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBjcHBfc3R5bGUuZmluZF9uZXh0X211bHRpX2xpbmVf
Y29tbWVudF9zdGFydChbJyddLCAwKSkKLQotICAgICAgICBsaW5lcyA9IFsnYScsICdiJywgJy8q
IGMnXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygyLCBjcHBfc3R5bGUuZmluZF9uZXh0X211
bHRpX2xpbmVfY29tbWVudF9zdGFydChsaW5lcywgMCkpCi0KLSAgICAgICAgbGluZXMgPSBbJ2No
YXIgYVtdID0gIi8qIjsnXSAgIyBub3QgcmVjb2duaXplZCBhcyBjb21tZW50LgotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygxLCBjcHBfc3R5bGUuZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVu
dF9zdGFydChsaW5lcywgMCkpCi0KLSAgICBkZWYgdGVzdF9maW5kX25leHRfbXVsdGlfbGluZV9j
b21tZW50X2VuZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgY3BwX3N0eWxl
LmZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfZW5kKFsnJ10sIDApKQotICAgICAgICBsaW5l
cyA9IFsnYScsICdiJywgJyBjICovJ10KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMiwgY3Bw
X3N0eWxlLmZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfZW5kKGxpbmVzLCAwKSkKLQotICAg
IGRlZiB0ZXN0X3JlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzX2Zyb21fcmFuZ2Uoc2VsZik6Ci0g
ICAgICAgIGxpbmVzID0gWydhJywgJyAgLyogY29tbWVudCAnLCAnICogc3RpbGwgY29tbWVudCcs
ICcgY29tbWVudCAqLyAgICcsICdiJ10KLSAgICAgICAgY3BwX3N0eWxlLnJlbW92ZV9tdWx0aV9s
aW5lX2NvbW1lbnRzX2Zyb21fcmFuZ2UobGluZXMsIDEsIDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKFsnYScsICcvLyBkdW1teScsICcvLyBkdW1teScsICcvLyBkdW1teScsICdiJ10sIGxp
bmVzKQotCi0gICAgZGVmIHRlc3Rfc3BhY2VzX2F0X2VuZF9vZl9saW5lKHNlbGYpOgotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJy8vIEhlbGxvIHRoZXJlICcsCi0gICAg
ICAgICAgICAnTGluZSBlbmRzIGluIHdoaXRlc3BhY2UuICBDb25zaWRlciBkZWxldGluZyB0aGVz
ZSBleHRyYSBzcGFjZXMuJwotICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvZW5kX29mX2xpbmVd
IFs0XScpCi0KLSAgICAjIFRlc3QgQy1zdHlsZSBjYXN0IGNhc2VzLgotICAgIGRlZiB0ZXN0X2Nz
dHlsZV9jYXN0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAg
J2ludCBhID0gKGludCkxLjA7JywKLSAgICAgICAgICAgICdVc2luZyBDLXN0eWxlIGNhc3QuICBV
c2Ugc3RhdGljX2Nhc3Q8aW50PiguLi4pIGluc3RlYWQnCi0gICAgICAgICAgICAnICBbcmVhZGFi
aWxpdHkvY2FzdGluZ10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAg
ICAgICdpbnQgKmEgPSAoaW50ICopREVGSU5FRF9WQUxVRTsnLAotICAgICAgICAgICAgJ1VzaW5n
IEMtc3R5bGUgY2FzdC4gIFVzZSByZWludGVycHJldF9jYXN0PGludCAqPiguLi4pIGluc3RlYWQn
Ci0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2FzdGluZ10gWzRdJywgJ2Zvby5jJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICd1aW50MTYgYSA9ICh1aW50MTYp
MS4wOycsCi0gICAgICAgICAgICAnVXNpbmcgQy1zdHlsZSBjYXN0LiAgVXNlIHN0YXRpY19jYXN0
PHVpbnQxNj4oLi4uKSBpbnN0ZWFkJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2Nhc3Rp
bmddIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnaW50MzIg
YSA9IChpbnQzMikxLjA7JywKLSAgICAgICAgICAgICdVc2luZyBDLXN0eWxlIGNhc3QuICBVc2Ug
c3RhdGljX2Nhc3Q8aW50MzI+KC4uLikgaW5zdGVhZCcKLSAgICAgICAgICAgICcgIFtyZWFkYWJp
bGl0eS9jYXN0aW5nXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAg
ICAgJ3VpbnQ2NCBhID0gKHVpbnQ2NCkxLjA7JywKLSAgICAgICAgICAgICdVc2luZyBDLXN0eWxl
IGNhc3QuICBVc2Ugc3RhdGljX2Nhc3Q8dWludDY0PiguLi4pIGluc3RlYWQnCi0gICAgICAgICAg
ICAnICBbcmVhZGFiaWxpdHkvY2FzdGluZ10gWzRdJykKLQotICAgICMgVGVzdCB0YWtpbmcgYWRk
cmVzcyBvZiBjYXN0cyAocnVudGltZS9jYXN0aW5nKQotICAgIGRlZiB0ZXN0X3J1bnRpbWVfY2Fz
dGluZyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdpbnQq
IHggPSAmc3RhdGljX2Nhc3Q8aW50Kj4oZm9vKTsnLAotICAgICAgICAgICAgJ0FyZSB5b3UgdGFr
aW5nIGFuIGFkZHJlc3Mgb2YgYSBjYXN0PyAgJwotICAgICAgICAgICAgJ1RoaXMgaXMgZGFuZ2Vy
b3VzOiBjb3VsZCBiZSBhIHRlbXAgdmFyLiAgJwotICAgICAgICAgICAgJ1Rha2UgdGhlIGFkZHJl
c3MgYmVmb3JlIGRvaW5nIHRoZSBjYXN0LCByYXRoZXIgdGhhbiBhZnRlcicKLSAgICAgICAgICAg
ICcgIFtydW50aW1lL2Nhc3RpbmddIFs0XScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgK
LSAgICAgICAgICAgICdpbnQqIHggPSAmZHluYW1pY19jYXN0PGludCAqPihmb28pOycsCi0gICAg
ICAgICAgICBbJ0FyZSB5b3UgdGFraW5nIGFuIGFkZHJlc3Mgb2YgYSBjYXN0PyAgJwotICAgICAg
ICAgICAgICdUaGlzIGlzIGRhbmdlcm91czogY291bGQgYmUgYSB0ZW1wIHZhci4gICcKLSAgICAg
ICAgICAgICAnVGFrZSB0aGUgYWRkcmVzcyBiZWZvcmUgZG9pbmcgdGhlIGNhc3QsIHJhdGhlciB0
aGFuIGFmdGVyJwotICAgICAgICAgICAgICcgIFtydW50aW1lL2Nhc3RpbmddIFs0XScsCi0gICAg
ICAgICAgICAgJ0RvIG5vdCB1c2UgZHluYW1pY19jYXN0PD4uICBJZiB5b3UgbmVlZCB0byBjYXN0
IHdpdGhpbiBhIGNsYXNzICcKLSAgICAgICAgICAgICAnaGllcmFyY2h5LCB1c2Ugc3RhdGljX2Nh
c3Q8PiB0byB1cGNhc3QuICBHb29nbGUgZG9lc25cJ3Qgc3VwcG9ydCAnCi0gICAgICAgICAgICAg
J1JUVEkuICBbcnVudGltZS9ydHRpXSBbNV0nXSkKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50
KAotICAgICAgICAgICAgJ2ludCogeCA9ICZyZWludGVycHJldF9jYXN0PGludCAqPihmb28pOycs
Ci0gICAgICAgICAgICAnQXJlIHlvdSB0YWtpbmcgYW4gYWRkcmVzcyBvZiBhIGNhc3Q/ICAnCi0g
ICAgICAgICAgICAnVGhpcyBpcyBkYW5nZXJvdXM6IGNvdWxkIGJlIGEgdGVtcCB2YXIuICAnCi0g
ICAgICAgICAgICAnVGFrZSB0aGUgYWRkcmVzcyBiZWZvcmUgZG9pbmcgdGhlIGNhc3QsIHJhdGhl
ciB0aGFuIGFmdGVyJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvY2FzdGluZ10gWzRdJykKLQot
ICAgICAgICAjIEl0J3MgT0sgdG8gY2FzdCBhbiBhZGRyZXNzLgotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KAotICAgICAgICAgICAgJ2ludCogeCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50ICo+KCZm
b28pOycsCi0gICAgICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0X3J1bnRpbWVfc2VsZmluaXQo
c2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnRm9vOjpGb28o
QmFyIHIsIEJlbCBsKSA6IHJfKHJfKSwgbF8obF8pIHsgfScsCi0gICAgICAgICAgICAnWW91IHNl
ZW0gdG8gYmUgaW5pdGlhbGl6aW5nIGEgbWVtYmVyIHZhcmlhYmxlIHdpdGggaXRzZWxmLicKLSAg
ICAgICAgICAgICcgIFtydW50aW1lL2luaXRdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoCi0gICAgICAgICAgICAnRm9vOjpGb28oQmFyIHIsIEJlbCBsKSA6IHJfKHIpLCBsXyhsKSB7
IH0nLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAg
ICAgICAnRm9vOjpGb28oQmFyIHIpIDogcl8ociksIGxfKHJfKSwgbGxfKGxfKSB7IH0nLAotICAg
ICAgICAgICAgJycpCi0KLSAgICBkZWYgdGVzdF9ydW50aW1lX3J0dGkoc2VsZik6Ci0gICAgICAg
IHN0YXRlbWVudCA9ICdpbnQqIHggPSBkeW5hbWljX2Nhc3Q8aW50Kj4oJmZvbyk7JwotICAgICAg
ICBlcnJvcl9tZXNzYWdlID0gKAotICAgICAgICAgICAgJ0RvIG5vdCB1c2UgZHluYW1pY19jYXN0
PD4uICBJZiB5b3UgbmVlZCB0byBjYXN0IHdpdGhpbiBhIGNsYXNzICcKLSAgICAgICAgICAgICdo
aWVyYXJjaHksIHVzZSBzdGF0aWNfY2FzdDw+IHRvIHVwY2FzdC4gIEdvb2dsZSBkb2VzblwndCBz
dXBwb3J0ICcKLSAgICAgICAgICAgICdSVFRJLiAgW3J1bnRpbWUvcnR0aV0gWzVdJykKLSAgICAg
ICAgIyBkeW5hbWljX2Nhc3QgaXMgZGlzYWxsb3dlZCBpbiBtb3N0IGZpbGVzLgotICAgICAgICBz
ZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmNwcCcsIHN0YXRlbWVudCwgZXJy
b3JfbWVzc2FnZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zv
by5oJywgc3RhdGVtZW50LCBlcnJvcl9tZXNzYWdlKQotICAgICAgICAjIEl0IGlzIGV4cGxpY2l0
bHkgYWxsb3dlZCBpbiB0ZXN0cywgaG93ZXZlci4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3Vh
Z2VfcnVsZXNfY2hlY2soJ2Zvb190ZXN0LmNwcCcsIHN0YXRlbWVudCwgJycpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb29fdW5pdHRlc3QuY3BwJywgc3RhdGVt
ZW50LCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvb19y
ZWd0ZXN0LmNwcCcsIHN0YXRlbWVudCwgJycpCi0KLSAgICAjIFdlIGNhbm5vdCB0ZXN0IHRoaXMg
ZnVuY3Rpb25hbGl0eSBiZWNhdXNlIG9mIGRpZmZlcmVuY2Ugb2YKLSAgICAjIGZ1bmN0aW9uIGRl
ZmluaXRpb25zLiAgQW55d2F5LCB3ZSBtYXkgbmV2ZXIgZW5hYmxlIHRoaXMuCi0gICAgIwotICAg
ICMgIyBUZXN0IGZvciB1bm5hbWVkIGFyZ3VtZW50cyBpbiBhIG1ldGhvZC4KLSAgICAjIGRlZiB0
ZXN0X2NoZWNrX2Zvcl91bm5hbWVkX3BhcmFtcyhzZWxmKToKLSAgICAjICAgbWVzc2FnZSA9ICgn
QWxsIHBhcmFtZXRlcnMgc2hvdWxkIGJlIG5hbWVkIGluIGEgZnVuY3Rpb24nCi0gICAgIyAgICAg
ICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2Z1bmN0aW9uXSBbM10nKQotICAgICMgICBzZWxmLmFz
c2VydF9saW50KCd2aXJ0dWFsIHZvaWQgQShpbnQqKSBjb25zdDsnLCBtZXNzYWdlKQotICAgICMg
ICBzZWxmLmFzc2VydF9saW50KCd2aXJ0dWFsIHZvaWQgQih2b2lkICgqZm4pKGludCopKTsnLCBt
ZXNzYWdlKQotICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2aXJ0dWFsIHZvaWQgQyhpbnQqKTsn
LCBtZXNzYWdlKQotICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2b2lkICooKmYpKHZvaWQgKikg
PSB4OycsIG1lc3NhZ2UpCi0gICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgTWV0aG9kKGNo
YXIqKSB7JywgbWVzc2FnZSkKLSAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCBNZXRob2Qo
Y2hhciopOycsIG1lc3NhZ2UpCi0gICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgTWV0aG9k
KGNoYXIqIC8qeCovKTsnLCBtZXNzYWdlKQotICAgICMgICBzZWxmLmFzc2VydF9saW50KCd0eXBl
ZGVmIHZvaWQgKCpNZXRob2QpKGludDMyKTsnLCBtZXNzYWdlKQotICAgICMgICBzZWxmLmFzc2Vy
dF9saW50KCdzdGF0aWMgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKikgdGhyb3coKTsnLCBt
ZXNzYWdlKQotICAgICMgCi0gICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZpcnR1YWwgdm9pZCBE
KGludCogcCk7JywgJycpCi0gICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgb3BlcmF0b3Ig
ZGVsZXRlKHZvaWQqIHgpIHRocm93KCk7JywgJycpCi0gICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQo
J3ZvaWQgTWV0aG9kKGNoYXIqIHgpXG57JywgJycpCi0gICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQo
J3ZvaWQgTWV0aG9kKGNoYXIqIC8qeCovKVxueycsICcnKQotICAgICMgICBzZWxmLmFzc2VydF9s
aW50KCd2b2lkIE1ldGhvZChjaGFyKiB4KTsnLCAnJykKLSAgICAjICAgc2VsZi5hc3NlcnRfbGlu
dCgndHlwZWRlZiB2b2lkICgqTWV0aG9kKShpbnQzMiB4KTsnLCAnJykKLSAgICAjICAgc2VsZi5h
c3NlcnRfbGludCgnc3RhdGljIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogeCkgdGhyb3co
KTsnLCAnJykKLSAgICAjICAgc2VsZi5hc3NlcnRfbGludCgnc3RhdGljIHZvaWQgb3BlcmF0b3Ig
ZGVsZXRlW10odm9pZCogLyp4Ki8pIHRocm93KCk7JywgJycpCi0gICAgIyAKLSAgICAjICAgIyBU
aGlzIG9uZSBzaG91bGQgdGVjaG5pY2FsbHkgd2FybiwgYnV0IGRvZXNuJ3QgYmVjYXVzZSB0aGUg
ZnVuY3Rpb24KLSAgICAjICAgIyBwb2ludGVyIGlzIGNvbmZ1c2luZy4KLSAgICAjICAgc2VsZi5h
c3NlcnRfbGludCgndmlydHVhbCB2b2lkIEUodm9pZCAoKmZuKShpbnQqIHApKTsnLCAnJykKLQot
ICAgICMgVGVzdCBkZXByZWNhdGVkIGNhc3RzIHN1Y2ggYXMgaW50KGQpCi0gICAgZGVmIHRlc3Rf
ZGVwcmVjYXRlZF9jYXN0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAg
ICAgICAgJ2ludCBhID0gaW50KDIuMik7JywKLSAgICAgICAgICAgICdVc2luZyBkZXByZWNhdGVk
IGNhc3Rpbmcgc3R5bGUuICAnCi0gICAgICAgICAgICAnVXNlIHN0YXRpY19jYXN0PGludD4oLi4u
KSBpbnN0ZWFkJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2Nhc3RpbmddIFs0XScpCi0g
ICAgICAgICMgQ2hlY2tzIGZvciBmYWxzZSBwb3NpdGl2ZXMuLi4KLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgKLSAgICAgICAgICAgICdpbnQgYSA9IGludCgpOyAvLyBDb25zdHJ1Y3Rvciwgby5r
LicsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAg
ICAgICdYOjpYKCkgOiBhKGludCgpKSB7fSAvLyBkZWZhdWx0IENvbnN0cnVjdG9yLCBvLmsuJywK
LSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAg
J29wZXJhdG9yIGJvb2woKTsgLy8gQ29udmVyc2lvbiBvcGVyYXRvciwgby5rLicsCi0gICAgICAg
ICAgICAnJykKLQotICAgICMgVGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8gYSBnTW9jayBtZXRob2Qg
ZGVmaW5pdGlvbiBpcyBhIGZ1bmN0aW9uIHNpZ25hdHVyZQotICAgICMgdGhhdCBvZnRlbiBsb29r
cyBsaWtlIGEgYmFkIGNhc3QgYnV0IHNob3VsZCBub3QgcGlja2VkIHVwIGJ5IGxpbnQuCi0gICAg
ZGVmIHRlc3RfbW9ja19tZXRob2Qoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0g
ICAgICAgICAgICAnTU9DS19NRVRIT0QwKG1ldGhvZCwgaW50KCkpOycsCi0gICAgICAgICAgICAn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdNT0NLX0NPTlNUX01F
VEhPRDEobWV0aG9kLCBmbG9hdChzdHJpbmcpKTsnLAotICAgICAgICAgICAgJycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnTU9DS19DT05TVF9NRVRIT0QyX1QobWV0
aG9kLCBkb3VibGUoZmxvYXQsIGZsb2F0KSk7JywKLSAgICAgICAgICAgICcnKQotCi0gICAgIyBU
ZXN0IHNpemVvZih0eXBlKSBjYXNlcy4KLSAgICBkZWYgdGVzdF9zaXplb2ZfdHlwZShzZWxmKToK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdzaXplb2YoaW50KTsnLAot
ICAgICAgICAgICAgJ1VzaW5nIHNpemVvZih0eXBlKS4gIFVzZSBzaXplb2YodmFybmFtZSkgaW5z
dGVhZCBpZiBwb3NzaWJsZScKLSAgICAgICAgICAgICcgIFtydW50aW1lL3NpemVvZl0gWzFdJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdzaXplb2YoaW50ICopOycs
Ci0gICAgICAgICAgICAnVXNpbmcgc2l6ZW9mKHR5cGUpLiAgVXNlIHNpemVvZih2YXJuYW1lKSBp
bnN0ZWFkIGlmIHBvc3NpYmxlJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvc2l6ZW9mXSBbMV0n
KQotCi0gICAgIyBUZXN0IHR5cGVkZWYgY2FzZXMuICBUaGVyZSB3YXMgYSBidWcgdGhhdCBjcHBf
c3R5bGUgbWlzaWRlbnRpZmllZAotICAgICMgdHlwZWRlZiBmb3IgcG9pbnRlciB0byBmdW5jdGlv
biBhcyBDLXN0eWxlIGNhc3QgYW5kIHByb2R1Y2VkCi0gICAgIyBmYWxzZS1wb3NpdGl2ZSBlcnJv
ciBtZXNzYWdlcy4KLSAgICBkZWYgdGVzdF90eXBlZGVmX2Zvcl9wb2ludGVyX3RvX2Z1bmN0aW9u
KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ3R5cGVkZWYg
dm9pZCAoKkZ1bmMpKGludCB4KTsnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoCi0gICAgICAgICAgICAndHlwZWRlZiB2b2lkICgqRnVuYykoaW50ICp4KTsnLAot
ICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAn
dHlwZWRlZiB2b2lkIEZ1bmMoaW50IHgpOycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICd0eXBlZGVmIHZvaWQgRnVuYyhpbnQgKngpOycs
Ci0gICAgICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0X2luY2x1ZGVfd2hhdF95b3VfdXNlX25v
X2ltcGxlbWVudGF0aW9uX2ZpbGVzKHNlbGYpOgotICAgICAgICBjb2RlID0gJ3N0ZDo6dmVjdG9y
PGludD4gZm9vOycKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ0FkZCAjaW5jbHVkZSA8dmVj
dG9yPiBmb3IgdmVjdG9yPD4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtidWlsZC9p
bmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5wZXJmb3JtX2luY2x1ZGVfd2hhdF95b3VfdXNlKGNvZGUsICdmb28uaCcpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wZXJm
b3JtX2luY2x1ZGVfd2hhdF95b3VfdXNlKGNvZGUsICdmb28uY3BwJykpCi0KLSAgICBkZWYgdGVz
dF9pbmNsdWRlX3doYXRfeW91X3VzZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVk
ZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSA8dmVjdG9yPgotICAgICAg
ICAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiBmb287Ci0gICAgICAgICAgICAnJycsCi0gICAgICAg
ICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAg
ICAgICAgICAnJycjaW5jbHVkZSA8bWFwPgotICAgICAgICAgICAgICAgc3RkOjpwYWlyPGludCxp
bnQ+IGZvbzsKLSAgICAgICAgICAgICcnJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxm
LmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlIDxt
dWx0aW1hcD4KLSAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxpbnQsaW50PiBmb287Ci0gICAgICAg
ICAgICAnJycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93
aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSA8aGFzaF9tYXA+Ci0gICAgICAg
ICAgICAgICBzdGQ6OnBhaXI8aW50LGludD4gZm9vOwotICAgICAgICAgICAgJycnLAotICAgICAg
ICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAg
ICAgICAgICAgJycnI2luY2x1ZGUgPHV0aWxpdHk+Ci0gICAgICAgICAgICAgICBzdGQ6OnBhaXI8
aW50LGludD4gZm9vOwotICAgICAgICAgICAgJycnLAotICAgICAgICAgICAgJycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAgJycnI2luY2x1
ZGUgPHZlY3Rvcj4KLSAgICAgICAgICAgICAgIERFQ0xBUkVfc3RyaW5nKGZvb2Jhcik7Ci0gICAg
ICAgICAgICAnJycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVk
ZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSA8dmVjdG9yPgotICAgICAg
ICAgICAgICAgREVGSU5FX3N0cmluZyhmb29iYXIsICIiLCAiIik7Ci0gICAgICAgICAgICAnJycs
Ci0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91
c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSA8dmVjdG9yPgotICAgICAgICAgICAgICAgc3Rk
OjpwYWlyPGludCxpbnQ+IGZvbzsKLSAgICAgICAgICAgICcnJywKLSAgICAgICAgICAgICdBZGQg
I2luY2x1ZGUgPHV0aWxpdHk+IGZvciBwYWlyPD4nCi0gICAgICAgICAgICAnICBbYnVpbGQvaW5j
bHVkZV93aGF0X3lvdV91c2VdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hh
dF95b3VfdXNlKAotICAgICAgICAgICAgJycnI2luY2x1ZGUgImJhc2UvZm9vYmFyLmgiCi0gICAg
ICAgICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+IGZvbzsKLSAgICAgICAgICAgICcnJywKLSAgICAg
ICAgICAgICdBZGQgI2luY2x1ZGUgPHZlY3Rvcj4gZm9yIHZlY3Rvcjw+JwotICAgICAgICAgICAg
JyAgW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2Vy
dF9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlIDx2ZWN0b3I+
Ci0gICAgICAgICAgICAgICBzdGQ6OnNldDxpbnQ+IGZvbzsKLSAgICAgICAgICAgICcnJywKLSAg
ICAgICAgICAgICdBZGQgI2luY2x1ZGUgPHNldD4gZm9yIHNldDw+JwotICAgICAgICAgICAgJyAg
W2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9p
bmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlICJiYXNlL2Zvb2Jh
ci5oIgotICAgICAgICAgICAgICBoYXNoX21hcDxpbnQsIGludD4gZm9vYmFyOwotICAgICAgICAg
ICAgJycnLAotICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8aGFzaF9tYXA+IGZvciBoYXNoX21h
cDw+JwotICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQot
ICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcn
JyNpbmNsdWRlICJiYXNlL2Zvb2Jhci5oIgotICAgICAgICAgICAgICAgYm9vbCBmb29iYXIgPSBz
dGQ6Omxlc3M8aW50PigwLDEpOwotICAgICAgICAgICAgJycnLAotICAgICAgICAgICAgJ0FkZCAj
aW5jbHVkZSA8ZnVuY3Rpb25hbD4gZm9yIGxlc3M8PicKLSAgICAgICAgICAgICcgIFtidWlsZC9p
bmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93
aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSAiYmFzZS9mb29iYXIuaCIKLSAg
ICAgICAgICAgICAgIGJvb2wgZm9vYmFyID0gbWluPGludD4oMCwxKTsKLSAgICAgICAgICAgICcn
JywKLSAgICAgICAgICAgICdBZGQgI2luY2x1ZGUgPGFsZ29yaXRobT4gZm9yIG1pbiAgW2J1aWxk
L2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRl
X3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICd2b2lkIGEoY29uc3Qgc3RyaW5nICZmb29iYXIp
OycsCi0gICAgICAgICAgICAnQWRkICNpbmNsdWRlIDxzdHJpbmc+IGZvciBzdHJpbmcgIFtidWls
ZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVk
ZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSAiYmFzZS9mb29iYXIuaCIK
LSAgICAgICAgICAgICAgIGJvb2wgZm9vYmFyID0gc3dhcCgwLDEpOwotICAgICAgICAgICAgJycn
LAotICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8YWxnb3JpdGhtPiBmb3Igc3dhcCAgW2J1aWxk
L2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRl
X3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlICJiYXNlL2Zvb2Jhci5oIgot
ICAgICAgICAgICAgICAgYm9vbCBmb29iYXIgPSB0cmFuc2Zvcm0oYS5iZWdpbigpLCBhLmVuZCgp
LCBiLnN0YXJ0KCksIEZvbyk7Ci0gICAgICAgICAgICAnJycsCi0gICAgICAgICAgICAnQWRkICNp
bmNsdWRlIDxhbGdvcml0aG0+IGZvciB0cmFuc2Zvcm0gICcKLSAgICAgICAgICAgICdbYnVpbGQv
aW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVf
d2hhdF95b3VfdXNlKAotICAgICAgICAgICAgJycnI2luY2x1ZGUgImJhc2UvZm9vYmFyLmgiCi0g
ICAgICAgICAgICAgICBib29sIGZvb2JhciA9IG1pbl9lbGVtZW50KGEuYmVnaW4oKSwgYS5lbmQo
KSk7Ci0gICAgICAgICAgICAnJycsCi0gICAgICAgICAgICAnQWRkICNpbmNsdWRlIDxhbGdvcml0
aG0+IGZvciBtaW5fZWxlbWVudCAgJwotICAgICAgICAgICAgJ1tidWlsZC9pbmNsdWRlX3doYXRf
eW91X3VzZV0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2Uo
Ci0gICAgICAgICAgICAnJydmb28tPnN3YXAoMCwxKTsKLSAgICAgICAgICAgICAgIGZvby5zd2Fw
KDAsMSk7Ci0gICAgICAgICAgICAnJycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSA8c3Ry
aW5nPgotICAgICAgICAgICAgICAgdm9pZCBhKGNvbnN0IHN0ZDo6bXVsdGltYXA8aW50LHN0cmlu
Zz4gJmZvb2Jhcik7Ci0gICAgICAgICAgICAnJycsCi0gICAgICAgICAgICAnQWRkICNpbmNsdWRl
IDxtYXA+IGZvciBtdWx0aW1hcDw+JwotICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVfd2hh
dF95b3VfdXNlXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3Vz
ZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlIDxxdWV1ZT4KLSAgICAgICAgICAgICAgIHZvaWQg
YShjb25zdCBzdGQ6OnByaW9yaXR5X3F1ZXVlPGludD4gJmZvb2Jhcik7Ci0gICAgICAgICAgICAn
JycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lv
dV91c2UoCi0gICAgICAgICAgICAgJycnI2luY2x1ZGUgImJhc2UvYmFzaWN0eXBlcy5oIgotICAg
ICAgICAgICAgICAgICNpbmNsdWRlICJiYXNlL3BvcnQuaCIKLSAgICAgICAgICAgICAgICAjaW5j
bHVkZSA8YXNzZXJ0Lmg+Ci0gICAgICAgICAgICAgICAgI2luY2x1ZGUgPHN0cmluZz4KLSAgICAg
ICAgICAgICAgICAjaW5jbHVkZSA8dmVjdG9yPgotICAgICAgICAgICAgICAgIHZlY3RvcjxzdHJp
bmc+IGhham9hOycnJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3Vf
dXNlKAotICAgICAgICAgICAgJycnI2luY2x1ZGUgPHN0cmluZz4KLSAgICAgICAgICAgICAgIGlu
dCBpID0gbnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkKLSAgICAgICAgICAgICcnJywKLSAgICAg
ICAgICAgICdBZGQgI2luY2x1ZGUgPGxpbWl0cz4gZm9yIG51bWVyaWNfbGltaXRzPD4nCi0gICAg
ICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAgJycnI2luY2x1ZGUg
PGxpbWl0cz4KLSAgICAgICAgICAgICAgIGludCBpID0gbnVtZXJpY19saW1pdHM8aW50Pjo6bWF4
KCkKLSAgICAgICAgICAgICcnJywKLSAgICAgICAgICAgICcnKQotCi0gICAgICAgICMgVGVzdCB0
aGUgVXBkYXRlSW5jbHVkZVN0YXRlIGNvZGUgcGF0aC4KLSAgICAgICAgbW9ja19oZWFkZXJfY29u
dGVudHMgPSBbJyNpbmNsdWRlICJibGFoL2Zvby5oIicsICcjaW5jbHVkZSAiYmxhaC9iYXIuaCIn
XQotICAgICAgICBtZXNzYWdlID0gc2VsZi5wZXJmb3JtX2luY2x1ZGVfd2hhdF95b3VfdXNlKAot
ICAgICAgICAgICAgJyNpbmNsdWRlICJjb25maWcuaCJcbicKLSAgICAgICAgICAgICcjaW5jbHVk
ZSAiYmxhaC9hLmgiXG4nLAotICAgICAgICAgICAgZmlsZW5hbWU9J2JsYWgvYS5jcHAnLAotICAg
ICAgICAgICAgaW89TW9ja0lvKG1vY2tfaGVhZGVyX2NvbnRlbnRzKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMobWVzc2FnZSwgJycpCi0KLSAgICAgICAgbW9ja19oZWFkZXJfY29udGVudHMg
PSBbJyNpbmNsdWRlIDxzZXQ+J10KLSAgICAgICAgbWVzc2FnZSA9IHNlbGYucGVyZm9ybV9pbmNs
dWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlICJjb25maWcuaCIKLSAg
ICAgICAgICAgICAgICNpbmNsdWRlICJibGFoL2EuaCIKLQotICAgICAgICAgICAgICAgc3RkOjpz
ZXQ8aW50PiBmb287JycnLAotICAgICAgICAgICAgZmlsZW5hbWU9J2JsYWgvYS5jcHAnLAotICAg
ICAgICAgICAgaW89TW9ja0lvKG1vY2tfaGVhZGVyX2NvbnRlbnRzKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMobWVzc2FnZSwgJycpCi0KLSAgICAgICAgIyBJZiB0aGVyZSdzIGp1c3QgYSAu
Y3BwIGFuZCB0aGUgaGVhZGVyIGNhbid0IGJlIGZvdW5kIHRoZW4gaXQncyBvay4KLSAgICAgICAg
bWVzc2FnZSA9IHNlbGYucGVyZm9ybV9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAg
ICcnJyNpbmNsdWRlICJjb25maWcuaCIKLSAgICAgICAgICAgICAgICNpbmNsdWRlICJibGFoL2Eu
aCIKLQotICAgICAgICAgICAgICAgc3RkOjpzZXQ8aW50PiBmb287JycnLAotICAgICAgICAgICAg
ZmlsZW5hbWU9J2JsYWgvYS5jcHAnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtZXNzYWdl
LCAnJykKLQotICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBmaW5kIHRoZSBoZWFkZXJzIHdpdGggcmVs
YXRpdmUgcGF0aHMuCi0gICAgICAgIG1vY2tfaGVhZGVyX2NvbnRlbnRzID0gWycnXQotICAgICAg
ICBtZXNzYWdlID0gc2VsZi5wZXJmb3JtX2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAg
ICAgJycnI2luY2x1ZGUgImNvbmZpZy5oIgotICAgICAgICAgICAgICAgI2luY2x1ZGUgIiVzL2Eu
aCIKLQotICAgICAgICAgICAgICAgc3RkOjpzZXQ8aW50PiBmb287JycnICUgb3MucGF0aC5iYXNl
bmFtZShvcy5nZXRjd2QoKSksCi0gICAgICAgICAgICBmaWxlbmFtZT0nYS5jcHAnLAotICAgICAg
ICAgICAgaW89TW9ja0lvKG1vY2tfaGVhZGVyX2NvbnRlbnRzKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMobWVzc2FnZSwgJ0FkZCAjaW5jbHVkZSA8c2V0PiBmb3Igc2V0PD4gICcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1tidWlsZC9pbmNsdWRlX3doYXRfeW91X3Vz
ZV0gWzRdJykKLQotICAgIGRlZiB0ZXN0X2ZpbGVzX2JlbG9uZ190b19zYW1lX21vZHVsZShzZWxm
KToKLSAgICAgICAgZiA9IGNwcF9zdHlsZS5maWxlc19iZWxvbmdfdG9fc2FtZV9tb2R1bGUKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICcnKSwgZignYS5jcHAnLCAnYS5oJykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChUcnVlLCAnJyksIGYoJ2Jhc2UvZ29vZ2xlLmNwcCcs
ICdiYXNlL2dvb2dsZS5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChUcnVlLCAnJyks
IGYoJ2Jhc2UvZ29vZ2xlX3Rlc3QuY3BwJywgJ2Jhc2UvZ29vZ2xlLmgnKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoKFRydWUsICcnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZign
YmFzZS9nb29nbGVfdW5pdHRlc3QuY3BwJywgJ2Jhc2UvZ29vZ2xlLmgnKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoKFRydWUsICcnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZign
YmFzZS9pbnRlcm5hbC9nb29nbGVfdW5pdHRlc3QuY3BwJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnYmFzZS9wdWJsaWMvZ29vZ2xlLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoKFRydWUsICd4eHgveXl5LycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmKCd4eHgv
eXl5L2Jhc2UvaW50ZXJuYWwvZ29vZ2xlX3VuaXR0ZXN0LmNwcCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2Jhc2UvcHVibGljL2dvb2dsZS5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKChUcnVlLCAneHh4L3l5eS8nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZign
eHh4L3l5eS9iYXNlL2dvb2dsZV91bml0dGVzdC5jcHAnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdiYXNlL3B1YmxpYy9nb29nbGUuaCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cygoVHJ1ZSwgJycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmKCdiYXNlL2dvb2dsZV91
bml0dGVzdC5jcHAnLCAnYmFzZS9nb29nbGUtaW5sLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoKFRydWUsICcvaG9tZS9idWlsZC9nb29nbGUzLycpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBmKCcvaG9tZS9idWlsZC9nb29nbGUzL2Jhc2UvZ29vZ2xlLmNwcCcsICdiYXNlL2dv
b2dsZS5oJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKEZhbHNlLCAnJyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIGYoJy9ob21lL2J1aWxkL2dvb2dsZTMvYmFzZS9nb29nbGUu
Y3BwJywgJ2Jhc3UvZ29vZ2xlLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKEZhbHNl
LCAnJyksIGYoJ2EuY3BwJywgJ2IuaCcpKQotCi0gICAgZGVmIHRlc3RfY2xlYW5zZV9saW5lKHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnaW50IGZvbyA9IDA7ICAnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuY2xlYW5zZV9jb21tZW50cygnaW50IGZvbyA9
IDA7ICAvLyBkYW5nZXIhJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdpbnQgbyA9IDA7
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLmNsZWFuc2VfY29tbWVudHMo
J2ludCAvKiBmb28gKi8gbyA9IDA7JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdmb28o
aW50IGEsIGludCBiKTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuY2xl
YW5zZV9jb21tZW50cygnZm9vKGludCBhIC8qIGFiYyAqLywgaW50IGIpOycpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdmKGEsIGIpOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3Bw
X3N0eWxlLmNsZWFuc2VfY29tbWVudHMoJ2YoYSwgLyogbmFtZSAqLyBiKTsnKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnZihhLCBiKTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNw
cF9zdHlsZS5jbGVhbnNlX2NvbW1lbnRzKCdmKGEgLyogbmFtZSAqLywgYik7JykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ2YoYSwgYik7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBj
cHBfc3R5bGUuY2xlYW5zZV9jb21tZW50cygnZihhLCAvKiBuYW1lICovYik7JykpCi0KLSAgICBk
ZWYgdGVzdF9tdWx0aV9saW5lX2NvbW1lbnRzKHNlbGYpOgotICAgICAgICAjIG1pc3NpbmcgZXhw
bGljaXQgaXMgYmFkCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAg
ICAgICAgIHInJydpbnQgYSA9IDA7Ci0gICAgICAgICAgICAgICAgLyogbXVsdGktbGluZXIKLSAg
ICAgICAgICAgICAgICBjbGFzcyBGb28gewotICAgICAgICAgICAgICAgIEZvbyhpbnQgZik7ICAv
LyBzaG91bGQgY2F1c2UgYSBsaW50IHdhcm5pbmcgaW4gY29kZQotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICovICcnJywKLSAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgIHInJycvKiBpbnQgYSA9IDA7IG11bHRpLWxpbmVy
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgaW50IGIgPSAwOycnJywKLSAgICAgICdDb3VsZCBu
b3QgZmluZCBlbmQgb2YgbXVsdGktbGluZSBjb21tZW50JwotICAgICAgJyAgW3JlYWRhYmlsaXR5
L211bHRpbGluZV9jb21tZW50XSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQocicnJyAgICAvKiBtdWx0aS1saW5lIGNvbW1lbnQnJycsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnQ291bGQgbm90IGZpbmQgZW5kIG9mIG11bHRpLWxpbmUgY29t
bWVudCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0
eS9tdWx0aWxpbmVfY29tbWVudF0gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KHInJycgICAgLy8gLyogY29tbWVudCwgYnV0IG5vdCBtdWx0aS1saW5lJycnLCAnJykK
LQotICAgIGRlZiB0ZXN0X211bHRpbGluZV9zdHJpbmdzKHNlbGYpOgotICAgICAgICBtdWx0aWxp
bmVfc3RyaW5nX2Vycm9yX21lc3NhZ2UgPSAoCi0gICAgICAgICAgICAnTXVsdGktbGluZSBzdHJp
bmcgKCIuLi4iKSBmb3VuZC4gIFRoaXMgbGludCBzY3JpcHQgZG9lc25cJ3QgJwotICAgICAgICAg
ICAgJ2RvIHdlbGwgd2l0aCBzdWNoIHN0cmluZ3MsIGFuZCBtYXkgZ2l2ZSBib2d1cyB3YXJuaW5n
cy4gIFRoZXlcJ3JlICcKLSAgICAgICAgICAgICd1Z2x5IGFuZCB1bm5lY2Vzc2FyeSwgYW5kIHlv
dSBzaG91bGQgdXNlIGNvbmNhdGVuYXRpb24gaW5zdGVhZCIuJwotICAgICAgICAgICAgJyAgW3Jl
YWRhYmlsaXR5L211bHRpbGluZV9zdHJpbmddIFs1XScpCi0KLSAgICAgICAgZmlsZV9wYXRoID0g
J215ZGlyL2Zvby5jcHAnCi0KLSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0
b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBzZWxmLnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0
aCwgJ2NwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydjb25zdCBjaGFyKiBz
dHIgPSAiVGhpcyBpcyBhXFwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIG11
bHRpbGluZSBzdHJpbmcuIjsnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJv
cl9jb2xsZWN0b3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAotICAgICAgICAgICAgMiwg
ICMgT25lIHBlciBsaW5lLgotICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0
KCkuY291bnQobXVsdGlsaW5lX3N0cmluZ19lcnJvcl9tZXNzYWdlKSkKLQotICAgICMgVGVzdCBu
b24tZXhwbGljaXQgc2luZ2xlLWFyZ3VtZW50IGNvbnN0cnVjdG9ycwotICAgIGRlZiB0ZXN0X2V4
cGxpY2l0X3NpbmdsZV9hcmd1bWVudF9jb25zdHJ1Y3RvcnMoc2VsZik6Ci0gICAgICAgICMgbWlz
c2luZyBleHBsaWNpdCBpcyBiYWQKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgRm9vKGludCBm
KTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJ1NpbmdsZS1hcmd1bWVudCBj
b25zdHJ1Y3RvcnMgc2hvdWxkIGJlIG1hcmtlZCBleHBsaWNpdC4nCi0gICAgICAgICAgICAnICBb
cnVudGltZS9leHBsaWNpdF0gWzVdJykKLSAgICAgICAgIyBtaXNzaW5nIGV4cGxpY2l0IGlzIGJh
ZCwgZXZlbiB3aXRoIHdoaXRlc3BhY2UKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgRm9vIChp
bnQgZik7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgIFsnRXh0cmEgc3BhY2Ug
YmVmb3JlICggaW4gZnVuY3Rpb24gY2FsbCAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNF0nLAotICAg
ICAgICAgICAgICdTaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHNob3VsZCBiZSBtYXJrZWQg
ZXhwbGljaXQuJwotICAgICAgICAgICAgICcgIFtydW50aW1lL2V4cGxpY2l0XSBbNV0nXSkKLSAg
ICAgICAgIyBtaXNzaW5nIGV4cGxpY2l0LCB3aXRoIGRpc3RyYWN0aW5nIGNvbW1lbnQsIGlzIHN0
aWxsIGJhZAotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAg
ICAnJydjbGFzcyBGb28gewotICAgICAgICAgICAgICAgICBGb28oaW50IGYpOyAvLyBzaW1wbGVy
IHRoYW4gRm9vKGJsYXJnaCwgYmxhcmcpCi0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAg
ICAgICdTaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHNob3VsZCBiZSBtYXJrZWQgZXhwbGlj
aXQuJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvZXhwbGljaXRdIFs1XScpCi0gICAgICAgICMg
bWlzc2luZyBleHBsaWNpdCwgd2l0aCBxdWFsaWZpZWQgY2xhc3NuYW1lCi0gICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2NsYXNzIFF1YWxpZmllcjo6
QW5vdGhlck9uZTo6Rm9vIHsKLSAgICAgICAgICAgICAgICAgRm9vKGludCBmKTsKLSAgICAgICAg
ICAgICAgIH07JycnLAotICAgICAgICAgICAgJ1NpbmdsZS1hcmd1bWVudCBjb25zdHJ1Y3RvcnMg
c2hvdWxkIGJlIG1hcmtlZCBleHBsaWNpdC4nCi0gICAgICAgICAgICAnICBbcnVudGltZS9leHBs
aWNpdF0gWzVdJykKLSAgICAgICAgIyBzdHJ1Y3RzIGFyZSBjYXVnaHQgYXMgd2VsbC4KLSAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnc3RydWN0IEZv
byB7Ci0gICAgICAgICAgICAgICAgIEZvbyhpbnQgZik7Ci0gICAgICAgICAgICAgICB9OycnJywK
LSAgICAgICAgICAgICdTaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHNob3VsZCBiZSBtYXJr
ZWQgZXhwbGljaXQuJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvZXhwbGljaXRdIFs1XScpCi0g
ICAgICAgICMgVGVtcGxhdGl6ZWQgY2xhc3NlcyBhcmUgY2F1Z2h0IGFzIHdlbGwuCi0gICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IGNsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAgIEZvbyhpbnQgZik7Ci0gICAg
ICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICdTaW5nbGUtYXJndW1lbnQgY29uc3RydWN0
b3JzIHNob3VsZCBiZSBtYXJrZWQgZXhwbGljaXQuJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUv
ZXhwbGljaXRdIFs1XScpCi0gICAgICAgICMgcHJvcGVyIHN0eWxlIGlzIG9rYXkKLSAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsK
LSAgICAgICAgICAgICAgICAgZXhwbGljaXQgRm9vKGludCBmKTsKLSAgICAgICAgICAgICAgIH07
JycnLAotICAgICAgICAgICAgJycpCi0gICAgICAgICMgdHdvIGFyZ3VtZW50IGNvbnN0cnVjdG9y
IGlzIG9rYXkKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAg
ICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgRm9vKGludCBmLCBpbnQgYik7Ci0g
ICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICcnKQotICAgICAgICAjIHR3byBhcmd1
bWVudCBjb25zdHJ1Y3RvciwgYWNyb3NzIHR3byBsaW5lcywgaXMgb2theQotICAgICAgICBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28gewotICAg
ICAgICAgICAgICAgICBGb28oaW50IGYsCi0gICAgICAgICAgICAgICAgICAgICBpbnQgYik7Ci0g
ICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICcnKQotICAgICAgICAjIG5vbi1jb25z
dHJ1Y3RvciAoYnV0IHNpbWlsYXIgbmFtZSksIGlzIG9rYXkKLSAgICAgICAgc2VsZi5hc3NlcnRf
bXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAg
ICAgICAgYUZvbyhpbnQgZik7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICcn
KQotICAgICAgICAjIGNvbnN0cnVjdG9yIHdpdGggdm9pZCBhcmd1bWVudCBpcyBva2F5Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2NsYXNzIEZv
byB7Ci0gICAgICAgICAgICAgICAgIEZvbyh2b2lkKTsKLSAgICAgICAgICAgICAgIH07JycnLAot
ICAgICAgICAgICAgJycpCi0gICAgICAgICMgc2luZ2xlIGFyZ3VtZW50IG1ldGhvZCBpcyBva2F5
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2Ns
YXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAgIEJhcihpbnQgYik7Ci0gICAgICAgICAgICAgICB9
OycnJywKLSAgICAgICAgICAgICcnKQotICAgICAgICAjIGNvbW1lbnRzIHNob3VsZCBiZSBpZ25v
cmVkCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcn
J2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAvLyBGb28oaW50IGYpOwotICAgICAgICAgICAg
ICAgfTsnJycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgIyBzaW5nbGUgYXJndW1lbnQgZnVu
Y3Rpb24gZm9sbG93aW5nIGNsYXNzIGRlZmluaXRpb24gaXMgb2theQotICAgICAgICAjIChva2F5
LCBpdCdzIG5vdCBhY3R1YWxseSB2YWxpZCwgYnV0IHdlIGRvbid0IHdhbnQgYSBmYWxzZSBwb3Np
dGl2ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAg
JycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgRm9vKGludCBmLCBpbnQgYik7Ci0gICAg
ICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgRm9vKGludCBmKTsnJycsCi0gICAgICAgICAg
ICAnJykKLSAgICAgICAgIyBzaW5nbGUgYXJndW1lbnQgZnVuY3Rpb24gaXMgb2theQotICAgICAg
ICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydzdGF0aWMgRm9v
KGludCBmKTsnJycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgIyBzaW5nbGUgYXJndW1lbnQg
Y29weSBjb25zdHJ1Y3RvciBpcyBva2F5LgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28gewotICAgICAgICAgICAgICAgICBGb28o
Y29uc3QgRm9vJik7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICcnKQotICAg
ICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFzcyBG
b28gewotICAgICAgICAgICAgICAgICBGb28oRm9vJik7Ci0gICAgICAgICAgICAgICB9OycnJywK
LSAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRlc3Rfc2xhc2hfc3Rhcl9jb21tZW50X29uX3Np
bmdsZV9saW5lKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0g
ICAgICAgICAgICAnJycvKiBzdGF0aWMgKi8gRm9vKGludCBmKTsnJycsCi0gICAgICAgICAgICAn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycn
LyovIHN0YXRpYyAqLyAgRm9vKGludCBmKTsnJycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnLyovIHN0YXRpYyBG
b28oaW50IGYpOycnJywKLSAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCBlbmQgb2YgbXVsdGkt
bGluZSBjb21tZW50JwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21t
ZW50XSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAg
ICAgICAnJycgICAgLyovIHN0YXRpYyBGb28oaW50IGYpOycnJywKLSAgICAgICAgICAgICdDb3Vs
ZCBub3QgZmluZCBlbmQgb2YgbXVsdGktbGluZSBjb21tZW50JwotICAgICAgICAgICAgJyAgW3Jl
YWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50XSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJycgICAgLyoqLyBzdGF0aWMgRm9vKGludCBm
KTsnJycsCi0gICAgICAgICAgICAnJykKLQotICAgICMgVGVzdCBzdXNwaWNpb3VzIHVzYWdlIG9m
ICJpZiIgbGlrZSB0aGlzOgotICAgICMgaWYgKGEgPT0gYikgewotICAgICMgICBEb1NvbWV0aGlu
ZygpOwotICAgICMgfSBpZiAoYSA9PSBjKSB7ICAgLy8gU2hvdWxkIGJlICJlbHNlIGlmIi4KLSAg
ICAjICAgRG9Tb21ldGhpbmcoKTsgIC8vIFRoaXMgZ2V0cyBjYWxsZWQgdHdpY2UgaWYgYSA9PSBi
ICYmIGEgPT0gYy4KLSAgICAjIH0KLSAgICBkZWYgdGVzdF9zdXNwaWNpb3VzX3VzYWdlX29mX2lm
KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJyAgICBpZiAo
YSA9PSBiKSB7JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAot
ICAgICAgICAgICAgJyAgICB9IGlmIChhID09IGIpIHsnLAotICAgICAgICAgICAgJ0RpZCB5b3Ug
bWVhbiAiZWxzZSBpZiI/IElmIG5vdCwgc3RhcnQgYSBuZXcgbGluZSBmb3IgImlmIi4nCi0gICAg
ICAgICAgICAnICBbcmVhZGFiaWxpdHkvYnJhY2VzXSBbNF0nKQotCi0gICAgIyBUZXN0IHN1c3Bp
Y2lvdXMgdXNhZ2Ugb2YgbWVtc2V0LiBTcGVjaWZpY2FsbHksIGEgMAotICAgICMgYXMgdGhlIGZp
bmFsIGFyZ3VtZW50IGlzIGFsbW9zdCBjZXJ0YWlubHkgYW4gZXJyb3IuCi0gICAgZGVmIHRlc3Rf
c3VzcGljaW91c191c2FnZV9vZl9tZW1zZXQoc2VsZik6Ci0gICAgICAgICMgTm9ybWFsIHVzZSBp
cyBva2F5LgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJyAgICBtZW1z
ZXQoYnVmLCAwLCBzaXplb2YoYnVmKSknLAotICAgICAgICAgICAgJycpCi0KLSAgICAgICAgIyBB
IDAgYXMgdGhlIGZpbmFsIGFyZ3VtZW50IGlzIGFsbW9zdCBjZXJ0YWlubHkgYW4gZXJyb3IuCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnICAgIG1lbXNldChidWYsIHNp
emVvZihidWYpLCAwKScsCi0gICAgICAgICAgICAnRGlkIHlvdSBtZWFuICJtZW1zZXQoYnVmLCAw
LCBzaXplb2YoYnVmKSkiPycKLSAgICAgICAgICAgICcgIFtydW50aW1lL21lbXNldF0gWzRdJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICcgICAgbWVtc2V0KGJ1Ziwg
eHNpemUgKiB5c2l6ZSwgMCknLAotICAgICAgICAgICAgJ0RpZCB5b3UgbWVhbiAibWVtc2V0KGJ1
ZiwgMCwgeHNpemUgKiB5c2l6ZSkiPycKLSAgICAgICAgICAgICcgIFtydW50aW1lL21lbXNldF0g
WzRdJykKLQotICAgICAgICAjIFRoZXJlIGlzIGxlZ2l0aW1hdGUgdGVzdCBjb2RlIHRoYXQgdXNl
cyB0aGlzIGZvcm0uCi0gICAgICAgICMgVGhpcyBpcyBva2F5IHNpbmNlIHRoZSBzZWNvbmQgYXJn
dW1lbnQgaXMgYSBsaXRlcmFsLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAg
ICAgIiAgICBtZW1zZXQoYnVmLCAneScsIDApIiwKLSAgICAgICAgICAgICcnKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJyAgICBtZW1zZXQoYnVmLCA0LCAwKScsCi0g
ICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICcg
ICAgbWVtc2V0KGJ1ZiwgLTEsIDApJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KAotICAgICAgICAgICAgJyAgICBtZW1zZXQoYnVmLCAweEYxLCAwKScsCi0gICAg
ICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICcgICAg
bWVtc2V0KGJ1ZiwgMHhjZCwgMCknLAotICAgICAgICAgICAgJycpCi0KLSAgICBkZWYgdGVzdF9j
aGVja19wb3NpeF90aHJlYWRpbmcoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3Nj
dGltZV9yKCknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RydG9rX3IoKScsICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICAgc3RydG9rX3IoZm9vLCBiYSwgciknLCAn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYnJhbmQoKScsICcnKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdfcmFuZCgpJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy5y
YW5kKCknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnPnJhbmQoKScsICcnKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdyYW5kKCknLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICdDb25zaWRlciB1c2luZyByYW5kX3IoLi4uKSBpbnN0ZWFkIG9mIHJhbmQoLi4uKScKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnIGZvciBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5LicKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnICBbcnVudGltZS90aHJlYWRzYWZlX2ZuXSBbMl0nKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdzdHJ0b2soKScsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJ0NvbnNpZGVyIHVzaW5nIHN0cnRva19yKC4uLikgJwotICAgICAgICAgICAgICAgICAgICAg
ICAgICdpbnN0ZWFkIG9mIHN0cnRvayguLi4pJwotICAgICAgICAgICAgICAgICAgICAgICAgICcg
Zm9yIGltcHJvdmVkIHRocmVhZCBzYWZldHkuJwotICAgICAgICAgICAgICAgICAgICAgICAgICcg
IFtydW50aW1lL3RocmVhZHNhZmVfZm5dIFsyXScpCi0KLSAgICAjIFRlc3QgcG90ZW50aWFsIGZv
cm1hdCBzdHJpbmcgYnVncyBsaWtlIHByaW50Zihmb28pLgotICAgIGRlZiB0ZXN0X2Zvcm1hdF9z
dHJpbmdzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdwcmludGYoImZvbyIpJywg
JycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ByaW50ZigiZm9vOiAlcyIsIGZvbyknLCAn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRG9jaWRGb3JQcmludGYoZG9jaWQpJywgJycp
ICAjIFNob3VsZCBub3QgdHJpZ2dlci4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAg
ICAgICAgICdwcmludGYoZm9vKScsCi0gICAgICAgICAgICAnUG90ZW50aWFsIGZvcm1hdCBzdHJp
bmcgYnVnLiBEbyBwcmludGYoIiVzIiwgZm9vKSBpbnN0ZWFkLicKLSAgICAgICAgICAgICcgIFty
dW50aW1lL3ByaW50Zl0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAg
ICAgICdwcmludGYoZm9vLmNfc3RyKCkpJywKLSAgICAgICAgICAgICdQb3RlbnRpYWwgZm9ybWF0
IHN0cmluZyBidWcuICcKLSAgICAgICAgICAgICdEbyBwcmludGYoIiVzIiwgZm9vLmNfc3RyKCkp
IGluc3RlYWQuJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmXSBbNF0nKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ3ByaW50Zihmb28tPmNfc3RyKCkpJywK
LSAgICAgICAgICAgICdQb3RlbnRpYWwgZm9ybWF0IHN0cmluZyBidWcuICcKLSAgICAgICAgICAg
ICdEbyBwcmludGYoIiVzIiwgZm9vLT5jX3N0cigpKSBpbnN0ZWFkLicKLSAgICAgICAgICAgICcg
IFtydW50aW1lL3ByaW50Zl0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAg
ICAgICAgICdTdHJpbmdQcmludGYoZm9vKScsCi0gICAgICAgICAgICAnUG90ZW50aWFsIGZvcm1h
dCBzdHJpbmcgYnVnLiBEbyBTdHJpbmdQcmludGYoIiVzIiwgZm9vKSBpbnN0ZWFkLicKLSAgICAg
ICAgICAgICcnCi0gICAgICAgICAgICAnICBbcnVudGltZS9wcmludGZdIFs0XScpCi0KLSAgICAj
IFZhcmlhYmxlLWxlbmd0aCBhcnJheXMgYXJlIG5vdCBwZXJtaXR0ZWQuCi0gICAgZGVmIHRlc3Rf
dmFyaWFibGVfbGVuZ3RoX2FycmF5X2RldGVjdGlvbihzZWxmKToKLSAgICAgICAgZXJybXNnID0g
KCdEbyBub3QgdXNlIHZhcmlhYmxlLWxlbmd0aCBhcnJheXMuICBVc2UgYW4gYXBwcm9wcmlhdGVs
eSBuYW1lZCAnCi0gICAgICAgICAgICAgICAgICAiKCdrJyBmb2xsb3dlZCBieSBDYW1lbENhc2Up
IGNvbXBpbGUtdGltZSBjb25zdGFudCBmb3IgdGhlIHNpemUuIgotICAgICAgICAgICAgICAgICAg
JyAgW3J1bnRpbWUvYXJyYXlzXSBbMV0nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lu
dCBhW2FueV9vbGRfdmFyaWFibGVdOycsIGVycm1zZykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnaW50IGRvdWJsZXNpemVbc29tZV92YXIgKiAyXTsnLCBlcnJtc2cpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ2ludCBhW2FmdW5jdGlvbigpXTsnLCBlcnJtc2cpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ2ludCBhW2Z1bmN0aW9uKGtNYXhGb29CYXJzKV07JywgZXJybXNnKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdib29sIGFMaXN0W2l0ZW1zXy0+c2l6ZSgpXTsnLCBlcnJt
c2cpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ25hbWVzcGFjZTo6VHlwZSBidWZmZXJbbGVu
KzFdOycsIGVycm1zZykKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVs2NF07Jywg
JycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhWzB4RkZdOycsICcnKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdpbnQgZmlyc3RbMjU2XSwgc2Vjb25kWzI1Nl07JywgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhcnJheU5hbWVba0NvbXBpbGVUaW1lQ29uc3Rh
bnRdOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjaGFyIGJ1Zltzb21lbmFtZXNw
YWNlOjprQnVmU2l6ZV07JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhcnJh
eU5hbWVbQUxMX0NBUFNdOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdBQ2xhc3Mg
YXJyYXkxW2Zvbzo6YmFyOjpBTExfQ0FQU107JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2ludCBhW2tNYXhTdHJMZW4gKyAxXTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnaW50IGFbc2l6ZW9mKGZvbyldOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdp
bnQgYVtzaXplb2YoKmZvbyldOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQg
YVtzaXplb2YgZm9vXTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbc2l6
ZW9mKHN0cnVjdCBGb28pXTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFb
MTI4IC0gc2l6ZW9mKGNvbnN0IGJhcildOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdpbnQgYVsoc2l6ZW9mKGZvbykgKiA0KV07JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2ludCBhWyhhcnJheXNpemUoZml4ZWRfc2l6ZV9hcnJheSkvMikgPDwgMV07JywgJ01pc3Np
bmcgc3BhY2VzIGFyb3VuZCAvICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ2RlbGV0ZSBhW3NvbWVfdmFyXTsnLCAnJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgncmV0dXJuIGFbc29tZV92YXJdOycsICcnKQotCi0gICAgIyBCcmFjZSB1
c2FnZQotICAgIGRlZiB0ZXN0X2JyYWNlcyhzZWxmKToKLSAgICAgICAgIyBCcmFjZXMgc2hvdWxk
bid0IGJlIGZvbGxvd2VkIGJ5IGEgOyB1bmxlc3MgdGhleSdyZSBkZWZpbmluZyBhIHN0cnVjdAot
ICAgICAgICAjIG9yIGluaXRpYWxpemluZyBhbiBhcnJheQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdpbnQgYVszXSA9IHsgMSwgMiwgMyB9OycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KAotICAgICAgICAgICAgJycnY29uc3QgaW50IGZvb1tdID0KLSAgICAgICAgICAgICAgICAg
ICB7MSwgMiwgMyB9OycnJywKLSAgICAgICAgICAgICcnKQotICAgICAgICAjIEZvciBzaW5nbGUg
bGluZSwgdW5tYXRjaGVkICd9JyB3aXRoIGEgJzsnIGlzIGlnbm9yZWQgKG5vdCBlbm91Z2ggY29u
dGV4dCkKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAg
JycnaW50IGFbM10gPSB7IDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzIH07JycnLAotICAgICAgICAgICAgJycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2ludCBhWzJdWzNd
ID0geyB7IDEsIDIgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAzLCA0IH0gfTsn
JycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAotICAgICAgICAgICAgJycnaW50IGFbMl1bM10gPQotICAgICAgICAgICAgICAgICAgIHsgeyAx
LCAyIH0sCi0gICAgICAgICAgICAgICAgICAgICB7IDMsIDQgfSB9OycnJywKLSAgICAgICAgICAg
ICcnKQotCi0gICAgIyBDSEVDSy9FWFBFQ1RfVFJVRS9FWFBFQ1RfRkFMU0UgcmVwbGFjZW1lbnRz
Ci0gICAgZGVmIHRlc3RfY2hlY2tfY2hlY2soc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ0NIRUNLKHggPT0gNDIpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIg
dXNpbmcgQ0hFQ0tfRVEgaW5zdGVhZCBvZiBDSEVDSyhhID09IGIpJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnQ0hFQ0soeCAhPSA0MiknLAotICAgICAgICAgICAgICAgICAgICAgICAgICdDb25z
aWRlciB1c2luZyBDSEVDS19ORSBpbnN0ZWFkIG9mIENIRUNLKGEgIT0gYiknCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdDSEVDSyh4ID49IDQyKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
J0NvbnNpZGVyIHVzaW5nIENIRUNLX0dFIGluc3RlYWQgb2YgQ0hFQ0soYSA+PSBiKScKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ0NIRUNLKHggPiA0MiknLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICdDb25zaWRlciB1c2luZyBDSEVDS19HVCBpbnN0ZWFkIG9mIENIRUNLKGEgPiBiKScKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0NIRUNLKHggPD0gNDIpJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAnQ29uc2lkZXIgdXNpbmcgQ0hFQ0tfTEUgaW5zdGVhZCBvZiBDSEVDSyhhIDw9IGIp
JwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soeCA8IDQyKScsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIENIRUNLX0xUIGluc3RlYWQgb2YgQ0hFQ0soYSA8
IGIpJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJd
JykKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdEQ0hFQ0soeCA9PSA0MiknLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBEQ0hFQ0tfRVEgaW5zdGVhZCBvZiBE
Q0hFQ0soYSA9PSBiKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkv
Y2hlY2tdIFsyXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0RDSEVDSyh4ICE9IDQyKScs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIERDSEVDS19ORSBpbnN0
ZWFkIG9mIERDSEVDSyhhICE9IGIpJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFk
YWJpbGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRENIRUNLKHgg
Pj0gNDIpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRENIRUNL
X0dFIGluc3RlYWQgb2YgRENIRUNLKGEgPj0gYiknCi0gICAgICAgICAgICAgICAgICAgICAgICAg
JyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdE
Q0hFQ0soeCA+IDQyKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5n
IERDSEVDS19HVCBpbnN0ZWFkIG9mIERDSEVDSyhhID4gYiknCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdEQ0hFQ0soeCA8PSA0MiknLAotICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRl
ciB1c2luZyBEQ0hFQ0tfTEUgaW5zdGVhZCBvZiBEQ0hFQ0soYSA8PSBiKScKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ0RDSEVDSyh4IDwgNDIpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAn
Q29uc2lkZXIgdXNpbmcgRENIRUNLX0xUIGluc3RlYWQgb2YgRENIRUNLKGEgPCBiKScKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdFWFBFQ1RfVFJVRSgiNDIiID09IHgp
JywKLSAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfRVEgaW5zdGVhZCBvZiBFWFBF
Q1RfVFJVRShhID09IGIpJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0n
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ0VYUEVDVF9UUlVFKCI0
MiIgIT0geCknLAotICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEVYUEVDVF9ORSBpbnN0ZWFk
IG9mIEVYUEVDVF9UUlVFKGEgIT0gYiknCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hl
Y2tdIFsyXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnRVhQRUNU
X1RSVUUoKzQyID49IHgpJywKLSAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfR0Ug
aW5zdGVhZCBvZiBFWFBFQ1RfVFJVRShhID49IGIpJwotICAgICAgICAgICAgJyAgW3JlYWRhYmls
aXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAg
J0VYUEVDVF9UUlVFX00oLTQyID4geCknLAotICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEVY
UEVDVF9HVF9NIGluc3RlYWQgb2YgRVhQRUNUX1RSVUVfTShhID4gYiknCi0gICAgICAgICAgICAn
ICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0g
ICAgICAgICAgICAnRVhQRUNUX1RSVUVfTSg0MlUgPD0geCknLAotICAgICAgICAgICAgJ0NvbnNp
ZGVyIHVzaW5nIEVYUEVDVF9MRV9NIGluc3RlYWQgb2YgRVhQRUNUX1RSVUVfTShhIDw9IGIpJwot
ICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KAotICAgICAgICAgICAgJ0VYUEVDVF9UUlVFX00oNDJMIDwgeCknLAotICAgICAg
ICAgICAgJ0NvbnNpZGVyIHVzaW5nIEVYUEVDVF9MVF9NIGluc3RlYWQgb2YgRVhQRUNUX1RSVUVf
TShhIDwgYiknCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdFWFBFQ1RfRkFMU0UoeCA9PSA0
MiknLAotICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEVYUEVDVF9ORSBpbnN0ZWFkIG9mIEVY
UEVDVF9GQUxTRShhID09IGIpJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBb
Ml0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ0VYUEVDVF9GQUxT
RSh4ICE9IDQyKScsCi0gICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNUX0VRIGluc3Rl
YWQgb2YgRVhQRUNUX0ZBTFNFKGEgIT0gYiknCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkv
Y2hlY2tdIFsyXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnRVhQ
RUNUX0ZBTFNFKHggPj0gNDIpJywKLSAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1Rf
TFQgaW5zdGVhZCBvZiBFWFBFQ1RfRkFMU0UoYSA+PSBiKScKLSAgICAgICAgICAgICcgIFtyZWFk
YWJpbGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAg
ICAgICdBU1NFUlRfRkFMU0UoeCA+IDQyKScsCi0gICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcg
QVNTRVJUX0xFIGluc3RlYWQgb2YgQVNTRVJUX0ZBTFNFKGEgPiBiKScKLSAgICAgICAgICAgICcg
IFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAg
ICAgICAgICAgICdBU1NFUlRfRkFMU0UoeCA8PSA0MiknLAotICAgICAgICAgICAgJ0NvbnNpZGVy
IHVzaW5nIEFTU0VSVF9HVCBpbnN0ZWFkIG9mIEFTU0VSVF9GQUxTRShhIDw9IGIpJwotICAgICAg
ICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KAotICAgICAgICAgICAgJ0FTU0VSVF9GQUxTRV9NKHggPCA0MiknLAotICAgICAgICAgICAg
J0NvbnNpZGVyIHVzaW5nIEFTU0VSVF9HRV9NIGluc3RlYWQgb2YgQVNTRVJUX0ZBTFNFX00oYSA8
IGIpJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ0NIRUNLKHNvbWVfaXRlcmF0b3IgPT0gb2JqLmVuZCgpKScsICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdFWFBFQ1RfVFJVRShzb21lX2l0ZXJhdG9yID09
IG9iai5lbmQoKSknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRVhQRUNUX0ZBTFNF
KHNvbWVfaXRlcmF0b3IgPT0gb2JqLmVuZCgpKScsICcnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ0NIRUNLKENyZWF0ZVRlc3RGaWxlKGRpciwgKDEgPDwgMjApKSk7JywgJycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0NIRUNLKENyZWF0ZVRlc3RGaWxlKGRpciwgKDEgPj4gMjAp
KSk7JywgJycpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soeDw0MiknLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIFsnTWlzc2luZyBzcGFjZXMgYXJvdW5kIDwnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIENIRUNLX0xUIGluc3RlYWQgb2Yg
Q0hFQ0soYSA8IGIpJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkv
Y2hlY2tdIFsyXSddKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdDSEVDSyh4PjQyKScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIENIRUNLX0dUIGluc3RlYWQg
b2YgQ0hFQ0soYSA+IGIpJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0
eS9jaGVja10gWzJdJykKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAg
JyAgICBFWFBFQ1RfVFJVRSg0MiA8IHgpIC8vIFJhbmRvbSBjb21tZW50LicsCi0gICAgICAgICAg
ICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNUX0xUIGluc3RlYWQgb2YgRVhQRUNUX1RSVUUoYSA8IGIp
JwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KAotICAgICAgICAgICAgJ0VYUEVDVF9UUlVFKCA0MiA8IHggKScsCi0gICAg
ICAgICAgICBbJ0V4dHJhIHNwYWNlIGFmdGVyICggaW4gZnVuY3Rpb24gY2FsbCcKLSAgICAgICAg
ICAgICAnICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs0XScsCi0gICAgICAgICAgICAgJ0NvbnNpZGVy
IHVzaW5nIEVYUEVDVF9MVCBpbnN0ZWFkIG9mIEVYUEVDVF9UUlVFKGEgPCBiKScKLSAgICAgICAg
ICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXSddKQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KAotICAgICAgICAgICAgJ0NIRUNLKCJmb28iID09ICJmb28iKScsCi0gICAgICAgICAgICAn
Q29uc2lkZXIgdXNpbmcgQ0hFQ0tfRVEgaW5zdGVhZCBvZiBDSEVDSyhhID09IGIpJwotICAgICAg
ICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ0NIRUNLX0VRKCJmb28iLCAiZm9vIiknLCAnJykKLQotICAgIGRlZiB0ZXN0X2JyYWNl
X2F0X2JlZ2luX29mX2xpbmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3snLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2Yg
dGhlIHByZXZpb3VzIGxpbmUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3Bh
Y2UvYnJhY2VzXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0g
ICAgICAgICAgICAnI2VuZGlmXG4nCi0gICAgICAgICAgICAne1xuJwotICAgICAgICAgICAgJ31c
bicsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAotICAgICAgICAgICAgJ2lmIChjb25kaXRpb24pIHsnLAotICAgICAgICAgICAgJycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcgICAgTUFDUk8x
KG1hY3JvQXJnKSB7JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnQUNDRVNTT1JfR0VUVEVSKE1lc3NhZ2VFdmVudFBv
cnRzKSB7JywKLSAgICAgICAgICAgICdQbGFjZSBicmFjZSBvbiBpdHMgb3duIGxpbmUgZm9yIGZ1
bmN0aW9uIGRlZmluaXRpb25zLiAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQotICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaW50IGZvbygpIHsnLAot
ICAgICAgICAgICAgJ1BsYWNlIGJyYWNlIG9uIGl0cyBvd24gbGluZSBmb3IgZnVuY3Rpb24gZGVm
aW5pdGlvbnMuICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpbnQgZm9vKCkgY29uc3QgeycsCi0gICAg
ICAgICAgICAnUGxhY2UgYnJhY2Ugb24gaXRzIG93biBsaW5lIGZvciBmdW5jdGlvbiBkZWZpbml0
aW9ucy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVs
dGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2ludCBmb28oKSBjb25zdFxuJwotICAgICAgICAg
ICAgJ3tcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAoY29uZGl0aW9uXG4n
Ci0gICAgICAgICAgICAnICAgICYmIGNvbmRpdGlvbjJcbicKLSAgICAgICAgICAgICcgICAgJiYg
Y29uZGl0aW9uMykge1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAnJykKLQot
ICAgIGRlZiB0ZXN0X21pc21hdGNoaW5nX3NwYWNlc19pbl9wYXJlbnMoc2VsZik6Ci0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb28gKSB7JywgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNp
ZGUgKCkgaW4gaWYnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFy
ZW5zXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzd2l0Y2ggKCBmb28pIHsnLCAn
TWlzbWF0Y2hpbmcgc3BhY2VzIGluc2lkZSAoKSBpbiBzd2l0Y2gnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdmb3IgKGZvbzsgYmE7IGJhciApIHsnLCAnTWlzbWF0Y2hpbmcgc3BhY2VzIGluc2lk
ZSAoKSBpbiBmb3InCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFy
ZW5zXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKDsgZm9vOyBiYXIpIHsn
LCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICggOyBmb287IGJhcikgeycsICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKCA7IGZvbzsgYmFyICkgeycsICcnKQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKGZvbzsgYmFyOyApIHsnLCAnJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnZm9yZWFjaCAoZm9vLCBmb29zICkgeycsICdNaXNtYXRjaGlu
ZyBzcGFjZXMgaW5zaWRlICgpIGluIGZvcmVhY2gnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
JyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdm
b3JlYWNoICggZm9vLCBmb29zKSB7JywgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkgaW4g
Zm9yZWFjaCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9wYXJlbnNd
IFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3doaWxlICggIGZvbyAgKSB7JywgJ1No
b3VsZCBoYXZlIHplcm8gb3Igb25lIHNwYWNlcyBpbnNpZGUnCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgJyAoIGFuZCApIGluIHdoaWxlICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCi0KLSAg
ICBkZWYgdGVzdF9zcGFjaW5nX2Zvcl9mbmNhbGwoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ2lmIChmb28pIHsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChm
b287YmFyO2JheikgeycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3JlYWNoIChm
b28sIGZvb3MpIHsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnd2hpbGUgKGZvbykg
eycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzd2l0Y2ggKGZvbykgeycsICcnKQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCduZXcgKFJlbmRlckFyZW5hKCkpIFJlbmRlcklubGlu
ZShkb2N1bWVudCgpKScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb28oIGJhcikn
LCAnRXh0cmEgc3BhY2UgYWZ0ZXIgKCBpbiBmdW5jdGlvbiBjYWxsJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzRdJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnZm9vYmFyKCBcXCcsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb29i
YXIoICAgICBcXCcsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcoIGEgKyBiKScsICdF
eHRyYSBzcGFjZSBhZnRlciAoJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNw
YWNlL3BhcmVuc10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnKChhK2IpKScsICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb28gKGZvbyknLCAnRXh0cmEgc3BhY2UgYmVm
b3JlICggaW4gZnVuY3Rpb24gY2FsbCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hp
dGVzcGFjZS9wYXJlbnNdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5cGVkZWYg
Zm9vICgqZm9vKShmb28pJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5cGVkZWYg
Zm9vICgqZm9vMTJiYXJfKShmb28pJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5
cGVkZWYgZm9vIChGb286OipiYXIpKGZvbyknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnZm9vIChGb286OipiYXIpKCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNw
YWNlIGJlZm9yZSAoIGluIGZ1bmN0aW9uIGNhbGwnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
JyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd0
eXBlZGVmIGZvbyAoRm9vOjoqYmFyKSgnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
KGZvbykoYmFyKScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdGb28gKCpmb28pKGJh
ciknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRm9vICgqZm9vKShCYXIgYmFyLCcs
ICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjaGFyICgqcClbc2l6ZW9mKGZvbyldID0g
JmZvbycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjaGFyICgmcmVmKVtzaXplb2Yo
Zm9vKV0gPSAmZm9vJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NvbnN0IGNoYXIz
MiAoKnRhYmxlW10pWzZdOycsICcnKQotCi0gICAgZGVmIHRlc3Rfc3BhY2luZ19iZWZvcmVfYnJh
Y2VzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAoZm9vKXsnLCAnTWlzc2lu
ZyBzcGFjZSBiZWZvcmUgeycKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFj
ZS9icmFjZXNdIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvcnsnLCAnTWlzc2lu
ZyBzcGFjZSBiZWZvcmUgeycKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFj
ZS9icmFjZXNdIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciB7JywgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0VYUEVDVF9ERUJVR19ERUFUSCh7JywgJycpCi0KLSAg
ICBkZWYgdGVzdF9zcGFjaW5nX2Fyb3VuZF9lbHNlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCd9ZWxzZSB7JywgJ01pc3Npbmcgc3BhY2UgYmVmb3JlIGVsc2UnCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNV0nKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCd9IGVsc2V7JywgJ01pc3Npbmcgc3BhY2UgYmVmb3JlIHsnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNV0nKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCd9IGVsc2UgeycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCd9IGVsc2UgaWYnLCAnJykKLQotICAgIGRlZiB0ZXN0X3NwYWNpbmdfZm9yX2JpbmFyeV9vcHMo
c2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb288PWJhcikgeycsICdNaXNz
aW5nIHNwYWNlcyBhcm91bmQgPD0nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRl
c3BhY2Uvb3BlcmF0b3JzXSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAoZm9v
PGJhcikgeycsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPCcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAnICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ2lmIChmb288YmFyLT5iYXopIHsnLCAnTWlzc2luZyBzcGFjZXMgYXJvdW5kIDwnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAoZm9vPGJhci0+YmFyKSB7JywgJ01pc3Npbmcg
c3BhY2VzIGFyb3VuZCA8JwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNl
L29wZXJhdG9yc10gWzNdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndHlwZWRlZiBoYXNo
X21hcDxGb28sIEJhcicsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPCcKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ3R5cGVkZWYgaGFzaF9tYXA8Rm9vb29vVHlwZSwgQmFhYWFhclR5cGUsJywg
JycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vPiB0Kz1iOycsICdNaXNzaW5nIHNw
YWNlcyBhcm91bmQgKz0nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uv
b3BlcmF0b3JzXSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhPEZvbz4gdC09Yjsn
LCAnTWlzc2luZyBzcGFjZXMgYXJvdW5kIC09JwotICAgICAgICAgICAgICAgICAgICAgICAgICcg
IFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
YTxGb28qPiB0Kj1iOycsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgKj0nCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdhPEZvbyo+IHQvPWI7JywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCAvPScK
LSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdHw9YjsnLCAnTWlzc2luZyBzcGFj
ZXMgYXJvdW5kIHw9JwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL29w
ZXJhdG9yc10gWzNdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28qPiB0Jj1iOycs
ICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgJj0nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAg
W3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdh
PEZvbyo+IHQ8PD1iOycsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPDw9JwotICAgICAgICAgICAg
ICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnYTxGb28qPiB0Pj49YjsnLCAnTWlzc2luZyBzcGFjZXMgYXJvdW5kID4+
PScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFsz
XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdD4+PSZifGM7JywgJ01pc3Np
bmcgc3BhY2VzIGFyb3VuZCA+Pj0nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRl
c3BhY2Uvb3BlcmF0b3JzXSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhPEZvbyo+
IHQ8PD0qYi9jOycsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPDw9JwotICAgICAgICAgICAgICAg
ICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnYTxGb28+IHQgLT0gYjsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnYTxGb28+IHQgKz0gYjsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28q
PiB0ICo9IGI7JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdCAvPSBi
OycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhPEZvbyo+IHQgfD0gYjsnLCAnJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28qPiB0ICY9IGI7JywgJycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdCA8PD0gYjsnLCAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnYTxGb28qPiB0ID4+PSBiOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdhPEZvbyo+IHQgPj49ICZifGM7JywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCB8JwotICAg
ICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28qPiB0IDw8PSAqYi9jOycsICdNaXNzaW5nIHNw
YWNlcyBhcm91bmQgLycKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9v
cGVyYXRvcnNdIFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdCA8PD0g
Yi9jOyAvL1Rlc3QnLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1Nob3VsZCBoYXZlIGEg
c3BhY2UgYmV0d2VlbiAvLyBhbmQgY29tbWVudCAgJwotICAgICAgICAgICAgICAgICAgICAgICAg
ICdbd2hpdGVzcGFjZS9jb21tZW50c10gWzRdJywgJ01pc3NpbmcnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgJyBzcGFjZXMgYXJvdW5kIC8gIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJ10p
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdCA8PD0gYnx8YzsgIC8vVGVzdCcs
IFsnT25lIHNwYWNlIGJlZm9yZSBlbmQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyBvZiBs
aW5lIGNvbW1lbnRzICBbd2hpdGVzcGFjZS9jb21tZW50c10gWzVdJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAnU2hvdWxkIGhhdmUgYSBzcGFjZSBiZXR3ZWVuIC8vIGFuZCBjb21tZW50ICAn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJ1t3aGl0ZXNwYWNlL2NvbW1lbnRzXSBbNF0nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgfHwgIFt3aGl0
ZXNwYWNlL29wZXJhdG9yc10gWzNdJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9v
Kj4gdCA8PD0gYiYmYzsgLy8gVGVzdCcsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgJyAmJiAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdhPEZvbyo+IHQgPDw9IGImJiZjOyAvLyBUZXN0JywgJ01p
c3Npbmcgc3BhY2VzIGFyb3VuZCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICYmICBbd2hp
dGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9v
Kj4gdCA8PD0gYiYmKmM7IC8vIFRlc3QnLCAnTWlzc2luZyBzcGFjZXMgYXJvdW5kJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICcgJiYgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28qPiB0IDw8PSBiICYmICpjOyAvLyBUZXN0Jywg
JycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdCA8PD0gYiAmJiAmYzsgLy8g
VGVzdCcsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhPEZvbyo+IHQgPDw9IGIgfHwg
JmM7ICAvKlRlc3QnLCAnQ29tcGxleCBtdWx0aS1saW5lICcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAnLyouLi4qLy1zdHlsZSBjb21tZW50IGZvdW5kLiBMaW50IG1heSBnaXZlIGJvZ3VzICcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAnd2FybmluZ3MuICBDb25zaWRlciByZXBsYWNpbmcg
dGhlc2Ugd2l0aCAvLy1zdHlsZScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnIGNvbW1lbnRz
LCB3aXRoICNpZiAwLi4uI2VuZGlmLCBvciB3aXRoIG1vcmUgY2xlYXJseScKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAnIHN0cnVjdHVyZWQgbXVsdGktbGluZSBjb21tZW50cy4gIFtyZWFkYWJp
bGl0eS9tdWx0aWxpbmVfY29tbWVudF0gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
YTxGb28mPiB0IDw8PSAmYiB8ICZjOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdh
PEZvbyo+IHQgPDw9ICZiICYgJmM7IC8vIFRlc3QnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnYTxGb28qPiB0IDw8PSAqYiAvICZjOyAvLyBUZXN0JywgJycpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ2lmIChhPWIgPT0gMSknLCAnTWlzc2luZyBzcGFjZXMgYXJvdW5kID0gIFt3
aGl0ZXNwYWNlL29wZXJhdG9yc10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYSA9
IDE8PDIwJywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA8PCAgW3doaXRlc3BhY2Uvb3BlcmF0b3Jz
XSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAoYSA9IGIgPT0gMSknLCAnJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYSA9IDEgPDwgMjAnLCAnJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KCcjaW5jbHVkZSAiY29uZmlnLmgiXG4jaW5jbHVkZSA8
c3lzL2lvLmg+XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgnI2luY2x1ZGUgImNvbmZpZy5oIlxu
I2ltcG9ydCA8Zm9vL2Jhci5oPlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcnKQotCi0gICAgZGVmIHRlc3Rfc3BhY2luZ19iZWZvcmVfbGFzdF9zZW1pY29sb24oc2Vs
Zik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NhbGxfZnVuY3Rpb24oKSA7JywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgYmVmb3JlIGxhc3Qgc2VtaWNvbG9uLiBJ
ZiB0aGlzIHNob3VsZCBiZSBhbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2VtcHR5IHN0
YXRlbWVudCwgdXNlIHsgfSBpbnN0ZWFkLicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBb
d2hpdGVzcGFjZS9zZW1pY29sb25dIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3do
aWxlICh0cnVlKSA7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgYmVm
b3JlIGxhc3Qgc2VtaWNvbG9uLiBJZiB0aGlzIHNob3VsZCBiZSBhbiAnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJ2VtcHR5IHN0YXRlbWVudCwgdXNlIHsgfSBpbnN0ZWFkLicKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9zZW1pY29sb25dIFs1XScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ2RlZmF1bHQ6OycsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
J1NlbWljb2xvbiBkZWZpbmluZyBlbXB0eSBzdGF0ZW1lbnQuIFVzZSB7IH0gaW5zdGVhZC4nCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvc2VtaWNvbG9uXSBbNV0nKQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICAgICA7JywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAnTGluZSBjb250YWlucyBvbmx5IHNlbWljb2xvbi4gSWYgdGhpcyBzaG91bGQgYmUgYW4g
ZW1wdHkgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdzdGF0ZW1lbnQsIHVzZSB7IH0gaW5z
dGVhZC4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvc2VtaWNvbG9u
XSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKGludCBpID0gMDsgOycsICcn
KQotCi0gICAgIyBTdGF0aWMgb3IgZ2xvYmFsIFNUTCBzdHJpbmdzLgotICAgIGRlZiB0ZXN0X3N0
YXRpY19vcl9nbG9iYWxfc3Rsc3RyaW5ncyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnc3RyaW5nIGZvbzsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdGb3IgYSBzdGF0aWMv
Z2xvYmFsIHN0cmluZyBjb25zdGFudCwgdXNlIGEgQyBzdHlsZSAnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgJ3N0cmluZyBpbnN0ZWFkOiAiY2hhciBmb29bXSIuJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICcgIFtydW50aW1lL3N0cmluZ10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnc3RyaW5nIGtGb28gPSAiaGVsbG8iOyAvLyBFbmdsaXNoJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAnRm9yIGEgc3RhdGljL2dsb2JhbCBzdHJpbmcgY29uc3RhbnQsIHVzZSBhIEMg
c3R5bGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcgaW5zdGVhZDogImNoYXIg
a0Zvb1tdIi4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3J1bnRpbWUvc3RyaW5nXSBb
NF0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzdGF0aWMgc3RyaW5nIGZvbzsnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICdGb3IgYSBzdGF0aWMvZ2xvYmFsIHN0cmluZyBjb25zdGFu
dCwgdXNlIGEgQyBzdHlsZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZyBpbnN0
ZWFkOiAic3RhdGljIGNoYXIgZm9vW10iLicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBb
cnVudGltZS9zdHJpbmddIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0YXRpYyBj
b25zdCBzdHJpbmcgZm9vOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0ZvciBhIHN0YXRp
Yy9nbG9iYWwgc3RyaW5nIGNvbnN0YW50LCB1c2UgYSBDIHN0eWxlICcKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAnc3RyaW5nIGluc3RlYWQ6ICJzdGF0aWMgY29uc3QgY2hhciBmb29bXSIuJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtydW50aW1lL3N0cmluZ10gWzRdJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnc3RyaW5nIEZvbzo6YmFyOycsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgJ0ZvciBhIHN0YXRpYy9nbG9iYWwgc3RyaW5nIGNvbnN0YW50LCB1c2UgYSBDIHN0
eWxlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nIGluc3RlYWQ6ICJjaGFyIEZv
bzo6YmFyW10iLicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcnVudGltZS9zdHJpbmdd
IFs0XScpCi0gICAgICAgICMgUmFyZSBjYXNlLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdz
dHJpbmcgZm9vKCJmb29iYXIiKTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdGb3IgYSBz
dGF0aWMvZ2xvYmFsIHN0cmluZyBjb25zdGFudCwgdXNlIGEgQyBzdHlsZSAnCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgJ3N0cmluZyBpbnN0ZWFkOiAiY2hhciBmb29bXSIuJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICcgIFtydW50aW1lL3N0cmluZ10gWzRdJykKLSAgICAgICAgIyBTaG91
bGQgbm90IGNhdGNoIGxvY2FsIG9yIG1lbWJlciB2YXJpYWJsZXMuCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJyAgICBzdHJpbmcgZm9vJywgJycpCi0gICAgICAgICMgU2hvdWxkIG5vdCBjYXRj
aCBmdW5jdGlvbnMuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmluZyBFbXB0eVN0cmlu
ZygpIHsgcmV0dXJuICIiOyB9JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmlu
ZyBFbXB0eVN0cmluZyAoKSB7IHJldHVybiAiIjsgfScsICcnKQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdzdHJpbmcgVmVyeUxvbmdOYW1lRnVuY3Rpb25Tb21ldGltZXNFbmRzV2l0aChcbicK
LSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIFZlcnlMb25nTmFtZVR5cGUgdmVyeV9sb25n
X25hbWVfdmFyaWFibGUpIHt9JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3RlbXBs
YXRlPD5cbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nIEZ1bmN0aW9uVGVtcGxh
dGVTcGVjaWFsaXphdGlvbjxTb21lVHlwZT4oXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAg
JyAgICAgIGludCB4KSB7IHJldHVybiAiIjsgfScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCd0ZW1wbGF0ZTw+XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZyBGdW5j
dGlvblRlbXBsYXRlU3BlY2lhbGl6YXRpb248dmVjdG9yPEE6OkI+KiA+KFxuJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICcgICAgICBpbnQgeCkgeyByZXR1cm4gIiI7IH0nLCAnJykKLQotICAg
ICAgICAjIHNob3VsZCBub3QgY2F0Y2ggbWV0aG9kcyBvZiB0ZW1wbGF0ZSBjbGFzc2VzLgotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdzdHJpbmcgQ2xhc3M8VHlwZT46Ok1ldGhvZCgpIGNvbnN0
XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3tcbicKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAnICByZXR1cm4gIiI7XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ31cbicsICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzdHJpbmcgQ2xhc3M8VHlwZT46Ok1ldGhvZChc
bicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgaW50IGFyZykgY29uc3RcbicKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAne1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIHJl
dHVybiAiIjtcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJywgJycpCi0KLSAgICBk
ZWYgdGVzdF9ub19zcGFjZXNfaW5fZnVuY3Rpb25fY2FsbHMoc2VsZik6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ1RlbGxTdG9yeSgxLCAzKTsnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdUZWxsU3RvcnkoMSwgMyApOycsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSApJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzJdJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnVGVsbFN0b3J5KDEgLyogd29sZiAqLywgMyAvKiBwaWdzICovKTsnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoJyNlbmRpZlxuICAgICk7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcnKQotCi0gICAgZGVmIHRlc3RfdHdvX3NwYWNlc19iZXR3ZWVuX2NvZGVfYW5kX2NvbW1l
bnRzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd9IC8vIG5hbWVzcGFjZSBmb28n
LAotICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCd9Ly8gbmFtZXNwYWNlIGZvbycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ09uZSBzcGFj
ZSBiZWZvcmUgZW5kIG9mIGxpbmUgY29tbWVudHMnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
JyAgW3doaXRlc3BhY2UvY29tbWVudHNdIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J3ByaW50ZigiZm9vIik7IC8vIE91dHNpZGUgcXVvdGVzLicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBpID0gMDsgLy8gSGF2aW5n
IG9uZSBzcGFjZSBpcyBmaW5lLicsJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBp
ID0gMDsgIC8vIEhhdmluZyB0d28gc3BhY2VzIGlzIGJhZC4nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICdPbmUgc3BhY2UgYmVmb3JlIGVuZCBvZiBsaW5lIGNvbW1lbnRzJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2NvbW1lbnRzXSBbNV0nKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdpbnQgaSA9IDA7ICAgLy8gSGF2aW5nIHRocmVlIHNwYWNlcyBpcyBi
YWQuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnT25lIHNwYWNlIGJlZm9yZSBlbmQgb2Yg
bGluZSBjb21tZW50cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9j
b21tZW50c10gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy8gVG9wIGxldmVsIGNv
bW1lbnQnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgIC8vIExpbmUgc3RhcnRz
IHdpdGggZm91ciBzcGFjZXMuJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2Zvbygp
O1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICd7IC8vIEEgc2NvcGUgaXMgb3BlbmluZy4n
LCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgIGZvbygpO1xuJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICcgICAgeyAvLyBBbiBpbmRlbnRlZCBzY29wZSBpcyBvcGVuaW5nLics
ICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAoZm9vKSB7IC8vIG5vdCBhIHB1cmUg
c2NvcGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdwcmludGYoIi8vIEluIHF1b3Rlcy4iKScsICcnKQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdwcmludGYoIlxcIiVzIC8vIEluIHF1b3Rlcy4iKScsICcnKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdwcmludGYoIiVzIiwgIi8vIEluIHF1b3Rlcy4iKScsICcnKQotCi0gICAg
ZGVmIHRlc3Rfc3BhY2VfYWZ0ZXJfY29tbWVudF9tYXJrZXIoc2VsZik6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJy8vJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8veCcsICdT
aG91bGQgaGF2ZSBhIHNwYWNlIGJldHdlZW4gLy8gYW5kIGNvbW1lbnQnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvY29tbWVudHNdIFs0XScpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJy8vIHgnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy8tLS0t
JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8vPT09PScsICcnKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCcvLy8vLy8nLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
Ly8vLy8vIHgnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy8vIHgnLCAnJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy8vL3gnLCAnU2hvdWxkIGhhdmUgYSBzcGFjZSBiZXR3
ZWVuIC8vIGFuZCBjb21tZW50JwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNw
YWNlL2NvbW1lbnRzXSBbNF0nKQotCi0gICAgZGVmIHRlc3RfbmV3bGluZV9hdF9lb2Yoc2VsZik6
Ci0gICAgICAgIGRlZiBkb190ZXN0KHNlbGYsIGRhdGEsIGlzX21pc3NpbmdfZW9mKToKLSAgICAg
ICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAg
ICAgICAgICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jcHAnLCAnY3BwJywgZGF0YS5z
cGxpdCgnXG4nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29s
bGVjdG9yKQotICAgICAgICAgICAgIyBUaGUgd2FybmluZyBhcHBlYXJzIG9ubHkgb25jZS4KLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAotICAgICAgICAgICAgICAgIGludChpc19taXNz
aW5nX2VvZiksCi0gICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKS5jb3Vu
dCgKLSAgICAgICAgICAgICAgICAgICAgJ0NvdWxkIG5vdCBmaW5kIGEgbmV3bGluZSBjaGFyYWN0
ZXIgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZS4nCi0gICAgICAgICAgICAgICAgICAgICcgIFt3aGl0
ZXNwYWNlL2VuZGluZ19uZXdsaW5lXSBbNV0nKSkKLQotICAgICAgICBkb190ZXN0KHNlbGYsICcv
LyBOZXdsaW5lXG4vLyBhdCBFT0ZcbicsIEZhbHNlKQotICAgICAgICBkb190ZXN0KHNlbGYsICcv
LyBObyBuZXdsaW5lXG4vLyBhdCBFT0YnLCBUcnVlKQotCi0gICAgZGVmIHRlc3RfaW52YWxpZF91
dGY4KHNlbGYpOgotICAgICAgICBkZWYgZG9fdGVzdChzZWxmLCByYXdfYnl0ZXMsIGhhc19pbnZh
bGlkX3V0ZjgpOgotICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Io
c2VsZi5hc3NlcnRfKQotICAgICAgICAgICAgc2VsZi5wcm9jZXNzX2ZpbGVfZGF0YSgnZm9vLmNw
cCcsICdjcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlKHJh
d19ieXRlcywgJ3V0ZjgnLCAncmVwbGFjZScpLnNwbGl0KCdcbicpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgICAgICAjIFRoZSB3
YXJuaW5nIGFwcGVhcnMgb25seSBvbmNlLgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
Ci0gICAgICAgICAgICAgICAgaW50KGhhc19pbnZhbGlkX3V0ZjgpLAotICAgICAgICAgICAgICAg
IGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkuY291bnQoCi0gICAgICAgICAgICAgICAgICAgICdM
aW5lIGNvbnRhaW5zIGludmFsaWQgVVRGLTgnCi0gICAgICAgICAgICAgICAgICAgICcgKG9yIFVu
aWNvZGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyKS4nCi0gICAgICAgICAgICAgICAgICAgICcgIFty
ZWFkYWJpbGl0eS91dGY4XSBbNV0nKSkKLQotICAgICAgICBkb190ZXN0KHNlbGYsICdIZWxsbyB3
b3JsZFxuJywgRmFsc2UpCi0gICAgICAgIGRvX3Rlc3Qoc2VsZiwgJ1x4ZTlceDhlXHhiZFxuJywg
RmFsc2UpCi0gICAgICAgIGRvX3Rlc3Qoc2VsZiwgJ1x4ZTl4XHg4ZVx4YmRcbicsIFRydWUpCi0g
ICAgICAgICMgVGhpcyBpcyB0aGUgZW5jb2Rpbmcgb2YgdGhlIHJlcGxhY2VtZW50IGNoYXJhY3Rl
ciBpdHNlbGYgKHdoaWNoCi0gICAgICAgICMgeW91IGNhbiBzZWUgYnkgZXZhbHVhdGluZyBjb2Rl
Y3MuZ2V0ZW5jb2RlcigndXRmOCcpKHUnXHVmZmZkJykpLgotICAgICAgICBkb190ZXN0KHNlbGYs
ICdceGVmXHhiZlx4YmRcbicsIFRydWUpCi0KLSAgICBkZWYgdGVzdF9pc19ibGFua19saW5lKHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmlzX2JsYW5rX2xpbmUoJycpKQot
ICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmlzX2JsYW5rX2xpbmUoJyAnKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRfKGNwcF9zdHlsZS5pc19ibGFua19saW5lKCcgXHRcclxuJykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmlzX2JsYW5rX2xpbmUoJ2ludCBhOycpKQot
ICAgICAgICBzZWxmLmFzc2VydF8obm90IGNwcF9zdHlsZS5pc19ibGFua19saW5lKCd7JykpCi0K
LSAgICBkZWYgdGVzdF9ibGFua19saW5lc19jaGVjayhzZWxmKToKLSAgICAgICAgc2VsZi5hc3Nl
cnRfYmxhbmtfbGluZXNfY2hlY2soWyd7XG4nLCAnXG4nLCAnXG4nLCAnfVxuJ10sIDEsIDEpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2JsYW5rX2xpbmVzX2NoZWNrKFsnICBpZiAoZm9vKSB7XG4nLCAn
XG4nLCAnICB9XG4nXSwgMSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRfYmxhbmtfbGluZXNfY2hl
Y2soCi0gICAgICAgICAgICBbJ1xuJywgJy8vIHtcbicsICdcbicsICdcbicsICcvLyBDb21tZW50
XG4nLCAne1xuJywgJ31cbiddLCAwLCAwKQotICAgICAgICBzZWxmLmFzc2VydF9ibGFua19saW5l
c19jaGVjayhbJ1xuJywgJ3J1bigieyIpO1xuJywgJ1xuJ10sIDAsIDApCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2JsYW5rX2xpbmVzX2NoZWNrKFsnXG4nLCAnICBpZiAoZm9vKSB7IHJldHVybiAwOyB9
XG4nLCAnXG4nXSwgMCwgMCkKLQotICAgIGRlZiB0ZXN0X2FsbG93X2JsYW5rX2xpbmVfYmVmb3Jl
X2Nsb3NpbmdfbmFtZXNwYWNlKHNlbGYpOgotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJv
ckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEo
J2Zvby5jcHAnLCAnY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ25hbWVz
cGFjZSB7JywgJycsICd9ICAvLyBuYW1lc3BhY2UnXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIGVy
cm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkuY291bnQoCi0gICAgICAgICAgICAnQmxhbmsgbGluZSBh
dCB0aGUgZW5kIG9mIGEgY29kZSBibG9jay4gIElzIHRoaXMgbmVlZGVkPycKLSAgICAgICAgICAg
ICcgIFt3aGl0ZXNwYWNlL2JsYW5rX2xpbmVdIFszXScpKQotCi0gICAgZGVmIHRlc3RfYWxsb3df
YmxhbmtfbGluZV9iZWZvcmVfaWZfZWxzZV9jaGFpbihzZWxmKToKLSAgICAgICAgZXJyb3JfY29s
bGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBzZWxmLnByb2Nl
c3NfZmlsZV9kYXRhKCdmb28uY3BwJywgJ2NwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWydpZiAoaG9nZSkgeycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcn
LCAgIyBObyB3YXJuaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9IGVsc2Ug
aWYgKHBpeW8pIHsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgICMgTm8g
d2FybmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfSBlbHNlIGlmIChwaXlv
cGl5bykgeycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgIGhvZ2UgPSB0cnVl
OycsICAjIE5vIHdhcm5pbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ30gZWxz
ZSB7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsICAjIFdhcm5pbmcgb24g
dGhpcyBsaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9J10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscygxLCBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpLmNvdW50KAotICAgICAgICAg
ICAgJ0JsYW5rIGxpbmUgYXQgdGhlIGVuZCBvZiBhIGNvZGUgYmxvY2suICBJcyB0aGlzIG5lZWRl
ZD8nCi0gICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9ibGFua19saW5lXSBbM10nKSkKLQotICAg
IGRlZiB0ZXN0X2Vsc2Vfb25fc2FtZV9saW5lX2FzX2Nsb3NpbmdfYnJhY2VzKHNlbGYpOgotICAg
ICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAg
ICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jcHAnLCAnY3BwJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbJ2lmIChob2dlKSB7JywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9JywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBlbHNlIHsnICAjIFdhcm5pbmcgb24gdGhp
cyBsaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnfSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgZXJyb3JfY29s
bGVjdG9yLnJlc3VsdHMoKS5jb3VudCgKLSAgICAgICAgICAgICdBbiBlbHNlIHNob3VsZCBhcHBl
YXIgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgcHJlY2VkaW5nIH0nCi0gICAgICAgICAgICAnICBb
d2hpdGVzcGFjZS9uZXdsaW5lXSBbNF0nKSkKLQotICAgIGRlZiB0ZXN0X2Vsc2VfY2xhdXNlX25v
dF9vbl9zYW1lX2xpbmVfYXNfZWxzZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
ICAgIGVsc2UgRG9Tb21ldGhpbmdFbHNlKCk7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAn
RWxzZSBjbGF1c2Ugc2hvdWxkIG5ldmVyIGJlIG9uIHNhbWUgbGluZSBhcyBlbHNlICcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnKHVzZSAyIGxpbmVzKSAgW3doaXRlc3BhY2UvbmV3bGluZV0g
WzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgIGVsc2UgaWZEb1NvbWV0aGluZ0Vs
c2UoKTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdFbHNlIGNsYXVzZSBzaG91bGQgbmV2
ZXIgYmUgb24gc2FtZSBsaW5lIGFzIGVsc2UgJwotICAgICAgICAgICAgICAgICAgICAgICAgICco
dXNlIDIgbGluZXMpICBbd2hpdGVzcGFjZS9uZXdsaW5lXSBbNF0nKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCcgICAgZWxzZSBpZiAoYmxhaCkgeycsICcnKQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCcgICAgdmFyaWFibGVfZW5kc19pbl9lbHNlID0gdHJ1ZTsnLCAnJykKLQotICAgIGRl
ZiB0ZXN0X2NvbW1hKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhID0gZigxLDIp
OycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ01pc3Npbmcgc3BhY2UgYWZ0ZXIgLCAgW3do
aXRlc3BhY2UvY29tbWFdIFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCB0bXA9
YSxhPWIsYj10bXA7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ01pc3Npbmcgc3BhY2Vz
IGFyb3VuZCA9ICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFs0XScsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICdNaXNzaW5nIHNwYWNlIGFmdGVyICwgIFt3aGl0ZXNwYWNlL2NvbW1hXSBbM10n
XSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZihhLCAvKiBuYW1lICovIGIpOycsICcnKQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmKGEsIC8qIG5hbWUgKi9iKTsnLCAnJykKLQotICAg
IGRlZiB0ZXN0X3BvaW50ZXJfcmVmZXJlbmNlX21hcmtlcl9sb2NhdGlvbihzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnaW50KiBiOycsICcnLCAnZm9vLmNwcCcpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ2ludCAqYjsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdEZWNs
YXJhdGlvbiBoYXMgc3BhY2UgYmV0d2VlbiB0eXBlIG5hbWUgYW5kICogaW4gaW50ICpiICBbd2hp
dGVzcGFjZS9kZWNsYXJhdGlvbl0gWzNdJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZm9v
LmNwcCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3JldHVybiAqYjsnLCAnJywgJ2Zvby5j
cHAnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgKmI7JywgJycsICdmb28uYycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCogYjsnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICdEZWNsYXJhdGlvbiBoYXMgc3BhY2UgYmV0d2VlbiAqIGFuZCB2YXJpYWJsZSBuYW1lIGlu
IGludCogYiAgW3doaXRlc3BhY2UvZGVjbGFyYXRpb25dIFszXScsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgJ2Zvby5jJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50JiBiOycsICcn
LCAnZm9vLmNwcCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCAmYjsnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICdEZWNsYXJhdGlvbiBoYXMgc3BhY2UgYmV0d2VlbiB0eXBlIG5h
bWUgYW5kICYgaW4gaW50ICZiICBbd2hpdGVzcGFjZS9kZWNsYXJhdGlvbl0gWzNdJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnZm9vLmNwcCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J3JldHVybiAmYjsnLCAnJywgJ2Zvby5jcHAnKQotCi0gICAgZGVmIHRlc3RfaW5kZW50KHNlbGYp
OgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzdGF0aWMgaW50IG5vaW5kZW50OycsICcnKQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICAgaW50IGZvdXJTcGFjZUluZGVudDsnLCAnJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnIGludCBvbmVTcGFjZUluZGVudDsnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICdXZWlyZCBudW1iZXIgb2Ygc3BhY2VzIGF0IGxpbmUtc3RhcnQu
ICAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0FyZSB5b3UgdXNpbmcgYSA0LXNwYWNlIGlu
ZGVudD8gIFt3aGl0ZXNwYWNlL2luZGVudF0gWzNdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnICAgaW50IHRocmVlU3BhY2VJbmRlbnQ7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAn
V2VpcmQgbnVtYmVyIG9mIHNwYWNlcyBhdCBsaW5lLXN0YXJ0LiAgJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICdBcmUgeW91IHVzaW5nIGEgNC1zcGFjZSBpbmRlbnQ/ICBbd2hpdGVzcGFjZS9p
bmRlbnRdIFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyBjaGFyKiBvbmVTcGFjZUlu
ZGVudCA9ICJwdWJsaWM6IjsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdXZWlyZCBudW1i
ZXIgb2Ygc3BhY2VzIGF0IGxpbmUtc3RhcnQuICAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
J0FyZSB5b3UgdXNpbmcgYSA0LXNwYWNlIGluZGVudD8gIFt3aGl0ZXNwYWNlL2luZGVudF0gWzNd
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnIHB1YmxpYzonLCAnJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnICBwdWJsaWM6JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
JyAgIHB1YmxpYzonLCAnJykKLQotICAgIGRlZiB0ZXN0X2xhYmVsKHNlbGYpOgotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdwdWJsaWM6JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnTGFi
ZWxzIHNob3VsZCBhbHdheXMgYmUgaW5kZW50ZWQgYXQgbGVhc3Qgb25lIHNwYWNlLiAgJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICdJZiB0aGlzIGlzIGEgbWVtYmVyLWluaXRpYWxpemVyIGxp
c3QgaW4gYSBjb25zdHJ1Y3RvciwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgY29s
b24gc2hvdWxkIGJlIG9uIHRoZSBsaW5lIGFmdGVyIHRoZSBkZWZpbml0aW9uICcKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAnaGVhZGVyLiAgW3doaXRlc3BhY2UvbGFiZWxzXSBbNF0nKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCcgIHB1YmxpYzonLCAnJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnICAgcHVibGljOicsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgcHVi
bGljOicsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgIHB1YmxpYzonLCAnJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgcHVibGljOicsICcnKQotCi0gICAgZGVmIHRlc3Rf
bm90X2FsYWJlbChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnTXlWZXJ5TG9uZ05h
bWVzcGFjZTo6TXlWZXJ5TG9uZ0NsYXNzTmFtZTo6JywgJycpCi0KLSAgICBkZWYgdGVzdF90YWIo
c2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1x0aW50IGE7JywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAnVGFiIGZvdW5kOyBiZXR0ZXIgdG8gdXNlIHNwYWNlcyAgW3doaXRlc3Bh
Y2UvdGFiXSBbMV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYSA9IDU7XHQvLyBz
ZXQgYSB0byA1JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnVGFiIGZvdW5kOyBiZXR0ZXIg
dG8gdXNlIHNwYWNlcyAgW3doaXRlc3BhY2UvdGFiXSBbMV0nKQotCi0gICAgZGVmIHRlc3RfdW5u
YW1lZF9uYW1lc3BhY2VzX2luX2hlYWRlcnMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xh
bmd1YWdlX3J1bGVzX2NoZWNrKAotICAgICAgICAgICAgJ2Zvby5oJywgJ25hbWVzcGFjZSB7JywK
LSAgICAgICAgICAgICdEbyBub3QgdXNlIHVubmFtZWQgbmFtZXNwYWNlcyBpbiBoZWFkZXIgZmls
ZXMuICBTZWUnCi0gICAgICAgICAgICAnIGh0dHA6Ly9nb29nbGUtc3R5bGVndWlkZS5nb29nbGVj
b2RlLmNvbS9zdm4vdHJ1bmsvY3BwZ3VpZGUueG1sI05hbWVzcGFjZXMnCi0gICAgICAgICAgICAn
IGZvciBtb3JlIGluZm9ybWF0aW9uLiAgW2J1aWxkL25hbWVzcGFjZXNdIFs0XScpCi0gICAgICAg
ICMgbmFtZXNwYWNlIHJlZ2lzdHJhdGlvbiBtYWNyb3MgYXJlIE9LLgotICAgICAgICBzZWxmLmFz
c2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmgnLCAnbmFtZXNwYWNlIHsgIFxcJywgJycp
Ci0gICAgICAgICMgbmFtZWQgbmFtZXNwYWNlcyBhcmUgT0suCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uaCcsICduYW1lc3BhY2UgZm9vIHsnLCAnJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5oJywgJ25hbWVzcGFj
ZSBmb29uYW1lc3BhY2UgeycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxl
c19jaGVjaygnZm9vLmNwcCcsICduYW1lc3BhY2UgeycsICcnKQotICAgICAgICBzZWxmLmFzc2Vy
dF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmNwcCcsICduYW1lc3BhY2UgZm9vIHsnLCAnJykK
LQotICAgIGRlZiB0ZXN0X2J1aWxkX2NsYXNzKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCB0
aGUgbGludGVyIGNhbiBwYXJzZSB0byB0aGUgZW5kIG9mIGNsYXNzIGRlZmluaXRpb25zLAotICAg
ICAgICAjIGFuZCB0aGF0IGl0IHdpbGwgcmVwb3J0IHdoZW4gaXQgY2FuJ3QuCi0gICAgICAgICMg
VXNlIG11bHRpLWxpbmUgbGludGVyIGJlY2F1c2UgaXQgcGVyZm9ybXMgdGhlIENsYXNzU3RhdGUg
Y2hlY2suCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAg
ICdjbGFzcyBGb28geycsCi0gICAgICAgICAgICAnRmFpbGVkIHRvIGZpbmQgY29tcGxldGUgZGVj
bGFyYXRpb24gb2YgY2xhc3MgRm9vJwotICAgICAgICAgICAgJyAgW2J1aWxkL2NsYXNzXSBbNV0n
KQotICAgICAgICAjIERvbid0IHdhcm4gb24gZm9yd2FyZCBkZWNsYXJhdGlvbnMgb2YgdmFyaW91
cyB0eXBlcy4KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAg
ICAgJ2NsYXNzIEZvbzsnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ3N0cnVjdCBGb28qCi0gICAgICAgICAgICAg
ICAgIGZvbyA9IE5ld0ZvbygpOycnJywKLSAgICAgICAgICAgICcnKQotICAgICAgICAjIEhlcmUg
aXMgYW4gZXhhbXBsZSB3aGVyZSB0aGUgbGludGVyIGdldHMgY29uZnVzZWQsIGV2ZW4gdGhvdWdo
Ci0gICAgICAgICMgdGhlIGNvZGUgZG9lc24ndCB2aW9sYXRlIHRoZSBzdHlsZSBndWlkZS4KLSAg
ICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnY2xhc3Mg
Rm9vCi0gICAgICAgICAgICAjaWZkZWYgREVSSVZFX0ZST01fR09PCi0gICAgICAgICAgICAgIDog
cHVibGljIEdvbyB7Ci0gICAgICAgICAgICAjZWxzZQotICAgICAgICAgICAgICA6IHB1YmxpYyBI
b28gewotICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgIH07JycnLAotICAgICAgICAg
ICAgJ0ZhaWxlZCB0byBmaW5kIGNvbXBsZXRlIGRlY2xhcmF0aW9uIG9mIGNsYXNzIEZvbycKLSAg
ICAgICAgICAgICcgIFtidWlsZC9jbGFzc10gWzVdJykKLQotICAgIGRlZiB0ZXN0X2J1aWxkX2Vu
ZF9jb21tZW50KHNlbGYpOgotICAgICAgICAjIFRoZSBjcm9zc3Rvb2wgY29tcGlsZXIgd2UgY3Vy
cmVudGx5IHVzZSB3aWxsIGZhaWwgdG8gY29tcGlsZSB0aGUKLSAgICAgICAgIyBjb2RlIGluIHRo
aXMgdGVzdCwgc28gd2UgbWlnaHQgY29uc2lkZXIgcmVtb3ZpbmcgdGhlIGxpbnQgY2hlY2suCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyNlbmRpZiBOb3QgYSBjb21tZW50JywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAnVW5jb21tZW50ZWQgdGV4dCBhZnRlciAjZW5kaWYgaXMgbm9uLXN0
YW5kYXJkLicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBVc2UgYSBjb21tZW50LicKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnICBbYnVpbGQvZW5kaWZfY29tbWVudF0gWzVdJykKLQot
ICAgIGRlZiB0ZXN0X2J1aWxkX2ZvcndhcmRfZGVjbChzZWxmKToKLSAgICAgICAgIyBUaGUgY3Jv
c3N0b29sIGNvbXBpbGVyIHdlIGN1cnJlbnRseSB1c2Ugd2lsbCBmYWlsIHRvIGNvbXBpbGUgdGhl
Ci0gICAgICAgICMgY29kZSBpbiB0aGlzIHRlc3QsIHNvIHdlIG1pZ2h0IGNvbnNpZGVyIHJlbW92
aW5nIHRoZSBsaW50IGNoZWNrLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjbGFzcyBGb286
OkdvbzsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdJbm5lci1zdHlsZSBmb3J3YXJkIGRl
Y2xhcmF0aW9ucyBhcmUgaW52YWxpZC4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgUmVt
b3ZlIHRoaXMgbGluZS4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW2J1aWxkL2Zvcndh
cmRfZGVjbF0gWzVdJykKLQotICAgIGRlZiB0ZXN0X2J1aWxkX2hlYWRlcl9ndWFyZChzZWxmKToK
LSAgICAgICAgZmlsZV9wYXRoID0gJ215ZGlyL0Zvby5oJwotCi0gICAgICAgICMgV2UgY2FuJ3Qg
cmVseSBvbiBvdXIgaW50ZXJuYWwgc3R1ZmYgdG8gZ2V0IGEgc2FuZSBwYXRoIG9uIHRoZSBvcGVu
IHNvdXJjZQotICAgICAgICAjIHNpZGUgb2YgdGhpbmdzLCBzbyBqdXN0IHBhcnNlIG91dCB0aGUg
c3VnZ2VzdGVkIGhlYWRlciBndWFyZC4gVGhpcwotICAgICAgICAjIGRvZXNuJ3QgYWxsb3cgdXMg
dG8gdGVzdCB0aGUgc3VnZ2VzdGVkIGhlYWRlciBndWFyZCwgYnV0IGl0IGRvZXMgbGV0IHVzCi0g
ICAgICAgICMgdGVzdCBhbGwgdGhlIG90aGVyIGhlYWRlciB0ZXN0cy4KLSAgICAgICAgZXJyb3Jf
Y29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBzZWxmLnBy
b2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLCBbXSwgZXJyb3JfY29sbGVjdG9yKQotICAg
ICAgICBleHBlY3RlZF9ndWFyZCA9ICcnCi0gICAgICAgIG1hdGNoZXIgPSByZS5jb21waWxlKAot
ICAgICAgICAgICAgJ05vIFwjaWZuZGVmIGhlYWRlciBndWFyZCBmb3VuZFwsIHN1Z2dlc3RlZCBD
UFAgdmFyaWFibGUgaXNcOiAoW0EtWmEtel8wLTldKykgJykKLSAgICAgICAgZm9yIGVycm9yIGlu
IGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpOgotICAgICAgICAgICAgbWF0Y2hlcyA9IG1h
dGNoZXIubWF0Y2goZXJyb3IpCi0gICAgICAgICAgICBpZiBtYXRjaGVzOgotICAgICAgICAgICAg
ICAgIGV4cGVjdGVkX2d1YXJkID0gbWF0Y2hlcy5ncm91cCgxKQotICAgICAgICAgICAgICAgIGJy
ZWFrCi0KLSAgICAgICAgIyBNYWtlIHN1cmUgd2UgZXh0cmFjdGVkIHNvbWV0aGluZyBmb3Igb3Vy
IGhlYWRlciBndWFyZC4KLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChleHBlY3RlZF9ndWFy
ZCwgJycpCi0KLSAgICAgICAgIyBXcm9uZyBndWFyZAotICAgICAgICBlcnJvcl9jb2xsZWN0b3Ig
PSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIHNlbGYucHJvY2Vzc19maWxl
X2RhdGEoZmlsZV9wYXRoLCAnaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycj
aWZuZGVmIEZPT19IJywgJyNkZWZpbmUgRk9PX0gnXSwgZXJyb3JfY29sbGVjdG9yKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscygKLSAgICAgICAgICAgIDEsCi0gICAgICAgICAgICBlcnJvcl9j
b2xsZWN0b3IucmVzdWx0X2xpc3QoKS5jb3VudCgKLSAgICAgICAgICAgICAgICAnI2lmbmRlZiBo
ZWFkZXIgZ3VhcmQgaGFzIHdyb25nIHN0eWxlLCBwbGVhc2UgdXNlOiAlcycKLSAgICAgICAgICAg
ICAgICAnICBbYnVpbGQvaGVhZGVyX2d1YXJkXSBbNV0nICUgZXhwZWN0ZWRfZ3VhcmQpLAotICAg
ICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkpCi0KLSAgICAgICAgIyBObyBk
ZWZpbmUKLSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3Nl
cnRfKQotICAgICAgICBzZWxmLnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiAlcycgJSBleHBlY3RlZF9ndWFy
ZF0sIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCi0gICAgICAg
ICAgICAxLAotICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291bnQo
Ci0gICAgICAgICAgICAgICAgJ05vICNpZm5kZWYgaGVhZGVyIGd1YXJkIGZvdW5kLCBzdWdnZXN0
ZWQgQ1BQIHZhcmlhYmxlIGlzOiAlcycKLSAgICAgICAgICAgICAgICAnICBbYnVpbGQvaGVhZGVy
X2d1YXJkXSBbNV0nICUgZXhwZWN0ZWRfZ3VhcmQpLAotICAgICAgICAgICAgZXJyb3JfY29sbGVj
dG9yLnJlc3VsdF9saXN0KCkpCi0KLSAgICAgICAgIyBNaXNtYXRjaGVkIGRlZmluZQotICAgICAg
ICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAg
IHNlbGYucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAnaCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWycjaWZuZGVmICVzJyAlIGV4cGVjdGVkX2d1YXJkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnI2RlZmluZSBGT09fSCddLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoCi0gICAgICAgICAgICAxLAotICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9s
aXN0KCkuY291bnQoCi0gICAgICAgICAgICAgICAgJ05vICNpZm5kZWYgaGVhZGVyIGd1YXJkIGZv
dW5kLCBzdWdnZXN0ZWQgQ1BQIHZhcmlhYmxlIGlzOiAlcycKLSAgICAgICAgICAgICAgICAnICBb
YnVpbGQvaGVhZGVyX2d1YXJkXSBbNV0nICUgZXhwZWN0ZWRfZ3VhcmQpLAotICAgICAgICAgICAg
ZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkpCi0KLSAgICAgICAgIyBObyBoZWFkZXIgZ3Vh
cmQgZXJyb3JzCi0gICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYu
YXNzZXJ0XykKLSAgICAgICAgc2VsZi5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJyNpZm5kZWYgJXMnICUgZXhwZWN0ZWRf
Z3VhcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZGVmaW5lICVzJyAlIGV4
cGVjdGVkX2d1YXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2VuZGlmIC8v
ICVzJyAlIGV4cGVjdGVkX2d1YXJkXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
cnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGZvciBsaW5lIGluIGVycm9yX2NvbGxlY3Rvci5yZXN1
bHRfbGlzdCgpOgotICAgICAgICAgICAgaWYgbGluZS5maW5kKCdidWlsZC9oZWFkZXJfZ3VhcmQn
KSAhPSAtMToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZXJyb3I6ICVz
JyAlIGxpbmUpCi0KLSAgICAgICAgIyBDb21wbGV0ZWx5IGluY29ycmVjdCBoZWFkZXIgZ3VhcmQK
LSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQot
ICAgICAgICBzZWxmLnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiBGT08nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnI2RlZmluZSBGT08nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnI2VuZGlmICAvLyBGT08nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
cnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAotICAgICAgICAgICAg
MSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpLmNvdW50KAotICAg
ICAgICAgICAgICAgICcjaWZuZGVmIGhlYWRlciBndWFyZCBoYXMgd3Jvbmcgc3R5bGUsIHBsZWFz
ZSB1c2U6ICVzJwotICAgICAgICAgICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3VhcmRdIFs1XScg
JSBleHBlY3RlZF9ndWFyZCksCi0gICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xp
c3QoKSkKLQotICAgIGRlZiB0ZXN0X2J1aWxkX3ByaW50Zl9mb3JtYXQoc2VsZik6Ci0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICByJ3ByaW50ZigiXCUlZCIsIHZhbHVlKTsn
LAotICAgICAgICAgICAgJyUsIFssICgsIGFuZCB7IGFyZSB1bmRlZmluZWQgY2hhcmFjdGVyIGVz
Y2FwZXMuICBVbmVzY2FwZSB0aGVtLicKLSAgICAgICAgICAgICcgIFtidWlsZC9wcmludGZfZm9y
bWF0XSBbM10nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICByJ3Nu
cHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJcWyVkIiwgdmFsdWUpOycsCi0gICAgICAg
ICAgICAnJSwgWywgKCwgYW5kIHsgYXJlIHVuZGVmaW5lZCBjaGFyYWN0ZXIgZXNjYXBlcy4gIFVu
ZXNjYXBlIHRoZW0uJwotICAgICAgICAgICAgJyAgW2J1aWxkL3ByaW50Zl9mb3JtYXRdIFszXScp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgIHInZnByaW50ZihmaWxl
LCAiXCglZCIsIHZhbHVlKTsnLAotICAgICAgICAgICAgJyUsIFssICgsIGFuZCB7IGFyZSB1bmRl
ZmluZWQgY2hhcmFjdGVyIGVzY2FwZXMuICBVbmVzY2FwZSB0aGVtLicKLSAgICAgICAgICAgICcg
IFtidWlsZC9wcmludGZfZm9ybWF0XSBbM10nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
Ci0gICAgICAgICAgICByJ3ZzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiXFxceyVk
IiwgYXApOycsCi0gICAgICAgICAgICAnJSwgWywgKCwgYW5kIHsgYXJlIHVuZGVmaW5lZCBjaGFy
YWN0ZXIgZXNjYXBlcy4gIFVuZXNjYXBlIHRoZW0uJwotICAgICAgICAgICAgJyAgW2J1aWxkL3By
aW50Zl9mb3JtYXRdIFszXScpCi0KLSAgICAgICAgIyBEb24ndCB3YXJuIGlmIGRvdWJsZS1zbGFz
aCBwcmVjZWRlcyB0aGUgc3ltYm9sCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQocidwcmludGYo
IlxcJSUlZCIsIHZhbHVlKTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotCi0gICAg
ZGVmIHRlc3RfcnVudGltZV9wcmludGZfZm9ybWF0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KAotICAgICAgICAgICAgcidmcHJpbnRmKGZpbGUsICIlcSIsIHZhbHVlKTsnLAotICAg
ICAgICAgICAgJyVxIGluIGZvcm1hdCBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxsIGlu
c3RlYWQuJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmX2Zvcm1hdF0gWzNdJykKLQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgcidhcHJpbnRmKGZpbGUsICJU
aGUgbnVtYmVyIGlzICUxMnEiLCB2YWx1ZSk7JywKLSAgICAgICAgICAgICclcSBpbiBmb3JtYXQg
c3RyaW5ncyBpcyBkZXByZWNhdGVkLiAgVXNlICVsbCBpbnN0ZWFkLicKLSAgICAgICAgICAgICcg
IFtydW50aW1lL3ByaW50Zl9mb3JtYXRdIFszXScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgKLSAgICAgICAgICAgIHIncHJpbnRmKGZpbGUsICJUaGUgbnVtYmVyIGlzIiAiJS0xMnEiLCB2
YWx1ZSk7JywKLSAgICAgICAgICAgICclcSBpbiBmb3JtYXQgc3RyaW5ncyBpcyBkZXByZWNhdGVk
LiAgVXNlICVsbCBpbnN0ZWFkLicKLSAgICAgICAgICAgICcgIFtydW50aW1lL3ByaW50Zl9mb3Jt
YXRdIFszXScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgIHIncHJp
bnRmKGZpbGUsICJUaGUgbnVtYmVyIGlzIiAiJSsxMnEiLCB2YWx1ZSk7JywKLSAgICAgICAgICAg
ICclcSBpbiBmb3JtYXQgc3RyaW5ncyBpcyBkZXByZWNhdGVkLiAgVXNlICVsbCBpbnN0ZWFkLicK
LSAgICAgICAgICAgICcgIFtydW50aW1lL3ByaW50Zl9mb3JtYXRdIFszXScpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgIHIncHJpbnRmKGZpbGUsICJUaGUgbnVtYmVy
IGlzIiAiJSAxMnEiLCB2YWx1ZSk7JywKLSAgICAgICAgICAgICclcSBpbiBmb3JtYXQgc3RyaW5n
cyBpcyBkZXByZWNhdGVkLiAgVXNlICVsbCBpbnN0ZWFkLicKLSAgICAgICAgICAgICcgIFtydW50
aW1lL3ByaW50Zl9mb3JtYXRdIFszXScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAg
ICAgICAgICAgIHInc25wcmludGYoZmlsZSwgIk5ldmVyIG1peCAlZCBhbmQgJTEkZCBwYXJtYWV0
ZXJzISIsIHZhbHVlKTsnLAotICAgICAgICAgICAgJyVOJCBmb3JtYXRzIGFyZSB1bmNvbnZlbnRp
b25hbC4gIFRyeSByZXdyaXRpbmcgdG8gYXZvaWQgdGhlbS4nCi0gICAgICAgICAgICAnICBbcnVu
dGltZS9wcmludGZfZm9ybWF0XSBbMl0nKQotCi0gICAgZGVmIGFzc2VydF9saW50TG9nQ29kZU9u
RXJyb3Ioc2VsZiwgY29kZSwgZXhwZWN0ZWRfbWVzc2FnZSk6Ci0gICAgICAgICMgU3BlY2lhbCBh
c3NlcnRfbGludCB3aGljaCBsb2dzIHRoZSBpbnB1dCBjb2RlIG9uIGVycm9yLgotICAgICAgICBy
ZXN1bHQgPSBzZWxmLnBlcmZvcm1fc2luZ2xlX2xpbmVfbGludChjb2RlLCAnZm9vLmNwcCcpCi0g
ICAgICAgIGlmIHJlc3VsdCAhPSBleHBlY3RlZF9tZXNzYWdlOgotICAgICAgICAgICAgc2VsZi5m
YWlsKCdGb3IgY29kZTogIiVzIlxuR290OiAiJXMiXG5FeHBlY3RlZDogIiVzIicKLSAgICAgICAg
ICAgICAgICAgICAgICAlIChjb2RlLCByZXN1bHQsIGV4cGVjdGVkX21lc3NhZ2UpKQotCi0gICAg
ZGVmIHRlc3RfYnVpbGRfc3RvcmFnZV9jbGFzcyhzZWxmKToKLSAgICAgICAgcXVhbGlmaWVycyA9
IFtOb25lLCAnY29uc3QnLCAndm9sYXRpbGUnXQotICAgICAgICBzaWducyA9IFtOb25lLCAnc2ln
bmVkJywgJ3Vuc2lnbmVkJ10KLSAgICAgICAgdHlwZXMgPSBbJ3ZvaWQnLCAnY2hhcicsICdpbnQn
LCAnZmxvYXQnLCAnZG91YmxlJywKLSAgICAgICAgICAgICAgICAgJ3NjaGFyJywgJ2ludDgnLCAn
dWludDgnLCAnaW50MTYnLCAndWludDE2JywKLSAgICAgICAgICAgICAgICAgJ2ludDMyJywgJ3Vp
bnQzMicsICdpbnQ2NCcsICd1aW50NjQnXQotICAgICAgICBzdG9yYWdlX2NsYXNzZXMgPSBbJ2F1
dG8nLCAnZXh0ZXJuJywgJ3JlZ2lzdGVyJywgJ3N0YXRpYycsICd0eXBlZGVmJ10KLQotICAgICAg
ICBidWlsZF9zdG9yYWdlX2NsYXNzX2Vycm9yX21lc3NhZ2UgPSAoCi0gICAgICAgICAgICAnU3Rv
cmFnZSBjbGFzcyAoc3RhdGljLCBleHRlcm4sIHR5cGVkZWYsIGV0Yykgc2hvdWxkIGJlIGZpcnN0
LicKLSAgICAgICAgICAgICcgIFtidWlsZC9zdG9yYWdlX2NsYXNzXSBbNV0nKQotCi0gICAgICAg
ICMgU29tZSBleHBsaWNpdCBjYXNlcy4gTGVnYWwgaW4gQysrLCBkZXByZWNhdGVkIGluIEM5OS4K
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnY29uc3QgaW50IHN0YXRpYyBmb28gPSA1OycsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfc3RvcmFnZV9jbGFzc19lcnJvcl9tZXNzYWdl
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NoYXIgc3RhdGljIGZvbzsnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkX3N0b3JhZ2VfY2xhc3NfZXJyb3JfbWVzc2FnZSkKLQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdkb3VibGUgY29uc3Qgc3RhdGljIGZvbyA9IDIuMDsn
LAotICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX3N0b3JhZ2VfY2xhc3NfZXJyb3JfbWVz
c2FnZSkKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd1aW50NjQgdHlwZWRlZiB1bnNpZ25l
ZExvbmdMb25nOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfc3RvcmFnZV9jbGFz
c19lcnJvcl9tZXNzYWdlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCByZWdpc3Rl
ciBmb28gPSAwOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfc3RvcmFnZV9jbGFz
c19lcnJvcl9tZXNzYWdlKQotCi0gICAgICAgICMgU2luY2UgdGhlcmUgYXJlIGEgdmVyeSBsYXJn
ZSBudW1iZXIgb2YgcG9zc2liaWxpdGllcywgcmFuZG9tbHkKLSAgICAgICAgIyBjb25zdHJ1Y3Qg
ZGVjbGFyYXRpb25zLgotICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHRoZSBkZWNsYXJhdGlvbiBp
cyBsb2dnZWQgaWYgdGhlcmUncyBhbiBlcnJvci4KLSAgICAgICAgIyBTZWVkIGdlbmVyYXRvciB3
aXRoIGFuIGludGVnZXIgZm9yIGFic29sdXRlIHJlcHJvZHVjaWJpbGl0eS4KLSAgICAgICAgcmFu
ZG9tLnNlZWQoMjUpCi0gICAgICAgIGZvciB1bnVzZWRfaSBpbiByYW5nZSgxMCk6Ci0gICAgICAg
ICAgICAjIEJ1aWxkIHVwIHJhbmRvbSBsaXN0IG9mIG5vbi1zdG9yYWdlLWNsYXNzIGRlY2xhcmF0
aW9uIHNwZWNzLgotICAgICAgICAgICAgb3RoZXJfZGVjbF9zcGVjcyA9IFtyYW5kb20uY2hvaWNl
KHF1YWxpZmllcnMpLCByYW5kb20uY2hvaWNlKHNpZ25zKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmFuZG9tLmNob2ljZSh0eXBlcyldCi0gICAgICAgICAgICAjIHJlbW92ZSBO
b25lCi0gICAgICAgICAgICBvdGhlcl9kZWNsX3NwZWNzID0gZmlsdGVyKGxhbWJkYSB4OiB4IGlz
IG5vdCBOb25lLCBvdGhlcl9kZWNsX3NwZWNzKQotCi0gICAgICAgICAgICAjIHNodWZmbGUKLSAg
ICAgICAgICAgIHJhbmRvbS5zaHVmZmxlKG90aGVyX2RlY2xfc3BlY3MpCi0KLSAgICAgICAgICAg
ICMgaW5zZXJ0IHN0b3JhZ2UgY2xhc3MgYWZ0ZXIgdGhlIGZpcnN0Ci0gICAgICAgICAgICBzdG9y
YWdlX2NsYXNzID0gcmFuZG9tLmNob2ljZShzdG9yYWdlX2NsYXNzZXMpCi0gICAgICAgICAgICBp
bnNlcnRpb25fcG9pbnQgPSByYW5kb20ucmFuZGludCgxLCBsZW4ob3RoZXJfZGVjbF9zcGVjcykp
Ci0gICAgICAgICAgICBkZWNsX3NwZWNzID0gKG90aGVyX2RlY2xfc3BlY3NbMDppbnNlcnRpb25f
cG9pbnRdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICsgW3N0b3JhZ2VfY2xhc3NdCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICsgb3RoZXJfZGVjbF9zcGVjc1tpbnNlcnRpb25fcG9pbnQ6
XSkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRfbGludExvZ0NvZGVPbkVycm9yKAotICAgICAg
ICAgICAgICAgICcgJy5qb2luKGRlY2xfc3BlY3MpICsgJzsnLAotICAgICAgICAgICAgICAgIGJ1
aWxkX3N0b3JhZ2VfY2xhc3NfZXJyb3JfbWVzc2FnZSkKLQotICAgICAgICAgICAgIyBidXQgbm8g
ZXJyb3IgaWYgc3RvcmFnZSBjbGFzcyBpcyBmaXJzdAotICAgICAgICAgICAgc2VsZi5hc3NlcnRf
bGludExvZ0NvZGVPbkVycm9yKAotICAgICAgICAgICAgICAgIHN0b3JhZ2VfY2xhc3MgKyAnICcg
KyAnICcuam9pbihvdGhlcl9kZWNsX3NwZWNzKSwKLSAgICAgICAgICAgICAgICAnJykKLQotICAg
IGRlZiB0ZXN0X2xlZ2FsX2NvcHlyaWdodChzZWxmKToKLSAgICAgICAgbGVnYWxfY29weXJpZ2h0
X21lc3NhZ2UgPSAoCi0gICAgICAgICAgICAnTm8gY29weXJpZ2h0IG1lc3NhZ2UgZm91bmQuICAn
Ci0gICAgICAgICAgICAnWW91IHNob3VsZCBoYXZlIGEgbGluZTogIkNvcHlyaWdodCBbeWVhcl0g
PENvcHlyaWdodCBPd25lcj4iJwotICAgICAgICAgICAgJyAgW2xlZ2FsL2NvcHlyaWdodF0gWzVd
JykKLQotICAgICAgICBjb3B5cmlnaHRfbGluZSA9ICcvLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLicKLQotICAgICAgICBmaWxlX3BhdGggPSAnbXlkaXIv
Z29vZ2xlY2xpZW50L2Zvby5jcHAnCi0KLSAgICAgICAgIyBUaGVyZSBzaG91bGQgYmUgYSBjb3B5
cmlnaHQgbWVzc2FnZSBpbiB0aGUgZmlyc3QgMTAgbGluZXMKLSAgICAgICAgZXJyb3JfY29sbGVj
dG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBzZWxmLnByb2Nlc3Nf
ZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2NwcCcsIFtdLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKAotICAgICAgICAgICAgMSwKLSAgICAgICAgICAgIGVycm9yX2Nv
bGxlY3Rvci5yZXN1bHRfbGlzdCgpLmNvdW50KGxlZ2FsX2NvcHlyaWdodF9tZXNzYWdlKSkKLQot
ICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0g
ICAgICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEoCi0gICAgICAgICAgICBmaWxlX3BhdGgsICdj
cHAnLAotICAgICAgICAgICAgWycnIGZvciB1bnVzZWRfaSBpbiByYW5nZSgxMCldICsgW2NvcHly
aWdodF9saW5lXSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoCi0gICAgICAgICAgICAxLAotICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9y
LnJlc3VsdF9saXN0KCkuY291bnQobGVnYWxfY29weXJpZ2h0X21lc3NhZ2UpKQotCi0gICAgICAg
ICMgVGVzdCB0aGF0IHdhcm5pbmcgaXNuJ3QgaXNzdWVkIGlmIENvcHlyaWdodCBsaW5lIGFwcGVh
cnMgZWFybHkgZW5vdWdoLgotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3Rv
cihzZWxmLmFzc2VydF8pCi0gICAgICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRo
LCAnY3BwJywgW2NvcHlyaWdodF9saW5lXSwgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICBmb3Ig
bWVzc2FnZSBpbiBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKToKLSAgICAgICAgICAgIGlm
IG1lc3NhZ2UuZmluZCgnbGVnYWwvY29weXJpZ2h0JykgIT0gLTE6Ci0gICAgICAgICAgICAgICAg
c2VsZi5mYWlsKCdVbmV4cGVjdGVkIGVycm9yOiAlcycgJSBtZXNzYWdlKQotCi0gICAgICAgIGVy
cm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgc2Vs
Zi5wcm9jZXNzX2ZpbGVfZGF0YSgKLSAgICAgICAgICAgIGZpbGVfcGF0aCwgJ2NwcCcsCi0gICAg
ICAgICAgICBbJycgZm9yIHVudXNlZF9pIGluIHJhbmdlKDkpXSArIFtjb3B5cmlnaHRfbGluZV0s
Ci0gICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGZvciBtZXNzYWdlIGluIGVy
cm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpOgotICAgICAgICAgICAgaWYgbWVzc2FnZS5maW5k
KCdsZWdhbC9jb3B5cmlnaHQnKSAhPSAtMToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1Vu
ZXhwZWN0ZWQgZXJyb3I6ICVzJyAlIG1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX2lu
Y3JlbWVudChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnKmNvdW50Kys7JywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnQ2hhbmdpbmcgcG9pbnRlciBpbnN0ZWFkIG9mIHZhbHVl
IChvciB1bnVzZWQgdmFsdWUgb2YgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdvcGVyYXRv
ciopLiAgW3J1bnRpbWUvaW52YWxpZF9pbmNyZW1lbnRdIFs1XScpCi0KLQotY2xhc3MgQ2xlYW5z
ZWRMaW5lc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6
Ci0gICAgICAgIGxpbmVzID0gWydMaW5lIDEnLAotICAgICAgICAgICAgICAgICAnTGluZSAyJywK
LSAgICAgICAgICAgICAgICAgJ0xpbmUgMyAvLyBDb21tZW50IHRlc3QnLAotICAgICAgICAgICAg
ICAgICAnTGluZSA0ICJmb28iJ10KLQotICAgICAgICBjbGVhbl9saW5lcyA9IGNwcF9zdHlsZS5D
bGVhbnNlZExpbmVzKGxpbmVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsaW5lcywgY2xl
YW5fbGluZXMucmF3X2xpbmVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyg0LCBjbGVhbl9s
aW5lcy5udW1fbGluZXMoKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ0xpbmUgMScs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAnTGluZSAyJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdMaW5lIDMgJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdMaW5lIDQg
ImZvbyInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW5fbGluZXMubGluZXMpCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydMaW5lIDEnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0xpbmUgMicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnTGluZSAzICcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAnTGluZSA0ICIiJ10sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGNsZWFuX2xpbmVzLmVsaWRlZCkKLQotICAgIGRlZiB0ZXN0X2luaXRfZW1w
dHkoc2VsZik6Ci0gICAgICAgIGNsZWFuX2xpbmVzID0gY3BwX3N0eWxlLkNsZWFuc2VkTGluZXMo
W10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFtdLCBjbGVhbl9saW5lcy5yYXdfbGluZXMp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIGNsZWFuX2xpbmVzLm51bV9saW5lcygpKQot
Ci0gICAgZGVmIHRlc3RfY29sbGFwc2Vfc3RyaW5ncyhzZWxmKToKLSAgICAgICAgY29sbGFwc2Ug
PSBjcHBfc3R5bGUuQ2xlYW5zZWRMaW5lcy5jb2xsYXBzZV9zdHJpbmdzCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKCciIicsIGNvbGxhcHNlKCciIicpKSAgICAgICAgICAgICAjICIiICAgICAo
ZW1wdHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCciIiInLCBjb2xsYXBzZSgnIiIiJykp
ICAgICAgICAgICAjICIiIiAgICAoYmFkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnIiIn
LCBjb2xsYXBzZSgnInh5eiInKSkgICAgICAgICAgIyAieHl6IiAgKHN0cmluZykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoJyIiJywgY29sbGFwc2UoJyJcXFwiIicpKSAgICAgICAgICMgIlwi
IiAgIChzdHJpbmcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCciIicsIGNvbGxhcHNlKCci
XCciJykpICAgICAgICAgICAjICInIiAgICAoc3RyaW5nKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscygnIlwiJywgY29sbGFwc2UoJyJcIicpKSAgICAgICAgICAgIyAiXCIgICAgKGJhZCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyIiJywgY29sbGFwc2UoJyJcXFxcIicpKSAgICAgICAg
ICMgIlxcIiAgIChzdHJpbmcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCciJywgY29sbGFw
c2UoJyJcXFxcXFwiJykpICAgICAgICAjICJcXFwiICAoYmFkKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygnIiInLCBjb2xsYXBzZSgnIlxcXFxcXFxcIicpKSAgICAgIyAiXFxcXCIgKHN0cmlu
ZykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnXCdcJycsIGNvbGxhcHNlKCdcJ1wnJykp
ICAgICAgICAgIyAnJyAgICAgKGVtcHR5KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnXCdc
JycsIGNvbGxhcHNlKCdcJ2FcJycpKSAgICAgICAgIyAnYScgICAgKGNoYXIpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKCdcJ1wnJywgY29sbGFwc2UoJ1wnXFxcJ1wnJykpICAgICAjICdcJycg
ICAoY2hhcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ1wnJywgY29sbGFwc2UoJ1wnXFxc
JycpKSAgICAgICAgICMgJ1wnICAgIChiYWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCcn
LCBjb2xsYXBzZSgnXFwwMTInKSkgICAgICAgICAgICAjICdcMDEyJyAoY2hhcikKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoJycsIGNvbGxhcHNlKCdcXHhmRjAnKSkgICAgICAgICAgICMgJ1x4
ZkYwJyAoY2hhcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJycsIGNvbGxhcHNlKCdcXG4n
KSkgICAgICAgICAgICAgICMgJ1xuJyAoY2hhcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
J1wjJywgY29sbGFwc2UoJ1xcIycpKSAgICAgICAgICAgICMgJ1wjJyAoYmFkKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKCdTdHJpbmdSZXBsYWNlKGJvZHksICIiLCAiIik7JywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2UoJ1N0cmluZ1JlcGxhY2UoYm9keSwgIlxcXFwi
LCAiXFxcXFxcXFwiKTsnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ1wnXCcgIiInLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZSgnXCciXCcgImZvbyInKSkKLQotCi1j
bGFzcyBPcmRlck9mSW5jbHVkZXNUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgotICAgIGRlZiBzZXRV
cChzZWxmKToKLSAgICAgICAgc2VsZi5pbmNsdWRlX3N0YXRlID0gY3BwX3N0eWxlLl9JbmNsdWRl
U3RhdGUoKQotCi0gICAgICAgICMgQ2hlYXQgb3MucGF0aC5hYnNwYXRoIGNhbGxlZCBpbiBGaWxl
SW5mbyBjbGFzcy4KLSAgICAgICAgc2VsZi5vc19wYXRoX2Fic3BhdGhfb3JpZyA9IG9zLnBhdGgu
YWJzcGF0aAotICAgICAgICBvcy5wYXRoLmFic3BhdGggPSBsYW1iZGEgdmFsdWU6IHZhbHVlCi0K
LSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIG9zLnBhdGguYWJzcGF0aCA9IHNlbGYu
b3NfcGF0aF9hYnNwYXRoX29yaWcKLQotICAgIGRlZiB0ZXN0X3RyeV9kcm9wX2NvbW1vbl9zdWZm
aXhlcyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vL2ZvbycsIGNwcF9zdHls
ZS5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9mb28taW5sLmgnKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnZm9vL2Jhci9mb28nLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9z
dHlsZS5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9iYXIvZm9vX2lubC5oJykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ2Zvby9mb28nLCBjcHBfc3R5bGUuX2Ryb3BfY29tbW9uX3N1ZmZp
eGVzKCdmb28vZm9vLmNwcCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28vZm9vX3Vu
dXN1YWxpbnRlcm5hbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLl9kcm9w
X2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvb191bnVzdWFsaW50ZXJuYWwuaCcpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCcnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5f
ZHJvcF9jb21tb25fc3VmZml4ZXMoJ190ZXN0LmNwcCcpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCd0ZXN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuX2Ryb3BfY29t
bW9uX3N1ZmZpeGVzKCd0ZXN0LmNwcCcpKQotCi0KLWNsYXNzIE9yZGVyT2ZJbmNsdWRlc1Rlc3Qo
Q3BwU3R5bGVUZXN0QmFzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmlu
Y2x1ZGVfc3RhdGUgPSBjcHBfc3R5bGUuX0luY2x1ZGVTdGF0ZSgpCi0KLSAgICAgICAgIyBDaGVh
dCBvcy5wYXRoLmFic3BhdGggY2FsbGVkIGluIEZpbGVJbmZvIGNsYXNzLgotICAgICAgICBzZWxm
Lm9zX3BhdGhfYWJzcGF0aF9vcmlnID0gb3MucGF0aC5hYnNwYXRoCi0gICAgICAgIG9zLnBhdGgu
YWJzcGF0aCA9IGxhbWJkYSB2YWx1ZTogdmFsdWUKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToK
LSAgICAgICAgb3MucGF0aC5hYnNwYXRoID0gc2VsZi5vc19wYXRoX2Fic3BhdGhfb3JpZwotCi0g
ICAgZGVmIHRlc3RfY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyX19ub19jb25maWcoc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlYWRlciBmaWxlIHNob3VsZCBub3QgY29udGFpbiBX
ZWJDb3JlIGNvbmZpZy5oLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmNsdWRl
X3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9vcmRlcihjcHBfc3R5bGUuX0NPTkZJR19IRUFERVIs
IFRydWUpKQotCi0gICAgZGVmIHRlc3RfY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyX19ub19zZWxm
KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWFkZXIgZmlsZSBzaG91bGQgbm90
IGNvbnRhaW4gaXRzZWxmLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmNsdWRl
X3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9vcmRlcihjcHBfc3R5bGUuX1BSSU1BUllfSEVBREVS
LCBUcnVlKSkKLSAgICAgICAgIyBUZXN0IGFjdHVhbCBjb2RlIHRvIG1ha2Ugc3VyZSB0aGF0IGhl
YWRlciB0eXBlcyBhcmUgY29ycmVjdGx5IGFzc2lnbmVkLgotICAgICAgICBzZWxmLmFzc2VydF9s
YW5ndWFnZV9ydWxlc19jaGVjaygnRm9vLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnI2luY2x1ZGUgIkZvby5oIlxuJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0hlYWRlciBmaWxlIHNob3VsZCBub3QgY29udGFpbiBpdHNl
bGYuIFNob3VsZCBiZTogYWxwaGFiZXRpY2FsbHkgc29ydGVkLicKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVfb3JkZXJdIFs0XScpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdGb29CYXIuaCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiRm9vLmgiXG4n
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKLQotICAgIGRl
ZiB0ZXN0X2NoZWNrX25leHRfaW5jbHVkZV9vcmRlcl9fbGlrZWx5X3RoZW5fY29uZmlnKHNlbGYp
OgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdGb3VuZCBoZWFkZXIgdGhpcyBmaWxlIGltcGxl
bWVudHMgYmVmb3JlIFdlYkNvcmUgY29uZmlnLmguJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGNwcF9zdHlsZS5f
UFJJTUFSWV9IRUFERVIsIEZhbHNlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRm91bmQg
V2ViQ29yZSBjb25maWcuaCBhZnRlciBhIGhlYWRlciB0aGlzIGZpbGUgaW1wbGVtZW50cy4nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2lu
Y2x1ZGVfb3JkZXIoY3BwX3N0eWxlLl9DT05GSUdfSEVBREVSLCBGYWxzZSkpCi0KLSAgICBkZWYg
dGVzdF9jaGVja19uZXh0X2luY2x1ZGVfb3JkZXJfX290aGVyX3RoZW5fY29uZmlnKHNlbGYpOgot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdGb3VuZCBvdGhlciBoZWFkZXIgYmVmb3JlIFdlYkNv
cmUgY29uZmlnLmguJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfc3Rh
dGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGNwcF9zdHlsZS5fT1RIRVJfSEVBREVSLCBGYWxz
ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ZvdW5kIFdlYkNvcmUgY29uZmlnLmggYWZ0
ZXIgb3RoZXIgaGVhZGVyLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmNsdWRl
X3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9vcmRlcihjcHBfc3R5bGUuX0NPTkZJR19IRUFERVIs
IEZhbHNlKSkKLQotICAgIGRlZiB0ZXN0X2NoZWNrX25leHRfaW5jbHVkZV9vcmRlcl9fY29uZmln
X3RoZW5fb3RoZXJfdGhlbl9saWtlbHkoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
JycsIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoY3BwX3N0eWxl
Ll9DT05GSUdfSEVBREVSLCBGYWxzZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ZvdW5k
IG90aGVyIGhlYWRlciBiZWZvcmUgYSBoZWFkZXIgdGhpcyBmaWxlIGltcGxlbWVudHMuJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNs
dWRlX29yZGVyKGNwcF9zdHlsZS5fT1RIRVJfSEVBREVSLCBGYWxzZSkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ0ZvdW5kIGhlYWRlciB0aGlzIGZpbGUgaW1wbGVtZW50cyBhZnRlciBvdGhl
ciBoZWFkZXIuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfc3RhdGUu
Y2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGNwcF9zdHlsZS5fUFJJTUFSWV9IRUFERVIsIEZhbHNl
KSkKLQotICAgIGRlZiB0ZXN0X2NoZWNrX2FscGhhYmV0aWNhbF9pbmNsdWRlX29yZGVyKHNlbGYp
OgotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmgnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImEuaCJcbicK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJjLmgi
XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAi
Yi5oIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FscGhh
YmV0aWNhbCBzb3J0aW5nIHByb2JsZW0uICBbYnVpbGQvaW5jbHVkZV9vcmRlcl0gWzRdJykKLQot
ICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmgnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImEuaCJcbicKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJiLmgiXG4n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiYy5o
IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5oJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlIDxhc3NlcnQuaD5cbicK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJiYXIu
aCJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBbHBoYWJl
dGljYWwgc29ydGluZyBwcm9ibGVtLiAgW2J1aWxkL2luY2x1ZGVfb3JkZXJdIFs0XScpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5oJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJiYXIuaCJcbicKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlIDxhc3NlcnQu
aD5cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotCi0g
ICAgZGVmIHRlc3Rfd2Via2l0X2FwaV90ZXN0X2V4Y2x1ZGVkKHNlbGYpOgotICAgICAgICBzZWxm
LmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnV2ViS2l0VG9vbHMvV2ViS2l0QVBJVGVzdC9U
ZXN0LmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1
ZGUgImZvby5oIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JycpCi0KLSAgICBkZWYgdGVzdF93ZWJraXRfYXBpX3Rlc3RfZXhjbHVkZWQoc2VsZik6Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdXZWJLaXQvcXQvUUdWTGF1bmNo
ZXIvbWFpbi5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
I2luY2x1ZGUgImZvby5oIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJycpCi0KLSAgICBkZWYgdGVzdF9jaGVja19saW5lX2JyZWFrX2FmdGVyX293bl9oZWFk
ZXIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28u
Y3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRl
ICJjb25maWcuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyNpbmNsdWRlICJmb28uaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyNpbmNsdWRlICJiYXIuaCJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdZb3Ugc2hvdWxkIGFkZCBhIGJsYW5rIGxpbmUgYWZ0ZXIgaW1wbGVtZW50
YXRpb24gZmlsZVwncyBvd24gaGVhZGVyLiAgW2J1aWxkL2luY2x1ZGVfb3JkZXJdIFs0XScpCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5jcHAnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImNvbmZpZy5o
IlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUg
ImZvby5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiYmFy
LmgiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKLQot
ICAgIGRlZiB0ZXN0X2NoZWNrX3ByZXByb2Nlc3Nvcl9pbl9pbmNsdWRlX3NlY3Rpb24oc2VsZik6
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uY3BwJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJjb25maWcu
aCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRl
ICJmb28uaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xu
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2lmZGVmIEJBWlxu
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImJh
ei5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2Vsc2Vc
bicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJm
b29iYXIuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNl
bmRpZiJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNs
dWRlICJiYXIuaCJcbicsICMgTm8gZmxhZyBiZWNhdXNlIHByZXZpb3VzIGlzIGluIHByZXByb2Nl
c3NvciBzZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcn
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uY3BwJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJjb25m
aWcuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNs
dWRlICJmb28uaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2lmZGVmIEJB
WlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUg
ImJhei5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2Vu
ZGlmIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1
ZGUgImJhci5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
I2luY2x1ZGUgImEuaCJcbicsICMgU2hvdWxkIHN0aWxsIGZsYWcgdGhpcy4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FscGhhYmV0aWNhbCBzb3J0aW5nIHByb2Js
ZW0uICBbYnVpbGQvaW5jbHVkZV9vcmRlcl0gWzRdJykKLQotICAgICAgICBzZWxmLmFzc2VydF9s
YW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiY29uZmlnLmgiXG4nCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiZm9vLmgiXG4nCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJyNpZmRlZiBCQVpcbicKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJiYXouaCJcbicKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJiYXIuaCJcbicgI1Nob3VsZCBz
dGlsbCBmbGFnIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyNlbmRpZiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdB
bHBoYWJldGljYWwgc29ydGluZyBwcm9ibGVtLiAgW2J1aWxkL2luY2x1ZGVfb3JkZXJdIFs0XScp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5jcHAnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImNvbmZp
Zy5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1
ZGUgImZvby5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaWZkZWYgQkFa
XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAi
YmF6LmgiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZW5k
aWYiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaWZkZWYg
Rk9PQkFSXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5j
bHVkZSAiZm9vYmFyLmgiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcjZW5kaWYiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcjaW5jbHVkZSAiYmFyLmgiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjaW5jbHVkZSAiYS5oIlxuJywgIyBTaG91bGQgc3RpbGwgZmxhZyB0aGlzLgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWxwaGFiZXRpY2FsIHNvcnRp
bmcgcHJvYmxlbS4gIFtidWlsZC9pbmNsdWRlX29yZGVyXSBbNF0nKQotCi0gICAgICAgICMgQ2hl
Y2sgdGhhdCBhZnRlciBhbiBhbHJlYWR5IGluY2x1ZGVkIGVycm9yLCB0aGUgc29ydGluZyBydWxl
cyBzdGlsbCB3b3JrLgotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygn
Zm9vLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5j
bHVkZSAiY29uZmlnLmgiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcjaW5jbHVkZSAiZm9vLmgiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyNpbmNsdWRlICJmb28uaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyNpbmNsdWRlICJnLmgiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnImZvby5oIiBhbHJlYWR5IGluY2x1ZGVkIGF0IGZvby5jcHA6MSAgW2J1aWxk
L2luY2x1ZGVdIFs0XScpCi0KLSAgICBkZWYgdGVzdF9jaGVja193dGZfaW5jbHVkZXMoc2VsZik6
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uY3BwJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJjb25maWcu
aCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRl
ICJmb28uaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xu
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5j
cHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUg
ImNvbmZpZy5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
I2luY2x1ZGUgImZvby5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5j
bHVkZSAid3RmL0Fzc2VydGlvbnMuaCJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd3dGYgaW5jbHVkZXMgc2hvdWxkIGJlIDx3dGYvZmlsZS5oPiBpbnN0ZWFk
IG9mICJ3dGYvZmlsZS5oIi4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcgIFtidWlsZC9pbmNsdWRlXSBbNF0nKQotCi0gICAgZGVmIHRlc3RfY2xhc3NpZnlfaW5j
bHVkZShzZWxmKToKLSAgICAgICAgY2xhc3NpZnlfaW5jbHVkZSA9IGNwcF9zdHlsZS5fY2xhc3Np
ZnlfaW5jbHVkZQotICAgICAgICBpbmNsdWRlX3N0YXRlID0gY3BwX3N0eWxlLl9JbmNsdWRlU3Rh
dGUoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNwcF9zdHlsZS5fQ09ORklHX0hFQURFUiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2lmeV9pbmNsdWRlKCdmb28vZm9vLmNwcCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uZmlnLmgnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UsIGluY2x1ZGVf
c3RhdGUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNwcF9zdHlsZS5fUFJJTUFSWV9IRUFE
RVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZSgnZm9vL2ludGVy
bmFsL2Zvby5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2Zvby9wdWJsaWMvZm9vLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRmFsc2UsIGluY2x1ZGVfc3RhdGUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNw
cF9zdHlsZS5fUFJJTUFSWV9IRUFERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Np
ZnlfaW5jbHVkZSgnZm9vL2ludGVybmFsL2Zvby5jcHAnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2Zvby9vdGhlci9wdWJsaWMvZm9vLmgnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UsIGluY2x1ZGVfc3RhdGUpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNwcF9zdHlsZS5fT1RIRVJfSEVBREVSLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsYXNzaWZ5X2luY2x1ZGUoJ2Zvby9pbnRlcm5hbC9mb28uY3Bw
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28vb3RoZXIv
cHVibGljL2Zvb3AuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGYWxzZSwgaW5jbHVkZV9zdGF0ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3BwX3N0
eWxlLl9PVEhFUl9IRUFERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5j
bHVkZSgnZm9vL2Zvby5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUcnVlLCBpbmNsdWRlX3N0YXRlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcHBfc3R5
bGUuX1BSSU1BUllfSEVBREVSLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZ5X2lu
Y2x1ZGUoJ2Zvb0N1c3RvbS5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2Zvby5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZhbHNlLCBpbmNsdWRlX3N0YXRlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcHBf
c3R5bGUuX1BSSU1BUllfSEVBREVSLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZ5
X2luY2x1ZGUoJ1ByZWZpeEZvb0N1c3RvbS5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0Zvby5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZhbHNlLCBpbmNsdWRlX3N0YXRlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjcHBfc3R5bGUuX01PQ19IRUFERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2xh
c3NpZnlfaW5jbHVkZSgnZm9vLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnZm9vLm1vYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGYWxzZSwgaW5jbHVkZV9zdGF0ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y3BwX3N0eWxlLl9NT0NfSEVBREVSLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZ5
X2luY2x1ZGUoJ2Zvby5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ21vY19mb28uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZhbHNlLCBpbmNsdWRlX3N0YXRlKSkKLSAgICAgICAgIyBUcmlja3kgZXhhbXBsZSB3
aGVyZSBib3RoIGluY2x1ZGVzIG1pZ2h0IGJlIGNsYXNzaWZpZWQgYXMgcHJpbWFyeS4KLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ1Njcm9sbGJhclRoZW1lV2luY2Uu
Y3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRl
ICJjb25maWcuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZVdpbmNlLmgiXG4nCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyNpbmNsdWRlICJTY3JvbGxiYXIuaCJcbicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFn
ZV9ydWxlc19jaGVjaygnU2Nyb2xsYmFyVGhlbWVXaW5jZS5jcHAnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImNvbmZpZy5oIlxuJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgIlNjcm9sbGJhci5o
IlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiU2Nyb2xsYmFy
VGhlbWVXaW5jZS5oIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0ZvdW5kIGhlYWRlciB0aGlzIGZpbGUgaW1wbGVtZW50cyBhZnRlciBhIGhlYWRlciB0aGlz
IGZpbGUgaW1wbGVtZW50cy4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcgU2hvdWxkIGJlOiBjb25maWcuaCwgcHJpbWFyeSBoZWFkZXIsIGJsYW5rIGxpbmUsIGFu
ZCB0aGVuIGFscGhhYmV0aWNhbGx5IHNvcnRlZC4nCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcgIFtidWlsZC9pbmNsdWRlX29yZGVyXSBbNF0nKQotICAgICAgICBz
ZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnUmVzb3VyY2VIYW5kbGVXaW4uY3BwJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJjb25m
aWcuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVXaW4uaCJcbicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRlc3RfdHJ5X2Ryb3BfY29tbW9u
X3N1ZmZpeGVzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28vZm9vJywgY3Bw
X3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvby1pbmwuaCcpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdmb28vYmFyL2ZvbycsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
Y3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Jhci9mb29faW5sLmgnKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vL2ZvbycsIGNwcF9zdHlsZS5fZHJvcF9jb21tb25f
c3VmZml4ZXMoJ2Zvby9mb28uY3BwJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Zvby9m
b29fdW51c3VhbGludGVybmFsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUu
X2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vZm9vX3VudXN1YWxpbnRlcm5hbC5oJykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0
eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygnX3Rlc3QuY3BwJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ3Rlc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5fZHJv
cF9jb21tb25fc3VmZml4ZXMoJ3Rlc3QuY3BwJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J3Rlc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5fZHJvcF9jb21tb25f
c3VmZml4ZXMoJ3Rlc3QuY3BwJykpCi0KLWNsYXNzIENoZWNrRm9yRnVuY3Rpb25MZW5ndGhzVGVz
dChDcHBTdHlsZVRlc3RCYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgICMgUmVk
dWNpbmcgdGhlc2UgdGhyZXNob2xkcyBmb3IgdGhlIHRlc3RzIHNwZWVkcyB1cCB0ZXN0cyBzaWdu
aWZpY2FudGx5LgotICAgICAgICBzZWxmLm9sZF9ub3JtYWxfdHJpZ2dlciA9IGNwcF9zdHlsZS5f
RnVuY3Rpb25TdGF0ZS5fTk9STUFMX1RSSUdHRVIKLSAgICAgICAgc2VsZi5vbGRfdGVzdF90cmln
Z2VyID0gY3BwX3N0eWxlLl9GdW5jdGlvblN0YXRlLl9URVNUX1RSSUdHRVIKLQotICAgICAgICBj
cHBfc3R5bGUuX0Z1bmN0aW9uU3RhdGUuX05PUk1BTF9UUklHR0VSID0gMTAKLSAgICAgICAgY3Bw
X3N0eWxlLl9GdW5jdGlvblN0YXRlLl9URVNUX1RSSUdHRVIgPSAyNQotCi0gICAgZGVmIHRlYXJE
b3duKHNlbGYpOgotICAgICAgICBjcHBfc3R5bGUuX0Z1bmN0aW9uU3RhdGUuX05PUk1BTF9UUklH
R0VSID0gc2VsZi5vbGRfbm9ybWFsX3RyaWdnZXIKLSAgICAgICAgY3BwX3N0eWxlLl9GdW5jdGlv
blN0YXRlLl9URVNUX1RSSUdHRVIgPSBzZWxmLm9sZF90ZXN0X3RyaWdnZXIKLQotICAgICMgRklY
TUU6IEVsaW1pbmF0ZSB0aGUgbmVlZCBmb3IgdGhpcyBmdW5jdGlvbi4KLSAgICBkZWYgc2V0X3Zl
cmJvc2l0eShzZWxmLCB2ZXJib3NpdHkpOgotICAgICAgICAiIiJTZXQgbmV3IHRlc3QgdmVyYm9z
aXR5IGFuZCByZXR1cm4gb2xkIHRlc3QgdmVyYm9zaXR5LiIiIgotICAgICAgICBvbGRfdmVyYm9z
aXR5ID0gc2VsZi52ZXJib3NpdHkKLSAgICAgICAgc2VsZi52ZXJib3NpdHkgPSB2ZXJib3NpdHkK
LSAgICAgICAgcmV0dXJuIG9sZF92ZXJib3NpdHkKLQotICAgIGRlZiBhc3NlcnRfZnVuY3Rpb25f
bGVuZ3Roc19jaGVjayhzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlKToKLSAgICAgICAgIiIi
Q2hlY2sgd2FybmluZ3MgZm9yIGxvbmcgZnVuY3Rpb24gYm9kaWVzIGFyZSBhcyBleHBlY3RlZC4K
LQotICAgICAgICBBcmdzOgotICAgICAgICAgIGNvZGU6IEMrKyBzb3VyY2UgY29kZSBleHBlY3Rl
ZCB0byBnZW5lcmF0ZSBhIHdhcm5pbmcgbWVzc2FnZS4KLSAgICAgICAgICBleHBlY3RlZF9tZXNz
YWdlOiBNZXNzYWdlIGV4cGVjdGVkIHRvIGJlIGdlbmVyYXRlZCBieSB0aGUgQysrIGNvZGUuCi0g
ICAgICAgICIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZF9tZXNzYWdlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBlcmZvcm1fZnVuY3Rpb25fbGVuZ3Roc19j
aGVjayhjb2RlKSkKLQotICAgIGRlZiB0cmlnZ2VyX2xpbmVzKHNlbGYsIGVycm9yX2xldmVsKToK
LSAgICAgICAgIiIiUmV0dXJuIG51bWJlciBvZiBsaW5lcyBuZWVkZWQgdG8gdHJpZ2dlciBhIGZ1
bmN0aW9uIGxlbmd0aCB3YXJuaW5nLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZXJyb3Jf
bGV2ZWw6IC0tdiBzZXR0aW5nIGZvciBjcHBfc3R5bGUuCi0KLSAgICAgICAgUmV0dXJuczoKLSAg
ICAgICAgICBOdW1iZXIgb2YgbGluZXMgbmVlZGVkIHRvIHRyaWdnZXIgYSBmdW5jdGlvbiBsZW5n
dGggd2FybmluZy4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBjcHBfc3R5bGUuX0Z1bmN0
aW9uU3RhdGUuX05PUk1BTF9UUklHR0VSICogMiAqKiBlcnJvcl9sZXZlbAotCi0gICAgZGVmIHRy
aWdnZXJfdGVzdF9saW5lcyhzZWxmLCBlcnJvcl9sZXZlbCk6Ci0gICAgICAgICIiIlJldHVybiBu
dW1iZXIgb2YgbGluZXMgbmVlZGVkIHRvIHRyaWdnZXIgYSB0ZXN0IGZ1bmN0aW9uIGxlbmd0aCB3
YXJuaW5nLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZXJyb3JfbGV2ZWw6IC0tdiBzZXR0
aW5nIGZvciBjcHBfc3R5bGUuCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICBOdW1iZXIg
b2YgbGluZXMgbmVlZGVkIHRvIHRyaWdnZXIgYSB0ZXN0IGZ1bmN0aW9uIGxlbmd0aCB3YXJuaW5n
LgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIGNwcF9zdHlsZS5fRnVuY3Rpb25TdGF0ZS5f
VEVTVF9UUklHR0VSICogMiAqKiBlcnJvcl9sZXZlbAotCi0gICAgZGVmIGFzc2VydF9mdW5jdGlv
bl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbihzZWxmLCBsaW5lcywgZXJyb3JfbGV2ZWwpOgotICAg
ICAgICAiIiJHZW5lcmF0ZSBsb25nIGZ1bmN0aW9uIGRlZmluaXRpb24gYW5kIGNoZWNrIHdhcm5p
bmdzIGFyZSBhcyBleHBlY3RlZC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIGxpbmVzOiBO
dW1iZXIgb2YgbGluZXMgdG8gZ2VuZXJhdGUuCi0gICAgICAgICAgZXJyb3JfbGV2ZWw6ICAtLXYg
c2V0dGluZyBmb3IgY3BwX3N0eWxlLgotICAgICAgICAiIiIKLSAgICAgICAgdHJpZ2dlcl9sZXZl
bCA9IHNlbGYudHJpZ2dlcl9saW5lcyhzZWxmLnZlcmJvc2l0eSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAgICd2b2lkIHRlc3QoaW50IHgp
JyArIHNlbGYuZnVuY3Rpb25fYm9keShsaW5lcyksCi0gICAgICAgICAgICAoJ1NtYWxsIGFuZCBm
b2N1c2VkIGZ1bmN0aW9ucyBhcmUgcHJlZmVycmVkOiAnCi0gICAgICAgICAgICAgJ3Rlc3QoKSBo
YXMgJWQgbm9uLWNvbW1lbnQgbGluZXMgJwotICAgICAgICAgICAgICcoZXJyb3IgdHJpZ2dlcmVk
IGJ5IGV4Y2VlZGluZyAlZCBsaW5lcykuJwotICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9m
bl9zaXplXSBbJWRdJwotICAgICAgICAgICAgICUgKGxpbmVzLCB0cmlnZ2VyX2xldmVsLCBlcnJv
cl9sZXZlbCkpKQotCi0gICAgZGVmIGFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5p
dGlvbl9vayhzZWxmLCBsaW5lcyk6Ci0gICAgICAgICIiIkdlbmVyYXRlIHNob3J0ZXIgZnVuY3Rp
b24gZGVmaW5pdGlvbiBhbmQgY2hlY2sgbm8gd2FybmluZyBpcyBwcm9kdWNlZC4KLQotICAgICAg
ICBBcmdzOgotICAgICAgICAgIGxpbmVzOiBOdW1iZXIgb2YgbGluZXMgdG8gZ2VuZXJhdGUuCi0g
ICAgICAgICIiIgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAot
ICAgICAgICAgICAgJ3ZvaWQgdGVzdChpbnQgeCknICsgc2VsZi5mdW5jdGlvbl9ib2R5KGxpbmVz
KSwKLSAgICAgICAgICAgICcnKQotCi0gICAgZGVmIGFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hl
Y2tfYXRfZXJyb3JfbGV2ZWwoc2VsZiwgZXJyb3JfbGV2ZWwpOgotICAgICAgICAiIiJHZW5lcmF0
ZSBhbmQgY2hlY2sgZnVuY3Rpb24gYXQgdGhlIHRyaWdnZXIgbGV2ZWwgZm9yIC0tdiBzZXR0aW5n
LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZXJyb3JfbGV2ZWw6IC0tdiBzZXR0aW5nIGZv
ciBjcHBfc3R5bGUuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9s
ZW5ndGhfY2hlY2tfZGVmaW5pdGlvbihzZWxmLnRyaWdnZXJfbGluZXMoZXJyb3JfbGV2ZWwpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJv
cl9sZXZlbCkKLQotICAgIGRlZiBhc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2JlbG93X2Vy
cm9yX2xldmVsKHNlbGYsIGVycm9yX2xldmVsKToKLSAgICAgICAgIiIiR2VuZXJhdGUgYW5kIGNo
ZWNrIGZ1bmN0aW9uIGp1c3QgYmVsb3cgdGhlIHRyaWdnZXIgbGV2ZWwgZm9yIC0tdiBzZXR0aW5n
LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZXJyb3JfbGV2ZWw6IC0tdiBzZXR0aW5nIGZv
ciBjcHBfc3R5bGUuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9s
ZW5ndGhfY2hlY2tfZGVmaW5pdGlvbihzZWxmLnRyaWdnZXJfbGluZXMoZXJyb3JfbGV2ZWwpIC0g
MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXJyb3JfbGV2ZWwgLSAxKQotCi0gICAgZGVmIGFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tf
YWJvdmVfZXJyb3JfbGV2ZWwoc2VsZiwgZXJyb3JfbGV2ZWwpOgotICAgICAgICAiIiJHZW5lcmF0
ZSBhbmQgY2hlY2sgZnVuY3Rpb24ganVzdCBhYm92ZSB0aGUgdHJpZ2dlciBsZXZlbCBmb3IgLS12
IHNldHRpbmcuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBlcnJvcl9sZXZlbDogLS12IHNl
dHRpbmcgZm9yIGNwcF9zdHlsZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1
bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uKHNlbGYudHJpZ2dlcl9saW5lcyhlcnJvcl9s
ZXZlbCkgKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlcnJvcl9sZXZlbCkKLQotICAgIGRlZiBmdW5jdGlvbl9ib2R5KHNlbGYsIG51bWJl
cl9vZl9saW5lcyk6Ci0gICAgICAgIHJldHVybiAnIHtcbicgKyAnICAgIHRoaXNfaXNfanVzdF9h
X3Rlc3QoKTtcbicgKiBudW1iZXJfb2ZfbGluZXMgKyAnfScKLQotICAgIGRlZiBmdW5jdGlvbl9i
b2R5X3dpdGhfYmxhbmtfbGluZXMoc2VsZiwgbnVtYmVyX29mX2xpbmVzKToKLSAgICAgICAgcmV0
dXJuICcge1xuJyArICcgICAgdGhpc19pc19qdXN0X2FfdGVzdCgpO1xuXG4nICogbnVtYmVyX29m
X2xpbmVzICsgJ30nCi0KLSAgICBkZWYgZnVuY3Rpb25fYm9keV93aXRoX25vX2xpbnRzKHNlbGYs
IG51bWJlcl9vZl9saW5lcyk6Ci0gICAgICAgIHJldHVybiAnIHtcbicgKyAnICAgIHRoaXNfaXNf
anVzdF9hX3Rlc3QoKTsgIC8vIE5PTElOVFxuJyAqIG51bWJlcl9vZl9saW5lcyArICd9JwotCi0g
ICAgIyBUZXN0IGxpbmUgbGVuZ3RoIGNoZWNrcy4KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5n
dGhfY2hlY2tfZGVjbGFyYXRpb24oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9u
X2xlbmd0aHNfY2hlY2soCi0gICAgICAgICAgICAndm9pZCB0ZXN0KCk7JywgICMgTm90IGEgZnVu
Y3Rpb24gZGVmaW5pdGlvbgotICAgICAgICAgICAgJycpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlv
bl9sZW5ndGhfY2hlY2tfZGVjbGFyYXRpb25fd2l0aF9ibG9ja19mb2xsb3dpbmcoc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCi0gICAgICAgICAgICAo
J3ZvaWQgdGVzdCgpO1xuJwotICAgICAgICAgICAgICsgc2VsZi5mdW5jdGlvbl9ib2R5KDY2KSks
ICAjIE5vdCBhIGZ1bmN0aW9uIGRlZmluaXRpb24KLSAgICAgICAgICAgICcnKQotCi0gICAgZGVm
IHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2NsYXNzX2RlZmluaXRpb24oc2VsZik6Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soICAjIE5vdCBhIGZ1bmN0aW9u
IGRlZmluaXRpb24KLSAgICAgICAgICAgICdjbGFzcyBUZXN0JyArIHNlbGYuZnVuY3Rpb25fYm9k
eSg2NikgKyAnOycsCi0gICAgICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xl
bmd0aF9jaGVja190cml2aWFsKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9s
ZW5ndGhzX2NoZWNrKAotICAgICAgICAgICAgJ3ZvaWQgdGVzdCgpIHt9JywgICMgTm90IGNvdW50
ZWQKLSAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNr
X2VtcHR5KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNr
KAotICAgICAgICAgICAgJ3ZvaWQgdGVzdCgpIHtcbn0nLAotICAgICAgICAgICAgJycpCi0KLSAg
ICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9iZWxvd19zZXZlcml0
eTAoc2VsZik6Ci0gICAgICAgIG9sZF92ZXJib3NpdHkgPSBzZWxmLnNldF92ZXJib3NpdHkoMCkK
LSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fb2so
c2VsZi50cmlnZ2VyX2xpbmVzKDApIC0gMSkKLSAgICAgICAgc2VsZi5zZXRfdmVyYm9zaXR5KG9s
ZF92ZXJib3NpdHkpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5p
dGlvbl9hdF9zZXZlcml0eTAoc2VsZik6Ci0gICAgICAgIG9sZF92ZXJib3NpdHkgPSBzZWxmLnNl
dF92ZXJib3NpdHkoMCkKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNr
X2RlZmluaXRpb25fb2soc2VsZi50cmlnZ2VyX2xpbmVzKDApKQotICAgICAgICBzZWxmLnNldF92
ZXJib3NpdHkob2xkX3ZlcmJvc2l0eSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9j
aGVja19kZWZpbml0aW9uX2Fib3ZlX3NldmVyaXR5MChzZWxmKToKLSAgICAgICAgb2xkX3ZlcmJv
c2l0eSA9IHNlbGYuc2V0X3ZlcmJvc2l0eSgwKQotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlv
bl9sZW5ndGhfY2hlY2tfYWJvdmVfZXJyb3JfbGV2ZWwoMCkKLSAgICAgICAgc2VsZi5zZXRfdmVy
Ym9zaXR5KG9sZF92ZXJib3NpdHkpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hl
Y2tfZGVmaW5pdGlvbl9iZWxvd19zZXZlcml0eTF2MChzZWxmKToKLSAgICAgICAgb2xkX3ZlcmJv
c2l0eSA9IHNlbGYuc2V0X3ZlcmJvc2l0eSgwKQotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlv
bl9sZW5ndGhfY2hlY2tfYmVsb3dfZXJyb3JfbGV2ZWwoMSkKLSAgICAgICAgc2VsZi5zZXRfdmVy
Ym9zaXR5KG9sZF92ZXJib3NpdHkpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hl
Y2tfZGVmaW5pdGlvbl9hdF9zZXZlcml0eTF2MChzZWxmKToKLSAgICAgICAgb2xkX3ZlcmJvc2l0
eSA9IHNlbGYuc2V0X3ZlcmJvc2l0eSgwKQotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9s
ZW5ndGhfY2hlY2tfYXRfZXJyb3JfbGV2ZWwoMSkKLSAgICAgICAgc2VsZi5zZXRfdmVyYm9zaXR5
KG9sZF92ZXJib3NpdHkpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVm
aW5pdGlvbl9iZWxvd19zZXZlcml0eTEoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0
aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX29rKHNlbGYudHJpZ2dlcl9saW5lcygxKSAtIDEp
Ci0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9hdF9zZXZl
cml0eTEoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19k
ZWZpbml0aW9uX29rKHNlbGYudHJpZ2dlcl9saW5lcygxKSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0
aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2Fib3ZlX3NldmVyaXR5MShzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2Fib3ZlX2Vycm9yX2xldmVsKDEp
Ci0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0
eTFfcGx1c19ibGFua3Moc2VsZik6Ci0gICAgICAgIGVycm9yX2xldmVsID0gMQotICAgICAgICBl
cnJvcl9saW5lcyA9IHNlbGYudHJpZ2dlcl9saW5lcyhlcnJvcl9sZXZlbCkgKyAxCi0gICAgICAg
IHRyaWdnZXJfbGV2ZWwgPSBzZWxmLnRyaWdnZXJfbGluZXMoc2VsZi52ZXJib3NpdHkpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCi0gICAgICAgICAgICAndm9p
ZCB0ZXN0X2JsYW5rcyhpbnQgeCknICsgc2VsZi5mdW5jdGlvbl9ib2R5KGVycm9yX2xpbmVzKSwK
LSAgICAgICAgICAgICgnU21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6
ICcKLSAgICAgICAgICAgICAndGVzdF9ibGFua3MoKSBoYXMgJWQgbm9uLWNvbW1lbnQgbGluZXMg
JwotICAgICAgICAgICAgICcoZXJyb3IgdHJpZ2dlcmVkIGJ5IGV4Y2VlZGluZyAlZCBsaW5lcyku
JwotICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9mbl9zaXplXSBbJWRdJykKLSAgICAgICAg
ICAgICUgKGVycm9yX2xpbmVzLCB0cmlnZ2VyX2xldmVsLCBlcnJvcl9sZXZlbCkpCi0KLSAgICBk
ZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfY29tcGxleF9kZWZpbml0aW9uX3NldmVyaXR5
MShzZWxmKToKLSAgICAgICAgZXJyb3JfbGV2ZWwgPSAxCi0gICAgICAgIGVycm9yX2xpbmVzID0g
c2VsZi50cmlnZ2VyX2xpbmVzKGVycm9yX2xldmVsKSArIDEKLSAgICAgICAgdHJpZ2dlcl9sZXZl
bCA9IHNlbGYudHJpZ2dlcl9saW5lcyhzZWxmLnZlcmJvc2l0eSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAgICgnbXlfbmFtZXNwYWNlOjpt
eV9vdGhlcl9uYW1lc3BhY2U6Ok15VmVyeUxvbmdUeXBlTmFtZSpcbicKLSAgICAgICAgICAgICAn
bXlfbmFtZXNwYWNlOjpteV9vdGhlcl9uYW1lc3BhY2U6Ok15RnVuY3Rpb24oaW50IGFyZzEsIGNo
YXIqIGFyZzIpJwotICAgICAgICAgICAgICsgc2VsZi5mdW5jdGlvbl9ib2R5KGVycm9yX2xpbmVz
KSksCi0gICAgICAgICAgICAoJ1NtYWxsIGFuZCBmb2N1c2VkIGZ1bmN0aW9ucyBhcmUgcHJlZmVy
cmVkOiAnCi0gICAgICAgICAgICAgJ215X25hbWVzcGFjZTo6bXlfb3RoZXJfbmFtZXNwYWNlOjpN
eUZ1bmN0aW9uKCknCi0gICAgICAgICAgICAgJyBoYXMgJWQgbm9uLWNvbW1lbnQgbGluZXMgJwot
ICAgICAgICAgICAgICcoZXJyb3IgdHJpZ2dlcmVkIGJ5IGV4Y2VlZGluZyAlZCBsaW5lcykuJwot
ICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9mbl9zaXplXSBbJWRdJykKLSAgICAgICAgICAg
ICUgKGVycm9yX2xpbmVzLCB0cmlnZ2VyX2xldmVsLCBlcnJvcl9sZXZlbCkpCi0KLSAgICBkZWYg
dGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0eTFfZm9yX3Rlc3Qo
c2VsZik6Ci0gICAgICAgIGVycm9yX2xldmVsID0gMQotICAgICAgICBlcnJvcl9saW5lcyA9IHNl
bGYudHJpZ2dlcl90ZXN0X2xpbmVzKGVycm9yX2xldmVsKSArIDEKLSAgICAgICAgdHJpZ2dlcl9s
ZXZlbCA9IHNlbGYudHJpZ2dlcl90ZXN0X2xpbmVzKHNlbGYudmVyYm9zaXR5KQotICAgICAgICBz
ZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAotICAgICAgICAgICAgJ1RFU1RfRihU
ZXN0LCBNdXRhdG9yKScgKyBzZWxmLmZ1bmN0aW9uX2JvZHkoZXJyb3JfbGluZXMpLAotICAgICAg
ICAgICAgKCdTbWFsbCBhbmQgZm9jdXNlZCBmdW5jdGlvbnMgYXJlIHByZWZlcnJlZDogJwotICAg
ICAgICAgICAgICdURVNUX0YoVGVzdCwgTXV0YXRvcikgaGFzICVkIG5vbi1jb21tZW50IGxpbmVz
ICcKLSAgICAgICAgICAgICAnKGVycm9yIHRyaWdnZXJlZCBieSBleGNlZWRpbmcgJWQgbGluZXMp
LicKLSAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvZm5fc2l6ZV0gWyVkXScpCi0gICAgICAg
ICAgICAlIChlcnJvcl9saW5lcywgdHJpZ2dlcl9sZXZlbCwgZXJyb3JfbGV2ZWwpKQotCi0gICAg
ZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fc2V2ZXJpdHkxX2Zvcl9z
cGxpdF9saW5lX3Rlc3Qoc2VsZik6Ci0gICAgICAgIGVycm9yX2xldmVsID0gMQotICAgICAgICBl
cnJvcl9saW5lcyA9IHNlbGYudHJpZ2dlcl90ZXN0X2xpbmVzKGVycm9yX2xldmVsKSArIDEKLSAg
ICAgICAgdHJpZ2dlcl9sZXZlbCA9IHNlbGYudHJpZ2dlcl90ZXN0X2xpbmVzKHNlbGYudmVyYm9z
aXR5KQotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAotICAgICAg
ICAgICAgKCdURVNUX0YoR29vZ2xlVXBkYXRlUmVjb3ZlcnlSZWdpc3RyeVByb3RlY3RlZFRlc3Qs
XG4nCi0gICAgICAgICAgICAgJyAgICBGaXhHb29nbGVVcGRhdGVfQWxsVmFsdWVzX01hY2hpbmVB
cHApJyAgIyBub3RlOiA0IHNwYWNlcwotICAgICAgICAgICAgICsgc2VsZi5mdW5jdGlvbl9ib2R5
KGVycm9yX2xpbmVzKSksCi0gICAgICAgICAgICAoJ1NtYWxsIGFuZCBmb2N1c2VkIGZ1bmN0aW9u
cyBhcmUgcHJlZmVycmVkOiAnCi0gICAgICAgICAgICAgJ1RFU1RfRihHb29nbGVVcGRhdGVSZWNv
dmVyeVJlZ2lzdHJ5UHJvdGVjdGVkVGVzdCwgJyAgIyAxIHNwYWNlCi0gICAgICAgICAgICAgJ0Zp
eEdvb2dsZVVwZGF0ZV9BbGxWYWx1ZXNfTWFjaGluZUFwcCkgaGFzICVkIG5vbi1jb21tZW50IGxp
bmVzICcKLSAgICAgICAgICAgICAnKGVycm9yIHRyaWdnZXJlZCBieSBleGNlZWRpbmcgJWQgbGlu
ZXMpLicKLSAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvZm5fc2l6ZV0gWyVkXScpCi0gICAg
ICAgICAgICAlIChlcnJvcl9saW5lcysxLCB0cmlnZ2VyX2xldmVsLCBlcnJvcl9sZXZlbCkpCi0K
LSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0eTFf
Zm9yX2JhZF90ZXN0X2RvZXNudF9icmVhayhzZWxmKToKLSAgICAgICAgZXJyb3JfbGV2ZWwgPSAx
Ci0gICAgICAgIGVycm9yX2xpbmVzID0gc2VsZi50cmlnZ2VyX3Rlc3RfbGluZXMoZXJyb3JfbGV2
ZWwpICsgMQotICAgICAgICB0cmlnZ2VyX2xldmVsID0gc2VsZi50cmlnZ2VyX3Rlc3RfbGluZXMo
c2VsZi52ZXJib3NpdHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hl
Y2soCi0gICAgICAgICAgICAoJ1RFU1RfRignCi0gICAgICAgICAgICAgKyBzZWxmLmZ1bmN0aW9u
X2JvZHkoZXJyb3JfbGluZXMpKSwKLSAgICAgICAgICAgICgnU21hbGwgYW5kIGZvY3VzZWQgZnVu
Y3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcKLSAgICAgICAgICAgICAnVEVTVF9GIGhhcyAlZCBub24t
Y29tbWVudCBsaW5lcyAnCi0gICAgICAgICAgICAgJyhlcnJvciB0cmlnZ2VyZWQgYnkgZXhjZWVk
aW5nICVkIGxpbmVzKS4nCi0gICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2ZuX3NpemVdIFsl
ZF0nKQotICAgICAgICAgICAgJSAoZXJyb3JfbGluZXMsIHRyaWdnZXJfbGV2ZWwsIGVycm9yX2xl
dmVsKSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX3Nl
dmVyaXR5MV93aXRoX2VtYmVkZGVkX25vX2xpbnRzKHNlbGYpOgotICAgICAgICBlcnJvcl9sZXZl
bCA9IDEKLSAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxmLnRyaWdnZXJfbGluZXMoZXJyb3JfbGV2
ZWwpICsgMQotICAgICAgICB0cmlnZ2VyX2xldmVsID0gc2VsZi50cmlnZ2VyX2xpbmVzKHNlbGYu
dmVyYm9zaXR5KQotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAot
ICAgICAgICAgICAgJ3ZvaWQgdGVzdChpbnQgeCknICsgc2VsZi5mdW5jdGlvbl9ib2R5X3dpdGhf
bm9fbGludHMoZXJyb3JfbGluZXMpLAotICAgICAgICAgICAgKCdTbWFsbCBhbmQgZm9jdXNlZCBm
dW5jdGlvbnMgYXJlIHByZWZlcnJlZDogJwotICAgICAgICAgICAgICd0ZXN0KCkgaGFzICVkIG5v
bi1jb21tZW50IGxpbmVzICcKLSAgICAgICAgICAgICAnKGVycm9yIHRyaWdnZXJlZCBieSBleGNl
ZWRpbmcgJWQgbGluZXMpLicKLSAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvZm5fc2l6ZV0g
WyVkXScpCi0gICAgICAgICAgICAlIChlcnJvcl9saW5lcywgdHJpZ2dlcl9sZXZlbCwgZXJyb3Jf
bGV2ZWwpKQotCi0gICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25f
c2V2ZXJpdHkxX3dpdGhfbm9fbGludChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rp
b25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAgICgndm9pZCB0ZXN0KGludCB4KScgKyBzZWxm
LmZ1bmN0aW9uX2JvZHkoc2VsZi50cmlnZ2VyX2xpbmVzKDEpKQotICAgICAgICAgICAgICsgJyAg
Ly8gTk9MSU5UIC0tIGxvbmcgZnVuY3Rpb24nKSwKLSAgICAgICAgICAgICcnKQotCi0gICAgZGVm
IHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYmVsb3dfc2V2ZXJpdHkyKHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYmVsb3dfZXJy
b3JfbGV2ZWwoMikKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0
aW9uX3NldmVyaXR5MihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Ro
X2NoZWNrX2F0X2Vycm9yX2xldmVsKDIpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhf
Y2hlY2tfZGVmaW5pdGlvbl9hYm92ZV9zZXZlcml0eTIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbCgyKQotCi0gICAgZGVm
IHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYmVsb3dfc2V2ZXJpdHkzKHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYmVsb3dfZXJy
b3JfbGV2ZWwoMykKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0
aW9uX3NldmVyaXR5MyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Ro
X2NoZWNrX2F0X2Vycm9yX2xldmVsKDMpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhf
Y2hlY2tfZGVmaW5pdGlvbl9hYm92ZV9zZXZlcml0eTMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbCgzKQotCi0gICAgZGVm
IHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYmVsb3dfc2V2ZXJpdHk0KHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYmVsb3dfZXJy
b3JfbGV2ZWwoNCkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0
aW9uX3NldmVyaXR5NChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Ro
X2NoZWNrX2F0X2Vycm9yX2xldmVsKDQpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhf
Y2hlY2tfZGVmaW5pdGlvbl9hYm92ZV9zZXZlcml0eTQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbCg0KQotCi0gICAgZGVm
IHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYmVsb3dfc2V2ZXJpdHk1KHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYmVsb3dfZXJy
b3JfbGV2ZWwoNSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0
aW9uX2F0X3NldmVyaXR5NShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVu
Z3RoX2NoZWNrX2F0X2Vycm9yX2xldmVsKDUpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5n
dGhfY2hlY2tfZGVmaW5pdGlvbl9hYm92ZV9zZXZlcml0eTUoc2VsZik6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbCg1KQotCi0gICAg
ZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25faHVnZV9saW5lcyhzZWxm
KToKLSAgICAgICAgIyA1IGlzIHRoZSBsaW1pdAotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlv
bl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbihzZWxmLnRyaWdnZXJfbGluZXMoMTApLCA1KQotCi0g
ICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX25vdF9kZXRlcm1pbmFibGUoc2VsZik6Ci0gICAg
ICAgICMgTWFjcm8gaW52b2NhdGlvbiB3aXRob3V0IHRlcm1pbmF0aW5nIHNlbWljb2xvbi4KLSAg
ICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAgICdN
QUNSTyhhcmcpJywKLSAgICAgICAgICAgICcnKQotCi0gICAgICAgICMgTWFjcm8gd2l0aCB1bmRl
cnNjb3JlcwotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAotICAg
ICAgICAgICAgJ01BQ1JPX1dJVEhfVU5ERVJTQ09SRVMoYXJnMSwgYXJnMiwgYXJnMyknLAotICAg
ICAgICAgICAgJycpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVj
aygKLSAgICAgICAgICAgICdOb25NYWNybyhhcmcpJywKLSAgICAgICAgICAgICdMaW50IGZhaWxl
ZCB0byBmaW5kIHN0YXJ0IG9mIGZ1bmN0aW9uIGJvZHkuJwotICAgICAgICAgICAgJyAgW3JlYWRh
YmlsaXR5L2ZuX3NpemVdIFs1XScpCi0KLQotY2xhc3MgTm9Ob25WaXJ0dWFsRGVzdHJ1Y3RvcnNU
ZXN0KENwcFN0eWxlVGVzdEJhc2UpOgotCi0gICAgZGVmIHRlc3Rfbm9fZXJyb3Ioc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2NsYXNz
IEZvbyB7Ci0gICAgICAgICAgICAgICAgICAgdmlydHVhbCB+Rm9vKCk7Ci0gICAgICAgICAgICAg
ICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAg
ICAgICAnJykKLQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAg
ICAgICAnJydjbGFzcyBGb28gewotICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgaW5saW5lIH5G
b28oKTsKLSAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7Ci0gICAgICAgICAg
ICAgICB9OycnJywKLSAgICAgICAgICAgICcnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRp
X2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAg
ICAgaW5saW5lIHZpcnR1YWwgfkZvbygpOwotICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgdm9p
ZCBmb28oKTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJycpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnY2xhc3MgRm9v
OjpHb28gewotICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgfkdvbygpOwotICAgICAgICAgICAg
ICAgICAgIHZpcnR1YWwgdm9pZCBnb28oKTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAgICAg
ICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAg
ICAgICdjbGFzcyBGb28geyB2b2lkIGZvbygpOyB9OycsCi0gICAgICAgICAgICAnTW9yZSB0aGFu
IG9uZSBjb21tYW5kIG9uIHRoZSBzYW1lIGxpbmUgIFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XScp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycn
Y2xhc3MgUXVhbGlmaWVkOjpHb28gOiBwdWJsaWMgRm9vIHsKLSAgICAgICAgICAgICAgICAgICB2
aXJ0dWFsIHZvaWQgZ29vKCk7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICcn
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICMg
TGluZS1lbmRpbmcgOgotICAgICAgICAgICAgJycnY2xhc3MgR29vIDoKLSAgICAgICAgICAgICAg
IHB1YmxpYyBGb28gewotICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZ29vKCk7Ci0g
ICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICdMYWJlbHMgc2hvdWxkIGFsd2F5cyBi
ZSBpbmRlbnRlZCBhdCBsZWFzdCBvbmUgc3BhY2UuICBJZiB0aGlzIGlzIGEgJwotICAgICAgICAg
ICAgJ21lbWJlci1pbml0aWFsaXplciBsaXN0IGluIGEgY29uc3RydWN0b3IsIHRoZSBjb2xvbiBz
aG91bGQgYmUgb24gdGhlICcKLSAgICAgICAgICAgICdsaW5lIGFmdGVyIHRoZSBkZWZpbml0aW9u
IGhlYWRlci4gIFt3aGl0ZXNwYWNlL2xhYmVsc10gWzRdJykKLQotICAgIGRlZiB0ZXN0X25vX2Rl
c3RydWN0b3Jfd2hlbl92aXJ0dWFsX25lZWRlZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRf
bXVsdGlfbGluZV9saW50X3JlKAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAg
ICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAg
ICAgICAgICAgICdUaGUgY2xhc3MgRm9vIHByb2JhYmx5IG5lZWRzIGEgdmlydHVhbCBkZXN0cnVj
dG9yJykKLQotICAgIGRlZiB0ZXN0X2Rlc3RydWN0b3Jfbm9uX3ZpcnR1YWxfd2hlbl92aXJ0dWFs
X25lZWRlZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50X3JlKAot
ICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgICB+Rm9vKCk7Ci0g
ICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwotICAgICAgICAgICAgICAgfTsn
JycsCi0gICAgICAgICAgICAnVGhlIGNsYXNzIEZvbyBwcm9iYWJseSBuZWVkcyBhIHZpcnR1YWwg
ZGVzdHJ1Y3RvcicpCi0KLSAgICBkZWYgdGVzdF9ub193YXJuX3doZW5fZGVyaXZlZChzZWxmKToK
LSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnY2xh
c3MgRm9vIDogcHVibGljIEdvbyB7Ci0gICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZv
bygpOwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnJykKLQotICAgIGRlZiB0
ZXN0X2ludGVybmFsX2JyYWNlcyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50X3JlKAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAg
ICBlbnVtIEdvbyB7Ci0gICAgICAgICAgICAgICAgICAgICAgIEdPTwotICAgICAgICAgICAgICAg
ICAgIH07Ci0gICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwotICAgICAgICAg
ICAgICAgfTsnJycsCi0gICAgICAgICAgICAnVGhlIGNsYXNzIEZvbyBwcm9iYWJseSBuZWVkcyBh
IHZpcnR1YWwgZGVzdHJ1Y3RvcicpCi0KLSAgICBkZWYgdGVzdF9pbm5lcl9jbGFzc19uZWVkc192
aXJ0dWFsX2Rlc3RydWN0b3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludF9yZSgKLSAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAgICAg
Y2xhc3MgR29vIHsKLSAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGdvbygpOwot
ICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAg
ICdUaGUgY2xhc3MgR29vIHByb2JhYmx5IG5lZWRzIGEgdmlydHVhbCBkZXN0cnVjdG9yJykKLQot
ICAgIGRlZiB0ZXN0X291dGVyX2NsYXNzX25lZWRzX3ZpcnR1YWxfZGVzdHJ1Y3RvcihzZWxmKToK
LSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50X3JlKAotICAgICAgICAgICAgJycn
Y2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgICBjbGFzcyBHb28gewotICAgICAgICAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwotICAgICAg
ICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnVGhlIGNsYXNzIEZvbyBwcm9iYWJseSBuZWVk
cyBhIHZpcnR1YWwgZGVzdHJ1Y3RvcicpCi0KLSAgICBkZWYgdGVzdF9xdWFsaWZpZWRfY2xhc3Nf
bmVlZHNfdmlydHVhbF9kZXN0cnVjdG9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnRfcmUoCi0gICAgICAgICAgICAnJydjbGFzcyBRdWFsaWZpZWQ6OkZvbyB7Ci0g
ICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwotICAgICAgICAgICAgICAgfTsn
JycsCi0gICAgICAgICAgICAnVGhlIGNsYXNzIFF1YWxpZmllZDo6Rm9vIHByb2JhYmx5IG5lZWRz
IGEgdmlydHVhbCBkZXN0cnVjdG9yJykKLQotICAgIGRlZiB0ZXN0X211bHRpX2xpbmVfZGVjbGFy
YXRpb25fbm9fZXJyb3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dF9yZSgKLSAgICAgICAgICAgICcnJ2NsYXNzIEZvbwotICAgICAgICAgICAgICAgICAgIDogcHVi
bGljIEdvbyB7Ci0gICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwotICAgICAg
ICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0X211bHRpX2xp
bmVfZGVjbGFyYXRpb25fd2l0aF9lcnJvcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVs
dGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vCi0gICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwotICAgICAgICAgICAgICAg
fTsnJycsCi0gICAgICAgICAgICBbJ1RoaXMgeyBzaG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUg
cHJldmlvdXMgbGluZSAgJwotICAgICAgICAgICAgICdbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScs
Ci0gICAgICAgICAgICAgJ1RoZSBjbGFzcyBGb28gcHJvYmFibHkgbmVlZHMgYSB2aXJ0dWFsIGRl
c3RydWN0b3IgZHVlIHRvIGhhdmluZyAnCi0gICAgICAgICAgICAgJ3ZpcnR1YWwgbWV0aG9kKHMp
LCBvbmUgZGVjbGFyZWQgYXQgbGluZSAyLiAgW3J1bnRpbWUvdmlydHVhbF0gWzRdJ10pCi0KLQot
Y2xhc3MgV2ViS2l0U3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgotCi0gICAgIyBmb3IgaHR0
cDovL3dlYmtpdC5vcmcvY29kaW5nL2NvZGluZy1zdHlsZS5odG1sCi0gICAgZGVmIHRlc3RfaW5k
ZW50YXRpb24oc2VsZik6Ci0gICAgICAgICMgMS4gVXNlIHNwYWNlcywgbm90IHRhYnMuIFRhYnMg
c2hvdWxkIG9ubHkgYXBwZWFyIGluIGZpbGVzIHRoYXQKLSAgICAgICAgIyAgICByZXF1aXJlIHRo
ZW0gZm9yIHNlbWFudGljIG1lYW5pbmcsIGxpa2UgTWFrZWZpbGVzLgotICAgICAgICBzZWxmLmFz
c2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnY2xhc3MgRm9vIHtcbicKLSAgICAg
ICAgICAgICcgICAgaW50IGdvbztcbicKLSAgICAgICAgICAgICd9OycsCi0gICAgICAgICAgICAn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2Ns
YXNzIEZvbyB7XG4nCi0gICAgICAgICAgICAnXHRpbnQgZ29vO1xuJwotICAgICAgICAgICAgJ307
JywKLSAgICAgICAgICAgICdUYWIgZm91bmQ7IGJldHRlciB0byB1c2Ugc3BhY2VzICBbd2hpdGVz
cGFjZS90YWJdIFsxXScpCi0KLSAgICAgICAgIyAyLiBUaGUgaW5kZW50IHNpemUgaXMgNCBzcGFj
ZXMuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdj
bGFzcyBGb28ge1xuJwotICAgICAgICAgICAgJyAgICBpbnQgZ29vO1xuJwotICAgICAgICAgICAg
J307JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xp
bnQoCi0gICAgICAgICAgICAnY2xhc3MgRm9vIHtcbicKLSAgICAgICAgICAgICcgICBpbnQgZ29v
O1xuJwotICAgICAgICAgICAgJ307JywKLSAgICAgICAgICAgICdXZWlyZCBudW1iZXIgb2Ygc3Bh
Y2VzIGF0IGxpbmUtc3RhcnQuICBBcmUgeW91IHVzaW5nIGEgNC1zcGFjZSBpbmRlbnQ/ICBbd2hp
dGVzcGFjZS9pbmRlbnRdIFszXScpCi0gICAgICAgICMgRklYTUU6IE5vIHRlc3RzIGZvciA4LXNw
YWNlcy4KLQotICAgICAgICAjIDMuIEluIGEgaGVhZGVyLCBjb2RlIGluc2lkZSBhIG5hbWVzcGFj
ZSBzaG91bGQgbm90IGJlIGluZGVudGVkLgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCi0gICAgICAgICAgICAnbmFtZXNwYWNlIFdlYkNvcmUge1xuXG4nCi0gICAgICAgICAg
ICAnY2xhc3MgRG9jdW1lbnQge1xuJwotICAgICAgICAgICAgJyAgICBpbnQgbXlWYXJpYWJsZTtc
bicKLSAgICAgICAgICAgICd9O1xuJwotICAgICAgICAgICAgJ30nLAotICAgICAgICAgICAgJycs
Ci0gICAgICAgICAgICAnZm9vLmgnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xp
bnQoCi0gICAgICAgICAgICAnbmFtZXNwYWNlIE91dGVyTmFtZXNwYWNlIHtcbicKLSAgICAgICAg
ICAgICcgICAgbmFtZXNwYWNlIElubmVyTmFtZXNwYWNlIHtcbicKLSAgICAgICAgICAgICcgICAg
Y2xhc3MgRG9jdW1lbnQge1xuJwotICAgICAgICAgICAgJ307XG4nCi0gICAgICAgICAgICAnfTtc
bicKLSAgICAgICAgICAgICd9JywKLSAgICAgICAgICAgICdDb2RlIGluc2lkZSBhIG5hbWVzcGFj
ZSBzaG91bGQgbm90IGJlIGluZGVudGVkLiAgW3doaXRlc3BhY2UvaW5kZW50XSBbNF0nLAotICAg
ICAgICAgICAgJ2Zvby5oJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAot
ICAgICAgICAgICAgJ25hbWVzcGFjZSBPdXRlck5hbWVzcGFjZSB7XG4nCi0gICAgICAgICAgICAn
ICAgIGNsYXNzIERvY3VtZW50IHtcbicKLSAgICAgICAgICAgICcgICAgbmFtZXNwYWNlIElubmVy
TmFtZXNwYWNlIHtcbicKLSAgICAgICAgICAgICd9O1xuJwotICAgICAgICAgICAgJ307XG4nCi0g
ICAgICAgICAgICAnfScsCi0gICAgICAgICAgICAnQ29kZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hv
dWxkIG5vdCBiZSBpbmRlbnRlZC4gIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdJywKLSAgICAgICAg
ICAgICdmb28uaCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAg
ICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7XG4nCi0gICAgICAgICAgICAnI2lmIDBcbicKLSAg
ICAgICAgICAgICcgICAgY2xhc3MgRG9jdW1lbnQge1xuJwotICAgICAgICAgICAgJ307XG4nCi0g
ICAgICAgICAgICAnI2VuZGlmXG4nCi0gICAgICAgICAgICAnfScsCi0gICAgICAgICAgICAnQ29k
ZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4gIFt3aGl0ZXNwYWNl
L2luZGVudF0gWzRdJywKLSAgICAgICAgICAgICdmb28uaCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7XG4nCi0g
ICAgICAgICAgICAnY2xhc3MgRG9jdW1lbnQge1xuJwotICAgICAgICAgICAgJ307XG4nCi0gICAg
ICAgICAgICAnfScsCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgICdmb28uaCcpCi0KLSAg
ICAgICAgIyA0LiBJbiBhbiBpbXBsZW1lbnRhdGlvbiBmaWxlIChmaWxlcyB3aXRoIHRoZSBleHRl
bnNpb24gLmNwcCwgLmMKLSAgICAgICAgIyAgICBvciAubW0pLCBjb2RlIGluc2lkZSBhIG5hbWVz
cGFjZSBzaG91bGQgbm90IGJlIGluZGVudGVkLgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnQoCi0gICAgICAgICAgICAnbmFtZXNwYWNlIFdlYkNvcmUge1xuXG4nCi0gICAgICAg
ICAgICAnRG9jdW1lbnQ6OkZvbygpXG4nCi0gICAgICAgICAgICAnICAgIDogZm9vKGJhcilcbicK
LSAgICAgICAgICAgICcgICAgLCBib28oZmFyKVxuJwotICAgICAgICAgICAgJ3tcbicKLSAgICAg
ICAgICAgICcgICAgc3R1ZmYoKTtcbicKLSAgICAgICAgICAgICd9JywKLSAgICAgICAgICAgICcn
LAotICAgICAgICAgICAgJ2Zvby5jcHAnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCi0gICAgICAgICAgICAnbmFtZXNwYWNlIE91dGVyTmFtZXNwYWNlIHtcbicKLSAgICAg
ICAgICAgICduYW1lc3BhY2UgSW5uZXJOYW1lc3BhY2Uge1xuJwotICAgICAgICAgICAgJ0RvY3Vt
ZW50OjpGb28oKSB7IH1cbicKLSAgICAgICAgICAgICcgICAgdm9pZCogcDtcbicKLSAgICAgICAg
ICAgICd9XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAgICdDb2RlIGluc2lkZSBh
IG5hbWVzcGFjZSBzaG91bGQgbm90IGJlIGluZGVudGVkLiAgW3doaXRlc3BhY2UvaW5kZW50XSBb
NF0nLAotICAgICAgICAgICAgJ2Zvby5jcHAnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnQoCi0gICAgICAgICAgICAnbmFtZXNwYWNlIE91dGVyTmFtZXNwYWNlIHtcbicKLSAg
ICAgICAgICAgICduYW1lc3BhY2UgSW5uZXJOYW1lc3BhY2Uge1xuJwotICAgICAgICAgICAgJ0Rv
Y3VtZW50OjpGb28oKSB7IH1cbicKLSAgICAgICAgICAgICd9XG4nCi0gICAgICAgICAgICAnICAg
IHZvaWQqIHA7XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAgICdDb2RlIGluc2lk
ZSBhIG5hbWVzcGFjZSBzaG91bGQgbm90IGJlIGluZGVudGVkLiAgW3doaXRlc3BhY2UvaW5kZW50
XSBbNF0nLAotICAgICAgICAgICAgJ2Zvby5jcHAnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnbmFtZXNwYWNlIFdlYkNvcmUge1xuXG4nCi0gICAg
ICAgICAgICAnICAgIGNvbnN0IGNoYXIqIGZvbyA9ICJzdGFydDo7IlxuJwotICAgICAgICAgICAg
JyAgICAgICAgImRmc2ZzZnMiO1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAn
Q29kZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4gIFt3aGl0ZXNw
YWNlL2luZGVudF0gWzRdJywKLSAgICAgICAgICAgICdmb28uY3BwJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ25hbWVzcGFjZSBXZWJDb3JlIHtc
blxuJwotICAgICAgICAgICAgJ2NvbnN0IGNoYXIqIGZvbyh2b2lkKiBhID0gIjsiLCAvLyA7XG4n
Ci0gICAgICAgICAgICAnICAgIHZvaWQqIGIpO1xuJwotICAgICAgICAgICAgJyAgICB2b2lkKiBw
O1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAnQ29kZSBpbnNpZGUgYSBuYW1l
c3BhY2Ugc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4gIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdJywK
LSAgICAgICAgICAgICdmb28uY3BwJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50KAotICAgICAgICAgICAgJ25hbWVzcGFjZSBXZWJDb3JlIHtcblxuJwotICAgICAgICAgICAg
J2NvbnN0IGNoYXIqIGZvb1tdID0ge1xuJwotICAgICAgICAgICAgJyAgICAidm9pZCogYik7Iiwg
Ly8gO1xuJwotICAgICAgICAgICAgJyAgICAiYXNmZGYiLFxuJwotICAgICAgICAgICAgJyAgICB9
XG4nCi0gICAgICAgICAgICAnICAgIHZvaWQqIHA7XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAg
ICAgICAgICAgICdDb2RlIGluc2lkZSBhIG5hbWVzcGFjZSBzaG91bGQgbm90IGJlIGluZGVudGVk
LiAgW3doaXRlc3BhY2UvaW5kZW50XSBbNF0nLAotICAgICAgICAgICAgJ2Zvby5jcHAnKQotICAg
ICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnbmFtZXNwYWNl
IFdlYkNvcmUge1xuXG4nCi0gICAgICAgICAgICAnY29uc3QgY2hhciogZm9vW10gPSB7XG4nCi0g
ICAgICAgICAgICAnICAgICJ2b2lkKiBiKTsiLCAvLyB9XG4nCi0gICAgICAgICAgICAnICAgICJh
c2ZkZiIsXG4nCi0gICAgICAgICAgICAnICAgIH1cbicKLSAgICAgICAgICAgICd9XG4nLAotICAg
ICAgICAgICAgJycsCi0gICAgICAgICAgICAnZm9vLmNwcCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcgICAgbmFtZXNwYWNlIFdlYkNvcmUge1xu
XG4nCi0gICAgICAgICAgICAnICAgIHZvaWQgRG9jdW1lbnQ6OkZvbygpXG4nCi0gICAgICAgICAg
ICAnICAgIHtcbicKLSAgICAgICAgICAgICdzdGFydDogLy8gaW5maW5pdGUgbG9vcHMgYXJlIGZ1
biFcbicKLSAgICAgICAgICAgICcgICAgICAgIGdvdG8gc3RhcnQ7XG4nCi0gICAgICAgICAgICAn
ICAgIH0nLAotICAgICAgICAgICAgJ25hbWVzcGFjZSBzaG91bGQgbmV2ZXIgYmUgaW5kZW50ZWQu
ICBbd2hpdGVzcGFjZS9pbmRlbnRdIFs0XScsCi0gICAgICAgICAgICAnZm9vLmNwcCcpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICduYW1lc3BhY2Ug
V2ViQ29yZSB7XG4nCi0gICAgICAgICAgICAnICAgIERvY3VtZW50OjpGb28oKSB7IH1cbicKLSAg
ICAgICAgICAgICd9JywKLSAgICAgICAgICAgICdDb2RlIGluc2lkZSBhIG5hbWVzcGFjZSBzaG91
bGQgbm90IGJlIGluZGVudGVkLicKLSAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2luZGVudF0g
WzRdJywKLSAgICAgICAgICAgICdmb28uY3BwJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAotICAgICAgICAgICAgJ25hbWVzcGFjZSBXZWJDb3JlIHtcbicKLSAgICAgICAg
ICAgICcjZGVmaW5lIGFiYyh4KSB4OyBcXFxuJwotICAgICAgICAgICAgJyAgICB4XG4nCi0gICAg
ICAgICAgICAnfScsCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgICdmb28uY3BwJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ25hbWVzcGFj
ZSBXZWJDb3JlIHtcbicKLSAgICAgICAgICAgICcjZGVmaW5lIGFiYyh4KSB4OyBcXFxuJwotICAg
ICAgICAgICAgJyAgICB4XG4nCi0gICAgICAgICAgICAnICAgIHZvaWQqIHg7JwotICAgICAgICAg
ICAgJ30nLAotICAgICAgICAgICAgJ0NvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBub3Qg
YmUgaW5kZW50ZWQuICBbd2hpdGVzcGFjZS9pbmRlbnRdIFs0XScsCi0gICAgICAgICAgICAnZm9v
LmNwcCcpCi0KLSAgICAgICAgIyA1LiBBIGNhc2UgbGFiZWwgc2hvdWxkIGxpbmUgdXAgd2l0aCBp
dHMgc3dpdGNoIHN0YXRlbWVudC4gVGhlCi0gICAgICAgICMgICAgY2FzZSBzdGF0ZW1lbnQgaXMg
aW5kZW50ZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAg
ICAgICcgICAgc3dpdGNoIChjb25kaXRpb24pIHtcbicKLSAgICAgICAgICAgICcgICAgY2FzZSBm
b29Db25kaXRpb246XG4nCi0gICAgICAgICAgICAnICAgIGNhc2UgYmFyQ29uZGl0aW9uOlxuJwot
ICAgICAgICAgICAgJyAgICAgICAgaSsrO1xuJwotICAgICAgICAgICAgJyAgICAgICAgYnJlYWs7
XG4nCi0gICAgICAgICAgICAnICAgIGRlZmF1bHQ6XG4nCi0gICAgICAgICAgICAnICAgICAgICBp
LS07XG4nCi0gICAgICAgICAgICAnICAgIH1cbicsCi0gICAgICAgICAgICAnJykKLSAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJyAgICBzd2l0Y2ggKGNv
bmRpdGlvbikge1xuJwotICAgICAgICAgICAgJyAgICBjYXNlIGZvb0NvbmRpdGlvbjpcbicKLSAg
ICAgICAgICAgICcgICAgICAgIHN3aXRjaCAob3RoZXJDb25kaXRpb24pIHtcbicKLSAgICAgICAg
ICAgICcgICAgICAgIGRlZmF1bHQ6XG4nCi0gICAgICAgICAgICAnICAgICAgICAgICAgcmV0dXJu
O1xuJwotICAgICAgICAgICAgJyAgICAgICAgfVxuJwotICAgICAgICAgICAgJyAgICBkZWZhdWx0
OlxuJwotICAgICAgICAgICAgJyAgICAgICAgaS0tO1xuJwotICAgICAgICAgICAgJyAgICB9XG4n
LAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
LSAgICAgICAgICAgICcgICAgc3dpdGNoIChjb25kaXRpb24pIHtcbicKLSAgICAgICAgICAgICcg
ICAgY2FzZSBmb29Db25kaXRpb246IGJyZWFrO1xuJwotICAgICAgICAgICAgJyAgICBkZWZhdWx0
OiByZXR1cm47XG4nCi0gICAgICAgICAgICAnICAgIH1cbicsCi0gICAgICAgICAgICAnJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJyAgICBzd2l0
Y2ggKGNvbmRpdGlvbikge1xuJwotICAgICAgICAgICAgJyAgICAgICAgY2FzZSBmb29Db25kaXRp
b246XG4nCi0gICAgICAgICAgICAnICAgICAgICBjYXNlIGJhckNvbmRpdGlvbjpcbicKLSAgICAg
ICAgICAgICcgICAgICAgICAgICBpKys7XG4nCi0gICAgICAgICAgICAnICAgICAgICAgICAgYnJl
YWs7XG4nCi0gICAgICAgICAgICAnICAgICAgICBkZWZhdWx0OlxuJwotICAgICAgICAgICAgJyAg
ICAgICAgICAgIGktLTtcbicKLSAgICAgICAgICAgICcgICAgfVxuJywKLSAgICAgICAgICAgICdB
IGNhc2UgbGFiZWwgc2hvdWxkIG5vdCBiZSBpbmRlbnRlZCwgYnV0IGxpbmUgdXAgd2l0aCBpdHMg
c3dpdGNoIHN0YXRlbWVudC4nCi0gICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9pbmRlbnRdIFs0
XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcg
ICAgc3dpdGNoIChjb25kaXRpb24pIHtcbicKLSAgICAgICAgICAgICcgICAgICAgIGNhc2UgZm9v
Q29uZGl0aW9uOlxuJwotICAgICAgICAgICAgJyAgICAgICAgICAgIGJyZWFrO1xuJwotICAgICAg
ICAgICAgJyAgICBkZWZhdWx0OlxuJwotICAgICAgICAgICAgJyAgICAgICAgICAgIGktLTtcbicK
LSAgICAgICAgICAgICcgICAgfVxuJywKLSAgICAgICAgICAgICdBIGNhc2UgbGFiZWwgc2hvdWxk
IG5vdCBiZSBpbmRlbnRlZCwgYnV0IGxpbmUgdXAgd2l0aCBpdHMgc3dpdGNoIHN0YXRlbWVudC4n
Ci0gICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9pbmRlbnRdIFs0XScpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcgICAgc3dpdGNoIChjb25kaXRp
b24pIHtcbicKLSAgICAgICAgICAgICcgICAgY2FzZSBmb29Db25kaXRpb246XG4nCi0gICAgICAg
ICAgICAnICAgIGNhc2UgYmFyQ29uZGl0aW9uOlxuJwotICAgICAgICAgICAgJyAgICAgICAgc3dp
dGNoIChvdGhlckNvbmRpdGlvbikge1xuJwotICAgICAgICAgICAgJyAgICAgICAgICAgIGRlZmF1
bHQ6XG4nCi0gICAgICAgICAgICAnICAgICAgICAgICAgcmV0dXJuO1xuJwotICAgICAgICAgICAg
JyAgICAgICAgfVxuJwotICAgICAgICAgICAgJyAgICBkZWZhdWx0OlxuJwotICAgICAgICAgICAg
JyAgICAgICAgaS0tO1xuJwotICAgICAgICAgICAgJyAgICB9XG4nLAotICAgICAgICAgICAgJ0Eg
Y2FzZSBsYWJlbCBzaG91bGQgbm90IGJlIGluZGVudGVkLCBidXQgbGluZSB1cCB3aXRoIGl0cyBz
d2l0Y2ggc3RhdGVtZW50LicKLSAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRd
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJyAg
ICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuJwotICAgICAgICAgICAgJyAgICBjYXNlIGZvb0NvbmRp
dGlvbjpcbicKLSAgICAgICAgICAgICcgICAgY2FzZSBiYXJDb25kaXRpb246XG4nCi0gICAgICAg
ICAgICAnICAgIGkrKztcbicKLSAgICAgICAgICAgICcgICAgYnJlYWs7XG5cbicKLSAgICAgICAg
ICAgICcgICAgZGVmYXVsdDpcbicKLSAgICAgICAgICAgICcgICAgaS0tO1xuJwotICAgICAgICAg
ICAgJyAgICB9XG4nLAotICAgICAgICAgICAgJ05vbi1sYWJlbCBjb2RlIGluc2lkZSBzd2l0Y2gg
c3RhdGVtZW50cyBzaG91bGQgYmUgaW5kZW50ZWQuJwotICAgICAgICAgICAgJyAgW3doaXRlc3Bh
Y2UvaW5kZW50XSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0g
ICAgICAgICAgICAnICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7XG4nCi0gICAgICAgICAgICAnICAg
IGNhc2UgZm9vQ29uZGl0aW9uOlxuJwotICAgICAgICAgICAgJyAgICBjYXNlIGJhckNvbmRpdGlv
bjpcbicKLSAgICAgICAgICAgICcgICAgICAgIHN3aXRjaCAob3RoZXJDb25kaXRpb24pIHtcbicK
LSAgICAgICAgICAgICcgICAgICAgIGRlZmF1bHQ6XG4nCi0gICAgICAgICAgICAnICAgICAgICBy
ZXR1cm47XG4nCi0gICAgICAgICAgICAnICAgICAgICB9XG4nCi0gICAgICAgICAgICAnICAgIGRl
ZmF1bHQ6XG4nCi0gICAgICAgICAgICAnICAgICAgICBpLS07XG4nCi0gICAgICAgICAgICAnICAg
IH1cbicsCi0gICAgICAgICAgICAnTm9uLWxhYmVsIGNvZGUgaW5zaWRlIHN3aXRjaCBzdGF0ZW1l
bnRzIHNob3VsZCBiZSBpbmRlbnRlZC4nCi0gICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9pbmRl
bnRdIFs0XScpCi0KLSAgICAgICAgIyA2LiBCb29sZWFuIGV4cHJlc3Npb25zIGF0IHRoZSBzYW1l
IG5lc3RpbmcgbGV2ZWwgdGhhdCBzcGFuCi0gICAgICAgICMgICBtdWx0aXBsZSBsaW5lcyBzaG91
bGQgaGF2ZSB0aGVpciBvcGVyYXRvcnMgb24gdGhlIGxlZnQgc2lkZSBvZgotICAgICAgICAjICAg
dGhlIGxpbmUgaW5zdGVhZCBvZiB0aGUgcmlnaHQgc2lkZS4KLSAgICAgICAgc2VsZi5hc3NlcnRf
bXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJyAgICByZXR1cm4gYXR0ci0+bmFtZSgpID09
IHNyY0F0dHJcbicKLSAgICAgICAgICAgICcgICAgICAgIHx8IGF0dHItPm5hbWUoKSA9PSBsb3dz
cmNBdHRyO1xuJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnQoCi0gICAgICAgICAgICAnICAgIHJldHVybiBhdHRyLT5uYW1lKCkgPT0gc3JjQXR0
ciB8fFxuJwotICAgICAgICAgICAgJyAgICAgICAgYXR0ci0+bmFtZSgpID09IGxvd3NyY0F0dHI7
XG4nLAotICAgICAgICAgICAgJ0Jvb2xlYW4gZXhwcmVzc2lvbnMgdGhhdCBzcGFuIG11bHRpcGxl
IGxpbmVzIHNob3VsZCBoYXZlIHRoZWlyICcKLSAgICAgICAgICAgICdvcGVyYXRvcnMgb24gdGhl
IGxlZnQgc2lkZSBvZiB0aGUgbGluZSBpbnN0ZWFkIG9mIHRoZSByaWdodCBzaWRlLicKLSAgICAg
ICAgICAgICcgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzRdJykKLQotICAgIGRlZiB0ZXN0X3Nw
YWNpbmcoc2VsZik6Ci0gICAgICAgICMgMS4gRG8gbm90IHBsYWNlIHNwYWNlcyBhcm91bmQgdW5h
cnkgb3BlcmF0b3JzLgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAg
ICAgICAgICAnaSsrOycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVs
dGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2kgKys7JywKLSAgICAgICAgICAgICdFeHRyYSBz
cGFjZSBmb3Igb3BlcmF0b3IgICsrOyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbNF0nKQotCi0g
ICAgICAgICMgMi4gRG8gcGxhY2Ugc3BhY2VzIGFyb3VuZCBiaW5hcnkgYW5kIHRlcm5hcnkgb3Bl
cmF0b3JzLgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAg
ICAneSA9IG0gKiB4ICsgYjsnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdmKGEsIGIpOycsCi0gICAgICAgICAgICAn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2Mg
PSBhIHwgYjsnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludCgKLSAgICAgICAgICAgICdyZXR1cm4gY29uZGl0aW9uID8gMSA6IDA7JywKLSAgICAg
ICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAg
ICAgICAneT1tKngrYjsnLAotICAgICAgICAgICAgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA9ICBb
d2hpdGVzcGFjZS9vcGVyYXRvcnNdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludCgKLSAgICAgICAgICAgICdmKGEsYik7JywKLSAgICAgICAgICAgICdNaXNzaW5nIHNw
YWNlIGFmdGVyICwgIFt3aGl0ZXNwYWNlL2NvbW1hXSBbM10nKQotICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnYyA9IGF8YjsnLAotICAgICAgICAgICAg
J01pc3Npbmcgc3BhY2VzIGFyb3VuZCB8ICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCi0g
ICAgICAgICMgRklYTUU6IFdlIGNhbm5vdCBjYXRjaCB0aGlzIGxpbnQgZXJyb3IuCi0gICAgICAg
ICMgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAjICAgICAncmV0dXJuIGNv
bmRpdGlvbiA/IDE6MDsnLAotICAgICAgICAjICAgICAnJykKLQotICAgICAgICAjIDMuIFBsYWNl
IHNwYWNlcyBiZXR3ZWVuIGNvbnRyb2wgc3RhdGVtZW50cyBhbmQgdGhlaXIgcGFyZW50aGVzZXMu
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcgICAg
aWYgKGNvbmRpdGlvbilcbicKLSAgICAgICAgICAgICcgICAgICAgIGRvSXQoKTtcbicsCi0gICAg
ICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAg
ICAgICAgJyAgICBpZihjb25kaXRpb24pXG4nCi0gICAgICAgICAgICAnICAgICAgICBkb0l0KCk7
XG4nLAotICAgICAgICAgICAgJ01pc3Npbmcgc3BhY2UgYmVmb3JlICggaW4gaWYoICBbd2hpdGVz
cGFjZS9wYXJlbnNdIFs1XScpCi0KLSAgICAgICAgIyA0LiBEbyBub3QgcGxhY2Ugc3BhY2VzIGJl
dHdlZW4gYSBmdW5jdGlvbiBhbmQgaXRzIHBhcmVudGhlc2VzLAotICAgICAgICAjICAgIG9yIGJl
dHdlZW4gYSBwYXJlbnRoZXNpcyBhbmQgaXRzIGNvbnRlbnQuCi0gICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdmKGEsIGIpOycsCi0gICAgICAgICAgICAn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2Yg
KGEsIGIpOycsCi0gICAgICAgICAgICAnRXh0cmEgc3BhY2UgYmVmb3JlICggaW4gZnVuY3Rpb24g
Y2FsbCAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnZiggYSwgYiApOycsCi0gICAgICAgICAgICBbJ0V4
dHJhIHNwYWNlIGFmdGVyICggaW4gZnVuY3Rpb24gY2FsbCAgW3doaXRlc3BhY2UvcGFyZW5zXSBb
NF0nLAotICAgICAgICAgICAgICdFeHRyYSBzcGFjZSBiZWZvcmUgKSAgW3doaXRlc3BhY2UvcGFy
ZW5zXSBbMl0nXSkKLQotICAgIGRlZiB0ZXN0X2xpbmVfYnJlYWtpbmcoc2VsZik6Ci0gICAgICAg
ICMgMS4gRWFjaCBzdGF0ZW1lbnQgc2hvdWxkIGdldCBpdHMgb3duIGxpbmUuCi0gICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcgICAgeCsrO1xuJwotICAg
ICAgICAgICAgJyAgICB5Kys7XG4nCi0gICAgICAgICAgICAnICAgIGlmIChjb25kaXRpb24pO1xu
JwotICAgICAgICAgICAgJyAgICAgICAgZG9JdCgpO1xuJywKLSAgICAgICAgICAgICcnKQotICAg
ICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnICAgIHgrKzsg
eSsrOycsCi0gICAgICAgICAgICAnTW9yZSB0aGFuIG9uZSBjb21tYW5kIG9uIHRoZSBzYW1lIGxp
bmUgIFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XScpCi0gICAgICAgICMgRklYTUU6IE1ha2UgdGhp
cyBmYWlsLgotICAgICAgICAjIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAg
IyAgICAgJyAgICBpZiAoY29uZGl0aW9uKSBkb0l0KCk7XG4nLAotICAgICAgICAjICAgICAnJykK
LQotICAgICAgICAjIDIuIEFuIGVsc2Ugc3RhdGVtZW50IHNob3VsZCBnbyBvbiB0aGUgc2FtZSBs
aW5lIGFzIGEgcHJlY2VkaW5nCi0gICAgICAgICMgICBjbG9zZSBicmFjZSBpZiBvbmUgaXMgcHJl
c2VudCwgZWxzZSBpdCBzaG91bGQgbGluZSB1cCB3aXRoIHRoZQotICAgICAgICAjICAgaWYgc3Rh
dGVtZW50LgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAg
ICAnaWYgKGNvbmRpdGlvbikge1xuJwotICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZygpO1xu
JwotICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZ0FnYWluKCk7XG4nCi0gICAgICAgICAgICAn
fSBlbHNlIHtcbicKLSAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmdFbHNlKCk7XG4nCi0gICAg
ICAgICAgICAnICAgIGRvU29tZXRoaW5nRWxzZUFnYWluKCk7XG4nCi0gICAgICAgICAgICAnfVxu
JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQo
Ci0gICAgICAgICAgICAnaWYgKGNvbmRpdGlvbilcbicKLSAgICAgICAgICAgICcgICAgZG9Tb21l
dGhpbmcoKTtcbicKLSAgICAgICAgICAgICdlbHNlXG4nCi0gICAgICAgICAgICAnICAgIGRvU29t
ZXRoaW5nRWxzZSgpO1xuJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaWYgKGNvbmRpdGlvbilcbicKLSAgICAgICAg
ICAgICcgICAgZG9Tb21ldGhpbmcoKTtcbicKLSAgICAgICAgICAgICdlbHNlIHtcbicKLSAgICAg
ICAgICAgICcgICAgZG9Tb21ldGhpbmdFbHNlKCk7XG4nCi0gICAgICAgICAgICAnICAgIGRvU29t
ZXRoaW5nRWxzZUFnYWluKCk7XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAgICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnI2Rl
ZmluZSBURVNUX0FTU0VSVChleHByZXNzaW9uKSBkbyB7IGlmICghKGV4cHJlc3Npb24pKSB7IFRl
c3RzQ29udHJvbGxlcjo6c2hhcmVkKCkudGVzdEZhaWxlZChfX0ZJTEVfXywgX19MSU5FX18sICNl
eHByZXNzaW9uKTsgcmV0dXJuOyB9IH0gd2hpbGUgKDApXG4nLAotICAgICAgICAgICAgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAoY29u
ZGl0aW9uKSB7XG4nCi0gICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nKCk7XG4nCi0gICAgICAg
ICAgICAnICAgIGRvU29tZXRoaW5nQWdhaW4oKTtcbicKLSAgICAgICAgICAgICd9XG4nCi0gICAg
ICAgICAgICAnZWxzZSB7XG4nCi0gICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nRWxzZSgpO1xu
JwotICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZ0Vsc2VBZ2FpbigpO1xuJwotICAgICAgICAg
ICAgJ31cbicsCi0gICAgICAgICAgICAnQW4gZWxzZSBzaG91bGQgYXBwZWFyIG9uIHRoZSBzYW1l
IGxpbmUgYXMgdGhlIHByZWNlZGluZyB9ICBbd2hpdGVzcGFjZS9uZXdsaW5lXSBbNF0nKQotICAg
ICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaWYgKGNvbmRp
dGlvbikgZG9Tb21ldGhpbmcoKTsgZWxzZSBkb1NvbWV0aGluZ0Vsc2UoKTtcbicsCi0gICAgICAg
ICAgICBbJ01vcmUgdGhhbiBvbmUgY29tbWFuZCBvbiB0aGUgc2FtZSBsaW5lICBbd2hpdGVzcGFj
ZS9uZXdsaW5lXSBbNF0nLAotICAgICAgICAgICAgICdFbHNlIGNsYXVzZSBzaG91bGQgbmV2ZXIg
YmUgb24gc2FtZSBsaW5lIGFzIGVsc2UgKHVzZSAyIGxpbmVzKSAgW3doaXRlc3BhY2UvbmV3bGlu
ZV0gWzRdJ10pCi0gICAgICAgICMgRklYTUU6IE1ha2UgdGhpcyBmYWlsLgotICAgICAgICAjIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgIyAgICAgJ2lmIChjb25kaXRpb24p
IGRvU29tZXRoaW5nKCk7IGVsc2Uge1xuJwotICAgICAgICAjICAgICAnICAgIGRvU29tZXRoaW5n
RWxzZSgpO1xuJwotICAgICAgICAjICAgICAnfVxuJywKLSAgICAgICAgIyAgICAgJycpCi0KLSAg
ICAgICAgIyAzLiBBbiBlbHNlIGlmIHN0YXRlbWVudCBzaG91bGQgYmUgd3JpdHRlbiBhcyBhbiBp
ZiBzdGF0ZW1lbnQKLSAgICAgICAgIyAgICB3aGVuIHRoZSBwcmlvciBpZiBjb25jbHVkZXMgd2l0
aCBhIHJldHVybiBzdGF0ZW1lbnQuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKLSAgICAgICAgICAgICdpZiAobW90aXZhdGVkKSB7XG4nCi0gICAgICAgICAgICAnICAgIGlm
IChsaXF1aWQpXG4nCi0gICAgICAgICAgICAnICAgICAgICByZXR1cm4gbW9uZXk7XG4nCi0gICAg
ICAgICAgICAnfSBlbHNlIGlmICh0aXJlZClcbicKLSAgICAgICAgICAgICcgICAgYnJlYWs7XG4n
LAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
LSAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKVxuJwotICAgICAgICAgICAgJyAgICBkb1NvbWV0
aGluZygpO1xuJwotICAgICAgICAgICAgJ2Vsc2UgaWYgKG90aGVyQ29uZGl0aW9uKVxuJwotICAg
ICAgICAgICAgJyAgICBkb1NvbWV0aGluZ0Vsc2UoKTtcbicsCi0gICAgICAgICAgICAnJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2lmIChjb25k
aXRpb24pXG4nCi0gICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nKCk7XG4nCi0gICAgICAgICAg
ICAnZWxzZVxuJwotICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZ0Vsc2UoKTtcbicsCi0gICAg
ICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAg
ICAgICAgJ2lmIChjb25kaXRpb24pXG4nCi0gICAgICAgICAgICAnICAgIHJldHVyblZhbHVlID0g
Zm9vO1xuJwotICAgICAgICAgICAgJ2Vsc2UgaWYgKG90aGVyQ29uZGl0aW9uKVxuJwotICAgICAg
ICAgICAgJyAgICByZXR1cm5WYWx1ZSA9IGJhcjtcbicsCi0gICAgICAgICAgICAnJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2lmIChjb25kaXRp
b24pXG4nCi0gICAgICAgICAgICAnICAgIHJldHVyblZhbHVlID0gZm9vO1xuJwotICAgICAgICAg
ICAgJ2Vsc2VcbicKLSAgICAgICAgICAgICcgICAgcmV0dXJuVmFsdWUgPSBiYXI7XG4nLAotICAg
ICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAg
ICAgICAgICdpZiAoY29uZGl0aW9uKVxuJwotICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZygp
O1xuJwotICAgICAgICAgICAgJ2Vsc2UgaWYgKGxpcXVpZClcbicKLSAgICAgICAgICAgICcgICAg
cmV0dXJuIG1vbmV5O1xuJwotICAgICAgICAgICAgJ2Vsc2UgaWYgKGJyb2tlKVxuJwotICAgICAg
ICAgICAgJyAgICByZXR1cm4gZmF2b3I7XG4nCi0gICAgICAgICAgICAnZWxzZVxuJwotICAgICAg
ICAgICAgJyAgICBzbGVlcCgyODgwMCk7XG4nLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAobGlxdWlkKSB7XG4n
Ci0gICAgICAgICAgICAnICAgIHByZXBhcmUoKTtcbicKLSAgICAgICAgICAgICcgICAgcmV0dXJu
IG1vbmV5O1xuJwotICAgICAgICAgICAgJ30gZWxzZSBpZiAoZ3JlZWR5KSB7XG4nCi0gICAgICAg
ICAgICAnICAgIGtlZXAoKTtcbicKLSAgICAgICAgICAgICcgICAgcmV0dXJuIG5vdGhpbmc7XG4n
Ci0gICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAgICdBbiBlbHNlIGlmIHN0YXRlbWVudCBz
aG91bGQgYmUgd3JpdHRlbiBhcyBhbiBpZiBzdGF0ZW1lbnQgd2hlbiB0aGUgJwotICAgICAgICAg
ICAgJ3ByaW9yICJpZiIgY29uY2x1ZGVzIHdpdGggYSByZXR1cm4sIGJyZWFrLCBjb250aW51ZSBv
ciBnb3RvIHN0YXRlbWVudC4nCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY29udHJvbF9m
bG93XSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAg
ICAgICAnICAgIGlmIChzdHVwaWQpIHtcbicKLSAgICAgICAgICAgICdpbmZpbml0ZUxvb3A6XG4n
Ci0gICAgICAgICAgICAnICAgICAgICBnb3RvIGluZmluaXRlTG9vcDtcbicKLSAgICAgICAgICAg
ICcgICAgfSBlbHNlIGlmIChldmlsKVxuJwotICAgICAgICAgICAgJyAgICAgICAgZ290byBoZWxs
O1xuJywKLSAgICAgICAgICAgICdBbiBlbHNlIGlmIHN0YXRlbWVudCBzaG91bGQgYmUgd3JpdHRl
biBhcyBhbiBpZiBzdGF0ZW1lbnQgd2hlbiB0aGUgJwotICAgICAgICAgICAgJ3ByaW9yICJpZiIg
Y29uY2x1ZGVzIHdpdGggYSByZXR1cm4sIGJyZWFrLCBjb250aW51ZSBvciBnb3RvIHN0YXRlbWVu
dC4nCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY29udHJvbF9mbG93XSBbNF0nKQotICAg
ICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaWYgKGxpcXVp
ZClcbicKLSAgICAgICAgICAgICd7XG4nCi0gICAgICAgICAgICAnICAgIHByZXBhcmUoKTtcbicK
LSAgICAgICAgICAgICcgICAgcmV0dXJuIG1vbmV5O1xuJwotICAgICAgICAgICAgJ31cbicKLSAg
ICAgICAgICAgICdlbHNlIGlmIChncmVlZHkpXG4nCi0gICAgICAgICAgICAnICAgIGtlZXAoKTtc
bicsCi0gICAgICAgICAgICBbJ1RoaXMgeyBzaG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUgcHJl
dmlvdXMgbGluZSAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nLAotICAgICAgICAgICAgJ0FuIGVs
c2Ugc2hvdWxkIGFwcGVhciBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBwcmVjZWRpbmcgfSAgW3do
aXRlc3BhY2UvbmV3bGluZV0gWzRdJywKLSAgICAgICAgICAgICdBbiBlbHNlIGlmIHN0YXRlbWVu
dCBzaG91bGQgYmUgd3JpdHRlbiBhcyBhbiBpZiBzdGF0ZW1lbnQgd2hlbiB0aGUgJwotICAgICAg
ICAgICAgJ3ByaW9yICJpZiIgY29uY2x1ZGVzIHdpdGggYSByZXR1cm4sIGJyZWFrLCBjb250aW51
ZSBvciBnb3RvIHN0YXRlbWVudC4nCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY29udHJv
bF9mbG93XSBbNF0nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAg
ICAgICAgICAgJ2lmIChnb25lKVxuJwotICAgICAgICAgICAgJyAgICByZXR1cm47XG4nCi0gICAg
ICAgICAgICAnZWxzZSBpZiAoaGVyZSlcbicKLSAgICAgICAgICAgICcgICAgZ28oKTtcbicsCi0g
ICAgICAgICAgICAnQW4gZWxzZSBpZiBzdGF0ZW1lbnQgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgYW4g
aWYgc3RhdGVtZW50IHdoZW4gdGhlICcKLSAgICAgICAgICAgICdwcmlvciAiaWYiIGNvbmNsdWRl
cyB3aXRoIGEgcmV0dXJuLCBicmVhaywgY29udGludWUgb3IgZ290byBzdGF0ZW1lbnQuJwotICAg
ICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NvbnRyb2xfZmxvd10gWzRdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2lmIChnb25lKVxuJwotICAg
ICAgICAgICAgJyAgICByZXR1cm47XG4nCi0gICAgICAgICAgICAnZWxzZVxuJwotICAgICAgICAg
ICAgJyAgICBnbygpO1xuJywKLSAgICAgICAgICAgICdBbiBlbHNlIHN0YXRlbWVudCBjYW4gYmUg
cmVtb3ZlZCB3aGVuIHRoZSBwcmlvciAiaWYiIGNvbmNsdWRlcyAnCi0gICAgICAgICAgICAnd2l0
aCBhIHJldHVybiwgYnJlYWssIGNvbnRpbnVlIG9yIGdvdG8gc3RhdGVtZW50LicKLSAgICAgICAg
ICAgICcgIFtyZWFkYWJpbGl0eS9jb250cm9sX2Zsb3ddIFs0XScpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAobW90aXZhdGVkKSB7XG4nCi0g
ICAgICAgICAgICAnICAgIHByZXBhcmUoKTtcbicKLSAgICAgICAgICAgICcgICAgY29udGludWU7
XG4nCi0gICAgICAgICAgICAnfSBlbHNlIHtcbicKLSAgICAgICAgICAgICcgICAgY2xlYW5VcCgp
O1xuJwotICAgICAgICAgICAgJyAgICBicmVhaztcbicKLSAgICAgICAgICAgICd9XG4nLAotICAg
ICAgICAgICAgJ0FuIGVsc2Ugc3RhdGVtZW50IGNhbiBiZSByZW1vdmVkIHdoZW4gdGhlIHByaW9y
ICJpZiIgY29uY2x1ZGVzICcKLSAgICAgICAgICAgICd3aXRoIGEgcmV0dXJuLCBicmVhaywgY29u
dGludWUgb3IgZ290byBzdGF0ZW1lbnQuJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2Nv
bnRyb2xfZmxvd10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAot
ICAgICAgICAgICAgJ2lmICh0aXJlZClcbicKLSAgICAgICAgICAgICcgICAgYnJlYWs7XG4nCi0g
ICAgICAgICAgICAnZWxzZSB7XG4nCi0gICAgICAgICAgICAnICAgIHByZXBhcmUoKTtcbicKLSAg
ICAgICAgICAgICcgICAgY29udGludWU7XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAgICAgICAg
ICAgICdBbiBlbHNlIHN0YXRlbWVudCBjYW4gYmUgcmVtb3ZlZCB3aGVuIHRoZSBwcmlvciAiaWYi
IGNvbmNsdWRlcyAnCi0gICAgICAgICAgICAnd2l0aCBhIHJldHVybiwgYnJlYWssIGNvbnRpbnVl
IG9yIGdvdG8gc3RhdGVtZW50LicKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jb250cm9s
X2Zsb3ddIFs0XScpCi0KLSAgICBkZWYgdGVzdF9icmFjZXMoc2VsZik6Ci0gICAgICAgICMgMS4g
RnVuY3Rpb24gZGVmaW5pdGlvbnM6IHBsYWNlIGVhY2ggYnJhY2Ugb24gaXRzIG93biBsaW5lLgot
ICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaW50IG1h
aW4oKVxuJwotICAgICAgICAgICAgJ3tcbicKLSAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmco
KTtcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpbnQgbWFpbigpIHtcbicKLSAg
ICAgICAgICAgICcgICAgZG9Tb21ldGhpbmcoKTtcbicKLSAgICAgICAgICAgICd9XG4nLAotICAg
ICAgICAgICAgJ1BsYWNlIGJyYWNlIG9uIGl0cyBvd24gbGluZSBmb3IgZnVuY3Rpb24gZGVmaW5p
dGlvbnMuICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCi0KLSAgICAgICAgIyAyLiBPdGhlciBi
cmFjZXM6IHBsYWNlIHRoZSBvcGVuIGJyYWNlIG9uIHRoZSBsaW5lIHByZWNlZGluZyB0aGUKLSAg
ICAgICAgIyAgICBjb2RlIGJsb2NrOyBwbGFjZSB0aGUgY2xvc2UgYnJhY2Ugb24gaXRzIG93biBs
aW5lLgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAn
Y2xhc3MgTXlDbGFzcyB7XG4nCi0gICAgICAgICAgICAnICAgIGludCBmb287XG4nCi0gICAgICAg
ICAgICAnfTtcbicsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAotICAgICAgICAgICAgJ25hbWVzcGFjZSBXZWJDb3JlIHtcbicKLSAgICAgICAg
ICAgICdpbnQgZm9vO1xuJwotICAgICAgICAgICAgJ307XG4nLAotICAgICAgICAgICAgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdmb3IgKGlu
dCBpID0gMDsgaSA8IDEwOyBpKyspIHtcbicKLSAgICAgICAgICAgICcgICAgRG9Tb21ldGhpbmco
KTtcbicKLSAgICAgICAgICAgICd9O1xuJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnY2xhc3MgTXlDbGFzc1xuJwot
ICAgICAgICAgICAgJ3tcbicKLSAgICAgICAgICAgICcgICAgaW50IGZvbztcbicKLSAgICAgICAg
ICAgICd9O1xuJywKLSAgICAgICAgICAgICdUaGlzIHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2Yg
dGhlIHByZXZpb3VzIGxpbmUgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2lmIChjb25kaXRpb24pXG4n
Ci0gICAgICAgICAgICAne1xuJwotICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJwotICAgICAg
ICAgICAgJ31cbicsCi0gICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9m
IHRoZSBwcmV2aW91cyBsaW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdmb3IgKGludCBpID0gMDsg
aSA8IDEwOyBpKyspXG4nCi0gICAgICAgICAgICAne1xuJwotICAgICAgICAgICAgJyAgICBpbnQg
Zm9vO1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBi
ZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0
XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICd3
aGlsZSAodHJ1ZSlcbicKLSAgICAgICAgICAgICd7XG4nCi0gICAgICAgICAgICAnICAgIGludCBm
b287XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAgICdUaGlzIHsgc2hvdWxkIGJl
IGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRd
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2Zv
cmVhY2ggKEZvbyogZm9vLCBmb29zKVxuJwotICAgICAgICAgICAgJ3tcbicKLSAgICAgICAgICAg
ICcgICAgaW50IGJhcjtcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAgJ1RoaXMg
eyBzaG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZSAgW3doaXRlc3BhY2Uv
YnJhY2VzXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAg
ICAgICAgICAnc3dpdGNoICh0eXBlKVxuJwotICAgICAgICAgICAgJ3tcbicKLSAgICAgICAgICAg
ICdjYXNlIGZvbzogcmV0dXJuO1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAn
VGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5lICBbd2hpdGVz
cGFjZS9icmFjZXNdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
LSAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKVxuJwotICAgICAgICAgICAgJ3tcbicKLSAgICAg
ICAgICAgICcgICAgaW50IGZvbztcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAg
J1RoaXMgeyBzaG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZSAgW3doaXRl
c3BhY2UvYnJhY2VzXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQo
Ci0gICAgICAgICAgICAnZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKVxuJwotICAgICAgICAg
ICAgJ3tcbicKLSAgICAgICAgICAgICcgICAgaW50IGZvbztcbicKLSAgICAgICAgICAgICd9XG4n
LAotICAgICAgICAgICAgJ1RoaXMgeyBzaG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlv
dXMgbGluZSAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnd2hpbGUgKHRydWUpXG4nCi0gICAgICAgICAg
ICAne1xuJwotICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJwotICAgICAgICAgICAgJ31cbics
Ci0gICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91
cyBsaW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdzd2l0Y2ggKHR5cGUpXG4nCi0gICAgICAgICAg
ICAne1xuJwotICAgICAgICAgICAgJ2Nhc2UgZm9vOiByZXR1cm47XG4nCi0gICAgICAgICAgICAn
fVxuJywKLSAgICAgICAgICAgICdUaGlzIHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHBy
ZXZpb3VzIGxpbmUgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2Vsc2UgaWYgKHR5cGUpXG4nCi0gICAg
ICAgICAgICAne1xuJwotICAgICAgICAgICAgJ2Nhc2UgZm9vOiByZXR1cm47XG4nCi0gICAgICAg
ICAgICAnfVxuJywKLSAgICAgICAgICAgICdUaGlzIHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2Yg
dGhlIHByZXZpb3VzIGxpbmUgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKLQotICAgICAgICAj
IDMuIE9uZS1saW5lIGNvbnRyb2wgY2xhdXNlcyBzaG91bGQgbm90IHVzZSBicmFjZXMgdW5sZXNz
Ci0gICAgICAgICMgICAgY29tbWVudHMgYXJlIGluY2x1ZGVkIG9yIGEgc2luZ2xlIHN0YXRlbWVu
dCBzcGFucyBtdWx0aXBsZQotICAgICAgICAjICAgIGxpbmVzLgotICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaWYgKHRydWUpIHtcbicKLSAgICAgICAg
ICAgICcgICAgaW50IGZvbztcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAgJ09u
ZSBsaW5lIGNvbnRyb2wgY2xhdXNlcyBzaG91bGQgbm90IHVzZSBicmFjZXMuICBbd2hpdGVzcGFj
ZS9icmFjZXNdIFs0XScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAot
ICAgICAgICAgICAgJ2ZvciAoOyBmb287IGJhcikge1xuJwotICAgICAgICAgICAgJyAgICBpbnQg
Zm9vO1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAnT25lIGxpbmUgY29udHJv
bCBjbGF1c2VzIHNob3VsZCBub3QgdXNlIGJyYWNlcy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRd
JykKLQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAn
Zm9yZWFjaCAoZm9vLCBmb29zKSB7XG4nCi0gICAgICAgICAgICAnICAgIGludCBiYXI7XG4nCi0g
ICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAgICdPbmUgbGluZSBjb250cm9sIGNsYXVzZXMg
c2hvdWxkIG5vdCB1c2UgYnJhY2VzLiAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICd3aGlsZSAodHJ1
ZSkge1xuJwotICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJwotICAgICAgICAgICAgJ31cbics
Ci0gICAgICAgICAgICAnT25lIGxpbmUgY29udHJvbCBjbGF1c2VzIHNob3VsZCBub3QgdXNlIGJy
YWNlcy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKLQotICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaWYgKHRydWUpXG4nCi0gICAgICAgICAgICAn
ICAgIGludCBmb287XG4nCi0gICAgICAgICAgICAnZWxzZSB7XG4nCi0gICAgICAgICAgICAnICAg
IGludCBmb287XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAgICdPbmUgbGluZSBj
b250cm9sIGNsYXVzZXMgc2hvdWxkIG5vdCB1c2UgYnJhY2VzLiAgW3doaXRlc3BhY2UvYnJhY2Vz
XSBbNF0nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAg
ICAgICdpZiAodHJ1ZSkge1xuJwotICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJwotICAgICAg
ICAgICAgJ30gZWxzZVxuJwotICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJywKLSAgICAgICAg
ICAgICdPbmUgbGluZSBjb250cm9sIGNsYXVzZXMgc2hvdWxkIG5vdCB1c2UgYnJhY2VzLiAgW3do
aXRlc3BhY2UvYnJhY2VzXSBbNF0nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKLSAgICAgICAgICAgICdpZiAodHJ1ZSkge1xuJwotICAgICAgICAgICAgJyAgICAvLyBT
b21lIGNvbW1lbnRcbicKLSAgICAgICAgICAgICcgICAgaW50IGZvbztcbicKLSAgICAgICAgICAg
ICd9XG4nLAotICAgICAgICAgICAgJycpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KAotICAgICAgICAgICAgJ2lmICh0cnVlKSB7XG4nCi0gICAgICAgICAgICAnICAgIG15
RnVuY3Rpb24ocmVhbGx5TG9uZ1BhcmFtMSwgcmVhbGx5TG9uZ1BhcmFtMixcbicKLSAgICAgICAg
ICAgICcgICAgICAgICAgICAgICByZWFsbHlMb25nUGFyYW0zKTtcbicKLSAgICAgICAgICAgICd9
XG4nLAotICAgICAgICAgICAgJycpCi0KLSAgICAgICAgIyA0LiBDb250cm9sIGNsYXVzZXMgd2l0
aG91dCBhIGJvZHkgc2hvdWxkIHVzZSBlbXB0eSBicmFjZXMuCi0gICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdmb3IgKCA7IGN1cnJlbnQ7IGN1cnJlbnQg
PSBjdXJyZW50LT5uZXh0KSB7IH1cbicsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2ZvciAoIDsgY3VycmVudDtcbicK
LSAgICAgICAgICAgICcgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KSB7fVxuJywKLSAgICAg
ICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAg
ICAgICAnZm9yICggOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dCk7XG4nLAotICAg
ICAgICAgICAgJ1NlbWljb2xvbiBkZWZpbmluZyBlbXB0eSBzdGF0ZW1lbnQgZm9yIHRoaXMgbG9v
cC4gVXNlIHsgfSBpbnN0ZWFkLiAgW3doaXRlc3BhY2Uvc2VtaWNvbG9uXSBbNV0nKQotICAgICAg
ICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnd2hpbGUgKHRydWUp
O1xuJywKLSAgICAgICAgICAgICdTZW1pY29sb24gZGVmaW5pbmcgZW1wdHkgc3RhdGVtZW50IGZv
ciB0aGlzIGxvb3AuIFVzZSB7IH0gaW5zdGVhZC4gIFt3aGl0ZXNwYWNlL3NlbWljb2xvbl0gWzVd
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ30g
d2hpbGUgKHRydWUpO1xuJywKLSAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRlc3RfbnVsbF9m
YWxzZV96ZXJvKHNlbGYpOgotICAgICAgICAjIDEuIEluIEMrKywgdGhlIG51bGwgcG9pbnRlciB2
YWx1ZSBzaG91bGQgYmUgd3JpdHRlbiBhcyAwLiBJbiBDLAotICAgICAgICAjICAgIGl0IHNob3Vs
ZCBiZSB3cml0dGVuIGFzIE5VTEwuIEluIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrLAot
ICAgICAgICAjICAgIGZvbGxvdyB0aGUgZ3VpZGVsaW5lIGZvciBDIG9yIEMrKywgcmVzcGVjdGl2
ZWx5LCBidXQgdXNlIG5pbCB0bwotICAgICAgICAjICAgIHJlcHJlc2VudCBhIG51bGwgT2JqZWN0
aXZlLUMgb2JqZWN0LgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ2Z1
bmN0aW9uQ2FsbChOVUxMKScsCi0gICAgICAgICAgICAnVXNlIDAgaW5zdGVhZCBvZiBOVUxMLicK
LSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9udWxsXSBbNV0nLAotICAgICAgICAgICAgJ2Zv
by5jcHAnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgIi8vIERvbid0
IHVzZSBOVUxMIGluIGNvbW1lbnRzIHNpbmNlIGl0IGlzbid0IGluIGNvZGUuIiwKLSAgICAgICAg
ICAgICdVc2UgMCBpbnN0ZWFkIG9mIE5VTEwuJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5
L251bGxdIFs0XScsCi0gICAgICAgICAgICAnZm9vLmNwcCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoCi0gICAgICAgICAgICAnIkEgc3RyaW5nIHdpdGggTlVMTCIgLy8gYW5kIGEgY29tbWVu
dCB3aXRoIE5VTEwgaXMgdHJpY2t5IHRvIGZsYWcgY29ycmVjdGx5IGluIGNwcF9zdHlsZS4nLAot
ICAgICAgICAgICAgJ1VzZSAwIGluc3RlYWQgb2YgTlVMTC4nCi0gICAgICAgICAgICAnICBbcmVh
ZGFiaWxpdHkvbnVsbF0gWzRdJywKLSAgICAgICAgICAgICdmb28uY3BwJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICciQSBzdHJpbmcgY29udGFpbmluZyBOVUxMIGlz
IG9rIicsCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgICdmb28uY3BwJykKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdpZiAoYWJvdXROVUxMKScsCi0gICAgICAg
ICAgICAnJywKLSAgICAgICAgICAgICdmb28uY3BwJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgKLSAgICAgICAgICAgICdteVZhcmlhYmxlID0gTlVMTGlmeScsCi0gICAgICAgICAgICAnJywK
LSAgICAgICAgICAgICdmb28uY3BwJykKLSAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB0aGUgTlVM
TCBjaGVjayBkb2VzIG5vdCBhcHBseSB0byBDIGFuZCBPYmplY3RpdmUtQyBmaWxlcy4KLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdmdW5jdGlvbkNhbGwoTlVMTCknLAot
ICAgICAgICAgICAgJycsCi0gICAgICAgICAgICAnZm9vLmMnKQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KAotICAgICAgICAgICAgJ2Z1bmN0aW9uQ2FsbChOVUxMKScsCi0gICAgICAgICAgICAn
JywKLSAgICAgICAgICAgICdmb28ubScpCi0KLSAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB0aGUg
TlVMTCBjaGVjayBkb2VzIG5vdCBhcHBseSB0byBnX29iamVjdF97c2V0LGdldH0KLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdnX29iamVjdF9nZXQoZm9vLCAicHJvcCIs
ICZiYXIsIE5VTEwpOycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgKLSAgICAgICAgICAgICdnX29iamVjdF9zZXQoZm9vLCAicHJvcCIsIGJhciwgTlVMTCk7JywK
LSAgICAgICAgICAgICcnKQotCi0gICAgICAgICMgMi4gQysrIGFuZCBDIGJvb2wgdmFsdWVzIHNo
b3VsZCBiZSB3cml0dGVuIGFzIHRydWUgYW5kCi0gICAgICAgICMgICAgZmFsc2UuIE9iamVjdGl2
ZS1DIEJPT0wgdmFsdWVzIHNob3VsZCBiZSB3cml0dGVuIGFzIFlFUyBhbmQgTk8uCi0gICAgICAg
ICMgRklYTUU6IEltcGxlbWVudCB0aGlzLgotCi0gICAgICAgICMgMy4gVGVzdHMgZm9yIHRydWUv
ZmFsc2UsIG51bGwvbm9uLW51bGwsIGFuZCB6ZXJvL25vbi16ZXJvIHNob3VsZAotICAgICAgICAj
ICAgIGFsbCBiZSBkb25lIHdpdGhvdXQgZXF1YWxpdHkgY29tcGFyaXNvbnMuCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnaWYgKGNvdW50ID09IDApJywKLSAgICAgICAg
ICAgICdUZXN0cyBmb3IgdHJ1ZS9mYWxzZSwgbnVsbC9ub24tbnVsbCwgYW5kIHplcm8vbm9uLXpl
cm8gc2hvdWxkIGFsbCBiZSBkb25lIHdpdGhvdXQgZXF1YWxpdHkgY29tcGFyaXNvbnMuJwotICAg
ICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NvbXBhcmlzb25fdG9femVyb10gWzVdJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludF9vbmVfb2ZfbWFueV9lcnJvcnNfcmUoCi0gICAgICAgICAgICAn
aWYgKHN0cmluZyAhPSBOVUxMKScsCi0gICAgICAgICAgICByJ1Rlc3RzIGZvciB0cnVlL2ZhbHNl
LCBudWxsL25vbi1udWxsLCBhbmQgemVyby9ub24temVybyBzaG91bGQgYWxsIGJlIGRvbmUgd2l0
aG91dCBlcXVhbGl0eSBjb21wYXJpc29uc1wuJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgK
LSAgICAgICAgICAgICdpZiAoY29uZGl0aW9uID09IHRydWUpJywKLSAgICAgICAgICAgICdUZXN0
cyBmb3IgdHJ1ZS9mYWxzZSwgbnVsbC9ub24tbnVsbCwgYW5kIHplcm8vbm9uLXplcm8gc2hvdWxk
IGFsbCBiZSBkb25lIHdpdGhvdXQgZXF1YWxpdHkgY29tcGFyaXNvbnMuJwotICAgICAgICAgICAg
JyAgW3JlYWRhYmlsaXR5L2NvbXBhcmlzb25fdG9femVyb10gWzVdJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKLSAgICAgICAgICAgICdpZiAobXlWYXJpYWJsZSAhPSAvKiBXaHkgd291bGQg
YW55b25lIHB1dCBhIGNvbW1lbnQgaGVyZT8gKi8gZmFsc2UpJywKLSAgICAgICAgICAgICdUZXN0
cyBmb3IgdHJ1ZS9mYWxzZSwgbnVsbC9ub24tbnVsbCwgYW5kIHplcm8vbm9uLXplcm8gc2hvdWxk
IGFsbCBiZSBkb25lIHdpdGhvdXQgZXF1YWxpdHkgY29tcGFyaXNvbnMuJwotICAgICAgICAgICAg
JyAgW3JlYWRhYmlsaXR5L2NvbXBhcmlzb25fdG9femVyb10gWzVdJykKLQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KAotICAgICAgICAgICAgJ2lmICgwIC8qIFRoaXMgY29tbWVudCBhbHNvIGxv
b2tzIG9kZCB0byBtZS4gKi8gIT0gYUxvbmdlclZhcmlhYmxlTmFtZSknLAotICAgICAgICAgICAg
J1Rlc3RzIGZvciB0cnVlL2ZhbHNlLCBudWxsL25vbi1udWxsLCBhbmQgemVyby9ub24temVybyBz
aG91bGQgYWxsIGJlIGRvbmUgd2l0aG91dCBlcXVhbGl0eSBjb21wYXJpc29ucy4nCi0gICAgICAg
ICAgICAnICBbcmVhZGFiaWxpdHkvY29tcGFyaXNvbl90b196ZXJvXSBbNV0nKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50X29uZV9vZl9tYW55X2Vycm9yc19yZSgKLSAgICAgICAgICAgICdpZiAo
TlVMTCA9PSB0aGlzTWF5QmVOdWxsKScsCi0gICAgICAgICAgICByJ1Rlc3RzIGZvciB0cnVlL2Zh
bHNlLCBudWxsL25vbi1udWxsLCBhbmQgemVyby9ub24temVybyBzaG91bGQgYWxsIGJlIGRvbmUg
d2l0aG91dCBlcXVhbGl0eSBjb21wYXJpc29uc1wuJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgKLSAgICAgICAgICAgICdpZiAodHJ1ZSAhPSBhbm90aGVyQ29uZGl0aW9uKScsCi0gICAgICAg
ICAgICAnVGVzdHMgZm9yIHRydWUvZmFsc2UsIG51bGwvbm9uLW51bGwsIGFuZCB6ZXJvL25vbi16
ZXJvIHNob3VsZCBhbGwgYmUgZG9uZSB3aXRob3V0IGVxdWFsaXR5IGNvbXBhcmlzb25zLicKLSAg
ICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jb21wYXJpc29uX3RvX3plcm9dIFs1XScpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnaWYgKGZhbHNlID09IG15Qm9vbFZh
bHVlKScsCi0gICAgICAgICAgICAnVGVzdHMgZm9yIHRydWUvZmFsc2UsIG51bGwvbm9uLW51bGws
IGFuZCB6ZXJvL25vbi16ZXJvIHNob3VsZCBhbGwgYmUgZG9uZSB3aXRob3V0IGVxdWFsaXR5IGNv
bXBhcmlzb25zLicKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jb21wYXJpc29uX3RvX3pl
cm9dIFs1XScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdpZiAo
Zm9udFR5cGUgPT0gdHJ1ZVR5cGUpJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KAotICAgICAgICAgICAgJ2lmIChvdGhlcnRydWUgPT0gZm9udFR5cGUpJywKLSAg
ICAgICAgICAgICcnKQotCi0gICAgZGVmIHRlc3RfdXNpbmdfc3RkKHNlbGYpOgotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ3VzaW5nIHN0ZDo6bWluOycsCi0gICAgICAg
ICAgICAiVXNlICd1c2luZyBuYW1lc3BhY2Ugc3RkOycgaW5zdGVhZCBvZiAndXNpbmcgc3RkOjpt
aW47Jy4iCi0gICAgICAgICAgICAiICBbYnVpbGQvdXNpbmdfc3RkXSBbNF0iLAotICAgICAgICAg
ICAgJ2Zvby5jcHAnKQotCi0gICAgZGVmIHRlc3RfbWF4X21hY3JvKHNlbGYpOgotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ2ludCBpID0gTUFYKDAsIDEpOycsCi0gICAg
ICAgICAgICAnJywKLSAgICAgICAgICAgICdmb28uYycpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgKLSAgICAgICAgICAgICdpbnQgaSA9IE1BWCgwLCAxKTsnLAotICAgICAgICAgICAgJ1Vz
ZSBzdGQ6Om1heCgpIG9yIHN0ZDo6bWF4PHR5cGU+KCkgaW5zdGVhZCBvZiB0aGUgTUFYKCkgbWFj
cm8uJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvbWF4X21pbl9tYWNyb3NdIFs0XScsCi0gICAg
ICAgICAgICAnZm9vLmNwcCcpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAg
ICAgICdpbmxpbmUgaW50IGZvbygpIHsgcmV0dXJuIE1BWCgwLCAxKTsgfScsCi0gICAgICAgICAg
ICAnVXNlIHN0ZDo6bWF4KCkgb3Igc3RkOjptYXg8dHlwZT4oKSBpbnN0ZWFkIG9mIHRoZSBNQVgo
KSBtYWNyby4nCi0gICAgICAgICAgICAnICBbcnVudGltZS9tYXhfbWluX21hY3Jvc10gWzRdJywK
LSAgICAgICAgICAgICdmb28uaCcpCi0KLSAgICBkZWYgdGVzdF9taW5fbWFjcm8oc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnaW50IGkgPSBNSU4oMCwgMSk7
JywKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgJ2Zvby5jJykKLQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KAotICAgICAgICAgICAgJ2ludCBpID0gTUlOKDAsIDEpOycsCi0gICAgICAg
ICAgICAnVXNlIHN0ZDo6bWluKCkgb3Igc3RkOjptaW48dHlwZT4oKSBpbnN0ZWFkIG9mIHRoZSBN
SU4oKSBtYWNyby4nCi0gICAgICAgICAgICAnICBbcnVudGltZS9tYXhfbWluX21hY3Jvc10gWzRd
JywKLSAgICAgICAgICAgICdmb28uY3BwJykKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAot
ICAgICAgICAgICAgJ2lubGluZSBpbnQgZm9vKCkgeyByZXR1cm4gTUlOKDAsIDEpOyB9JywKLSAg
ICAgICAgICAgICdVc2Ugc3RkOjptaW4oKSBvciBzdGQ6Om1pbjx0eXBlPigpIGluc3RlYWQgb2Yg
dGhlIE1JTigpIG1hY3JvLicKLSAgICAgICAgICAgICcgIFtydW50aW1lL21heF9taW5fbWFjcm9z
XSBbNF0nLAotICAgICAgICAgICAgJ2Zvby5oJykKLQotICAgIGRlZiB0ZXN0X25hbWVzKHNlbGYp
OgotICAgICAgICBuYW1lX2Vycm9yX21lc3NhZ2UgPSAiIGlzIGluY29ycmVjdGx5IG5hbWVkLiBE
b24ndCB1c2UgdW5kZXJzY29yZXMgaW4geW91ciBpZGVudGlmaWVyIG5hbWVzLiAgW3JlYWRhYmls
aXR5L25hbWluZ10gWzRdIgotCi0gICAgICAgICMgQmFzaWMgY2FzZXMgZnJvbSBXZWJLaXQgc3R5
bGUgZ3VpZGUuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cnVjdCBEYXRhOycsICcnKQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzaXplX3QgYnVmZmVyU2l6ZTsnLCAnJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnY2xhc3MgSFRNTERvY3VtZW50OycsICcnKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdTdHJpbmcgbWltZVR5cGUoKTsnLCAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnc2l6ZV90IGJ1ZmZlcl9zaXplOycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJ2J1ZmZlcl9zaXplJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnc2hvcnQgbV9sZW5ndGg7JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J3Nob3J0IF9sZW5ndGg7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnX2xlbmd0aCcgKyBu
YW1lX2Vycm9yX21lc3NhZ2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3Nob3J0IGxlbmd0
aF87JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnbGVuZ3RoXycgKyBuYW1lX2Vycm9yX21l
c3NhZ2UpCi0KLSAgICAgICAgIyBQb2ludGVycywgcmVmZXJlbmNlcywgZnVuY3Rpb25zLCB0ZW1w
bGF0ZXMsIGFuZCBhZGplY3RpdmVzLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjaGFyKiB1
bmRlcl9zY29yZTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBu
YW1lX2Vycm9yX21lc3NhZ2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NvbnN0IGludCBV
TkRFUl9TQ09SRTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdVTkRFUl9TQ09SRScgKyBu
YW1lX2Vycm9yX21lc3NhZ2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0YXRpYyBpbmxp
bmUgY29uc3QgY2hhciBjb25zdCYgY29uc3QgdW5kZXJfc2NvcmU7JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHVuZGVyX3Njb3JlOycsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2Fn
ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGZ1bmNfbmFtZSgpOycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgJ2Z1bmNfbmFtZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZlB0cjxSZW5kZXJPYmplY3QqPiB1bmRlcl9zY29yZTsn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21l
c3NhZ2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dURjo6VmVjdG9yPFdURjo6UmVmUHRy
PGNvbnN0IFJlbmRlck9iamVjdCogY29uc3Q+ID4gdW5kZXJfc2NvcmU7JywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdpbnQgdW5kZXJfc2NvcmVbXTsnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ3N0cnVjdCBkaXJlbnQqIHVuZGVyX3Njb3JlOycsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnbG9uZyB1bmRlcl9zY29yZTsnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ2xvbmcgbG9uZyB1bmRlcl9zY29yZTsnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ2xvbmcgZG91YmxlIHVuZGVyX3Njb3JlOycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnbG9uZyBsb25nIGludCB1bmRlcl9zY29yZTsnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCi0KLSAg
ICAgICAgIyBEZWNsYXJhdGlvbnMgaW4gY29udHJvbCBzdGF0ZW1lbnQuCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ2lmIChpbnQgdW5kZXJfc2NvcmUgPSA0MikgeycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnZWxzZSBpZiAoaW50IHVuZGVyX3Njb3JlID0gNDIpIHsnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2Up
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoaW50IHVuZGVyX3Njb3JlID0gNDI7IGNv
bmQ7IGkrKykgeycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5h
bWVfZXJyb3JfbWVzc2FnZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnd2hpbGUgKGZvbyAm
IHVuZGVyX3Njb3JlID0gYmFyKSB7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXJf
c2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdm
b3IgKGZvbyAqIHVuZGVyX3Njb3JlID0gcDsgY29uZDsgaSsrKSB7JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdmb3IgKGZvbyAqIHVuZGVyX3Njb3JlOyBjb25kOyBpKyspIHsnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3Nh
Z2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3doaWxlIChmb28gJiB2YWx1ZV9pbl90aGly
ZHBhcnR5X2xpYnJhcnkpIHsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnd2hpbGUg
KGZvbyAqIHZhbHVlX2luX3RoaXJkcGFydHlfbGlicmFyeSkgeycsICcnKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdpZiAobWxpICYmIFNfT0sgPT0gbWxpLT5mb28oKSkgeycsICcnKQotCi0g
ICAgICAgICMgTW9yZSBtZW1iZXIgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ2ludCBTb21lQ2xhc3M6OnNfdmFsaWROYW1lJywgJycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBtX3VuZGVyX3Njb3JlOycsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgJ21fdW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdpbnQgU29tZUNsYXNzOjpzX3VuZGVyX3Njb3JlID0gMDsnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICdTb21lQ2xhc3M6OnNfdW5kZXJfc2NvcmUnICsgbmFtZV9l
cnJvcl9tZXNzYWdlKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgU29tZUNsYXNzOjp1
bmRlcl9zY29yZSA9IDA7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnU29tZUNsYXNzOjp1
bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCi0KLSAgICAgICAgIyBPdGhlciBzdGF0
ZW1lbnRzLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdyZXR1cm4gSU5UX01BWDsnLCAnJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgncmV0dXJuX3QgdW5kZXJfc2NvcmU7JywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdnb3RvIHVuZGVyX3Njb3JlOycsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnZGVsZXRlIHN0YXRpY19jYXN0PEZvbyo+KHApOycsICcnKQot
Ci0gICAgICAgICMgTXVsdGlwbGUgdmFyaWFibGVzIGluIG9uZSBsaW5lLgotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCd2b2lkIG15RnVuY3Rpb24oaW50IHZhcmlhYmxlMSwgaW50IGFub3RoZXJf
dmFyaWFibGUpOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2Fub3RoZXJfdmFyaWFibGUn
ICsgbmFtZV9lcnJvcl9tZXNzYWdlKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgdmFy
aWFibGUxLCBhbm90aGVyX3ZhcmlhYmxlOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2Fu
b3RoZXJfdmFyaWFibGUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdpbnQgZmlyc3RfdmFyaWFibGUsIHNlY29uZFZhcmlhYmxlOycsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgJ2ZpcnN0X3ZhcmlhYmxlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCBteV9mdW5jdGlvbihpbnQgdmFyaWFibGVfMSwg
aW50IHZhcmlhYmxlXzIpOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydteV9mdW5jdGlv
bicgKyBuYW1lX2Vycm9yX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd2YXJp
YWJsZV8xJyArIG5hbWVfZXJyb3JfbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
J3ZhcmlhYmxlXzInICsgbmFtZV9lcnJvcl9tZXNzYWdlXSkKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnZm9yIChpbnQgdmFyaWFibGVfMSwgdmFyaWFibGVfMjs7KSB7JywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBbJ3ZhcmlhYmxlXzEnICsgbmFtZV9lcnJvcl9tZXNzYWdlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVfMicgKyBuYW1lX2Vycm9yX21lc3NhZ2VdKQot
Ci0gICAgICAgICMgVGhlcmUgaXMgYW4gZXhjZXB0aW9uIGZvciBvcCBjb2RlIGZ1bmN0aW9ucyBi
dXQgb25seSBpbiB0aGUgSmF2YVNjcmlwdENvcmUgZGlyZWN0b3J5LgotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCd2b2lkIHRoaXNfb3BfY29kZShpbnQgdmFyMSwgaW50IHZhcjIpJywgJycsICdK
YXZhU2NyaXB0Q29yZS9mb28uY3BwJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCB0
aGlzX29wX2NvZGUoaW50IHZhcjEsIGludCB2YXIyKScsICd0aGlzX29wX2NvZGUnICsgbmFtZV9l
cnJvcl9tZXNzYWdlKQotCi0gICAgICAgICMgR09iamVjdCByZXF1aXJlcyBjZXJ0YWluIG1hZ2lj
YWwgbmFtZXMgaW4gY2xhc3MgZGVjbGFyYXRpb25zLgotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCd2b2lkIHdlYmtpdF9kb21fb2JqZWN0X2luaXQoKTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgndm9pZCB3ZWJraXRfZG9tX29iamVjdF9jbGFzc19pbml0KCk7JywgJycpCi0KLSAg
ICAgICAgIyBUaGUgR1RLKyBBUElzIHVzZSBHVEsrIG5hbWluZyBzdHlsZSwgd2hpY2ggaW5jbHVk
ZXMgbG93ZXItY2FzZWQsIF8tc2VwYXJhdGVkIHZhbHVlcy4KLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgndm9pZCB0aGlzX2lzX2FfZ3RrX3N0eWxlX25hbWUoaW50IHZhcjEsIGludCB2YXIyKScs
ICcnLCAnV2ViS2l0L2d0ay93ZWJraXQvZm9vLmNwcCcpCi0KLSAgICAgICAgIyBUaGVyZSBpcyBh
biBleGNlcHRpb24gZm9yIHNvbWUgdW5pdCB0ZXN0cyB0aGF0IGJlZ2luIHdpdGggInRzdF8iLgot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIHRzdF9RV2ViRnJhbWU6OmFycmF5T2JqZWN0
RW51bWVyYWJsZShpbnQgdmFyMSwgaW50IHZhcjIpJywgJycpCi0KLSAgICAgICAgIyBUaGUgUXQg
QVBJIHVzZXMgbmFtZXMgdGhhdCBiZWdpbiB3aXRoICJxdF8iLgotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCd2b2lkIFFURnJhbWU6OnF0X2RydF9pc19hd2Vzb21lKGludCB2YXIxLCBpbnQgdmFy
MiknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCBxdF9kcnRfaXNfYXdlc29t
ZShpbnQgdmFyMSwgaW50IHZhcjIpOycsICcnKQotCi0gICAgICAgICMgY29uc3RfaXRlcmF0b3Ig
aXMgYWxsb3dlZCBhcyB3ZWxsLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd0eXBlZGVmIFZl
Y3RvclR5cGU6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOycsICcnKQotCi0KLSAgICBk
ZWYgdGVzdF9jb21tZW50cyhzZWxmKToKLSAgICAgICAgIyBBIGNvbW1lbnQgYXQgdGhlIGJlZ2lu
bmluZyBvZiBhIGxpbmUgaXMgb2suCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8vIGNvbW1l
bnQnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgIC8vIGNvbW1lbnQnLCAnJykK
LQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJ09uZSBzcGFjZSBiZWZvcmUgZW5kIG9mIGxpbmUgY29t
bWVudHMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvY29tbWVudHNd
IFs1XScpCi0KLSAgICBkZWYgdGVzdF9vdGhlcihzZWxmKToKLSAgICAgICAgIyBGSVhNRTogSW1w
bGVtZW50IHRoaXMuCi0gICAgICAgIHBhc3MKLQotCi1jbGFzcyBDcHBQcm9jZXNzb3JUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3RzIENwcFByb2Nlc3NvciBjbGFzcy4iIiIK
LQotICAgIGRlZiBtb2NrX2hhbmRsZV9zdHlsZV9lcnJvcihzZWxmKToKLSAgICAgICAgcGFzcwot
Ci0gICAgZGVmIF9wcm9jZXNzb3Ioc2VsZik6Ci0gICAgICAgIHJldHVybiBDcHBQcm9jZXNzb3Io
ImZvbyIsICJoIiwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwgMykKLQotICAgIGRlZiB0
ZXN0X2luaXQoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgX19pbml0X18gY29uc3RydWN0b3IuIiIi
Ci0gICAgICAgIHByb2Nlc3NvciA9IHNlbGYuX3Byb2Nlc3NvcigpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHByb2Nlc3Nvci5maWxlX2V4dGVuc2lvbiwgImgiKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhwcm9jZXNzb3IuZmlsZV9wYXRoLCAiZm9vIikKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMocHJvY2Vzc29yLmhhbmRsZV9zdHlsZV9lcnJvciwgc2VsZi5tb2NrX2hhbmRsZV9z
dHlsZV9lcnJvcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLnZlcmJvc2l0
eSwgMykKLQotICAgIGRlZiB0ZXN0X2VxKHNlbGYpOgotICAgICAgICAiIiJUZXN0IF9fZXFfXyBl
cXVhbGl0eSBmdW5jdGlvbi4iIiIKLSAgICAgICAgcHJvY2Vzc29yMSA9IHNlbGYuX3Byb2Nlc3Nv
cigpCi0gICAgICAgIHByb2Nlc3NvcjIgPSBzZWxmLl9wcm9jZXNzb3IoKQotCi0gICAgICAgICMg
PT0gY2FsbHMgX19lcV9fLgotICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvY2Vzc29yMSA9PSBw
cm9jZXNzb3IyKQotCi0gICAgICAgIGRlZiBtb2NrX2hhbmRsZV9zdHlsZV9lcnJvcjIoc2VsZik6
Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgIyBWZXJpZnkgdGhhdCBhIGRpZmZlcmVuY2Ug
aW4gYW55IGFyZ3VtZW50IGNhdXNlIGVxdWFsaXR5IHRvIGZhaWwuCi0gICAgICAgIHByb2Nlc3Nv
ciA9IENwcFByb2Nlc3NvcigiZm9vIiwgImgiLCBzZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9y
LCAzKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByb2Nlc3NvciA9PSBDcHBQcm9jZXNzb3Io
ImJhciIsICJoIiwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwgMykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UocHJvY2Vzc29yID09IENwcFByb2Nlc3NvcigiZm9vIiwgImMiLCBzZWxm
Lm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yLCAzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShw
cm9jZXNzb3IgPT0gQ3BwUHJvY2Vzc29yKCJmb28iLCAiaCIsIG1vY2tfaGFuZGxlX3N0eWxlX2Vy
cm9yMiwgMykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocHJvY2Vzc29yID09IENwcFByb2Nl
c3NvcigiZm9vIiwgImgiLCBzZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yLCA0KSkKLQotICAg
IGRlZiB0ZXN0X25lKHNlbGYpOgotICAgICAgICAiIiJUZXN0IF9fbmVfXyBpbmVxdWFsaXR5IGZ1
bmN0aW9uLiIiIgotICAgICAgICBwcm9jZXNzb3IxID0gc2VsZi5fcHJvY2Vzc29yKCkKLSAgICAg
ICAgcHJvY2Vzc29yMiA9IHNlbGYuX3Byb2Nlc3NvcigpCi0KLSAgICAgICAgIyAhPSBjYWxscyBf
X25lX18uCi0gICAgICAgICMgQnkgZGVmYXVsdCwgX19uZV9fIGFsd2F5cyByZXR1cm5zIHRydWUg
b24gZGlmZmVyZW50IG9iamVjdHMuCi0gICAgICAgICMgVGh1cywganVzdCBjaGVjayB0aGUgZGlz
dGluZ3Vpc2hpbmcgY2FzZSB0byB2ZXJpZnkgdGhhdCB0aGUKLSAgICAgICAgIyBjb2RlIGRlZmlu
ZXMgX19uZV9fLgotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByb2Nlc3NvcjEgIT0gcHJvY2Vz
c29yMikKLQotCi1kZWYgdGVhckRvd24oKToKLSAgICAiIiJBIGdsb2JhbCBjaGVjayB0byBtYWtl
IHN1cmUgYWxsIGVycm9yLWNhdGVnb3JpZXMgaGF2ZSBiZWVuIHRlc3RlZC4KLQotICAgIFRoZSBt
YWluIHRlYXJEb3duKCkgcm91dGluZSBpcyB0aGUgb25seSBjb2RlIHdlIGNhbiBndWFyYW50ZWUg
d2lsbCBiZQotICAgIHJ1biBhZnRlciBhbGwgb3RoZXIgdGVzdHMgaGF2ZSBiZWVuIGV4ZWN1dGVk
LgotICAgICIiIgotICAgIHRyeToKLSAgICAgICAgaWYgX3J1bl92ZXJpZnlhbGxjYXRlZ29yaWVz
c2VlbjoKLSAgICAgICAgICAgIEVycm9yQ29sbGVjdG9yKE5vbmUpLnZlcmlmeV9hbGxfY2F0ZWdv
cmllc19hcmVfc2VlbigpCi0gICAgZXhjZXB0IE5hbWVFcnJvcjoKLSAgICAgICAgIyBJZiBub2Jv
ZHkgc2V0IHRoZSBnbG9iYWwgX3J1bl92ZXJpZnlhbGxjYXRlZ29yaWVzc2VlbiwgdGhlbgotICAg
ICAgICAjIHdlIGFzc3VtZSB3ZSBzaG91bGRuJ3QgcnVuIHRoZSB0ZXN0Ci0gICAgICAgIHBhc3MK
LQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBpbXBvcnQgc3lzCi0gICAgIyBXZSBk
b24ndCB3YW50IHRvIHJ1biB0aGUgdmVyaWZ5X2FsbF9jYXRlZ29yaWVzX2FyZV9zZWVuKCkgdGVz
dCB1bmxlc3MKLSAgICAjIHdlJ3JlIHJ1bm5pbmcgdGhlIGZ1bGwgdGVzdCBzdWl0ZTogaWYgd2Ug
b25seSBydW4gb25lIHRlc3QsCi0gICAgIyBvYnZpb3VzbHkgd2UncmUgbm90IGdvaW5nIHRvIHNl
ZSBhbGwgdGhlIGVycm9yIGNhdGVnb3JpZXMuICBTbyB3ZQotICAgICMgb25seSBydW4gdmVyaWZ5
X2FsbF9jYXRlZ29yaWVzX2FyZV9zZWVuKCkgd2hlbiBubyBjb21tYW5kbGluZSBmbGFncwotICAg
ICMgYXJlIHBhc3NlZCBpbi4KLSAgICBnbG9iYWwgX3J1bl92ZXJpZnlhbGxjYXRlZ29yaWVzc2Vl
bgotICAgIF9ydW5fdmVyaWZ5YWxsY2F0ZWdvcmllc3NlZW4gPSAobGVuKHN5cy5hcmd2KSA9PSAx
KQotCi0gICAgdW5pdHRlc3QubWFpbigpCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL3RleHRfc3R5bGUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS90ZXh0X3N0eWxlLnB5CShyZXZpc2lvbiA1Mzg0MSkKKysrIFdlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZS5weQkod29ya2luZyBjb3B5
KQpAQCAtMSw1NiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNq
ZXJkb25la0B3ZWJraXQub3JnKQotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBt
ZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0j
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiQ2hlY2tzIFdlYktp
dCBzdHlsZSBmb3IgdGV4dCBmaWxlcy4iIiIKLQotCi1jbGFzcyBUZXh0UHJvY2Vzc29yKG9iamVj
dCk6Ci0KLSAgICAiIiJQcm9jZXNzZXMgdGV4dCBsaW5lcyBmb3IgY2hlY2tpbmcgc3R5bGUuIiIi
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3Ip
OgotICAgICAgICBzZWxmLmZpbGVfcGF0aCA9IGZpbGVfcGF0aAotICAgICAgICBzZWxmLmhhbmRs
ZV9zdHlsZV9lcnJvciA9IGhhbmRsZV9zdHlsZV9lcnJvcgotCi0gICAgZGVmIHByb2Nlc3Moc2Vs
ZiwgbGluZXMpOgotICAgICAgICBsaW5lcyA9IChbIi8vIGFkanVzdCBsaW5lIG51bWJlcnMgdG8g
bWFrZSB0aGUgZmlyc3QgbGluZSAxLiJdICsgbGluZXMpCi0KLSAgICAgICAgIyBGSVhNRTogc2hh
cmUgd2l0aCBjcHBfc3R5bGUuCi0gICAgICAgIGZvciBsaW5lX251bWJlciwgbGluZSBpbiBlbnVt
ZXJhdGUobGluZXMpOgotICAgICAgICAgICAgaWYgIlx0IiBpbiBsaW5lOgotICAgICAgICAgICAg
ICAgIHNlbGYuaGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVtYmVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGl0ZXNwYWNlL3RhYiIsIDUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxpbmUgY29udGFpbnMgdGFiIGNoYXJhY3Rl
ci4iKQotCi0KLSMgRklYTUU6IFJlbW92ZSB0aGlzIGZ1bmN0aW9uIChyZXF1aXJlcyByZWZhY3Rv
cmluZyB1bml0IHRlc3RzKS4KLWRlZiBwcm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFtZSwgbGluZXMs
IGVycm9yKToKLSAgICBwcm9jZXNzb3IgPSBUZXh0UHJvY2Vzc29yKGZpbGVuYW1lLCBlcnJvcikK
LSAgICBwcm9jZXNzb3IucHJvY2VzcyhsaW5lcykKLQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS90ZXh0X3N0eWxlX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZV91bml0dGVzdC5weQko
cmV2aXNpb24gNTM4NDEpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Rl
eHRfc3R5bGVfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsOTQgKzAsMCBAQAotIyEv
dXNyL2Jpbi9weXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMK
LSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
IyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRlc3QgZm9yIHRleHRf
c3R5bGUucHkuIiIiCi0KLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgdGV4dF9zdHlsZQotZnJv
bSB0ZXh0X3N0eWxlIGltcG9ydCBUZXh0UHJvY2Vzc29yCi0KLWNsYXNzIFRleHRTdHlsZVRlc3RD
YXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0Q2FzZSBmb3IgdGV4dF9zdHlsZS5w
eSIiIgotCi0gICAgZGVmIGFzc2VydE5vRXJyb3Ioc2VsZiwgbGluZXMpOgotICAgICAgICAiIiJB
c3NlcnRzIHRoYXQgdGhlIHNwZWNpZmllZCBsaW5lcyBoYXMgbm8gZXJyb3JzLiIiIgotICAgICAg
ICBzZWxmLmhhZF9lcnJvciA9IEZhbHNlCi0KLSAgICAgICAgZGVmIGVycm9yX2Zvcl90ZXN0KGxp
bmVfbnVtYmVyLCBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSk6Ci0gICAgICAgICAgICAi
IiJSZWNvcmRzIGlmIGFuIGVycm9yIG9jY3Vycy4iIiIKLSAgICAgICAgICAgIHNlbGYuaGFkX2Vy
cm9yID0gVHJ1ZQotCi0gICAgICAgIHRleHRfc3R5bGUucHJvY2Vzc19maWxlX2RhdGEoJycsIGxp
bmVzLCBlcnJvcl9mb3JfdGVzdCkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBzZWxmLmhhZF9l
cnJvciwgJyVzIHNob3VsZCBub3QgaGF2ZSBhbnkgZXJyb3JzLicgJSBsaW5lcykKLQotICAgIGRl
ZiBhc3NlcnRFcnJvcihzZWxmLCBsaW5lcywgZXhwZWN0ZWRfbGluZV9udW1iZXIpOgotICAgICAg
ICAiIiJBc3NlcnRzIHRoYXQgdGhlIHNwZWNpZmllZCBsaW5lcyBoYXMgYW4gZXJyb3IuIiIiCi0g
ICAgICAgIHNlbGYuaGFkX2Vycm9yID0gRmFsc2UKLQotICAgICAgICBkZWYgZXJyb3JfZm9yX3Rl
c3QobGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKToKLSAgICAgICAg
ICAgICIiIkNoZWNrcyBpZiB0aGUgZXhwZWN0ZWQgZXJyb3Igb2NjdXJzLiIiIgotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbGluZV9udW1iZXIsIGxpbmVfbnVtYmVyKQot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3doaXRlc3BhY2UvdGFiJywgY2F0ZWdvcnkp
Ci0gICAgICAgICAgICBzZWxmLmhhZF9lcnJvciA9IFRydWUKLQotICAgICAgICB0ZXh0X3N0eWxl
LnByb2Nlc3NfZmlsZV9kYXRhKCcnLCBsaW5lcywgZXJyb3JfZm9yX3Rlc3QpCi0gICAgICAgIHNl
bGYuYXNzZXJ0XyhzZWxmLmhhZF9lcnJvciwgJyVzIHNob3VsZCBoYXZlIGFuIGVycm9yIFt3aGl0
ZXNwYWNlL3RhYl0uJyAlIGxpbmVzKQotCi0KLSAgICBkZWYgdGVzdF9ub19lcnJvcihzZWxmKToK
LSAgICAgICAgIiIiVGVzdHMgZm9yIG5vIGVycm9yIGNhc2VzLiIiIgotICAgICAgICBzZWxmLmFz
c2VydE5vRXJyb3IoWycnXSkKLSAgICAgICAgc2VsZi5hc3NlcnROb0Vycm9yKFsnYWJjIGRlZics
ICdnZ2cnXSkKLQotCi0gICAgZGVmIHRlc3RfZXJyb3Ioc2VsZik6Ci0gICAgICAgICIiIlRlc3Rz
IGZvciBlcnJvciBjYXNlcy4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcnJvcihbJzIwMDktMTIt
MTZcdEtlbnQgVGFtdXJhXHQ8dGtlbnRAY2hyb21pdW0ub3JnPiddLCAxKQotICAgICAgICBzZWxm
LmFzc2VydEVycm9yKFsnMjAwOS0xMi0xNiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3Jn
PicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAnXHRSZXZpZXdlZCBieSBOT0JPRFkuJ10sIDMpCi0KLQotY2xhc3MgVGV4dFByb2Nlc3Nv
clRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdHMgVGV4dFByb2Nlc3NvciBj
bGFzcy4iIiIKLQotICAgIGRlZiBtb2NrX2hhbmRsZV9zdHlsZV9lcnJvcihzZWxmKToKLSAgICAg
ICAgcGFzcwotCi0gICAgZGVmIHRlc3RfaW5pdChzZWxmKToKLSAgICAgICAgIiIiVGVzdCBfX2lu
aXRfXyBjb25zdHJ1Y3Rvci4iIiIKLSAgICAgICAgcHJvY2Vzc29yID0gVGV4dFByb2Nlc3Nvcigi
Zm9vLnR4dCIsIHNlbGYubW9ja19oYW5kbGVfc3R5bGVfZXJyb3IpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHByb2Nlc3Nvci5maWxlX3BhdGgsICJmb28udHh0IikKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMocHJvY2Vzc29yLmhhbmRsZV9zdHlsZV9lcnJvciwgc2VsZi5tb2NrX2hhbmRs
ZV9zdHlsZV9lcnJvcikKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0
ZXN0Lm1haW4oKQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS91bml0
dGVzdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS91bml0dGVzdHMucHkJKHJldmlzaW9uIDUzODQxKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS91bml0dGVzdHMucHkJKHdvcmtpbmcgY29weSkKQEAgLTM2LDUgKzM2LDUg
QEAgaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gY2hlY2tlcl91bml0dGVzdCBp
bXBvcnQgKgotZnJvbSBjcHBfc3R5bGVfdW5pdHRlc3QgaW1wb3J0ICoKLWZyb20gdGV4dF9zdHls
ZV91bml0dGVzdCBpbXBvcnQgKgorZnJvbSBwcm9jZXNzb3JzLmNwcF91bml0dGVzdCBpbXBvcnQg
KgorZnJvbSBwcm9jZXNzb3JzLnRleHRfdW5pdHRlc3QgaW1wb3J0ICoKSW5kZXg6IFdlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9fX2luaXRfXy5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvX19p
bml0X18ucHkJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL3Byb2Nlc3NvcnMvX19pbml0X18ucHkJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKyMg
UmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBm
aWxlcwpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3Jz
L2NwcC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L3Byb2Nlc3NvcnMvY3BwLnB5CShyZXZpc2lvbiA1Mzg0MSkJKGZyb20gV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGUucHk6NTM4NDEpCisrKyBXZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY3BwLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjkwOCBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMgLSotIGNvZGluZzogdXRmLTgg
LSotCisjCisjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4KKyMgQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChD
KSAyMDEwIENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyMgVGhpcyBpcyB0aGUgbW9kaWZpZWQgdmVyc2lvbiBvZiBHb29nbGUncyBjcHBsaW50
LiBUaGUgb3JpZ2luYWwgY29kZSBpcworIyBodHRwOi8vZ29vZ2xlLXN0eWxlZ3VpZGUuZ29vZ2xl
Y29kZS5jb20vc3ZuL3RydW5rL2NwcGxpbnQvY3BwbGludC5weQorCisiIiJTdXBwb3J0IGZvciBj
aGVjay13ZWJraXQtc3R5bGUuIiIiCisKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBtYXRoICAjIGZv
ciBsb2cKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCByZQoraW1wb3J0IHNyZV9j
b21waWxlCitpbXBvcnQgc3RyaW5nCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pY29kZWRhdGEKKwor
CisjIEhlYWRlcnMgdGhhdCB3ZSBjb25zaWRlciBTVEwgaGVhZGVycy4KK19TVExfSEVBREVSUyA9
IGZyb3plbnNldChbCisgICAgJ2FsZ29iYXNlLmgnLCAnYWxnb3JpdGhtJywgJ2FsbG9jLmgnLCAn
Yml0c2V0JywgJ2RlcXVlJywgJ2V4Y2VwdGlvbicsCisgICAgJ2Z1bmN0aW9uLmgnLCAnZnVuY3Rp
b25hbCcsICdoYXNoX21hcCcsICdoYXNoX21hcC5oJywgJ2hhc2hfc2V0JywKKyAgICAnaGFzaF9z
ZXQuaCcsICdpdGVyYXRvcicsICdsaXN0JywgJ2xpc3QuaCcsICdtYXAnLCAnbWVtb3J5JywgJ3Bh
aXIuaCcsCisgICAgJ3B0aHJlYWRfYWxsb2MnLCAncXVldWUnLCAnc2V0JywgJ3NldC5oJywgJ3Nz
dHJlYW0nLCAnc3RhY2snLAorICAgICdzdGxfYWxsb2MuaCcsICdzdGxfcmVsb3BzLmgnLCAndHlw
ZV90cmFpdHMuaCcsCisgICAgJ3V0aWxpdHknLCAndmVjdG9yJywgJ3ZlY3Rvci5oJywKKyAgICBd
KQorCisKKyMgTm9uLVNUTCBDKysgc3lzdGVtIGhlYWRlcnMuCitfQ1BQX0hFQURFUlMgPSBmcm96
ZW5zZXQoWworICAgICdhbGdvLmgnLCAnYnVpbHRpbmJ1Zi5oJywgJ2J2ZWN0b3IuaCcsICdjYXNz
ZXJ0JywgJ2NjdHlwZScsCisgICAgJ2NlcnJubycsICdjZmxvYXQnLCAnY2lzbzY0NicsICdjbGlt
aXRzJywgJ2Nsb2NhbGUnLCAnY21hdGgnLAorICAgICdjb21wbGV4JywgJ2NvbXBsZXguaCcsICdj
c2V0am1wJywgJ2NzaWduYWwnLCAnY3N0ZGFyZycsICdjc3RkZGVmJywKKyAgICAnY3N0ZGlvJywg
J2NzdGRsaWInLCAnY3N0cmluZycsICdjdGltZScsICdjd2NoYXInLCAnY3djdHlwZScsCisgICAg
J2RlZmFsbG9jLmgnLCAnZGVxdWUuaCcsICdlZGl0YnVmLmgnLCAnZXhjZXB0aW9uJywgJ2ZzdHJl
YW0nLAorICAgICdmc3RyZWFtLmgnLCAnaGFzaHRhYmxlLmgnLCAnaGVhcC5oJywgJ2luZHN0cmVh
bS5oJywgJ2lvbWFuaXAnLAorICAgICdpb21hbmlwLmgnLCAnaW9zJywgJ2lvc2Z3ZCcsICdpb3N0
cmVhbScsICdpb3N0cmVhbS5oJywgJ2lzdHJlYW0uaCcsCisgICAgJ2l0ZXJhdG9yLmgnLCAnbGlt
aXRzJywgJ21hcC5oJywgJ211bHRpbWFwLmgnLCAnbXVsdGlzZXQuaCcsCisgICAgJ251bWVyaWMn
LCAnb3N0cmVhbS5oJywgJ3BhcnNlc3RyZWFtLmgnLCAncGZzdHJlYW0uaCcsICdQbG90RmlsZS5o
JywKKyAgICAncHJvY2J1Zi5oJywgJ3B0aHJlYWRfYWxsb2MuaCcsICdyb3BlJywgJ3JvcGUuaCcs
ICdyb3BlaW1wbC5oJywKKyAgICAnU0ZpbGUuaCcsICdzbGlzdCcsICdzbGlzdC5oJywgJ3N0YWNr
LmgnLCAnc3RkZXhjZXB0JywKKyAgICAnc3RkaW9zdHJlYW0uaCcsICdzdHJlYW1idWYuaCcsICdz
dHJlYW0uaCcsICdzdHJmaWxlLmgnLCAnc3RyaW5nJywKKyAgICAnc3Ryc3RyZWFtJywgJ3N0cnN0
cmVhbS5oJywgJ3RlbXBidWYuaCcsICd0cmVlLmgnLCAndHlwZWluZm8nLCAndmFsYXJyYXknLAor
ICAgIF0pCisKKworIyBBc3NlcnRpb24gbWFjcm9zLiAgVGhlc2UgYXJlIGRlZmluZWQgaW4gYmFz
ZS9sb2dnaW5nLmggYW5kCisjIHRlc3RpbmcvYmFzZS9ndW5pdC5oLiAgTm90ZSB0aGF0IHRoZSBf
TSB2ZXJzaW9ucyBuZWVkIHRvIGNvbWUgZmlyc3QKKyMgZm9yIHN1YnN0cmluZyBtYXRjaGluZyB0
byB3b3JrLgorX0NIRUNLX01BQ1JPUyA9IFsKKyAgICAnRENIRUNLJywgJ0NIRUNLJywKKyAgICAn
RVhQRUNUX1RSVUVfTScsICdFWFBFQ1RfVFJVRScsCisgICAgJ0FTU0VSVF9UUlVFX00nLCAnQVNT
RVJUX1RSVUUnLAorICAgICdFWFBFQ1RfRkFMU0VfTScsICdFWFBFQ1RfRkFMU0UnLAorICAgICdB
U1NFUlRfRkFMU0VfTScsICdBU1NFUlRfRkFMU0UnLAorICAgIF0KKworIyBSZXBsYWNlbWVudCBt
YWNyb3MgZm9yIENIRUNLL0RDSEVDSy9FWFBFQ1RfVFJVRS9FWFBFQ1RfRkFMU0UKK19DSEVDS19S
RVBMQUNFTUVOVCA9IGRpY3QoWyhtLCB7fSkgZm9yIG0gaW4gX0NIRUNLX01BQ1JPU10pCisKK2Zv
ciBvcCwgcmVwbGFjZW1lbnQgaW4gWygnPT0nLCAnRVEnKSwgKCchPScsICdORScpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgKCc+PScsICdHRScpLCAoJz4nLCAnR1QnKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICgnPD0nLCAnTEUnKSwgKCc8JywgJ0xUJyldOgorICAgIF9DSEVDS19SRVBM
QUNFTUVOVFsnRENIRUNLJ11bb3BdID0gJ0RDSEVDS18lcycgJSByZXBsYWNlbWVudAorICAgIF9D
SEVDS19SRVBMQUNFTUVOVFsnQ0hFQ0snXVtvcF0gPSAnQ0hFQ0tfJXMnICUgcmVwbGFjZW1lbnQK
KyAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0VYUEVDVF9UUlVFJ11bb3BdID0gJ0VYUEVDVF8lcycg
JSByZXBsYWNlbWVudAorICAgIF9DSEVDS19SRVBMQUNFTUVOVFsnQVNTRVJUX1RSVUUnXVtvcF0g
PSAnQVNTRVJUXyVzJyAlIHJlcGxhY2VtZW50CisgICAgX0NIRUNLX1JFUExBQ0VNRU5UWydFWFBF
Q1RfVFJVRV9NJ11bb3BdID0gJ0VYUEVDVF8lc19NJyAlIHJlcGxhY2VtZW50CisgICAgX0NIRUNL
X1JFUExBQ0VNRU5UWydBU1NFUlRfVFJVRV9NJ11bb3BdID0gJ0FTU0VSVF8lc19NJyAlIHJlcGxh
Y2VtZW50CisKK2ZvciBvcCwgaW52X3JlcGxhY2VtZW50IGluIFsoJz09JywgJ05FJyksICgnIT0n
LCAnRVEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJz49JywgJ0xUJyksICgnPics
ICdMRScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPD0nLCAnR1QnKSwgKCc8Jywg
J0dFJyldOgorICAgIF9DSEVDS19SRVBMQUNFTUVOVFsnRVhQRUNUX0ZBTFNFJ11bb3BdID0gJ0VY
UEVDVF8lcycgJSBpbnZfcmVwbGFjZW1lbnQKKyAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0FTU0VS
VF9GQUxTRSddW29wXSA9ICdBU1NFUlRfJXMnICUgaW52X3JlcGxhY2VtZW50CisgICAgX0NIRUNL
X1JFUExBQ0VNRU5UWydFWFBFQ1RfRkFMU0VfTSddW29wXSA9ICdFWFBFQ1RfJXNfTScgJSBpbnZf
cmVwbGFjZW1lbnQKKyAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0FTU0VSVF9GQUxTRV9NJ11bb3Bd
ID0gJ0FTU0VSVF8lc19NJyAlIGludl9yZXBsYWNlbWVudAorCisKKyMgVGhlc2UgY29uc3RhbnRz
IGRlZmluZSB0eXBlcyBvZiBoZWFkZXJzIGZvciB1c2Ugd2l0aAorIyBfSW5jbHVkZVN0YXRlLmNo
ZWNrX25leHRfaW5jbHVkZV9vcmRlcigpLgorX0NPTkZJR19IRUFERVIgPSAwCitfUFJJTUFSWV9I
RUFERVIgPSAxCitfT1RIRVJfSEVBREVSID0gMgorX01PQ19IRUFERVIgPSAzCisKKworIyBUaGUg
cmVnZXhwIGNvbXBpbGF0aW9uIGNhY2hpbmcgaXMgaW5saW5lZCBpbiBhbGwgcmVnZXhwIGZ1bmN0
aW9ucyBmb3IKKyMgcGVyZm9ybWFuY2UgcmVhc29uczsgZmFjdG9yaW5nIGl0IG91dCBpbnRvIGEg
c2VwYXJhdGUgZnVuY3Rpb24gdHVybnMgb3V0CisjIHRvIGJlIG5vdGljZWFibHkgZXhwZW5zaXZl
LgorX3JlZ2V4cF9jb21waWxlX2NhY2hlID0ge30KKworCitkZWYgbWF0Y2gocGF0dGVybiwgcyk6
CisgICAgIiIiTWF0Y2hlcyB0aGUgc3RyaW5nIHdpdGggdGhlIHBhdHRlcm4sIGNhY2hpbmcgdGhl
IGNvbXBpbGVkIHJlZ2V4cC4iIiIKKyAgICBpZiBub3QgcGF0dGVybiBpbiBfcmVnZXhwX2NvbXBp
bGVfY2FjaGU6CisgICAgICAgIF9yZWdleHBfY29tcGlsZV9jYWNoZVtwYXR0ZXJuXSA9IHNyZV9j
b21waWxlLmNvbXBpbGUocGF0dGVybikKKyAgICByZXR1cm4gX3JlZ2V4cF9jb21waWxlX2NhY2hl
W3BhdHRlcm5dLm1hdGNoKHMpCisKKworZGVmIHNlYXJjaChwYXR0ZXJuLCBzKToKKyAgICAiIiJT
ZWFyY2hlcyB0aGUgc3RyaW5nIGZvciB0aGUgcGF0dGVybiwgY2FjaGluZyB0aGUgY29tcGlsZWQg
cmVnZXhwLiIiIgorICAgIGlmIG5vdCBwYXR0ZXJuIGluIF9yZWdleHBfY29tcGlsZV9jYWNoZToK
KyAgICAgICAgX3JlZ2V4cF9jb21waWxlX2NhY2hlW3BhdHRlcm5dID0gc3JlX2NvbXBpbGUuY29t
cGlsZShwYXR0ZXJuKQorICAgIHJldHVybiBfcmVnZXhwX2NvbXBpbGVfY2FjaGVbcGF0dGVybl0u
c2VhcmNoKHMpCisKKworZGVmIHN1YihwYXR0ZXJuLCByZXBsYWNlbWVudCwgcyk6CisgICAgIiIi
U3Vic3RpdHV0ZXMgb2NjdXJyZW5jZXMgb2YgYSBwYXR0ZXJuLCBjYWNoaW5nIHRoZSBjb21waWxl
ZCByZWdleHAuIiIiCisgICAgaWYgbm90IHBhdHRlcm4gaW4gX3JlZ2V4cF9jb21waWxlX2NhY2hl
OgorICAgICAgICBfcmVnZXhwX2NvbXBpbGVfY2FjaGVbcGF0dGVybl0gPSBzcmVfY29tcGlsZS5j
b21waWxlKHBhdHRlcm4pCisgICAgcmV0dXJuIF9yZWdleHBfY29tcGlsZV9jYWNoZVtwYXR0ZXJu
XS5zdWIocmVwbGFjZW1lbnQsIHMpCisKKworZGVmIHN1Ym4ocGF0dGVybiwgcmVwbGFjZW1lbnQs
IHMpOgorICAgICIiIlN1YnN0aXR1dGVzIG9jY3VycmVuY2VzIG9mIGEgcGF0dGVybiwgY2FjaGlu
ZyB0aGUgY29tcGlsZWQgcmVnZXhwLiIiIgorICAgIGlmIG5vdCBwYXR0ZXJuIGluIF9yZWdleHBf
Y29tcGlsZV9jYWNoZToKKyAgICAgICAgX3JlZ2V4cF9jb21waWxlX2NhY2hlW3BhdHRlcm5dID0g
c3JlX2NvbXBpbGUuY29tcGlsZShwYXR0ZXJuKQorICAgIHJldHVybiBfcmVnZXhwX2NvbXBpbGVf
Y2FjaGVbcGF0dGVybl0uc3VibihyZXBsYWNlbWVudCwgcykKKworCitjbGFzcyBfSW5jbHVkZVN0
YXRlKGRpY3QpOgorICAgICIiIlRyYWNrcyBsaW5lIG51bWJlcnMgZm9yIGluY2x1ZGVzLCBhbmQg
dGhlIG9yZGVyIGluIHdoaWNoIGluY2x1ZGVzIGFwcGVhci4KKworICAgIEFzIGEgZGljdCwgYW4g
X0luY2x1ZGVTdGF0ZSBvYmplY3Qgc2VydmVzIGFzIGEgbWFwcGluZyBiZXR3ZWVuIGluY2x1ZGUK
KyAgICBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIgb24gd2hpY2ggdGhhdCBmaWxlIHdhcyBpbmNs
dWRlZC4KKworICAgIENhbGwgY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKCkgb25jZSBmb3IgZWFj
aCBoZWFkZXIgaW4gdGhlIGZpbGUsIHBhc3NpbmcKKyAgICBpbiB0aGUgdHlwZSBjb25zdGFudHMg
ZGVmaW5lZCBhYm92ZS4gQ2FsbHMgaW4gYW4gaWxsZWdhbCBvcmRlciB3aWxsCisgICAgcmFpc2Ug
YW4gX0luY2x1ZGVFcnJvciB3aXRoIGFuIGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2UuCisKKyAg
ICAiIiIKKyAgICAjIHNlbGYuX3NlY3Rpb24gd2lsbCBtb3ZlIG1vbm90b25pY2FsbHkgdGhyb3Vn
aCB0aGlzIHNldC4gSWYgaXQgZXZlcgorICAgICMgbmVlZHMgdG8gbW92ZSBiYWNrd2FyZHMsIGNo
ZWNrX25leHRfaW5jbHVkZV9vcmRlciB3aWxsIHJhaXNlIGFuIGVycm9yLgorICAgIF9JTklUSUFM
X1NFQ1RJT04gPSAwCisgICAgX0NPTkZJR19TRUNUSU9OID0gMQorICAgIF9QUklNQVJZX1NFQ1RJ
T04gPSAyCisgICAgX09USEVSX1NFQ1RJT04gPSAzCisKKyAgICBfVFlQRV9OQU1FUyA9IHsKKyAg
ICAgICAgX0NPTkZJR19IRUFERVI6ICdXZWJDb3JlIGNvbmZpZy5oJywKKyAgICAgICAgX1BSSU1B
UllfSEVBREVSOiAnaGVhZGVyIHRoaXMgZmlsZSBpbXBsZW1lbnRzJywKKyAgICAgICAgX09USEVS
X0hFQURFUjogJ290aGVyIGhlYWRlcicsCisgICAgICAgIF9NT0NfSEVBREVSOiAnbW9jIGZpbGUn
LAorICAgICAgICB9CisgICAgX1NFQ1RJT05fTkFNRVMgPSB7CisgICAgICAgIF9JTklUSUFMX1NF
Q1RJT046ICIuLi4gbm90aGluZy4iLAorICAgICAgICBfQ09ORklHX1NFQ1RJT046ICJXZWJDb3Jl
IGNvbmZpZy5oLiIsCisgICAgICAgIF9QUklNQVJZX1NFQ1RJT046ICdhIGhlYWRlciB0aGlzIGZp
bGUgaW1wbGVtZW50cy4nLAorICAgICAgICBfT1RIRVJfU0VDVElPTjogJ290aGVyIGhlYWRlci4n
LAorICAgICAgICB9CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIGRpY3QuX19p
bml0X18oc2VsZikKKyAgICAgICAgc2VsZi5fc2VjdGlvbiA9IHNlbGYuX0lOSVRJQUxfU0VDVElP
TgorICAgICAgICBzZWxmLl92aXNpdGVkX3ByaW1hcnlfc2VjdGlvbiA9IEZhbHNlCisgICAgICAg
IHNlbGYuaGVhZGVyX3R5cGVzID0gZGljdCgpOworCisgICAgZGVmIHZpc2l0ZWRfcHJpbWFyeV9z
ZWN0aW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdmlzaXRlZF9wcmltYXJ5X3NlY3Rp
b24KKworICAgIGRlZiBjaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoc2VsZiwgaGVhZGVyX3R5cGUs
IGZpbGVfaXNfaGVhZGVyKToKKyAgICAgICAgIiIiUmV0dXJucyBhIG5vbi1lbXB0eSBlcnJvciBt
ZXNzYWdlIGlmIHRoZSBuZXh0IGhlYWRlciBpcyBvdXQgb2Ygb3JkZXIuCisKKyAgICAgICAgVGhp
cyBmdW5jdGlvbiBhbHNvIHVwZGF0ZXMgdGhlIGludGVybmFsIHN0YXRlIHRvIGJlIHJlYWR5IHRv
IGNoZWNrCisgICAgICAgIHRoZSBuZXh0IGluY2x1ZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAg
ICAgICBoZWFkZXJfdHlwZTogT25lIG9mIHRoZSBfWFhYX0hFQURFUiBjb25zdGFudHMgZGVmaW5l
ZCBhYm92ZS4KKyAgICAgICAgICBmaWxlX2lzX2hlYWRlcjogV2hldGhlciB0aGUgZmlsZSB0aGF0
IG93bnMgdGhpcyBfSW5jbHVkZVN0YXRlIGlzIGl0c2VsZiBhIGhlYWRlcgorCisgICAgICAgIFJl
dHVybnM6CisgICAgICAgICAgVGhlIGVtcHR5IHN0cmluZyBpZiB0aGUgaGVhZGVyIGlzIGluIHRo
ZSByaWdodCBvcmRlciwgb3IgYW4KKyAgICAgICAgICBlcnJvciBtZXNzYWdlIGRlc2NyaWJpbmcg
d2hhdCdzIHdyb25nLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBoZWFkZXJfdHlwZSA9PSBf
Q09ORklHX0hFQURFUiBhbmQgZmlsZV9pc19oZWFkZXI6CisgICAgICAgICAgICByZXR1cm4gJ0hl
YWRlciBmaWxlIHNob3VsZCBub3QgY29udGFpbiBXZWJDb3JlIGNvbmZpZy5oLicKKyAgICAgICAg
aWYgaGVhZGVyX3R5cGUgPT0gX1BSSU1BUllfSEVBREVSIGFuZCBmaWxlX2lzX2hlYWRlcjoKKyAg
ICAgICAgICAgIHJldHVybiAnSGVhZGVyIGZpbGUgc2hvdWxkIG5vdCBjb250YWluIGl0c2VsZi4n
CisgICAgICAgIGlmIGhlYWRlcl90eXBlID09IF9NT0NfSEVBREVSOgorICAgICAgICAgICAgcmV0
dXJuICcnCisKKyAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICcnCisgICAgICAgIGlmIHNlbGYuX3Nl
Y3Rpb24gIT0gc2VsZi5fT1RIRVJfU0VDVElPTjoKKyAgICAgICAgICAgIGJlZm9yZV9lcnJvcl9t
ZXNzYWdlID0gKCdGb3VuZCAlcyBiZWZvcmUgJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChzZWxmLl9UWVBFX05BTUVTW2hlYWRlcl90eXBlXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9TRUNUSU9OX05BTUVTW3NlbGYuX3NlY3Rp
b24gKyAxXSkpCisgICAgICAgIGFmdGVyX2Vycm9yX21lc3NhZ2UgPSAoJ0ZvdW5kICVzIGFmdGVy
ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9UWVBFX05BTUVT
W2hlYWRlcl90eXBlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1NF
Q1RJT05fTkFNRVNbc2VsZi5fc2VjdGlvbl0pKQorCisgICAgICAgIGlmIGhlYWRlcl90eXBlID09
IF9DT05GSUdfSEVBREVSOgorICAgICAgICAgICAgaWYgc2VsZi5fc2VjdGlvbiA+PSBzZWxmLl9D
T05GSUdfU0VDVElPTjoKKyAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gYWZ0ZXJfZXJy
b3JfbWVzc2FnZQorICAgICAgICAgICAgc2VsZi5fc2VjdGlvbiA9IHNlbGYuX0NPTkZJR19TRUNU
SU9OCisgICAgICAgIGVsaWYgaGVhZGVyX3R5cGUgPT0gX1BSSU1BUllfSEVBREVSOgorICAgICAg
ICAgICAgaWYgc2VsZi5fc2VjdGlvbiA+PSBzZWxmLl9QUklNQVJZX1NFQ1RJT046CisgICAgICAg
ICAgICAgICAgZXJyb3JfbWVzc2FnZSA9IGFmdGVyX2Vycm9yX21lc3NhZ2UKKyAgICAgICAgICAg
IGVsaWYgc2VsZi5fc2VjdGlvbiA8IHNlbGYuX0NPTkZJR19TRUNUSU9OOgorICAgICAgICAgICAg
ICAgIGVycm9yX21lc3NhZ2UgPSBiZWZvcmVfZXJyb3JfbWVzc2FnZQorICAgICAgICAgICAgc2Vs
Zi5fc2VjdGlvbiA9IHNlbGYuX1BSSU1BUllfU0VDVElPTgorICAgICAgICAgICAgc2VsZi5fdmlz
aXRlZF9wcmltYXJ5X3NlY3Rpb24gPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBh
c3NlcnQgaGVhZGVyX3R5cGUgPT0gX09USEVSX0hFQURFUgorICAgICAgICAgICAgaWYgbm90IGZp
bGVfaXNfaGVhZGVyIGFuZCBzZWxmLl9zZWN0aW9uIDwgc2VsZi5fUFJJTUFSWV9TRUNUSU9OOgor
ICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSBiZWZvcmVfZXJyb3JfbWVzc2FnZQorICAg
ICAgICAgICAgc2VsZi5fc2VjdGlvbiA9IHNlbGYuX09USEVSX1NFQ1RJT04KKworICAgICAgICBy
ZXR1cm4gZXJyb3JfbWVzc2FnZQorCisKK2NsYXNzIF9GdW5jdGlvblN0YXRlKG9iamVjdCk6Cisg
ICAgIiIiVHJhY2tzIGN1cnJlbnQgZnVuY3Rpb24gbmFtZSBhbmQgdGhlIG51bWJlciBvZiBsaW5l
cyBpbiBpdHMgYm9keS4KKworICAgIEF0dHJpYnV0ZXM6CisgICAgICB2ZXJib3NpdHk6IFRoZSB2
ZXJib3NpdHkgbGV2ZWwgdG8gdXNlIHdoaWxlIGNoZWNraW5nIHN0eWxlLgorCisgICAgIiIiCisK
KyAgICBfTk9STUFMX1RSSUdHRVIgPSAyNTAgICMgZm9yIC0tdj0wLCA1MDAgZm9yIC0tdj0xLCBl
dGMuCisgICAgX1RFU1RfVFJJR0dFUiA9IDQwMCAgICAjIGFib3V0IDUwJSBtb3JlIHRoYW4gX05P
Uk1BTF9UUklHR0VSLgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZlcmJvc2l0eSk6CisgICAg
ICAgIHNlbGYudmVyYm9zaXR5ID0gdmVyYm9zaXR5CisgICAgICAgIHNlbGYuaW5fYV9mdW5jdGlv
biA9IEZhbHNlCisgICAgICAgIHNlbGYubGluZXNfaW5fZnVuY3Rpb24gPSAwCisgICAgICAgIHNl
bGYuY3VycmVudF9mdW5jdGlvbiA9ICcnCisKKyAgICBkZWYgYmVnaW4oc2VsZiwgZnVuY3Rpb25f
bmFtZSk6CisgICAgICAgICIiIlN0YXJ0IGFuYWx5emluZyBmdW5jdGlvbiBib2R5LgorCisgICAg
ICAgIEFyZ3M6CisgICAgICAgICAgICBmdW5jdGlvbl9uYW1lOiBUaGUgbmFtZSBvZiB0aGUgZnVu
Y3Rpb24gYmVpbmcgdHJhY2tlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuaW5fYV9mdW5j
dGlvbiA9IFRydWUKKyAgICAgICAgc2VsZi5saW5lc19pbl9mdW5jdGlvbiA9IDAKKyAgICAgICAg
c2VsZi5jdXJyZW50X2Z1bmN0aW9uID0gZnVuY3Rpb25fbmFtZQorCisgICAgZGVmIGNvdW50KHNl
bGYpOgorICAgICAgICAiIiJDb3VudCBsaW5lIGluIGN1cnJlbnQgZnVuY3Rpb24gYm9keS4iIiIK
KyAgICAgICAgaWYgc2VsZi5pbl9hX2Z1bmN0aW9uOgorICAgICAgICAgICAgc2VsZi5saW5lc19p
bl9mdW5jdGlvbiArPSAxCisKKyAgICBkZWYgY2hlY2soc2VsZiwgZXJyb3IsIGZpbGVuYW1lLCBs
aW5lX251bWJlcik6CisgICAgICAgICIiIlJlcG9ydCBpZiB0b28gbWFueSBsaW5lcyBpbiBmdW5j
dGlvbiBib2R5LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZXJyb3I6IFRoZSBmdW5jdGlv
biB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KKyAgICAgICAgICBmaWxlbmFtZTogVGhl
IG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgICAgICBsaW5lX251bWJlcjogVGhlIG51
bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG1hdGNo
KHInVChFU1R8ZXN0KScsIHNlbGYuY3VycmVudF9mdW5jdGlvbik6CisgICAgICAgICAgICBiYXNl
X3RyaWdnZXIgPSBzZWxmLl9URVNUX1RSSUdHRVIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IGJhc2VfdHJpZ2dlciA9IHNlbGYuX05PUk1BTF9UUklHR0VSCisgICAgICAgIHRyaWdnZXIgPSBi
YXNlX3RyaWdnZXIgKiAyICoqIHNlbGYudmVyYm9zaXR5CisKKyAgICAgICAgaWYgc2VsZi5saW5l
c19pbl9mdW5jdGlvbiA+IHRyaWdnZXI6CisgICAgICAgICAgICBlcnJvcl9sZXZlbCA9IGludCht
YXRoLmxvZyhzZWxmLmxpbmVzX2luX2Z1bmN0aW9uIC8gYmFzZV90cmlnZ2VyLCAyKSkKKyAgICAg
ICAgICAgICMgNTAgPT4gMCwgMTAwID0+IDEsIDIwMCA9PiAyLCA0MDAgPT4gMywgODAwID0+IDQs
IDE2MDAgPT4gNSwgLi4uCisgICAgICAgICAgICBpZiBlcnJvcl9sZXZlbCA+IDU6CisgICAgICAg
ICAgICAgICAgZXJyb3JfbGV2ZWwgPSA1CisgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwg
J3JlYWRhYmlsaXR5L2ZuX3NpemUnLCBlcnJvcl9sZXZlbCwKKyAgICAgICAgICAgICAgICAgICdT
bWFsbCBhbmQgZm9jdXNlZCBmdW5jdGlvbnMgYXJlIHByZWZlcnJlZDonCisgICAgICAgICAgICAg
ICAgICAnICVzIGhhcyAlZCBub24tY29tbWVudCBsaW5lcycKKyAgICAgICAgICAgICAgICAgICcg
KGVycm9yIHRyaWdnZXJlZCBieSBleGNlZWRpbmcgJWQgbGluZXMpLicgICUgKAorICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuY3VycmVudF9mdW5jdGlvbiwgc2VsZi5saW5lc19pbl9mdW5jdGlv
biwgdHJpZ2dlcikpCisKKyAgICBkZWYgZW5kKHNlbGYpOgorICAgICAgICAiIiJTdG9wIGFuYWxp
emluZyBmdW5jdGlvbiBib2R5LiIiIgorICAgICAgICBzZWxmLmluX2FfZnVuY3Rpb24gPSBGYWxz
ZQorCisKK2NsYXNzIF9JbmNsdWRlRXJyb3IoRXhjZXB0aW9uKToKKyAgICAiIiJJbmRpY2F0ZXMg
YSBwcm9ibGVtIHdpdGggdGhlIGluY2x1ZGUgb3JkZXIgaW4gYSBmaWxlLiIiIgorICAgIHBhc3MK
KworCitjbGFzcyBGaWxlSW5mbzoKKyAgICAiIiJQcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBm
b3IgZmlsZW5hbWVzLgorCisgICAgRmlsZUluZm8gcHJvdmlkZXMgZWFzeSBhY2Nlc3MgdG8gdGhl
IGNvbXBvbmVudHMgb2YgYSBmaWxlJ3MgcGF0aAorICAgIHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0
IHJvb3QuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUpOgorICAg
ICAgICBzZWxmLl9maWxlbmFtZSA9IGZpbGVuYW1lCisKKyAgICBkZWYgZnVsbF9uYW1lKHNlbGYp
OgorICAgICAgICAiIiJNYWtlIFdpbmRvd3MgcGF0aHMgbGlrZSBVbml4LiIiIgorICAgICAgICBy
ZXR1cm4gb3MucGF0aC5hYnNwYXRoKHNlbGYuX2ZpbGVuYW1lKS5yZXBsYWNlKCdcXCcsICcvJykK
KworICAgIGRlZiByZXBvc2l0b3J5X25hbWUoc2VsZik6CisgICAgICAgICIiIkZ1bGwgbmFtZSBh
ZnRlciByZW1vdmluZyB0aGUgbG9jYWwgcGF0aCB0byB0aGUgcmVwb3NpdG9yeS4KKworICAgICAg
ICBJZiB3ZSBoYXZlIGEgcmVhbCBhYnNvbHV0ZSBwYXRoIG5hbWUgaGVyZSB3ZSBjYW4gdHJ5IHRv
IGRvIHNvbWV0aGluZyBzbWFydDoKKyAgICAgICAgZGV0ZWN0aW5nIHRoZSByb290IG9mIHRoZSBj
aGVja291dCBhbmQgdHJ1bmNhdGluZyAvcGF0aC90by9jaGVja291dCBmcm9tCisgICAgICAgIHRo
ZSBuYW1lIHNvIHRoYXQgd2UgZ2V0IGhlYWRlciBndWFyZHMgdGhhdCBkb24ndCBpbmNsdWRlIHRo
aW5ncyBsaWtlCisgICAgICAgICJDOlxEb2N1bWVudHMgYW5kIFNldHRpbmdzXC4uLiIgb3IgIi9o
b21lL3VzZXJuYW1lLy4uLiIgaW4gdGhlbSBhbmQgdGh1cworICAgICAgICBwZW9wbGUgb24gZGlm
ZmVyZW50IGNvbXB1dGVycyB3aG8gaGF2ZSBjaGVja2VkIHRoZSBzb3VyY2Ugb3V0IHRvIGRpZmZl
cmVudAorICAgICAgICBsb2NhdGlvbnMgd29uJ3Qgc2VlIGJvZ3VzIGVycm9ycy4KKyAgICAgICAg
IiIiCisgICAgICAgIGZ1bGxuYW1lID0gc2VsZi5mdWxsX25hbWUoKQorCisgICAgICAgIGlmIG9z
LnBhdGguZXhpc3RzKGZ1bGxuYW1lKToKKyAgICAgICAgICAgIHByb2plY3RfZGlyID0gb3MucGF0
aC5kaXJuYW1lKGZ1bGxuYW1lKQorCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5w
YXRoLmpvaW4ocHJvamVjdF9kaXIsICIuc3ZuIikpOgorICAgICAgICAgICAgICAgICMgSWYgdGhl
cmUncyBhIC5zdm4gZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnksIHdlCisgICAgICAgICAg
ICAgICAgIyByZWN1cnNpdmVseSBsb29rIHVwIHRoZSBkaXJlY3RvcnkgdHJlZSBmb3IgdGhlIHRv
cAorICAgICAgICAgICAgICAgICMgb2YgdGhlIFNWTiBjaGVja291dAorICAgICAgICAgICAgICAg
IHJvb3RfZGlyID0gcHJvamVjdF9kaXIKKyAgICAgICAgICAgICAgICBvbmVfdXBfZGlyID0gb3Mu
cGF0aC5kaXJuYW1lKHJvb3RfZGlyKQorICAgICAgICAgICAgICAgIHdoaWxlIG9zLnBhdGguZXhp
c3RzKG9zLnBhdGguam9pbihvbmVfdXBfZGlyLCAiLnN2biIpKToKKyAgICAgICAgICAgICAgICAg
ICAgcm9vdF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUocm9vdF9kaXIpCisgICAgICAgICAgICAgICAg
ICAgIG9uZV91cF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob25lX3VwX2RpcikKKworICAgICAgICAg
ICAgICAgIHByZWZpeCA9IG9zLnBhdGguY29tbW9ucHJlZml4KFtyb290X2RpciwgcHJvamVjdF9k
aXJdKQorICAgICAgICAgICAgICAgIHJldHVybiBmdWxsbmFtZVtsZW4ocHJlZml4KSArIDE6XQor
CisgICAgICAgICAgICAjIE5vdCBTVk4/IFRyeSB0byBmaW5kIGEgZ2l0IHRvcCBsZXZlbCBkaXJl
Y3RvcnkgYnkKKyAgICAgICAgICAgICMgc2VhcmNoaW5nIHVwIGZyb20gdGhlIGN1cnJlbnQgcGF0
aC4KKyAgICAgICAgICAgIHJvb3RfZGlyID0gb3MucGF0aC5kaXJuYW1lKGZ1bGxuYW1lKQorICAg
ICAgICAgICAgd2hpbGUgKHJvb3RfZGlyICE9IG9zLnBhdGguZGlybmFtZShyb290X2RpcikKKyAg
ICAgICAgICAgICAgICAgICBhbmQgbm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihyb290
X2RpciwgIi5naXQiKSkpOgorICAgICAgICAgICAgICAgIHJvb3RfZGlyID0gb3MucGF0aC5kaXJu
YW1lKHJvb3RfZGlyKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGgu
am9pbihyb290X2RpciwgIi5naXQiKSk6CisgICAgICAgICAgICAgICAgICAgIHByZWZpeCA9IG9z
LnBhdGguY29tbW9ucHJlZml4KFtyb290X2RpciwgcHJvamVjdF9kaXJdKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZnVsbG5hbWVbbGVuKHByZWZpeCkgKyAxOl0KKworICAgICAgICAjIERv
bid0IGtub3cgd2hhdCB0byBkbzsgaGVhZGVyIGd1YXJkIHdhcm5pbmdzIG1heSBiZSB3cm9uZy4u
LgorICAgICAgICByZXR1cm4gZnVsbG5hbWUKKworICAgIGRlZiBzcGxpdChzZWxmKToKKyAgICAg
ICAgIiIiU3BsaXRzIHRoZSBmaWxlIGludG8gdGhlIGRpcmVjdG9yeSwgYmFzZW5hbWUsIGFuZCBl
eHRlbnNpb24uCisKKyAgICAgICAgRm9yICdjaHJvbWUvYnJvd3Nlci9icm93c2VyLmNwcCcsIFNw
bGl0KCkgd291bGQKKyAgICAgICAgcmV0dXJuICgnY2hyb21lL2Jyb3dzZXInLCAnYnJvd3Nlcics
ICcuY3BwJykKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgIEEgdHVwbGUgb2YgKGRpcmVj
dG9yeSwgYmFzZW5hbWUsIGV4dGVuc2lvbikuCisgICAgICAgICIiIgorCisgICAgICAgIGdvb2ds
ZW5hbWUgPSBzZWxmLnJlcG9zaXRvcnlfbmFtZSgpCisgICAgICAgIHByb2plY3QsIHJlc3QgPSBv
cy5wYXRoLnNwbGl0KGdvb2dsZW5hbWUpCisgICAgICAgIHJldHVybiAocHJvamVjdCwpICsgb3Mu
cGF0aC5zcGxpdGV4dChyZXN0KQorCisgICAgZGVmIGJhc2VfbmFtZShzZWxmKToKKyAgICAgICAg
IiIiRmlsZSBiYXNlIG5hbWUgLSB0ZXh0IGFmdGVyIHRoZSBmaW5hbCBzbGFzaCwgYmVmb3JlIHRo
ZSBmaW5hbCBwZXJpb2QuIiIiCisgICAgICAgIHJldHVybiBzZWxmLnNwbGl0KClbMV0KKworICAg
IGRlZiBleHRlbnNpb24oc2VsZik6CisgICAgICAgICIiIkZpbGUgZXh0ZW5zaW9uIC0gdGV4dCBm
b2xsb3dpbmcgdGhlIGZpbmFsIHBlcmlvZC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuc3BsaXQo
KVsyXQorCisgICAgZGVmIG5vX2V4dGVuc2lvbihzZWxmKToKKyAgICAgICAgIiIiRmlsZSBoYXMg
bm8gc291cmNlIGZpbGUgZXh0ZW5zaW9uLiIiIgorICAgICAgICByZXR1cm4gJy8nLmpvaW4oc2Vs
Zi5zcGxpdCgpWzA6Ml0pCisKKyAgICBkZWYgaXNfc291cmNlKHNlbGYpOgorICAgICAgICAiIiJG
aWxlIGhhcyBhIHNvdXJjZSBmaWxlIGV4dGVuc2lvbi4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYu
ZXh0ZW5zaW9uKClbMTpdIGluICgnYycsICdjYycsICdjcHAnLCAnY3h4JykKKworCisjIE1hdGNo
ZXMgc3RhbmRhcmQgQysrIGVzY2FwZSBlc2VxdWVuY2VzIHBlciAyLjEzLjIuMyBvZiB0aGUgQysr
IHN0YW5kYXJkLgorX1JFX1BBVFRFUk5fQ0xFQU5TRV9MSU5FX0VTQ0FQRVMgPSByZS5jb21waWxl
KAorICAgIHInXFwoW2FiZm5ydHY/IlxcXCddfFxkK3x4WzAtOWEtZkEtRl0rKScpCisjIE1hdGNo
ZXMgc3RyaW5ncy4gIEVzY2FwZSBjb2RlcyBzaG91bGQgYWxyZWFkeSBiZSByZW1vdmVkIGJ5IEVT
Q0FQRVMuCitfUkVfUEFUVEVSTl9DTEVBTlNFX0xJTkVfRE9VQkxFX1FVT1RFUyA9IHJlLmNvbXBp
bGUociciW14iXSoiJykKKyMgTWF0Y2hlcyBjaGFyYWN0ZXJzLiAgRXNjYXBlIGNvZGVzIHNob3Vs
ZCBhbHJlYWR5IGJlIHJlbW92ZWQgYnkgRVNDQVBFUy4KK19SRV9QQVRURVJOX0NMRUFOU0VfTElO
RV9TSU5HTEVfUVVPVEVTID0gcmUuY29tcGlsZShyIicuJyIpCisjIE1hdGNoZXMgbXVsdGktbGlu
ZSBDKysgY29tbWVudHMuCisjIFRoaXMgUkUgaXMgYSBsaXR0bGUgYml0IG1vcmUgY29tcGxpY2F0
ZWQgdGhhbiBvbmUgbWlnaHQgZXhwZWN0LCBiZWNhdXNlIHdlCisjIGhhdmUgdG8gdGFrZSBjYXJl
IG9mIHNwYWNlIHJlbW92YWxzIHRvb2xzIHNvIHdlIGNhbiBoYW5kbGUgY29tbWVudHMgaW5zaWRl
CisjIHN0YXRlbWVudHMgYmV0dGVyLgorIyBUaGUgY3VycmVudCBydWxlIGlzOiBXZSBvbmx5IGNs
ZWFyIHNwYWNlcyBmcm9tIGJvdGggc2lkZXMgd2hlbiB3ZSdyZSBhdCB0aGUKKyMgZW5kIG9mIHRo
ZSBsaW5lLiBPdGhlcndpc2UsIHdlIHRyeSB0byByZW1vdmUgc3BhY2VzIGZyb20gdGhlIHJpZ2h0
IHNpZGUsCisjIGlmIHRoaXMgZG9lc24ndCB3b3JrIHdlIHRyeSBvbiBsZWZ0IHNpZGUgYnV0IG9u
bHkgaWYgdGhlcmUncyBhIG5vbi1jaGFyYWN0ZXIKKyMgb24gdGhlIHJpZ2h0LgorX1JFX1BBVFRF
Uk5fQ0xFQU5TRV9MSU5FX0NfQ09NTUVOVFMgPSByZS5jb21waWxlKAorICAgIHIiIiIoXHMqL1wq
LipcKi9ccyokfAorICAgICAgICAgICAgL1wqLipcKi9ccyt8CisgICAgICAgICBccysvXCouKlwq
Lyg/PVxXKXwKKyAgICAgICAgICAgIC9cKi4qXCovKSIiIiwgcmUuVkVSQk9TRSkKKworCitkZWYg
aXNfY3BwX3N0cmluZyhsaW5lKToKKyAgICAiIiJEb2VzIGxpbmUgdGVybWluYXRlIHNvLCB0aGF0
IHRoZSBuZXh0IHN5bWJvbCBpcyBpbiBzdHJpbmcgY29uc3RhbnQuCisKKyAgICBUaGlzIGZ1bmN0
aW9uIGRvZXMgbm90IGNvbnNpZGVyIHNpbmdsZS1saW5lIG5vciBtdWx0aS1saW5lIGNvbW1lbnRz
LgorCisgICAgQXJnczoKKyAgICAgIGxpbmU6IGlzIGEgcGFydGlhbCBsaW5lIG9mIGNvZGUgc3Rh
cnRpbmcgZnJvbSB0aGUgMC4ubi4KKworICAgIFJldHVybnM6CisgICAgICBUcnVlLCBpZiBuZXh0
IGNoYXJhY3RlciBhcHBlbmRlZCB0byAnbGluZScgaXMgaW5zaWRlIGEKKyAgICAgIHN0cmluZyBj
b25zdGFudC4KKyAgICAiIiIKKworICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UocidcXCcsICdYWCcp
ICAjIGFmdGVyIHRoaXMsIFxcIiBkb2VzIG5vdCBtYXRjaCB0byBcIgorICAgIHJldHVybiAoKGxp
bmUuY291bnQoJyInKSAtIGxpbmUuY291bnQocidcIicpIC0gbGluZS5jb3VudCgiJ1wiJyIpKSAm
IDEpID09IDEKKworCitkZWYgZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9zdGFydChsaW5l
cywgbGluZV9pbmRleCk6CisgICAgIiIiRmluZCB0aGUgYmVnaW5uaW5nIG1hcmtlciBmb3IgYSBt
dWx0aWxpbmUgY29tbWVudC4iIiIKKyAgICB3aGlsZSBsaW5lX2luZGV4IDwgbGVuKGxpbmVzKToK
KyAgICAgICAgaWYgbGluZXNbbGluZV9pbmRleF0uc3RyaXAoKS5zdGFydHN3aXRoKCcvKicpOgor
ICAgICAgICAgICAgIyBPbmx5IHJldHVybiB0aGlzIG1hcmtlciBpZiB0aGUgY29tbWVudCBnb2Vz
IGJleW9uZCB0aGlzIGxpbmUKKyAgICAgICAgICAgIGlmIGxpbmVzW2xpbmVfaW5kZXhdLnN0cmlw
KCkuZmluZCgnKi8nLCAyKSA8IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVfaW5kZXgK
KyAgICAgICAgbGluZV9pbmRleCArPSAxCisgICAgcmV0dXJuIGxlbihsaW5lcykKKworCitkZWYg
ZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9lbmQobGluZXMsIGxpbmVfaW5kZXgpOgorICAg
ICIiIldlIGFyZSBpbnNpZGUgYSBjb21tZW50LCBmaW5kIHRoZSBlbmQgbWFya2VyLiIiIgorICAg
IHdoaWxlIGxpbmVfaW5kZXggPCBsZW4obGluZXMpOgorICAgICAgICBpZiBsaW5lc1tsaW5lX2lu
ZGV4XS5zdHJpcCgpLmVuZHN3aXRoKCcqLycpOgorICAgICAgICAgICAgcmV0dXJuIGxpbmVfaW5k
ZXgKKyAgICAgICAgbGluZV9pbmRleCArPSAxCisgICAgcmV0dXJuIGxlbihsaW5lcykKKworCitk
ZWYgcmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHNfZnJvbV9yYW5nZShsaW5lcywgYmVnaW4sIGVu
ZCk6CisgICAgIiIiQ2xlYXJzIGEgcmFuZ2Ugb2YgbGluZXMgZm9yIG11bHRpLWxpbmUgY29tbWVu
dHMuIiIiCisgICAgIyBIYXZpbmcgLy8gZHVtbXkgY29tbWVudHMgbWFrZXMgdGhlIGxpbmVzIG5v
bi1lbXB0eSwgc28gd2Ugd2lsbCBub3QgZ2V0CisgICAgIyB1bm5lY2Vzc2FyeSBibGFuayBsaW5l
IHdhcm5pbmdzIGxhdGVyIGluIHRoZSBjb2RlLgorICAgIGZvciBpIGluIHJhbmdlKGJlZ2luLCBl
bmQpOgorICAgICAgICBsaW5lc1tpXSA9ICcvLyBkdW1teScKKworCitkZWYgcmVtb3ZlX211bHRp
X2xpbmVfY29tbWVudHMoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcik6CisgICAgIiIiUmVtb3ZlcyBt
dWx0aWxpbmUgKGMtc3R5bGUpIGNvbW1lbnRzIGZyb20gbGluZXMuIiIiCisgICAgbGluZV9pbmRl
eCA9IDAKKyAgICB3aGlsZSBsaW5lX2luZGV4IDwgbGVuKGxpbmVzKToKKyAgICAgICAgbGluZV9p
bmRleF9iZWdpbiA9IGZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfc3RhcnQobGluZXMsIGxp
bmVfaW5kZXgpCisgICAgICAgIGlmIGxpbmVfaW5kZXhfYmVnaW4gPj0gbGVuKGxpbmVzKToKKyAg
ICAgICAgICAgIHJldHVybgorICAgICAgICBsaW5lX2luZGV4X2VuZCA9IGZpbmRfbmV4dF9tdWx0
aV9saW5lX2NvbW1lbnRfZW5kKGxpbmVzLCBsaW5lX2luZGV4X2JlZ2luKQorICAgICAgICBpZiBs
aW5lX2luZGV4X2VuZCA+PSBsZW4obGluZXMpOgorICAgICAgICAgICAgZXJyb3IobGluZV9pbmRl
eF9iZWdpbiArIDEsICdyZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudCcsIDUsCisgICAgICAg
ICAgICAgICAgICAnQ291bGQgbm90IGZpbmQgZW5kIG9mIG11bHRpLWxpbmUgY29tbWVudCcpCisg
ICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHNfZnJv
bV9yYW5nZShsaW5lcywgbGluZV9pbmRleF9iZWdpbiwgbGluZV9pbmRleF9lbmQgKyAxKQorICAg
ICAgICBsaW5lX2luZGV4ID0gbGluZV9pbmRleF9lbmQgKyAxCisKKworZGVmIGNsZWFuc2VfY29t
bWVudHMobGluZSk6CisgICAgIiIiUmVtb3ZlcyAvLy1jb21tZW50cyBhbmQgc2luZ2xlLWxpbmUg
Qy1zdHlsZSAvKiAqLyBjb21tZW50cy4KKworICAgIEFyZ3M6CisgICAgICBsaW5lOiBBIGxpbmUg
b2YgQysrIHNvdXJjZS4KKworICAgIFJldHVybnM6CisgICAgICBUaGUgbGluZSB3aXRoIHNpbmds
ZS1saW5lIGNvbW1lbnRzIHJlbW92ZWQuCisgICAgIiIiCisgICAgY29tbWVudF9wb3NpdGlvbiA9
IGxpbmUuZmluZCgnLy8nKQorICAgIGlmIGNvbW1lbnRfcG9zaXRpb24gIT0gLTEgYW5kIG5vdCBp
c19jcHBfc3RyaW5nKGxpbmVbOmNvbW1lbnRfcG9zaXRpb25dKToKKyAgICAgICAgbGluZSA9IGxp
bmVbOmNvbW1lbnRfcG9zaXRpb25dCisgICAgIyBnZXQgcmlkIG9mIC8qIC4uLiAqLworICAgIHJl
dHVybiBfUkVfUEFUVEVSTl9DTEVBTlNFX0xJTkVfQ19DT01NRU5UUy5zdWIoJycsIGxpbmUpCisK
KworY2xhc3MgQ2xlYW5zZWRMaW5lcyhvYmplY3QpOgorICAgICIiIkhvbGRzIDMgY29waWVzIG9m
IGFsbCBsaW5lcyB3aXRoIGRpZmZlcmVudCBwcmVwcm9jZXNzaW5nIGFwcGxpZWQgdG8gdGhlbS4K
KworICAgIDEpIGVsaWRlZCBtZW1iZXIgY29udGFpbnMgbGluZXMgd2l0aG91dCBzdHJpbmdzIGFu
ZCBjb21tZW50cywKKyAgICAyKSBsaW5lcyBtZW1iZXIgY29udGFpbnMgbGluZXMgd2l0aG91dCBj
b21tZW50cywgYW5kCisgICAgMykgcmF3IG1lbWJlciBjb250YWlucyBhbGwgdGhlIGxpbmVzIHdp
dGhvdXQgcHJvY2Vzc2luZy4KKyAgICBBbGwgdGhlc2UgdGhyZWUgbWVtYmVycyBhcmUgb2YgPHR5
cGUgJ2xpc3QnPiwgYW5kIG9mIHRoZSBzYW1lIGxlbmd0aC4KKyAgICAiIiIKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsaW5lcyk6CisgICAgICAgIHNlbGYuZWxpZGVkID0gW10KKyAgICAgICAg
c2VsZi5saW5lcyA9IFtdCisgICAgICAgIHNlbGYucmF3X2xpbmVzID0gbGluZXMKKyAgICAgICAg
c2VsZi5fbnVtX2xpbmVzID0gbGVuKGxpbmVzKQorICAgICAgICBmb3IgbGluZV9udW1iZXIgaW4g
cmFuZ2UobGVuKGxpbmVzKSk6CisgICAgICAgICAgICBzZWxmLmxpbmVzLmFwcGVuZChjbGVhbnNl
X2NvbW1lbnRzKGxpbmVzW2xpbmVfbnVtYmVyXSkpCisgICAgICAgICAgICBlbGlkZWQgPSBzZWxm
LmNvbGxhcHNlX3N0cmluZ3MobGluZXNbbGluZV9udW1iZXJdKQorICAgICAgICAgICAgc2VsZi5l
bGlkZWQuYXBwZW5kKGNsZWFuc2VfY29tbWVudHMoZWxpZGVkKSkKKworICAgIGRlZiBudW1fbGlu
ZXMoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgdGhlIG51bWJlciBvZiBsaW5lcyByZXByZXNl
bnRlZC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX251bV9saW5lcworCisgICAgQHN0YXRpY21l
dGhvZAorICAgIGRlZiBjb2xsYXBzZV9zdHJpbmdzKGVsaWRlZCk6CisgICAgICAgICIiIkNvbGxh
cHNlcyBzdHJpbmdzIGFuZCBjaGFycyBvbiBhIGxpbmUgdG8gc2ltcGxlICIiIG9yICcnIGJsb2Nr
cy4KKworICAgICAgICBXZSBuaXggc3RyaW5ncyBmaXJzdCBzbyB3ZSdyZSBub3QgZm9vbGVkIGJ5
IHRleHQgbGlrZSAnImh0dHA6Ly8iJworCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZWxpZGVk
OiBUaGUgbGluZSBiZWluZyBwcm9jZXNzZWQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAg
ICBUaGUgbGluZSB3aXRoIGNvbGxhcHNlZCBzdHJpbmdzLgorICAgICAgICAiIiIKKyAgICAgICAg
aWYgbm90IF9SRV9QQVRURVJOX0lOQ0xVREUubWF0Y2goZWxpZGVkKToKKyAgICAgICAgICAgICMg
UmVtb3ZlIGVzY2FwZWQgY2hhcmFjdGVycyBmaXJzdCB0byBtYWtlIHF1b3RlL3NpbmdsZSBxdW90
ZSBjb2xsYXBzaW5nCisgICAgICAgICAgICAjIGJhc2ljLiAgVGhpbmdzIHRoYXQgbG9vayBsaWtl
IGVzY2FwZWQgY2hhcmFjdGVycyBzaG91bGRuJ3Qgb2NjdXIKKyAgICAgICAgICAgICMgb3V0c2lk
ZSBvZiBzdHJpbmdzIGFuZCBjaGFycy4KKyAgICAgICAgICAgIGVsaWRlZCA9IF9SRV9QQVRURVJO
X0NMRUFOU0VfTElORV9FU0NBUEVTLnN1YignJywgZWxpZGVkKQorICAgICAgICAgICAgZWxpZGVk
ID0gX1JFX1BBVFRFUk5fQ0xFQU5TRV9MSU5FX1NJTkdMRV9RVU9URVMuc3ViKCInJyIsIGVsaWRl
ZCkKKyAgICAgICAgICAgIGVsaWRlZCA9IF9SRV9QQVRURVJOX0NMRUFOU0VfTElORV9ET1VCTEVf
UVVPVEVTLnN1YignIiInLCBlbGlkZWQpCisgICAgICAgIHJldHVybiBlbGlkZWQKKworCitkZWYg
Y2xvc2VfZXhwcmVzc2lvbihjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIHBvcyk6CisgICAgIiIi
SWYgaW5wdXQgcG9pbnRzIHRvICggb3IgeyBvciBbLCBmaW5kcyB0aGUgcG9zaXRpb24gdGhhdCBj
bG9zZXMgaXQuCisKKyAgICBJZiBsaW5lc1tsaW5lX251bWJlcl1bcG9zXSBwb2ludHMgdG8gYSAn
KCcgb3IgJ3snIG9yICdbJywgZmluZHMgdGhlIHRoZQorICAgIGxpbmVfbnVtYmVyL3BvcyB0aGF0
IGNvcnJlc3BvbmQgdG8gdGhlIGNsb3Npbmcgb2YgdGhlIGV4cHJlc3Npb24uCisKKyAgICBBcmdz
OgorICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5n
IHRoZSBmaWxlLgorICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8g
Y2hlY2suCisgICAgICBwb3M6IEEgcG9zaXRpb24gb24gdGhlIGxpbmUuCisKKyAgICBSZXR1cm5z
OgorICAgICAgQSB0dXBsZSAobGluZSwgbGluZV9udW1iZXIsIHBvcykgcG9pbnRlciAqcGFzdCog
dGhlIGNsb3NpbmcgYnJhY2UsIG9yCisgICAgICAobGluZSwgbGVuKGxpbmVzKSwgLTEpIGlmIHdl
IG5ldmVyIGZpbmQgYSBjbG9zZS4gIE5vdGUgd2UgaWdub3JlCisgICAgICBzdHJpbmdzIGFuZCBj
b21tZW50cyB3aGVuIG1hdGNoaW5nOyBhbmQgdGhlIGxpbmUgd2UgcmV0dXJuIGlzIHRoZQorICAg
ICAgJ2NsZWFuc2VkJyBsaW5lIGF0IGxpbmVfbnVtYmVyLgorICAgICIiIgorCisgICAgbGluZSA9
IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0KKyAgICBzdGFydF9jaGFyYWN0ZXIgPSBs
aW5lW3Bvc10KKyAgICBpZiBzdGFydF9jaGFyYWN0ZXIgbm90IGluICcoe1snOgorICAgICAgICBy
ZXR1cm4gKGxpbmUsIGNsZWFuX2xpbmVzLm51bV9saW5lcygpLCAtMSkKKyAgICBpZiBzdGFydF9j
aGFyYWN0ZXIgPT0gJygnOgorICAgICAgICBlbmRfY2hhcmFjdGVyID0gJyknCisgICAgaWYgc3Rh
cnRfY2hhcmFjdGVyID09ICdbJzoKKyAgICAgICAgZW5kX2NoYXJhY3RlciA9ICddJworICAgIGlm
IHN0YXJ0X2NoYXJhY3RlciA9PSAneyc6CisgICAgICAgIGVuZF9jaGFyYWN0ZXIgPSAnfScKKwor
ICAgIG51bV9vcGVuID0gbGluZS5jb3VudChzdGFydF9jaGFyYWN0ZXIpIC0gbGluZS5jb3VudChl
bmRfY2hhcmFjdGVyKQorICAgIHdoaWxlIGxpbmVfbnVtYmVyIDwgY2xlYW5fbGluZXMubnVtX2xp
bmVzKCkgYW5kIG51bV9vcGVuID4gMDoKKyAgICAgICAgbGluZV9udW1iZXIgKz0gMQorICAgICAg
ICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXQorICAgICAgICBudW1fb3Bl
biArPSBsaW5lLmNvdW50KHN0YXJ0X2NoYXJhY3RlcikgLSBsaW5lLmNvdW50KGVuZF9jaGFyYWN0
ZXIpCisgICAgIyBPSywgbm93IGZpbmQgdGhlIGVuZF9jaGFyYWN0ZXIgdGhhdCBhY3R1YWxseSBn
b3QgdXMgYmFjayB0byBldmVuCisgICAgZW5kcG9zID0gbGVuKGxpbmUpCisgICAgd2hpbGUgbnVt
X29wZW4gPj0gMDoKKyAgICAgICAgZW5kcG9zID0gbGluZS5yZmluZCgnKScsIDAsIGVuZHBvcykK
KyAgICAgICAgbnVtX29wZW4gLT0gMSAgICAgICAgICAgICAgICAgIyBjaG9wcGVkIG9mZiBhbm90
aGVyICkKKyAgICByZXR1cm4gKGxpbmUsIGxpbmVfbnVtYmVyLCBlbmRwb3MgKyAxKQorCisKK2Rl
ZiBjaGVja19mb3JfY29weXJpZ2h0KGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpOgorICAgICIiIkxv
Z3MgYW4gZXJyb3IgaWYgbm8gQ29weXJpZ2h0IG1lc3NhZ2UgYXBwZWFycyBhdCB0aGUgdG9wIG9m
IHRoZSBmaWxlLiIiIgorCisgICAgIyBXZSdsbCBzYXkgaXQgc2hvdWxkIG9jY3VyIGJ5IGxpbmUg
MTAuIERvbid0IGZvcmdldCB0aGVyZSdzIGEKKyAgICAjIGR1bW15IGxpbmUgYXQgdGhlIGZyb250
LgorICAgIGZvciBsaW5lIGluIHhyYW5nZSgxLCBtaW4obGVuKGxpbmVzKSwgMTEpKToKKyAgICAg
ICAgaWYgcmUuc2VhcmNoKHInQ29weXJpZ2h0JywgbGluZXNbbGluZV0sIHJlLkkpOgorICAgICAg
ICAgICAgYnJlYWsKKyAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgIyBtZWFucyBubyBj
b3B5cmlnaHQgbGluZSB3YXMgZm91bmQKKyAgICAgICAgZXJyb3IoMCwgJ2xlZ2FsL2NvcHlyaWdo
dCcsIDUsCisgICAgICAgICAgICAgICdObyBjb3B5cmlnaHQgbWVzc2FnZSBmb3VuZC4gICcKKyAg
ICAgICAgICAgICAgJ1lvdSBzaG91bGQgaGF2ZSBhIGxpbmU6ICJDb3B5cmlnaHQgW3llYXJdIDxD
b3B5cmlnaHQgT3duZXI+IicpCisKKworZGVmIGdldF9oZWFkZXJfZ3VhcmRfY3BwX3ZhcmlhYmxl
KGZpbGVuYW1lKToKKyAgICAiIiJSZXR1cm5zIHRoZSBDUFAgdmFyaWFibGUgdGhhdCBzaG91bGQg
YmUgdXNlZCBhcyBhIGhlYWRlciBndWFyZC4KKworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTog
VGhlIG5hbWUgb2YgYSBDKysgaGVhZGVyIGZpbGUuCisKKyAgICBSZXR1cm5zOgorICAgICAgVGhl
IENQUCB2YXJpYWJsZSB0aGF0IHNob3VsZCBiZSB1c2VkIGFzIGEgaGVhZGVyIGd1YXJkIGluIHRo
ZQorICAgICAgbmFtZWQgZmlsZS4KKworICAgICIiIgorCisgICAgcmV0dXJuIHN1YihyJ1stLlxz
XScsICdfJywgb3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkpCisKKworZGVmIGNoZWNrX2Zvcl9o
ZWFkZXJfZ3VhcmQoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcik6CisgICAgIiIiQ2hlY2tzIHRoYXQg
dGhlIGZpbGUgY29udGFpbnMgYSBoZWFkZXIgZ3VhcmQuCisKKyAgICBMb2dzIGFuIGVycm9yIGlm
IG5vICNpZm5kZWYgaGVhZGVyIGd1YXJkIGlzIHByZXNlbnQuICBGb3Igb3RoZXIKKyAgICBoZWFk
ZXJzLCBjaGVja3MgdGhhdCB0aGUgZnVsbCBwYXRobmFtZSBpcyB1c2VkLgorCisgICAgQXJnczoK
KyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgQysrIGhlYWRlciBmaWxlLgorICAgICAg
bGluZXM6IEFuIGFycmF5IG9mIHN0cmluZ3MsIGVhY2ggcmVwcmVzZW50aW5nIGEgbGluZSBvZiB0
aGUgZmlsZS4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJv
cnMgZm91bmQuCisgICAgIiIiCisKKyAgICBjcHB2YXIgPSBnZXRfaGVhZGVyX2d1YXJkX2NwcF92
YXJpYWJsZShmaWxlbmFtZSkKKworICAgIGlmbmRlZiA9IE5vbmUKKyAgICBpZm5kZWZfbGluZV9u
dW1iZXIgPSAwCisgICAgZGVmaW5lID0gTm9uZQorICAgIGZvciBsaW5lX251bWJlciwgbGluZSBp
biBlbnVtZXJhdGUobGluZXMpOgorICAgICAgICBsaW5lX3NwbGl0ID0gbGluZS5zcGxpdCgpCisg
ICAgICAgIGlmIGxlbihsaW5lX3NwbGl0KSA+PSAyOgorICAgICAgICAgICAgIyBmaW5kIHRoZSBm
aXJzdCBvY2N1cnJlbmNlIG9mICNpZm5kZWYgYW5kICNkZWZpbmUsIHNhdmUgYXJnCisgICAgICAg
ICAgICBpZiBub3QgaWZuZGVmIGFuZCBsaW5lX3NwbGl0WzBdID09ICcjaWZuZGVmJzoKKyAgICAg
ICAgICAgICAgICAjIHNldCBpZm5kZWYgdG8gdGhlIGhlYWRlciBndWFyZCBwcmVzZW50ZWQgb24g
dGhlICNpZm5kZWYgbGluZS4KKyAgICAgICAgICAgICAgICBpZm5kZWYgPSBsaW5lX3NwbGl0WzFd
CisgICAgICAgICAgICAgICAgaWZuZGVmX2xpbmVfbnVtYmVyID0gbGluZV9udW1iZXIKKyAgICAg
ICAgICAgIGlmIG5vdCBkZWZpbmUgYW5kIGxpbmVfc3BsaXRbMF0gPT0gJyNkZWZpbmUnOgorICAg
ICAgICAgICAgICAgIGRlZmluZSA9IGxpbmVfc3BsaXRbMV0KKyAgICAgICAgICAgIGlmIGRlZmlu
ZSBhbmQgaWZuZGVmOgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICBpZiBub3QgaWZuZGVm
IG9yIG5vdCBkZWZpbmUgb3IgaWZuZGVmICE9IGRlZmluZToKKyAgICAgICAgZXJyb3IoMCwgJ2J1
aWxkL2hlYWRlcl9ndWFyZCcsIDUsCisgICAgICAgICAgICAgICdObyAjaWZuZGVmIGhlYWRlciBn
dWFyZCBmb3VuZCwgc3VnZ2VzdGVkIENQUCB2YXJpYWJsZSBpczogJXMnICUKKyAgICAgICAgICAg
ICAgY3BwdmFyKQorICAgICAgICByZXR1cm4KKworICAgICMgVGhlIGd1YXJkIHNob3VsZCBiZSBG
aWxlX2guCisgICAgaWYgaWZuZGVmICE9IGNwcHZhcjoKKyAgICAgICAgZXJyb3IoaWZuZGVmX2xp
bmVfbnVtYmVyLCAnYnVpbGQvaGVhZGVyX2d1YXJkJywgNSwKKyAgICAgICAgICAgICAgJyNpZm5k
ZWYgaGVhZGVyIGd1YXJkIGhhcyB3cm9uZyBzdHlsZSwgcGxlYXNlIHVzZTogJXMnICUgY3BwdmFy
KQorCisKK2RlZiBjaGVja19mb3JfdW5pY29kZV9yZXBsYWNlbWVudF9jaGFyYWN0ZXJzKGZpbGVu
YW1lLCBsaW5lcywgZXJyb3IpOgorICAgICIiIkxvZ3MgYW4gZXJyb3IgZm9yIGVhY2ggbGluZSBj
b250YWluaW5nIFVuaWNvZGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVycy4KKworICAgIFRoZXNlIGlu
ZGljYXRlIHRoYXQgZWl0aGVyIHRoZSBmaWxlIGNvbnRhaW5lZCBpbnZhbGlkIFVURi04IChsaWtl
bHkpCisgICAgb3IgVW5pY29kZSByZXBsYWNlbWVudCBjaGFyYWN0ZXJzICh3aGljaCBpdCBzaG91
bGRuJ3QpLiAgTm90ZSB0aGF0CisgICAgaXQncyBwb3NzaWJsZSBmb3IgdGhpcyB0byB0aHJvdyBv
ZmYgbGluZSBudW1iZXJpbmcgaWYgdGhlIGludmFsaWQKKyAgICBVVEYtOCBvY2N1cnJlZCBhZGph
Y2VudCB0byBhIG5ld2xpbmUuCisKKyAgICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRoZSBuYW1l
IG9mIHRoZSBjdXJyZW50IGZpbGUuCisgICAgICBsaW5lczogQW4gYXJyYXkgb2Ygc3RyaW5ncywg
ZWFjaCByZXByZXNlbnRpbmcgYSBsaW5lIG9mIHRoZSBmaWxlLgorICAgICAgZXJyb3I6IFRoZSBm
dW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KKyAgICAiIiIKKyAgICBmb3Ig
bGluZV9udW1iZXIsIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToKKyAgICAgICAgaWYgdSdcdWZm
ZmQnIGluIGxpbmU6CisgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5
L3V0ZjgnLCA1LAorICAgICAgICAgICAgICAgICAgJ0xpbmUgY29udGFpbnMgaW52YWxpZCBVVEYt
OCAob3IgVW5pY29kZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIpLicpCisKKworZGVmIGNoZWNrX2Zv
cl9uZXdfbGluZV9hdF9lb2YoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcik6CisgICAgIiIiTG9ncyBh
biBlcnJvciBpZiB0aGVyZSBpcyBubyBuZXdsaW5lIGNoYXIgYXQgdGhlIGVuZCBvZiB0aGUgZmls
ZS4KKworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQg
ZmlsZS4KKyAgICAgIGxpbmVzOiBBbiBhcnJheSBvZiBzdHJpbmdzLCBlYWNoIHJlcHJlc2VudGlu
ZyBhIGxpbmUgb2YgdGhlIGZpbGUuCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwg
d2l0aCBhbnkgZXJyb3JzIGZvdW5kLgorICAgICIiIgorCisgICAgIyBUaGUgYXJyYXkgbGluZXMo
KSB3YXMgY3JlYXRlZCBieSBhZGRpbmcgdHdvIG5ld2xpbmVzIHRvIHRoZQorICAgICMgb3JpZ2lu
YWwgZmlsZSAoZ28gZmlndXJlKSwgdGhlbiBzcGxpdHRpbmcgb24gXG4uCisgICAgIyBUbyB2ZXJp
ZnkgdGhhdCB0aGUgZmlsZSBlbmRzIGluIFxuLCB3ZSBqdXN0IGhhdmUgdG8gbWFrZSBzdXJlIHRo
ZQorICAgICMgbGFzdC1idXQtdHdvIGVsZW1lbnQgb2YgbGluZXMoKSBleGlzdHMgYW5kIGlzIGVt
cHR5LgorICAgIGlmIGxlbihsaW5lcykgPCAzIG9yIGxpbmVzWy0yXToKKyAgICAgICAgZXJyb3Io
bGVuKGxpbmVzKSAtIDIsICd3aGl0ZXNwYWNlL2VuZGluZ19uZXdsaW5lJywgNSwKKyAgICAgICAg
ICAgICAgJ0NvdWxkIG5vdCBmaW5kIGEgbmV3bGluZSBjaGFyYWN0ZXIgYXQgdGhlIGVuZCBvZiB0
aGUgZmlsZS4nKQorCisKK2RlZiBjaGVja19mb3JfbXVsdGlsaW5lX2NvbW1lbnRzX2FuZF9zdHJp
bmdzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKKyAgICAiIiJM
b2dzIGFuIGVycm9yIGlmIHdlIHNlZSAvKiAuLi4gKi8gb3IgIi4uLiIgdGhhdCBleHRlbmQgcGFz
dCBvbmUgbGluZS4KKworICAgIC8qIC4uLiAqLyBjb21tZW50cyBhcmUgbGVnaXQgaW5zaWRlIG1h
Y3JvcywgZm9yIG9uZSBsaW5lLgorICAgIE90aGVyd2lzZSwgd2UgcHJlZmVyIC8vIGNvbW1lbnRz
LCBzbyBpdCdzIG9rIHRvIHdhcm4gYWJvdXQgdGhlCisgICAgb3RoZXIuICBMaWtld2lzZSwgaXQn
cyBvayBmb3Igc3RyaW5ncyB0byBleHRlbmQgYWNyb3NzIG11bHRpcGxlCisgICAgbGluZXMsIGFz
IGxvbmcgYXMgYSBsaW5lIGNvbnRpbnVhdGlvbiBjaGFyYWN0ZXIgKGJhY2tzbGFzaCkKKyAgICB0
ZXJtaW5hdGVzIGVhY2ggbGluZS4gQWx0aG91Z2ggbm90IGN1cnJlbnRseSBwcm9oaWJpdGVkIGJ5
IHRoZSBDKysKKyAgICBzdHlsZSBndWlkZSwgaXQncyB1Z2x5IGFuZCB1bm5lY2Vzc2FyeS4gV2Ug
ZG9uJ3QgZG8gd2VsbCB3aXRoIGVpdGhlcgorICAgIGluIHRoaXMgbGludCBwcm9ncmFtLCBzbyB3
ZSB3YXJuIGFib3V0IGJvdGguCisKKyAgICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRoZSBuYW1l
IG9mIHRoZSBjdXJyZW50IGZpbGUuCisgICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVz
IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCisgICAgICBsaW5lX251bWJlcjogVGhlIG51
bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8g
Y2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCisgICAgIiIiCisgICAgbGluZSA9IGNsZWFuX2xp
bmVzLmVsaWRlZFtsaW5lX251bWJlcl0KKworICAgICMgUmVtb3ZlIGFsbCBcXCAoZXNjYXBlZCBi
YWNrc2xhc2hlcykgZnJvbSB0aGUgbGluZS4gVGhleSBhcmUgT0ssIGFuZCB0aGUKKyAgICAjIHNl
Y29uZCAoZXNjYXBlZCkgc2xhc2ggbWF5IHRyaWdnZXIgbGF0ZXIgXCIgZGV0ZWN0aW9uIGVycm9u
ZW91c2x5LgorICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoJ1xcXFwnLCAnJykKKworICAgIGlmIGxp
bmUuY291bnQoJy8qJykgPiBsaW5lLmNvdW50KCcqLycpOgorICAgICAgICBlcnJvcihsaW5lX251
bWJlciwgJ3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50JywgNSwKKyAgICAgICAgICAgICAg
J0NvbXBsZXggbXVsdGktbGluZSAvKi4uLiovLXN0eWxlIGNvbW1lbnQgZm91bmQuICcKKyAgICAg
ICAgICAgICAgJ0xpbnQgbWF5IGdpdmUgYm9ndXMgd2FybmluZ3MuICAnCisgICAgICAgICAgICAg
ICdDb25zaWRlciByZXBsYWNpbmcgdGhlc2Ugd2l0aCAvLy1zdHlsZSBjb21tZW50cywgJworICAg
ICAgICAgICAgICAnd2l0aCAjaWYgMC4uLiNlbmRpZiwgJworICAgICAgICAgICAgICAnb3Igd2l0
aCBtb3JlIGNsZWFybHkgc3RydWN0dXJlZCBtdWx0aS1saW5lIGNvbW1lbnRzLicpCisKKyAgICBp
ZiAobGluZS5jb3VudCgnIicpIC0gbGluZS5jb3VudCgnXFwiJykpICUgMjoKKyAgICAgICAgZXJy
b3IobGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9tdWx0aWxpbmVfc3RyaW5nJywgNSwKKyAgICAg
ICAgICAgICAgJ011bHRpLWxpbmUgc3RyaW5nICgiLi4uIikgZm91bmQuICBUaGlzIGxpbnQgc2Ny
aXB0IGRvZXNuXCd0ICcKKyAgICAgICAgICAgICAgJ2RvIHdlbGwgd2l0aCBzdWNoIHN0cmluZ3Ms
IGFuZCBtYXkgZ2l2ZSBib2d1cyB3YXJuaW5ncy4gIFRoZXlcJ3JlICcKKyAgICAgICAgICAgICAg
J3VnbHkgYW5kIHVubmVjZXNzYXJ5LCBhbmQgeW91IHNob3VsZCB1c2UgY29uY2F0ZW5hdGlvbiBp
bnN0ZWFkIi4nKQorCisKK19USFJFQURJTkdfTElTVCA9ICgKKyAgICAoJ2FzY3RpbWUoJywgJ2Fz
Y3RpbWVfcignKSwKKyAgICAoJ2N0aW1lKCcsICdjdGltZV9yKCcpLAorICAgICgnZ2V0Z3JnaWQo
JywgJ2dldGdyZ2lkX3IoJyksCisgICAgKCdnZXRncm5hbSgnLCAnZ2V0Z3JuYW1fcignKSwKKyAg
ICAoJ2dldGxvZ2luKCcsICdnZXRsb2dpbl9yKCcpLAorICAgICgnZ2V0cHduYW0oJywgJ2dldHB3
bmFtX3IoJyksCisgICAgKCdnZXRwd3VpZCgnLCAnZ2V0cHd1aWRfcignKSwKKyAgICAoJ2dtdGlt
ZSgnLCAnZ210aW1lX3IoJyksCisgICAgKCdsb2NhbHRpbWUoJywgJ2xvY2FsdGltZV9yKCcpLAor
ICAgICgncmFuZCgnLCAncmFuZF9yKCcpLAorICAgICgncmVhZGRpcignLCAncmVhZGRpcl9yKCcp
LAorICAgICgnc3RydG9rKCcsICdzdHJ0b2tfcignKSwKKyAgICAoJ3R0eW5hbWUoJywgJ3R0eW5h
bWVfcignKSwKKyAgICApCisKKworZGVmIGNoZWNrX3Bvc2l4X3RocmVhZGluZyhmaWxlbmFtZSwg
Y2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CisgICAgIiIiQ2hlY2tzIGZvciBjYWxs
cyB0byB0aHJlYWQtdW5zYWZlIGZ1bmN0aW9ucy4KKworICAgIE11Y2ggY29kZSBoYXMgYmVlbiBv
cmlnaW5hbGx5IHdyaXR0ZW4gd2l0aG91dCBjb25zaWRlcmF0aW9uIG9mCisgICAgbXVsdGktdGhy
ZWFkaW5nLiBBbHNvLCBlbmdpbmVlcnMgYXJlIHJlbHlpbmcgb24gdGhlaXIgb2xkIGV4cGVyaWVu
Y2U7CisgICAgdGhleSBoYXZlIGxlYXJuZWQgcG9zaXggYmVmb3JlIHRocmVhZGluZyBleHRlbnNp
b25zIHdlcmUgYWRkZWQuIFRoZXNlCisgICAgdGVzdHMgZ3VpZGUgdGhlIGVuZ2luZWVycyB0byB1
c2UgdGhyZWFkLXNhZmUgZnVuY3Rpb25zICh3aGVuIHVzaW5nCisgICAgcG9zaXggZGlyZWN0bHkp
LgorCisgICAgQXJnczoKKyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBm
aWxlLgorICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWlu
aW5nIHRoZSBmaWxlLgorICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUg
dG8gY2hlY2suCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJy
b3JzIGZvdW5kLgorICAgICIiIgorICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9u
dW1iZXJdCisgICAgZm9yIHNpbmdsZV90aHJlYWRfZnVuY3Rpb24sIG11bHRpdGhyZWFkX3NhZmVf
ZnVuY3Rpb24gaW4gX1RIUkVBRElOR19MSVNUOgorICAgICAgICBpbmRleCA9IGxpbmUuZmluZChz
aW5nbGVfdGhyZWFkX2Z1bmN0aW9uKQorICAgICAgICAjIENvbXBhcmlzb25zIG1hZGUgZXhwbGlj
aXQgZm9yIGNsYXJpdHkgLS0gcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwMworICAgICAgICBpZiBp
bmRleCA+PSAwIGFuZCAoaW5kZXggPT0gMCBvciAobm90IGxpbmVbaW5kZXggLSAxXS5pc2FsbnVt
KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsaW5lW2lu
ZGV4IC0gMV0gbm90IGluICgnXycsICcuJywgJz4nKSkpOgorICAgICAgICAgICAgZXJyb3IobGlu
ZV9udW1iZXIsICdydW50aW1lL3RocmVhZHNhZmVfZm4nLCAyLAorICAgICAgICAgICAgICAgICAg
J0NvbnNpZGVyIHVzaW5nICcgKyBtdWx0aXRocmVhZF9zYWZlX2Z1bmN0aW9uICsKKyAgICAgICAg
ICAgICAgICAgICcuLi4pIGluc3RlYWQgb2YgJyArIHNpbmdsZV90aHJlYWRfZnVuY3Rpb24gKwor
ICAgICAgICAgICAgICAgICAgJy4uLikgZm9yIGltcHJvdmVkIHRocmVhZCBzYWZldHkuJykKKwor
CisjIE1hdGNoZXMgaW52YWxpZCBpbmNyZW1lbnQ6ICpjb3VudCsrLCB3aGljaCBtb3ZlcyBwb2lu
dGVyIGluc3RlYWQgb2YKKyMgaW5jcmVtZW50aW5nIGEgdmFsdWUuCitfUkVfUEFUVEVSTl9JTlZB
TElEX0lOQ1JFTUVOVCA9IHJlLmNvbXBpbGUoCisgICAgcideXHMqXCpcdysoXCtcK3wtLSk7JykK
KworCitkZWYgY2hlY2tfaW52YWxpZF9pbmNyZW1lbnQoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBs
aW5lX251bWJlciwgZXJyb3IpOgorICAgICIiIkNoZWNrcyBmb3IgaW52YWxpZCBpbmNyZW1lbnQg
KmNvdW50KysuCisKKyAgICBGb3IgZXhhbXBsZSBmb2xsb3dpbmcgZnVuY3Rpb246CisgICAgdm9p
ZCBpbmNyZW1lbnRfY291bnRlcihpbnQqIGNvdW50KSB7CisgICAgICAgICpjb3VudCsrOworICAg
IH0KKyAgICBpcyBpbnZhbGlkLCBiZWNhdXNlIGl0IGVmZmVjdGl2ZWx5IGRvZXMgY291bnQrKywg
bW92aW5nIHBvaW50ZXIsIGFuZCBzaG91bGQKKyAgICBiZSByZXBsYWNlZCB3aXRoICsrKmNvdW50
LCAoKmNvdW50KSsrIG9yICpjb3VudCArPSAxLgorCisgICAgQXJnczoKKyAgICAgIGZpbGVuYW1l
OiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgorICAgICAgY2xlYW5fbGluZXM6IEEgQ2xl
YW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgorICAgICAgbGluZV9udW1i
ZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCisgICAgICBlcnJvcjogVGhlIGZ1
bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgorICAgICIiIgorICAgIGxpbmUg
PSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCisgICAgaWYgX1JFX1BBVFRFUk5fSU5W
QUxJRF9JTkNSRU1FTlQubWF0Y2gobGluZSk6CisgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAn
cnVudGltZS9pbnZhbGlkX2luY3JlbWVudCcsIDUsCisgICAgICAgICAgICAgICdDaGFuZ2luZyBw
b2ludGVyIGluc3RlYWQgb2YgdmFsdWUgKG9yIHVudXNlZCB2YWx1ZSBvZiBvcGVyYXRvciopLicp
CisKKworY2xhc3MgX0NsYXNzSW5mbyhvYmplY3QpOgorICAgICIiIlN0b3JlcyBpbmZvcm1hdGlv
biBhYm91dCBhIGNsYXNzLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGxpbmVf
bnVtYmVyKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLmxpbmVfbnVt
YmVyID0gbGluZV9udW1iZXIKKyAgICAgICAgc2VsZi5zZWVuX29wZW5fYnJhY2UgPSBGYWxzZQor
ICAgICAgICBzZWxmLmlzX2Rlcml2ZWQgPSBGYWxzZQorICAgICAgICBzZWxmLnZpcnR1YWxfbWV0
aG9kX2xpbmVfbnVtYmVyID0gTm9uZQorICAgICAgICBzZWxmLmhhc192aXJ0dWFsX2Rlc3RydWN0
b3IgPSBGYWxzZQorICAgICAgICBzZWxmLmJyYWNlX2RlcHRoID0gMAorCisKK2NsYXNzIF9DbGFz
c1N0YXRlKG9iamVjdCk6CisgICAgIiIiSG9sZHMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHBh
cnNlIHJlbGF0aW5nIHRvIGNsYXNzIGRlY2xhcmF0aW9ucy4KKworICAgIEl0IG1haW50YWlucyBh
IHN0YWNrIG9mIF9DbGFzc0luZm9zIHJlcHJlc2VudGluZyB0aGUgcGFyc2VyJ3MgZ3Vlc3MKKyAg
ICBhcyB0byB0aGUgY3VycmVudCBuZXN0aW5nIG9mIGNsYXNzIGRlY2xhcmF0aW9ucy4gVGhlIGlu
bmVybW9zdCBjbGFzcworICAgIGlzIGF0IHRoZSB0b3AgKGJhY2spIG9mIHRoZSBzdGFjay4gVHlw
aWNhbGx5LCB0aGUgc3RhY2sgd2lsbCBlaXRoZXIKKyAgICBiZSBlbXB0eSBvciBoYXZlIGV4YWN0
bHkgb25lIGVudHJ5LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAg
ICBzZWxmLmNsYXNzaW5mb19zdGFjayA9IFtdCisKKyAgICBkZWYgY2hlY2tfZmluaXNoZWQoc2Vs
ZiwgZmlsZW5hbWUsIGVycm9yKToKKyAgICAgICAgIiIiQ2hlY2tzIHRoYXQgYWxsIGNsYXNzZXMg
aGF2ZSBiZWVuIGNvbXBsZXRlbHkgcGFyc2VkLgorCisgICAgICAgIENhbGwgdGhpcyB3aGVuIGFs
bCBsaW5lcyBpbiBhIGZpbGUgaGF2ZSBiZWVuIHByb2Nlc3NlZC4KKyAgICAgICAgQXJnczoKKyAg
ICAgICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgICAg
ICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgorICAg
ICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5jbGFzc2luZm9fc3RhY2s6CisgICAgICAgICAgICAj
IE5vdGU6IFRoaXMgdGVzdCBjYW4gcmVzdWx0IGluIGZhbHNlIHBvc2l0aXZlcyBpZiAjaWZkZWYg
Y29uc3RydWN0cworICAgICAgICAgICAgIyBnZXQgaW4gdGhlIHdheSBvZiBicmFjZSBtYXRjaGlu
Zy4gU2VlIHRoZSB0ZXN0QnVpbGRDbGFzcyB0ZXN0IGluCisgICAgICAgICAgICAjIGNwcF9zdHls
ZV91bml0dGVzdC5weSBmb3IgYW4gZXhhbXBsZSBvZiB0aGlzLgorICAgICAgICAgICAgZXJyb3Io
c2VsZi5jbGFzc2luZm9fc3RhY2tbMF0ubGluZV9udW1iZXIsICdidWlsZC9jbGFzcycsIDUsCisg
ICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGZpbmQgY29tcGxldGUgZGVjbGFyYXRpb24gb2Yg
Y2xhc3MgJXMnICUKKyAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NpbmZvX3N0YWNrWzBdLm5h
bWUpCisKKworY2xhc3MgX0ZpbGVTdGF0ZShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
KToKKyAgICAgICAgc2VsZi5fZGlkX2luc2lkZV9uYW1lc3BhY2VfaW5kZW50X3dhcm5pbmcgPSBG
YWxzZQorCisgICAgZGVmIHNldF9kaWRfaW5zaWRlX25hbWVzcGFjZV9pbmRlbnRfd2FybmluZyhz
ZWxmKToKKyAgICAgICAgc2VsZi5fZGlkX2luc2lkZV9uYW1lc3BhY2VfaW5kZW50X3dhcm5pbmcg
PSBUcnVlCisKKyAgICBkZWYgZGlkX2luc2lkZV9uYW1lc3BhY2VfaW5kZW50X3dhcm5pbmcoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl9kaWRfaW5zaWRlX25hbWVzcGFjZV9pbmRlbnRfd2Fy
bmluZworCitkZWYgY2hlY2tfZm9yX25vbl9zdGFuZGFyZF9jb25zdHJ1Y3RzKGZpbGVuYW1lLCBj
bGVhbl9saW5lcywgbGluZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNsYXNzX3N0YXRlLCBlcnJvcik6CisgICAgIiIiTG9ncyBhbiBlcnJvciBpZiB3ZSBz
ZWUgY2VydGFpbiBub24tQU5TSSBjb25zdHJ1Y3RzIGlnbm9yZWQgYnkgZ2NjLTIuCisKKyAgICBD
b21wbGFpbiBhYm91dCBzZXZlcmFsIGNvbnN0cnVjdHMgd2hpY2ggZ2NjLTIgYWNjZXB0cywgYnV0
IHdoaWNoIGFyZQorICAgIG5vdCBzdGFuZGFyZCBDKysuICBXYXJuaW5nIGFib3V0IHRoZXNlIGlu
IGxpbnQgaXMgb25lIHdheSB0byBlYXNlIHRoZQorICAgIHRyYW5zaXRpb24gdG8gbmV3IGNvbXBp
bGVycy4KKyAgICAtIHB1dCBzdG9yYWdlIGNsYXNzIGZpcnN0IChlLmcuICJzdGF0aWMgY29uc3Qi
IGluc3RlYWQgb2YgImNvbnN0IHN0YXRpYyIpLgorICAgIC0gIiVsbGQiIGluc3RlYWQgb2YgJXFk
IiBpbiBwcmludGYtdHlwZSBmdW5jdGlvbnMuCisgICAgLSAiJTEkZCIgaXMgbm9uLXN0YW5kYXJk
IGluIHByaW50Zi10eXBlIGZ1bmN0aW9ucy4KKyAgICAtICJcJSIgaXMgYW4gdW5kZWZpbmVkIGNo
YXJhY3RlciBlc2NhcGUgc2VxdWVuY2UuCisgICAgLSB0ZXh0IGFmdGVyICNlbmRpZiBpcyBub3Qg
YWxsb3dlZC4KKyAgICAtIGludmFsaWQgaW5uZXItc3R5bGUgZm9yd2FyZCBkZWNsYXJhdGlvbi4K
KyAgICAtID4/IGFuZCA8PyBvcGVyYXRvcnMsIGFuZCB0aGVpciA+Pz0gYW5kIDw/PSBjb3VzaW5z
LgorICAgIC0gY2xhc3NlcyB3aXRoIHZpcnR1YWwgbWV0aG9kcyBuZWVkIHZpcnR1YWwgZGVzdHJ1
Y3RvcnMgKGNvbXBpbGVyIHdhcm5pbmcKKyAgICAgICAgYXZhaWxhYmxlLCBidXQgbm90IHR1cm5l
ZCBvbiB5ZXQuKQorCisgICAgQWRkaXRpb25hbGx5LCBjaGVjayBmb3IgY29uc3RydWN0b3IvZGVz
dHJ1Y3RvciBzdHlsZSB2aW9sYXRpb25zIGFzIGl0CisgICAgaXMgdmVyeSBjb252ZW5pZW50IHRv
IGRvIHNvIHdoaWxlIGNoZWNraW5nIGZvciBnY2MtMiBjb21wbGlhbmNlLgorCisgICAgQXJnczoK
KyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgorICAgICAgY2xl
YW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgor
ICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCisgICAg
ICBjbGFzc19zdGF0ZTogQSBfQ2xhc3NTdGF0ZSBpbnN0YW5jZSB3aGljaCBtYWludGFpbnMgaW5m
b3JtYXRpb24gYWJvdXQKKyAgICAgICAgICAgICAgICAgICB0aGUgY3VycmVudCBzdGFjayBvZiBu
ZXN0ZWQgY2xhc3MgZGVjbGFyYXRpb25zIGJlaW5nIHBhcnNlZC4KKyAgICAgIGVycm9yOiBBIGNh
bGxhYmxlIHRvIHdoaWNoIGVycm9ycyBhcmUgcmVwb3J0ZWQsIHdoaWNoIHRha2VzIDQgYXJndW1l
bnRzOgorICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgZXJyb3IgbGV2ZWwsIGFu
ZCBtZXNzYWdlCisgICAgIiIiCisKKyAgICAjIFJlbW92ZSBjb21tZW50cyBmcm9tIHRoZSBsaW5l
LCBidXQgbGVhdmUgaW4gc3RyaW5ncyBmb3Igbm93LgorICAgIGxpbmUgPSBjbGVhbl9saW5lcy5s
aW5lc1tsaW5lX251bWJlcl0KKworICAgIGlmIHNlYXJjaChyJ3ByaW50ZlxzKlwoLioiLiolWy0r
IF0/XGQqcScsIGxpbmUpOgorICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvcHJp
bnRmX2Zvcm1hdCcsIDMsCisgICAgICAgICAgICAgICclcSBpbiBmb3JtYXQgc3RyaW5ncyBpcyBk
ZXByZWNhdGVkLiAgVXNlICVsbCBpbnN0ZWFkLicpCisKKyAgICBpZiBzZWFyY2gocidwcmludGZc
cypcKC4qIi4qJVxkK1wkJywgbGluZSk6CisgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVu
dGltZS9wcmludGZfZm9ybWF0JywgMiwKKyAgICAgICAgICAgICAgJyVOJCBmb3JtYXRzIGFyZSB1
bmNvbnZlbnRpb25hbC4gIFRyeSByZXdyaXRpbmcgdG8gYXZvaWQgdGhlbS4nKQorCisgICAgIyBS
ZW1vdmUgZXNjYXBlZCBiYWNrc2xhc2hlcyBiZWZvcmUgbG9va2luZyBmb3IgdW5kZWZpbmVkIGVz
Y2FwZXMuCisgICAgbGluZSA9IGxpbmUucmVwbGFjZSgnXFxcXCcsICcnKQorCisgICAgaWYgc2Vh
cmNoKHInKCJ8XCcpLipcXCglfFxbfFwofHspJywgbGluZSk6CisgICAgICAgIGVycm9yKGxpbmVf
bnVtYmVyLCAnYnVpbGQvcHJpbnRmX2Zvcm1hdCcsIDMsCisgICAgICAgICAgICAgICclLCBbLCAo
LCBhbmQgeyBhcmUgdW5kZWZpbmVkIGNoYXJhY3RlciBlc2NhcGVzLiAgVW5lc2NhcGUgdGhlbS4n
KQorCisgICAgIyBGb3IgdGhlIHJlc3QsIHdvcmsgd2l0aCBib3RoIGNvbW1lbnRzIGFuZCBzdHJp
bmdzIHJlbW92ZWQuCisgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0K
KworICAgIGlmIHNlYXJjaChyJ1xiKGNvbnN0fHZvbGF0aWxlfHZvaWR8Y2hhcnxzaG9ydHxpbnR8
bG9uZycKKyAgICAgICAgICAgICAgcid8ZmxvYXR8ZG91YmxlfHNpZ25lZHx1bnNpZ25lZCcKKyAg
ICAgICAgICAgICAgcid8c2NoYXJ8dT9pbnQ4fHU/aW50MTZ8dT9pbnQzMnx1P2ludDY0KScKKyAg
ICAgICAgICAgICAgcidccysoYXV0b3xyZWdpc3RlcnxzdGF0aWN8ZXh0ZXJufHR5cGVkZWYpXGIn
LAorICAgICAgICAgICAgICBsaW5lKToKKyAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdidWls
ZC9zdG9yYWdlX2NsYXNzJywgNSwKKyAgICAgICAgICAgICAgJ1N0b3JhZ2UgY2xhc3MgKHN0YXRp
YywgZXh0ZXJuLCB0eXBlZGVmLCBldGMpIHNob3VsZCBiZSBmaXJzdC4nKQorCisgICAgaWYgbWF0
Y2gocidccyojXHMqZW5kaWZccypbXi9cc10rJywgbGluZSk6CisgICAgICAgIGVycm9yKGxpbmVf
bnVtYmVyLCAnYnVpbGQvZW5kaWZfY29tbWVudCcsIDUsCisgICAgICAgICAgICAgICdVbmNvbW1l
bnRlZCB0ZXh0IGFmdGVyICNlbmRpZiBpcyBub24tc3RhbmRhcmQuICBVc2UgYSBjb21tZW50Licp
CisKKyAgICBpZiBtYXRjaChyJ1xzKmNsYXNzXHMrKFx3K1xzKjo6XHMqKStcdytccyo7JywgbGlu
ZSk6CisgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvZm9yd2FyZF9kZWNsJywgNSwK
KyAgICAgICAgICAgICAgJ0lubmVyLXN0eWxlIGZvcndhcmQgZGVjbGFyYXRpb25zIGFyZSBpbnZh
bGlkLiAgUmVtb3ZlIHRoaXMgbGluZS4nKQorCisgICAgaWYgc2VhcmNoKHInKFx3K3xbKy1dP1xk
KyhcLlxkKik/KVxzKig8fD4pXD89P1xzKihcdyt8WystXT9cZCspKFwuXGQqKT8nLCBsaW5lKToK
KyAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdidWlsZC9kZXByZWNhdGVkJywgMywKKyAgICAg
ICAgICAgICAgJz4/IGFuZCA8PyAobWF4IGFuZCBtaW4pIG9wZXJhdG9ycyBhcmUgbm9uLXN0YW5k
YXJkIGFuZCBkZXByZWNhdGVkLicpCisKKyAgICAjIFRyYWNrIGNsYXNzIGVudHJ5IGFuZCBleGl0
LCBhbmQgYXR0ZW1wdCB0byBmaW5kIGNhc2VzIHdpdGhpbiB0aGUKKyAgICAjIGNsYXNzIGRlY2xh
cmF0aW9uIHRoYXQgZG9uJ3QgbWVldCB0aGUgQysrIHN0eWxlCisgICAgIyBndWlkZWxpbmVzLiBU
cmFja2luZyBpcyB2ZXJ5IGRlcGVuZGVudCBvbiB0aGUgY29kZSBtYXRjaGluZyBHb29nbGUKKyAg
ICAjIHN0eWxlIGd1aWRlbGluZXMsIGJ1dCBpdCBzZWVtcyB0byBwZXJmb3JtIHdlbGwgZW5vdWdo
IGluIHRlc3RpbmcKKyAgICAjIHRvIGJlIGEgd29ydGh3aGlsZSBhZGRpdGlvbiB0byB0aGUgY2hl
Y2tzLgorICAgIGNsYXNzaW5mb19zdGFjayA9IGNsYXNzX3N0YXRlLmNsYXNzaW5mb19zdGFjawor
ICAgICMgTG9vayBmb3IgYSBjbGFzcyBkZWNsYXJhdGlvbgorICAgIGNsYXNzX2RlY2xfbWF0Y2gg
PSBtYXRjaCgKKyAgICAgICAgcidccyoodGVtcGxhdGVccyo8W1x3XHM8Piw6XSo+XHMqKT8oY2xh
c3N8c3RydWN0KVxzKyhcdysoOjpcdyspKiknLCBsaW5lKQorICAgIGlmIGNsYXNzX2RlY2xfbWF0
Y2g6CisgICAgICAgIGNsYXNzaW5mb19zdGFjay5hcHBlbmQoX0NsYXNzSW5mbyhjbGFzc19kZWNs
X21hdGNoLmdyb3VwKDMpLCBsaW5lX251bWJlcikpCisKKyAgICAjIEV2ZXJ5dGhpbmcgZWxzZSBp
biB0aGlzIGZ1bmN0aW9uIHVzZXMgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaWYgaXQncworICAgICMg
bm90IGVtcHR5LgorICAgIGlmIG5vdCBjbGFzc2luZm9fc3RhY2s6CisgICAgICAgIHJldHVybgor
CisgICAgY2xhc3NpbmZvID0gY2xhc3NpbmZvX3N0YWNrWy0xXQorCisgICAgIyBJZiB0aGUgb3Bl
bmluZyBicmFjZSBoYXNuJ3QgYmVlbiBzZWVuIGxvb2sgZm9yIGl0IGFuZCBhbHNvCisgICAgIyBw
YXJlbnQgY2xhc3MgZGVjbGFyYXRpb25zLgorICAgIGlmIG5vdCBjbGFzc2luZm8uc2Vlbl9vcGVu
X2JyYWNlOgorICAgICAgICAjIElmIHRoZSBsaW5lIGhhcyBhICc7JyBpbiBpdCwgYXNzdW1lIGl0
J3MgYSBmb3J3YXJkIGRlY2xhcmF0aW9uIG9yCisgICAgICAgICMgYSBzaW5nbGUtbGluZSBjbGFz
cyBkZWNsYXJhdGlvbiwgd2hpY2ggd2Ugd29uJ3QgcHJvY2Vzcy4KKyAgICAgICAgaWYgbGluZS5m
aW5kKCc7JykgIT0gLTE6CisgICAgICAgICAgICBjbGFzc2luZm9fc3RhY2sucG9wKCkKKyAgICAg
ICAgICAgIHJldHVybgorICAgICAgICBjbGFzc2luZm8uc2Vlbl9vcGVuX2JyYWNlID0gKGxpbmUu
ZmluZCgneycpICE9IC0xKQorICAgICAgICAjIExvb2sgZm9yIGEgYmFyZSAnOicKKyAgICAgICAg
aWYgc2VhcmNoKCcoXnxbXjpdKTooJHxbXjpdKScsIGxpbmUpOgorICAgICAgICAgICAgY2xhc3Np
bmZvLmlzX2Rlcml2ZWQgPSBUcnVlCisgICAgICAgIGlmIG5vdCBjbGFzc2luZm8uc2Vlbl9vcGVu
X2JyYWNlOgorICAgICAgICAgICAgcmV0dXJuICAjIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGlzIGZ1
bmN0aW9uIGlzIGZvciBhZnRlciBvcGVuIGJyYWNlCisKKyAgICAjIFRoZSBjbGFzcyBtYXkgaGF2
ZSBiZWVuIGRlY2xhcmVkIHdpdGggbmFtZXNwYWNlIG9yIGNsYXNzbmFtZSBxdWFsaWZpZXJzLgor
ICAgICMgVGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIHdpbGwgbm90IGhhdmUgdGhvc2Ug
cXVhbGlmaWVycy4KKyAgICBiYXNlX2NsYXNzbmFtZSA9IGNsYXNzaW5mby5uYW1lLnNwbGl0KCc6
OicpWy0xXQorCisgICAgIyBMb29rIGZvciBzaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHRo
YXQgYXJlbid0IG1hcmtlZCBleHBsaWNpdC4KKyAgICAjIFRlY2huaWNhbGx5IGEgdmFsaWQgY29u
c3RydWN0LCBidXQgYWdhaW5zdCBzdHlsZS4KKyAgICBhcmdzID0gbWF0Y2gocicoPzwhZXhwbGlj
aXQpXHMrJXNccypcKChbXiwoKV0rKVwpJworICAgICAgICAgICAgICAgICAlIHJlLmVzY2FwZShi
YXNlX2NsYXNzbmFtZSksCisgICAgICAgICAgICAgICAgIGxpbmUpCisgICAgaWYgKGFyZ3MKKyAg
ICAgICAgYW5kIGFyZ3MuZ3JvdXAoMSkgIT0gJ3ZvaWQnCisgICAgICAgIGFuZCBub3QgbWF0Y2go
cicoY29uc3RccyspPyVzXHMqJicgJSByZS5lc2NhcGUoYmFzZV9jbGFzc25hbWUpLAorICAgICAg
ICAgICAgICAgICAgICAgIGFyZ3MuZ3JvdXAoMSkuc3RyaXAoKSkpOgorICAgICAgICBlcnJvcihs
aW5lX251bWJlciwgJ3J1bnRpbWUvZXhwbGljaXQnLCA1LAorICAgICAgICAgICAgICAnU2luZ2xl
LWFyZ3VtZW50IGNvbnN0cnVjdG9ycyBzaG91bGQgYmUgbWFya2VkIGV4cGxpY2l0LicpCisKKyAg
ICAjIExvb2sgZm9yIG1ldGhvZHMgZGVjbGFyZWQgdmlydHVhbC4KKyAgICBpZiBzZWFyY2gocidc
YnZpcnR1YWxcYicsIGxpbmUpOgorICAgICAgICBjbGFzc2luZm8udmlydHVhbF9tZXRob2RfbGlu
ZV9udW1iZXIgPSBsaW5lX251bWJlcgorICAgICAgICAjIE9ubHkgbG9vayBmb3IgYSBkZXN0cnVj
dG9yIGRlY2xhcmF0aW9uIG9uIHRoZSBzYW1lIGxpbmUuIEl0IHdvdWxkCisgICAgICAgICMgYmUg
ZXh0cmVtZWx5IHVubGlrZWx5IGZvciB0aGUgZGVzdHJ1Y3RvciBkZWNsYXJhdGlvbiB0byBvY2N1
cHkKKyAgICAgICAgIyBtb3JlIHRoYW4gb25lIGxpbmUuCisgICAgICAgIGlmIHNlYXJjaChyJ34l
c1xzKlwoJyAlIGJhc2VfY2xhc3NuYW1lLCBsaW5lKToKKyAgICAgICAgICAgIGNsYXNzaW5mby5o
YXNfdmlydHVhbF9kZXN0cnVjdG9yID0gVHJ1ZQorCisgICAgIyBMb29rIGZvciBjbGFzcyBlbmQu
CisgICAgYnJhY2VfZGVwdGggPSBjbGFzc2luZm8uYnJhY2VfZGVwdGgKKyAgICBicmFjZV9kZXB0
aCA9IGJyYWNlX2RlcHRoICsgbGluZS5jb3VudCgneycpIC0gbGluZS5jb3VudCgnfScpCisgICAg
aWYgYnJhY2VfZGVwdGggPD0gMDoKKyAgICAgICAgY2xhc3NpbmZvID0gY2xhc3NpbmZvX3N0YWNr
LnBvcCgpCisgICAgICAgICMgVHJ5IHRvIGRldGVjdCBtaXNzaW5nIHZpcnR1YWwgZGVzdHJ1Y3Rv
ciBkZWNsYXJhdGlvbnMuCisgICAgICAgICMgRm9yIG5vdywgb25seSB3YXJuIGlmIGEgbm9uLWRl
cml2ZWQgY2xhc3Mgd2l0aCB2aXJ0dWFsIG1ldGhvZHMgbGFja3MKKyAgICAgICAgIyBhIHZpcnR1
YWwgZGVzdHJ1Y3Rvci4gVGhpcyBpcyB0byBtYWtlIGl0IGxlc3MgbGlrZWx5IHRoYXQgcGVvcGxl
IHdpbGwKKyAgICAgICAgIyBkZWNsYXJlIGRlcml2ZWQgdmlydHVhbCBkZXN0cnVjdG9ycyB3aXRo
b3V0IGRlY2xhcmluZyB0aGUgYmFzZQorICAgICAgICAjIGRlc3RydWN0b3IgdmlydHVhbC4KKyAg
ICAgICAgaWYgKChjbGFzc2luZm8udmlydHVhbF9tZXRob2RfbGluZV9udW1iZXIgaXMgbm90IE5v
bmUpCisgICAgICAgICAgICBhbmQgKG5vdCBjbGFzc2luZm8uaGFzX3ZpcnR1YWxfZGVzdHJ1Y3Rv
cikKKyAgICAgICAgICAgIGFuZCAobm90IGNsYXNzaW5mby5pc19kZXJpdmVkKSk6ICAjIE9ubHkg
d2FybiBmb3IgYmFzZSBjbGFzc2VzCisgICAgICAgICAgICBlcnJvcihjbGFzc2luZm8ubGluZV9u
dW1iZXIsICdydW50aW1lL3ZpcnR1YWwnLCA0LAorICAgICAgICAgICAgICAgICAgJ1RoZSBjbGFz
cyAlcyBwcm9iYWJseSBuZWVkcyBhIHZpcnR1YWwgZGVzdHJ1Y3RvciBkdWUgdG8gJworICAgICAg
ICAgICAgICAgICAgJ2hhdmluZyB2aXJ0dWFsIG1ldGhvZChzKSwgb25lIGRlY2xhcmVkIGF0IGxp
bmUgJWQuJworICAgICAgICAgICAgICAgICAgJSAoY2xhc3NpbmZvLm5hbWUsIGNsYXNzaW5mby52
aXJ0dWFsX21ldGhvZF9saW5lX251bWJlcikpCisgICAgZWxzZToKKyAgICAgICAgY2xhc3NpbmZv
LmJyYWNlX2RlcHRoID0gYnJhY2VfZGVwdGgKKworCitkZWYgY2hlY2tfc3BhY2luZ19mb3JfZnVu
Y3Rpb25fY2FsbChmaWxlbmFtZSwgbGluZSwgbGluZV9udW1iZXIsIGVycm9yKToKKyAgICAiIiJD
aGVja3MgZm9yIHRoZSBjb3JyZWN0bmVzcyBvZiB2YXJpb3VzIHNwYWNpbmcgYXJvdW5kIGZ1bmN0
aW9uIGNhbGxzLgorCisgICAgQXJnczoKKyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUg
Y3VycmVudCBmaWxlLgorICAgICAgbGluZTogVGhlIHRleHQgb2YgdGhlIGxpbmUgdG8gY2hlY2su
CisgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KKyAg
ICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCisg
ICAgIiIiCisKKyAgICAjIFNpbmNlIGZ1bmN0aW9uIGNhbGxzIG9mdGVuIG9jY3VyIGluc2lkZSBp
Zi9mb3IvZm9yZWFjaC93aGlsZS9zd2l0Y2gKKyAgICAjIGV4cHJlc3Npb25zIC0gd2hpY2ggaGF2
ZSB0aGVpciBvd24sIG1vcmUgbGliZXJhbCBjb252ZW50aW9ucyAtIHdlCisgICAgIyBmaXJzdCBz
ZWUgaWYgd2Ugc2hvdWxkIGJlIGxvb2tpbmcgaW5zaWRlIHN1Y2ggYW4gZXhwcmVzc2lvbiBmb3Ig
YQorICAgICMgZnVuY3Rpb24gY2FsbCwgdG8gd2hpY2ggd2UgY2FuIGFwcGx5IG1vcmUgc3RyaWN0
IHN0YW5kYXJkcy4KKyAgICBmdW5jdGlvbl9jYWxsID0gbGluZSAgICAjIGlmIHRoZXJlJ3Mgbm8g
Y29udHJvbCBmbG93IGNvbnN0cnVjdCwgbG9vayBhdCB3aG9sZSBsaW5lCisgICAgZm9yIHBhdHRl
cm4gaW4gKHInXGJpZlxzKlwoKC4qKVwpXHMqeycsCisgICAgICAgICAgICAgICAgICAgIHInXGJm
b3JccypcKCguKilcKVxzKnsnLAorICAgICAgICAgICAgICAgICAgICByJ1xiZm9yZWFjaFxzKlwo
KC4qKVwpXHMqeycsCisgICAgICAgICAgICAgICAgICAgIHInXGJ3aGlsZVxzKlwoKC4qKVwpXHMq
W3s7XScsCisgICAgICAgICAgICAgICAgICAgIHInXGJzd2l0Y2hccypcKCguKilcKVxzKnsnKToK
KyAgICAgICAgbWF0Y2hlZCA9IHNlYXJjaChwYXR0ZXJuLCBsaW5lKQorICAgICAgICBpZiBtYXRj
aGVkOgorICAgICAgICAgICAgZnVuY3Rpb25fY2FsbCA9IG1hdGNoZWQuZ3JvdXAoMSkgICAgIyBs
b29rIGluc2lkZSB0aGUgcGFyZW5zIGZvciBmdW5jdGlvbiBjYWxscworICAgICAgICAgICAgYnJl
YWsKKworICAgICMgRXhjZXB0IGluIGlmL2Zvci9mb3JlYWNoL3doaWxlL3N3aXRjaCwgdGhlcmUg
c2hvdWxkIG5ldmVyIGJlIHNwYWNlCisgICAgIyBpbW1lZGlhdGVseSBpbnNpZGUgcGFyZW5zIChl
ZyAiZiggMywgNCApIikuICBXZSBtYWtlIGFuIGV4Y2VwdGlvbgorICAgICMgZm9yIG5lc3RlZCBw
YXJlbnMgKCAoYStiKSArIGMgKS4gIExpa2V3aXNlLCB0aGVyZSBzaG91bGQgbmV2ZXIgYmUKKyAg
ICAjIGEgc3BhY2UgYmVmb3JlIGEgKCB3aGVuIGl0J3MgYSBmdW5jdGlvbiBhcmd1bWVudC4gIEkg
YXNzdW1lIGl0J3MgYQorICAgICMgZnVuY3Rpb24gYXJndW1lbnQgd2hlbiB0aGUgY2hhciBiZWZv
cmUgdGhlIHdoaXRlc3BhY2UgaXMgbGVnYWwgaW4KKyAgICAjIGEgZnVuY3Rpb24gbmFtZSAoYWxu
dW0gKyBfKSBhbmQgd2UncmUgbm90IHN0YXJ0aW5nIGEgbWFjcm8uIEFsc28gaWdub3JlCisgICAg
IyBwb2ludGVycyBhbmQgcmVmZXJlbmNlcyB0byBhcnJheXMgYW5kIGZ1bmN0aW9ucyBjb3ogdGhl
eSdyZSB0b28gdHJpY2t5OgorICAgICMgd2UgdXNlIGEgdmVyeSBzaW1wbGUgd2F5IHRvIHJlY29n
bml6ZSB0aGVzZToKKyAgICAjICIgKHNvbWV0aGluZykobWF5YmUtc29tZXRoaW5nKSIgb3IKKyAg
ICAjICIgKHNvbWV0aGluZykobWF5YmUtc29tZXRoaW5nLCIgb3IKKyAgICAjICIgKHNvbWV0aGlu
Zylbc29tZXRoaW5nXSIKKyAgICAjIE5vdGUgdGhhdCB3ZSBhc3N1bWUgdGhlIGNvbnRlbnRzIG9m
IFtdIHRvIGJlIHNob3J0IGVub3VnaCB0aGF0CisgICAgIyB0aGV5J2xsIG5ldmVyIG5lZWQgdG8g
d3JhcC4KKyAgICBpZiAoICAjIElnbm9yZSBjb250cm9sIHN0cnVjdHVyZXMuCisgICAgICAgIG5v
dCBzZWFyY2gocidcYihpZnxmb3J8Zm9yZWFjaHx3aGlsZXxzd2l0Y2h8cmV0dXJufG5ld3xkZWxl
dGUpXGInLCBmdW5jdGlvbl9jYWxsKQorICAgICAgICAjIElnbm9yZSBwb2ludGVycy9yZWZlcmVu
Y2VzIHRvIGZ1bmN0aW9ucy4KKyAgICAgICAgYW5kIG5vdCBzZWFyY2gocicgXChbXildK1wpXChb
XildKihcKXwsJCknLCBmdW5jdGlvbl9jYWxsKQorICAgICAgICAjIElnbm9yZSBwb2ludGVycy9y
ZWZlcmVuY2VzIHRvIGFycmF5cy4KKyAgICAgICAgYW5kIG5vdCBzZWFyY2gocicgXChbXildK1wp
XFtbXlxdXStcXScsIGZ1bmN0aW9uX2NhbGwpKToKKyAgICAgICAgaWYgc2VhcmNoKHInXHdccypc
KFsgXHRdKD8hXHMqXFwkKScsIGZ1bmN0aW9uX2NhbGwpOiAgICAgICMgYSAoIHVzZWQgZm9yIGEg
Zm4gY2FsbAorICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVu
cycsIDQsCisgICAgICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgYWZ0ZXIgKCBpbiBmdW5jdGlv
biBjYWxsJykKKyAgICAgICAgZWxpZiBzZWFyY2gocidcKFsgXHRdKyg/IShccypcXCl8XCgpJywg
ZnVuY3Rpb25fY2FsbCk6CisgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3Bh
Y2UvcGFyZW5zJywgMiwKKyAgICAgICAgICAgICAgICAgICdFeHRyYSBzcGFjZSBhZnRlciAoJykK
KyAgICAgICAgaWYgKHNlYXJjaChyJ1x3XHMrXCgnLCBmdW5jdGlvbl9jYWxsKQorICAgICAgICAg
ICAgYW5kIG5vdCBzZWFyY2gocicjXHMqZGVmaW5lfHR5cGVkZWYnLCBmdW5jdGlvbl9jYWxsKSk6
CisgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvcGFyZW5zJywgNCwK
KyAgICAgICAgICAgICAgICAgICdFeHRyYSBzcGFjZSBiZWZvcmUgKCBpbiBmdW5jdGlvbiBjYWxs
JykKKyAgICAgICAgIyBJZiB0aGUgKSBpcyBmb2xsb3dlZCBvbmx5IGJ5IGEgbmV3bGluZSBvciBh
IHsgKyBuZXdsaW5lLCBhc3N1bWUgaXQncworICAgICAgICAjIHBhcnQgb2YgYSBjb250cm9sIHN0
YXRlbWVudCAoaWYvd2hpbGUvZXRjKSwgYW5kIGRvbid0IGNvbXBsYWluCisgICAgICAgIGlmIHNl
YXJjaChyJ1teKVxzXVxzK1wpKD8hXHMqJHx7XHMqJCknLCBmdW5jdGlvbl9jYWxsKToKKyAgICAg
ICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJlbnMnLCAyLAorICAgICAg
ICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSApJykKKworCitkZWYgaXNfYmxhbmtfbGlu
ZShsaW5lKToKKyAgICAiIiJSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGxpbmUgaXMgYmxhbmsu
CisKKyAgICBXZSBjb25zaWRlciBhIGxpbmUgdG8gYmUgYmxhbmsgaWYgdGhlIGxpbmUgaXMgZW1w
dHkgb3IgY29uc2lzdHMgb2YKKyAgICBvbmx5IHdoaXRlIHNwYWNlcy4KKworICAgIEFyZ3M6Cisg
ICAgICBsaW5lOiBBIGxpbmUgb2YgYSBzdHJpbmcuCisKKyAgICBSZXR1cm5zOgorICAgICAgVHJ1
ZSwgaWYgdGhlIGdpdmVuIGxpbmUgaXMgYmxhbmsuCisgICAgIiIiCisgICAgcmV0dXJuIG5vdCBs
aW5lIG9yIGxpbmUuaXNzcGFjZSgpCisKKworZGVmIGNoZWNrX2Zvcl9mdW5jdGlvbl9sZW5ndGhz
KGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb25fc3RhdGUsIGVycm9yKToKKyAgICAiIiJSZXBvcnRzIGZvciBs
b25nIGZ1bmN0aW9uIGJvZGllcy4KKworICAgIEZvciBhbiBvdmVydmlldyB3aHkgdGhpcyBpcyBk
b25lLCBzZWU6CisgICAgaHR0cDovL2dvb2dsZS1zdHlsZWd1aWRlLmdvb2dsZWNvZGUuY29tL3N2
bi90cnVuay9jcHBndWlkZS54bWwjV3JpdGVfU2hvcnRfRnVuY3Rpb25zCisKKyAgICBVc2VzIGEg
c2ltcGxpc3RpYyBhbGdvcml0aG0gYXNzdW1pbmcgb3RoZXIgc3R5bGUgZ3VpZGVsaW5lcworICAg
IChlc3BlY2lhbGx5IHNwYWNpbmcpIGFyZSBmb2xsb3dlZC4KKyAgICBPbmx5IGNoZWNrcyB1bmlu
ZGVudGVkIGZ1bmN0aW9ucywgc28gY2xhc3MgbWVtYmVycyBhcmUgdW5jaGVja2VkLgorICAgIFRy
aXZpYWwgYm9kaWVzIGFyZSB1bmNoZWNrZWQsIHNvIGNvbnN0cnVjdG9ycyB3aXRoIGh1Z2UgaW5p
dGlhbGl6ZXIgbGlzdHMKKyAgICBtYXkgYmUgbWlzc2VkLgorICAgIEJsYW5rL2NvbW1lbnQgbGlu
ZXMgYXJlIG5vdCBjb3VudGVkIHNvIGFzIHRvIGF2b2lkIGVuY291cmFnaW5nIHRoZSByZW1vdmFs
CisgICAgb2YgdmVydGljYWwgc3BhY2UgYW5kIGNvbW1tZW50cyBqdXN0IHRvIGdldCB0aHJvdWdo
IGEgbGludCBjaGVjay4KKyAgICBOT0xJTlQgKm9uIHRoZSBsYXN0IGxpbmUgb2YgYSBmdW5jdGlv
biogZGlzYWJsZXMgdGhpcyBjaGVjay4KKworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTogVGhl
IG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2Vk
TGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KKyAgICAgIGxpbmVfbnVtYmVyOiBU
aGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAgICAgZnVuY3Rpb25fc3RhdGU6IEN1
cnJlbnQgZnVuY3Rpb24gbmFtZSBhbmQgbGluZXMgaW4gYm9keSBzbyBmYXIuCisgICAgICBlcnJv
cjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgorICAgICIiIgor
ICAgIGxpbmVzID0gY2xlYW5fbGluZXMubGluZXMKKyAgICBsaW5lID0gbGluZXNbbGluZV9udW1i
ZXJdCisgICAgcmF3ID0gY2xlYW5fbGluZXMucmF3X2xpbmVzCisgICAgcmF3X2xpbmUgPSByYXdb
bGluZV9udW1iZXJdCisgICAgam9pbmVkX2xpbmUgPSAnJworCisgICAgc3RhcnRpbmdfZnVuYyA9
IEZhbHNlCisgICAgcmVnZXhwID0gcicoXHcoXHd8Ojp8XCp8XCZ8XHMpKilcKCcgICMgZGVjbHMg
KiAmIHNwYWNlOjpuYW1lKCAuLi4KKyAgICBtYXRjaF9yZXN1bHQgPSBtYXRjaChyZWdleHAsIGxp
bmUpCisgICAgaWYgbWF0Y2hfcmVzdWx0OgorICAgICAgICAjIElmIHRoZSBuYW1lIGlzIGFsbCBj
YXBzIGFuZCB1bmRlcnNjb3JlcywgZmlndXJlIGl0J3MgYSBtYWNybyBhbmQKKyAgICAgICAgIyBp
Z25vcmUgaXQsIHVubGVzcyBpdCdzIFRFU1Qgb3IgVEVTVF9GLgorICAgICAgICBmdW5jdGlvbl9u
YW1lID0gbWF0Y2hfcmVzdWx0Lmdyb3VwKDEpLnNwbGl0KClbLTFdCisgICAgICAgIGlmIGZ1bmN0
aW9uX25hbWUgPT0gJ1RFU1QnIG9yIGZ1bmN0aW9uX25hbWUgPT0gJ1RFU1RfRicgb3IgKG5vdCBt
YXRjaChyJ1tBLVpfXSskJywgZnVuY3Rpb25fbmFtZSkpOgorICAgICAgICAgICAgc3RhcnRpbmdf
ZnVuYyA9IFRydWUKKworICAgIGlmIHN0YXJ0aW5nX2Z1bmM6CisgICAgICAgIGJvZHlfZm91bmQg
PSBGYWxzZQorICAgICAgICBmb3Igc3RhcnRfbGluZV9udW1iZXIgaW4geHJhbmdlKGxpbmVfbnVt
YmVyLCBjbGVhbl9saW5lcy5udW1fbGluZXMoKSk6CisgICAgICAgICAgICBzdGFydF9saW5lID0g
bGluZXNbc3RhcnRfbGluZV9udW1iZXJdCisgICAgICAgICAgICBqb2luZWRfbGluZSArPSAnICcg
KyBzdGFydF9saW5lLmxzdHJpcCgpCisgICAgICAgICAgICBpZiBzZWFyY2gocicoO3x9KScsIHN0
YXJ0X2xpbmUpOiAgIyBEZWNsYXJhdGlvbnMgYW5kIHRyaXZpYWwgZnVuY3Rpb25zCisgICAgICAg
ICAgICAgICAgYm9keV9mb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICBicmVhayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMgLi4uIGlnbm9yZQorICAgICAgICAgICAgaWYgc2VhcmNo
KHIneycsIHN0YXJ0X2xpbmUpOgorICAgICAgICAgICAgICAgIGJvZHlfZm91bmQgPSBUcnVlCisg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gPSBzZWFyY2gocicoKFx3fDopKilcKCcsIGxpbmUpLmdy
b3VwKDEpCisgICAgICAgICAgICAgICAgaWYgbWF0Y2gocidURVNUJywgZnVuY3Rpb24pOiAgICAj
IEhhbmRsZSBURVNULi4uIG1hY3JvcworICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJfcmVn
ZXhwID0gc2VhcmNoKHInKFwoLipcKSknLCBqb2luZWRfbGluZSkKKyAgICAgICAgICAgICAgICAg
ICAgaWYgcGFyYW1ldGVyX3JlZ2V4cDogICAgICAgICAgICAgIyBJZ25vcmUgYmFkIHN5bnRheAor
ICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKz0gcGFyYW1ldGVyX3JlZ2V4cC5ncm91
cCgxKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
ICs9ICcoKScKKyAgICAgICAgICAgICAgICBmdW5jdGlvbl9zdGF0ZS5iZWdpbihmdW5jdGlvbikK
KyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBub3QgYm9keV9mb3VuZDoKKyAgICAg
ICAgICAgICMgTm8gYm9keSBmb3IgdGhlIGZ1bmN0aW9uIChvciBldmlkZW5jZSBvZiBhIG5vbi1m
dW5jdGlvbikgd2FzIGZvdW5kLgorICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdyZWFk
YWJpbGl0eS9mbl9zaXplJywgNSwKKyAgICAgICAgICAgICAgICAgICdMaW50IGZhaWxlZCB0byBm
aW5kIHN0YXJ0IG9mIGZ1bmN0aW9uIGJvZHkuJykKKyAgICBlbGlmIG1hdGNoKHInXlx9XHMqJCcs
IGxpbmUpOiAgIyBmdW5jdGlvbiBlbmQKKyAgICAgICAgaWYgbm90IHNlYXJjaChyJ1xiTk9MSU5U
XGInLCByYXdfbGluZSk6CisgICAgICAgICAgICBmdW5jdGlvbl9zdGF0ZS5jaGVjayhlcnJvciwg
ZmlsZW5hbWUsIGxpbmVfbnVtYmVyKQorICAgICAgICBmdW5jdGlvbl9zdGF0ZS5lbmQoKQorICAg
IGVsaWYgbm90IG1hdGNoKHInXlxzKiQnLCBsaW5lKToKKyAgICAgICAgZnVuY3Rpb25fc3RhdGUu
Y291bnQoKSAgIyBDb3VudCBub24tYmxhbmsvbm9uLWNvbW1lbnQgbGluZXMuCisKKworZGVmIGNo
ZWNrX3NwYWNpbmcoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgor
ICAgICIiIkNoZWNrcyBmb3IgdGhlIGNvcnJlY3RuZXNzIG9mIHZhcmlvdXMgc3BhY2luZyBpc3N1
ZXMgaW4gdGhlIGNvZGUuCisKKyAgICBUaGluZ3Mgd2UgY2hlY2sgZm9yOiBzcGFjZXMgYXJvdW5k
IG9wZXJhdG9ycywgc3BhY2VzIGFmdGVyCisgICAgaWYvZm9yL3doaWxlL3N3aXRjaCwgbm8gc3Bh
Y2VzIGFyb3VuZCBwYXJlbnMgaW4gZnVuY3Rpb24gY2FsbHMsIHR3bworICAgIHNwYWNlcyBiZXR3
ZWVuIGNvZGUgYW5kIGNvbW1lbnQsIGRvbid0IHN0YXJ0IGEgYmxvY2sgd2l0aCBhIGJsYW5rCisg
ICAgbGluZSwgZG9uJ3QgZW5kIGEgZnVuY3Rpb24gd2l0aCBhIGJsYW5rIGxpbmUsIGRvbid0IGhh
dmUgdG9vIG1hbnkKKyAgICBibGFuayBsaW5lcyBpbiBhIHJvdy4KKworICAgIEFyZ3M6CisgICAg
ICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgIGNsZWFuX2xp
bmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KKyAgICAg
IGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAgICAgZXJy
b3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KKyAgICAiIiIK
KworICAgIHJhdyA9IGNsZWFuX2xpbmVzLnJhd19saW5lcworICAgIGxpbmUgPSByYXdbbGluZV9u
dW1iZXJdCisKKyAgICAjIEJlZm9yZSBuaXhpbmcgY29tbWVudHMsIGNoZWNrIGlmIHRoZSBsaW5l
IGlzIGJsYW5rIGZvciBubyBnb29kCisgICAgIyByZWFzb24uICBUaGlzIGluY2x1ZGVzIHRoZSBm
aXJzdCBsaW5lIGFmdGVyIGEgYmxvY2sgaXMgb3BlbmVkLCBhbmQKKyAgICAjIGJsYW5rIGxpbmVz
IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiAoaWUsIHJpZ2h0IGJlZm9yZSBhIGxpbmUgbGlrZSAn
fScpLgorICAgIGlmIGlzX2JsYW5rX2xpbmUobGluZSk6CisgICAgICAgIGVsaWRlZCA9IGNsZWFu
X2xpbmVzLmVsaWRlZAorICAgICAgICBwcmV2aW91c19saW5lID0gZWxpZGVkW2xpbmVfbnVtYmVy
IC0gMV0KKyAgICAgICAgcHJldmlvdXNfYnJhY2UgPSBwcmV2aW91c19saW5lLnJmaW5kKCd7JykK
KyAgICAgICAgIyBGSVhNRTogRG9uJ3QgY29tcGxhaW4gaWYgbGluZSBiZWZvcmUgYmxhbmsgbGlu
ZSwgYW5kIGxpbmUgYWZ0ZXIsCisgICAgICAgICMgICAgICAgIGJvdGggc3RhcnQgd2l0aCBhbG51
bXMgYW5kIGFyZSBpbmRlbnRlZCB0aGUgc2FtZSBhbW91bnQuCisgICAgICAgICMgICAgICAgIFRo
aXMgaWdub3JlcyB3aGl0ZXNwYWNlIGF0IHRoZSBzdGFydCBvZiBhIG5hbWVzcGFjZSBibG9jawor
ICAgICAgICAjICAgICAgICBiZWNhdXNlIHRob3NlIGFyZSBub3QgdXN1YWxseSBpbmRlbnRlZC4K
KyAgICAgICAgaWYgKHByZXZpb3VzX2JyYWNlICE9IC0xIGFuZCBwcmV2aW91c19saW5lW3ByZXZp
b3VzX2JyYWNlOl0uZmluZCgnfScpID09IC0xCisgICAgICAgICAgICBhbmQgcHJldmlvdXNfbGlu
ZVs6cHJldmlvdXNfYnJhY2VdLmZpbmQoJ25hbWVzcGFjZScpID09IC0xKToKKyAgICAgICAgICAg
ICMgT0ssIHdlIGhhdmUgYSBibGFuayBsaW5lIGF0IHRoZSBzdGFydCBvZiBhIGNvZGUgYmxvY2su
ICBCZWZvcmUgd2UKKyAgICAgICAgICAgICMgY29tcGxhaW4sIHdlIGNoZWNrIGlmIGl0IGlzIGFu
IGV4Y2VwdGlvbiB0byB0aGUgcnVsZTogVGhlIHByZXZpb3VzCisgICAgICAgICAgICAjIG5vbi1l
bXB0eSBsaW5lIGhhcyB0aGUgcGFyYW1ldGVycyBvZiBhIGZ1bmN0aW9uIGhlYWRlciB0aGF0IGFy
ZSBpbmRlbnRlZAorICAgICAgICAgICAgIyA0IHNwYWNlcyAoYmVjYXVzZSB0aGV5IGRpZCBub3Qg
Zml0IGluIGEgODAgY29sdW1uIGxpbmUgd2hlbiBwbGFjZWQgb24KKyAgICAgICAgICAgICMgdGhl
IHNhbWUgbGluZSBhcyB0aGUgZnVuY3Rpb24gbmFtZSkuICBXZSBhbHNvIGNoZWNrIGZvciB0aGUg
Y2FzZSB3aGVyZQorICAgICAgICAgICAgIyB0aGUgcHJldmlvdXMgbGluZSBpcyBpbmRlbnRlZCA2
IHNwYWNlcywgd2hpY2ggbWF5IGhhcHBlbiB3aGVuIHRoZQorICAgICAgICAgICAgIyBpbml0aWFs
aXplcnMgb2YgYSBjb25zdHJ1Y3RvciBkbyBub3QgZml0IGludG8gYSA4MCBjb2x1bW4gbGluZS4K
KyAgICAgICAgICAgIGV4Y2VwdGlvbiA9IEZhbHNlCisgICAgICAgICAgICBpZiBtYXRjaChyJyB7
Nn1cdycsIHByZXZpb3VzX2xpbmUpOiAgIyBJbml0aWFsaXplciBsaXN0PworICAgICAgICAgICAg
ICAgICMgV2UgYXJlIGxvb2tpbmcgZm9yIHRoZSBvcGVuaW5nIGNvbHVtbiBvZiBpbml0aWFsaXpl
ciBsaXN0LCB3aGljaAorICAgICAgICAgICAgICAgICMgc2hvdWxkIGJlIGluZGVudGVkIDQgc3Bh
Y2VzIHRvIGNhdXNlIDYgc3BhY2UgaW5kZW50YXRpb24gYWZ0ZXJ3YXJkcy4KKyAgICAgICAgICAg
ICAgICBzZWFyY2hfcG9zaXRpb24gPSBsaW5lX251bWJlciAtIDIKKyAgICAgICAgICAgICAgICB3
aGlsZSAoc2VhcmNoX3Bvc2l0aW9uID49IDAKKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIG1h
dGNoKHInIHs2fVx3JywgZWxpZGVkW3NlYXJjaF9wb3NpdGlvbl0pKToKKyAgICAgICAgICAgICAg
ICAgICAgc2VhcmNoX3Bvc2l0aW9uIC09IDEKKyAgICAgICAgICAgICAgICBleGNlcHRpb24gPSAo
c2VhcmNoX3Bvc2l0aW9uID49IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVs
aWRlZFtzZWFyY2hfcG9zaXRpb25dWzo1XSA9PSAnICAgIDonKQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICAjIFNlYXJjaCBmb3IgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cyBvciBh
biBpbml0aWFsaXplciBsaXN0LiAgV2UgdXNlIGEKKyAgICAgICAgICAgICAgICAjIHNpbXBsZSBo
ZXVyaXN0aWMgaGVyZTogSWYgdGhlIGxpbmUgaXMgaW5kZW50ZWQgNCBzcGFjZXM7IGFuZCB3ZSBo
YXZlIGEKKyAgICAgICAgICAgICAgICAjIGNsb3NpbmcgcGFyZW4sIHdpdGhvdXQgdGhlIG9wZW5p
bmcgcGFyZW4sIGZvbGxvd2VkIGJ5IGFuIG9wZW5pbmcgYnJhY2UKKyAgICAgICAgICAgICAgICAj
IG9yIGNvbG9uIChmb3IgaW5pdGlhbGl6ZXIgbGlzdHMpIHdlIGFzc3VtZSB0aGF0IGl0IGlzIHRo
ZSBsYXN0IGxpbmUgb2YKKyAgICAgICAgICAgICAgICAjIGEgZnVuY3Rpb24gaGVhZGVyLiAgSWYg
d2UgaGF2ZSBhIGNvbG9uIGluZGVudGVkIDQgc3BhY2VzLCBpdCBpcyBhbgorICAgICAgICAgICAg
ICAgICMgaW5pdGlhbGl6ZXIgbGlzdC4KKyAgICAgICAgICAgICAgICBleGNlcHRpb24gPSAobWF0
Y2gocicgezR9XHdbXlwoXSpcKVxzKihjb25zdFxzKik/KFx7XHMqJHw6KScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzX2xpbmUpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9yIG1hdGNoKHInIHs0fTonLCBwcmV2aW91c19saW5lKSkKKworICAgICAg
ICAgICAgaWYgbm90IGV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251bWJl
ciwgJ3doaXRlc3BhY2UvYmxhbmtfbGluZScsIDIsCisgICAgICAgICAgICAgICAgICAgICAgJ0Js
YW5rIGxpbmUgYXQgdGhlIHN0YXJ0IG9mIGEgY29kZSBibG9jay4gIElzIHRoaXMgbmVlZGVkPycp
CisgICAgICAgICMgVGhpcyBkb2Vzbid0IGlnbm9yZSB3aGl0ZXNwYWNlIGF0IHRoZSBlbmQgb2Yg
YSBuYW1lc3BhY2UgYmxvY2sKKyAgICAgICAgIyBiZWNhdXNlIHRoYXQgaXMgdG9vIGhhcmQgd2l0
aG91dCBwYWlyaW5nIG9wZW4vY2xvc2UgYnJhY2VzOworICAgICAgICAjIGhvd2V2ZXIsIGEgc3Bl
Y2lhbCBleGNlcHRpb24gaXMgbWFkZSBmb3IgbmFtZXNwYWNlIGNsb3NpbmcKKyAgICAgICAgIyBi
cmFja2V0cyB3aGljaCBoYXZlIGEgY29tbWVudCBjb250YWluaW5nICJuYW1lc3BhY2UiLgorICAg
ICAgICAjCisgICAgICAgICMgQWxzbywgaWdub3JlIGJsYW5rIGxpbmVzIGF0IHRoZSBlbmQgb2Yg
YSBibG9jayBpbiBhIGxvbmcgaWYtZWxzZQorICAgICAgICAjIGNoYWluLCBsaWtlIHRoaXM6Cisg
ICAgICAgICMgICBpZiAoY29uZGl0aW9uMSkgeworICAgICAgICAjICAgICAvLyBTb21ldGhpbmcg
Zm9sbG93ZWQgYnkgYSBibGFuayBsaW5lCisgICAgICAgICMKKyAgICAgICAgIyAgIH0gZWxzZSBp
ZiAoY29uZGl0aW9uMikgeworICAgICAgICAjICAgICAvLyBTb21ldGhpbmcgZWxzZQorICAgICAg
ICAjICAgfQorICAgICAgICBpZiBsaW5lX251bWJlciArIDEgPCBjbGVhbl9saW5lcy5udW1fbGlu
ZXMoKToKKyAgICAgICAgICAgIG5leHRfbGluZSA9IHJhd1tsaW5lX251bWJlciArIDFdCisgICAg
ICAgICAgICBpZiAobmV4dF9saW5lCisgICAgICAgICAgICAgICAgYW5kIG1hdGNoKHInXHMqfScs
IG5leHRfbGluZSkKKyAgICAgICAgICAgICAgICBhbmQgbmV4dF9saW5lLmZpbmQoJ25hbWVzcGFj
ZScpID09IC0xCisgICAgICAgICAgICAgICAgYW5kIG5leHRfbGluZS5maW5kKCd9IGVsc2UgJykg
PT0gLTEpOgorICAgICAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9i
bGFua19saW5lJywgMywKKyAgICAgICAgICAgICAgICAgICAgICAnQmxhbmsgbGluZSBhdCB0aGUg
ZW5kIG9mIGEgY29kZSBibG9jay4gIElzIHRoaXMgbmVlZGVkPycpCisKKyAgICAjIE5leHQsIHdl
IGNvbXBsYWluIGlmIHRoZXJlJ3MgYSBjb21tZW50IHRvbyBuZWFyIHRoZSB0ZXh0CisgICAgY29t
bWVudF9wb3NpdGlvbiA9IGxpbmUuZmluZCgnLy8nKQorICAgIGlmIGNvbW1lbnRfcG9zaXRpb24g
IT0gLTE6CisgICAgICAgICMgQ2hlY2sgaWYgdGhlIC8vIG1heSBiZSBpbiBxdW90ZXMuICBJZiBz
bywgaWdub3JlIGl0CisgICAgICAgICMgQ29tcGFyaXNvbnMgbWFkZSBleHBsaWNpdCBmb3IgY2xh
cml0eSAtLSBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAzCisgICAgICAgIGlmIChsaW5lLmNvdW50
KCciJywgMCwgY29tbWVudF9wb3NpdGlvbikgLSBsaW5lLmNvdW50KCdcXCInLCAwLCBjb21tZW50
X3Bvc2l0aW9uKSkgJSAyID09IDA6ICAgIyBub3QgaW4gcXVvdGVzCisgICAgICAgICAgICAjIEFs
bG93IG9uZSBzcGFjZSBiZWZvcmUgZW5kIG9mIGxpbmUgY29tbWVudC4KKyAgICAgICAgICAgIGlm
IChub3QgbWF0Y2gocideXHMqJCcsIGxpbmVbOmNvbW1lbnRfcG9zaXRpb25dKQorICAgICAgICAg
ICAgICAgIGFuZCAoY29tbWVudF9wb3NpdGlvbiA+PSAxCisgICAgICAgICAgICAgICAgYW5kICgo
bGluZVtjb21tZW50X3Bvc2l0aW9uIC0gMV0gbm90IGluIHN0cmluZy53aGl0ZXNwYWNlKQorICAg
ICAgICAgICAgICAgICAgICAgb3IgKGNvbW1lbnRfcG9zaXRpb24gPj0gMgorICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZCBsaW5lW2NvbW1lbnRfcG9zaXRpb24gLSAyXSBpbiBzdHJpbmcud2hp
dGVzcGFjZSkpKSk6CisgICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNw
YWNlL2NvbW1lbnRzJywgNSwKKyAgICAgICAgICAgICAgICAgICAgICAnT25lIHNwYWNlIGJlZm9y
ZSBlbmQgb2YgbGluZSBjb21tZW50cycpCisgICAgICAgICAgICAjIFRoZXJlIHNob3VsZCBhbHdh
eXMgYmUgYSBzcGFjZSBiZXR3ZWVuIHRoZSAvLyBhbmQgdGhlIGNvbW1lbnQKKyAgICAgICAgICAg
IGNvbW1lbnRlbmQgPSBjb21tZW50X3Bvc2l0aW9uICsgMgorICAgICAgICAgICAgaWYgY29tbWVu
dGVuZCA8IGxlbihsaW5lKSBhbmQgbm90IGxpbmVbY29tbWVudGVuZF0gPT0gJyAnOgorICAgICAg
ICAgICAgICAgICMgYnV0IHNvbWUgbGluZXMgYXJlIGV4Y2VwdGlvbnMgLS0gZS5nLiBpZiB0aGV5
J3JlIGJpZworICAgICAgICAgICAgICAgICMgY29tbWVudCBkZWxpbWl0ZXJzIGxpa2U6CisgICAg
ICAgICAgICAgICAgIyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAjIG9yIHRoZXkgYmVnaW4gd2l0aCBt
dWx0aXBsZSBzbGFzaGVzIGZvbGxvd2VkIGJ5IGEgc3BhY2U6CisgICAgICAgICAgICAgICAgIyAv
Ly8vLy8vLyBIZWFkZXIgY29tbWVudAorICAgICAgICAgICAgICAgIG1hdGNoZWQgPSAoc2VhcmNo
KHInWz0vLV17NCx9XHMqJCcsIGxpbmVbY29tbWVudGVuZDpdKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3Igc2VhcmNoKHInXi8rICcsIGxpbmVbY29tbWVudGVuZDpdKSkKKyAgICAgICAg
ICAgICAgICBpZiBub3QgbWF0Y2hlZDoKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IobGluZV9u
dW1iZXIsICd3aGl0ZXNwYWNlL2NvbW1lbnRzJywgNCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ1Nob3VsZCBoYXZlIGEgc3BhY2UgYmV0d2VlbiAvLyBhbmQgY29tbWVudCcpCisKKyAgICBs
aW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXSAgIyBnZXQgcmlkIG9mIGNvbW1l
bnRzIGFuZCBzdHJpbmdzCisKKyAgICAjIERvbid0IHRyeSB0byBkbyBzcGFjaW5nIGNoZWNrcyBm
b3Igb3BlcmF0b3IgbWV0aG9kcworICAgIGxpbmUgPSBzdWIocidvcGVyYXRvcig9PXwhPXw8fDw8
fDw9fD49fD4+fD4pXCgnLCAnb3BlcmF0b3JcKCcsIGxpbmUpCisgICAgIyBEb24ndCB0cnkgdG8g
ZG8gc3BhY2luZyBjaGVja3MgZm9yICNpbmNsdWRlIG9yICNpbXBvcnQgc3RhdGVtZW50cyBhdAor
ICAgICMgbWluaW11bSBiZWNhdXNlIGl0IG1lc3NlcyB1cCBjaGVja3MgZm9yIHNwYWNpbmcgYXJv
dW5kIC8KKyAgICBpZiBtYXRjaChyJ1xzKiNccyooPzppbmNsdWRlfGltcG9ydCknLCBsaW5lKToK
KyAgICAgICAgcmV0dXJuCisgICAgaWYgc2VhcmNoKHInW1x3Ll09W1x3Ll0nLCBsaW5lKToKKyAg
ICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL29wZXJhdG9ycycsIDQsCisgICAg
ICAgICAgICAgICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPScpCisKKyAgICAjIEZJWE1FOiBJdCdz
IG5vdCBvayB0byBoYXZlIHNwYWNlcyBhcm91bmQgYmluYXJ5IG9wZXJhdG9ycyBsaWtlIC4KKwor
ICAgICMgWW91IHNob3VsZCBhbHdheXMgaGF2ZSB3aGl0ZXNwYWNlIGFyb3VuZCBiaW5hcnkgb3Bl
cmF0b3JzLgorICAgICMgQWxhcywgd2UgY2FuJ3QgdGVzdCA8IG9yID4gYmVjYXVzZSB0aGV5J3Jl
IGxlZ2l0aW1hdGVseSB1c2VkIHNhbnMgc3BhY2VzCisgICAgIyAoYS0+YiwgdmVjdG9yPGludD4g
YSkuICBUaGUgb25seSB0aW1lIHdlIGNhbiB0ZWxsIGlzIGEgPCB3aXRoIG5vID4sIGFuZAorICAg
ICMgb25seSBpZiBpdCdzIG5vdCB0ZW1wbGF0ZSBwYXJhbXMgbGlzdCBzcGlsbGluZyBpbnRvIHRo
ZSBuZXh0IGxpbmUuCisgICAgbWF0Y2hlZCA9IHNlYXJjaChyJ1tePD49IVxzXSg9PXwhPXxcKz18
LT18XCo9fC89fC98XHw9fCY9fDw8PXw+Pj18PD18Pj18XHxcfHxcfHwmJnw+Pnw8PClbXjw+PSFc
c10nLCBsaW5lKQorICAgIGlmIG5vdCBtYXRjaGVkOgorICAgICAgICAjIE5vdGUgdGhhdCB3aGls
ZSBpdCBzZWVtcyB0aGF0IHRoZSAnPFtePF0qJyB0ZXJtIGluIHRoZSBmb2xsb3dpbmcKKyAgICAg
ICAgIyByZWdleHAgY291bGQgYmUgc2ltcGxpZmllZCB0byAnPC4qJywgd2hpY2ggd291bGQgaW5k
ZWVkIG1hdGNoCisgICAgICAgICMgdGhlIHNhbWUgY2xhc3Mgb2Ygc3RyaW5ncywgdGhlIFtePF0g
bWVhbnMgdGhhdCBzZWFyY2hpbmcgZm9yIHRoZQorICAgICAgICAjIHJlZ2V4cCB0YWtlcyBsaW5l
YXIgcmF0aGVyIHRoYW4gcXVhZHJhdGljIHRpbWUuCisgICAgICAgIGlmIG5vdCBzZWFyY2gocic8
W148XSosXHMqJCcsIGxpbmUpOiAgIyB0ZW1wbGF0ZSBwYXJhbXMgc3BpbGwKKyAgICAgICAgICAg
IG1hdGNoZWQgPSBzZWFyY2gocidbXjw+PSFcc10oPClbXjw+PSFcc10oW14+XXwtPikqJCcsIGxp
bmUpCisgICAgaWYgbWF0Y2hlZDoKKyAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNw
YWNlL29wZXJhdG9ycycsIDMsCisgICAgICAgICAgICAgICdNaXNzaW5nIHNwYWNlcyBhcm91bmQg
JXMnICUgbWF0Y2hlZC5ncm91cCgxKSkKKworICAgICMgVGhlcmUgc2hvdWxkbid0IGJlIHNwYWNl
IGFyb3VuZCB1bmFyeSBvcGVyYXRvcnMKKyAgICBtYXRjaGVkID0gc2VhcmNoKHInKCFcc3x+XHN8
W1xzXS0tW1xzO118W1xzXVwrXCtbXHM7XSknLCBsaW5lKQorICAgIGlmIG1hdGNoZWQ6CisgICAg
ICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9vcGVyYXRvcnMnLCA0LAorICAgICAg
ICAgICAgICAnRXh0cmEgc3BhY2UgZm9yIG9wZXJhdG9yICVzJyAlIG1hdGNoZWQuZ3JvdXAoMSkp
CisKKyAgICAjIEEgcGV0IHBlZXZlIG9mIG1pbmU6IG5vIHNwYWNlcyBhZnRlciBhbiBpZiwgd2hp
bGUsIHN3aXRjaCwgb3IgZm9yCisgICAgbWF0Y2hlZCA9IHNlYXJjaChyJyAoaWZcKHxmb3JcKHxm
b3JlYWNoXCh8d2hpbGVcKHxzd2l0Y2hcKCknLCBsaW5lKQorICAgIGlmIG1hdGNoZWQ6CisgICAg
ICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJlbnMnLCA1LAorICAgICAgICAg
ICAgICAnTWlzc2luZyBzcGFjZSBiZWZvcmUgKCBpbiAlcycgJSBtYXRjaGVkLmdyb3VwKDEpKQor
CisgICAgIyBGb3IgaWYvZm9yL2ZvcmVhY2gvd2hpbGUvc3dpdGNoLCB0aGUgbGVmdCBhbmQgcmln
aHQgcGFyZW5zIHNob3VsZCBiZQorICAgICMgY29uc2lzdGVudCBhYm91dCBob3cgbWFueSBzcGFj
ZXMgYXJlIGluc2lkZSB0aGUgcGFyZW5zLCBhbmQKKyAgICAjIHRoZXJlIHNob3VsZCBlaXRoZXIg
YmUgemVybyBvciBvbmUgc3BhY2VzIGluc2lkZSB0aGUgcGFyZW5zLgorICAgICMgV2UgZG9uJ3Qg
d2FudDogImlmICggZm9vKSIgb3IgImlmICggZm9vICAgKSIuCisgICAgIyBFeGNlcHRpb246ICJm
b3IgKCA7IGZvbzsgYmFyKSIgYW5kICJmb3IgKGZvbzsgYmFyOyApIiBhcmUgYWxsb3dlZC4KKyAg
ICBtYXRjaGVkID0gc2VhcmNoKHInXGIoaWZ8Zm9yfGZvcmVhY2h8d2hpbGV8c3dpdGNoKVxzKlwo
KFsgXSopKC4pLipbXiBdKyhbIF0qKVwpXHMqe1xzKiQnLAorICAgICAgICAgICAgICAgICAgICAg
bGluZSkKKyAgICBpZiBtYXRjaGVkOgorICAgICAgICBpZiBsZW4obWF0Y2hlZC5ncm91cCgyKSkg
IT0gbGVuKG1hdGNoZWQuZ3JvdXAoNCkpOgorICAgICAgICAgICAgaWYgbm90IChtYXRjaGVkLmdy
b3VwKDMpID09ICc7JworICAgICAgICAgICAgICAgICAgICBhbmQgbGVuKG1hdGNoZWQuZ3JvdXAo
MikpID09IDEgKyBsZW4obWF0Y2hlZC5ncm91cCg0KSkKKyAgICAgICAgICAgICAgICAgICAgb3Ig
bm90IG1hdGNoZWQuZ3JvdXAoMikgYW5kIHNlYXJjaChyJ1xiZm9yXHMqXCguKjsgXCknLCBsaW5l
KSk6CisgICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVu
cycsIDUsCisgICAgICAgICAgICAgICAgICAgICAgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNpZGUg
KCkgaW4gJXMnICUgbWF0Y2hlZC5ncm91cCgxKSkKKyAgICAgICAgaWYgbm90IGxlbihtYXRjaGVk
Lmdyb3VwKDIpKSBpbiBbMCwgMV06CisgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3do
aXRlc3BhY2UvcGFyZW5zJywgNSwKKyAgICAgICAgICAgICAgICAgICdTaG91bGQgaGF2ZSB6ZXJv
IG9yIG9uZSBzcGFjZXMgaW5zaWRlICggYW5kICkgaW4gJXMnICUKKyAgICAgICAgICAgICAgICAg
IG1hdGNoZWQuZ3JvdXAoMSkpCisKKyAgICAjIFlvdSBzaG91bGQgYWx3YXlzIGhhdmUgYSBzcGFj
ZSBhZnRlciBhIGNvbW1hIChlaXRoZXIgYXMgZm4gYXJnIG9yIG9wZXJhdG9yKQorICAgIGlmIHNl
YXJjaChyJyxbXlxzXScsIGxpbmUpOgorICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRl
c3BhY2UvY29tbWEnLCAzLAorICAgICAgICAgICAgICAnTWlzc2luZyBzcGFjZSBhZnRlciAsJykK
KworICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKCcuY3BwJyk6CisgICAgICAgICMgQysrIHNob3Vs
ZCBoYXZlIHRoZSAmIG9yICogYmVzaWRlIHRoZSB0eXBlIG5vdCB0aGUgdmFyaWFibGUgbmFtZS4K
KyAgICAgICAgbWF0Y2hlZCA9IG1hdGNoKHInXHMqXHcrKD88IVxicmV0dXJuKVxzKyg/UDxwb2lu
dGVyX29wZXJhdG9yPlwqfFwmKVx3KycsIGxpbmUpCisgICAgICAgIGlmIG1hdGNoZWQ6CisgICAg
ICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvZGVjbGFyYXRpb24nLCAzLAor
ICAgICAgICAgICAgICAgICAgJ0RlY2xhcmF0aW9uIGhhcyBzcGFjZSBiZXR3ZWVuIHR5cGUgbmFt
ZSBhbmQgJXMgaW4gJXMnICUgKG1hdGNoZWQuZ3JvdXAoJ3BvaW50ZXJfb3BlcmF0b3InKSwgbWF0
Y2hlZC5ncm91cCgwKS5zdHJpcCgpKSkKKworICAgIGVsaWYgZmlsZW5hbWUuZW5kc3dpdGgoJy5j
Jyk6CisgICAgICAgICMgQyBQb2ludGVyIGRlY2xhcmF0aW9uIHNob3VsZCBoYXZlIHRoZSAqIGJl
c2lkZSB0aGUgdmFyaWFibGUgbm90IHRoZSB0eXBlIG5hbWUuCisgICAgICAgIG1hdGNoZWQgPSBz
ZWFyY2gocideXHMqXHcrXCpccytcdysnLCBsaW5lKQorICAgICAgICBpZiBtYXRjaGVkOgorICAg
ICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2RlY2xhcmF0aW9uJywgMywK
KyAgICAgICAgICAgICAgICAgICdEZWNsYXJhdGlvbiBoYXMgc3BhY2UgYmV0d2VlbiAqIGFuZCB2
YXJpYWJsZSBuYW1lIGluICVzJyAlIG1hdGNoZWQuZ3JvdXAoMCkuc3RyaXAoKSkKKworICAgICMg
TmV4dCB3ZSB3aWxsIGxvb2sgZm9yIGlzc3VlcyB3aXRoIGZ1bmN0aW9uIGNhbGxzLgorICAgIGNo
ZWNrX3NwYWNpbmdfZm9yX2Z1bmN0aW9uX2NhbGwoZmlsZW5hbWUsIGxpbmUsIGxpbmVfbnVtYmVy
LCBlcnJvcikKKworICAgICMgRXhjZXB0IGFmdGVyIGFuIG9wZW5pbmcgcGFyZW4sIHlvdSBzaG91
bGQgaGF2ZSBzcGFjZXMgYmVmb3JlIHlvdXIgYnJhY2VzLgorICAgICMgQW5kIHNpbmNlIHlvdSBz
aG91bGQgbmV2ZXIgaGF2ZSBicmFjZXMgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUsIHRoaXMg
aXMKKyAgICAjIGFuIGVhc3kgdGVzdC4KKyAgICBpZiBzZWFyY2gocidbXiAoe117JywgbGluZSk6
CisgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9icmFjZXMnLCA1LAorICAg
ICAgICAgICAgICAnTWlzc2luZyBzcGFjZSBiZWZvcmUgeycpCisKKyAgICAjIE1ha2Ugc3VyZSAn
fSBlbHNlIHsnIGhhcyBzcGFjZXMuCisgICAgaWYgc2VhcmNoKHInfWVsc2UnLCBsaW5lKToKKyAg
ICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2JyYWNlcycsIDUsCisgICAgICAg
ICAgICAgICdNaXNzaW5nIHNwYWNlIGJlZm9yZSBlbHNlJykKKworICAgICMgWW91IHNob3VsZG4n
dCBoYXZlIHNwYWNlcyBiZWZvcmUgeW91ciBicmFja2V0cywgZXhjZXB0IG1heWJlIGFmdGVyCisg
ICAgIyAnZGVsZXRlIFtdJyBvciAnbmV3IGNoYXIgKiBbXScuCisgICAgaWYgc2VhcmNoKHInXHdc
cytcWycsIGxpbmUpIGFuZCBub3Qgc2VhcmNoKHInZGVsZXRlXHMrXFsnLCBsaW5lKToKKyAgICAg
ICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2JyYWNlcycsIDUsCisgICAgICAgICAg
ICAgICdFeHRyYSBzcGFjZSBiZWZvcmUgWycpCisKKyAgICAjIFlvdSBzaG91bGRuJ3QgaGF2ZSBh
IHNwYWNlIGJlZm9yZSBhIHNlbWljb2xvbiBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lLgorICAgICMg
VGhlcmUncyBhIHNwZWNpYWwgY2FzZSBmb3IgImZvciIgc2luY2UgdGhlIHN0eWxlIGd1aWRlIGFs
bG93cyBzcGFjZSBiZWZvcmUKKyAgICAjIHRoZSBzZW1pY29sb24gdGhlcmUuCisgICAgaWYgc2Vh
cmNoKHInOlxzKjtccyokJywgbGluZSk6CisgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hp
dGVzcGFjZS9zZW1pY29sb24nLCA1LAorICAgICAgICAgICAgICAnU2VtaWNvbG9uIGRlZmluaW5n
IGVtcHR5IHN0YXRlbWVudC4gVXNlIHsgfSBpbnN0ZWFkLicpCisgICAgZWxpZiBzZWFyY2gocide
XHMqO1xzKiQnLCBsaW5lKToKKyAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNl
L3NlbWljb2xvbicsIDUsCisgICAgICAgICAgICAgICdMaW5lIGNvbnRhaW5zIG9ubHkgc2VtaWNv
bG9uLiBJZiB0aGlzIHNob3VsZCBiZSBhbiBlbXB0eSBzdGF0ZW1lbnQsICcKKyAgICAgICAgICAg
ICAgJ3VzZSB7IH0gaW5zdGVhZC4nKQorICAgIGVsaWYgKHNlYXJjaChyJ1xzKztccyokJywgbGlu
ZSkgYW5kIG5vdCBzZWFyY2gocidcYmZvclxiJywgbGluZSkpOgorICAgICAgICBlcnJvcihsaW5l
X251bWJlciwgJ3doaXRlc3BhY2Uvc2VtaWNvbG9uJywgNSwKKyAgICAgICAgICAgICAgJ0V4dHJh
IHNwYWNlIGJlZm9yZSBsYXN0IHNlbWljb2xvbi4gSWYgdGhpcyBzaG91bGQgYmUgYW4gZW1wdHkg
JworICAgICAgICAgICAgICAnc3RhdGVtZW50LCB1c2UgeyB9IGluc3RlYWQuJykKKyAgICBlbGlm
IChzZWFyY2gocidcYihmb3J8d2hpbGUpXHMqXCguKlwpXHMqO1xzKiQnLCBsaW5lKQorICAgICAg
ICAgIGFuZCBsaW5lLmNvdW50KCcoJykgPT0gbGluZS5jb3VudCgnKScpCisgICAgICAgICAgIyBB
bGxvdyBkbyB7fSB3aGlsZSgpOworICAgICAgICAgIGFuZCBub3Qgc2VhcmNoKHInfVxzKndoaWxl
JywgbGluZSkpOgorICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2Uvc2VtaWNv
bG9uJywgNSwKKyAgICAgICAgICAgICAgJ1NlbWljb2xvbiBkZWZpbmluZyBlbXB0eSBzdGF0ZW1l
bnQgZm9yIHRoaXMgbG9vcC4gVXNlIHsgfSBpbnN0ZWFkLicpCisKKworZGVmIGdldF9wcmV2aW91
c19ub25fYmxhbmtfbGluZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIpOgorICAgICIiIlJldHVy
biB0aGUgbW9zdCByZWNlbnQgbm9uLWJsYW5rIGxpbmUgYW5kIGl0cyBsaW5lIG51bWJlci4KKwor
ICAgIEFyZ3M6CisgICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNv
bnRhaW5pbmcgdGhlIGZpbGUgY29udGVudHMuCisgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJl
ciBvZiB0aGUgbGluZSB0byBjaGVjay4KKworICAgIFJldHVybnM6CisgICAgICBBIHR1cGxlIHdp
dGggdHdvIGVsZW1lbnRzLiAgVGhlIGZpcnN0IGVsZW1lbnQgaXMgdGhlIGNvbnRlbnRzIG9mIHRo
ZSBsYXN0CisgICAgICBub24tYmxhbmsgbGluZSBiZWZvcmUgdGhlIGN1cnJlbnQgbGluZSwgb3Ig
dGhlIGVtcHR5IHN0cmluZyBpZiB0aGlzIGlzIHRoZQorICAgICAgZmlyc3Qgbm9uLWJsYW5rIGxp
bmUuICBUaGUgc2Vjb25kIGlzIHRoZSBsaW5lIG51bWJlciBvZiB0aGF0IGxpbmUsIG9yIC0xCisg
ICAgICBpZiB0aGlzIGlzIHRoZSBmaXJzdCBub24tYmxhbmsgbGluZS4KKyAgICAiIiIKKworICAg
IHByZXZpb3VzX2xpbmVfbnVtYmVyID0gbGluZV9udW1iZXIgLSAxCisgICAgd2hpbGUgcHJldmlv
dXNfbGluZV9udW1iZXIgPj0gMDoKKyAgICAgICAgcHJldmlvdXNfbGluZSA9IGNsZWFuX2xpbmVz
LmVsaWRlZFtwcmV2aW91c19saW5lX251bWJlcl0KKyAgICAgICAgaWYgbm90IGlzX2JsYW5rX2xp
bmUocHJldmlvdXNfbGluZSk6ICAgICAjIGlmIG5vdCBhIGJsYW5rIGxpbmUuLi4KKyAgICAgICAg
ICAgIHJldHVybiAocHJldmlvdXNfbGluZSwgcHJldmlvdXNfbGluZV9udW1iZXIpCisgICAgICAg
IHByZXZpb3VzX2xpbmVfbnVtYmVyIC09IDEKKyAgICByZXR1cm4gKCcnLCAtMSkKKworCitkZWYg
Y2hlY2tfbmFtZXNwYWNlX2luZGVudGF0aW9uKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9u
dW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBmaWxlX3N0YXRlLCBlcnJvcik6CisgICAgIiIiTG9va3Mg
Zm9yIGluZGVudGF0aW9uIGVycm9ycyBpbnNpZGUgb2YgbmFtZXNwYWNlcy4KKworICAgIEFyZ3M6
CisgICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgIGNs
ZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4K
KyAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAg
ICAgZmlsZV9leHRlbnNpb246IFRoZSBleHRlbnNpb24gKGRvdCBub3QgaW5jbHVkZWQpIG9mIHRo
ZSBmaWxlLgorICAgICAgZmlsZV9zdGF0ZTogQSBfRmlsZVN0YXRlIGluc3RhbmNlIHdoaWNoIG1h
aW50YWlucyBpbmZvcm1hdGlvbiBhYm91dAorICAgICAgICAgICAgICAgICAgdGhlIHN0YXRlIG9m
IHRoaW5ncyBpbiB0aGUgZmlsZS4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3
aXRoIGFueSBlcnJvcnMgZm91bmQuCisgICAgIiIiCisKKyAgICBsaW5lID0gY2xlYW5fbGluZXMu
ZWxpZGVkW2xpbmVfbnVtYmVyXSAjIEdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MuCisK
KyAgICBuYW1lc3BhY2VfbWF0Y2ggPSBtYXRjaChyJyg/UDxuYW1lc3BhY2VfaW5kZW50YXRpb24+
XHMqKW5hbWVzcGFjZVxzK1xTK1xzKntccyokJywgbGluZSkKKyAgICBpZiBub3QgbmFtZXNwYWNl
X21hdGNoOgorICAgICAgICByZXR1cm4KKworICAgIGN1cnJlbnRfaW5kZW50YXRpb25fbGV2ZWwg
PSBsZW4obmFtZXNwYWNlX21hdGNoLmdyb3VwKCduYW1lc3BhY2VfaW5kZW50YXRpb24nKSkKKyAg
ICBpZiBjdXJyZW50X2luZGVudGF0aW9uX2xldmVsID4gMDoKKyAgICAgICAgIyBEb24ndCB3YXJu
IGFib3V0IGFuIGluZGVudGVkIG5hbWVzcGFjZSBpZiB3ZSBhbHJlYWR5IHdhcm5lZCBhYm91dCBp
bmRlbnRlZCBjb2RlLgorICAgICAgICBpZiBub3QgZmlsZV9zdGF0ZS5kaWRfaW5zaWRlX25hbWVz
cGFjZV9pbmRlbnRfd2FybmluZygpOgorICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3
aGl0ZXNwYWNlL2luZGVudCcsIDQsCisgICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlIHNob3Vs
ZCBuZXZlciBiZSBpbmRlbnRlZC4nKQorICAgICAgICByZXR1cm4KKyAgICBsb29raW5nX2Zvcl9z
ZW1pY29sb24gPSBGYWxzZTsKKyAgICBsaW5lX29mZnNldCA9IDAKKyAgICBpbl9wcmVwcm9jZXNz
b3JfZGlyZWN0aXZlID0gRmFsc2U7CisgICAgZm9yIGN1cnJlbnRfbGluZSBpbiBjbGVhbl9saW5l
cy5lbGlkZWRbbGluZV9udW1iZXIgKyAxOl06CisgICAgICAgIGxpbmVfb2Zmc2V0ICs9IDEKKyAg
ICAgICAgaWYgbm90IGN1cnJlbnRfbGluZS5zdHJpcCgpOgorICAgICAgICAgICAgY29udGludWUK
KyAgICAgICAgaWYgbm90IGN1cnJlbnRfaW5kZW50YXRpb25fbGV2ZWw6CisgICAgICAgICAgICBp
ZiBub3QgKGluX3ByZXByb2Nlc3Nvcl9kaXJlY3RpdmUgb3IgbG9va2luZ19mb3Jfc2VtaWNvbG9u
KToKKyAgICAgICAgICAgICAgICBpZiBub3QgbWF0Y2gocidcUycsIGN1cnJlbnRfbGluZSkgYW5k
IG5vdCBmaWxlX3N0YXRlLmRpZF9pbnNpZGVfbmFtZXNwYWNlX2luZGVudF93YXJuaW5nKCk6Cisg
ICAgICAgICAgICAgICAgICAgIGZpbGVfc3RhdGUuc2V0X2RpZF9pbnNpZGVfbmFtZXNwYWNlX2lu
ZGVudF93YXJuaW5nKCkKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIgKyBs
aW5lX29mZnNldCwgJ3doaXRlc3BhY2UvaW5kZW50JywgNCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0NvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBub3QgYmUgaW5kZW50ZWQuJykK
KyAgICAgICAgICAgIGlmIGluX3ByZXByb2Nlc3Nvcl9kaXJlY3RpdmUgb3IgKGN1cnJlbnRfbGlu
ZS5zdHJpcCgpWzBdID09ICcjJyk6ICMgVGhpcyB0YWtlcyBjYXJlIG9mIHByZXByb2Nlc3NvciBk
aXJlY3RpdmUgc3ludGF4LgorICAgICAgICAgICAgICAgIGluX3ByZXByb2Nlc3Nvcl9kaXJlY3Rp
dmUgPSBjdXJyZW50X2xpbmVbLTFdID09ICdcXCcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgbG9va2luZ19mb3Jfc2VtaWNvbG9uID0gKChjdXJyZW50X2xpbmUuZmluZCgnOycp
ID09IC0xKSBhbmQgKGN1cnJlbnRfbGluZS5zdHJpcCgpWy0xXSAhPSAnfScpKSBvciAoY3VycmVu
dF9saW5lWy0xXSA9PSAnXFwnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9va2luZ19m
b3Jfc2VtaWNvbG9uID0gRmFsc2U7ICMgSWYgd2UgaGF2ZSBhIGJyYWNlIHdlIG1heSBub3QgbmVl
ZCBhIHNlbWljb2xvbi4KKyAgICAgICAgY3VycmVudF9pbmRlbnRhdGlvbl9sZXZlbCArPSBjdXJy
ZW50X2xpbmUuY291bnQoJ3snKSAtIGN1cnJlbnRfbGluZS5jb3VudCgnfScpCisgICAgICAgIGlm
IGN1cnJlbnRfaW5kZW50YXRpb25fbGV2ZWwgPCAwOgorICAgICAgICAgICAgYnJlYWs7CisKK2Rl
ZiBjaGVja191c2luZ19zdGQoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJy
b3IpOgorICAgICIiIkxvb2tzIGZvciAndXNpbmcgc3RkOjpmb287JyBzdGF0ZW1lbnRzIHdoaWNo
IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoICd1c2luZyBuYW1lc3BhY2Ugc3RkOycuCisKKyAgICBB
cmdzOgorICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCisgICAg
ICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZp
bGUuCisgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4K
KyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQu
CisgICAgIiIiCisKKyAgICAjIFRoaXMgY2hlY2sgZG9lc24ndCBhcHBseSB0byBDIG9yIE9iamVj
dGl2ZS1DIGltcGxlbWVudGF0aW9uIGZpbGVzLgorICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKCcu
YycpIG9yIGZpbGVuYW1lLmVuZHN3aXRoKCcubScpOgorICAgICAgICByZXR1cm4KKworICAgIGxp
bmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICMgR2V0IHJpZCBvZiBjb21tZW50
cyBhbmQgc3RyaW5ncy4KKworICAgIHVzaW5nX3N0ZF9tYXRjaCA9IG1hdGNoKHInXHMqdXNpbmdc
cytzdGQ6Oig/UDxtZXRob2RfbmFtZT5cUyspXHMqO1xzKiQnLCBsaW5lKQorICAgIGlmIG5vdCB1
c2luZ19zdGRfbWF0Y2g6CisgICAgICAgIHJldHVybgorCisgICAgbWV0aG9kX25hbWUgPSB1c2lu
Z19zdGRfbWF0Y2guZ3JvdXAoJ21ldGhvZF9uYW1lJykKKyAgICBlcnJvcihsaW5lX251bWJlciwg
J2J1aWxkL3VzaW5nX3N0ZCcsIDQsCisgICAgICAgICAgIlVzZSAndXNpbmcgbmFtZXNwYWNlIHN0
ZDsnIGluc3RlYWQgb2YgJ3VzaW5nIHN0ZDo6JXM7Jy4iICUgbWV0aG9kX25hbWUpCisKKworZGVm
IGNoZWNrX21heF9taW5fbWFjcm9zKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIs
IGVycm9yKToKKyAgICAiIiJMb29rcyB1c2Ugb2YgTUFYKCkgYW5kIE1JTigpIG1hY3JvcyB0aGF0
IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIHN0ZDo6bWF4KCkgYW5kIHN0ZDo6bWluKCkuCisKKyAg
ICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCisg
ICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhl
IGZpbGUuCisgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVj
ay4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91
bmQuCisgICAgIiIiCisKKyAgICAjIFRoaXMgY2hlY2sgZG9lc24ndCBhcHBseSB0byBDIG9yIE9i
amVjdGl2ZS1DIGltcGxlbWVudGF0aW9uIGZpbGVzLgorICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRo
KCcuYycpIG9yIGZpbGVuYW1lLmVuZHN3aXRoKCcubScpOgorICAgICAgICByZXR1cm4KKworICAg
IGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICMgR2V0IHJpZCBvZiBjb21t
ZW50cyBhbmQgc3RyaW5ncy4KKworICAgIG1heF9taW5fbWFjcm9zX3NlYXJjaCA9IHNlYXJjaChy
J1xiKD9QPG1heF9taW5fbWFjcm8+KE1BWHxNSU4pKVxzKlwoJywgbGluZSkKKyAgICBpZiBub3Qg
bWF4X21pbl9tYWNyb3Nfc2VhcmNoOgorICAgICAgICByZXR1cm4KKworICAgIG1heF9taW5fbWFj
cm8gPSBtYXhfbWluX21hY3Jvc19zZWFyY2guZ3JvdXAoJ21heF9taW5fbWFjcm8nKQorICAgIG1h
eF9taW5fbWFjcm9fbG93ZXIgPSBtYXhfbWluX21hY3JvLmxvd2VyKCkKKyAgICBlcnJvcihsaW5l
X251bWJlciwgJ3J1bnRpbWUvbWF4X21pbl9tYWNyb3MnLCA0LAorICAgICAgICAgICdVc2Ugc3Rk
OjolcygpIG9yIHN0ZDo6JXM8dHlwZT4oKSBpbnN0ZWFkIG9mIHRoZSAlcygpIG1hY3JvLicKKyAg
ICAgICAgICAlIChtYXhfbWluX21hY3JvX2xvd2VyLCBtYXhfbWluX21hY3JvX2xvd2VyLCBtYXhf
bWluX21hY3JvKSkKKworCitkZWYgY2hlY2tfc3dpdGNoX2luZGVudGF0aW9uKGZpbGVuYW1lLCBj
bGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKKyAgICAiIiJMb29rcyBmb3IgaW5kZW50
YXRpb24gZXJyb3JzIGluc2lkZSBvZiBzd2l0Y2ggc3RhdGVtZW50cy4KKworICAgIEFyZ3M6Cisg
ICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgIGNsZWFu
X2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KKyAg
ICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAgICAg
ZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KKyAgICAi
IiIKKworICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICMgR2V0IHJp
ZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncy4KKworICAgIHN3aXRjaF9tYXRjaCA9IG1hdGNoKHIn
KD9QPHN3aXRjaF9pbmRlbnRhdGlvbj5ccyopc3dpdGNoXHMqXCguK1wpXHMqe1xzKiQnLCBsaW5l
KQorICAgIGlmIG5vdCBzd2l0Y2hfbWF0Y2g6CisgICAgICAgIHJldHVybgorCisgICAgc3dpdGNo
X2luZGVudGF0aW9uID0gc3dpdGNoX21hdGNoLmdyb3VwKCdzd2l0Y2hfaW5kZW50YXRpb24nKQor
ICAgIGlubmVyX2luZGVudGF0aW9uID0gc3dpdGNoX2luZGVudGF0aW9uICsgJyAnICogNAorICAg
IGxpbmVfb2Zmc2V0ID0gMAorICAgIGVuY291bnRlcmVkX25lc3RlZF9zd2l0Y2ggPSBGYWxzZQor
CisgICAgZm9yIGN1cnJlbnRfbGluZSBpbiBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXIg
KyAxOl06CisgICAgICAgIGxpbmVfb2Zmc2V0ICs9IDEKKworICAgICAgICAjIFNraXAgbm90IG9u
bHkgZW1wdHkgbGluZXMgYnV0IGFsc28gdGhvc2Ugd2l0aCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZl
cy4KKyAgICAgICAgaWYgY3VycmVudF9saW5lLnN0cmlwKCkgPT0gJycgb3IgY3VycmVudF9saW5l
LnN0YXJ0c3dpdGgoJyMnKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgaWYgbWF0
Y2gocidccypzd2l0Y2hccypcKC4rXClccyp7XHMqJCcsIGN1cnJlbnRfbGluZSk6CisgICAgICAg
ICAgICAjIENvbXBsZXhpdHkgYWxhcm0gLSBhbm90aGVyIHN3aXRjaCBzdGF0ZW1lbnQgbmVzdGVk
IGluc2lkZSB0aGUgb25lCisgICAgICAgICAgICAjIHRoYXQgd2UncmUgY3VycmVudGx5IHRlc3Rp
bmcuIFdlJ2xsIG5lZWQgdG8gdHJhY2sgdGhlIGV4dGVudCBvZgorICAgICAgICAgICAgIyB0aGF0
IGlubmVyIHN3aXRjaCBpZiB0aGUgdXBjb21pbmcgbGFiZWwgdGVzdHMgYXJlIHN0aWxsIHN1cHBv
c2VkCisgICAgICAgICAgICAjIHRvIHdvcmsgY29ycmVjdGx5LiBMZXQncyBub3QgZG8gdGhhdDsg
aW5zdGVhZCwgd2UnbGwgZmluaXNoCisgICAgICAgICAgICAjIGNoZWNraW5nIHRoaXMgbGluZSwg
YW5kIHRoZW4gbGVhdmUgaXQgbGlrZSB0aGF0LiBBc3N1bWluZyB0aGUKKyAgICAgICAgICAgICMg
aW5kZW50YXRpb24gaXMgZG9uZSBjb25zaXN0ZW50bHkgKGV2ZW4gaWYgaW5jb3JyZWN0bHkpLCB0
aGlzIHdpbGwKKyAgICAgICAgICAgICMgc3RpbGwgY2F0Y2ggYWxsIGluZGVudGF0aW9uIGlzc3Vl
cyBpbiBwcmFjdGljZS4KKyAgICAgICAgICAgIGVuY291bnRlcmVkX25lc3RlZF9zd2l0Y2ggPSBU
cnVlCisKKyAgICAgICAgY3VycmVudF9pbmRlbnRhdGlvbl9tYXRjaCA9IG1hdGNoKHInKD9QPGlu
ZGVudGF0aW9uPlxzKikoP1A8cmVtYWluaW5nX2xpbmU+LiopJCcsIGN1cnJlbnRfbGluZSk7Cisg
ICAgICAgIGN1cnJlbnRfaW5kZW50YXRpb24gPSBjdXJyZW50X2luZGVudGF0aW9uX21hdGNoLmdy
b3VwKCdpbmRlbnRhdGlvbicpCisgICAgICAgIHJlbWFpbmluZ19saW5lID0gY3VycmVudF9pbmRl
bnRhdGlvbl9tYXRjaC5ncm91cCgncmVtYWluaW5nX2xpbmUnKQorCisgICAgICAgICMgRW5kIHRo
ZSBjaGVjayBhdCB0aGUgZW5kIG9mIHRoZSBzd2l0Y2ggc3RhdGVtZW50LgorICAgICAgICBpZiBy
ZW1haW5pbmdfbGluZS5zdGFydHN3aXRoKCd9JykgYW5kIGN1cnJlbnRfaW5kZW50YXRpb24gPT0g
c3dpdGNoX2luZGVudGF0aW9uOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgIyBDYXNlIGFu
ZCBkZWZhdWx0IGJyYW5jaGVzIHNob3VsZCBub3QgYmUgaW5kZW50ZWQuIFRoZSByZWdleHAgYWxz
bworICAgICAgICAjIGNhdGNoZXMgc2luZ2xlLWxpbmUgY2FzZXMgbGlrZSAiZGVmYXVsdDogYnJl
YWs7IiBidXQgZG9lcyBub3QgdHJpZ2dlcgorICAgICAgICAjIG9uIHN0dWZmIGxpa2UgIkRvY3Vt
ZW50OjpGb28oKTsiLgorICAgICAgICBlbGlmIG1hdGNoKHInKGRlZmF1bHR8Y2FzZVxzKy4qKVxz
KjooW146XS4qKT8kJywgcmVtYWluaW5nX2xpbmUpOgorICAgICAgICAgICAgaWYgY3VycmVudF9p
bmRlbnRhdGlvbiAhPSBzd2l0Y2hfaW5kZW50YXRpb246CisgICAgICAgICAgICAgICAgZXJyb3Io
bGluZV9udW1iZXIgKyBsaW5lX29mZnNldCwgJ3doaXRlc3BhY2UvaW5kZW50JywgNCwKKyAgICAg
ICAgICAgICAgICAgICAgICAnQSBjYXNlIGxhYmVsIHNob3VsZCBub3QgYmUgaW5kZW50ZWQsIGJ1
dCBsaW5lIHVwIHdpdGggaXRzIHN3aXRjaCBzdGF0ZW1lbnQuJykKKyAgICAgICAgICAgICAgICAj
IERvbid0IHRocm93IGFuIGVycm9yIGZvciBtdWx0aXBsZSBiYWRseSBpbmRlbnRlZCBsYWJlbHMs
CisgICAgICAgICAgICAgICAgIyBvbmUgc2hvdWxkIGJlIGVub3VnaCB0byBmaWd1cmUgb3V0IHRo
ZSBwcm9ibGVtLgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICMgV2UgaWdub3JlIGdv
dG8gbGFiZWxzIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiBhIGxpbmUuCisgICAgICAgIGVsaWYg
bWF0Y2gocidcdytccyo6XHMqJCcsIHJlbWFpbmluZ19saW5lKToKKyAgICAgICAgICAgIGNvbnRp
bnVlCisgICAgICAgICMgSXQncyBub3QgYSBnb3RvIGxhYmVsLCBzbyBjaGVjayBpZiBpdCdzIGlu
ZGVudGVkIGF0IGxlYXN0IGFzIGZhciBhcworICAgICAgICAjIHRoZSBzd2l0Y2ggc3RhdGVtZW50
IHBsdXMgb25lIG1vcmUgbGV2ZWwgb2YgaW5kZW50YXRpb24uCisgICAgICAgIGVsaWYgbm90IGN1
cnJlbnRfaW5kZW50YXRpb24uc3RhcnRzd2l0aChpbm5lcl9pbmRlbnRhdGlvbik6CisgICAgICAg
ICAgICBlcnJvcihsaW5lX251bWJlciArIGxpbmVfb2Zmc2V0LCAnd2hpdGVzcGFjZS9pbmRlbnQn
LCA0LAorICAgICAgICAgICAgICAgICAgJ05vbi1sYWJlbCBjb2RlIGluc2lkZSBzd2l0Y2ggc3Rh
dGVtZW50cyBzaG91bGQgYmUgaW5kZW50ZWQuJykKKyAgICAgICAgICAgICMgRG9uJ3QgdGhyb3cg
YW4gZXJyb3IgZm9yIG11bHRpcGxlIGJhZGx5IGluZGVudGVkIHN0YXRlbWVudHMsCisgICAgICAg
ICAgICAjIG9uZSBzaG91bGQgYmUgZW5vdWdoIHRvIGZpZ3VyZSBvdXQgdGhlIHByb2JsZW0uCisg
ICAgICAgICAgICBicmVhaworCisgICAgICAgIGlmIGVuY291bnRlcmVkX25lc3RlZF9zd2l0Y2g6
CisgICAgICAgICAgICBicmVhaworCisKK2RlZiBjaGVja19icmFjZXMoZmlsZW5hbWUsIGNsZWFu
X2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgorICAgICIiIkxvb2tzIGZvciBtaXNwbGFjZWQg
YnJhY2VzIChlLmcuIGF0IHRoZSBlbmQgb2YgbGluZSkuCisKKyAgICBBcmdzOgorICAgICAgZmls
ZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCisgICAgICBjbGVhbl9saW5lczog
QSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCisgICAgICBsaW5l
X251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KKyAgICAgIGVycm9yOiBU
aGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCisgICAgIiIiCisKKyAg
ICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXSAjIEdldCByaWQgb2YgY29t
bWVudHMgYW5kIHN0cmluZ3MuCisKKyAgICBpZiBtYXRjaChyJ1xzKntccyokJywgbGluZSk6Cisg
ICAgICAgICMgV2UgYWxsb3cgYW4gb3BlbiBicmFjZSB0byBzdGFydCBhIGxpbmUgaW4gdGhlIGNh
c2Ugd2hlcmUgc29tZW9uZQorICAgICAgICAjIGlzIHVzaW5nIGJyYWNlcyBmb3IgZnVuY3Rpb24g
ZGVmaW5pdGlvbiBvciBpbiBhIGJsb2NrIHRvCisgICAgICAgICMgZXhwbGljaXRseSBjcmVhdGUg
YSBuZXcgc2NvcGUsIHdoaWNoIGlzIGNvbW1vbmx5IHVzZWQgdG8gY29udHJvbAorICAgICAgICAj
IHRoZSBsaWZldGltZSBvZiBzdGFjay1hbGxvY2F0ZWQgdmFyaWFibGVzLiAgV2UgZG9uJ3QgZGV0
ZWN0IHRoaXMKKyAgICAgICAgIyBwZXJmZWN0bHk6IHdlIGp1c3QgZG9uJ3QgY29tcGxhaW4gaWYg
dGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2UKKyAgICAgICAgIyBjaGFyYWN0ZXIgb24gdGhlIHByZXZp
b3VzIG5vbi1ibGFuayBsaW5lIGlzICc7JywgJzonLCAneycsICd9JywKKyAgICAgICAgIyAnKScs
IG9yICcpIGNvbnN0JyBhbmQgZG9lc24ndCBiZWdpbiB3aXRoICdpZnxmb3J8d2hpbGV8c3dpdGNo
fGVsc2UnLgorICAgICAgICAjIFdlIGFsc28gYWxsb3cgJyMnIGZvciAjZW5kaWYgYW5kICc9JyBm
b3IgYXJyYXkgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIHByZXZpb3VzX2xpbmUgPSBnZXRfcHJl
dmlvdXNfbm9uX2JsYW5rX2xpbmUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyKVswXQorICAgICAg
ICBpZiAoKG5vdCBzZWFyY2gocidbOzp9eyk9XVxzKiR8XClccypjb25zdFxzKiQnLCBwcmV2aW91
c19saW5lKQorICAgICAgICAgICAgIG9yIHNlYXJjaChyJ1xiKGlmfGZvcnxmb3JlYWNofHdoaWxl
fHN3aXRjaHxlbHNlKVxiJywgcHJldmlvdXNfbGluZSkpCisgICAgICAgICAgICBhbmQgcHJldmlv
dXNfbGluZS5maW5kKCcjJykgPCAwKToKKyAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAn
d2hpdGVzcGFjZS9icmFjZXMnLCA0LAorICAgICAgICAgICAgICAgICAgJ1RoaXMgeyBzaG91bGQg
YmUgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZScpCisgICAgZWxpZiAoc2VhcmNoKHIn
XClccyooY29uc3RccyopP3tccyokJywgbGluZSkKKyAgICAgICAgICBhbmQgbGluZS5jb3VudCgn
KCcpID09IGxpbmUuY291bnQoJyknKQorICAgICAgICAgIGFuZCBub3Qgc2VhcmNoKHInXGIoaWZ8
Zm9yfGZvcmVhY2h8d2hpbGV8c3dpdGNoKVxiJywgbGluZSkKKyAgICAgICAgICBhbmQgbm90IG1h
dGNoKHInXHMrW0EtWl9dW0EtWl8wLTldK1xiJywgbGluZSkpOgorICAgICAgICBlcnJvcihsaW5l
X251bWJlciwgJ3doaXRlc3BhY2UvYnJhY2VzJywgNCwKKyAgICAgICAgICAgICAgJ1BsYWNlIGJy
YWNlIG9uIGl0cyBvd24gbGluZSBmb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnMuJykKKworICAgIGlm
IChtYXRjaChyJ1xzKn1ccyooZWxzZVxzKih7XHMqKT8pPyQnLCBsaW5lKSBhbmQgbGluZV9udW1i
ZXIgPiAxKToKKyAgICAgICAgIyBXZSBjaGVjayBpZiBhIGNsb3NlZCBicmFjZSBoYXMgc3RhcnRl
ZCBhIGxpbmUgdG8gc2VlIGlmIGEKKyAgICAgICAgIyBvbmUgbGluZSBjb250cm9sIHN0YXRlbWVu
dCB3YXMgcHJldmlvdXMuCisgICAgICAgIHByZXZpb3VzX2xpbmUgPSBjbGVhbl9saW5lcy5lbGlk
ZWRbbGluZV9udW1iZXIgLSAyXQorICAgICAgICBpZiAocHJldmlvdXNfbGluZS5maW5kKCd7Jykg
PiAwCisgICAgICAgICAgICBhbmQgc2VhcmNoKHInXGIoaWZ8Zm9yfGZvcmVhY2h8d2hpbGV8ZWxz
ZSlcYicsIHByZXZpb3VzX2xpbmUpKToKKyAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAn
d2hpdGVzcGFjZS9icmFjZXMnLCA0LAorICAgICAgICAgICAgICAgICAgJ09uZSBsaW5lIGNvbnRy
b2wgY2xhdXNlcyBzaG91bGQgbm90IHVzZSBicmFjZXMuJykKKworICAgICMgQW4gZWxzZSBjbGF1
c2Ugc2hvdWxkIGJlIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIHByZWNlZGluZyBjbG9zaW5nIGJy
YWNlLgorICAgIGlmIG1hdGNoKHInXHMqZWxzZVxzKicsIGxpbmUpOgorICAgICAgICBwcmV2aW91
c19saW5lID0gZ2V0X3ByZXZpb3VzX25vbl9ibGFua19saW5lKGNsZWFuX2xpbmVzLCBsaW5lX251
bWJlcilbMF0KKyAgICAgICAgaWYgbWF0Y2gocidccyp9XHMqJCcsIHByZXZpb3VzX2xpbmUpOgor
ICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL25ld2xpbmUnLCA0LAor
ICAgICAgICAgICAgICAgICAgJ0FuIGVsc2Ugc2hvdWxkIGFwcGVhciBvbiB0aGUgc2FtZSBsaW5l
IGFzIHRoZSBwcmVjZWRpbmcgfScpCisKKyAgICAjIExpa2V3aXNlLCBhbiBlbHNlIHNob3VsZCBu
ZXZlciBoYXZlIHRoZSBlbHNlIGNsYXVzZSBvbiB0aGUgc2FtZSBsaW5lCisgICAgaWYgc2VhcmNo
KHInXGJlbHNlIFteXHN7XScsIGxpbmUpIGFuZCBub3Qgc2VhcmNoKHInXGJlbHNlIGlmXGInLCBs
aW5lKToKKyAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL25ld2xpbmUnLCA0
LAorICAgICAgICAgICAgICAnRWxzZSBjbGF1c2Ugc2hvdWxkIG5ldmVyIGJlIG9uIHNhbWUgbGlu
ZSBhcyBlbHNlICh1c2UgMiBsaW5lcyknKQorCisgICAgIyBJbiB0aGUgc2FtZSB3YXksIGEgZG8v
d2hpbGUgc2hvdWxkIG5ldmVyIGJlIG9uIG9uZSBsaW5lCisgICAgaWYgbWF0Y2gocidccypkbyBb
Xlxze10nLCBsaW5lKToKKyAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL25l
d2xpbmUnLCA0LAorICAgICAgICAgICAgICAnZG8vd2hpbGUgY2xhdXNlcyBzaG91bGQgbm90IGJl
IG9uIGEgc2luZ2xlIGxpbmUnKQorCisgICAgIyBCcmFjZXMgc2hvdWxkbid0IGJlIGZvbGxvd2Vk
IGJ5IGEgOyB1bmxlc3MgdGhleSdyZSBkZWZpbmluZyBhIHN0cnVjdAorICAgICMgb3IgaW5pdGlh
bGl6aW5nIGFuIGFycmF5LgorICAgICMgV2UgY2FuJ3QgdGVsbCBpbiBnZW5lcmFsLCBidXQgd2Ug
Y2FuIGZvciBzb21lIGNvbW1vbiBjYXNlcy4KKyAgICBwcmV2aW91c19saW5lX251bWJlciA9IGxp
bmVfbnVtYmVyCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgKHByZXZpb3VzX2xpbmUsIHByZXZp
b3VzX2xpbmVfbnVtYmVyKSA9IGdldF9wcmV2aW91c19ub25fYmxhbmtfbGluZShjbGVhbl9saW5l
cywgcHJldmlvdXNfbGluZV9udW1iZXIpCisgICAgICAgIGlmIG1hdGNoKHInXHMrey4qfVxzKjsn
LCBsaW5lKSBhbmQgbm90IHByZXZpb3VzX2xpbmUuY291bnQoJzsnKToKKyAgICAgICAgICAgIGxp
bmUgPSBwcmV2aW91c19saW5lICsgbGluZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnJl
YWsKKyAgICBpZiAoc2VhcmNoKHIney4qfVxzKjsnLCBsaW5lKQorICAgICAgICBhbmQgbGluZS5j
b3VudCgneycpID09IGxpbmUuY291bnQoJ30nKQorICAgICAgICBhbmQgbm90IHNlYXJjaChyJ3N0
cnVjdHxjbGFzc3xlbnVtfFxzKj1ccyp7JywgbGluZSkpOgorICAgICAgICBlcnJvcihsaW5lX251
bWJlciwgJ3JlYWRhYmlsaXR5L2JyYWNlcycsIDQsCisgICAgICAgICAgICAgICJZb3UgZG9uJ3Qg
bmVlZCBhIDsgYWZ0ZXIgYSB9IikKKworCitkZWYgY2hlY2tfZXhpdF9zdGF0ZW1lbnRfc2ltcGxp
ZmljYXRpb25zKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKKyAg
ICAiIiJMb29rcyBmb3IgZWxzZSBvciBlbHNlLWlmIHN0YXRlbWVudHMgdGhhdCBzaG91bGQgYmUg
d3JpdHRlbiBhcyBhbgorICAgIGlmIHN0YXRlbWVudCB3aGVuIHRoZSBwcmlvciBpZiBjb25jbHVk
ZXMgd2l0aCBhIHJldHVybiwgYnJlYWssIGNvbnRpbnVlIG9yCisgICAgZ290byBzdGF0ZW1lbnQu
CisKKyAgICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZp
bGUuCisgICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5p
bmcgdGhlIGZpbGUuCisgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0
byBjaGVjay4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJv
cnMgZm91bmQuCisgICAgIiIiCisKKyAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVf
bnVtYmVyXSAjIEdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MuCisKKyAgICBlbHNlX21h
dGNoID0gbWF0Y2gocicoP1A8ZWxzZV9pbmRlbnRhdGlvbj5ccyopKFx9XHMqKT9lbHNlKFxzK2lm
XHMqXCh8KD9QPGVsc2U+XHMqKFx7XHMqKT9cWikpJywgbGluZSkKKyAgICBpZiBub3QgZWxzZV9t
YXRjaDoKKyAgICAgICAgcmV0dXJuCisKKyAgICBlbHNlX2luZGVudGF0aW9uID0gZWxzZV9tYXRj
aC5ncm91cCgnZWxzZV9pbmRlbnRhdGlvbicpCisgICAgaW5uZXJfaW5kZW50YXRpb24gPSBlbHNl
X2luZGVudGF0aW9uICsgJyAnICogNAorCisgICAgcHJldmlvdXNfbGluZXMgPSBjbGVhbl9saW5l
cy5lbGlkZWRbOmxpbmVfbnVtYmVyXQorICAgIHByZXZpb3VzX2xpbmVzLnJldmVyc2UoKQorICAg
IGxpbmVfb2Zmc2V0ID0gMAorICAgIGVuY291bnRlcmVkX2V4aXRfc3RhdGVtZW50ID0gRmFsc2UK
KworICAgIGZvciBjdXJyZW50X2xpbmUgaW4gcHJldmlvdXNfbGluZXM6CisgICAgICAgIGxpbmVf
b2Zmc2V0IC09IDEKKworICAgICAgICAjIFNraXAgbm90IG9ubHkgZW1wdHkgbGluZXMgYnV0IGFs
c28gdGhvc2Ugd2l0aCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcworICAgICAgICAjIGFuZCBnb3Rv
IGxhYmVscy4KKyAgICAgICAgaWYgY3VycmVudF9saW5lLnN0cmlwKCkgPT0gJycgb3IgY3VycmVu
dF9saW5lLnN0YXJ0c3dpdGgoJyMnKSBvciBtYXRjaChyJ1x3K1xzKjpccyokJywgY3VycmVudF9s
aW5lKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgIyBTa2lwIGxpbmVzIHdpdGgg
Y2xvc2luZyBicmFjZXMgb24gdGhlIG9yaWdpbmFsIGluZGVudGF0aW9uIGxldmVsLgorICAgICAg
ICAjIEV2ZW4gdGhvdWdoIHRoZSBzdHlsZWd1aWRlIHNheXMgdGhleSBzaG91bGQgYmUgb24gdGhl
IHNhbWUgbGluZSBhcworICAgICAgICAjIHRoZSAiZWxzZSBpZiIgc3RhdGVtZW50LCB3ZSBhbHNv
IHdhbnQgdG8gY2hlY2sgZm9yIGluc3RhbmNlcyB3aGVyZQorICAgICAgICAjIHRoZSBjdXJyZW50
IGNvZGUgZG9lcyBub3QgY29tcGx5IHdpdGggdGhlIGNvZGluZyBzdHlsZS4gVGh1cywgaWdub3Jl
CisgICAgICAgICMgdGhlc2UgbGluZXMgYW5kIHByb2NlZWQgdG8gdGhlIGxpbmUgYmVmb3JlIHRo
YXQuCisgICAgICAgIGlmIGN1cnJlbnRfbGluZSA9PSBlbHNlX2luZGVudGF0aW9uICsgJ30nOgor
ICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBjdXJyZW50X2luZGVudGF0aW9uX21hdGNo
ID0gbWF0Y2gocicoP1A8aW5kZW50YXRpb24+XHMqKSg/UDxyZW1haW5pbmdfbGluZT4uKikkJywg
Y3VycmVudF9saW5lKTsKKyAgICAgICAgY3VycmVudF9pbmRlbnRhdGlvbiA9IGN1cnJlbnRfaW5k
ZW50YXRpb25fbWF0Y2guZ3JvdXAoJ2luZGVudGF0aW9uJykKKyAgICAgICAgcmVtYWluaW5nX2xp
bmUgPSBjdXJyZW50X2luZGVudGF0aW9uX21hdGNoLmdyb3VwKCdyZW1haW5pbmdfbGluZScpCisK
KyAgICAgICAgIyBBcyB3ZSdyZSBnb2luZyB1cCB0aGUgbGluZXMsIHRoZSBmaXJzdCByZWFsIHN0
YXRlbWVudCB0byBlbmNvdW50ZXIKKyAgICAgICAgIyBoYXMgdG8gYmUgYW4gZXhpdCBzdGF0ZW1l
bnQgKHJldHVybiwgYnJlYWssIGNvbnRpbnVlIG9yIGdvdG8pIC0KKyAgICAgICAgIyBvdGhlcndp
c2UsIHRoaXMgY2hlY2sgZG9lc24ndCBhcHBseS4KKyAgICAgICAgaWYgbm90IGVuY291bnRlcmVk
X2V4aXRfc3RhdGVtZW50OgorICAgICAgICAgICAgIyBXZSBvbmx5IHdhbnQgdG8gZmluZCBleGl0
IHN0YXRlbWVudHMgaWYgdGhleSBhcmUgb24gZXhhY3RseQorICAgICAgICAgICAgIyB0aGUgc2Ft
ZSBsZXZlbCBvZiBpbmRlbnRhdGlvbiBhcyBleHBlY3RlZCBmcm9tIHRoZSBjb2RlIGluc2lkZQor
ICAgICAgICAgICAgIyB0aGUgYmxvY2suIElmIHRoZSBpbmRlbnRhdGlvbiBkb2Vzbid0IHN0cmlj
dGx5IG1hdGNoIHRoZW4gd2UKKyAgICAgICAgICAgICMgbWlnaHQgaGF2ZSBhIG5lc3RlZCBpZiBv
ciBzb21ldGhpbmcsIHdoaWNoIG11c3QgYmUgaWdub3JlZC4KKyAgICAgICAgICAgIGlmIGN1cnJl
bnRfaW5kZW50YXRpb24gIT0gaW5uZXJfaW5kZW50YXRpb246CisgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgIGlmIG1hdGNoKHInKHJldHVybihcVysuKil8KGJyZWFrfGNvbnRpbnVl
KVxzKjt8Z290b1xzKlx3KzspJCcsIHJlbWFpbmluZ19saW5lKToKKyAgICAgICAgICAgICAgICBl
bmNvdW50ZXJlZF9leGl0X3N0YXRlbWVudCA9IFRydWUKKyAgICAgICAgICAgICAgICBjb250aW51
ZQorICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAjIFdoZW4gY29kZSBleGVjdXRpb24gcmVh
Y2hlcyB0aGlzIHBvaW50LCB3ZSd2ZSBmb3VuZCBhbiBleGl0IHN0YXRlbWVudAorICAgICAgICAj
IGFzIGxhc3Qgc3RhdGVtZW50IG9mIHRoZSBwcmV2aW91cyBibG9jay4gTm93IHdlIG9ubHkgbmVl
ZCB0byBtYWtlCisgICAgICAgICMgc3VyZSB0aGF0IHRoZSBibG9jayBiZWxvbmdzIHRvIGFuICJp
ZiIsIHRoZW4gd2UgY2FuIHRocm93IGFuIGVycm9yLgorCisgICAgICAgICMgU2tpcCBsaW5lcyB3
aXRoIG9wZW5pbmcgYnJhY2VzIG9uIHRoZSBvcmlnaW5hbCBpbmRlbnRhdGlvbiBsZXZlbCwKKyAg
ICAgICAgIyBzaW1pbGFyIHRvIHRoZSBjbG9zaW5nIGJyYWNlcyBjaGVjayBhYm92ZS4gKCJpZiAo
Y29uZGl0aW9uKVxueyIpCisgICAgICAgIGlmIGN1cnJlbnRfbGluZSA9PSBlbHNlX2luZGVudGF0
aW9uICsgJ3snOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAjIFNraXAgZXZlcnl0
aGluZyB0aGF0J3MgZnVydGhlciBpbmRlbnRlZCB0aGFuIG91ciAiZWxzZSIgb3IgImVsc2UgaWYi
LgorICAgICAgICBpZiBjdXJyZW50X2luZGVudGF0aW9uLnN0YXJ0c3dpdGgoZWxzZV9pbmRlbnRh
dGlvbikgYW5kIGN1cnJlbnRfaW5kZW50YXRpb24gIT0gZWxzZV9pbmRlbnRhdGlvbjoKKyAgICAg
ICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgIyBTbyB3ZSd2ZSBnb3QgYSBsaW5lIHdpdGggc2Ft
ZSAob3IgbGVzcykgaW5kZW50YXRpb24uIElzIGl0IGFuICJpZiI/CisgICAgICAgICMgSWYgeWVz
OiB0aHJvdyBhbiBlcnJvci4gSWYgbm86IGRvbid0IHRocm93IGFuIGVycm9yLgorICAgICAgICAj
IFdoYXRldmVyIHRoZSBvdXRjb21lLCB0aGlzIGlzIHRoZSBlbmQgb2Ygb3VyIGxvb3AuCisgICAg
ICAgIGlmIG1hdGNoKHInaWZccypcKCcsIHJlbWFpbmluZ19saW5lKToKKyAgICAgICAgICAgIGlm
IGVsc2VfbWF0Y2guc3RhcnQoJ2Vsc2UnKSAhPSAtMToKKyAgICAgICAgICAgICAgICBlcnJvcihs
aW5lX251bWJlciArIGxpbmVfb2Zmc2V0LCAncmVhZGFiaWxpdHkvY29udHJvbF9mbG93JywgNCwK
KyAgICAgICAgICAgICAgICAgICAgICAnQW4gZWxzZSBzdGF0ZW1lbnQgY2FuIGJlIHJlbW92ZWQg
d2hlbiB0aGUgcHJpb3IgImlmIiAnCisgICAgICAgICAgICAgICAgICAgICAgJ2NvbmNsdWRlcyB3
aXRoIGEgcmV0dXJuLCBicmVhaywgY29udGludWUgb3IgZ290byBzdGF0ZW1lbnQuJykKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIgKyBsaW5lX29m
ZnNldCwgJ3JlYWRhYmlsaXR5L2NvbnRyb2xfZmxvdycsIDQsCisgICAgICAgICAgICAgICAgICAg
ICAgJ0FuIGVsc2UgaWYgc3RhdGVtZW50IHNob3VsZCBiZSB3cml0dGVuIGFzIGFuIGlmIHN0YXRl
bWVudCAnCisgICAgICAgICAgICAgICAgICAgICAgJ3doZW4gdGhlIHByaW9yICJpZiIgY29uY2x1
ZGVzIHdpdGggYSByZXR1cm4sIGJyZWFrLCAnCisgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRp
bnVlIG9yIGdvdG8gc3RhdGVtZW50LicpCisgICAgICAgIGJyZWFrCisKKworZGVmIHJlcGxhY2Vh
YmxlX2NoZWNrKG9wZXJhdG9yLCBtYWNybywgbGluZSk6CisgICAgIiIiRGV0ZXJtaW5lIHdoZXRo
ZXIgYSBiYXNpYyBDSEVDSyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIG1vcmUgc3BlY2lmaWMgb25l
LgorCisgICAgRm9yIGV4YW1wbGUgc3VnZ2VzdCB1c2luZyBDSEVDS19FUSBpbnN0ZWFkIG9mIENI
RUNLKGEgPT0gYikgYW5kCisgICAgc2ltaWxhcmx5IGZvciBDSEVDS19HRSwgQ0hFQ0tfR1QsIENI
RUNLX0xFLCBDSEVDS19MVCwgQ0hFQ0tfTkUuCisKKyAgICBBcmdzOgorICAgICAgb3BlcmF0b3I6
IFRoZSBDKysgb3BlcmF0b3IgdXNlZCBpbiB0aGUgQ0hFQ0suCisgICAgICBtYWNybzogVGhlIENI
RUNLIG9yIEVYUEVDVCBtYWNybyBiZWluZyBjYWxsZWQuCisgICAgICBsaW5lOiBUaGUgY3VycmVu
dCBzb3VyY2UgbGluZS4KKworICAgIFJldHVybnM6CisgICAgICBUcnVlIGlmIHRoZSBDSEVDSyBj
YW4gYmUgcmVwbGFjZWQgd2l0aCBhIG1vcmUgc3BlY2lmaWMgb25lLgorICAgICIiIgorCisgICAg
IyBUaGlzIG1hdGNoZXMgZGVjaW1hbCBhbmQgaGV4IGludGVnZXJzLCBzdHJpbmdzLCBhbmQgY2hh
cnMgKGluIHRoYXQgb3JkZXIpLgorICAgIG1hdGNoX2NvbnN0YW50ID0gcicoWy0rXT8oXGQrfDBb
eFhdWzAtOWEtZkEtRl0rKVtsTHVVXXswLDN9fCIuKiJ8XCcuKlwnKScKKworICAgICMgRXhwcmVz
c2lvbiB0byBtYXRjaCB0d28gc2lkZXMgb2YgdGhlIG9wZXJhdG9yIHdpdGggc29tZXRoaW5nIHRo
YXQKKyAgICAjIGxvb2tzIGxpa2UgYSBsaXRlcmFsLCBzaW5jZSBDSEVDSyh4ID09IGl0ZXJhdG9y
KSB3b24ndCBjb21waWxlLgorICAgICMgVGhpcyBtZWFucyB3ZSBjYW4ndCBjYXRjaCBhbGwgdGhl
IGNhc2VzIHdoZXJlIGEgbW9yZSBzcGVjaWZpYworICAgICMgQ0hFQ0sgaXMgcG9zc2libGUsIGJ1
dCBpdCdzIGxlc3MgYW5ub3lpbmcgdGhhbiBkZWFsaW5nIHdpdGgKKyAgICAjIGV4dHJhbmVvdXMg
d2FybmluZ3MuCisgICAgbWF0Y2hfdGhpcyA9IChyJ1xzKicgKyBtYWNybyArIHInXCgoXHMqJyAr
CisgICAgICAgICAgICAgICAgICBtYXRjaF9jb25zdGFudCArIHInXHMqJyArIG9wZXJhdG9yICsg
cidbXjw+XS4qfCcKKyAgICAgICAgICAgICAgICAgIHInLipbXjw+XScgKyBvcGVyYXRvciArIHIn
XHMqJyArIG1hdGNoX2NvbnN0YW50ICsKKyAgICAgICAgICAgICAgICAgIHInXHMqXCkpJykKKwor
ICAgICMgRG9uJ3QgY29tcGxhaW4gYWJvdXQgQ0hFQ0soeCA9PSBOVUxMKSBvciBzaW1pbGFyIGJl
Y2F1c2UKKyAgICAjIENIRUNLX0VRKHgsIE5VTEwpIHdvbid0IGNvbXBpbGUgKHJlcXVpcmVzIGEg
Y2FzdCkuCisgICAgIyBBbHNvLCBkb24ndCBjb21wbGFpbiBhYm91dCBtb3JlIGNvbXBsZXggYm9v
bGVhbiBleHByZXNzaW9ucworICAgICMgaW52b2x2aW5nICYmIG9yIHx8IHN1Y2ggYXMgQ0hFQ0so
YSA9PSBiIHx8IGMgPT0gZCkuCisgICAgcmV0dXJuIG1hdGNoKG1hdGNoX3RoaXMsIGxpbmUpIGFu
ZCBub3Qgc2VhcmNoKHInTlVMTHwmJnxcfFx8JywgbGluZSkKKworCitkZWYgY2hlY2tfY2hlY2so
ZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgorICAgICIiIkNoZWNr
cyB0aGUgdXNlIG9mIENIRUNLIGFuZCBFWFBFQ1QgbWFjcm9zLgorCisgICAgQXJnczoKKyAgICAg
IGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgorICAgICAgY2xlYW5fbGlu
ZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgorICAgICAg
bGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCisgICAgICBlcnJv
cjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgorICAgICIiIgor
CisgICAgIyBEZWNpZGUgdGhlIHNldCBvZiByZXBsYWNlbWVudCBtYWNyb3MgdGhhdCBzaG91bGQg
YmUgc3VnZ2VzdGVkCisgICAgcmF3X2xpbmVzID0gY2xlYW5fbGluZXMucmF3X2xpbmVzCisgICAg
Y3VycmVudF9tYWNybyA9ICcnCisgICAgZm9yIG1hY3JvIGluIF9DSEVDS19NQUNST1M6CisgICAg
ICAgIGlmIHJhd19saW5lc1tsaW5lX251bWJlcl0uZmluZChtYWNybykgPj0gMDoKKyAgICAgICAg
ICAgIGN1cnJlbnRfbWFjcm8gPSBtYWNybworICAgICAgICAgICAgYnJlYWsKKyAgICBpZiBub3Qg
Y3VycmVudF9tYWNybzoKKyAgICAgICAgIyBEb24ndCB3YXN0ZSB0aW1lIGhlcmUgaWYgbGluZSBk
b2Vzbid0IGNvbnRhaW4gJ0NIRUNLJyBvciAnRVhQRUNUJworICAgICAgICByZXR1cm4KKworICAg
IGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICAgICAgICAjIGdldCByaWQg
b2YgY29tbWVudHMgYW5kIHN0cmluZ3MKKworICAgICMgRW5jb3VyYWdlIHJlcGxhY2luZyBwbGFp
biBDSEVDS3Mgd2l0aCBDSEVDS19FUS9DSEVDS19ORS9ldGMuCisgICAgZm9yIG9wZXJhdG9yIGlu
IFsnPT0nLCAnIT0nLCAnPj0nLCAnPicsICc8PScsICc8J106CisgICAgICAgIGlmIHJlcGxhY2Vh
YmxlX2NoZWNrKG9wZXJhdG9yLCBjdXJyZW50X21hY3JvLCBsaW5lKToKKyAgICAgICAgICAgIGVy
cm9yKGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvY2hlY2snLCAyLAorICAgICAgICAgICAgICAg
ICAgJ0NvbnNpZGVyIHVzaW5nICVzIGluc3RlYWQgb2YgJXMoYSAlcyBiKScgJSAoCisgICAgICAg
ICAgICAgICAgICAgICAgX0NIRUNLX1JFUExBQ0VNRU5UW2N1cnJlbnRfbWFjcm9dW29wZXJhdG9y
XSwKKyAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X21hY3JvLCBvcGVyYXRvcikpCisgICAg
ICAgICAgICBicmVhaworCisKK2RlZiBjaGVja19mb3JfY29tcGFyaXNvbnNfdG9femVybyhmaWxl
bmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CisgICAgIyBHZXQgdGhlIGxp
bmUgd2l0aG91dCBjb21tZW50cyBhbmQgc3RyaW5ncy4KKyAgICBsaW5lID0gY2xlYW5fbGluZXMu
ZWxpZGVkW2xpbmVfbnVtYmVyXQorCisgICAgIyBJbmNsdWRlIE5VTEwgaGVyZSBzbyB0aGF0IHVz
ZXJzIGRvbid0IGhhdmUgdG8gY29udmVydCBOVUxMIHRvIDAgZmlyc3QgYW5kIHRoZW4gZ2V0IHRo
aXMgZXJyb3IuCisgICAgaWYgc2VhcmNoKHInWz0hXT1ccyooTlVMTHwwfHRydWV8ZmFsc2UpXFcn
LCBsaW5lKSBvciBzZWFyY2gocidcVyhOVUxMfDB8dHJ1ZXxmYWxzZSlccypbPSFdPScsIGxpbmUp
OgorICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L2NvbXBhcmlzb25fdG9f
emVybycsIDUsCisgICAgICAgICAgICAgICdUZXN0cyBmb3IgdHJ1ZS9mYWxzZSwgbnVsbC9ub24t
bnVsbCwgYW5kIHplcm8vbm9uLXplcm8gc2hvdWxkIGFsbCBiZSBkb25lIHdpdGhvdXQgZXF1YWxp
dHkgY29tcGFyaXNvbnMuJykKKworCitkZWYgY2hlY2tfZm9yX251bGwoZmlsZW5hbWUsIGNsZWFu
X2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgorICAgICMgVGhpcyBjaGVjayBkb2Vzbid0IGFw
cGx5IHRvIEMgb3IgT2JqZWN0aXZlLUMgaW1wbGVtZW50YXRpb24gZmlsZXMuCisgICAgaWYgZmls
ZW5hbWUuZW5kc3dpdGgoJy5jJykgb3IgZmlsZW5hbWUuZW5kc3dpdGgoJy5tJyk6CisgICAgICAg
IHJldHVybgorCisgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0KKwor
ICAgICMgRG9uJ3Qgd2FybiBhYm91dCBOVUxMIHVzYWdlIGluIGdfb2JqZWN0X3tnZXQsc2V0fSgp
LiBTZWUgQnVnIDMyODU4CisgICAgaWYgc2VhcmNoKHInXGJnX29iamVjdF9bc2ddZXRcYicsIGxp
bmUpOgorICAgICAgICByZXR1cm4KKworICAgIGlmIHNlYXJjaChyJ1xiTlVMTFxiJywgbGluZSk6
CisgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvbnVsbCcsIDUsICdVc2Ug
MCBpbnN0ZWFkIG9mIE5VTEwuJykKKyAgICAgICAgcmV0dXJuCisKKyAgICBsaW5lID0gY2xlYW5f
bGluZXMucmF3X2xpbmVzW2xpbmVfbnVtYmVyXQorICAgICMgU2VlIGlmIE5VTEwgb2NjdXJzIGlu
IGFueSBjb21tZW50cyBpbiB0aGUgbGluZS4gSWYgdGhlIHNlYXJjaCBmb3IgTlVMTCB1c2luZyB0
aGUgcmF3IGxpbmUKKyAgICAjIG1hdGNoZXMsIHRoZW4gZG8gdGhlIGNoZWNrIHdpdGggc3RyaW5n
cyBjb2xsYXBzZWQgdG8gYXZvaWQgZ2l2aW5nIGVycm9ycyBmb3IKKyAgICAjIE5VTExzIG9jY3Vy
cmluZyBpbiBzdHJpbmdzLgorICAgIGlmIHNlYXJjaChyJ1xiTlVMTFxiJywgbGluZSkgYW5kIHNl
YXJjaChyJ1xiTlVMTFxiJywgQ2xlYW5zZWRMaW5lcy5jb2xsYXBzZV9zdHJpbmdzKGxpbmUpKToK
KyAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9udWxsJywgNCwgJ1VzZSAw
IGluc3RlYWQgb2YgTlVMTC4nKQorCitkZWYgZ2V0X2xpbmVfd2lkdGgobGluZSk6CisgICAgIiIi
RGV0ZXJtaW5lcyB0aGUgd2lkdGggb2YgdGhlIGxpbmUgaW4gY29sdW1uIHBvc2l0aW9ucy4KKwor
ICAgIEFyZ3M6CisgICAgICBsaW5lOiBBIHN0cmluZywgd2hpY2ggbWF5IGJlIGEgVW5pY29kZSBz
dHJpbmcuCisKKyAgICBSZXR1cm5zOgorICAgICAgVGhlIHdpZHRoIG9mIHRoZSBsaW5lIGluIGNv
bHVtbiBwb3NpdGlvbnMsIGFjY291bnRpbmcgZm9yIFVuaWNvZGUKKyAgICAgIGNvbWJpbmluZyBj
aGFyYWN0ZXJzIGFuZCB3aWRlIGNoYXJhY3RlcnMuCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5j
ZShsaW5lLCB1bmljb2RlKToKKyAgICAgICAgd2lkdGggPSAwCisgICAgICAgIGZvciBjIGluIHVu
aWNvZGVkYXRhLm5vcm1hbGl6ZSgnTkZDJywgbGluZSk6CisgICAgICAgICAgICBpZiB1bmljb2Rl
ZGF0YS5lYXN0X2FzaWFuX3dpZHRoKGMpIGluICgnVycsICdGJyk6CisgICAgICAgICAgICAgICAg
d2lkdGggKz0gMgorICAgICAgICAgICAgZWxpZiBub3QgdW5pY29kZWRhdGEuY29tYmluaW5nKGMp
OgorICAgICAgICAgICAgICAgIHdpZHRoICs9IDEKKyAgICAgICAgcmV0dXJuIHdpZHRoCisgICAg
cmV0dXJuIGxlbihsaW5lKQorCisKK2RlZiBjaGVja19zdHlsZShmaWxlbmFtZSwgY2xlYW5fbGlu
ZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwgZmlsZV9zdGF0ZSwgZXJyb3IpOgorICAg
ICIiIkNoZWNrcyBydWxlcyBmcm9tIHRoZSAnQysrIHN0eWxlIHJ1bGVzJyBzZWN0aW9uIG9mIGNw
cGd1aWRlLmh0bWwuCisKKyAgICBNb3N0IG9mIHRoZXNlIHJ1bGVzIGFyZSBoYXJkIHRvIHRlc3Qg
KG5hbWluZywgY29tbWVudCBzdHlsZSksIGJ1dCB3ZQorICAgIGRvIHdoYXQgd2UgY2FuLiAgSW4g
cGFydGljdWxhciB3ZSBjaGVjayBmb3IgNC1zcGFjZSBpbmRlbnRzLCBsaW5lIGxlbmd0aHMsCisg
ICAgdGFiIHVzYWdlLCBzcGFjZXMgaW5zaWRlIGNvZGUsIGV0Yy4KKworICAgIEFyZ3M6CisgICAg
ICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgIGNsZWFuX2xp
bmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KKyAgICAg
IGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAgICAgZmls
ZV9leHRlbnNpb246IFRoZSBleHRlbnNpb24gKHdpdGhvdXQgdGhlIGRvdCkgb2YgdGhlIGZpbGVu
YW1lLgorICAgICAgZmlsZV9zdGF0ZTogQSBfRmlsZVN0YXRlIGluc3RhbmNlIHdoaWNoIG1haW50
YWlucyBpbmZvcm1hdGlvbiBhYm91dAorICAgICAgICAgICAgICAgICAgdGhlIHN0YXRlIG9mIHRo
aW5ncyBpbiB0aGUgZmlsZS4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRo
IGFueSBlcnJvcnMgZm91bmQuCisgICAgIiIiCisKKyAgICByYXdfbGluZXMgPSBjbGVhbl9saW5l
cy5yYXdfbGluZXMKKyAgICBsaW5lID0gcmF3X2xpbmVzW2xpbmVfbnVtYmVyXQorCisgICAgaWYg
bGluZS5maW5kKCdcdCcpICE9IC0xOgorICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRl
c3BhY2UvdGFiJywgMSwKKyAgICAgICAgICAgICAgJ1RhYiBmb3VuZDsgYmV0dGVyIHRvIHVzZSBz
cGFjZXMnKQorCisgICAgIyBPbmUgb3IgdGhyZWUgYmxhbmsgc3BhY2VzIGF0IHRoZSBiZWdpbm5p
bmcgb2YgdGhlIGxpbmUgaXMgd2VpcmQ7IGl0J3MKKyAgICAjIGhhcmQgdG8gcmVjb25jaWxlIHRo
YXQgd2l0aCA0LXNwYWNlIGluZGVudHMuCisgICAgIyBOT1RFOiBoZXJlIGFyZSB0aGUgY29uZGl0
aW9ucyByb2IgcGlrZSB1c2VkIGZvciBoaXMgdGVzdHMuICBNaW5lIGFyZW4ndAorICAgICMgYXMg
c29waGlzdGljYXRlZCwgYnV0IGl0IG1heSBiZSB3b3J0aCBiZWNvbWluZyBzbzogIFJMRU5HVEg9
PWluaXRpYWxfc3BhY2VzCisgICAgIyBpZihSTEVOR1RIID4gMjApIGNvbXBsYWluID0gMDsKKyAg
ICAjIGlmKG1hdGNoKCQwLCAiICsoZXJyb3J8cHJpdmF0ZXxwdWJsaWN8cHJvdGVjdGVkKToiKSkg
Y29tcGxhaW4gPSAwOworICAgICMgaWYobWF0Y2gocHJldiwgIiYmICokIikpIGNvbXBsYWluID0g
MDsKKyAgICAjIGlmKG1hdGNoKHByZXYsICJcXHxcXHwgKiQiKSkgY29tcGxhaW4gPSAwOworICAg
ICMgaWYobWF0Y2gocHJldiwgIltcIiw9PjxdICokIikpIGNvbXBsYWluID0gMDsKKyAgICAjIGlm
KG1hdGNoKCQwLCAiIDw8IikpIGNvbXBsYWluID0gMDsKKyAgICAjIGlmKG1hdGNoKHByZXYsICIg
K2ZvciBcXCgiKSkgY29tcGxhaW4gPSAwOworICAgICMgaWYocHJldm9kZCAmJiBtYXRjaChwcmV2
cHJldiwgIiArZm9yIFxcKCIpKSBjb21wbGFpbiA9IDA7CisgICAgaW5pdGlhbF9zcGFjZXMgPSAw
CisgICAgY2xlYW5zZWRfbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0KKyAg
ICB3aGlsZSBpbml0aWFsX3NwYWNlcyA8IGxlbihsaW5lKSBhbmQgbGluZVtpbml0aWFsX3NwYWNl
c10gPT0gJyAnOgorICAgICAgICBpbml0aWFsX3NwYWNlcyArPSAxCisgICAgaWYgbGluZSBhbmQg
bGluZVstMV0uaXNzcGFjZSgpOgorICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3Bh
Y2UvZW5kX29mX2xpbmUnLCA0LAorICAgICAgICAgICAgICAnTGluZSBlbmRzIGluIHdoaXRlc3Bh
Y2UuICBDb25zaWRlciBkZWxldGluZyB0aGVzZSBleHRyYSBzcGFjZXMuJykKKyAgICAjIFRoZXJl
IGFyZSBjZXJ0YWluIHNpdHVhdGlvbnMgd2UgYWxsb3cgb25lIHNwYWNlLCBub3RhYmx5IGZvciBs
YWJlbHMKKyAgICBlbGlmICgoaW5pdGlhbF9zcGFjZXMgPj0gMSBhbmQgaW5pdGlhbF9zcGFjZXMg
PD0gMykKKyAgICAgICAgICBhbmQgbm90IG1hdGNoKHInXHMqXHcrXHMqOlxzKiQnLCBjbGVhbnNl
ZF9saW5lKSk6CisgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9pbmRlbnQn
LCAzLAorICAgICAgICAgICAgICAnV2VpcmQgbnVtYmVyIG9mIHNwYWNlcyBhdCBsaW5lLXN0YXJ0
LiAgJworICAgICAgICAgICAgICAnQXJlIHlvdSB1c2luZyBhIDQtc3BhY2UgaW5kZW50PycpCisg
ICAgIyBMYWJlbHMgc2hvdWxkIGFsd2F5cyBiZSBpbmRlbnRlZCBhdCBsZWFzdCBvbmUgc3BhY2Uu
CisgICAgZWxpZiBub3QgaW5pdGlhbF9zcGFjZXMgYW5kIGxpbmVbOjJdICE9ICcvLyc6CisgICAg
ICAgIGxhYmVsX21hdGNoID0gbWF0Y2gocicoP1A8bGFiZWw+W146XSspOlxzKiQnLCBsaW5lKQor
CisgICAgICAgIGlmIGxhYmVsX21hdGNoOgorICAgICAgICAgICAgbGFiZWwgPSBsYWJlbF9tYXRj
aC5ncm91cCgnbGFiZWwnKQorICAgICAgICAgICAgIyBPbmx5IHRocm93IGVycm9ycyBmb3Igc3R1
ZmYgdGhhdCBpcyBkZWZpbml0ZWx5IG5vdCBhIGdvdG8gbGFiZWwsCisgICAgICAgICAgICAjIGJl
Y2F1c2UgZ290byBsYWJlbHMgY2FuIGluIGZhY3Qgb2NjdXIgYXQgdGhlIHN0YXJ0IG9mIHRoZSBs
aW5lLgorICAgICAgICAgICAgaWYgbGFiZWwgaW4gWydwdWJsaWMnLCAncHJpdmF0ZScsICdwcm90
ZWN0ZWQnXSBvciBsYWJlbC5maW5kKCcgJykgIT0gLTE6CisgICAgICAgICAgICAgICAgZXJyb3Io
bGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2xhYmVscycsIDQsCisgICAgICAgICAgICAgICAgICAg
ICAgJ0xhYmVscyBzaG91bGQgYWx3YXlzIGJlIGluZGVudGVkIGF0IGxlYXN0IG9uZSBzcGFjZS4g
ICcKKyAgICAgICAgICAgICAgICAgICAgICAnSWYgdGhpcyBpcyBhIG1lbWJlci1pbml0aWFsaXpl
ciBsaXN0IGluIGEgY29uc3RydWN0b3IsICcKKyAgICAgICAgICAgICAgICAgICAgICAndGhlIGNv
bG9uIHNob3VsZCBiZSBvbiB0aGUgbGluZSBhZnRlciB0aGUgZGVmaW5pdGlvbiBoZWFkZXIuJykK
KworICAgIGlmIChjbGVhbnNlZF9saW5lLmNvdW50KCc7JykgPiAxCisgICAgICAgICMgZm9yIGxv
b3BzIGFyZSBhbGxvd2VkIHR3byA7J3MgKGFuZCBtYXkgcnVuIG92ZXIgdHdvIGxpbmVzKS4KKyAg
ICAgICAgYW5kIGNsZWFuc2VkX2xpbmUuZmluZCgnZm9yJykgPT0gLTEKKyAgICAgICAgYW5kIChn
ZXRfcHJldmlvdXNfbm9uX2JsYW5rX2xpbmUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyKVswXS5m
aW5kKCdmb3InKSA9PSAtMQorICAgICAgICAgICAgIG9yIGdldF9wcmV2aW91c19ub25fYmxhbmtf
bGluZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIpWzBdLmZpbmQoJzsnKSAhPSAtMSkKKyAgICAg
ICAgIyBJdCdzIG9rIHRvIGhhdmUgbWFueSBjb21tYW5kcyBpbiBhIHN3aXRjaCBjYXNlIHRoYXQg
Zml0cyBpbiAxIGxpbmUKKyAgICAgICAgYW5kIG5vdCAoKGNsZWFuc2VkX2xpbmUuZmluZCgnY2Fz
ZSAnKSAhPSAtMQorICAgICAgICAgICAgICAgICAgb3IgY2xlYW5zZWRfbGluZS5maW5kKCdkZWZh
dWx0OicpICE9IC0xKQorICAgICAgICAgICAgICAgICBhbmQgY2xlYW5zZWRfbGluZS5maW5kKCdi
cmVhazsnKSAhPSAtMSkKKyAgICAgICAgYW5kIG5vdCBjbGVhbnNlZF9saW5lLnN0YXJ0c3dpdGgo
JyNkZWZpbmUgJykpOgorICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvbmV3
bGluZScsIDQsCisgICAgICAgICAgICAgICdNb3JlIHRoYW4gb25lIGNvbW1hbmQgb24gdGhlIHNh
bWUgbGluZScpCisKKyAgICBpZiBjbGVhbnNlZF9saW5lLnN0cmlwKCkuZW5kc3dpdGgoJ3x8Jykg
b3IgY2xlYW5zZWRfbGluZS5zdHJpcCgpLmVuZHN3aXRoKCcmJicpOgorICAgICAgICBlcnJvcihs
aW5lX251bWJlciwgJ3doaXRlc3BhY2Uvb3BlcmF0b3JzJywgNCwKKyAgICAgICAgICAgICAgJ0Jv
b2xlYW4gZXhwcmVzc2lvbnMgdGhhdCBzcGFuIG11bHRpcGxlIGxpbmVzIHNob3VsZCBoYXZlIHRo
ZWlyICcKKyAgICAgICAgICAgICAgJ29wZXJhdG9ycyBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBs
aW5lIGluc3RlYWQgb2YgdGhlIHJpZ2h0IHNpZGUuJykKKworICAgICMgU29tZSBtb3JlIHN0eWxl
IGNoZWNrcworICAgIGNoZWNrX25hbWVzcGFjZV9pbmRlbnRhdGlvbihmaWxlbmFtZSwgY2xlYW5f
bGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwgZmlsZV9zdGF0ZSwgZXJyb3IpCisg
ICAgY2hlY2tfdXNpbmdfc3RkKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVy
cm9yKQorICAgIGNoZWNrX21heF9taW5fbWFjcm9zKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGlu
ZV9udW1iZXIsIGVycm9yKQorICAgIGNoZWNrX3N3aXRjaF9pbmRlbnRhdGlvbihmaWxlbmFtZSwg
Y2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKKyAgICBjaGVja19icmFjZXMoZmlsZW5h
bWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpCisgICAgY2hlY2tfZXhpdF9zdGF0
ZW1lbnRfc2ltcGxpZmljYXRpb25zKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIs
IGVycm9yKQorICAgIGNoZWNrX3NwYWNpbmcoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251
bWJlciwgZXJyb3IpCisgICAgY2hlY2tfY2hlY2soZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5l
X251bWJlciwgZXJyb3IpCisgICAgY2hlY2tfZm9yX2NvbXBhcmlzb25zX3RvX3plcm8oZmlsZW5h
bWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpCisgICAgY2hlY2tfZm9yX251bGwo
ZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpCisKKworX1JFX1BBVFRF
Uk5fSU5DTFVERV9ORVdfU1RZTEUgPSByZS5jb21waWxlKHInI2luY2x1ZGUgKyJbXi9dK1wuaCIn
KQorX1JFX1BBVFRFUk5fSU5DTFVERSA9IHJlLmNvbXBpbGUocideXHMqI1xzKmluY2x1ZGVccyoo
WzwiXSkoW14+Il0qKVs+Il0uKiQnKQorIyBNYXRjaGVzIHRoZSBmaXJzdCBjb21wb25lbnQgb2Yg
YSBmaWxlbmFtZSBkZWxpbWl0ZWQgYnkgLXMgYW5kIF9zLiBUaGF0IGlzOgorIyAgX1JFX0ZJUlNU
X0NPTVBPTkVOVC5tYXRjaCgnZm9vJykuZ3JvdXAoMCkgPT0gJ2ZvbycKKyMgIF9SRV9GSVJTVF9D
T01QT05FTlQubWF0Y2goJ2Zvby5jcHAnKS5ncm91cCgwKSA9PSAnZm9vJworIyAgX1JFX0ZJUlNU
X0NPTVBPTkVOVC5tYXRjaCgnZm9vLWJhcl9iYXouY3BwJykuZ3JvdXAoMCkgPT0gJ2ZvbycKKyMg
IF9SRV9GSVJTVF9DT01QT05FTlQubWF0Y2goJ2Zvb19iYXItYmF6LmNwcCcpLmdyb3VwKDApID09
ICdmb28nCitfUkVfRklSU1RfQ09NUE9ORU5UID0gcmUuY29tcGlsZShyJ15bXi1fLl0rJykKKwor
CitkZWYgX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKGZpbGVuYW1lKToKKyAgICAiIiJEcm9wcyBjb21t
b24gc3VmZml4ZXMgbGlrZSBfdGVzdC5jcHAgb3IgLWlubC5oIGZyb20gZmlsZW5hbWUuCisKKyAg
ICBGb3IgZXhhbXBsZToKKyAgICAgID4+PiBfZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9mb28t
aW5sLmgnKQorICAgICAgJ2Zvby9mb28nCisgICAgICA+Pj4gX2Ryb3BfY29tbW9uX3N1ZmZpeGVz
KCdmb28vYmFyL2Zvby5jcHAnKQorICAgICAgJ2Zvby9iYXIvZm9vJworICAgICAgPj4+IF9kcm9w
X2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvb19pbnRlcm5hbC5oJykKKyAgICAgICdmb28vZm9vJwor
ICAgICAgPj4+IF9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvb191bnVzdWFsaW50ZXJuYWwu
aCcpCisgICAgICAnZm9vL2Zvb191bnVzdWFsaW50ZXJuYWwnCisKKyAgICBBcmdzOgorICAgICAg
ZmlsZW5hbWU6IFRoZSBpbnB1dCBmaWxlbmFtZS4KKworICAgIFJldHVybnM6CisgICAgICBUaGUg
ZmlsZW5hbWUgd2l0aCB0aGUgY29tbW9uIHN1ZmZpeCByZW1vdmVkLgorICAgICIiIgorICAgIGZv
ciBzdWZmaXggaW4gKCd0ZXN0LmNwcCcsICdyZWd0ZXN0LmNwcCcsICd1bml0dGVzdC5jcHAnLAor
ICAgICAgICAgICAgICAgICAgICdpbmwuaCcsICdpbXBsLmgnLCAnaW50ZXJuYWwuaCcpOgorICAg
ICAgICBpZiAoZmlsZW5hbWUuZW5kc3dpdGgoc3VmZml4KSBhbmQgbGVuKGZpbGVuYW1lKSA+IGxl
bihzdWZmaXgpCisgICAgICAgICAgICBhbmQgZmlsZW5hbWVbLWxlbihzdWZmaXgpIC0gMV0gaW4g
KCctJywgJ18nKSk6CisgICAgICAgICAgICByZXR1cm4gZmlsZW5hbWVbOi1sZW4oc3VmZml4KSAt
IDFdCisgICAgcmV0dXJuIG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdCisKKworZGVmIF9p
c190ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKToKKyAgICAiIiJEZXRlcm1pbmVzIGlmIHRoZSBnaXZl
biBmaWxlbmFtZSBoYXMgYSBzdWZmaXggdGhhdCBpZGVudGlmaWVzIGl0IGFzIGEgdGVzdC4KKwor
ICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTogVGhlIGlucHV0IGZpbGVuYW1lLgorCisgICAgUmV0
dXJuczoKKyAgICAgIFRydWUgaWYgJ2ZpbGVuYW1lJyBsb29rcyBsaWtlIGEgdGVzdCwgRmFsc2Ug
b3RoZXJ3aXNlLgorICAgICIiIgorICAgIGlmIChmaWxlbmFtZS5lbmRzd2l0aCgnX3Rlc3QuY3Bw
JykKKyAgICAgICAgb3IgZmlsZW5hbWUuZW5kc3dpdGgoJ191bml0dGVzdC5jcHAnKQorICAgICAg
ICBvciBmaWxlbmFtZS5lbmRzd2l0aCgnX3JlZ3Rlc3QuY3BwJykpOgorICAgICAgICByZXR1cm4g
VHJ1ZQorICAgIHJldHVybiBGYWxzZQorCisKK2RlZiBfY2xhc3NpZnlfaW5jbHVkZShmaWxlbmFt
ZSwgaW5jbHVkZSwgaXNfc3lzdGVtLCBpbmNsdWRlX3N0YXRlKToKKyAgICAiIiJGaWd1cmVzIG91
dCB3aGF0IGtpbmQgb2YgaGVhZGVyICdpbmNsdWRlJyBpcy4KKworICAgIEFyZ3M6CisgICAgICBm
aWxlbmFtZTogVGhlIGN1cnJlbnQgZmlsZSBjcHBfc3R5bGUgaXMgcnVubmluZyBvdmVyLgorICAg
ICAgaW5jbHVkZTogVGhlIHBhdGggdG8gYSAjaW5jbHVkZWQgZmlsZS4KKyAgICAgIGlzX3N5c3Rl
bTogVHJ1ZSBpZiB0aGUgI2luY2x1ZGUgdXNlZCA8PiByYXRoZXIgdGhhbiAiIi4KKyAgICAgIGlu
Y2x1ZGVfc3RhdGU6IEFuIF9JbmNsdWRlU3RhdGUgaW5zdGFuY2UgaW4gd2hpY2ggdGhlIGhlYWRl
cnMgYXJlIGluc2VydGVkLgorCisgICAgUmV0dXJuczoKKyAgICAgIE9uZSBvZiB0aGUgX1hYWF9I
RUFERVIgY29uc3RhbnRzLgorCisgICAgRm9yIGV4YW1wbGU6CisgICAgICA+Pj4gX2NsYXNzaWZ5
X2luY2x1ZGUoJ2Zvby5jcHAnLCAnY29uZmlnLmgnLCBGYWxzZSkKKyAgICAgIF9DT05GSUdfSEVB
REVSCisgICAgICA+Pj4gX2NsYXNzaWZ5X2luY2x1ZGUoJ2Zvby5jcHAnLCAnZm9vLmgnLCBGYWxz
ZSkKKyAgICAgIF9QUklNQVJZX0hFQURFUgorICAgICAgPj4+IF9jbGFzc2lmeV9pbmNsdWRlKCdm
b28uY3BwJywgJ2Jhci5oJywgRmFsc2UpCisgICAgICBfT1RIRVJfSEVBREVSCisgICAgIiIiCisK
KyAgICAjIElmIGl0IGlzIGEgc3lzdGVtIGhlYWRlciB3ZSBrbm93IGl0IGlzIGNsYXNzaWZpZWQg
YXMgX09USEVSX0hFQURFUi4KKyAgICBpZiBpc19zeXN0ZW06CisgICAgICAgIHJldHVybiBfT1RI
RVJfSEVBREVSCisKKyAgICAjIElmIHRoZSBpbmNsdWRlIGlzIG5hbWVkIGNvbmZpZy5oIHRoZW4g
dGhpcyBpcyBXZWJDb3JlL2NvbmZpZy5oLgorICAgIGlmIGluY2x1ZGUgPT0gImNvbmZpZy5oIjoK
KyAgICAgICAgcmV0dXJuIF9DT05GSUdfSEVBREVSCisKKyAgICAjIFRoZXJlIGNhbm5vdCBiZSBw
cmltYXJ5IGluY2x1ZGVzIGluIGhlYWRlciBmaWxlcyB0aGVtc2VsdmVzLiBPbmx5IGFuCisgICAg
IyBpbmNsdWRlIGV4YWN0bHkgbWF0Y2hlcyB0aGUgaGVhZGVyIGZpbGVuYW1lIHdpbGwgYmUgaXMg
ZmxhZ2dlZCBhcworICAgICMgcHJpbWFyeSwgc28gdGhhdCBpdCB0cmlnZ2VycyB0aGUgImRvbid0
IGluY2x1ZGUgeW91cnNlbGYiIGNoZWNrLgorICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKCcuaCcp
IGFuZCBmaWxlbmFtZSAhPSBpbmNsdWRlOgorICAgICAgICByZXR1cm4gX09USEVSX0hFQURFUjsK
KworICAgICMgUXQncyBtb2MgZmlsZXMgZG8gbm90IGZvbGxvdyB0aGUgbmFtaW5nIGFuZCBvcmRl
cmluZyBydWxlcywgc28gdGhleSBzaG91bGQgYmUgc2tpcHBlZAorICAgIGlmIGluY2x1ZGUuc3Rh
cnRzd2l0aCgnbW9jXycpIGFuZCBpbmNsdWRlLmVuZHN3aXRoKCcuY3BwJyk6CisgICAgICAgIHJl
dHVybiBfTU9DX0hFQURFUgorCisgICAgaWYgaW5jbHVkZS5lbmRzd2l0aCgnLm1vYycpOgorICAg
ICAgICByZXR1cm4gX01PQ19IRUFERVIKKworICAgICMgSWYgdGhlIHRhcmdldCBmaWxlIGJhc2Vu
YW1lIHN0YXJ0cyB3aXRoIHRoZSBpbmNsdWRlIHdlJ3JlIGNoZWNraW5nCisgICAgIyB0aGVuIHdl
IGNvbnNpZGVyIGl0IHRoZSBwcmltYXJ5IGhlYWRlci4KKyAgICB0YXJnZXRfYmFzZSA9IEZpbGVJ
bmZvKGZpbGVuYW1lKS5iYXNlX25hbWUoKQorICAgIGluY2x1ZGVfYmFzZSA9IEZpbGVJbmZvKGlu
Y2x1ZGUpLmJhc2VfbmFtZSgpCisKKyAgICAjIElmIHdlIGhhdmVuJ3QgZW5jb3VudGVyZWQgYSBw
cmltYXJ5IGhlYWRlciwgdGhlbiBiZSBsZW5pZW50IGluIGNoZWNraW5nLgorICAgIGlmIG5vdCBp
bmNsdWRlX3N0YXRlLnZpc2l0ZWRfcHJpbWFyeV9zZWN0aW9uKCkgYW5kIHRhcmdldF9iYXNlLmZp
bmQoaW5jbHVkZV9iYXNlKSAhPSAtMToKKyAgICAgICAgcmV0dXJuIF9QUklNQVJZX0hFQURFUgor
ICAgICMgSWYgd2UgYWxyZWFkeSBlbmNvdW50ZXJlZCBhIHByaW1hcnkgaGVhZGVyLCBwZXJmb3Jt
IGEgc3RyaWN0IGNvbXBhcmlzb24uCisgICAgIyBJbiBjYXNlIHRoZSB0d28gZmlsZW5hbWUgYmFz
ZXMgYXJlIHRoZSBzYW1lIHRoZW4gdGhlIGFib3ZlIGxlbmllbnQgY2hlY2sKKyAgICAjIHByb2Jh
Ymx5IHdhcyBhIGZhbHNlIHBvc2l0aXZlLgorICAgIGVsaWYgaW5jbHVkZV9zdGF0ZS52aXNpdGVk
X3ByaW1hcnlfc2VjdGlvbigpIGFuZCB0YXJnZXRfYmFzZSA9PSBpbmNsdWRlX2Jhc2U6CisgICAg
ICAgIGlmIGluY2x1ZGUgPT0gIlJlc291cmNlSGFuZGxlV2luLmgiOgorICAgICAgICAgICAgIyBG
SVhNRTogVGh1cyBmYXIsIHdlJ3ZlIG9ubHkgc2VlbiBvbmUgZXhhbXBsZSBvZiB0aGVzZSwgYnV0
IGlmIHdlCisgICAgICAgICAgICAjIHN0YXJ0IHRvIHNlZSBtb3JlLCBwbGVhc2UgY29uc2lkZXIg
Z2VuZXJhbGl6aW5nIHRoaXMgY2hlY2sKKyAgICAgICAgICAgICMgc29tZWhvdy4KKyAgICAgICAg
ICAgIHJldHVybiBfT1RIRVJfSEVBREVSCisgICAgICAgIHJldHVybiBfUFJJTUFSWV9IRUFERVIK
KworICAgIHJldHVybiBfT1RIRVJfSEVBREVSCisKKworCitkZWYgY2hlY2tfaW5jbHVkZV9saW5l
KGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGluY2x1ZGVfc3RhdGUsIGVycm9y
KToKKyAgICAiIiJDaGVjayBydWxlcyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvICNpbmNsdWRlIGxp
bmVzLgorCisgICAgU3RyaW5ncyBvbiAjaW5jbHVkZSBsaW5lcyBhcmUgTk9UIHJlbW92ZWQgZnJv
bSBlbGlkZWQgbGluZSwgdG8gbWFrZQorICAgIGNlcnRhaW4gdGFza3MgZWFzaWVyLiBIb3dldmVy
LCB0byBwcmV2ZW50IGZhbHNlIHBvc2l0aXZlcywgY2hlY2tzCisgICAgYXBwbGljYWJsZSB0byAj
aW5jbHVkZSBsaW5lcyBpbiBDaGVja0xhbmd1YWdlIG11c3QgYmUgcHV0IGhlcmUuCisKKyAgICBB
cmdzOgorICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCisgICAg
ICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZp
bGUuCisgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4K
KyAgICAgIGluY2x1ZGVfc3RhdGU6IEFuIF9JbmNsdWRlU3RhdGUgaW5zdGFuY2UgaW4gd2hpY2gg
dGhlIGhlYWRlcnMgYXJlIGluc2VydGVkLgorICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBj
YWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KKyAgICAiIiIKKworICAgIGlmIChmaWxlbmFtZS5m
aW5kKCdXZWJLaXRUb29scy9XZWJLaXRBUElUZXN0LycpID49IDAKKyAgICAgICAgb3IgZmlsZW5h
bWUuZmluZCgnV2ViS2l0L3F0L1FHVkxhdW5jaGVyLycpID49IDApOgorICAgICAgICAjIEZpbGVz
IGluIHRoaXMgZGlyZWN0b3J5IGFyZSBjb25zdW1lcnMgb2YgdGhlIFdlYktpdCBBUEkgYW5kCisg
ICAgICAgICMgdGhlcmVmb3JlIGRvIG5vdCBmb2xsb3cgdGhlIHNhbWUgaGVhZGVyIGluY2x1ZGlu
ZyBkaXNjaXBsaW5lIGFzCisgICAgICAgICMgV2ViQ29yZS4KKyAgICAgICAgcmV0dXJuCisKKyAg
ICBsaW5lID0gY2xlYW5fbGluZXMubGluZXNbbGluZV9udW1iZXJdCisKKyAgICBtYXRjaGVkID0g
X1JFX1BBVFRFUk5fSU5DTFVERS5zZWFyY2gobGluZSkKKyAgICBpZiBub3QgbWF0Y2hlZDoKKyAg
ICAgICAgcmV0dXJuCisKKyAgICBpbmNsdWRlID0gbWF0Y2hlZC5ncm91cCgyKQorICAgIGlzX3N5
c3RlbSA9IChtYXRjaGVkLmdyb3VwKDEpID09ICc8JykKKworICAgICMgTG9vayBmb3IgYW55IG9m
IHRoZSBzdHJlYW0gY2xhc3NlcyB0aGF0IGFyZSBwYXJ0IG9mIHN0YW5kYXJkIEMrKy4KKyAgICBp
ZiBtYXRjaChyJyhmfGluZHxpb3xpfG98cGFyc2V8cGZ8c3RkaW98c3RyfCk/c3RyZWFtJCcsIGlu
Y2x1ZGUpOgorICAgICAgICAjIE1hbnkgdW5pdCB0ZXN0cyB1c2UgY291dCwgc28gd2UgZXhlbXB0
IHRoZW0uCisgICAgICAgIGlmIG5vdCBfaXNfdGVzdF9maWxlbmFtZShmaWxlbmFtZSk6CisgICAg
ICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L3N0cmVhbXMnLCAzLAorICAg
ICAgICAgICAgICAgICAgJ1N0cmVhbXMgYXJlIGhpZ2hseSBkaXNjb3VyYWdlZC4nKQorCisgICAg
IyBMb29rIGZvciBzcGVjaWZpYyBpbmNsdWRlcyB0byBmaXguCisgICAgaWYgaW5jbHVkZS5zdGFy
dHN3aXRoKCd3dGYvJykgYW5kIG5vdCBpc19zeXN0ZW06CisgICAgICAgIGVycm9yKGxpbmVfbnVt
YmVyLCAnYnVpbGQvaW5jbHVkZScsIDQsCisgICAgICAgICAgICAgICd3dGYgaW5jbHVkZXMgc2hv
dWxkIGJlIDx3dGYvZmlsZS5oPiBpbnN0ZWFkIG9mICJ3dGYvZmlsZS5oIi4nKQorCisgICAgZHVw
bGljYXRlX2hlYWRlciA9IGluY2x1ZGUgaW4gaW5jbHVkZV9zdGF0ZQorICAgIGlmIGR1cGxpY2F0
ZV9oZWFkZXI6CisgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvaW5jbHVkZScsIDQs
CisgICAgICAgICAgICAgICciJXMiIGFscmVhZHkgaW5jbHVkZWQgYXQgJXM6JXMnICUKKyAgICAg
ICAgICAgICAgKGluY2x1ZGUsIGZpbGVuYW1lLCBpbmNsdWRlX3N0YXRlW2luY2x1ZGVdKSkKKyAg
ICBlbHNlOgorICAgICAgICBpbmNsdWRlX3N0YXRlW2luY2x1ZGVdID0gbGluZV9udW1iZXIKKwor
ICAgIGhlYWRlcl90eXBlID0gX2NsYXNzaWZ5X2luY2x1ZGUoZmlsZW5hbWUsIGluY2x1ZGUsIGlz
X3N5c3RlbSwgaW5jbHVkZV9zdGF0ZSkKKyAgICBpbmNsdWRlX3N0YXRlLmhlYWRlcl90eXBlc1ts
aW5lX251bWJlcl0gPSBoZWFkZXJfdHlwZQorCisgICAgIyBPbmx5IHByb2NlZWQgaWYgdGhpcyBp
c24ndCBhIGR1cGxpY2F0ZSBoZWFkZXIuCisgICAgaWYgZHVwbGljYXRlX2hlYWRlcjoKKyAgICAg
ICAgcmV0dXJuCisKKyAgICAjIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgaGVhZGVycyBhcHBlYXIg
aW4gdGhlIHJpZ2h0IG9yZGVyOgorICAgICMgMSkgZm9yIGltcGxlbWVudGF0aW9uIGZpbGVzOiBj
b25maWcuaCwgcHJpbWFyeSBoZWFkZXIsIGJsYW5rIGxpbmUsIGFscGhhYmV0aWNhbGx5IHNvcnRl
ZAorICAgICMgMikgZm9yIGhlYWRlciBmaWxlczogYWxwaGFiZXRpY2FsbHkgc29ydGVkCisgICAg
IyBUaGUgaW5jbHVkZV9zdGF0ZSBvYmplY3Qga2VlcHMgdHJhY2sgb2YgdGhlIGxhc3QgdHlwZSBz
ZWVuCisgICAgIyBhbmQgY29tcGxhaW5zIGlmIHRoZSBoZWFkZXIgdHlwZXMgYXJlIG91dCBvZiBv
cmRlciBvciBtaXNzaW5nLgorICAgIGVycm9yX21lc3NhZ2UgPSBpbmNsdWRlX3N0YXRlLmNoZWNr
X25leHRfaW5jbHVkZV9vcmRlcihoZWFkZXJfdHlwZSwgZmlsZW5hbWUuZW5kc3dpdGgoJy5oJykp
CisKKyAgICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgYmxhbmsgbGluZSBhZnRlciBw
cmltYXJ5IGhlYWRlci4KKyAgICBpZiBub3QgZXJyb3JfbWVzc2FnZSBhbmQgaGVhZGVyX3R5cGUg
PT0gX1BSSU1BUllfSEVBREVSOgorICAgICAgICAgbmV4dF9saW5lID0gY2xlYW5fbGluZXMucmF3
X2xpbmVzW2xpbmVfbnVtYmVyICsgMV0KKyAgICAgICAgIGlmIG5vdCBpc19ibGFua19saW5lKG5l
eHRfbGluZSk6CisgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL2luY2x1ZGVf
b3JkZXInLCA0LAorICAgICAgICAgICAgICAgICAgJ1lvdSBzaG91bGQgYWRkIGEgYmxhbmsgbGlu
ZSBhZnRlciBpbXBsZW1lbnRhdGlvbiBmaWxlXCdzIG93biBoZWFkZXIuJykKKworICAgICMgQ2hl
Y2sgdG8gbWFrZSBzdXJlIGFsbCBoZWFkZXJzIGJlc2lkZXMgY29uZmlnLmggYW5kIHRoZSBwcmlt
YXJ5IGhlYWRlciBhcmUKKyAgICAjIGFscGhhYmV0aWNhbGx5IHNvcnRlZC4gU2tpcCBRdCdzIG1v
YyBmaWxlcy4KKyAgICBpZiBub3QgZXJyb3JfbWVzc2FnZSBhbmQgaGVhZGVyX3R5cGUgPT0gX09U
SEVSX0hFQURFUjoKKyAgICAgICAgIHByZXZpb3VzX2xpbmVfbnVtYmVyID0gbGluZV9udW1iZXIg
LSAxOworICAgICAgICAgcHJldmlvdXNfbGluZSA9IGNsZWFuX2xpbmVzLmxpbmVzW3ByZXZpb3Vz
X2xpbmVfbnVtYmVyXQorICAgICAgICAgcHJldmlvdXNfbWF0Y2ggPSBfUkVfUEFUVEVSTl9JTkNM
VURFLnNlYXJjaChwcmV2aW91c19saW5lKQorICAgICAgICAgd2hpbGUgKG5vdCBwcmV2aW91c19t
YXRjaCBhbmQgcHJldmlvdXNfbGluZV9udW1iZXIgPiAwCisgICAgICAgICAgICAgICAgYW5kIG5v
dCBzZWFyY2gocidcQSgjaWZ8I2lmZGVmfCNpZm5kZWZ8I2Vsc2V8I2VsaWZ8I2VuZGlmKScsIHBy
ZXZpb3VzX2xpbmUpKToKKyAgICAgICAgICAgIHByZXZpb3VzX2xpbmVfbnVtYmVyIC09IDE7Cisg
ICAgICAgICAgICBwcmV2aW91c19saW5lID0gY2xlYW5fbGluZXMubGluZXNbcHJldmlvdXNfbGlu
ZV9udW1iZXJdCisgICAgICAgICAgICBwcmV2aW91c19tYXRjaCA9IF9SRV9QQVRURVJOX0lOQ0xV
REUuc2VhcmNoKHByZXZpb3VzX2xpbmUpCisgICAgICAgICBpZiBwcmV2aW91c19tYXRjaDoKKyAg
ICAgICAgICAgIHByZXZpb3VzX2hlYWRlcl90eXBlID0gaW5jbHVkZV9zdGF0ZS5oZWFkZXJfdHlw
ZXNbcHJldmlvdXNfbGluZV9udW1iZXJdCisgICAgICAgICAgICBpZiBwcmV2aW91c19oZWFkZXJf
dHlwZSA9PSBfT1RIRVJfSEVBREVSIGFuZCBwcmV2aW91c19saW5lLnN0cmlwKCkgPiBsaW5lLnN0
cmlwKCk6CisgICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdidWlsZC9pbmNsdWRl
X29yZGVyJywgNCwKKyAgICAgICAgICAgICAgICAgICAgICAnQWxwaGFiZXRpY2FsIHNvcnRpbmcg
cHJvYmxlbS4nKQorCisgICAgaWYgZXJyb3JfbWVzc2FnZToKKyAgICAgICAgaWYgZmlsZW5hbWUu
ZW5kc3dpdGgoJy5oJyk6CisgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL2lu
Y2x1ZGVfb3JkZXInLCA0LAorICAgICAgICAgICAgICAgICAgJyVzIFNob3VsZCBiZTogYWxwaGFi
ZXRpY2FsbHkgc29ydGVkLicgJQorICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvaW5jbHVk
ZV9vcmRlcicsIDQsCisgICAgICAgICAgICAgICAgICAnJXMgU2hvdWxkIGJlOiBjb25maWcuaCwg
cHJpbWFyeSBoZWFkZXIsIGJsYW5rIGxpbmUsIGFuZCB0aGVuIGFscGhhYmV0aWNhbGx5IHNvcnRl
ZC4nICUKKyAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UpCisKKworZGVmIGNoZWNrX2xh
bmd1YWdlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9u
LCBpbmNsdWRlX3N0YXRlLAorICAgICAgICAgICAgICAgICAgIGVycm9yKToKKyAgICAiIiJDaGVj
a3MgcnVsZXMgZnJvbSB0aGUgJ0MrKyBsYW5ndWFnZSBydWxlcycgc2VjdGlvbiBvZiBjcHBndWlk
ZS5odG1sLgorCisgICAgU29tZSBvZiB0aGVzZSBydWxlcyBhcmUgaGFyZCB0byB0ZXN0IChmdW5j
dGlvbiBvdmVybG9hZGluZywgdXNpbmcKKyAgICB1aW50MzIgaW5hcHByb3ByaWF0ZWx5KSwgYnV0
IHdlIGRvIHRoZSBiZXN0IHdlIGNhbi4KKworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTogVGhl
IG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2Vk
TGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KKyAgICAgIGxpbmVfbnVtYmVyOiBU
aGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAgICAgZmlsZV9leHRlbnNpb246IFRo
ZSBleHRlbnNpb24gKHdpdGhvdXQgdGhlIGRvdCkgb2YgdGhlIGZpbGVuYW1lLgorICAgICAgaW5j
bHVkZV9zdGF0ZTogQW4gX0luY2x1ZGVTdGF0ZSBpbnN0YW5jZSBpbiB3aGljaCB0aGUgaGVhZGVy
cyBhcmUgaW5zZXJ0ZWQuCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBh
bnkgZXJyb3JzIGZvdW5kLgorICAgICIiIgorICAgICMgSWYgdGhlIGxpbmUgaXMgZW1wdHkgb3Ig
Y29uc2lzdHMgb2YgZW50aXJlbHkgYSBjb21tZW50LCBubyBuZWVkIHRvCisgICAgIyBjaGVjayBp
dC4KKyAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXQorICAgIGlmIG5v
dCBsaW5lOgorICAgICAgICByZXR1cm4KKworICAgIG1hdGNoZWQgPSBfUkVfUEFUVEVSTl9JTkNM
VURFLnNlYXJjaChsaW5lKQorICAgIGlmIG1hdGNoZWQ6CisgICAgICAgIGNoZWNrX2luY2x1ZGVf
bGluZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBpbmNsdWRlX3N0YXRlLCBl
cnJvcikKKyAgICAgICAgcmV0dXJuCisKKyAgICAjIEZJWE1FOiBmaWd1cmUgb3V0IGlmIHRoZXkn
cmUgdXNpbmcgZGVmYXVsdCBhcmd1bWVudHMgaW4gZm4gcHJvdG8uCisKKyAgICAjIENoZWNrIHRv
IHNlZSBpZiB0aGV5J3JlIHVzaW5nIGFuIGNvbnZlcnNpb24gZnVuY3Rpb24gY2FzdC4KKyAgICAj
IEkganVzdCB0cnkgdG8gY2FwdHVyZSB0aGUgbW9zdCBjb21tb24gYmFzaWMgdHlwZXMsIHRob3Vn
aCB0aGVyZSBhcmUgbW9yZS4KKyAgICAjIFBhcmFtZXRlcmxlc3MgY29udmVyc2lvbiBmdW5jdGlv
bnMsIHN1Y2ggYXMgYm9vbCgpLCBhcmUgYWxsb3dlZCBhcyB0aGV5IGFyZQorICAgICMgcHJvYmFi
bHkgYSBtZW1iZXIgb3BlcmF0b3IgZGVjbGFyYXRpb24gb3IgZGVmYXVsdCBjb25zdHJ1Y3Rvci4K
KyAgICBtYXRjaGVkID0gc2VhcmNoKAorICAgICAgICByJ1xiKGludHxmbG9hdHxkb3VibGV8Ym9v
bHxjaGFyfGludDMyfHVpbnQzMnxpbnQ2NHx1aW50NjQpXChbXildJywgbGluZSkKKyAgICBpZiBt
YXRjaGVkOgorICAgICAgICAjIGdNb2NrIG1ldGhvZHMgYXJlIGRlZmluZWQgdXNpbmcgc29tZSB2
YXJpYW50IG9mIE1PQ0tfTUVUSE9EeChuYW1lLCB0eXBlKQorICAgICAgICAjIHdoZXJlIHR5cGUg
bWF5IGJlIGZsb2F0KCksIGludChzdHJpbmcpLCBldGMuICBXaXRob3V0IGNvbnRleHQgdGhleSBh
cmUKKyAgICAgICAgIyB2aXJ0dWFsbHkgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBpbnQoeCkgY2Fz
dHMuCisgICAgICAgIGlmIG5vdCBtYXRjaChyJ15ccypNT0NLXyhDT05TVF8pP01FVEhPRFxkKyhf
VCk/XCgnLCBsaW5lKToKKyAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncmVhZGFiaWxp
dHkvY2FzdGluZycsIDQsCisgICAgICAgICAgICAgICAgICAnVXNpbmcgZGVwcmVjYXRlZCBjYXN0
aW5nIHN0eWxlLiAgJworICAgICAgICAgICAgICAgICAgJ1VzZSBzdGF0aWNfY2FzdDwlcz4oLi4u
KSBpbnN0ZWFkJyAlCisgICAgICAgICAgICAgICAgICBtYXRjaGVkLmdyb3VwKDEpKQorCisgICAg
Y2hlY2tfY19zdHlsZV9jYXN0KGZpbGVuYW1lLCBsaW5lX251bWJlciwgbGluZSwgY2xlYW5fbGlu
ZXMucmF3X2xpbmVzW2xpbmVfbnVtYmVyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXRp
Y19jYXN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgcidcKChpbnR8ZmxvYXR8ZG91YmxlfGJv
b2x8Y2hhcnx1P2ludCgxNnwzMnw2NCkpXCknLAorICAgICAgICAgICAgICAgICAgICAgICBlcnJv
cikKKyAgICAjIFRoaXMgZG9lc24ndCBjYXRjaCBhbGwgY2FzZXMuICBDb25zaWRlciAoY29uc3Qg
Y2hhciAqIGNvbnN0KSJoZWxsbyIuCisgICAgY2hlY2tfY19zdHlsZV9jYXN0KGZpbGVuYW1lLCBs
aW5lX251bWJlciwgbGluZSwgY2xlYW5fbGluZXMucmF3X2xpbmVzW2xpbmVfbnVtYmVyXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgJ3JlaW50ZXJwcmV0X2Nhc3QnLCByJ1woKFx3K1xzP1wqK1xz
PylcKScsIGVycm9yKQorCisgICAgIyBJbiBhZGRpdGlvbiwgd2UgbG9vayBmb3IgcGVvcGxlIHRh
a2luZyB0aGUgYWRkcmVzcyBvZiBhIGNhc3QuICBUaGlzCisgICAgIyBpcyBkYW5nZXJvdXMgLS0g
Y2FzdHMgY2FuIGFzc2lnbiB0byB0ZW1wb3Jhcmllcywgc28gdGhlIHBvaW50ZXIgZG9lc24ndAor
ICAgICMgcG9pbnQgd2hlcmUgeW91IHRoaW5rLgorICAgIGlmIHNlYXJjaCgKKyAgICAgICAgcico
JlwoW14pXStcKVtcdyhdKXwoJihzdGF0aWN8ZHluYW1pY3xyZWludGVycHJldClfY2FzdFxiKScs
IGxpbmUpOgorICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvY2FzdGluZycsIDQs
CisgICAgICAgICAgICAgICgnQXJlIHlvdSB0YWtpbmcgYW4gYWRkcmVzcyBvZiBhIGNhc3Q/ICAn
CisgICAgICAgICAgICAgICAnVGhpcyBpcyBkYW5nZXJvdXM6IGNvdWxkIGJlIGEgdGVtcCB2YXIu
ICAnCisgICAgICAgICAgICAgICAnVGFrZSB0aGUgYWRkcmVzcyBiZWZvcmUgZG9pbmcgdGhlIGNh
c3QsIHJhdGhlciB0aGFuIGFmdGVyJykpCisKKyAgICAjIENoZWNrIGZvciBwZW9wbGUgZGVjbGFy
aW5nIHN0YXRpYy9nbG9iYWwgU1RMIHN0cmluZ3MgYXQgdGhlIHRvcCBsZXZlbC4KKyAgICAjIFRo
aXMgaXMgZGFuZ2Vyb3VzIGJlY2F1c2UgdGhlIEMrKyBsYW5ndWFnZSBkb2VzIG5vdCBndWFyYW50
ZWUgdGhhdAorICAgICMgZ2xvYmFscyB3aXRoIGNvbnN0cnVjdG9ycyBhcmUgaW5pdGlhbGl6ZWQg
YmVmb3JlIHRoZSBmaXJzdCBhY2Nlc3MuCisgICAgbWF0Y2hlZCA9IG1hdGNoKAorICAgICAgICBy
JygoPzp8c3RhdGljICspKD86fGNvbnN0ICspKXN0cmluZyArKFthLXpBLVowLTlfOl0rKVxiKC4q
KScsCisgICAgICAgIGxpbmUpCisgICAgIyBNYWtlIHN1cmUgaXQncyBub3QgYSBmdW5jdGlvbi4K
KyAgICAjIEZ1bmN0aW9uIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIGxvb2tzIGxpa2U6ICJzdHJp
bmcgZm9vPFR5cGU+KC4uLiIuCisgICAgIyBDbGFzcyB0ZW1wbGF0ZSBkZWZpbml0aW9ucyBsb29r
IGxpa2U6ICJzdHJpbmcgRm9vPFR5cGU+OjpNZXRob2QoLi4uIi4KKyAgICBpZiBtYXRjaGVkIGFu
ZCBub3QgbWF0Y2gocidccyooPC4qPik/KDo6W2EtekEtWjAtOV9dKyk/XHMqXCgoW14iXXwkKScs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQuZ3JvdXAoMykpOgorICAgICAg
ICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvc3RyaW5nJywgNCwKKyAgICAgICAgICAgICAg
J0ZvciBhIHN0YXRpYy9nbG9iYWwgc3RyaW5nIGNvbnN0YW50LCB1c2UgYSBDIHN0eWxlIHN0cmlu
ZyBpbnN0ZWFkOiAnCisgICAgICAgICAgICAgICciJXNjaGFyICVzW10iLicgJQorICAgICAgICAg
ICAgICAobWF0Y2hlZC5ncm91cCgxKSwgbWF0Y2hlZC5ncm91cCgyKSkpCisKKyAgICAjIENoZWNr
IHRoYXQgd2UncmUgbm90IHVzaW5nIFJUVEkgb3V0c2lkZSBvZiB0ZXN0aW5nIGNvZGUuCisgICAg
aWYgc2VhcmNoKHInXGJkeW5hbWljX2Nhc3Q8JywgbGluZSkgYW5kIG5vdCBfaXNfdGVzdF9maWxl
bmFtZShmaWxlbmFtZSk6CisgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS9ydHRp
JywgNSwKKyAgICAgICAgICAgICAgJ0RvIG5vdCB1c2UgZHluYW1pY19jYXN0PD4uICBJZiB5b3Ug
bmVlZCB0byBjYXN0IHdpdGhpbiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgImhpZXJhcmNoeSwg
dXNlIHN0YXRpY19jYXN0PD4gdG8gdXBjYXN0LiAgR29vZ2xlIGRvZXNuJ3Qgc3VwcG9ydCAiCisg
ICAgICAgICAgICAgICdSVFRJLicpCisKKyAgICBpZiBzZWFyY2gocidcYihbQS1aYS16MC05X10q
XylcKFwxXCknLCBsaW5lKToKKyAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdydW50aW1lL2lu
aXQnLCA0LAorICAgICAgICAgICAgICAnWW91IHNlZW0gdG8gYmUgaW5pdGlhbGl6aW5nIGEgbWVt
YmVyIHZhcmlhYmxlIHdpdGggaXRzZWxmLicpCisKKyAgICBpZiBmaWxlX2V4dGVuc2lvbiA9PSAn
aCc6CisgICAgICAgICMgRklYTUU6IGNoZWNrIHRoYXQgMS1hcmcgY29uc3RydWN0b3JzIGFyZSBl
eHBsaWNpdC4KKyAgICAgICAgIyAgICAgICAgSG93IHRvIHRlbGwgaXQncyBhIGNvbnN0cnVjdG9y
PworICAgICAgICAjICAgICAgICAoaGFuZGxlZCBpbiBjaGVja19mb3Jfbm9uX3N0YW5kYXJkX2Nv
bnN0cnVjdHMgZm9yIG5vdykKKyAgICAgICAgcGFzcworCisgICAgIyBDaGVjayBpZiBwZW9wbGUg
YXJlIHVzaW5nIHRoZSB2ZXJib3RlbiBDIGJhc2ljIHR5cGVzLiAgVGhlIG9ubHkgZXhjZXB0aW9u
CisgICAgIyB3ZSByZWd1bGFybHkgYWxsb3cgaXMgInVuc2lnbmVkIHNob3J0IHBvcnQiIGZvciBw
b3J0LgorICAgIGlmIHNlYXJjaChyJ1xic2hvcnQgcG9ydFxiJywgbGluZSk6CisgICAgICAgIGlm
IG5vdCBzZWFyY2gocidcYnVuc2lnbmVkIHNob3J0IHBvcnRcYicsIGxpbmUpOgorICAgICAgICAg
ICAgZXJyb3IobGluZV9udW1iZXIsICdydW50aW1lL2ludCcsIDQsCisgICAgICAgICAgICAgICAg
ICAnVXNlICJ1bnNpZ25lZCBzaG9ydCIgZm9yIHBvcnRzLCBub3QgInNob3J0IicpCisKKyAgICAj
IFdoZW4gc25wcmludGYgaXMgdXNlZCwgdGhlIHNlY29uZCBhcmd1bWVudCBzaG91bGRuJ3QgYmUg
YSBsaXRlcmFsLgorICAgIG1hdGNoZWQgPSBzZWFyY2gocidzbnByaW50ZlxzKlwoKFteLF0qKSxc
cyooWzAtOV0qKVxzKiwnLCBsaW5lKQorICAgIGlmIG1hdGNoZWQ6CisgICAgICAgIGVycm9yKGxp
bmVfbnVtYmVyLCAncnVudGltZS9wcmludGYnLCAzLAorICAgICAgICAgICAgICAnSWYgeW91IGNh
biwgdXNlIHNpemVvZiglcykgaW5zdGVhZCBvZiAlcyBhcyB0aGUgMm5kIGFyZyAnCisgICAgICAg
ICAgICAgICd0byBzbnByaW50Zi4nICUgKG1hdGNoZWQuZ3JvdXAoMSksIG1hdGNoZWQuZ3JvdXAo
MikpKQorCisgICAgIyBDaGVjayBpZiBzb21lIHZlcmJvdGVuIEMgZnVuY3Rpb25zIGFyZSBiZWlu
ZyB1c2VkLgorICAgIGlmIHNlYXJjaChyJ1xic3ByaW50ZlxiJywgbGluZSk6CisgICAgICAgIGVy
cm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS9wcmludGYnLCA1LAorICAgICAgICAgICAgICAnTmV2
ZXIgdXNlIHNwcmludGYuICBVc2Ugc25wcmludGYgaW5zdGVhZC4nKQorICAgIG1hdGNoZWQgPSBz
ZWFyY2gocidcYihzdHJjcHl8c3RyY2F0KVxiJywgbGluZSkKKyAgICBpZiBtYXRjaGVkOgorICAg
ICAgICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvcHJpbnRmJywgNCwKKyAgICAgICAgICAg
ICAgJ0FsbW9zdCBhbHdheXMsIHNucHJpbnRmIGlzIGJldHRlciB0aGFuICVzJyAlIG1hdGNoZWQu
Z3JvdXAoMSkpCisKKyAgICBpZiBzZWFyY2gocidcYnNzY2FuZlxiJywgbGluZSk6CisgICAgICAg
IGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS9wcmludGYnLCAxLAorICAgICAgICAgICAgICAn
c3NjYW5mIGNhbiBiZSBvaywgYnV0IGlzIHNsb3cgYW5kIGNhbiBvdmVyZmxvdyBidWZmZXJzLicp
CisKKyAgICAjIENoZWNrIGZvciBzdXNwaWNpb3VzIHVzYWdlIG9mICJpZiIgbGlrZQorICAgICMg
fSBpZiAoYSA9PSBiKSB7CisgICAgaWYgc2VhcmNoKHInXH1ccyppZlxzKlwoJywgbGluZSk6Cisg
ICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvYnJhY2VzJywgNCwKKyAgICAg
ICAgICAgICAgJ0RpZCB5b3UgbWVhbiAiZWxzZSBpZiI/IElmIG5vdCwgc3RhcnQgYSBuZXcgbGlu
ZSBmb3IgImlmIi4nKQorCisgICAgIyBDaGVjayBmb3IgcG90ZW50aWFsIGZvcm1hdCBzdHJpbmcg
YnVncyBsaWtlIHByaW50Zihmb28pLgorICAgICMgV2UgY29uc3RyYWluIHRoZSBwYXR0ZXJuIG5v
dCB0byBwaWNrIHRoaW5ncyBsaWtlIERvY2lkRm9yUHJpbnRmKGZvbykuCisgICAgIyBOb3QgcGVy
ZmVjdCBidXQgaXQgY2FuIGNhdGNoIHByaW50Zihmb28uY19zdHIoKSkgYW5kIHByaW50Zihmb28t
PmNfc3RyKCkpCisgICAgbWF0Y2hlZCA9IHJlLnNlYXJjaChyJ1xiKCg/OnN0cmluZyk/cHJpbnRm
KVxzKlwoKFtcdy5cLT4oKV0rKVwpJywgbGluZSwgcmUuSSkKKyAgICBpZiBtYXRjaGVkOgorICAg
ICAgICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvcHJpbnRmJywgNCwKKyAgICAgICAgICAg
ICAgJ1BvdGVudGlhbCBmb3JtYXQgc3RyaW5nIGJ1Zy4gRG8gJXMoIiUlcyIsICVzKSBpbnN0ZWFk
LicKKyAgICAgICAgICAgICAgJSAobWF0Y2hlZC5ncm91cCgxKSwgbWF0Y2hlZC5ncm91cCgyKSkp
CisKKyAgICAjIENoZWNrIGZvciBwb3RlbnRpYWwgbWVtc2V0IGJ1Z3MgbGlrZSBtZW1zZXQoYnVm
LCBzaXplb2YoYnVmKSwgMCkuCisgICAgbWF0Y2hlZCA9IHNlYXJjaChyJ21lbXNldFxzKlwoKFte
LF0qKSxccyooW14sXSopLFxzKjBccypcKScsIGxpbmUpCisgICAgaWYgbWF0Y2hlZCBhbmQgbm90
IG1hdGNoKHIiXicnfC0/WzAtOV0rfDB4WzAtOUEtRmEtZl0kIiwgbWF0Y2hlZC5ncm91cCgyKSk6
CisgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS9tZW1zZXQnLCA0LAorICAgICAg
ICAgICAgICAnRGlkIHlvdSBtZWFuICJtZW1zZXQoJXMsIDAsICVzKSI/JworICAgICAgICAgICAg
ICAlIChtYXRjaGVkLmdyb3VwKDEpLCBtYXRjaGVkLmdyb3VwKDIpKSkKKworICAgICMgRGV0ZWN0
IHZhcmlhYmxlLWxlbmd0aCBhcnJheXMuCisgICAgbWF0Y2hlZCA9IG1hdGNoKHInXHMqKC4rOjop
PyhcdyspIFthLXpdXHcqXFsoLispXTsnLCBsaW5lKQorICAgIGlmIChtYXRjaGVkIGFuZCBtYXRj
aGVkLmdyb3VwKDIpICE9ICdyZXR1cm4nIGFuZCBtYXRjaGVkLmdyb3VwKDIpICE9ICdkZWxldGUn
IGFuZAorICAgICAgICBtYXRjaGVkLmdyb3VwKDMpLmZpbmQoJ10nKSA9PSAtMSk6CisgICAgICAg
ICMgU3BsaXQgdGhlIHNpemUgdXNpbmcgc3BhY2UgYW5kIGFyaXRobWV0aWMgb3BlcmF0b3JzIGFz
IGRlbGltaXRlcnMuCisgICAgICAgICMgSWYgYW55IG9mIHRoZSByZXN1bHRpbmcgdG9rZW5zIGFy
ZSBub3QgY29tcGlsZSB0aW1lIGNvbnN0YW50cyB0aGVuCisgICAgICAgICMgcmVwb3J0IHRoZSBl
cnJvci4KKyAgICAgICAgdG9rZW5zID0gcmUuc3BsaXQocidcc3xcK3xcLXxcKnxcL3w8PHw+Pl0n
LCBtYXRjaGVkLmdyb3VwKDMpKQorICAgICAgICBpc19jb25zdCA9IFRydWUKKyAgICAgICAgc2tp
cF9uZXh0ID0gRmFsc2UKKyAgICAgICAgZm9yIHRvayBpbiB0b2tlbnM6CisgICAgICAgICAgICBp
ZiBza2lwX25leHQ6CisgICAgICAgICAgICAgICAgc2tpcF9uZXh0ID0gRmFsc2UKKyAgICAgICAg
ICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBpZiBzZWFyY2gocidzaXplb2ZcKC4rXCkn
LCB0b2spOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBzZWFyY2go
cidhcnJheXNpemVcKFx3K1wpJywgdG9rKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisg
ICAgICAgICAgICB0b2sgPSB0b2subHN0cmlwKCcoJykKKyAgICAgICAgICAgIHRvayA9IHRvay5y
c3RyaXAoJyknKQorICAgICAgICAgICAgaWYgbm90IHRvazoKKyAgICAgICAgICAgICAgICBjb250
aW51ZQorICAgICAgICAgICAgaWYgbWF0Y2gocidcZCsnLCB0b2spOgorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgICAgICBpZiBtYXRjaChyJzBbeFhdWzAtOWEtZkEtRl0rJywgdG9r
KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgbWF0Y2gocidrW0Et
WjAtOV1cdyonLCB0b2spOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBp
ZiBtYXRjaChyJyguKzo6KT9rW0EtWjAtOV1cdyonLCB0b2spOgorICAgICAgICAgICAgICAgIGNv
bnRpbnVlCisgICAgICAgICAgICBpZiBtYXRjaChyJyguKzo6KT9bQS1aXVtBLVowLTlfXSonLCB0
b2spOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIEEgY2F0Y2ggYWxs
IGZvciB0cmlja3kgc2l6ZW9mIGNhc2VzLCBpbmNsdWRpbmcgJ3NpemVvZiBleHByZXNzaW9uJywK
KyAgICAgICAgICAgICMgJ3NpemVvZigqdHlwZSknLCAnc2l6ZW9mKGNvbnN0IHR5cGUpJywgJ3Np
emVvZihzdHJ1Y3QgU3RydWN0TmFtZSknCisgICAgICAgICAgICAjIHJlcXVpcmVzIHNraXBwaW5n
IHRoZSBuZXh0IHRva2VuIGJlY2FzdWUgd2Ugc3BsaXQgb24gJyAnIGFuZCAnKicuCisgICAgICAg
ICAgICBpZiB0b2suc3RhcnRzd2l0aCgnc2l6ZW9mJyk6CisgICAgICAgICAgICAgICAgc2tpcF9u
ZXh0ID0gVHJ1ZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpc19jb25z
dCA9IEZhbHNlCisgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBub3QgaXNfY29uc3Q6Cisg
ICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvYXJyYXlzJywgMSwKKyAgICAg
ICAgICAgICAgICAgICdEbyBub3QgdXNlIHZhcmlhYmxlLWxlbmd0aCBhcnJheXMuICBVc2UgYW4g
YXBwcm9wcmlhdGVseSBuYW1lZCAnCisgICAgICAgICAgICAgICAgICAiKCdrJyBmb2xsb3dlZCBi
eSBDYW1lbENhc2UpIGNvbXBpbGUtdGltZSBjb25zdGFudCBmb3IgdGhlIHNpemUuIikKKworICAg
ICMgQ2hlY2sgZm9yIHVzZSBvZiB1bm5hbWVkIG5hbWVzcGFjZXMgaW4gaGVhZGVyIGZpbGVzLiAg
UmVnaXN0cmF0aW9uCisgICAgIyBtYWNyb3MgYXJlIHR5cGljYWxseSBPSywgc28gd2UgYWxsb3cg
dXNlIG9mICJuYW1lc3BhY2UgeyIgb24gbGluZXMKKyAgICAjIHRoYXQgZW5kIHdpdGggYmFja3Ns
YXNoZXMuCisgICAgaWYgKGZpbGVfZXh0ZW5zaW9uID09ICdoJworICAgICAgICBhbmQgc2VhcmNo
KHInXGJuYW1lc3BhY2Vccyp7JywgbGluZSkKKyAgICAgICAgYW5kIGxpbmVbLTFdICE9ICdcXCcp
OgorICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL25hbWVzcGFjZXMnLCA0LAorICAg
ICAgICAgICAgICAnRG8gbm90IHVzZSB1bm5hbWVkIG5hbWVzcGFjZXMgaW4gaGVhZGVyIGZpbGVz
LiAgU2VlICcKKyAgICAgICAgICAgICAgJ2h0dHA6Ly9nb29nbGUtc3R5bGVndWlkZS5nb29nbGVj
b2RlLmNvbS9zdm4vdHJ1bmsvY3BwZ3VpZGUueG1sI05hbWVzcGFjZXMnCisgICAgICAgICAgICAg
ICcgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykKKworICAgIGNoZWNrX2lkZW50aWZpZXJfbmFtZV9p
bl9kZWNsYXJhdGlvbihmaWxlbmFtZSwgbGluZV9udW1iZXIsIGxpbmUsIGVycm9yKQorCisKK2Rl
ZiBjaGVja19pZGVudGlmaWVyX25hbWVfaW5fZGVjbGFyYXRpb24oZmlsZW5hbWUsIGxpbmVfbnVt
YmVyLCBsaW5lLCBlcnJvcik6CisgICAgIiIiQ2hlY2tzIGlmIGlkZW50aWZpZXIgbmFtZXMgY29u
dGFpbiBhbnkgdW5kZXJzY29yZXMuCisKKyAgICBBcyBpZGVudGlmaWVycyBpbiBsaWJyYXJpZXMg
d2UgYXJlIHVzaW5nIGhhdmUgYSBidW5jaCBvZgorICAgIHVuZGVyc2NvcmVzLCB3ZSBvbmx5IHdh
cm4gYWJvdXQgdGhlIGRlY2xhcmF0aW9ucyBvZiBpZGVudGlmaWVycworICAgIGFuZCBkb24ndCBj
aGVjayB1c2Ugb2YgaWRlbnRpZmllcnMuCisKKyAgICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRo
ZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCisgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJl
ciBvZiB0aGUgbGluZSB0byBjaGVjay4KKyAgICAgIGxpbmU6IFRoZSBsaW5lIG9mIGNvZGUgdG8g
Y2hlY2suCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3Jz
IGZvdW5kLgorICAgICIiIgorICAgICMgV2UgZG9uJ3QgY2hlY2sgYSByZXR1cm4gc3RhdGVtZW50
LgorICAgIGlmIG1hdGNoKHInXHMqKHJldHVybnxkZWxldGUpXGInLCBsaW5lKToKKyAgICAgICAg
cmV0dXJuCisKKyAgICAjIEJhc2ljYWxseSwgYSBkZWNsYXJhdGlvbiBpcyBhIHR5cGUgbmFtZSBm
b2xsb3dlZCBieSB3aGl0ZXNwYWNlcworICAgICMgZm9sbG93ZWQgYnkgYW4gaWRlbnRpZmllci4g
VGhlIHR5cGUgbmFtZSBjYW4gYmUgY29tcGxpY2F0ZWQKKyAgICAjIGR1ZSB0byB0eXBlIGFkamVj
dGl2ZXMgYW5kIHRlbXBsYXRlcy4gV2UgcmVtb3ZlIHRoZW0gZmlyc3QgdG8KKyAgICAjIHNpbXBs
aWZ5IHRoZSBwcm9jZXNzIHRvIGZpbmQgZGVjbGFyYXRpb25zIG9mIGlkZW50aWZpZXJzLgorCisg
ICAgIyBDb252ZXJ0ICJsb25nIGxvbmciLCAibG9uZyBkb3VibGUiLCBhbmQgImxvbmcgbG9uZyBp
bnQiIHRvCisgICAgIyBzaW1wbGUgdHlwZXMsIGJ1dCBkb24ndCByZW1vdmUgc2ltcGxlICJsb25n
Ii4KKyAgICBsaW5lID0gc3ViKHInbG9uZyAobG9uZyApPyg/PWxvbmd8ZG91YmxlfGludCknLCAn
JywgbGluZSkKKyAgICBsaW5lID0gc3ViKHInXGIodW5zaWduZWR8c2lnbmVkfGlubGluZXx1c2lu
Z3xzdGF0aWN8Y29uc3R8dm9sYXRpbGV8YXV0b3xyZWdpc3RlcnxleHRlcm58dHlwZWRlZnxyZXN0
cmljdHxzdHJ1Y3R8Y2xhc3N8dmlydHVhbCkoPz1cVyknLCAnJywgbGluZSkKKworICAgICMgUmVt
b3ZlIGFsbCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGJ5IHJlbW92aW5nIG1hdGNoaW5nIDwgYW5kID4u
CisgICAgIyBMb29wIHVudGlsIG5vIHRlbXBsYXRlcyBhcmUgcmVtb3ZlZCB0byByZW1vdmUgbmVz
dGVkIHRlbXBsYXRlcy4KKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBsaW5lLCBudW1iZXJfb2Zf
cmVwbGFjZW1lbnRzID0gc3VibihyJzwoW1x3XHM6XXw6OikrXHMqWyomXSpccyo+JywgJycsIGxp
bmUpCisgICAgICAgIGlmIG5vdCBudW1iZXJfb2ZfcmVwbGFjZW1lbnRzOgorICAgICAgICAgICAg
YnJlYWsKKworICAgICMgRGVjbGFyYXRpb25zIG9mIGxvY2FsIHZhcmlhYmxlcyBjYW4gYmUgaW4g
Y29uZGl0aW9uIGV4cHJlc3Npb25zCisgICAgIyBvZiBjb250cm9sIGZsb3cgc3RhdGVtZW50cyAo
ZS5nLiwgImlmIChSZW5kZXJPYmplY3QqIHAgPSBvLT5wYXJlbnQoKSkiKS4KKyAgICAjIFdlIHJl
bW92ZSB0aGUga2V5d29yZHMgYW5kIHRoZSBmaXJzdCBwYXJlbnRoZXNpcy4KKyAgICAjCisgICAg
IyBEZWNsYXJhdGlvbnMgaW4gIndoaWxlIiwgImlmIiwgYW5kICJzd2l0Y2giIGFyZSBkaWZmZXJl
bnQgZnJvbQorICAgICMgb3RoZXIgZGVjbGFyYXRpb25zIGluIHR3byBhc3BlY3RzOgorICAgICMK
KyAgICAjIC0gVGhlcmUgY2FuIGJlIG9ubHkgb25lIGRlY2xhcmF0aW9uIGJldHdlZW4gdGhlIHBh
cmVudGhlc2VzLgorICAgICMgICAoaS5lLiwgeW91IGNhbm5vdCB3cml0ZSAiaWYgKGludCBpID0g
MCwgaiA9IDEpIHt9IikKKyAgICAjIC0gVGhlIHZhcmlhYmxlIG11c3QgYmUgaW5pdGlhbGl6ZWQu
CisgICAgIyAgIChpLmUuLCB5b3UgY2Fubm90IHdyaXRlICJpZiAoaW50IGkpIHt9IikKKyAgICAj
CisgICAgIyBhbmQgd2Ugd2lsbCBuZWVkIGRpZmZlcmVudCB0cmVhdG1lbnRzIGZvciB0aGVtLgor
ICAgIGxpbmUgPSBzdWIocideXHMqZm9yXHMqXCgnLCAnJywgbGluZSkKKyAgICBsaW5lLCBjb250
cm9sX3N0YXRlbWVudCA9IHN1Ym4ocideXHMqKHdoaWxlfGVsc2UgaWZ8aWZ8c3dpdGNoKVxzKlwo
JywgJycsIGxpbmUpCisKKyAgICAjIERldGVjdCB2YXJpYWJsZSBhbmQgZnVuY3Rpb25zLgorICAg
IHR5cGVfcmVnZXhwID0gcidcdyhbXHddfFxzKlsqJl1ccyp8OjopKycKKyAgICBpZGVudGlmaWVy
X3JlZ2V4cCA9IHInKD9QPGlkZW50aWZpZXI+W1x3Ol0rKScKKyAgICBjaGFyYWN0ZXJfYWZ0ZXJf
aWRlbnRpZmllcl9yZWdleHAgPSByJyg/UDxjaGFyYWN0ZXJfYWZ0ZXJfaWRlbnRpZmllcj5bWzso
KT0sXSkoPyE9KScKKyAgICBkZWNsYXJhdGlvbl93aXRob3V0X3R5cGVfcmVnZXhwID0gcidccyon
ICsgaWRlbnRpZmllcl9yZWdleHAgKyByJ1xzKicgKyBjaGFyYWN0ZXJfYWZ0ZXJfaWRlbnRpZmll
cl9yZWdleHAKKyAgICBkZWNsYXJhdGlvbl93aXRoX3R5cGVfcmVnZXhwID0gcidccyonICsgdHlw
ZV9yZWdleHAgKyByJ1xzJyArIGRlY2xhcmF0aW9uX3dpdGhvdXRfdHlwZV9yZWdleHAKKyAgICBp
c19mdW5jdGlvbl9hcmd1bWVudHMgPSBGYWxzZQorICAgIG51bWJlcl9vZl9pZGVudGlmaWVycyA9
IDAKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICAjIElmIHdlIGFyZSBzZWVpbmcgdGhlIGZpcnN0
IGlkZW50aWZpZXIgb3IgYXJndW1lbnRzIG9mIGEKKyAgICAgICAgIyBmdW5jdGlvbiwgdGhlcmUg
c2hvdWxkIGJlIGEgdHlwZSBuYW1lIGJlZm9yZSBhbiBpZGVudGlmaWVyLgorICAgICAgICBpZiBu
b3QgbnVtYmVyX29mX2lkZW50aWZpZXJzIG9yIGlzX2Z1bmN0aW9uX2FyZ3VtZW50czoKKyAgICAg
ICAgICAgIGRlY2xhcmF0aW9uX3JlZ2V4cCA9IGRlY2xhcmF0aW9uX3dpdGhfdHlwZV9yZWdleHAK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRlY2xhcmF0aW9uX3JlZ2V4cCA9IGRlY2xhcmF0
aW9uX3dpdGhvdXRfdHlwZV9yZWdleHAKKworICAgICAgICBtYXRjaGVkID0gbWF0Y2goZGVjbGFy
YXRpb25fcmVnZXhwLCBsaW5lKQorICAgICAgICBpZiBub3QgbWF0Y2hlZDoKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICBpZGVudGlmaWVyID0gbWF0Y2hlZC5ncm91cCgnaWRlbnRpZmllcicp
CisgICAgICAgIGNoYXJhY3Rlcl9hZnRlcl9pZGVudGlmaWVyID0gbWF0Y2hlZC5ncm91cCgnY2hh
cmFjdGVyX2FmdGVyX2lkZW50aWZpZXInKQorCisgICAgICAgICMgSWYgd2UgcmVtb3ZlZCBhIG5v
bi1mb3ItY29udHJvbCBzdGF0ZW1lbnQsIHRoZSBjaGFyYWN0ZXIgYWZ0ZXIKKyAgICAgICAgIyB0
aGUgaWRlbnRpZmllciBzaG91bGQgYmUgJz0nLiBXaXRoIHRoaXMgcnVsZSwgd2UgY2FuIGF2b2lk
CisgICAgICAgICMgd2FybmluZyBmb3IgY2FzZXMgbGlrZSAiaWYgKHZhbCAmIElOVF9NQVgpIHsi
LgorICAgICAgICBpZiBjb250cm9sX3N0YXRlbWVudCBhbmQgY2hhcmFjdGVyX2FmdGVyX2lkZW50
aWZpZXIgIT0gJz0nOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaXNfZnVuY3Rpb25f
YXJndW1lbnRzID0gaXNfZnVuY3Rpb25fYXJndW1lbnRzIG9yIGNoYXJhY3Rlcl9hZnRlcl9pZGVu
dGlmaWVyID09ICcoJworCisgICAgICAgICMgUmVtb3ZlICJtXyIgYW5kICJzXyIgdG8gYWxsb3cg
dGhlbS4KKyAgICAgICAgbW9kaWZpZWRfaWRlbnRpZmllciA9IHN1YihyJyhefCg/PD06OikpW21z
XV8nLCAnJywgaWRlbnRpZmllcikKKyAgICAgICAgaWYgbW9kaWZpZWRfaWRlbnRpZmllci5maW5k
KCdfJykgPj0gMDoKKyAgICAgICAgICAgICMgVmFyaW91cyBleGNlcHRpb25zIHRvIHRoZSBydWxl
OiBKYXZhU2NyaXB0IG9wIGNvZGVzIGZ1bmN0aW9ucywgY29uc3RfaXRlcmF0b3IuCisgICAgICAg
ICAgICBpZiAobm90IChmaWxlbmFtZS5maW5kKCdKYXZhU2NyaXB0Q29yZScpID49IDAgYW5kIG1v
ZGlmaWVkX2lkZW50aWZpZXIuZmluZCgnX29wXycpID49IDApCisgICAgICAgICAgICAgICAgYW5k
IG5vdCBmaWxlbmFtZS5maW5kKCdXZWJLaXQvZ3RrL3dlYmtpdC8nKSA+PSAwCisgICAgICAgICAg
ICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ3RzdF8nKQorICAg
ICAgICAgICAgICAgIGFuZCBub3QgbW9kaWZpZWRfaWRlbnRpZmllci5zdGFydHN3aXRoKCd3ZWJr
aXRfZG9tX29iamVjdF8nKQorICAgICAgICAgICAgICAgIGFuZCBub3QgbW9kaWZpZWRfaWRlbnRp
Zmllci5zdGFydHN3aXRoKCdxdF8nKQorICAgICAgICAgICAgICAgIGFuZCBub3QgbW9kaWZpZWRf
aWRlbnRpZmllci5maW5kKCc6OnF0XycpID49IDAKKyAgICAgICAgICAgICAgICBhbmQgbm90IG1v
ZGlmaWVkX2lkZW50aWZpZXIgPT0gImNvbnN0X2l0ZXJhdG9yIik6CisgICAgICAgICAgICAgICAg
ZXJyb3IobGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9uYW1pbmcnLCA0LCBpZGVudGlmaWVyICsg
IiBpcyBpbmNvcnJlY3RseSBuYW1lZC4gRG9uJ3QgdXNlIHVuZGVyc2NvcmVzIGluIHlvdXIgaWRl
bnRpZmllciBuYW1lcy4iKQorCisgICAgICAgICMgVGhlcmUgY2FuIGJlIG9ubHkgb25lIGRlY2xh
cmF0aW9uIGluIG5vbi1mb3ItY29udHJvbCBzdGF0ZW1lbnRzLgorICAgICAgICBpZiBjb250cm9s
X3N0YXRlbWVudDoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICAjIFdlIHNob3VsZCBjb250
aW51ZSBjaGVja2luZyBpZiB0aGlzIGlzIGEgZnVuY3Rpb24KKyAgICAgICAgIyBkZWNsYXJhdGlv
biBiZWNhdXNlIHdlIG5lZWQgdG8gY2hlY2sgaXRzIGFyZ3VtZW50cy4KKyAgICAgICAgIyBBbHNv
LCB3ZSBuZWVkIHRvIGNoZWNrIG11bHRpcGxlIGRlY2xhcmF0aW9ucy4KKyAgICAgICAgaWYgY2hh
cmFjdGVyX2FmdGVyX2lkZW50aWZpZXIgIT0gJygnIGFuZCBjaGFyYWN0ZXJfYWZ0ZXJfaWRlbnRp
ZmllciAhPSAnLCc6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBudW1iZXJfb2ZfaWRl
bnRpZmllcnMgKz0gMQorICAgICAgICBsaW5lID0gbGluZVttYXRjaGVkLmVuZCgpOl0KKworCitk
ZWYgY2hlY2tfY19zdHlsZV9jYXN0KGZpbGVuYW1lLCBsaW5lX251bWJlciwgbGluZSwgcmF3X2xp
bmUsIGNhc3RfdHlwZSwgcGF0dGVybiwKKyAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IpOgor
ICAgICIiIkNoZWNrcyBmb3IgYSBDLXN0eWxlIGNhc3QgYnkgbG9va2luZyBmb3IgdGhlIHBhdHRl
cm4uCisKKyAgICBUaGlzIGFsc28gaGFuZGxlcyBzaXplb2YodHlwZSkgd2FybmluZ3MsIGR1ZSB0
byBzaW1pbGFyaXR5IG9mIGNvbnRlbnQuCisKKyAgICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRo
ZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCisgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJl
ciBvZiB0aGUgbGluZSB0byBjaGVjay4KKyAgICAgIGxpbmU6IFRoZSBsaW5lIG9mIGNvZGUgdG8g
Y2hlY2suCisgICAgICByYXdfbGluZTogVGhlIHJhdyBsaW5lIG9mIGNvZGUgdG8gY2hlY2ssIHdp
dGggY29tbWVudHMuCisgICAgICBjYXN0X3R5cGU6IFRoZSBzdHJpbmcgZm9yIHRoZSBDKysgY2Fz
dCB0byByZWNvbW1lbmQuICBUaGlzIGlzIGVpdGhlcgorICAgICAgICAgICAgICAgICByZWludGVy
cHJldF9jYXN0IG9yIHN0YXRpY19jYXN0LCBkZXBlbmRpbmcuCisgICAgICBwYXR0ZXJuOiBUaGUg
cmVndWxhciBleHByZXNzaW9uIHVzZWQgdG8gZmluZCBDLXN0eWxlIGNhc3RzLgorICAgICAgZXJy
b3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KKyAgICAiIiIK
KyAgICBtYXRjaGVkID0gc2VhcmNoKHBhdHRlcm4sIGxpbmUpCisgICAgaWYgbm90IG1hdGNoZWQ6
CisgICAgICAgIHJldHVybgorCisgICAgIyBlLmcuLCBzaXplb2YoaW50KQorICAgIHNpemVvZl9t
YXRjaCA9IG1hdGNoKHInLipzaXplb2ZccyokJywgbGluZVswOm1hdGNoZWQuc3RhcnQoMSkgLSAx
XSkKKyAgICBpZiBzaXplb2ZfbWF0Y2g6CisgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVu
dGltZS9zaXplb2YnLCAxLAorICAgICAgICAgICAgICAnVXNpbmcgc2l6ZW9mKHR5cGUpLiAgVXNl
IHNpemVvZih2YXJuYW1lKSBpbnN0ZWFkIGlmIHBvc3NpYmxlJykKKyAgICAgICAgcmV0dXJuCisK
KyAgICByZW1haW5kZXIgPSBsaW5lW21hdGNoZWQuZW5kKDApOl0KKworICAgICMgVGhlIGNsb3Nl
IHBhcmVuIGlzIGZvciBmdW5jdGlvbiBwb2ludGVycyBhcyBhcmd1bWVudHMgdG8gYSBmdW5jdGlv
bi4KKyAgICAjIGVnLCB2b2lkIGZvbyh2b2lkICgqYmFyKShpbnQpKTsKKyAgICAjIFRoZSBzZW1p
Y29sb24gY2hlY2sgaXMgYSBtb3JlIGJhc2ljIGZ1bmN0aW9uIGNoZWNrOyBhbHNvIHBvc3NpYmx5
IGEKKyAgICAjIGZ1bmN0aW9uIHBvaW50ZXIgdHlwZWRlZi4KKyAgICAjIGVnLCB2b2lkIGZvbyhp
bnQpOyBvciB2b2lkIGZvbyhpbnQpIGNvbnN0OworICAgICMgVGhlIGVxdWFscyBjaGVjayBpcyBm
b3IgZnVuY3Rpb24gcG9pbnRlciBhc3NpZ25tZW50LgorICAgICMgZWcsIHZvaWQgKigqZm9vKShp
bnQpID0gLi4uCisgICAgIworICAgICMgUmlnaHQgbm93LCB0aGlzIHdpbGwgb25seSBjYXRjaCBj
YXNlcyB3aGVyZSB0aGVyZSdzIGEgc2luZ2xlIGFyZ3VtZW50LCBhbmQKKyAgICAjIGl0J3MgdW5u
YW1lZC4gIEl0IHNob3VsZCBwcm9iYWJseSBiZSBleHBhbmRlZCB0byBjaGVjayBmb3IgbXVsdGlw
bGUKKyAgICAjIGFyZ3VtZW50cyB3aXRoIHNvbWUgdW5uYW1lZC4KKyAgICBmdW5jdGlvbl9tYXRj
aCA9IG1hdGNoKHInXHMqKFwpfD18KGNvbnN0KT9ccyooO3xce3x0aHJvd1woXCkpKScsIHJlbWFp
bmRlcikKKyAgICBpZiBmdW5jdGlvbl9tYXRjaDoKKyAgICAgICAgaWYgKG5vdCBmdW5jdGlvbl9t
YXRjaC5ncm91cCgzKQorICAgICAgICAgICAgb3IgZnVuY3Rpb25fbWF0Y2guZ3JvdXAoMykgPT0g
JzsnCisgICAgICAgICAgICBvciByYXdfbGluZS5maW5kKCcvKicpIDwgMCk6CisgICAgICAgICAg
ICBlcnJvcihsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L2Z1bmN0aW9uJywgMywKKyAgICAgICAg
ICAgICAgICAgICdBbGwgcGFyYW1ldGVycyBzaG91bGQgYmUgbmFtZWQgaW4gYSBmdW5jdGlvbicp
CisgICAgICAgIHJldHVybgorCisgICAgIyBBdCB0aGlzIHBvaW50LCBhbGwgdGhhdCBzaG91bGQg
YmUgbGVmdCBpcyBhY3R1YWwgY2FzdHMuCisgICAgZXJyb3IobGluZV9udW1iZXIsICdyZWFkYWJp
bGl0eS9jYXN0aW5nJywgNCwKKyAgICAgICAgICAnVXNpbmcgQy1zdHlsZSBjYXN0LiAgVXNlICVz
PCVzPiguLi4pIGluc3RlYWQnICUKKyAgICAgICAgICAoY2FzdF90eXBlLCBtYXRjaGVkLmdyb3Vw
KDEpKSkKKworCitfSEVBREVSU19DT05UQUlOSU5HX1RFTVBMQVRFUyA9ICgKKyAgICAoJzxkZXF1
ZT4nLCAoJ2RlcXVlJywpKSwKKyAgICAoJzxmdW5jdGlvbmFsPicsICgndW5hcnlfZnVuY3Rpb24n
LCAnYmluYXJ5X2Z1bmN0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAncGx1cycsICdtaW51
cycsICdtdWx0aXBsaWVzJywgJ2RpdmlkZXMnLCAnbW9kdWx1cycsCisgICAgICAgICAgICAgICAg
ICAgICAgJ25lZ2F0ZScsCisgICAgICAgICAgICAgICAgICAgICAgJ2VxdWFsX3RvJywgJ25vdF9l
cXVhbF90bycsICdncmVhdGVyJywgJ2xlc3MnLAorICAgICAgICAgICAgICAgICAgICAgICdncmVh
dGVyX2VxdWFsJywgJ2xlc3NfZXF1YWwnLAorICAgICAgICAgICAgICAgICAgICAgICdsb2dpY2Fs
X2FuZCcsICdsb2dpY2FsX29yJywgJ2xvZ2ljYWxfbm90JywKKyAgICAgICAgICAgICAgICAgICAg
ICAndW5hcnlfbmVnYXRlJywgJ25vdDEnLCAnYmluYXJ5X25lZ2F0ZScsICdub3QyJywKKyAgICAg
ICAgICAgICAgICAgICAgICAnYmluZDFzdCcsICdiaW5kMm5kJywKKyAgICAgICAgICAgICAgICAg
ICAgICAncG9pbnRlcl90b191bmFyeV9mdW5jdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAg
J3BvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAncHRy
X2Z1bicsCisgICAgICAgICAgICAgICAgICAgICAgJ21lbV9mdW5fdCcsICdtZW1fZnVuJywgJ21l
bV9mdW4xX3QnLCAnbWVtX2Z1bjFfcmVmX3QnLAorICAgICAgICAgICAgICAgICAgICAgICdtZW1f
ZnVuX3JlZl90JywKKyAgICAgICAgICAgICAgICAgICAgICAnY29uc3RfbWVtX2Z1bl90JywgJ2Nv
bnN0X21lbV9mdW4xX3QnLAorICAgICAgICAgICAgICAgICAgICAgICdjb25zdF9tZW1fZnVuX3Jl
Zl90JywgJ2NvbnN0X21lbV9mdW4xX3JlZl90JywKKyAgICAgICAgICAgICAgICAgICAgICAnbWVt
X2Z1bl9yZWYnLAorICAgICAgICAgICAgICAgICAgICAgKSksCisgICAgKCc8bGltaXRzPicsICgn
bnVtZXJpY19saW1pdHMnLCkpLAorICAgICgnPGxpc3Q+JywgKCdsaXN0JywpKSwKKyAgICAoJzxt
YXA+JywgKCdtYXAnLCAnbXVsdGltYXAnLCkpLAorICAgICgnPG1lbW9yeT4nLCAoJ2FsbG9jYXRv
cicsKSksCisgICAgKCc8cXVldWU+JywgKCdxdWV1ZScsICdwcmlvcml0eV9xdWV1ZScsKSksCisg
ICAgKCc8c2V0PicsICgnc2V0JywgJ211bHRpc2V0JywpKSwKKyAgICAoJzxzdGFjaz4nLCAoJ3N0
YWNrJywpKSwKKyAgICAoJzxzdHJpbmc+JywgKCdjaGFyX3RyYWl0cycsICdiYXNpY19zdHJpbmcn
LCkpLAorICAgICgnPHV0aWxpdHk+JywgKCdwYWlyJywpKSwKKyAgICAoJzx2ZWN0b3I+JywgKCd2
ZWN0b3InLCkpLAorCisgICAgIyBnY2MgZXh0ZW5zaW9ucy4KKyAgICAjIE5vdGU6IHN0ZDo6aGFz
aCBpcyB0aGVpciBoYXNoLCA6Omhhc2ggaXMgb3VyIGhhc2gKKyAgICAoJzxoYXNoX21hcD4nLCAo
J2hhc2hfbWFwJywgJ2hhc2hfbXVsdGltYXAnLCkpLAorICAgICgnPGhhc2hfc2V0PicsICgnaGFz
aF9zZXQnLCAnaGFzaF9tdWx0aXNldCcsKSksCisgICAgKCc8c2xpc3Q+JywgKCdzbGlzdCcsKSks
CisgICAgKQorCitfSEVBREVSU19BQ0NFUFRFRF9CVVRfTk9UX1BST01PVEVEID0geworICAgICMg
V2UgY2FuIHRydXN0IHdpdGggcmVhc29uYWJsZSBjb25maWRlbmNlIHRoYXQgbWFwIGdpdmVzIHVz
IHBhaXI8PiwgdG9vLgorICAgICdwYWlyPD4nOiAoJ21hcCcsICdtdWx0aW1hcCcsICdoYXNoX21h
cCcsICdoYXNoX211bHRpbWFwJykKK30KKworX1JFX1BBVFRFUk5fU1RSSU5HID0gcmUuY29tcGls
ZShyJ1xic3RyaW5nXGInKQorCitfcmVfcGF0dGVybl9hbGdvcml0aG1faGVhZGVyID0gW10KK2Zv
ciBfdGVtcGxhdGUgaW4gKCdjb3B5JywgJ21heCcsICdtaW4nLCAnbWluX2VsZW1lbnQnLCAnc29y
dCcsICdzd2FwJywKKyAgICAgICAgICAgICAgICAgICd0cmFuc2Zvcm0nKToKKyAgICAjIE1hdGNo
IG1heDx0eXBlPiguLi4sIC4uLiksIG1heCguLi4sIC4uLiksIGJ1dCBub3QgZm9vLT5tYXgsIGZv
by5tYXggb3IKKyAgICAjIHR5cGU6Om1heCgpLgorICAgIF9yZV9wYXR0ZXJuX2FsZ29yaXRobV9o
ZWFkZXIuYXBwZW5kKAorICAgICAgICAocmUuY29tcGlsZShyJ1tePi5dXGInICsgX3RlbXBsYXRl
ICsgcicoPC4qPz4pP1woW15cKV0nKSwKKyAgICAgICAgIF90ZW1wbGF0ZSwKKyAgICAgICAgICc8
YWxnb3JpdGhtPicpKQorCitfcmVfcGF0dGVybl90ZW1wbGF0ZXMgPSBbXQorZm9yIF9oZWFkZXIs
IF90ZW1wbGF0ZXMgaW4gX0hFQURFUlNfQ09OVEFJTklOR19URU1QTEFURVM6CisgICAgZm9yIF90
ZW1wbGF0ZSBpbiBfdGVtcGxhdGVzOgorICAgICAgICBfcmVfcGF0dGVybl90ZW1wbGF0ZXMuYXBw
ZW5kKAorICAgICAgICAgICAgKHJlLmNvbXBpbGUocicoXDx8XGIpJyArIF90ZW1wbGF0ZSArIHIn
XHMqXDwnKSwKKyAgICAgICAgICAgICBfdGVtcGxhdGUgKyAnPD4nLAorICAgICAgICAgICAgIF9o
ZWFkZXIpKQorCisKK2RlZiBmaWxlc19iZWxvbmdfdG9fc2FtZV9tb2R1bGUoZmlsZW5hbWVfY3Bw
LCBmaWxlbmFtZV9oKToKKyAgICAiIiJDaGVjayBpZiB0aGVzZSB0d28gZmlsZW5hbWVzIGJlbG9u
ZyB0byB0aGUgc2FtZSBtb2R1bGUuCisKKyAgICBUaGUgY29uY2VwdCBvZiBhICdtb2R1bGUnIGhl
cmUgaXMgYSBhcyBmb2xsb3dzOgorICAgIGZvby5oLCBmb28taW5sLmgsIGZvby5jcHAsIGZvb190
ZXN0LmNwcCBhbmQgZm9vX3VuaXR0ZXN0LmNwcCBiZWxvbmcgdG8gdGhlCisgICAgc2FtZSAnbW9k
dWxlJyBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgICAgc29tZS9wYXRoL3B1
YmxpYy94eXp6eSBhbmQgc29tZS9wYXRoL2ludGVybmFsL3h5enp5IGFyZSBhbHNvIGNvbnNpZGVy
ZWQKKyAgICB0byBiZWxvbmcgdG8gdGhlIHNhbWUgbW9kdWxlIGhlcmUuCisKKyAgICBJZiB0aGUg
ZmlsZW5hbWVfY3BwIGNvbnRhaW5zIGEgbG9uZ2VyIHBhdGggdGhhbiB0aGUgZmlsZW5hbWVfaCwg
Zm9yIGV4YW1wbGUsCisgICAgJy9hYnNvbHV0ZS9wYXRoL3RvL2Jhc2Uvc3lzaW5mby5jcHAnLCBh
bmQgdGhpcyBmaWxlIHdvdWxkIGluY2x1ZGUKKyAgICAnYmFzZS9zeXNpbmZvLmgnLCB0aGlzIGZ1
bmN0aW9uIGFsc28gcHJvZHVjZXMgdGhlIHByZWZpeCBuZWVkZWQgdG8gb3BlbiB0aGUKKyAgICBo
ZWFkZXIuIFRoaXMgaXMgdXNlZCBieSB0aGUgY2FsbGVyIG9mIHRoaXMgZnVuY3Rpb24gdG8gbW9y
ZSByb2J1c3RseSBvcGVuIHRoZQorICAgIGhlYWRlciBmaWxlLiBXZSBkb24ndCBoYXZlIGFjY2Vz
cyB0byB0aGUgcmVhbCBpbmNsdWRlIHBhdGhzIGluIHRoaXMgY29udGV4dCwKKyAgICBzbyB3ZSBu
ZWVkIHRoaXMgZ3Vlc3N3b3JrIGhlcmUuCisKKyAgICBLbm93biBidWdzOiB0b29scy9iYXNlL2Jh
ci5jcHAgYW5kIGJhc2UvYmFyLmggYmVsb25nIHRvIHRoZSBzYW1lIG1vZHVsZQorICAgIGFjY29y
ZGluZyB0byB0aGlzIGltcGxlbWVudGF0aW9uLiBCZWNhdXNlIG9mIHRoaXMsIHRoaXMgZnVuY3Rp
b24gZ2l2ZXMKKyAgICBzb21lIGZhbHNlIHBvc2l0aXZlcy4gVGhpcyBzaG91bGQgYmUgc3VmZmlj
aWVudGx5IHJhcmUgaW4gcHJhY3RpY2UuCisKKyAgICBBcmdzOgorICAgICAgZmlsZW5hbWVfY3Bw
OiBpcyB0aGUgcGF0aCBmb3IgdGhlIC5jcHAgZmlsZQorICAgICAgZmlsZW5hbWVfaDogaXMgdGhl
IHBhdGggZm9yIHRoZSBoZWFkZXIgcGF0aAorCisgICAgUmV0dXJuczoKKyAgICAgIFR1cGxlIHdp
dGggYSBib29sIGFuZCBhIHN0cmluZzoKKyAgICAgIGJvb2w6IFRydWUgaWYgZmlsZW5hbWVfY3Bw
IGFuZCBmaWxlbmFtZV9oIGJlbG9uZyB0byB0aGUgc2FtZSBtb2R1bGUuCisgICAgICBzdHJpbmc6
IHRoZSBhZGRpdGlvbmFsIHByZWZpeCBuZWVkZWQgdG8gb3BlbiB0aGUgaGVhZGVyIGZpbGUuCisg
ICAgIiIiCisKKyAgICBpZiBub3QgZmlsZW5hbWVfY3BwLmVuZHN3aXRoKCcuY3BwJyk6CisgICAg
ICAgIHJldHVybiAoRmFsc2UsICcnKQorICAgIGZpbGVuYW1lX2NwcCA9IGZpbGVuYW1lX2NwcFs6
LWxlbignLmNwcCcpXQorICAgIGlmIGZpbGVuYW1lX2NwcC5lbmRzd2l0aCgnX3VuaXR0ZXN0Jyk6
CisgICAgICAgIGZpbGVuYW1lX2NwcCA9IGZpbGVuYW1lX2NwcFs6LWxlbignX3VuaXR0ZXN0Jyld
CisgICAgZWxpZiBmaWxlbmFtZV9jcHAuZW5kc3dpdGgoJ190ZXN0Jyk6CisgICAgICAgIGZpbGVu
YW1lX2NwcCA9IGZpbGVuYW1lX2NwcFs6LWxlbignX3Rlc3QnKV0KKyAgICBmaWxlbmFtZV9jcHAg
PSBmaWxlbmFtZV9jcHAucmVwbGFjZSgnL3B1YmxpYy8nLCAnLycpCisgICAgZmlsZW5hbWVfY3Bw
ID0gZmlsZW5hbWVfY3BwLnJlcGxhY2UoJy9pbnRlcm5hbC8nLCAnLycpCisKKyAgICBpZiBub3Qg
ZmlsZW5hbWVfaC5lbmRzd2l0aCgnLmgnKToKKyAgICAgICAgcmV0dXJuIChGYWxzZSwgJycpCisg
ICAgZmlsZW5hbWVfaCA9IGZpbGVuYW1lX2hbOi1sZW4oJy5oJyldCisgICAgaWYgZmlsZW5hbWVf
aC5lbmRzd2l0aCgnLWlubCcpOgorICAgICAgICBmaWxlbmFtZV9oID0gZmlsZW5hbWVfaFs6LWxl
bignLWlubCcpXQorICAgIGZpbGVuYW1lX2ggPSBmaWxlbmFtZV9oLnJlcGxhY2UoJy9wdWJsaWMv
JywgJy8nKQorICAgIGZpbGVuYW1lX2ggPSBmaWxlbmFtZV9oLnJlcGxhY2UoJy9pbnRlcm5hbC8n
LCAnLycpCisKKyAgICBmaWxlc19iZWxvbmdfdG9fc2FtZV9tb2R1bGUgPSBmaWxlbmFtZV9jcHAu
ZW5kc3dpdGgoZmlsZW5hbWVfaCkKKyAgICBjb21tb25fcGF0aCA9ICcnCisgICAgaWYgZmlsZXNf
YmVsb25nX3RvX3NhbWVfbW9kdWxlOgorICAgICAgICBjb21tb25fcGF0aCA9IGZpbGVuYW1lX2Nw
cFs6LWxlbihmaWxlbmFtZV9oKV0KKyAgICByZXR1cm4gZmlsZXNfYmVsb25nX3RvX3NhbWVfbW9k
dWxlLCBjb21tb25fcGF0aAorCisKK2RlZiB1cGRhdGVfaW5jbHVkZV9zdGF0ZShmaWxlbmFtZSwg
aW5jbHVkZV9zdGF0ZSwgaW89Y29kZWNzKToKKyAgICAiIiJGaWxsIHVwIHRoZSBpbmNsdWRlX3N0
YXRlIHdpdGggbmV3IGluY2x1ZGVzIGZvdW5kIGZyb20gdGhlIGZpbGUuCisKKyAgICBBcmdzOgor
ICAgICAgZmlsZW5hbWU6IHRoZSBuYW1lIG9mIHRoZSBoZWFkZXIgdG8gcmVhZC4KKyAgICAgIGlu
Y2x1ZGVfc3RhdGU6IGFuIF9JbmNsdWRlU3RhdGUgaW5zdGFuY2UgaW4gd2hpY2ggdGhlIGhlYWRl
cnMgYXJlIGluc2VydGVkLgorICAgICAgaW86IFRoZSBpbyBmYWN0b3J5IHRvIHVzZSB0byByZWFk
IHRoZSBmaWxlLiBQcm92aWRlZCBmb3IgdGVzdGFiaWxpdHkuCisKKyAgICBSZXR1cm5zOgorICAg
ICAgVHJ1ZSBpZiBhIGhlYWRlciB3YXMgc3VjY2VzZnVsbHkgYWRkZWQuIEZhbHNlIG90aGVyd2lz
ZS4KKyAgICAiIiIKKyAgICBoZWFkZXJfZmlsZSA9IE5vbmUKKyAgICB0cnk6CisgICAgICAgIGhl
YWRlcl9maWxlID0gaW8ub3BlbihmaWxlbmFtZSwgJ3InLCAndXRmOCcsICdyZXBsYWNlJykKKyAg
ICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgbGluZV9udW1iZXIg
PSAwCisgICAgZm9yIGxpbmUgaW4gaGVhZGVyX2ZpbGU6CisgICAgICAgIGxpbmVfbnVtYmVyICs9
IDEKKyAgICAgICAgY2xlYW5fbGluZSA9IGNsZWFuc2VfY29tbWVudHMobGluZSkKKyAgICAgICAg
bWF0Y2hlZCA9IF9SRV9QQVRURVJOX0lOQ0xVREUuc2VhcmNoKGNsZWFuX2xpbmUpCisgICAgICAg
IGlmIG1hdGNoZWQ6CisgICAgICAgICAgICBpbmNsdWRlID0gbWF0Y2hlZC5ncm91cCgyKQorICAg
ICAgICAgICAgIyBUaGUgdmFsdWUgZm9ybWF0dGluZyBpcyBjdXRlLCBidXQgbm90IHJlYWxseSB1
c2VkIHJpZ2h0IG5vdy4KKyAgICAgICAgICAgICMgV2hhdCBtYXR0ZXJzIGhlcmUgaXMgdGhhdCB0
aGUga2V5IGlzIGluIGluY2x1ZGVfc3RhdGUuCisgICAgICAgICAgICBpbmNsdWRlX3N0YXRlLnNl
dGRlZmF1bHQoaW5jbHVkZSwgJyVzOiVkJyAlIChmaWxlbmFtZSwgbGluZV9udW1iZXIpKQorICAg
IHJldHVybiBUcnVlCisKKworZGVmIGNoZWNrX2Zvcl9pbmNsdWRlX3doYXRfeW91X3VzZShmaWxl
bmFtZSwgY2xlYW5fbGluZXMsIGluY2x1ZGVfc3RhdGUsIGVycm9yLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbz1jb2RlY3MpOgorICAgICIiIlJlcG9ydHMgZm9yIG1pc3Np
bmcgc3RsIGluY2x1ZGVzLgorCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIG91dHB1dCB3YXJuaW5n
cyB0byBtYWtlIHN1cmUgeW91IGFyZSBpbmNsdWRpbmcgdGhlIGhlYWRlcnMKKyAgICBuZWNlc3Nh
cnkgZm9yIHRoZSBzdGwgY29udGFpbmVycyBhbmQgZnVuY3Rpb25zIHRoYXQgeW91IHVzZS4gV2Ug
b25seSBnaXZlIG9uZQorICAgIHJlYXNvbiB0byBpbmNsdWRlIGEgaGVhZGVyLiBGb3IgZXhhbXBs
ZSwgaWYgeW91IHVzZSBib3RoIGVxdWFsX3RvPD4gYW5kCisgICAgbGVzczw+IGluIGEgLmggZmls
ZSwgb25seSBvbmUgKHRoZSBsYXR0ZXIgaW4gdGhlIGZpbGUpIG9mIHRoZXNlIHdpbGwgYmUKKyAg
ICByZXBvcnRlZCBhcyBhIHJlYXNvbiB0byBpbmNsdWRlIHRoZSA8ZnVuY3Rpb25hbD4uCisKKyAg
ICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCisg
ICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhl
IGZpbGUuCisgICAgICBpbmNsdWRlX3N0YXRlOiBBbiBfSW5jbHVkZVN0YXRlIGluc3RhbmNlLgor
ICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4K
KyAgICAgIGlvOiBUaGUgSU8gZmFjdG9yeSB0byB1c2UgdG8gcmVhZCB0aGUgaGVhZGVyIGZpbGUu
IFByb3ZpZGVkIGZvciB1bml0dGVzdAorICAgICAgICAgIGluamVjdGlvbi4KKyAgICAiIiIKKyAg
ICByZXF1aXJlZCA9IHt9ICAjIEEgbWFwIG9mIGhlYWRlciBuYW1lIHRvIGxpbmVfbnVtYmVyIGFu
ZCB0aGUgdGVtcGxhdGUgZW50aXR5LgorICAgICAgICAjIEV4YW1wbGUgb2YgcmVxdWlyZWQ6IHsg
JzxmdW5jdGlvbmFsPic6ICgxMjE5LCAnbGVzczw+JykgfQorCisgICAgZm9yIGxpbmVfbnVtYmVy
IGluIHhyYW5nZShjbGVhbl9saW5lcy5udW1fbGluZXMoKSk6CisgICAgICAgIGxpbmUgPSBjbGVh
bl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCisgICAgICAgIGlmIG5vdCBsaW5lIG9yIGxpbmVb
MF0gPT0gJyMnOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAjIFN0cmluZyBpcyBz
cGVjaWFsIC0tIGl0IGlzIGEgbm9uLXRlbXBsYXRpemVkIHR5cGUgaW4gU1RMLgorICAgICAgICBp
ZiBfUkVfUEFUVEVSTl9TVFJJTkcuc2VhcmNoKGxpbmUpOgorICAgICAgICAgICAgcmVxdWlyZWRb
JzxzdHJpbmc+J10gPSAobGluZV9udW1iZXIsICdzdHJpbmcnKQorCisgICAgICAgIGZvciBwYXR0
ZXJuLCB0ZW1wbGF0ZSwgaGVhZGVyIGluIF9yZV9wYXR0ZXJuX2FsZ29yaXRobV9oZWFkZXI6Cisg
ICAgICAgICAgICBpZiBwYXR0ZXJuLnNlYXJjaChsaW5lKToKKyAgICAgICAgICAgICAgICByZXF1
aXJlZFtoZWFkZXJdID0gKGxpbmVfbnVtYmVyLCB0ZW1wbGF0ZSkKKworICAgICAgICAjIFRoZSBm
b2xsb3dpbmcgZnVuY3Rpb24gaXMganVzdCBhIHNwZWVkIHVwLCBubyBzZW1hbnRpY3MgYXJlIGNo
YW5nZWQuCisgICAgICAgIGlmIG5vdCAnPCcgaW4gbGluZTogICMgUmVkdWNlcyB0aGUgY3B1IHRp
bWUgdXNhZ2UgYnkgc2tpcHBpbmcgbGluZXMuCisgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgIGZvciBwYXR0ZXJuLCB0ZW1wbGF0ZSwgaGVhZGVyIGluIF9yZV9wYXR0ZXJuX3RlbXBsYXRl
czoKKyAgICAgICAgICAgIGlmIHBhdHRlcm4uc2VhcmNoKGxpbmUpOgorICAgICAgICAgICAgICAg
IHJlcXVpcmVkW2hlYWRlcl0gPSAobGluZV9udW1iZXIsIHRlbXBsYXRlKQorCisgICAgIyBUaGUg
cG9saWN5IGlzIHRoYXQgaWYgeW91ICNpbmNsdWRlIHNvbWV0aGluZyBpbiBmb28uaCB5b3UgZG9u
J3QgbmVlZCB0bworICAgICMgaW5jbHVkZSBpdCBhZ2FpbiBpbiBmb28uY3BwLiBIZXJlLCB3ZSB3
aWxsIGxvb2sgYXQgcG9zc2libGUgaW5jbHVkZXMuCisgICAgIyBMZXQncyBjb3B5IHRoZSBpbmNs
dWRlX3N0YXRlIHNvIGl0IGlzIG9ubHkgbWVzc2VkIHVwIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLgor
ICAgIGluY2x1ZGVfc3RhdGUgPSBpbmNsdWRlX3N0YXRlLmNvcHkoKQorCisgICAgIyBEaWQgd2Ug
ZmluZCB0aGUgaGVhZGVyIGZvciB0aGlzIGZpbGUgKGlmIGFueSkgYW5kIHN1Y2Nlc2Z1bGx5IGxv
YWQgaXQ/CisgICAgaGVhZGVyX2ZvdW5kID0gRmFsc2UKKworICAgICMgVXNlIHRoZSBhYnNvbHV0
ZSBwYXRoIHNvIHRoYXQgbWF0Y2hpbmcgd29ya3MgcHJvcGVybHkuCisgICAgYWJzX2ZpbGVuYW1l
ID0gb3MucGF0aC5hYnNwYXRoKGZpbGVuYW1lKQorCisgICAgIyBGb3IgRW1hY3MncyBmbHltYWtl
LgorICAgICMgSWYgY3BwX3N0eWxlIGlzIGludm9rZWQgZnJvbSBFbWFjcydzIGZseW1ha2UsIGEg
dGVtcG9yYXJ5IGZpbGUgaXMgZ2VuZXJhdGVkCisgICAgIyBieSBmbHltYWtlIGFuZCB0aGF0IGZp
bGUgbmFtZSBtaWdodCBlbmQgd2l0aCAnX2ZseW1ha2UuY3BwJy4gSW4gdGhhdCBjYXNlLAorICAg
ICMgcmVzdG9yZSBvcmlnaW5hbCBmaWxlIG5hbWUgaGVyZSBzbyB0aGF0IHRoZSBjb3JyZXNwb25k
aW5nIGhlYWRlciBmaWxlIGNhbiBiZQorICAgICMgZm91bmQuCisgICAgIyBlLmcuIElmIHRoZSBm
aWxlIG5hbWUgaXMgJ2Zvb19mbHltYWtlLmNwcCcsIHdlIHNob3VsZCBzZWFyY2ggZm9yICdmb28u
aCcKKyAgICAjIGluc3RlYWQgb2YgJ2Zvb19mbHltYWtlLmgnCisgICAgZW1hY3NfZmx5bWFrZV9z
dWZmaXggPSAnX2ZseW1ha2UuY3BwJworICAgIGlmIGFic19maWxlbmFtZS5lbmRzd2l0aChlbWFj
c19mbHltYWtlX3N1ZmZpeCk6CisgICAgICAgIGFic19maWxlbmFtZSA9IGFic19maWxlbmFtZVs6
LWxlbihlbWFjc19mbHltYWtlX3N1ZmZpeCldICsgJy5jcHAnCisKKyAgICAjIGluY2x1ZGVfc3Rh
dGUgaXMgbW9kaWZpZWQgZHVyaW5nIGl0ZXJhdGlvbiwgc28gd2UgaXRlcmF0ZSBvdmVyIGEgY29w
eSBvZgorICAgICMgdGhlIGtleXMuCisgICAgZm9yIGhlYWRlciBpbiBpbmNsdWRlX3N0YXRlLmtl
eXMoKTogICNOT0xJTlQKKyAgICAgICAgKHNhbWVfbW9kdWxlLCBjb21tb25fcGF0aCkgPSBmaWxl
c19iZWxvbmdfdG9fc2FtZV9tb2R1bGUoYWJzX2ZpbGVuYW1lLCBoZWFkZXIpCisgICAgICAgIGZ1
bGxwYXRoID0gY29tbW9uX3BhdGggKyBoZWFkZXIKKyAgICAgICAgaWYgc2FtZV9tb2R1bGUgYW5k
IHVwZGF0ZV9pbmNsdWRlX3N0YXRlKGZ1bGxwYXRoLCBpbmNsdWRlX3N0YXRlLCBpbyk6CisgICAg
ICAgICAgICBoZWFkZXJfZm91bmQgPSBUcnVlCisKKyAgICAjIElmIHdlIGNhbid0IGZpbmQgdGhl
IGhlYWRlciBmaWxlIGZvciBhIC5jcHAsIGFzc3VtZSBpdCdzIGJlY2F1c2Ugd2UgZG9uJ3QKKyAg
ICAjIGtub3cgd2hlcmUgdG8gbG9vay4gSW4gdGhhdCBjYXNlIHdlJ2xsIGdpdmUgdXAgYXMgd2Un
cmUgbm90IHN1cmUgdGhleQorICAgICMgZGlkbid0IGluY2x1ZGUgaXQgaW4gdGhlIC5oIGZpbGUu
CisgICAgIyBGSVhNRTogRG8gYSBiZXR0ZXIgam9iIG9mIGZpbmRpbmcgLmggZmlsZXMgc28gd2Ug
YXJlIGNvbmZpZGVudCB0aGF0CisgICAgIyAgICAgICAgbm90IGhhdmluZyB0aGUgLmggZmlsZSBt
ZWFucyB0aGVyZSBpc24ndCBvbmUuCisgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoJy5jcHAnKSBh
bmQgbm90IGhlYWRlcl9mb3VuZDoKKyAgICAgICAgcmV0dXJuCisKKyAgICAjIEFsbCB0aGUgbGlu
ZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZCwgcmVwb3J0IHRoZSBlcnJvcnMgZm91bmQuCisgICAgZm9y
IHJlcXVpcmVkX2hlYWRlcl91bnN0cmlwcGVkIGluIHJlcXVpcmVkOgorICAgICAgICB0ZW1wbGF0
ZSA9IHJlcXVpcmVkW3JlcXVpcmVkX2hlYWRlcl91bnN0cmlwcGVkXVsxXQorICAgICAgICBpZiB0
ZW1wbGF0ZSBpbiBfSEVBREVSU19BQ0NFUFRFRF9CVVRfTk9UX1BST01PVEVEOgorICAgICAgICAg
ICAgaGVhZGVycyA9IF9IRUFERVJTX0FDQ0VQVEVEX0JVVF9OT1RfUFJPTU9URURbdGVtcGxhdGVd
CisgICAgICAgICAgICBpZiBbVHJ1ZSBmb3IgaGVhZGVyIGluIGhlYWRlcnMgaWYgaGVhZGVyIGlu
IGluY2x1ZGVfc3RhdGVdOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIHJl
cXVpcmVkX2hlYWRlcl91bnN0cmlwcGVkLnN0cmlwKCc8PiInKSBub3QgaW4gaW5jbHVkZV9zdGF0
ZToKKyAgICAgICAgICAgIGVycm9yKHJlcXVpcmVkW3JlcXVpcmVkX2hlYWRlcl91bnN0cmlwcGVk
XVswXSwKKyAgICAgICAgICAgICAgICAgICdidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZScsIDQs
CisgICAgICAgICAgICAgICAgICAnQWRkICNpbmNsdWRlICcgKyByZXF1aXJlZF9oZWFkZXJfdW5z
dHJpcHBlZCArICcgZm9yICcgKyB0ZW1wbGF0ZSkKKworCitkZWYgcHJvY2Vzc19saW5lKGZpbGVu
YW1lLCBmaWxlX2V4dGVuc2lvbiwKKyAgICAgICAgICAgICAgICAgY2xlYW5fbGluZXMsIGxpbmUs
IGluY2x1ZGVfc3RhdGUsIGZ1bmN0aW9uX3N0YXRlLAorICAgICAgICAgICAgICAgICBjbGFzc19z
dGF0ZSwgZmlsZV9zdGF0ZSwgZXJyb3IpOgorICAgICIiIlByb2Nlc3NlcyBhIHNpbmdsZSBsaW5l
IGluIHRoZSBmaWxlLgorCisgICAgQXJnczoKKyAgICAgIGZpbGVuYW1lOiBGaWxlbmFtZSBvZiB0
aGUgZmlsZSB0aGF0IGlzIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgIGZpbGVfZXh0ZW5zaW9uOiBU
aGUgZXh0ZW5zaW9uIChkb3Qgbm90IGluY2x1ZGVkKSBvZiB0aGUgZmlsZS4KKyAgICAgIGNsZWFu
X2xpbmVzOiBBbiBhcnJheSBvZiBzdHJpbmdzLCBlYWNoIHJlcHJlc2VudGluZyBhIGxpbmUgb2Yg
dGhlIGZpbGUsCisgICAgICAgICAgICAgICAgICAgd2l0aCBjb21tZW50cyBzdHJpcHBlZC4KKyAg
ICAgIGxpbmU6IE51bWJlciBvZiBsaW5lIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgIGluY2x1ZGVf
c3RhdGU6IEFuIF9JbmNsdWRlU3RhdGUgaW5zdGFuY2UgaW4gd2hpY2ggdGhlIGhlYWRlcnMgYXJl
IGluc2VydGVkLgorICAgICAgZnVuY3Rpb25fc3RhdGU6IEEgX0Z1bmN0aW9uU3RhdGUgaW5zdGFu
Y2Ugd2hpY2ggY291bnRzIGZ1bmN0aW9uIGxpbmVzLCBldGMuCisgICAgICBjbGFzc19zdGF0ZTog
QSBfQ2xhc3NTdGF0ZSBpbnN0YW5jZSB3aGljaCBtYWludGFpbnMgaW5mb3JtYXRpb24gYWJvdXQK
KyAgICAgICAgICAgICAgICAgICB0aGUgY3VycmVudCBzdGFjayBvZiBuZXN0ZWQgY2xhc3MgZGVj
bGFyYXRpb25zIGJlaW5nIHBhcnNlZC4KKyAgICAgIGZpbGVfc3RhdGU6IEEgX0ZpbGVTdGF0ZSBp
bnN0YW5jZSB3aGljaCBtYWludGFpbnMgaW5mb3JtYXRpb24gYWJvdXQKKyAgICAgICAgICAgICAg
ICAgIHRoZSBzdGF0ZSBvZiB0aGluZ3MgaW4gdGhlIGZpbGUuCisgICAgICBlcnJvcjogQSBjYWxs
YWJsZSB0byB3aGljaCBlcnJvcnMgYXJlIHJlcG9ydGVkLCB3aGljaCB0YWtlcyA0IGFyZ3VtZW50
czoKKyAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGVycm9yIGxldmVsLCBhbmQg
bWVzc2FnZQorCisgICAgIiIiCisgICAgcmF3X2xpbmVzID0gY2xlYW5fbGluZXMucmF3X2xpbmVz
CisgICAgY2hlY2tfZm9yX2Z1bmN0aW9uX2xlbmd0aHMoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBs
aW5lLCBmdW5jdGlvbl9zdGF0ZSwgZXJyb3IpCisgICAgaWYgc2VhcmNoKHInXGJOT0xJTlRcYics
IHJhd19saW5lc1tsaW5lXSk6ICAjIGlnbm9yZSBub2xpbnQgbGluZXMKKyAgICAgICAgcmV0dXJu
CisgICAgY2hlY2tfZm9yX211bHRpbGluZV9jb21tZW50c19hbmRfc3RyaW5ncyhmaWxlbmFtZSwg
Y2xlYW5fbGluZXMsIGxpbmUsIGVycm9yKQorICAgIGNoZWNrX3N0eWxlKGZpbGVuYW1lLCBjbGVh
bl9saW5lcywgbGluZSwgZmlsZV9leHRlbnNpb24sIGZpbGVfc3RhdGUsIGVycm9yKQorICAgIGNo
ZWNrX2xhbmd1YWdlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZSwgZmlsZV9leHRlbnNpb24s
IGluY2x1ZGVfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgZXJyb3IpCisgICAgY2hlY2tfZm9y
X25vbl9zdGFuZGFyZF9jb25zdHJ1Y3RzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nfc3RhdGUsIGVycm9yKQor
ICAgIGNoZWNrX3Bvc2l4X3RocmVhZGluZyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmUsIGVy
cm9yKQorICAgIGNoZWNrX2ludmFsaWRfaW5jcmVtZW50KGZpbGVuYW1lLCBjbGVhbl9saW5lcywg
bGluZSwgZXJyb3IpCisKKworZGVmIF9wcm9jZXNzX2xpbmVzKGZpbGVuYW1lLCBmaWxlX2V4dGVu
c2lvbiwgbGluZXMsIGVycm9yLCB2ZXJib3NpdHkpOgorICAgICIiIlBlcmZvcm1zIGxpbnQgY2hl
Y2tzIGFuZCByZXBvcnRzIGFueSBlcnJvcnMgdG8gdGhlIGdpdmVuIGVycm9yIGZ1bmN0aW9uLgor
CisgICAgQXJnczoKKyAgICAgIGZpbGVuYW1lOiBGaWxlbmFtZSBvZiB0aGUgZmlsZSB0aGF0IGlz
IGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgIGZpbGVfZXh0ZW5zaW9uOiBUaGUgZXh0ZW5zaW9uIChk
b3Qgbm90IGluY2x1ZGVkKSBvZiB0aGUgZmlsZS4KKyAgICAgIGxpbmVzOiBBbiBhcnJheSBvZiBz
dHJpbmdzLCBlYWNoIHJlcHJlc2VudGluZyBhIGxpbmUgb2YgdGhlIGZpbGUsIHdpdGggdGhlCisg
ICAgICAgICAgICAgbGFzdCBlbGVtZW50IGJlaW5nIGVtcHR5IGlmIHRoZSBmaWxlIGlzIHRlcm1p
bmVkIHdpdGggYSBuZXdsaW5lLgorICAgICAgZXJyb3I6IEEgY2FsbGFibGUgdG8gd2hpY2ggZXJy
b3JzIGFyZSByZXBvcnRlZCwgd2hpY2ggdGFrZXMgNCBhcmd1bWVudHM6CisgICAgIiIiCisgICAg
bGluZXMgPSAoWycvLyBtYXJrZXIgc28gbGluZSBudW1iZXJzIGFuZCBpbmRpY2VzIGJvdGggc3Rh
cnQgYXQgMSddICsgbGluZXMgKworICAgICAgICAgICAgIFsnLy8gbWFya2VyIHNvIGxpbmUgbnVt
YmVycyBlbmQgaW4gYSBrbm93biB3YXknXSkKKworICAgIGluY2x1ZGVfc3RhdGUgPSBfSW5jbHVk
ZVN0YXRlKCkKKyAgICBmdW5jdGlvbl9zdGF0ZSA9IF9GdW5jdGlvblN0YXRlKHZlcmJvc2l0eSkK
KyAgICBjbGFzc19zdGF0ZSA9IF9DbGFzc1N0YXRlKCkKKyAgICBmaWxlX3N0YXRlID0gX0ZpbGVT
dGF0ZSgpCisKKyAgICBjaGVja19mb3JfY29weXJpZ2h0KGZpbGVuYW1lLCBsaW5lcywgZXJyb3Ip
CisKKyAgICBpZiBmaWxlX2V4dGVuc2lvbiA9PSAnaCc6CisgICAgICAgIGNoZWNrX2Zvcl9oZWFk
ZXJfZ3VhcmQoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcikKKworICAgIHJlbW92ZV9tdWx0aV9saW5l
X2NvbW1lbnRzKGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpCisgICAgY2xlYW5fbGluZXMgPSBDbGVh
bnNlZExpbmVzKGxpbmVzKQorICAgIGZvciBsaW5lIGluIHhyYW5nZShjbGVhbl9saW5lcy5udW1f
bGluZXMoKSk6CisgICAgICAgIHByb2Nlc3NfbGluZShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24s
IGNsZWFuX2xpbmVzLCBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9zdGF0ZSwg
ZnVuY3Rpb25fc3RhdGUsIGNsYXNzX3N0YXRlLCBmaWxlX3N0YXRlLCBlcnJvcikKKyAgICBjbGFz
c19zdGF0ZS5jaGVja19maW5pc2hlZChmaWxlbmFtZSwgZXJyb3IpCisKKyAgICBjaGVja19mb3Jf
aW5jbHVkZV93aGF0X3lvdV91c2UoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBpbmNsdWRlX3N0YXRl
LCBlcnJvcikKKworICAgICMgV2UgY2hlY2sgaGVyZSByYXRoZXIgdGhhbiBpbnNpZGUgcHJvY2Vz
c19saW5lIHNvIHRoYXQgd2Ugc2VlIHJhdworICAgICMgbGluZXMgcmF0aGVyIHRoYW4gImNsZWFu
ZWQiIGxpbmVzLgorICAgIGNoZWNrX2Zvcl91bmljb2RlX3JlcGxhY2VtZW50X2NoYXJhY3RlcnMo
ZmlsZW5hbWUsIGxpbmVzLCBlcnJvcikKKworICAgIGNoZWNrX2Zvcl9uZXdfbGluZV9hdF9lb2Yo
ZmlsZW5hbWUsIGxpbmVzLCBlcnJvcikKKworCitjbGFzcyBDcHBQcm9jZXNzb3Iob2JqZWN0KToK
KworICAgICIiIlByb2Nlc3NlcyBDKysgbGluZXMgZm9yIGNoZWNraW5nIHN0eWxlLiIiIgorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfcGF0aCwgZmlsZV9leHRlbnNpb24sIGhhbmRsZV9z
dHlsZV9lcnJvciwgdmVyYm9zaXR5KToKKyAgICAgICAgIiIiQ3JlYXRlIGEgQ3BwUHJvY2Vzc29y
IGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZmlsZV9leHRlbnNpb246IEEg
c3RyaW5nIHRoYXQgaXMgdGhlIGZpbGUgZXh0ZW5zaW9uLCB3aXRob3V0CisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoZSBsZWFkaW5nIGRvdC4KKworICAgICAgICAiIiIKKyAgICAgICAgc2Vs
Zi5maWxlX2V4dGVuc2lvbiA9IGZpbGVfZXh0ZW5zaW9uCisgICAgICAgIHNlbGYuZmlsZV9wYXRo
ID0gZmlsZV9wYXRoCisgICAgICAgIHNlbGYuaGFuZGxlX3N0eWxlX2Vycm9yID0gaGFuZGxlX3N0
eWxlX2Vycm9yCisgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gdmVyYm9zaXR5CisKKyAgICAjIFVz
ZWZ1bCBmb3IgdW5pdCB0ZXN0aW5nLgorICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAg
ICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGlzIENwcFByb2Nlc3NvciBpbnN0YW5jZSBpcyBlcXVh
bCB0byBhbm90aGVyLiIiIgorICAgICAgICBpZiBzZWxmLmZpbGVfZXh0ZW5zaW9uICE9IG90aGVy
LmZpbGVfZXh0ZW5zaW9uOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHNl
bGYuZmlsZV9wYXRoICE9IG90aGVyLmZpbGVfcGF0aDoKKyAgICAgICAgICAgIHJldHVybiBGYWxz
ZQorICAgICAgICBpZiBzZWxmLmhhbmRsZV9zdHlsZV9lcnJvciAhPSBvdGhlci5oYW5kbGVfc3R5
bGVfZXJyb3I6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgc2VsZi52ZXJi
b3NpdHkgIT0gb3RoZXIudmVyYm9zaXR5OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAg
ICAgICAgcmV0dXJuIFRydWUKKworICAgICMgVXNlZnVsIGZvciB1bml0IHRlc3RpbmcuCisgICAg
ZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICMgUHl0aG9uIGRvZXMgbm90IGF1dG9t
YXRpY2FsbHkgZGVkdWNlIF9fbmVfXygpIGZyb20gX19lcV9fKCkuCisgICAgICAgIHJldHVybiBu
b3Qgc2VsZi5fX2VxX18ob3RoZXIpCisKKyAgICBkZWYgcHJvY2VzcyhzZWxmLCBsaW5lcyk6Cisg
ICAgICAgIF9wcm9jZXNzX2xpbmVzKHNlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfZXh0ZW5zaW9u
LCBsaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfc3R5bGVfZXJyb3Is
IHNlbGYudmVyYm9zaXR5KQorCisKKyMgRklYTUU6IFJlbW92ZSB0aGlzIGZ1bmN0aW9uIChyZXF1
aXJlcyByZWZhY3RvcmluZyB1bml0IHRlc3RzKS4KK2RlZiBwcm9jZXNzX2ZpbGVfZGF0YShmaWxl
bmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJvciwgdmVyYm9zaXR5KToKKyAgICBwcm9j
ZXNzb3IgPSBDcHBQcm9jZXNzb3IoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLCBlcnJvciwgdmVy
Ym9zaXR5KQorICAgIHByb2Nlc3Nvci5wcm9jZXNzKGxpbmVzKQorCkluZGV4OiBXZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY3BwX3VuaXR0ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9j
cHBfdW5pdHRlc3QucHkJKHJldmlzaW9uIDUzODQxKQkoZnJvbSBXZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZV91bml0dGVzdC5weTo1Mzg0MSkKKysrIFdlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHBfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzNjgzIEBACisjIS91c3IvYmluL3B5dGhvbgorIyAtKi0g
Y29kaW5nOiB1dGYtODsgLSotCisjCisjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIElu
Yy4KKyMgQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9y
ZykKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCBmb3IgY3BwX3N0eWxlLnB5LiIiIgor
CisjIEZJWE1FOiBBZGQgYSBnb29kIHRlc3QgdGhhdCB0ZXN0cyBVcGRhdGVJbmNsdWRlU3RhdGUu
CisKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitp
bXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBjcHBfc3R5bGUKK2Zyb20gY3BwX3N0eWxlIGltcG9ydCBD
cHBQcm9jZXNzb3IKKworIyBGSVhNRTogUmVtb3ZlIHRoZSBuZWVkIHRvIGltcG9ydCBhbnl0aGlu
ZyBmcm9tIGNoZWNrZXIuIFNlZSB0aGUKKyMgICAgICAgIEZJWE1FIG5vdGVzIG5lYXIgdGhlIFNU
WUxFX0NBVEVHT1JJRVMgZGVmaW5pdGlvbiBmb3IgYQorIyAgICAgICAgc3VnZ2VzdGlvbiBvbiBo
b3cgdG8gYmVzdCBkbyB0aGlzLgorZnJvbSBjaGVja2VyIGltcG9ydCBTVFlMRV9DQVRFR09SSUVT
CisKKyMgVGhpcyBjbGFzcyB3b3JrcyBhcyBhbiBlcnJvciBjb2xsZWN0b3IgYW5kIHJlcGxhY2Vz
IGNwcF9zdHlsZS5FcnJvcgorIyBmdW5jdGlvbiBmb3IgdGhlIHVuaXQgdGVzdHMuICBXZSBhbHNv
IHZlcmlmeSBlYWNoIGNhdGVnb3J5IHdlIHNlZQorIyBpcyBpbiBTVFlMRV9DQVRFR09SSUVTLCB0
byBoZWxwIGtlZXAgdGhhdCBsaXN0IHVwIHRvIGRhdGUuCitjbGFzcyBFcnJvckNvbGxlY3RvcjoK
KyAgICBfYWxsX3N0eWxlX2NhdGVnb3JpZXMgPSBTVFlMRV9DQVRFR09SSUVTCisgICAgIyBUaGlz
IGEgbGlzdCBpbmNsdWRpbmcgYWxsIGNhdGVnb3JpZXMgc2VlbiBpbiBhbnkgdW5pdCB0ZXN0Lgor
ICAgIF9zZWVuX3N0eWxlX2NhdGVnb3JpZXMgPSB7fQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGFzc2VydF9mbik6CisgICAgICAgICIiImFzc2VydF9mbjogYSBmdW5jdGlvbiB0byBjYWxsIHdo
ZW4gd2Ugbm90aWNlIGEgcHJvYmxlbS4iIiIKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2ZuID0gYXNz
ZXJ0X2ZuCisgICAgICAgIHNlbGYuX2Vycm9ycyA9IFtdCisKKyAgICBkZWYgX19jYWxsX18oc2Vs
ZiwgdW51c2VkX2xpbmVudW0sIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKToKKyAgICAg
ICAgc2VsZi5fYXNzZXJ0X2ZuKGNhdGVnb3J5IGluIHNlbGYuX2FsbF9zdHlsZV9jYXRlZ29yaWVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgJ01lc3NhZ2UgIiVzIiBoYXMgY2F0ZWdvcnkgIiVz
IiwnCisgICAgICAgICAgICAgICAgICAgICAgICAnIHdoaWNoIGlzIG5vdCBpbiBTVFlMRV9DQVRF
R09SSUVTJyAlIChtZXNzYWdlLCBjYXRlZ29yeSkpCisgICAgICAgIHNlbGYuX3NlZW5fc3R5bGVf
Y2F0ZWdvcmllc1tjYXRlZ29yeV0gPSAxCisgICAgICAgIHNlbGYuX2Vycm9ycy5hcHBlbmQoJyVz
ICBbJXNdIFslZF0nICUgKG1lc3NhZ2UsIGNhdGVnb3J5LCBjb25maWRlbmNlKSkKKworICAgIGRl
ZiByZXN1bHRzKHNlbGYpOgorICAgICAgICBpZiBsZW4oc2VsZi5fZXJyb3JzKSA8IDI6CisgICAg
ICAgICAgICByZXR1cm4gJycuam9pbihzZWxmLl9lcnJvcnMpICAjIE1vc3QgdGVzdHMgZXhwZWN0
IHRvIGhhdmUgYSBzdHJpbmcuCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fZXJyb3JzICAjIExldCdzIGdpdmUgYSBsaXN0IGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUu
CisKKyAgICBkZWYgcmVzdWx0X2xpc3Qoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9lcnJv
cnMKKworICAgIGRlZiB2ZXJpZnlfYWxsX2NhdGVnb3JpZXNfYXJlX3NlZW4oc2VsZik6CisgICAg
ICAgICIiIkZhaWxzIGlmIHRoZXJlJ3MgYSBjYXRlZ29yeSBpbiBfYWxsX3N0eWxlX2NhdGVnb3Jp
ZXMgLSBfc2Vlbl9zdHlsZV9jYXRlZ29yaWVzLgorCisgICAgICAgIFRoaXMgc2hvdWxkIG9ubHkg
YmUgY2FsbGVkIGFmdGVyIGFsbCB0ZXN0cyBhcmUgcnVuLCBzbworICAgICAgICBfc2Vlbl9zdHls
ZV9jYXRlZ29yaWVzIGhhcyBoYWQgYSBjaGFuY2UgdG8gZnVsbHkgcG9wdWxhdGUuICBTaW5jZQor
ICAgICAgICB0aGlzIGlzbid0IGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgbm9ybWFsIHVuaXR0ZXN0
IGZyYW1ld29yaywgd2UKKyAgICAgICAgY2FuJ3QgdXNlIHRoZSBub3JtYWwgdW5pdHRlc3QgYXNz
ZXJ0IG1hY3Jvcy4gIEluc3RlYWQgd2UganVzdCBleGl0CisgICAgICAgIHdoZW4gd2Ugc2VlIGFu
IGVycm9yLiAgR29vZCB0aGluZyB0aGlzIHRlc3QgaXMgYWx3YXlzIHJ1biBsYXN0IQorICAgICAg
ICAiIiIKKyAgICAgICAgZm9yIGNhdGVnb3J5IGluIHNlbGYuX2FsbF9zdHlsZV9jYXRlZ29yaWVz
OgorICAgICAgICAgICAgaWYgY2F0ZWdvcnkgbm90IGluIHNlbGYuX3NlZW5fc3R5bGVfY2F0ZWdv
cmllczoKKyAgICAgICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICAgICAgc3lzLmV4
aXQoJ0ZBVEFMIEVSUk9SOiBUaGVyZSBhcmUgbm8gdGVzdHMgZm9yIGNhdGVnb3J5ICIlcyInICUg
Y2F0ZWdvcnkpCisKKyAgICBkZWYgcmVtb3ZlX2lmX3ByZXNlbnQoc2VsZiwgc3Vic3RyKToKKyAg
ICAgICAgZm9yIChpbmRleCwgZXJyb3IpIGluIGVudW1lcmF0ZShzZWxmLl9lcnJvcnMpOgorICAg
ICAgICAgICAgaWYgZXJyb3IuZmluZChzdWJzdHIpICE9IC0xOgorICAgICAgICAgICAgICAgIHNl
bGYuX2Vycm9ycyA9IHNlbGYuX2Vycm9yc1swOmluZGV4XSArIHNlbGYuX2Vycm9yc1soaW5kZXgg
KyAxKTpdCisgICAgICAgICAgICAgICAgYnJlYWsKKworCisjIFRoaXMgY2xhc3MgaXMgYSBsYW1l
IG1vY2sgb2YgY29kZWNzLiBXZSBkbyBub3QgdmVyaWZ5IGZpbGVuYW1lLCBtb2RlLCBvcgorIyBl
bmNvZGluZywgYnV0IGZvciB0aGUgY3VycmVudCB1c2UgY2FzZSBpdCBpcyBub3QgbmVlZGVkLgor
Y2xhc3MgTW9ja0lvOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2NrX2ZpbGUpOgorICAgICAg
ICBzZWxmLm1vY2tfZmlsZSA9IG1vY2tfZmlsZQorCisgICAgZGVmIG9wZW4oc2VsZiwgdW51c2Vk
X2ZpbGVuYW1lLCB1bnVzZWRfbW9kZSwgdW51c2VkX2VuY29kaW5nLCBfKTogICMgTk9MSU5UCisg
ICAgICAgICMgKGxpbnQgZG9lc24ndCBsaWtlIG9wZW4gYXMgYSBtZXRob2QgbmFtZSkKKyAgICAg
ICAgcmV0dXJuIHNlbGYubW9ja19maWxlCisKKworY2xhc3MgQ3BwU3R5bGVUZXN0QmFzZSh1bml0
dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiUHJvdmlkZXMgc29tZSB1c2VmdWwgaGVscGVyIGZ1bmN0
aW9ucyBmb3IgY3BwX3N0eWxlIHRlc3RzLgorCisgICAgQXR0cmlidXRlczoKKyAgICAgIHZlcmJv
c2l0eTogQW4gaW50ZWdlciB0aGF0IGlzIHRoZSBjdXJyZW50IHZlcmJvc2l0eSBsZXZlbCBmb3IK
KyAgICAgICAgICAgICAgICAgdGhlIHRlc3RzLgorCisgICAgIiIiCisKKyAgICAjIEZJWE1FOiBS
ZWZhY3RvciB0aGUgdW5pdCB0ZXN0cyBzbyB0aGUgdmVyYm9zaXR5IGxldmVsIGlzIHBhc3NlZAor
ICAgICMgICAgICAgIGV4cGxpY2l0bHksIGp1c3QgbGlrZSBpdCBpcyBpbiB0aGUgcmVhbCBjb2Rl
LgorICAgIHZlcmJvc2l0eSA9IDE7CisKKyAgICAjIEhlbHBlciBmdW5jdGlvbiB0byBhdm9pZCBu
ZWVkaW5nIHRvIGV4cGxpY2l0bHkgcGFzcyB2ZXJib3NpdHkKKyAgICAjIGluIGFsbCB0aGUgdW5p
dCB0ZXN0IGNhbGxzIHRvIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGVfZGF0YSgpLgorICAgIGRlZiBw
cm9jZXNzX2ZpbGVfZGF0YShzZWxmLCBmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBl
cnJvcik6CisgICAgICAgICIiIkNhbGwgY3BwX3N0eWxlLnByb2Nlc3NfZmlsZV9kYXRhKCkgd2l0
aCB0aGUgY3VycmVudCB2ZXJib3NpdHkuIiIiCisgICAgICAgIHJldHVybiBjcHBfc3R5bGUucHJv
Y2Vzc19maWxlX2RhdGEoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLCBsaW5lcywgZXJyb3IsIHNl
bGYudmVyYm9zaXR5KQorCisgICAgIyBQZXJmb3JtIGxpbnQgb24gc2luZ2xlIGxpbmUgb2YgaW5w
dXQgYW5kIHJldHVybiB0aGUgZXJyb3IgbWVzc2FnZS4KKyAgICBkZWYgcGVyZm9ybV9zaW5nbGVf
bGluZV9saW50KHNlbGYsIGNvZGUsIGZpbGVfbmFtZSk6CisgICAgICAgIGVycm9yX2NvbGxlY3Rv
ciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKKyAgICAgICAgbGluZXMgPSBjb2RlLnNw
bGl0KCdcbicpCisgICAgICAgIGNwcF9zdHlsZS5yZW1vdmVfbXVsdGlfbGluZV9jb21tZW50cyhm
aWxlX25hbWUsIGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIGNsZWFuX2xpbmVzID0g
Y3BwX3N0eWxlLkNsZWFuc2VkTGluZXMobGluZXMpCisgICAgICAgIGluY2x1ZGVfc3RhdGUgPSBj
cHBfc3R5bGUuX0luY2x1ZGVTdGF0ZSgpCisgICAgICAgIGZ1bmN0aW9uX3N0YXRlID0gY3BwX3N0
eWxlLl9GdW5jdGlvblN0YXRlKHNlbGYudmVyYm9zaXR5KQorICAgICAgICBleHQgPSBmaWxlX25h
bWVbZmlsZV9uYW1lLnJmaW5kKCcuJykgKyAxOl0KKyAgICAgICAgY2xhc3Nfc3RhdGUgPSBjcHBf
c3R5bGUuX0NsYXNzU3RhdGUoKQorICAgICAgICBmaWxlX3N0YXRlID0gY3BwX3N0eWxlLl9GaWxl
U3RhdGUoKQorICAgICAgICBjcHBfc3R5bGUucHJvY2Vzc19saW5lKGZpbGVfbmFtZSwgZXh0LCBj
bGVhbl9saW5lcywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX3N0
YXRlLCBmdW5jdGlvbl9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFz
c19zdGF0ZSwgZmlsZV9zdGF0ZSwgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICAjIFNpbmdsZS1s
aW5lIGxpbnQgdGVzdHMgYXJlIGFsbG93ZWQgdG8gZmFpbCB0aGUgJ3VubGludGFibGUgZnVuY3Rp
b24nCisgICAgICAgICMgY2hlY2suCisgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZW1vdmVfaWZf
cHJlc2VudCgKKyAgICAgICAgICAgICdMaW50IGZhaWxlZCB0byBmaW5kIHN0YXJ0IG9mIGZ1bmN0
aW9uIGJvZHkuJykKKyAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkKKwor
ICAgICMgUGVyZm9ybSBsaW50IG92ZXIgbXVsdGlwbGUgbGluZXMgYW5kIHJldHVybiB0aGUgZXJy
b3IgbWVzc2FnZS4KKyAgICBkZWYgcGVyZm9ybV9tdWx0aV9saW5lX2xpbnQoc2VsZiwgY29kZSwg
ZmlsZV9uYW1lKToKKyAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2Vs
Zi5hc3NlcnRfKQorICAgICAgICBsaW5lcyA9IGNvZGUuc3BsaXQoJ1xuJykKKyAgICAgICAgY3Bw
X3N0eWxlLnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGZpbGVfbmFtZSwgbGluZXMsIGVycm9y
X2NvbGxlY3RvcikKKyAgICAgICAgbGluZXMgPSBjcHBfc3R5bGUuQ2xlYW5zZWRMaW5lcyhsaW5l
cykKKyAgICAgICAgZXh0ID0gZmlsZV9uYW1lW2ZpbGVfbmFtZS5yZmluZCgnLicpICsgMTpdCisg
ICAgICAgIGNsYXNzX3N0YXRlID0gY3BwX3N0eWxlLl9DbGFzc1N0YXRlKCkKKyAgICAgICAgZmls
ZV9zdGF0ZSA9IGNwcF9zdHlsZS5fRmlsZVN0YXRlKCkKKyAgICAgICAgZm9yIGkgaW4geHJhbmdl
KGxpbmVzLm51bV9saW5lcygpKToKKyAgICAgICAgICAgIGNwcF9zdHlsZS5jaGVja19zdHlsZShm
aWxlX25hbWUsIGxpbmVzLCBpLCBleHQsIGZpbGVfc3RhdGUsIGVycm9yX2NvbGxlY3RvcikKKyAg
ICAgICAgICAgIGNwcF9zdHlsZS5jaGVja19mb3Jfbm9uX3N0YW5kYXJkX2NvbnN0cnVjdHMoZmls
ZV9uYW1lLCBsaW5lcywgaSwgY2xhc3Nfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAg
Y2xhc3Nfc3RhdGUuY2hlY2tfZmluaXNoZWQoZmlsZV9uYW1lLCBlcnJvcl9jb2xsZWN0b3IpCisg
ICAgICAgIHJldHVybiBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpCisKKyAgICAjIFNpbWlsYXIg
dG8gcGVyZm9ybV9tdWx0aV9saW5lX2xpbnQsIGJ1dCBjYWxscyBjaGVja19sYW5ndWFnZSBpbnN0
ZWFkIG9mCisgICAgIyBjaGVja19mb3Jfbm9uX3N0YW5kYXJkX2NvbnN0cnVjdHMKKyAgICBkZWYg
cGVyZm9ybV9sYW5ndWFnZV9ydWxlc19jaGVjayhzZWxmLCBmaWxlX25hbWUsIGNvZGUpOgorICAg
ICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisgICAg
ICAgIGluY2x1ZGVfc3RhdGUgPSBjcHBfc3R5bGUuX0luY2x1ZGVTdGF0ZSgpCisgICAgICAgIGxp
bmVzID0gY29kZS5zcGxpdCgnXG4nKQorICAgICAgICBjcHBfc3R5bGUucmVtb3ZlX211bHRpX2xp
bmVfY29tbWVudHMoZmlsZV9uYW1lLCBsaW5lcywgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICBs
aW5lcyA9IGNwcF9zdHlsZS5DbGVhbnNlZExpbmVzKGxpbmVzKQorICAgICAgICBleHQgPSBmaWxl
X25hbWVbZmlsZV9uYW1lLnJmaW5kKCcuJykgKyAxOl0KKyAgICAgICAgZm9yIGkgaW4geHJhbmdl
KGxpbmVzLm51bV9saW5lcygpKToKKyAgICAgICAgICAgIGNwcF9zdHlsZS5jaGVja19sYW5ndWFn
ZShmaWxlX25hbWUsIGxpbmVzLCBpLCBleHQsIGluY2x1ZGVfc3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICByZXR1cm4g
ZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKQorCisgICAgZGVmIHBlcmZvcm1fZnVuY3Rpb25fbGVu
Z3Roc19jaGVjayhzZWxmLCBjb2RlKToKKyAgICAgICAgIiIiUGVyZm9ybSBMaW50IGZ1bmN0aW9u
IGxlbmd0aCBjaGVjayBvbiBibG9jayBvZiBjb2RlIGFuZCByZXR1cm4gd2FybmluZ3MuCisKKyAg
ICAgICAgQnVpbGRzIHVwIGFuIGFycmF5IG9mIGxpbmVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNv
ZGUgYW5kIHN0cmlwcyBjb21tZW50cworICAgICAgICB1c2luZyBjcHBfc3R5bGUgZnVuY3Rpb25z
LgorCisgICAgICAgIEVzdGFibGlzaGVzIGFuIGVycm9yIGNvbGxlY3RvciBhbmQgaW52b2tlcyB0
aGUgZnVuY3Rpb24gbGVuZ3RoIGNoZWNraW5nCisgICAgICAgIGZ1bmN0aW9uIGZvbGxvd2luZyBj
cHBfc3R5bGUncyBwYXR0ZXJuLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgY29kZTogQysr
IHNvdXJjZSBjb2RlIGV4cGVjdGVkIHRvIGdlbmVyYXRlIGEgd2FybmluZyBtZXNzYWdlLgorCisg
ICAgICAgIFJldHVybnM6CisgICAgICAgICAgVGhlIGFjY3VtdWxhdGVkIGVycm9ycy4KKyAgICAg
ICAgIiIiCisgICAgICAgIGZpbGVfbmFtZSA9ICdmb28uY3BwJworICAgICAgICBlcnJvcl9jb2xs
ZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisgICAgICAgIGZ1bmN0aW9uX3N0
YXRlID0gY3BwX3N0eWxlLl9GdW5jdGlvblN0YXRlKHNlbGYudmVyYm9zaXR5KQorICAgICAgICBs
aW5lcyA9IGNvZGUuc3BsaXQoJ1xuJykKKyAgICAgICAgY3BwX3N0eWxlLnJlbW92ZV9tdWx0aV9s
aW5lX2NvbW1lbnRzKGZpbGVfbmFtZSwgbGluZXMsIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAg
bGluZXMgPSBjcHBfc3R5bGUuQ2xlYW5zZWRMaW5lcyhsaW5lcykKKyAgICAgICAgZm9yIGkgaW4g
eHJhbmdlKGxpbmVzLm51bV9saW5lcygpKToKKyAgICAgICAgICAgIGNwcF9zdHlsZS5jaGVja19m
b3JfZnVuY3Rpb25fbGVuZ3RocyhmaWxlX25hbWUsIGxpbmVzLCBpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX3N0YXRlLCBlcnJvcl9j
b2xsZWN0b3IpCisgICAgICAgIHJldHVybiBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpCisKKyAg
ICBkZWYgcGVyZm9ybV9pbmNsdWRlX3doYXRfeW91X3VzZShzZWxmLCBjb2RlLCBmaWxlbmFtZT0n
Zm9vLmgnLCBpbz1jb2RlY3MpOgorICAgICAgICAjIEZpcnN0LCBidWlsZCB1cCB0aGUgaW5jbHVk
ZSBzdGF0ZS4KKyAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5h
c3NlcnRfKQorICAgICAgICBpbmNsdWRlX3N0YXRlID0gY3BwX3N0eWxlLl9JbmNsdWRlU3RhdGUo
KQorICAgICAgICBsaW5lcyA9IGNvZGUuc3BsaXQoJ1xuJykKKyAgICAgICAgY3BwX3N0eWxlLnJl
bW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGZpbGVuYW1lLCBsaW5lcywgZXJyb3JfY29sbGVjdG9y
KQorICAgICAgICBsaW5lcyA9IGNwcF9zdHlsZS5DbGVhbnNlZExpbmVzKGxpbmVzKQorICAgICAg
ICBmb3IgaSBpbiB4cmFuZ2UobGluZXMubnVtX2xpbmVzKCkpOgorICAgICAgICAgICAgY3BwX3N0
eWxlLmNoZWNrX2xhbmd1YWdlKGZpbGVuYW1lLCBsaW5lcywgaSwgJy5oJywgaW5jbHVkZV9zdGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3Ip
CisgICAgICAgICMgV2UgY291bGQgY2xlYXIgdGhlIGVycm9yX2NvbGxlY3RvciBoZXJlLCBidXQg
dGhpcyBzaG91bGQKKyAgICAgICAgIyBhbHNvIGJlIGZpbmUsIHNpbmNlIG91ciBJbmNsdWRlV2hh
dFlvdVVzZSB1bml0dGVzdHMgZG8gbm90CisgICAgICAgICMgaGF2ZSBsYW5ndWFnZSBwcm9ibGVt
cy4KKworICAgICAgICAjIFNlY29uZCwgbG9vayBmb3IgbWlzc2luZyBpbmNsdWRlcy4KKyAgICAg
ICAgY3BwX3N0eWxlLmNoZWNrX2Zvcl9pbmNsdWRlX3doYXRfeW91X3VzZShmaWxlbmFtZSwgbGlu
ZXMsIGluY2x1ZGVfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLCBpbykKKyAgICAgICAgcmV0dXJuIGVycm9yX2Nv
bGxlY3Rvci5yZXN1bHRzKCkKKworICAgICMgUGVyZm9ybSBsaW50IGFuZCBjb21wYXJlIHRoZSBl
cnJvciBtZXNzYWdlIHdpdGggImV4cGVjdGVkX21lc3NhZ2UiLgorICAgIGRlZiBhc3NlcnRfbGlu
dChzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlLCBmaWxlX25hbWU9J2Zvby5jcHAnKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwgc2VsZi5wZXJmb3JtX3Np
bmdsZV9saW5lX2xpbnQoY29kZSwgZmlsZV9uYW1lKSkKKworICAgIGRlZiBhc3NlcnRfbGludF9v
bmVfb2ZfbWFueV9lcnJvcnNfcmUoc2VsZiwgY29kZSwgZXhwZWN0ZWRfbWVzc2FnZV9yZSwgZmls
ZV9uYW1lPSdmb28uY3BwJyk6CisgICAgICAgIG1lc3NhZ2VzID0gc2VsZi5wZXJmb3JtX3Npbmds
ZV9saW5lX2xpbnQoY29kZSwgZmlsZV9uYW1lKQorICAgICAgICBmb3IgbWVzc2FnZSBpbiBtZXNz
YWdlczoKKyAgICAgICAgICAgIGlmIHJlLnNlYXJjaChleHBlY3RlZF9tZXNzYWdlX3JlLCBtZXNz
YWdlKToKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhleHBlY3RlZF9tZXNzYWdlLCBtZXNzYWdlcykKKworICAgIGRlZiBhc3NlcnRfbXVsdGlfbGlu
ZV9saW50KHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2UsIGZpbGVfbmFtZT0nZm9vLmgnKToK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwgc2VsZi5wZXJmb3Jt
X211bHRpX2xpbmVfbGludChjb2RlLCBmaWxlX25hbWUpKQorCisgICAgZGVmIGFzc2VydF9tdWx0
aV9saW5lX2xpbnRfcmUoc2VsZiwgY29kZSwgZXhwZWN0ZWRfbWVzc2FnZV9yZSwgZmlsZV9uYW1l
PSdmb28uaCcpOgorICAgICAgICBtZXNzYWdlID0gc2VsZi5wZXJmb3JtX211bHRpX2xpbmVfbGlu
dChjb2RlLCBmaWxlX25hbWUpCisgICAgICAgIGlmIG5vdCByZS5zZWFyY2goZXhwZWN0ZWRfbWVz
c2FnZV9yZSwgbWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ01lc3NhZ2Ugd2FzOlxu
JyArIG1lc3NhZ2UgKyAnRXhwZWN0ZWQgbWF0Y2ggdG8gIicgKyBleHBlY3RlZF9tZXNzYWdlX3Jl
ICsgJyInKQorCisgICAgZGVmIGFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjayhzZWxmLCBmaWxl
X25hbWUsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2UpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhleHBlY3RlZF9tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBlcmZv
cm1fbGFuZ3VhZ2VfcnVsZXNfY2hlY2soZmlsZV9uYW1lLCBjb2RlKSkKKworICAgIGRlZiBhc3Nl
cnRfaW5jbHVkZV93aGF0X3lvdV91c2Uoc2VsZiwgY29kZSwgZXhwZWN0ZWRfbWVzc2FnZSk6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX21lc3NhZ2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYucGVyZm9ybV9pbmNsdWRlX3doYXRfeW91X3VzZShjb2RlKSkKKwor
ICAgIGRlZiBhc3NlcnRfYmxhbmtfbGluZXNfY2hlY2soc2VsZiwgbGluZXMsIHN0YXJ0X2Vycm9y
cywgZW5kX2Vycm9ycyk6CisgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9y
KHNlbGYuYXNzZXJ0XykKKyAgICAgICAgc2VsZi5wcm9jZXNzX2ZpbGVfZGF0YSgnZm9vLmNwcCcs
ICdjcHAnLCBsaW5lcywgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cygKKyAgICAgICAgICAgIHN0YXJ0X2Vycm9ycywKKyAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rv
ci5yZXN1bHRzKCkuY291bnQoCisgICAgICAgICAgICAgICAgJ0JsYW5rIGxpbmUgYXQgdGhlIHN0
YXJ0IG9mIGEgY29kZSBibG9jay4gIElzIHRoaXMgbmVlZGVkPycKKyAgICAgICAgICAgICAgICAn
ICBbd2hpdGVzcGFjZS9ibGFua19saW5lXSBbMl0nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoCisgICAgICAgICAgICBlbmRfZXJyb3JzLAorICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9y
LnJlc3VsdHMoKS5jb3VudCgKKyAgICAgICAgICAgICAgICAnQmxhbmsgbGluZSBhdCB0aGUgZW5k
IG9mIGEgY29kZSBibG9jay4gIElzIHRoaXMgbmVlZGVkPycKKyAgICAgICAgICAgICAgICAnICBb
d2hpdGVzcGFjZS9ibGFua19saW5lXSBbM10nKSkKKworCitjbGFzcyBDcHBTdHlsZVRlc3QoQ3Bw
U3R5bGVUZXN0QmFzZSk6CisKKyAgICAjIFRlc3QgZ2V0IGxpbmUgd2lkdGguCisgICAgZGVmIHRl
c3RfZ2V0X2xpbmVfd2lkdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIGNw
cF9zdHlsZS5nZXRfbGluZV93aWR0aCgnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEw
LCBjcHBfc3R5bGUuZ2V0X2xpbmVfd2lkdGgodSd4JyAqIDEwKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoMTYsIGNwcF9zdHlsZS5nZXRfbGluZV93aWR0aCh1J+mDvXzpgZN85bqcfOecjHzm
lK/luoEnKSkKKworICAgIGRlZiB0ZXN0X2ZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfc3Rh
cnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGNwcF9zdHlsZS5maW5kX25l
eHRfbXVsdGlfbGluZV9jb21tZW50X3N0YXJ0KFsnJ10sIDApKQorCisgICAgICAgIGxpbmVzID0g
WydhJywgJ2InLCAnLyogYyddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDIsIGNwcF9zdHls
ZS5maW5kX25leHRfbXVsdGlfbGluZV9jb21tZW50X3N0YXJ0KGxpbmVzLCAwKSkKKworICAgICAg
ICBsaW5lcyA9IFsnY2hhciBhW10gPSAiLyoiOyddICAjIG5vdCByZWNvZ25pemVkIGFzIGNvbW1l
bnQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGNwcF9zdHlsZS5maW5kX25leHRfbXVs
dGlfbGluZV9jb21tZW50X3N0YXJ0KGxpbmVzLCAwKSkKKworICAgIGRlZiB0ZXN0X2ZpbmRfbmV4
dF9tdWx0aV9saW5lX2NvbW1lbnRfZW5kKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cygxLCBjcHBfc3R5bGUuZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9lbmQoWycnXSwgMCkp
CisgICAgICAgIGxpbmVzID0gWydhJywgJ2InLCAnIGMgKi8nXQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygyLCBjcHBfc3R5bGUuZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9lbmQobGlu
ZXMsIDApKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHNfZnJvbV9y
YW5nZShzZWxmKToKKyAgICAgICAgbGluZXMgPSBbJ2EnLCAnICAvKiBjb21tZW50ICcsICcgKiBz
dGlsbCBjb21tZW50JywgJyBjb21tZW50ICovICAgJywgJ2InXQorICAgICAgICBjcHBfc3R5bGUu
cmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHNfZnJvbV9yYW5nZShsaW5lcywgMSwgNCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoWydhJywgJy8vIGR1bW15JywgJy8vIGR1bW15JywgJy8vIGR1
bW15JywgJ2InXSwgbGluZXMpCisKKyAgICBkZWYgdGVzdF9zcGFjZXNfYXRfZW5kX29mX2xpbmUo
c2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnLy8gSGVsbG8g
dGhlcmUgJywKKyAgICAgICAgICAgICdMaW5lIGVuZHMgaW4gd2hpdGVzcGFjZS4gIENvbnNpZGVy
IGRlbGV0aW5nIHRoZXNlIGV4dHJhIHNwYWNlcy4nCisgICAgICAgICAgICAnICBbd2hpdGVzcGFj
ZS9lbmRfb2ZfbGluZV0gWzRdJykKKworICAgICMgVGVzdCBDLXN0eWxlIGNhc3QgY2FzZXMuCisg
ICAgZGVmIHRlc3RfY3N0eWxlX2Nhc3Qoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
CisgICAgICAgICAgICAnaW50IGEgPSAoaW50KTEuMDsnLAorICAgICAgICAgICAgJ1VzaW5nIEMt
c3R5bGUgY2FzdC4gIFVzZSBzdGF0aWNfY2FzdDxpbnQ+KC4uLikgaW5zdGVhZCcKKyAgICAgICAg
ICAgICcgIFtyZWFkYWJpbGl0eS9jYXN0aW5nXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KAorICAgICAgICAgICAgJ2ludCAqYSA9IChpbnQgKilERUZJTkVEX1ZBTFVFOycsCisgICAg
ICAgICAgICAnVXNpbmcgQy1zdHlsZSBjYXN0LiAgVXNlIHJlaW50ZXJwcmV0X2Nhc3Q8aW50ICo+
KC4uLikgaW5zdGVhZCcKKyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jYXN0aW5nXSBbNF0n
LCAnZm9vLmMnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ3VpbnQx
NiBhID0gKHVpbnQxNikxLjA7JywKKyAgICAgICAgICAgICdVc2luZyBDLXN0eWxlIGNhc3QuICBV
c2Ugc3RhdGljX2Nhc3Q8dWludDE2PiguLi4pIGluc3RlYWQnCisgICAgICAgICAgICAnICBbcmVh
ZGFiaWxpdHkvY2FzdGluZ10gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAg
ICAgICAgICdpbnQzMiBhID0gKGludDMyKTEuMDsnLAorICAgICAgICAgICAgJ1VzaW5nIEMtc3R5
bGUgY2FzdC4gIFVzZSBzdGF0aWNfY2FzdDxpbnQzMj4oLi4uKSBpbnN0ZWFkJworICAgICAgICAg
ICAgJyAgW3JlYWRhYmlsaXR5L2Nhc3RpbmddIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoCisgICAgICAgICAgICAndWludDY0IGEgPSAodWludDY0KTEuMDsnLAorICAgICAgICAgICAg
J1VzaW5nIEMtc3R5bGUgY2FzdC4gIFVzZSBzdGF0aWNfY2FzdDx1aW50NjQ+KC4uLikgaW5zdGVh
ZCcKKyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jYXN0aW5nXSBbNF0nKQorCisgICAgIyBU
ZXN0IHRha2luZyBhZGRyZXNzIG9mIGNhc3RzIChydW50aW1lL2Nhc3RpbmcpCisgICAgZGVmIHRl
c3RfcnVudGltZV9jYXN0aW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAg
ICAgICAgICAgJ2ludCogeCA9ICZzdGF0aWNfY2FzdDxpbnQqPihmb28pOycsCisgICAgICAgICAg
ICAnQXJlIHlvdSB0YWtpbmcgYW4gYWRkcmVzcyBvZiBhIGNhc3Q/ICAnCisgICAgICAgICAgICAn
VGhpcyBpcyBkYW5nZXJvdXM6IGNvdWxkIGJlIGEgdGVtcCB2YXIuICAnCisgICAgICAgICAgICAn
VGFrZSB0aGUgYWRkcmVzcyBiZWZvcmUgZG9pbmcgdGhlIGNhc3QsIHJhdGhlciB0aGFuIGFmdGVy
JworICAgICAgICAgICAgJyAgW3J1bnRpbWUvY2FzdGluZ10gWzRdJykKKworICAgICAgICBzZWxm
LmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2ludCogeCA9ICZkeW5hbWljX2Nhc3Q8aW50ICo+
KGZvbyk7JywKKyAgICAgICAgICAgIFsnQXJlIHlvdSB0YWtpbmcgYW4gYWRkcmVzcyBvZiBhIGNh
c3Q/ICAnCisgICAgICAgICAgICAgJ1RoaXMgaXMgZGFuZ2Vyb3VzOiBjb3VsZCBiZSBhIHRlbXAg
dmFyLiAgJworICAgICAgICAgICAgICdUYWtlIHRoZSBhZGRyZXNzIGJlZm9yZSBkb2luZyB0aGUg
Y2FzdCwgcmF0aGVyIHRoYW4gYWZ0ZXInCisgICAgICAgICAgICAgJyAgW3J1bnRpbWUvY2FzdGlu
Z10gWzRdJywKKyAgICAgICAgICAgICAnRG8gbm90IHVzZSBkeW5hbWljX2Nhc3Q8Pi4gIElmIHlv
dSBuZWVkIHRvIGNhc3Qgd2l0aGluIGEgY2xhc3MgJworICAgICAgICAgICAgICdoaWVyYXJjaHks
IHVzZSBzdGF0aWNfY2FzdDw+IHRvIHVwY2FzdC4gIEdvb2dsZSBkb2VzblwndCBzdXBwb3J0ICcK
KyAgICAgICAgICAgICAnUlRUSS4gIFtydW50aW1lL3J0dGldIFs1XSddKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnaW50KiB4ID0gJnJlaW50ZXJwcmV0X2Nhc3Q8
aW50ICo+KGZvbyk7JywKKyAgICAgICAgICAgICdBcmUgeW91IHRha2luZyBhbiBhZGRyZXNzIG9m
IGEgY2FzdD8gICcKKyAgICAgICAgICAgICdUaGlzIGlzIGRhbmdlcm91czogY291bGQgYmUgYSB0
ZW1wIHZhci4gICcKKyAgICAgICAgICAgICdUYWtlIHRoZSBhZGRyZXNzIGJlZm9yZSBkb2luZyB0
aGUgY2FzdCwgcmF0aGVyIHRoYW4gYWZ0ZXInCisgICAgICAgICAgICAnICBbcnVudGltZS9jYXN0
aW5nXSBbNF0nKQorCisgICAgICAgICMgSXQncyBPSyB0byBjYXN0IGFuIGFkZHJlc3MuCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnaW50KiB4ID0gcmVpbnRlcnByZXRf
Y2FzdDxpbnQgKj4oJmZvbyk7JywKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfcnVu
dGltZV9zZWxmaW5pdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAg
ICAgICdGb286OkZvbyhCYXIgciwgQmVsIGwpIDogcl8ocl8pLCBsXyhsXykgeyB9JywKKyAgICAg
ICAgICAgICdZb3Ugc2VlbSB0byBiZSBpbml0aWFsaXppbmcgYSBtZW1iZXIgdmFyaWFibGUgd2l0
aCBpdHNlbGYuJworICAgICAgICAgICAgJyAgW3J1bnRpbWUvaW5pdF0gWzRdJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdGb286OkZvbyhCYXIgciwgQmVsIGwpIDog
cl8ociksIGxfKGwpIHsgfScsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgKKyAgICAgICAgICAgICdGb286OkZvbyhCYXIgcikgOiByXyhyKSwgbF8ocl8pLCBsbF8o
bF8pIHsgfScsCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X3J1bnRpbWVfcnR0aShz
ZWxmKToKKyAgICAgICAgc3RhdGVtZW50ID0gJ2ludCogeCA9IGR5bmFtaWNfY2FzdDxpbnQqPigm
Zm9vKTsnCisgICAgICAgIGVycm9yX21lc3NhZ2UgPSAoCisgICAgICAgICAgICAnRG8gbm90IHVz
ZSBkeW5hbWljX2Nhc3Q8Pi4gIElmIHlvdSBuZWVkIHRvIGNhc3Qgd2l0aGluIGEgY2xhc3MgJwor
ICAgICAgICAgICAgJ2hpZXJhcmNoeSwgdXNlIHN0YXRpY19jYXN0PD4gdG8gdXBjYXN0LiAgR29v
Z2xlIGRvZXNuXCd0IHN1cHBvcnQgJworICAgICAgICAgICAgJ1JUVEkuICBbcnVudGltZS9ydHRp
XSBbNV0nKQorICAgICAgICAjIGR5bmFtaWNfY2FzdCBpcyBkaXNhbGxvd2VkIGluIG1vc3QgZmls
ZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uY3BwJywg
c3RhdGVtZW50LCBlcnJvcl9tZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9y
dWxlc19jaGVjaygnZm9vLmgnLCBzdGF0ZW1lbnQsIGVycm9yX21lc3NhZ2UpCisgICAgICAgICMg
SXQgaXMgZXhwbGljaXRseSBhbGxvd2VkIGluIHRlc3RzLCBob3dldmVyLgorICAgICAgICBzZWxm
LmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vX3Rlc3QuY3BwJywgc3RhdGVtZW50LCAn
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvb191bml0dGVz
dC5jcHAnLCBzdGF0ZW1lbnQsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxl
c19jaGVjaygnZm9vX3JlZ3Rlc3QuY3BwJywgc3RhdGVtZW50LCAnJykKKworICAgICMgV2UgY2Fu
bm90IHRlc3QgdGhpcyBmdW5jdGlvbmFsaXR5IGJlY2F1c2Ugb2YgZGlmZmVyZW5jZSBvZgorICAg
ICMgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBBbnl3YXksIHdlIG1heSBuZXZlciBlbmFibGUgdGhp
cy4KKyAgICAjCisgICAgIyAjIFRlc3QgZm9yIHVubmFtZWQgYXJndW1lbnRzIGluIGEgbWV0aG9k
LgorICAgICMgZGVmIHRlc3RfY2hlY2tfZm9yX3VubmFtZWRfcGFyYW1zKHNlbGYpOgorICAgICMg
ICBtZXNzYWdlID0gKCdBbGwgcGFyYW1ldGVycyBzaG91bGQgYmUgbmFtZWQgaW4gYSBmdW5jdGlv
bicKKyAgICAjICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvZnVuY3Rpb25dIFszXScpCisg
ICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZpcnR1YWwgdm9pZCBBKGludCopIGNvbnN0OycsIG1l
c3NhZ2UpCisgICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZpcnR1YWwgdm9pZCBCKHZvaWQgKCpm
bikoaW50KikpOycsIG1lc3NhZ2UpCisgICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZpcnR1YWwg
dm9pZCBDKGludCopOycsIG1lc3NhZ2UpCisgICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQg
KigqZikodm9pZCAqKSA9IHg7JywgbWVzc2FnZSkKKyAgICAjICAgc2VsZi5hc3NlcnRfbGludCgn
dm9pZCBNZXRob2QoY2hhciopIHsnLCBtZXNzYWdlKQorICAgICMgICBzZWxmLmFzc2VydF9saW50
KCd2b2lkIE1ldGhvZChjaGFyKik7JywgbWVzc2FnZSkKKyAgICAjICAgc2VsZi5hc3NlcnRfbGlu
dCgndm9pZCBNZXRob2QoY2hhciogLyp4Ki8pOycsIG1lc3NhZ2UpCisgICAgIyAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ3R5cGVkZWYgdm9pZCAoKk1ldGhvZCkoaW50MzIpOycsIG1lc3NhZ2UpCisgICAg
IyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0YXRpYyB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQq
KSB0aHJvdygpOycsIG1lc3NhZ2UpCisgICAgIyAKKyAgICAjICAgc2VsZi5hc3NlcnRfbGludCgn
dmlydHVhbCB2b2lkIEQoaW50KiBwKTsnLCAnJykKKyAgICAjICAgc2VsZi5hc3NlcnRfbGludCgn
dm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogeCkgdGhyb3coKTsnLCAnJykKKyAgICAjICAgc2Vs
Zi5hc3NlcnRfbGludCgndm9pZCBNZXRob2QoY2hhciogeClcbnsnLCAnJykKKyAgICAjICAgc2Vs
Zi5hc3NlcnRfbGludCgndm9pZCBNZXRob2QoY2hhciogLyp4Ki8pXG57JywgJycpCisgICAgIyAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgTWV0aG9kKGNoYXIqIHgpOycsICcnKQorICAgICMgICBz
ZWxmLmFzc2VydF9saW50KCd0eXBlZGVmIHZvaWQgKCpNZXRob2QpKGludDMyIHgpOycsICcnKQor
ICAgICMgICBzZWxmLmFzc2VydF9saW50KCdzdGF0aWMgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2
b2lkKiB4KSB0aHJvdygpOycsICcnKQorICAgICMgICBzZWxmLmFzc2VydF9saW50KCdzdGF0aWMg
dm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiAvKngqLykgdGhyb3coKTsnLCAnJykKKyAgICAj
IAorICAgICMgICAjIFRoaXMgb25lIHNob3VsZCB0ZWNobmljYWxseSB3YXJuLCBidXQgZG9lc24n
dCBiZWNhdXNlIHRoZSBmdW5jdGlvbgorICAgICMgICAjIHBvaW50ZXIgaXMgY29uZnVzaW5nLgor
ICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2aXJ0dWFsIHZvaWQgRSh2b2lkICgqZm4pKGludCog
cCkpOycsICcnKQorCisgICAgIyBUZXN0IGRlcHJlY2F0ZWQgY2FzdHMgc3VjaCBhcyBpbnQoZCkK
KyAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2Nhc3Qoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoCisgICAgICAgICAgICAnaW50IGEgPSBpbnQoMi4yKTsnLAorICAgICAgICAgICAgJ1Vz
aW5nIGRlcHJlY2F0ZWQgY2FzdGluZyBzdHlsZS4gICcKKyAgICAgICAgICAgICdVc2Ugc3RhdGlj
X2Nhc3Q8aW50PiguLi4pIGluc3RlYWQnCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2Fz
dGluZ10gWzRdJykKKyAgICAgICAgIyBDaGVja3MgZm9yIGZhbHNlIHBvc2l0aXZlcy4uLgorICAg
ICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2ludCBhID0gaW50KCk7IC8vIENv
bnN0cnVjdG9yLCBvLmsuJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KAorICAgICAgICAgICAgJ1g6OlgoKSA6IGEoaW50KCkpIHt9IC8vIGRlZmF1bHQgQ29uc3Ry
dWN0b3IsIG8uay4nLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
CisgICAgICAgICAgICAnb3BlcmF0b3IgYm9vbCgpOyAvLyBDb252ZXJzaW9uIG9wZXJhdG9yLCBv
LmsuJywKKyAgICAgICAgICAgICcnKQorCisgICAgIyBUaGUgc2Vjb25kIHBhcmFtZXRlciB0byBh
IGdNb2NrIG1ldGhvZCBkZWZpbml0aW9uIGlzIGEgZnVuY3Rpb24gc2lnbmF0dXJlCisgICAgIyB0
aGF0IG9mdGVuIGxvb2tzIGxpa2UgYSBiYWQgY2FzdCBidXQgc2hvdWxkIG5vdCBwaWNrZWQgdXAg
YnkgbGludC4KKyAgICBkZWYgdGVzdF9tb2NrX21ldGhvZChzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKKyAgICAgICAgICAgICdNT0NLX01FVEhPRDAobWV0aG9kLCBpbnQoKSk7JywK
KyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAg
J01PQ0tfQ09OU1RfTUVUSE9EMShtZXRob2QsIGZsb2F0KHN0cmluZykpOycsCisgICAgICAgICAg
ICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdNT0NLX0NPTlNU
X01FVEhPRDJfVChtZXRob2QsIGRvdWJsZShmbG9hdCwgZmxvYXQpKTsnLAorICAgICAgICAgICAg
JycpCisKKyAgICAjIFRlc3Qgc2l6ZW9mKHR5cGUpIGNhc2VzLgorICAgIGRlZiB0ZXN0X3NpemVv
Zl90eXBlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ3Np
emVvZihpbnQpOycsCisgICAgICAgICAgICAnVXNpbmcgc2l6ZW9mKHR5cGUpLiAgVXNlIHNpemVv
Zih2YXJuYW1lKSBpbnN0ZWFkIGlmIHBvc3NpYmxlJworICAgICAgICAgICAgJyAgW3J1bnRpbWUv
c2l6ZW9mXSBbMV0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ3Np
emVvZihpbnQgKik7JywKKyAgICAgICAgICAgICdVc2luZyBzaXplb2YodHlwZSkuICBVc2Ugc2l6
ZW9mKHZhcm5hbWUpIGluc3RlYWQgaWYgcG9zc2libGUnCisgICAgICAgICAgICAnICBbcnVudGlt
ZS9zaXplb2ZdIFsxXScpCisKKyAgICAjIFRlc3QgdHlwZWRlZiBjYXNlcy4gIFRoZXJlIHdhcyBh
IGJ1ZyB0aGF0IGNwcF9zdHlsZSBtaXNpZGVudGlmaWVkCisgICAgIyB0eXBlZGVmIGZvciBwb2lu
dGVyIHRvIGZ1bmN0aW9uIGFzIEMtc3R5bGUgY2FzdCBhbmQgcHJvZHVjZWQKKyAgICAjIGZhbHNl
LXBvc2l0aXZlIGVycm9yIG1lc3NhZ2VzLgorICAgIGRlZiB0ZXN0X3R5cGVkZWZfZm9yX3BvaW50
ZXJfdG9fZnVuY3Rpb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAg
ICAgICAndHlwZWRlZiB2b2lkICgqRnVuYykoaW50IHgpOycsCisgICAgICAgICAgICAnJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICd0eXBlZGVmIHZvaWQgKCpGdW5j
KShpbnQgKngpOycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgK
KyAgICAgICAgICAgICd0eXBlZGVmIHZvaWQgRnVuYyhpbnQgeCk7JywKKyAgICAgICAgICAgICcn
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ3R5cGVkZWYgdm9pZCBG
dW5jKGludCAqeCk7JywKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfaW5jbHVkZV93
aGF0X3lvdV91c2Vfbm9faW1wbGVtZW50YXRpb25fZmlsZXMoc2VsZik6CisgICAgICAgIGNvZGUg
PSAnc3RkOjp2ZWN0b3I8aW50PiBmb287JworICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnQWRk
ICNpbmNsdWRlIDx2ZWN0b3I+IGZvciB2ZWN0b3I8PicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgJyAgW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLnBlcmZvcm1faW5jbHVkZV93aGF0X3lvdV91c2UoY29kZSwgJ2Zvby5o
JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCcnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLnBlcmZvcm1faW5jbHVkZV93aGF0X3lvdV91c2UoY29kZSwgJ2Zvby5jcHAnKSkK
KworICAgIGRlZiB0ZXN0X2luY2x1ZGVfd2hhdF95b3VfdXNlKHNlbGYpOgorICAgICAgICBzZWxm
LmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcnJyNpbmNsdWRlIDx2
ZWN0b3I+CisgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+IGZvbzsKKyAgICAgICAgICAg
ICcnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRf
eW91X3VzZSgKKyAgICAgICAgICAgICcnJyNpbmNsdWRlIDxtYXA+CisgICAgICAgICAgICAgICBz
dGQ6OnBhaXI8aW50LGludD4gZm9vOworICAgICAgICAgICAgJycnLAorICAgICAgICAgICAgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAgICAg
JycnI2luY2x1ZGUgPG11bHRpbWFwPgorICAgICAgICAgICAgICAgc3RkOjpwYWlyPGludCxpbnQ+
IGZvbzsKKyAgICAgICAgICAgICcnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFz
c2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcnJyNpbmNsdWRlIDxoYXNo
X21hcD4KKyAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxpbnQsaW50PiBmb287CisgICAgICAgICAg
ICAnJycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0
X3lvdV91c2UoCisgICAgICAgICAgICAnJycjaW5jbHVkZSA8dXRpbGl0eT4KKyAgICAgICAgICAg
ICAgIHN0ZDo6cGFpcjxpbnQsaW50PiBmb287CisgICAgICAgICAgICAnJycsCisgICAgICAgICAg
ICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAg
ICAgICAnJycjaW5jbHVkZSA8dmVjdG9yPgorICAgICAgICAgICAgICAgREVDTEFSRV9zdHJpbmco
Zm9vYmFyKTsKKyAgICAgICAgICAgICcnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxm
LmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcnJyNpbmNsdWRlIDx2
ZWN0b3I+CisgICAgICAgICAgICAgICBERUZJTkVfc3RyaW5nKGZvb2JhciwgIiIsICIiKTsKKyAg
ICAgICAgICAgICcnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9pbmNs
dWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcnJyNpbmNsdWRlIDx2ZWN0b3I+CisgICAg
ICAgICAgICAgICBzdGQ6OnBhaXI8aW50LGludD4gZm9vOworICAgICAgICAgICAgJycnLAorICAg
ICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8dXRpbGl0eT4gZm9yIHBhaXI8PicKKyAgICAgICAgICAg
ICcgIFtidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAnJycjaW5jbHVkZSAiYmFzZS9m
b29iYXIuaCIKKyAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGludD4gZm9vOworICAgICAgICAg
ICAgJycnLAorICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8dmVjdG9yPiBmb3IgdmVjdG9yPD4n
CisgICAgICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAgICAgJycnI2lu
Y2x1ZGUgPHZlY3Rvcj4KKyAgICAgICAgICAgICAgIHN0ZDo6c2V0PGludD4gZm9vOworICAgICAg
ICAgICAgJycnLAorICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8c2V0PiBmb3Igc2V0PD4nCisg
ICAgICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAgICAgJycnI2luY2x1
ZGUgImJhc2UvZm9vYmFyLmgiCisgICAgICAgICAgICAgIGhhc2hfbWFwPGludCwgaW50PiBmb29i
YXI7CisgICAgICAgICAgICAnJycsCisgICAgICAgICAgICAnQWRkICNpbmNsdWRlIDxoYXNoX21h
cD4gZm9yIGhhc2hfbWFwPD4nCisgICAgICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV93aGF0X3lv
dV91c2VdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAor
ICAgICAgICAgICAgJycnI2luY2x1ZGUgImJhc2UvZm9vYmFyLmgiCisgICAgICAgICAgICAgICBi
b29sIGZvb2JhciA9IHN0ZDo6bGVzczxpbnQ+KDAsMSk7CisgICAgICAgICAgICAnJycsCisgICAg
ICAgICAgICAnQWRkICNpbmNsdWRlIDxmdW5jdGlvbmFsPiBmb3IgbGVzczw+JworICAgICAgICAg
ICAgJyAgW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQorICAgICAgICBzZWxmLmFz
c2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcnJyNpbmNsdWRlICJiYXNl
L2Zvb2Jhci5oIgorICAgICAgICAgICAgICAgYm9vbCBmb29iYXIgPSBtaW48aW50PigwLDEpOwor
ICAgICAgICAgICAgJycnLAorICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8YWxnb3JpdGhtPiBm
b3IgbWluICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAgICAgJ3ZvaWQgYShjb25zdCBz
dHJpbmcgJmZvb2Jhcik7JywKKyAgICAgICAgICAgICdBZGQgI2luY2x1ZGUgPHN0cmluZz4gZm9y
IHN0cmluZyAgW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQorICAgICAgICBzZWxm
LmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcnJyNpbmNsdWRlICJi
YXNlL2Zvb2Jhci5oIgorICAgICAgICAgICAgICAgYm9vbCBmb29iYXIgPSBzd2FwKDAsMSk7Cisg
ICAgICAgICAgICAnJycsCisgICAgICAgICAgICAnQWRkICNpbmNsdWRlIDxhbGdvcml0aG0+IGZv
ciBzd2FwICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAgICAgJycnI2luY2x1ZGUgImJh
c2UvZm9vYmFyLmgiCisgICAgICAgICAgICAgICBib29sIGZvb2JhciA9IHRyYW5zZm9ybShhLmJl
Z2luKCksIGEuZW5kKCksIGIuc3RhcnQoKSwgRm9vKTsKKyAgICAgICAgICAgICcnJywKKyAgICAg
ICAgICAgICdBZGQgI2luY2x1ZGUgPGFsZ29yaXRobT4gZm9yIHRyYW5zZm9ybSAgJworICAgICAg
ICAgICAgJ1tidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAnJycjaW5jbHVkZSAiYmFz
ZS9mb29iYXIuaCIKKyAgICAgICAgICAgICAgIGJvb2wgZm9vYmFyID0gbWluX2VsZW1lbnQoYS5i
ZWdpbigpLCBhLmVuZCgpKTsKKyAgICAgICAgICAgICcnJywKKyAgICAgICAgICAgICdBZGQgI2lu
Y2x1ZGUgPGFsZ29yaXRobT4gZm9yIG1pbl9lbGVtZW50ICAnCisgICAgICAgICAgICAnW2J1aWxk
L2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRl
X3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcnJ2Zvby0+c3dhcCgwLDEpOworICAgICAgICAg
ICAgICAgZm9vLnN3YXAoMCwxKTsKKyAgICAgICAgICAgICcnJywKKyAgICAgICAgICAgICcnKQor
ICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcn
JyNpbmNsdWRlIDxzdHJpbmc+CisgICAgICAgICAgICAgICB2b2lkIGEoY29uc3Qgc3RkOjptdWx0
aW1hcDxpbnQsc3RyaW5nPiAmZm9vYmFyKTsKKyAgICAgICAgICAgICcnJywKKyAgICAgICAgICAg
ICdBZGQgI2luY2x1ZGUgPG1hcD4gZm9yIG11bHRpbWFwPD4nCisgICAgICAgICAgICAnICBbYnVp
bGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1
ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAgICAgJycnI2luY2x1ZGUgPHF1ZXVlPgorICAgICAg
ICAgICAgICAgdm9pZCBhKGNvbnN0IHN0ZDo6cHJpb3JpdHlfcXVldWU8aW50PiAmZm9vYmFyKTsK
KyAgICAgICAgICAgICcnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9p
bmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICAnJycjaW5jbHVkZSAiYmFzZS9iYXNp
Y3R5cGVzLmgiCisgICAgICAgICAgICAgICAgI2luY2x1ZGUgImJhc2UvcG9ydC5oIgorICAgICAg
ICAgICAgICAgICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAgICAgICAgICAgICAgICAjaW5jbHVkZSA8
c3RyaW5nPgorICAgICAgICAgICAgICAgICNpbmNsdWRlIDx2ZWN0b3I+CisgICAgICAgICAgICAg
ICAgdmVjdG9yPHN0cmluZz4gaGFqb2E7JycnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfaW5j
bHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAnJycjaW5jbHVkZSA8c3RyaW5nPgorICAg
ICAgICAgICAgICAgaW50IGkgPSBudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKQorICAgICAgICAg
ICAgJycnLAorICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8bGltaXRzPiBmb3IgbnVtZXJpY19s
aW1pdHM8PicKKyAgICAgICAgICAgICcgIFtidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRd
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAg
ICAnJycjaW5jbHVkZSA8bGltaXRzPgorICAgICAgICAgICAgICAgaW50IGkgPSBudW1lcmljX2xp
bWl0czxpbnQ+OjptYXgoKQorICAgICAgICAgICAgJycnLAorICAgICAgICAgICAgJycpCisKKyAg
ICAgICAgIyBUZXN0IHRoZSBVcGRhdGVJbmNsdWRlU3RhdGUgY29kZSBwYXRoLgorICAgICAgICBt
b2NrX2hlYWRlcl9jb250ZW50cyA9IFsnI2luY2x1ZGUgImJsYWgvZm9vLmgiJywgJyNpbmNsdWRl
ICJibGFoL2Jhci5oIiddCisgICAgICAgIG1lc3NhZ2UgPSBzZWxmLnBlcmZvcm1faW5jbHVkZV93
aGF0X3lvdV91c2UoCisgICAgICAgICAgICAnI2luY2x1ZGUgImNvbmZpZy5oIlxuJworICAgICAg
ICAgICAgJyNpbmNsdWRlICJibGFoL2EuaCJcbicsCisgICAgICAgICAgICBmaWxlbmFtZT0nYmxh
aC9hLmNwcCcsCisgICAgICAgICAgICBpbz1Nb2NrSW8obW9ja19oZWFkZXJfY29udGVudHMpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtZXNzYWdlLCAnJykKKworICAgICAgICBtb2NrX2hl
YWRlcl9jb250ZW50cyA9IFsnI2luY2x1ZGUgPHNldD4nXQorICAgICAgICBtZXNzYWdlID0gc2Vs
Zi5wZXJmb3JtX2luY2x1ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAgICAgJycnI2luY2x1ZGUg
ImNvbmZpZy5oIgorICAgICAgICAgICAgICAgI2luY2x1ZGUgImJsYWgvYS5oIgorCisgICAgICAg
ICAgICAgICBzdGQ6OnNldDxpbnQ+IGZvbzsnJycsCisgICAgICAgICAgICBmaWxlbmFtZT0nYmxh
aC9hLmNwcCcsCisgICAgICAgICAgICBpbz1Nb2NrSW8obW9ja19oZWFkZXJfY29udGVudHMpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtZXNzYWdlLCAnJykKKworICAgICAgICAjIElmIHRo
ZXJlJ3MganVzdCBhIC5jcHAgYW5kIHRoZSBoZWFkZXIgY2FuJ3QgYmUgZm91bmQgdGhlbiBpdCdz
IG9rLgorICAgICAgICBtZXNzYWdlID0gc2VsZi5wZXJmb3JtX2luY2x1ZGVfd2hhdF95b3VfdXNl
KAorICAgICAgICAgICAgJycnI2luY2x1ZGUgImNvbmZpZy5oIgorICAgICAgICAgICAgICAgI2lu
Y2x1ZGUgImJsYWgvYS5oIgorCisgICAgICAgICAgICAgICBzdGQ6OnNldDxpbnQ+IGZvbzsnJycs
CisgICAgICAgICAgICBmaWxlbmFtZT0nYmxhaC9hLmNwcCcpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKG1lc3NhZ2UsICcnKQorCisgICAgICAgICMgTWFrZSBzdXJlIHdlIGZpbmQgdGhlIGhl
YWRlcnMgd2l0aCByZWxhdGl2ZSBwYXRocy4KKyAgICAgICAgbW9ja19oZWFkZXJfY29udGVudHMg
PSBbJyddCisgICAgICAgIG1lc3NhZ2UgPSBzZWxmLnBlcmZvcm1faW5jbHVkZV93aGF0X3lvdV91
c2UoCisgICAgICAgICAgICAnJycjaW5jbHVkZSAiY29uZmlnLmgiCisgICAgICAgICAgICAgICAj
aW5jbHVkZSAiJXMvYS5oIgorCisgICAgICAgICAgICAgICBzdGQ6OnNldDxpbnQ+IGZvbzsnJycg
JSBvcy5wYXRoLmJhc2VuYW1lKG9zLmdldGN3ZCgpKSwKKyAgICAgICAgICAgIGZpbGVuYW1lPSdh
LmNwcCcsCisgICAgICAgICAgICBpbz1Nb2NrSW8obW9ja19oZWFkZXJfY29udGVudHMpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhtZXNzYWdlLCAnQWRkICNpbmNsdWRlIDxzZXQ+IGZvciBz
ZXQ8PiAgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnW2J1aWxkL2luY2x1
ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQorCisgICAgZGVmIHRlc3RfZmlsZXNfYmVsb25nX3RvX3Nh
bWVfbW9kdWxlKHNlbGYpOgorICAgICAgICBmID0gY3BwX3N0eWxlLmZpbGVzX2JlbG9uZ190b19z
YW1lX21vZHVsZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoVHJ1ZSwgJycpLCBmKCdhLmNw
cCcsICdhLmgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICcnKSwgZignYmFz
ZS9nb29nbGUuY3BwJywgJ2Jhc2UvZ29vZ2xlLmgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoKFRydWUsICcnKSwgZignYmFzZS9nb29nbGVfdGVzdC5jcHAnLCAnYmFzZS9nb29nbGUuaCcp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoVHJ1ZSwgJycpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBmKCdiYXNlL2dvb2dsZV91bml0dGVzdC5jcHAnLCAnYmFzZS9nb29nbGUuaCcp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoVHJ1ZSwgJycpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBmKCdiYXNlL2ludGVybmFsL2dvb2dsZV91bml0dGVzdC5jcHAnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdiYXNlL3B1YmxpYy9nb29nbGUuaCcpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygoVHJ1ZSwgJ3h4eC95eXkvJyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGYoJ3h4eC95eXkvYmFzZS9pbnRlcm5hbC9nb29nbGVfdW5pdHRlc3QuY3BwJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFzZS9wdWJsaWMvZ29vZ2xlLmgnKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICd4eHgveXl5LycpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBmKCd4eHgveXl5L2Jhc2UvZ29vZ2xlX3VuaXR0ZXN0LmNwcCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UvcHVibGljL2dvb2dsZS5oJykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKChUcnVlLCAnJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGYo
J2Jhc2UvZ29vZ2xlX3VuaXR0ZXN0LmNwcCcsICdiYXNlL2dvb2dsZS1pbmwuaCcpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscygoVHJ1ZSwgJy9ob21lL2J1aWxkL2dvb2dsZTMvJyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGYoJy9ob21lL2J1aWxkL2dvb2dsZTMvYmFzZS9nb29nbGUu
Y3BwJywgJ2Jhc2UvZ29vZ2xlLmgnKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoRmFs
c2UsICcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZignL2hvbWUvYnVpbGQvZ29vZ2xl
My9iYXNlL2dvb2dsZS5jcHAnLCAnYmFzdS9nb29nbGUuaCcpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygoRmFsc2UsICcnKSwgZignYS5jcHAnLCAnYi5oJykpCisKKyAgICBkZWYgdGVzdF9j
bGVhbnNlX2xpbmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdpbnQgZm9vID0g
MDsgICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5jbGVhbnNlX2NvbW1l
bnRzKCdpbnQgZm9vID0gMDsgIC8vIGRhbmdlciEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoJ2ludCBvID0gMDsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuY2xl
YW5zZV9jb21tZW50cygnaW50IC8qIGZvbyAqLyBvID0gMDsnKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoJ2ZvbyhpbnQgYSwgaW50IGIpOycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGNwcF9zdHlsZS5jbGVhbnNlX2NvbW1lbnRzKCdmb28oaW50IGEgLyogYWJjICovLCBpbnQgYik7
JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2YoYSwgYik7JywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBjcHBfc3R5bGUuY2xlYW5zZV9jb21tZW50cygnZihhLCAvKiBuYW1lICovIGIp
OycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmKGEsIGIpOycsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgY3BwX3N0eWxlLmNsZWFuc2VfY29tbWVudHMoJ2YoYSAvKiBuYW1lICovLCBi
KTsnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZihhLCBiKTsnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGNwcF9zdHlsZS5jbGVhbnNlX2NvbW1lbnRzKCdmKGEsIC8qIG5hbWUgKi9i
KTsnKSkKKworICAgIGRlZiB0ZXN0X211bHRpX2xpbmVfY29tbWVudHMoc2VsZik6CisgICAgICAg
ICMgbWlzc2luZyBleHBsaWNpdCBpcyBiYWQKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KAorICAgICAgICAgICAgcicnJ2ludCBhID0gMDsKKyAgICAgICAgICAgICAgICAvKiBt
dWx0aS1saW5lcgorICAgICAgICAgICAgICAgIGNsYXNzIEZvbyB7CisgICAgICAgICAgICAgICAg
Rm9vKGludCBmKTsgIC8vIHNob3VsZCBjYXVzZSBhIGxpbnQgd2FybmluZyBpbiBjb2RlCisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgKi8gJycnLAorICAgICAgICAnJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgcicnJy8qIGludCBhID0g
MDsgbXVsdGktbGluZXIKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgYiA9IDA7JycnLAor
ICAgICAgJ0NvdWxkIG5vdCBmaW5kIGVuZCBvZiBtdWx0aS1saW5lIGNvbW1lbnQnCisgICAgICAn
ICBbcmVhZGFiaWxpdHkvbXVsdGlsaW5lX2NvbW1lbnRdIFs1XScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X211bHRpX2xpbmVfbGludChyJycnICAgIC8qIG11bHRpLWxpbmUgY29tbWVudCcnJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCBlbmQgb2Yg
bXVsdGktbGluZSBjb21tZW50JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyAgW3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50XSBbNV0nKQorICAgICAgICBzZWxmLmFz
c2VydF9tdWx0aV9saW5lX2xpbnQocicnJyAgICAvLyAvKiBjb21tZW50LCBidXQgbm90IG11bHRp
LWxpbmUnJycsICcnKQorCisgICAgZGVmIHRlc3RfbXVsdGlsaW5lX3N0cmluZ3Moc2VsZik6Cisg
ICAgICAgIG11bHRpbGluZV9zdHJpbmdfZXJyb3JfbWVzc2FnZSA9ICgKKyAgICAgICAgICAgICdN
dWx0aS1saW5lIHN0cmluZyAoIi4uLiIpIGZvdW5kLiAgVGhpcyBsaW50IHNjcmlwdCBkb2Vzblwn
dCAnCisgICAgICAgICAgICAnZG8gd2VsbCB3aXRoIHN1Y2ggc3RyaW5ncywgYW5kIG1heSBnaXZl
IGJvZ3VzIHdhcm5pbmdzLiAgVGhleVwncmUgJworICAgICAgICAgICAgJ3VnbHkgYW5kIHVubmVj
ZXNzYXJ5LCBhbmQgeW91IHNob3VsZCB1c2UgY29uY2F0ZW5hdGlvbiBpbnN0ZWFkIi4nCisgICAg
ICAgICAgICAnICBbcmVhZGFiaWxpdHkvbXVsdGlsaW5lX3N0cmluZ10gWzVdJykKKworICAgICAg
ICBmaWxlX3BhdGggPSAnbXlkaXIvZm9vLmNwcCcKKworICAgICAgICBlcnJvcl9jb2xsZWN0b3Ig
PSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisgICAgICAgIHNlbGYucHJvY2Vzc19maWxl
X2RhdGEoZmlsZV9wYXRoLCAnY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
J2NvbnN0IGNoYXIqIHN0ciA9ICJUaGlzIGlzIGFcXCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcgbXVsdGlsaW5lIHN0cmluZy4iOyddLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisg
ICAgICAgICAgICAyLCAgIyBPbmUgcGVyIGxpbmUuCisgICAgICAgICAgICBlcnJvcl9jb2xsZWN0
b3IucmVzdWx0X2xpc3QoKS5jb3VudChtdWx0aWxpbmVfc3RyaW5nX2Vycm9yX21lc3NhZ2UpKQor
CisgICAgIyBUZXN0IG5vbi1leHBsaWNpdCBzaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzCisg
ICAgZGVmIHRlc3RfZXhwbGljaXRfc2luZ2xlX2FyZ3VtZW50X2NvbnN0cnVjdG9ycyhzZWxmKToK
KyAgICAgICAgIyBtaXNzaW5nIGV4cGxpY2l0IGlzIGJhZAorICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnJydjbGFzcyBGb28geworICAgICAgICAgICAg
ICAgICBGb28oaW50IGYpOworICAgICAgICAgICAgICAgfTsnJycsCisgICAgICAgICAgICAnU2lu
Z2xlLWFyZ3VtZW50IGNvbnN0cnVjdG9ycyBzaG91bGQgYmUgbWFya2VkIGV4cGxpY2l0LicKKyAg
ICAgICAgICAgICcgIFtydW50aW1lL2V4cGxpY2l0XSBbNV0nKQorICAgICAgICAjIG1pc3Npbmcg
ZXhwbGljaXQgaXMgYmFkLCBldmVuIHdpdGggd2hpdGVzcGFjZQorICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnJydjbGFzcyBGb28geworICAgICAgICAg
ICAgICAgICBGb28gKGludCBmKTsKKyAgICAgICAgICAgICAgIH07JycnLAorICAgICAgICAgICAg
WydFeHRyYSBzcGFjZSBiZWZvcmUgKCBpbiBmdW5jdGlvbiBjYWxsICBbd2hpdGVzcGFjZS9wYXJl
bnNdIFs0XScsCisgICAgICAgICAgICAgJ1NpbmdsZS1hcmd1bWVudCBjb25zdHJ1Y3RvcnMgc2hv
dWxkIGJlIG1hcmtlZCBleHBsaWNpdC4nCisgICAgICAgICAgICAgJyAgW3J1bnRpbWUvZXhwbGlj
aXRdIFs1XSddKQorICAgICAgICAjIG1pc3NpbmcgZXhwbGljaXQsIHdpdGggZGlzdHJhY3Rpbmcg
Y29tbWVudCwgaXMgc3RpbGwgYmFkCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKKyAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7CisgICAgICAgICAgICAgICAgIEZvbyhpbnQg
Zik7IC8vIHNpbXBsZXIgdGhhbiBGb28oYmxhcmdoLCBibGFyZykKKyAgICAgICAgICAgICAgIH07
JycnLAorICAgICAgICAgICAgJ1NpbmdsZS1hcmd1bWVudCBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJl
IG1hcmtlZCBleHBsaWNpdC4nCisgICAgICAgICAgICAnICBbcnVudGltZS9leHBsaWNpdF0gWzVd
JykKKyAgICAgICAgIyBtaXNzaW5nIGV4cGxpY2l0LCB3aXRoIHF1YWxpZmllZCBjbGFzc25hbWUK
KyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnY2xh
c3MgUXVhbGlmaWVyOjpBbm90aGVyT25lOjpGb28geworICAgICAgICAgICAgICAgICBGb28oaW50
IGYpOworICAgICAgICAgICAgICAgfTsnJycsCisgICAgICAgICAgICAnU2luZ2xlLWFyZ3VtZW50
IGNvbnN0cnVjdG9ycyBzaG91bGQgYmUgbWFya2VkIGV4cGxpY2l0LicKKyAgICAgICAgICAgICcg
IFtydW50aW1lL2V4cGxpY2l0XSBbNV0nKQorICAgICAgICAjIHN0cnVjdHMgYXJlIGNhdWdodCBh
cyB3ZWxsLgorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAg
ICAnJydzdHJ1Y3QgRm9vIHsKKyAgICAgICAgICAgICAgICAgRm9vKGludCBmKTsKKyAgICAgICAg
ICAgICAgIH07JycnLAorICAgICAgICAgICAgJ1NpbmdsZS1hcmd1bWVudCBjb25zdHJ1Y3RvcnMg
c2hvdWxkIGJlIG1hcmtlZCBleHBsaWNpdC4nCisgICAgICAgICAgICAnICBbcnVudGltZS9leHBs
aWNpdF0gWzVdJykKKyAgICAgICAgIyBUZW1wbGF0aXplZCBjbGFzc2VzIGFyZSBjYXVnaHQgYXMg
d2VsbC4KKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAg
JycndGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgRm9vIHsKKyAgICAgICAgICAgICAgICAgRm9v
KGludCBmKTsKKyAgICAgICAgICAgICAgIH07JycnLAorICAgICAgICAgICAgJ1NpbmdsZS1hcmd1
bWVudCBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJlIG1hcmtlZCBleHBsaWNpdC4nCisgICAgICAgICAg
ICAnICBbcnVudGltZS9leHBsaWNpdF0gWzVdJykKKyAgICAgICAgIyBwcm9wZXIgc3R5bGUgaXMg
b2theQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAn
JydjbGFzcyBGb28geworICAgICAgICAgICAgICAgICBleHBsaWNpdCBGb28oaW50IGYpOworICAg
ICAgICAgICAgICAgfTsnJycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgIyB0d28gYXJndW1l
bnQgY29uc3RydWN0b3IgaXMgb2theQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xp
bnQoCisgICAgICAgICAgICAnJydjbGFzcyBGb28geworICAgICAgICAgICAgICAgICBGb28oaW50
IGYsIGludCBiKTsKKyAgICAgICAgICAgICAgIH07JycnLAorICAgICAgICAgICAgJycpCisgICAg
ICAgICMgdHdvIGFyZ3VtZW50IGNvbnN0cnVjdG9yLCBhY3Jvc3MgdHdvIGxpbmVzLCBpcyBva2F5
CisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ2Ns
YXNzIEZvbyB7CisgICAgICAgICAgICAgICAgIEZvbyhpbnQgZiwKKyAgICAgICAgICAgICAgICAg
ICAgIGludCBiKTsKKyAgICAgICAgICAgICAgIH07JycnLAorICAgICAgICAgICAgJycpCisgICAg
ICAgICMgbm9uLWNvbnN0cnVjdG9yIChidXQgc2ltaWxhciBuYW1lKSwgaXMgb2theQorICAgICAg
ICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnJydjbGFzcyBGb28g
eworICAgICAgICAgICAgICAgICBhRm9vKGludCBmKTsKKyAgICAgICAgICAgICAgIH07JycnLAor
ICAgICAgICAgICAgJycpCisgICAgICAgICMgY29uc3RydWN0b3Igd2l0aCB2b2lkIGFyZ3VtZW50
IGlzIG9rYXkKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAg
ICAgJycnY2xhc3MgRm9vIHsKKyAgICAgICAgICAgICAgICAgRm9vKHZvaWQpOworICAgICAgICAg
ICAgICAgfTsnJycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgIyBzaW5nbGUgYXJndW1lbnQg
bWV0aG9kIGlzIG9rYXkKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAg
ICAgICAgICAgJycnY2xhc3MgRm9vIHsKKyAgICAgICAgICAgICAgICAgQmFyKGludCBiKTsKKyAg
ICAgICAgICAgICAgIH07JycnLAorICAgICAgICAgICAgJycpCisgICAgICAgICMgY29tbWVudHMg
c2hvdWxkIGJlIGlnbm9yZWQKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAor
ICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKKyAgICAgICAgICAgICAgIC8vIEZvbyhpbnQgZik7
CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICAjIHNpbmds
ZSBhcmd1bWVudCBmdW5jdGlvbiBmb2xsb3dpbmcgY2xhc3MgZGVmaW5pdGlvbiBpcyBva2F5Cisg
ICAgICAgICMgKG9rYXksIGl0J3Mgbm90IGFjdHVhbGx5IHZhbGlkLCBidXQgd2UgZG9uJ3Qgd2Fu
dCBhIGZhbHNlIHBvc2l0aXZlKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQo
CisgICAgICAgICAgICAnJydjbGFzcyBGb28geworICAgICAgICAgICAgICAgICBGb28oaW50IGYs
IGludCBiKTsKKyAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICBGb28oaW50IGYpOycn
JywKKyAgICAgICAgICAgICcnKQorICAgICAgICAjIHNpbmdsZSBhcmd1bWVudCBmdW5jdGlvbiBp
cyBva2F5CisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAg
ICcnJ3N0YXRpYyBGb28oaW50IGYpOycnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICAjIHNp
bmdsZSBhcmd1bWVudCBjb3B5IGNvbnN0cnVjdG9yIGlzIG9rYXkuCisgICAgICAgIHNlbGYuYXNz
ZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7CisgICAgICAg
ICAgICAgICAgIEZvbyhjb25zdCBGb28mKTsKKyAgICAgICAgICAgICAgIH07JycnLAorICAgICAg
ICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAg
ICAgICcnJ2NsYXNzIEZvbyB7CisgICAgICAgICAgICAgICAgIEZvbyhGb28mKTsKKyAgICAgICAg
ICAgICAgIH07JycnLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9zbGFzaF9zdGFy
X2NvbW1lbnRfb25fc2luZ2xlX2xpbmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRp
X2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJy8qIHN0YXRpYyAqLyBGb28oaW50IGYpOycnJywK
KyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisg
ICAgICAgICAgICAnJycvKi8gc3RhdGljICovICBGb28oaW50IGYpOycnJywKKyAgICAgICAgICAg
ICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAn
JycvKi8gc3RhdGljIEZvbyhpbnQgZik7JycnLAorICAgICAgICAgICAgJ0NvdWxkIG5vdCBmaW5k
IGVuZCBvZiBtdWx0aS1saW5lIGNvbW1lbnQnCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkv
bXVsdGlsaW5lX2NvbW1lbnRdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKKyAgICAgICAgICAgICcnJyAgICAvKi8gc3RhdGljIEZvbyhpbnQgZik7JycnLAorICAg
ICAgICAgICAgJ0NvdWxkIG5vdCBmaW5kIGVuZCBvZiBtdWx0aS1saW5lIGNvbW1lbnQnCisgICAg
ICAgICAgICAnICBbcmVhZGFiaWxpdHkvbXVsdGlsaW5lX2NvbW1lbnRdIFs1XScpCisgICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJyAgICAvKiovIHN0
YXRpYyBGb28oaW50IGYpOycnJywKKyAgICAgICAgICAgICcnKQorCisgICAgIyBUZXN0IHN1c3Bp
Y2lvdXMgdXNhZ2Ugb2YgImlmIiBsaWtlIHRoaXM6CisgICAgIyBpZiAoYSA9PSBiKSB7CisgICAg
IyAgIERvU29tZXRoaW5nKCk7CisgICAgIyB9IGlmIChhID09IGMpIHsgICAvLyBTaG91bGQgYmUg
ImVsc2UgaWYiLgorICAgICMgICBEb1NvbWV0aGluZygpOyAgLy8gVGhpcyBnZXRzIGNhbGxlZCB0
d2ljZSBpZiBhID09IGIgJiYgYSA9PSBjLgorICAgICMgfQorICAgIGRlZiB0ZXN0X3N1c3BpY2lv
dXNfdXNhZ2Vfb2ZfaWYoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAg
ICAgICAnICAgIGlmIChhID09IGIpIHsnLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnICAgIH0gaWYgKGEgPT0gYikgeycsCisgICAgICAg
ICAgICAnRGlkIHlvdSBtZWFuICJlbHNlIGlmIj8gSWYgbm90LCBzdGFydCBhIG5ldyBsaW5lIGZv
ciAiaWYiLicKKyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9icmFjZXNdIFs0XScpCisKKyAg
ICAjIFRlc3Qgc3VzcGljaW91cyB1c2FnZSBvZiBtZW1zZXQuIFNwZWNpZmljYWxseSwgYSAwCisg
ICAgIyBhcyB0aGUgZmluYWwgYXJndW1lbnQgaXMgYWxtb3N0IGNlcnRhaW5seSBhbiBlcnJvci4K
KyAgICBkZWYgdGVzdF9zdXNwaWNpb3VzX3VzYWdlX29mX21lbXNldChzZWxmKToKKyAgICAgICAg
IyBOb3JtYWwgdXNlIGlzIG9rYXkuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAg
ICAgICAnICAgIG1lbXNldChidWYsIDAsIHNpemVvZihidWYpKScsCisgICAgICAgICAgICAnJykK
KworICAgICAgICAjIEEgMCBhcyB0aGUgZmluYWwgYXJndW1lbnQgaXMgYWxtb3N0IGNlcnRhaW5s
eSBhbiBlcnJvci4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICcgICAg
bWVtc2V0KGJ1Ziwgc2l6ZW9mKGJ1ZiksIDApJywKKyAgICAgICAgICAgICdEaWQgeW91IG1lYW4g
Im1lbXNldChidWYsIDAsIHNpemVvZihidWYpKSI/JworICAgICAgICAgICAgJyAgW3J1bnRpbWUv
bWVtc2V0XSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJyAg
ICBtZW1zZXQoYnVmLCB4c2l6ZSAqIHlzaXplLCAwKScsCisgICAgICAgICAgICAnRGlkIHlvdSBt
ZWFuICJtZW1zZXQoYnVmLCAwLCB4c2l6ZSAqIHlzaXplKSI/JworICAgICAgICAgICAgJyAgW3J1
bnRpbWUvbWVtc2V0XSBbNF0nKQorCisgICAgICAgICMgVGhlcmUgaXMgbGVnaXRpbWF0ZSB0ZXN0
IGNvZGUgdGhhdCB1c2VzIHRoaXMgZm9ybS4KKyAgICAgICAgIyBUaGlzIGlzIG9rYXkgc2luY2Ug
dGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIGxpdGVyYWwuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoCisgICAgICAgICAgICAiICAgIG1lbXNldChidWYsICd5JywgMCkiLAorICAgICAgICAgICAg
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnICAgIG1lbXNldChi
dWYsIDQsIDApJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAor
ICAgICAgICAgICAgJyAgICBtZW1zZXQoYnVmLCAtMSwgMCknLAorICAgICAgICAgICAgJycpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnICAgIG1lbXNldChidWYsIDB4
RjEsIDApJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAg
ICAgICAgICAgJyAgICBtZW1zZXQoYnVmLCAweGNkLCAwKScsCisgICAgICAgICAgICAnJykKKwor
ICAgIGRlZiB0ZXN0X2NoZWNrX3Bvc2l4X3RocmVhZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnc2N0aW1lX3IoKScsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdz
dHJ0b2tfcigpJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgICBzdHJ0b2tfcihm
b28sIGJhLCByKScsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdicmFuZCgpJywgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ19yYW5kKCknLCAnJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnLnJhbmQoKScsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCc+cmFu
ZCgpJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3JhbmQoKScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIHJhbmRfciguLi4pIGluc3RlYWQgb2YgcmFu
ZCguLi4pJworICAgICAgICAgICAgICAgICAgICAgICAgICcgZm9yIGltcHJvdmVkIHRocmVhZCBz
YWZldHkuJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtydW50aW1lL3RocmVhZHNhZmVf
Zm5dIFsyXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cnRvaygpJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgc3RydG9rX3IoLi4uKSAnCisgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2luc3RlYWQgb2Ygc3RydG9rKC4uLiknCisgICAgICAgICAgICAg
ICAgICAgICAgICAgJyBmb3IgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eS4nCisgICAgICAgICAgICAg
ICAgICAgICAgICAgJyAgW3J1bnRpbWUvdGhyZWFkc2FmZV9mbl0gWzJdJykKKworICAgICMgVGVz
dCBwb3RlbnRpYWwgZm9ybWF0IHN0cmluZyBidWdzIGxpa2UgcHJpbnRmKGZvbykuCisgICAgZGVm
IHRlc3RfZm9ybWF0X3N0cmluZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3By
aW50ZigiZm9vIiknLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgncHJpbnRmKCJmb286
ICVzIiwgZm9vKScsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdEb2NpZEZvclByaW50
Zihkb2NpZCknLCAnJykgICMgU2hvdWxkIG5vdCB0cmlnZ2VyLgorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KAorICAgICAgICAgICAgJ3ByaW50Zihmb28pJywKKyAgICAgICAgICAgICdQb3RlbnRp
YWwgZm9ybWF0IHN0cmluZyBidWcuIERvIHByaW50ZigiJXMiLCBmb28pIGluc3RlYWQuJworICAg
ICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KAorICAgICAgICAgICAgJ3ByaW50Zihmb28uY19zdHIoKSknLAorICAgICAgICAgICAgJ1Bv
dGVudGlhbCBmb3JtYXQgc3RyaW5nIGJ1Zy4gJworICAgICAgICAgICAgJ0RvIHByaW50ZigiJXMi
LCBmb28uY19zdHIoKSkgaW5zdGVhZC4nCisgICAgICAgICAgICAnICBbcnVudGltZS9wcmludGZd
IFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAncHJpbnRmKGZv
by0+Y19zdHIoKSknLAorICAgICAgICAgICAgJ1BvdGVudGlhbCBmb3JtYXQgc3RyaW5nIGJ1Zy4g
JworICAgICAgICAgICAgJ0RvIHByaW50ZigiJXMiLCBmb28tPmNfc3RyKCkpIGluc3RlYWQuJwor
ICAgICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KAorICAgICAgICAgICAgJ1N0cmluZ1ByaW50Zihmb28pJywKKyAgICAgICAgICAgICdQ
b3RlbnRpYWwgZm9ybWF0IHN0cmluZyBidWcuIERvIFN0cmluZ1ByaW50ZigiJXMiLCBmb28pIGlu
c3RlYWQuJworICAgICAgICAgICAgJycKKyAgICAgICAgICAgICcgIFtydW50aW1lL3ByaW50Zl0g
WzRdJykKKworICAgICMgVmFyaWFibGUtbGVuZ3RoIGFycmF5cyBhcmUgbm90IHBlcm1pdHRlZC4K
KyAgICBkZWYgdGVzdF92YXJpYWJsZV9sZW5ndGhfYXJyYXlfZGV0ZWN0aW9uKHNlbGYpOgorICAg
ICAgICBlcnJtc2cgPSAoJ0RvIG5vdCB1c2UgdmFyaWFibGUtbGVuZ3RoIGFycmF5cy4gIFVzZSBh
biBhcHByb3ByaWF0ZWx5IG5hbWVkICcKKyAgICAgICAgICAgICAgICAgICIoJ2snIGZvbGxvd2Vk
IGJ5IENhbWVsQ2FzZSkgY29tcGlsZS10aW1lIGNvbnN0YW50IGZvciB0aGUgc2l6ZS4iCisgICAg
ICAgICAgICAgICAgICAnICBbcnVudGltZS9hcnJheXNdIFsxXScpCisKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnaW50IGFbYW55X29sZF92YXJpYWJsZV07JywgZXJybXNnKQorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdpbnQgZG91Ymxlc2l6ZVtzb21lX3ZhciAqIDJdOycsIGVycm1zZykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbYWZ1bmN0aW9uKCldOycsIGVycm1zZykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbZnVuY3Rpb24oa01heEZvb0JhcnMpXTsn
LCBlcnJtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2Jvb2wgYUxpc3RbaXRlbXNfLT5z
aXplKCldOycsIGVycm1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnbmFtZXNwYWNlOjpU
eXBlIGJ1ZmZlcltsZW4rMV07JywgZXJybXNnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J2ludCBhWzY0XTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbMHhGRl07
JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBmaXJzdFsyNTZdLCBzZWNvbmRb
MjU2XTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFycmF5TmFtZVtrQ29t
cGlsZVRpbWVDb25zdGFudF07JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NoYXIg
YnVmW3NvbWVuYW1lc3BhY2U6OmtCdWZTaXplXTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnaW50IGFycmF5TmFtZVtBTExfQ0FQU107JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ0FDbGFzcyBhcnJheTFbZm9vOjpiYXI6OkFMTF9DQVBTXTsnLCAnJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnaW50IGFba01heFN0ckxlbiArIDFdOycsICcnKQorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdpbnQgYVtzaXplb2YoZm9vKV07JywgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ2ludCBhW3NpemVvZigqZm9vKV07JywgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ2ludCBhW3NpemVvZiBmb29dOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdpbnQgYVtzaXplb2Yoc3RydWN0IEZvbyldOycsICcnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdpbnQgYVsxMjggLSBzaXplb2YoY29uc3QgYmFyKV07JywgJycpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ2ludCBhWyhzaXplb2YoZm9vKSAqIDQpXTsnLCAnJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnaW50IGFbKGFycmF5c2l6ZShmaXhlZF9zaXplX2FycmF5KS8yKSA8
PCAxXTsnLCAnTWlzc2luZyBzcGFjZXMgYXJvdW5kIC8gIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10g
WzNdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZGVsZXRlIGFbc29tZV92YXJdOycsICcn
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdyZXR1cm4gYVtzb21lX3Zhcl07JywgJycpCisK
KyAgICAjIEJyYWNlIHVzYWdlCisgICAgZGVmIHRlc3RfYnJhY2VzKHNlbGYpOgorICAgICAgICAj
IEJyYWNlcyBzaG91bGRuJ3QgYmUgZm9sbG93ZWQgYnkgYSA7IHVubGVzcyB0aGV5J3JlIGRlZmlu
aW5nIGEgc3RydWN0CisgICAgICAgICMgb3IgaW5pdGlhbGl6aW5nIGFuIGFycmF5CisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhWzNdID0geyAxLCAyLCAzIH07JywgJycpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnJydjb25zdCBpbnQgZm9vW10gPQorICAg
ICAgICAgICAgICAgICAgIHsxLCAyLCAzIH07JycnLAorICAgICAgICAgICAgJycpCisgICAgICAg
ICMgRm9yIHNpbmdsZSBsaW5lLCB1bm1hdGNoZWQgJ30nIHdpdGggYSAnOycgaXMgaWdub3JlZCAo
bm90IGVub3VnaCBjb250ZXh0KQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQo
CisgICAgICAgICAgICAnJydpbnQgYVszXSA9IHsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMgfTsnJycsCisgICAgICAgICAg
ICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAg
JycnaW50IGFbMl1bM10gPSB7IHsgMSwgMiB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7IDMsIDQgfSB9OycnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnJydpbnQgYVsyXVszXSA9CisgICAgICAgICAg
ICAgICAgICAgeyB7IDEsIDIgfSwKKyAgICAgICAgICAgICAgICAgICAgIHsgMywgNCB9IH07Jycn
LAorICAgICAgICAgICAgJycpCisKKyAgICAjIENIRUNLL0VYUEVDVF9UUlVFL0VYUEVDVF9GQUxT
RSByZXBsYWNlbWVudHMKKyAgICBkZWYgdGVzdF9jaGVja19jaGVjayhzZWxmKToKKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soeCA9PSA0MiknLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICdDb25zaWRlciB1c2luZyBDSEVDS19FUSBpbnN0ZWFkIG9mIENIRUNLKGEgPT0gYiknCisg
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdDSEVDSyh4ICE9IDQyKScsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIENIRUNLX05FIGluc3RlYWQgb2YgQ0hFQ0soYSAhPSBi
KScKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0NIRUNLKHggPj0gNDIpJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgQ0hFQ0tfR0UgaW5zdGVhZCBvZiBDSEVDSyhh
ID49IGIpJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10g
WzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soeCA+IDQyKScsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIENIRUNLX0dUIGluc3RlYWQgb2YgQ0hF
Q0soYSA+IGIpJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVj
a10gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soeCA8PSA0MiknLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBDSEVDS19MRSBpbnN0ZWFkIG9m
IENIRUNLKGEgPD0gYiknCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5
L2NoZWNrXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdDSEVDSyh4IDwgNDIpJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgQ0hFQ0tfTFQgaW5zdGVh
ZCBvZiBDSEVDSyhhIDwgYiknCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3JlYWRhYmls
aXR5L2NoZWNrXSBbMl0nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0RDSEVDSyh4ID09
IDQyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIERDSEVDS19F
USBpbnN0ZWFkIG9mIERDSEVDSyhhID09IGIpJworICAgICAgICAgICAgICAgICAgICAgICAgICcg
IFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRENI
RUNLKHggIT0gNDIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcg
RENIRUNLX05FIGluc3RlYWQgb2YgRENIRUNLKGEgIT0gYiknCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdEQ0hFQ0soeCA+PSA0MiknLAorICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRl
ciB1c2luZyBEQ0hFQ0tfR0UgaW5zdGVhZCBvZiBEQ0hFQ0soYSA+PSBiKScKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ0RDSEVDSyh4ID4gNDIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAn
Q29uc2lkZXIgdXNpbmcgRENIRUNLX0dUIGluc3RlYWQgb2YgRENIRUNLKGEgPiBiKScKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ0RDSEVDSyh4IDw9IDQyKScsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0NvbnNpZGVyIHVzaW5nIERDSEVDS19MRSBpbnN0ZWFkIG9mIERDSEVDSyhhIDw9IGIp
JworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRENIRUNLKHggPCA0MiknLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBEQ0hFQ0tfTFQgaW5zdGVhZCBvZiBEQ0hFQ0so
YSA8IGIpJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10g
WzJdJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ0VYUEVDVF9U
UlVFKCI0MiIgPT0geCknLAorICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEVYUEVDVF9FUSBp
bnN0ZWFkIG9mIEVYUEVDVF9UUlVFKGEgPT0gYiknCisgICAgICAgICAgICAnICBbcmVhZGFiaWxp
dHkvY2hlY2tdIFsyXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAn
RVhQRUNUX1RSVUUoIjQyIiAhPSB4KScsCisgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQ
RUNUX05FIGluc3RlYWQgb2YgRVhQRUNUX1RSVUUoYSAhPSBiKScKKyAgICAgICAgICAgICcgIFty
ZWFkYWJpbGl0eS9jaGVja10gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAg
ICAgICAgICdFWFBFQ1RfVFJVRSgrNDIgPj0geCknLAorICAgICAgICAgICAgJ0NvbnNpZGVyIHVz
aW5nIEVYUEVDVF9HRSBpbnN0ZWFkIG9mIEVYUEVDVF9UUlVFKGEgPj0gYiknCisgICAgICAgICAg
ICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
CisgICAgICAgICAgICAnRVhQRUNUX1RSVUVfTSgtNDIgPiB4KScsCisgICAgICAgICAgICAnQ29u
c2lkZXIgdXNpbmcgRVhQRUNUX0dUX00gaW5zdGVhZCBvZiBFWFBFQ1RfVFJVRV9NKGEgPiBiKScK
KyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKKyAgICAgICAgICAgICdFWFBFQ1RfVFJVRV9NKDQyVSA8PSB4KScsCisgICAg
ICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNUX0xFX00gaW5zdGVhZCBvZiBFWFBFQ1RfVFJV
RV9NKGEgPD0gYiknCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnRVhQRUNUX1RSVUVfTSg0Mkwg
PCB4KScsCisgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNUX0xUX00gaW5zdGVhZCBv
ZiBFWFBFQ1RfVFJVRV9NKGEgPCBiKScKKyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVj
a10gWzJdJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ0VYUEVD
VF9GQUxTRSh4ID09IDQyKScsCisgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNUX05F
IGluc3RlYWQgb2YgRVhQRUNUX0ZBTFNFKGEgPT0gYiknCisgICAgICAgICAgICAnICBbcmVhZGFi
aWxpdHkvY2hlY2tdIFsyXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAg
ICAnRVhQRUNUX0ZBTFNFKHggIT0gNDIpJywKKyAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBF
WFBFQ1RfRVEgaW5zdGVhZCBvZiBFWFBFQ1RfRkFMU0UoYSAhPSBiKScKKyAgICAgICAgICAgICcg
IFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAg
ICAgICAgICAgICdFWFBFQ1RfRkFMU0UoeCA+PSA0MiknLAorICAgICAgICAgICAgJ0NvbnNpZGVy
IHVzaW5nIEVYUEVDVF9MVCBpbnN0ZWFkIG9mIEVYUEVDVF9GQUxTRShhID49IGIpJworICAgICAg
ICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KAorICAgICAgICAgICAgJ0FTU0VSVF9GQUxTRSh4ID4gNDIpJywKKyAgICAgICAgICAgICdD
b25zaWRlciB1c2luZyBBU1NFUlRfTEUgaW5zdGVhZCBvZiBBU1NFUlRfRkFMU0UoYSA+IGIpJwor
ICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAgICAgICBzZWxmLmFz
c2VydF9saW50KAorICAgICAgICAgICAgJ0FTU0VSVF9GQUxTRSh4IDw9IDQyKScsCisgICAgICAg
ICAgICAnQ29uc2lkZXIgdXNpbmcgQVNTRVJUX0dUIGluc3RlYWQgb2YgQVNTRVJUX0ZBTFNFKGEg
PD0gYiknCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnQVNTRVJUX0ZBTFNFX00oeCA8IDQyKScs
CisgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgQVNTRVJUX0dFX00gaW5zdGVhZCBvZiBBU1NF
UlRfRkFMU0VfTShhIDwgYiknCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsy
XScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soc29tZV9pdGVyYXRvciA9PSBv
YmouZW5kKCkpJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0VYUEVDVF9UUlVFKHNv
bWVfaXRlcmF0b3IgPT0gb2JqLmVuZCgpKScsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdFWFBFQ1RfRkFMU0Uoc29tZV9pdGVyYXRvciA9PSBvYmouZW5kKCkpJywgJycpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soQ3JlYXRlVGVzdEZpbGUoZGlyLCAoMSA8PCAyMCkp
KTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soQ3JlYXRlVGVzdEZpbGUo
ZGlyLCAoMSA+PiAyMCkpKTsnLCAnJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50KCdDSEVD
Syh4PDQyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgWydNaXNzaW5nIHNwYWNlcyBhcm91
bmQgPCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3Jz
XSBbM10nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgQ0hFQ0tf
TFQgaW5zdGVhZCBvZiBDSEVDSyhhIDwgYiknCisgICAgICAgICAgICAgICAgICAgICAgICAgICcg
IFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0NI
RUNLKHg+NDIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgQ0hF
Q0tfR1QgaW5zdGVhZCBvZiBDSEVDSyhhID4gYiknCisgICAgICAgICAgICAgICAgICAgICAgICAg
JyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
CisgICAgICAgICAgICAnICAgIEVYUEVDVF9UUlVFKDQyIDwgeCkgLy8gUmFuZG9tIGNvbW1lbnQu
JywKKyAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfTFQgaW5zdGVhZCBvZiBFWFBF
Q1RfVFJVRShhIDwgYiknCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnRVhQRUNUX1RSVUUoIDQy
IDwgeCApJywKKyAgICAgICAgICAgIFsnRXh0cmEgc3BhY2UgYWZ0ZXIgKCBpbiBmdW5jdGlvbiBj
YWxsJworICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzRdJywKKyAgICAgICAg
ICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNUX0xUIGluc3RlYWQgb2YgRVhQRUNUX1RSVUUoYSA8
IGIpJworICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJ10pCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnQ0hFQ0soImZvbyIgPT0gImZvbyIpJywK
KyAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBDSEVDS19FUSBpbnN0ZWFkIG9mIENIRUNLKGEg
PT0gYiknCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnQ0hFQ0tfRVEoImZvbyIsICJmb28iKScsICcnKQorCisgICAg
ZGVmIHRlc3RfYnJhY2VfYXRfYmVnaW5fb2ZfbGluZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgneycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgeyBzaG91bGQgYmUg
YXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZScKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAnICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRp
X2xpbmVfbGludCgKKyAgICAgICAgICAgICcjZW5kaWZcbicKKyAgICAgICAgICAgICd7XG4nCisg
ICAgICAgICAgICAnfVxuJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnaWYgKGNvbmRpdGlvbikgeycsCisgICAgICAg
ICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAg
ICAgJyAgICBNQUNSTzEobWFjcm9BcmcpIHsnLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdBQ0NFU1NPUl9HRVRURVIo
TWVzc2FnZUV2ZW50UG9ydHMpIHsnLAorICAgICAgICAgICAgJ1BsYWNlIGJyYWNlIG9uIGl0cyBv
d24gbGluZSBmb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0
XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdp
bnQgZm9vKCkgeycsCisgICAgICAgICAgICAnUGxhY2UgYnJhY2Ugb24gaXRzIG93biBsaW5lIGZv
ciBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2ludCBmb28oKSBj
b25zdCB7JywKKyAgICAgICAgICAgICdQbGFjZSBicmFjZSBvbiBpdHMgb3duIGxpbmUgZm9yIGZ1
bmN0aW9uIGRlZmluaXRpb25zLiAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQorICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnaW50IGZvbygpIGNvbnN0
XG4nCisgICAgICAgICAgICAne1xuJworICAgICAgICAgICAgJ31cbicsCisgICAgICAgICAgICAn
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2lm
IChjb25kaXRpb25cbicKKyAgICAgICAgICAgICcgICAgJiYgY29uZGl0aW9uMlxuJworICAgICAg
ICAgICAgJyAgICAmJiBjb25kaXRpb24zKSB7XG4nCisgICAgICAgICAgICAnfVxuJywKKyAgICAg
ICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfbWlzbWF0Y2hpbmdfc3BhY2VzX2luX3BhcmVucyhz
ZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaWYgKGZvbyApIHsnLCAnTWlzbWF0Y2hp
bmcgc3BhY2VzIGluc2lkZSAoKSBpbiBpZicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBb
d2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N3aXRj
aCAoIGZvbykgeycsICdNaXNtYXRjaGluZyBzcGFjZXMgaW5zaWRlICgpIGluIHN3aXRjaCcKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoZm9vOyBiYTsgYmFyICkgeycsICdNaXNtYXRjaGlu
ZyBzcGFjZXMgaW5zaWRlICgpIGluIGZvcicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBb
d2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAo
OyBmb287IGJhcikgeycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKCA7IGZv
bzsgYmFyKSB7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoIDsgZm9vOyBi
YXIgKSB7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoZm9vOyBiYXI7ICkg
eycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3JlYWNoIChmb28sIGZvb3MgKSB7
JywgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkgaW4gZm9yZWFjaCcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ2ZvcmVhY2ggKCBmb28sIGZvb3MpIHsnLCAnTWlzbWF0Y2hpbmcgc3BhY2Vz
IGluc2lkZSAoKSBpbiBmb3JlYWNoJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0
ZXNwYWNlL3BhcmVuc10gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnd2hpbGUgKCAg
Zm9vICApIHsnLCAnU2hvdWxkIGhhdmUgemVybyBvciBvbmUgc3BhY2VzIGluc2lkZScKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAnICggYW5kICkgaW4gd2hpbGUgIFt3aGl0ZXNwYWNlL3BhcmVu
c10gWzVdJykKKworICAgIGRlZiB0ZXN0X3NwYWNpbmdfZm9yX2ZuY2FsbChzZWxmKToKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnaWYgKGZvbykgeycsICcnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdmb3IgKGZvbztiYXI7YmF6KSB7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2ZvcmVhY2ggKGZvbywgZm9vcykgeycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50
KCd3aGlsZSAoZm9vKSB7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N3aXRjaCAo
Zm9vKSB7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ25ldyAoUmVuZGVyQXJlbmEo
KSkgUmVuZGVySW5saW5lKGRvY3VtZW50KCkpJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2ZvbyggYmFyKScsICdFeHRyYSBzcGFjZSBhZnRlciAoIGluIGZ1bmN0aW9uIGNhbGwnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNF0nKQorICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdmb29iYXIoIFxcJywgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ2Zvb2JhciggICAgIFxcJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
JyggYSArIGIpJywgJ0V4dHJhIHNwYWNlIGFmdGVyICgnCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50
KCcoKGErYikpJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvbyAoZm9vKScsICdF
eHRyYSBzcGFjZSBiZWZvcmUgKCBpbiBmdW5jdGlvbiBjYWxsJworICAgICAgICAgICAgICAgICAg
ICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgndHlwZWRlZiBmb28gKCpmb28pKGZvbyknLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgndHlwZWRlZiBmb28gKCpmb28xMmJhcl8pKGZvbyknLCAnJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgndHlwZWRlZiBmb28gKEZvbzo6KmJhcikoZm9vKScsICcnKQorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdmb28gKEZvbzo6KmJhcikoJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAnRXh0cmEgc3BhY2UgYmVmb3JlICggaW4gZnVuY3Rpb24gY2FsbCcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs0XScpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ3R5cGVkZWYgZm9vIChGb286OipiYXIpKCcsICcnKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCcoZm9vKShiYXIpJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J0ZvbyAoKmZvbykoYmFyKScsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdGb28gKCpm
b28pKEJhciBiYXIsJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NoYXIgKCpwKVtz
aXplb2YoZm9vKV0gPSAmZm9vJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NoYXIg
KCZyZWYpW3NpemVvZihmb28pXSA9ICZmb28nLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnY29uc3QgY2hhcjMyICgqdGFibGVbXSlbNl07JywgJycpCisKKyAgICBkZWYgdGVzdF9zcGFj
aW5nX2JlZm9yZV9icmFjZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChm
b28peycsICdNaXNzaW5nIHNwYWNlIGJlZm9yZSB7JworICAgICAgICAgICAgICAgICAgICAgICAg
ICcgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
Zm9yeycsICdNaXNzaW5nIHNwYWNlIGJlZm9yZSB7JworICAgICAgICAgICAgICAgICAgICAgICAg
ICcgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
Zm9yIHsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRVhQRUNUX0RFQlVHX0RFQVRI
KHsnLCAnJykKKworICAgIGRlZiB0ZXN0X3NwYWNpbmdfYXJvdW5kX2Vsc2Uoc2VsZik6CisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ31lbHNlIHsnLCAnTWlzc2luZyBzcGFjZSBiZWZvcmUgZWxz
ZScKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9icmFjZXNdIFs1XScp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ30gZWxzZXsnLCAnTWlzc2luZyBzcGFjZSBiZWZv
cmUgeycKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9icmFjZXNdIFs1
XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ30gZWxzZSB7JywgJycpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ30gZWxzZSBpZicsICcnKQorCisgICAgZGVmIHRlc3Rfc3BhY2luZ19m
b3JfYmluYXJ5X29wcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaWYgKGZvbzw9
YmFyKSB7JywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA8PScKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAnICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ2lmIChmb288YmFyKSB7JywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA8JworICAgICAg
ICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnaWYgKGZvbzxiYXItPmJheikgeycsICdNaXNzaW5nIHNwYWNl
cyBhcm91bmQgPCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9vcGVy
YXRvcnNdIFszXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb288YmFyLT5iYXIp
IHsnLCAnTWlzc2luZyBzcGFjZXMgYXJvdW5kIDwnCisgICAgICAgICAgICAgICAgICAgICAgICAg
JyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50
KCd0eXBlZGVmIGhhc2hfbWFwPEZvbywgQmFyJywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA8Jwor
ICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndHlwZWRlZiBoYXNoX21hcDxGb29vb29UeXBlLCBC
YWFhYWFyVHlwZSwnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28+IHQrPWI7
JywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCArPScKKyAgICAgICAgICAgICAgICAgICAgICAgICAn
ICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J2E8Rm9vPiB0LT1iOycsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgLT0nCisgICAgICAgICAgICAg
ICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdhPEZvbyo+IHQqPWI7JywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCAqPScK
KyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdC89YjsnLCAnTWlzc2luZyBzcGFj
ZXMgYXJvdW5kIC89JworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL29w
ZXJhdG9yc10gWzNdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28qPiB0fD1iOycs
ICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgfD0nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAg
W3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdh
PEZvbyo+IHQmPWI7JywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCAmPScKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdDw8PWI7JywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA8PD0n
CisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10n
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhPEZvbyo+IHQ+Pj1iOycsICdNaXNzaW5nIHNw
YWNlcyBhcm91bmQgPj49JworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNl
L29wZXJhdG9yc10gWzNdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28qPiB0Pj49
JmJ8YzsnLCAnTWlzc2luZyBzcGFjZXMgYXJvdW5kID4+PScKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAnICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ2E8Rm9vKj4gdDw8PSpiL2M7JywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA8PD0nCisg
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhPEZvbz4gdCAtPSBiOycsICcnKQorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdhPEZvbz4gdCArPSBiOycsICcnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdhPEZvbyo+IHQgKj0gYjsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
YTxGb28qPiB0IC89IGI7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4g
dCB8PSBiOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhPEZvbyo+IHQgJj0gYjsn
LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28qPiB0IDw8PSBiOycsICcnKQor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhPEZvbyo+IHQgPj49IGI7JywgJycpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdCA+Pj0gJmJ8YzsnLCAnTWlzc2luZyBzcGFjZXMg
YXJvdW5kIHwnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0
b3JzXSBbM10nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhPEZvbyo+IHQgPDw9ICpiL2M7
JywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCAvJworICAgICAgICAgICAgICAgICAgICAgICAgICcg
IFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
YTxGb28qPiB0IDw8PSBiL2M7IC8vVGVzdCcsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAn
U2hvdWxkIGhhdmUgYSBzcGFjZSBiZXR3ZWVuIC8vIGFuZCBjb21tZW50ICAnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJ1t3aGl0ZXNwYWNlL2NvbW1lbnRzXSBbNF0nLCAnTWlzc2luZycKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAnIHNwYWNlcyBhcm91bmQgLyAgW3doaXRlc3BhY2Uvb3Bl
cmF0b3JzXSBbM10nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28qPiB0IDw8PSBi
fHxjOyAgLy9UZXN0JywgWydPbmUgc3BhY2UgYmVmb3JlIGVuZCcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAnIG9mIGxpbmUgY29tbWVudHMgIFt3aGl0ZXNwYWNlL2NvbW1lbnRzXSBbNV0nLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICdTaG91bGQgaGF2ZSBhIHNwYWNlIGJldHdlZW4gLy8g
YW5kIGNvbW1lbnQgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnW3doaXRlc3BhY2UvY29t
bWVudHNdIFs0XScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01pc3Npbmcgc3BhY2VzIGFy
b3VuZCB8fCAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nXSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnYTxGb28qPiB0IDw8PSBiJiZjOyAvLyBUZXN0JywgJ01pc3Npbmcgc3BhY2VzIGFy
b3VuZCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICYmICBbd2hpdGVzcGFjZS9vcGVyYXRv
cnNdIFszXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdCA8PD0gYiYmJmM7
IC8vIFRlc3QnLCAnTWlzc2luZyBzcGFjZXMgYXJvdW5kJworICAgICAgICAgICAgICAgICAgICAg
ICAgICcgJiYgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnYTxGb28qPiB0IDw8PSBiJiYqYzsgLy8gVGVzdCcsICdNaXNzaW5nIHNwYWNlcyBh
cm91bmQnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAmJiAgW3doaXRlc3BhY2Uvb3BlcmF0
b3JzXSBbM10nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhPEZvbyo+IHQgPDw9IGIgJiYg
KmM7IC8vIFRlc3QnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28qPiB0IDw8
PSBiICYmICZjOyAvLyBUZXN0JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9v
Kj4gdCA8PD0gYiB8fCAmYzsgIC8qVGVzdCcsICdDb21wbGV4IG11bHRpLWxpbmUgJworICAgICAg
ICAgICAgICAgICAgICAgICAgICcvKi4uLiovLXN0eWxlIGNvbW1lbnQgZm91bmQuIExpbnQgbWF5
IGdpdmUgYm9ndXMgJworICAgICAgICAgICAgICAgICAgICAgICAgICd3YXJuaW5ncy4gIENvbnNp
ZGVyIHJlcGxhY2luZyB0aGVzZSB3aXRoIC8vLXN0eWxlJworICAgICAgICAgICAgICAgICAgICAg
ICAgICcgY29tbWVudHMsIHdpdGggI2lmIDAuLi4jZW5kaWYsIG9yIHdpdGggbW9yZSBjbGVhcmx5
JworICAgICAgICAgICAgICAgICAgICAgICAgICcgc3RydWN0dXJlZCBtdWx0aS1saW5lIGNvbW1l
bnRzLiAgW3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50XSBbNV0nKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdhPEZvbyY+IHQgPDw9ICZiIHwgJmM7JywgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdCA8PD0gJmIgJiAmYzsgLy8gVGVzdCcsICcnKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdhPEZvbyo+IHQgPDw9ICpiIC8gJmM7IC8vIFRlc3QnLCAnJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaWYgKGE9YiA9PSAxKScsICdNaXNzaW5nIHNwYWNl
cyBhcm91bmQgPSAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbNF0nKQorICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdhID0gMTw8MjAnLCAnTWlzc2luZyBzcGFjZXMgYXJvdW5kIDw8ICBbd2hpdGVz
cGFjZS9vcGVyYXRvcnNdIFszXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChhID0g
YiA9PSAxKScsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhID0gMSA8PCAyMCcsICcn
KQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoJyNpbmNsdWRlICJjb25maWcu
aCJcbiNpbmNsdWRlIDxzeXMvaW8uaD5cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KCcjaW5jbHVk
ZSAiY29uZmlnLmgiXG4jaW1wb3J0IDxmb28vYmFyLmg+XG4nLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9zcGFjaW5nX2JlZm9yZV9sYXN0
X3NlbWljb2xvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnY2FsbF9mdW5jdGlv
bigpIDsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdFeHRyYSBzcGFjZSBiZWZvcmUgbGFz
dCBzZW1pY29sb24uIElmIHRoaXMgc2hvdWxkIGJlIGFuICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAnZW1wdHkgc3RhdGVtZW50LCB1c2UgeyB9IGluc3RlYWQuJworICAgICAgICAgICAgICAg
ICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3NlbWljb2xvbl0gWzVdJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnd2hpbGUgKHRydWUpIDsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdF
eHRyYSBzcGFjZSBiZWZvcmUgbGFzdCBzZW1pY29sb24uIElmIHRoaXMgc2hvdWxkIGJlIGFuICcK
KyAgICAgICAgICAgICAgICAgICAgICAgICAnZW1wdHkgc3RhdGVtZW50LCB1c2UgeyB9IGluc3Rl
YWQuJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3NlbWljb2xvbl0g
WzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZGVmYXVsdDo7JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnU2VtaWNvbG9uIGRlZmluaW5nIGVtcHR5IHN0YXRlbWVudC4gVXNlIHsg
fSBpbnN0ZWFkLicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9zZW1p
Y29sb25dIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgICAgIDsnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICdMaW5lIGNvbnRhaW5zIG9ubHkgc2VtaWNvbG9uLiBJZiB0aGlz
IHNob3VsZCBiZSBhbiBlbXB0eSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXRlbWVu
dCwgdXNlIHsgfSBpbnN0ZWFkLicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVz
cGFjZS9zZW1pY29sb25dIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoaW50
IGkgPSAwOyA7JywgJycpCisKKyAgICAjIFN0YXRpYyBvciBnbG9iYWwgU1RMIHN0cmluZ3MuCisg
ICAgZGVmIHRlc3Rfc3RhdGljX29yX2dsb2JhbF9zdGxzdHJpbmdzKHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdzdHJpbmcgZm9vOycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
J0ZvciBhIHN0YXRpYy9nbG9iYWwgc3RyaW5nIGNvbnN0YW50LCB1c2UgYSBDIHN0eWxlICcKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nIGluc3RlYWQ6ICJjaGFyIGZvb1tdIi4nCisg
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3J1bnRpbWUvc3RyaW5nXSBbNF0nKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdzdHJpbmcga0ZvbyA9ICJoZWxsbyI7IC8vIEVuZ2xpc2gnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICdGb3IgYSBzdGF0aWMvZ2xvYmFsIHN0cmluZyBjb25z
dGFudCwgdXNlIGEgQyBzdHlsZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZyBp
bnN0ZWFkOiAiY2hhciBrRm9vW10iLicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcnVu
dGltZS9zdHJpbmddIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0YXRpYyBzdHJp
bmcgZm9vOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZvciBhIHN0YXRpYy9nbG9iYWwg
c3RyaW5nIGNvbnN0YW50LCB1c2UgYSBDIHN0eWxlICcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAnc3RyaW5nIGluc3RlYWQ6ICJzdGF0aWMgY2hhciBmb29bXSIuJworICAgICAgICAgICAgICAg
ICAgICAgICAgICcgIFtydW50aW1lL3N0cmluZ10gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnc3RhdGljIGNvbnN0IHN0cmluZyBmb287JywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAnRm9yIGEgc3RhdGljL2dsb2JhbCBzdHJpbmcgY29uc3RhbnQsIHVzZSBhIEMgc3R5bGUgJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcgaW5zdGVhZDogInN0YXRpYyBjb25zdCBj
aGFyIGZvb1tdIi4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3J1bnRpbWUvc3RyaW5n
XSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzdHJpbmcgRm9vOjpiYXI7JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAnRm9yIGEgc3RhdGljL2dsb2JhbCBzdHJpbmcgY29uc3Rh
bnQsIHVzZSBhIEMgc3R5bGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcgaW5z
dGVhZDogImNoYXIgRm9vOjpiYXJbXSIuJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFty
dW50aW1lL3N0cmluZ10gWzRdJykKKyAgICAgICAgIyBSYXJlIGNhc2UuCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ3N0cmluZyBmb28oImZvb2JhciIpOycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0ZvciBhIHN0YXRpYy9nbG9iYWwgc3RyaW5nIGNvbnN0YW50LCB1c2UgYSBDIHN0eWxl
ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nIGluc3RlYWQ6ICJjaGFyIGZvb1td
Ii4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3J1bnRpbWUvc3RyaW5nXSBbNF0nKQor
ICAgICAgICAjIFNob3VsZCBub3QgY2F0Y2ggbG9jYWwgb3IgbWVtYmVyIHZhcmlhYmxlcy4KKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgIHN0cmluZyBmb28nLCAnJykKKyAgICAgICAgIyBT
aG91bGQgbm90IGNhdGNoIGZ1bmN0aW9ucy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3Ry
aW5nIEVtcHR5U3RyaW5nKCkgeyByZXR1cm4gIiI7IH0nLCAnJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnc3RyaW5nIEVtcHR5U3RyaW5nICgpIHsgcmV0dXJuICIiOyB9JywgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmluZyBWZXJ5TG9uZ05hbWVGdW5jdGlvblNvbWV0aW1l
c0VuZHNXaXRoKFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgVmVyeUxvbmdOYW1l
VHlwZSB2ZXJ5X2xvbmdfbmFtZV92YXJpYWJsZSkge30nLCAnJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgndGVtcGxhdGU8PlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcg
RnVuY3Rpb25UZW1wbGF0ZVNwZWNpYWxpemF0aW9uPFNvbWVUeXBlPihcbicKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnICAgICAgaW50IHgpIHsgcmV0dXJuICIiOyB9JywgJycpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ3RlbXBsYXRlPD5cbicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAnc3RyaW5nIEZ1bmN0aW9uVGVtcGxhdGVTcGVjaWFsaXphdGlvbjx2ZWN0b3I8QTo6Qj4qID4o
XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIGludCB4KSB7IHJldHVybiAiIjsg
fScsICcnKQorCisgICAgICAgICMgc2hvdWxkIG5vdCBjYXRjaCBtZXRob2RzIG9mIHRlbXBsYXRl
IGNsYXNzZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmluZyBDbGFzczxUeXBlPjo6
TWV0aG9kKCkgY29uc3RcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAne1xuJworICAgICAg
ICAgICAgICAgICAgICAgICAgICcgIHJldHVybiAiIjtcbicKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAnfVxuJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmluZyBDbGFzczxU
eXBlPjo6TWV0aG9kKFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICcgICBpbnQgYXJnKSBj
b25zdFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICd7XG4nCisgICAgICAgICAgICAgICAg
ICAgICAgICAgJyAgcmV0dXJuICIiO1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4n
LCAnJykKKworICAgIGRlZiB0ZXN0X25vX3NwYWNlc19pbl9mdW5jdGlvbl9jYWxscyhzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnVGVsbFN0b3J5KDEsIDMpOycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1RlbGxTdG9yeSgx
LCAzICk7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgYmVmb3JlICkn
CisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbMl0nKQor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdUZWxsU3RvcnkoMSAvKiB3b2xmICovLCAzIC8qIHBp
Z3MgKi8pOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X211bHRpX2xpbmVfbGludCgnI2VuZGlmXG4gICAgKTsnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF90d29fc3BhY2VzX2JldHdlZW5f
Y29kZV9hbmRfY29tbWVudHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ30gLy8g
bmFtZXNwYWNlIGZvbycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ30vLyBuYW1lc3BhY2UgZm9vJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAnT25lIHNwYWNlIGJlZm9yZSBlbmQgb2YgbGluZSBjb21tZW50cycKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9jb21tZW50c10gWzVdJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgncHJpbnRmKCJmb28iKTsgLy8gT3V0c2lkZSBxdW90ZXMuJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGkg
PSAwOyAvLyBIYXZpbmcgb25lIHNwYWNlIGlzIGZpbmUuJywnJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnaW50IGkgPSAwOyAgLy8gSGF2aW5nIHR3byBzcGFjZXMgaXMgYmFkLicsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgJ09uZSBzcGFjZSBiZWZvcmUgZW5kIG9mIGxpbmUgY29tbWVu
dHMnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvY29tbWVudHNdIFs1
XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBpID0gMDsgICAvLyBIYXZpbmcgdGhy
ZWUgc3BhY2VzIGlzIGJhZC4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdPbmUgc3BhY2Ug
YmVmb3JlIGVuZCBvZiBsaW5lIGNvbW1lbnRzJworICAgICAgICAgICAgICAgICAgICAgICAgICcg
IFt3aGl0ZXNwYWNlL2NvbW1lbnRzXSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcv
LyBUb3AgbGV2ZWwgY29tbWVudCcsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICAg
Ly8gTGluZSBzdGFydHMgd2l0aCBmb3VyIHNwYWNlcy4nLCAnJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnZm9vKCk7XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3sgLy8gQSBzY29w
ZSBpcyBvcGVuaW5nLicsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICAgZm9vKCk7
XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB7IC8vIEFuIGluZGVudGVkIHNjb3Bl
IGlzIG9wZW5pbmcuJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb28pIHsg
Ly8gbm90IGEgcHVyZSBzY29wZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ByaW50ZigiLy8gSW4gcXVvdGVzLiIpJywgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ByaW50ZigiXFwiJXMgLy8gSW4gcXVvdGVzLiIpJywgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ByaW50ZigiJXMiLCAiLy8gSW4gcXVvdGVzLiIp
JywgJycpCisKKyAgICBkZWYgdGVzdF9zcGFjZV9hZnRlcl9jb21tZW50X21hcmtlcihzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy8nLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnLy94JywgJ1Nob3VsZCBoYXZlIGEgc3BhY2UgYmV0d2VlbiAvLyBhbmQgY29tbWVudCcK
KyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9jb21tZW50c10gWzRdJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy8geCcsICcnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCcvLy0tLS0nLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy89PT09Jywg
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8vLy8vLycsICcnKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCcvLy8vLy8geCcsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcv
Ly8geCcsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcvLy8veCcsICdTaG91bGQgaGF2
ZSBhIHNwYWNlIGJldHdlZW4gLy8gYW5kIGNvbW1lbnQnCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJyAgW3doaXRlc3BhY2UvY29tbWVudHNdIFs0XScpCisKKyAgICBkZWYgdGVzdF9uZXdsaW5l
X2F0X2VvZihzZWxmKToKKyAgICAgICAgZGVmIGRvX3Rlc3Qoc2VsZiwgZGF0YSwgaXNfbWlzc2lu
Z19lb2YpOgorICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2Vs
Zi5hc3NlcnRfKQorICAgICAgICAgICAgc2VsZi5wcm9jZXNzX2ZpbGVfZGF0YSgnZm9vLmNwcCcs
ICdjcHAnLCBkYXRhLnNwbGl0KCdcbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgICAgICAjIFRoZSB3YXJuaW5nIGFwcGVhcnMg
b25seSBvbmNlLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisgICAgICAgICAgICAg
ICAgaW50KGlzX21pc3NpbmdfZW9mKSwKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3Iu
cmVzdWx0cygpLmNvdW50KAorICAgICAgICAgICAgICAgICAgICAnQ291bGQgbm90IGZpbmQgYSBu
ZXdsaW5lIGNoYXJhY3RlciBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlLicKKyAgICAgICAgICAgICAg
ICAgICAgJyAgW3doaXRlc3BhY2UvZW5kaW5nX25ld2xpbmVdIFs1XScpKQorCisgICAgICAgIGRv
X3Rlc3Qoc2VsZiwgJy8vIE5ld2xpbmVcbi8vIGF0IEVPRlxuJywgRmFsc2UpCisgICAgICAgIGRv
X3Rlc3Qoc2VsZiwgJy8vIE5vIG5ld2xpbmVcbi8vIGF0IEVPRicsIFRydWUpCisKKyAgICBkZWYg
dGVzdF9pbnZhbGlkX3V0Zjgoc2VsZik6CisgICAgICAgIGRlZiBkb190ZXN0KHNlbGYsIHJhd19i
eXRlcywgaGFzX2ludmFsaWRfdXRmOCk6CisgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBF
cnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisgICAgICAgICAgICBzZWxmLnByb2Nlc3NfZmls
ZV9kYXRhKCdmb28uY3BwJywgJ2NwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuaWNvZGUocmF3X2J5dGVzLCAndXRmOCcsICdyZXBsYWNlJykuc3BsaXQoJ1xuJyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKKyAgICAg
ICAgICAgICMgVGhlIHdhcm5pbmcgYXBwZWFycyBvbmx5IG9uY2UuCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygKKyAgICAgICAgICAgICAgICBpbnQoaGFzX2ludmFsaWRfdXRmOCksCisg
ICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKS5jb3VudCgKKyAgICAgICAg
ICAgICAgICAgICAgJ0xpbmUgY29udGFpbnMgaW52YWxpZCBVVEYtOCcKKyAgICAgICAgICAgICAg
ICAgICAgJyAob3IgVW5pY29kZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIpLicKKyAgICAgICAgICAg
ICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L3V0ZjhdIFs1XScpKQorCisgICAgICAgIGRvX3Rlc3Qo
c2VsZiwgJ0hlbGxvIHdvcmxkXG4nLCBGYWxzZSkKKyAgICAgICAgZG9fdGVzdChzZWxmLCAnXHhl
OVx4OGVceGJkXG4nLCBGYWxzZSkKKyAgICAgICAgZG9fdGVzdChzZWxmLCAnXHhlOXhceDhlXHhi
ZFxuJywgVHJ1ZSkKKyAgICAgICAgIyBUaGlzIGlzIHRoZSBlbmNvZGluZyBvZiB0aGUgcmVwbGFj
ZW1lbnQgY2hhcmFjdGVyIGl0c2VsZiAod2hpY2gKKyAgICAgICAgIyB5b3UgY2FuIHNlZSBieSBl
dmFsdWF0aW5nIGNvZGVjcy5nZXRlbmNvZGVyKCd1dGY4JykodSdcdWZmZmQnKSkuCisgICAgICAg
IGRvX3Rlc3Qoc2VsZiwgJ1x4ZWZceGJmXHhiZFxuJywgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X2lz
X2JsYW5rX2xpbmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0XyhjcHBfc3R5bGUuaXNfYmxh
bmtfbGluZSgnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0XyhjcHBfc3R5bGUuaXNfYmxhbmtfbGlu
ZSgnICcpKQorICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmlzX2JsYW5rX2xpbmUoJyBc
dFxyXG4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUuaXNfYmxhbmtfbGlu
ZSgnaW50IGE7JykpCisgICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmlzX2JsYW5r
X2xpbmUoJ3snKSkKKworICAgIGRlZiB0ZXN0X2JsYW5rX2xpbmVzX2NoZWNrKHNlbGYpOgorICAg
ICAgICBzZWxmLmFzc2VydF9ibGFua19saW5lc19jaGVjayhbJ3tcbicsICdcbicsICdcbicsICd9
XG4nXSwgMSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfYmxhbmtfbGluZXNfY2hlY2soWycgIGlm
IChmb28pIHtcbicsICdcbicsICcgIH1cbiddLCAxLCAxKQorICAgICAgICBzZWxmLmFzc2VydF9i
bGFua19saW5lc19jaGVjaygKKyAgICAgICAgICAgIFsnXG4nLCAnLy8ge1xuJywgJ1xuJywgJ1xu
JywgJy8vIENvbW1lbnRcbicsICd7XG4nLCAnfVxuJ10sIDAsIDApCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2JsYW5rX2xpbmVzX2NoZWNrKFsnXG4nLCAncnVuKCJ7Iik7XG4nLCAnXG4nXSwgMCwgMCkK
KyAgICAgICAgc2VsZi5hc3NlcnRfYmxhbmtfbGluZXNfY2hlY2soWydcbicsICcgIGlmIChmb28p
IHsgcmV0dXJuIDA7IH1cbicsICdcbiddLCAwLCAwKQorCisgICAgZGVmIHRlc3RfYWxsb3dfYmxh
bmtfbGluZV9iZWZvcmVfY2xvc2luZ19uYW1lc3BhY2Uoc2VsZik6CisgICAgICAgIGVycm9yX2Nv
bGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKKyAgICAgICAgc2VsZi5wcm9j
ZXNzX2ZpbGVfZGF0YSgnZm9vLmNwcCcsICdjcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsnbmFtZXNwYWNlIHsnLCAnJywgJ30gIC8vIG5hbWVzcGFjZSddLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoMCwgZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKS5jb3VudCgKKyAgICAgICAgICAg
ICdCbGFuayBsaW5lIGF0IHRoZSBlbmQgb2YgYSBjb2RlIGJsb2NrLiAgSXMgdGhpcyBuZWVkZWQ/
JworICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvYmxhbmtfbGluZV0gWzNdJykpCisKKyAgICBk
ZWYgdGVzdF9hbGxvd19ibGFua19saW5lX2JlZm9yZV9pZl9lbHNlX2NoYWluKHNlbGYpOgorICAg
ICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisgICAg
ICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jcHAnLCAnY3BwJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbJ2lmIChob2dlKSB7JywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJycsICAjIE5vIHdhcm5pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ30gZWxzZSBpZiAocGl5bykgeycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcnLCAgIyBObyB3YXJuaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9
IGVsc2UgaWYgKHBpeW9waXlvKSB7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyAgaG9nZSA9IHRydWU7JywgICMgTm8gd2FybmluZworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnfSBlbHNlIHsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywg
ICMgV2FybmluZyBvbiB0aGlzIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J30nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkuY291
bnQoCisgICAgICAgICAgICAnQmxhbmsgbGluZSBhdCB0aGUgZW5kIG9mIGEgY29kZSBibG9jay4g
IElzIHRoaXMgbmVlZGVkPycKKyAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2JsYW5rX2xpbmVd
IFszXScpKQorCisgICAgZGVmIHRlc3RfZWxzZV9vbl9zYW1lX2xpbmVfYXNfY2xvc2luZ19icmFj
ZXMoc2VsZik6CisgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYu
YXNzZXJ0XykKKyAgICAgICAgc2VsZi5wcm9jZXNzX2ZpbGVfZGF0YSgnZm9vLmNwcCcsICdjcHAn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnaWYgKGhvZ2UpIHsnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ30nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGVsc2UgeycgICMg
V2FybmluZyBvbiB0aGlzIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9J10sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cygxLCBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpLmNvdW50KAorICAgICAgICAgICAgJ0FuIGVs
c2Ugc2hvdWxkIGFwcGVhciBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBwcmVjZWRpbmcgfScKKyAg
ICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XScpKQorCisgICAgZGVmIHRlc3Rf
ZWxzZV9jbGF1c2Vfbm90X29uX3NhbWVfbGluZV9hc19lbHNlKHNlbGYpOgorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCcgICAgZWxzZSBEb1NvbWV0aGluZ0Vsc2UoKTsnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICdFbHNlIGNsYXVzZSBzaG91bGQgbmV2ZXIgYmUgb24gc2FtZSBsaW5lIGFz
IGVsc2UgJworICAgICAgICAgICAgICAgICAgICAgICAgICcodXNlIDIgbGluZXMpICBbd2hpdGVz
cGFjZS9uZXdsaW5lXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICAgZWxzZSBp
ZkRvU29tZXRoaW5nRWxzZSgpOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0Vsc2UgY2xh
dXNlIHNob3VsZCBuZXZlciBiZSBvbiBzYW1lIGxpbmUgYXMgZWxzZSAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgJyh1c2UgMiBsaW5lcykgIFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XScpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgICBlbHNlIGlmIChibGFoKSB7JywgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgICB2YXJpYWJsZV9lbmRzX2luX2Vsc2UgPSB0cnVlOycs
ICcnKQorCisgICAgZGVmIHRlc3RfY29tbWEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2EgPSBmKDEsMik7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTWlzc2luZyBzcGFj
ZSBhZnRlciAsICBbd2hpdGVzcGFjZS9jb21tYV0gWzNdJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnaW50IHRtcD1hLGE9YixiPXRtcDsnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsn
TWlzc2luZyBzcGFjZXMgYXJvdW5kID0gIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzRdJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ01pc3Npbmcgc3BhY2UgYWZ0ZXIgLCAgW3doaXRlc3Bh
Y2UvY29tbWFdIFszXSddKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmKGEsIC8qIG5hbWUg
Ki8gYik7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2YoYSwgLyogbmFtZSAqL2Ip
OycsICcnKQorCisgICAgZGVmIHRlc3RfcG9pbnRlcl9yZWZlcmVuY2VfbWFya2VyX2xvY2F0aW9u
KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQqIGI7JywgJycsICdmb28uY3Bw
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50ICpiOycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0RlY2xhcmF0aW9uIGhhcyBzcGFjZSBiZXR3ZWVuIHR5cGUgbmFtZSBhbmQgKiBp
biBpbnQgKmIgIFt3aGl0ZXNwYWNlL2RlY2xhcmF0aW9uXSBbM10nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICdmb28uY3BwJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgncmV0dXJuICpi
OycsICcnLCAnZm9vLmNwcCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCAqYjsnLCAn
JywgJ2Zvby5jJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50KiBiOycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0RlY2xhcmF0aW9uIGhhcyBzcGFjZSBiZXR3ZWVuICogYW5kIHZh
cmlhYmxlIG5hbWUgaW4gaW50KiBiICBbd2hpdGVzcGFjZS9kZWNsYXJhdGlvbl0gWzNdJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAnZm9vLmMnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdpbnQmIGI7JywgJycsICdmb28uY3BwJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50
ICZiOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlY2xhcmF0aW9uIGhhcyBzcGFjZSBi
ZXR3ZWVuIHR5cGUgbmFtZSBhbmQgJiBpbiBpbnQgJmIgIFt3aGl0ZXNwYWNlL2RlY2xhcmF0aW9u
XSBbM10nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmb28uY3BwJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgncmV0dXJuICZiOycsICcnLCAnZm9vLmNwcCcpCisKKyAgICBkZWYgdGVz
dF9pbmRlbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0YXRpYyBpbnQgbm9p
bmRlbnQ7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgICBpbnQgZm91clNwYWNl
SW5kZW50OycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgaW50IG9uZVNwYWNlSW5k
ZW50OycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1dlaXJkIG51bWJlciBvZiBzcGFjZXMg
YXQgbGluZS1zdGFydC4gICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQXJlIHlvdSB1c2lu
ZyBhIDQtc3BhY2UgaW5kZW50PyAgW3doaXRlc3BhY2UvaW5kZW50XSBbM10nKQorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCcgICBpbnQgdGhyZWVTcGFjZUluZGVudDsnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICdXZWlyZCBudW1iZXIgb2Ygc3BhY2VzIGF0IGxpbmUtc3RhcnQuICAnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0FyZSB5b3UgdXNpbmcgYSA0LXNwYWNlIGluZGVudD8g
IFt3aGl0ZXNwYWNlL2luZGVudF0gWzNdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnIGNo
YXIqIG9uZVNwYWNlSW5kZW50ID0gInB1YmxpYzoiOycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJ1dlaXJkIG51bWJlciBvZiBzcGFjZXMgYXQgbGluZS1zdGFydC4gICcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnQXJlIHlvdSB1c2luZyBhIDQtc3BhY2UgaW5kZW50PyAgW3doaXRlc3Bh
Y2UvaW5kZW50XSBbM10nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgcHVibGljOicsICcn
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgIHB1YmxpYzonLCAnJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnICAgcHVibGljOicsICcnKQorCisgICAgZGVmIHRlc3RfbGFiZWwoc2Vs
Zik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3B1YmxpYzonLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICdMYWJlbHMgc2hvdWxkIGFsd2F5cyBiZSBpbmRlbnRlZCBhdCBsZWFzdCBvbmUg
c3BhY2UuICAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0lmIHRoaXMgaXMgYSBtZW1iZXIt
aW5pdGlhbGl6ZXIgbGlzdCBpbiBhIGNvbnN0cnVjdG9yLCAnCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3RoZSBjb2xvbiBzaG91bGQgYmUgb24gdGhlIGxpbmUgYWZ0ZXIgdGhlIGRlZmluaXRp
b24gJworICAgICAgICAgICAgICAgICAgICAgICAgICdoZWFkZXIuICBbd2hpdGVzcGFjZS9sYWJl
bHNdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgcHVibGljOicsICcnKQorICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCcgICBwdWJsaWM6JywgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJyBwdWJsaWM6JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgcHVi
bGljOicsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICBwdWJsaWM6JywgJycpCisK
KyAgICBkZWYgdGVzdF9ub3RfYWxhYmVsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdNeVZlcnlMb25nTmFtZXNwYWNlOjpNeVZlcnlMb25nQ2xhc3NOYW1lOjonLCAnJykKKworICAg
IGRlZiB0ZXN0X3RhYihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnXHRpbnQgYTsn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICdUYWIgZm91bmQ7IGJldHRlciB0byB1c2Ugc3Bh
Y2VzICBbd2hpdGVzcGFjZS90YWJdIFsxXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lu
dCBhID0gNTtcdC8vIHNldCBhIHRvIDUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdUYWIg
Zm91bmQ7IGJldHRlciB0byB1c2Ugc3BhY2VzICBbd2hpdGVzcGFjZS90YWJdIFsxXScpCisKKyAg
ICBkZWYgdGVzdF91bm5hbWVkX25hbWVzcGFjZXNfaW5faGVhZGVycyhzZWxmKToKKyAgICAgICAg
c2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soCisgICAgICAgICAgICAnZm9vLmgnLCAn
bmFtZXNwYWNlIHsnLAorICAgICAgICAgICAgJ0RvIG5vdCB1c2UgdW5uYW1lZCBuYW1lc3BhY2Vz
IGluIGhlYWRlciBmaWxlcy4gIFNlZScKKyAgICAgICAgICAgICcgaHR0cDovL2dvb2dsZS1zdHls
ZWd1aWRlLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9jcHBndWlkZS54bWwjTmFtZXNwYWNlcycK
KyAgICAgICAgICAgICcgZm9yIG1vcmUgaW5mb3JtYXRpb24uICBbYnVpbGQvbmFtZXNwYWNlc10g
WzRdJykKKyAgICAgICAgIyBuYW1lc3BhY2UgcmVnaXN0cmF0aW9uIG1hY3JvcyBhcmUgT0suCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uaCcsICduYW1lc3Bh
Y2UgeyAgXFwnLCAnJykKKyAgICAgICAgIyBuYW1lZCBuYW1lc3BhY2VzIGFyZSBPSy4KKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5oJywgJ25hbWVzcGFjZSBm
b28geycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9v
LmgnLCAnbmFtZXNwYWNlIGZvb25hbWVzcGFjZSB7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uY3BwJywgJ25hbWVzcGFjZSB7JywgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uY3BwJywgJ25hbWVzcGFj
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
X2d1YXJkKHNlbGYpOgorICAgICAgICBmaWxlX3BhdGggPSAnbXlkaXIvRm9vLmgnCisKKyAgICAg
ICAgIyBXZSBjYW4ndCByZWx5IG9uIG91ciBpbnRlcm5hbCBzdHVmZiB0byBnZXQgYSBzYW5lIHBh
dGggb24gdGhlIG9wZW4gc291cmNlCisgICAgICAgICMgc2lkZSBvZiB0aGluZ3MsIHNvIGp1c3Qg
cGFyc2Ugb3V0IHRoZSBzdWdnZXN0ZWQgaGVhZGVyIGd1YXJkLiBUaGlzCisgICAgICAgICMgZG9l
c24ndCBhbGxvdyB1cyB0byB0ZXN0IHRoZSBzdWdnZXN0ZWQgaGVhZGVyIGd1YXJkLCBidXQgaXQg
ZG9lcyBsZXQgdXMKKyAgICAgICAgIyB0ZXN0IGFsbCB0aGUgb3RoZXIgaGVhZGVyIHRlc3RzLgor
ICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisg
ICAgICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAnaCcsIFtdLCBlcnJvcl9j
b2xsZWN0b3IpCisgICAgICAgIGV4cGVjdGVkX2d1YXJkID0gJycKKyAgICAgICAgbWF0Y2hlciA9
IHJlLmNvbXBpbGUoCisgICAgICAgICAgICAnTm8gXCNpZm5kZWYgaGVhZGVyIGd1YXJkIGZvdW5k
XCwgc3VnZ2VzdGVkIENQUCB2YXJpYWJsZSBpc1w6IChbQS1aYS16XzAtOV0rKSAnKQorICAgICAg
ICBmb3IgZXJyb3IgaW4gZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCk6CisgICAgICAgICAg
ICBtYXRjaGVzID0gbWF0Y2hlci5tYXRjaChlcnJvcikKKyAgICAgICAgICAgIGlmIG1hdGNoZXM6
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZ3VhcmQgPSBtYXRjaGVzLmdyb3VwKDEpCisgICAg
ICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBleHRyYWN0ZWQgc29t
ZXRoaW5nIGZvciBvdXIgaGVhZGVyIGd1YXJkLgorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFs
KGV4cGVjdGVkX2d1YXJkLCAnJykKKworICAgICAgICAjIFdyb25nIGd1YXJkCisgICAgICAgIGVy
cm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKKyAgICAgICAgc2Vs
Zi5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbJyNpZm5kZWYgRk9PX0gnLCAnI2RlZmluZSBGT09fSCddLCBlcnJvcl9jb2xs
ZWN0b3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorICAgICAgICAgICAgMSwKKyAgICAg
ICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpLmNvdW50KAorICAgICAgICAgICAg
ICAgICcjaWZuZGVmIGhlYWRlciBndWFyZCBoYXMgd3Jvbmcgc3R5bGUsIHBsZWFzZSB1c2U6ICVz
JworICAgICAgICAgICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3VhcmRdIFs1XScgJSBleHBlY3Rl
ZF9ndWFyZCksCisgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKSkKKwor
ICAgICAgICAjIE5vIGRlZmluZQorICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxl
Y3RvcihzZWxmLmFzc2VydF8pCisgICAgICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9w
YXRoLCAnaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycjaWZuZGVmICVzJyAl
IGV4cGVjdGVkX2d1YXJkXSwgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscygKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0
X2xpc3QoKS5jb3VudCgKKyAgICAgICAgICAgICAgICAnTm8gI2lmbmRlZiBoZWFkZXIgZ3VhcmQg
Zm91bmQsIHN1Z2dlc3RlZCBDUFAgdmFyaWFibGUgaXM6ICVzJworICAgICAgICAgICAgICAgICcg
IFtidWlsZC9oZWFkZXJfZ3VhcmRdIFs1XScgJSBleHBlY3RlZF9ndWFyZCksCisgICAgICAgICAg
ICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKSkKKworICAgICAgICAjIE1pc21hdGNoZWQg
ZGVmaW5lCisgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNz
ZXJ0XykKKyAgICAgICAgc2VsZi5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJyNpZm5kZWYgJXMnICUgZXhwZWN0ZWRfZ3Vh
cmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZGVmaW5lIEZPT19IJ10sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICBlcnJvcl9jb2xs
ZWN0b3IucmVzdWx0X2xpc3QoKS5jb3VudCgKKyAgICAgICAgICAgICAgICAnTm8gI2lmbmRlZiBo
ZWFkZXIgZ3VhcmQgZm91bmQsIHN1Z2dlc3RlZCBDUFAgdmFyaWFibGUgaXM6ICVzJworICAgICAg
ICAgICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3VhcmRdIFs1XScgJSBleHBlY3RlZF9ndWFyZCks
CisgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKSkKKworICAgICAgICAj
IE5vIGhlYWRlciBndWFyZCBlcnJvcnMKKyAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JD
b2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQorICAgICAgICBzZWxmLnByb2Nlc3NfZmlsZV9kYXRhKGZp
bGVfcGF0aCwgJ2gnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiAl
cycgJSBleHBlY3RlZF9ndWFyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNk
ZWZpbmUgJXMnICUgZXhwZWN0ZWRfZ3VhcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcjZW5kaWYgLy8gJXMnICUgZXhwZWN0ZWRfZ3VhcmRdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgZm9yIGxpbmUgaW4gZXJyb3Jf
Y29sbGVjdG9yLnJlc3VsdF9saXN0KCk6CisgICAgICAgICAgICBpZiBsaW5lLmZpbmQoJ2J1aWxk
L2hlYWRlcl9ndWFyZCcpICE9IC0xOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBl
Y3RlZCBlcnJvcjogJXMnICUgbGluZSkKKworICAgICAgICAjIENvbXBsZXRlbHkgaW5jb3JyZWN0
IGhlYWRlciBndWFyZAorICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3Rvcihz
ZWxmLmFzc2VydF8pCisgICAgICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAn
aCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycjaWZuZGVmIEZPTycsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZGVmaW5lIEZPTycsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcjZW5kaWYgIC8vIEZPTyddLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
CisgICAgICAgICAgICAxLAorICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0
KCkuY291bnQoCisgICAgICAgICAgICAgICAgJyNpZm5kZWYgaGVhZGVyIGd1YXJkIGhhcyB3cm9u
ZyBzdHlsZSwgcGxlYXNlIHVzZTogJXMnCisgICAgICAgICAgICAgICAgJyAgW2J1aWxkL2hlYWRl
cl9ndWFyZF0gWzVdJyAlIGV4cGVjdGVkX2d1YXJkKSwKKyAgICAgICAgICAgIGVycm9yX2NvbGxl
Y3Rvci5yZXN1bHRfbGlzdCgpKQorCisgICAgZGVmIHRlc3RfYnVpbGRfcHJpbnRmX2Zvcm1hdChz
ZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgIHIncHJpbnRmKCJc
JSVkIiwgdmFsdWUpOycsCisgICAgICAgICAgICAnJSwgWywgKCwgYW5kIHsgYXJlIHVuZGVmaW5l
ZCBjaGFyYWN0ZXIgZXNjYXBlcy4gIFVuZXNjYXBlIHRoZW0uJworICAgICAgICAgICAgJyAgW2J1
aWxkL3ByaW50Zl9mb3JtYXRdIFszXScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAg
ICAgICAgICAgIHInc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIlxbJWQiLCB2YWx1
ZSk7JywKKyAgICAgICAgICAgICclLCBbLCAoLCBhbmQgeyBhcmUgdW5kZWZpbmVkIGNoYXJhY3Rl
ciBlc2NhcGVzLiAgVW5lc2NhcGUgdGhlbS4nCisgICAgICAgICAgICAnICBbYnVpbGQvcHJpbnRm
X2Zvcm1hdF0gWzNdJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAg
cidmcHJpbnRmKGZpbGUsICJcKCVkIiwgdmFsdWUpOycsCisgICAgICAgICAgICAnJSwgWywgKCwg
YW5kIHsgYXJlIHVuZGVmaW5lZCBjaGFyYWN0ZXIgZXNjYXBlcy4gIFVuZXNjYXBlIHRoZW0uJwor
ICAgICAgICAgICAgJyAgW2J1aWxkL3ByaW50Zl9mb3JtYXRdIFszXScpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgIHIndnNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1
ZmZlciksICJcXFx7JWQiLCBhcCk7JywKKyAgICAgICAgICAgICclLCBbLCAoLCBhbmQgeyBhcmUg
dW5kZWZpbmVkIGNoYXJhY3RlciBlc2NhcGVzLiAgVW5lc2NhcGUgdGhlbS4nCisgICAgICAgICAg
ICAnICBbYnVpbGQvcHJpbnRmX2Zvcm1hdF0gWzNdJykKKworICAgICAgICAjIERvbid0IHdhcm4g
aWYgZG91YmxlLXNsYXNoIHByZWNlZGVzIHRoZSBzeW1ib2wKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludChyJ3ByaW50ZigiXFwlJSVkIiwgdmFsdWUpOycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJycpCisKKyAgICBkZWYgdGVzdF9ydW50aW1lX3ByaW50Zl9mb3JtYXQoc2VsZik6CisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICByJ2ZwcmludGYoZmlsZSwgIiVxIiwg
dmFsdWUpOycsCisgICAgICAgICAgICAnJXEgaW4gZm9ybWF0IHN0cmluZ3MgaXMgZGVwcmVjYXRl
ZC4gIFVzZSAlbGwgaW5zdGVhZC4nCisgICAgICAgICAgICAnICBbcnVudGltZS9wcmludGZfZm9y
bWF0XSBbM10nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICByJ2Fw
cmludGYoZmlsZSwgIlRoZSBudW1iZXIgaXMgJTEycSIsIHZhbHVlKTsnLAorICAgICAgICAgICAg
JyVxIGluIGZvcm1hdCBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxsIGluc3RlYWQuJwor
ICAgICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmX2Zvcm1hdF0gWzNdJykKKworICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgcidwcmludGYoZmlsZSwgIlRoZSBudW1iZXIg
aXMiICIlLTEycSIsIHZhbHVlKTsnLAorICAgICAgICAgICAgJyVxIGluIGZvcm1hdCBzdHJpbmdz
IGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxsIGluc3RlYWQuJworICAgICAgICAgICAgJyAgW3J1bnRp
bWUvcHJpbnRmX2Zvcm1hdF0gWzNdJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAg
ICAgICAgICAgcidwcmludGYoZmlsZSwgIlRoZSBudW1iZXIgaXMiICIlKzEycSIsIHZhbHVlKTsn
LAorICAgICAgICAgICAgJyVxIGluIGZvcm1hdCBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuICBVc2Ug
JWxsIGluc3RlYWQuJworICAgICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmX2Zvcm1hdF0gWzNd
JykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgcidwcmludGYoZmls
ZSwgIlRoZSBudW1iZXIgaXMiICIlIDEycSIsIHZhbHVlKTsnLAorICAgICAgICAgICAgJyVxIGlu
IGZvcm1hdCBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxsIGluc3RlYWQuJworICAgICAg
ICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmX2Zvcm1hdF0gWzNdJykKKworICAgICAgICBzZWxmLmFz
c2VydF9saW50KAorICAgICAgICAgICAgcidzbnByaW50ZihmaWxlLCAiTmV2ZXIgbWl4ICVkIGFu
ZCAlMSRkIHBhcm1hZXRlcnMhIiwgdmFsdWUpOycsCisgICAgICAgICAgICAnJU4kIGZvcm1hdHMg
YXJlIHVuY29udmVudGlvbmFsLiAgVHJ5IHJld3JpdGluZyB0byBhdm9pZCB0aGVtLicKKyAgICAg
ICAgICAgICcgIFtydW50aW1lL3ByaW50Zl9mb3JtYXRdIFsyXScpCisKKyAgICBkZWYgYXNzZXJ0
X2xpbnRMb2dDb2RlT25FcnJvcihzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlKToKKyAgICAg
ICAgIyBTcGVjaWFsIGFzc2VydF9saW50IHdoaWNoIGxvZ3MgdGhlIGlucHV0IGNvZGUgb24gZXJy
b3IuCisgICAgICAgIHJlc3VsdCA9IHNlbGYucGVyZm9ybV9zaW5nbGVfbGluZV9saW50KGNvZGUs
ICdmb28uY3BwJykKKyAgICAgICAgaWYgcmVzdWx0ICE9IGV4cGVjdGVkX21lc3NhZ2U6CisgICAg
ICAgICAgICBzZWxmLmZhaWwoJ0ZvciBjb2RlOiAiJXMiXG5Hb3Q6ICIlcyJcbkV4cGVjdGVkOiAi
JXMiJworICAgICAgICAgICAgICAgICAgICAgICUgKGNvZGUsIHJlc3VsdCwgZXhwZWN0ZWRfbWVz
c2FnZSkpCisKKyAgICBkZWYgdGVzdF9idWlsZF9zdG9yYWdlX2NsYXNzKHNlbGYpOgorICAgICAg
ICBxdWFsaWZpZXJzID0gW05vbmUsICdjb25zdCcsICd2b2xhdGlsZSddCisgICAgICAgIHNpZ25z
ID0gW05vbmUsICdzaWduZWQnLCAndW5zaWduZWQnXQorICAgICAgICB0eXBlcyA9IFsndm9pZCcs
ICdjaGFyJywgJ2ludCcsICdmbG9hdCcsICdkb3VibGUnLAorICAgICAgICAgICAgICAgICAnc2No
YXInLCAnaW50OCcsICd1aW50OCcsICdpbnQxNicsICd1aW50MTYnLAorICAgICAgICAgICAgICAg
ICAnaW50MzInLCAndWludDMyJywgJ2ludDY0JywgJ3VpbnQ2NCddCisgICAgICAgIHN0b3JhZ2Vf
Y2xhc3NlcyA9IFsnYXV0bycsICdleHRlcm4nLCAncmVnaXN0ZXInLCAnc3RhdGljJywgJ3R5cGVk
ZWYnXQorCisgICAgICAgIGJ1aWxkX3N0b3JhZ2VfY2xhc3NfZXJyb3JfbWVzc2FnZSA9ICgKKyAg
ICAgICAgICAgICdTdG9yYWdlIGNsYXNzIChzdGF0aWMsIGV4dGVybiwgdHlwZWRlZiwgZXRjKSBz
aG91bGQgYmUgZmlyc3QuJworICAgICAgICAgICAgJyAgW2J1aWxkL3N0b3JhZ2VfY2xhc3NdIFs1
XScpCisKKyAgICAgICAgIyBTb21lIGV4cGxpY2l0IGNhc2VzLiBMZWdhbCBpbiBDKyssIGRlcHJl
Y2F0ZWQgaW4gQzk5LgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjb25zdCBpbnQgc3RhdGlj
IGZvbyA9IDU7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9zdG9yYWdlX2NsYXNz
X2Vycm9yX21lc3NhZ2UpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnY2hhciBzdGF0aWMg
Zm9vOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfc3RvcmFnZV9jbGFzc19lcnJv
cl9tZXNzYWdlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2RvdWJsZSBjb25zdCBzdGF0
aWMgZm9vID0gMi4wOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfc3RvcmFnZV9j
bGFzc19lcnJvcl9tZXNzYWdlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3VpbnQ2NCB0
eXBlZGVmIHVuc2lnbmVkTG9uZ0xvbmc7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBidWls
ZF9zdG9yYWdlX2NsYXNzX2Vycm9yX21lc3NhZ2UpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnaW50IHJlZ2lzdGVyIGZvbyA9IDA7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBidWls
ZF9zdG9yYWdlX2NsYXNzX2Vycm9yX21lc3NhZ2UpCisKKyAgICAgICAgIyBTaW5jZSB0aGVyZSBh
cmUgYSB2ZXJ5IGxhcmdlIG51bWJlciBvZiBwb3NzaWJpbGl0aWVzLCByYW5kb21seQorICAgICAg
ICAjIGNvbnN0cnVjdCBkZWNsYXJhdGlvbnMuCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgdGhl
IGRlY2xhcmF0aW9uIGlzIGxvZ2dlZCBpZiB0aGVyZSdzIGFuIGVycm9yLgorICAgICAgICAjIFNl
ZWQgZ2VuZXJhdG9yIHdpdGggYW4gaW50ZWdlciBmb3IgYWJzb2x1dGUgcmVwcm9kdWNpYmlsaXR5
LgorICAgICAgICByYW5kb20uc2VlZCgyNSkKKyAgICAgICAgZm9yIHVudXNlZF9pIGluIHJhbmdl
KDEwKToKKyAgICAgICAgICAgICMgQnVpbGQgdXAgcmFuZG9tIGxpc3Qgb2Ygbm9uLXN0b3JhZ2Ut
Y2xhc3MgZGVjbGFyYXRpb24gc3BlY3MuCisgICAgICAgICAgICBvdGhlcl9kZWNsX3NwZWNzID0g
W3JhbmRvbS5jaG9pY2UocXVhbGlmaWVycyksIHJhbmRvbS5jaG9pY2Uoc2lnbnMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kb20uY2hvaWNlKHR5cGVzKV0KKyAgICAgICAg
ICAgICMgcmVtb3ZlIE5vbmUKKyAgICAgICAgICAgIG90aGVyX2RlY2xfc3BlY3MgPSBmaWx0ZXIo
bGFtYmRhIHg6IHggaXMgbm90IE5vbmUsIG90aGVyX2RlY2xfc3BlY3MpCisKKyAgICAgICAgICAg
ICMgc2h1ZmZsZQorICAgICAgICAgICAgcmFuZG9tLnNodWZmbGUob3RoZXJfZGVjbF9zcGVjcykK
KworICAgICAgICAgICAgIyBpbnNlcnQgc3RvcmFnZSBjbGFzcyBhZnRlciB0aGUgZmlyc3QKKyAg
ICAgICAgICAgIHN0b3JhZ2VfY2xhc3MgPSByYW5kb20uY2hvaWNlKHN0b3JhZ2VfY2xhc3NlcykK
KyAgICAgICAgICAgIGluc2VydGlvbl9wb2ludCA9IHJhbmRvbS5yYW5kaW50KDEsIGxlbihvdGhl
cl9kZWNsX3NwZWNzKSkKKyAgICAgICAgICAgIGRlY2xfc3BlY3MgPSAob3RoZXJfZGVjbF9zcGVj
c1swOmluc2VydGlvbl9wb2ludF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKyBbc3RvcmFn
ZV9jbGFzc10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKyBvdGhlcl9kZWNsX3NwZWNzW2lu
c2VydGlvbl9wb2ludDpdKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydF9saW50TG9nQ29kZU9u
RXJyb3IoCisgICAgICAgICAgICAgICAgJyAnLmpvaW4oZGVjbF9zcGVjcykgKyAnOycsCisgICAg
ICAgICAgICAgICAgYnVpbGRfc3RvcmFnZV9jbGFzc19lcnJvcl9tZXNzYWdlKQorCisgICAgICAg
ICAgICAjIGJ1dCBubyBlcnJvciBpZiBzdG9yYWdlIGNsYXNzIGlzIGZpcnN0CisgICAgICAgICAg
ICBzZWxmLmFzc2VydF9saW50TG9nQ29kZU9uRXJyb3IoCisgICAgICAgICAgICAgICAgc3RvcmFn
ZV9jbGFzcyArICcgJyArICcgJy5qb2luKG90aGVyX2RlY2xfc3BlY3MpLAorICAgICAgICAgICAg
ICAgICcnKQorCisgICAgZGVmIHRlc3RfbGVnYWxfY29weXJpZ2h0KHNlbGYpOgorICAgICAgICBs
ZWdhbF9jb3B5cmlnaHRfbWVzc2FnZSA9ICgKKyAgICAgICAgICAgICdObyBjb3B5cmlnaHQgbWVz
c2FnZSBmb3VuZC4gICcKKyAgICAgICAgICAgICdZb3Ugc2hvdWxkIGhhdmUgYSBsaW5lOiAiQ29w
eXJpZ2h0IFt5ZWFyXSA8Q29weXJpZ2h0IE93bmVyPiInCisgICAgICAgICAgICAnICBbbGVnYWwv
Y29weXJpZ2h0XSBbNV0nKQorCisgICAgICAgIGNvcHlyaWdodF9saW5lID0gJy8vIENvcHlyaWdo
dCAyMDA4IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuJworCisgICAgICAgIGZpbGVf
cGF0aCA9ICdteWRpci9nb29nbGVjbGllbnQvZm9vLmNwcCcKKworICAgICAgICAjIFRoZXJlIHNo
b3VsZCBiZSBhIGNvcHlyaWdodCBtZXNzYWdlIGluIHRoZSBmaXJzdCAxMCBsaW5lcworICAgICAg
ICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisgICAgICAg
IHNlbGYucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAnY3BwJywgW10sIGVycm9yX2NvbGxl
Y3RvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisgICAgICAgICAgICAxLAorICAgICAg
ICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291bnQobGVnYWxfY29weXJpZ2h0
X21lc3NhZ2UpKQorCisgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNl
bGYuYXNzZXJ0XykKKyAgICAgICAgc2VsZi5wcm9jZXNzX2ZpbGVfZGF0YSgKKyAgICAgICAgICAg
IGZpbGVfcGF0aCwgJ2NwcCcsCisgICAgICAgICAgICBbJycgZm9yIHVudXNlZF9pIGluIHJhbmdl
KDEwKV0gKyBbY29weXJpZ2h0X2xpbmVdLAorICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICBl
cnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKS5jb3VudChsZWdhbF9jb3B5cmlnaHRfbWVzc2Fn
ZSkpCisKKyAgICAgICAgIyBUZXN0IHRoYXQgd2FybmluZyBpc24ndCBpc3N1ZWQgaWYgQ29weXJp
Z2h0IGxpbmUgYXBwZWFycyBlYXJseSBlbm91Z2guCisgICAgICAgIGVycm9yX2NvbGxlY3RvciA9
IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKKyAgICAgICAgc2VsZi5wcm9jZXNzX2ZpbGVf
ZGF0YShmaWxlX3BhdGgsICdjcHAnLCBbY29weXJpZ2h0X2xpbmVdLCBlcnJvcl9jb2xsZWN0b3Ip
CisgICAgICAgIGZvciBtZXNzYWdlIGluIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpOgor
ICAgICAgICAgICAgaWYgbWVzc2FnZS5maW5kKCdsZWdhbC9jb3B5cmlnaHQnKSAhPSAtMToKKyAg
ICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZXJyb3I6ICVzJyAlIG1lc3NhZ2Up
CisKKyAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRf
KQorICAgICAgICBzZWxmLnByb2Nlc3NfZmlsZV9kYXRhKAorICAgICAgICAgICAgZmlsZV9wYXRo
LCAnY3BwJywKKyAgICAgICAgICAgIFsnJyBmb3IgdW51c2VkX2kgaW4gcmFuZ2UoOSldICsgW2Nv
cHlyaWdodF9saW5lXSwKKyAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgZm9y
IG1lc3NhZ2UgaW4gZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCk6CisgICAgICAgICAgICBp
ZiBtZXNzYWdlLmZpbmQoJ2xlZ2FsL2NvcHlyaWdodCcpICE9IC0xOgorICAgICAgICAgICAgICAg
IHNlbGYuZmFpbCgnVW5leHBlY3RlZCBlcnJvcjogJXMnICUgbWVzc2FnZSkKKworICAgIGRlZiB0
ZXN0X2ludmFsaWRfaW5jcmVtZW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcq
Y291bnQrKzsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdDaGFuZ2luZyBwb2ludGVyIGlu
c3RlYWQgb2YgdmFsdWUgKG9yIHVudXNlZCB2YWx1ZSBvZiAnCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJ29wZXJhdG9yKikuICBbcnVudGltZS9pbnZhbGlkX2luY3JlbWVudF0gWzVdJykKKwor
CitjbGFzcyBDbGVhbnNlZExpbmVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRl
c3RfaW5pdChzZWxmKToKKyAgICAgICAgbGluZXMgPSBbJ0xpbmUgMScsCisgICAgICAgICAgICAg
ICAgICdMaW5lIDInLAorICAgICAgICAgICAgICAgICAnTGluZSAzIC8vIENvbW1lbnQgdGVzdCcs
CisgICAgICAgICAgICAgICAgICdMaW5lIDQgImZvbyInXQorCisgICAgICAgIGNsZWFuX2xpbmVz
ID0gY3BwX3N0eWxlLkNsZWFuc2VkTGluZXMobGluZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKGxpbmVzLCBjbGVhbl9saW5lcy5yYXdfbGluZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKDQsIGNsZWFuX2xpbmVzLm51bV9saW5lcygpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKFsnTGluZSAxJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdMaW5lIDInLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0xpbmUgMyAnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0xpbmUgNCAiZm9vIiddLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbl9s
aW5lcy5saW5lcykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ0xpbmUgMScsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnTGluZSAyJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdMaW5lIDMgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdMaW5lIDQgIiInXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW5fbGluZXMuZWxpZGVkKQorCisgICAgZGVm
IHRlc3RfaW5pdF9lbXB0eShzZWxmKToKKyAgICAgICAgY2xlYW5fbGluZXMgPSBjcHBfc3R5bGUu
Q2xlYW5zZWRMaW5lcyhbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoW10sIGNsZWFuX2xp
bmVzLnJhd19saW5lcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgY2xlYW5fbGluZXMu
bnVtX2xpbmVzKCkpCisKKyAgICBkZWYgdGVzdF9jb2xsYXBzZV9zdHJpbmdzKHNlbGYpOgorICAg
ICAgICBjb2xsYXBzZSA9IGNwcF9zdHlsZS5DbGVhbnNlZExpbmVzLmNvbGxhcHNlX3N0cmluZ3MK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyIiJywgY29sbGFwc2UoJyIiJykpICAgICAgICAg
ICAgICMgIiIgICAgIChlbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyIiIicsIGNv
bGxhcHNlKCciIiInKSkgICAgICAgICAgICMgIiIiICAgIChiYWQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKCciIicsIGNvbGxhcHNlKCcieHl6IicpKSAgICAgICAgICAjICJ4eXoiICAoc3Ry
aW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnIiInLCBjb2xsYXBzZSgnIlxcXCIiJykp
ICAgICAgICAgIyAiXCIiICAgKHN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyIi
JywgY29sbGFwc2UoJyJcJyInKSkgICAgICAgICAgICMgIiciICAgIChzdHJpbmcpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKCciXCInLCBjb2xsYXBzZSgnIlwiJykpICAgICAgICAgICAjICJc
IiAgICAoYmFkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnIiInLCBjb2xsYXBzZSgnIlxc
XFwiJykpICAgICAgICAgIyAiXFwiICAgKHN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoJyInLCBjb2xsYXBzZSgnIlxcXFxcXCInKSkgICAgICAgICMgIlxcXCIgIChiYWQpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCciIicsIGNvbGxhcHNlKCciXFxcXFxcXFwiJykpICAgICAj
ICJcXFxcIiAoc3RyaW5nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdcJ1wnJywgY29s
bGFwc2UoJ1wnXCcnKSkgICAgICAgICAjICcnICAgICAoZW1wdHkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKCdcJ1wnJywgY29sbGFwc2UoJ1wnYVwnJykpICAgICAgICAjICdhJyAgICAoY2hh
cikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ1wnXCcnLCBjb2xsYXBzZSgnXCdcXFwnXCcn
KSkgICAgICMgJ1wnJyAgIChjaGFyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnXCcnLCBj
b2xsYXBzZSgnXCdcXFwnJykpICAgICAgICAgIyAnXCcgICAgKGJhZCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoJycsIGNvbGxhcHNlKCdcXDAxMicpKSAgICAgICAgICAgICMgJ1wwMTInIChj
aGFyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnJywgY29sbGFwc2UoJ1xceGZGMCcpKSAg
ICAgICAgICAgIyAnXHhmRjAnIChjaGFyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnJywg
Y29sbGFwc2UoJ1xcbicpKSAgICAgICAgICAgICAgIyAnXG4nIChjaGFyKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygnXCMnLCBjb2xsYXBzZSgnXFwjJykpICAgICAgICAgICAgIyAnXCMnIChi
YWQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ1N0cmluZ1JlcGxhY2UoYm9keSwgIiIs
ICIiKTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZSgnU3RyaW5nUmVwbGFj
ZShib2R5LCAiXFxcXCIsICJcXFxcXFxcXCIpOycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cygnXCdcJyAiIicsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlKCdcJyJcJyAi
Zm9vIicpKQorCisKK2NsYXNzIE9yZGVyT2ZJbmNsdWRlc1Rlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6
CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmluY2x1ZGVfc3RhdGUgPSBjcHBf
c3R5bGUuX0luY2x1ZGVTdGF0ZSgpCisKKyAgICAgICAgIyBDaGVhdCBvcy5wYXRoLmFic3BhdGgg
Y2FsbGVkIGluIEZpbGVJbmZvIGNsYXNzLgorICAgICAgICBzZWxmLm9zX3BhdGhfYWJzcGF0aF9v
cmlnID0gb3MucGF0aC5hYnNwYXRoCisgICAgICAgIG9zLnBhdGguYWJzcGF0aCA9IGxhbWJkYSB2
YWx1ZTogdmFsdWUKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgb3MucGF0aC5h
YnNwYXRoID0gc2VsZi5vc19wYXRoX2Fic3BhdGhfb3JpZworCisgICAgZGVmIHRlc3RfdHJ5X2Ry
b3BfY29tbW9uX3N1ZmZpeGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28v
Zm9vJywgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvby1pbmwuaCcpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28vYmFyL2ZvbycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Jhci9mb29faW5s
LmgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vL2ZvbycsIGNwcF9zdHlsZS5fZHJv
cF9jb21tb25fc3VmZml4ZXMoJ2Zvby9mb28uY3BwJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ2Zvby9mb29fdW51c3VhbGludGVybmFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBj
cHBfc3R5bGUuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vZm9vX3VudXN1YWxpbnRlcm5hbC5o
JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygnX3Rlc3QuY3BwJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ3Rlc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9z
dHlsZS5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ3Rlc3QuY3BwJykpCisKKworY2xhc3MgT3JkZXJP
ZkluY2x1ZGVzVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6Cisg
ICAgICAgIHNlbGYuaW5jbHVkZV9zdGF0ZSA9IGNwcF9zdHlsZS5fSW5jbHVkZVN0YXRlKCkKKwor
ICAgICAgICAjIENoZWF0IG9zLnBhdGguYWJzcGF0aCBjYWxsZWQgaW4gRmlsZUluZm8gY2xhc3Mu
CisgICAgICAgIHNlbGYub3NfcGF0aF9hYnNwYXRoX29yaWcgPSBvcy5wYXRoLmFic3BhdGgKKyAg
ICAgICAgb3MucGF0aC5hYnNwYXRoID0gbGFtYmRhIHZhbHVlOiB2YWx1ZQorCisgICAgZGVmIHRl
YXJEb3duKHNlbGYpOgorICAgICAgICBvcy5wYXRoLmFic3BhdGggPSBzZWxmLm9zX3BhdGhfYWJz
cGF0aF9vcmlnCisKKyAgICBkZWYgdGVzdF9jaGVja19uZXh0X2luY2x1ZGVfb3JkZXJfX25vX2Nv
bmZpZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVhZGVyIGZpbGUgc2hvdWxk
IG5vdCBjb250YWluIFdlYkNvcmUgY29uZmlnLmguJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGNwcF9zdHlsZS5f
Q09ORklHX0hFQURFUiwgVHJ1ZSkpCisKKyAgICBkZWYgdGVzdF9jaGVja19uZXh0X2luY2x1ZGVf
b3JkZXJfX25vX3NlbGYoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlYWRlciBm
aWxlIHNob3VsZCBub3QgY29udGFpbiBpdHNlbGYuJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGNwcF9zdHlsZS5f
UFJJTUFSWV9IRUFERVIsIFRydWUpKQorICAgICAgICAjIFRlc3QgYWN0dWFsIGNvZGUgdG8gbWFr
ZSBzdXJlIHRoYXQgaGVhZGVyIHR5cGVzIGFyZSBjb3JyZWN0bHkgYXNzaWduZWQuCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdGb28uaCcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiRm9vLmgiXG4nLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSGVhZGVyIGZpbGUgc2hvdWxkIG5v
dCBjb250YWluIGl0c2VsZi4gU2hvdWxkIGJlOiBhbHBoYWJldGljYWxseSBzb3J0ZWQuJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV9v
cmRlcl0gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ0Zv
b0Jhci5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNs
dWRlICJGb28uaCJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcnKQorCisgICAgZGVmIHRlc3RfY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyX19saWtlbHlfdGhl
bl9jb25maWcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ZvdW5kIGhlYWRlciB0
aGlzIGZpbGUgaW1wbGVtZW50cyBiZWZvcmUgV2ViQ29yZSBjb25maWcuaC4nLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3Jk
ZXIoY3BwX3N0eWxlLl9QUklNQVJZX0hFQURFUiwgRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdGb3VuZCBXZWJDb3JlIGNvbmZpZy5oIGFmdGVyIGEgaGVhZGVyIHRoaXMgZmlsZSBp
bXBsZW1lbnRzLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmNsdWRlX3N0YXRl
LmNoZWNrX25leHRfaW5jbHVkZV9vcmRlcihjcHBfc3R5bGUuX0NPTkZJR19IRUFERVIsIEZhbHNl
KSkKKworICAgIGRlZiB0ZXN0X2NoZWNrX25leHRfaW5jbHVkZV9vcmRlcl9fb3RoZXJfdGhlbl9j
b25maWcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ZvdW5kIG90aGVyIGhlYWRl
ciBiZWZvcmUgV2ViQ29yZSBjb25maWcuaC4nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoY3BwX3N0eWxlLl9PVEhF
Ul9IRUFERVIsIEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRm91bmQgV2ViQ29y
ZSBjb25maWcuaCBhZnRlciBvdGhlciBoZWFkZXIuJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGNwcF9zdHlsZS5f
Q09ORklHX0hFQURFUiwgRmFsc2UpKQorCisgICAgZGVmIHRlc3RfY2hlY2tfbmV4dF9pbmNsdWRl
X29yZGVyX19jb25maWdfdGhlbl9vdGhlcl90aGVuX2xpa2VseShzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnJywgc2VsZi5pbmNsdWRlX3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9v
cmRlcihjcHBfc3R5bGUuX0NPTkZJR19IRUFERVIsIEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnRm91bmQgb3RoZXIgaGVhZGVyIGJlZm9yZSBhIGhlYWRlciB0aGlzIGZpbGUgaW1w
bGVtZW50cy4nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5jbHVkZV9zdGF0ZS5j
aGVja19uZXh0X2luY2x1ZGVfb3JkZXIoY3BwX3N0eWxlLl9PVEhFUl9IRUFERVIsIEZhbHNlKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRm91bmQgaGVhZGVyIHRoaXMgZmlsZSBpbXBsZW1l
bnRzIGFmdGVyIG90aGVyIGhlYWRlci4nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
aW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoY3BwX3N0eWxlLl9QUklNQVJZ
X0hFQURFUiwgRmFsc2UpKQorCisgICAgZGVmIHRlc3RfY2hlY2tfYWxwaGFiZXRpY2FsX2luY2x1
ZGVfb3JkZXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNr
KCdmb28uaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5j
bHVkZSAiYS5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
I2luY2x1ZGUgImMuaCJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJyNpbmNsdWRlICJiLmgiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnQWxwaGFiZXRpY2FsIHNvcnRpbmcgcHJvYmxlbS4gIFtidWlsZC9pbmNsdWRlX29y
ZGVyXSBbNF0nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdm
b28uaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVk
ZSAiYS5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2lu
Y2x1ZGUgImIuaCJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyNpbmNsdWRlICJjLmgiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnJykKKworICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9v
LmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUg
PGFzc2VydC5oPlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
I2luY2x1ZGUgImJhci5oIlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0FscGhhYmV0aWNhbCBzb3J0aW5nIHByb2JsZW0uICBbYnVpbGQvaW5jbHVkZV9vcmRl
cl0gWzRdJykKKworICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9v
LmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUg
ImJhci5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2lu
Y2x1ZGUgPGFzc2VydC5oPlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJycpCisKKyAgICBkZWYgdGVzdF93ZWJraXRfYXBpX3Rlc3RfZXhjbHVkZWQoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdXZWJLaXRUb29scy9X
ZWJLaXRBUElUZXN0L1Rlc3QuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjaW5jbHVkZSAiZm9vLmgiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X3dlYmtpdF9hcGlfdGVzdF9leGNsdWRl
ZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ1dlYktp
dC9xdC9RR1ZMYXVuY2hlci9tYWluLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICcjaW5jbHVkZSAiZm9vLmgiXG4nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2NoZWNrX2xpbmVfYnJlYWtf
YWZ0ZXJfb3duX2hlYWRlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVs
ZXNfY2hlY2soJ2Zvby5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnI2luY2x1ZGUgImNvbmZpZy5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnI2luY2x1ZGUgImZvby5oIlxuJworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImJhci5oIlxuJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1lvdSBzaG91bGQgYWRkIGEgYmxhbmsgbGluZSBh
ZnRlciBpbXBsZW1lbnRhdGlvbiBmaWxlXCdzIG93biBoZWFkZXIuICBbYnVpbGQvaW5jbHVkZV9v
cmRlcl0gWzRdJykKKworICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygn
Zm9vLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5j
bHVkZSAiY29uZmlnLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcjaW5jbHVkZSAiZm9vLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyNpbmNsdWRlICJiYXIuaCJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfY2hlY2tfcHJlcHJvY2Vzc29yX2luX2luY2x1ZGVf
c2VjdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2so
J2Zvby5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2lu
Y2x1ZGUgImNvbmZpZy5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnI2luY2x1ZGUgImZvby5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcjaWZkZWYgQkFaXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcjaW5jbHVkZSAiYmF6LmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjZWxzZVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnI2luY2x1ZGUgImZvb2Jhci5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnI2VuZGlmIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnI2luY2x1ZGUgImJhci5oIlxuJywgIyBObyBmbGFnIGJlY2F1c2UgcHJldmlvdXMg
aXMgaW4gcHJlcHJvY2Vzc29yIHNlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hl
Y2soJ2Zvby5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
I2luY2x1ZGUgImNvbmZpZy5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnI2luY2x1ZGUgImZvby5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcjaWZkZWYgQkFaXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcjaW5jbHVkZSAiYmF6LmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcjZW5kaWYiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjaW5jbHVkZSAiYmFyLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICcjaW5jbHVkZSAiYS5oIlxuJywgIyBTaG91bGQgc3RpbGwgZmxhZyB0aGlz
LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWxwaGFiZXRpY2Fs
IHNvcnRpbmcgcHJvYmxlbS4gIFtidWlsZC9pbmNsdWRlX29yZGVyXSBbNF0nKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uY3BwJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJjb25maWcuaCJcbicKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJmb28uaCJc
bicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2lmZGVmIEJBWlxuJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImJhei5oIlxuJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImJhci5o
IlxuJyAjU2hvdWxkIHN0aWxsIGZsYWcgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnI2VuZGlmIlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0FscGhhYmV0aWNhbCBzb3J0aW5nIHByb2JsZW0uICBbYnVpbGQvaW5jbHVk
ZV9vcmRlcl0gWzRdJykKKworICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVj
aygnZm9vLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcj
aW5jbHVkZSAiY29uZmlnLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjaW5jbHVkZSAiZm9vLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJyNpZmRlZiBCQVpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJyNpbmNsdWRlICJiYXouaCJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyNlbmRpZiJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyNpZmRlZiBGT09CQVJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyNpbmNsdWRlICJmb29iYXIuaCJcbicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyNlbmRpZiJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJyNpbmNsdWRlICJiYXIuaCJcbicKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJhLmgiXG4nLCAjIFNob3VsZCBzdGlsbCBm
bGFnIHRoaXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBbHBo
YWJldGljYWwgc29ydGluZyBwcm9ibGVtLiAgW2J1aWxkL2luY2x1ZGVfb3JkZXJdIFs0XScpCisK
KyAgICAgICAgIyBDaGVjayB0aGF0IGFmdGVyIGFuIGFscmVhZHkgaW5jbHVkZWQgZXJyb3IsIHRo
ZSBzb3J0aW5nIHJ1bGVzIHN0aWxsIHdvcmsuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdl
X3J1bGVzX2NoZWNrKCdmb28uY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyNpbmNsdWRlICJjb25maWcuaCJcbicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJmb28uaCJcbicKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnI2luY2x1ZGUgImZvby5oIlxuJworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImcuaCJcbicsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICciZm9vLmgiIGFscmVhZHkgaW5jbHVkZWQgYXQgZm9v
LmNwcDoxICBbYnVpbGQvaW5jbHVkZV0gWzRdJykKKworICAgIGRlZiB0ZXN0X2NoZWNrX3d0Zl9p
bmNsdWRlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2so
J2Zvby5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2lu
Y2x1ZGUgImNvbmZpZy5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnI2luY2x1ZGUgImZvby5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD5cbicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxl
c19jaGVjaygnZm9vLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcjaW5jbHVkZSAiY29uZmlnLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICcjaW5jbHVkZSAiZm9vLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyNpbmNsdWRlICJ3dGYvQXNzZXJ0aW9ucy5oIlxuJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3d0ZiBpbmNsdWRlcyBzaG91bGQgYmUgPHd0Zi9m
aWxlLmg+IGluc3RlYWQgb2YgInd0Zi9maWxlLmgiLicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVdIFs0XScpCisKKyAgICBkZWYgdGVz
dF9jbGFzc2lmeV9pbmNsdWRlKHNlbGYpOgorICAgICAgICBjbGFzc2lmeV9pbmNsdWRlID0gY3Bw
X3N0eWxlLl9jbGFzc2lmeV9pbmNsdWRlCisgICAgICAgIGluY2x1ZGVfc3RhdGUgPSBjcHBfc3R5
bGUuX0luY2x1ZGVTdGF0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3BwX3N0eWxlLl9D
T05GSUdfSEVBREVSLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZ5X2luY2x1ZGUo
J2Zvby9mb28uY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdjb25maWcuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
YWxzZSwgaW5jbHVkZV9zdGF0ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3BwX3N0eWxl
Ll9QUklNQVJZX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2lmeV9pbmNs
dWRlKCdmb28vaW50ZXJuYWwvZm9vLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnZm9vL3B1YmxpYy9mb28uaCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGYWxzZSwgaW5jbHVkZV9zdGF0ZSkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY3BwX3N0eWxlLl9QUklNQVJZX0hFQURFUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBjbGFzc2lmeV9pbmNsdWRlKCdmb28vaW50ZXJuYWwvZm9vLmNwcCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vL290aGVyL3B1YmxpYy9mb28u
aCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgaW5j
bHVkZV9zdGF0ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3BwX3N0eWxlLl9PVEhFUl9I
RUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZSgnZm9vL2lu
dGVybmFsL2Zvby5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2Zvby9vdGhlci9wdWJsaWMvZm9vcC5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZhbHNlLCBpbmNsdWRlX3N0YXRlKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjcHBfc3R5bGUuX09USEVSX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGFzc2lmeV9pbmNsdWRlKCdmb28vZm9vLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnc3RyaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRydWUsIGluY2x1ZGVfc3RhdGUpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNwcF9zdHlsZS5fUFJJTUFSWV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xhc3NpZnlfaW5jbHVkZSgnZm9vQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnZm9vLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmFsc2UsIGluY2x1ZGVfc3RhdGUpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNwcF9zdHlsZS5fUFJJTUFSWV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgY2xhc3NpZnlfaW5jbHVkZSgnUHJlZml4Rm9vQ3VzdG9tLmNwcCcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRm9vLmgnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UsIGluY2x1ZGVfc3RhdGUpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNwcF9zdHlsZS5fTU9DX0hFQURFUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBjbGFzc2lmeV9pbmNsdWRlKCdmb28uY3BwJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdmb28ubW9jJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZhbHNlLCBpbmNsdWRlX3N0YXRlKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjcHBfc3R5bGUuX01PQ19IRUFERVIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgY2xhc3NpZnlfaW5jbHVkZSgnZm9vLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnbW9jX2Zvby5jcHAnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRmFsc2UsIGluY2x1ZGVfc3RhdGUpKQorICAgICAgICAjIFRy
aWNreSBleGFtcGxlIHdoZXJlIGJvdGggaW5jbHVkZXMgbWlnaHQgYmUgY2xhc3NpZmllZCBhcyBw
cmltYXJ5LgorICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnU2Nyb2xs
YmFyVGhlbWVXaW5jZS5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnI2luY2x1ZGUgImNvbmZpZy5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lV2luY2UuaCJcbicKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgIlNjcm9sbGJhci5oIlxuJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdTY3JvbGxiYXJUaGVtZVdpbmNlLmNwcCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiY29uZmln
LmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVk
ZSAiU2Nyb2xsYmFyLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNs
dWRlICJTY3JvbGxiYXJUaGVtZVdpbmNlLmgiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnRm91bmQgaGVhZGVyIHRoaXMgZmlsZSBpbXBsZW1lbnRzIGFmdGVy
IGEgaGVhZGVyIHRoaXMgZmlsZSBpbXBsZW1lbnRzLicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyBTaG91bGQgYmU6IGNvbmZpZy5oLCBwcmltYXJ5IGhlYWRlciwg
YmxhbmsgbGluZSwgYW5kIHRoZW4gYWxwaGFiZXRpY2FsbHkgc29ydGVkLicKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVfb3JkZXJdIFs0
XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdSZXNvdXJjZUhh
bmRsZVdpbi5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
I2luY2x1ZGUgImNvbmZpZy5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiXG4nCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZVdpbi5oIlxuJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF90
cnlfZHJvcF9jb21tb25fc3VmZml4ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J2Zvby9mb28nLCBjcHBfc3R5bGUuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vZm9vLWlubC5o
JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Zvby9iYXIvZm9vJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjcHBfc3R5bGUuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vYmFyL2Zv
b19pbmwuaCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28vZm9vJywgY3BwX3N0eWxl
Ll9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvby5jcHAnKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnZm9vL2Zvb191bnVzdWFsaW50ZXJuYWwnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGNwcF9zdHlsZS5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9mb29fdW51c3VhbGludGVy
bmFsLmgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBjcHBfc3R5bGUuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdfdGVzdC5jcHAnKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
Y3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygndGVzdC5jcHAnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgndGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxl
Ll9kcm9wX2NvbW1vbl9zdWZmaXhlcygndGVzdC5jcHAnKSkKKworY2xhc3MgQ2hlY2tGb3JGdW5j
dGlvbkxlbmd0aHNUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToK
KyAgICAgICAgIyBSZWR1Y2luZyB0aGVzZSB0aHJlc2hvbGRzIGZvciB0aGUgdGVzdHMgc3BlZWRz
IHVwIHRlc3RzIHNpZ25pZmljYW50bHkuCisgICAgICAgIHNlbGYub2xkX25vcm1hbF90cmlnZ2Vy
ID0gY3BwX3N0eWxlLl9GdW5jdGlvblN0YXRlLl9OT1JNQUxfVFJJR0dFUgorICAgICAgICBzZWxm
Lm9sZF90ZXN0X3RyaWdnZXIgPSBjcHBfc3R5bGUuX0Z1bmN0aW9uU3RhdGUuX1RFU1RfVFJJR0dF
UgorCisgICAgICAgIGNwcF9zdHlsZS5fRnVuY3Rpb25TdGF0ZS5fTk9STUFMX1RSSUdHRVIgPSAx
MAorICAgICAgICBjcHBfc3R5bGUuX0Z1bmN0aW9uU3RhdGUuX1RFU1RfVFJJR0dFUiA9IDI1CisK
KyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGNwcF9zdHlsZS5fRnVuY3Rpb25TdGF0
ZS5fTk9STUFMX1RSSUdHRVIgPSBzZWxmLm9sZF9ub3JtYWxfdHJpZ2dlcgorICAgICAgICBjcHBf
c3R5bGUuX0Z1bmN0aW9uU3RhdGUuX1RFU1RfVFJJR0dFUiA9IHNlbGYub2xkX3Rlc3RfdHJpZ2dl
cgorCisgICAgIyBGSVhNRTogRWxpbWluYXRlIHRoZSBuZWVkIGZvciB0aGlzIGZ1bmN0aW9uLgor
ICAgIGRlZiBzZXRfdmVyYm9zaXR5KHNlbGYsIHZlcmJvc2l0eSk6CisgICAgICAgICIiIlNldCBu
ZXcgdGVzdCB2ZXJib3NpdHkgYW5kIHJldHVybiBvbGQgdGVzdCB2ZXJib3NpdHkuIiIiCisgICAg
ICAgIG9sZF92ZXJib3NpdHkgPSBzZWxmLnZlcmJvc2l0eQorICAgICAgICBzZWxmLnZlcmJvc2l0
eSA9IHZlcmJvc2l0eQorICAgICAgICByZXR1cm4gb2xkX3ZlcmJvc2l0eQorCisgICAgZGVmIGFz
c2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2Up
OgorICAgICAgICAiIiJDaGVjayB3YXJuaW5ncyBmb3IgbG9uZyBmdW5jdGlvbiBib2RpZXMgYXJl
IGFzIGV4cGVjdGVkLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgY29kZTogQysrIHNvdXJj
ZSBjb2RlIGV4cGVjdGVkIHRvIGdlbmVyYXRlIGEgd2FybmluZyBtZXNzYWdlLgorICAgICAgICAg
IGV4cGVjdGVkX21lc3NhZ2U6IE1lc3NhZ2UgZXhwZWN0ZWQgdG8gYmUgZ2VuZXJhdGVkIGJ5IHRo
ZSBDKysgY29kZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVj
dGVkX21lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGVyZm9ybV9mdW5j
dGlvbl9sZW5ndGhzX2NoZWNrKGNvZGUpKQorCisgICAgZGVmIHRyaWdnZXJfbGluZXMoc2VsZiwg
ZXJyb3JfbGV2ZWwpOgorICAgICAgICAiIiJSZXR1cm4gbnVtYmVyIG9mIGxpbmVzIG5lZWRlZCB0
byB0cmlnZ2VyIGEgZnVuY3Rpb24gbGVuZ3RoIHdhcm5pbmcuCisKKyAgICAgICAgQXJnczoKKyAg
ICAgICAgICBlcnJvcl9sZXZlbDogLS12IHNldHRpbmcgZm9yIGNwcF9zdHlsZS4KKworICAgICAg
ICBSZXR1cm5zOgorICAgICAgICAgIE51bWJlciBvZiBsaW5lcyBuZWVkZWQgdG8gdHJpZ2dlciBh
IGZ1bmN0aW9uIGxlbmd0aCB3YXJuaW5nLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGNw
cF9zdHlsZS5fRnVuY3Rpb25TdGF0ZS5fTk9STUFMX1RSSUdHRVIgKiAyICoqIGVycm9yX2xldmVs
CisKKyAgICBkZWYgdHJpZ2dlcl90ZXN0X2xpbmVzKHNlbGYsIGVycm9yX2xldmVsKToKKyAgICAg
ICAgIiIiUmV0dXJuIG51bWJlciBvZiBsaW5lcyBuZWVkZWQgdG8gdHJpZ2dlciBhIHRlc3QgZnVu
Y3Rpb24gbGVuZ3RoIHdhcm5pbmcuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBlcnJvcl9s
ZXZlbDogLS12IHNldHRpbmcgZm9yIGNwcF9zdHlsZS4KKworICAgICAgICBSZXR1cm5zOgorICAg
ICAgICAgIE51bWJlciBvZiBsaW5lcyBuZWVkZWQgdG8gdHJpZ2dlciBhIHRlc3QgZnVuY3Rpb24g
bGVuZ3RoIHdhcm5pbmcuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gY3BwX3N0eWxlLl9G
dW5jdGlvblN0YXRlLl9URVNUX1RSSUdHRVIgKiAyICoqIGVycm9yX2xldmVsCisKKyAgICBkZWYg
YXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uKHNlbGYsIGxpbmVzLCBlcnJv
cl9sZXZlbCk6CisgICAgICAgICIiIkdlbmVyYXRlIGxvbmcgZnVuY3Rpb24gZGVmaW5pdGlvbiBh
bmQgY2hlY2sgd2FybmluZ3MgYXJlIGFzIGV4cGVjdGVkLgorCisgICAgICAgIEFyZ3M6CisgICAg
ICAgICAgbGluZXM6IE51bWJlciBvZiBsaW5lcyB0byBnZW5lcmF0ZS4KKyAgICAgICAgICBlcnJv
cl9sZXZlbDogIC0tdiBzZXR0aW5nIGZvciBjcHBfc3R5bGUuCisgICAgICAgICIiIgorICAgICAg
ICB0cmlnZ2VyX2xldmVsID0gc2VsZi50cmlnZ2VyX2xpbmVzKHNlbGYudmVyYm9zaXR5KQorICAg
ICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAorICAgICAgICAgICAgJ3Zv
aWQgdGVzdChpbnQgeCknICsgc2VsZi5mdW5jdGlvbl9ib2R5KGxpbmVzKSwKKyAgICAgICAgICAg
ICgnU21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcKKyAgICAgICAg
ICAgICAndGVzdCgpIGhhcyAlZCBub24tY29tbWVudCBsaW5lcyAnCisgICAgICAgICAgICAgJyhl
cnJvciB0cmlnZ2VyZWQgYnkgZXhjZWVkaW5nICVkIGxpbmVzKS4nCisgICAgICAgICAgICAgJyAg
W3JlYWRhYmlsaXR5L2ZuX3NpemVdIFslZF0nCisgICAgICAgICAgICAgJSAobGluZXMsIHRyaWdn
ZXJfbGV2ZWwsIGVycm9yX2xldmVsKSkpCisKKyAgICBkZWYgYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0
aF9jaGVja19kZWZpbml0aW9uX29rKHNlbGYsIGxpbmVzKToKKyAgICAgICAgIiIiR2VuZXJhdGUg
c2hvcnRlciBmdW5jdGlvbiBkZWZpbml0aW9uIGFuZCBjaGVjayBubyB3YXJuaW5nIGlzIHByb2R1
Y2VkLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgbGluZXM6IE51bWJlciBvZiBsaW5lcyB0
byBnZW5lcmF0ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xl
bmd0aHNfY2hlY2soCisgICAgICAgICAgICAndm9pZCB0ZXN0KGludCB4KScgKyBzZWxmLmZ1bmN0
aW9uX2JvZHkobGluZXMpLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgYXNzZXJ0X2Z1bmN0
aW9uX2xlbmd0aF9jaGVja19hdF9lcnJvcl9sZXZlbChzZWxmLCBlcnJvcl9sZXZlbCk6CisgICAg
ICAgICIiIkdlbmVyYXRlIGFuZCBjaGVjayBmdW5jdGlvbiBhdCB0aGUgdHJpZ2dlciBsZXZlbCBm
b3IgLS12IHNldHRpbmcuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBlcnJvcl9sZXZlbDog
LS12IHNldHRpbmcgZm9yIGNwcF9zdHlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uKHNlbGYudHJpZ2dlcl9saW5lcyhl
cnJvcl9sZXZlbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVycm9yX2xldmVsKQorCisgICAgZGVmIGFzc2VydF9mdW5jdGlvbl9sZW5ndGhf
Y2hlY2tfYmVsb3dfZXJyb3JfbGV2ZWwoc2VsZiwgZXJyb3JfbGV2ZWwpOgorICAgICAgICAiIiJH
ZW5lcmF0ZSBhbmQgY2hlY2sgZnVuY3Rpb24ganVzdCBiZWxvdyB0aGUgdHJpZ2dlciBsZXZlbCBm
b3IgLS12IHNldHRpbmcuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBlcnJvcl9sZXZlbDog
LS12IHNldHRpbmcgZm9yIGNwcF9zdHlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uKHNlbGYudHJpZ2dlcl9saW5lcyhl
cnJvcl9sZXZlbCkgLSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlcnJvcl9sZXZlbCAtIDEpCisKKyAgICBkZWYgYXNzZXJ0X2Z1bmN0aW9u
X2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbChzZWxmLCBlcnJvcl9sZXZlbCk6CisgICAg
ICAgICIiIkdlbmVyYXRlIGFuZCBjaGVjayBmdW5jdGlvbiBqdXN0IGFib3ZlIHRoZSB0cmlnZ2Vy
IGxldmVsIGZvciAtLXYgc2V0dGluZy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIGVycm9y
X2xldmVsOiAtLXYgc2V0dGluZyBmb3IgY3BwX3N0eWxlLgorICAgICAgICAiIiIKKyAgICAgICAg
c2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb24oc2VsZi50cmlnZ2Vy
X2xpbmVzKGVycm9yX2xldmVsKSArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2xldmVsKQorCisgICAgZGVmIGZ1bmN0aW9uX2Jv
ZHkoc2VsZiwgbnVtYmVyX29mX2xpbmVzKToKKyAgICAgICAgcmV0dXJuICcge1xuJyArICcgICAg
dGhpc19pc19qdXN0X2FfdGVzdCgpO1xuJyAqIG51bWJlcl9vZl9saW5lcyArICd9JworCisgICAg
ZGVmIGZ1bmN0aW9uX2JvZHlfd2l0aF9ibGFua19saW5lcyhzZWxmLCBudW1iZXJfb2ZfbGluZXMp
OgorICAgICAgICByZXR1cm4gJyB7XG4nICsgJyAgICB0aGlzX2lzX2p1c3RfYV90ZXN0KCk7XG5c
bicgKiBudW1iZXJfb2ZfbGluZXMgKyAnfScKKworICAgIGRlZiBmdW5jdGlvbl9ib2R5X3dpdGhf
bm9fbGludHMoc2VsZiwgbnVtYmVyX29mX2xpbmVzKToKKyAgICAgICAgcmV0dXJuICcge1xuJyAr
ICcgICAgdGhpc19pc19qdXN0X2FfdGVzdCgpOyAgLy8gTk9MSU5UXG4nICogbnVtYmVyX29mX2xp
bmVzICsgJ30nCisKKyAgICAjIFRlc3QgbGluZSBsZW5ndGggY2hlY2tzLgorICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWNsYXJhdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKKyAgICAgICAgICAgICd2b2lkIHRlc3QoKTsn
LCAgIyBOb3QgYSBmdW5jdGlvbiBkZWZpbml0aW9uCisgICAgICAgICAgICAnJykKKworICAgIGRl
ZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWNsYXJhdGlvbl93aXRoX2Jsb2NrX2ZvbGxv
d2luZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygK
KyAgICAgICAgICAgICgndm9pZCB0ZXN0KCk7XG4nCisgICAgICAgICAgICAgKyBzZWxmLmZ1bmN0
aW9uX2JvZHkoNjYpKSwgICMgTm90IGEgZnVuY3Rpb24gZGVmaW5pdGlvbgorICAgICAgICAgICAg
JycpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfY2xhc3NfZGVmaW5pdGlv
bihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjayggICMg
Tm90IGEgZnVuY3Rpb24gZGVmaW5pdGlvbgorICAgICAgICAgICAgJ2NsYXNzIFRlc3QnICsgc2Vs
Zi5mdW5jdGlvbl9ib2R5KDY2KSArICc7JywKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRl
c3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX3RyaXZpYWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCisgICAgICAgICAgICAndm9pZCB0ZXN0KCkge30n
LCAgIyBOb3QgY291bnRlZAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlv
bl9sZW5ndGhfY2hlY2tfZW1wdHkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9u
X2xlbmd0aHNfY2hlY2soCisgICAgICAgICAgICAndm9pZCB0ZXN0KCkge1xufScsCisgICAgICAg
ICAgICAnJykKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9u
X2JlbG93X3NldmVyaXR5MChzZWxmKToKKyAgICAgICAgb2xkX3ZlcmJvc2l0eSA9IHNlbGYuc2V0
X3ZlcmJvc2l0eSgwKQorICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tf
ZGVmaW5pdGlvbl9vayhzZWxmLnRyaWdnZXJfbGluZXMoMCkgLSAxKQorICAgICAgICBzZWxmLnNl
dF92ZXJib3NpdHkob2xkX3ZlcmJvc2l0eSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0
aF9jaGVja19kZWZpbml0aW9uX2F0X3NldmVyaXR5MChzZWxmKToKKyAgICAgICAgb2xkX3ZlcmJv
c2l0eSA9IHNlbGYuc2V0X3ZlcmJvc2l0eSgwKQorICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlv
bl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9vayhzZWxmLnRyaWdnZXJfbGluZXMoMCkpCisgICAg
ICAgIHNlbGYuc2V0X3ZlcmJvc2l0eShvbGRfdmVyYm9zaXR5KQorCisgICAgZGVmIHRlc3RfZnVu
Y3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYWJvdmVfc2V2ZXJpdHkwKHNlbGYpOgorICAg
ICAgICBvbGRfdmVyYm9zaXR5ID0gc2VsZi5zZXRfdmVyYm9zaXR5KDApCisgICAgICAgIHNlbGYu
YXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbCgwKQorICAgICAg
ICBzZWxmLnNldF92ZXJib3NpdHkob2xkX3ZlcmJvc2l0eSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0
aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2JlbG93X3NldmVyaXR5MXYwKHNlbGYpOgorICAg
ICAgICBvbGRfdmVyYm9zaXR5ID0gc2VsZi5zZXRfdmVyYm9zaXR5KDApCisgICAgICAgIHNlbGYu
YXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19iZWxvd19lcnJvcl9sZXZlbCgxKQorICAgICAg
ICBzZWxmLnNldF92ZXJib3NpdHkob2xkX3ZlcmJvc2l0eSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0
aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2F0X3NldmVyaXR5MXYwKHNlbGYpOgorICAgICAg
ICBvbGRfdmVyYm9zaXR5ID0gc2VsZi5zZXRfdmVyYm9zaXR5KDApCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hdF9lcnJvcl9sZXZlbCgxKQorICAgICAgICBzZWxm
LnNldF92ZXJib3NpdHkob2xkX3ZlcmJvc2l0eSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xl
bmd0aF9jaGVja19kZWZpbml0aW9uX2JlbG93X3NldmVyaXR5MShzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fb2soc2VsZi50cmlnZ2Vy
X2xpbmVzKDEpIC0gMSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZp
bml0aW9uX2F0X3NldmVyaXR5MShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25f
bGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fb2soc2VsZi50cmlnZ2VyX2xpbmVzKDEpKQorCisgICAg
ZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYWJvdmVfc2V2ZXJpdHkx
KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYWJvdmVf
ZXJyb3JfbGV2ZWwoMSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZp
bml0aW9uX3NldmVyaXR5MV9wbHVzX2JsYW5rcyhzZWxmKToKKyAgICAgICAgZXJyb3JfbGV2ZWwg
PSAxCisgICAgICAgIGVycm9yX2xpbmVzID0gc2VsZi50cmlnZ2VyX2xpbmVzKGVycm9yX2xldmVs
KSArIDEKKyAgICAgICAgdHJpZ2dlcl9sZXZlbCA9IHNlbGYudHJpZ2dlcl9saW5lcyhzZWxmLnZl
cmJvc2l0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKKyAg
ICAgICAgICAgICd2b2lkIHRlc3RfYmxhbmtzKGludCB4KScgKyBzZWxmLmZ1bmN0aW9uX2JvZHko
ZXJyb3JfbGluZXMpLAorICAgICAgICAgICAgKCdTbWFsbCBhbmQgZm9jdXNlZCBmdW5jdGlvbnMg
YXJlIHByZWZlcnJlZDogJworICAgICAgICAgICAgICd0ZXN0X2JsYW5rcygpIGhhcyAlZCBub24t
Y29tbWVudCBsaW5lcyAnCisgICAgICAgICAgICAgJyhlcnJvciB0cmlnZ2VyZWQgYnkgZXhjZWVk
aW5nICVkIGxpbmVzKS4nCisgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2ZuX3NpemVdIFsl
ZF0nKQorICAgICAgICAgICAgJSAoZXJyb3JfbGluZXMsIHRyaWdnZXJfbGV2ZWwsIGVycm9yX2xl
dmVsKSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19jb21wbGV4X2RlZmlu
aXRpb25fc2V2ZXJpdHkxKHNlbGYpOgorICAgICAgICBlcnJvcl9sZXZlbCA9IDEKKyAgICAgICAg
ZXJyb3JfbGluZXMgPSBzZWxmLnRyaWdnZXJfbGluZXMoZXJyb3JfbGV2ZWwpICsgMQorICAgICAg
ICB0cmlnZ2VyX2xldmVsID0gc2VsZi50cmlnZ2VyX2xpbmVzKHNlbGYudmVyYm9zaXR5KQorICAg
ICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAorICAgICAgICAgICAgKCdt
eV9uYW1lc3BhY2U6Om15X290aGVyX25hbWVzcGFjZTo6TXlWZXJ5TG9uZ1R5cGVOYW1lKlxuJwor
ICAgICAgICAgICAgICdteV9uYW1lc3BhY2U6Om15X290aGVyX25hbWVzcGFjZTo6TXlGdW5jdGlv
bihpbnQgYXJnMSwgY2hhciogYXJnMiknCisgICAgICAgICAgICAgKyBzZWxmLmZ1bmN0aW9uX2Jv
ZHkoZXJyb3JfbGluZXMpKSwKKyAgICAgICAgICAgICgnU21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rp
b25zIGFyZSBwcmVmZXJyZWQ6ICcKKyAgICAgICAgICAgICAnbXlfbmFtZXNwYWNlOjpteV9vdGhl
cl9uYW1lc3BhY2U6Ok15RnVuY3Rpb24oKScKKyAgICAgICAgICAgICAnIGhhcyAlZCBub24tY29t
bWVudCBsaW5lcyAnCisgICAgICAgICAgICAgJyhlcnJvciB0cmlnZ2VyZWQgYnkgZXhjZWVkaW5n
ICVkIGxpbmVzKS4nCisgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2ZuX3NpemVdIFslZF0n
KQorICAgICAgICAgICAgJSAoZXJyb3JfbGluZXMsIHRyaWdnZXJfbGV2ZWwsIGVycm9yX2xldmVs
KSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX3NldmVy
aXR5MV9mb3JfdGVzdChzZWxmKToKKyAgICAgICAgZXJyb3JfbGV2ZWwgPSAxCisgICAgICAgIGVy
cm9yX2xpbmVzID0gc2VsZi50cmlnZ2VyX3Rlc3RfbGluZXMoZXJyb3JfbGV2ZWwpICsgMQorICAg
ICAgICB0cmlnZ2VyX2xldmVsID0gc2VsZi50cmlnZ2VyX3Rlc3RfbGluZXMoc2VsZi52ZXJib3Np
dHkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCisgICAgICAg
ICAgICAnVEVTVF9GKFRlc3QsIE11dGF0b3IpJyArIHNlbGYuZnVuY3Rpb25fYm9keShlcnJvcl9s
aW5lcyksCisgICAgICAgICAgICAoJ1NtYWxsIGFuZCBmb2N1c2VkIGZ1bmN0aW9ucyBhcmUgcHJl
ZmVycmVkOiAnCisgICAgICAgICAgICAgJ1RFU1RfRihUZXN0LCBNdXRhdG9yKSBoYXMgJWQgbm9u
LWNvbW1lbnQgbGluZXMgJworICAgICAgICAgICAgICcoZXJyb3IgdHJpZ2dlcmVkIGJ5IGV4Y2Vl
ZGluZyAlZCBsaW5lcykuJworICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9mbl9zaXplXSBb
JWRdJykKKyAgICAgICAgICAgICUgKGVycm9yX2xpbmVzLCB0cmlnZ2VyX2xldmVsLCBlcnJvcl9s
ZXZlbCkpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9z
ZXZlcml0eTFfZm9yX3NwbGl0X2xpbmVfdGVzdChzZWxmKToKKyAgICAgICAgZXJyb3JfbGV2ZWwg
PSAxCisgICAgICAgIGVycm9yX2xpbmVzID0gc2VsZi50cmlnZ2VyX3Rlc3RfbGluZXMoZXJyb3Jf
bGV2ZWwpICsgMQorICAgICAgICB0cmlnZ2VyX2xldmVsID0gc2VsZi50cmlnZ2VyX3Rlc3RfbGlu
ZXMoc2VsZi52ZXJib3NpdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNf
Y2hlY2soCisgICAgICAgICAgICAoJ1RFU1RfRihHb29nbGVVcGRhdGVSZWNvdmVyeVJlZ2lzdHJ5
UHJvdGVjdGVkVGVzdCxcbicKKyAgICAgICAgICAgICAnICAgIEZpeEdvb2dsZVVwZGF0ZV9BbGxW
YWx1ZXNfTWFjaGluZUFwcCknICAjIG5vdGU6IDQgc3BhY2VzCisgICAgICAgICAgICAgKyBzZWxm
LmZ1bmN0aW9uX2JvZHkoZXJyb3JfbGluZXMpKSwKKyAgICAgICAgICAgICgnU21hbGwgYW5kIGZv
Y3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcKKyAgICAgICAgICAgICAnVEVTVF9GKEdv
b2dsZVVwZGF0ZVJlY292ZXJ5UmVnaXN0cnlQcm90ZWN0ZWRUZXN0LCAnICAjIDEgc3BhY2UKKyAg
ICAgICAgICAgICAnRml4R29vZ2xlVXBkYXRlX0FsbFZhbHVlc19NYWNoaW5lQXBwKSBoYXMgJWQg
bm9uLWNvbW1lbnQgbGluZXMgJworICAgICAgICAgICAgICcoZXJyb3IgdHJpZ2dlcmVkIGJ5IGV4
Y2VlZGluZyAlZCBsaW5lcykuJworICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9mbl9zaXpl
XSBbJWRdJykKKyAgICAgICAgICAgICUgKGVycm9yX2xpbmVzKzEsIHRyaWdnZXJfbGV2ZWwsIGVy
cm9yX2xldmVsKSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0
aW9uX3NldmVyaXR5MV9mb3JfYmFkX3Rlc3RfZG9lc250X2JyZWFrKHNlbGYpOgorICAgICAgICBl
cnJvcl9sZXZlbCA9IDEKKyAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxmLnRyaWdnZXJfdGVzdF9s
aW5lcyhlcnJvcl9sZXZlbCkgKyAxCisgICAgICAgIHRyaWdnZXJfbGV2ZWwgPSBzZWxmLnRyaWdn
ZXJfdGVzdF9saW5lcyhzZWxmLnZlcmJvc2l0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rp
b25fbGVuZ3Roc19jaGVjaygKKyAgICAgICAgICAgICgnVEVTVF9GKCcKKyAgICAgICAgICAgICAr
IHNlbGYuZnVuY3Rpb25fYm9keShlcnJvcl9saW5lcykpLAorICAgICAgICAgICAgKCdTbWFsbCBh
bmQgZm9jdXNlZCBmdW5jdGlvbnMgYXJlIHByZWZlcnJlZDogJworICAgICAgICAgICAgICdURVNU
X0YgaGFzICVkIG5vbi1jb21tZW50IGxpbmVzICcKKyAgICAgICAgICAgICAnKGVycm9yIHRyaWdn
ZXJlZCBieSBleGNlZWRpbmcgJWQgbGluZXMpLicKKyAgICAgICAgICAgICAnICBbcmVhZGFiaWxp
dHkvZm5fc2l6ZV0gWyVkXScpCisgICAgICAgICAgICAlIChlcnJvcl9saW5lcywgdHJpZ2dlcl9s
ZXZlbCwgZXJyb3JfbGV2ZWwpKQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNr
X2RlZmluaXRpb25fc2V2ZXJpdHkxX3dpdGhfZW1iZWRkZWRfbm9fbGludHMoc2VsZik6CisgICAg
ICAgIGVycm9yX2xldmVsID0gMQorICAgICAgICBlcnJvcl9saW5lcyA9IHNlbGYudHJpZ2dlcl9s
aW5lcyhlcnJvcl9sZXZlbCkgKyAxCisgICAgICAgIHRyaWdnZXJfbGV2ZWwgPSBzZWxmLnRyaWdn
ZXJfbGluZXMoc2VsZi52ZXJib3NpdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xl
bmd0aHNfY2hlY2soCisgICAgICAgICAgICAndm9pZCB0ZXN0KGludCB4KScgKyBzZWxmLmZ1bmN0
aW9uX2JvZHlfd2l0aF9ub19saW50cyhlcnJvcl9saW5lcyksCisgICAgICAgICAgICAoJ1NtYWxs
IGFuZCBmb2N1c2VkIGZ1bmN0aW9ucyBhcmUgcHJlZmVycmVkOiAnCisgICAgICAgICAgICAgJ3Rl
c3QoKSBoYXMgJWQgbm9uLWNvbW1lbnQgbGluZXMgJworICAgICAgICAgICAgICcoZXJyb3IgdHJp
Z2dlcmVkIGJ5IGV4Y2VlZGluZyAlZCBsaW5lcykuJworICAgICAgICAgICAgICcgIFtyZWFkYWJp
bGl0eS9mbl9zaXplXSBbJWRdJykKKyAgICAgICAgICAgICUgKGVycm9yX2xpbmVzLCB0cmlnZ2Vy
X2xldmVsLCBlcnJvcl9sZXZlbCkpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hl
Y2tfZGVmaW5pdGlvbl9zZXZlcml0eTFfd2l0aF9ub19saW50KHNlbGYpOgorICAgICAgICBzZWxm
LmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAorICAgICAgICAgICAgKCd2b2lkIHRlc3Qo
aW50IHgpJyArIHNlbGYuZnVuY3Rpb25fYm9keShzZWxmLnRyaWdnZXJfbGluZXMoMSkpCisgICAg
ICAgICAgICAgKyAnICAvLyBOT0xJTlQgLS0gbG9uZyBmdW5jdGlvbicpLAorICAgICAgICAgICAg
JycpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9iZWxv
d19zZXZlcml0eTIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9j
aGVja19iZWxvd19lcnJvcl9sZXZlbCgyKQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3Ro
X2NoZWNrX2RlZmluaXRpb25fc2V2ZXJpdHkyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9m
dW5jdGlvbl9sZW5ndGhfY2hlY2tfYXRfZXJyb3JfbGV2ZWwoMikKKworICAgIGRlZiB0ZXN0X2Z1
bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2Fib3ZlX3NldmVyaXR5MihzZWxmKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2Fib3ZlX2Vycm9yX2xldmVs
KDIpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9iZWxv
d19zZXZlcml0eTMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9j
aGVja19iZWxvd19lcnJvcl9sZXZlbCgzKQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3Ro
X2NoZWNrX2RlZmluaXRpb25fc2V2ZXJpdHkzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9m
dW5jdGlvbl9sZW5ndGhfY2hlY2tfYXRfZXJyb3JfbGV2ZWwoMykKKworICAgIGRlZiB0ZXN0X2Z1
bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2Fib3ZlX3NldmVyaXR5MyhzZWxmKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2Fib3ZlX2Vycm9yX2xldmVs
KDMpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9iZWxv
d19zZXZlcml0eTQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9j
aGVja19iZWxvd19lcnJvcl9sZXZlbCg0KQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3Ro
X2NoZWNrX2RlZmluaXRpb25fc2V2ZXJpdHk0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9m
dW5jdGlvbl9sZW5ndGhfY2hlY2tfYXRfZXJyb3JfbGV2ZWwoNCkKKworICAgIGRlZiB0ZXN0X2Z1
bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2Fib3ZlX3NldmVyaXR5NChzZWxmKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2Fib3ZlX2Vycm9yX2xldmVs
KDQpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9iZWxv
d19zZXZlcml0eTUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9j
aGVja19iZWxvd19lcnJvcl9sZXZlbCg1KQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3Ro
X2NoZWNrX2RlZmluaXRpb25fYXRfc2V2ZXJpdHk1KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2Vy
dF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYXRfZXJyb3JfbGV2ZWwoNSkKKworICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2Fib3ZlX3NldmVyaXR5NShzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2Fib3ZlX2Vycm9yX2xl
dmVsKDUpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9o
dWdlX2xpbmVzKHNlbGYpOgorICAgICAgICAjIDUgaXMgdGhlIGxpbWl0CisgICAgICAgIHNlbGYu
YXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uKHNlbGYudHJpZ2dlcl9saW5l
cygxMCksIDUpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfbm90X2RldGVybWluYWJs
ZShzZWxmKToKKyAgICAgICAgIyBNYWNybyBpbnZvY2F0aW9uIHdpdGhvdXQgdGVybWluYXRpbmcg
c2VtaWNvbG9uLgorICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAor
ICAgICAgICAgICAgJ01BQ1JPKGFyZyknLAorICAgICAgICAgICAgJycpCisKKyAgICAgICAgIyBN
YWNybyB3aXRoIHVuZGVyc2NvcmVzCisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0
aHNfY2hlY2soCisgICAgICAgICAgICAnTUFDUk9fV0lUSF9VTkRFUlNDT1JFUyhhcmcxLCBhcmcy
LCBhcmczKScsCisgICAgICAgICAgICAnJykKKworICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlv
bl9sZW5ndGhzX2NoZWNrKAorICAgICAgICAgICAgJ05vbk1hY3JvKGFyZyknLAorICAgICAgICAg
ICAgJ0xpbnQgZmFpbGVkIHRvIGZpbmQgc3RhcnQgb2YgZnVuY3Rpb24gYm9keS4nCisgICAgICAg
ICAgICAnICBbcmVhZGFiaWxpdHkvZm5fc2l6ZV0gWzVdJykKKworCitjbGFzcyBOb05vblZpcnR1
YWxEZXN0cnVjdG9yc1Rlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CisKKyAgICBkZWYgdGVzdF9ub19l
cnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAg
ICAgICAgJycnY2xhc3MgRm9vIHsKKyAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIH5Gb28oKTsK
KyAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7CisgICAgICAgICAgICAgICB9
OycnJywKKyAgICAgICAgICAgICcnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKKyAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7CisgICAgICAgICAgICAgICAgICAgdmly
dHVhbCBpbmxpbmUgfkZvbygpOworICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBmb28o
KTsKKyAgICAgICAgICAgICAgIH07JycnLAorICAgICAgICAgICAgJycpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKKyAg
ICAgICAgICAgICAgICAgICBpbmxpbmUgdmlydHVhbCB+Rm9vKCk7CisgICAgICAgICAgICAgICAg
ICAgdmlydHVhbCB2b2lkIGZvbygpOworICAgICAgICAgICAgICAgfTsnJycsCisgICAgICAgICAg
ICAnJykKKworICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAg
ICAnJydjbGFzcyBGb286OkdvbyB7CisgICAgICAgICAgICAgICAgICAgdmlydHVhbCB+R29vKCk7
CisgICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGdvbygpOworICAgICAgICAgICAgICAg
fTsnJycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50KAorICAgICAgICAgICAgJ2NsYXNzIEZvbyB7IHZvaWQgZm9vKCk7IH07JywKKyAgICAgICAg
ICAgICdNb3JlIHRoYW4gb25lIGNvbW1hbmQgb24gdGhlIHNhbWUgbGluZSAgW3doaXRlc3BhY2Uv
bmV3bGluZV0gWzRdJykKKworICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisg
ICAgICAgICAgICAnJydjbGFzcyBRdWFsaWZpZWQ6OkdvbyA6IHB1YmxpYyBGb28geworICAgICAg
ICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBnb28oKTsKKyAgICAgICAgICAgICAgIH07JycnLAor
ICAgICAgICAgICAgJycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAor
ICAgICAgICAgICAgIyBMaW5lLWVuZGluZyA6CisgICAgICAgICAgICAnJydjbGFzcyBHb28gOgor
ICAgICAgICAgICAgICAgcHVibGljIEZvbyB7CisgICAgICAgICAgICAgICAgICAgIHZpcnR1YWwg
dm9pZCBnb28oKTsKKyAgICAgICAgICAgICAgIH07JycnLAorICAgICAgICAgICAgJ0xhYmVscyBz
aG91bGQgYWx3YXlzIGJlIGluZGVudGVkIGF0IGxlYXN0IG9uZSBzcGFjZS4gIElmIHRoaXMgaXMg
YSAnCisgICAgICAgICAgICAnbWVtYmVyLWluaXRpYWxpemVyIGxpc3QgaW4gYSBjb25zdHJ1Y3Rv
ciwgdGhlIGNvbG9uIHNob3VsZCBiZSBvbiB0aGUgJworICAgICAgICAgICAgJ2xpbmUgYWZ0ZXIg
dGhlIGRlZmluaXRpb24gaGVhZGVyLiAgW3doaXRlc3BhY2UvbGFiZWxzXSBbNF0nKQorCisgICAg
ZGVmIHRlc3Rfbm9fZGVzdHJ1Y3Rvcl93aGVuX3ZpcnR1YWxfbmVlZGVkKHNlbGYpOgorICAgICAg
ICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnRfcmUoCisgICAgICAgICAgICAnJydjbGFzcyBG
b28geworICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBmb28oKTsKKyAgICAgICAgICAg
ICAgIH07JycnLAorICAgICAgICAgICAgJ1RoZSBjbGFzcyBGb28gcHJvYmFibHkgbmVlZHMgYSB2
aXJ0dWFsIGRlc3RydWN0b3InKQorCisgICAgZGVmIHRlc3RfZGVzdHJ1Y3Rvcl9ub25fdmlydHVh
bF93aGVuX3ZpcnR1YWxfbmVlZGVkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnRfcmUoCisgICAgICAgICAgICAnJydjbGFzcyBGb28geworICAgICAgICAgICAgICAg
ICAgIH5Gb28oKTsKKyAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7CisgICAg
ICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICdUaGUgY2xhc3MgRm9vIHByb2JhYmx5IG5l
ZWRzIGEgdmlydHVhbCBkZXN0cnVjdG9yJykKKworICAgIGRlZiB0ZXN0X25vX3dhcm5fd2hlbl9k
ZXJpdmVkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAg
ICAgICAgICAnJydjbGFzcyBGb28gOiBwdWJsaWMgR29vIHsKKyAgICAgICAgICAgICAgICAgICB2
aXJ0dWFsIHZvaWQgZm9vKCk7CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICcn
KQorCisgICAgZGVmIHRlc3RfaW50ZXJuYWxfYnJhY2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFz
c2VydF9tdWx0aV9saW5lX2xpbnRfcmUoCisgICAgICAgICAgICAnJydjbGFzcyBGb28geworICAg
ICAgICAgICAgICAgICAgIGVudW0gR29vIHsKKyAgICAgICAgICAgICAgICAgICAgICAgR09PCisg
ICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9v
KCk7CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICdUaGUgY2xhc3MgRm9vIHBy
b2JhYmx5IG5lZWRzIGEgdmlydHVhbCBkZXN0cnVjdG9yJykKKworICAgIGRlZiB0ZXN0X2lubmVy
X2NsYXNzX25lZWRzX3ZpcnR1YWxfZGVzdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbXVsdGlfbGluZV9saW50X3JlKAorICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKKyAgICAg
ICAgICAgICAgICAgICBjbGFzcyBHb28geworICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFs
IHZvaWQgZ29vKCk7CisgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgIH07Jycn
LAorICAgICAgICAgICAgJ1RoZSBjbGFzcyBHb28gcHJvYmFibHkgbmVlZHMgYSB2aXJ0dWFsIGRl
c3RydWN0b3InKQorCisgICAgZGVmIHRlc3Rfb3V0ZXJfY2xhc3NfbmVlZHNfdmlydHVhbF9kZXN0
cnVjdG9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnRfcmUoCisg
ICAgICAgICAgICAnJydjbGFzcyBGb28geworICAgICAgICAgICAgICAgICAgIGNsYXNzIEdvbyB7
CisgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQg
Zm9vKCk7CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICdUaGUgY2xhc3MgRm9v
IHByb2JhYmx5IG5lZWRzIGEgdmlydHVhbCBkZXN0cnVjdG9yJykKKworICAgIGRlZiB0ZXN0X3F1
YWxpZmllZF9jbGFzc19uZWVkc192aXJ0dWFsX2Rlc3RydWN0b3Ioc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludF9yZSgKKyAgICAgICAgICAgICcnJ2NsYXNzIFF1YWxp
ZmllZDo6Rm9vIHsKKyAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7CisgICAg
ICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICdUaGUgY2xhc3MgUXVhbGlmaWVkOjpGb28g
cHJvYmFibHkgbmVlZHMgYSB2aXJ0dWFsIGRlc3RydWN0b3InKQorCisgICAgZGVmIHRlc3RfbXVs
dGlfbGluZV9kZWNsYXJhdGlvbl9ub19lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRf
bXVsdGlfbGluZV9saW50X3JlKAorICAgICAgICAgICAgJycnY2xhc3MgRm9vCisgICAgICAgICAg
ICAgICAgICAgOiBwdWJsaWMgR29vIHsKKyAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQg
Zm9vKCk7CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICcnKQorCisgICAgZGVm
IHRlc3RfbXVsdGlfbGluZV9kZWNsYXJhdGlvbl93aXRoX2Vycm9yKHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnJydjbGFzcyBGb28KKyAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7Cisg
ICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgIFsnVGhpcyB7IHNob3VsZCBiZSBhdCB0
aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5lICAnCisgICAgICAgICAgICAgJ1t3aGl0ZXNwYWNl
L2JyYWNlc10gWzRdJywKKyAgICAgICAgICAgICAnVGhlIGNsYXNzIEZvbyBwcm9iYWJseSBuZWVk
cyBhIHZpcnR1YWwgZGVzdHJ1Y3RvciBkdWUgdG8gaGF2aW5nICcKKyAgICAgICAgICAgICAndmly
dHVhbCBtZXRob2QocyksIG9uZSBkZWNsYXJlZCBhdCBsaW5lIDIuICBbcnVudGltZS92aXJ0dWFs
XSBbNF0nXSkKKworCitjbGFzcyBXZWJLaXRTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CisK
KyAgICAjIGZvciBodHRwOi8vd2Via2l0Lm9yZy9jb2RpbmcvY29kaW5nLXN0eWxlLmh0bWwKKyAg
ICBkZWYgdGVzdF9pbmRlbnRhdGlvbihzZWxmKToKKyAgICAgICAgIyAxLiBVc2Ugc3BhY2VzLCBu
b3QgdGFicy4gVGFicyBzaG91bGQgb25seSBhcHBlYXIgaW4gZmlsZXMgdGhhdAorICAgICAgICAj
ICAgIHJlcXVpcmUgdGhlbSBmb3Igc2VtYW50aWMgbWVhbmluZywgbGlrZSBNYWtlZmlsZXMuCisg
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdjbGFzcyBG
b28ge1xuJworICAgICAgICAgICAgJyAgICBpbnQgZ29vO1xuJworICAgICAgICAgICAgJ307JywK
KyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisg
ICAgICAgICAgICAnY2xhc3MgRm9vIHtcbicKKyAgICAgICAgICAgICdcdGludCBnb287XG4nCisg
ICAgICAgICAgICAnfTsnLAorICAgICAgICAgICAgJ1RhYiBmb3VuZDsgYmV0dGVyIHRvIHVzZSBz
cGFjZXMgIFt3aGl0ZXNwYWNlL3RhYl0gWzFdJykKKworICAgICAgICAjIDIuIFRoZSBpbmRlbnQg
c2l6ZSBpcyA0IHNwYWNlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAor
ICAgICAgICAgICAgJ2NsYXNzIEZvbyB7XG4nCisgICAgICAgICAgICAnICAgIGludCBnb287XG4n
CisgICAgICAgICAgICAnfTsnLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdjbGFzcyBGb28ge1xuJworICAgICAgICAg
ICAgJyAgIGludCBnb287XG4nCisgICAgICAgICAgICAnfTsnLAorICAgICAgICAgICAgJ1dlaXJk
IG51bWJlciBvZiBzcGFjZXMgYXQgbGluZS1zdGFydC4gIEFyZSB5b3UgdXNpbmcgYSA0LXNwYWNl
IGluZGVudD8gIFt3aGl0ZXNwYWNlL2luZGVudF0gWzNdJykKKyAgICAgICAgIyBGSVhNRTogTm8g
dGVzdHMgZm9yIDgtc3BhY2VzLgorCisgICAgICAgICMgMy4gSW4gYSBoZWFkZXIsIGNvZGUgaW5z
aWRlIGEgbmFtZXNwYWNlIHNob3VsZCBub3QgYmUgaW5kZW50ZWQuCisgICAgICAgIHNlbGYuYXNz
ZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7XG5c
bicKKyAgICAgICAgICAgICdjbGFzcyBEb2N1bWVudCB7XG4nCisgICAgICAgICAgICAnICAgIGlu
dCBteVZhcmlhYmxlO1xuJworICAgICAgICAgICAgJ307XG4nCisgICAgICAgICAgICAnfScsCisg
ICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdmb28uaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICduYW1lc3BhY2UgT3V0ZXJOYW1lc3BhY2Ug
e1xuJworICAgICAgICAgICAgJyAgICBuYW1lc3BhY2UgSW5uZXJOYW1lc3BhY2Uge1xuJworICAg
ICAgICAgICAgJyAgICBjbGFzcyBEb2N1bWVudCB7XG4nCisgICAgICAgICAgICAnfTtcbicKKyAg
ICAgICAgICAgICd9O1xuJworICAgICAgICAgICAgJ30nLAorICAgICAgICAgICAgJ0NvZGUgaW5z
aWRlIGEgbmFtZXNwYWNlIHNob3VsZCBub3QgYmUgaW5kZW50ZWQuICBbd2hpdGVzcGFjZS9pbmRl
bnRdIFs0XScsCisgICAgICAgICAgICAnZm9vLmgnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnbmFtZXNwYWNlIE91dGVyTmFtZXNwYWNlIHtcbicK
KyAgICAgICAgICAgICcgICAgY2xhc3MgRG9jdW1lbnQge1xuJworICAgICAgICAgICAgJyAgICBu
YW1lc3BhY2UgSW5uZXJOYW1lc3BhY2Uge1xuJworICAgICAgICAgICAgJ307XG4nCisgICAgICAg
ICAgICAnfTtcbicKKyAgICAgICAgICAgICd9JywKKyAgICAgICAgICAgICdDb2RlIGluc2lkZSBh
IG5hbWVzcGFjZSBzaG91bGQgbm90IGJlIGluZGVudGVkLiAgW3doaXRlc3BhY2UvaW5kZW50XSBb
NF0nLAorICAgICAgICAgICAgJ2Zvby5oJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KAorICAgICAgICAgICAgJ25hbWVzcGFjZSBXZWJDb3JlIHtcbicKKyAgICAgICAgICAg
ICcjaWYgMFxuJworICAgICAgICAgICAgJyAgICBjbGFzcyBEb2N1bWVudCB7XG4nCisgICAgICAg
ICAgICAnfTtcbicKKyAgICAgICAgICAgICcjZW5kaWZcbicKKyAgICAgICAgICAgICd9JywKKyAg
ICAgICAgICAgICdDb2RlIGluc2lkZSBhIG5hbWVzcGFjZSBzaG91bGQgbm90IGJlIGluZGVudGVk
LiAgW3doaXRlc3BhY2UvaW5kZW50XSBbNF0nLAorICAgICAgICAgICAgJ2Zvby5oJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ25hbWVzcGFjZSBX
ZWJDb3JlIHtcbicKKyAgICAgICAgICAgICdjbGFzcyBEb2N1bWVudCB7XG4nCisgICAgICAgICAg
ICAnfTtcbicKKyAgICAgICAgICAgICd9JywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAg
J2Zvby5oJykKKworICAgICAgICAjIDQuIEluIGFuIGltcGxlbWVudGF0aW9uIGZpbGUgKGZpbGVz
IHdpdGggdGhlIGV4dGVuc2lvbiAuY3BwLCAuYworICAgICAgICAjICAgIG9yIC5tbSksIGNvZGUg
aW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBub3QgYmUgaW5kZW50ZWQuCisgICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7
XG5cbicKKyAgICAgICAgICAgICdEb2N1bWVudDo6Rm9vKClcbicKKyAgICAgICAgICAgICcgICAg
OiBmb28oYmFyKVxuJworICAgICAgICAgICAgJyAgICAsIGJvbyhmYXIpXG4nCisgICAgICAgICAg
ICAne1xuJworICAgICAgICAgICAgJyAgICBzdHVmZigpO1xuJworICAgICAgICAgICAgJ30nLAor
ICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnZm9vLmNwcCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICduYW1lc3BhY2UgT3V0ZXJOYW1lc3Bh
Y2Uge1xuJworICAgICAgICAgICAgJ25hbWVzcGFjZSBJbm5lck5hbWVzcGFjZSB7XG4nCisgICAg
ICAgICAgICAnRG9jdW1lbnQ6OkZvbygpIHsgfVxuJworICAgICAgICAgICAgJyAgICB2b2lkKiBw
O1xuJworICAgICAgICAgICAgJ31cbicKKyAgICAgICAgICAgICd9XG4nLAorICAgICAgICAgICAg
J0NvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBub3QgYmUgaW5kZW50ZWQuICBbd2hpdGVz
cGFjZS9pbmRlbnRdIFs0XScsCisgICAgICAgICAgICAnZm9vLmNwcCcpCisgICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICduYW1lc3BhY2UgT3V0ZXJOYW1l
c3BhY2Uge1xuJworICAgICAgICAgICAgJ25hbWVzcGFjZSBJbm5lck5hbWVzcGFjZSB7XG4nCisg
ICAgICAgICAgICAnRG9jdW1lbnQ6OkZvbygpIHsgfVxuJworICAgICAgICAgICAgJ31cbicKKyAg
ICAgICAgICAgICcgICAgdm9pZCogcDtcbicKKyAgICAgICAgICAgICd9XG4nLAorICAgICAgICAg
ICAgJ0NvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBub3QgYmUgaW5kZW50ZWQuICBbd2hp
dGVzcGFjZS9pbmRlbnRdIFs0XScsCisgICAgICAgICAgICAnZm9vLmNwcCcpCisgICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICduYW1lc3BhY2UgV2ViQ29y
ZSB7XG5cbicKKyAgICAgICAgICAgICcgICAgY29uc3QgY2hhciogZm9vID0gInN0YXJ0OjsiXG4n
CisgICAgICAgICAgICAnICAgICAgICAiZGZzZnNmcyI7XG4nCisgICAgICAgICAgICAnfVxuJywK
KyAgICAgICAgICAgICdDb2RlIGluc2lkZSBhIG5hbWVzcGFjZSBzaG91bGQgbm90IGJlIGluZGVu
dGVkLiAgW3doaXRlc3BhY2UvaW5kZW50XSBbNF0nLAorICAgICAgICAgICAgJ2Zvby5jcHAnKQor
ICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnbmFtZXNw
YWNlIFdlYkNvcmUge1xuXG4nCisgICAgICAgICAgICAnY29uc3QgY2hhciogZm9vKHZvaWQqIGEg
PSAiOyIsIC8vIDtcbicKKyAgICAgICAgICAgICcgICAgdm9pZCogYik7XG4nCisgICAgICAgICAg
ICAnICAgIHZvaWQqIHA7XG4nCisgICAgICAgICAgICAnfVxuJywKKyAgICAgICAgICAgICdDb2Rl
IGluc2lkZSBhIG5hbWVzcGFjZSBzaG91bGQgbm90IGJlIGluZGVudGVkLiAgW3doaXRlc3BhY2Uv
aW5kZW50XSBbNF0nLAorICAgICAgICAgICAgJ2Zvby5jcHAnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnbmFtZXNwYWNlIFdlYkNvcmUge1xuXG4n
CisgICAgICAgICAgICAnY29uc3QgY2hhciogZm9vW10gPSB7XG4nCisgICAgICAgICAgICAnICAg
ICJ2b2lkKiBiKTsiLCAvLyA7XG4nCisgICAgICAgICAgICAnICAgICJhc2ZkZiIsXG4nCisgICAg
ICAgICAgICAnICAgIH1cbicKKyAgICAgICAgICAgICcgICAgdm9pZCogcDtcbicKKyAgICAgICAg
ICAgICd9XG4nLAorICAgICAgICAgICAgJ0NvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBu
b3QgYmUgaW5kZW50ZWQuICBbd2hpdGVzcGFjZS9pbmRlbnRdIFs0XScsCisgICAgICAgICAgICAn
Zm9vLmNwcCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAg
ICAgICduYW1lc3BhY2UgV2ViQ29yZSB7XG5cbicKKyAgICAgICAgICAgICdjb25zdCBjaGFyKiBm
b29bXSA9IHtcbicKKyAgICAgICAgICAgICcgICAgInZvaWQqIGIpOyIsIC8vIH1cbicKKyAgICAg
ICAgICAgICcgICAgImFzZmRmIixcbicKKyAgICAgICAgICAgICcgICAgfVxuJworICAgICAgICAg
ICAgJ31cbicsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdmb28uY3BwJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJyAgICBuYW1lc3Bh
Y2UgV2ViQ29yZSB7XG5cbicKKyAgICAgICAgICAgICcgICAgdm9pZCBEb2N1bWVudDo6Rm9vKClc
bicKKyAgICAgICAgICAgICcgICAge1xuJworICAgICAgICAgICAgJ3N0YXJ0OiAvLyBpbmZpbml0
ZSBsb29wcyBhcmUgZnVuIVxuJworICAgICAgICAgICAgJyAgICAgICAgZ290byBzdGFydDtcbicK
KyAgICAgICAgICAgICcgICAgfScsCisgICAgICAgICAgICAnbmFtZXNwYWNlIHNob3VsZCBuZXZl
ciBiZSBpbmRlbnRlZC4gIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdJywKKyAgICAgICAgICAgICdm
b28uY3BwJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAg
ICAgJ25hbWVzcGFjZSBXZWJDb3JlIHtcbicKKyAgICAgICAgICAgICcgICAgRG9jdW1lbnQ6OkZv
bygpIHsgfVxuJworICAgICAgICAgICAgJ30nLAorICAgICAgICAgICAgJ0NvZGUgaW5zaWRlIGEg
bmFtZXNwYWNlIHNob3VsZCBub3QgYmUgaW5kZW50ZWQuJworICAgICAgICAgICAgJyAgW3doaXRl
c3BhY2UvaW5kZW50XSBbNF0nLAorICAgICAgICAgICAgJ2Zvby5jcHAnKQorICAgICAgICBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnbmFtZXNwYWNlIFdlYkNvcmUg
e1xuJworICAgICAgICAgICAgJyNkZWZpbmUgYWJjKHgpIHg7IFxcXG4nCisgICAgICAgICAgICAn
ICAgIHhcbicKKyAgICAgICAgICAgICd9JywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAg
J2Zvby5jcHAnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAg
ICAgICAnbmFtZXNwYWNlIFdlYkNvcmUge1xuJworICAgICAgICAgICAgJyNkZWZpbmUgYWJjKHgp
IHg7IFxcXG4nCisgICAgICAgICAgICAnICAgIHhcbicKKyAgICAgICAgICAgICcgICAgdm9pZCog
eDsnCisgICAgICAgICAgICAnfScsCisgICAgICAgICAgICAnQ29kZSBpbnNpZGUgYSBuYW1lc3Bh
Y2Ugc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4gIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdJywKKyAg
ICAgICAgICAgICdmb28uY3BwJykKKworICAgICAgICAjIDUuIEEgY2FzZSBsYWJlbCBzaG91bGQg
bGluZSB1cCB3aXRoIGl0cyBzd2l0Y2ggc3RhdGVtZW50LiBUaGUKKyAgICAgICAgIyAgICBjYXNl
IHN0YXRlbWVudCBpcyBpbmRlbnRlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50KAorICAgICAgICAgICAgJyAgICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuJworICAgICAgICAg
ICAgJyAgICBjYXNlIGZvb0NvbmRpdGlvbjpcbicKKyAgICAgICAgICAgICcgICAgY2FzZSBiYXJD
b25kaXRpb246XG4nCisgICAgICAgICAgICAnICAgICAgICBpKys7XG4nCisgICAgICAgICAgICAn
ICAgICAgICBicmVhaztcbicKKyAgICAgICAgICAgICcgICAgZGVmYXVsdDpcbicKKyAgICAgICAg
ICAgICcgICAgICAgIGktLTtcbicKKyAgICAgICAgICAgICcgICAgfVxuJywKKyAgICAgICAgICAg
ICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAn
ICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7XG4nCisgICAgICAgICAgICAnICAgIGNhc2UgZm9vQ29u
ZGl0aW9uOlxuJworICAgICAgICAgICAgJyAgICAgICAgc3dpdGNoIChvdGhlckNvbmRpdGlvbikg
e1xuJworICAgICAgICAgICAgJyAgICAgICAgZGVmYXVsdDpcbicKKyAgICAgICAgICAgICcgICAg
ICAgICAgICByZXR1cm47XG4nCisgICAgICAgICAgICAnICAgICAgICB9XG4nCisgICAgICAgICAg
ICAnICAgIGRlZmF1bHQ6XG4nCisgICAgICAgICAgICAnICAgICAgICBpLS07XG4nCisgICAgICAg
ICAgICAnICAgIH1cbicsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVs
dGlfbGluZV9saW50KAorICAgICAgICAgICAgJyAgICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuJwor
ICAgICAgICAgICAgJyAgICBjYXNlIGZvb0NvbmRpdGlvbjogYnJlYWs7XG4nCisgICAgICAgICAg
ICAnICAgIGRlZmF1bHQ6IHJldHVybjtcbicKKyAgICAgICAgICAgICcgICAgfVxuJywKKyAgICAg
ICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAg
ICAgICAnICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7XG4nCisgICAgICAgICAgICAnICAgICAgICBj
YXNlIGZvb0NvbmRpdGlvbjpcbicKKyAgICAgICAgICAgICcgICAgICAgIGNhc2UgYmFyQ29uZGl0
aW9uOlxuJworICAgICAgICAgICAgJyAgICAgICAgICAgIGkrKztcbicKKyAgICAgICAgICAgICcg
ICAgICAgICAgICBicmVhaztcbicKKyAgICAgICAgICAgICcgICAgICAgIGRlZmF1bHQ6XG4nCisg
ICAgICAgICAgICAnICAgICAgICAgICAgaS0tO1xuJworICAgICAgICAgICAgJyAgICB9XG4nLAor
ICAgICAgICAgICAgJ0EgY2FzZSBsYWJlbCBzaG91bGQgbm90IGJlIGluZGVudGVkLCBidXQgbGlu
ZSB1cCB3aXRoIGl0cyBzd2l0Y2ggc3RhdGVtZW50LicKKyAgICAgICAgICAgICcgIFt3aGl0ZXNw
YWNlL2luZGVudF0gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAor
ICAgICAgICAgICAgJyAgICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuJworICAgICAgICAgICAgJyAg
ICAgICAgY2FzZSBmb29Db25kaXRpb246XG4nCisgICAgICAgICAgICAnICAgICAgICAgICAgYnJl
YWs7XG4nCisgICAgICAgICAgICAnICAgIGRlZmF1bHQ6XG4nCisgICAgICAgICAgICAnICAgICAg
ICAgICAgaS0tO1xuJworICAgICAgICAgICAgJyAgICB9XG4nLAorICAgICAgICAgICAgJ0EgY2Fz
ZSBsYWJlbCBzaG91bGQgbm90IGJlIGluZGVudGVkLCBidXQgbGluZSB1cCB3aXRoIGl0cyBzd2l0
Y2ggc3RhdGVtZW50LicKKyAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJyAgICBz
d2l0Y2ggKGNvbmRpdGlvbikge1xuJworICAgICAgICAgICAgJyAgICBjYXNlIGZvb0NvbmRpdGlv
bjpcbicKKyAgICAgICAgICAgICcgICAgY2FzZSBiYXJDb25kaXRpb246XG4nCisgICAgICAgICAg
ICAnICAgICAgICBzd2l0Y2ggKG90aGVyQ29uZGl0aW9uKSB7XG4nCisgICAgICAgICAgICAnICAg
ICAgICAgICAgZGVmYXVsdDpcbicKKyAgICAgICAgICAgICcgICAgICAgICAgICByZXR1cm47XG4n
CisgICAgICAgICAgICAnICAgICAgICB9XG4nCisgICAgICAgICAgICAnICAgIGRlZmF1bHQ6XG4n
CisgICAgICAgICAgICAnICAgICAgICBpLS07XG4nCisgICAgICAgICAgICAnICAgIH1cbicsCisg
ICAgICAgICAgICAnQSBjYXNlIGxhYmVsIHNob3VsZCBub3QgYmUgaW5kZW50ZWQsIGJ1dCBsaW5l
IHVwIHdpdGggaXRzIHN3aXRjaCBzdGF0ZW1lbnQuJworICAgICAgICAgICAgJyAgW3doaXRlc3Bh
Y2UvaW5kZW50XSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisg
ICAgICAgICAgICAnICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7XG4nCisgICAgICAgICAgICAnICAg
IGNhc2UgZm9vQ29uZGl0aW9uOlxuJworICAgICAgICAgICAgJyAgICBjYXNlIGJhckNvbmRpdGlv
bjpcbicKKyAgICAgICAgICAgICcgICAgaSsrO1xuJworICAgICAgICAgICAgJyAgICBicmVhaztc
blxuJworICAgICAgICAgICAgJyAgICBkZWZhdWx0OlxuJworICAgICAgICAgICAgJyAgICBpLS07
XG4nCisgICAgICAgICAgICAnICAgIH1cbicsCisgICAgICAgICAgICAnTm9uLWxhYmVsIGNvZGUg
aW5zaWRlIHN3aXRjaCBzdGF0ZW1lbnRzIHNob3VsZCBiZSBpbmRlbnRlZC4nCisgICAgICAgICAg
ICAnICBbd2hpdGVzcGFjZS9pbmRlbnRdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRp
X2xpbmVfbGludCgKKyAgICAgICAgICAgICcgICAgc3dpdGNoIChjb25kaXRpb24pIHtcbicKKyAg
ICAgICAgICAgICcgICAgY2FzZSBmb29Db25kaXRpb246XG4nCisgICAgICAgICAgICAnICAgIGNh
c2UgYmFyQ29uZGl0aW9uOlxuJworICAgICAgICAgICAgJyAgICAgICAgc3dpdGNoIChvdGhlckNv
bmRpdGlvbikge1xuJworICAgICAgICAgICAgJyAgICAgICAgZGVmYXVsdDpcbicKKyAgICAgICAg
ICAgICcgICAgICAgIHJldHVybjtcbicKKyAgICAgICAgICAgICcgICAgICAgIH1cbicKKyAgICAg
ICAgICAgICcgICAgZGVmYXVsdDpcbicKKyAgICAgICAgICAgICcgICAgICAgIGktLTtcbicKKyAg
ICAgICAgICAgICcgICAgfVxuJywKKyAgICAgICAgICAgICdOb24tbGFiZWwgY29kZSBpbnNpZGUg
c3dpdGNoIHN0YXRlbWVudHMgc2hvdWxkIGJlIGluZGVudGVkLicKKyAgICAgICAgICAgICcgIFt3
aGl0ZXNwYWNlL2luZGVudF0gWzRdJykKKworICAgICAgICAjIDYuIEJvb2xlYW4gZXhwcmVzc2lv
bnMgYXQgdGhlIHNhbWUgbmVzdGluZyBsZXZlbCB0aGF0IHNwYW4KKyAgICAgICAgIyAgIG11bHRp
cGxlIGxpbmVzIHNob3VsZCBoYXZlIHRoZWlyIG9wZXJhdG9ycyBvbiB0aGUgbGVmdCBzaWRlIG9m
CisgICAgICAgICMgICB0aGUgbGluZSBpbnN0ZWFkIG9mIHRoZSByaWdodCBzaWRlLgorICAgICAg
ICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnICAgIHJldHVybiBh
dHRyLT5uYW1lKCkgPT0gc3JjQXR0clxuJworICAgICAgICAgICAgJyAgICAgICAgfHwgYXR0ci0+
bmFtZSgpID09IGxvd3NyY0F0dHI7XG4nLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGF0dHItPm5h
bWUoKSA9PSBzcmNBdHRyIHx8XG4nCisgICAgICAgICAgICAnICAgICAgICBhdHRyLT5uYW1lKCkg
PT0gbG93c3JjQXR0cjtcbicsCisgICAgICAgICAgICAnQm9vbGVhbiBleHByZXNzaW9ucyB0aGF0
IHNwYW4gbXVsdGlwbGUgbGluZXMgc2hvdWxkIGhhdmUgdGhlaXIgJworICAgICAgICAgICAgJ29w
ZXJhdG9ycyBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBsaW5lIGluc3RlYWQgb2YgdGhlIHJpZ2h0
IHNpZGUuJworICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbNF0nKQorCisg
ICAgZGVmIHRlc3Rfc3BhY2luZyhzZWxmKToKKyAgICAgICAgIyAxLiBEbyBub3QgcGxhY2Ugc3Bh
Y2VzIGFyb3VuZCB1bmFyeSBvcGVyYXRvcnMuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludCgKKyAgICAgICAgICAgICdpKys7JywKKyAgICAgICAgICAgICcnKQorICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnaSArKzsnLAorICAgICAg
ICAgICAgJ0V4dHJhIHNwYWNlIGZvciBvcGVyYXRvciAgKys7ICBbd2hpdGVzcGFjZS9vcGVyYXRv
cnNdIFs0XScpCisKKyAgICAgICAgIyAyLiBEbyBwbGFjZSBzcGFjZXMgYXJvdW5kIGJpbmFyeSBh
bmQgdGVybmFyeSBvcGVyYXRvcnMuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKKyAgICAgICAgICAgICd5ID0gbSAqIHggKyBiOycsCisgICAgICAgICAgICAnJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2YoYSwgYik7JywK
KyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisg
ICAgICAgICAgICAnYyA9IGEgfCBiOycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ3JldHVybiBjb25kaXRpb24gPyAx
IDogMDsnLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKKyAgICAgICAgICAgICd5PW0qeCtiOycsCisgICAgICAgICAgICAnTWlzc2luZyBzcGFj
ZXMgYXJvdW5kID0gIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzRdJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2YoYSxiKTsnLAorICAgICAgICAg
ICAgJ01pc3Npbmcgc3BhY2UgYWZ0ZXIgLCAgW3doaXRlc3BhY2UvY29tbWFdIFszXScpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdjID0gYXxiOycs
CisgICAgICAgICAgICAnTWlzc2luZyBzcGFjZXMgYXJvdW5kIHwgIFt3aGl0ZXNwYWNlL29wZXJh
dG9yc10gWzNdJykKKyAgICAgICAgIyBGSVhNRTogV2UgY2Fubm90IGNhdGNoIHRoaXMgbGludCBl
cnJvci4KKyAgICAgICAgIyBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICMg
ICAgICdyZXR1cm4gY29uZGl0aW9uID8gMTowOycsCisgICAgICAgICMgICAgICcnKQorCisgICAg
ICAgICMgMy4gUGxhY2Ugc3BhY2VzIGJldHdlZW4gY29udHJvbCBzdGF0ZW1lbnRzIGFuZCB0aGVp
ciBwYXJlbnRoZXNlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAg
ICAgICAgICAgJyAgICBpZiAoY29uZGl0aW9uKVxuJworICAgICAgICAgICAgJyAgICAgICAgZG9J
dCgpO1xuJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCisgICAgICAgICAgICAnICAgIGlmKGNvbmRpdGlvbilcbicKKyAgICAgICAgICAgICcg
ICAgICAgIGRvSXQoKTtcbicsCisgICAgICAgICAgICAnTWlzc2luZyBzcGFjZSBiZWZvcmUgKCBp
biBpZiggIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzVdJykKKworICAgICAgICAjIDQuIERvIG5vdCBw
bGFjZSBzcGFjZXMgYmV0d2VlbiBhIGZ1bmN0aW9uIGFuZCBpdHMgcGFyZW50aGVzZXMsCisgICAg
ICAgICMgICAgb3IgYmV0d2VlbiBhIHBhcmVudGhlc2lzIGFuZCBpdHMgY29udGVudC4KKyAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2YoYSwgYik7JywK
KyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisg
ICAgICAgICAgICAnZiAoYSwgYik7JywKKyAgICAgICAgICAgICdFeHRyYSBzcGFjZSBiZWZvcmUg
KCBpbiBmdW5jdGlvbiBjYWxsICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs0XScpCisgICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdmKCBhLCBiICk7JywKKyAg
ICAgICAgICAgIFsnRXh0cmEgc3BhY2UgYWZ0ZXIgKCBpbiBmdW5jdGlvbiBjYWxsICBbd2hpdGVz
cGFjZS9wYXJlbnNdIFs0XScsCisgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSApICBb
d2hpdGVzcGFjZS9wYXJlbnNdIFsyXSddKQorCisgICAgZGVmIHRlc3RfbGluZV9icmVha2luZyhz
ZWxmKToKKyAgICAgICAgIyAxLiBFYWNoIHN0YXRlbWVudCBzaG91bGQgZ2V0IGl0cyBvd24gbGlu
ZS4KKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJyAg
ICB4Kys7XG4nCisgICAgICAgICAgICAnICAgIHkrKztcbicKKyAgICAgICAgICAgICcgICAgaWYg
KGNvbmRpdGlvbik7XG4nCisgICAgICAgICAgICAnICAgICAgICBkb0l0KCk7XG4nLAorICAgICAg
ICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAg
ICAgICcgICAgeCsrOyB5Kys7JywKKyAgICAgICAgICAgICdNb3JlIHRoYW4gb25lIGNvbW1hbmQg
b24gdGhlIHNhbWUgbGluZSAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJykKKyAgICAgICAgIyBG
SVhNRTogTWFrZSB0aGlzIGZhaWwuCisgICAgICAgICMgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50KAorICAgICAgICAjICAgICAnICAgIGlmIChjb25kaXRpb24pIGRvSXQoKTtcbicsCisgICAg
ICAgICMgICAgICcnKQorCisgICAgICAgICMgMi4gQW4gZWxzZSBzdGF0ZW1lbnQgc2hvdWxkIGdv
IG9uIHRoZSBzYW1lIGxpbmUgYXMgYSBwcmVjZWRpbmcKKyAgICAgICAgIyAgIGNsb3NlIGJyYWNl
IGlmIG9uZSBpcyBwcmVzZW50LCBlbHNlIGl0IHNob3VsZCBsaW5lIHVwIHdpdGggdGhlCisgICAg
ICAgICMgICBpZiBzdGF0ZW1lbnQuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKKyAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKSB7XG4nCisgICAgICAgICAgICAnICAgIGRv
U29tZXRoaW5nKCk7XG4nCisgICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nQWdhaW4oKTtcbicK
KyAgICAgICAgICAgICd9IGVsc2Uge1xuJworICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZ0Vs
c2UoKTtcbicKKyAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmdFbHNlQWdhaW4oKTtcbicKKyAg
ICAgICAgICAgICd9XG4nLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKVxuJworICAgICAgICAg
ICAgJyAgICBkb1NvbWV0aGluZygpO1xuJworICAgICAgICAgICAgJ2Vsc2VcbicKKyAgICAgICAg
ICAgICcgICAgZG9Tb21ldGhpbmdFbHNlKCk7XG4nLAorICAgICAgICAgICAgJycpCisgICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdpZiAoY29uZGl0aW9u
KVxuJworICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZygpO1xuJworICAgICAgICAgICAgJ2Vs
c2Uge1xuJworICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZ0Vsc2UoKTtcbicKKyAgICAgICAg
ICAgICcgICAgZG9Tb21ldGhpbmdFbHNlQWdhaW4oKTtcbicKKyAgICAgICAgICAgICd9XG4nLAor
ICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAg
ICAgICAgICAgICcjZGVmaW5lIFRFU1RfQVNTRVJUKGV4cHJlc3Npb24pIGRvIHsgaWYgKCEoZXhw
cmVzc2lvbikpIHsgVGVzdHNDb250cm9sbGVyOjpzaGFyZWQoKS50ZXN0RmFpbGVkKF9fRklMRV9f
LCBfX0xJTkVfXywgI2V4cHJlc3Npb24pOyByZXR1cm47IH0gfSB3aGlsZSAoMClcbicsCisgICAg
ICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAg
ICAgICAgJ2lmIChjb25kaXRpb24pIHtcbicKKyAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmco
KTtcbicKKyAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmdBZ2FpbigpO1xuJworICAgICAgICAg
ICAgJ31cbicKKyAgICAgICAgICAgICdlbHNlIHtcbicKKyAgICAgICAgICAgICcgICAgZG9Tb21l
dGhpbmdFbHNlKCk7XG4nCisgICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nRWxzZUFnYWluKCk7
XG4nCisgICAgICAgICAgICAnfVxuJywKKyAgICAgICAgICAgICdBbiBlbHNlIHNob3VsZCBhcHBl
YXIgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgcHJlY2VkaW5nIH0gIFt3aGl0ZXNwYWNlL25ld2xp
bmVdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAg
ICAgICdpZiAoY29uZGl0aW9uKSBkb1NvbWV0aGluZygpOyBlbHNlIGRvU29tZXRoaW5nRWxzZSgp
O1xuJywKKyAgICAgICAgICAgIFsnTW9yZSB0aGFuIG9uZSBjb21tYW5kIG9uIHRoZSBzYW1lIGxp
bmUgIFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XScsCisgICAgICAgICAgICAgJ0Vsc2UgY2xhdXNl
IHNob3VsZCBuZXZlciBiZSBvbiBzYW1lIGxpbmUgYXMgZWxzZSAodXNlIDIgbGluZXMpICBbd2hp
dGVzcGFjZS9uZXdsaW5lXSBbNF0nXSkKKyAgICAgICAgIyBGSVhNRTogTWFrZSB0aGlzIGZhaWwu
CisgICAgICAgICMgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAjICAgICAn
aWYgKGNvbmRpdGlvbikgZG9Tb21ldGhpbmcoKTsgZWxzZSB7XG4nCisgICAgICAgICMgICAgICcg
ICAgZG9Tb21ldGhpbmdFbHNlKCk7XG4nCisgICAgICAgICMgICAgICd9XG4nLAorICAgICAgICAj
ICAgICAnJykKKworICAgICAgICAjIDMuIEFuIGVsc2UgaWYgc3RhdGVtZW50IHNob3VsZCBiZSB3
cml0dGVuIGFzIGFuIGlmIHN0YXRlbWVudAorICAgICAgICAjICAgIHdoZW4gdGhlIHByaW9yIGlm
IGNvbmNsdWRlcyB3aXRoIGEgcmV0dXJuIHN0YXRlbWVudC4KKyAgICAgICAgc2VsZi5hc3NlcnRf
bXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2lmIChtb3RpdmF0ZWQpIHtcbicKKyAgICAg
ICAgICAgICcgICAgaWYgKGxpcXVpZClcbicKKyAgICAgICAgICAgICcgICAgICAgIHJldHVybiBt
b25leTtcbicKKyAgICAgICAgICAgICd9IGVsc2UgaWYgKHRpcmVkKVxuJworICAgICAgICAgICAg
JyAgICBicmVhaztcbicsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVs
dGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2lmIChjb25kaXRpb24pXG4nCisgICAgICAgICAg
ICAnICAgIGRvU29tZXRoaW5nKCk7XG4nCisgICAgICAgICAgICAnZWxzZSBpZiAob3RoZXJDb25k
aXRpb24pXG4nCisgICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nRWxzZSgpO1xuJywKKyAgICAg
ICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAg
ICAgICAnaWYgKGNvbmRpdGlvbilcbicKKyAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmcoKTtc
bicKKyAgICAgICAgICAgICdlbHNlXG4nCisgICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nRWxz
ZSgpO1xuJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCisgICAgICAgICAgICAnaWYgKGNvbmRpdGlvbilcbicKKyAgICAgICAgICAgICcgICAg
cmV0dXJuVmFsdWUgPSBmb287XG4nCisgICAgICAgICAgICAnZWxzZSBpZiAob3RoZXJDb25kaXRp
b24pXG4nCisgICAgICAgICAgICAnICAgIHJldHVyblZhbHVlID0gYmFyO1xuJywKKyAgICAgICAg
ICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAg
ICAnaWYgKGNvbmRpdGlvbilcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuVmFsdWUgPSBmb287
XG4nCisgICAgICAgICAgICAnZWxzZVxuJworICAgICAgICAgICAgJyAgICByZXR1cm5WYWx1ZSA9
IGJhcjtcbicsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KAorICAgICAgICAgICAgJ2lmIChjb25kaXRpb24pXG4nCisgICAgICAgICAgICAnICAg
IGRvU29tZXRoaW5nKCk7XG4nCisgICAgICAgICAgICAnZWxzZSBpZiAobGlxdWlkKVxuJworICAg
ICAgICAgICAgJyAgICByZXR1cm4gbW9uZXk7XG4nCisgICAgICAgICAgICAnZWxzZSBpZiAoYnJv
a2UpXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBmYXZvcjtcbicKKyAgICAgICAgICAgICdl
bHNlXG4nCisgICAgICAgICAgICAnICAgIHNsZWVwKDI4ODAwKTtcbicsCisgICAgICAgICAgICAn
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2lm
IChsaXF1aWQpIHtcbicKKyAgICAgICAgICAgICcgICAgcHJlcGFyZSgpO1xuJworICAgICAgICAg
ICAgJyAgICByZXR1cm4gbW9uZXk7XG4nCisgICAgICAgICAgICAnfSBlbHNlIGlmIChncmVlZHkp
IHtcbicKKyAgICAgICAgICAgICcgICAga2VlcCgpO1xuJworICAgICAgICAgICAgJyAgICByZXR1
cm4gbm90aGluZztcbicKKyAgICAgICAgICAgICd9XG4nLAorICAgICAgICAgICAgJ0FuIGVsc2Ug
aWYgc3RhdGVtZW50IHNob3VsZCBiZSB3cml0dGVuIGFzIGFuIGlmIHN0YXRlbWVudCB3aGVuIHRo
ZSAnCisgICAgICAgICAgICAncHJpb3IgImlmIiBjb25jbHVkZXMgd2l0aCBhIHJldHVybiwgYnJl
YWssIGNvbnRpbnVlIG9yIGdvdG8gc3RhdGVtZW50LicKKyAgICAgICAgICAgICcgIFtyZWFkYWJp
bGl0eS9jb250cm9sX2Zsb3ddIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKKyAgICAgICAgICAgICcgICAgaWYgKHN0dXBpZCkge1xuJworICAgICAgICAgICAgJ2lu
ZmluaXRlTG9vcDpcbicKKyAgICAgICAgICAgICcgICAgICAgIGdvdG8gaW5maW5pdGVMb29wO1xu
JworICAgICAgICAgICAgJyAgICB9IGVsc2UgaWYgKGV2aWwpXG4nCisgICAgICAgICAgICAnICAg
ICAgICBnb3RvIGhlbGw7XG4nLAorICAgICAgICAgICAgJ0FuIGVsc2UgaWYgc3RhdGVtZW50IHNo
b3VsZCBiZSB3cml0dGVuIGFzIGFuIGlmIHN0YXRlbWVudCB3aGVuIHRoZSAnCisgICAgICAgICAg
ICAncHJpb3IgImlmIiBjb25jbHVkZXMgd2l0aCBhIHJldHVybiwgYnJlYWssIGNvbnRpbnVlIG9y
IGdvdG8gc3RhdGVtZW50LicKKyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jb250cm9sX2Zs
b3ddIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAg
ICAgICdpZiAobGlxdWlkKVxuJworICAgICAgICAgICAgJ3tcbicKKyAgICAgICAgICAgICcgICAg
cHJlcGFyZSgpO1xuJworICAgICAgICAgICAgJyAgICByZXR1cm4gbW9uZXk7XG4nCisgICAgICAg
ICAgICAnfVxuJworICAgICAgICAgICAgJ2Vsc2UgaWYgKGdyZWVkeSlcbicKKyAgICAgICAgICAg
ICcgICAga2VlcCgpO1xuJywKKyAgICAgICAgICAgIFsnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUg
ZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScsCisgICAg
ICAgICAgICAnQW4gZWxzZSBzaG91bGQgYXBwZWFyIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIHBy
ZWNlZGluZyB9ICBbd2hpdGVzcGFjZS9uZXdsaW5lXSBbNF0nLAorICAgICAgICAgICAgJ0FuIGVs
c2UgaWYgc3RhdGVtZW50IHNob3VsZCBiZSB3cml0dGVuIGFzIGFuIGlmIHN0YXRlbWVudCB3aGVu
IHRoZSAnCisgICAgICAgICAgICAncHJpb3IgImlmIiBjb25jbHVkZXMgd2l0aCBhIHJldHVybiwg
YnJlYWssIGNvbnRpbnVlIG9yIGdvdG8gc3RhdGVtZW50LicKKyAgICAgICAgICAgICcgIFtyZWFk
YWJpbGl0eS9jb250cm9sX2Zsb3ddIFs0XSddKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnQoCisgICAgICAgICAgICAnaWYgKGdvbmUpXG4nCisgICAgICAgICAgICAnICAgIHJl
dHVybjtcbicKKyAgICAgICAgICAgICdlbHNlIGlmIChoZXJlKVxuJworICAgICAgICAgICAgJyAg
ICBnbygpO1xuJywKKyAgICAgICAgICAgICdBbiBlbHNlIGlmIHN0YXRlbWVudCBzaG91bGQgYmUg
d3JpdHRlbiBhcyBhbiBpZiBzdGF0ZW1lbnQgd2hlbiB0aGUgJworICAgICAgICAgICAgJ3ByaW9y
ICJpZiIgY29uY2x1ZGVzIHdpdGggYSByZXR1cm4sIGJyZWFrLCBjb250aW51ZSBvciBnb3RvIHN0
YXRlbWVudC4nCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY29udHJvbF9mbG93XSBbNF0n
KQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnaWYg
KGdvbmUpXG4nCisgICAgICAgICAgICAnICAgIHJldHVybjtcbicKKyAgICAgICAgICAgICdlbHNl
XG4nCisgICAgICAgICAgICAnICAgIGdvKCk7XG4nLAorICAgICAgICAgICAgJ0FuIGVsc2Ugc3Rh
dGVtZW50IGNhbiBiZSByZW1vdmVkIHdoZW4gdGhlIHByaW9yICJpZiIgY29uY2x1ZGVzICcKKyAg
ICAgICAgICAgICd3aXRoIGEgcmV0dXJuLCBicmVhaywgY29udGludWUgb3IgZ290byBzdGF0ZW1l
bnQuJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NvbnRyb2xfZmxvd10gWzRdJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2lmIChtb3Rp
dmF0ZWQpIHtcbicKKyAgICAgICAgICAgICcgICAgcHJlcGFyZSgpO1xuJworICAgICAgICAgICAg
JyAgICBjb250aW51ZTtcbicKKyAgICAgICAgICAgICd9IGVsc2Uge1xuJworICAgICAgICAgICAg
JyAgICBjbGVhblVwKCk7XG4nCisgICAgICAgICAgICAnICAgIGJyZWFrO1xuJworICAgICAgICAg
ICAgJ31cbicsCisgICAgICAgICAgICAnQW4gZWxzZSBzdGF0ZW1lbnQgY2FuIGJlIHJlbW92ZWQg
d2hlbiB0aGUgcHJpb3IgImlmIiBjb25jbHVkZXMgJworICAgICAgICAgICAgJ3dpdGggYSByZXR1
cm4sIGJyZWFrLCBjb250aW51ZSBvciBnb3RvIHN0YXRlbWVudC4nCisgICAgICAgICAgICAnICBb
cmVhZGFiaWxpdHkvY29udHJvbF9mbG93XSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnaWYgKHRpcmVkKVxuJworICAgICAgICAgICAgJyAg
ICBicmVhaztcbicKKyAgICAgICAgICAgICdlbHNlIHtcbicKKyAgICAgICAgICAgICcgICAgcHJl
cGFyZSgpO1xuJworICAgICAgICAgICAgJyAgICBjb250aW51ZTtcbicKKyAgICAgICAgICAgICd9
XG4nLAorICAgICAgICAgICAgJ0FuIGVsc2Ugc3RhdGVtZW50IGNhbiBiZSByZW1vdmVkIHdoZW4g
dGhlIHByaW9yICJpZiIgY29uY2x1ZGVzICcKKyAgICAgICAgICAgICd3aXRoIGEgcmV0dXJuLCBi
cmVhaywgY29udGludWUgb3IgZ290byBzdGF0ZW1lbnQuJworICAgICAgICAgICAgJyAgW3JlYWRh
YmlsaXR5L2NvbnRyb2xfZmxvd10gWzRdJykKKworICAgIGRlZiB0ZXN0X2JyYWNlcyhzZWxmKToK
KyAgICAgICAgIyAxLiBGdW5jdGlvbiBkZWZpbml0aW9uczogcGxhY2UgZWFjaCBicmFjZSBvbiBp
dHMgb3duIGxpbmUuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAg
ICAgICAgICdpbnQgbWFpbigpXG4nCisgICAgICAgICAgICAne1xuJworICAgICAgICAgICAgJyAg
ICBkb1NvbWV0aGluZygpO1xuJworICAgICAgICAgICAgJ31cbicsCisgICAgICAgICAgICAnJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2ludCBt
YWluKCkge1xuJworICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZygpO1xuJworICAgICAgICAg
ICAgJ31cbicsCisgICAgICAgICAgICAnUGxhY2UgYnJhY2Ugb24gaXRzIG93biBsaW5lIGZvciBm
dW5jdGlvbiBkZWZpbml0aW9ucy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKKworICAgICAg
ICAjIDIuIE90aGVyIGJyYWNlczogcGxhY2UgdGhlIG9wZW4gYnJhY2Ugb24gdGhlIGxpbmUgcHJl
Y2VkaW5nIHRoZQorICAgICAgICAjICAgIGNvZGUgYmxvY2s7IHBsYWNlIHRoZSBjbG9zZSBicmFj
ZSBvbiBpdHMgb3duIGxpbmUuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
KyAgICAgICAgICAgICdjbGFzcyBNeUNsYXNzIHtcbicKKyAgICAgICAgICAgICcgICAgaW50IGZv
bztcbicKKyAgICAgICAgICAgICd9O1xuJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnbmFtZXNwYWNlIFdlYkNvcmUg
e1xuJworICAgICAgICAgICAgJ2ludCBmb287XG4nCisgICAgICAgICAgICAnfTtcbicsCisgICAg
ICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAg
ICAgICAgJ2ZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykge1xuJworICAgICAgICAgICAgJyAg
ICBEb1NvbWV0aGluZygpO1xuJworICAgICAgICAgICAgJ307XG4nLAorICAgICAgICAgICAgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdjbGFz
cyBNeUNsYXNzXG4nCisgICAgICAgICAgICAne1xuJworICAgICAgICAgICAgJyAgICBpbnQgZm9v
O1xuJworICAgICAgICAgICAgJ307XG4nLAorICAgICAgICAgICAgJ1RoaXMgeyBzaG91bGQgYmUg
YXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZSAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0n
KQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnaWYg
KGNvbmRpdGlvbilcbicKKyAgICAgICAgICAgICd7XG4nCisgICAgICAgICAgICAnICAgIGludCBm
b287XG4nCisgICAgICAgICAgICAnfVxuJywKKyAgICAgICAgICAgICdUaGlzIHsgc2hvdWxkIGJl
IGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRd
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2Zv
ciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKylcbicKKyAgICAgICAgICAgICd7XG4nCisgICAgICAg
ICAgICAnICAgIGludCBmb287XG4nCisgICAgICAgICAgICAnfVxuJywKKyAgICAgICAgICAgICdU
aGlzIHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUgIFt3aGl0ZXNw
YWNlL2JyYWNlc10gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAor
ICAgICAgICAgICAgJ3doaWxlICh0cnVlKVxuJworICAgICAgICAgICAgJ3tcbicKKyAgICAgICAg
ICAgICcgICAgaW50IGZvbztcbicKKyAgICAgICAgICAgICd9XG4nLAorICAgICAgICAgICAgJ1Ro
aXMgeyBzaG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZSAgW3doaXRlc3Bh
Y2UvYnJhY2VzXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisg
ICAgICAgICAgICAnZm9yZWFjaCAoRm9vKiBmb28sIGZvb3MpXG4nCisgICAgICAgICAgICAne1xu
JworICAgICAgICAgICAgJyAgICBpbnQgYmFyO1xuJworICAgICAgICAgICAgJ31cbicsCisgICAg
ICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5l
ICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludCgKKyAgICAgICAgICAgICdzd2l0Y2ggKHR5cGUpXG4nCisgICAgICAgICAgICAne1xu
JworICAgICAgICAgICAgJ2Nhc2UgZm9vOiByZXR1cm47XG4nCisgICAgICAgICAgICAnfVxuJywK
KyAgICAgICAgICAgICdUaGlzIHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3Vz
IGxpbmUgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVs
dGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2lmIChjb25kaXRpb24pXG4nCisgICAgICAgICAg
ICAne1xuJworICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJworICAgICAgICAgICAgJ31cbics
CisgICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91
cyBsaW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKysp
XG4nCisgICAgICAgICAgICAne1xuJworICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJworICAg
ICAgICAgICAgJ31cbicsCisgICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5k
IG9mIHRoZSBwcmV2aW91cyBsaW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCisgICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICd3aGlsZSAodHJ1ZSlc
bicKKyAgICAgICAgICAgICd7XG4nCisgICAgICAgICAgICAnICAgIGludCBmb287XG4nCisgICAg
ICAgICAgICAnfVxuJywKKyAgICAgICAgICAgICdUaGlzIHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQg
b2YgdGhlIHByZXZpb3VzIGxpbmUgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ3N3aXRjaCAodHlwZSlc
bicKKyAgICAgICAgICAgICd7XG4nCisgICAgICAgICAgICAnY2FzZSBmb286IHJldHVybjtcbicK
KyAgICAgICAgICAgICd9XG4nLAorICAgICAgICAgICAgJ1RoaXMgeyBzaG91bGQgYmUgYXQgdGhl
IGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZSAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQorICAg
ICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnZWxzZSBpZiAo
dHlwZSlcbicKKyAgICAgICAgICAgICd7XG4nCisgICAgICAgICAgICAnY2FzZSBmb286IHJldHVy
bjtcbicKKyAgICAgICAgICAgICd9XG4nLAorICAgICAgICAgICAgJ1RoaXMgeyBzaG91bGQgYmUg
YXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZSAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0n
KQorCisgICAgICAgICMgMy4gT25lLWxpbmUgY29udHJvbCBjbGF1c2VzIHNob3VsZCBub3QgdXNl
IGJyYWNlcyB1bmxlc3MKKyAgICAgICAgIyAgICBjb21tZW50cyBhcmUgaW5jbHVkZWQgb3IgYSBz
aW5nbGUgc3RhdGVtZW50IHNwYW5zIG11bHRpcGxlCisgICAgICAgICMgICAgbGluZXMuCisgICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdpZiAodHJ1ZSkg
e1xuJworICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJworICAgICAgICAgICAgJ31cbicsCisg
ICAgICAgICAgICAnT25lIGxpbmUgY29udHJvbCBjbGF1c2VzIHNob3VsZCBub3QgdXNlIGJyYWNl
cy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKKworICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnZm9yICg7IGZvbzsgYmFyKSB7XG4nCisgICAgICAg
ICAgICAnICAgIGludCBmb287XG4nCisgICAgICAgICAgICAnfVxuJywKKyAgICAgICAgICAgICdP
bmUgbGluZSBjb250cm9sIGNsYXVzZXMgc2hvdWxkIG5vdCB1c2UgYnJhY2VzLiAgW3doaXRlc3Bh
Y2UvYnJhY2VzXSBbNF0nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
KyAgICAgICAgICAgICdmb3JlYWNoIChmb28sIGZvb3MpIHtcbicKKyAgICAgICAgICAgICcgICAg
aW50IGJhcjtcbicKKyAgICAgICAgICAgICd9XG4nLAorICAgICAgICAgICAgJ09uZSBsaW5lIGNv
bnRyb2wgY2xhdXNlcyBzaG91bGQgbm90IHVzZSBicmFjZXMuICBbd2hpdGVzcGFjZS9icmFjZXNd
IFs0XScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAg
ICAgJ3doaWxlICh0cnVlKSB7XG4nCisgICAgICAgICAgICAnICAgIGludCBmb287XG4nCisgICAg
ICAgICAgICAnfVxuJywKKyAgICAgICAgICAgICdPbmUgbGluZSBjb250cm9sIGNsYXVzZXMgc2hv
dWxkIG5vdCB1c2UgYnJhY2VzLiAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdpZiAodHJ1ZSlcbicK
KyAgICAgICAgICAgICcgICAgaW50IGZvbztcbicKKyAgICAgICAgICAgICdlbHNlIHtcbicKKyAg
ICAgICAgICAgICcgICAgaW50IGZvbztcbicKKyAgICAgICAgICAgICd9XG4nLAorICAgICAgICAg
ICAgJ09uZSBsaW5lIGNvbnRyb2wgY2xhdXNlcyBzaG91bGQgbm90IHVzZSBicmFjZXMuICBbd2hp
dGVzcGFjZS9icmFjZXNdIFs0XScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50KAorICAgICAgICAgICAgJ2lmICh0cnVlKSB7XG4nCisgICAgICAgICAgICAnICAgIGludCBm
b287XG4nCisgICAgICAgICAgICAnfSBlbHNlXG4nCisgICAgICAgICAgICAnICAgIGludCBmb287
XG4nLAorICAgICAgICAgICAgJ09uZSBsaW5lIGNvbnRyb2wgY2xhdXNlcyBzaG91bGQgbm90IHVz
ZSBicmFjZXMuICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2lmICh0cnVlKSB7XG4nCisgICAgICAg
ICAgICAnICAgIC8vIFNvbWUgY29tbWVudFxuJworICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xu
JworICAgICAgICAgICAgJ31cbicsCisgICAgICAgICAgICAnJykKKworICAgICAgICBzZWxmLmFz
c2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnaWYgKHRydWUpIHtcbicKKyAgICAg
ICAgICAgICcgICAgbXlGdW5jdGlvbihyZWFsbHlMb25nUGFyYW0xLCByZWFsbHlMb25nUGFyYW0y
LFxuJworICAgICAgICAgICAgJyAgICAgICAgICAgICAgIHJlYWxseUxvbmdQYXJhbTMpO1xuJwor
ICAgICAgICAgICAgJ31cbicsCisgICAgICAgICAgICAnJykKKworICAgICAgICAjIDQuIENvbnRy
b2wgY2xhdXNlcyB3aXRob3V0IGEgYm9keSBzaG91bGQgdXNlIGVtcHR5IGJyYWNlcy4KKyAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2ZvciAoIDsgY3Vy
cmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHQpIHsgfVxuJywKKyAgICAgICAgICAgICcnKQor
ICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnZm9yICgg
OyBjdXJyZW50O1xuJworICAgICAgICAgICAgJyAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHQp
IHt9XG4nLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKKyAgICAgICAgICAgICdmb3IgKCA7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5u
ZXh0KTtcbicsCisgICAgICAgICAgICAnU2VtaWNvbG9uIGRlZmluaW5nIGVtcHR5IHN0YXRlbWVu
dCBmb3IgdGhpcyBsb29wLiBVc2UgeyB9IGluc3RlYWQuICBbd2hpdGVzcGFjZS9zZW1pY29sb25d
IFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAg
ICd3aGlsZSAodHJ1ZSk7XG4nLAorICAgICAgICAgICAgJ1NlbWljb2xvbiBkZWZpbmluZyBlbXB0
eSBzdGF0ZW1lbnQgZm9yIHRoaXMgbG9vcC4gVXNlIHsgfSBpbnN0ZWFkLiAgW3doaXRlc3BhY2Uv
c2VtaWNvbG9uXSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisg
ICAgICAgICAgICAnfSB3aGlsZSAodHJ1ZSk7XG4nLAorICAgICAgICAgICAgJycpCisKKyAgICBk
ZWYgdGVzdF9udWxsX2ZhbHNlX3plcm8oc2VsZik6CisgICAgICAgICMgMS4gSW4gQysrLCB0aGUg
bnVsbCBwb2ludGVyIHZhbHVlIHNob3VsZCBiZSB3cml0dGVuIGFzIDAuIEluIEMsCisgICAgICAg
ICMgICAgaXQgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgTlVMTC4gSW4gT2JqZWN0aXZlLUMgYW5kIE9i
amVjdGl2ZS1DKyssCisgICAgICAgICMgICAgZm9sbG93IHRoZSBndWlkZWxpbmUgZm9yIEMgb3Ig
QysrLCByZXNwZWN0aXZlbHksIGJ1dCB1c2UgbmlsIHRvCisgICAgICAgICMgICAgcmVwcmVzZW50
IGEgbnVsbCBPYmplY3RpdmUtQyBvYmplY3QuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisg
ICAgICAgICAgICAnZnVuY3Rpb25DYWxsKE5VTEwpJywKKyAgICAgICAgICAgICdVc2UgMCBpbnN0
ZWFkIG9mIE5VTEwuJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L251bGxdIFs1XScsCisg
ICAgICAgICAgICAnZm9vLmNwcCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAg
ICAgICAiLy8gRG9uJ3QgdXNlIE5VTEwgaW4gY29tbWVudHMgc2luY2UgaXQgaXNuJ3QgaW4gY29k
ZS4iLAorICAgICAgICAgICAgJ1VzZSAwIGluc3RlYWQgb2YgTlVMTC4nCisgICAgICAgICAgICAn
ICBbcmVhZGFiaWxpdHkvbnVsbF0gWzRdJywKKyAgICAgICAgICAgICdmb28uY3BwJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICciQSBzdHJpbmcgd2l0aCBOVUxMIiAv
LyBhbmQgYSBjb21tZW50IHdpdGggTlVMTCBpcyB0cmlja3kgdG8gZmxhZyBjb3JyZWN0bHkgaW4g
Y3BwX3N0eWxlLicsCisgICAgICAgICAgICAnVXNlIDAgaW5zdGVhZCBvZiBOVUxMLicKKyAgICAg
ICAgICAgICcgIFtyZWFkYWJpbGl0eS9udWxsXSBbNF0nLAorICAgICAgICAgICAgJ2Zvby5jcHAn
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJyJBIHN0cmluZyBjb250
YWluaW5nIE5VTEwgaXMgb2siJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ2Zvby5j
cHAnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2lmIChhYm91dE5V
TEwpJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ2Zvby5jcHAnKQorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ215VmFyaWFibGUgPSBOVUxMaWZ5JywKKyAg
ICAgICAgICAgICcnLAorICAgICAgICAgICAgJ2Zvby5jcHAnKQorICAgICAgICAjIE1ha2Ugc3Vy
ZSB0aGF0IHRoZSBOVUxMIGNoZWNrIGRvZXMgbm90IGFwcGx5IHRvIEMgYW5kIE9iamVjdGl2ZS1D
IGZpbGVzLgorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2Z1bmN0aW9u
Q2FsbChOVUxMKScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdmb28uYycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnZnVuY3Rpb25DYWxsKE5VTEwpJywK
KyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ2Zvby5tJykKKworICAgICAgICAjIE1ha2Ug
c3VyZSB0aGF0IHRoZSBOVUxMIGNoZWNrIGRvZXMgbm90IGFwcGx5IHRvIGdfb2JqZWN0X3tzZXQs
Z2V0fQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2dfb2JqZWN0X2dl
dChmb28sICJwcm9wIiwgJmJhciwgTlVMTCk7JywKKyAgICAgICAgICAgICcnKQorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2dfb2JqZWN0X3NldChmb28sICJwcm9wIiwg
YmFyLCBOVUxMKTsnLAorICAgICAgICAgICAgJycpCisKKyAgICAgICAgIyAyLiBDKysgYW5kIEMg
Ym9vbCB2YWx1ZXMgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgdHJ1ZSBhbmQKKyAgICAgICAgIyAgICBm
YWxzZS4gT2JqZWN0aXZlLUMgQk9PTCB2YWx1ZXMgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgWUVTIGFu
ZCBOTy4KKyAgICAgICAgIyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisKKyAgICAgICAgIyAzLiBU
ZXN0cyBmb3IgdHJ1ZS9mYWxzZSwgbnVsbC9ub24tbnVsbCwgYW5kIHplcm8vbm9uLXplcm8gc2hv
dWxkCisgICAgICAgICMgICAgYWxsIGJlIGRvbmUgd2l0aG91dCBlcXVhbGl0eSBjb21wYXJpc29u
cy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdpZiAoY291bnQgPT0g
MCknLAorICAgICAgICAgICAgJ1Rlc3RzIGZvciB0cnVlL2ZhbHNlLCBudWxsL25vbi1udWxsLCBh
bmQgemVyby9ub24temVybyBzaG91bGQgYWxsIGJlIGRvbmUgd2l0aG91dCBlcXVhbGl0eSBjb21w
YXJpc29ucy4nCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY29tcGFyaXNvbl90b196ZXJv
XSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50X29uZV9vZl9tYW55X2Vycm9yc19yZSgK
KyAgICAgICAgICAgICdpZiAoc3RyaW5nICE9IE5VTEwpJywKKyAgICAgICAgICAgIHInVGVzdHMg
Zm9yIHRydWUvZmFsc2UsIG51bGwvbm9uLW51bGwsIGFuZCB6ZXJvL25vbi16ZXJvIHNob3VsZCBh
bGwgYmUgZG9uZSB3aXRob3V0IGVxdWFsaXR5IGNvbXBhcmlzb25zXC4nKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2lmIChjb25kaXRpb24gPT0gdHJ1ZSknLAorICAg
ICAgICAgICAgJ1Rlc3RzIGZvciB0cnVlL2ZhbHNlLCBudWxsL25vbi1udWxsLCBhbmQgemVyby9u
b24temVybyBzaG91bGQgYWxsIGJlIGRvbmUgd2l0aG91dCBlcXVhbGl0eSBjb21wYXJpc29ucy4n
CisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY29tcGFyaXNvbl90b196ZXJvXSBbNV0nKQor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2lmIChteVZhcmlhYmxlICE9
IC8qIFdoeSB3b3VsZCBhbnlvbmUgcHV0IGEgY29tbWVudCBoZXJlPyAqLyBmYWxzZSknLAorICAg
ICAgICAgICAgJ1Rlc3RzIGZvciB0cnVlL2ZhbHNlLCBudWxsL25vbi1udWxsLCBhbmQgemVyby9u
b24temVybyBzaG91bGQgYWxsIGJlIGRvbmUgd2l0aG91dCBlcXVhbGl0eSBjb21wYXJpc29ucy4n
CisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY29tcGFyaXNvbl90b196ZXJvXSBbNV0nKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnaWYgKDAgLyogVGhpcyBj
b21tZW50IGFsc28gbG9va3Mgb2RkIHRvIG1lLiAqLyAhPSBhTG9uZ2VyVmFyaWFibGVOYW1lKScs
CisgICAgICAgICAgICAnVGVzdHMgZm9yIHRydWUvZmFsc2UsIG51bGwvbm9uLW51bGwsIGFuZCB6
ZXJvL25vbi16ZXJvIHNob3VsZCBhbGwgYmUgZG9uZSB3aXRob3V0IGVxdWFsaXR5IGNvbXBhcmlz
b25zLicKKyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jb21wYXJpc29uX3RvX3plcm9dIFs1
XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnRfb25lX29mX21hbnlfZXJyb3JzX3JlKAorICAg
ICAgICAgICAgJ2lmIChOVUxMID09IHRoaXNNYXlCZU51bGwpJywKKyAgICAgICAgICAgIHInVGVz
dHMgZm9yIHRydWUvZmFsc2UsIG51bGwvbm9uLW51bGwsIGFuZCB6ZXJvL25vbi16ZXJvIHNob3Vs
ZCBhbGwgYmUgZG9uZSB3aXRob3V0IGVxdWFsaXR5IGNvbXBhcmlzb25zXC4nKQorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2lmICh0cnVlICE9IGFub3RoZXJDb25kaXRp
b24pJywKKyAgICAgICAgICAgICdUZXN0cyBmb3IgdHJ1ZS9mYWxzZSwgbnVsbC9ub24tbnVsbCwg
YW5kIHplcm8vbm9uLXplcm8gc2hvdWxkIGFsbCBiZSBkb25lIHdpdGhvdXQgZXF1YWxpdHkgY29t
cGFyaXNvbnMuJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NvbXBhcmlzb25fdG9femVy
b10gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdpZiAoZmFs
c2UgPT0gbXlCb29sVmFsdWUpJywKKyAgICAgICAgICAgICdUZXN0cyBmb3IgdHJ1ZS9mYWxzZSwg
bnVsbC9ub24tbnVsbCwgYW5kIHplcm8vbm9uLXplcm8gc2hvdWxkIGFsbCBiZSBkb25lIHdpdGhv
dXQgZXF1YWxpdHkgY29tcGFyaXNvbnMuJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2Nv
bXBhcmlzb25fdG9femVyb10gWzVdJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAg
ICAgICAgICAgJ2lmIChmb250VHlwZSA9PSB0cnVlVHlwZSknLAorICAgICAgICAgICAgJycpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnaWYgKG90aGVydHJ1ZSA9PSBm
b250VHlwZSknLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF91c2luZ19zdGQoc2Vs
Zik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAndXNpbmcgc3RkOjpt
aW47JywKKyAgICAgICAgICAgICJVc2UgJ3VzaW5nIG5hbWVzcGFjZSBzdGQ7JyBpbnN0ZWFkIG9m
ICd1c2luZyBzdGQ6Om1pbjsnLiIKKyAgICAgICAgICAgICIgIFtidWlsZC91c2luZ19zdGRdIFs0
XSIsCisgICAgICAgICAgICAnZm9vLmNwcCcpCisKKyAgICBkZWYgdGVzdF9tYXhfbWFjcm8oc2Vs
Zik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnaW50IGkgPSBNQVgo
MCwgMSk7JywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ2Zvby5jJykKKworICAgICAg
ICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2ludCBpID0gTUFYKDAsIDEpOycsCisg
ICAgICAgICAgICAnVXNlIHN0ZDo6bWF4KCkgb3Igc3RkOjptYXg8dHlwZT4oKSBpbnN0ZWFkIG9m
IHRoZSBNQVgoKSBtYWNyby4nCisgICAgICAgICAgICAnICBbcnVudGltZS9tYXhfbWluX21hY3Jv
c10gWzRdJywKKyAgICAgICAgICAgICdmb28uY3BwJykKKworICAgICAgICBzZWxmLmFzc2VydF9s
aW50KAorICAgICAgICAgICAgJ2lubGluZSBpbnQgZm9vKCkgeyByZXR1cm4gTUFYKDAsIDEpOyB9
JywKKyAgICAgICAgICAgICdVc2Ugc3RkOjptYXgoKSBvciBzdGQ6Om1heDx0eXBlPigpIGluc3Rl
YWQgb2YgdGhlIE1BWCgpIG1hY3JvLicKKyAgICAgICAgICAgICcgIFtydW50aW1lL21heF9taW5f
bWFjcm9zXSBbNF0nLAorICAgICAgICAgICAgJ2Zvby5oJykKKworICAgIGRlZiB0ZXN0X21pbl9t
YWNybyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdpbnQg
aSA9IE1JTigwLCAxKTsnLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnZm9vLmMnKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnaW50IGkgPSBNSU4oMCwg
MSk7JywKKyAgICAgICAgICAgICdVc2Ugc3RkOjptaW4oKSBvciBzdGQ6Om1pbjx0eXBlPigpIGlu
c3RlYWQgb2YgdGhlIE1JTigpIG1hY3JvLicKKyAgICAgICAgICAgICcgIFtydW50aW1lL21heF9t
aW5fbWFjcm9zXSBbNF0nLAorICAgICAgICAgICAgJ2Zvby5jcHAnKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnaW5saW5lIGludCBmb28oKSB7IHJldHVybiBNSU4o
MCwgMSk7IH0nLAorICAgICAgICAgICAgJ1VzZSBzdGQ6Om1pbigpIG9yIHN0ZDo6bWluPHR5cGU+
KCkgaW5zdGVhZCBvZiB0aGUgTUlOKCkgbWFjcm8uJworICAgICAgICAgICAgJyAgW3J1bnRpbWUv
bWF4X21pbl9tYWNyb3NdIFs0XScsCisgICAgICAgICAgICAnZm9vLmgnKQorCisgICAgZGVmIHRl
c3RfbmFtZXMoc2VsZik6CisgICAgICAgIG5hbWVfZXJyb3JfbWVzc2FnZSA9ICIgaXMgaW5jb3Jy
ZWN0bHkgbmFtZWQuIERvbid0IHVzZSB1bmRlcnNjb3JlcyBpbiB5b3VyIGlkZW50aWZpZXIgbmFt
ZXMuICBbcmVhZGFiaWxpdHkvbmFtaW5nXSBbNF0iCisKKyAgICAgICAgIyBCYXNpYyBjYXNlcyBm
cm9tIFdlYktpdCBzdHlsZSBndWlkZS4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RydWN0
IERhdGE7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3NpemVfdCBidWZmZXJTaXpl
OycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjbGFzcyBIVE1MRG9jdW1lbnQ7Jywg
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1N0cmluZyBtaW1lVHlwZSgpOycsICcnKQor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzaXplX3QgYnVmZmVyX3NpemU7JywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAnYnVmZmVyX3NpemUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQorICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdzaG9ydCBtX2xlbmd0aDsnLCAnJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnc2hvcnQgX2xlbmd0aDsnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICdfbGVuZ3RoJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnc2hvcnQgbGVuZ3RoXzsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdsZW5ndGhfJyAr
IG5hbWVfZXJyb3JfbWVzc2FnZSkKKworICAgICAgICAjIFBvaW50ZXJzLCByZWZlcmVuY2VzLCBm
dW5jdGlvbnMsIHRlbXBsYXRlcywgYW5kIGFkamVjdGl2ZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ2NoYXIqIHVuZGVyX3Njb3JlOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Vu
ZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnY29uc3QgaW50IFVOREVSX1NDT1JFOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1VO
REVSX1NDT1JFJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnc3RhdGljIGlubGluZSBjb25zdCBjaGFyIGNvbnN0JiBjb25zdCB1bmRlcl9zY29yZTsnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3Nh
Z2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dlYkNvcmU6OlJlbmRlck9iamVjdCogdW5k
ZXJfc2NvcmU7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFt
ZV9lcnJvcl9tZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgZnVuY19uYW1l
KCk7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZnVuY19uYW1lJyArIG5hbWVfZXJyb3Jf
bWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmUHRyPFJlbmRlck9iamVjdCo+
IHVuZGVyX3Njb3JlOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyAr
IG5hbWVfZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnV1RGOjpWZWN0
b3I8V1RGOjpSZWZQdHI8Y29uc3QgUmVuZGVyT2JqZWN0KiBjb25zdD4gPiB1bmRlcl9zY29yZTsn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21l
c3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCB1bmRlcl9zY29yZVtdOycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2Fn
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RydWN0IGRpcmVudCogdW5kZXJfc2NvcmU7
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9t
ZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdsb25nIHVuZGVyX3Njb3JlOycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2Fn
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnbG9uZyBsb25nIHVuZGVyX3Njb3JlOycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2Fn
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnbG9uZyBkb3VibGUgdW5kZXJfc2NvcmU7JywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNz
YWdlKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdsb25nIGxvbmcgaW50IHVuZGVyX3Njb3Jl
OycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3Jf
bWVzc2FnZSkKKworICAgICAgICAjIERlY2xhcmF0aW9ucyBpbiBjb250cm9sIHN0YXRlbWVudC4K
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaWYgKGludCB1bmRlcl9zY29yZSA9IDQyKSB7JywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNz
YWdlKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdlbHNlIGlmIChpbnQgdW5kZXJfc2NvcmUg
PSA0MikgeycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVf
ZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChpbnQgdW5kZXJf
c2NvcmUgPSA0MjsgY29uZDsgaSsrKSB7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndW5k
ZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydF9saW50
KCd3aGlsZSAoZm9vICYgdW5kZXJfc2NvcmUgPSBiYXIpIHsnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ2ZvciAoZm9vICogdW5kZXJfc2NvcmUgPSBwOyBjb25kOyBpKyspIHsnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3Nh
Z2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoZm9vICogdW5kZXJfc2NvcmU7IGNv
bmQ7IGkrKykgeycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5h
bWVfZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnd2hpbGUgKGZvbyAm
IHZhbHVlX2luX3RoaXJkcGFydHlfbGlicmFyeSkgeycsICcnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCd3aGlsZSAoZm9vICogdmFsdWVfaW5fdGhpcmRwYXJ0eV9saWJyYXJ5KSB7JywgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChtbGkgJiYgU19PSyA9PSBtbGktPmZvbygp
KSB7JywgJycpCisKKyAgICAgICAgIyBNb3JlIG1lbWJlciB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9u
cy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IFNvbWVDbGFzczo6c192YWxpZE5hbWUn
LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IG1fdW5kZXJfc2NvcmU7JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAnbV91bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3Nh
Z2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBTb21lQ2xhc3M6OnNfdW5kZXJfc2Nv
cmUgPSAwOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1NvbWVDbGFzczo6c191bmRlcl9z
Y29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lu
dCBTb21lQ2xhc3M6OnVuZGVyX3Njb3JlID0gMDsnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICdTb21lQ2xhc3M6OnVuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKKworICAgICAg
ICAjIE90aGVyIHN0YXRlbWVudHMuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3JldHVybiBJ
TlRfTUFYOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdyZXR1cm5fdCB1bmRlcl9z
Y29yZTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vy
cm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2dvdG8gdW5kZXJfc2NvcmU7
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9t
ZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdkZWxldGUgc3RhdGljX2Nhc3Q8Rm9v
Kj4ocCk7JywgJycpCisKKyAgICAgICAgIyBNdWx0aXBsZSB2YXJpYWJsZXMgaW4gb25lIGxpbmUu
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgbXlGdW5jdGlvbihpbnQgdmFyaWFibGUx
LCBpbnQgYW5vdGhlcl92YXJpYWJsZSk7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnYW5v
dGhlcl92YXJpYWJsZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ2ludCB2YXJpYWJsZTEsIGFub3RoZXJfdmFyaWFibGU7JywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAnYW5vdGhlcl92YXJpYWJsZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBmaXJzdF92YXJpYWJsZSwgc2Vjb25kVmFyaWFibGU7
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3RfdmFyaWFibGUnICsgbmFtZV9lcnJv
cl9tZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIG15X2Z1bmN0aW9uKGlu
dCB2YXJpYWJsZV8xLCBpbnQgdmFyaWFibGVfMik7JywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBbJ215X2Z1bmN0aW9uJyArIG5hbWVfZXJyb3JfbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3ZhcmlhYmxlXzEnICsgbmFtZV9lcnJvcl9tZXNzYWdlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAndmFyaWFibGVfMicgKyBuYW1lX2Vycm9yX21lc3NhZ2VdKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdmb3IgKGludCB2YXJpYWJsZV8xLCB2YXJpYWJsZV8yOzspIHsn
LAorICAgICAgICAgICAgICAgICAgICAgICAgIFsndmFyaWFibGVfMScgKyBuYW1lX2Vycm9yX21l
c3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZV8yJyArIG5hbWVfZXJy
b3JfbWVzc2FnZV0pCisKKyAgICAgICAgIyBUaGVyZSBpcyBhbiBleGNlcHRpb24gZm9yIG9wIGNv
ZGUgZnVuY3Rpb25zIGJ1dCBvbmx5IGluIHRoZSBKYXZhU2NyaXB0Q29yZSBkaXJlY3RvcnkuCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgdGhpc19vcF9jb2RlKGludCB2YXIxLCBpbnQg
dmFyMiknLCAnJywgJ0phdmFTY3JpcHRDb3JlL2Zvby5jcHAnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCd2b2lkIHRoaXNfb3BfY29kZShpbnQgdmFyMSwgaW50IHZhcjIpJywgJ3RoaXNfb3Bf
Y29kZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisKKyAgICAgICAgIyBHT2JqZWN0IHJlcXVpcmVz
IGNlcnRhaW4gbWFnaWNhbCBuYW1lcyBpbiBjbGFzcyBkZWNsYXJhdGlvbnMuCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgd2Via2l0X2RvbV9vYmplY3RfaW5pdCgpOycsICcnKQorICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIHdlYmtpdF9kb21fb2JqZWN0X2NsYXNzX2luaXQo
KTsnLCAnJykKKworICAgICAgICAjIFRoZSBHVEsrIEFQSXMgdXNlIEdUSysgbmFtaW5nIHN0eWxl
LCB3aGljaCBpbmNsdWRlcyBsb3dlci1jYXNlZCwgXy1zZXBhcmF0ZWQgdmFsdWVzLgorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCd2b2lkIHRoaXNfaXNfYV9ndGtfc3R5bGVfbmFtZShpbnQgdmFy
MSwgaW50IHZhcjIpJywgJycsICdXZWJLaXQvZ3RrL3dlYmtpdC9mb28uY3BwJykKKworICAgICAg
ICAjIFRoZXJlIGlzIGFuIGV4Y2VwdGlvbiBmb3Igc29tZSB1bml0IHRlc3RzIHRoYXQgYmVnaW4g
d2l0aCAidHN0XyIuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgdHN0X1FXZWJGcmFt
ZTo6YXJyYXlPYmplY3RFbnVtZXJhYmxlKGludCB2YXIxLCBpbnQgdmFyMiknLCAnJykKKworICAg
ICAgICAjIFRoZSBRdCBBUEkgdXNlcyBuYW1lcyB0aGF0IGJlZ2luIHdpdGggInF0XyIuCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgUVRGcmFtZTo6cXRfZHJ0X2lzX2F3ZXNvbWUoaW50
IHZhcjEsIGludCB2YXIyKScsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIHF0
X2RydF9pc19hd2Vzb21lKGludCB2YXIxLCBpbnQgdmFyMik7JywgJycpCisKKyAgICAgICAgIyBj
b25zdF9pdGVyYXRvciBpcyBhbGxvd2VkIGFzIHdlbGwuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3R5cGVkZWYgVmVjdG9yVHlwZTo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7Jywg
JycpCisKKworICAgIGRlZiB0ZXN0X2NvbW1lbnRzKHNlbGYpOgorICAgICAgICAjIEEgY29tbWVu
dCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBpcyBvay4KKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnLy8gY29tbWVudCcsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICAgLy8g
Y29tbWVudCcsICcnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ30gIC8vIG5hbWVzcGFj
ZSBXZWJDb3JlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnT25lIHNwYWNlIGJlZm9yZSBl
bmQgb2YgbGluZSBjb21tZW50cycKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVz
cGFjZS9jb21tZW50c10gWzVdJykKKworICAgIGRlZiB0ZXN0X290aGVyKHNlbGYpOgorICAgICAg
ICAjIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICAgICAgcGFzcworCisKK2NsYXNzIENwcFBy
b2Nlc3NvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgQ3BwUHJvY2Vz
c29yIGNsYXNzLiIiIgorCisgICAgZGVmIG1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKHNlbGYpOgor
ICAgICAgICBwYXNzCisKKyAgICBkZWYgX3Byb2Nlc3NvcihzZWxmKToKKyAgICAgICAgcmV0dXJu
IENwcFByb2Nlc3NvcigiZm9vIiwgImgiLCBzZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yLCAz
KQorCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBfX2luaXRfXyBj
b25zdHJ1Y3Rvci4iIiIKKyAgICAgICAgcHJvY2Vzc29yID0gc2VsZi5fcHJvY2Vzc29yKCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmZpbGVfZXh0ZW5zaW9uLCAiaCIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5maWxlX3BhdGgsICJmb28iKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuaGFuZGxlX3N0eWxlX2Vycm9yLCBzZWxm
Lm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9j
ZXNzb3IudmVyYm9zaXR5LCAzKQorCisgICAgZGVmIHRlc3RfZXEoc2VsZik6CisgICAgICAgICIi
IlRlc3QgX19lcV9fIGVxdWFsaXR5IGZ1bmN0aW9uLiIiIgorICAgICAgICBwcm9jZXNzb3IxID0g
c2VsZi5fcHJvY2Vzc29yKCkKKyAgICAgICAgcHJvY2Vzc29yMiA9IHNlbGYuX3Byb2Nlc3Nvcigp
CisKKyAgICAgICAgIyA9PSBjYWxscyBfX2VxX18uCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShw
cm9jZXNzb3IxID09IHByb2Nlc3NvcjIpCisKKyAgICAgICAgZGVmIG1vY2tfaGFuZGxlX3N0eWxl
X2Vycm9yMihzZWxmKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIFZlcmlmeSB0aGF0
IGEgZGlmZmVyZW5jZSBpbiBhbnkgYXJndW1lbnQgY2F1c2UgZXF1YWxpdHkgdG8gZmFpbC4KKyAg
ICAgICAgcHJvY2Vzc29yID0gQ3BwUHJvY2Vzc29yKCJmb28iLCAiaCIsIHNlbGYubW9ja19oYW5k
bGVfc3R5bGVfZXJyb3IsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocHJvY2Vzc29yID09
IENwcFByb2Nlc3NvcigiYmFyIiwgImgiLCBzZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yLCAz
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwcm9jZXNzb3IgPT0gQ3BwUHJvY2Vzc29yKCJm
b28iLCAiYyIsIHNlbGYubW9ja19oYW5kbGVfc3R5bGVfZXJyb3IsIDMpKQorICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKHByb2Nlc3NvciA9PSBDcHBQcm9jZXNzb3IoImZvbyIsICJoIiwgbW9ja19o
YW5kbGVfc3R5bGVfZXJyb3IyLCAzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwcm9jZXNz
b3IgPT0gQ3BwUHJvY2Vzc29yKCJmb28iLCAiaCIsIHNlbGYubW9ja19oYW5kbGVfc3R5bGVfZXJy
b3IsIDQpKQorCisgICAgZGVmIHRlc3RfbmUoc2VsZik6CisgICAgICAgICIiIlRlc3QgX19uZV9f
IGluZXF1YWxpdHkgZnVuY3Rpb24uIiIiCisgICAgICAgIHByb2Nlc3NvcjEgPSBzZWxmLl9wcm9j
ZXNzb3IoKQorICAgICAgICBwcm9jZXNzb3IyID0gc2VsZi5fcHJvY2Vzc29yKCkKKworICAgICAg
ICAjICE9IGNhbGxzIF9fbmVfXy4KKyAgICAgICAgIyBCeSBkZWZhdWx0LCBfX25lX18gYWx3YXlz
IHJldHVybnMgdHJ1ZSBvbiBkaWZmZXJlbnQgb2JqZWN0cy4KKyAgICAgICAgIyBUaHVzLCBqdXN0
IGNoZWNrIHRoZSBkaXN0aW5ndWlzaGluZyBjYXNlIHRvIHZlcmlmeSB0aGF0IHRoZQorICAgICAg
ICAjIGNvZGUgZGVmaW5lcyBfX25lX18uCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocHJvY2Vz
c29yMSAhPSBwcm9jZXNzb3IyKQorCisKK2RlZiB0ZWFyRG93bigpOgorICAgICIiIkEgZ2xvYmFs
IGNoZWNrIHRvIG1ha2Ugc3VyZSBhbGwgZXJyb3ItY2F0ZWdvcmllcyBoYXZlIGJlZW4gdGVzdGVk
LgorCisgICAgVGhlIG1haW4gdGVhckRvd24oKSByb3V0aW5lIGlzIHRoZSBvbmx5IGNvZGUgd2Ug
Y2FuIGd1YXJhbnRlZSB3aWxsIGJlCisgICAgcnVuIGFmdGVyIGFsbCBvdGhlciB0ZXN0cyBoYXZl
IGJlZW4gZXhlY3V0ZWQuCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICBpZiBfcnVuX3Zlcmlm
eWFsbGNhdGVnb3JpZXNzZWVuOgorICAgICAgICAgICAgRXJyb3JDb2xsZWN0b3IoTm9uZSkudmVy
aWZ5X2FsbF9jYXRlZ29yaWVzX2FyZV9zZWVuKCkKKyAgICBleGNlcHQgTmFtZUVycm9yOgorICAg
ICAgICAjIElmIG5vYm9keSBzZXQgdGhlIGdsb2JhbCBfcnVuX3ZlcmlmeWFsbGNhdGVnb3JpZXNz
ZWVuLCB0aGVuCisgICAgICAgICMgd2UgYXNzdW1lIHdlIHNob3VsZG4ndCBydW4gdGhlIHRlc3QK
KyAgICAgICAgcGFzcworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCBz
eXMKKyAgICAjIFdlIGRvbid0IHdhbnQgdG8gcnVuIHRoZSB2ZXJpZnlfYWxsX2NhdGVnb3JpZXNf
YXJlX3NlZW4oKSB0ZXN0IHVubGVzcworICAgICMgd2UncmUgcnVubmluZyB0aGUgZnVsbCB0ZXN0
IHN1aXRlOiBpZiB3ZSBvbmx5IHJ1biBvbmUgdGVzdCwKKyAgICAjIG9idmlvdXNseSB3ZSdyZSBu
b3QgZ29pbmcgdG8gc2VlIGFsbCB0aGUgZXJyb3IgY2F0ZWdvcmllcy4gIFNvIHdlCisgICAgIyBv
bmx5IHJ1biB2ZXJpZnlfYWxsX2NhdGVnb3JpZXNfYXJlX3NlZW4oKSB3aGVuIG5vIGNvbW1hbmRs
aW5lIGZsYWdzCisgICAgIyBhcmUgcGFzc2VkIGluLgorICAgIGdsb2JhbCBfcnVuX3ZlcmlmeWFs
bGNhdGVnb3JpZXNzZWVuCisgICAgX3J1bl92ZXJpZnlhbGxjYXRlZ29yaWVzc2VlbiA9IChsZW4o
c3lzLmFyZ3YpID09IDEpCisKKyAgICB1bml0dGVzdC5tYWluKCkKSW5kZXg6IFdlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHBfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2Nw
cF91bml0dGVzdC5weQkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHBfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDEzICs0MSwxMyBAQCBpbXBvcnQgb3MKIGltcG9ydCByYW5kb20KIGltcG9ydCByZQogaW1wb3J0
IHVuaXR0ZXN0Ci1pbXBvcnQgY3BwX3N0eWxlCi1mcm9tIGNwcF9zdHlsZSBpbXBvcnQgQ3BwUHJv
Y2Vzc29yCitpbXBvcnQgY3BwIGFzIGNwcF9zdHlsZQorZnJvbSBjcHAgaW1wb3J0IENwcFByb2Nl
c3NvcgogCiAjIEZJWE1FOiBSZW1vdmUgdGhlIG5lZWQgdG8gaW1wb3J0IGFueXRoaW5nIGZyb20g
Y2hlY2tlci4gU2VlIHRoZQogIyAgICAgICAgRklYTUUgbm90ZXMgbmVhciB0aGUgU1RZTEVfQ0FU
RUdPUklFUyBkZWZpbml0aW9uIGZvciBhCiAjICAgICAgICBzdWdnZXN0aW9uIG9uIGhvdyB0byBi
ZXN0IGRvIHRoaXMuCi1mcm9tIGNoZWNrZXIgaW1wb3J0IFNUWUxFX0NBVEVHT1JJRVMKK2Zyb20g
Li4gY2hlY2tlciBpbXBvcnQgU1RZTEVfQ0FURUdPUklFUwogCiAjIFRoaXMgY2xhc3Mgd29ya3Mg
YXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCByZXBsYWNlcyBjcHBfc3R5bGUuRXJyb3IKICMgZnVu
Y3Rpb24gZm9yIHRoZSB1bml0IHRlc3RzLiAgV2UgYWxzbyB2ZXJpZnkgZWFjaCBjYXRlZ29yeSB3
ZSBzZWUKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29y
cy90ZXh0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvcHJvY2Vzc29ycy90ZXh0LnB5CShyZXZpc2lvbiA1Mzg0MSkJKGZyb20gV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS90ZXh0X3N0eWxlLnB5OjUzODQxKQorKysgV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL3RleHQucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRvbmVrIChj
amVyZG9uZWtAd2Via2l0Lm9yZykKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMg
bWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIkNoZWNrcyBXZWJL
aXQgc3R5bGUgZm9yIHRleHQgZmlsZXMuIiIiCisKKworY2xhc3MgVGV4dFByb2Nlc3NvcihvYmpl
Y3QpOgorCisgICAgIiIiUHJvY2Vzc2VzIHRleHQgbGluZXMgZm9yIGNoZWNraW5nIHN0eWxlLiIi
IgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9y
KToKKyAgICAgICAgc2VsZi5maWxlX3BhdGggPSBmaWxlX3BhdGgKKyAgICAgICAgc2VsZi5oYW5k
bGVfc3R5bGVfZXJyb3IgPSBoYW5kbGVfc3R5bGVfZXJyb3IKKworICAgIGRlZiBwcm9jZXNzKHNl
bGYsIGxpbmVzKToKKyAgICAgICAgbGluZXMgPSAoWyIvLyBhZGp1c3QgbGluZSBudW1iZXJzIHRv
IG1ha2UgdGhlIGZpcnN0IGxpbmUgMS4iXSArIGxpbmVzKQorCisgICAgICAgICMgRklYTUU6IHNo
YXJlIHdpdGggY3BwX3N0eWxlLgorICAgICAgICBmb3IgbGluZV9udW1iZXIsIGxpbmUgaW4gZW51
bWVyYXRlKGxpbmVzKToKKyAgICAgICAgICAgIGlmICJcdCIgaW4gbGluZToKKyAgICAgICAgICAg
ICAgICBzZWxmLmhhbmRsZV9zdHlsZV9lcnJvcihsaW5lX251bWJlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAid2hpdGVzcGFjZS90YWIiLCA1LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMaW5lIGNvbnRhaW5zIHRhYiBjaGFyYWN0
ZXIuIikKKworCisjIEZJWE1FOiBSZW1vdmUgdGhpcyBmdW5jdGlvbiAocmVxdWlyZXMgcmVmYWN0
b3JpbmcgdW5pdCB0ZXN0cykuCitkZWYgcHJvY2Vzc19maWxlX2RhdGEoZmlsZW5hbWUsIGxpbmVz
LCBlcnJvcik6CisgICAgcHJvY2Vzc29yID0gVGV4dFByb2Nlc3NvcihmaWxlbmFtZSwgZXJyb3Ip
CisgICAgcHJvY2Vzc29yLnByb2Nlc3MobGluZXMpCisKSW5kZXg6IFdlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy90ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy90ZXh0X3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiA1Mzg0MSkJKGZyb20gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS90ZXh0X3N0eWxlX3VuaXR0ZXN0LnB5OjUzODQxKQorKysgV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL3RleHRfdW5pdHRlc3QucHkJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw5NCBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMgQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisiIiJVbml0IHRlc3QgZm9yIHRleHRfc3R5bGUucHkuIiIiCisKK2ltcG9ydCB1bml0
dGVzdAorCitpbXBvcnQgdGV4dF9zdHlsZQorZnJvbSB0ZXh0X3N0eWxlIGltcG9ydCBUZXh0UHJv
Y2Vzc29yCisKK2NsYXNzIFRleHRTdHlsZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAg
ICAiIiJUZXN0Q2FzZSBmb3IgdGV4dF9zdHlsZS5weSIiIgorCisgICAgZGVmIGFzc2VydE5vRXJy
b3Ioc2VsZiwgbGluZXMpOgorICAgICAgICAiIiJBc3NlcnRzIHRoYXQgdGhlIHNwZWNpZmllZCBs
aW5lcyBoYXMgbm8gZXJyb3JzLiIiIgorICAgICAgICBzZWxmLmhhZF9lcnJvciA9IEZhbHNlCisK
KyAgICAgICAgZGVmIGVycm9yX2Zvcl90ZXN0KGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29uZmlk
ZW5jZSwgbWVzc2FnZSk6CisgICAgICAgICAgICAiIiJSZWNvcmRzIGlmIGFuIGVycm9yIG9jY3Vy
cy4iIiIKKyAgICAgICAgICAgIHNlbGYuaGFkX2Vycm9yID0gVHJ1ZQorCisgICAgICAgIHRleHRf
c3R5bGUucHJvY2Vzc19maWxlX2RhdGEoJycsIGxpbmVzLCBlcnJvcl9mb3JfdGVzdCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRfKG5vdCBzZWxmLmhhZF9lcnJvciwgJyVzIHNob3VsZCBub3QgaGF2ZSBh
bnkgZXJyb3JzLicgJSBsaW5lcykKKworICAgIGRlZiBhc3NlcnRFcnJvcihzZWxmLCBsaW5lcywg
ZXhwZWN0ZWRfbGluZV9udW1iZXIpOgorICAgICAgICAiIiJBc3NlcnRzIHRoYXQgdGhlIHNwZWNp
ZmllZCBsaW5lcyBoYXMgYW4gZXJyb3IuIiIiCisgICAgICAgIHNlbGYuaGFkX2Vycm9yID0gRmFs
c2UKKworICAgICAgICBkZWYgZXJyb3JfZm9yX3Rlc3QobGluZV9udW1iZXIsIGNhdGVnb3J5LCBj
b25maWRlbmNlLCBtZXNzYWdlKToKKyAgICAgICAgICAgICIiIkNoZWNrcyBpZiB0aGUgZXhwZWN0
ZWQgZXJyb3Igb2NjdXJzLiIiIgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0
ZWRfbGluZV9udW1iZXIsIGxpbmVfbnVtYmVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoJ3doaXRlc3BhY2UvdGFiJywgY2F0ZWdvcnkpCisgICAgICAgICAgICBzZWxmLmhhZF9lcnJv
ciA9IFRydWUKKworICAgICAgICB0ZXh0X3N0eWxlLnByb2Nlc3NfZmlsZV9kYXRhKCcnLCBsaW5l
cywgZXJyb3JfZm9yX3Rlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0XyhzZWxmLmhhZF9lcnJvciwg
JyVzIHNob3VsZCBoYXZlIGFuIGVycm9yIFt3aGl0ZXNwYWNlL3RhYl0uJyAlIGxpbmVzKQorCisK
KyAgICBkZWYgdGVzdF9ub19lcnJvcihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZm9yIG5vIGVy
cm9yIGNhc2VzLiIiIgorICAgICAgICBzZWxmLmFzc2VydE5vRXJyb3IoWycnXSkKKyAgICAgICAg
c2VsZi5hc3NlcnROb0Vycm9yKFsnYWJjIGRlZicsICdnZ2cnXSkKKworCisgICAgZGVmIHRlc3Rf
ZXJyb3Ioc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZvciBlcnJvciBjYXNlcy4iIiIKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcnJvcihbJzIwMDktMTItMTZcdEtlbnQgVGFtdXJhXHQ8dGtlbnRAY2hy
b21pdW0ub3JnPiddLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVycm9yKFsnMjAwOS0xMi0xNiBL
ZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnXHRSZXZpZXdlZCBieSBOT0JPRFku
J10sIDMpCisKKworY2xhc3MgVGV4dFByb2Nlc3NvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgor
CisgICAgIiIiVGVzdHMgVGV4dFByb2Nlc3NvciBjbGFzcy4iIiIKKworICAgIGRlZiBtb2NrX2hh
bmRsZV9zdHlsZV9lcnJvcihzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfaW5p
dChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBfX2luaXRfXyBjb25zdHJ1Y3Rvci4iIiIKKyAgICAg
ICAgcHJvY2Vzc29yID0gVGV4dFByb2Nlc3NvcigiZm9vLnR4dCIsIHNlbGYubW9ja19oYW5kbGVf
c3R5bGVfZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5maWxlX3Bh
dGgsICJmb28udHh0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmhhbmRs
ZV9zdHlsZV9lcnJvciwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcikKKworCitpZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpJbmRleDogV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL3RleHRfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3Jz
L3RleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvdGV4dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtMzEsOCArMzEsOCBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIAotaW1wb3J0IHRleHRfc3R5bGUK
LWZyb20gdGV4dF9zdHlsZSBpbXBvcnQgVGV4dFByb2Nlc3NvcgoraW1wb3J0IHRleHQgYXMgdGV4
dF9zdHlsZQorZnJvbSB0ZXh0IGltcG9ydCBUZXh0UHJvY2Vzc29yCiAKIGNsYXNzIFRleHRTdHls
ZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0Q2FzZSBmb3IgdGV4dF9z
dHlsZS5weSIiIgo=
</data>
<flag name="review"
          id="29842"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="29843"
          type_id="3"
          status="-"
          setter="cjerdonek"
    />
          </attachment>
      

    </bug>

</bugzilla>