svn: SVNROOT/ commit-bugs.php commit-email.php commit-svnroot.php post-commit

[email protected] (Gwynne Raskind) Mon, 20 Jul 09 04:40:31 +0000
Newsgroups php.cvs,svn.migration
Message-ID <[email protected]>
--0a47d226f607f673191e79932e67301441b72518
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit

gwynne		Mon, 20 Jul 2009 04:40:31 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=284413

Changed paths:
	A   SVNROOT/commit-bugs.php
	U   SVNROOT/commit-email.php
	A   SVNROOT/commit-svnroot.php
	U   SVNROOT/post-commit

Log:
- reorganized the post-commit hook quite a bit to load common information and call sub-hooks for various tasks
- added a catch-all email for php/php-src/ to ensure some emails get where they're going
- moved Rasmus' bug stuff to its own file
- moved the SVNROOT check to its own file as well
- make a passing attempt to marshal back to the client the results of SVNROOT updates
- actually show the client an error when SMTP connection fails
- use ===/!== instead of ==/!= in a couple places as a matter of style

--0a47d226f607f673191e79932e67301441b72518
Content-Type: text/x-diff; encoding="utf-8"
Content-Disposition: attachment; filename="0a47d226f607f673191e79932e67301441b72518.txt"
Content-Transfer-Encoding: base64

