Return-path: <martin@ssf.com.mx>
Envelope-to: omar@ssf.com.mx
Delivery-date: Tue, 28 Jul 2015 14:12:09 -0500
Received: from 187-254-9-149-cable.cybercable.net.mx ([187.254.9.149]:41873 helo=[192.168.1.120])
	by vishnu.hosting-mexico.net with esmtpsa (TLSv1.2:DHE-RSA-AES128-SHA:128)
	(Exim 4.85)
	(envelope-from <martin@ssf.com.mx>)
	id 1ZKAIK-002CBF-KY
	for omar@ssf.com.mx; Tue, 28 Jul 2015 14:12:08 -0500
Message-ID: <55B7D409.4040305@ssf.com.mx>
Date: Tue, 28 Jul 2015 14:12:09 -0500
From: martin <martin@ssf.com.mx>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0
MIME-Version: 1.0
To: omar@ssf.com.mx
Subject: scripts Rabbitmq
Content-Type: multipart/mixed;
 boundary="------------090901050506090802080305"

This is a multi-part message in MIME format.
--------------090901050506090802080305
Content-Type: multipart/alternative;
 boundary="------------040702060503030401070204"


--------------040702060503030401070204
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit


cd /opt/
wget --no-cookies --no-check-certificate --header "Cookie: 
gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; 
oraclelicense=accept-securebackup-cookie" 
"http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz"
tar xzf jdk-7u79-linux-x64.tar.gz

cd /opt/jdk1.7.0_79/
alternatives --install /usr/bin/java java /opt/jdk1.7.0_79/bin/java 2
alternatives --config java

alternatives --install /usr/bin/jar jar /opt/jdk1.7.0_79/bin/jar 2
alternatives --install /usr/bin/javac javac /opt/jdk1.7.0_79/bin/javac 2
alternatives --set jar /opt/jdk1.7.0_79/bin/jar
alternatives --set javac /opt/jdk1.7.0_79/bin/javac

--------------040702060503030401070204
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <br>
    cd /opt/<br>
    wget --no-cookies --no-check-certificate --header "Cookie:
    gpw_e24=http%3A%2F%2Fwww.oracle.com%2F;
    oraclelicense=accept-securebackup-cookie"
<a class="moz-txt-link-rfc2396E" href="http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz">"http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz"</a><br>
    tar xzf jdk-7u79-linux-x64.tar.gz<br>
    <br>
    cd /opt/jdk1.7.0_79/<br>
    alternatives --install /usr/bin/java java /opt/jdk1.7.0_79/bin/java
    2<br>
    alternatives --config java<br>
    <br>
    alternatives --install /usr/bin/jar jar /opt/jdk1.7.0_79/bin/jar 2<br>
    alternatives --install /usr/bin/javac javac
    /opt/jdk1.7.0_79/bin/javac 2<br>
    alternatives --set jar /opt/jdk1.7.0_79/bin/jar<br>
    alternatives --set javac /opt/jdk1.7.0_79/bin/javac <br>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </body>
</html>

--------------040702060503030401070204--

--------------090901050506090802080305
Content-Type: text/plain; charset=UTF-8;
 name="rabbitmqadmin"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="rabbitmqadmin"

IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCgojICAgVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBh
cmUgc3ViamVjdCB0byB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZQojICAgVmVyc2lvbiAx
LjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
bgojICAgY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKIyAgIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLwoj
CiMgICBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiCiMgICBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZQojICAgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyByaWdodHMgYW5kIGxpbWl0YXRp
b25zCiMgICB1bmRlciB0aGUgTGljZW5zZS4KIwojICAgVGhlIE9yaWdpbmFsIENvZGUgaXMg
UmFiYml0TVEgTWFuYWdlbWVudCBQbHVnaW4uCiMKIyAgIFRoZSBJbml0aWFsIERldmVsb3Bl
ciBvZiB0aGUgT3JpZ2luYWwgQ29kZSBpcyBHb1Bpdm90YWwsIEluYy4KIyAgIENvcHlyaWdo
dCAoYykgMjAxMC0yMDE0IEdvUGl2b3RhbCwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
CmltcG9ydCBzeXMKaWYgc3lzLnZlcnNpb25faW5mb1swXSA8IDIgb3Igc3lzLnZlcnNpb25f
aW5mb1sxXSA8IDY6CiAgICBwcmludCAiU29ycnksIHJhYmJpdG1xYWRtaW4gcmVxdWlyZXMg
YXQgbGVhc3QgUHl0aG9uIDIuNi4iCiAgICBzeXMuZXhpdCgxKQoKZnJvbSBDb25maWdQYXJz
ZXIgaW1wb3J0IENvbmZpZ1BhcnNlciwgTm9TZWN0aW9uRXJyb3IKZnJvbSBvcHRwYXJzZSBp
bXBvcnQgT3B0aW9uUGFyc2VyLCBUaXRsZWRIZWxwRm9ybWF0dGVyCmltcG9ydCBodHRwbGli
CmltcG9ydCB1cmxsaWIKaW1wb3J0IHVybHBhcnNlCmltcG9ydCBiYXNlNjQKaW1wb3J0IGpz
b24KaW1wb3J0IG9zCmltcG9ydCBzb2NrZXQKClZFUlNJT04gPSAnMy4zLjUnCgpMSVNUQUJM
RSA9IHsnY29ubmVjdGlvbnMnOiB7J3Zob3N0JzogRmFsc2V9LAogICAgICAgICAgICAnY2hh
bm5lbHMnOiAgICB7J3Zob3N0JzogRmFsc2V9LAogICAgICAgICAgICAnZXhjaGFuZ2VzJzog
ICB7J3Zob3N0JzogVHJ1ZX0sCiAgICAgICAgICAgICdxdWV1ZXMnOiAgICAgIHsndmhvc3Qn
OiBUcnVlfSwKICAgICAgICAgICAgJ2JpbmRpbmdzJzogICAgeyd2aG9zdCc6IFRydWV9LAog
ICAgICAgICAgICAndXNlcnMnOiAgICAgICB7J3Zob3N0JzogRmFsc2V9LAogICAgICAgICAg
ICAndmhvc3RzJzogICAgICB7J3Zob3N0JzogRmFsc2V9LAogICAgICAgICAgICAncGVybWlz
c2lvbnMnOiB7J3Zob3N0JzogRmFsc2V9LAogICAgICAgICAgICAnbm9kZXMnOiAgICAgICB7
J3Zob3N0JzogRmFsc2V9LAogICAgICAgICAgICAncGFyYW1ldGVycyc6ICB7J3Zob3N0Jzog
RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanNvbic6ICBbJ3ZhbHVlJ119
LAogICAgICAgICAgICAncG9saWNpZXMnOiAgICB7J3Zob3N0JzogRmFsc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnanNvbic6ICBbJ2RlZmluaXRpb24nXX19CgpTSE9XQUJM
RSA9IHsnb3ZlcnZpZXcnOiB7J3Zob3N0JzogRmFsc2V9fQoKUFJPTU9URV9DT0xVTU5TID0g
Wyd2aG9zdCcsICduYW1lJywgJ3R5cGUnLAogICAgICAgICAgICAgICAgICAgJ3NvdXJjZScs
ICdkZXN0aW5hdGlvbicsICdkZXN0aW5hdGlvbl90eXBlJywgJ3JvdXRpbmdfa2V5J10KClVS
SVMgPSB7CiAgICAnZXhjaGFuZ2UnOiAgICcvZXhjaGFuZ2VzL3t2aG9zdH0ve25hbWV9JywK
ICAgICdxdWV1ZSc6ICAgICAgJy9xdWV1ZXMve3Zob3N0fS97bmFtZX0nLAogICAgJ2JpbmRp
bmcnOiAgICAnL2JpbmRpbmdzL3t2aG9zdH0vZS97c291cmNlfS97ZGVzdGluYXRpb25fY2hh
cn0ve2Rlc3RpbmF0aW9ufScsCiAgICAnYmluZGluZ19kZWwnOicvYmluZGluZ3Mve3Zob3N0
fS9lL3tzb3VyY2V9L3tkZXN0aW5hdGlvbl9jaGFyfS97ZGVzdGluYXRpb259L3twcm9wZXJ0
aWVzX2tleX0nLAogICAgJ3Zob3N0JzogICAgICAnL3Zob3N0cy97bmFtZX0nLAogICAgJ3Vz
ZXInOiAgICAgICAnL3VzZXJzL3tuYW1lfScsCiAgICAncGVybWlzc2lvbic6ICcvcGVybWlz
c2lvbnMve3Zob3N0fS97dXNlcn0nLAogICAgJ3BhcmFtZXRlcic6ICAnL3BhcmFtZXRlcnMv
e2NvbXBvbmVudH0ve3Zob3N0fS97bmFtZX0nLAogICAgJ3BvbGljeSc6ICAgICAnL3BvbGlj
aWVzL3t2aG9zdH0ve25hbWV9JwogICAgfQoKREVDTEFSQUJMRSA9IHsKICAgICdleGNoYW5n
ZSc6ICAgeydtYW5kYXRvcnknOiBbJ25hbWUnLCAndHlwZSddLAogICAgICAgICAgICAgICAg
ICAgJ2pzb24nOiAgICAgIFsnYXJndW1lbnRzJ10sCiAgICAgICAgICAgICAgICAgICAnb3B0
aW9uYWwnOiAgeydhdXRvX2RlbGV0ZSc6ICdmYWxzZScsICdkdXJhYmxlJzogJ3RydWUnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJuYWwnOiAnZmFsc2UnLCAn
YXJndW1lbnRzJzoge319fSwKICAgICdxdWV1ZSc6ICAgICAgeydtYW5kYXRvcnknOiBbJ25h
bWUnXSwKICAgICAgICAgICAgICAgICAgICdqc29uJzogICAgICBbJ2FyZ3VtZW50cyddLAog
ICAgICAgICAgICAgICAgICAgJ29wdGlvbmFsJzogIHsnYXV0b19kZWxldGUnOiAnZmFsc2Un
LCAnZHVyYWJsZSc6ICd0cnVlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2FyZ3VtZW50cyc6IHt9LCAnbm9kZSc6IE5vbmV9fSwKICAgICdiaW5kaW5nJzogICAgeydt
YW5kYXRvcnknOiBbJ3NvdXJjZScsICdkZXN0aW5hdGlvbiddLAogICAgICAgICAgICAgICAg
ICAgJ2pzb24nOiAgICAgIFsnYXJndW1lbnRzJ10sCiAgICAgICAgICAgICAgICAgICAnb3B0
aW9uYWwnOiAgeydkZXN0aW5hdGlvbl90eXBlJzogJ3F1ZXVlJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3JvdXRpbmdfa2V5JzogJycsICdhcmd1bWVudHMnOiB7fX19
LAogICAgJ3Zob3N0JzogICAgICB7J21hbmRhdG9yeSc6IFsnbmFtZSddLAogICAgICAgICAg
ICAgICAgICAgJ29wdGlvbmFsJzogIHsndHJhY2luZyc6IE5vbmV9fSwKICAgICd1c2VyJzog
ICAgICAgeydtYW5kYXRvcnknOiBbJ25hbWUnLCAncGFzc3dvcmQnLCAndGFncyddLAogICAg
ICAgICAgICAgICAgICAgJ29wdGlvbmFsJzogIHt9fSwKICAgICdwZXJtaXNzaW9uJzogeydt
YW5kYXRvcnknOiBbJ3Zob3N0JywgJ3VzZXInLCAnY29uZmlndXJlJywgJ3dyaXRlJywgJ3Jl
YWQnXSwKICAgICAgICAgICAgICAgICAgICdvcHRpb25hbCc6ICB7fX0sCiAgICAncGFyYW1l
dGVyJzogIHsnbWFuZGF0b3J5JzogWydjb21wb25lbnQnLCAnbmFtZScsICd2YWx1ZSddLAog
ICAgICAgICAgICAgICAgICAgJ2pzb24nOiAgICAgIFsndmFsdWUnXSwKICAgICAgICAgICAg
ICAgICAgICdvcHRpb25hbCc6ICB7fX0sCiAgICAjIFByaW9yaXR5IGlzICdqc29uJyB0byBj
b252ZXJ0IHRvIGludAogICAgJ3BvbGljeSc6ICAgICB7J21hbmRhdG9yeSc6IFsnbmFtZScs
ICdwYXR0ZXJuJywgJ2RlZmluaXRpb24nXSwKICAgICAgICAgICAgICAgICAgICdqc29uJzog
ICAgICBbJ2RlZmluaXRpb24nLCAncHJpb3JpdHknXSwKICAgICAgICAgICAgICAgICAgICdv
cHRpb25hbCc6ICB7J3ByaW9yaXR5JyA6IDAsICdhcHBseS10byc6IE5vbmV9fQogICAgfQoK
REVMRVRBQkxFID0gewogICAgJ2V4Y2hhbmdlJzogICB7J21hbmRhdG9yeSc6IFsnbmFtZSdd
fSwKICAgICdxdWV1ZSc6ICAgICAgeydtYW5kYXRvcnknOiBbJ25hbWUnXX0sCiAgICAnYmlu
ZGluZyc6ICAgIHsnbWFuZGF0b3J5JzogWydzb3VyY2UnLCAnZGVzdGluYXRpb25fdHlwZScs
ICdkZXN0aW5hdGlvbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9w
ZXJ0aWVzX2tleSddfSwKICAgICd2aG9zdCc6ICAgICAgeydtYW5kYXRvcnknOiBbJ25hbWUn
XX0sCiAgICAndXNlcic6ICAgICAgIHsnbWFuZGF0b3J5JzogWyduYW1lJ119LAogICAgJ3Bl
cm1pc3Npb24nOiB7J21hbmRhdG9yeSc6IFsndmhvc3QnLCAndXNlciddfSwKICAgICdwYXJh
bWV0ZXInOiAgeydtYW5kYXRvcnknOiBbJ2NvbXBvbmVudCcsICduYW1lJ119LAogICAgJ3Bv
bGljeSc6ICAgICB7J21hbmRhdG9yeSc6IFsnbmFtZSddfQogICAgfQoKQ0xPU0FCTEUgPSB7
CiAgICAnY29ubmVjdGlvbic6IHsnbWFuZGF0b3J5JzogWyduYW1lJ10sCiAgICAgICAgICAg
ICAgICAgICAnb3B0aW9uYWwnOiAge30sCiAgICAgICAgICAgICAgICAgICAndXJpJzogICAg
ICAgJy9jb25uZWN0aW9ucy97bmFtZX0nfQogICAgfQoKUFVSR0FCTEUgPSB7CiAgICAncXVl
dWUnOiB7J21hbmRhdG9yeSc6IFsnbmFtZSddLAogICAgICAgICAgICAgICdvcHRpb25hbCc6
ICB7fSwKICAgICAgICAgICAgICAndXJpJzogICAgICAgJy9xdWV1ZXMve3Zob3N0fS97bmFt
ZX0vY29udGVudHMnfQogICAgfQoKRVhUUkFfVkVSQlMgPSB7CiAgICAncHVibGlzaCc6IHsn
bWFuZGF0b3J5JzogWydyb3V0aW5nX2tleSddLAogICAgICAgICAgICAgICAgJ29wdGlvbmFs
JzogIHsncGF5bG9hZCc6IE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdl
eGNoYW5nZSc6ICdhbXEuZGVmYXVsdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdwYXlsb2FkX2VuY29kaW5nJzogJ3N0cmluZyd9LAogICAgICAgICAgICAgICAgJ3VyaSc6
ICAgICAgICcvZXhjaGFuZ2VzL3t2aG9zdH0ve2V4Y2hhbmdlfS9wdWJsaXNoJ30sCiAgICAn
Z2V0JzogICAgIHsnbWFuZGF0b3J5JzogWydxdWV1ZSddLAogICAgICAgICAgICAgICAgJ29w
dGlvbmFsJzogIHsnY291bnQnOiAnMScsICdyZXF1ZXVlJzogJ3RydWUnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAncGF5bG9hZF9maWxlJzogTm9uZSwgJ2VuY29kaW5nJzog
J2F1dG8nfSwKICAgICAgICAgICAgICAgICd1cmknOiAgICAgICAnL3F1ZXVlcy97dmhvc3R9
L3txdWV1ZX0vZ2V0J30KfQoKZm9yIGsgaW4gREVDTEFSQUJMRToKICAgIERFQ0xBUkFCTEVb
a11bJ3VyaSddID0gVVJJU1trXQoKZm9yIGsgaW4gREVMRVRBQkxFOgogICAgREVMRVRBQkxF
W2tdWyd1cmknXSA9IFVSSVNba10KICAgIERFTEVUQUJMRVtrXVsnb3B0aW9uYWwnXSA9IHt9
CkRFTEVUQUJMRVsnYmluZGluZyddWyd1cmknXSA9IFVSSVNbJ2JpbmRpbmdfZGVsJ10KCmRl
ZiBzaG9ydF91c2FnZSgpOgogICAgcmV0dXJuICJyYWJiaXRtcWFkbWluIFtvcHRpb25zXSBz
dWJjb21tYW5kIgoKZGVmIHRpdGxlKG5hbWUpOgogICAgcmV0dXJuICJcbiVzXG4lc1xuXG4i
ICUgKG5hbWUsICc9JyAqIGxlbihuYW1lKSkKCmRlZiBzdWJjb21tYW5kc191c2FnZSgpOgog
ICAgdXNhZ2UgPSAiIiJVc2FnZQo9PT09PQogICIiIiArIHNob3J0X3VzYWdlKCkgKyAiIiIK
CiAgd2hlcmUgc3ViY29tbWFuZCBpcyBvbmUgb2Y6CiIiIiArIHRpdGxlKCJEaXNwbGF5IikK
CiAgICBmb3IgbCBpbiBMSVNUQUJMRToKICAgICAgICB1c2FnZSArPSAiICBsaXN0IHswfSBb
PGNvbHVtbj4uLi5dXG4iLmZvcm1hdChsKQogICAgZm9yIHMgaW4gU0hPV0FCTEU6CiAgICAg
ICAgdXNhZ2UgKz0gIiAgc2hvdyB7MH0gWzxjb2x1bW4+Li4uXVxuIi5mb3JtYXQocykKICAg
IHVzYWdlICs9IHRpdGxlKCJPYmplY3QgTWFuaXB1bGF0aW9uIikKICAgIHVzYWdlICs9IGZt
dF91c2FnZV9zdGFuemEoREVDTEFSQUJMRSwgICdkZWNsYXJlJykKICAgIHVzYWdlICs9IGZt
dF91c2FnZV9zdGFuemEoREVMRVRBQkxFLCAgICdkZWxldGUnKQogICAgdXNhZ2UgKz0gZm10
X3VzYWdlX3N0YW56YShDTE9TQUJMRSwgICAgJ2Nsb3NlJykKICAgIHVzYWdlICs9IGZtdF91
c2FnZV9zdGFuemEoUFVSR0FCTEUsICAgICdwdXJnZScpCiAgICB1c2FnZSArPSB0aXRsZSgi
QnJva2VyIERlZmluaXRpb25zIikKICAgIHVzYWdlICs9ICIiIiAgZXhwb3J0IDxmaWxlPgog
IGltcG9ydCA8ZmlsZT4KIiIiCiAgICB1c2FnZSArPSB0aXRsZSgiUHVibGlzaGluZyBhbmQg
Q29uc3VtaW5nIikKICAgIHVzYWdlICs9IGZtdF91c2FnZV9zdGFuemEoRVhUUkFfVkVSQlMs
ICcnKQogICAgdXNhZ2UgKz0gIiIiCiAgKiBJZiBwYXlsb2FkIGlzIG5vdCBzcGVjaWZpZWQg
b24gcHVibGlzaCwgc3RhbmRhcmQgaW5wdXQgaXMgdXNlZAoKICAqIElmIHBheWxvYWRfZmls
ZSBpcyBub3Qgc3BlY2lmaWVkIG9uIGdldCwgdGhlIHBheWxvYWQgd2lsbCBiZSBzaG93biBv
bgogICAgc3RhbmRhcmQgb3V0cHV0IGFsb25nIHdpdGggdGhlIG1lc3NhZ2UgbWV0YWRhdGEK
CiAgKiBJZiBwYXlsb2FkX2ZpbGUgaXMgc3BlY2lmaWVkIG9uIGdldCwgY291bnQgbXVzdCBu
b3QgYmUgc2V0CiIiIgogICAgcmV0dXJuIHVzYWdlCgpkZWYgY29uZmlnX3VzYWdlKCk6CiAg
ICB1c2FnZSA9ICJVc2FnZVxuPT09PT1cbiIgKyBzaG9ydF91c2FnZSgpCiAgICB1c2FnZSAr
PSAiXG4iICsgdGl0bGUoIkNvbmZpZ3VyYXRpb24gRmlsZSIpCiAgICB1c2FnZSArPSAiIiIg
IEl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIGZpbGUgZnJvbSB0
aGUgY29tbWFuZCBsaW5lLgogIEhvc3RzIGNhbiBiZSBjb25maWd1cmVkIGVhc2lseSBpbiBh
IGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgY2FsbGVkCiAgZnJvbSB0aGUgY29tbWFuZCBsaW5l
LgoiIiIKICAgIHVzYWdlICs9IHRpdGxlKCJFeGFtcGxlIikKICAgIHVzYWdlICs9ICIiIiAg
IyByYWJiaXRtcWFkbWluLmNvbmYuZXhhbXBsZSBTVEFSVAoKICBbaG9zdF9ub3JtYWxdCiAg
aG9zdG5hbWUgPSBsb2NhbGhvc3QKICBwb3J0ID0gMTU2NzIKICB1c2VybmFtZSA9IGd1ZXN0
CiAgcGFzc3dvcmQgPSBndWVzdAogIGRlY2xhcmVfdmhvc3QgPSAvICMgVXNlZCBhcyBkZWZh
dWx0IGZvciBkZWNsYXJlIC8gZGVsZXRlIG9ubHkKICB2aG9zdCA9IC8gICAgICAgICAjIFVz
ZWQgYXMgZGVmYXVsdCBmb3IgZGVjbGFyZSAvIGRlbGV0ZSAvIGxpc3QKCiAgW2hvc3Rfc3Ns
XQogIGhvc3RuYW1lID0gb3RoZXJob3N0CiAgcG9ydCA9IDE1NjcyCiAgdXNlcm5hbWUgPSBn
dWVzdAogIHBhc3N3b3JkID0gZ3Vlc3QKICBzc2wgPSBUcnVlCiAgc3NsX2tleV9maWxlID0g
L3BhdGgvdG8va2V5LnBlbQogIHNzbF9jZXJ0X2ZpbGUgPSAvcGF0aC90by9jZXJ0LnBlbQoK
ICAjIHJhYmJpdG1xYWRtaW4uY29uZi5leGFtcGxlIEVORAoiIiIKICAgIHVzYWdlICs9IHRp
dGxlKCJVc2UiKQogICAgdXNhZ2UgKz0gIiIiICByYWJiaXRtcWFkbWluIC1jIHJhYmJpdG1x
YWRtaW4uY29uZi5leGFtcGxlIC1OIGhvc3Rfbm9ybWFsIC4uLiIiIgogICAgcmV0dXJuIHVz
YWdlCgpkZWYgbW9yZV9oZWxwKCk6CiAgICByZXR1cm4gIiIiCk1vcmUgSGVscAo9PT09PT09
PT0KCkZvciBtb3JlIGhlbHAgdXNlIHRoZSBoZWxwIHN1YmNvbW1hbmQ6CgogIHJhYmJpdG1x
YWRtaW4gaGVscCBzdWJjb21tYW5kcyAgIyBGb3IgYSBsaXN0IG9mIGF2YWlsYWJsZSBzdWJj
b21tYW5kcwogIHJhYmJpdG1xYWRtaW4gaGVscCBjb25maWcgICAgICAgIyBGb3IgaGVscCB3
aXRoIHRoZSBjb25maWd1cmF0aW9uIGZpbGUKIiIiCgpkZWYgZm10X3VzYWdlX3N0YW56YShy
b290LCB2ZXJiKToKICAgIGRlZiBmbXRfYXJncyhhcmdzKToKICAgICAgICByZXMgPSAiICIu
am9pbihbInswfT0uLi4iLmZvcm1hdChhKSBmb3IgYSBpbiBhcmdzWydtYW5kYXRvcnknXV0p
CiAgICAgICAgb3B0cyA9ICIgIi5qb2luKCJ7MH09Li4uIi5mb3JtYXQobykgZm9yIG8gaW4g
YXJnc1snb3B0aW9uYWwnXS5rZXlzKCkpCiAgICAgICAgaWYgb3B0cyAhPSAiIjoKICAgICAg
ICAgICAgcmVzICs9ICIgW3swfV0iLmZvcm1hdChvcHRzKQogICAgICAgIHJldHVybiByZXMK
CiAgICB0ZXh0ID0gIiIKICAgIGlmIHZlcmIgIT0gIiI6CiAgICAgICAgdmVyYiA9ICIgIiAr
IHZlcmIKICAgIGZvciBrIGluIHJvb3Qua2V5cygpOgogICAgICAgIHRleHQgKz0gIiB7MH0g
ezF9IHsyfVxuIi5mb3JtYXQodmVyYiwgaywgZm10X2FyZ3Mocm9vdFtrXSkpCiAgICByZXR1
cm4gdGV4dAoKZGVmYXVsdF9vcHRpb25zID0geyAiaG9zdG5hbWUiICAgICAgICA6ICJsb2Nh
bGhvc3QiLAogICAgICAgICAgICAgICAgICAgICJwb3J0IiAgICAgICAgICAgIDogIjE1Njcy
IiwKICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZV92aG9zdCIgICA6ICIvIiwKICAgICAg
ICAgICAgICAgICAgICAidXNlcm5hbWUiICAgICAgICA6ICJndWVzdCIsCiAgICAgICAgICAg
ICAgICAgICAgInBhc3N3b3JkIiAgICAgICAgOiAiZ3Vlc3QiLAogICAgICAgICAgICAgICAg
ICAgICJzc2wiICAgICAgICAgICAgIDogRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgInZl
cmJvc2UiICAgICAgICAgOiBUcnVlLAogICAgICAgICAgICAgICAgICAgICJmb3JtYXQiICAg
ICAgICAgIDogInRhYmxlIiwKICAgICAgICAgICAgICAgICAgICAiZGVwdGgiICAgICAgICAg
ICA6IDEsCiAgICAgICAgICAgICAgICAgICAgImJhc2hfY29tcGxldGlvbiIgOiBGYWxzZSB9
CgoKY2xhc3MgTXlGb3JtYXR0ZXIoVGl0bGVkSGVscEZvcm1hdHRlcik6CiAgICBkZWYgZm9y
bWF0X2VwaWxvZyhzZWxmLCBlcGlsb2cpOgogICAgICAgIHJldHVybiBlcGlsb2cKCnBhcnNl
ciA9IE9wdGlvblBhcnNlcih1c2FnZT1zaG9ydF91c2FnZSgpLAogICAgICAgICAgICAgICAg
ICAgICAgZm9ybWF0dGVyPU15Rm9ybWF0dGVyKCksCiAgICAgICAgICAgICAgICAgICAgICBl
cGlsb2c9bW9yZV9oZWxwKCkpCgpkZWYgbWFrZV9wYXJzZXIoKToKICAgIGRlZiBhZGQoKmFy
Z3MsICoqa3dhcmdzKToKICAgICAgICBrZXkgPSBrd2FyZ3NbJ2Rlc3QnXQogICAgICAgIGlm
IGtleSBpbiBkZWZhdWx0X29wdGlvbnM6CiAgICAgICAgICAgIGRlZmF1bHQgPSAiIFtkZWZh
dWx0OiAlc10iICUgZGVmYXVsdF9vcHRpb25zW2tleV0KICAgICAgICAgICAga3dhcmdzWydo
ZWxwJ10gPSBrd2FyZ3NbJ2hlbHAnXSArIGRlZmF1bHQKICAgICAgICBwYXJzZXIuYWRkX29w
dGlvbigqYXJncywgKiprd2FyZ3MpCgogICAgYWRkKCItYyIsICItLWNvbmZpZyIsIGRlc3Q9
ImNvbmZpZyIsCiAgICAgICAgaGVscD0iY29uZmlndXJhdGlvbiBmaWxlIFtkZWZhdWx0OiB+
Ly5yYWJiaXRtcWFkbWluLmNvbmZdIiwKICAgICAgICBtZXRhdmFyPSJDT05GSUciKQogICAg
YWRkKCItTiIsICItLW5vZGUiLCBkZXN0PSJub2RlIiwKICAgICAgICBoZWxwPSJub2RlIGRl
c2NyaWJlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIFtkZWZhdWx0OiAnZGVmYXVsdCci
ICsgXAogICAgICAgICAgICAgIiBvbmx5IGlmIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBzcGVj
aWZpZWRdIiwKICAgICAgICBtZXRhdmFyPSJOT0RFIikKICAgIGFkZCgiLUgiLCAiLS1ob3N0
IiwgZGVzdD0iaG9zdG5hbWUiLAogICAgICAgIGhlbHA9ImNvbm5lY3QgdG8gaG9zdCBIT1NU
IiAsCiAgICAgICAgbWV0YXZhcj0iSE9TVCIpCiAgICBhZGQoIi1QIiwgIi0tcG9ydCIsIGRl
c3Q9InBvcnQiLAogICAgICAgIGhlbHA9ImNvbm5lY3QgdG8gcG9ydCBQT1JUIiwKICAgICAg
ICBtZXRhdmFyPSJQT1JUIikKICAgIGFkZCgiLVYiLCAiLS12aG9zdCIsIGRlc3Q9InZob3N0
IiwKICAgICAgICBoZWxwPSJjb25uZWN0IHRvIHZob3N0IFZIT1NUIFtkZWZhdWx0OiBhbGwg
dmhvc3RzIGZvciBsaXN0LCAnLycgZm9yIGRlY2xhcmVdIiwKICAgICAgICBtZXRhdmFyPSJW
SE9TVCIpCiAgICBhZGQoIi11IiwgIi0tdXNlcm5hbWUiLCBkZXN0PSJ1c2VybmFtZSIsCiAg
ICAgICAgaGVscD0iY29ubmVjdCB1c2luZyB1c2VybmFtZSBVU0VSTkFNRSIsCiAgICAgICAg
bWV0YXZhcj0iVVNFUk5BTUUiKQogICAgYWRkKCItcCIsICItLXBhc3N3b3JkIiwgZGVzdD0i
cGFzc3dvcmQiLAogICAgICAgIGhlbHA9ImNvbm5lY3QgdXNpbmcgcGFzc3dvcmQgUEFTU1dP
UkQiLAogICAgICAgIG1ldGF2YXI9IlBBU1NXT1JEIikKICAgIGFkZCgiLXEiLCAiLS1xdWll
dCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJ2ZXJib3NlIiwKICAgICAgICBoZWxw
PSJzdXBwcmVzcyBzdGF0dXMgbWVzc2FnZXMiKQogICAgYWRkKCItcyIsICItLXNzbCIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InNzbCIsCiAgICAgICAgaGVscD0iY29ubmVjdCB3
aXRoIHNzbCIpCiAgICBhZGQoIi0tc3NsLWtleS1maWxlIiwgZGVzdD0ic3NsX2tleV9maWxl
IiwKICAgICAgICBoZWxwPSJQRU0gZm9ybWF0IGtleSBmaWxlIGZvciBTU0wiKQogICAgYWRk
KCItLXNzbC1jZXJ0LWZpbGUiLCBkZXN0PSJzc2xfY2VydF9maWxlIiwKICAgICAgICBoZWxw
PSJQRU0gZm9ybWF0IGNlcnRpZmljYXRlIGZpbGUgZm9yIFNTTCIpCiAgICBhZGQoIi1mIiwg
Ii0tZm9ybWF0IiwgZGVzdD0iZm9ybWF0IiwKICAgICAgICBoZWxwPSJmb3JtYXQgZm9yIGxp
c3RpbmcgY29tbWFuZHMgLSBvbmUgb2YgWyIgKyAiLCAiLmpvaW4oRk9STUFUUy5rZXlzKCkp
ICArICJdIikKICAgIGFkZCgiLVMiLCAiLS1zb3J0IiwgZGVzdD0ic29ydCIsIGhlbHA9InNv
cnQga2V5IGZvciBsaXN0aW5nIHF1ZXJpZXMiKQogICAgYWRkKCItUiIsICItLXNvcnQtcmV2
ZXJzZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InNvcnRfcmV2ZXJzZSIsCiAgICAg
ICAgaGVscD0icmV2ZXJzZSB0aGUgc29ydCBvcmRlciIpCiAgICBhZGQoIi1kIiwgIi0tZGVw
dGgiLCBkZXN0PSJkZXB0aCIsCiAgICAgICAgaGVscD0ibWF4aW11bSBkZXB0aCB0byByZWN1
cnNlIGZvciBsaXN0aW5nIHRhYmxlcyIpCiAgICBhZGQoIi0tYmFzaC1jb21wbGV0aW9uIiwg
YWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICBkZXN0PSJiYXNoX2NvbXBsZXRpb24iLAog
ICAgICAgIGhlbHA9IlByaW50IGJhc2ggY29tcGxldGlvbiBzY3JpcHQiKQogICAgYWRkKCIt
LXZlcnNpb24iLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgIGRlc3Q9InZlcnNpb24i
LAogICAgICAgIGhlbHA9IkRpc3BsYXkgdmVyc2lvbiBhbmQgZXhpdCIpCgpkZWYgZGVmYXVs
dF9jb25maWcoKToKICAgIGhvbWUgPSBvcy5nZXRlbnYoJ1VTRVJQUk9GSUxFJykgb3Igb3Mu
Z2V0ZW52KCdIT01FJykKICAgIGlmIGhvbWUgaXMgbm90IE5vbmU6CiAgICAgICAgY29uZmln
X2ZpbGUgPSBob21lICsgb3Muc2VwICsgIi5yYWJiaXRtcWFkbWluLmNvbmYiCiAgICAgICAg
aWYgb3MucGF0aC5pc2ZpbGUoY29uZmlnX2ZpbGUpOgogICAgICAgICAgICByZXR1cm4gY29u
ZmlnX2ZpbGUKICAgIHJldHVybiBOb25lCgpkZWYgbWFrZV9jb25maWd1cmF0aW9uKCk6CiAg
ICBtYWtlX3BhcnNlcigpCiAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJn
cygpCiAgICBzZXRhdHRyKG9wdGlvbnMsICJkZWNsYXJlX3Zob3N0IiwgTm9uZSkKICAgIGlm
IG9wdGlvbnMudmVyc2lvbjoKICAgICAgICBwcmludF92ZXJzaW9uKCkKICAgIGlmIG9wdGlv
bnMuY29uZmlnIGlzIE5vbmU6CiAgICAgICAgY29uZmlnX2ZpbGUgPSBkZWZhdWx0X2NvbmZp
ZygpCiAgICAgICAgaWYgY29uZmlnX2ZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNl
dGF0dHIob3B0aW9ucywgImNvbmZpZyIsIGNvbmZpZ19maWxlKQogICAgZWxzZToKICAgICAg
ICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3B0aW9ucy5jb25maWcpOgogICAgICAgICAgICBh
c3NlcnRfdXNhZ2UoRmFsc2UsCiAgICAgICAgICAgICAgICAiQ291bGQgbm90IHJlYWQgY29u
ZmlnIGZpbGUgJyVzJyIgJSBvcHRpb25zLmNvbmZpZykKCiAgICBpZiBvcHRpb25zLm5vZGUg
aXMgTm9uZSBhbmQgb3B0aW9ucy5jb25maWc6CiAgICAgICAgb3B0aW9ucy5ub2RlID0gImRl
ZmF1bHQiCiAgICBlbHNlOgogICAgICAgIG9wdGlvbnMubm9kZSA9IG9wdGlvbnMubm9kZQog
ICAgZm9yIChrZXksIHZhbCkgaW4gZGVmYXVsdF9vcHRpb25zLml0ZW1zKCk6CiAgICAgICAg
aWYgZ2V0YXR0cihvcHRpb25zLCBrZXkpIGlzIE5vbmU6CiAgICAgICAgICAgIHNldGF0dHIo
b3B0aW9ucywga2V5LCB2YWwpCgogICAgaWYgb3B0aW9ucy5jb25maWcgaXMgbm90IE5vbmU6
CiAgICAgICAgY29uZmlnID0gQ29uZmlnUGFyc2VyKCkKICAgICAgICB0cnk6CiAgICAgICAg
ICAgIGNvbmZpZy5yZWFkKG9wdGlvbnMuY29uZmlnKQogICAgICAgICAgICBuZXdfY29uZiA9
IGRpY3QoY29uZmlnLml0ZW1zKG9wdGlvbnMubm9kZSkpCiAgICAgICAgZXhjZXB0IE5vU2Vj
dGlvbkVycm9yLCBlcnJvcjoKICAgICAgICAgICAgaWYgb3B0aW9ucy5ub2RlID09ICJkZWZh
dWx0IjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgICAgIGFzc2VydF91c2FnZShGYWxzZSwgKCJDb3VsZCBub3QgcmVhZCBzZWN0aW9uICcl
cycgaW4gY29uZmlnIGZpbGUiICArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAn
JXMnOlxuICAgJXMiKSAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbnMu
bm9kZSwgb3B0aW9ucy5jb25maWcsIGVycm9yKSkKICAgICAgICBlbHNlOgogICAgICAgICAg
ICBmb3Iga2V5LCB2YWwgaW4gbmV3X2NvbmYuaXRlbXMoKToKICAgICAgICAgICAgICAgIHNl
dGF0dHIob3B0aW9ucywga2V5LCB2YWwpCgogICAgcmV0dXJuIChvcHRpb25zLCBhcmdzKQoK
ZGVmIGFzc2VydF91c2FnZShleHByLCBlcnJvcik6CiAgICBpZiBub3QgZXhwcjoKICAgICAg
ICBvdXRwdXQoIlxuRVJST1I6IHswfVxuIi5mb3JtYXQoZXJyb3IpKQogICAgICAgIG91dHB1
dCgiezB9IC0taGVscCBmb3IgaGVscFxuIi5mb3JtYXQob3MucGF0aC5iYXNlbmFtZShzeXMu
YXJndlswXSkpKQogICAgICAgIHN5cy5leGl0KDEpCgpkZWYgcHJpbnRfdmVyc2lvbigpOgog
ICAgb3V0cHV0KCJyYWJiaXRtcWFkbWluIHswfSIuZm9ybWF0KFZFUlNJT04pKQogICAgc3lz
LmV4aXQoMCkKCmRlZiBjb2x1bW5fc29ydF9rZXkoY29sKToKICAgIGlmIGNvbCBpbiBQUk9N
T1RFX0NPTFVNTlM6CiAgICAgICAgcmV0dXJuICgxLCBQUk9NT1RFX0NPTFVNTlMuaW5kZXgo
Y29sKSkKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuICgyLCBjb2wpCgpkZWYgbWFpbigpOgog
ICAgKG9wdGlvbnMsIGFyZ3MpID0gbWFrZV9jb25maWd1cmF0aW9uKCkKICAgIGlmIG9wdGlv
bnMuYmFzaF9jb21wbGV0aW9uOgogICAgICAgIHByaW50X2Jhc2hfY29tcGxldGlvbigpCiAg
ICAgICAgZXhpdCgwKQogICAgYXNzZXJ0X3VzYWdlKGxlbihhcmdzKSA+IDAsICdBY3Rpb24g
bm90IHNwZWNpZmllZCcpCiAgICBtZ210ID0gTWFuYWdlbWVudChvcHRpb25zLCBhcmdzWzE6
XSkKICAgIG1vZGUgPSAiaW52b2tlXyIgKyBhcmdzWzBdCiAgICBhc3NlcnRfdXNhZ2UoaGFz
YXR0cihtZ210LCBtb2RlKSwKICAgICAgICAgICAgICAgICAnQWN0aW9uIHswfSBub3QgdW5k
ZXJzdG9vZCcuZm9ybWF0KGFyZ3NbMF0pKQogICAgbWV0aG9kID0gZ2V0YXR0cihtZ210LCAi
aW52b2tlXyVzIiAlIGFyZ3NbMF0pCiAgICBtZXRob2QoKQoKZGVmIG91dHB1dChzKToKICAg
IHByaW50IG1heWJlX3V0Zjgocywgc3lzLnN0ZG91dCkKCmRlZiBkaWUocyk6CiAgICBzeXMu
c3RkZXJyLndyaXRlKG1heWJlX3V0ZjgoIioqKiB7MH1cbiIuZm9ybWF0KHMpLCBzeXMuc3Rk
ZXJyKSkKICAgIGV4aXQoMSkKCmRlZiBtYXliZV91dGY4KHMsIHN0cmVhbSk6CiAgICBpZiBz
dHJlYW0uaXNhdHR5KCk6CiAgICAgICAgIyBJdCB3aWxsIGhhdmUgYW4gZW5jb2RpbmcsIHdo
aWNoIFB5dGhvbiB3aWxsIHJlc3BlY3QKICAgICAgICByZXR1cm4gcwogICAgZWxzZToKICAg
ICAgICAjIEl0IHdvbid0IGhhdmUgYW4gZW5jb2RpbmcsIGFuZCBQeXRob24gd2lsbCBwaWNr
IEFTQ0lJIGJ5IGRlZmF1bHQKICAgICAgICByZXR1cm4gcy5lbmNvZGUoJ3V0Zi04JykKCmNs
YXNzIE1hbmFnZW1lbnQ6CiAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgYXJncyk6
CiAgICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucwogICAgICAgIHNlbGYuYXJncyA9IGFy
Z3MKCiAgICBkZWYgZ2V0KHNlbGYsIHBhdGgpOgogICAgICAgIHJldHVybiBzZWxmLmh0dHAo
IkdFVCIsICIvYXBpJXMiICUgcGF0aCwgIiIpCgogICAgZGVmIHB1dChzZWxmLCBwYXRoLCBi
b2R5KToKICAgICAgICByZXR1cm4gc2VsZi5odHRwKCJQVVQiLCAiL2FwaSVzIiAlIHBhdGgs
IGJvZHkpCgogICAgZGVmIHBvc3Qoc2VsZiwgcGF0aCwgYm9keSk6CiAgICAgICAgcmV0dXJu
IHNlbGYuaHR0cCgiUE9TVCIsICIvYXBpJXMiICUgcGF0aCwgYm9keSkKCiAgICBkZWYgZGVs
ZXRlKHNlbGYsIHBhdGgpOgogICAgICAgIHJldHVybiBzZWxmLmh0dHAoIkRFTEVURSIsICIv
YXBpJXMiICUgcGF0aCwgIiIpCgogICAgZGVmIGh0dHAoc2VsZiwgbWV0aG9kLCBwYXRoLCBi
b2R5KToKICAgICAgICBpZiBzZWxmLm9wdGlvbnMuc3NsOgogICAgICAgICAgICBjb25uID0g
aHR0cGxpYi5IVFRQU0Nvbm5lY3Rpb24oc2VsZi5vcHRpb25zLmhvc3RuYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vcHRpb25zLnBvcnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9wdGlv
bnMuc3NsX2tleV9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5vcHRpb25zLnNzbF9jZXJ0X2ZpbGUpCiAgICAgICAgZWxzZToKICAgICAg
ICAgICAgY29ubiA9IGh0dHBsaWIuSFRUUENvbm5lY3Rpb24oc2VsZi5vcHRpb25zLmhvc3Ru
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9w
dGlvbnMucG9ydCkKICAgICAgICBoZWFkZXJzID0geyJBdXRob3JpemF0aW9uIjoKICAgICAg
ICAgICAgICAgICAgICAgICAiQmFzaWMgIiArIGJhc2U2NC5iNjRlbmNvZGUoc2VsZi5vcHRp
b25zLnVzZXJuYW1lICsgIjoiICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5vcHRpb25zLnBhc3N3b3JkKX0KICAgICAgICBpZiBi
b2R5ICE9ICIiOgogICAgICAgICAgICBoZWFkZXJzWyJDb250ZW50LVR5cGUiXSA9ICJhcHBs
aWNhdGlvbi9qc29uIgogICAgICAgIHRyeToKICAgICAgICAgICAgY29ubi5yZXF1ZXN0KG1l
dGhvZCwgcGF0aCwgYm9keSwgaGVhZGVycykKICAgICAgICBleGNlcHQgc29ja2V0LmVycm9y
LCBlOgogICAgICAgICAgICBkaWUoIkNvdWxkIG5vdCBjb25uZWN0OiB7MH0iLmZvcm1hdChl
KSkKICAgICAgICByZXNwID0gY29ubi5nZXRyZXNwb25zZSgpCiAgICAgICAgaWYgcmVzcC5z
dGF0dXMgPT0gNDAwOgogICAgICAgICAgICBkaWUoanNvbi5sb2FkcyhyZXNwLnJlYWQoKSlb
J3JlYXNvbiddKQogICAgICAgIGlmIHJlc3Auc3RhdHVzID09IDQwMToKICAgICAgICAgICAg
ZGllKCJBY2Nlc3MgcmVmdXNlZDogezB9Ii5mb3JtYXQocGF0aCkpCiAgICAgICAgaWYgcmVz
cC5zdGF0dXMgPT0gNDA0OgogICAgICAgICAgICBkaWUoIk5vdCBmb3VuZDogezB9Ii5mb3Jt
YXQocGF0aCkpCiAgICAgICAgaWYgcmVzcC5zdGF0dXMgPT0gMzAxOgogICAgICAgICAgICB1
cmwgPSB1cmxwYXJzZS51cmxwYXJzZShyZXNwLmdldGhlYWRlcignbG9jYXRpb24nKSkKICAg
ICAgICAgICAgW2hvc3QsIHBvcnRdID0gdXJsLm5ldGxvYy5zcGxpdCgnOicpCiAgICAgICAg
ICAgIHNlbGYub3B0aW9ucy5ob3N0bmFtZSA9IGhvc3QKICAgICAgICAgICAgc2VsZi5vcHRp
b25zLnBvcnQgPSBpbnQocG9ydCkKICAgICAgICAgICAgcmV0dXJuIHNlbGYuaHR0cChtZXRo
b2QsIHVybC5wYXRoICsgJz8nICsgdXJsLnF1ZXJ5LCBib2R5KQogICAgICAgIGlmIHJlc3Au
c3RhdHVzIDwgMjAwIG9yIHJlc3Auc3RhdHVzID4gNDAwOgogICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oIlJlY2VpdmVkICVkICVzIGZvciBwYXRoICVzXG4lcyIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICUgKHJlc3Auc3RhdHVzLCByZXNwLnJlYXNvbiwgcGF0aCwgcmVz
cC5yZWFkKCkpKQogICAgICAgIHJldHVybiByZXNwLnJlYWQoKQoKICAgIGRlZiB2ZXJib3Nl
KHNlbGYsIHN0cmluZyk6CiAgICAgICAgaWYgc2VsZi5vcHRpb25zLnZlcmJvc2U6CiAgICAg
ICAgICAgIG91dHB1dChzdHJpbmcpCgogICAgZGVmIGdldF9hcmcoc2VsZik6CiAgICAgICAg
YXNzZXJ0X3VzYWdlKGxlbihzZWxmLmFyZ3MpID09IDEsICdFeGFjdGx5IG9uZSBhcmd1bWVu
dCByZXF1aXJlZCcpCiAgICAgICAgcmV0dXJuIHNlbGYuYXJnc1swXQoKICAgIGRlZiBpbnZv
a2VfaGVscChzZWxmKToKICAgICAgICBpZiBsZW4oc2VsZi5hcmdzKSA9PSAwOgogICAgICAg
ICAgICBwYXJzZXIucHJpbnRfaGVscCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaGVs
cF9jbWQgPSBzZWxmLmdldF9hcmcoKQogICAgICAgICAgICBpZiBoZWxwX2NtZCA9PSAnc3Vi
Y29tbWFuZHMnOgogICAgICAgICAgICAgICAgdXNhZ2UgPSBzdWJjb21tYW5kc191c2FnZSgp
CiAgICAgICAgICAgIGVsaWYgaGVscF9jbWQgPT0gJ2NvbmZpZyc6CiAgICAgICAgICAgICAg
ICB1c2FnZSA9IGNvbmZpZ191c2FnZSgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICAgICBhc3NlcnRfdXNhZ2UoRmFsc2UsICIiImhlbHAgdG9waWMgbXVzdCBiZSBvbmUgb2Y6
CiAgc3ViY29tbWFuZHMKICBjb25maWciIiIpCiAgICAgICAgICAgIHByaW50IHVzYWdlCiAg
ICAgICAgZXhpdCgwKQoKICAgIGRlZiBpbnZva2VfcHVibGlzaChzZWxmKToKICAgICAgICAo
dXJpLCB1cGxvYWQpID0gc2VsZi5wYXJzZV9hcmdzKHNlbGYuYXJncywgRVhUUkFfVkVSQlNb
J3B1Ymxpc2gnXSkKICAgICAgICB1cGxvYWRbJ3Byb3BlcnRpZXMnXSA9IHt9ICMgVE9ETyBk
byB3ZSBjYXJlIGhlcmU/CiAgICAgICAgaWYgbm90ICdwYXlsb2FkJyBpbiB1cGxvYWQ6CiAg
ICAgICAgICAgIGRhdGEgPSBzeXMuc3RkaW4ucmVhZCgpCiAgICAgICAgICAgIHVwbG9hZFsn
cGF5bG9hZCddID0gYmFzZTY0LmI2NGVuY29kZShkYXRhKQogICAgICAgICAgICB1cGxvYWRb
J3BheWxvYWRfZW5jb2RpbmcnXSA9ICdiYXNlNjQnCiAgICAgICAgcmVzcCA9IGpzb24ubG9h
ZHMoc2VsZi5wb3N0KHVyaSwganNvbi5kdW1wcyh1cGxvYWQpKSkKICAgICAgICBpZiByZXNw
Wydyb3V0ZWQnXToKICAgICAgICAgICAgc2VsZi52ZXJib3NlKCJNZXNzYWdlIHB1Ymxpc2hl
ZCIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi52ZXJib3NlKCJNZXNzYWdlIHB1
Ymxpc2hlZCBidXQgTk9UIHJvdXRlZCIpCgogICAgZGVmIGludm9rZV9nZXQoc2VsZik6CiAg
ICAgICAgKHVyaSwgdXBsb2FkKSA9IHNlbGYucGFyc2VfYXJncyhzZWxmLmFyZ3MsIEVYVFJB
X1ZFUkJTWydnZXQnXSkKICAgICAgICBwYXlsb2FkX2ZpbGUgPSAncGF5bG9hZF9maWxlJyBp
biB1cGxvYWQgYW5kIHVwbG9hZFsncGF5bG9hZF9maWxlJ10gb3IgTm9uZQogICAgICAgIGFz
c2VydF91c2FnZShub3QgcGF5bG9hZF9maWxlIG9yIHVwbG9hZFsnY291bnQnXSA9PSAnMScs
CiAgICAgICAgICAgICAgICAgICAgICdDYW5ub3QgZ2V0IG11bHRpcGxlIG1lc3NhZ2VzIHVz
aW5nIHBheWxvYWRfZmlsZScpCiAgICAgICAgcmVzdWx0ID0gc2VsZi5wb3N0KHVyaSwganNv
bi5kdW1wcyh1cGxvYWQpKQogICAgICAgIGlmIHBheWxvYWRfZmlsZToKICAgICAgICAgICAg
d3JpdGVfcGF5bG9hZF9maWxlKHBheWxvYWRfZmlsZSwgcmVzdWx0KQogICAgICAgICAgICBj
b2x1bW5zID0gWydyb3V0aW5nX2tleScsICdleGNoYW5nZScsICdtZXNzYWdlX2NvdW50JywK
ICAgICAgICAgICAgICAgICAgICAgICAncGF5bG9hZF9ieXRlcycsICdyZWRlbGl2ZXJlZCdd
CiAgICAgICAgICAgIGZvcm1hdF9saXN0KHJlc3VsdCwgY29sdW1ucywge30sIHNlbGYub3B0
aW9ucykKICAgICAgICBlbHNlOgogICAgICAgICAgICBmb3JtYXRfbGlzdChyZXN1bHQsIFtd
LCB7fSwgc2VsZi5vcHRpb25zKQoKICAgIGRlZiBpbnZva2VfZXhwb3J0KHNlbGYpOgogICAg
ICAgIHBhdGggPSBzZWxmLmdldF9hcmcoKQogICAgICAgIGRlZmluaXRpb25zID0gc2VsZi5n
ZXQoIi9kZWZpbml0aW9ucyIpCiAgICAgICAgZiA9IG9wZW4ocGF0aCwgJ3cnKQogICAgICAg
IGYud3JpdGUoZGVmaW5pdGlvbnMpCiAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgc2VsZi52
ZXJib3NlKCJFeHBvcnRlZCBkZWZpbml0aW9ucyBmb3IgJXMgdG8gXCIlc1wiIgogICAgICAg
ICAgICAgICAgICAgICAlIChzZWxmLm9wdGlvbnMuaG9zdG5hbWUsIHBhdGgpKQoKICAgIGRl
ZiBpbnZva2VfaW1wb3J0KHNlbGYpOgogICAgICAgIHBhdGggPSBzZWxmLmdldF9hcmcoKQog
ICAgICAgIGYgPSBvcGVuKHBhdGgsICdyJykKICAgICAgICBkZWZpbml0aW9ucyA9IGYucmVh
ZCgpCiAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgc2VsZi5wb3N0KCIvZGVmaW5pdGlvbnMi
LCBkZWZpbml0aW9ucykKICAgICAgICBzZWxmLnZlcmJvc2UoIkltcG9ydGVkIGRlZmluaXRp
b25zIGZvciAlcyBmcm9tIFwiJXNcIiIKICAgICAgICAgICAgICAgICAgICAgJSAoc2VsZi5v
cHRpb25zLmhvc3RuYW1lLCBwYXRoKSkKCiAgICBkZWYgaW52b2tlX2xpc3Qoc2VsZik6CiAg
ICAgICAgY29scyA9IHNlbGYuYXJnc1sxOl0KICAgICAgICAodXJpLCBvYmpfaW5mbykgPSBz
ZWxmLmxpc3Rfc2hvd191cmkoTElTVEFCTEUsICdsaXN0JywgY29scykKICAgICAgICBmb3Jt
YXRfbGlzdChzZWxmLmdldCh1cmkpLCBjb2xzLCBvYmpfaW5mbywgc2VsZi5vcHRpb25zKQoK
ICAgIGRlZiBpbnZva2Vfc2hvdyhzZWxmKToKICAgICAgICBjb2xzID0gc2VsZi5hcmdzWzE6
XQogICAgICAgICh1cmksIG9ial9pbmZvKSA9IHNlbGYubGlzdF9zaG93X3VyaShTSE9XQUJM
RSwgJ3Nob3cnLCBjb2xzKQogICAgICAgIGZvcm1hdF9saXN0KCdbezB9XScuZm9ybWF0KHNl
bGYuZ2V0KHVyaSkpLCBjb2xzLCBvYmpfaW5mbywgc2VsZi5vcHRpb25zKQoKICAgIGRlZiBs
aXN0X3Nob3dfdXJpKHNlbGYsIG9ial90eXBlcywgdmVyYiwgY29scyk6CiAgICAgICAgb2Jq
X3R5cGUgPSBzZWxmLmFyZ3NbMF0KICAgICAgICBhc3NlcnRfdXNhZ2Uob2JqX3R5cGUgaW4g
b2JqX3R5cGVzLAogICAgICAgICAgICAgICAgICAgICAiRG9uJ3Qga25vdyBob3cgdG8gezB9
IHsxfSIuZm9ybWF0KHZlcmIsIG9ial90eXBlKSkKICAgICAgICBvYmpfaW5mbyA9IG9ial90
eXBlc1tvYmpfdHlwZV0KICAgICAgICB1cmkgPSAiLyVzIiAlIG9ial90eXBlCiAgICAgICAg
cXVlcnkgPSBbXQogICAgICAgIGlmIG9ial9pbmZvWyd2aG9zdCddIGFuZCBzZWxmLm9wdGlv
bnMudmhvc3Q6CiAgICAgICAgICAgIHVyaSArPSAiLyVzIiAlIHVybGxpYi5xdW90ZV9wbHVz
KHNlbGYub3B0aW9ucy52aG9zdCkKICAgICAgICBpZiBjb2xzICE9IFtdOgogICAgICAgICAg
ICBxdWVyeS5hcHBlbmQoImNvbHVtbnM9IiArICIsIi5qb2luKGNvbHMpKQogICAgICAgIHNv
cnQgPSBzZWxmLm9wdGlvbnMuc29ydAogICAgICAgIGlmIHNvcnQ6CiAgICAgICAgICAgIHF1
ZXJ5LmFwcGVuZCgic29ydD0iICsgc29ydCkKICAgICAgICBpZiBzZWxmLm9wdGlvbnMuc29y
dF9yZXZlcnNlOgogICAgICAgICAgICBxdWVyeS5hcHBlbmQoInNvcnRfcmV2ZXJzZT10cnVl
IikKICAgICAgICBxdWVyeSA9ICImIi5qb2luKHF1ZXJ5KQogICAgICAgIGlmIHF1ZXJ5ICE9
ICIiOgogICAgICAgICAgICB1cmkgKz0gIj8iICsgcXVlcnkKICAgICAgICByZXR1cm4gKHVy
aSwgb2JqX2luZm8pCgogICAgZGVmIGludm9rZV9kZWNsYXJlKHNlbGYpOgogICAgICAgIChv
YmpfdHlwZSwgdXJpLCB1cGxvYWQpID0gc2VsZi5kZWNsYXJlX2RlbGV0ZV9wYXJzZShERUNM
QVJBQkxFKQogICAgICAgIGlmIG9ial90eXBlID09ICdiaW5kaW5nJzoKICAgICAgICAgICAg
c2VsZi5wb3N0KHVyaSwganNvbi5kdW1wcyh1cGxvYWQpKQogICAgICAgIGVsc2U6CiAgICAg
ICAgICAgIHNlbGYucHV0KHVyaSwganNvbi5kdW1wcyh1cGxvYWQpKQogICAgICAgIHNlbGYu
dmVyYm9zZSgiezB9IGRlY2xhcmVkIi5mb3JtYXQob2JqX3R5cGUpKQoKICAgIGRlZiBpbnZv
a2VfZGVsZXRlKHNlbGYpOgogICAgICAgIChvYmpfdHlwZSwgdXJpLCB1cGxvYWQpID0gc2Vs
Zi5kZWNsYXJlX2RlbGV0ZV9wYXJzZShERUxFVEFCTEUpCiAgICAgICAgc2VsZi5kZWxldGUo
dXJpKQogICAgICAgIHNlbGYudmVyYm9zZSgiezB9IGRlbGV0ZWQiLmZvcm1hdChvYmpfdHlw
ZSkpCgogICAgZGVmIGludm9rZV9jbG9zZShzZWxmKToKICAgICAgICAob2JqX3R5cGUsIHVy
aSwgdXBsb2FkKSA9IHNlbGYuZGVjbGFyZV9kZWxldGVfcGFyc2UoQ0xPU0FCTEUpCiAgICAg
ICAgc2VsZi5kZWxldGUodXJpKQogICAgICAgIHNlbGYudmVyYm9zZSgiezB9IGNsb3NlZCIu
Zm9ybWF0KG9ial90eXBlKSkKCiAgICBkZWYgaW52b2tlX3B1cmdlKHNlbGYpOgogICAgICAg
IChvYmpfdHlwZSwgdXJpLCB1cGxvYWQpID0gc2VsZi5kZWNsYXJlX2RlbGV0ZV9wYXJzZShQ
VVJHQUJMRSkKICAgICAgICBzZWxmLmRlbGV0ZSh1cmkpCiAgICAgICAgc2VsZi52ZXJib3Nl
KCJ7MH0gcHVyZ2VkIi5mb3JtYXQob2JqX3R5cGUpKQoKICAgIGRlZiBkZWNsYXJlX2RlbGV0
ZV9wYXJzZShzZWxmLCByb290KToKICAgICAgICBhc3NlcnRfdXNhZ2UobGVuKHNlbGYuYXJn
cykgPiAwLCAnVHlwZSBub3Qgc3BlY2lmaWVkJykKICAgICAgICBvYmpfdHlwZSA9IHNlbGYu
YXJnc1swXQogICAgICAgIGFzc2VydF91c2FnZShvYmpfdHlwZSBpbiByb290LAogICAgICAg
ICAgICAgICAgICAgICAnVHlwZSB7MH0gbm90IHJlY29nbmlzZWQnLmZvcm1hdChvYmpfdHlw
ZSkpCiAgICAgICAgb2JqID0gcm9vdFtvYmpfdHlwZV0KICAgICAgICAodXJpLCB1cGxvYWQp
ID0gc2VsZi5wYXJzZV9hcmdzKHNlbGYuYXJnc1sxOl0sIG9iaikKICAgICAgICByZXR1cm4g
KG9ial90eXBlLCB1cmksIHVwbG9hZCkKCiAgICBkZWYgcGFyc2VfYXJncyhzZWxmLCBhcmdz
LCBvYmopOgogICAgICAgIG1hbmRhdG9yeSA9ICBvYmpbJ21hbmRhdG9yeSddCiAgICAgICAg
b3B0aW9uYWwgPSBvYmpbJ29wdGlvbmFsJ10KICAgICAgICB1cmlfdGVtcGxhdGUgPSBvYmpb
J3VyaSddCiAgICAgICAgdXBsb2FkID0ge30KICAgICAgICBmb3IgayBpbiBvcHRpb25hbC5r
ZXlzKCk6CiAgICAgICAgICAgIGlmIG9wdGlvbmFsW2tdOgogICAgICAgICAgICAgICAgdXBs
b2FkW2tdID0gb3B0aW9uYWxba10KICAgICAgICBmb3IgYXJnIGluIGFyZ3M6CiAgICAgICAg
ICAgIGFzc2VydF91c2FnZSgiPSIgaW4gYXJnLAogICAgICAgICAgICAgICAgICAgICAgICAg
J0FyZ3VtZW50ICJ7MH0iIG5vdCBpbiBmb3JtYXQgbmFtZT12YWx1ZScuZm9ybWF0KGFyZykp
CiAgICAgICAgICAgIChuYW1lLCB2YWx1ZSkgPSBhcmcuc3BsaXQoIj0iLCAxKQogICAgICAg
ICAgICBhc3NlcnRfdXNhZ2UobmFtZSBpbiBtYW5kYXRvcnkgb3IgbmFtZSBpbiBvcHRpb25h
bC5rZXlzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAnQXJndW1lbnQgInswfSIgbm90
IHJlY29nbmlzZWQnLmZvcm1hdChuYW1lKSkKICAgICAgICAgICAgaWYgJ2pzb24nIGluIG9i
aiBhbmQgbmFtZSBpbiBvYmpbJ2pzb24nXToKICAgICAgICAgICAgICAgIHVwbG9hZFtuYW1l
XSA9IHNlbGYucGFyc2VfanNvbih2YWx1ZSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgICAgIHVwbG9hZFtuYW1lXSA9IHZhbHVlCiAgICAgICAgZm9yIG0gaW4gbWFuZGF0b3J5
OgogICAgICAgICAgICBhc3NlcnRfdXNhZ2UobSBpbiB1cGxvYWQua2V5cygpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgJ21hbmRhdG9yeSBhcmd1bWVudCAiezB9IiByZXF1aXJlZCcu
Zm9ybWF0KG0pKQogICAgICAgIGlmICd2aG9zdCcgbm90IGluIG1hbmRhdG9yeToKICAgICAg
ICAgICAgdXBsb2FkWyd2aG9zdCddID0gc2VsZi5vcHRpb25zLnZob3N0IG9yIHNlbGYub3B0
aW9ucy5kZWNsYXJlX3Zob3N0CiAgICAgICAgdXJpX2FyZ3MgPSB7fQogICAgICAgIGZvciBr
IGluIHVwbG9hZDoKICAgICAgICAgICAgdiA9IHVwbG9hZFtrXQogICAgICAgICAgICBpZiB2
IGFuZCBpc2luc3RhbmNlKHYsIGJhc2VzdHJpbmcpOgogICAgICAgICAgICAgICAgdXJpX2Fy
Z3Nba10gPSB1cmxsaWIucXVvdGVfcGx1cyh2KQogICAgICAgICAgICAgICAgaWYgayA9PSAn
ZGVzdGluYXRpb25fdHlwZSc6CiAgICAgICAgICAgICAgICAgICAgdXJpX2FyZ3NbJ2Rlc3Rp
bmF0aW9uX2NoYXInXSA9IHZbMF0KICAgICAgICB1cmkgPSB1cmlfdGVtcGxhdGUuZm9ybWF0
KCoqdXJpX2FyZ3MpCiAgICAgICAgcmV0dXJuICh1cmksIHVwbG9hZCkKCiAgICBkZWYgcGFy
c2VfanNvbihzZWxmLCB0ZXh0KToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBq
c29uLmxvYWRzKHRleHQpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAg
IHByaW50ICJDb3VsZCBub3QgcGFyc2UgSlNPTjpcbiAgezB9Ii5mb3JtYXQodGV4dCkKICAg
ICAgICAgICAgc3lzLmV4aXQoMSkKCmRlZiBmb3JtYXRfbGlzdChqc29uX2xpc3QsIGNvbHVt
bnMsIGFyZ3MsIG9wdGlvbnMpOgogICAgZm9ybWF0ID0gb3B0aW9ucy5mb3JtYXQKICAgIGZv
cm1hdHRlciA9IE5vbmUKICAgIGlmIGZvcm1hdCA9PSAicmF3X2pzb24iOgogICAgICAgIG91
dHB1dChqc29uX2xpc3QpCiAgICAgICAgcmV0dXJuCiAgICBlbGlmIGZvcm1hdCA9PSAicHJl
dHR5X2pzb24iOgogICAgICAgIGVuYyA9IGpzb24uSlNPTkVuY29kZXIoRmFsc2UsIEZhbHNl
LCBUcnVlLCBUcnVlLCBUcnVlLCAyKQogICAgICAgIG91dHB1dChlbmMuZW5jb2RlKGpzb24u
bG9hZHMoanNvbl9saXN0KSkpCiAgICAgICAgcmV0dXJuCiAgICBlbHNlOgogICAgICAgIGZv
cm1hdHRlciA9IEZPUk1BVFNbZm9ybWF0XQogICAgYXNzZXJ0X3VzYWdlKGZvcm1hdHRlciAh
PSBOb25lLAogICAgICAgICAgICAgICAgICJGb3JtYXQgezB9IG5vdCByZWNvZ25pc2VkIi5m
b3JtYXQoZm9ybWF0KSkKICAgIGZvcm1hdHRlcl9pbnN0YW5jZSA9IGZvcm1hdHRlcihjb2x1
bW5zLCBhcmdzLCBvcHRpb25zKQogICAgZm9ybWF0dGVyX2luc3RhbmNlLmRpc3BsYXkoanNv
bl9saXN0KQoKY2xhc3MgTGlzdGVyOgogICAgZGVmIHZlcmJvc2Uoc2VsZiwgc3RyaW5nKToK
ICAgICAgICBpZiBzZWxmLm9wdGlvbnMudmVyYm9zZToKICAgICAgICAgICAgb3V0cHV0KHN0
cmluZykKCiAgICBkZWYgZGlzcGxheShzZWxmLCBqc29uX2xpc3QpOgogICAgICAgIGRlcHRo
ID0gc3lzLm1heGludAogICAgICAgIGlmIGxlbihzZWxmLmNvbHVtbnMpID09IDA6CiAgICAg
ICAgICAgIGRlcHRoID0gaW50KHNlbGYub3B0aW9ucy5kZXB0aCkKICAgICAgICAoY29sdW1u
cywgdGFibGUpID0gc2VsZi5saXN0X3RvX3RhYmxlKGpzb24ubG9hZHMoanNvbl9saXN0KSwg
ZGVwdGgpCiAgICAgICAgaWYgbGVuKHRhYmxlKSA+IDA6CiAgICAgICAgICAgIHNlbGYuZGlz
cGxheV9saXN0KGNvbHVtbnMsIHRhYmxlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNl
bGYudmVyYm9zZSgiTm8gaXRlbXMiKQoKICAgIGRlZiBsaXN0X3RvX3RhYmxlKHNlbGYsIGl0
ZW1zLCBtYXhfZGVwdGgpOgogICAgICAgIGNvbHVtbnMgPSB7fQogICAgICAgIGNvbHVtbl9p
eCA9IHt9CiAgICAgICAgcm93ID0gTm9uZQogICAgICAgIHRhYmxlID0gW10KCiAgICAgICAg
ZGVmIGFkZChwcmVmaXgsIGRlcHRoLCBpdGVtLCBmdW4pOgogICAgICAgICAgICBmb3Iga2V5
IGluIGl0ZW06CiAgICAgICAgICAgICAgICBjb2x1bW4gPSBwcmVmaXggPT0gJycgYW5kIGtl
eSBvciAocHJlZml4ICsgJy4nICsga2V5KQogICAgICAgICAgICAgICAgc3ViaXRlbSA9IGl0
ZW1ba2V5XQogICAgICAgICAgICAgICAgaWYgdHlwZShzdWJpdGVtKSA9PSBkaWN0OgogICAg
ICAgICAgICAgICAgICAgIGlmIHNlbGYub2JqX2luZm8uaGFzX2tleSgnanNvbicpIGFuZCBr
ZXkgaW4gc2VsZi5vYmpfaW5mb1snanNvbiddOgogICAgICAgICAgICAgICAgICAgICAgICBm
dW4oY29sdW1uLCBqc29uLmR1bXBzKHN1Yml0ZW0pKQogICAgICAgICAgICAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlcHRoIDwgbWF4X2RlcHRoOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkKGNvbHVtbiwgZGVwdGggKyAxLCBzdWJpdGVt
LCBmdW4pCiAgICAgICAgICAgICAgICBlbGlmIHR5cGUoc3ViaXRlbSkgPT0gbGlzdDoKICAg
ICAgICAgICAgICAgICAgICAjIFRoZSBmaXJzdCBicmFuY2ggaGFzIHNsYXZlIG5vZGVzIGlu
IHF1ZXVlcyBpbgogICAgICAgICAgICAgICAgICAgICMgbWluZCAod2hpY2ggY29tZSBvdXQg
bG9va2luZyBkZWNlbnQpOyB0aGUgc2Vjb25kCiAgICAgICAgICAgICAgICAgICAgIyBvbmUg
aGFzIGFwcGxpY2F0aW9ucyBpbiBub2RlcyAod2hpY2ggbG9vayBsZXNzCiAgICAgICAgICAg
ICAgICAgICAgIyBzbywgYnV0IHdoYXQgd291bGQgbG9vayBnb29kPykuCiAgICAgICAgICAg
ICAgICAgICAgaWYgW3ggZm9yIHggaW4gc3ViaXRlbSBpZiB0eXBlKHgpICE9IHVuaWNvZGVd
ID09IFtdOgogICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpc2VkID0gIiAiLmpvaW4o
c3ViaXRlbSkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAg
ICAgICBzZXJpYWxpc2VkID0ganNvbi5kdW1wcyhzdWJpdGVtKQogICAgICAgICAgICAgICAg
ICAgIGZ1bihjb2x1bW4sIHNlcmlhbGlzZWQpCiAgICAgICAgICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgICAgICAgIGZ1bihjb2x1bW4sIHN1Yml0ZW0pCgogICAgICAgIGRlZiBhZGRf
dG9fY29sdW1ucyhjb2wsIHZhbCk6CiAgICAgICAgICAgIGNvbHVtbnNbY29sXSA9IFRydWUK
CiAgICAgICAgZGVmIGFkZF90b19yb3coY29sLCB2YWwpOgogICAgICAgICAgICBpZiBjb2wg
aW4gY29sdW1uX2l4OgogICAgICAgICAgICAgICAgcm93W2NvbHVtbl9peFtjb2xdXSA9IHVu
aWNvZGUodmFsKQoKICAgICAgICBpZiBsZW4oc2VsZi5jb2x1bW5zKSA9PSAwOgogICAgICAg
ICAgICBmb3IgaXRlbSBpbiBpdGVtczoKICAgICAgICAgICAgICAgIGFkZCgnJywgMSwgaXRl
bSwgYWRkX3RvX2NvbHVtbnMpCiAgICAgICAgICAgIGNvbHVtbnMgPSBjb2x1bW5zLmtleXMo
KQogICAgICAgICAgICBjb2x1bW5zLnNvcnQoa2V5PWNvbHVtbl9zb3J0X2tleSkKICAgICAg
ICBlbHNlOgogICAgICAgICAgICBjb2x1bW5zID0gc2VsZi5jb2x1bW5zCgogICAgICAgIGZv
ciBpIGluIHhyYW5nZSgwLCBsZW4oY29sdW1ucykpOgogICAgICAgICAgICBjb2x1bW5faXhb
Y29sdW1uc1tpXV0gPSBpCiAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6CiAgICAgICAgICAg
IHJvdyA9IGxlbihjb2x1bW5zKSAqIFsnJ10KICAgICAgICAgICAgYWRkKCcnLCAxLCBpdGVt
LCBhZGRfdG9fcm93KQogICAgICAgICAgICB0YWJsZS5hcHBlbmQocm93KQoKICAgICAgICBy
ZXR1cm4gKGNvbHVtbnMsIHRhYmxlKQoKY2xhc3MgVFNWTGlzdChMaXN0ZXIpOgogICAgZGVm
IF9faW5pdF9fKHNlbGYsIGNvbHVtbnMsIG9ial9pbmZvLCBvcHRpb25zKToKICAgICAgICBz
ZWxmLmNvbHVtbnMgPSBjb2x1bW5zCiAgICAgICAgc2VsZi5vYmpfaW5mbyA9IG9ial9pbmZv
CiAgICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucwoKICAgIGRlZiBkaXNwbGF5X2xpc3Qo
c2VsZiwgY29sdW1ucywgdGFibGUpOgogICAgICAgIGhlYWQgPSAiXHQiLmpvaW4oY29sdW1u
cykKICAgICAgICBzZWxmLnZlcmJvc2UoaGVhZCkKCiAgICAgICAgZm9yIHJvdyBpbiB0YWJs
ZToKICAgICAgICAgICAgbGluZSA9ICJcdCIuam9pbihyb3cpCiAgICAgICAgICAgIG91dHB1
dChsaW5lKQoKY2xhc3MgTG9uZ0xpc3QoTGlzdGVyKToKICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBjb2x1bW5zLCBvYmpfaW5mbywgb3B0aW9ucyk6CiAgICAgICAgc2VsZi5jb2x1bW5zID0g
Y29sdW1ucwogICAgICAgIHNlbGYub2JqX2luZm8gPSBvYmpfaW5mbwogICAgICAgIHNlbGYu
b3B0aW9ucyA9IG9wdGlvbnMKCiAgICBkZWYgZGlzcGxheV9saXN0KHNlbGYsIGNvbHVtbnMs
IHRhYmxlKToKICAgICAgICBzZXAgPSAiXG4iICsgIi0iICogODAgKyAiXG4iCiAgICAgICAg
bWF4X3dpZHRoID0gMAogICAgICAgIGZvciBjb2wgaW4gY29sdW1uczoKICAgICAgICAgICAg
bWF4X3dpZHRoID0gbWF4KG1heF93aWR0aCwgbGVuKGNvbCkpCiAgICAgICAgZm10ID0gInsw
Oj4iICsgdW5pY29kZShtYXhfd2lkdGgpICsgIn06IHsxfSIKICAgICAgICBvdXRwdXQoc2Vw
KQogICAgICAgIGZvciBpIGluIHhyYW5nZSgwLCBsZW4odGFibGUpKToKICAgICAgICAgICAg
Zm9yIGogaW4geHJhbmdlKDAsIGxlbihjb2x1bW5zKSk6CiAgICAgICAgICAgICAgICBvdXRw
dXQoZm10LmZvcm1hdChjb2x1bW5zW2pdLCB0YWJsZVtpXVtqXSkpCiAgICAgICAgICAgIG91
dHB1dChzZXApCgpjbGFzcyBUYWJsZUxpc3QoTGlzdGVyKToKICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBjb2x1bW5zLCBvYmpfaW5mbywgb3B0aW9ucyk6CiAgICAgICAgc2VsZi5jb2x1bW5z
ID0gY29sdW1ucwogICAgICAgIHNlbGYub2JqX2luZm8gPSBvYmpfaW5mbwogICAgICAgIHNl
bGYub3B0aW9ucyA9IG9wdGlvbnMKCiAgICBkZWYgZGlzcGxheV9saXN0KHNlbGYsIGNvbHVt
bnMsIHRhYmxlKToKICAgICAgICB0b3RhbCA9IFtjb2x1bW5zXQogICAgICAgIHRvdGFsLmV4
dGVuZCh0YWJsZSkKICAgICAgICBzZWxmLmFzY2lpX3RhYmxlKHRvdGFsKQoKICAgIGRlZiBh
c2NpaV90YWJsZShzZWxmLCByb3dzKToKICAgICAgICB0YWJsZSA9ICIiCiAgICAgICAgY29s
X3dpZHRocyA9IFswXSAqIGxlbihyb3dzWzBdKQogICAgICAgIGZvciBpIGluIHhyYW5nZSgw
LCBsZW4ocm93c1swXSkpOgogICAgICAgICAgICBmb3IgaiBpbiB4cmFuZ2UoMCwgbGVuKHJv
d3MpKToKICAgICAgICAgICAgICAgIGNvbF93aWR0aHNbaV0gPSBtYXgoY29sX3dpZHRoc1tp
XSwgbGVuKHJvd3Nbal1baV0pKQogICAgICAgIHNlbGYuYXNjaWlfYmFyKGNvbF93aWR0aHMp
CiAgICAgICAgc2VsZi5hc2NpaV9yb3coY29sX3dpZHRocywgcm93c1swXSwgIl4iKQogICAg
ICAgIHNlbGYuYXNjaWlfYmFyKGNvbF93aWR0aHMpCiAgICAgICAgZm9yIHJvdyBpbiByb3dz
WzE6XToKICAgICAgICAgICAgc2VsZi5hc2NpaV9yb3coY29sX3dpZHRocywgcm93LCAiPCIp
CiAgICAgICAgc2VsZi5hc2NpaV9iYXIoY29sX3dpZHRocykKCiAgICBkZWYgYXNjaWlfcm93
KHNlbGYsIGNvbF93aWR0aHMsIHJvdywgYWxpZ24pOgogICAgICAgIHR4dCA9ICJ8IgogICAg
ICAgIGZvciBpIGluIHhyYW5nZSgwLCBsZW4oY29sX3dpZHRocykpOgogICAgICAgICAgICBm
bXQgPSAiIHswOiIgKyBhbGlnbiArIHVuaWNvZGUoY29sX3dpZHRoc1tpXSkgKyAifSAiCiAg
ICAgICAgICAgIHR4dCArPSBmbXQuZm9ybWF0KHJvd1tpXSkgKyAifCIKICAgICAgICBvdXRw
dXQodHh0KQoKICAgIGRlZiBhc2NpaV9iYXIoc2VsZiwgY29sX3dpZHRocyk6CiAgICAgICAg
dHh0ID0gIisiCiAgICAgICAgZm9yIHcgaW4gY29sX3dpZHRoczoKICAgICAgICAgICAgdHh0
ICs9ICgiLSIgKiAodyArIDIpKSArICIrIgogICAgICAgIG91dHB1dCh0eHQpCgpjbGFzcyBL
ZXlWYWx1ZUxpc3QoTGlzdGVyKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb2x1bW5zLCBv
YmpfaW5mbywgb3B0aW9ucyk6CiAgICAgICAgc2VsZi5jb2x1bW5zID0gY29sdW1ucwogICAg
ICAgIHNlbGYub2JqX2luZm8gPSBvYmpfaW5mbwogICAgICAgIHNlbGYub3B0aW9ucyA9IG9w
dGlvbnMKCiAgICBkZWYgZGlzcGxheV9saXN0KHNlbGYsIGNvbHVtbnMsIHRhYmxlKToKICAg
ICAgICBmb3IgaSBpbiB4cmFuZ2UoMCwgbGVuKHRhYmxlKSk6CiAgICAgICAgICAgIHJvdyA9
IFtdCiAgICAgICAgICAgIGZvciBqIGluIHhyYW5nZSgwLCBsZW4oY29sdW1ucykpOgogICAg
ICAgICAgICAgICAgcm93LmFwcGVuZCgiezB9PVwiezF9XCIiLmZvcm1hdChjb2x1bW5zW2pd
LCB0YWJsZVtpXVtqXSkpCiAgICAgICAgICAgIG91dHB1dCgiICIuam9pbihyb3cpKQoKIyBU
T0RPIGhhbmRsZSBzcGFjZXMgZXRjIGluIGNvbXBsZXRhYmxlIG5hbWVzCmNsYXNzIEJhc2hM
aXN0KExpc3Rlcik6CiAgICBkZWYgX19pbml0X18oc2VsZiwgY29sdW1ucywgb2JqX2luZm8s
IG9wdGlvbnMpOgogICAgICAgIHNlbGYuY29sdW1ucyA9IGNvbHVtbnMKICAgICAgICBzZWxm
Lm9ial9pbmZvID0gb2JqX2luZm8KICAgICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCgog
ICAgZGVmIGRpc3BsYXlfbGlzdChzZWxmLCBjb2x1bW5zLCB0YWJsZSk6CiAgICAgICAgaXgg
PSBOb25lCiAgICAgICAgZm9yIGkgaW4geHJhbmdlKDAsIGxlbihjb2x1bW5zKSk6CiAgICAg
ICAgICAgIGlmIGNvbHVtbnNbaV0gPT0gJ25hbWUnOgogICAgICAgICAgICAgICAgaXggPSBp
CiAgICAgICAgaWYgaXggaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJlcyA9IFtdCiAgICAg
ICAgICAgIGZvciByb3cgaW4gdGFibGU6CiAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHJv
d1tpeF0pCiAgICAgICAgICAgIG91dHB1dCgiICIuam9pbihyZXMpKQoKRk9STUFUUyA9IHsK
ICAgICdyYXdfanNvbicgICAgOiBOb25lLCAjIFNwZWNpYWwgY2FzZWQKICAgICdwcmV0dHlf
anNvbicgOiBOb25lLCAjIERpdHRvCiAgICAndHN2JyAgICAgICAgIDogVFNWTGlzdCwKICAg
ICdsb25nJyAgICAgICAgOiBMb25nTGlzdCwKICAgICd0YWJsZScgICAgICAgOiBUYWJsZUxp
c3QsCiAgICAna3ZwJyAgICAgICAgIDogS2V5VmFsdWVMaXN0LAogICAgJ2Jhc2gnICAgICAg
ICA6IEJhc2hMaXN0Cn0KCmRlZiB3cml0ZV9wYXlsb2FkX2ZpbGUocGF5bG9hZF9maWxlLCBq
c29uX2xpc3QpOgogICAgcmVzdWx0ID0ganNvbi5sb2Fkcyhqc29uX2xpc3QpWzBdCiAgICBw
YXlsb2FkID0gcmVzdWx0WydwYXlsb2FkJ10KICAgIHBheWxvYWRfZW5jb2RpbmcgPSByZXN1
bHRbJ3BheWxvYWRfZW5jb2RpbmcnXQogICAgZiA9IG9wZW4ocGF5bG9hZF9maWxlLCAndycp
CiAgICBpZiBwYXlsb2FkX2VuY29kaW5nID09ICdiYXNlNjQnOgogICAgICAgIGRhdGEgPSBi
YXNlNjQuYjY0ZGVjb2RlKHBheWxvYWQpCiAgICBlbHNlOgogICAgICAgIGRhdGEgPSBwYXls
b2FkCiAgICBmLndyaXRlKGRhdGEpCiAgICBmLmNsb3NlKCkKCmRlZiBwcmludF9iYXNoX2Nv
bXBsZXRpb24oKToKICAgIHNjcmlwdCA9ICIiIiMgVGhpcyBpcyBhIGJhc2ggY29tcGxldGlv
biBzY3JpcHQgZm9yIHJhYmJpdG1xYWRtaW4uCiMgUmVkaXJlY3QgaXQgdG8gYSBmaWxlLCB0
aGVuIHNvdXJjZSBpdCBvciBjb3B5IGl0IHRvIC9ldGMvYmFzaF9jb21wbGV0aW9uLmQKIyB0
byBnZXQgdGFiIGNvbXBsZXRpb24uIHJhYmJpdG1xYWRtaW4gbXVzdCBiZSBvbiB5b3VyIFBB
VEggZm9yIHRoaXMgdG8gd29yay4KX3JhYmJpdG1xYWRtaW4oKQp7CiAgICBsb2NhbCBjdXIg
cHJldiBvcHRzIGJhc2UKICAgIENPTVBSRVBMWT0oKQogICAgY3VyPSIke0NPTVBfV09SRFNb
Q09NUF9DV09SRF19IgogICAgcHJldj0iJHtDT01QX1dPUkRTW0NPTVBfQ1dPUkQtMV19IgoK
ICAgIG9wdHM9Imxpc3Qgc2hvdyBkZWNsYXJlIGRlbGV0ZSBjbG9zZSBwdXJnZSBpbXBvcnQg
ZXhwb3J0IGdldCBwdWJsaXNoIGhlbHAiCiAgICBmYXJncz0iLS1oZWxwIC0taG9zdCAtLXBv
cnQgLS12aG9zdCAtLXVzZXJuYW1lIC0tcGFzc3dvcmQgLS1mb3JtYXQgLS1kZXB0aCAtLXNv
cnQgLS1zb3J0LXJldmVyc2UiCgogICAgY2FzZSAiJHtwcmV2fSIgaW4KCWxpc3QpCgkgICAg
Q09NUFJFUExZPSggJChjb21wZ2VuIC1XICciIiIgKyAiICIuam9pbihMSVNUQUJMRSkgKyAi
IiInIC0tICR7Y3VyfSkgKQogICAgICAgICAgICByZXR1cm4gMAogICAgICAgICAgICA7OwoJ
c2hvdykKCSAgICBDT01QUkVQTFk9KCAkKGNvbXBnZW4gLVcgJyIiIiArICIgIi5qb2luKFNI
T1dBQkxFKSArICIiIicgLS0gJHtjdXJ9KSApCiAgICAgICAgICAgIHJldHVybiAwCiAgICAg
ICAgICAgIDs7CglkZWNsYXJlKQoJICAgIENPTVBSRVBMWT0oICQoY29tcGdlbiAtVyAnIiIi
ICsgIiAiLmpvaW4oREVDTEFSQUJMRS5rZXlzKCkpICsgIiIiJyAtLSAke2N1cn0pICkKICAg
ICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgOzsKCWRlbGV0ZSkKCSAgICBDT01QUkVQ
TFk9KCAkKGNvbXBnZW4gLVcgJyIiIiArICIgIi5qb2luKERFTEVUQUJMRS5rZXlzKCkpICsg
IiIiJyAtLSAke2N1cn0pICkKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgOzsK
CWNsb3NlKQoJICAgIENPTVBSRVBMWT0oICQoY29tcGdlbiAtVyAnIiIiICsgIiAiLmpvaW4o
Q0xPU0FCTEUua2V5cygpKSArICIiIicgLS0gJHtjdXJ9KSApCiAgICAgICAgICAgIHJldHVy
biAwCiAgICAgICAgICAgIDs7CglwdXJnZSkKCSAgICBDT01QUkVQTFk9KCAkKGNvbXBnZW4g
LVcgJyIiIiArICIgIi5qb2luKFBVUkdBQkxFLmtleXMoKSkgKyAiIiInIC0tICR7Y3VyfSkg
KQogICAgICAgICAgICByZXR1cm4gMAogICAgICAgICAgICA7OwoJZXhwb3J0KQoJICAgIENP
TVBSRVBMWT0oICQoY29tcGdlbiAtZiAke2N1cn0pICkKICAgICAgICAgICAgcmV0dXJuIDAK
ICAgICAgICAgICAgOzsKCWltcG9ydCkKCSAgICBDT01QUkVQTFk9KCAkKGNvbXBnZW4gLWYg
JHtjdXJ9KSApCiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgICAgIDs7CgloZWxwKQog
ICAgICAgICAgICBvcHRzPSJzdWJjb21tYW5kcyBjb25maWciCgkgICAgQ09NUFJFUExZPSgg
JChjb21wZ2VuIC1XICIke29wdHN9IiAgLS0gJHtjdXJ9KSApCiAgICAgICAgICAgIHJldHVy
biAwCiAgICAgICAgICAgIDs7CgktSCkKCSAgICBDT01QUkVQTFk9KCAkKGNvbXBnZW4gLUEg
aG9zdG5hbWUgJHtjdXJ9KSApCiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgICAgIDs7
CgktLWhvc3QpCgkgICAgQ09NUFJFUExZPSggJChjb21wZ2VuIC1BIGhvc3RuYW1lICR7Y3Vy
fSkgKQogICAgICAgICAgICByZXR1cm4gMAogICAgICAgICAgICA7OwoJLVYpCiAgICAgICAg
ICAgIG9wdHM9IiQocmFiYml0bXFhZG1pbiAtcSAtZiBiYXNoIGxpc3Qgdmhvc3RzKSIKCSAg
ICBDT01QUkVQTFk9KCAkKGNvbXBnZW4gLVcgIiR7b3B0c30iICAtLSAke2N1cn0pICkKICAg
ICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgOzsKCS0tdmhvc3QpCiAgICAgICAgICAg
IG9wdHM9IiQocmFiYml0bXFhZG1pbiAtcSAtZiBiYXNoIGxpc3Qgdmhvc3RzKSIKCSAgICBD
T01QUkVQTFk9KCAkKGNvbXBnZW4gLVcgIiR7b3B0c30iICAtLSAke2N1cn0pICkKICAgICAg
ICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgOzsKCS11KQogICAgICAgICAgICBvcHRzPSIk
KHJhYmJpdG1xYWRtaW4gLXEgLWYgYmFzaCBsaXN0IHVzZXJzKSIKCSAgICBDT01QUkVQTFk9
KCAkKGNvbXBnZW4gLVcgIiR7b3B0c30iICAtLSAke2N1cn0pICkKICAgICAgICAgICAgcmV0
dXJuIDAKICAgICAgICAgICAgOzsKCS0tdXNlcm5hbWUpCiAgICAgICAgICAgIG9wdHM9IiQo
cmFiYml0bXFhZG1pbiAtcSAtZiBiYXNoIGxpc3QgdXNlcnMpIgoJICAgIENPTVBSRVBMWT0o
ICQoY29tcGdlbiAtVyAiJHtvcHRzfSIgIC0tICR7Y3VyfSkgKQogICAgICAgICAgICByZXR1
cm4gMAogICAgICAgICAgICA7OwoJLWYpCgkgICAgQ09NUFJFUExZPSggJChjb21wZ2VuIC1X
IFwiIiIiICsgIiAiLmpvaW4oRk9STUFUUy5rZXlzKCkpICsgIiIiXCIgIC0tICR7Y3VyfSkg
KQogICAgICAgICAgICByZXR1cm4gMAogICAgICAgICAgICA7OwoJLS1mb3JtYXQpCgkgICAg
Q09NUFJFUExZPSggJChjb21wZ2VuIC1XIFwiIiIiICsgIiAiLmpvaW4oRk9STUFUUy5rZXlz
KCkpICsgIiIiXCIgIC0tICR7Y3VyfSkgKQogICAgICAgICAgICByZXR1cm4gMAogICAgICAg
ICAgICA7OwoKIiIiCiAgICBmb3IgbCBpbiBMSVNUQUJMRToKICAgICAgICBrZXkgPSBsWzA6
bGVuKGwpIC0gMV0KICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgIiArIGtleSArICIiIikK
ICAgICAgICAgICAgb3B0cz0iJChyYWJiaXRtcWFkbWluIC1xIC1mIGJhc2ggbGlzdCAiIiIg
KyBsICsgIiIiKSIKCSAgICBDT01QUkVQTFk9KCAkKGNvbXBnZW4gLVcgIiR7b3B0c30iICAt
LSAke2N1cn0pICkKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgOzsKIiIiCiAg
ICBzY3JpcHQgKz0gIiIiICAgICAgICAqKQogICAgICAgIDs7CiAgICBlc2FjCgogICBDT01Q
UkVQTFk9KCQoY29tcGdlbiAtVyAiJHtvcHRzfSAke2ZhcmdzfSIgLS0gJHtjdXJ9KSkKICAg
cmV0dXJuIDAKfQpjb21wbGV0ZSAtRiBfcmFiYml0bXFhZG1pbiByYWJiaXRtcWFkbWluCiIi
IgogICAgb3V0cHV0KHNjcmlwdCkKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBt
YWluKCkK
--------------090901050506090802080305
Content-Type: application/x-shellscript;
 name="rabbitmqInstall.sh"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="rabbitmqInstall.sh"

