[Tools] testbot/web: Allow administrators to retrieve the Engine log.

Francois Gouget <[email protected]> Wed, 22 Nov 2017 16:36:43 +0100 (CET)
Newsgroups gmane.comp.emulators.wine.patches
Message-ID <E1eHX4t-0003XR-Fp@amboise>
U2lnbmVkLW9mZi1ieTogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4K
LS0tCiB0ZXN0Ym90L2xpYi9XaW5lVGVzdEJvdC9DR0kvUGFnZUJhc2UucG0gfCAgIDMgKwogdGVz
dGJvdC9saWIvV2luZVRlc3RCb3QvTG9nLnBtICAgICAgICAgIHwgICA4ICstCiB0ZXN0Ym90L3dl
Yi9hZG1pbi9Mb2cucGwgICAgICAgICAgICAgICAgfCAxMDMgKysrKysrKysrKysrKysrKysrKwog
dGVzdGJvdC93ZWIvYWRtaW4vU2VuZExvZy5wbCAgICAgICAgICAgIHwgMTczICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDI4NiBpbnNlcnRpb25zKCsp
LCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdGJvdC93ZWIvYWRtaW4vTG9n
LnBsCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdGJvdC93ZWIvYWRtaW4vU2VuZExvZy5wbAoKZGlm
ZiAtLWdpdCBhL3Rlc3Rib3QvbGliL1dpbmVUZXN0Qm90L0NHSS9QYWdlQmFzZS5wbSBiL3Rlc3Ri
b3QvbGliL1dpbmVUZXN0Qm90L0NHSS9QYWdlQmFzZS5wbQppbmRleCAwNDc1OWNhMC4uNGFlMTkw
ZTIgMTAwNjQ0Ci0tLSBhL3Rlc3Rib3QvbGliL1dpbmVUZXN0Qm90L0NHSS9QYWdlQmFzZS5wbQor
KysgYi90ZXN0Ym90L2xpYi9XaW5lVGVzdEJvdC9DR0kvUGFnZUJhc2UucG0KQEAgLTI5OCw2ICsy
OTgsOSBAQCBFT0YKICAgICBwcmludCAiICAgICAgICA8bGkgY2xhc3M9J2RpdmlkZXInPiZuYnNw
OzwvbGk+XG4iOwogICAgIHByaW50ICIgICAgICAgIDxsaT48cD48YSBocmVmPSciLCBNYWtlU2Vj
dXJlVVJMKCIvYWRtaW4vQnJhbmNoZXNMaXN0LnBsIiksCiAgICAgICAgICAgIic+QnJhbmNoZXM8
L2E+PC9wPjwvbGk+XG4iOworICAgIHByaW50ICIgICAgICAgIDxsaSBjbGFzcz0nZGl2aWRlcic+
Jm5ic3A7PC9saT5cbiI7CisgICAgcHJpbnQgIiAgICAgICAgPGxpPjxwPjxhIGhyZWY9JyIsIE1h
a2VTZWN1cmVVUkwoIi9hZG1pbi9Mb2cucGwiKSwKKyAgICAgICAgICAiJz5FbmdpbmUgTG9nPC9h
PjwvcD48L2xpPlxuIjsKICAgICBwcmludCAiICAgICAgICA8bGkgY2xhc3M9J2JvdCc+Jm5ic3A7
PC9saT5cbiI7CiAgIH0KIApkaWZmIC0tZ2l0IGEvdGVzdGJvdC9saWIvV2luZVRlc3RCb3QvTG9n
LnBtIGIvdGVzdGJvdC9saWIvV2luZVRlc3RCb3QvTG9nLnBtCmluZGV4IDdhYmYyY2I3Li5mMTQ5
OWRkOSAxMDA2NDQKLS0tIGEvdGVzdGJvdC9saWIvV2luZVRlc3RCb3QvTG9nLnBtCisrKyBiL3Rl
c3Rib3QvbGliL1dpbmVUZXN0Qm90L0xvZy5wbQpAQCAtMzEsNyArMzEsNyBAQCB1c2UgdmFycyBx
dyAoQElTQSBARVhQT1JUKTsKIAogcmVxdWlyZSBFeHBvcnRlcjsKIEBJU0EgPSBxdyhFeHBvcnRl
cik7Ci1ARVhQT1JUID0gcXcoJkxvZ01zZyAmVGltZSAmRWxhcHNlZCk7CitARVhQT1JUID0gcXco
JkxvZ01zZyAmT3BlbkxvZyAmVGltZSAmRWxhcHNlZCk7CiAKIG15ICRsb2dmaWxlOwogbXkgJGxv
Z3ByZWZpeDsKQEAgLTU4LDYgKzU4LDEyIEBAIHN1YiBMb2dNc2coQCkKICAgcHJpbnQgJGxvZ2Zp
bGUgc2NhbGFyIGxvY2FsdGltZSwgIiAiLCAkbG9ncHJlZml4LCAiWyQkXTogIiwgQF8gaWYgKCRs
b2dmaWxlKTsKIH0KIAorc3ViIE9wZW5Mb2coKQoreworICBteSAkSGFuZGxlOworICByZXR1cm4g
b3BlbigkSGFuZGxlLCAiPCIsICIkTG9nRGlyL2xvZyIpID8gJEhhbmRsZSA6IHVuZGVmOworfQor
CiA9cG9kCiA9b3ZlciAxMgogCmRpZmYgLS1naXQgYS90ZXN0Ym90L3dlYi9hZG1pbi9Mb2cucGwg
Yi90ZXN0Ym90L3dlYi9hZG1pbi9Mb2cucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAuLmI5NzU0YmQzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGJvdC93ZWIvYWRtaW4vTG9n
LnBsCkBAIC0wLDAgKzEsMTAzIEBACisjIC0qLSBNb2RlOiBQZXJsOyBwZXJsLWluZGVudC1sZXZl
bDogMjsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLQorIyBMZXQgdGhlIGFkbWluaXN0cmF0b3Ig
ZG93bmxvYWQgYW4gZXhjZXJwdCBvZiB0aGUgRW5naW5lIGxvZworIworIyBDb3B5cmlnaHQgMjAx
NyBGcmFuY29pcyBHb3VnZXQKKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIuMSBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMK
KyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBCisKK3VzZSBzdHJpY3Q7CisKK3BhY2thZ2UgTG9nUGFnZTsKKwordXNl
IE9iamVjdE1vZGVsOjpCYXNpY1Byb3BlcnR5RGVzY3JpcHRvcjsKK3VzZSBPYmplY3RNb2RlbDo6
Q0dJOjpGcmVlRm9ybVBhZ2U7Cit1c2UgV2luZVRlc3RCb3Q6OkNvbmZpZzsKK3VzZSBXaW5lVGVz
dEJvdDo6TG9nOworCitATG9nUGFnZTo6SVNBID0gcXcoT2JqZWN0TW9kZWw6OkNHSTo6RnJlZUZv
cm1QYWdlKTsKKworc3ViIF9pbml0aWFsaXplKCQkJCkKK3sKKyAgbXkgKCRzZWxmLCAkUmVxdWVz
dCwgJFJlcXVpcmVkUm9sZSkgPSBAXzsKKworICBteSBAUHJvcGVydHlEZXNjcmlwdG9ycyA9ICgK
KyAgICBDcmVhdGVCYXNpY1Byb3BlcnR5RGVzY3JpcHRvcigiSG91cnMiLCAiSG91cnMiLCAhMSwg
ITEsICJOIiwgMiksCisgICk7CisgICRzZWxmLT5TVVBFUjo6X2luaXRpYWxpemUoJFJlcXVlc3Qs
ICRSZXF1aXJlZFJvbGUsIFxAUHJvcGVydHlEZXNjcmlwdG9ycyk7Cit9CisKK3N1YiBHZXRQcm9w
ZXJ0eVZhbHVlKCQkKQoreworICBteSAoJHNlbGYsICRQcm9wZXJ0eURlc2NyaXB0b3IpID0gQF87
CisKKyAgbXkgJFByb3BlcnR5TmFtZSA9ICRQcm9wZXJ0eURlc2NyaXB0b3ItPkdldE5hbWUoKTsK
KyAgcmV0dXJuIDEgaWYgKCRQcm9wZXJ0eU5hbWUgZXEgIkhvdXJzIik7ICMgUHJvdmlkZXMgYSBk
ZWZhdWx0IHZhbHVlCisKKyAgcmV0dXJuICRzZWxmLT5TVVBFUjo6R2V0UHJvcGVydHlWYWx1ZSgk
UHJvcGVydHlEZXNjcmlwdG9yKTsKK30KKworc3ViIEdldEhlYWRlclRleHQoJCkKK3sKKyAgI215
ICgkc2VsZikgPSBAXzsKKyAgcmV0dXJuICJTcGVjaWZ5IGhvdyBtYW55IGhvdXJzIG9mIGxvZyBt
ZXNzYWdlcyB0byBnZXQuIjsKK30KKworc3ViIEdldEFjdGlvbnMoJCkKK3sKKyAgbXkgKCRzZWxm
KSA9IEBfOworCisgIG15ICRBY3Rpb25zID0gJHNlbGYtPlNVUEVSOjpHZXRBY3Rpb25zKCk7Cisg
IHB1c2goQCRBY3Rpb25zLCAiRG93bmxvYWQiKTsKKworICByZXR1cm4gJEFjdGlvbnM7Cit9CisK
K3N1YiBPbkRvd25sb2FkKCQpCit7CisgIG15ICgkc2VsZikgPSBAXzsKKyAgJHNlbGYtPlJlZGly
ZWN0KCIvYWRtaW4vU2VuZExvZy5wbD9Ib3Vycz0iLiAkc2VsZi0+R2V0UGFyYW0oIkhvdXJzIikp
OyAjIGRvZXMgbm90IHJldHVybgorICBleGl0OworfQorCitzdWIgT25BY3Rpb24oJCQpCit7Cisg
IG15ICgkc2VsZiwgJEFjdGlvbikgPSBAXzsKKworICByZXR1cm4gJHNlbGYtPk9uRG93bmxvYWQo
KSBpZiAoJEFjdGlvbiBlcSAiRG93bmxvYWQiKTsKKyAgcmV0dXJuICRzZWxmLT5TVVBFUjo6T25B
Y3Rpb24oJEFjdGlvbik7Cit9CisKK3N1YiBHZW5lcmF0ZUJvZHkoJCkKK3sKKyAgbXkgKCRzZWxm
KSA9IEBfOworCisgIG15ICRMb2cgPSBPcGVuTG9nKCk7CisgIGlmIChkZWZpbmVkICRMb2cpCisg
IHsKKyAgICBteSAkU2l6ZSA9IChzdGF0KCRMb2cpKVs3XTsKKyAgICAkU2l6ZSA9IGludCgkU2l6
ZSAvIDEwMjQgLyAxMDI0KTsKKyAgICBwcmludCAiPGRpdiBjbGFzcz0nQ29udGVudCc+PHA+TG9n
IHNpemU6ICRTaXplIE1CPC9wPjwvZGl2PlxuXG4iOworICAgIGNsb3NlKCRMb2cpOworICB9Cisg
ICRzZWxmLT5TVVBFUjo6R2VuZXJhdGVCb2R5KCk7Cit9CisKKworcGFja2FnZSBtYWluOworCitt
eSAkUmVxdWVzdCA9IHNoaWZ0OworCitteSAkTG9nUGFnZSA9IExvZ1BhZ2UtPm5ldygkUmVxdWVz
dCwgImFkbWluIik7CiskTG9nUGFnZS0+R2VuZXJhdGVQYWdlKCk7CmRpZmYgLS1naXQgYS90ZXN0
Ym90L3dlYi9hZG1pbi9TZW5kTG9nLnBsIGIvdGVzdGJvdC93ZWIvYWRtaW4vU2VuZExvZy5wbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNzA0NGMzMzIKLS0tIC9kZXYvbnVs
bAorKysgYi90ZXN0Ym90L3dlYi9hZG1pbi9TZW5kTG9nLnBsCkBAIC0wLDAgKzEsMTczIEBACisj
IC0qLSBNb2RlOiBQZXJsOyBwZXJsLWluZGVudC1sZXZlbDogMjsgaW5kZW50LXRhYnMtbW9kZTog
bmlsIC0qLQorIyBTZW5kcyBhbiBleGNlcnB0IG9mIHRoZSBUZXN0Qm90IEVuZ2luZSBsb2cKKyMK
KyMgQ29weXJpZ2h0IDIwMTcgRnJhbmNvaXMgR291Z2V0CisjCisjIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyMgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisj
IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZs
b29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQorCit1c2Ugc3RyaWN0OworCit1c2UgSFRU
UDo6RGF0ZTsKKwordXNlIEFwYWNoZTI6OkNvbnN0IC1jb21waWxlID0+IHF3KFJFRElSRUNUKTsK
K3VzZSBDR0k7Cit1c2UgQ0dJOjpDb29raWU7Cit1c2UgVVJJOjpFc2NhcGU7Cit1c2UgV2luZVRl
c3RCb3Q6OkNvbmZpZzsKK3VzZSBXaW5lVGVzdEJvdDo6Q0dJOjpTZXNzaW9uczsKK3VzZSBXaW5l
VGVzdEJvdDo6TG9nOworCisKK3N1YiBHZXRTdGFydFBvc2l0aW9uKCQkKQoreworICBteSAoJExv
ZywgJEhvdXJzKSA9IEBfOworCisgICMgVGhlIGxvZyBmaWxlIGNhbiBiZSBwcmV0dHkgbG9uZyBz
byBkbyBhIGJpbmFyeSBzZWFyY2ggdG8gZmlndXJlIG91dCB3aGVyZQorICAjIHRoZSBvbGRlc3Qg
bG9nIGxpbmUgbGVzcyB0aGFuICRIb3VycyBvbGQgaXMuCisgIG15ICRDdXRvZmYgPSB0aW1lKCkg
LSAzNjAwICogJEhvdXJzOworICBteSAkU2l6ZSA9IChzdGF0KCRMb2cpKVs3XTsKKyAgbXkgKCRN
aW4sICRNYXgpID0gKDAsICRTaXplKTsKKyAgd2hpbGUgKCRNaW4gPCAkTWF4KQorICB7CisgICAg
bXkgJE1pZGRsZSA9IGludCgoJE1pbiArICRNYXgpIC8gMik7CisgICAgc2VlaygkTG9nLCAkTWlk
ZGxlLCAwKTsKKworICAgICMgSWdub3JlIHRoZSBmaXJzdCBsaW5lIHdoaWNoIHdlIGFzc3VtZSBp
cyBnb2luZyB0byBiZSBpbmNvbXBsZXRlIChldmVuCisgICAgIyBpZiBieSBjaGFuY2UgaXQgc3Rh
cnQgd2l0aCBhIHRpbWVzdGFtcCB0aGVyZSBpcyBubyB3YXkgdG8ga25vdyBpZiB0aGF0CisgICAg
IyB0aW1lc3RhbXAgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSkuIEFsc28gYWRqdXN0
ICRNaWRkbGUgc28gaXQKKyAgICAjIGFsd2F5cyBwb2ludHMgdG8gdGhlIHN0YXJ0IG9mIGEgbGlu
ZS4KKyAgICBteSAkTGluZSA9IDwkTG9nPjsKKyAgICAkTWlkZGxlICs9IGxlbmd0aCgkTGluZSk7
CisgICAgaWYgKCRNaWRkbGUgPj0gJFNpemUpCisgICAgeworICAgICAgIyBUaGVyZSBpcyBubyBs
aW5lIGxlc3MgdGhhbiAkSG91cnMgb2xkIHNvIGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8KKyAgICAg
ICMgcmV0dXJuICRTaXplLiBCdXQgaW5zdGVhZCByZXR1cm4gJE1pbiBzbyB0aGUgYWRtaW5pc3Ry
YXRvciBhdAorICAgICAgIyBsZWFzdCBzZWVzIHRoZSBsYXN0IGxpbmUuCisgICAgICByZXR1cm4g
KCRNaW4sIDApOworICAgIH0KKyAgICBpZiAoJE1pZGRsZSA+PSAkTWF4KQorICAgIHsKKyAgICAg
ICMgVGhlcmUgaXMgb25seSBvbmUgbGluZSBiZXR3ZWVuICRNaW4gYW5kICRNYXguIERldGVybWlu
ZSB3aGV0aGVyIHRvCisgICAgICAjIGluY2x1ZGUgaXQgb3Igbm90LgorICAgICAgJE1pZGRsZSA9
ICRNaW47CisgICAgICBzZWVrKCRMb2csICRNaWRkbGUsIDApOworICAgIH0KKyAgICBteSAkQ3Vy
cmVudCA9ICRNaWRkbGU7CisgICAgd2hpbGUgKCRMaW5lID0gPCRMb2c+KQorICAgIHsKKyAgICAg
ICMgTm90ZSB0aGF0IHRoZSBsb2cgZmlsZSBtYXkgaGF2ZSBsaW5lcyB3aXRoIG5vIHRpbWVzdGFt
cAorICAgICAgaWYgKCRMaW5lID1+IC9eKFx3ezN9IFx3ezN9IFswLTkgXVxkIFxkezJ9OlxkezJ9
OlxkezJ9IFxkezR9KSAvKQorICAgICAgeworICAgICAgICBteSAkVGltZSA9IHN0cjJ0aW1lKCQx
KTsKKyAgICAgICAgaWYgKCRUaW1lIDwgJEN1dG9mZikKKyAgICAgICAgeworICAgICAgICAgICMg
VGhpcyBsaW5lIGlzIHRvbyBvbGQKKyAgICAgICAgICAkQ3VycmVudCArPSBsZW5ndGgoJExpbmUp
OworICAgICAgICAgIGlmICgkQ3VycmVudCA+PSAkU2l6ZSkKKyAgICAgICAgICB7CisgICAgICAg
ICAgICAjIFNlZSB0aGUgJE1pZGRsZSA9PSAkU2l6ZSBjb21tZW50LiBOb3RlIHRoYXQgdGhpcyBt
YXkgcmV0dXJuIG1vcmUKKyAgICAgICAgICAgICMgdGhhbiBvbmUgbGluZS4KKyAgICAgICAgICAg
IHJldHVybiAoJE1pbiwgMCk7CisgICAgICAgICAgfQorICAgICAgICAgICRNaW4gPSAkQ3VycmVu
dDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAjIENvbnNp
ZGVyIHRoYXQgbGluZXMgd2l0aCBubyB0aW1lc3RhbXAgYXJlIGxlc3MgdGhhbiAkSG91cnMgb2xk
IHRvbworICAgICAgICAgICRNYXggPSAkTWlkZGxlOworICAgICAgICB9CisgICAgICAgIGxhc3Q7
CisgICAgICB9CisgICAgICAkQ3VycmVudCArPSBsZW5ndGgoJExpbmUpOworICAgICAgaWYgKCRD
dXJyZW50ID49ICRNYXgpCisgICAgICB7CisgICAgICAgICMgQ29uc2lkZXIgdGhhdCBsaW5lcyB3
aXRoIG5vIHRpbWVzdGFtcCBhcmUgbGVzcyB0aGFuICRIb3VycyBvbGQgdG9vCisgICAgICAgICRN
YXggPSAkTWlkZGxlOworICAgICAgICBsYXN0OworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
JE1pbiBpZiAoIWRlZmluZWQgJExpbmUpOworICB9CisgIHJldHVybiAoJE1pbiwgMSk7Cit9CisK
K3N1YiBQcmludExvZygkKQoreworICBteSAoJFJlcXVlc3QpID0gQF87CisKKyAgbXkgJENHSU9i
aiA9IENHSS0+bmV3KCRSZXF1ZXN0KTsKKyAgbXkgJEhvdXJzID0gJENHSU9iai0+cGFyYW0oIkhv
dXJzIik7CisgIGlmICghZGVmaW5lZCAkSG91cnMgb3IgJEhvdXJzICF+IC9eKFxkXGQ/KSQvKQor
ICB7CisgICAgICAkUmVxdWVzdC0+aGVhZGVyc19vdXQtPnNldCgiTG9jYXRpb24iLCAiLyIpOwor
ICAgICAgJFJlcXVlc3QtPnN0YXR1cyhBcGFjaGUyOjpDb25zdDo6UkVESVJFQ1QpOworICAgICAg
ZXhpdDsKKyAgfQorICAkSG91cnMgPSAkMTsKKworICAjIFRleHQgZmlsZQorICAkUmVxdWVzdC0+
Y29udGVudF90eXBlKCJ0ZXh0L3BsYWluIik7CisKKyAgbXkgJExvZyA9IE9wZW5Mb2coKTsKKyAg
aWYgKGRlZmluZWQgJExvZykKKyAgeworICAgIGJpbm1vZGUoJExvZyk7CisgICAgaWYgKCRIb3Vy
cyA+IDApCisgICAgeworICAgICAgbXkgKCRQb3NpdGlvbiwgJEZvdW5kKSA9IEdldFN0YXJ0UG9z
aXRpb24oJExvZywgJEhvdXJzKTsKKyAgICAgIGlmICghJEZvdW5kKQorICAgICAgeworICAgICAg
ICBwcmludCAiVGhlcmUgaXMgbm8gbG9nIGVudHJ5IGxlc3MgdGhhbiAkSG91cnMgaG91cihzKSBv
bGQuXG4iOworICAgICAgICBwcmludCAiSGVyZSBhcmUgdGhlIGxhc3QgZmV3IGxpbmVzOlxuIjsK
KyAgICAgIH0KKyAgICAgIHNlZWsoJExvZywgJFBvc2l0aW9uLCAwKTsKKyAgICB9CisKKyAgICBi
aW5tb2RlKFNURE9VVCk7CisgICAgd2hpbGUgKDEpCisgICAgeworICAgICAgbXkgJEJsb2NrOwor
ICAgICAgbXkgJExlbiA9IHN5c3JlYWQoJExvZywgJEJsb2NrLCAxNjM4NCk7CisgICAgICBsYXN0
IGlmICghJExlbik7CisgICAgICBwcmludCAkQmxvY2s7CisgICAgfQorICAgIGNsb3NlKCRMb2cp
OworICB9CisgIGVsc2UKKyAgeworICAgIHByaW50ICJDb3VsZCBub3Qgb3BlbiB0aGUgbG9nIGZp
bGUhXG4iOworICB9Cit9CisKK215ICRSZXF1ZXN0ID0gc2hpZnQ7CisKK215ICVDb29raWVzID0g
Q0dJOjpDb29raWUtPmZldGNoKCRSZXF1ZXN0KTsKK215ICRJc0FkbWluOworaWYgKGRlZmluZWQg
JENvb2tpZXN7IlNlc3Npb25JZCJ9KQoreworICBteSAkU2Vzc2lvbiA9IENyZWF0ZVNlc3Npb25z
KCktPkdldEl0ZW0oJENvb2tpZXN7IlNlc3Npb25JZCJ9LT52YWx1ZSk7CisgICRJc0FkbWluID0g
JFNlc3Npb24tPlVzZXItPkhhc1JvbGUoImFkbWluIikgaWYgKCRTZXNzaW9uKTsKKworfQoraWYg
KCEkSXNBZG1pbikKK3sKKyAgJFJlcXVlc3QtPmhlYWRlcnNfb3V0LT5zZXQoIkxvY2F0aW9uIiwg
Ii9Mb2dpbi5wbD9UYXJnZXQ9IiAuIHVyaV9lc2NhcGUoJEVOVnsiUkVRVUVTVF9VUkkifSkpOwor
ICAkUmVxdWVzdC0+c3RhdHVzKEFwYWNoZTI6OkNvbnN0OjpSRURJUkVDVCk7CisgIGV4aXQ7Cit9
CisKK1ByaW50TG9nKCRSZXF1ZXN0KTsKKworZXhpdDsKLS0gCjIuMTQuMgoKCg==