<?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>74659</bug_id>
          
          <creation_ts>2011-12-15 15:56:54 -0800</creation_ts>
          <short_desc>bencher script should support remote benchmarking on platforms that don&apos;t have ruby</short_desc>
          <delta_ts>2011-12-21 14:35:40 -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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>522286</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-15 15:56:54 -0800</bug_when>
    <thetext>Patch forthcoming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522293</commentid>
    <comment_count>1</comment_count>
      <attachid>119512</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-15 16:02:17 -0800</bug_when>
    <thetext>Created attachment 119512
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522525</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-15 21:56:45 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/103024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525600</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-21 14:30:38 -0800</bug_when>
    <thetext>Attachment 119512 was posted by a committer and has review+, assigning to Filip Pizlo for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525621</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-21 14:35:40 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/103024</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119512</attachid>
            <date>2011-12-15 16:02:17 -0800</date>
            <delta_ts>2011-12-15 21:49:55 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>payloadbencher_patch_1.diff</filename>
            <type>text/plain</type>
            <size>79555</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwMjk5MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM0IEBACisyMDExLTEyLTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgYmVuY2hlciBzY3JpcHQgc2hvdWxkIHN1cHBvcnQgcmVtb3RlIGJlbmNobWFya2lu
ZyBvbiBwbGF0Zm9ybXMgdGhhdCBkb24ndCBoYXZlIHJ1YnkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NjU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGRlZCB0aGUgYWJpbGl0eSB0byBo
YXZlIGJlbmNoZXIgZ2VuZXJhdGUgYSBiZW5jaG1hcmtpbmcgcGxheWxvYWQgdGhhdCBjb25zaXN0
cyBvZgorICAgICAgICBjb3BpZXMgb2YgYWxsIG9mIHRoZSBiZW5jaG1hcmtzLCBvcHRpb25hbGx5
IGNvcGllcyBvZiBhbGwgb2YgdGhlIGZyYW1ld29ya3MgYW5kCisgICAgICAgIGJpbmFyaWVzIHRv
IHJ1biBhbGwgb2YgdGhlIFZNcywgYW5kIGEgc2ggc2NyaXB0IHRoYXQgcnVucyB0aGUgYmVuY2ht
YXJrcyBpbiByYW5kb20KKyAgICAgICAgb3JkZXIsIHdoaWNoIHRoZW4gc3BpdHMgb3V0IGEgcmF3
IHJlc3VsdHMgZmlsZSB0aGF0IGJlbmNoZXIgY2FuIHBhcnNlLgorICAgICAgICAKKyAgICAgICAg
SW4gbm9ybWFsIG9wZXJhdGluZyBtb2RlLCB5b3UgbmV2ZXIgc2VlIHRoaXMsIGFzIGl0IGp1c3Qg
Z2VuZXJhdGVzIHRoZSBwYXlsb2FkIGFuZAorICAgICAgICBzY3JpcHQgaW50ZXJuYWxseSwgcnVu
cyBpdCwgcGFyc2VzIHRoZSByZXN1bHRzLCBhbmQgc3BpdHMgdGhlbSBvdXQuCisgICAgICAgIAor
ICAgICAgICBUaGUgLS1yZW1vdGUgbW9kZSBoYXMgYmVlbiBjaGFuZ2VkIHRvIHVzZSB0aGlzIHN0
eWxlLCBzbyBhbnkgcmVtb3RlIGhvc3QgdGhhdCBoYXMKKyAgICAgICAgc3NoZCwgcGFzc3dvcmRs
ZXNzIGxvZ2luIHN1cHBvcnQsIGEgfi8uYmVuY2hlciBmaWxlIHRoYXQgcG9pbnRzIHRvIGEgInRl
bXBQYXRoIiwgYW5kCisgICAgICAgIGEgc2gtY29tcGF0aWJsZSBzaGVsbCBjYW4gYmUgdXNlZCBm
b3IgcmVtb3RlIGJlbmNobWFya2luZy4KKyAgICAgICAgCisgICAgICAgIFRoZSBmZWF0dXJlIHRv
IGluY2x1ZGUgVk1zIGluIHRoZSBiZW5jaG1hcmtpbmcgcGF5bG9hZCBpcyBieSBkZWZhdWx0IG9u
bHkgYWN0aXZhdGVkCisgICAgICAgIHdoZW4gdXNpbmcgLS1yZW1vdGUsIGJ1dCBpdCBjYW4gYWxz
byBiZSBhY3RpdmF0ZWQgd2hlbiBkb2luZyBsb2NhbCBiZW5jaG1hcmtpbmc7IHRoZQorICAgICAg
ICBiZW5lZml0IGlzIHRoYXQgeW91IHJlbW92ZSBhbnkgcGF0aG5hbWUtcmVsYXRlZCBwZXJmb3Jt
YW5jZSBwYXRob2xvZ2llcy4gQWxsIFZNcworICAgICAgICBiZWNvbWUgZXF1YWwgYmVjYXVzZSB0
aGV5IGFyZSBhbGwgbG9jYXRlZCBpbgorICAgICAgICAvcGF0aC90by9iZW5jaGVyL2RpcmVjdG9y
eS90ZW1wL2JlbmNoZGF0YS92bU4gd2hlcmUgTiBpcyB0aGUgY29uZmlndXJhdGlvbiBudW1iZXIK
KyAgICAgICAgKHVzdWFsbHkgMCBvciAxKS4KKyAgICAgICAgCisgICAgICAgIEFsc28gZml4ZWQg
YnVncyBpbiB0aGUgRHVtcFJlbmRlclRyZWUgc3VwcG9ydC4gSXQncyBub3cgcG9zc2libGUgdG8g
cnVuIGFsbCBiZW5jaG1hcmtzCisgICAgICAgIHRocm91Z2ggRHVtcFJlbmRlclRyZWUuIFRoaXMg
aXMgb25seSBhIGJpdCBzbG93ZXIgdGhhbiBydW5uaW5nIGluIGpzYy4KKworICAgICAgICAqIFNj
cmlwdHMvYmVuY2hlcjoKKwogMjAxMS0xMi0xNSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gcGFzcyAtLWRlbGV0ZV91bnZlcnNpb25lZF90cmVl
cyB0byBnY2xpZW50IG9uIHRoZSBib3RzCkluZGV4OiBUb29scy9TY3JpcHRzL2JlbmNoZXIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9iZW5jaGVyCShyZXZpc2lvbiAxMDI3MjIpCisrKyBU
b29scy9TY3JpcHRzL2JlbmNoZXIJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAgU1VO
U1BJREVSX1BBVEggPSBDT05GSUdVUkFUSU9OWyJzdW5TcGlkZQogVjhfUEFUSCA9IENPTkZJR1VS
QVRJT05bInY4UGF0aCJdCiBLUkFLRU5fUEFUSCA9IENPTkZJR1VSQVRJT05bImtyYWtlblBhdGgi
XQogVEVNUF9QQVRIID0gQ09ORklHVVJBVElPTlsidGVtcFBhdGgiXQorQkVOQ0hfREFUQV9QQVRI
ID0gVEVNUF9QQVRIICsgIi9iZW5jaGRhdGEiCiAKIElCUl9MT09LVVA9WzAuMDA2MTU1ODMsIDAu
MDk3NSwgMC4yMjg1MiwgMC4zNDE2MjgsIDAuNDMwNzQxLCAwLjUwMDUyNiwgMC41NTU5MzMsIAog
ICAgICAgICAgICAgMC42MDA3MDYsIDAuNjM3NTEzLCAwLjY2ODI0NCwgMC42OTQyNTQsIDAuNzE2
NTM3LCAwLjczNTgyNywgMC43NTI2ODQsIApAQCAtMjE2LDE2ICsyMTcsMjAgQEAgJGluY2x1ZGVL
cmFrZW49dHJ1ZQogJG1lYXN1cmVHQz1mYWxzZQogJGJlbmNobWFya1BhdHRlcm49bmlsCiAkdmVy
Ym9zaXR5PTAKLSRpbm5lck1vZGU9OnJlbG9hZAotJHRpbWVNb2RlPTphdXRvCi0ka2VlcEZpbGVz
PWZhbHNlCiskdGltZU1vZGU9OnByZWNpc2VUaW1lCiAkZm9yY2VWTUtpbmQ9bmlsCiAkYnJpZWY9
ZmFsc2UKICRzaWxlbnQ9ZmFsc2UKICRyZW1vdGVIb3N0cz1bXQorJGFsc29Mb2NhbD1mYWxzZQog
JHNzaE9wdGlvbnM9W10KLSRzbGF2ZT1mYWxzZQogJHZtcyA9IFtdCiskbmVlZFRvQ29weVZNcyA9
IGZhbHNlCiskZG9udENvcHlWTXMgPSBmYWxzZQorCiskcHJlcGFyZSA9IHRydWUKKyRydW4gPSB0
cnVlCiskYW5hbHl6ZSA9IFtdCiAKICMgSGVscGZ1bCBmdW5jdGlvbnMgYW5kIGNsYXNzZXMKIApA
QCAtMjY3LDExICsyNzIsMTQgQEAgZGVmIHVzYWdlCiAgIHB1dHMgIi0td2FybXVwIDxuPiAgICAg
ICAgIFNldCB0aGUgbnVtYmVyIG9mIHdhcm0tdXAgcnVucyBwZXIgaW52b2NhdGlvbi4gIERlZmF1
bHQiCiAgIHB1dHMgIiAgICAgICAgICAgICAgICAgICAgIGlzICN7JHdhcm11cH0uIgogICBwdXRz
ICItLXRpbWluZy1tb2RlICAgICAgICBTZXQgdGhlIHdheSB0aGF0IGJlbmNoZXIgbWVhc3VyZXMg
dGltZS4gIFBvc3NpYmxlIHZhbHVlcyIKLSAgcHV0cyAiICAgICAgICAgICAgICAgICAgICAgYXJl
ICdwcmVjaXNlVGltZScsICdkYXRlJywgYW5kICdhdXRvJy4gIERlZmF1bHQgaXMiCi0gIHB1dHMg
IiAgICAgICAgICAgICAgICAgICAgICdhdXRvJywgd2hpY2ggYXV0b21hdGljYWxseSBkZXRlY3Rz
IHRoZSBiZXN0IHdheS4iCisgIHB1dHMgIiAgICAgICAgICAgICAgICAgICAgIGFyZSAncHJlY2lz
ZVRpbWUnIGFuZCAnZGF0ZScuICBEZWZhdWx0IGlzICdwcmVjaXNlVGltZScuIgogICBwdXRzICIt
LWZvcmNlLXZtLWtpbmQgICAgICBUdXJuIG9mZiBhdXRvLWRldGVjdGlvbiBvZiBWTSBraW5kLCBh
bmQgYXNzdW1lIHRoYXQgaXQgaXMiCiAgIHB1dHMgIiAgICAgICAgICAgICAgICAgICAgIHRoZSBv
bmUgc3BlY2lmaWVkLiAgVmFsaWQgYXJndW1lbnRzIGFyZSAnanNjJyBvciIKICAgcHV0cyAiICAg
ICAgICAgICAgICAgICAgICAgJ0R1bXBSZW5kZXJUcmVlJy4iCisgIHB1dHMgIi0tZm9yY2Utdm0t
Y29weSAgICAgIEZvcmNlIFZNIGJ1aWxkcyB0byBiZSBjb3BpZWQgdG8gYmVuY2hlcidzIHdvcmtp
bmcgZGlyZWN0b3J5LiIKKyAgcHV0cyAiICAgICAgICAgICAgICAgICAgICAgVGhpcyBtYXkgcmVk
dWNlIHBhdGhvbG9naWVzIHJlc3VsdGluZyBmcm9tIHBhdGggbmFtZXMuIgorICBwdXRzICItLWRv
bnQtY29weS12bXMgICAgICBEb24ndCBjb3B5IFZNcyBldmVuIHdoZW4gZG9pbmcgYSByZW1vdGUg
YmVuY2htYXJraW5nIHJ1bjsiCisgIHB1dHMgIiAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQg
YXNzdW1lIHRoYXQgdGhleSBhcmUgYWxyZWFkeSB0aGVyZS4iCiAgIHB1dHMgIi0tdjgtb25seSAg
ICAgICAgICAgIE9ubHkgcnVuIFY4LiIKICAgcHV0cyAiLS1zdW5zcGlkZXItb25seSAgICAgT25s
eSBydW4gU3VuU3BpZGVyLiIKICAgcHV0cyAiLS1rcmFrZW4tb25seSAgICAgICAgT25seSBydW4g
S3Jha2VuLiIKQEAgLTI4Myw3ICsyOTEsNiBAQCBkZWYgdXNhZ2UKICAgcHV0cyAiICAgICAgICAg
ICAgICAgICAgICAgV29ya3MgYmVzdCB3aXRoIGxhcmdlIHZhbHVlcyBvZiAtLWlubmVyLiAgWW91
IGNhbiBhbHNvIHNheSIKICAgcHV0cyAiICAgICAgICAgICAgICAgICAgICAgLS1tZWFzdXJlLWdj
IDxjb25mPiwgd2hpY2ggdHVybnMgdGhpcyBvbiBmb3Igb25lIgogICBwdXRzICIgICAgICAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uIG9ubHkuIgotICBwdXRzICItLWtlZXAtZmlsZXMgICAg
ICAgICBLZWVwIHRlbXBvcmFyeSBmaWxlcy4gIFVzZWZ1bCBmb3IgZGVidWdnaW5nLiIKICAgcHV0
cyAiLS12ZXJib3NlIG9yIC12ICAgICAgUHJpbnQgbW9yZSBzdHVmZi4iCiAgIHB1dHMgIi0tYnJp
ZWYgICAgICAgICAgICAgIFByaW50IG9ubHkgdGhlIGZpbmFsIHJlc3VsdCBmb3IgZWFjaCBWTS4i
CiAgIHB1dHMgIi0tc2lsZW50ICAgICAgICAgICAgIERvbid0IHByaW50IHByb2dyZXNzLiBUaGlz
IG1pZ2h0IHNsaWdodGx5IHJlZHVjZSBzb21lIgpAQCAtMjk2LDYgKzMwMywxMiBAQCBkZWYgdXNh
Z2UKICAgcHV0cyAiICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBjb3BpZXMgdGhl
IFdlYktpdCByZWxlYXNlIGJ1aWxkcyBvZiB0aGUgVk1zIgogICBwdXRzICIgICAgICAgICAgICAg
ICAgICAgICB5b3Ugc3BlY2lmaWVkIHRvIGFsbCBvZiB0aGUgaG9zdHMuIgogICBwdXRzICItLXNz
aC1vcHRpb25zICAgICAgICBQYXNzIGFkZGl0aW9uYWwgb3B0aW9ucyB0byBTU0guIgorICBwdXRz
ICItLWxvY2FsICAgICAgICAgICAgICBBbHNvIGRvIGEgbG9jYWwgYmVuY2htYXJrIHJ1biBldmVu
IHdoZW4gZG9pbmcgLS1yZW1vdGUuIgorICBwdXRzICItLXByZXBhcmUtb25seSAgICAgICBPbmx5
IHByZXBhcmUgdGhlIGJlbmNoZXIgcnVuc2NyaXB0IChhIHNoZWxsIHNjcmlwdCB0aGF0IgorICBw
dXRzICIgICAgICAgICAgICAgICAgICAgICBpbnZva2VzIHRoZSBWTXMgdG8gcnVuIGJlbmNobWFy
a3MpIGJ1dCBkb24ndCBydW4gaXQuIgorICBwdXRzICItLWFuYWx5emUgICAgICAgICAgICBPbmx5
IHJlYWQgdGhlIG91dHB1dCBvZiB0aGUgcnVuc2NyaXB0IGJ1dCBkb24ndCBkbyBhbnl0aGluZyIK
KyAgcHV0cyAiICAgICAgICAgICAgICAgICAgICAgZWxzZS4gVGhpcyByZXF1aXJlcyBwYXNzaW5n
IHRoZSBzYW1lIGFyZ3VtZW50cyB0byBiZW5jaGVyIgorICBwdXRzICIgICAgICAgICAgICAgICAg
ICAgICB0aGF0IHlvdSBwYXNzZWQgd2hlbiBydW5uaW5nIC0tcHJlcGFyZS1vbmx5LiIKICAgcHV0
cyAiLS1oZWxwIG9yIC1oICAgICAgICAgRGlzcGxheSB0aGlzIG1lc3NhZ2UuIgogICBwdXRzCiAg
IHB1dHMgIkV4YW1wbGU6IgpAQCAtNDA2LDExICs0MTksMTUgQEAgY2xhc3MgTm9DaGFuZ2UKICAg
ICAiICIKICAgZW5kCiAgIAorICBkZWYgbG9uZ0Zvcm0KKyAgICAiICBtaWdodCBiZSAje251bVRv
U3RyKEBhbW91bnRGYXN0ZXIpfXggZmFzdGVyIgorICBlbmQKKyAgCiAgIGRlZiB0b19zCiAgICAg
aWYgQGFtb3VudEZhc3RlciA8IDEuMDEKICAgICAgICIiCiAgICAgZWxzZQotICAgICAgIiAgbWln
aHQgYmUgI3tudW1Ub1N0cihAYW1vdW50RmFzdGVyKX14IGZhc3RlciIKKyAgICAgIGxvbmdGb3Jt
CiAgICAgZW5kCiAgIGVuZAogZW5kCkBAIC00MjYsOSArNDQzLDEzIEBAIGNsYXNzIEZhc3Rlcgog
ICAgICJeIgogICBlbmQKICAgCi0gIGRlZiB0b19zCisgIGRlZiBsb25nRm9ybQogICAgICJeIGRl
ZmluaXRlbHkgI3tudW1Ub1N0cihAYW1vdW50RmFzdGVyKX14IGZhc3RlciIKICAgZW5kCisgIAor
ICBkZWYgdG9fcworICAgIGxvbmdGb3JtCisgIGVuZAogZW5kCiAKIGNsYXNzIFNsb3dlcgpAQCAt
NDQyLDkgKzQ2MywxMyBAQCBjbGFzcyBTbG93ZXIKICAgICAiISIKICAgZW5kCiAgIAotICBkZWYg
dG9fcworICBkZWYgbG9uZ0Zvcm0KICAgICAiISBkZWZpbml0ZWx5ICN7bnVtVG9TdHIoQGFtb3Vu
dFNsb3dlcil9eCBzbG93ZXIiCiAgIGVuZAorICAKKyAgZGVmIHRvX3MKKyAgICBsb25nRm9ybQor
ICBlbmQKIGVuZAogCiBjbGFzcyBNYXlCZVNsb3dlcgpAQCAtNDU4LDExICs0ODMsMTUgQEAgY2xh
c3MgTWF5QmVTbG93ZXIKICAgICAiPyIKICAgZW5kCiAgIAorICBkZWYgbG9uZ0Zvcm0KKyAgICAi
PyBtaWdodCBiZSAje251bVRvU3RyKEBhbW91bnRTbG93ZXIpfXggc2xvd2VyIgorICBlbmQKKyAg
CiAgIGRlZiB0b19zCiAgICAgaWYgQGFtb3VudFNsb3dlciA8IDEuMDEKICAgICAgICI/IgogICAg
IGVsc2UKLSAgICAgICI/IG1pZ2h0IGJlICN7bnVtVG9TdHIoQGFtb3VudFNsb3dlcil9eCBzbG93
ZXIiCisgICAgICBsb25nRm9ybQogICAgIGVuZAogICBlbmQKIGVuZApAQCAtNTc0LDIyNSArNjAz
LDMwNSBAQCBkZWYgZG91YmxlUHV0cyhvdXQxLG91dDIsbXNnKQogICBvdXQyLnB1dHMgbXNnCiBl
bmQKIAotZGVmIGJlbmNoUnVuSGFybmVzcyh2bSwgYmVuY2hwYXRoKQotICAkc3RkZXJyLnB1dHMg
InJ1bm5pbmcgI3tiZW5jaHBhdGh9IHdpdGggI3t2bX0uLi4iIGlmICR2ZXJib3NpdHk+PTEKLSAg
cmVzdWx0PW5pbAotICBUZW1wZmlsZS5vcGVuKCJiZW5jaGVyIikgewotICAgIHwgZmlsZSB8Ci0g
ICAgeWllbGQoZmlsZSkKLSAgICBmaWxlLmZsdXNoCi0gICAgYmVnaW4KLSAgICAgIHJlc3VsdD12
bS5ydW5BbmRSZXBvcnQoZmlsZS5wYXRoKQotICAgIHJlc2N1ZSA9PiBlCi0gICAgICAkc3RkZXJy
LnB1dHMgIkNvdWxkIG5vdCBydW4gI3tmaWxlLnBhdGh9IGJlY2F1c2UgI3tlfToiCi0gICAgICBG
aWxlLm9wZW4oZmlsZS5wYXRoLCJyIikgewotICAgICAgICB8IGlucCB8Ci0gICAgICAgIGlucC5l
YWNoX2xpbmUgewotICAgICAgICAgIHwgbGluZSB8Ci0gICAgICAgICAgJHN0ZGVyci5wdXRzICIj
e2xpbmV9IgotICAgICAgICB9Ci0gICAgICB9CitjbGFzcyBCZW5jaGZpbGUgPCBGaWxlCisgIEBA
Y291bnRlciA9IDAKKyAgCisgIGF0dHJfcmVhZGVyIDpmaWxlbmFtZSwgOmJhc2VuYW1lCisgIAor
ICBkZWYgaW5pdGlhbGl6ZShuYW1lKQorICAgIEBiYXNlbmFtZSwgQGZpbGVuYW1lID0gQmVuY2hm
aWxlLnVuaXF1ZUZpbGVuYW1lKG5hbWUpCisgICAgc3VwZXIoQGZpbGVuYW1lLCAidyIpCisgIGVu
ZAorICAKKyAgZGVmIHNlbGYudW5pcXVlRmlsZW5hbWUobmFtZSkKKyAgICBpZiBuYW1lLmlzX2E/
IEFycmF5CisgICAgICBiYXNlbmFtZSA9IG5hbWVbMF0gKyBAQGNvdW50ZXIudG9fcyArIG5hbWVb
MV0KKyAgICBlbHNlCisgICAgICBiYXNlbmFtZSA9IG5hbWUgKyBAQGNvdW50ZXIudG9fcwogICAg
IGVuZAotICAgIGZpbGUudW5saW5rIHVubGVzcyAka2VlcEZpbGVzCi0gIH0KLSAgcmFpc2UgdW5s
ZXNzIHJlc3VsdCBhbmQgcmVzdWx0LnNpemUgPT0gJGlubmVyCi0gIHJlc3VsdAorICAgIGZpbGVu
YW1lID0gQkVOQ0hfREFUQV9QQVRIICsgIi8iICsgYmFzZW5hbWUKKyAgICBAQGNvdW50ZXIgKz0g
MQorICAgIHJhaXNlICJCZW5jaGZpbGUgI3tmaWxlbmFtZX0gYWxyZWFkeSBleGlzdHMiIGlmIEZp
bGVUZXN0LmV4aXN0PyhmaWxlbmFtZSkKKyAgICBbYmFzZW5hbWUsIGZpbGVuYW1lXQorICBlbmQK
KyAgCisgIGRlZiBzZWxmLmNyZWF0ZShuYW1lKQorICAgIGZpbGUgPSBCZW5jaGZpbGUubmV3KG5h
bWUpCisgICAgeWllbGQgZmlsZQorICAgIGZpbGUuY2xvc2UKKyAgICBmaWxlLmJhc2VuYW1lCisg
IGVuZAogZW5kCiAKLWRlZiBlbWl0VGltZUhlbHBlcnMoZmlsZSkKLSAgY2FzZSAkdGltZU1vZGUK
LSAgd2hlbiA6cHJlY2lzZVRpbWUKLSAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiZnVuY3Rp
b24gX19iZW5jaGVyX2N1clRpbWVNUygpIHsiKQotICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxl
LCIgICByZXR1cm4gcHJlY2lzZVRpbWUoKSoxMDAwIikKLSAgICBkb3VibGVQdXRzKCRzdGRlcnIs
ZmlsZSwifSIpCi0gIHdoZW4gOmRhdGUKLSAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiZnVu
Y3Rpb24gX19iZW5jaGVyX2N1clRpbWVNUygpIHsiKQotICAgIGRvdWJsZVB1dHMoJHN0ZGVycixm
aWxlLCIgICByZXR1cm4gRGF0ZS5ub3coKSIpCi0gICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUs
In0iKQotICBlbHNlCi0gICAgcmFpc2UKKyRkYXRhRmlsZXM9e30KK2RlZiBlbnN1cmVGaWxlKGtl
eSwgZmlsZW5hbWUpCisgIHVubGVzcyAkZGF0YUZpbGVzW2tleV0KKyAgICAkZGF0YUZpbGVzW2tl
eV0gPSBCZW5jaGZpbGUuY3JlYXRlKGtleSkgeworICAgICAgfCBvdXRwIHwKKyAgICAgIGRvdWJs
ZVB1dHMoJHN0ZGVycixvdXRwLElPOjpyZWFkKGZpbGVuYW1lKSkKKyAgICB9CiAgIGVuZAotICBk
b3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiZnVuY3Rpb24gX19iZW5jaGVyX3J1bihfX2JlbmNoZXJf
d2hhdCkgeyIpCi0gIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCIgICB2YXIgX19iZW5jaGVyX2Jl
Zm9yZSA9IF9fYmVuY2hlcl9jdXJUaW1lTVMoKTsiKQotICAkcmVydW4udGltZXMgewotICAgIGRv
dWJsZVB1dHMoJHN0ZGVycixmaWxlLCIgICBydW4oX19iZW5jaGVyX3doYXQpOyIpCi0gIH0KLSAg
ZG91YmxlUHV0cygkc3RkZXJyLGZpbGUsIiAgIHZhciBfX2JlbmNoZXJfYWZ0ZXIgPSBfX2JlbmNo
ZXJfY3VyVGltZU1TKCk7IikKLSAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUsIiAgIHJldHVybiBf
X2JlbmNoZXJfYWZ0ZXIgLSBfX2JlbmNoZXJfYmVmb3JlOyIpCi0gIGRvdWJsZVB1dHMoJHN0ZGVy
cixmaWxlLCJ9IikKKyAgJGRhdGFGaWxlc1trZXldCiBlbmQKLQotZGVmIGVtaXRCZW5jaFJ1bkNv
ZGUodm0sIGZpbGUsIGJlbmNocGF0aCkKLSAgZW1pdFRpbWVIZWxwZXJzKGZpbGUpCi0gIGNhc2Ug
JGlubmVyTW9kZQotICB3aGVuIDpyZWxvYWQKLSAgICBjYXNlIHZtLnZtVHlwZQotICAgIHdoZW4g
OmpzYwotICAgICAgJHdhcm11cC50aW1lcyB7Ci0gICAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixm
aWxlLCJfX2JlbmNoZXJfcnVuKCN7YmVuY2hwYXRoLmluc3BlY3R9KSIpCi0gICAgICAgIGRvdWJs
ZVB1dHMoJHN0ZGVycixmaWxlLCJnYygpOyIpIHVubGVzcyB2bS5zaG91bGRNZWFzdXJlR0MKLSAg
ICAgIH0KLSAgICAgICRpbm5lci50aW1lcyB7Ci0gICAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixm
aWxlLCJwcmludChcIlRpbWU6IFwiK19fYmVuY2hlcl9ydW4oI3tiZW5jaHBhdGguaW5zcGVjdH0p
KTsiKQotICAgICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiZ2MoKTsiKSB1bmxlc3Mgdm0u
c2hvdWxkTWVhc3VyZUdDCi0gICAgICB9Ci0gICAgd2hlbiA6ZHVtcFJlbmRlclRyZWUKKyAgCitk
ZWYgZW1pdEJlbmNoUnVuQ29kZUZpbGUobmFtZSwgcGxhbiwgYmVuY2hEYXRhUGF0aCwgYmVuY2hQ
YXRoKQorICBjYXNlIHBsYW4udm0udm1UeXBlCisgIHdoZW4gOmpzYworICAgIEJlbmNoZmlsZS5j
cmVhdGUoImJlbmNoZXIiKSB7CisgICAgICB8IGZpbGUgfAorICAgICAgY2FzZSAkdGltZU1vZGUK
KyAgICAgIHdoZW4gOnByZWNpc2VUaW1lCisgICAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxl
LCJmdW5jdGlvbiBfX2JlbmNoZXJfY3VyVGltZU1TKCkgeyIpCisgICAgICAgIGRvdWJsZVB1dHMo
JHN0ZGVycixmaWxlLCIgICByZXR1cm4gcHJlY2lzZVRpbWUoKSoxMDAwIikKKyAgICAgICAgZG91
YmxlUHV0cygkc3RkZXJyLGZpbGUsIn0iKQorICAgICAgd2hlbiA6ZGF0ZQorICAgICAgICBkb3Vi
bGVQdXRzKCRzdGRlcnIsZmlsZSwiZnVuY3Rpb24gX19iZW5jaGVyX2N1clRpbWVNUygpIHsiKQor
ICAgICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiICAgcmV0dXJuIERhdGUubm93KCkiKQor
ICAgICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwifSIpCisgICAgICBlbHNlCisgICAgICAg
IHJhaXNlCisgICAgICBlbmQKKyAgICAgIAorICAgICAgaWYgYmVuY2hEYXRhUGF0aAorICAgICAg
ICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwibG9hZCgje2JlbmNoRGF0YVBhdGguaW5zcGVjdH0p
OyIpCisgICAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCJnYygpOyIpCisgICAgICAgIGRv
dWJsZVB1dHMoJHN0ZGVycixmaWxlLCJmb3IgKHZhciBfX2JlbmNoZXJfaW5kZXggPSAwOyBfX2Jl
bmNoZXJfaW5kZXggPCAjeyR3YXJtdXArJGlubmVyfTsgKytfX2JlbmNoZXJfaW5kZXgpIHsiKQor
ICAgICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiICAgYmVmb3JlID0gX19iZW5jaGVyX2N1
clRpbWVNUygpOyIpCisgICAgICAgICRyZXJ1bi50aW1lcyB7CisgICAgICAgICAgZG91YmxlUHV0
cygkc3RkZXJyLGZpbGUsIiAgIGxvYWQoI3tiZW5jaFBhdGguaW5zcGVjdH0pOyIpCisgICAgICAg
IH0KKyAgICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUsIiAgIGFmdGVyID0gX19iZW5jaGVy
X2N1clRpbWVNUygpOyIpCisgICAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCIgICBpZiAo
X19iZW5jaGVyX2luZGV4ID49ICN7JHdhcm11cH0pIHByaW50KFwiI3tuYW1lfTogI3twbGFuLnZt
fTogI3twbGFuLml0ZXJhdGlvbn06IFwiICsgKF9fYmVuY2hlcl9pbmRleCAtICN7JHdhcm11cH0p
ICsgXCI6IFRpbWU6IFwiKyhhZnRlci1iZWZvcmUpKTsiKTsKKyAgICAgICAgZG91YmxlUHV0cygk
c3RkZXJyLGZpbGUsIiAgIGdjKCk7IikgdW5sZXNzIHBsYW4udm0uc2hvdWxkTWVhc3VyZUdDCisg
ICAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCJ9IikKKyAgICAgIGVsc2UKKyAgICAgICAg
ZG91YmxlUHV0cygkc3RkZXJyLGZpbGUsImZ1bmN0aW9uIF9fYmVuY2hlcl9ydW4oX19iZW5jaGVy
X3doYXQpIHsiKQorICAgICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiICAgdmFyIF9fYmVu
Y2hlcl9iZWZvcmUgPSBfX2JlbmNoZXJfY3VyVGltZU1TKCk7IikKKyAgICAgICAgJHJlcnVuLnRp
bWVzIHsKKyAgICAgICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiICAgcnVuKF9fYmVuY2hl
cl93aGF0KTsiKQorICAgICAgICB9CisgICAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCIg
ICB2YXIgX19iZW5jaGVyX2FmdGVyID0gX19iZW5jaGVyX2N1clRpbWVNUygpOyIpCisgICAgICAg
IGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCIgICByZXR1cm4gX19iZW5jaGVyX2FmdGVyIC0gX19i
ZW5jaGVyX2JlZm9yZTsiKQorICAgICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwifSIpCisg
ICAgICAgICR3YXJtdXAudGltZXMgeworICAgICAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxl
LCJfX2JlbmNoZXJfcnVuKCN7YmVuY2hQYXRoLmluc3BlY3R9KSIpCisgICAgICAgICAgZG91Ymxl
UHV0cygkc3RkZXJyLGZpbGUsImdjKCk7IikgdW5sZXNzIHBsYW4udm0uc2hvdWxkTWVhc3VyZUdD
CisgICAgICAgIH0KKyAgICAgICAgJGlubmVyLnRpbWVzIHsKKyAgICAgICAgICB8IGlubmVySW5k
ZXggfAorICAgICAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCJwcmludChcIiN7bmFtZX06
ICN7cGxhbi52bX06ICN7cGxhbi5pdGVyYXRpb259OiAje2lubmVySW5kZXh9OiBUaW1lOiBcIitf
X2JlbmNoZXJfcnVuKCN7YmVuY2hQYXRoLmluc3BlY3R9KSk7IikKKyAgICAgICAgICBkb3VibGVQ
dXRzKCRzdGRlcnIsZmlsZSwiZ2MoKTsiKSB1bmxlc3MgcGxhbi52bS5zaG91bGRNZWFzdXJlR0MK
KyAgICAgICAgfQorICAgICAgZW5kCisgICAgfQorICB3aGVuIDpkdW1wUmVuZGVyVHJlZQorICAg
IG1haW5Db2RlID0gQmVuY2hmaWxlLmNyZWF0ZSgiYmVuY2hlciIpIHsKKyAgICAgIHwgZmlsZSB8
CiAgICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiX19iZW5jaGVyX2NvdW50ID0gMDsiKQog
ICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUsImZ1bmN0aW9uIF9fYmVuY2hlcl9kb05leHQo
cmVzdWx0KSB7IikKICAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCIgICAgaWYgKF9fYmVu
Y2hlcl9jb3VudCA+PSAjeyR3YXJtdXB9KSIpCi0gICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmls
ZSwiICAgICAgICBkZWJ1ZyhcIlRpbWU6IFwiK3Jlc3VsdCk7IikKKyAgICAgIGRvdWJsZVB1dHMo
JHN0ZGVycixmaWxlLCIgICAgICAgIGRlYnVnKFwiI3tuYW1lfTogI3twbGFuLnZtfTogI3twbGFu
Lml0ZXJhdGlvbn06IFwiICsgKF9fYmVuY2hlcl9jb3VudCAtICN7JHdhcm11cH0pICsgXCI6IFRp
bWU6IFwiICsgcmVzdWx0KTsiKQogICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUsIiAgICBf
X2JlbmNoZXJfY291bnQrKzsiKQogICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUsIiAgICBp
ZiAoX19iZW5jaGVyX2NvdW50IDwgI3skaW5uZXIrJHdhcm11cH0pIikKLSAgICAgIGRvdWJsZVB1
dHMoJHN0ZGVycixmaWxlLCIgICAgICAgIF9fYmVuY2hlcl9ydW5JbXBsKCN7YmVuY2hwYXRoLmlu
c3BlY3R9LCBfX2JlbmNoZXJfZG9OZXh0KTsiKQorICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZp
bGUsIiAgICAgICAgX19iZW5jaGVyX3J1bkltcGwoX19iZW5jaGVyX2RvTmV4dCk7IikKICAgICAg
IGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCIgICAgZWxzZSIpCiAgICAgICBkb3VibGVQdXRzKCRz
dGRlcnIsZmlsZSwiICAgICAgICBxdWl0KCk7IikKICAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixm
aWxlLCJ9IikKLSAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCJfX2JlbmNoZXJfcnVuSW1w
bCgje2JlbmNocGF0aC5pbnNwZWN0fSwgX19iZW5jaGVyX2RvTmV4dCk7IikKLSAgICBlbHNlCi0g
ICAgICByYWlzZSB2bS52bVR5cGUKLSAgICBlbmQKLSAgd2hlbiA6bG9hZE9uY2UKLSAgICBkb3Vi
bGVQdXRzKCRzdGRlcnIsZmlsZSwiZnVuY3Rpb24gcnVuaXQoKSB7IikKLSAgICBGaWxlLm9wZW4o
YmVuY2hwYXRoLCdyJykgewotICAgICAgfCBpbnAgfAotICAgICAgaW5wLmVhY2hfbGluZSB7Ci0g
ICAgICAgIHwgbGluZSB8Ci0gICAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLGxpbmUpCi0g
ICAgICB9CisgICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiX19iZW5jaGVyX3J1bkltcGwo
X19iZW5jaGVyX2RvTmV4dCk7IikKICAgICB9Ci0gICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUs
In0iKQotICAgICR3YXJtdXAudGltZXMgewotICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUs
InJ1bml0KCk7IikKLSAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCJnYygpOyIpIHVubGVz
cyB2bS5zaG91bGRNZWFzdXJlR0MKLSAgICB9Ci0gICAgJGlubmVyLnRpbWVzIHsKLSAgICAgIGRv
dWJsZVB1dHMoJHN0ZGVycixmaWxlLCJiZWZvcmUgPSBfX2JlbmNoZXJfY3VyVGltZU1TKCk7IikK
LSAgICAgICRyZXJ1bi50aW1lcyB7Ci0gICAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCJy
dW5pdCgpOyIpCi0gICAgICB9Ci0gICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiYWZ0ZXIg
PSBfX2JlbmNoZXJfY3VyVGltZU1TKCk7IikKLSAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxl
LCJwcmludChcIlRpbWU6IFwiKyhhZnRlci1iZWZvcmUpKTsiKQotICAgICAgZG91YmxlUHV0cygk
c3RkZXJyLGZpbGUsImdjKCk7IikgdW5sZXNzIHZtLnNob3VsZE1lYXN1cmVHQworICAgIAorICAg
IGNzc0NvZGUgPSBCZW5jaGZpbGUuY3JlYXRlKCJiZW5jaGVyLWNzcyIpIHsKKyAgICAgIHwgZmls
ZSB8CisgICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiLnBhc3Mge1xuICAgIGZvbnQtd2Vp
Z2h0OiBib2xkO1xuICAgIGNvbG9yOiBncmVlbjtcbn1cbi5mYWlsIHtcbiAgICBmb250LXdlaWdo
dDogYm9sZDtcbiAgICBjb2xvcjogcmVkO1xufVxuXCNjb25zb2xlIHtcbiAgICB3aGl0ZS1zcGFj
ZTogcHJlLXdyYXA7XG4gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbn0iKQorICAgIH0KKyAg
ICAKKyAgICBwcmVDb2RlID0gQmVuY2hmaWxlLmNyZWF0ZSgiYmVuY2hlci1wcmUiKSB7CisgICAg
ICB8IGZpbGUgfAorICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUsImlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsiKQorICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUsIiAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHdpbmRvdy5lbmFibGVQaXhlbFRlc3Rp
bmcpOyIpCisgICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsiKQorICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUs
In0iKQorICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUsIiIpCisgICAgICBkb3VibGVQdXRz
KCRzdGRlcnIsZmlsZSwiZnVuY3Rpb24gZGVidWcobXNnKSIpCisgICAgICBkb3VibGVQdXRzKCRz
dGRlcnIsZmlsZSwieyIpCisgICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiICAgIHZhciBz
cGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7IikKKyAgICAgIGRvdWJsZVB1
dHMoJHN0ZGVycixmaWxlLCIgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb25zb2xlXCIp
LmFwcGVuZENoaWxkKHNwYW4pOyAvLyBpbnNlcnQgaXQgZmlyc3Qgc28gWEhUTUwga25vd3MgdGhl
IG5hbWVzcGFjZSIpCisgICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiICAgIHNwYW4uaW5u
ZXJIVE1MID0gbXNnICsgJzxiciAvPic7IikKKyAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxl
LCJ9IikKKyAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCIiKQorICAgICAgZG91YmxlUHV0
cygkc3RkZXJyLGZpbGUsImZ1bmN0aW9uIHF1aXQoKSB7IikKKyAgICAgIGRvdWJsZVB1dHMoJHN0
ZGVycixmaWxlLCIgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyIpCisgICAg
ICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwifSIpCisgICAgICBkb3VibGVQdXRzKCRzdGRlcnIs
ZmlsZSwiIikKKyAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCJfX2JlbmNoZXJfY29udGlu
dWF0aW9uPW51bGw7IikKKyAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCIiKQorICAgICAg
ZG91YmxlUHV0cygkc3RkZXJyLGZpbGUsImZ1bmN0aW9uIHJlcG9ydFJlc3VsdChyZXN1bHQpIHsi
KQorICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUsIiAgICBfX2JlbmNoZXJfY29udGludWF0
aW9uKHJlc3VsdCk7IikKKyAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCJ9IikKKyAgICAg
IGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCIiKQorICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZp
bGUsImZ1bmN0aW9uIF9fYmVuY2hlcl9ydW5JbXBsKGNvbnRpbnVhdGlvbikgeyIpCisgICAgICBk
b3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiICAgIGZ1bmN0aW9uIGRvaXQoKSB7IikKKyAgICAgIGRv
dWJsZVB1dHMoJHN0ZGVycixmaWxlLCIgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwi
ZnJhbWVwYXJlbnRcIikuaW5uZXJIVE1MID0gXCJcIjsiKQorICAgICAgZG91YmxlUHV0cygkc3Rk
ZXJyLGZpbGUsIiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJmcmFtZXBhcmVudFwi
KS5pbm5lckhUTUwgPSBcIjxpZnJhbWUgaWQ9J3Rlc3RmcmFtZSc+XCI7IikKKyAgICAgIGRvdWJs
ZVB1dHMoJHN0ZGVycixmaWxlLCIgICAgICAgIHZhciB0ZXN0RnJhbWUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChcInRlc3RmcmFtZVwiKTsiKQorICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZp
bGUsIiAgICAgICAgdGVzdEZyYW1lLmNvbnRlbnREb2N1bWVudC5vcGVuKCk7IikKKyAgICAgIGRv
dWJsZVB1dHMoJHN0ZGVycixmaWxlLCIgICAgICAgIHRlc3RGcmFtZS5jb250ZW50RG9jdW1lbnQu
d3JpdGUoXCI8IURPQ1RZUEUgaHRtbD5cXG48aGVhZD48L2hlYWQ+PGJvZHk+PGRpdiBpZD1cXFwi
Y29uc29sZVxcXCI+PC9kaXY+XCIpOyIpCisgICAgICBpZiBiZW5jaERhdGFQYXRoCisgICAgICAg
IGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCIgICAgICAgIHRlc3RGcmFtZS5jb250ZW50RG9jdW1l
bnQud3JpdGUoXCI8c2NyaXB0IHNyYz1cXFwiI3tiZW5jaERhdGFQYXRofVxcXCI+PC9zY3JpcHQ+
XCIpOyIpCisgICAgICBlbmQKKyAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCIgICAgICAg
IHRlc3RGcmFtZS5jb250ZW50RG9jdW1lbnQud3JpdGUoXCI8c2NyaXB0IHR5cGU9XFxcInRleHQv
amF2YXNjcmlwdFxcXCI+X19iZW5jaGVyX2JlZm9yZSA9IERhdGUubm93KCk7PC9zY3JpcHQ+PHNj
cmlwdCBzcmM9XFxcIiN7YmVuY2hQYXRofVxcXCI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPVxcXCJ0
ZXh0L2phdmFzY3JpcHRcXFwiPndpbmRvdy5wYXJlbnQucmVwb3J0UmVzdWx0KERhdGUubm93KCkg
LSBfX2JlbmNoZXJfYmVmb3JlKTs8L3NjcmlwdD48L2JvZHk+PC9odG1sPlwiKTsiKQorICAgICAg
ZG91YmxlUHV0cygkc3RkZXJyLGZpbGUsIiAgICAgICAgdGVzdEZyYW1lLmNvbnRlbnREb2N1bWVu
dC5jbG9zZSgpOyIpCisgICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiICAgIH0iKQorICAg
ICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUsIiAgICBfX2JlbmNoZXJfY29udGludWF0aW9uID0g
Y29udGludWF0aW9uOyIpCisgICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwiICAgIHdpbmRv
dy5zZXRUaW1lb3V0KGRvaXQsIDEwKTsiKQorICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUs
In0iKQorICAgIH0KKworICAgIEJlbmNoZmlsZS5jcmVhdGUoWyJiZW5jaGVyLWh0bWxkb2MiLCIu
aHRtbCJdKSB7CisgICAgICB8IGZpbGUgfAorICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUs
IjwhRE9DVFlQRSBIVE1MIFBVQkxJQyBcIi0vL0lFVEYvL0RURCBIVE1MLy9FTlwiPlxuPGh0bWw+
PGhlYWQ+PGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCIje2Nzc0NvZGV9XCI+PHNjcmlw
dCBzcmM9XCIje3ByZUNvZGV9XCI+PC9zY3JpcHQ+PC9oZWFkPjxib2R5PjxkaXYgaWQ9XCJjb25z
b2xlXCI+PC9kaXY+PGRpdiBpZD1cImZyYW1lcGFyZW50XCI+PC9kaXY+PHNjcmlwdCBzcmM9XCIj
e21haW5Db2RlfVwiPjwvc2NyaXB0PjwvYm9keT48L2h0bWw+IikKICAgICB9Ci0gICAgaWYgdm0u
dm1UeXBlID09IDpkdW1wUmVuZGVyVHJlZQotICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUs
InF1aXQoKTsiKQotICAgIGVuZAogICBlbHNlCi0gICAgcmFpc2UgImJhZCAkaW5uZXJNb2RlOiAj
eyRpbm5lck1vZGV9IgorICAgIHJhaXNlCiAgIGVuZAogZW5kCiAKLWRlZiBydW5CZW5jaG1hcmtB
bmRSZXBvcnQodm0sIGJlbmNocGF0aCkKLSAgYmVuY2hSdW5IYXJuZXNzKHZtLCBiZW5jaHBhdGgp
IHsKLSAgICB8IGZpbGUgfAotICAgIGVtaXRCZW5jaFJ1bkNvZGUodm0sIGZpbGUsIGJlbmNocGF0
aCkKLSAgfQorZGVmIGVtaXRCZW5jaFJ1bkNvZGUobmFtZSwgcGxhbiwgYmVuY2hEYXRhUGF0aCwg
YmVuY2hQYXRoKQorICBwbGFuLnZtLmVtaXRSdW5Db2RlKGVtaXRCZW5jaFJ1bkNvZGVGaWxlKG5h
bWUsIHBsYW4sIGJlbmNoRGF0YVBhdGgsIGJlbmNoUGF0aCkpCiBlbmQKIAotY2xhc3MgU3RhdHNB
Y2N1bXVsYXRvcgotICBkZWYgaW5pdGlhbGl6ZQotICAgIEBzdGF0cyA9IFtdCi0gICAgKCRvdXRl
ciokaW5uZXIpLnRpbWVzIHsKLSAgICAgIEBzdGF0cyA8PCBTdGF0cy5uZXcKLSAgICB9CitkZWYg
cGxhbkZvckRlc2NyaXB0aW9uKHBsYW5zLCBiZW5jaEZ1bGxuYW1lLCB2bU5hbWUsIGl0ZXJhdGlv
bikKKyAgcmFpc2UgdW5sZXNzIGJlbmNoRnVsbG5hbWUgPX4gL1wvLworICBzdWl0ZU5hbWUgPSAk
fi5wcmVfbWF0Y2gKKyAgYmVuY2hOYW1lID0gJH4ucG9zdF9tYXRjaAorICByZXN1bHQgPSBwbGFu
cy5zZWxlY3R7fHZ8IHYuc3VpdGUubmFtZSA9PSBzdWl0ZU5hbWUgYW5kIHYuYmVuY2htYXJrLm5h
bWUgPT0gYmVuY2hOYW1lIGFuZCB2LnZtLm5hbWUgPT0gdm1OYW1lIGFuZCB2Lml0ZXJhdGlvbiA9
PSBpdGVyYXRpb259CisgIHJhaXNlIHVubGVzcyByZXN1bHQuc2l6ZSA9PSAxCisgIHJlc3VsdFsw
XQorZW5kCisKK2NsYXNzIFBhcnNlZFJlc3VsdAorICBhdHRyX3JlYWRlciA6cGxhbiwgOmlubmVy
SW5kZXgsIDp0aW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShwbGFuLCBpbm5lckluZGV4LCB0aW1l
KQorICAgIEBwbGFuID0gcGxhbgorICAgIEBpbm5lckluZGV4ID0gaW5uZXJJbmRleAorICAgIEB0
aW1lID0gdGltZQorICAgIAorICAgIHJhaXNlIHVubGVzcyBAcGxhbi5pc19hPyBCZW5jaFBsYW4K
KyAgICByYWlzZSB1bmxlc3MgQGlubmVySW5kZXguaXNfYT8gSW50ZWdlcgorICAgIHJhaXNlIHVu
bGVzcyBAdGltZS5pc19hPyBOdW1lcmljCiAgIGVuZAogICAKLSAgZGVmIHN0YXRzRm9ySXRlcmF0
aW9uKG91dGVySXRlcmF0aW9uLCBpbm5lckl0ZXJhdGlvbikKLSAgICBAc3RhdHNbb3V0ZXJJdGVy
YXRpb24qJGlubmVyICsgaW5uZXJJdGVyYXRpb25dCisgIGRlZiBiZW5jaG1hcmsKKyAgICBwbGFu
LmJlbmNobWFyawogICBlbmQKICAgCi0gIGRlZiBzdGF0cwotICAgIHJlc3VsdCA9IFN0YXRzLm5l
dwotICAgIEBzdGF0cy5lYWNoIHsKLSAgICAgIHwgc3RhdCB8Ci0gICAgICByZXN1bHQuYWRkKHlp
ZWxkIHN0YXQpCi0gICAgfQotICAgIHJlc3VsdAorICBkZWYgc3VpdGUKKyAgICBwbGFuLnN1aXRl
CiAgIGVuZAogICAKLSAgZGVmIGdlb21ldHJpY01lYW5TdGF0cwotICAgIHN0YXRzIHsKLSAgICAg
IHwgc3RhdCB8Ci0gICAgICBzdGF0Lmdlb21ldHJpY01lYW4KLSAgICB9CisgIGRlZiB2bQorICAg
IHBsYW4udm0KICAgZW5kCiAgIAotICBkZWYgYXJpdGhtZXRpY01lYW5TdGF0cwotICAgIHN0YXRz
IHsKLSAgICAgIHwgc3RhdCB8Ci0gICAgICBzdGF0LmFyaXRobWV0aWNNZWFuCi0gICAgfQorICBk
ZWYgb3V0ZXJJbmRleAorICAgIHBsYW4uaXRlcmF0aW9uCisgIGVuZAorICAKKyAgZGVmIHNlbGYu
cGFyc2UocGxhbnMsIHN0cmluZykKKyAgICBpZiBzdHJpbmcgPX4gLyhbYS16QS1aMC05XC8tXSsp
OiAoW2EtekEtWjAtOV8jIF0rKTogKFswLTldKyk6IChbMC05XSspOiBUaW1lOiAvCisgICAgICBi
ZW5jaEZ1bGxuYW1lID0gJDEKKyAgICAgIHZtTmFtZSA9ICQyCisgICAgICBvdXRlckluZGV4ID0g
JDMudG9faQorICAgICAgaW5uZXJJbmRleCA9ICQ0LnRvX2kKKyAgICAgIHRpbWUgPSAkfi5wb3N0
X21hdGNoLnRvX2YKKyAgICAgIFBhcnNlZFJlc3VsdC5uZXcocGxhbkZvckRlc2NyaXB0aW9uKHBs
YW5zLCBiZW5jaEZ1bGxuYW1lLCB2bU5hbWUsIG91dGVySW5kZXgpLCBpbm5lckluZGV4LCB0aW1l
KQorICAgIGVsc2UKKyAgICAgIG5pbAorICAgIGVuZAogICBlbmQKIGVuZAogCi1jbGFzcyBWTSA8
IFN0YXRzQWNjdW11bGF0b3IKLSAgZGVmIGluaXRpYWxpemUob3JpZ1BhdGgsIHBhdGgsIG5hbWUs
IG5hbWVLaW5kLCBzdm5SZXZpc2lvbikKLSAgICBzdXBlcigpCi0gICAgQG9yaWdQYXRoID0gb3Jp
Z1BhdGgKLSAgICBAcGF0aCA9IHBhdGgKK2NsYXNzIFZNCisgIGRlZiBpbml0aWFsaXplKG9yaWdQ
YXRoLCBuYW1lLCBuYW1lS2luZCwgc3ZuUmV2aXNpb24pCisgICAgQG9yaWdQYXRoID0gb3JpZ1Bh
dGgudG9fcworICAgIEBwYXRoID0gb3JpZ1BhdGgudG9fcwogICAgIEBuYW1lID0gbmFtZQogICAg
IEBuYW1lS2luZCA9IG5hbWVLaW5kCiAgICAgCiAgICAgaWYgJGZvcmNlVk1LaW5kCiAgICAgICBA
dm1UeXBlID0gJGZvcmNlVk1LaW5kCiAgICAgZWxzZQotICAgICAgVGVtcGZpbGUub3BlbigiYmVu
Y2hlci12bXRlc3QiKSB7Ci0gICAgICAgIHwgZmlsZSB8Ci0gICAgICAgIGZpbGUucHV0cyAicHJp
bnQoXCJoZXJlXCIpOyIKLSAgICAgICAgZmlsZS5mbHVzaAotICAgICAgICAKLSAgICAgICAgcmVz
dWx0ID0gbmlsCisgICAgICBpZiBAb3JpZ1BhdGggPX4gL0R1bXBSZW5kZXJUcmVlJC8KKyAgICAg
ICAgQHZtVHlwZSA9IDpkdW1wUmVuZGVyVHJlZQorICAgICAgZWxzZQogICAgICAgICBAdm1UeXBl
ID0gOmpzYwotICAgICAgICBydW4oZmlsZS5wYXRoKSB7Ci0gICAgICAgICAgfCBpbnAgfAotICAg
ICAgICAgIHJlc3VsdCA9IGlucC5yZWFkCi0gICAgICAgICAgJHN0ZGVyci5wdXRzICJzdGRvdXQ6
ICN7cmVzdWx0fSIgaWYgJHZlcmJvc2l0eT49MgotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBpZiByZXN1bHQuY2hvbXAgPT0gImhlcmUiCi0gICAgICAgICAgJHN0ZGVyci5wdXRzICIje0Bu
YW1lfSBpcyBkZWZpbml0ZWx5IGEganNjLXN0eWxlIFZNLiIgaWYgJHZlcmJvc2l0eT49MQotICAg
ICAgICAgIEB2bVR5cGUgPSA6anNjCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAkc3RkZXJyLnB1
dHMgIkFzc3VtaW5nIHRoYXQgI3tAbmFtZX0gaXMgYSBEdW1wUmVuZGVyVHJlZS1zdHlsZSBWTS4i
IGlmICR2ZXJib3NpdHk+PTEKLSAgICAgICAgICBAdm1UeXBlID0gOmR1bXBSZW5kZXJUcmVlCi0g
ICAgICAgIGVuZAotICAgICAgfQorICAgICAgZW5kCiAgICAgZW5kCiAgICAgCiAgICAgQHN2blJl
dmlzaW9uID0gc3ZuUmV2aXNpb24KICAgICAKLSAgICB1bmxlc3MgJHNsYXZlCi0gICAgICAjIFRy
eSB0byBkZXRlY3QgaW5mb3JtYXRpb24gYWJvdXQgdGhlIFZNLgotICAgICAgaWYgcGF0aCA9fiAv
XC9XZWJLaXRCdWlsZFwvUmVsZWFzZVwvKFthLXpBLVpdKykkLwotICAgICAgICBAY2hlY2tvdXRQ
YXRoID0gJH4ucHJlX21hdGNoCi0gICAgICAgIHVubGVzcyBAc3ZuUmV2aXNpb24KLSAgICAgICAg
ICBiZWdpbgotICAgICAgICAgICAgRGlyLmNoZGlyKEBjaGVja291dFBhdGgpIHsKLSAgICAgICAg
ICAgICAgJHN0ZGVyci5wdXRzICI+PiBjZCAje0BjaGVja291dFBhdGh9ICYmIHN2biBpbmZvIiBp
ZiAkdmVyYm9zaXR5Pj0yCi0gICAgICAgICAgICAgIElPLnBvcGVuKCJzdm4gaW5mbyIsICJyIikg
ewotICAgICAgICAgICAgICAgIHwgaW5wIHwKLSAgICAgICAgICAgICAgICBpbnAuZWFjaF9saW5l
IHsKLSAgICAgICAgICAgICAgICAgIHwgbGluZSB8Ci0gICAgICAgICAgICAgICAgICBpZiBsaW5l
ID1+IC9SZXZpc2lvbjogKFswLTldKykvCi0gICAgICAgICAgICAgICAgICAgIEBzdm5SZXZpc2lv
biA9ICQxCi0gICAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgICB9CisgICAgIyBU
cnkgdG8gZGV0ZWN0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBWTS4KKyAgICBpZiBwYXRoID1+IC9c
L1dlYktpdEJ1aWxkXC9SZWxlYXNlXC8oW2EtekEtWl0rKSQvCisgICAgICBAY2hlY2tvdXRQYXRo
ID0gJH4ucHJlX21hdGNoCisgICAgICAjIEZJWE1FOiBVc2Ugc29tZSB2YXJpYW50IG9mIHRoaXM6
IAorICAgICAgIyA8YmRhc2g+ICAgZGVmIHJldHJpZXZlX3JldmlzaW9uCisgICAgICAjIDxiZGFz
aD4gICAgIGBwZXJsIC1JI3tAcGF0aH0vVG9vbHMvU2NyaXB0cyAtTVZDU1V0aWxzIC1lICdwcmlu
dCBzdm5SZXZpc2lvbkZvckRpcmVjdG9yeSgiI3tAcGF0aH0iKTsnYC50b19pCisgICAgICAjIDxi
ZGFzaD4gICBlbmQKKyAgICAgIHVubGVzcyBAc3ZuUmV2aXNpb24KKyAgICAgICAgYmVnaW4KKyAg
ICAgICAgICBEaXIuY2hkaXIoQGNoZWNrb3V0UGF0aCkgeworICAgICAgICAgICAgJHN0ZGVyci5w
dXRzICI+PiBjZCAje0BjaGVja291dFBhdGh9ICYmIHN2biBpbmZvIiBpZiAkdmVyYm9zaXR5Pj0y
CisgICAgICAgICAgICBJTy5wb3Blbigic3ZuIGluZm8iLCAiciIpIHsKKyAgICAgICAgICAgICAg
fCBpbnAgfAorICAgICAgICAgICAgICBpbnAuZWFjaF9saW5lIHsKKyAgICAgICAgICAgICAgICB8
IGxpbmUgfAorICAgICAgICAgICAgICAgIGlmIGxpbmUgPX4gL1JldmlzaW9uOiAoWzAtOV0rKS8K
KyAgICAgICAgICAgICAgICAgIEBzdm5SZXZpc2lvbiA9ICQxCisgICAgICAgICAgICAgICAgZW5k
CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVubGVzcyBAc3Zu
UmV2aXNpb24KLSAgICAgICAgICAgICAgJHN0ZGVyci5wdXRzICJXYXJuaW5nOiBydW5uaW5nIHN2
biBpbmZvIGZvciAje25hbWV9IHNpbGVudGx5IGZhaWxlZC4iCi0gICAgICAgICAgICBlbmQKLSAg
ICAgICAgICByZXNjdWUgPT4gZQotICAgICAgICAgICAgIyBGYWlsZWQgdG8gZGV0ZWN0IHN2biBy
ZXZpc2lvbi4KLSAgICAgICAgICAgICRzdGRlcnIucHV0cyAiV2FybmluZzogY291bGQgbm90IGdl
dCBzdm4gcmV2aXNpb24gaW5mb3JtYXRpb24gZm9yICN7bmFtZX06ICN7ZX0iCisgICAgICAgICAg
fQorICAgICAgICAgIHVubGVzcyBAc3ZuUmV2aXNpb24KKyAgICAgICAgICAgICRzdGRlcnIucHV0
cyAiV2FybmluZzogcnVubmluZyBzdm4gaW5mbyBmb3IgI3tuYW1lfSBzaWxlbnRseSBmYWlsZWQu
IgogICAgICAgICAgIGVuZAorICAgICAgICByZXNjdWUgPT4gZQorICAgICAgICAgICMgRmFpbGVk
IHRvIGRldGVjdCBzdm4gcmV2aXNpb24uCisgICAgICAgICAgJHN0ZGVyci5wdXRzICJXYXJuaW5n
OiBjb3VsZCBub3QgZ2V0IHN2biByZXZpc2lvbiBpbmZvcm1hdGlvbiBmb3IgI3tuYW1lfTogI3tl
fSIKICAgICAgICAgZW5kCi0gICAgICBlbHNlCi0gICAgICAgICRzdGRlcnIucHV0cyAiV2Fybmlu
ZzogY291bGQgbm90IGlkZW50aWZ5IGNoZWNrb3V0IGxvY2F0aW9uIGZvciAje25hbWV9IgogICAg
ICAgZW5kCisgICAgZWxzZQorICAgICAgJHN0ZGVyci5wdXRzICJXYXJuaW5nOiBjb3VsZCBub3Qg
aWRlbnRpZnkgY2hlY2tvdXQgbG9jYXRpb24gZm9yICN7bmFtZX0iCisgICAgZW5kCisgICAgCisg
ICAgaWYgQHBhdGggPX4gL1wvUmVsZWFzZVwvKFthLXpBLVpdKykkLworICAgICAgQGxpYlBhdGgs
IEByZWxhdGl2ZUJpblBhdGggPSAkfi5wcmVfbWF0Y2grIi9SZWxlYXNlIiwgIi4vI3skMX0iCisg
ICAgZWxzaWYgQHBhdGggPX4gL1wvQ29udGVudHNcL1Jlc291cmNlc1wvKFthLXpBLVpdKykkLwor
ICAgICAgQGxpYlBhdGggPSAkfi5wcmVfbWF0Y2gKKyAgICBlbHNpZiBAcGF0aCA9fiAvXC9KYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcmtcL1Jlc291cmNlc1wvKFthLXpBLVpdKykkLworICAgICAgQGxp
YlBhdGgsIEByZWxhdGl2ZUJpblBhdGggPSAkfi5wcmVfbWF0Y2gsICQmWzEuLi0xXQorICAgIGVu
ZAorICBlbmQKKyAgCisgIGRlZiBjYW5Db3B5SW50b0JlbmNoUGF0aAorICAgIGlmIEBsaWJQYXRo
IGFuZCBAcmVsYXRpdmVCaW5QYXRoCisgICAgICB0cnVlCisgICAgZWxzZQorICAgICAgZmFsc2UK
ICAgICBlbmQKICAgZW5kCiAgIAorICBkZWYgY29weUludG9CZW5jaFBhdGgKKyAgICByYWlzZSB1
bmxlc3MgY2FuQ29weUludG9CZW5jaFBhdGgKKyAgICBiYXNlbmFtZSwgZmlsZW5hbWUgPSBCZW5j
aGZpbGUudW5pcXVlRmlsZW5hbWUoInZtIikKKyAgICByYWlzZSB1bmxlc3MgRGlyLm1rZGlyKGZp
bGVuYW1lKQorICAgIGNtZCA9ICJjcCAtYSAje0BsaWJQYXRoLmluc3BlY3R9LyogI3tmaWxlbmFt
ZS5pbnNwZWN0fSIKKyAgICAkc3RkZXJyLnB1dHMgIj4+ICN7Y21kfSIgaWYgJHZlcmJvc2l0eT49
MgorICAgIHJhaXNlIHVubGVzcyBzeXN0ZW0oY21kKQorICAgIEBwYXRoID0gIiN7YmFzZW5hbWV9
LyN7QHJlbGF0aXZlQmluUGF0aH0iCisgICAgQGxpYlBhdGggPSBiYXNlbmFtZQorICBlbmQKKyAg
CiAgIGRlZiB0b19zCiAgICAgQG5hbWUKICAgZW5kCkBAIC04NDAsMTk3ICs5NDksOTcgQEAgY2xh
c3MgVk0gPCBTdGF0c0FjY3VtdWxhdG9yCiAgICAgZW5kCiAgIGVuZAogICAKLSAgZGVmIHJ1bihm
aWxlbmFtZSkKLSAgICBjYXNlIEB2bVR5cGUKLSAgICB3aGVuIDpqc2MKLSAgICAgIGlmIEBwYXRo
ID1+IC9cL1JlbGVhc2VcLyhbYS16QS1aXSspJC8KLSAgICAgICAgcmFpc2UgdW5sZXNzIEBwYXRo
ID1+IC9cLyhbYS16QS1aXSspJC8KLSAgICAgICAgbGliUGF0aCA9ICR+LnByZV9tYXRjaAotICAg
ICAgICBFTlZbIkRZTERfTElCUkFSWV9QQVRIIl09bGliUGF0aAotICAgICAgICBFTlZbIkRZTERf
RlJBTUVXT1JLX1BBVEgiXT1saWJQYXRoCi0gICAgICBlbHNlCi0gICAgICAgIEVOVlsiRFlMRF9M
SUJSQVJZX1BBVEgiXT0iIgotICAgICAgICBFTlZbIkRZTERfRlJBTUVXT1JLX1BBVEgiXT0iIgot
ICAgICAgZW5kCi0gICAgICBjbWQgPSAiI3tAcGF0aH0gI3tmaWxlbmFtZX0iCi0gICAgICAkc3Rk
ZXJyLnB1dHMgIj4+ICN7Y21kfSIgaWYgJHZlcmJvc2l0eT49MgotICAgICAgSU8ucG9wZW4oY21k
LCJyIikgewotICAgICAgICB8IGlucCB8Ci0gICAgICAgIHlpZWxkIGlucAotICAgICAgfQotICAg
ICAgJD8uc3VjY2Vzcz8KLSAgICB3aGVuIDpkdW1wUmVuZGVyVHJlZQotICAgICAgcmVzdWx0ID0g
bmlsCi0gICAgICBUZW1wZmlsZS5vcGVuKFsiYmVuY2hlci1odG1sZG9jIiwiLmh0bWwiXSkgewot
ICAgICAgICB8IGh0bWxGaWxlIHwKLSAgICAgICAgVGVtcGZpbGUub3BlbigiYmVuY2hlci1jc3Mi
KSB7Ci0gICAgICAgICAgfCBjc3NGaWxlIHwKLSAgICAgICAgICBkb3VibGVQdXRzKCRzdGRlcnIs
Y3NzRmlsZSwiLnBhc3Mge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGNvbG9yOiBncmVl
bjtcbn1cbi5mYWlsIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogcmVkO1xu
fVxuXCNjb25zb2xlIHtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgZm9udC1mYW1p
bHk6IG1vbm9zcGFjZTtcbn0iKQotICAgICAgICAgIFRlbXBmaWxlLm9wZW4oImJlbmNoZXItcHJl
IikgewotICAgICAgICAgICAgfCBwcmVGaWxlIHwKLSAgICAgICAgICAgIGRvdWJsZVB1dHMoJHN0
ZGVycixwcmVGaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAiaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikge1xuIisKLSAgICAgICAgICAgICAgICAgICAgICAgIiAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHdpbmRvdy5lbmFibGVQaXhlbFRlc3RpbmcpO1xuIisK
LSAgICAgICAgICAgICAgICAgICAgICAgIiAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7XG4iKwotICAgICAgICAgICAgICAgICAgICAgICAifVxuIisKLSAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIisKLSAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIGRlYnVn
KG1zZylcbiIrCi0gICAgICAgICAgICAgICAgICAgICAgICJ7XG4iKwotICAgICAgICAgICAgICAg
ICAgICAgICAiICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7
XG4iKwotICAgICAgICAgICAgICAgICAgICAgICAiICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KFwiY29uc29sZVwiKS5hcHBlbmRDaGlsZChzcGFuKTsgLy8gaW5zZXJ0IGl0IGZpcnN0IHNvIFhI
VE1MIGtub3dzIHRoZSBuYW1lc3BhY2VcbiIrCi0gICAgICAgICAgICAgICAgICAgICAgICIgICAg
c3Bhbi5pbm5lckhUTUwgPSBtc2cgKyAnPGJyIC8+JztcbiIrCi0gICAgICAgICAgICAgICAgICAg
ICAgICJ9XG4iKwotICAgICAgICAgICAgICAgICAgICAgICAiXG4iKwotICAgICAgICAgICAgICAg
ICAgICAgICAiZnVuY3Rpb24gcXVpdCgpIHtcbiIrCi0gICAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpO1xuIisKLSAgICAgICAgICAgICAg
ICAgICAgICAgIn1cbiIrCi0gICAgICAgICAgICAgICAgICAgICAgICJcbiIrCi0gICAgICAgICAg
ICAgICAgICAgICAgICJfX2JlbmNoZXJfY29udGludWF0aW9uPW51bGw7XG4iKwotICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iKwotICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gcmVw
b3J0UmVzdWx0KHJlc3VsdCkge1xuIisKLSAgICAgICAgICAgICAgICAgICAgICAgIiAgICBfX2Jl
bmNoZXJfY29udGludWF0aW9uKHJlc3VsdCk7XG4iKwotICAgICAgICAgICAgICAgICAgICAgICAi
fVxuIisKLSAgICAgICAgICAgICAgICAgICAgICAgIlxuIisKLSAgICAgICAgICAgICAgICAgICAg
ICAgImZ1bmN0aW9uIF9fYmVuY2hlcl9ydW5JbXBsKGZpbGVuYW1lLCBjb250aW51YXRpb24pIHtc
biIrCi0gICAgICAgICAgICAgICAgICAgICAgICIgICAgZnVuY3Rpb24gZG9pdCgpIHtcbiIrCi0g
ICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwi
ZnJhbWVwYXJlbnRcIikuaW5uZXJIVE1MID0gXCJcIjtcbiIrCi0gICAgICAgICAgICAgICAgICAg
ICAgICIgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZnJhbWVwYXJlbnRcIikuaW5u
ZXJIVE1MID0gXCI8aWZyYW1lIGlkPSd0ZXN0ZnJhbWUnPlwiO1xuIisKLSAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICAgICAgdmFyIHRlc3RGcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KFwidGVzdGZyYW1lXCIpO1xuIisKLSAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgdGVz
dEZyYW1lLmNvbnRlbnREb2N1bWVudC5vcGVuKCk7XG4iKwotICAgICAgICAgICAgICAgICAgICAg
ICAiICAgICAgICB0ZXN0RnJhbWUuY29udGVudERvY3VtZW50LndyaXRlKFwiPCFET0NUWVBFIGh0
bWw+XFxuPGhlYWQ+PC9oZWFkPjxib2R5PjxkaXYgaWQ9XFxcImNvbnNvbGVcXFwiPjwvZGl2Pjxz
Y3JpcHQgdHlwZT1cXFwidGV4dC9qYXZhc2NyaXB0XFxcIj5fX2JlbmNoZXJfYmVmb3JlID0gRGF0
ZS5ub3coKTs8L3NjcmlwdD48c2NyaXB0IHNyYz1cXFwiZmlsZTovL1wiK2ZpbGVuYW1lK1wiXFxc
Ij48L3NjcmlwdD48c2NyaXB0IHR5cGU9XFxcInRleHQvamF2YXNjcmlwdFxcXCI+d2luZG93LnBh
cmVudC5yZXBvcnRSZXN1bHQoRGF0ZS5ub3coKSAtIF9fYmVuY2hlcl9iZWZvcmUpOzwvc2NyaXB0
PjwvYm9keT48L2h0bWw+XCIpO1xuIisKLSAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAg
dGVzdEZyYW1lLmNvbnRlbnREb2N1bWVudC5jbG9zZSgpO1xuIisKLSAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICB9XG4iKwotICAgICAgICAgICAgICAgICAgICAgICAiICAgIF9fYmVuY2hlcl9j
b250aW51YXRpb24gPSBjb250aW51YXRpb247XG4iKwotICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KGRvaXQsIDEwKTtcbiIrCi0gICAgICAgICAgICAgICAgICAg
ICAgICJ9XG4iKQotICAgICAgICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGh0bWxGaWxlLCI8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgXCItLy9JRVRGLy9EVEQgSFRNTC8vRU5cIj5cbjxodG1sPjxoZWFk
PjxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwiZmlsZTovLyN7Y3NzRmlsZS5wYXRofVwi
PjxzY3JpcHQgc3JjPVwiZmlsZTovLyN7cHJlRmlsZS5wYXRofVwiPjwvc2NyaXB0PjwvaGVhZD48
Ym9keT48ZGl2IGlkPVwiY29uc29sZVwiPjwvZGl2PjxkaXYgaWQ9XCJmcmFtZXBhcmVudFwiPjwv
ZGl2PjxzY3JpcHQgc3JjPVwiZmlsZTovLyN7ZmlsZW5hbWV9XCI+PC9zY3JpcHQ+PC9ib2R5Pjwv
aHRtbD4iKQotICAgICAgICAgICAgCi0gICAgICAgICAgICBodG1sRmlsZS5mbHVzaAotICAgICAg
ICAgICAgcHJlRmlsZS5mbHVzaAotICAgICAgICAgICAgY3NzRmlsZS5mbHVzaAotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBjbWQgPSAiI3twYXRofSAje2h0bWxGaWxlLnBhdGh9IgotICAgICAg
ICAgICAgJHN0ZGVyci5wdXRzICI+PiAje2NtZH0iIGlmICR2ZXJib3NpdHk+PTIKLSAgICAgICAg
ICAgIElPLnBvcGVuKGNtZCwgInIiKSB7Ci0gICAgICAgICAgICAgIHwgaW5wIHwKLSAgICAgICAg
ICAgICAgeWllbGQgaW5wCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXN1bHQgPSAkPwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICAjc2xlZXAgMTAwMDAKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgaHRtbEZpbGUudW5saW5rIHVubGVzcyAka2VlcEZpbGVzCi0gICAgICAgICAgICBw
cmVGaWxlLnVubGluayB1bmxlc3MgJGtlZXBGaWxlcwotICAgICAgICAgICAgY3NzRmlsZS51bmxp
bmsgdW5sZXNzICRrZWVwRmlsZXMKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAg
ICAgIHJlc3VsdC5zdWNjZXNzPwotICAgIGVsc2UKLSAgICAgIHJhaXNlIEB2bVR5cGUKLSAgICBl
bmQKKyAgZGVmIGVtaXRSdW5Db2RlKGZpbGVUb1J1bikKKyAgICBteUxpYlBhdGggPSBAbGliUGF0
aAorICAgIG15TGliUGF0aCA9ICIiIHVubGVzcyBteUxpYlBhdGgKKyAgICAkc2NyaXB0LnB1dHMg
ImV4cG9ydCBEWUxEX0xJQlJBUllfUEFUSD0je215TGliUGF0aC50b19zLmluc3BlY3R9IgorICAg
ICRzY3JpcHQucHV0cyAiZXhwb3J0IERZTERfRlJBTUVXT1JLX1BBVEg9I3tteUxpYlBhdGgudG9f
cy5pbnNwZWN0fSIKKyAgICAkc2NyaXB0LnB1dHMgIiN7cGF0aH0gI3tmaWxlVG9SdW59IgorICBl
bmQKK2VuZAorCitjbGFzcyBTdGF0c0FjY3VtdWxhdG9yCisgIGRlZiBpbml0aWFsaXplCisgICAg
QHN0YXRzID0gW10KKyAgICAoJG91dGVyKiRpbm5lcikudGltZXMgeworICAgICAgQHN0YXRzIDw8
IFN0YXRzLm5ldworICAgIH0KICAgZW5kCiAgIAotICBkZWYgcnVuQW5kUmVwb3J0KGZpbGVuYW1l
KQotICAgIHJlc3VsdCA9IG5pbAotICAgIDUudGltZXMgewotICAgICAgcmVzdWx0ID0gU3RhdHMu
bmV3Ci0gICAgICBydW4oZmlsZW5hbWUpIHsKLSAgICAgICAgfCBpbnAgfAotICAgICAgICBpbnAu
ZWFjaF9saW5lIHsKLSAgICAgICAgICB8IGxpbmUgfAotICAgICAgICAgICRzdGRlcnIucHV0cyAi
c3Rkb3V0OiAje2xpbmV9IiBpZiAkdmVyYm9zaXR5Pj0yCi0gICAgICAgICAgaWYgbGluZSA9fiAv
XlRpbWU6IC8KLSAgICAgICAgICAgIHJlc3VsdC5hZGQoJH4ucG9zdF9tYXRjaC50b19mKQotICAg
ICAgICAgIGVuZAotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBicmVhayBpZiByZXN1bHQuc2l6
ZSA9PSAkaW5uZXIKLSAgICAgIGlmICR2ZXJib3NpdHkgPT0gMAotICAgICAgICAkc3RkZXJyLnBy
aW50ICIgICAiCi0gICAgICBlbmQKLSAgICAgICRzdGRlcnIucHV0cyAiRmFpbGVkIHRvIHJ1biAj
e2ZpbGVuYW1lfSBvbiAje3NlbGZ9LCByZXRyeWluZy4uLiIKKyAgZGVmIHN0YXRzRm9ySXRlcmF0
aW9uKG91dGVySXRlcmF0aW9uLCBpbm5lckl0ZXJhdGlvbikKKyAgICBAc3RhdHNbb3V0ZXJJdGVy
YXRpb24qJGlubmVyICsgaW5uZXJJdGVyYXRpb25dCisgIGVuZAorICAKKyAgZGVmIHN0YXRzCisg
ICAgcmVzdWx0ID0gU3RhdHMubmV3CisgICAgQHN0YXRzLmVhY2ggeworICAgICAgfCBzdGF0IHwK
KyAgICAgIHJlc3VsdC5hZGQoeWllbGQgc3RhdCkKICAgICB9Ci0gICAgcmFpc2UgIkZhaWxlZCB0
byBydW4gI3tmaWxlbmFtZX0gb24gI3tzZWxmfSIgdW5sZXNzIHJlc3VsdCBhbmQgcmVzdWx0LnNp
emUgPT0gJGlubmVyCiAgICAgcmVzdWx0CiAgIGVuZAorICAKKyAgZGVmIGdlb21ldHJpY01lYW5T
dGF0cworICAgIHN0YXRzIHsKKyAgICAgIHwgc3RhdCB8CisgICAgICBzdGF0Lmdlb21ldHJpY01l
YW4KKyAgICB9CisgIGVuZAorICAKKyAgZGVmIGFyaXRobWV0aWNNZWFuU3RhdHMKKyAgICBzdGF0
cyB7CisgICAgICB8IHN0YXQgfAorICAgICAgc3RhdC5hcml0aG1ldGljTWVhbgorICAgIH0KKyAg
ZW5kCiBlbmQKIAotY2xhc3MgU3VuU3BpZGVyQmVuY2htYXJrCittb2R1bGUgQmVuY2htYXJrCiAg
IGF0dHJfYWNjZXNzb3IgOmJlbmNobWFya1N1aXRlCisgIGF0dHJfcmVhZGVyIDpuYW1lCiAgIAot
ICBkZWYgaW5pdGlhbGl6ZShuYW1lKQotICAgIEBuYW1lID0gbmFtZQorICBkZWYgZnVsbG5hbWUK
KyAgICBiZW5jaG1hcmtTdWl0ZS5uYW1lICsgIi8iICsgbmFtZQogICBlbmQKICAgCiAgIGRlZiB0
b19zCi0gICAgQG5hbWUKKyAgICBmdWxsbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBTdW5TcGlk
ZXJCZW5jaG1hcmsKKyAgaW5jbHVkZSBCZW5jaG1hcmsKKyAgCisgIGRlZiBpbml0aWFsaXplKG5h
bWUpCisgICAgQG5hbWUgPSBuYW1lCiAgIGVuZAogICAKLSAgZGVmIHJ1bkFuZFJlcG9ydCh2bSkK
LSAgICBydW5CZW5jaG1hcmtBbmRSZXBvcnQodm0sICIje1NVTlNQSURFUl9QQVRIfS8je0BuYW1l
fS5qcyIpCisgIGRlZiBlbWl0UnVuQ29kZShwbGFuKQorICAgIGVtaXRCZW5jaFJ1bkNvZGUoZnVs
bG5hbWUsIHBsYW4sIG5pbCwgZW5zdXJlRmlsZSgiU3VuU3BpZGVyLSN7QG5hbWV9IiwgIiN7U1VO
U1BJREVSX1BBVEh9LyN7QG5hbWV9LmpzIikpCiAgIGVuZAogZW5kCiAKIGNsYXNzIFY4QmVuY2ht
YXJrCi0gIGF0dHJfYWNjZXNzb3IgOmJlbmNobWFya1N1aXRlCisgIGluY2x1ZGUgQmVuY2htYXJr
CiAgIAogICBkZWYgaW5pdGlhbGl6ZShuYW1lKQogICAgIEBuYW1lID0gbmFtZQogICBlbmQKICAg
Ci0gIGRlZiB0b19zCi0gICAgQG5hbWUKLSAgZW5kCi0gIAotICBkZWYgcnVuQW5kUmVwb3J0KHZt
KQotICAgIHJ1bkJlbmNobWFya0FuZFJlcG9ydCh2bSwgIiN7VjhfUEFUSH0vdjgtI3tAbmFtZX0u
anMiKQorICBkZWYgZW1pdFJ1bkNvZGUocGxhbikKKyAgICBlbWl0QmVuY2hSdW5Db2RlKGZ1bGxu
YW1lLCBwbGFuLCBuaWwsIGVuc3VyZUZpbGUoIlY4LSN7QG5hbWV9IiwgIiN7VjhfUEFUSH0vdjgt
I3tAbmFtZX0uanMiKSkKICAgZW5kCiBlbmQKIAogY2xhc3MgS3Jha2VuQmVuY2htYXJrCi0gIGF0
dHJfYWNjZXNzb3IgOmJlbmNobWFya1N1aXRlCisgIGluY2x1ZGUgQmVuY2htYXJrCiAgIAogICBk
ZWYgaW5pdGlhbGl6ZShuYW1lKQogICAgIEBuYW1lID0gbmFtZQogICBlbmQKICAgCi0gIGRlZiB0
b19zCi0gICAgQG5hbWUKLSAgZW5kCi0gIAotICBkZWYgcnVuQW5kUmVwb3J0KHZtKQotICAgICMg
S3Jha2VuIHJlcXVpcmVzIHNvbWUgc3BlY2lhbC1jYXNpbmcKLSAgICAKLSAgICBkYXRhUGF0aD0i
I3tLUkFLRU5fUEFUSH0vI3tAbmFtZX0tZGF0YS5qcyIKLSAgICBiZW5jaFBhdGg9IiN7S1JBS0VO
X1BBVEh9LyN7QG5hbWV9LmpzIgotICAgIAotICAgIGJlbmNoUnVuSGFybmVzcyh2bSwgYmVuY2hQ
YXRoKSB7Ci0gICAgICB8IGZpbGUgfAotICAgICAgZW1pdFRpbWVIZWxwZXJzKGZpbGUpCi0gICAg
ICBkb3VibGVQdXRzKCRzdGRlcnIsZmlsZSwibG9hZCgje2RhdGFQYXRoLmluc3BlY3R9KTsiKQot
ICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUsImdjKCk7IikgdW5sZXNzIHZtLnNob3VsZE1l
YXN1cmVHQwotICAgICAgaWYgJGlubmVyTW9kZSA9PSA6cmVsb2FkCi0gICAgICAgIGNhc2Ugdm0u
dm1UeXBlCi0gICAgICAgIHdoZW4gOmpzYwotICAgICAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixm
aWxlLCJmb3IgKHZhciBfX2JlbmNoZXJfaW5kZXggPSAwOyBfX2JlbmNoZXJfaW5kZXggPCAjeyR3
YXJtdXArJGlubmVyfTsgKytfX2JlbmNoZXJfaW5kZXgpIHsiKQotICAgICAgICAgIGRvdWJsZVB1
dHMoJHN0ZGVycixmaWxlLCIgICBiZWZvcmUgPSBfX2JlbmNoZXJfY3VyVGltZU1TKCk7IikKLSAg
ICAgICAgICAkcmVydW4udGltZXMgewotICAgICAgICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZp
bGUsIiAgIGxvYWQoI3tiZW5jaFBhdGguaW5zcGVjdH0pOyIpCi0gICAgICAgICAgfQotICAgICAg
ICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCIgICBhZnRlciA9IF9fYmVuY2hlcl9jdXJUaW1l
TVMoKTsiKQotICAgICAgICAgIGRvdWJsZVB1dHMoJHN0ZGVycixmaWxlLCIgICBpZiAoX19iZW5j
aGVyX2luZGV4ID49ICN7JHdhcm11cH0pICN7dm0ucHJpbnRGdW5jdGlvbn0oXCJUaW1lOiBcIiso
YWZ0ZXItYmVmb3JlKSk7Iik7Ci0gICAgICAgICAgZG91YmxlUHV0cygkc3RkZXJyLGZpbGUsIiAg
IGdjKCk7IikgdW5sZXNzIHZtLnNob3VsZE1lYXN1cmVHQwotICAgICAgICAgIGRvdWJsZVB1dHMo
JHN0ZGVycixmaWxlLCJ9IikKLSAgICAgICAgd2hlbiA6ZHVtcFJlbmRlclRyZWUKLSAgICAgICAg
ICByYWlzZSAiS3Jha2VuIGluIER1bXBSZW5kZXJUcmVlIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRl
ZC4iCi0gICAgICAgIGVsc2UKLSAgICAgICAgICByYWlzZSB2bS52bVR5cGUKLSAgICAgICAgZW5k
Ci0gICAgICBlbHNlCi0gICAgICAgIGVtaXRCZW5jaFJ1bkNvZGUodm0sIGZpbGUsIGJlbmNoUGF0
aCkKLSAgICAgIGVuZAotICAgIH0KKyAgZGVmIGVtaXRSdW5Db2RlKHBsYW4pCisgICAgZW1pdEJl
bmNoUnVuQ29kZShmdWxsbmFtZSwgcGxhbiwgZW5zdXJlRmlsZSgiS3Jha2VuRGF0YS0je0BuYW1l
fSIsICIje0tSQUtFTl9QQVRIfS8je0BuYW1lfS1kYXRhLmpzIiksIGVuc3VyZUZpbGUoIktyYWtl
bi0je0BuYW1lfSIsICIje0tSQUtFTl9QQVRIfS8je0BuYW1lfS5qcyIpKQogICBlbmQKIGVuZAog
CkBAIC0xMDU1LDcgKzEwNjQsNyBAQCBjbGFzcyBCZW5jaG1hcmtTdWl0ZQogICBlbmQKICAgCiAg
IGRlZiBhZGQoYmVuY2htYXJrKQotICAgIGlmIG5vdCAkYmVuY2htYXJrUGF0dGVybiBvciAiI3tA
bmFtZX0vI3tiZW5jaG1hcmsudG9fc30iID1+ICRiZW5jaG1hcmtQYXR0ZXJuCisgICAgaWYgbm90
ICRiZW5jaG1hcmtQYXR0ZXJuIG9yICIje0BuYW1lfS8je2JlbmNobWFyay5uYW1lfSIgPX4gJGJl
bmNobWFya1BhdHRlcm4KICAgICAgIGJlbmNobWFyay5iZW5jaG1hcmtTdWl0ZSA9IHNlbGYKICAg
ICAgIEBiZW5jaG1hcmtzIDw8IGJlbmNobWFyawogICAgIGVuZApAQCAtMTA2NSw2ICsxMDc0LDEy
IEBAIGNsYXNzIEJlbmNobWFya1N1aXRlCiAgICAgQGJlbmNobWFya3MKICAgZW5kCiAgIAorICBk
ZWYgYmVuY2htYXJrRm9yTmFtZShuYW1lKQorICAgIHJlc3VsdCA9IEBiZW5jaG1hcmtzLnNlbGVj
dHt8dnwgdi5uYW1lID09IG5hbWV9CisgICAgcmFpc2UgdW5sZXNzIHJlc3VsdC5sZW5ndGggPT0g
MQorICAgIHJlc3VsdFswXQorICBlbmQKKyAgCiAgIGRlZiBlbXB0eT8KICAgICBAYmVuY2htYXJr
cy5lbXB0eT8KICAgZW5kCkBAIC0xMDg1LDE2ICsxMTAwLDQzIEBAIGNsYXNzIEJlbmNobWFya1N1
aXRlCiAgIGVuZAogZW5kCiAKLWNsYXNzIEJlbmNobWFya09uVk0KLSAgZGVmIGluaXRpYWxpemUo
dm0sIGJlbmNobWFyaywgc3VpdGVPblZNKQorY2xhc3MgQmVuY2hSdW5QbGFuCisgIGRlZiBpbml0
aWFsaXplKGJlbmNobWFyaywgdm0sIGl0ZXJhdGlvbikKKyAgICBAYmVuY2htYXJrID0gYmVuY2ht
YXJrCiAgICAgQHZtID0gdm0KKyAgICBAaXRlcmF0aW9uID0gaXRlcmF0aW9uCisgIGVuZAorICAK
KyAgZGVmIGJlbmNobWFyaworICAgIEBiZW5jaG1hcmsKKyAgZW5kCisgIAorICBkZWYgc3VpdGUK
KyAgICBAYmVuY2htYXJrLmJlbmNobWFya1N1aXRlCisgIGVuZAorICAKKyAgZGVmIHZtCisgICAg
QHZtCisgIGVuZAorICAKKyAgZGVmIGl0ZXJhdGlvbgorICAgIEBpdGVyYXRpb24KKyAgZW5kCisg
IAorICBkZWYgZW1pdFJ1bkNvZGUKKyAgICBAYmVuY2htYXJrLmVtaXRSdW5Db2RlKHNlbGYpCisg
IGVuZAorZW5kCisKK2NsYXNzIEJlbmNobWFya09uVk0KKyAgZGVmIGluaXRpYWxpemUoYmVuY2ht
YXJrLCBzdWl0ZU9uVk0pCiAgICAgQGJlbmNobWFyayA9IGJlbmNobWFyawogICAgIEBzdWl0ZU9u
Vk0gPSBzdWl0ZU9uVk0KICAgICBAc3RhdHMgPSBTdGF0cy5uZXcKICAgZW5kCiAgIAogICBkZWYg
dG9fcwotICAgICIje0BiZW5jaG1hcmt9IG9uICN7QHZtfSIKKyAgICAiI3tAYmVuY2htYXJrfSBv
biAje0BzdWl0ZU9uVk0udm19IgogICBlbmQKICAgCiAgIGRlZiBiZW5jaG1hcmsKQEAgLTExMDIs
NyArMTE0NCwxMSBAQCBjbGFzcyBCZW5jaG1hcmtPblZNCiAgIGVuZAogICAKICAgZGVmIHZtCi0g
ICAgQHZtCisgICAgQHN1aXRlT25WTS52bQorICBlbmQKKyAgCisgIGRlZiB2bVN0YXRzCisgICAg
QHN1aXRlT25WTS52bVN0YXRzCiAgIGVuZAogICAKICAgZGVmIHN1aXRlCkBAIC0xMTE3LDE4ICsx
MTYzLDIzIEBAIGNsYXNzIEJlbmNobWFya09uVk0KICAgICBAc3RhdHMKICAgZW5kCiAgIAotICBk
ZWYgcnVuUmVjb3JkQW5kUmVwb3J0Ci0gICAgcmVzdWx0ID0gQGJlbmNobWFyay5ydW5BbmRSZXBv
cnQoQHZtKQotICAgIEBzdGF0cy5hZGQocmVzdWx0KQotICAgIHJlc3VsdAorICBkZWYgcGFyc2VS
ZXN1bHQocmVzdWx0KQorICAgIHJhaXNlICJWTSBtaXNtYXRjaDsgSSd2ZSBnb3QgI3t2bX0gYW5k
IHRoZXkndmUgZ290ICN7cmVzdWx0LnZtfSIgdW5sZXNzIHJlc3VsdC52bSA9PSB2bQorICAgIHJh
aXNlIHVubGVzcyByZXN1bHQuYmVuY2htYXJrID09IEBiZW5jaG1hcmsKKyAgICBAc3RhdHMuYWRk
KHJlc3VsdC50aW1lKQogICBlbmQKIGVuZAogCiBjbGFzcyBTdWl0ZU9uVk0gPCBTdGF0c0FjY3Vt
dWxhdG9yCi0gIGRlZiBpbml0aWFsaXplKHZtLCBzdWl0ZSkKKyAgZGVmIGluaXRpYWxpemUodm0s
IHZtU3RhdHMsIHN1aXRlKQogICAgIHN1cGVyKCkKICAgICBAdm0gPSB2bQorICAgIEB2bVN0YXRz
ID0gdm1TdGF0cwogICAgIEBzdWl0ZSA9IHN1aXRlCisgICAgCisgICAgcmFpc2UgdW5sZXNzIEB2
bS5pc19hPyBWTQorICAgIHJhaXNlIHVubGVzcyBAdm1TdGF0cy5pc19hPyBTdGF0c0FjY3VtdWxh
dG9yCisgICAgcmFpc2UgdW5sZXNzIEBzdWl0ZS5pc19hPyBCZW5jaG1hcmtTdWl0ZQogICBlbmQK
ICAgCiAgIGRlZiB0b19zCkBAIC0xMTQyLDYgKzExOTMsMTEgQEAgY2xhc3MgU3VpdGVPblZNIDwg
U3RhdHNBY2N1bXVsYXRvcgogICBkZWYgdm0KICAgICBAdm0KICAgZW5kCisgIAorICBkZWYgdm1T
dGF0cworICAgIHJhaXNlIHVubGVzcyBAdm1TdGF0cworICAgIEB2bVN0YXRzCisgIGVuZAogZW5k
CiAKIGNsYXNzIEJlbmNoUGxhbgpAQCAtMTE3NCwxMiArMTIzMCwxMSBAQCBjbGFzcyBCZW5jaFBs
YW4KICAgICBAaXRlcmF0aW9uCiAgIGVuZAogICAKLSAgZGVmIHJ1bkFuZFJlY29yZAotICAgIEBi
ZW5jaG1hcmtPblZNLnJ1blJlY29yZEFuZFJlcG9ydC5hcnJheS5lYWNoX3dpdGhfaW5kZXggewot
ICAgICAgfCB2YWx1ZSwgaW5kZXggfAotICAgICAgQGJlbmNobWFya09uVk0udm0uc3RhdHNGb3JJ
dGVyYXRpb24oQGl0ZXJhdGlvbiwgaW5kZXgpLmFkZCh2YWx1ZSkKLSAgICAgIEBiZW5jaG1hcmtP
blZNLnN1aXRlT25WTS5zdGF0c0Zvckl0ZXJhdGlvbihAaXRlcmF0aW9uLCBpbmRleCkuYWRkKHZh
bHVlKQotICAgIH0KKyAgZGVmIHBhcnNlUmVzdWx0KHJlc3VsdCkKKyAgICByYWlzZSB1bmxlc3Mg
cmVzdWx0LnBsYW4gPT0gc2VsZgorICAgIEBiZW5jaG1hcmtPblZNLnBhcnNlUmVzdWx0KHJlc3Vs
dCkKKyAgICBAYmVuY2htYXJrT25WTS52bVN0YXRzLnN0YXRzRm9ySXRlcmF0aW9uKEBpdGVyYXRp
b24sIHJlc3VsdC5pbm5lckluZGV4KS5hZGQocmVzdWx0LnRpbWUpCisgICAgQGJlbmNobWFya09u
Vk0uc3VpdGVPblZNLnN0YXRzRm9ySXRlcmF0aW9uKEBpdGVyYXRpb24sIHJlc3VsdC5pbm5lcklu
ZGV4KS5hZGQocmVzdWx0LnRpbWUpCiAgIGVuZAogZW5kCiAKQEAgLTEyMTksNDc3ICsxMjc0LDEx
NSBAQCBkZWYgc3RhdHNUb1N0cihzdGF0cykKICAgICBscGFkKG51bVRvU3RyKHN0YXRzLm1lYW4p
LDExKSsiKy0iK3JwYWQobnVtVG9TdHIoc3RhdHMuY29uZkludCksOSkKICAgZW5kCiBlbmQKLSAg
Ci1iZWdpbgotICAkc2F3QmVuY2hPcHRpb25zID0gZmFsc2UKLSAgCi0gIGRlZiByZXNldEJlbmNo
T3B0aW9uc0lmTmVjZXNzYXJ5Ci0gICAgdW5sZXNzICRzYXdCZW5jaE9wdGlvbnMKLSAgICAgICRp
bmNsdWRlU3VuU3BpZGVyID0gZmFsc2UKLSAgICAgICRpbmNsdWRlVjggPSBmYWxzZQotICAgICAg
JGluY2x1ZGVLcmFrZW4gPSBmYWxzZQotICAgICAgJHNhd0JlbmNoT3B0aW9ucyA9IHRydWUKLSAg
ICBlbmQKKworZGVmIHBsdXJhbChudW0pCisgIGlmIG51bSA9PSAxCisgICAgIiIKKyAgZWxzZQor
ICAgICJzIgogICBlbmQKLSAgCi0gIEdldG9wdExvbmcubmV3KFsnLS1yZXJ1bicsIEdldG9wdExv
bmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKLSAgICAgICAgICAgICAgICAgWyctLWlubmVyJywgR2V0
b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAotICAgICAgICAgICAgICAgICBbJy0tb3V0ZXIn
LCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCi0gICAgICAgICAgICAgICAgIFsnLS13
YXJtdXAnLCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCi0gICAgICAgICAgICAgICAg
IFsnLS10aW1pbmctbW9kZScsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKLSAgICAg
ICAgICAgICAgICAgWyctLXN1bnNwaWRlci1vbmx5JywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRd
LAotICAgICAgICAgICAgICAgICBbJy0tdjgtb25seScsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5U
XSwKLSAgICAgICAgICAgICAgICAgWyctLWtyYWtlbi1vbmx5JywgR2V0b3B0TG9uZzo6Tk9fQVJH
VU1FTlRdLAotICAgICAgICAgICAgICAgICBbJy0tZXhjbHVkZS1zdW5zcGlkZXInLCBHZXRvcHRM
b25nOjpOT19BUkdVTUVOVF0sCi0gICAgICAgICAgICAgICAgIFsnLS1leGNsdWRlLXY4JywgR2V0
b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAotICAgICAgICAgICAgICAgICBbJy0tZXhjbHVkZS1rcmFr
ZW4nLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCi0gICAgICAgICAgICAgICAgIFsnLS1zdW5z
cGlkZXInLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCi0gICAgICAgICAgICAgICAgIFsnLS12
OCcsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKLSAgICAgICAgICAgICAgICAgWyctLWtyYWtl
bicsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKLSAgICAgICAgICAgICAgICAgWyctLWJlbmNo
bWFya3MnLCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCi0gICAgICAgICAgICAgICAg
IFsnLS1tZWFzdXJlLWdjJywgR2V0b3B0TG9uZzo6T1BUSU9OQUxfQVJHVU1FTlRdLAotICAgICAg
ICAgICAgICAgICBbJy0tZm9yY2Utdm0ta2luZCcsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VN
RU5UXSwKLSAgICAgICAgICAgICAgICAgWyctLWxvYWQtb25jZScsIEdldG9wdExvbmc6Ok5PX0FS
R1VNRU5UXSwKLSAgICAgICAgICAgICAgICAgWyctLWtlZXAtZmlsZXMnLCBHZXRvcHRMb25nOjpO
T19BUkdVTUVOVF0sCi0gICAgICAgICAgICAgICAgIFsnLS12ZXJib3NlJywgJy12JywgR2V0b3B0
TG9uZzo6Tk9fQVJHVU1FTlRdLAotICAgICAgICAgICAgICAgICBbJy0tYnJpZWYnLCBHZXRvcHRM
b25nOjpOT19BUkdVTUVOVF0sCi0gICAgICAgICAgICAgICAgIFsnLS1zaWxlbnQnLCBHZXRvcHRM
b25nOjpOT19BUkdVTUVOVF0sCi0gICAgICAgICAgICAgICAgIFsnLS1yZW1vdGUnLCBHZXRvcHRM
b25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCi0gICAgICAgICAgICAgICAgIFsnLS1zc2gtb3B0aW9u
cycsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKLSAgICAgICAgICAgICAgICAgWyct
LXNsYXZlJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAotICAgICAgICAgICAgICAgICBbJy0t
dm1zJywgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAotICAgICAgICAgICAgICAgICBb
Jy0taGVscCcsICctaCcsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSkuZWFjaCB7Ci0gICAgfCBv
cHQsIGFyZyB8Ci0gICAgY2FzZSBvcHQKLSAgICB3aGVuICctLXJlcnVuJwotICAgICAgJHJlcnVu
ID0gaW50QXJnKG9wdCxhcmcsMSxuaWwpCi0gICAgd2hlbiAnLS1pbm5lcicKLSAgICAgICRpbm5l
ciA9IGludEFyZyhvcHQsYXJnLDEsbmlsKQotICAgIHdoZW4gJy0tb3V0ZXInCi0gICAgICAkb3V0
ZXIgPSBpbnRBcmcob3B0LGFyZywxLG5pbCkKLSAgICB3aGVuICctLXdhcm11cCcKLSAgICAgICR3
YXJtdXAgPSBpbnRBcmcob3B0LGFyZywwLG5pbCkKLSAgICB3aGVuICctLXRpbWluZy1tb2RlJwot
ICAgICAgaWYgYXJnLnVwY2FzZSA9PSAiUFJFQ0lTRVRJTUUiCi0gICAgICAgICR0aW1lTW9kZSA9
IDpwcmVjaXNlVGltZQotICAgICAgZWxzaWYgYXJnLnVwY2FzZSA9PSAiREFURSIKLSAgICAgICAg
JHRpbWVNb2RlID0gOmRhdGUKLSAgICAgIGVsc2lmIGFyZy51cGNhc2UgPT0gIkFVVE8iCi0gICAg
ICAgICR0aW1lTW9kZSA9IDphdXRvCi0gICAgICBlbHNlCi0gICAgICAgIHF1aWNrRmFpbCgiRXhw
ZWN0ZWQgZWl0aGVyICdwcmVjaXNlVGltZScsICdkYXRlJywgb3IgJ2F1dG8nIGZvciAtLXRpbWUt
bW9kZSwgYnV0IGdvdCAnI3thcmd9Jy4iLAotICAgICAgICAgICAgICAgICAgIkludmFsaWQgYXJn
dW1lbnQgZm9yIGNvbW1hbmQtbGluZSBvcHRpb24iKQotICAgICAgZW5kCi0gICAgd2hlbiAnLS1m
b3JjZS12bS1raW5kJwotICAgICAgaWYgYXJnLnVwY2FzZSA9PSAiSlNDIgotICAgICAgICAkZm9y
Y2VWTUtpbmQgPSA6anNjCi0gICAgICBlbHNpZiBhcmcudXBjYXNlID09ICJEVU1QUkVOREVSVFJF
RSIKLSAgICAgICAgJGZvcmNlVk1LaW5kID0gOmR1bXBSZW5kZXJUcmVlCi0gICAgICBlbHNpZiBh
cmcudXBjYXNlID09ICJBVVRPIgotICAgICAgICAkZm9yY2VWTUtpbmQgPSBuaWwKLSAgICAgIGVs
c2UKLSAgICAgICAgcXVpY2tGYWlsKCJFeHBlY3RlZCBlaXRoZXIgJ2pzYycgb3IgJ0R1bXBSZW5k
ZXJUcmVlJyBmb3IgLS1mb3JjZS12bS1raW5kLCBidXQgZ290ICcje2FyZ30nLiIsCi0gICAgICAg
ICAgICAgICAgICAiSW52YWxpZCBhcmd1bWVudCBmb3IgY29tbWFuZC1saW5lIG9wdGlvbiIpCi0g
ICAgICBlbmQKLSAgICB3aGVuICctLXN1bnNwaWRlci1vbmx5JwotICAgICAgJGluY2x1ZGVWOCA9
IGZhbHNlCi0gICAgICAkaW5jbHVkZUtyYWtlbiA9IGZhbHNlCi0gICAgd2hlbiAnLS12OC1vbmx5
JwotICAgICAgJGluY2x1ZGVTdW5TcGlkZXIgPSBmYWxzZQotICAgICAgJGluY2x1ZGVLcmFrZW4g
PSBmYWxzZQotICAgIHdoZW4gJy0ta3Jha2VuLW9ubHknCi0gICAgICAkaW5jbHVkZVN1blNwaWRl
ciA9IGZhbHNlCi0gICAgICAkaW5jbHVkZVY4ID0gZmFsc2UKLSAgICB3aGVuICctLWV4Y2x1ZGUt
c3Vuc3BpZGVyJwotICAgICAgJGluY2x1ZGVTdW5TcGlkZXIgPSBmYWxzZQotICAgIHdoZW4gJy0t
ZXhjbHVkZS12OCcKLSAgICAgICRpbmNsdWRlVjggPSBmYWxzZQotICAgIHdoZW4gJy0tZXhjbHVk
ZS1rcmFrZW4nCi0gICAgICAkaW5jbHVkZUtyYWtlbiA9IGZhbHNlCi0gICAgd2hlbiAnLS1zdW5z
cGlkZXInCi0gICAgICByZXNldEJlbmNoT3B0aW9uc0lmTmVjZXNzYXJ5Ci0gICAgICAkaW5jbHVk
ZVN1blNwaWRlciA9IHRydWUKLSAgICB3aGVuICctLXY4JwotICAgICAgcmVzZXRCZW5jaE9wdGlv
bnNJZk5lY2Vzc2FyeQotICAgICAgJGluY2x1ZGVWOCA9IHRydWUKLSAgICB3aGVuICctLWtyYWtl
bicKLSAgICAgIHJlc2V0QmVuY2hPcHRpb25zSWZOZWNlc3NhcnkKLSAgICAgICRpbmNsdWRlS3Jh
a2VuID0gdHJ1ZQotICAgIHdoZW4gJy0tYmVuY2htYXJrcycKLSAgICAgICRiZW5jaG1hcmtQYXR0
ZXJuID0gUmVnZXhwLm5ldyhhcmcpCi0gICAgd2hlbiAnLS1tZWFzdXJlLWdjJwotICAgICAgaWYg
YXJnID09ICcnCi0gICAgICAgICRtZWFzdXJlR0MgPSB0cnVlCi0gICAgICBlbHNlCi0gICAgICAg
ICRtZWFzdXJlR0MgPSBhcmcKLSAgICAgIGVuZAotICAgIHdoZW4gJy0tbG9hZC1vbmNlJwotICAg
ICAgJGlubmVyTW9kZSA9IDpsb2FkT25jZQotICAgIHdoZW4gJy0ta2VlcC1maWxlcycKLSAgICAg
ICRrZWVwRmlsZXMgPSB0cnVlCi0gICAgd2hlbiAnLS12ZXJib3NlJwotICAgICAgJHZlcmJvc2l0
eSArPSAxCi0gICAgd2hlbiAnLS1icmllZicKLSAgICAgICRicmllZiA9IHRydWUKLSAgICB3aGVu
ICctLXNpbGVudCcKLSAgICAgICRzaWxlbnQgPSB0cnVlCi0gICAgd2hlbiAnLS1yZW1vdGUnCi0g
ICAgICAkcmVtb3RlSG9zdHMgKz0gYXJnLnNwbGl0KCcsJykKLSAgICB3aGVuICctLXNzaC1vcHRp
b25zJwotICAgICAgJHNzaE9wdGlvbnMgPDwgYXJnCi0gICAgd2hlbiAnLS1zbGF2ZScKLSAgICAg
ICRzbGF2ZSA9IHRydWUKLSAgICB3aGVuICctLXZtcycKLSAgICAgIEpTT04ucGFyc2UoRmlsZTo6
cmVhZChhcmcpKS5lYWNoIHsKLSAgICAgICAgfCB2bURlc2NyaXB0b3IgfAotICAgICAgICAkdm1z
IDw8IFZNLm5ldyh2bURlc2NyaXB0b3JbIm9yaWdQYXRoIl0sCi0gICAgICAgICAgICAgICAgICAg
ICAgIHZtRGVzY3JpcHRvclsicGF0aCJdLAotICAgICAgICAgICAgICAgICAgICAgICB2bURlc2Ny
aXB0b3JbIm5hbWUiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgdm1EZXNjcmlwdG9yWyJuYW1l
S2luZCJdLnRvX3N5bSwKLSAgICAgICAgICAgICAgICAgICAgICAgdm1EZXNjcmlwdG9yWyJzdm5S
ZXZpc2lvbiJdKQotICAgICAgfQotICAgIHdoZW4gJy0taGVscCcKLSAgICAgIHVzYWdlCi0gICAg
ZWxzZQotICAgICAgcmFpc2UgImJhZCBvcHRpb246ICN7b3B0fSIKLSAgICBlbmQKLSAgfQotICAK
LSAgU1VOU1BJREVSID0gQmVuY2htYXJrU3VpdGUubmV3KCJTdW5TcGlkZXIiLCBTVU5TUElERVJf
UEFUSCwgOmFyaXRobWV0aWNNZWFuKQotICBbIjNkLWN1YmUiLCAiM2QtbW9ycGgiLCAiM2QtcmF5
dHJhY2UiLCAiYWNjZXNzLWJpbmFyeS10cmVlcyIsCi0gICAiYWNjZXNzLWZhbm5rdWNoIiwgImFj
Y2Vzcy1uYm9keSIsICJhY2Nlc3MtbnNpZXZlIiwKLSAgICJiaXRvcHMtM2JpdC1iaXRzLWluLWJ5
dGUiLCAiYml0b3BzLWJpdHMtaW4tYnl0ZSIsICJiaXRvcHMtYml0d2lzZS1hbmQiLAotICAgImJp
dG9wcy1uc2lldmUtYml0cyIsICJjb250cm9sZmxvdy1yZWN1cnNpdmUiLCAiY3J5cHRvLWFlcyIs
Ci0gICAiY3J5cHRvLW1kNSIsICJjcnlwdG8tc2hhMSIsICJkYXRlLWZvcm1hdC10b2Z0ZSIsICJk
YXRlLWZvcm1hdC14cGFyYiIsCi0gICAibWF0aC1jb3JkaWMiLCAibWF0aC1wYXJ0aWFsLXN1bXMi
LCAibWF0aC1zcGVjdHJhbC1ub3JtIiwgInJlZ2V4cC1kbmEiLAotICAgInN0cmluZy1iYXNlNjQi
LCAic3RyaW5nLWZhc3RhIiwgInN0cmluZy10YWdjbG91ZCIsCi0gICAic3RyaW5nLXVucGFjay1j
b2RlIiwgInN0cmluZy12YWxpZGF0ZS1pbnB1dCJdLmVhY2ggewotICAgIHwgbmFtZSB8Ci0gICAg
U1VOU1BJREVSLmFkZCBTdW5TcGlkZXJCZW5jaG1hcmsubmV3KG5hbWUpCi0gIH0KLQotICBWOCA9
IEJlbmNobWFya1N1aXRlLm5ldygiVjgiLCBWOF9QQVRILCA6Z2VvbWV0cmljTWVhbikKLSAgWyJj
cnlwdG8iLCAiZGVsdGFibHVlIiwgImVhcmxleS1ib3llciIsICJyYXl0cmFjZSIsCi0gICAicmVn
ZXhwIiwgInJpY2hhcmRzIiwgInNwbGF5Il0uZWFjaCB7Ci0gICAgfCBuYW1lIHwKLSAgICBWOC5h
ZGQgVjhCZW5jaG1hcmsubmV3KG5hbWUpCi0gIH0KLQotICBLUkFLRU4gPSBCZW5jaG1hcmtTdWl0
ZS5uZXcoIktyYWtlbiIsIEtSQUtFTl9QQVRILCA6YXJpdGhtZXRpY01lYW4pCi0gIFsiYWktYXN0
YXIiLCAiYXVkaW8tYmVhdC1kZXRlY3Rpb24iLCAiYXVkaW8tZGZ0IiwgImF1ZGlvLWZmdCIsCi0g
ICAiYXVkaW8tb3NjaWxsYXRvciIsICJpbWFnaW5nLWRhcmtyb29tIiwgImltYWdpbmctZGVzYXR1
cmF0ZSIsCi0gICAiaW1hZ2luZy1nYXVzc2lhbi1ibHVyIiwgImpzb24tcGFyc2UtZmluYW5jaWFs
IiwKLSAgICJqc29uLXN0cmluZ2lmeS10aW5kZXJib3giLCAic3RhbmZvcmQtY3J5cHRvLWFlcyIs
Ci0gICAic3RhbmZvcmQtY3J5cHRvLWNjbSIsICJzdGFuZm9yZC1jcnlwdG8tcGJrZGYyIiwKLSAg
ICJzdGFuZm9yZC1jcnlwdG8tc2hhMjU2LWl0ZXJhdGl2ZSJdLmVhY2ggewotICAgIHwgbmFtZSB8
Ci0gICAgS1JBS0VOLmFkZCBLcmFrZW5CZW5jaG1hcmsubmV3KG5hbWUpCi0gIH0KK2VuZAogCi0g
IEFSR1YuZWFjaCB7Ci0gICAgfCB2bSB8Ci0gICAgaWYgdm0gPX4gLyhbYS16QS1aMC05XyBdKyk6
LwotICAgICAgbmFtZSA9ICQxCi0gICAgICBuYW1lS2luZCA9IDpnaXZlbgotICAgICAgdm0gPSAk
fi5wb3N0X21hdGNoCitkZWYgd3JhcChzdHIsIGNvbHVtbnMpCisgIGFycmF5ID0gc3RyLnNwbGl0
CisgIHJlc3VsdCA9ICIiCisgIGN1ckxpbmUgPSBhcnJheS5zaGlmdAorICBhcnJheS5lYWNoIHsK
KyAgICB8IGN1clN0ciB8CisgICAgaWYgKGN1ckxpbmUgKyAiICIgKyBjdXJTdHIpLnNpemUgPiBj
b2x1bW5zCisgICAgICByZXN1bHQgKz0gY3VyTGluZSArICJcbiIKKyAgICAgIGN1ckxpbmUgPSBj
dXJTdHIKICAgICBlbHNlCi0gICAgICBuYW1lID0gIkNvbmZcIyN7JHZtcy5sZW5ndGgrMX0iCi0g
ICAgICBuYW1lS2luZCA9IDphdXRvCisgICAgICBjdXJMaW5lICs9ICIgIiArIGN1clN0cgogICAg
IGVuZAotICAgICRzdGRlcnIucHV0cyAiI3tuYW1lfTogI3t2bX0iIGlmICR2ZXJib3NpdHkgPj0g
MQotICAgICR2bXMgPDwgVk0ubmV3KFBhdGhuYW1lLm5ldyh2bSkucmVhbHBhdGgsIHZtLCBuYW1l
LCBuYW1lS2luZCwgbmlsKQogICB9CisgIHJlc3VsdCArIGN1ckxpbmUgKyAiXG4iCitlbmQKICAg
Ci0gIGlmICR2bXMuZW1wdHk/Ci0gICAgcXVpY2tGYWlsKCJQbGVhc2Ugc3BlY2lmeSBhdCBsZWFz
dCBvbiBjb25maWd1cmFpdG9uIG9uIHRoZSBjb21tYW5kIGxpbmUuIiwKLSAgICAgICAgICAgICAg
Ikluc3VmZmljaWVudCBhcmd1bWVudHMiKQotICBlbmQKLSAgCi0gIGlmICRtZWFzdXJlR0MgYW5k
ICRtZWFzdXJlR0MgIT0gdHJ1ZQotICAgIGZvdW5kID0gZmFsc2UKLSAgICAkdm1zLmVhY2ggewot
ICAgICAgfCB2bSB8Ci0gICAgICBpZiB2bS5uYW1lID09ICRtZWFzdXJlR0MKLSAgICAgICAgZm91
bmQgPSB0cnVlCi0gICAgICBlbmQKLSAgICB9Ci0gICAgdW5sZXNzIGZvdW5kCi0gICAgICAkc3Rk
ZXJyLnB1dHMgIldhcm5pbmc6IC0tbWVhc3VyZS1nYyBvcHRpb24gaWdub3JlZCBiZWNhdXNlIG5v
IFZNIGlzIG5hbWVkICN7JG1lYXN1cmVHQ30iCi0gICAgZW5kCi0gIGVuZAotICAKLSAgaWYgJHRp
bWVNb2RlID09IDphdXRvCi0gICAgaGF2ZVByZWNpc2VUaW1lID0gdHJ1ZQotICAgICR2bXMuZWFj
aCB7Ci0gICAgICB8IHZtIHwKLSAgICAgIGlmIHZtLnZtVHlwZSA9PSA6ZHVtcFJlbmRlclRyZWUK
LSAgICAgICAgJHN0ZGVyci5wdXRzICJXYXJuaW5nOiAje3ZtfSBkb2VzIG5vdCBoYXZlIHByZWNp
c2VUaW1lKCkgYmVjYXVzZSBpdCBpcyBEdW1wUmVuZGVyVHJlZTsgdXNpbmcgRGF0ZS5ub3cgaW5z
dGVhZC4iCi0gICAgICAgIGlmICRyZXJ1biAhPSAxCi0gICAgICAgICAgcXVpY2tGYWlsKCJDYW5u
b3QgdXNlIC0tcmVydW4gd2l0aCBhIER1bXBSZW5kZXJUcmVlIHN0eWxlIFZNLCBiZWNhdXNlIHRo
aXMgc3VwcG9ydCBoYXMgbm90IHlldCBiZWVuIGltcGxlbWVudGVkLiIsICJXcm9uZyBvcHRpb24g
Zm9yIFZNIHR5cGUuIikKLSAgICAgICAgZW5kCi0gICAgICAgIGhhdmVQcmVjaXNlVGltZSA9IGZh
bHNlCi0gICAgICBlbHNlCi0gICAgICAgIFRlbXBmaWxlLm9wZW4oImJlbmNoZXItdGltZXRlc3Qi
KSB7Ci0gICAgICAgICAgfCBmaWxlIHwKLSAgICAgICAgICBkb3VibGVQdXRzKCRzdGRlcnIsZmls
ZSwiI3t2bS5wcmludEZ1bmN0aW9ufShcIlRpbWU6IFwiK3ByZWNpc2VUaW1lKCkpOyIpCi0gICAg
ICAgICAgZmlsZS5mbHVzaAotICAgICAgICAgIHJlc3VsdCA9IG5pbAotICAgICAgICAgIHZtLnJ1
bihmaWxlLnBhdGgpIHsKLSAgICAgICAgICAgIHwgaW5wIHwKLSAgICAgICAgICAgIHJlc3VsdCA9
IGlucC5yZWFkCi0gICAgICAgICAgfQotICAgICAgICAgIHRoaXNWTUhhc1ByZWNpc2VUaW1lID0g
ZmFsc2UKLSAgICAgICAgICBpZiByZXN1bHQgPX4gL1RpbWU6IC8KLSAgICAgICAgICAgIHNlY3Mg
PSAkfi5wb3N0X21hdGNoLnRvX2kKLSAgICAgICAgICAgIGlmIChzZWNzIC0gVGltZS5ub3cudG9f
aSkuYWJzIDwgNQotICAgICAgICAgICAgICB0aGlzVk1IYXNQcmVjaXNlVGltZSA9IHRydWUKLSAg
ICAgICAgICAgIGVuZAotICAgICAgICAgIGVuZAotICAgICAgICAgIHVubGVzcyB0aGlzVk1IYXNQ
cmVjaXNlVGltZQotICAgICAgICAgICAgJHN0ZGVyci5wdXRzICJXYXJuaW5nOiAje3ZtfSBkb2Vz
IG5vdCBoYXZlIHByZWNpc2VUaW1lKCk7IHVzaW5nIERhdGUubm93IGluc3RlYWQuIgotICAgICAg
ICAgICAgaGF2ZVByZWNpc2VUaW1lID0gZmFsc2UKLSAgICAgICAgICBlbmQKLSAgICAgICAgICBm
aWxlLnVubGluayB1bmxlc3MgJGtlZXBGaWxlcwotICAgICAgICB9Ci0gICAgICBlbmQKK2RlZiBy
dW5BbmRHZXRSZXN1bHRzCisgIHJlc3VsdHMgPSBuaWwKKyAgRGlyLmNoZGlyKEJFTkNIX0RBVEFf
UEFUSCkgeworICAgIElPLnBvcGVuKCJzaCAuL3J1bnNjcmlwdCIsICJyIikgeworICAgICAgfCBp
bnAgfAorICAgICAgcmVzdWx0cyA9IGlucC5yZWFkCiAgICAgfQotICAgIAotICAgIGlmIGhhdmVQ
cmVjaXNlVGltZQotICAgICAgJHRpbWVNb2RlID0gOnByZWNpc2VUaW1lCi0gICAgZWxzZQotICAg
ICAgJHRpbWVNb2RlID0gOmRhdGUKLSAgICBlbmQKLSAgZW5kCi0gIAotICBpZiAkb3V0ZXIqJGlu
bmVyID09IDEKLSAgICAkc3RkZXJyLnB1dHMgIldhcm5pbmc6IHdpbGwgb25seSBjb2xsZWN0IG9u
ZSBzYW1wbGUgcGVyIGJlbmNobWFyay9WTS4gIENvbmZpZGVuY2UgaW50ZXJ2YWwgY2FsY3VsYXRp
b24gd2lsbCBmYWlsLiIKLSAgZW5kCi0gIAotICAkc3RkZXJyLnB1dHMgIlVzaW5nIHRpbWVNb2Rl
ID0gI3skdGltZU1vZGV9LiIgaWYgJHZlcmJvc2l0eSA+PSAxCi0gIAotICAkc3VpdGVzID0gW10K
LSAgCi0gIGlmICRpbmNsdWRlU3VuU3BpZGVyIGFuZCBub3QgU1VOU1BJREVSLmVtcHR5PwotICAg
ICRzdWl0ZXMgPDwgU1VOU1BJREVSCi0gIGVuZAotICAKLSAgaWYgJGluY2x1ZGVWOCBhbmQgbm90
IFY4LmVtcHR5PwotICAgICRzdWl0ZXMgPDwgVjgKLSAgZW5kCi0gIAotICBpZiAkaW5jbHVkZUty
YWtlbiBhbmQgbm90IEtSQUtFTi5lbXB0eT8KLSAgICAkc3VpdGVzIDw8IEtSQUtFTgotICBlbmQK
LSAgCi0gICRiZW5jaG1hcmtzID0gW10KLSAgJHN1aXRlcy5lYWNoIHsKLSAgICB8IHN1aXRlIHwK
LSAgICAkYmVuY2htYXJrcyArPSBzdWl0ZS5iZW5jaG1hcmtzCisgICAgcmFpc2UgIlNjcmlwdCBk
aWQgbm90IGNvbXBsZXRlIGNvcnJlY3RseTogI3skP30iIHVubGVzcyAkPy5zdWNjZXNzPworICB9
CisgIHJhaXNlIHVubGVzcyByZXN1bHRzCisgIHJlc3VsdHMKK2VuZAorCitkZWYgcGFyc2VBbmRE
aXNwbGF5UmVzdWx0cyhyZXN1bHRzKQorICB2bVN0YXRzZXMgPSBbXQorICAkdm1zLmVhY2ggewor
ICAgIHZtU3RhdHNlcyA8PCBTdGF0c0FjY3VtdWxhdG9yLm5ldwogICB9CiAgIAotICAkc3VpdGVz
T25WTXMgPSBbXQotICAkc3VpdGVzT25WTXNGb3JTdWl0ZSA9IHt9CisgIHN1aXRlc09uVk1zID0g
W10KKyAgc3VpdGVzT25WTXNGb3JTdWl0ZSA9IHt9CiAgICRzdWl0ZXMuZWFjaCB7CiAgICAgfCBz
dWl0ZSB8Ci0gICAgJHN1aXRlc09uVk1zRm9yU3VpdGVbc3VpdGVdID0gW10KKyAgICBzdWl0ZXNP
blZNc0ZvclN1aXRlW3N1aXRlXSA9IFtdCiAgIH0KLSAgJHN1aXRlc09uVk1zRm9yVk0gPSB7fQor
ICBzdWl0ZXNPblZNc0ZvclZNID0ge30KICAgJHZtcy5lYWNoIHsKICAgICB8IHZtIHwKLSAgICAk
c3VpdGVzT25WTXNGb3JWTVt2bV0gPSBbXQorICAgIHN1aXRlc09uVk1zRm9yVk1bdm1dID0gW10K
ICAgfQogICAKLSAgJGJlbmNobWFya3NPblZNcyA9IFtdCi0gICRiZW5jaG1hcmtzT25WTXNGb3JC
ZW5jaG1hcmsgPSB7fQorICBiZW5jaG1hcmtzT25WTXMgPSBbXQorICBiZW5jaG1hcmtzT25WTXNG
b3JCZW5jaG1hcmsgPSB7fQogICAkYmVuY2htYXJrcy5lYWNoIHsKICAgICB8IGJlbmNobWFyayB8
Ci0gICAgJGJlbmNobWFya3NPblZNc0ZvckJlbmNobWFya1tiZW5jaG1hcmtdID0gW10KKyAgICBi
ZW5jaG1hcmtzT25WTXNGb3JCZW5jaG1hcmtbYmVuY2htYXJrXSA9IFtdCiAgIH0KICAgCi0gICR2
bXMuZWFjaCB7Ci0gICAgfCB2bSB8CisgICR2bXMuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHZt
LCB2bUluZGV4IHwKKyAgICB2bVN0YXRzID0gdm1TdGF0c2VzW3ZtSW5kZXhdCiAgICAgJHN1aXRl
cy5lYWNoIHsKICAgICAgIHwgc3VpdGUgfAotICAgICAgc3VpdGVPblZNID0gU3VpdGVPblZNLm5l
dyh2bSwgc3VpdGUpCi0gICAgICAkc3VpdGVzT25WTXMgPDwgc3VpdGVPblZNCi0gICAgICAkc3Vp
dGVzT25WTXNGb3JTdWl0ZVtzdWl0ZV0gPDwgc3VpdGVPblZNCi0gICAgICAkc3VpdGVzT25WTXNG
b3JWTVt2bV0gPDwgc3VpdGVPblZNCisgICAgICBzdWl0ZU9uVk0gPSBTdWl0ZU9uVk0ubmV3KHZt
LCB2bVN0YXRzLCBzdWl0ZSkKKyAgICAgIHN1aXRlc09uVk1zIDw8IHN1aXRlT25WTQorICAgICAg
c3VpdGVzT25WTXNGb3JTdWl0ZVtzdWl0ZV0gPDwgc3VpdGVPblZNCisgICAgICBzdWl0ZXNPblZN
c0ZvclZNW3ZtXSA8PCBzdWl0ZU9uVk0KICAgICAgIHN1aXRlLmJlbmNobWFya3MuZWFjaCB7CiAg
ICAgICAgIHwgYmVuY2htYXJrIHwKLSAgICAgICAgYmVuY2htYXJrT25WTSA9IEJlbmNobWFya09u
Vk0ubmV3KHZtLCBiZW5jaG1hcmssIHN1aXRlT25WTSkKLSAgICAgICAgJGJlbmNobWFya3NPblZN
cyA8PCBiZW5jaG1hcmtPblZNCi0gICAgICAgICRiZW5jaG1hcmtzT25WTXNGb3JCZW5jaG1hcmtb
YmVuY2htYXJrXSA8PCBiZW5jaG1hcmtPblZNCisgICAgICAgIGJlbmNobWFya09uVk0gPSBCZW5j
aG1hcmtPblZNLm5ldyhiZW5jaG1hcmssIHN1aXRlT25WTSkKKyAgICAgICAgYmVuY2htYXJrc09u
Vk1zIDw8IGJlbmNobWFya09uVk0KKyAgICAgICAgYmVuY2htYXJrc09uVk1zRm9yQmVuY2htYXJr
W2JlbmNobWFya10gPDwgYmVuY2htYXJrT25WTQogICAgICAgfQogICAgIH0KICAgfQogICAKLSAg
dW5sZXNzICRyZW1vdGVIb3N0cy5lbXB0eT8KLSAgICAjIEhhbmRsZSB0aGUgcmVtb3RlIGJlbmNo
bWFya2luZyBjYXNlLgotICAgIAotICAgIHJhaXNlIHVubGVzcyBURU1QX1BBVEgKLSAgICAKLSAg
ICAkc3RkZXJyLnB1dHMgIlBhY2thZ2luZyBWTSBidWlsZHMgZm9yIHJlbW90ZSBob3N0cy4uLiIg
aWYgJHZlcmJvc2l0eT09MAotICAgIAotICAgICMgRmlyc3QgcGFja2FnZSBhbGwgb2YgdGhlIHJl
bGVhc2UgYnVpbGRzLgotICAgICR2bXMuZWFjaF93aXRoX2luZGV4IHsKLSAgICAgIHwgdm0sIGlu
ZGV4IHwKLSAgICAgIHVubGVzcyB2bS5jaGVja291dFBhdGgKLSAgICAgICAgZmFpbCgiQ291bGQg
bm90IGZpZ3VyZSBvdXQgaG93IHRvIHBhY2thZ2UgI3t2bS5uYW1lfSwgYmVjYXVzZSB0aGUgVk0g
dHlwZSB3YXMgbm90IHJlY29nbml6ZWQiLCAiQmFkIFZNIGtpbmQgZm9yIC0tcmVtb3RlIikKLSAg
ICAgIGVuZAotICAgICAgCi0gICAgICBEaXIuY2hkaXIodm0uY2hlY2tvdXRQYXRoICsgIi9XZWJL
aXRCdWlsZCIpIHsKLSAgICAgICAgY21kID0gInRhciAtY3pmICN7VEVNUF9QQVRIfS92bSN7aW5k
ZXh9LnRhci5neiBSZWxlYXNlIgotICAgICAgICAkc3RkZXJyLnB1dHMgIj4+ICN7Y21kfSIgaWYg
JHZlcmJvc2l0eT49MgotICAgICAgICByYWlzZSB1bmxlc3Mgc3lzdGVtKGNtZCkKLSAgICAgIH0K
LSAgICB9Ci0gICAgCi0gICAgIyBOb3cgYWN0dWFsbHkgZ28gdGFsayB0byB0aGUgcmVtb3RlIGhv
c3RzLgotICAgIAotICAgIGRlZiBzc2hSZWFkKGhvc3QsIGNvbW1hbmQpCi0gICAgICBjbWQgPSAi
c3NoICN7JHNzaE9wdGlvbnMuY29sbGVjdHt8eHwgeC5pbnNwZWN0fS5qb2luKCcgJyl9ICN7aG9z
dC5pbnNwZWN0fSAje2NvbW1hbmQuaW5zcGVjdH0iCi0gICAgICAkc3RkZXJyLnB1dHMgIj4+ICN7
Y21kfSIgaWYgJHZlcmJvc2l0eT49MgotICAgICAgcmVzdWx0ID0gIiIKLSAgICAgIElPLnBvcGVu
KGNtZCwgInIiKSB7Ci0gICAgICAgIHwgaW5wIHwKLSAgICAgICAgaW5wLmVhY2hfbGluZSB7Ci0g
ICAgICAgICAgfCBsaW5lIHwKLSAgICAgICAgICAkc3RkZXJyLnB1dHMgIiN7aG9zdH06ICN7bGlu
ZX0iIGlmICR2ZXJib3NpdHk+PTIKLSAgICAgICAgICByZXN1bHQgKz0gbGluZQotICAgICAgICB9
Ci0gICAgICB9Ci0gICAgICByYWlzZSAiI3skP30iIHVubGVzcyAkPy5zdWNjZXNzPwotICAgICAg
cmVzdWx0Ci0gICAgZW5kCi0gICAgCi0gICAgZGVmIHNzaFdyaXRlKGhvc3QsIGNvbW1hbmQsIGRh
dGEpCi0gICAgICBjbWQgPSAic3NoICN7JHNzaE9wdGlvbnMuY29sbGVjdHt8eHwgeC5pbnNwZWN0
fS5qb2luKCcgJyl9ICN7aG9zdC5pbnNwZWN0fSAje2NvbW1hbmQuaW5zcGVjdH0iCi0gICAgICAk
c3RkZXJyLnB1dHMgIj4+ICN7Y21kfSIgaWYgJHZlcmJvc2l0eT49MgotICAgICAgSU8ucG9wZW4o
Y21kLCAidyIpIHsKLSAgICAgICAgfCBvdXRwIHwKLSAgICAgICAgb3V0cC53cml0ZShkYXRhKQot
ICAgICAgfQotICAgICAgcmFpc2UgIiN7JD99IiB1bmxlc3MgJD8uc3VjY2Vzcz8KLSAgICBlbmQK
LSAgICAKLSAgICAkcmVtb3RlSG9zdHMuZWFjaCB7Ci0gICAgICB8IGhvc3QgfAotICAgICAgCi0g
ICAgICAkc3RkZXJyLnB1dHMgIlNlbmRpbmcgVk0gYnVpbGRzIHRvICN7aG9zdH0uLi4iIGlmICR2
ZXJib3NpdHk9PTAKLSAgICAgIAotICAgICAgcmVtb3RlVGVtcFBhdGggPSBKU09OOjpwYXJzZShz
c2hSZWFkKGhvc3QsICJjYXQgfi8uYmVuY2hlciIpKVsidGVtcFBhdGgiXQotICAgICAgcmFpc2Ug
dW5sZXNzIHJlbW90ZVRlbXBQYXRoCi0gICAgICAKLSAgICAgIHNzaFdyaXRlKGhvc3QsICJjZCAj
e3JlbW90ZVRlbXBQYXRoLmluc3BlY3R9ICYmIGNhdCA+IGJlbmNoZXIgJiYgY2htb2QgNzAwIGJl
bmNoZXIiLCBJTzo6cmVhZCgkMCkpCi0gICAgICAKLSAgICAgICR2bXMuc2l6ZS50aW1lcyB7Ci0g
ICAgICAgIHwgaW5kZXggfAotICAgICAgICBzc2hXcml0ZShob3N0LCAiY2QgI3tyZW1vdGVUZW1w
UGF0aC5pbnNwZWN0fSAmJiBybSAtcmYgdm0je2luZGV4fSAmJiBta2RpciB2bSN7aW5kZXh9ICYm
IGNkIHZtI3tpbmRleH0gJiYgdGFyIC14emYgL2Rldi9zdGRpbiIsIElPOjpyZWFkKCIje1RFTVBf
UEFUSH0vdm0je2luZGV4fS50YXIuZ3oiKSkKLSAgICAgIH0KLSAgICAgIAotICAgICAgY29uZmln
PVtdCi0gICAgICAkdm1zLmVhY2hfd2l0aF9pbmRleCB7Ci0gICAgICAgIHwgdm0sIGluZGV4IHwK
LSAgICAgICAgY29uZmlnIDw8IHsKLSAgICAgICAgICAib3JpZ1BhdGgiID0+IHZtLm9yaWdQYXRo
LAotICAgICAgICAgICJwYXRoIiA9PiAiI3tyZW1vdGVUZW1wUGF0aH0vdm0je2luZGV4fS9SZWxl
YXNlL2pzYyIsCi0gICAgICAgICAgIm5hbWUiID0+IHZtLm5hbWUsCi0gICAgICAgICAgIm5hbWVL
aW5kIiA9PiB2bS5uYW1lS2luZC50b19zLAotICAgICAgICAgICJzdm5SZXZpc2lvbiIgPT4gdm0u
c3ZuUmV2aXNpb24KLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgICBzc2hXcml0ZSho
b3N0LCAiY2QgI3tyZW1vdGVUZW1wUGF0aC5pbnNwZWN0fSAmJiAoY2F0ID4gdm1zLmNvbmYpIiwg
Y29uZmlnLnRvX2pzb24pCi0gICAgICAKLSAgICAgICRzdGRlcnIucHV0cyAiUnVubmluZyBvbiAj
e2hvc3R9Li4uIiBpZiAkdmVyYm9zaXR5PT0wCi0gICAgICAKLSAgICAgIGNtZCA9ICJjZCAje3Jl
bW90ZVRlbXBQYXRoLmluc3BlY3R9ICYmIC4vYmVuY2hlciIKLSAgICAgIGNtZCArPSAiIC0tcmVy
dW4gI3skcmVydW59IgotICAgICAgY21kICs9ICIgLS1pbm5lciAjeyRpbm5lcn0iCi0gICAgICBj
bWQgKz0gIiAtLW91dGVyICN7JG91dGVyfSIKLSAgICAgIGNtZCArPSAiIC0td2FybXVwICN7JHdh
cm11cH0iCi0gICAgICBjbWQgKz0gIiAtLXRpbWluZy1tb2RlICN7JHRpbWVNb2RlLnRvX3N9Igot
ICAgICAgY21kICs9ICIgLS1zdW5zcGlkZXIiIGlmICRpbmNsdWRlU3VuU3BpZGVyCi0gICAgICBj
bWQgKz0gIiAtLXY4IiBpZiAkaW5jbHVkZVY4Ci0gICAgICBjbWQgKz0gIiAtLWtyYWtlbiIgaWYg
JGluY2x1ZGVLcmFrZW4KLSAgICAgIGlmICRtZWFzdXJlR0MKLSAgICAgICAgaWYgJG1lYXN1cmVH
QyA9PSB0cnVlCi0gICAgICAgICAgY21kICs9ICIgLS1tZWFzdXJlLWdjIgotICAgICAgICBlbHNl
Ci0gICAgICAgICAgY21kICs9ICIgLS1tZWFzdXJlLWdjICN7JG1lYXN1cmVHQy5pbnNwZWN0fSIK
LSAgICAgICAgZW5kCi0gICAgICBlbmQKLSAgICAgIGlmICR2ZXJib3NpdHk+PTEKLSAgICAgICAg
Y21kICs9ICIgLSIKLSAgICAgICAgJHZlcmJvc2l0eS50aW1lcyB7Ci0gICAgICAgICAgY21kICs9
ICJ2IgotICAgICAgICB9Ci0gICAgICBlbmQKLSAgICAgIGNtZCArPSAiIC0tYnJpZWYiIGlmICRi
cmllZgotICAgICAgY21kICs9ICIgLS1zaWxlbnQiIGlmICRzaWxlbnQKLSAgICAgIGNtZCArPSAi
IC0tc2xhdmUiCi0gICAgICBjbWQgKz0gIiAtLXZtcyAjeyhyZW1vdGVUZW1wUGF0aCsnL3Ztcy5j
b25mJykuaW5zcGVjdH0iCi0gICAgICByZXN1bHQgPSBzc2hSZWFkKGhvc3QsIGNtZCkKLSAgICAg
IHB1dHMgcmVzdWx0Ci0gICAgICBpZiByZXN1bHQgPX4gL0dlbmVyYXRpbmcgYmVuY2htYXJrIHJl
cG9ydCBhdCAoLiopXG5cbi8KLSAgICAgICAgcmVwb3J0TmFtZSA9ICQxCi0gICAgICAgIHJlcG9y
dCA9ICR+LnBvc3RfbWF0Y2gKLSAgICAgICAgRmlsZS5vcGVuKHJlcG9ydE5hbWUsICJ3Iikgewot
ICAgICAgICAgIHwgb3V0cCB8Ci0gICAgICAgICAgb3V0cC5wdXRzIHJlcG9ydAotICAgICAgICB9
Ci0gICAgICBlbmQKLSAgICB9Ci0gICAgCi0gICAgZXhpdCAwCi0gIGVuZAotCi0gICRwbGFucyA9
IFtdCi0gICRiZW5jaG1hcmtzT25WTXMuZWFjaCB7CisgIHBsYW5zID0gW10KKyAgYmVuY2htYXJr
c09uVk1zLmVhY2ggewogICAgIHwgYmVuY2htYXJrT25WTSB8CiAgICAgJG91dGVyLnRpbWVzIHsK
ICAgICAgIHwgaXRlcmF0aW9uIHwKLSAgICAgICRwbGFucyA8PCBCZW5jaFBsYW4ubmV3KGJlbmNo
bWFya09uVk0sIGl0ZXJhdGlvbikKKyAgICAgIHBsYW5zIDw8IEJlbmNoUGxhbi5uZXcoYmVuY2ht
YXJrT25WTSwgaXRlcmF0aW9uKQogICAgIH0KICAgfQotICAKLSAgJHBsYW5zLnNodWZmbGUhCi0g
IAotICAkc3VpdGVwYWQgPSAkc3VpdGVzLmNvbGxlY3QgewotICAgIHwgc3VpdGUgfAotICAgIHN1
aXRlLnRvX3Muc2l6ZQotICB9Lm1heCArIDEKLSAgCi0gICRiZW5jaHBhZCA9ICgkYmVuY2htYXJr
cyArCi0gICAgICAgICAgICAgICBbIjxhcml0aG1ldGljPiAqIiwgIjxnZW9tZXRyaWM+ICoiLCAi
PGhhcm1vbmljPiAqIl0pLmNvbGxlY3QgewotICAgIHwgYmVuY2htYXJrIHwKLSAgICBiZW5jaG1h
cmsudG9fcy5zaXplCi0gIH0ubWF4ICsgMQogCi0gICR2bXBhZCA9ICR2bXMuY29sbGVjdCB7Ci0g
ICAgfCB2bSB8Ci0gICAgdm0udG9fcy5zaXplCi0gIH0ubWF4ICsgMQotCi0gICRwbGFucy5lYWNo
X3dpdGhfaW5kZXggewotICAgIHwgcGxhbiwgaWR4IHwKLSAgICBpZiAkdmVyYm9zaXR5ID09IDAg
YW5kIG5vdCAkc2lsZW50Ci0gICAgICB0ZXh0MSA9IGxwYWQoaWR4LnRvX3MsJHBsYW5zLnNpemUu
dG9fcy5zaXplKSsiLyIrJHBsYW5zLnNpemUudG9fcwotICAgICAgdGV4dDIgPSBwbGFuLnN1aXRl
LnRvX3MrIi8iK3BsYW4uYmVuY2htYXJrLnRvX3MrIi8iK3BsYW4udm0udG9fcwotICAgICAgJHN0
ZGVyci5wcmludCAiXHIje3RleHQxfSAje3JwYWQodGV4dDIsJHN1aXRlcGFkKzErJGJlbmNocGFk
KzErJHZtcGFkKX0iCi0gICAgICAkc3RkZXJyLnByaW50ICJcciN7dGV4dDF9ICN7dGV4dDJ9Igot
ICAgICAgJHN0ZGVyci5mbHVzaAotICAgIGVuZAotICAgIHBsYW4ucnVuQW5kUmVjb3JkCisgIGhv
c3RuYW1lID0gbmlsCisgIGh3bW9kZWwgPSBuaWwKKyAgcmVzdWx0cy5lYWNoX2xpbmUgeworICAg
IHwgbGluZSB8CisgICAgbGluZS5jaG9tcCEKKyAgICBpZiBsaW5lID1+IC9IT1NUTkFNRTooW14u
XSspLworICAgICAgaG9zdG5hbWUgPSAkMQorICAgIGVsc2lmIGxpbmUgPX4gL0hBUkRXQVJFOmh3
XC5tb2RlbDogLworICAgICAgaHdtb2RlbCA9ICR+LnBvc3RfbWF0Y2guY2hvbXAKKyAgICBlbHNl
CisgICAgICByZXN1bHQgPSBQYXJzZWRSZXN1bHQucGFyc2UocGxhbnMsIGxpbmUuY2hvbXApCisg
ICAgICBpZiByZXN1bHQKKyAgICAgICAgcmVzdWx0LnBsYW4ucGFyc2VSZXN1bHQocmVzdWx0KQor
ICAgICAgZW5kCisgICAgZW5kCiAgIH0KICAgCi0gIGlmICR2ZXJib3NpdHkgPT0gMCBhbmQgbm90
ICRzaWxlbnQKLSAgICAkc3RkZXJyLnByaW50ICJcciN7JHBsYW5zLnNpemV9LyN7JHBsYW5zLnNp
emV9ICN7JyAnKigkc3VpdGVwYWQrMSskYmVuY2hwYWQrMSskdm1wYWQpfSIKLSAgICAkc3RkZXJy
LnB1dHMgIlxyI3skcGxhbnMuc2l6ZX0vI3skcGxhbnMuc2l6ZX0iCi0gIGVuZAotICAKICAgIyBD
b21wdXRlIHRoZSBnZW9tZWFuIG9mIHRoZSBwcmVmZXJyZWQgbWVhbnMgb2YgcmVzdWx0cyBvbiBh
IFN1aXRlT25WTQotICAkb3ZlcmFsbFJlc3VsdHMgPSBbXQorICBvdmVyYWxsUmVzdWx0cyA9IFtd
CiAgICR2bXMuZWFjaCB7CiAgICAgfCB2bSB8CiAgICAgcmVzdWx0ID0gU3RhdHMubmV3CkBAIC0x
Njk4LDcgKzEzOTEsNyBAQCBiZWdpbgogICAgICAgJGlubmVyLnRpbWVzIHsKICAgICAgICAgfCBp
bm5lckluZGV4IHwKICAgICAgICAgY3VyUmVzdWx0ID0gU3RhdHMubmV3Ci0gICAgICAgICRzdWl0
ZXNPblZNc0ZvclZNW3ZtXS5lYWNoIHsKKyAgICAgICAgc3VpdGVzT25WTXNGb3JWTVt2bV0uZWFj
aCB7CiAgICAgICAgICAgfCBzdWl0ZU9uVk0gfAogICAgICAgICAgICMgRm9yIGEgZ2l2ZW4gaXRl
cmF0aW9uLCBzdWl0ZSwgYW5kIFZNLCBjb21wdXRlIHRoZSBzdWl0ZSdzIHByZWZlcnJlZCBtZWFu
CiAgICAgICAgICAgIyBvdmVyIHRoZSBkYXRhIGNvbGxlY3RlZCBmb3IgYWxsIGJlbmNobWFya3Mg
aW4gdGhhdCBzdWl0ZS4gV2UnbGwgaGF2ZSBvbmUKQEAgLTE3MTgsMTkgKzE0MTEsMjAgQEAgYmVn
aW4KICAgICAjICRpbm5lciokb3V0ZXIgZ2VvbWVhbnMsIGFsbG93aW5nIHVzIHRvIGNvbXB1dGUg
dGhlIGFyaXRobWV0aWMgbWVhbiBhbmQKICAgICAjIGNvbmZpZGVuY2UgaW50ZXJ2YWwgb2YgdGhl
IGdlb21lYW5zIG9mIHByZWZlcnJlZCBtZWFucy4gQ29udm9sdXRlZCwgYnV0CiAgICAgIyB1c2Vm
dWwgYW5kIHByb2JhYmx5IHNvdW5kLgotICAgICRvdmVyYWxsUmVzdWx0cyA8PCByZXN1bHQKKyAg
ICBvdmVyYWxsUmVzdWx0cyA8PCByZXN1bHQKICAgfQogICAKICAgaWYgJHZlcmJvc2l0eSA+PSAy
Ci0gICAgJGJlbmNobWFya3NPblZNcy5lYWNoIHsKKyAgICBiZW5jaG1hcmtzT25WTXMuZWFjaCB7
CiAgICAgICB8IGJlbmNobWFya09uVk0gfAogICAgICAgJHN0ZGVyci5wdXRzICIje2JlbmNobWFy
a09uVk19OiAje2JlbmNobWFya09uVk0uc3RhdHN9IgogICAgIH0KICAgICAKLSAgICAkdm1zLmVh
Y2ggewotICAgICAgfCB2bSB8Ci0gICAgICAkc3RkZXJyLnB1dHMgIiN7dm19IChhcml0aG1ldGlj
TWVhbik6ICN7dm0uYXJpdGhtZXRpY01lYW5TdGF0c30iCi0gICAgICAkc3RkZXJyLnB1dHMgIiN7
dm19IChnZW9tZXRyaWNNZWFuKTogI3t2bS5nZW9tZXRyaWNNZWFuU3RhdHN9IgorICAgICR2bXMu
ZWFjaF93aXRoX2luZGV4IHsKKyAgICAgIHwgdm0sIHZtSW5kZXggfAorICAgICAgdm1TdGF0cyA9
IHZtU3RhdHNlc1t2bUluZGV4XQorICAgICAgJHN0ZGVyci5wdXRzICIje3ZtfSAoYXJpdGhtZXRp
Y01lYW4pOiAje3ZtU3RhdHMuYXJpdGhtZXRpY01lYW5TdGF0c30iCisgICAgICAkc3RkZXJyLnB1
dHMgIiN7dm19IChnZW9tZXRyaWNNZWFuKTogI3t2bVN0YXRzLmdlb21ldHJpY01lYW5TdGF0c30i
CiAgICAgfQogICBlbmQKIApAQCAtMTc1MCw2ICsxNDQ0LDExIEBAIGJlZ2luCiAgICAgICAgfCBz
dWl0ZSB8CiAgICAgICAgc3VpdGUudG9fcwogICAgICB9LmpvaW4oIiIpKSArICJfIiArCisgICAg
KGlmIGhvc3RuYW1lCisgICAgICAgaG9zdG5hbWUgKyAiXyIKKyAgICAgZWxzZQorICAgICAgICIi
CisgICAgIGVuZCkrCiAgICAgKGJlZ2luCiAgICAgICAgdGltZSA9IFRpbWUubm93CiAgICAgICAg
IiUwNGQlMDJkJTAyZF8lMDJkJTAyZCIgJQpAQCAtMTc4NSwyMzcgKzE0ODQsNjEzIEBAIGJlZ2lu
CiAgICAgcmVzdWx0ICs9ICIgICAgIgogICAgIGlmICR2bXMuc2l6ZSA+PSAzCiAgICAgICByZXN1
bHQgKz0gY2VudGVyKCIjeyR2bXNbLTFdLm5hbWV9IHYuICN7JHZtc1swXS5uYW1lfSIsMjYpCisg
ICAgZWxzaWYgJHZtcy5zaXplID49IDIKKyAgICAgIHJlc3VsdCArPSAiICIqMjYKKyAgICBlbmQK
KyAgICByZXN1bHQKKyAgZW5kCisgIAorICBjb2x1bW5zID0gW2NyZWF0ZVZNc1N0cmluZy5zaXpl
LCA3OF0ubWF4CisgIAorICBvdXRwLnByaW50ICJCZW5jaG1hcmsgcmVwb3J0IGZvciAiCisgIGlm
ICRzdWl0ZXMuc2l6ZSA9PSAxCisgICAgb3V0cC5wcmludCAkc3VpdGVzWzBdLnRvX3MKKyAgZWxz
aWYgJHN1aXRlcy5zaXplID09IDIKKyAgICBvdXRwLnByaW50ICIjeyRzdWl0ZXNbMF19IGFuZCAj
eyRzdWl0ZXNbMV19IgorICBlbHNlCisgICAgb3V0cC5wcmludCAiI3skc3VpdGVzWzAuLi0yXS5q
b2luKCcsICcpfSwgYW5kICN7JHN1aXRlc1stMV19IgorICBlbmQKKyAgaWYgaG9zdG5hbWUKKyAg
ICBvdXRwLnByaW50ICIgb24gI3tob3N0bmFtZX0iCisgIGVuZAorICBpZiBod21vZGVsCisgICAg
b3V0cC5wcmludCAiICgje2h3bW9kZWx9KSIKKyAgZW5kCisgIG91dHAucHV0cyAiLiIKKyAgb3V0
cC5wdXRzCisgIAorICAjIFRoaXMgbG9va3Mgc3R1cGlkOyByZXZpc2l0IGxhdGVyLgorICBpZiBm
YWxzZQorICAgICRzdWl0ZXMuZWFjaCB7CisgICAgICB8IHN1aXRlIHwKKyAgICAgIG91dHAucHV0
cyAiI3tzdWl0ZX0gYXQgI3tzdWl0ZS5wYXRofSIKKyAgICB9CisgICAgCisgICAgb3V0cC5wdXRz
CisgIGVuZAorICAKKyAgb3V0cC5wdXRzICJWTXMgdGVzdGVkOiIKKyAgJHZtcy5lYWNoIHsKKyAg
ICB8IHZtIHwKKyAgICBvdXRwLnByaW50ICJcIiN7dm0ubmFtZX1cIiBhdCAje3ZtLm9yaWdQYXRo
fSIKKyAgICBpZiB2bS5zdm5SZXZpc2lvbgorICAgICAgb3V0cC5wcmludCAiIChyI3t2bS5zdm5S
ZXZpc2lvbn0pIgorICAgIGVuZAorICAgIG91dHAucHV0cworICB9CisgIAorICBvdXRwLnB1dHMK
KyAgCisgIG91dHAucHV0cyB3cmFwKCJDb2xsZWN0ZWQgI3skb3V0ZXIqJGlubmVyfSBzYW1wbGUj
e3BsdXJhbCgkb3V0ZXIqJGlubmVyKX0gcGVyIGJlbmNobWFyay9WTSwgIisKKyAgICAgICAgICAg
ICAgICAgIndpdGggI3skb3V0ZXJ9IFZNIGludm9jYXRpb24je3BsdXJhbCgkb3V0ZXIpfSBwZXIg
YmVuY2htYXJrLiIrCisgICAgICAgICAgICAgICAgIChpZiAkcmVydW4gPiAxIHRoZW4gKCIgUmFu
ICN7JHJlcnVufSBiZW5jaG1hcmsgaXRlcmF0aW9ucywgYW5kIG1lYXN1cmVkIHRoZSAiKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG90YWwgdGltZSBvZiB0aG9zZSBp
dGVyYXRpb25zLCBmb3IgZWFjaCBzYW1wbGUuIikKKyAgICAgICAgICAgICAgICAgIGVsc2UgIiIg
ZW5kKSsKKyAgICAgICAgICAgICAgICAgKGlmICRtZWFzdXJlR0MgPT0gdHJ1ZSB0aGVuICgiIE5v
IG1hbnVhbCBnYXJiYWdlIGNvbGxlY3Rpb24gaW52b2NhdGlvbnMgd2VyZSAiKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbWl0dGVkLiIpCisgICAgICAg
ICAgICAgICAgICBlbHNpZiAkbWVhc3VyZUdDIHRoZW4gKCIgRW1pdHRlZCBhIGNhbGwgdG8gZ2Mo
KSBiZXR3ZWVuIHNhbXBsZSBtZWFzdXJlbWVudHMgZm9yICIrCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJhbGwgVk1zIGV4Y2VwdCAjeyRtZWFzdXJlR0N9LiIpCisg
ICAgICAgICAgICAgICAgICBlbHNlICgiIEVtaXR0ZWQgYSBjYWxsIHRvIGdjKCkgYmV0d2VlbiBz
YW1wbGUgbWVhc3VyZW1lbnRzLiIpIGVuZCkrCisgICAgICAgICAgICAgICAgIChpZiAkd2FybXVw
ID09IDAgdGhlbiAoIiBEaWQgbm90IGluY2x1ZGUgYW55IHdhcm0tdXAgaXRlcmF0aW9uczsgbWVh
c3VyZW1lbnRzICIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJl
Z2FuIHdpdGggdGhlIHZlcnkgZmlyc3QgaXRlcmF0aW9uLiIpCisgICAgICAgICAgICAgICAgICBl
bHNlICgiIFVzZWQgI3skd2FybXVwKiRyZXJ1bn0gYmVuY2htYXJrIGl0ZXJhdGlvbiN7cGx1cmFs
KCR3YXJtdXAqJHJlcnVuKX0gcGVyIFZNICIrCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52
b2NhdGlvbiBmb3Igd2FybS11cC4iKSBlbmQpKworICAgICAgICAgICAgICAgICAoY2FzZSAkdGlt
ZU1vZGUKKyAgICAgICAgICAgICAgICAgIHdoZW4gOnByZWNpc2VUaW1lIHRoZW4gKCIgVXNlZCB0
aGUganNjLXNwZWNpZmljIHByZWNpc2VUaW1lKCkgZnVuY3Rpb24gdG8gZ2V0ICIrCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9zZWNvbmQtbGV2ZWwgdGlt
aW5nLiIpCisgICAgICAgICAgICAgICAgICB3aGVuIDpkYXRlIHRoZW4gKCIgVXNlZCB0aGUgcG9y
dGFibGUgRGF0ZS5ub3coKSBtZXRob2QgdG8gZ2V0IG1pbGxpc2Vjb25kLSIrCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJsZXZlbCB0aW1pbmcuIikKKyAgICAgICAgICAgICAg
ICAgIGVsc2UgcmFpc2UgZW5kKSsKKyAgICAgICAgICAgICAgICAgIiBSZXBvcnRpbmcgYmVuY2ht
YXJrIGV4ZWN1dGlvbiB0aW1lcyB3aXRoIDk1JSBjb25maWRlbmNlICIrCisgICAgICAgICAgICAg
ICAgICJpbnRlcnZhbHMgaW4gbWlsbGlzZWNvbmRzLiIsCisgICAgICAgICAgICAgICAgIGNvbHVt
bnMpCisgIAorICBvdXRwLnB1dHMKKyAgCisgIGRlZiBwcmludFZNcyhvdXRwKQorICAgIG91dHAu
cHV0cyBjcmVhdGVWTXNTdHJpbmcKKyAgZW5kCisgIAorICBkZWYgc3VtbWFyeVN0YXRzKG91dHAs
IGFjY3VtdWxhdG9ycywgbmFtZSwgJnByb2MpCisgICAgb3V0cC5wcmludCAiICAgIiBpZiAkc3Vp
dGVzLnNpemUgPiAxCisgICAgb3V0cC5wcmludCBycGFkKG5hbWUsICRiZW5jaHBhZCkKKyAgICBv
dXRwLnByaW50ICIgIgorICAgIGFjY3VtdWxhdG9ycy5zaXplLnRpbWVzIHsKKyAgICAgIHwgaW5k
ZXggfAorICAgICAgaWYgaW5kZXggIT0gMAorICAgICAgICBvdXRwLnByaW50ICIgIithY2N1bXVs
YXRvcnNbaW5kZXhdLnN0YXRzKCZwcm9jKS5jb21wYXJlVG8oYWNjdW11bGF0b3JzW2luZGV4LTFd
LnN0YXRzKCZwcm9jKSkuc2hvcnRGb3JtCisgICAgICBlbmQKKyAgICAgIG91dHAucHJpbnQgc3Rh
dHNUb1N0cihhY2N1bXVsYXRvcnNbaW5kZXhdLnN0YXRzKCZwcm9jKSkKKyAgICB9CisgICAgaWYg
YWNjdW11bGF0b3JzLnNpemU+PTIKKyAgICAgIG91dHAucHJpbnQoIiAgICAiK2FjY3VtdWxhdG9y
c1stMV0uc3RhdHMoJnByb2MpLmNvbXBhcmVUbyhhY2N1bXVsYXRvcnNbMF0uc3RhdHMoJnByb2Mp
KS5sb25nRm9ybSkKKyAgICBlbmQKKyAgICBvdXRwLnB1dHMKKyAgZW5kCisgIAorICBkZWYgbWVh
bk5hbWUoY3VycmVudE1lYW4sIHByZWZlcnJlZE1lYW4pCisgICAgcmVzdWx0ID0gIjwje2N1cnJl
bnRNZWFufT4iCisgICAgaWYgIiN7Y3VycmVudE1lYW59TWVhbiIgPT0gcHJlZmVycmVkTWVhbi50
b19zCisgICAgICByZXN1bHQgKz0gIiAqIgorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAg
CisgIGRlZiBhbGxTdW1tYXJ5U3RhdHMob3V0cCwgYWNjdW11bGF0b3JzLCBwcmVmZXJyZWRNZWFu
KQorICAgIHN1bW1hcnlTdGF0cyhvdXRwLCBhY2N1bXVsYXRvcnMsIG1lYW5OYW1lKCJhcml0aG1l
dGljIiwgcHJlZmVycmVkTWVhbikpIHsKKyAgICAgIHwgc3RhdCB8CisgICAgICBzdGF0LmFyaXRo
bWV0aWNNZWFuCisgICAgfQorICAgIAorICAgIHN1bW1hcnlTdGF0cyhvdXRwLCBhY2N1bXVsYXRv
cnMsIG1lYW5OYW1lKCJnZW9tZXRyaWMiLCBwcmVmZXJyZWRNZWFuKSkgeworICAgICAgfCBzdGF0
IHwKKyAgICAgIHN0YXQuZ2VvbWV0cmljTWVhbgorICAgIH0KKyAgICAKKyAgICBzdW1tYXJ5U3Rh
dHMob3V0cCwgYWNjdW11bGF0b3JzLCBtZWFuTmFtZSgiaGFybW9uaWMiLCBwcmVmZXJyZWRNZWFu
KSkgeworICAgICAgfCBzdGF0IHwKKyAgICAgIHN0YXQuaGFybW9uaWNNZWFuCisgICAgfQorICBl
bmQKKyAgCisgICRzdWl0ZXMuZWFjaCB7CisgICAgfCBzdWl0ZSB8CisgICAgcHJpbnRWTXMob3V0
cCkKKyAgICBpZiAkc3VpdGVzLnNpemUgPiAxCisgICAgICBvdXRwLnB1dHMgIiN7c3VpdGUubmFt
ZX06IgorICAgIGVsc2UKKyAgICAgIG91dHAucHV0cworICAgIGVuZAorICAgIHN1aXRlLmJlbmNo
bWFya3MuZWFjaCB7CisgICAgICB8IGJlbmNobWFyayB8CisgICAgICBvdXRwLnByaW50ICIgICAi
IGlmICRzdWl0ZXMuc2l6ZSA+IDEKKyAgICAgIG91dHAucHJpbnQgcnBhZChiZW5jaG1hcmsubmFt
ZSwgJGJlbmNocGFkKQorICAgICAgb3V0cC5wcmludCAiICIKKyAgICAgIG15Q29uZmlncyA9IGJl
bmNobWFya3NPblZNc0ZvckJlbmNobWFya1tiZW5jaG1hcmtdCisgICAgICBteUNvbmZpZ3Muc2l6
ZS50aW1lcyB7CisgICAgICAgIHwgaW5kZXggfAorICAgICAgICBpZiBpbmRleCAhPSAwCisgICAg
ICAgICAgb3V0cC5wcmludCAiICIrbXlDb25maWdzW2luZGV4XS5zdGF0cy5jb21wYXJlVG8obXlD
b25maWdzW2luZGV4LTFdLnN0YXRzKS5zaG9ydEZvcm0KKyAgICAgICAgZW5kCisgICAgICAgIG91
dHAucHJpbnQgc3RhdHNUb1N0cihteUNvbmZpZ3NbaW5kZXhdLnN0YXRzKQorICAgICAgfQorICAg
ICAgaWYgJHZtcy5zaXplPj0yCisgICAgICAgIG91dHAucHJpbnQoIiAgICAiK215Q29uZmlnc1st
MV0uc3RhdHMuY29tcGFyZVRvKG15Q29uZmlnc1swXS5zdGF0cykudG9fcykKKyAgICAgIGVuZAor
ICAgICAgb3V0cC5wdXRzCisgICAgfQorICAgIG91dHAucHV0cworICAgIGFsbFN1bW1hcnlTdGF0
cyhvdXRwLCBzdWl0ZXNPblZNc0ZvclN1aXRlW3N1aXRlXSwgc3VpdGUucHJlZmVycmVkTWVhbikK
KyAgICBvdXRwLnB1dHMgaWYgJHN1aXRlcy5zaXplID4gMQorICB9CisgIAorICBpZiAkc3VpdGVz
LnNpemUgPiAxCisgICAgcHJpbnRWTXMob3V0cCkKKyAgICBvdXRwLnB1dHMgIkFsbCBiZW5jaG1h
cmtzOiIKKyAgICBhbGxTdW1tYXJ5U3RhdHMob3V0cCwgdm1TdGF0c2VzLCBuaWwpCisgICAgCisg
ICAgb3V0cC5wdXRzCisgICAgcHJpbnRWTXMob3V0cCkKKyAgICBvdXRwLnB1dHMgIkdlb21lYW4g
b2YgcHJlZmVycmVkIG1lYW5zOiIKKyAgICBvdXRwLnByaW50ICIgICAiCisgICAgb3V0cC5wcmlu
dCBycGFkKCI8c2NhbGVkLXJlc3VsdD4iLCAkYmVuY2hwYWQpCisgICAgb3V0cC5wcmludCAiICIK
KyAgICAkdm1zLnNpemUudGltZXMgeworICAgICAgfCBpbmRleCB8CisgICAgICBpZiBpbmRleCAh
PSAwCisgICAgICAgIG91dHAucHJpbnQgIiAiK292ZXJhbGxSZXN1bHRzW2luZGV4XS5jb21wYXJl
VG8ob3ZlcmFsbFJlc3VsdHNbaW5kZXgtMV0pLnNob3J0Rm9ybQorICAgICAgZW5kCisgICAgICBv
dXRwLnByaW50IHN0YXRzVG9TdHIob3ZlcmFsbFJlc3VsdHNbaW5kZXhdKQorICAgIH0KKyAgICBp
ZiBvdmVyYWxsUmVzdWx0cy5zaXplPj0yCisgICAgICBvdXRwLnByaW50KCIgICAgIitvdmVyYWxs
UmVzdWx0c1stMV0uY29tcGFyZVRvKG92ZXJhbGxSZXN1bHRzWzBdKS5sb25nRm9ybSkKKyAgICBl
bmQKKyAgICBvdXRwLnB1dHMKKyAgZW5kCisgIG91dHAucHV0cworICAKKyAgaWYgb3V0cCAhPSAk
c3Rkb3V0CisgICAgb3V0cC5jbG9zZQorICBlbmQKKyAgCisgIGlmIG91dHAgIT0gJHN0ZG91dCBh
bmQgbm90ICRicmllZgorICAgIHB1dHMKKyAgICBGaWxlLm9wZW4ocmVwb3J0TmFtZSkgeworICAg
ICAgfCBpbnAgfAorICAgICAgcHV0cyBpbnAucmVhZAorICAgIH0KKyAgZW5kCisgIAorICBpZiAk
YnJpZWYKKyAgICBwdXRzKG92ZXJhbGxSZXN1bHRzLmNvbGxlY3R7fHN0YXRzfCBzdGF0cy5tZWFu
fS5qb2luKCJcdCIpKQorICAgIHB1dHMob3ZlcmFsbFJlc3VsdHMuY29sbGVjdHt8c3RhdHN8IHN0
YXRzLmNvbmZJbnR9LmpvaW4oIlx0IikpCisgIGVuZAorICAKKyAgCitlbmQKKworYmVnaW4KKyAg
JHNhd0JlbmNoT3B0aW9ucyA9IGZhbHNlCisgIAorICBkZWYgcmVzZXRCZW5jaE9wdGlvbnNJZk5l
Y2Vzc2FyeQorICAgIHVubGVzcyAkc2F3QmVuY2hPcHRpb25zCisgICAgICAkaW5jbHVkZVN1blNw
aWRlciA9IGZhbHNlCisgICAgICAkaW5jbHVkZVY4ID0gZmFsc2UKKyAgICAgICRpbmNsdWRlS3Jh
a2VuID0gZmFsc2UKKyAgICAgICRzYXdCZW5jaE9wdGlvbnMgPSB0cnVlCisgICAgZW5kCisgIGVu
ZAorICAKKyAgR2V0b3B0TG9uZy5uZXcoWyctLXJlcnVuJywgR2V0b3B0TG9uZzo6UkVRVUlSRURf
QVJHVU1FTlRdLAorICAgICAgICAgICAgICAgICBbJy0taW5uZXInLCBHZXRvcHRMb25nOjpSRVFV
SVJFRF9BUkdVTUVOVF0sCisgICAgICAgICAgICAgICAgIFsnLS1vdXRlcicsIEdldG9wdExvbmc6
OlJFUVVJUkVEX0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgICAgWyctLXdhcm11cCcsIEdldG9w
dExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgICAgWyctLXRpbWluZy1t
b2RlJywgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAorICAgICAgICAgICAgICAgICBb
Jy0tc3Vuc3BpZGVyLW9ubHknLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCisgICAgICAgICAg
ICAgICAgIFsnLS12OC1vbmx5JywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAorICAgICAgICAg
ICAgICAgICBbJy0ta3Jha2VuLW9ubHknLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCisgICAg
ICAgICAgICAgICAgIFsnLS1leGNsdWRlLXN1bnNwaWRlcicsIEdldG9wdExvbmc6Ok5PX0FSR1VN
RU5UXSwKKyAgICAgICAgICAgICAgICAgWyctLWV4Y2x1ZGUtdjgnLCBHZXRvcHRMb25nOjpOT19B
UkdVTUVOVF0sCisgICAgICAgICAgICAgICAgIFsnLS1leGNsdWRlLWtyYWtlbicsIEdldG9wdExv
bmc6Ok5PX0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgICAgWyctLXN1bnNwaWRlcicsIEdldG9w
dExvbmc6Ok5PX0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgICAgWyctLXY4JywgR2V0b3B0TG9u
Zzo6Tk9fQVJHVU1FTlRdLAorICAgICAgICAgICAgICAgICBbJy0ta3Jha2VuJywgR2V0b3B0TG9u
Zzo6Tk9fQVJHVU1FTlRdLAorICAgICAgICAgICAgICAgICBbJy0tYmVuY2htYXJrcycsIEdldG9w
dExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgICAgWyctLW1lYXN1cmUt
Z2MnLCBHZXRvcHRMb25nOjpPUFRJT05BTF9BUkdVTUVOVF0sCisgICAgICAgICAgICAgICAgIFsn
LS1mb3JjZS12bS1raW5kJywgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAorICAgICAg
ICAgICAgICAgICBbJy0tZm9yY2Utdm0tY29weScsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwK
KyAgICAgICAgICAgICAgICAgWyctLWRvbnQtY29weS12bXMnLCBHZXRvcHRMb25nOjpOT19BUkdV
TUVOVF0sCisgICAgICAgICAgICAgICAgIFsnLS12ZXJib3NlJywgJy12JywgR2V0b3B0TG9uZzo6
Tk9fQVJHVU1FTlRdLAorICAgICAgICAgICAgICAgICBbJy0tYnJpZWYnLCBHZXRvcHRMb25nOjpO
T19BUkdVTUVOVF0sCisgICAgICAgICAgICAgICAgIFsnLS1zaWxlbnQnLCBHZXRvcHRMb25nOjpO
T19BUkdVTUVOVF0sCisgICAgICAgICAgICAgICAgIFsnLS1yZW1vdGUnLCBHZXRvcHRMb25nOjpS
RVFVSVJFRF9BUkdVTUVOVF0sCisgICAgICAgICAgICAgICAgIFsnLS1sb2NhbCcsIEdldG9wdExv
bmc6Ok5PX0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgICAgWyctLXNzaC1vcHRpb25zJywgR2V0
b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAorICAgICAgICAgICAgICAgICBbJy0tc2xhdmUn
LCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCisgICAgICAgICAgICAgICAgIFsnLS1wcmVwYXJl
LW9ubHknLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCisgICAgICAgICAgICAgICAgIFsnLS1h
bmFseXplJywgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAorICAgICAgICAgICAgICAg
ICBbJy0tdm1zJywgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAorICAgICAgICAgICAg
ICAgICBbJy0taGVscCcsICctaCcsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSkuZWFjaCB7Cisg
ICAgfCBvcHQsIGFyZyB8CisgICAgY2FzZSBvcHQKKyAgICB3aGVuICctLXJlcnVuJworICAgICAg
JHJlcnVuID0gaW50QXJnKG9wdCxhcmcsMSxuaWwpCisgICAgd2hlbiAnLS1pbm5lcicKKyAgICAg
ICRpbm5lciA9IGludEFyZyhvcHQsYXJnLDEsbmlsKQorICAgIHdoZW4gJy0tb3V0ZXInCisgICAg
ICAkb3V0ZXIgPSBpbnRBcmcob3B0LGFyZywxLG5pbCkKKyAgICB3aGVuICctLXdhcm11cCcKKyAg
ICAgICR3YXJtdXAgPSBpbnRBcmcob3B0LGFyZywwLG5pbCkKKyAgICB3aGVuICctLXRpbWluZy1t
b2RlJworICAgICAgaWYgYXJnLnVwY2FzZSA9PSAiUFJFQ0lTRVRJTUUiCisgICAgICAgICR0aW1l
TW9kZSA9IDpwcmVjaXNlVGltZQorICAgICAgZWxzaWYgYXJnLnVwY2FzZSA9PSAiREFURSIKKyAg
ICAgICAgJHRpbWVNb2RlID0gOmRhdGUKKyAgICAgIGVsc2lmIGFyZy51cGNhc2UgPT0gIkFVVE8i
CisgICAgICAgICR0aW1lTW9kZSA9IDphdXRvCisgICAgICBlbHNlCisgICAgICAgIHF1aWNrRmFp
bCgiRXhwZWN0ZWQgZWl0aGVyICdwcmVjaXNlVGltZScsICdkYXRlJywgb3IgJ2F1dG8nIGZvciAt
LXRpbWUtbW9kZSwgYnV0IGdvdCAnI3thcmd9Jy4iLAorICAgICAgICAgICAgICAgICAgIkludmFs
aWQgYXJndW1lbnQgZm9yIGNvbW1hbmQtbGluZSBvcHRpb24iKQorICAgICAgZW5kCisgICAgd2hl
biAnLS1mb3JjZS12bS1raW5kJworICAgICAgaWYgYXJnLnVwY2FzZSA9PSAiSlNDIgorICAgICAg
ICAkZm9yY2VWTUtpbmQgPSA6anNjCisgICAgICBlbHNpZiBhcmcudXBjYXNlID09ICJEVU1QUkVO
REVSVFJFRSIKKyAgICAgICAgJGZvcmNlVk1LaW5kID0gOmR1bXBSZW5kZXJUcmVlCisgICAgICBl
bHNpZiBhcmcudXBjYXNlID09ICJBVVRPIgorICAgICAgICAkZm9yY2VWTUtpbmQgPSBuaWwKKyAg
ICAgIGVsc2UKKyAgICAgICAgcXVpY2tGYWlsKCJFeHBlY3RlZCBlaXRoZXIgJ2pzYycgb3IgJ0R1
bXBSZW5kZXJUcmVlJyBmb3IgLS1mb3JjZS12bS1raW5kLCBidXQgZ290ICcje2FyZ30nLiIsCisg
ICAgICAgICAgICAgICAgICAiSW52YWxpZCBhcmd1bWVudCBmb3IgY29tbWFuZC1saW5lIG9wdGlv
biIpCisgICAgICBlbmQKKyAgICB3aGVuICctLWZvcmNlLXZtLWNvcHknCisgICAgICAkbmVlZFRv
Q29weVZNcyA9IHRydWUKKyAgICB3aGVuICctLWRvbnQtY29weS12bXMnCisgICAgICAkZG9udENv
cHlWTXMgPSB0cnVlCisgICAgd2hlbiAnLS1zdW5zcGlkZXItb25seScKKyAgICAgICRpbmNsdWRl
VjggPSBmYWxzZQorICAgICAgJGluY2x1ZGVLcmFrZW4gPSBmYWxzZQorICAgIHdoZW4gJy0tdjgt
b25seScKKyAgICAgICRpbmNsdWRlU3VuU3BpZGVyID0gZmFsc2UKKyAgICAgICRpbmNsdWRlS3Jh
a2VuID0gZmFsc2UKKyAgICB3aGVuICctLWtyYWtlbi1vbmx5JworICAgICAgJGluY2x1ZGVTdW5T
cGlkZXIgPSBmYWxzZQorICAgICAgJGluY2x1ZGVWOCA9IGZhbHNlCisgICAgd2hlbiAnLS1leGNs
dWRlLXN1bnNwaWRlcicKKyAgICAgICRpbmNsdWRlU3VuU3BpZGVyID0gZmFsc2UKKyAgICB3aGVu
ICctLWV4Y2x1ZGUtdjgnCisgICAgICAkaW5jbHVkZVY4ID0gZmFsc2UKKyAgICB3aGVuICctLWV4
Y2x1ZGUta3Jha2VuJworICAgICAgJGluY2x1ZGVLcmFrZW4gPSBmYWxzZQorICAgIHdoZW4gJy0t
c3Vuc3BpZGVyJworICAgICAgcmVzZXRCZW5jaE9wdGlvbnNJZk5lY2Vzc2FyeQorICAgICAgJGlu
Y2x1ZGVTdW5TcGlkZXIgPSB0cnVlCisgICAgd2hlbiAnLS12OCcKKyAgICAgIHJlc2V0QmVuY2hP
cHRpb25zSWZOZWNlc3NhcnkKKyAgICAgICRpbmNsdWRlVjggPSB0cnVlCisgICAgd2hlbiAnLS1r
cmFrZW4nCisgICAgICByZXNldEJlbmNoT3B0aW9uc0lmTmVjZXNzYXJ5CisgICAgICAkaW5jbHVk
ZUtyYWtlbiA9IHRydWUKKyAgICB3aGVuICctLWJlbmNobWFya3MnCisgICAgICAkYmVuY2htYXJr
UGF0dGVybiA9IFJlZ2V4cC5uZXcoYXJnKQorICAgIHdoZW4gJy0tbWVhc3VyZS1nYycKKyAgICAg
IGlmIGFyZyA9PSAnJworICAgICAgICAkbWVhc3VyZUdDID0gdHJ1ZQorICAgICAgZWxzZQorICAg
ICAgICAkbWVhc3VyZUdDID0gYXJnCisgICAgICBlbmQKKyAgICB3aGVuICctLXZlcmJvc2UnCisg
ICAgICAkdmVyYm9zaXR5ICs9IDEKKyAgICB3aGVuICctLWJyaWVmJworICAgICAgJGJyaWVmID0g
dHJ1ZQorICAgIHdoZW4gJy0tc2lsZW50JworICAgICAgJHNpbGVudCA9IHRydWUKKyAgICB3aGVu
ICctLXJlbW90ZScKKyAgICAgICRyZW1vdGVIb3N0cyArPSBhcmcuc3BsaXQoJywnKQorICAgICAg
JG5lZWRUb0NvcHlWTXMgPSB0cnVlCisgICAgd2hlbiAnLS1zc2gtb3B0aW9ucycKKyAgICAgICRz
c2hPcHRpb25zIDw8IGFyZworICAgIHdoZW4gJy0tbG9jYWwnCisgICAgICAkYWxzb0xvY2FsID0g
dHJ1ZQorICAgIHdoZW4gJy0tcHJlcGFyZS1vbmx5JworICAgICAgJHJ1biA9IGZhbHNlCisgICAg
d2hlbiAnLS1hbmFseXplJworICAgICAgJHByZXBhcmUgPSBmYWxzZQorICAgICAgJHJ1biA9IGZh
bHNlCisgICAgICAkYW5hbHl6ZSA8PCBhcmcKKyAgICB3aGVuICctLWhlbHAnCisgICAgICB1c2Fn
ZQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJiYWQgb3B0aW9uOiAje29wdH0iCisgICAgZW5kCisg
IH0KKyAgCisgICMgSWYgdGhlIC0tZG9udC1jb3B5LXZtcyBvcHRpb24gd2FzIHBhc3NlZCwgaXQg
b3ZlcnJpZGVzIHRoZSAtLWZvcmNlLXZtLWNvcHkgb3B0aW9uLgorICBpZiAkZG9udENvcHlWTXMK
KyAgICAkbmVlZFRvQ29weVZNcyA9IGZhbHNlCisgIGVuZAorICAKKyAgU1VOU1BJREVSID0gQmVu
Y2htYXJrU3VpdGUubmV3KCJTdW5TcGlkZXIiLCBTVU5TUElERVJfUEFUSCwgOmFyaXRobWV0aWNN
ZWFuKQorICBbIjNkLWN1YmUiLCAiM2QtbW9ycGgiLCAiM2QtcmF5dHJhY2UiLCAiYWNjZXNzLWJp
bmFyeS10cmVlcyIsCisgICAiYWNjZXNzLWZhbm5rdWNoIiwgImFjY2Vzcy1uYm9keSIsICJhY2Nl
c3MtbnNpZXZlIiwKKyAgICJiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUiLCAiYml0b3BzLWJpdHMt
aW4tYnl0ZSIsICJiaXRvcHMtYml0d2lzZS1hbmQiLAorICAgImJpdG9wcy1uc2lldmUtYml0cyIs
ICJjb250cm9sZmxvdy1yZWN1cnNpdmUiLCAiY3J5cHRvLWFlcyIsCisgICAiY3J5cHRvLW1kNSIs
ICJjcnlwdG8tc2hhMSIsICJkYXRlLWZvcm1hdC10b2Z0ZSIsICJkYXRlLWZvcm1hdC14cGFyYiIs
CisgICAibWF0aC1jb3JkaWMiLCAibWF0aC1wYXJ0aWFsLXN1bXMiLCAibWF0aC1zcGVjdHJhbC1u
b3JtIiwgInJlZ2V4cC1kbmEiLAorICAgInN0cmluZy1iYXNlNjQiLCAic3RyaW5nLWZhc3RhIiwg
InN0cmluZy10YWdjbG91ZCIsCisgICAic3RyaW5nLXVucGFjay1jb2RlIiwgInN0cmluZy12YWxp
ZGF0ZS1pbnB1dCJdLmVhY2ggeworICAgIHwgbmFtZSB8CisgICAgU1VOU1BJREVSLmFkZCBTdW5T
cGlkZXJCZW5jaG1hcmsubmV3KG5hbWUpCisgIH0KKworICBWOCA9IEJlbmNobWFya1N1aXRlLm5l
dygiVjgiLCBWOF9QQVRILCA6Z2VvbWV0cmljTWVhbikKKyAgWyJjcnlwdG8iLCAiZGVsdGFibHVl
IiwgImVhcmxleS1ib3llciIsICJyYXl0cmFjZSIsCisgICAicmVnZXhwIiwgInJpY2hhcmRzIiwg
InNwbGF5Il0uZWFjaCB7CisgICAgfCBuYW1lIHwKKyAgICBWOC5hZGQgVjhCZW5jaG1hcmsubmV3
KG5hbWUpCisgIH0KKworICBLUkFLRU4gPSBCZW5jaG1hcmtTdWl0ZS5uZXcoIktyYWtlbiIsIEtS
QUtFTl9QQVRILCA6YXJpdGhtZXRpY01lYW4pCisgIFsiYWktYXN0YXIiLCAiYXVkaW8tYmVhdC1k
ZXRlY3Rpb24iLCAiYXVkaW8tZGZ0IiwgImF1ZGlvLWZmdCIsCisgICAiYXVkaW8tb3NjaWxsYXRv
ciIsICJpbWFnaW5nLWRhcmtyb29tIiwgImltYWdpbmctZGVzYXR1cmF0ZSIsCisgICAiaW1hZ2lu
Zy1nYXVzc2lhbi1ibHVyIiwgImpzb24tcGFyc2UtZmluYW5jaWFsIiwKKyAgICJqc29uLXN0cmlu
Z2lmeS10aW5kZXJib3giLCAic3RhbmZvcmQtY3J5cHRvLWFlcyIsCisgICAic3RhbmZvcmQtY3J5
cHRvLWNjbSIsICJzdGFuZm9yZC1jcnlwdG8tcGJrZGYyIiwKKyAgICJzdGFuZm9yZC1jcnlwdG8t
c2hhMjU2LWl0ZXJhdGl2ZSJdLmVhY2ggeworICAgIHwgbmFtZSB8CisgICAgS1JBS0VOLmFkZCBL
cmFrZW5CZW5jaG1hcmsubmV3KG5hbWUpCisgIH0KKworICBBUkdWLmVhY2ggeworICAgIHwgdm0g
fAorICAgIGlmIHZtID1+IC8oW2EtekEtWjAtOV8gXSspOi8KKyAgICAgIG5hbWUgPSAkMQorICAg
ICAgbmFtZUtpbmQgPSA6Z2l2ZW4KKyAgICAgIHZtID0gJH4ucG9zdF9tYXRjaAogICAgIGVsc2UK
LSAgICAgIHJlc3VsdCArPSAiICIqMjYKKyAgICAgIG5hbWUgPSAiQ29uZlwjI3skdm1zLmxlbmd0
aCsxfSIKKyAgICAgIG5hbWVLaW5kID0gOmF1dG8KICAgICBlbmQKLSAgICByZXN1bHQKLSAgZW5k
CisgICAgJHN0ZGVyci5wdXRzICIje25hbWV9OiAje3ZtfSIgaWYgJHZlcmJvc2l0eSA+PSAxCisg
ICAgJHZtcyA8PCBWTS5uZXcoUGF0aG5hbWUubmV3KHZtKS5yZWFscGF0aCwgbmFtZSwgbmFtZUtp
bmQsIG5pbCkKKyAgfQogICAKLSAgJGNvbHVtbnMgPSBjcmVhdGVWTXNTdHJpbmcuc2l6ZQorICBp
ZiAkdm1zLmVtcHR5PworICAgIHF1aWNrRmFpbCgiUGxlYXNlIHNwZWNpZnkgYXQgbGVhc3Qgb24g
Y29uZmlndXJhaXRvbiBvbiB0aGUgY29tbWFuZCBsaW5lLiIsCisgICAgICAgICAgICAgICJJbnN1
ZmZpY2llbnQgYXJndW1lbnRzIikKKyAgZW5kCiAgIAotICBkZWYgcGx1cmFsKG51bSkKLSAgICBp
ZiBudW0gPT0gMQotICAgICAgIiIKLSAgICBlbHNlCi0gICAgICAicyIKKyAgJHZtcy5lYWNoIHsK
KyAgICB8IHZtIHwKKyAgICBpZiB2bS52bVR5cGUgIT0gOmpzYyBhbmQgJHRpbWVNb2RlICE9IDpk
YXRlCisgICAgICAkdGltZU1vZGUgPSA6ZGF0ZQorICAgICAgJHN0ZGVyci5wdXRzICJXYXJuaW5n
OiB1c2luZyBEYXRlLm5vdygpIGluc3RlYWQgb2YgcHJlY2lzZVRpbWUoKSBiZWNhdXNlICN7dm19
IGRvZXNuJ3Qgc3VwcG9ydCB0aGUgbGF0dGVyLiIKICAgICBlbmQKLSAgZW5kCisgIH0KICAgCi0g
IGRlZiB3cmFwKHN0cikKLSAgICBhcnJheSA9IHN0ci5zcGxpdAotICAgIHJlc3VsdCA9ICIiCi0g
ICAgY3VyTGluZSA9IGFycmF5LnNoaWZ0Ci0gICAgYXJyYXkuZWFjaCB7Ci0gICAgICB8IGN1clN0
ciB8Ci0gICAgICBpZiAoY3VyTGluZSArICIgIiArIGN1clN0cikuc2l6ZSA+ICRjb2x1bW5zCi0g
ICAgICAgIHJlc3VsdCArPSBjdXJMaW5lICsgIlxuIgotICAgICAgICBjdXJMaW5lID0gY3VyU3Ry
Ci0gICAgICBlbHNlCi0gICAgICAgIGN1ckxpbmUgKz0gIiAiICsgY3VyU3RyCi0gICAgICBlbmQK
LSAgICB9Ci0gICAgcmVzdWx0ICsgY3VyTGluZSArICJcbiIKKyAgaWYgRmlsZVRlc3QuZXhpc3Q/
IEJFTkNIX0RBVEFfUEFUSAorICAgIGNtZCA9ICJybSAtcmYgI3tCRU5DSF9EQVRBX1BBVEh9Igor
ICAgICRzdGRlcnIucHV0cyAiPj4gI3tjbWR9IiBpZiAkdmVyYm9zaXR5ID49IDIKKyAgICByYWlz
ZSB1bmxlc3Mgc3lzdGVtIGNtZAogICBlbmQKICAgCi0gIG91dHAucHJpbnQgIkJlbmNobWFyayBy
ZXBvcnQgZm9yICIKLSAgaWYgJHN1aXRlcy5zaXplID09IDEKLSAgICBvdXRwLnByaW50ICRzdWl0
ZXNbMF0udG9fcwotICBlbHNpZiAkc3VpdGVzLnNpemUgPT0gMgotICAgIG91dHAucHJpbnQgIiN7
JHN1aXRlc1swXX0gYW5kICN7JHN1aXRlc1sxXX0iCi0gIGVsc2UKLSAgICBvdXRwLnByaW50ICIj
eyRzdWl0ZXNbMC4uLTJdLmpvaW4oJywgJyl9LCBhbmQgI3skc3VpdGVzWy0xXX0iCi0gIGVuZAot
ICBvdXRwLnByaW50ICIgb24gI3tTb2NrZXQuZ2V0aG9zdG5hbWV9IgotICBiZWdpbgotICAgIElP
LnBvcGVuKCJzeXNjdGwgaHcubW9kZWwiLCAiciIpIHsKLSAgICAgIHwgaW5wIHwKLSAgICAgIGlu
cC5lYWNoX2xpbmUgewotICAgICAgICB8IGxpbmUgfAotICAgICAgICBpZiBsaW5lID1+IC9ody5t
b2RlbDogLwotICAgICAgICAgIG91dHAucHJpbnQgIiAoI3skfi5wb3N0X21hdGNoLmNob21wfSki
Ci0gICAgICAgICAgYnJlYWsKLSAgICAgICAgZW5kCi0gICAgICB9Ci0gICAgfQotICByZXNjdWUg
PT4gZQotICAgICMgU2lsZW50bHkgZmFpbCBzaW5jZSB0aGlzIGlzbid0IGNyaXRpY2FsLgotICBl
bmQKLSAgb3V0cC5wdXRzICIuIgotICBvdXRwLnB1dHMKKyAgRGlyLm1rZGlyIEJFTkNIX0RBVEFf
UEFUSAogICAKLSAgIyBUaGlzIGxvb2tzIHN0dXBpZDsgcmV2aXNpdCBsYXRlci4KLSAgaWYgZmFs
c2UKLSAgICAkc3VpdGVzLmVhY2ggewotICAgICAgfCBzdWl0ZSB8Ci0gICAgICBvdXRwLnB1dHMg
IiN7c3VpdGV9IGF0ICN7c3VpdGUucGF0aH0iCisgIGlmICRuZWVkVG9Db3B5Vk1zCisgICAgY2Fu
Q29weUludG9CZW5jaFBhdGggPSB0cnVlCisgICAgJHZtcy5lYWNoIHsKKyAgICAgIHwgdm0gfAor
ICAgICAgY2FuQ29weUludG9CZW5jaFBhdGggPSBmYWxzZSB1bmxlc3Mgdm0uY2FuQ29weUludG9C
ZW5jaFBhdGgKICAgICB9CiAgICAgCi0gICAgb3V0cC5wdXRzCisgICAgaWYgY2FuQ29weUludG9C
ZW5jaFBhdGgKKyAgICAgICR2bXMuZWFjaCB7CisgICAgICAgIHwgdm0gfAorICAgICAgICAkc3Rk
ZXJyLnB1dHMgIkNvcHlpbmcgI3t2bX0gaW50byAje0JFTkNIX0RBVEFfUEFUSH0uLi4iCisgICAg
ICAgIHZtLmNvcHlJbnRvQmVuY2hQYXRoCisgICAgICB9CisgICAgICAkc3RkZXJyLnB1dHMgIkFs
bCBWTXMgYXJlIGluIHBsYWNlLiIKKyAgICBlbHNlCisgICAgICAkc3RkZXJyLnB1dHMgIldhcm5p
bmc6IGRvbid0IGtub3cgaG93IHRvIGNvcHkgc29tZSBWTXMgaW50byAje0JFTkNIX0RBVEFfUEFU
SH0sIHNvIEkgd29uJ3QgZG8gaXQuIgorICAgIGVuZAogICBlbmQKICAgCi0gIG91dHAucHV0cyAi
Vk1zIHRlc3RlZDoiCi0gICR2bXMuZWFjaCB7Ci0gICAgfCB2bSB8Ci0gICAgb3V0cC5wcmludCAi
XCIje3ZtLm5hbWV9XCIgYXQgI3t2bS5vcmlnUGF0aH0iCi0gICAgaWYgdm0uc3ZuUmV2aXNpb24K
LSAgICAgIG91dHAucHJpbnQgIiAociN7dm0uc3ZuUmV2aXNpb259KSIKKyAgaWYgJG1lYXN1cmVH
QyBhbmQgJG1lYXN1cmVHQyAhPSB0cnVlCisgICAgZm91bmQgPSBmYWxzZQorICAgICR2bXMuZWFj
aCB7CisgICAgICB8IHZtIHwKKyAgICAgIGlmIHZtLm5hbWUgPT0gJG1lYXN1cmVHQworICAgICAg
ICBmb3VuZCA9IHRydWUKKyAgICAgIGVuZAorICAgIH0KKyAgICB1bmxlc3MgZm91bmQKKyAgICAg
ICRzdGRlcnIucHV0cyAiV2FybmluZzogLS1tZWFzdXJlLWdjIG9wdGlvbiBpZ25vcmVkIGJlY2F1
c2Ugbm8gVk0gaXMgbmFtZWQgI3skbWVhc3VyZUdDfSIKICAgICBlbmQKLSAgICBvdXRwLnB1dHMK
LSAgfQorICBlbmQKICAgCi0gIG91dHAucHV0cworICBpZiAkb3V0ZXIqJGlubmVyID09IDEKKyAg
ICAkc3RkZXJyLnB1dHMgIldhcm5pbmc6IHdpbGwgb25seSBjb2xsZWN0IG9uZSBzYW1wbGUgcGVy
IGJlbmNobWFyay9WTS4gIENvbmZpZGVuY2UgaW50ZXJ2YWwgY2FsY3VsYXRpb24gd2lsbCBmYWls
LiIKKyAgZW5kCiAgIAotICBvdXRwLnB1dHMgd3JhcCgiQ29sbGVjdGVkICN7JG91dGVyKiRpbm5l
cn0gc2FtcGxlI3twbHVyYWwoJG91dGVyKiRpbm5lcil9IHBlciBiZW5jaG1hcmsvVk0sICIrCi0g
ICAgICAgICAgICAgICAgICJ3aXRoICN7JG91dGVyfSBWTSBpbnZvY2F0aW9uI3twbHVyYWwoJG91
dGVyKX0gcGVyIGJlbmNobWFyay4iKwotICAgICAgICAgICAgICAgICAoaWYgJHJlcnVuID4gMSB0
aGVuICgiIFJhbiAjeyRyZXJ1bn0gYmVuY2htYXJrIGl0ZXJhdGlvbnMsIGFuZCBtZWFzdXJlZCB0
aGUgIisKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvdGFsIHRpbWUg
b2YgdGhvc2UgaXRlcmF0aW9ucywgZm9yIGVhY2ggc2FtcGxlLiIpCi0gICAgICAgICAgICAgICAg
ICBlbHNlICIiIGVuZCkrCi0gICAgICAgICAgICAgICAgIChpZiAkbWVhc3VyZUdDID09IHRydWUg
dGhlbiAoIiBObyBtYW51YWwgZ2FyYmFnZSBjb2xsZWN0aW9uIGludm9jYXRpb25zIHdlcmUgIisK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1pdHRlZC4i
KQotICAgICAgICAgICAgICAgICAgZWxzaWYgJG1lYXN1cmVHQyB0aGVuICgiIEVtaXR0ZWQgYSBj
YWxsIHRvIGdjKCkgYmV0d2VlbiBzYW1wbGUgbWVhc3VyZW1lbnRzIGZvciAiKwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxsIFZNcyBleGNlcHQgI3skbWVhc3Vy
ZUdDfS4iKQotICAgICAgICAgICAgICAgICAgZWxzZSAoIiBFbWl0dGVkIGEgY2FsbCB0byBnYygp
IGJldHdlZW4gc2FtcGxlIG1lYXN1cmVtZW50cy4iKSBlbmQpKwotICAgICAgICAgICAgICAgICAo
aWYgJHdhcm11cCA9PSAwIHRoZW4gKCIgRGlkIG5vdCBpbmNsdWRlIGFueSB3YXJtLXVwIGl0ZXJh
dGlvbnM7IG1lYXN1cmVtZW50cyAiKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJiZWdhbiB3aXRoIHRoZSB2ZXJ5IGZpcnN0IGl0ZXJhdGlvbi4iKQotICAgICAgICAg
ICAgICAgICAgZWxzZSAoIiBVc2VkICN7JHdhcm11cCokcmVydW59IGJlbmNobWFyayBpdGVyYXRp
b24je3BsdXJhbCgkd2FybXVwKiRyZXJ1bil9IHBlciBWTSAiKwotICAgICAgICAgICAgICAgICAg
ICAgICAgImludm9jYXRpb24gZm9yIHdhcm0tdXAuIikgZW5kKSsKLSAgICAgICAgICAgICAgICAg
KGNhc2UgJHRpbWVNb2RlCi0gICAgICAgICAgICAgICAgICB3aGVuIDpwcmVjaXNlVGltZSB0aGVu
ICgiIFVzZWQgdGhlIGpzYy1zcGVjaWZpYyBwcmVjaXNlVGltZSgpIGZ1bmN0aW9uIHRvIGdldCAi
KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3Jvc2Vjb25k
LWxldmVsIHRpbWluZy4iKQotICAgICAgICAgICAgICAgICAgd2hlbiA6ZGF0ZSB0aGVuICgiIFVz
ZWQgdGhlIHBvcnRhYmxlIERhdGUubm93KCkgbWV0aG9kIHRvIGdldCBtaWxsaXNlY29uZC0iKwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGV2ZWwgdGltaW5nLiIpCi0gICAg
ICAgICAgICAgICAgICBlbHNlIHJhaXNlIGVuZCkrCi0gICAgICAgICAgICAgICAgIChjYXNlICRp
bm5lck1vZGUKLSAgICAgICAgICAgICAgICAgIHdoZW4gOnJlbG9hZCB0aGVuICIiICMgbm90aGlu
ZyBpbnRlcmVzdGluZyB0byBzYXkKLSAgICAgICAgICAgICAgICAgIHdoZW4gOmxvYWRPbmNlIHRo
ZW4gKCIgUmFuIGJlbmNobWFya3MgdXNpbmcgYW4gZXhwZXJpbWVudGFsIG1vZGUgdGhhdCAiKwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuc3VyZXMgdGhhdCB0aGUg
YmVuY2htYXJrIGNvZGUgaXMgbG9hZGVkIG9ubHkgb25jZSAiKwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImR1cmluZyBlYWNoIFZNIGludm9jYXRpb24sIHdoaWNoIGVu
YWJsZXMgbW9yZSBWTSAiKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Indhcm0tdXAuIikKLSAgICAgICAgICAgICAgICAgIGVsc2UgcmFpc2UgZW5kKSsKLSAgICAgICAg
ICAgICAgICAgIiBSZXBvcnRpbmcgYmVuY2htYXJrIGV4ZWN1dGlvbiB0aW1lcyB3aXRoIDk1JSBj
b25maWRlbmNlICIrCi0gICAgICAgICAgICAgICAgICJpbnRlcnZhbHMgaW4gbWlsbGlzZWNvbmRz
LiIpCisgICRzdGRlcnIucHV0cyAiVXNpbmcgdGltZU1vZGUgPSAjeyR0aW1lTW9kZX0uIiBpZiAk
dmVyYm9zaXR5ID49IDEKICAgCi0gIG91dHAucHV0cworICAkc3VpdGVzID0gW10KICAgCi0gIGRl
ZiBwcmludFZNcyhvdXRwKQotICAgIG91dHAucHV0cyBjcmVhdGVWTXNTdHJpbmcKKyAgaWYgJGlu
Y2x1ZGVTdW5TcGlkZXIgYW5kIG5vdCBTVU5TUElERVIuZW1wdHk/CisgICAgJHN1aXRlcyA8PCBT
VU5TUElERVIKICAgZW5kCiAgIAotICBkZWYgc3VtbWFyeVN0YXRzKG91dHAsIGFjY3VtdWxhdG9y
cywgbmFtZSwgJnByb2MpCi0gICAgb3V0cC5wcmludCAiICAgIiBpZiAkc3VpdGVzLnNpemUgPiAx
Ci0gICAgb3V0cC5wcmludCBycGFkKG5hbWUsICRiZW5jaHBhZCkKLSAgICBvdXRwLnByaW50ICIg
IgotICAgIGFjY3VtdWxhdG9ycy5zaXplLnRpbWVzIHsKLSAgICAgIHwgaW5kZXggfAotICAgICAg
aWYgaW5kZXggIT0gMAotICAgICAgICBvdXRwLnByaW50ICIgIithY2N1bXVsYXRvcnNbaW5kZXhd
LnN0YXRzKCZwcm9jKS5jb21wYXJlVG8oYWNjdW11bGF0b3JzW2luZGV4LTFdLnN0YXRzKCZwcm9j
KSkuc2hvcnRGb3JtCi0gICAgICBlbmQKLSAgICAgIG91dHAucHJpbnQgc3RhdHNUb1N0cihhY2N1
bXVsYXRvcnNbaW5kZXhdLnN0YXRzKCZwcm9jKSkKLSAgICB9Ci0gICAgaWYgYWNjdW11bGF0b3Jz
LnNpemU+PTIKLSAgICAgIG91dHAucHJpbnQoIiAgICAiK2FjY3VtdWxhdG9yc1stMV0uc3RhdHMo
JnByb2MpLmNvbXBhcmVUbyhhY2N1bXVsYXRvcnNbMF0uc3RhdHMoJnByb2MpKS50b19zKQotICAg
IGVuZAotICAgIG91dHAucHV0cworICBpZiAkaW5jbHVkZVY4IGFuZCBub3QgVjguZW1wdHk/Cisg
ICAgJHN1aXRlcyA8PCBWOAogICBlbmQKICAgCi0gIGRlZiBtZWFuTmFtZShjdXJyZW50TWVhbiwg
cHJlZmVycmVkTWVhbikKLSAgICByZXN1bHQgPSAiPCN7Y3VycmVudE1lYW59PiIKLSAgICBpZiAi
I3tjdXJyZW50TWVhbn1NZWFuIiA9PSBwcmVmZXJyZWRNZWFuLnRvX3MKLSAgICAgIHJlc3VsdCAr
PSAiICoiCi0gICAgZW5kCi0gICAgcmVzdWx0CisgIGlmICRpbmNsdWRlS3Jha2VuIGFuZCBub3Qg
S1JBS0VOLmVtcHR5PworICAgICRzdWl0ZXMgPDwgS1JBS0VOCiAgIGVuZAogICAKLSAgZGVmIGFs
bFN1bW1hcnlTdGF0cyhvdXRwLCBhY2N1bXVsYXRvcnMsIHByZWZlcnJlZE1lYW4pCi0gICAgc3Vt
bWFyeVN0YXRzKG91dHAsIGFjY3VtdWxhdG9ycywgbWVhbk5hbWUoImFyaXRobWV0aWMiLCBwcmVm
ZXJyZWRNZWFuKSkgewotICAgICAgfCBzdGF0IHwKLSAgICAgIHN0YXQuYXJpdGhtZXRpY01lYW4K
LSAgICB9Ci0gICAgCi0gICAgc3VtbWFyeVN0YXRzKG91dHAsIGFjY3VtdWxhdG9ycywgbWVhbk5h
bWUoImdlb21ldHJpYyIsIHByZWZlcnJlZE1lYW4pKSB7Ci0gICAgICB8IHN0YXQgfAotICAgICAg
c3RhdC5nZW9tZXRyaWNNZWFuCi0gICAgfQotICAgIAotICAgIHN1bW1hcnlTdGF0cyhvdXRwLCBh
Y2N1bXVsYXRvcnMsIG1lYW5OYW1lKCJoYXJtb25pYyIsIHByZWZlcnJlZE1lYW4pKSB7Ci0gICAg
ICB8IHN0YXQgfAotICAgICAgc3RhdC5oYXJtb25pY01lYW4KKyAgJGJlbmNobWFya3MgPSBbXQor
ICAkc3VpdGVzLmVhY2ggeworICAgIHwgc3VpdGUgfAorICAgICRiZW5jaG1hcmtzICs9IHN1aXRl
LmJlbmNobWFya3MKKyAgfQorICAKKyAgJHJ1blBsYW5zID0gW10KKyAgJHZtcy5lYWNoIHsKKyAg
ICB8IHZtIHwKKyAgICAkYmVuY2htYXJrcy5lYWNoIHsKKyAgICAgIHwgYmVuY2htYXJrIHwKKyAg
ICAgICRvdXRlci50aW1lcyB7CisgICAgICAgIHwgaXRlcmF0aW9uIHwKKyAgICAgICAgJHJ1blBs
YW5zIDw8IEJlbmNoUnVuUGxhbi5uZXcoYmVuY2htYXJrLCB2bSwgaXRlcmF0aW9uKQorICAgICAg
fQogICAgIH0KLSAgZW5kCisgIH0KICAgCi0gICRzdWl0ZXMuZWFjaCB7CisgICRydW5QbGFucy5z
aHVmZmxlIQorICAKKyAgJHN1aXRlcGFkID0gJHN1aXRlcy5jb2xsZWN0IHsKICAgICB8IHN1aXRl
IHwKLSAgICBwcmludFZNcyhvdXRwKQotICAgIGlmICRzdWl0ZXMuc2l6ZSA+IDEKLSAgICAgIG91
dHAucHV0cyAiI3tzdWl0ZS5uYW1lfToiCisgICAgc3VpdGUudG9fcy5zaXplCisgIH0ubWF4ICsg
MQorICAKKyAgJGJlbmNocGFkID0gKCRiZW5jaG1hcmtzICsKKyAgICAgICAgICAgICAgIFsiPGFy
aXRobWV0aWM+ICoiLCAiPGdlb21ldHJpYz4gKiIsICI8aGFybW9uaWM+ICoiXSkuY29sbGVjdCB7
CisgICAgfCBiZW5jaG1hcmsgfAorICAgIGlmIGJlbmNobWFyay5yZXNwb25kX3RvPyA6bmFtZQor
ICAgICAgYmVuY2htYXJrLm5hbWUuc2l6ZQogICAgIGVsc2UKLSAgICAgIG91dHAucHV0cworICAg
ICAgYmVuY2htYXJrLnNpemUKICAgICBlbmQKLSAgICBzdWl0ZS5iZW5jaG1hcmtzLmVhY2ggewot
ICAgICAgfCBiZW5jaG1hcmsgfAotICAgICAgb3V0cC5wcmludCAiICAgIiBpZiAkc3VpdGVzLnNp
emUgPiAxCi0gICAgICBvdXRwLnByaW50IHJwYWQoYmVuY2htYXJrLnRvX3MsICRiZW5jaHBhZCkK
LSAgICAgIG91dHAucHJpbnQgIiAiCi0gICAgICBteUNvbmZpZ3MgPSAkYmVuY2htYXJrc09uVk1z
Rm9yQmVuY2htYXJrW2JlbmNobWFya10KLSAgICAgIG15Q29uZmlncy5zaXplLnRpbWVzIHsKLSAg
ICAgICAgfCBpbmRleCB8Ci0gICAgICAgIGlmIGluZGV4ICE9IDAKLSAgICAgICAgICBvdXRwLnBy
aW50ICIgIitteUNvbmZpZ3NbaW5kZXhdLnN0YXRzLmNvbXBhcmVUbyhteUNvbmZpZ3NbaW5kZXgt
MV0uc3RhdHMpLnNob3J0Rm9ybQorICB9Lm1heCArIDEKKworICAkdm1wYWQgPSAkdm1zLmNvbGxl
Y3QgeworICAgIHwgdm0gfAorICAgIHZtLnRvX3Muc2l6ZQorICB9Lm1heCArIDEKKyAgCisgIGlm
ICRwcmVwYXJlCisgICAgRmlsZS5vcGVuKCIje0JFTkNIX0RBVEFfUEFUSH0vcnVuc2NyaXB0Iiwg
InciKSB7CisgICAgICB8IGZpbGUgfAorICAgICAgZmlsZS5wdXRzICJlY2hvIFwiSE9TVE5BTUU6
XFxjXCIiCisgICAgICBmaWxlLnB1dHMgImhvc3RuYW1lIgorICAgICAgZmlsZS5wdXRzICJlY2hv
IgorICAgICAgZmlsZS5wdXRzICJlY2hvIFwiSEFSRFdBUkU6XFxjXCIiCisgICAgICBmaWxlLnB1
dHMgIi91c3Ivc2Jpbi9zeXNjdGwgaHcubW9kZWwiCisgICAgICBmaWxlLnB1dHMgImVjaG8iCisg
ICAgICBmaWxlLnB1dHMgInNldCAtZSIKKyAgICAgICRzY3JpcHQgPSBmaWxlCisgICAgICAkcnVu
UGxhbnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICAgICAgfCBwbGFuLCBpZHggfAorICAgICAgICBp
ZiAkdmVyYm9zaXR5ID09IDAgYW5kIG5vdCAkc2lsZW50CisgICAgICAgICAgdGV4dDEgPSBscGFk
KGlkeC50b19zLCRydW5QbGFucy5zaXplLnRvX3Muc2l6ZSkrIi8iKyRydW5QbGFucy5zaXplLnRv
X3MKKyAgICAgICAgICB0ZXh0MiA9IHBsYW4uYmVuY2htYXJrLnRvX3MrIi8iK3BsYW4udm0udG9f
cworICAgICAgICAgIGZpbGUucHV0cygiZWNobyAiKygiXHIje3RleHQxfSAje3JwYWQodGV4dDIs
JHN1aXRlcGFkKzErJGJlbmNocGFkKzErJHZtcGFkKX0iLmluc3BlY3QpWzAuLi0yXSsiXFxjXCIg
MT4mMiIpCisgICAgICAgICAgZmlsZS5wdXRzKCJlY2hvICIrKCJcciN7dGV4dDF9ICN7dGV4dDJ9
Ii5pbnNwZWN0KVswLi4tMl0rIlxcY1wiIDE+JjIiKQogICAgICAgICBlbmQKLSAgICAgICAgb3V0
cC5wcmludCBzdGF0c1RvU3RyKG15Q29uZmlnc1tpbmRleF0uc3RhdHMpCisgICAgICAgIHBsYW4u
ZW1pdFJ1bkNvZGUKICAgICAgIH0KLSAgICAgIGlmICR2bXMuc2l6ZT49MgotICAgICAgICBvdXRw
LnByaW50KCIgICAgIitteUNvbmZpZ3NbLTFdLnN0YXRzLmNvbXBhcmVUbyhteUNvbmZpZ3NbMF0u
c3RhdHMpLnRvX3MpCisgICAgICBpZiAkdmVyYm9zaXR5ID09IDAgYW5kIG5vdCAkc2lsZW50Cisg
ICAgICAgIGZpbGUucHV0cygiZWNobyAiKygiXHIjeyRydW5QbGFucy5zaXplfS8jeyRydW5QbGFu
cy5zaXplfSAjeycgJyooJHN1aXRlcGFkKzErJGJlbmNocGFkKzErJHZtcGFkKX0iLmluc3BlY3Qp
WzAuLi0yXSsiXFxjXCIgMT4mMiIpCisgICAgICAgIGZpbGUucHV0cygiZWNobyAiKygiXHIjeyRy
dW5QbGFucy5zaXplfS8jeyRydW5QbGFucy5zaXplfSIuaW5zcGVjdCkrIiAxPiYyIikKICAgICAg
IGVuZAotICAgICAgb3V0cC5wdXRzCiAgICAgfQotICAgIG91dHAucHV0cwotICAgIGFsbFN1bW1h
cnlTdGF0cyhvdXRwLCAkc3VpdGVzT25WTXNGb3JTdWl0ZVtzdWl0ZV0sIHN1aXRlLnByZWZlcnJl
ZE1lYW4pCi0gICAgb3V0cC5wdXRzIGlmICRzdWl0ZXMuc2l6ZSA+IDEKLSAgfQorICBlbmQKICAg
Ci0gIGlmICRzdWl0ZXMuc2l6ZSA+IDEKLSAgICBwcmludFZNcyhvdXRwKQotICAgIG91dHAucHV0
cyAiQWxsIGJlbmNobWFya3M6IgotICAgIGFsbFN1bW1hcnlTdGF0cyhvdXRwLCAkdm1zLCBuaWwp
Ci0gICAgCi0gICAgb3V0cC5wdXRzCi0gICAgcHJpbnRWTXMob3V0cCkKLSAgICBvdXRwLnB1dHMg
Ikdlb21lYW4gb2YgcHJlZmVycmVkIG1lYW5zOiIKLSAgICBvdXRwLnByaW50ICIgICAiCi0gICAg
b3V0cC5wcmludCBycGFkKCI8c2NhbGVkLXJlc3VsdD4iLCAkYmVuY2hwYWQpCi0gICAgb3V0cC5w
cmludCAiICIKLSAgICAkdm1zLnNpemUudGltZXMgewotICAgICAgfCBpbmRleCB8Ci0gICAgICBp
ZiBpbmRleCAhPSAwCi0gICAgICAgIG91dHAucHJpbnQgIiAiKyRvdmVyYWxsUmVzdWx0c1tpbmRl
eF0uY29tcGFyZVRvKCRvdmVyYWxsUmVzdWx0c1tpbmRleC0xXSkuc2hvcnRGb3JtCisgIGlmICRy
dW4KKyAgICB1bmxlc3MgJHJlbW90ZUhvc3RzLmVtcHR5PworICAgICAgJHN0ZGVyci5wdXRzICJQ
YWNrYWdpbmcgYmVuY2htYXJraW5nIGRpcmVjdG9yeSBmb3IgcmVtb3RlIGhvc3RzLi4uIiBpZiAk
dmVyYm9zaXR5PT0wCisgICAgICBEaXIuY2hkaXIoVEVNUF9QQVRIKSB7CisgICAgICAgIGNtZCA9
ICJ0YXIgLWN6ZiBwYXlsb2FkLnRhci5neiBiZW5jaGRhdGEiCisgICAgICAgICRzdGRlcnIucHV0
cyAiPj4gI3tjbWR9IiBpZiAkdmVyYm9zaXR5Pj0yCisgICAgICAgIHJhaXNlIHVubGVzcyBzeXN0
ZW0oY21kKQorICAgICAgfQorICAgICAgCisgICAgICBkZWYgZ3Jva0hvc3QoaG9zdCkKKyAgICAg
ICAgaWYgaG9zdCA9fiAvOihbMC05XSspJC8KKyAgICAgICAgICAiLXAgIiArICQxICsgIiAiICsg
JH4ucHJlX21hdGNoLmluc3BlY3QKKyAgICAgICAgZWxzZQorICAgICAgICAgIGhvc3QuaW5zcGVj
dAorICAgICAgICBlbmQKICAgICAgIGVuZAotICAgICAgb3V0cC5wcmludCBzdGF0c1RvU3RyKCRv
dmVyYWxsUmVzdWx0c1tpbmRleF0pCi0gICAgfQotICAgIGlmICRvdmVyYWxsUmVzdWx0cy5zaXpl
Pj0yCi0gICAgICBvdXRwLnByaW50KCIgICAgIiskb3ZlcmFsbFJlc3VsdHNbLTFdLmNvbXBhcmVU
bygkb3ZlcmFsbFJlc3VsdHNbMF0pLnRvX3MpCisgICAgICAKKyAgICAgIGRlZiBzc2hSZWFkKGhv
c3QsIGNvbW1hbmQpCisgICAgICAgIGNtZCA9ICJzc2ggI3skc3NoT3B0aW9ucy5jb2xsZWN0e3x4
fCB4Lmluc3BlY3R9LmpvaW4oJyAnKX0gI3tncm9rSG9zdChob3N0KX0gI3tjb21tYW5kLmluc3Bl
Y3R9IgorICAgICAgICAkc3RkZXJyLnB1dHMgIj4+ICN7Y21kfSIgaWYgJHZlcmJvc2l0eT49Mgor
ICAgICAgICByZXN1bHQgPSAiIgorICAgICAgICBJTy5wb3BlbihjbWQsICJyIikgeworICAgICAg
ICAgIHwgaW5wIHwKKyAgICAgICAgICBpbnAuZWFjaF9saW5lIHsKKyAgICAgICAgICAgIHwgbGlu
ZSB8CisgICAgICAgICAgICAkc3RkZXJyLnB1dHMgIiN7aG9zdH06ICN7bGluZX0iIGlmICR2ZXJi
b3NpdHk+PTIKKyAgICAgICAgICAgIHJlc3VsdCArPSBsaW5lCisgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIHJhaXNlICIjeyQ/fSIgdW5sZXNzICQ/LnN1Y2Nlc3M/CisgICAgICAgIHJl
c3VsdAorICAgICAgZW5kCisgICAgICAKKyAgICAgIGRlZiBzc2hXcml0ZShob3N0LCBjb21tYW5k
LCBkYXRhKQorICAgICAgICBjbWQgPSAic3NoICN7JHNzaE9wdGlvbnMuY29sbGVjdHt8eHwgeC5p
bnNwZWN0fS5qb2luKCcgJyl9ICN7Z3Jva0hvc3QoaG9zdCl9ICN7Y29tbWFuZC5pbnNwZWN0fSIK
KyAgICAgICAgJHN0ZGVyci5wdXRzICI+PiAje2NtZH0iIGlmICR2ZXJib3NpdHk+PTIKKyAgICAg
ICAgSU8ucG9wZW4oY21kLCAidyIpIHsKKyAgICAgICAgICB8IG91dHAgfAorICAgICAgICAgIG91
dHAud3JpdGUoZGF0YSkKKyAgICAgICAgfQorICAgICAgICByYWlzZSAiI3skP30iIHVubGVzcyAk
Py5zdWNjZXNzPworICAgICAgZW5kCisgICAgICAKKyAgICAgICRyZW1vdGVIb3N0cy5lYWNoIHsK
KyAgICAgICAgfCBob3N0IHwKKyAgICAgICAgJHN0ZGVyci5wdXRzICJTZW5kaW5nIGJlbmNobWFy
ayBwYXlsb2FkIHRvICN7aG9zdH0uLi4iIGlmICR2ZXJib3NpdHk9PTAKKyAgICAgICAgCisgICAg
ICAgIHJlbW90ZVRlbXBQYXRoID0gSlNPTjo6cGFyc2Uoc3NoUmVhZChob3N0LCAiY2F0IH4vLmJl
bmNoZXIiKSlbInRlbXBQYXRoIl0KKyAgICAgICAgcmFpc2UgdW5sZXNzIHJlbW90ZVRlbXBQYXRo
CisgICAgICAgIAorICAgICAgICBzc2hXcml0ZShob3N0LCAiY2QgI3tyZW1vdGVUZW1wUGF0aC5p
bnNwZWN0fSAmJiBybSAtcmYgYmVuY2hkYXRhICYmIHRhciAteHoiLCBJTzo6cmVhZCgiI3tURU1Q
X1BBVEh9L3BheWxvYWQudGFyLmd6IikpCisgICAgICAgIAorICAgICAgICAkc3RkZXJyLnB1dHMg
IlJ1bm5pbmcgb24gI3tob3N0fS4uLiIgaWYgJHZlcmJvc2l0eT09MAorICAgICAgICAKKyAgICAg
ICAgcGFyc2VBbmREaXNwbGF5UmVzdWx0cyhzc2hSZWFkKGhvc3QsICJjZCAjeyhyZW1vdGVUZW1w
UGF0aCsnL2JlbmNoZGF0YScpLmluc3BlY3R9ICYmIHNoIHJ1bnNjcmlwdCIpKQorICAgICAgfQor
ICAgIGVuZAorICAgIAorICAgIGlmIG5vdCAkcmVtb3RlSG9zdHMuZW1wdHk/IGFuZCAkYWxzb0xv
Y2FsCisgICAgICAkc3RkZXJyLnB1dHMgIlJ1bm5pbmcgbG9jYWxseS4uLiIKKyAgICBlbmQKKyAg
ICAKKyAgICBpZiAkcmVtb3RlSG9zdHMuZW1wdHk/IG9yICRhbHNvTG9jYWwKKyAgICAgIHBhcnNl
QW5kRGlzcGxheVJlc3VsdHMocnVuQW5kR2V0UmVzdWx0cykKICAgICBlbmQKLSAgICBvdXRwLnB1
dHMKICAgZW5kCi0gIG91dHAucHV0cwogICAKLSAgaWYgb3V0cCAhPSAkc3Rkb3V0Ci0gICAgb3V0
cC5jbG9zZQotICBlbmQKKyAgJGFuYWx5emUuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IGZpbGVu
YW1lLCBpbmRleCB8CisgICAgaWYgaW5kZXggPj0gMQorICAgICAgcHV0cworICAgIGVuZAorICAg
IHBhcnNlQW5kRGlzcGxheVJlc3VsdHMoSU86OnJlYWQoZmlsZW5hbWUpKQorICB9CiAgIAotICBp
ZiBvdXRwICE9ICRzdGRvdXQgYW5kIG5vdCAkYnJpZWYKKyAgaWYgJHByZXBhcmUgYW5kIG5vdCAk
cnVuIGFuZCAkYW5hbHl6ZS5lbXB0eT8KKyAgICBwdXRzIHdyYXAoIkJlbmNobWFya2luZyBzY3Jp
cHQgYW5kIGRhdGEgYXJlIGluICN7QkVOQ0hfREFUQV9QQVRIfS4gWW91IGNhbiBydW4gIisKKyAg
ICAgICAgICAgICAgInRoZSBiZW5jaG1hcmtzIGFuZCBnZXQgdGhlIHJlc3VsdHMgYnkgZG9pbmc6
IiwgNzgpCiAgICAgcHV0cwotICAgIEZpbGUub3BlbihyZXBvcnROYW1lKSB7Ci0gICAgICB8IGlu
cCB8Ci0gICAgICBwdXRzIGlucC5yZWFkCi0gICAgfQotICBlbmQKLSAgCi0gIGlmICRicmllZgot
ICAgIHB1dHMoJG92ZXJhbGxSZXN1bHRzLmNvbGxlY3R7fHN0YXRzfCBzdGF0cy5tZWFufS5qb2lu
KCJcdCIpKQotICAgIHB1dHMoJG92ZXJhbGxSZXN1bHRzLmNvbGxlY3R7fHN0YXRzfCBzdGF0cy5j
b25mSW50fS5qb2luKCJcdCIpKQorICAgIHB1dHMgImNkICN7QkVOQ0hfREFUQV9QQVRIfSIKKyAg
ICBwdXRzICJzaCBydW5zY3JpcHQgPiByZXN1bHRzLnR4dCIKKyAgICBwdXRzCisgICAgcHV0cyB3
cmFwKCJUaGVuIHlvdSBjYW4gYW5hbHl6ZSB0aGUgcmVzdWx0cyBieSBydW5uaW5nIGJlbmNoZXIg
d2l0aCB0aGUgc2FtZSBhcmd1bWVudHMgIisKKyAgICAgICAgICAgICAgImFzIG5vdywgYnV0IHJl
cGxhY2luZyAtLXByZXBhcmUtb25seSB3aXRoIC0tYW5hbHl6ZSByZXN1bHRzLnR4dC4iLCA3OCkK
ICAgZW5kCi0gIAogcmVzY3VlID0+IGUKICAgZmFpbChlKQogZW5kCg==
</data>
<flag name="review"
          id="119560"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>