IyEvYmluL2Jhc2gKCiMgQWJvcnQgaWYgbm90IHN1cGVyIHVzZXIKaWYgW1sgISBgd2hvYW1p
YCA9ICJyb290IiBdXTsgdGhlbgogICAgZWNobyAiWW91IG11c3QgaGF2ZSBhZG1pbmlzdHJh
dGl2ZSBwcml2aWxlZ2VzIHRvIHJ1biB0aGlzIHNjcmlwdCIKICAgIGVjaG8gIlRyeSAnc3Vk
byAuL3RvbWNhdEluc3RhbGwuc2gnIgogICAgZXhpdCAxCmZpCgoKIyBJbnN0YWxsIFJhYmJp
dE1RCmlmIFsgYGZpbmQgL2V0Yy9pbml0LmQgLW5hbWUgInJhYmJpdG1xLXNlcnZlciIgfCB3
YyAtbGAgPSAwIF07IHRoZW4KICAgICAgICBlY2hvICJkZWIgaHR0cDovL3d3dy5yYWJiaXRt
cS5jb20vZGViaWFuLyB0ZXN0aW5nIG1haW4iID4gL2V0Yy9hcHQvc291cmNlcy5saXN0LmQv
cmFiYml0bXEubGlzdAogICAgICAgIHdnZXQgaHR0cDovL3d3dy5yYWJiaXRtcS5jb20vcmFi
Yml0bXEtc2lnbmluZy1rZXktcHVibGljLmFzYwogICAgICAgIGFwdC1rZXkgYWRkIHJhYmJp
dG1xLXNpZ25pbmcta2V5LXB1YmxpYy5hc2MKICAgICAgICBhcHQtZ2V0IHVwZGF0ZQogICAg
ICAgIGFwdC1nZXQgaW5zdGFsbCByYWJiaXRtcS1zZXJ2ZXIgLXkKICAgICAgICBzZXJ2aWNl
IHJhYmJpdG1xLXNlcnZlciByZXN0YXJ0CmZpCgojIyBFbmFibGUgdGhlIG1hbmFnZW1lbnQg
cGx1Zy1pbgpyYWJiaXRtcS1wbHVnaW5zIGVuYWJsZSByYWJiaXRtcV9tYW5hZ2VtZW50IAoK
IyMgQnVnZml4IC0gZ3Vlc3QgdXNlciBjYW4ndCBsb2dpbgplY2hvICJbe3JhYmJpdCwgW3ts
b29wYmFja191c2VycywgW119XX1dLiIgPiAvZXRjL3JhYmJpdG1xL3JhYmJpdG1xLmNvbmZp
ZwoKIyMgR2l2ZSBwZXJtaXRpb25zIHRvIC9ldGMvcmFiYml0bXEKY2htb2QgLVIgNzc3IC9l
dGMvcmFiYml0bXEKCiMjIFJlc3RhcnRpbmcgdGhlIHNlcnZpY2UKc2VydmljZSByYWJiaXRt
cS1zZXJ2ZXIgcmVzdGFydAoKIyMgU2V0dGluZyB0aGUgUmFiYml0TVEgQWRtaW4gc2NyaXB0
CmlmIFsgYGZpbmQgLiAtbmFtZSAicmFiYml0bXFhZG1pbiIgfCB3YyAtbGAgPSAwIF07IHRo
ZW4KICAgICAgICBlY2hvICJObyBzZSBoYSBlbmNvbnRyYWRvIGVsIGFyY2hpdm8gcmFiYml0
bXFhZG1pbi4gTm8gZXMgcG9zaWJsZSBjb250aW51YXIiCiAgICAgICAgZXhpdCAxCmZpCgpj
cCByYWJiaXRtcWFkbWluIC91c3IvYmluLyB8fCB7IGVjaG8gJ0NvcGlhIGRlIGFyY2hpdm8g
cmFiYml0bXFhZG1pbiBhIC91c3IvYmluIGZhbGzDsycgOyBleGl0IDE7IH0KCgojIyBDcmVh
dGluZyBHNFMgcXVldWVzIGFuZCBleGFuZ2VzCiMjIFF1ZXVlcwpyYWJiaXRtcWFkbWluIGRl
Y2xhcmUgcXVldWUgbmFtZT10ZW1wb3JhbCBkdXJhYmxlPXRydWUgYXJndW1lbnRzPSd7Ingt
bWVzc2FnZS10dGwiOjUwMDB9JwoKcmFiYml0bXFhZG1pbiBkZWNsYXJlIHF1ZXVlIG5hbWU9
Z2VuZXJhbF9xdWV1ZSBkdXJhYmxlPXRydWUKCnJhYmJpdG1xYWRtaW4gZGVjbGFyZSBxdWV1
ZSBuYW1lPWNhbGxDZW50ZXJfcXVldWUgZHVyYWJsZT10cnVlCgojIyBFeGNoYW5nZXMgCnJh
YmJpdG1xYWRtaW4gZGVjbGFyZSBleGNoYW5nZSBuYW1lPWJyb2tlckV4Y2hhbmdlIHR5cGU9
dG9waWMgZHVyYWJsZT10cnVlCgpyYWJiaXRtcWFkbWluIGRlY2xhcmUgZXhjaGFuZ2UgbmFt
ZT1zY2dhc3BhckV4Y2hhbmdlIHR5cGU9dG9waWMgZHVyYWJsZT10cnVlCgpyYWJiaXRtcWFk
bWluIGRlY2xhcmUgZXhjaGFuZ2UgbmFtZT1jYWxsQ2VudGVyRXhjaGFuZ2UgdHlwZT10b3Bp
YyBkdXJhYmxlPXRydWUKCiMjIEJpbmRpbmdzCnJhYmJpdG1xYWRtaW4gZGVjbGFyZSBiaW5k
aW5nIHNvdXJjZT1icm9rZXJFeGNoYW5nZSBkZXN0aW5hdGlvbj1nZW5lcmFsX3F1ZXVlIHJv
dXRpbmdfa2V5PWdlbmVyYWwKCnJhYmJpdG1xYWRtaW4gZGVjbGFyZSBiaW5kaW5nIHNvdXJj
ZT1icm9rZXJFeGNoYW5nZSBkZXN0aW5hdGlvbj1nZW5lcmFsX3F1ZXVlIHJvdXRpbmdfa2V5
PXRlbXBvcmFsCgpyYWJiaXRtcWFkbWluIGRlY2xhcmUgYmluZGluZyBzb3VyY2U9Y2FsbENl
bnRlckV4Y2hhbmdlIGRlc3RpbmF0aW9uPWNhbGxDZW50ZXJfcXVldWUgcm91dGluZ19rZXk9
bm90aWZ5CgoK
--------------090901050506090802080305--