QWRkZWQ6IFNWTlJPT1QvY29tbWl0LWJ1Z3MucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNWTlJPT1QvY29tbWl0LWJ1
Z3MucGhwCSAgICAgICAgICAgICAgICAgICAgICAgIChyZXYgMCkKKysrIFNWTlJPT1QvY29tbWl0LWJ1
Z3MucGhwCTIwMDktMDctMjAgMDQ6NDA6MzEgVVRDIChyZXYgMjg0NDEzKQpAQCAtMCwwICsxLDEwNyBA
QAorPD9waHAKKworLy8gVGhpcyBzY3JpcHQgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGZyb20gcG9z
dC1jb21taXQuIEl0IGFzc3VtZXMgdGhhdCBhbGwKKy8vICB0aGUgYXBwcm9wcmlhdGUgdmFyaWFibGVz
IGFuZCBmdW5jdGlvbnMgYXJlIGRlZmluZWQuCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBDb25zdGFudHMKKyR2ZXJz
aW9uID0gc3Vic3RyKCckUmV2aXNpb24kJywgc3RybGVuKCckUmV2aXNpb246ICcpLCAtMik7CiskYnVn
X3BhdHRlcm4gPSAnLyg/OihwZWNsfHBlYXIpXHMqKT8oPzpidWd8IylbXHMjOl0qKFswLTldKykvaXVY
JzsKKyRidWdfdXJsX3ByZWZpeGVzID0gYXJyYXkoCisgICAgJ3BlYXInID0+ICdodHRwOi8vcGVhci5w
aHAubmV0L2J1Z3MnLAorICAgICdwZWNsJyA9PiAnaHR0cDovL3BlY2wucGhwLm5ldC9idWdzJywKKyAg
ICAnJyA9PiAnaHR0cDovL2J1Z3MucGhwLm5ldCcsCispOworJGJ1Z19ycGNfdXJsID0gJ2h0dHA6Ly9i
dWdzLnBocC5uZXQvcnBjLnBocCc7Ciskdmlld3ZjX3VybF9wcmVmaXggPSAnaHR0cDovL3N2bi5waHAu
bmV0L3ZpZXd2Yy8/dmlldz1yZXZpc2lvbiZhbXA7cmV2aXNpb249JzsKKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEdl
dCB0aGUgbGlzdCBvZiBtZW50aW9uZWQgYnVncyBmcm9tIHRoZSBjb21taXQgbG9nCitpZiAocHJlZ19t
YXRjaF9hbGwoJGJ1Z19wYXR0ZXJuLCAkY29tbWl0X2luZm9bJ2xvZ19tZXNzYWdlJ10sICRtYXRjaGVk
X2J1Z3MsIFBSRUdfU0VUX09SREVSKSA8IDEpIHsKKyAgICAvLyBJZiBubyBidWdzIG1hdGNoZWQsIHdl
IGRvbid0IGhhdmUgdG8gZG8gYW55dGhpbmcuCisgICAgcmV0dXJuOworfQorCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8g
UHJvY2VzcyB0aGUgbWF0Y2hlcworJGJ1Z19saXN0ID0gYXJyYXkoKTsKK2ZvcmVhY2ggKCRtYXRjaGVk
X2J1Z3MgYXMgJG1hdGNoZWRfYnVnKSB7CisgICAgJGJ1ZyA9IGFycmF5KCk7CisgICAgJGJ1Z1sncHJv
amVjdCddID0gaXNzZXQoJG1hdGNoZWRfYnVnWzFdKSA/ICRtYXRjaGVkX2J1Z1sxXSA6ICcnOworICAg
ICRidWdbJ251bWJlciddID0gaW50dmFsKCRtYXRjaGVkX2J1Z1syXSk7CisgICAgJGJ1Z2lkID0gJGJ1
Z1sncHJvamVjdCddIC4gJGJ1Z1snbnVtYmVyJ107CisgICAgJGJ1Z1sndXJsX3ByZWZpeCddID0gaXNz
ZXQoJGJ1Z191cmxfcHJlZml4ZXNbJGJ1Z1sncHJvamVjdCddXSkgPyAkYnVnX3VybF9wcmVmaXhlc1sk
YnVnWydwcm9qZWN0J11dIDogJGJ1Z191cmxfcHJlZml4ZXNbJyddOworICAgICRidWdbJ3VybCddID0g
JGJ1Z1sndXJsX3ByZWZpeCddIC4gJy8nIC4gJGJ1Z1snbnVtYmVyJ107CisgICAgJGJ1Z1snc3RhdHVz
J10gPSAndW5rbm93bic7CisgICAgJGJ1Z1snc2hvcnRfZGVzYyddID0gJyc7CisgICAgJGJ1Z19saXN0
WyRidWdpZF0gPSAkYnVnOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gTWFrZSBhbiBSUEMgY2FsbCBmb3IgZWFj
aCBidWcKK2lmICghJGlzX0RFQlVHKSB7CisgICAgaW5jbHVkZSBfX0RJUl9fIC4gJy9zZWNyZXQuaW5j
JzsKK30KK2ZvcmVhY2ggKCRidWdfbGlzdCBhcyAmJGJ1ZykgeworICAgIC8vIE9ubHkgZG8gdGhpcyBm
b3IgY29yZSBQSFAgYnVncworICAgIGlmICgkYnVnWydwcm9qZWN0J10gIT09ICcnKSB7CisgICAgICAg
IGNvbnRpbnVlOworICAgIH0KKworICAgICRjb21tZW50ID0gIkF1dG9tYXRpYyBjb21tZW50IGZyb20g
U1ZOIG9uIGJlaGFsZiBvZiB7JGNvbW1pdF9pbmZvWydhdXRob3InXX1cbiIgLgorICAgICAgICAgICAg
ICAgIlJldmlzaW9uOiB7JHZpZXd2Y191cmxfcHJlZml4fXskUkVWfVxuIiAuCisgICAgICAgICAgICAg
ICAiTG9nOiB7JGNvbW1pdF9pbmZvWydsb2dfbWVzc2FnZSddfVxuIjsKKworICAgICRwb3N0ZGF0YSA9
IGFycmF5KAorICAgICAgICAgICAgICAgICAgICAndXNlcicgPT4gJGNvbW1pdF9pbmZvWydhdXRob3In
XSwKKyAgICAgICAgICAgICAgICAgICAgJ2lkJyA9PiAkYnVnWydudW1iZXInXSwKKyAgICAgICAgICAg
ICAgICAgICAgJ25jb21tZW50JyA9PiAkY29tbWVudCwKKyAgICAgICAgICAgICAgICAgICAgJ01BR0lD
X0NPT0tJRScgPT4gJGlzX0RFQlVHID8gJ25vbnNlbnNlJyA6ICRTVk5fTUFHSUNfQ09PS0lFLAorICAg
ICAgICAgICAgICAgICk7CisgICAgYXJyYXlfd2FsaygkcG9zdGRhdGEsIGNyZWF0ZV9mdW5jdGlvbign
JiR2LCAkaycsICckdiA9IHJhd3VybGVuY29kZSgkaykgLiAiPSIgLiByYXd1cmxlbmNvZGUoJHYpOycp
KTsKKyAgICAkcG9zdGRhdGEgPSBpbXBsb2RlKCcmJywgJHBvc3RkYXRhKTsKKworICAgIGlmICgkaXNf
REVCVUcpIHsKKyAgICAgICAgcHJpbnQgIkRFQlVHOiBCdWcgI3skYnVnWydudW1iZXInXX06IFdvdWxk
IGhhdmUgcG9zdGVkIHRoaXMgcmF3dXJsZW5jb2RlZCBzdHJpbmcgdG8geyRidWdfcnBjX3VybH06XG57
JHBvc3RkYXRhfVxuIjsKKyAgICAgICAgaWYgKG10X3JhbmQoMCwgMSkgPT09IDEpIHsKKyAgICAgICAg
ICAgICRidWdbJ2Vycm9yJ10gPSAnREVCVUctc29tZSBraW5kIG9mIGVycm9yJzsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICRidWdbJ3N0YXR1cyddID0gJ0RFQlVHLXVua25vd24nOworICAgICAg
ICAgICAgJGJ1Z1snc2hvcnRfZGVzYyddID0gIkRFQlVHLUJ1ZyAjeyRidWdbJ251bWJlciddfSI7Cisg
ICAgICAgIH0KKyAgICAgICAgY29udGludWU7CisgICAgfQorICAgIC8vIEhvb2sgYW4gZW52IHZhciBz
byBlbWFpbHMgY2FuIGJlIHJlc2VudCB3aXRob3V0IG1lc3Npbmcgd2l0aCBidWdzCisgICAgaWYgKGdl
dGVudignTk9CVUcnKSkgeworICAgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICAkY2ggPSBjdXJs
X2luaXQoKTsKKyAgICBjdXJsX3NldG9wdF9hcnJheShhcnJheSgKKyAgICAgICAgQ1VSTE9QVF9VUkwg
PT4gJGJ1Z19ycGNfdXJsLAorICAgICAgICBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSID0+IFRSVUUsCisg
ICAgICAgIENVUkxPUFRfUE9TVCA9PiBUUlVFLAorICAgICAgICBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VU
ID0+IDUsCisgICAgICAgIENVUkxPUFRfVElNRU9VVCA9PiA1LAorICAgICAgICBDVVJMT1BUX1BPU1RG
SUVMRFMgPT4gJHBvc3RkYXRhLAorICAgICkpOworCisgICAgJHJlc3VsdCA9IGN1cmxfZXhlYygkY2gp
OworCisgICAgaWYgKCRyZXN1bHQgPT09IEZBTFNFKSB7CisgICAgICAgICRidWdbJ2Vycm9yJ10gPSBj
dXJsX2Vycm9yKCRjaCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgJGJ1Z19zZXJ2ZXJfZGF0YSA9IGpz
b25fZGVjb2RlKCRyZXN1bHQsIFRSVUUpOworICAgICAgICBpZiAoaXNzZXQoJGJ1Z19zZXJ2ZXJfZGF0
YVsncmVzdWx0J11bJ3N0YXR1cyddKSkgeworICAgICAgICAgICAgJGJ1Z1snc3RhdHVzJ10gPSAkYnVn
X3NlcnZlcl9kYXRhWydyZXN1bHQnXVsnc3RhdHVzJ11bJ3N0YXR1cyddOworICAgICAgICAgICAgJGJ1
Z1snc2hvcnRfZGVzYyddID0gJGJ1Z19zZXJ2ZXJfZGF0YVsncmVzdWx0J11bJ3N0YXR1cyddWydzZGVz
YyddOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJGJ1Z1snZXJyb3InXSA9ICRidWdfc2Vy
dmVyX2RhdGFbJ3Jlc3VsdCddWydlcnJvciddOworICAgICAgICB9CisgICAgfQorICAgIGN1cmxfY2xv
c2UoJGNoKTsKK30KK3Vuc2V0KCRTVk5fTUFHSUNfQ09PS0lFKTsKKworLy8gJGJ1Z19saXN0IGlzIG5v
dyBhdmFpbGFibGUgdG8gbGF0ZXItcnVubmluZyBob29rcworPz4KCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTVk5ST09UL2NvbW1pdC1idWdzLnBocApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46a2V5d29yZHMKICAgKyBJ
ZCBSZXYgUmV2aXNpb24KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCk1vZGlmaWVkOiBT
Vk5ST09UL2NvbW1pdC1lbWFpbC5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU1ZOUk9PVC9jb21taXQtZW1haWwucGhw
CTIwMDktMDctMjAgMDQ6MzE6MDcgVVRDIChyZXYgMjg0NDEyKQorKysgU1ZOUk9PVC9jb21taXQtZW1h
aWwucGhwCTIwMDktMDctMjAgMDQ6NDA6MzEgVVRDIChyZXYgMjg0NDEzKQpAQCAtMSw5ICsxLDcgQEAK
IDw/cGhwCgotLy8gTm90ZSB0aGF0IHRoaXMgc2NyaXB0IGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBm
cm9tIGluc2lkZSB0aGUgcG9zdC1jb21taXQKLS8vIGhvb2suIEl0IG1ha2VzIHNvbWUgYXNzdW1wdGlv
bnM6ICRSRVBPUyBhbmQgJFJFViBhcmUgZGVmaW5lZCwgdGhlCi0vLyBydW5fc3ZubG9vaygpIGZ1bmN0
aW9uIGlzIGRlY2xhcmVkLCAkY2hhbmdlZF9wYXRocyBhbmQgJGRpcnNfY2hhbmdlZCBhcmUKLS8vIGRl
dGVybWluZWQuCisvLyBUaGlzIHNjcmlwdCBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgZnJvbSBwb3N0
LWNvbW1pdC4gSXQgYXNzdW1lcyB0aGF0IGFsbAorLy8gIHRoZSBhcHByb3ByaWF0ZSB2YXJpYWJsZXMg
YW5kIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZC4KCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gQ29uc3RhbnRzCkBAIC0zMCw2
ICsyOCw3IEBACiAgICAgJ3xecGhwL1plbmRBUEl8JyA9PiBhcnJheSgnemVuZC1lbmdpbmUtY3ZzQGxp
c3RzLnBocC5uZXQnLCAnZG9jLWN2c0BsaXN0cy5waHAubmV0JyksCiAgICAgJ3xecGhwL3BocC1zcmMv
WmVuZHwnID0+IGFycmF5KCd6ZW5kLWVuZ2luZS1jdnNAbGlzdHMucGhwLm5ldCcpLAogICAgICd8XnBo
cC9waHAtc3JjL1RTUk18JyA9PiBhcnJheSgnemVuZC1lbmdpbmUtY3ZzQGxpc3RzLnBocC5uZXQnKSwK
KyAgICAnfF5waHAvcGhwLXNyY3wnID0+IGFycmF5KCdwaHAtY3ZzQGxpc3RzLnBocC5uZXQnKSwKCiAg
ICAgLy8gcGhwZG9jCiAgICAgJ3xecGhwZG9jL2RvYy1iYXNlfCcgPT4gYXJyYXkoJ2RvYy1jdnNAbGlz
dHMucGhwLm5ldCcpLApAQCAtMTE3LDQzICsxMTYsMTEgQEAKIH0KCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gR2V0IGlu
Zm8gZnJvbSBjb21taXQKLSRjb21taXRfaW5mbyA9IHJ1bl9zdm5sb29rKCdpbmZvJyk7Ci0kY29tbWl0
X3VzZXIgPSB0cmltKCRjb21taXRfaW5mb1swXSk7Ci0kY29tbWl0X2RhdGUgPSBzdHJ0b3RpbWUoc3Vi
c3RyKCRjb21taXRfaW5mb1sxXSwgMCwgc3RybGVuKCIwMDAwLTAwLTAwIDAwOjAwOjAwICswMDAwIikp
KTsKLSRjb21taXRfbG9nID0gaW1wbG9kZSgiXG4iLCBhcnJheV9zbGljZSgkY29tbWl0X2luZm8sIDMp
KTsKLS8vIFN1cHBvcnQgYnVnIzEyMzQgYnVnIHVybCBleHRyYWN0aW9uCi0kYnVncyA9IHByZWdfbWF0
Y2hfYWxsKCIvKD86cGVjbHxwZWFyfClcXHMqKD86YnVnfCMpW1xccyM6XSooWzAtOV0rKS9pIiwgJGNv
bW1pdF9sb2csICRidWdzX2FycmF5KTsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERldGVybWluZSAiZnJvbSIgYWRk
cmVzcwotLy8gVmFyaW91cyByZXBvc2l0b3JpZXMgY2FuIHBsYXkgd2l0aCB0aGlzIHRvIHJlYWQgZnJv
bSB0aGVpciBlcXVpdmVsYW50IG9mIHRoZSBvbGQgY3ZzdXNlcnMgZm9sZGVyLCBvciB3aGF0ZXZlciBl
bHNlIHRoZXkgbGlrZQotJHVzZXJzREIgPSBmaWxlKGRpcm5hbWUoX19GSUxFX18pIC4gJy91c2Vycy5k
YicpOwotJGZyb20gPSBOVUxMOwotJHNhd19sYXN0X0lTTyA9IEZBTFNFOwotZm9yZWFjaCAoJHVzZXJz
REIgYXMgJHVzZXJsaW5lKSB7Ci0gICAgbGlzdCAoJHVzZXJuYW1lLCAkZnVsbG5hbWUsICRlbWFpbCkg
PSBleHBsb2RlKCI6IiwgdHJpbSgkdXNlcmxpbmUpKTsKLSAgICBpZiAoJHVzZXJuYW1lID09PSAnbGFk
ZGVyYWxpY2UnKSB7Ci0gICAgICAgICRzYXdfbGFzdF9JU08gPSBUUlVFOwotICAgIH0KLSAgICBpZiAo
JHVzZXJuYW1lID09PSAkY29tbWl0X3VzZXIpIHsKLSAgICAgICAgaWYgKCRzYXdfbGFzdF9JU08gIT09
IFRSVUUpIHsKLSAgICAgICAgICAgICRmdWxsbmFtZSA9IGljb252KCJJU08tODg1OS0xIiwgIlVURi04
Ly9UUkFOU0xJVCIsICRmdWxsbmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgJGZyb20gPSBhcnJheSgk
dXNlcm5hbWUsICRmdWxsbmFtZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLWlmIChpc19udWxs
KCRmcm9tKSkgewotICAgIGRpZSgiQ291bGRuJ3QgZmluZCB1c2VyXG4iKTsKLX0KLQotLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IC8vIEJ1aWxkIGxpc3Qgb2YgZS1tYWlsIGFkZHJlc3NlcyBhbmQgcGFyZW50IGNoYW5nZWQgcGF0aAog
JGVtYWlsc190byA9IGFycmF5KCk7Ci0kcGFyZW50X3BhdGggPSAkZGlyc19jaGFuZ2VkWzBdOworJHBh
cmVudF9wYXRoID0gJGNvbW1pdF9pbmZvWydkaXJzX2NoYW5nZWQnXVswXTsKCi1mb3JlYWNoICgkZGly
c19jaGFuZ2VkIGFzICRjaGFuZ2VkX3BhdGgpIHsKK2ZvcmVhY2ggKCRjb21taXRfaW5mb1snZGlyc19j
aGFuZ2VkJ10gYXMgJGNoYW5nZWRfcGF0aCkgewogICAgIGZvcmVhY2ggKCRjb21taXRfZW1haWxfbGlz
dCBhcyAkcmVnZXggPT4gJGVtYWlsX2xpc3QpIHsKICAgICAgICAgaWYgKHByZWdfbWF0Y2goJHJlZ2V4
LCAkY2hhbmdlZF9wYXRoLCAkbWF0Y2hlcykgPT09IDEpIHsKICAgICAgICAgICAgICRlbWFpbHNfdG8g
PSBhcnJheV9tZXJnZSgkZW1haWxzX3RvLCAkZW1haWxfbGlzdCk7CkBAIC0xNzMsMzIgKzE0MCwxOCBA
QAogJGVtYWlsc190byA9IGFycmF5X3VuaXF1ZSgkZW1haWxzX3RvKTsKCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gR2V0
IGRpZmZzCi0kZGlmZnMgPSBydW5fc3ZubG9vaygnZGlmZicpOwotJGRpZmZzID0gaW1wbG9kZSgiXG4i
LCAkZGlmZnMpOwotJGRpZmZzX2xlbmd0aCA9IHN0cmxlbigkZGlmZnMpOworLy8gUHJvY2VzcyBkaWZm
cworJGRpZmZzX2xlbmd0aCA9IHN0cmxlbigkY29tbWl0X2luZm9bJ2RpZmZzJ10pOwogJGRpZmZzX3N0
cmluZyA9ICgkZGlmZnNfbGVuZ3RoID4gMjYyMTQ0ID8gIjxkaWZmcyBleGNlZWRlZCBtYXhpbXVtIHNp
emU+IiA6Ci0gICAgICAgICAgICAgICAgICAgICgkZGlmZnNfbGVuZ3RoID4gODE5MiA/IE5VTEwgOiAk
ZGlmZnMpKTsKKyAgICAgICAgICAgICAgICAgICAgKCRkaWZmc19sZW5ndGggPiA4MTkyID8gTlVMTCA6
ICRjb21taXRfaW5mb1snZGlmZnMnXSkpOwoKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBCdWlsZCBlLW1haWwKLSRib3Vu
ZGFyeSA9IHNoYTEoInskY29tbWl0X3VzZXJ9eyRjb21taXRfZGF0ZX0iKTsKLSRtZXNzYWdlaWQgPSAi
eyRjb21taXRfdXNlcn0teyRjb21taXRfZGF0ZX0teyRSRVZ9LSIgLiBtdF9yYW5kKCk7CiskYm91bmRh
cnkgPSBzaGExKCJ7JGNvbW1pdF9pbmZvWydhdXRob3InXX17JGNvbW1pdF9pbmZvWydkYXRlJ119Iik7
CiskbWVzc2FnZWlkID0gInskY29tbWl0X2luZm9bJ2F1dGhvciddfS17JGNvbW1pdF9pbmZvWydkYXRl
J119LXskUkVWfS0iIC4gbXRfcmFuZCgpOwogJHN1YmplY3QgPSAic3ZuOiAiIC4gKCRwYXJlbnRfcGF0
aCA9PT0gJycgPyAnLycgOiAkcGFyZW50X3BhdGgpOwotc3dpdGNoIChzdWJzdHIodHJpbSgkY2hhbmdl
ZF9wYXRoc1swXSksNCkpIHsKLSAgICBjYXNlICdwZWFyJzogJGJ1Z191cmwgPSAnaHR0cDovL3BlYXIu
cGhwLm5ldC9idWdzJzsgYnJlYWs7Ci0gICAgY2FzZSAncGVjbCc6ICRidWdfdXJsID0gJ2h0dHA6Ly9w
ZWNsLnBocC5uZXQvYnVncyc7IGJyZWFrOwotICAgIGRlZmF1bHQ6ICAgICAkYnVnX3VybCA9ICdodHRw
Oi8vYnVncy5waHAubmV0JzsgICAgIGJyZWFrOwotfQoKLWZvcmVhY2goJGJ1Z3NfYXJyYXlbMF0gYXMg
JGs9PiRidWdfbWF0Y2gpIHsKLSAgaWYoc3RyaXN0cigkYnVnX21hdGNoLCdwZWNsJykpICRidWdfdXJs
c1ska10gPSAnaHR0cDovL3BlY2wucGhwLm5ldC9idWdzJzsKLSAgZWxzZSBpZihzdHJpc3RyKCRidWdf
bWF0Y2gsJ3BlYXInKSkgJGJ1Z191cmxzWyRrXSA9ICdodHRwOi8vcGVhci5waHAubmV0L2J1Z3MnOwot
ICBlbHNlICRidWdfdXJsc1ska10gPSAkYnVnX3VybDsKLQotfQotCi1mb3JlYWNoICgkY2hhbmdlZF9w
YXRocyBhcyAkY2hhbmdlZF9wYXRoKSB7Citmb3JlYWNoICgkY29tbWl0X2luZm9bJ2NoYW5nZWRfcGF0
aHMnXSBhcyAkY2hhbmdlZF9wYXRoKSB7CiAgICAgJGNoYW5nZWRfcGF0aCA9IHRyaW0oc3Ryc3RyKCRj
aGFuZ2VkX3BhdGgsICcgJykpOwogICAgIGlmIChzdWJzdHIoJGNoYW5nZWRfcGF0aCwgLTEpICE9PSAn
LycpIHsKICAgICAgICAgJHN1YmplY3QgLj0gJyAnIC4gc3Vic3RyKCRjaGFuZ2VkX3BhdGgsIHN0cmxl
bigkcGFyZW50X3BhdGgpKTsKQEAgLTIwNiw0NiArMTU5LDI2IEBACiB9CiAkc3ViamVjdCA9IHN1YnN0
cigkc3ViamVjdCwgMCwgOTUwKTsgLy8gTWF4IFNNVFAgbGluZSBsZW5ndGggPSA5OTguIFNvbWUgc2xv
cCBpbiB0aGlzIHZhbHVlLgoKLSRmdWxsbmFtZSA9ICI9P3V0Zi04P3E/IiAuIGltYXBfOGJpdChzdHJf
cmVwbGFjZShhcnJheSgnPycsICcgJyksIGFycmF5KCc9M0YnLCAnXycpLCAkZnJvbVsxXSkpIC4gIj89
IjsKKyRmdWxsbmFtZSA9ICI9P3V0Zi04P3E/IiAuIGltYXBfOGJpdChzdHJfcmVwbGFjZShhcnJheSgn
PycsICcgJyksIGFycmF5KCc9M0YnLCAnXycpLCAkY29tbWl0X2luZm9bJ2F1dGhvcl9uYW1lJ10pKSAu
ICI/PSI7CgotJG1zZ19oZWFkZXJzID0gIkZyb206IHskZnVsbG5hbWV9IDx7JGZyb21bMF19QHBocC5u
ZXQ+XHJcbiIgLgorJG1zZ19oZWFkZXJzID0gIkZyb206IHskZnVsbG5hbWV9IDx7JGNvbW1pdF9pbmZv
WydhdXRob3InXX1AcGhwLm5ldD5cclxuIiAuCiAgICAgICAgICAgICAgICAiVG86ICIgLiBpbXBsb2Rl
KCcsICcsICRlbWFpbHNfdG8pIC4gIlxyXG4iIC4KICAgICAgICAgICAgICAgICJNZXNzYWdlLUlEOiA8
c3ZueyRtZXNzYWdlaWR9QHN2bi5waHAubmV0PlxyXG4iIC4KLSAgICAgICAgICAgICAgICJEYXRlOiAi
IC4gZGF0ZShEQVRFX1JGQzgyMiwgJGNvbW1pdF9kYXRlKSAuICJcclxuIiAuCisgICAgICAgICAgICAg
ICAiRGF0ZTogIiAuIGRhdGUoREFURV9SRkM4MjIsICRjb21taXRfaW5mb1snZGF0ZSddKSAuICJcclxu
IiAuCiAgICAgICAgICAgICAgICAiU3ViamVjdDogeyRzdWJqZWN0fVxyXG4iIC4KICAgICAgICAgICAg
ICAgICJNSU1FLVZlcnNpb246IDEuMFxyXG4iIC4KICAgICAgICAgICAgICAgICJDb250ZW50LVR5cGU6
IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9XCJ7JGJvdW5kYXJ5fVwiXHJcbiI7CgogJGJ1Z3NfYm9k
eSA9ICcnOwotaWYgKCRidWdzKSB7Ci0gICAgaW5jbHVkZSAnL2hvbWUvc3ZuL1NWTlJPT1Qvc2VjcmV0
LmluYyc7Ci0gICAgJGJ1Z3NfYm9keSA9IChjb3VudCgkYnVnc19hcnJheVsxXSk+MSkgPyAiQnVnczog
IiA6ICJCdWc6ICI7Ci0gICAgZm9yZWFjaCAoJGJ1Z3NfYXJyYXlbMV0gYXMgJGs9PiRidWdfaWQpIHsK
LSAgICAgICAgJGJ1Z19zZGVzYyA9ICcnOwotICAgICAgICAkYnVnX3N0YXR1cyA9ICcnOwotICAgICAg
ICBpZigkYnVnX3VybHNbJGtdPT0naHR0cDovL2J1Z3MucGhwLm5ldCcpIHsKLSAgICAgICAgICAgICRj
aCA9IGN1cmxfaW5pdCgnaHR0cDovL2J1Z3MucGhwLm5ldC9ycGMucGhwJyk7Ci0gICAgICAgICAgICBj
dXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOwotICAgICAgICAgICAgY3Vy
bF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIDEpOwotICAgICAgICAgICAgJG5jb21tZW50ID0gIkF1
dG9tYXRpYyBjb21tZW50IGZyb20gU1ZOIG9uIGJlaGFsZiBvZiB7JGZyb21bMF19XG4iIC4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICJMb2c6ICRjb21taXRfbG9nXG4iIC4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICJSZXZpc2lvbjogaHR0cDovL3N2bi5waHAubmV0L3ZpZXd2Yz92aWV3PXJldmlzaW9uJnJl
dmlzaW9uPXskUkVWfVxuIjsKLSAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NU
RklFTERTLCAidXNlcj0iIC4gcmF3dXJsZW5jb2RlKCRmcm9tWzBdKSAuCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICImaWQ9eyRidWdfaWR9IiAuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICImbmNvbW1lbnQ9IiAuIHJhd3VybGVuY29kZSgkbmNvbW1lbnQpIC4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiZNQUdJQ19DT09LSUU9JFNWTl9NQUdJQ19DT09LSUUiKTsKLSAgICAgICAgICAg
ICRyZXQgPSBjdXJsX2V4ZWMoJGNoKTsKLSAgICAgICAgICAgIGlmKCRyZXQgIT09IGZhbHNlICkgewot
ICAgICAgICAgICAgICAgICRqc29uID0ganNvbl9kZWNvZGUoJHJldCx0cnVlKTsKLSAgICAgICAgICAg
ICAgICBpZihpc3NldCgkanNvblsncmVzdWx0J11bJ3N0YXR1cyddKSkgewotICAgICAgICAgICAgICAg
ICAgICAkYnVnX3N0YXR1cyA9ICcgKCcuJGpzb25bJ3Jlc3VsdCddWydzdGF0dXMnXVsnc3RhdHVzJ10u
JyknOwotICAgICAgICAgICAgICAgICAgICAkYnVnX3NkZXNjID0gJyAnLiRqc29uWydyZXN1bHQnXVsn
c3RhdHVzJ11bJ3NkZXNjJ107Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgY3VybF9jbG9zZSgkY2gpOworaWYgKGlzc2V0KCRidWdfbGlzdCkgJiYgY291bnQoJGJ1Z19s
aXN0KSA+IDApIHsKKyAgICAkYnVnc19ib2R5ID0gY291bnQoJGJ1Z19saXN0KSA+IDEgPyAiQnVnczog
IiA6ICJCdWc6ICI7CisgICAgZm9yZWFjaCAoJGJ1Z19saXN0IGFzICRuID0+ICRidWcpIHsKKyAgICAg
ICAgaWYgKGlzc2V0KCRidWdbJ2Vycm9yJ10pKSB7CisgICAgICAgICAgICAkc3RhdHVzID0gJyhlcnJv
ciBnZXR0aW5nIGJ1ZyBpbmZvcm1hdGlvbiknOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
JHN0YXR1cyA9ICIoeyRidWdbJ3N0YXR1cyddfSkgeyRidWdbJ3Nob3J0X2Rlc2MnXX0iOwogICAgICAg
ICB9Ci0gICAgICAgIGlmKCRrKSAkYnVnc19ib2R5IC49ICcgICAgICAgJzsKLSAgICAgICAgJGJ1Z3Nf
Ym9keSAuPSAkYnVnX3VybHNbJGtdLiIvJGJ1Z19pZHskYnVnX3N0YXR1c317JGJ1Z19zZGVzY31cclxu
IjsKKyAgICAgICAgJGJ1Z3NfYm9keSAuPSAieyRidWdbJ3VybCddfSB7JHN0YXR1c31cclxuICAgICAg
IjsKICAgICB9CiB9CgpAQCAtMjUzLDE3ICsxODYsMTcgQEAKICAgICAgICAgICAgICJDb250ZW50LVR5
cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9XCJ1dGYtOFwiXHJcbiIgLgogICAgICAgICAgICAgIkNvbnRl
bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcclxuIiAuCiAgICAgICAgICAgICAiXHJcbiIgLgotICAg
ICAgICAgICAgInskY29tbWl0X3VzZXJ9XHRcdCIgLiBkYXRlKERBVEVfUkZDMjgyMiwgJGNvbW1pdF9k
YXRlKSAuICJcclxuIiAuCisgICAgICAgICAgICAieyRjb21taXRfaW5mb1snYXV0aG9yJ119XHRcdCIg
LiBkYXRlKERBVEVfUkZDMjgyMiwgJGNvbW1pdF9pbmZvWydkYXRlJ10pIC4gIlxyXG4iIC4KICAgICAg
ICAgICAgICJcclxuIiAuCiAgICAgICAgICAgICAiUmV2aXNpb246IGh0dHA6Ly9zdm4ucGhwLm5ldC92
aWV3dmM/dmlldz1yZXZpc2lvbiZyZXZpc2lvbj17JFJFVn1cclxuIiAuCiAgICAgICAgICAgICAiXHJc
biIgLgogICAgICAgICAgICAgIkNoYW5nZWQgcGF0aHM6XHJcbiIgLgotICAgICAgICAgICAgIlx0IiAu
IGltcGxvZGUoIlxyXG5cdCIsICRjaGFuZ2VkX3BhdGhzKSAuICJcclxuIiAuCisgICAgICAgICAgICAi
XHQiIC4gaW1wbG9kZSgiXHJcblx0IiwgJGNvbW1pdF9pbmZvWydjaGFuZ2VkX3BhdGhzJ10pIC4gIlxy
XG4iIC4KICAgICAgICAgICAgICJcclxuIiAuCiAgICAgICAgICAgICAiTG9nOlxyXG4iIC4KLSAgICAg
ICAgICAgICRjb21taXRfbG9nIC4gIlxyXG4iIC4KLSAgICAgICAgICAgICIkYnVnc19ib2R5XHJcbiIg
LgotICAgICAgICAgICAgJGRpZmZzX3N0cmluZzsKKyAgICAgICAgICAgICJ7JGNvbW1pdF9pbmZvWyds
b2dfbWVzc2FnZSddfVxyXG4iIC4KKyAgICAgICAgICAgICJ7JGJ1Z3NfYm9keX1cclxuIiAuCisgICAg
ICAgICAgICBzdHJfcmVwbGFjZSgiXG4iLCAiXHJcbiIsICRkaWZmc19zdHJpbmcpOwoKIGlmICgkZGlm
ZnNfc3RyaW5nID09PSBOVUxMKSB7CiAgICAgJG1zZ19ib2R5IC49CkBAIC0yODcsNyArMjIwLDcgQEAK
ICAgICAkc29ja2V0ID0gZnNvY2tvcGVuKCRzbXRwX3NlcnZlciwgZ2V0c2VydmJ5bmFtZSgnc210cCcs
ICd0Y3AnKSwgJGVycm5vKTsKIH0KIGlmICgkc29ja2V0ID09PSBGQUxTRSkgewotICAgIGRpZSgiQ291
bGRuJ3QgY29ubmVjdCB0byBTTVRQIHNlcnZlciB7JHNtdHBfc2VydmVyfS4gRXJybm86IHskZXJybm99
LlxuIik7CisgICAgZmFpbCgiQ291bGRuJ3QgY29ubmVjdCB0byBTTVRQIHNlcnZlciB7JHNtdHBfc2Vy
dmVyfS4gRXJybm86IHskZXJybm99LlxuIik7CiB9CgogZndyaXRlKCRzb2NrZXQsCgpBZGRlZDogU1ZO
Uk9PVC9jb21taXQtc3Zucm9vdC5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU1ZOUk9PVC9jb21taXQtc3Zucm9vdC5w
aHAJICAgICAgICAgICAgICAgICAgICAgICAgKHJldiAwKQorKysgU1ZOUk9PVC9jb21taXQtc3Zucm9v
dC5waHAJMjAwOS0wNy0yMCAwNDo0MDozMSBVVEMgKHJldiAyODQ0MTMpCkBAIC0wLDAgKzEsMzQgQEAK
Kzw/cGhwCisKKy8vIFRoaXMgc2NyaXB0IGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9tIHBvc3Qt
Y29tbWl0LiBJdCBhc3N1bWVzIHRoYXQgYWxsCisvLyAgdGhlIGFwcHJvcHJpYXRlIHZhcmlhYmxlcyBh
bmQgZnVuY3Rpb25zIGFyZSBkZWZpbmVkLgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQ29uc3RhbnRzCiskdmVyc2lv
biA9IHN1YnN0cignJFJldmlzaW9uJCcsIHN0cmxlbignJFJldmlzaW9uOiAnKSwgLTIpOworCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8gQ2hlY2sgZm9yIGEgU1ZOUk9PVCBjb21taXQKKyRTVk5ST09UX2NoYW5nZWQgPSBGQUxT
RTsKK2ZvcmVhY2ggKCRjb21taXRfaW5mb1snZGlyc19jaGFuZ2VkJ10gYXMgJGNoYW5nZWRfcGF0aCkg
eworICAgIGlmIChzdWJzdHIoJGNoYW5nZWRfcGF0aCwgMCwgNykgPT0gJ1NWTlJPT1QnKSB7CisgICAg
ICAgICRTVk5ST09UX2NoYW5nZWQgPSBUUlVFOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLyBJZiBTVk5ST09UIGhhZCBhIGNvbW1pdCwgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGFk
bWluIGNvcHkKK2lmICgkU1ZOUk9PVF9jaGFuZ2VkKSB7CisgICAgaWYgKCRpc19ERUJVRykgeworICAg
ICAgICBwcmludCAiVXBkYXRpbmcgU1ZOUk9PVC4uLlxuIjsKKyAgICB9CisgICAgY2hkaXIoX19ESVJf
Xyk7CisgICAgZXhlYygnZXhlYyBzdm4gdXBkYXRlJywgJG91dHB1dCwgJHN0YXR1cyk7CisgICAgZndy
aXRlKHN0ZGVyciwgaW1wbG9kZSgiXG4iLCAkb3V0cHV0KSAuICJcbiIpOworICAgIGlmICgkc3RhdHVz
ICE9IDApIHsKKyAgICAgICAgZmFpbCgic3ZuIHVwZGF0ZSBvbiBTVk5ST09UIGZhaWxlZCB3aXRoIGV4
aXQgY29kZSB7JHN0YXR1c30hXG4iKTsKKyAgICB9Cit9CisKKz8+CgoKUHJvcGVydHkgY2hhbmdlcyBv
bjogU1ZOUk9PVC9jb21taXQtc3Zucm9vdC5waHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmtleXdvcmRzCiAg
ICsgSWQgUmV2IFJldmlzaW9uCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpNb2RpZmll
ZDogU1ZOUk9PVC9wb3N0LWNvbW1pdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTVk5ST09UL3Bvc3QtY29tbWl0CTIwMDkt
MDctMjAgMDQ6MzE6MDcgVVRDIChyZXYgMjg0NDEyKQorKysgU1ZOUk9PVC9wb3N0LWNvbW1pdAkyMDA5
LTA3LTIwIDA0OjQwOjMxIFVUQyAocmV2IDI4NDQxMykKQEAgLTIzLDEwICsyMywxMyBAQAogaWYgKHZl
cnNpb25fY29tcGFyZSgnNS4yLjAnLCBQSFBfVkVSU0lPTiwgJz4nKSkgewogICAgIGZhaWwoIlJlcXVp
cmVzIGF0IGxlYXN0IFBIUCA1LjIuXG4iKTsKIH0KK2lmICghZGVmaW5lZCgnX19ESVJfXycpKSB7Cisg
ICAgZGVmaW5lKCdfX0RJUl9fJywgZGlybmFtZShfX0ZJTEVfXykpOworfQoKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBB
cmd1bWVudHMKLWlmICgkYXJnYyAhPSAzKSB7CitpZiAoJGFyZ2MgIT09IDMpIHsKICAgICBmYWlsKCJQ
YXNzIGV4YWN0bHkgdHdvIGFyZ3VtZW50czogUkVQT1MgYW5kIFJFVi5cbiIpOwogfQogJFJFUE9TID0g
JGFyZ3ZbMV07CkBAIC0zNyw3ICs0MCw3IEBACiBmdW5jdGlvbiBydW5fc3ZubG9vaygkY29tbWFuZCkK
IHsKICAgICBleGVjKCdleGVjIHN2bmxvb2sgJyAuIGVzY2FwZXNoZWxsYXJnKCRjb21tYW5kKSAuICcg
LXIgJyAuIGVzY2FwZXNoZWxsYXJnKCRHTE9CQUxTWydSRVYnXSkgLiAnICcgLiBlc2NhcGVzaGVsbGFy
ZygkR0xPQkFMU1snUkVQT1MnXSksICRvdXRwdXQsICRzdGF0dXMpOwotICAgIGlmICgkc3RhdHVzICE9
IDApIHsKKyAgICBpZiAoJHN0YXR1cyAhPT0gMCkgewogICAgICAgICBmYWlsKCJzdm5sb29rIGZhaWxl
ZCB3aXRoIGV4aXQgY29kZSB7JHN0YXR1c31cbk91dHB1dDpcbiIgLiBpbXBsb2RlKCJcbiIsICRvdXRw
dXQpIC4gIlxuIik7CiAgICAgfQogICAgIHJldHVybiAkb3V0cHV0OwpAQCAtNDUsMzUgKzQ4LDQyIEBA
CgogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIC8vIEJ1aWxkIGxpc3Qgb2YgY2hhbmdlcwotJGNoYW5nZWRfcGF0aHMgPSBydW5f
c3ZubG9vaygnY2hhbmdlZCcpOwotJGRpcnNfY2hhbmdlZCA9IHJ1bl9zdm5sb29rKCdkaXJzLWNoYW5n
ZWQnKTsKKyRjb21taXRfaW5mbyA9IGFycmF5KAorICAgICdjaGFuZ2VkX3BhdGhzJyA9PiBydW5fc3Zu
bG9vaygnY2hhbmdlZCcpLAorICAgICdkaXJzX2NoYW5nZWQnID0+IHJ1bl9zdm5sb29rKCdkaXJzLWNo
YW5nZWQnKSwKKyAgICAnYXV0aG9yJyA9PiAoJGlzX0RFQlVHICYmIGdldGVudigiREVCVUdVU0VSIikp
ID8gZ2V0ZW52KCJERUJVR1VTRVIiKSA6IHRyaW0oaW1wbG9kZSgnJywgcnVuX3N2bmxvb2soJ2F1dGhv
cicpKSksCisgICAgJ2xvZ19tZXNzYWdlJyA9PiB0cmltKGltcGxvZGUoJycsIHJ1bl9zdm5sb29rKCds
b2cnKSkpLAorICAgICdkYXRlJyA9PiBzdHJ0b3RpbWUoc3Vic3RyKHRyaW0oaW1wbG9kZSgnJywgcnVu
X3N2bmxvb2soJ2RhdGUnKSkpLCAwLCBzdHJsZW4oIjAwMDAtMDAtMDAgMDA6MDA6MDAgKzAwMDAiKSkp
LAorICAgICdkaWZmcycgPT4gaW1wbG9kZSgiXG4iLCBydW5fc3ZubG9vaygnZGlmZicpKSwKKyk7Cgog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS8vIENhbGwgZS1tYWlsZXIgc2NyaXB0Ci1yZXF1aXJlIGRpcm5hbWUoX19GSUxFX18p
IC4gJy9jb21taXQtZW1haWwucGhwJzsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIENoZWNrIGZvciBhIFNWTlJPT1Qg
Y29tbWl0Ci0kU1ZOUk9PVF9jaGFuZ2VkID0gRkFMU0U7Ci1mb3JlYWNoICgkZGlyc19jaGFuZ2VkIGFz
ICRjaGFuZ2VkX3BhdGgpIHsKLSAgICBpZiAoc3Vic3RyKCRjaGFuZ2VkX3BhdGgsIDAsIDcpID09ICdT
Vk5ST09UJykgewotICAgICAgICAkU1ZOUk9PVF9jaGFuZ2VkID0gVFJVRTsKKy8vIFJlYWQgdGhlIHVz
ZXIgZGF0YWJhc2UKKyR1c2Vyc0RCID0gZmlsZShkaXJuYW1lKF9fRklMRV9fKSAuICcvdXNlcnMuZGIn
KTsKKyRzYXdfbGFzdF9JU08gPSBGQUxTRTsKK2ZvcmVhY2ggKCR1c2Vyc0RCIGFzICR1c2VybGluZSkg
eworICAgIGxpc3QgKCR1c2VybmFtZSwgJGZ1bGxuYW1lLCAkZW1haWwpID0gZXhwbG9kZSgiOiIsIHRy
aW0oJHVzZXJsaW5lKSk7CisgICAgaWYgKCR1c2VybmFtZSA9PT0gJ2xhZGRlcmFsaWNlJykgeworICAg
ICAgICAkc2F3X2xhc3RfSVNPID0gVFJVRTsKICAgICB9CisgICAgaWYgKCR1c2VybmFtZSA9PT0gJGNv
bW1pdF9pbmZvWydhdXRob3InXSkgeworICAgICAgICBpZiAoJHNhd19sYXN0X0lTTyAhPT0gVFJVRSkg
eworICAgICAgICAgICAgJGZ1bGxuYW1lID0gaWNvbnYoIklTTy04ODU5LTEiLCAiVVRGLTgvL1RSQU5T
TElUIiwgJGZ1bGxuYW1lKTsKKyAgICAgICAgfQorICAgICAgICAkY29tbWl0X2luZm9bJ2F1dGhvcl9u
YW1lJ10gPSAkZnVsbG5hbWU7CisgICAgICAgICRjb21taXRfaW5mb1snYXV0aG9yX2VtYWlsJ10gPSAk
ZW1haWw7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KK2lmICghaXNzZXQoJGNvbW1pdF9pbmZvWydh
dXRob3JfbmFtZSddKSkgeworICAgIGZhaWwoIkNvdWxkbid0IGZpbmQgdXNlclxuIik7Cit9CgogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS8vIElmIFNWTlJPT1QgaGFkIGEgY29tbWl0LCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgYWRt
aW4gY29weQotaWYgKCRTVk5ST09UX2NoYW5nZWQpIHsKLSAgICBpZiAoJGlzX0RFQlVHKSB7Ci0gICAg
ICAgIHByaW50ICJVcGRhdGluZyBTVk5ST09ULi4uXG4iOwotICAgIH0KLSAgICBjaGRpcihkaXJuYW1l
KF9fRklMRV9fKSk7Ci0gICAgZXhlYygnZXhlYyBzdm4gdXBkYXRlJywgJG91dHB1dCwgJHN0YXR1cyk7
Ci0gICAgcHJpbnQgaW1wbG9kZSgiXG4iLCAkb3V0cHV0KSAuICJcbiI7Ci0gICAgaWYgKCRzdGF0dXMg
IT0gMCkgewotICAgICAgICBmYWlsKCJzdm4gdXBkYXRlIG9uIFNWTlJPT1QgZmFpbGVkIHdpdGggZXhp
dCBjb2RlIHskc3RhdHVzfSFcbiIpOwotICAgIH0KLX0KKy8vIENhbGwgdmFyaW91cyBzdWItc2NyaXB0
cworcmVxdWlyZSBfX0RJUl9fIC4gJy9jb21taXQtYnVncy5waHAnOworcmVxdWlyZSBfX0RJUl9fIC4g
Jy9jb21taXQtZW1haWwucGhwJzsKK3JlcXVpcmUgX19ESVJfXyAuICcvY29tbWl0LXN2bnJvb3QucGhw
JzsKCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogLy8gRG9uZSEK

--0a47d226f607f673191e79932e67301441b72518--