Re: Smoke [blead] v5.26.0-1591-g56e48c1076 FAIL(XM) os/390 25.00 (2964/)
[email protected] (Karl Williamson) Thu, 7 Dec 2017 21:54:06 -0700
| Newsgroups | perl.mvs,perl.perl5.porters,perl.daily-build.reports |
|---|---|
| Message-ID | <[email protected]> |
--------------F5B21D8D87337260BC01991E Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable On 12/06/2017 04:21 AM, Yaroslav Kuzmin wrote: > =D0=92 =D0=9F=D0=BD., 04/12/2017 =D0=B2 22:47 -0700, Karl Williamson =D0= =BF=D0=B8=D1=88=D0=B5=D1=82: >> On 12/04/2017 10:03 PM, Yaroslav Kuzmin wrote: >>> >>> >>> Smoke log available https://drive.google.com/file/d/1CwVed6EgFWm29hbi= N50NsNEGZGYw7vkP >> This is looking like it's a problem with the new multi-concat. Attach= ed >> is a test script that is an instrumented version of one of the failing >> tests. Please run it by hand and email the results. >> >> Say you save the attached file as 'foo' >> >> ./perl -I lib foo > foo.out 2>&1 >> >=20 > Log available at https://drive.google.com/file/d/1lVQMTU4FwlGEqecOhMlIy= fwiEkIaa7TP >=20 I asked the multiconcat writer to look at this log, and he has come up=20 with a modified script o that we can drill down closer to the cause. It=20 is attached. Run it just like you did above. Thanks --------------F5B21D8D87337260BC01991E Content-Type: text/plain; charset=UTF-8; name="davem" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="davem" IyFwZXJsIC13CgpCRUdJTiB7CiAgICByZXF1aXJlICdsb2NfdG9vbHMucGwnOyAgICMgQ29u dGFpbnMgbG9jYWxlc19lbmFibGVkKCkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgZmluZF91dGY4X2N0eXBlX2xvY2FsZSgpCn0KCnVzZSBzdHJpY3Q7CnVzZSBUZXN0 OjpNb3JlOwp1c2UgQ29uZmlnOwoKdXNlIFhTOjpBUEl0ZXN0OwoKbXkgJHRhYiA9ICIgIiB4 IDQ7ICAjIEluZGVudCBzdWJzaWRpYXJ5IHRlc3RzIHRoaXMgbXVjaAoKdXNlIFVuaWNvZGU6 OlVDRCBxdyhzZWFyY2hfaW52bGlzdCBwcm9wX2ludm1hcCBwcm9wX2ludmxpc3QpOwpteSAo JGNoYXJuYW1lX2xpc3QsICRjaGFybmFtZV9tYXAsICRmb3JtYXQsICRkZWZhdWx0KSA9IHBy b3BfaW52bWFwKCJOYW1lIEFsaWFzIik7CgpzdWIgZ2V0X2NoYXJuYW1lKCQpIHsKICAgIG15 ICRjcCA9IHNoaWZ0OwoKICAgICMgSWYgdGhlcmUgaXMgYSBhbiBhYmJyZXZpYXRpb24gZm9y IHRoZSBjb2RlIHBvaW50IG5hbWUsIHVzZSBpdAogICAgbXkgJG5hbWVfaW5kZXggPSBzZWFy Y2hfaW52bGlzdChcQHskY2hhcm5hbWVfbGlzdH0sICRjcCk7CiAgICBpZiAoZGVmaW5lZCAk bmFtZV9pbmRleCkgewogICAgICAgIG15ICRzeW5vbnltcyA9ICRjaGFybmFtZV9tYXAtPlsk bmFtZV9pbmRleF07CiAgICAgICAgaWYgKHJlZiAkc3lub255bXMpIHsKICAgICAgICAgICAg bXkgJHBhdCA9IHFyLzogYWJicmV2aWF0aW9uLzsKICAgICAgICAgICAgbXkgQGFiYnJldmlh dGlvbnMgPSBncmVwIHsgJF8gPX4gJHBhdCB9IEAkc3lub255bXM7CiAgICAgICAgICAgIGlm IChAYWJicmV2aWF0aW9ucykgewogICAgICAgICAgICAgICAgcmV0dXJuICRhYmJyZXZpYXRp b25zWzBdID1+IHMvJHBhdC8vcjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAg ICAjIE90aGVyd2lzZSwgdXNlIHRoZSBmdWxsIG5hbWUKICAgIHVzZSBjaGFybmFtZXMgKCk7 CiAgICByZXR1cm4gY2hhcm5hbWVzOjp2aWFjb2RlKCRjcCkgLy8gIk5vIG5hbWUiOwp9Cgpz dWIgdHJ1dGgoJCkgeyAgIyBDb252ZXJ0cyB2YWx1ZXMgc28gaXMoKSB3b3JrcwogICAgcmV0 dXJuIChzaGlmdCkgPyAxIDogMDsKfQoKbXkgJGJhc2VfbG9jYWxlOwpteSAkdXRmOF9sb2Nh bGU7CmlmKGxvY2FsZXNfZW5hYmxlZCgnTENfQUxMJykpIHsKICAgIHJlcXVpcmUgUE9TSVg7 CiAgICAkYmFzZV9sb2NhbGUgPSBQT1NJWDo6c2V0bG9jYWxlKCAmUE9TSVg6OkxDX0FMTCwg IkMiKTsKICAgIGlmIChkZWZpbmVkICRiYXNlX2xvY2FsZSAmJiAkYmFzZV9sb2NhbGUgZXEg J0MnKSB7CiAgICAgICAgdXNlIGxvY2FsZTsgIyBtYWtlIFx3IHdvcmsgcmlnaHQgaW4gbm9u LUFTQ0lJIGxhbmRzCgogICAgICAgICMgU29tZSBsb2NhbGUgaW1wbGVtZW50YXRpb25zIGRv bid0IGhhdmUgdGhlIDEyOC0yNTUgY2hhcmFjdGVycyBhbGwKICAgICAgICAjIG1lYW4gbm90 aGluZy4gIFNraXAgdGhlIGxvY2FsZSB0ZXN0cyBpbiB0aGF0IHNpdHVhdGlvbgogICAgICAg IGZvciBteSAkdSAoMTI4IC4uIDI1NSkgewogICAgICAgICAgICBpZiAoY2hyKHV0Zjg6OnVu aWNvZGVfdG9fbmF0aXZlKCR1KSkgPX4gL1tbOnByaW50Ol1dLykgewogICAgICAgICAgICAg ICAgdW5kZWYgJGJhc2VfbG9jYWxlOwogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAg ICAgfQogICAgICAgIH0KCiAgICAgICAgJHV0ZjhfbG9jYWxlID0gZmluZF91dGY4X2N0eXBl X2xvY2FsZSgpIGlmICRiYXNlX2xvY2FsZTsKICAgIH0KfQoKc3ViIGdldF9kaXNwbGF5X2xv Y2FsZV9vcl9za2lwKCQkKSB7CgogICAgIyBIZWxwZXIgZnVuY3Rpb24gaW50aW1hdGVseSB0 aWVkIHRvIGl0cyBjYWxsZXJzLiAgSXQga25vd3MgdGhlIGxvb3AKICAgICMgaXRlcmF0ZXMg d2l0aCBhIGxvY2FsZSBvZiAiIiwgbWVhbmluZyBkb24ndCB1c2UgbG9jYWxlOyAkYmFzZV9s b2NhbGUKICAgICMgbWVhbmluZyB0byB1c2UgYSBub24tVVRGLTggbG9jYWxlOyBhbmQgJHV0 ZjhfbG9jYWxlLgogICAgIwogICAgIyBJdCBjaGVja3MgdG8gc2VlIGlmIHRoZSBjdXJyZW50 IHRlc3Qgc2hvdWxkIGJlIHNraXBwZWQgb3IgZXhlY3V0ZWQsCiAgICAjIHJldHVybmluZyBh biBlbXB0eSBsaXN0IGZvciB0aGUgZm9ybWVyLCBhbmQgZm9yIHRoZSBsYXR0ZXI6CiAgICAj ICAgKCAnbG9jYWxlIGRpc3BsYXkgbmFtZScsCiAgICAjICAgICBib29sIG9mIGlzIHRoaXMg YSBVVEYtOCBsb2NhbGUgKQogICAgIwogICAgIyBUaGUgZGlzcGxheSBuYW1lIGlzIHRoZSBl bXB0eSBzdHJpbmcgaWYgbm90IHVzaW5nIGxvY2FsZS4gIEZ1bmN0aW9ucwogICAgIyB3aXRo IF9MQyBpbiB0aGVpciBuYW1lIGFyZSBza2lwcGVkIHVubGVzcyBpbiBsb2NhbGUsIGFuZCBm dW5jdGlvbnMKICAgICMgd2l0aG91dCBfTEMgYXJlIGV4ZWN1dGVkIG9ubHkgb3V0c2lkZSBs b2NhbGUuCgogICAgbXkgKCRsb2NhbGUsICRzdWZmaXgpID0gQF87CgogICAgIyBUaGUgdGVz dCBzaG91bGQgYmUgc2tpcHBlZCBpZiB0aGUgaW5wdXQgaXMgZm9yIGEgbm9uLWV4aXN0ZW50 IGxvY2FsZQogICAgcmV0dXJuIHVubGVzcyBkZWZpbmVkICRsb2NhbGU7CgogICAgIyBIZXJl IHRoZSBpbnB1dCBpcyBkZWZpbmVkLCBlaXRoZXIgYSBsb2NhbGUgbmFtZSBvciAiIi4gIElm IHRoZSB0ZXN0IGlzCiAgICAjIGZvciBub3QgdXNpbmcgbG9jYWxlcywgd2Ugd2FudCB0byBk byB0aGUgdGVzdCBmb3Igbm9uLUxDIGZ1bmN0aW9ucywKICAgICMgYW5kIHNraXAgaXQgZm9y IExDIG9uZXMuCiAgICBpZiAoJGxvY2FsZSBlcSAiIikgewogICAgICAgIHJldHVybiAoIiIs IDApIGlmICRzdWZmaXggIX4gL0xDLzsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBI ZXJlIHRoZSBpbnB1dCBpcyBmb3IgYSByZWFsIGxvY2FsZS4gIFdlIGRvbid0IHRlc3QgdGhl IG5vbi1MQyBmdW5jdGlvbnMKICAgICMgZm9yIGxvY2FsZXMuCiAgICByZXR1cm4gaWYgJHN1 ZmZpeCAhfiAvTEMvOwoKICAgICMgSGVyZSBpcyBmb3IgYSBMQyBmdW5jdGlvbiBhbmQgYSBy ZWFsIGxvY2FsZS4gIFRoZSBiYXNlIGxvY2FsZSBpcyBub3QKICAgICMgVVRGLTguCiAgICBy ZXR1cm4gKCIgKCRsb2NhbGUgbG9jYWxlKSIsIDApIGlmICRsb2NhbGUgZXEgJGJhc2VfbG9j YWxlOwoKICAgICMgVGhlIG9ubHkgb3RoZXIgcG9zc2liaWxpdHkgaXMgdGhhdCB3ZSBoYXZl IGEgVVRGLTggbG9jYWxlCiAgICByZXR1cm4gKCIgKCRsb2NhbGUpIiwgMSk7Cn0KCnN1YiB0 cnlfbWFsZm9ybWluZygkJCQpCnsKICAgICMgRGV0ZXJtaW5lcyBpZiB0aGUgdGVzdHMgZm9y IG1hbGZvcm1lZCBVVEYtOCBzaG91bGQgYmUgZG9uZS4gIFdoZW4gZG9uZSwKICAgICMgdGhl IC54cyBjb2RlIGNyZWF0ZXMgbWFsZm9ybWF0aW9ucyBieSBwcmV0ZW5kaW5nIHRoZSBsZW5n dGggaXMgc2hvcnRlcgogICAgIyB0aGFuIGl0IGFjdHVhbGx5IGlzLiAgU29tZSB0aGluZ3Mg Y2FuJ3QgYmUgbWFsZm9ybWVkLCBhbmQgc29tZXRpbWVzIHRoaXMKICAgICMgdGVzdCBrbm93 cyB0aGF0IHRoZSBjdXJyZW50IGNvZGUgZG9lc24ndCBsb29rIGZvciBhIG1hbGZvcm1hdGlv biB1bmRlcgogICAgIyB2YXJpb3VzIGNpcmN1bXN0YW5jZXMuCgogICAgbXkgKCR1LCAkZnVu Y3Rpb24sICR1c2luZ19sb2NhbGUpID0gQF87CiAgICAjICR1IGlzIHVuaWNvZGUgY29kZSBw b2ludDsKCiAgICAjIFNpbmdsZSBieXRlcyBjYW4ndCBiZSBtYWxmb3JtZWQKICAgIHJldHVy biAwIGlmICR1IDwgKChvcmQgIkEiID09IDY1KSA/IDEyOCA6IDE2MCk7CgogICAgIyBBU0NJ SSBkb2Vzbid0IG5lZWQgdG8gZXZlciBsb29rIGJleW9uZCB0aGUgZmlyc3QgYnl0ZS4KICAg IHJldHVybiAwIGlmICRmdW5jdGlvbiBlcSAiQVNDSUkiOwoKICAgICMgTm9yLCBvbiBFQkNE SUMgc3lzdGVtcywgZG9lcyBDTlRSTAogICAgcmV0dXJuIDAgaWYgb3JkICJBIiAhPSA2NSAm JiAkZnVuY3Rpb24gZXEgIkNOVFJMIjsKCiAgICAjIE5vIGNvbnRyb2xzIGFib3ZlIDI1NSwg c28gdGhlIGNvZGUgZG9lc24ndCBsb29rIGF0IHRob3NlCiAgICByZXR1cm4gMCBpZiAkdSA+ IDI1NSAmJiAkZnVuY3Rpb24gZXEgIkNOVFJMIjsKCiAgICAjIE5vIG5vbi1BU0NJSSBkaWdp dHMgYmVsb3cgMjU2LCBleGNlcHQgaWYgdXNpbmcgbG9jYWxlcy4KICAgIHJldHVybiAwIGlm ICR1IDwgMjU2ICYmICEgJHVzaW5nX2xvY2FsZSAmJiAkZnVuY3Rpb24gPX4gL1g/RElHSVQv OwoKICAgIHJldHVybiAxOwp9CgpteSAlcHJvcGVydGllcyA9ICgKICAgICAgICAgICAgICAg ICAgICMgbmFtZSA9PiBMb29rdXAtcHJvcGVydHkgbmFtZQogICAgICAgICAgICAgICAgICAg YWxudW0gPT4gJ1dvcmQnLAogICAgICAgICAgICAgICAgICAgd29yZGNoYXIgPT4gJ1dvcmQn LAogICAgICAgICAgICAgICAgICAgYWxwaGFudW1lcmljID0+ICdBbG51bScsCiAgICAgICAg ICAgICAgICAgICBhbHBoYSA9PiAnWFBvc2l4QWxwaGEnLAogICAgICAgICAgICAgICAgICAg YXNjaWkgPT4gJ0FTQ0lJJywKICAgICAgICAgICAgICAgICAgIGJsYW5rID0+ICdCbGFuaycs CiAgICAgICAgICAgICAgICAgICBjbnRybCA9PiAnQ29udHJvbCcsCiAgICAgICAgICAgICAg ICAgICBkaWdpdCA9PiAnRGlnaXQnLAogICAgICAgICAgICAgICAgICAgZ3JhcGggPT4gJ0dy YXBoJywKICAgICAgICAgICAgICAgICAgIGlkZmlyc3QgPT4gJ19QZXJsX0lEU3RhcnQnLAog ICAgICAgICAgICAgICAgICAgaWRjb250ID0+ICdfUGVybF9JRENvbnQnLAogICAgICAgICAg ICAgICAgICAgbG93ZXIgPT4gJ1hQb3NpeExvd2VyJywKICAgICAgICAgICAgICAgICAgIHBy aW50ID0+ICdQcmludCcsCiAgICAgICAgICAgICAgICAgICBwc3hzcGMgPT4gJ1hQb3NpeFNw YWNlJywKICAgICAgICAgICAgICAgICAgIHB1bmN0ID0+ICdYUG9zaXhQdW5jdCcsCiAgICAg ICAgICAgICAgICAgICBxdW90ZW1ldGEgPT4gJ19QZXJsX1F1b3RlbWV0YScsCiAgICAgICAg ICAgICAgICAgICBzcGFjZSA9PiAnWFBlcmxTcGFjZScsCiAgICAgICAgICAgICAgICAgICB2 ZXJ0d3MgPT4gJ1ZlcnRTcGFjZScsCiAgICAgICAgICAgICAgICAgICB1cHBlciA9PiAnWFBv c2l4VXBwZXInLAogICAgICAgICAgICAgICAgICAgeGRpZ2l0ID0+ICdYRGlnaXQnLAogICAg ICAgICAgICAgICAgKTsKCm15ICVzZWVuOwpteSBAd2FybmluZ3M7CmxvY2FsICRTSUd7X19X QVJOX199ID0gc3ViIHsgcHVzaCBAd2FybmluZ3MsIEBfIH07CgpteSAldXRmOF9wYXJhbV9j b2RlID0gKAogICAgICAgICAgICAgICAgICAgICAgICAiX3NhZmUiICAgICAgICAgICAgICAg ICA9PiAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgIl9zYWZlLCBtYWxmb3JtZWQiICAg ICAgPT4gIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICJkZXByZWNhdGVkIHVuc2FmZSIg ICAgID0+IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAiZGVwcmVjYXRlZCBtYXRob21z IiAgICA9PiAtMiwKICAgICAgICAgICAgICAgICAgICAgICk7CgojIFRoaXMgdGVzdCBpcyBz cGxpdCBpbnRvIHRoaXMgbnVtYmVyIG9mIGZpbGVzLgpteSAkbnVtX3Rlc3RfZmlsZXMgPSAk RU5We1RFU1RfSk9CU30gfHwgMTsKJG51bV90ZXN0X2ZpbGVzID0gMTAgaWYgJG51bV90ZXN0 X2ZpbGVzID4gMTA7CgpteSAkcHJvcGVydHlfY291bnQgPSAtMTsKZm9yZWFjaCBteSAkbmFt ZSAoc29ydCBrZXlzICVwcm9wZXJ0aWVzLCAnb2N0YWwnKSB7CgogICAgIyBXZSB0ZXN0IGV2 ZXJ5IG50aCBwcm9wZXJ0eSBpbiB0aGlzIHJ1biBzbyB0aGF0IHRoaXMgdGVzdCBpcyBzcGxp dCBpbnRvCiAgICAjIHNtYWxsZXIgY2h1bmtzIHRvIG1pbmltaXplIHRlc3Qgc3VpdGUgZWxh cHNlZCB0aW1lIHdoZW4gcnVuIGluIHBhcmFsbGVsLgogICAgJHByb3BlcnR5X2NvdW50Kys7 CiAgICBuZXh0IGlmICRwcm9wZXJ0eV9jb3VudCAlICRudW1fdGVzdF9maWxlcyAhPSAkOjpU RVNUX0NIVU5LOwoKICAgIG15IEBpbnZsaXN0OwogICAgaWYgKCRuYW1lIGVxICdvY3RhbCcp IHsKICAgICAgICAjIEhhbmQtcm9sbCBhbiBpbnZlcnNpb24gbGlzdCB3aXRoIDAtNyBpbiBp dCBhbmQgbm90aGluZyBlbHNlLgogICAgICAgIHB1c2ggQGludmxpc3QsIG9yZCAiMCIsIG9y ZCAiOCI7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBteSAkcHJvcGVydHkgPSAkcHJvcGVy dGllc3skbmFtZX07CiAgICAgICAgQGludmxpc3QgPSBwcm9wX2ludmxpc3QoJHByb3BlcnR5 LCAnX3BlcmxfY29yZV9pbnRlcm5hbF9vaycpOwogICAgICAgIGlmICghIEBpbnZsaXN0KSB7 CgogICAgICAgICAgICAjIEFuIGVtcHR5IHJldHVybiBjb3VsZCBtZWFuIGFuIHVua25vd24g cHJvcGVydHksIG9yIG1lcmVseSB0aGF0CiAgICAgICAgICAgICMgaXQgaXMgZW1wdHkuICBD YWxsIGluIHNjYWxhciBjb250ZXh0IHRvIGRpZmZlcmVudGlhdGUKICAgICAgICAgICAgaWYg KCEgcHJvcF9pbnZsaXN0KCRwcm9wZXJ0eSwgJ19wZXJsX2NvcmVfaW50ZXJuYWxfb2snKSkg ewogICAgICAgICAgICAgICAgZmFpbCgiTm8gaW52ZXJzaW9uIGxpc3QgZm91bmQgZm9yICRw cm9wZXJ0eSIpOwogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQogICAgICAg IH0KICAgIH0KCiAgICAjIEluY2x1ZGUgYWxsIHRoZSBMYXRpbjEgY29kZSBwb2ludHMsIHBs dXMgMHgxMDAuCiAgICBteSBAY29kZV9wb2ludHMgPSAoMCAuLiAyNTYpOwoKICAgICMgVGhl biBpbmNsdWRlIHRoZSBuZXh0IGZldyBib3VuZGFyaWVzIGFib3ZlIHRob3NlIGZyb20gdGhp cyBwcm9wZXJ0eQogICAgbXkgJGFib3ZlX2xhdGlucyA9IDA7CiAgICBmb3JlYWNoIG15ICRy YW5nZV9zdGFydCAoQGludmxpc3QpIHsKICAgICAgICBuZXh0IGlmICRyYW5nZV9zdGFydCA8 IDI1NzsKICAgICAgICBwdXNoIEBjb2RlX3BvaW50cywgJHJhbmdlX3N0YXJ0IC0gMSwgJHJh bmdlX3N0YXJ0OwogICAgICAgICRhYm92ZV9sYXRpbnMrKzsKICAgICAgICBsYXN0IGlmICRh Ym92ZV9sYXRpbnMgPiA1OwogICAgfQoKICAgICMgVGhpcyBtYWtlcyBzdXJlIHdlIGFyZSB1 c2luZyB0aGUgUGVybCBkZWZpbml0aW9uIG9mIGlkZmlyc3QgYW5kIGlkY29udCwKICAgICMg YW5kIG5vdCB0aGUgVW5pY29kZS4gIFRoZXJlIGFyZSBhIGZldyBkaWZmZXJlbmNlcy4KICAg IHB1c2ggQGNvZGVfcG9pbnRzLCBvcmQgIlxOe0VTVElNQVRFRCBTWU1CT0x9IiBpZiAkbmFt ZSA9fiAvXmlkKGZpcnN0fGNvbnQpLzsKICAgIGlmICgkbmFtZSBlcSAiaWRjb250IikgeyAg ICAjIEFuZCBzb21lIHRoYXQgYXJlIGNvbnRpbnVhdGlvbiBidXQgbm90IHN0YXJ0CiAgICAg ICAgcHVzaCBAY29kZV9wb2ludHMsIG9yZCgiXE57R1JFRUsgQU5PIFRFTEVJQX0iKSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgb3JkKCJcTntDT01CSU5JTkcgR1JBVkUgQUNDRU5U fSIpOwogICAgfQoKICAgICMgQW5kIGZpbmFsbHkgb25lIG5vbi1Vbmljb2RlIGNvZGUgcG9p bnQuCiAgICBwdXNoIEBjb2RlX3BvaW50cywgMHgxMTAwMDA7ICAgICMgQWJvdmUgVW5pY29k ZSwgbm8gcHJvcCBzaG91bGQgbWF0Y2gKICAgIG5vIHdhcm5pbmdzICdub25fdW5pY29kZSc7 CgogICAgZm9yIG15ICRuIChAY29kZV9wb2ludHMpIHsKICAgICAgICBteSAkdSA9IHV0Zjg6 Om5hdGl2ZV90b191bmljb2RlKCRuKTsKICAgICAgICBteSAkZnVuY3Rpb24gPSB1YygkbmFt ZSk7CgogICAgICAgIGlzIChAd2FybmluZ3MsIDAsICJHb3Qgbm8gdW5leHBlY3RlZCB3YXJu aW5ncyBpbiBwcmV2aW91cyBpdGVyYXRpb24iKQogICAgICAgICAgIG9yIGRpYWcoIkB3YXJu aW5ncyIpOwogICAgICAgIHVuZGVmIEB3YXJuaW5nczsKCiAgICAgICAgbXkgJG1hdGNoZXMg PSBzZWFyY2hfaW52bGlzdChcQGludmxpc3QsICRuKTsKICAgICAgICBpZiAoISBkZWZpbmVk ICRtYXRjaGVzKSB7CiAgICAgICAgICAgICRtYXRjaGVzID0gMDsKICAgICAgICB9CiAgICAg ICAgZWxzZSB7CiAgICAgICAgICAgICRtYXRjaGVzID0gdHJ1dGgoISAoJG1hdGNoZXMgJSAy KSk7CiAgICAgICAgfQoKICAgICAgICBteSAkcmV0OwogICAgICAgIG15ICRjaGFyX25hbWUg PSBnZXRfY2hhcm5hbWUoJG4pOwogICAgICAgIG15ICRkaXNwbGF5X25hbWUgPSBzcHJpbnRm ICJcXHh7JTAyWCwgJXN9IiwgJG4sICRjaGFyX25hbWU7CiAgICAgICAgbXkgJGRpc3BsYXlf Y2FsbCA9ICJpcyR7ZnVuY3Rpb259KCAkZGlzcGxheV9uYW1lICkiOwoKICAgICAgICBmb3Jl YWNoIG15ICRzdWZmaXggKCIiLCAiX0EiLCAiX0wxIiwgIl9MQyIsICJfdW5pIiwgIl91dmNo ciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX0xDX3V2Y2hyIiwgIl91dGY4Iiwg Il9MQ191dGY4IikKICAgICAgICB7CgogICAgICAgICAgICAjIE5vdCBhbGwgcG9zc2libGUg bWFjcm9zIGhhdmUgYmVlbiBkZWZpbmVkCiAgICAgICAgICAgIGlmICgkbmFtZSBlcSAndmVy dHdzJykgewoKICAgICAgICAgICAgICAgICMgdmVydHdzIGlzIGFsd2F5cyBhbGwgb2YgVW5p Y29kZQogICAgICAgICAgICAgICAgbmV4dCBpZiAkc3VmZml4ICF+IC8gXiBfICggdW5pIHwg dXZjaHIgfCB1dGY4ICkgJCAveDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAo JG5hbWUgZXEgJ2FsbnVtJykgewoKICAgICAgICAgICAgICAgICMgQUxOVU1fQSwgQUxOVU1f TDEsIGFuZCBBTE5VTV91dmNociBhcmUgbm90IGRlZmluZWQgYXMgdGhlc2UKICAgICAgICAg ICAgICAgICMgc3VmZml4ZXMgd2VyZSBhZGRlZCBsYXRlciwgYWZ0ZXIgV09SRENIQVIgd2Fz IGNyZWF0ZWQgdG8gYmUKICAgICAgICAgICAgICAgICMgYSBjbGVhcmVyIHN5bm9ueW0gZm9y IEFMTlVNCiAgICAgICAgICAgICAgICBuZXh0IGlmICAgICRzdWZmaXggZXEgJ19BJwogICAg ICAgICAgICAgICAgICAgICAgICB8fCAkc3VmZml4IGVxICdfTDEnCiAgICAgICAgICAgICAg ICAgICAgICAgIHx8ICRzdWZmaXggZXEgJ191dmNocic7CiAgICAgICAgICAgIH0KICAgICAg ICAgICAgZWxzaWYgKCRuYW1lIGVxICdvY3RhbCcpIHsKICAgICAgICAgICAgICAgIG5leHQg aWYgJHN1ZmZpeCBuZSAiIiAgJiYgJHN1ZmZpeCBuZSAnX0EnICYmICRzdWZmaXggbmUgJ19M MSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCRuYW1lIGVxICdxdW90ZW1l dGEnKSB7CiAgICAgICAgICAgICAgICAjIFRoZXJlIGlzIG9ubHkgb25lIG1hY3JvIGZvciB0 aGlzLCBhbmQgaXMgZGVmaW5lZCBvbmx5IGZvcgogICAgICAgICAgICAgICAgIyBMYXRpbjEg cmFuZ2UKICAgICAgICAgICAgICAgIG5leHQgaWYgJHN1ZmZpeCBuZSAiIgogICAgICAgICAg ICB9CgogICAgICAgICAgICBmb3JlYWNoIG15ICRsb2NhbGUgKCIiLCAkYmFzZV9sb2NhbGUs ICR1dGY4X2xvY2FsZSkgewoKICAgICAgICAgICAgICAgIG15ICgkZGlzcGxheV9sb2NhbGUs ICRsb2NhbGVfaXNfdXRmOCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGdl dF9kaXNwbGF5X2xvY2FsZV9vcl9za2lwKCRsb2NhbGUsICRzdWZmaXgpOwogICAgICAgICAg ICAgICAgbmV4dCB1bmxlc3MgZGVmaW5lZCAkZGlzcGxheV9sb2NhbGU7CgogICAgICAgICAg ICAgICAgdXNlIGlmICRsb2NhbGUsICJsb2NhbGUiOwogICAgICAgICAgICAgICAgUE9TSVg6 OnNldGxvY2FsZSggJlBPU0lYOjpMQ19BTEwsICRsb2NhbGUpIGlmICRsb2NhbGU7CgogICAg ICAgICAgICAgICAgaWYgKCRzdWZmaXggIX4gL3V0ZjgvKSB7ICAgICMgX3V0ZjggaGFzIHRv IGhhbmRsZWQgc3BlY2lhbGx5CiAgICAgICAgICAgICAgICAgICAgbXkgJGRpc3BsYXlfY2Fs bAogICAgICAgICAgICAgICAgICAgICAgID0gImlzJHtmdW5jdGlvbn0kc3VmZml4KCAkZGlz cGxheV9uYW1lICkkZGlzcGxheV9sb2NhbGUiOwogICAgICAgICAgICAgICAgICAgICRyZXQg PSB0cnV0aCBldmFsICJ0ZXN0X2lzJHtmdW5jdGlvbn0kc3VmZml4KCRuKSI7CiAgICAgICAg ICAgICAgICAgICAgaWYgKGlzICgkQCwgIiIsICIkZGlzcGxheV9jYWxsIGRpZG4ndCBnaXZl IGVycm9yIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHRydXRoID0gJG1hdGNo ZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdHJ1dGgpIHsKCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIFRoZSBzaW5nbGUgYnl0ZSBmdW5jdGlvbnMgYXJlIGZhbHNl IGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhYm92ZS1MYXRpbjEKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmICgkbiA+PSAyNTYpIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAkdHJ1dGggPSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAkc3VmZml4PX4gLyBeICggX0EgfCBfTCBbMUNdICk/ICQgL3g7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbHNpZiAoICAgJHUgPj0gMTI4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJiYgJG5hbWUgbmUgJ3F1b3RlbWV0YScpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlIG5vLXN1ZmZp eCBhbmQgX0EgZnVuY3Rpb25zIGFyZSBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgZm9yIG5vbi1BU0NJSS4gIFNvIGFyZSAgX0xDICBmdW5jdGlvbnMgb24gYQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm9uLVVURi04IGxvY2FsZQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0cnV0aCA9IDAgaWYgICAgJHN1ZmZpeCBl cSAiX0EiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 fCAkc3VmZml4IGVxICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8fCAoICAgICAkc3VmZml4ID1+IC9MQy8KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhICRsb2NhbGVfaXNfdXRmOCk7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0K CiAgICAgICAgICAgICAgICAgICAgICAgIGlzICgkcmV0LCAkdHJ1dGgsICIke3RhYn1BbmQg Y29ycmVjdGx5IHJldHVybnMgJHRydXRoIik7CiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7ICAjIF91dGY4IHN1ZmZpeAog ICAgICAgICAgICAgICAgICAgIG15ICRjaGFyID0gY2hyKCRuKTsKICAgICAgICAgICAgICAg ICAgICB1dGY4Ojp1cGdyYWRlKCRjaGFyKTsKICAgICAgICAgICAgICAgICAgICAkY2hhciA9 IHF1b3RlbWV0YSAkY2hhciBpZiAkY2hhciBlcSAnXFwnIHx8ICRjaGFyIGVxICInIjsKICAg ICAgICAgICAgICAgICAgICBteSAkdHJ1dGg7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAg ICRzdWZmaXggPX4gL0xDLwogICAgICAgICAgICAgICAgICAgICAgICAmJiAhICRsb2NhbGVf aXNfdXRmOAogICAgICAgICAgICAgICAgICAgICAgICAmJiAkbiA8IDI1NgogICAgICAgICAg ICAgICAgICAgICAgICAmJiAkdSA+PSAxMjgpCiAgICAgICAgICAgICAgICAgICAgeyAgICMg VGhlIEMtbG9jYWxlIF9MQyBmdW5jdGlvbiByZXR1cm5zIEZBTFNFIGZvciBMYXRpbjEKICAg ICAgICAgICAgICAgICAgICAgICAgIyBhYm92ZSBBU0NJSQogICAgICAgICAgICAgICAgICAg ICAgICAkdHJ1dGggPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRydXRoID0gJG1hdGNoZXM7 CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIG15 ICR1dGY4X3BhcmFtKCJfc2FmZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiX3NhZmUsIG1hbGZvcm1lZCIsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiZGVwcmVjYXRlZCB1bnNhZmUiCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgIG15ICR1dGY4X3BhcmFtX2NvZGUgPSAkdXRmOF9wYXJh bV9jb2RleyR1dGY4X3BhcmFtfTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGV4cGVj dF9lcnJvciA9ICR1dGY4X3BhcmFtX2NvZGUgPiAwOwogICAgICAgICAgICAgICAgICAgICAg ICBuZXh0IGlmICAgICAgJGV4cGVjdF9lcnJvcgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICYmICEgdHJ5X21hbGZvcm1pbmcoJHUsICRmdW5jdGlvbiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdWZmaXggPX4gL0xD Lyk7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRkaXNwbGF5X2NhbGwgPSAiaXMke2Z1 bmN0aW9ufSRzdWZmaXgoICRkaXNwbGF5X25hbWUiCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLiAiLCAkdXRmOF9wYXJhbSApJGRpc3BsYXlfbG9jYWxlIjsK ICAgICAgICAgICAgICAgICAgICAgICAgJHJldCA9IHRydXRoIGV2YWwgInRlc3RfaXMke2Z1 bmN0aW9ufSRzdWZmaXgoJyRjaGFyJywiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAuICIgJHV0ZjhfcGFyYW1fY29kZSkiOwogICAgICAgICAgICAgICAgICAg ICAgICBpZiAoJGV4cGVjdF9lcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg aXNudCAoJEAsICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhw ZWN0ZWQgYW5kIGdvdCBlcnJvciBpbiAkZGlzcGxheV9jYWxsIik7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsaWtlKCRALCBxci9NYWxmb3JtZWQgVVRGLTggY2hhcmFjdGVyLywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJHt0YWJ9QW5kIGdvdCBleHBlY3Rl ZCBtZXNzYWdlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXMgKEB3YXJu aW5ncywgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIk e3RhYn1Hb3QgYSBzaW5nbGUgd2FybmluZyBiZXNpZGVzIikpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlrZSgkd2Fy bmluZ3NbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxci9NYWxm b3JtZWQgVVRGLTggY2hhcmFjdGVyLipzaG9ydC8sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiJHt0YWJ9R290IGV4cGVjdGVkIHdhcm5pbmciKTsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ug ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWcoIkB3YXJuaW5ncyIpOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5kZWYgQHdhcm5pbmdzOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgICAgICAgIGVsc2lmIChpcyAoJEAsICIiLCAiJGRpc3BsYXlfY2FsbCBkaWRu J3QgZ2l2ZSBlcnJvciIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyAoJHJl dCwgJHRydXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIke3RhYn1BbmQg Y29ycmVjdGx5IHJldHVybmVkICR0cnV0aCIpOwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKCR1dGY4X3BhcmFtX2NvZGUgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbXkgJHdhcm5pbmdzX29rOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG15ICR1bmlxdWVfZnVuY3Rpb24gPSAiaXMiIC4gJGZ1bmN0aW9uIC4gJHN1ZmZpeDsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISAkc2VlbnskdW5pcXVlX2Z1 bmN0aW9ufSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3YXJu aW5nc19vayA9IGlzKEB3YXJuaW5ncywgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICIke3RhYn1UaGlzIGlzIGZpcnN0IGNhbGwgdG8iCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiICR1bmlxdWVfZnVuY3Rpb247IEdvdCBh IHNpbmdsZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICIgd2Fy bmluZyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHdhcm5p bmdzX29rKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2Fy bmluZ3Nfb2sgPSBsaWtlKCR3YXJuaW5nc1swXSwKICAgICAgICAgICAgICAgIHFyL3N0YXJ0 aW5nIGluIFBlcmwgLiogd2lsbCByZXF1aXJlIGFuIGFkZGl0aW9uYWwgcGFyYW1ldGVyLywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJHt0YWJ9VGhl IHdhcm5pbmcgd2FzIHRoZSBleHBlY3RlZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLiAiIGRlcHJlY2F0aW9uIG9uZSIpOwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAkd2FybmluZ3Nfb2sgPSBpcyhAd2FybmluZ3MsIDAs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJHt0YWJ9VGhpcyBz dWJzZXF1ZW50IGNhbGwgdG8iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLiAiICR1bmlxdWVfZnVuY3Rpb24gZGlkIG5vdCB3YXJuIik7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3 YXJuaW5nc19vayBvciBkaWFnKCJAd2FybmluZ3MiKTsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bmRlZiBAd2FybmluZ3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCm15ICV0 b19wcm9wZXJ0aWVzID0gKAogICAgICAgICAgICAgICAgRk9MRCAgPT4gJ0Nhc2VfRm9sZGlu ZycsCiAgICAgICAgICAgICAgICBMT1dFUiA9PiAnTG93ZXJjYXNlX01hcHBpbmcnLAogICAg ICAgICAgICAgICAgVElUTEUgPT4gJ1RpdGxlY2FzZV9NYXBwaW5nJywKICAgICAgICAgICAg ICAgIFVQUEVSID0+ICdVcHBlcmNhc2VfTWFwcGluZycsCiAgICAgICAgICAgICk7CgokcHJv cGVydHlfY291bnQgPSAtMTsKZm9yZWFjaCBteSAkbmFtZSAoc29ydCBrZXlzICV0b19wcm9w ZXJ0aWVzKSB7CgogICAgJHByb3BlcnR5X2NvdW50Kys7CiAgICBuZXh0IGlmICRwcm9wZXJ0 eV9jb3VudCAlICRudW1fdGVzdF9maWxlcyAhPSAkOjpURVNUX0NIVU5LOwoKICAgIG15ICRw cm9wZXJ0eSA9ICR0b19wcm9wZXJ0aWVzeyRuYW1lfTsKICAgIG15ICgkbGlzdF9yZWYsICRt YXBfcmVmLCAkZm9ybWF0LCAkbWlzc2luZykKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA9IHByb3BfaW52bWFwKCRwcm9wZXJ0eSwgKTsKICAgIGlmICghICRsaXN0 X3JlZiB8fCAhICRtYXBfcmVmKSB7CiAgICAgICAgZmFpbCgiTm8gaW52ZXJzaW9uIG1hcCBm b3VuZCBmb3IgJHByb3BlcnR5Iik7CiAgICAgICAgbmV4dDsKICAgIH0KICAgIGlmICgkZm9y bWF0ICF+IC8gXiBhIGw/ICQgL3gpIHsKICAgICAgICBmYWlsKCJVbmV4cGVjdGVkIGludmVy c2lvbiBtYXAgZm9ybWF0ICgnJGZvcm1hdCcpIGZvdW5kIGZvciAkcHJvcGVydHkiKTsKICAg ICAgICBuZXh0OwogICAgfQoKICAgICMgSW5jbHVkZSBhbGwgdGhlIExhdGluMSBjb2RlIHBv aW50cywgcGx1cyAweDEwMC4KICAgIG15IEBjb2RlX3BvaW50cyA9ICgwIC4uIDI1Nik7Cgog ICAgIyBUaGVuIGluY2x1ZGUgdGhlIG5leHQgZmV3IG11bHRpLWNoYXIgZm9sZHMgYWJvdmUg dGhvc2UgZnJvbSB0aGlzCiAgICAjIHByb3BlcnR5LCBhbmQgaW5jbHVkZSB0aGUgbmV4dCBm ZXcgc2luZ2xlIGZvbGRzIGFzIHdlbGwKICAgIG15ICRhYm92ZV9sYXRpbnMgPSAwOwogICAg bXkgJG11bHRpX2NoYXIgPSAwOwogICAgZm9yIG15ICRpICgwIC4uIEB7JGxpc3RfcmVmfSAt IDEpIHsKICAgICAgICBteSAkcmFuZ2Vfc3RhcnQgPSAkbGlzdF9yZWYtPlskaV07CiAgICAg ICAgbmV4dCBpZiAkcmFuZ2Vfc3RhcnQgPCAyNTc7CiAgICAgICAgaWYgKHJlZiAkbWFwX3Jl Zi0+WyRpXSAmJiAkbXVsdGlfY2hhciA8IDUpICB7CiAgICAgICAgICAgIHB1c2ggQGNvZGVf cG9pbnRzLCAkcmFuZ2Vfc3RhcnQgLSAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAkY29kZV9wb2ludHNbLTFdICE9ICRyYW5nZV9zdGFydCAtIDE7CiAg ICAgICAgICAgIHB1c2ggQGNvZGVfcG9pbnRzLCAkcmFuZ2Vfc3RhcnQ7CiAgICAgICAgICAg ICRtdWx0aV9jaGFyKys7CiAgICAgICAgfQogICAgICAgIGVsc2lmICgkYWJvdmVfbGF0aW5z IDwgNSkgewogICAgICAgICAgICBwdXNoIEBjb2RlX3BvaW50cywgJHJhbmdlX3N0YXJ0IC0g MQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJGNvZGVfcG9p bnRzWy0xXSAhPSAkcmFuZ2Vfc3RhcnQgLSAxOwogICAgICAgICAgICBwdXNoIEBjb2RlX3Bv aW50cywgJHJhbmdlX3N0YXJ0OwogICAgICAgICAgICAkYWJvdmVfbGF0aW5zKys7CiAgICAg ICAgfQogICAgICAgIGxhc3QgaWYgJGFib3ZlX2xhdGlucyA+PSA1ICYmICRtdWx0aV9jaGFy ID49IDU7CiAgICB9CgogICAgIyBBbmQgZmluYWxseSBvbmUgbm9uLVVuaWNvZGUgY29kZSBw b2ludC4KICAgIHB1c2ggQGNvZGVfcG9pbnRzLCAweDExMDAwMDsgICAgIyBBYm92ZSBVbmlj b2RlLCBubyBwcm9wIHNob3VsZCBtYXRjaAogICAgbm8gd2FybmluZ3MgJ25vbl91bmljb2Rl JzsKCiAgICAjICRuIGlzIG5hdGl2ZTsgJHUgdW5pY29kZS4KICAgIGZvciBteSAkbiAoQGNv ZGVfcG9pbnRzKSB7CiAgICAgICAgbXkgJHUgPSB1dGY4OjpuYXRpdmVfdG9fdW5pY29kZSgk bik7CiAgICAgICAgbXkgJGZ1bmN0aW9uID0gJG5hbWU7CgogICAgICAgIG15ICRpbmRleCA9 IHNlYXJjaF9pbnZsaXN0KFxAeyRsaXN0X3JlZn0sICRuKTsKCiAgICAgICAgbXkgJHJldDsK ICAgICAgICBteSAkY2hhcl9uYW1lID0gZ2V0X2NoYXJuYW1lKCRuKTsKICAgICAgICBteSAk ZGlzcGxheV9uYW1lID0gc3ByaW50ZiAiXFxOe1UrJTAyWCwgJXN9IiwgJG4sICRjaGFyX25h bWU7CgogICAgICAgIGZvcmVhY2ggbXkgJHN1ZmZpeCAoIiIsICJfTDEiLCAiX0xDIikgewoK ICAgICAgICAgICAgIyBUaGlzIGlzIHRoZSBvbmx5IG1hY3JvIGRlZmluZWQgZm9yIEwxCiAg ICAgICAgICAgIG5leHQgaWYgJHN1ZmZpeCBlcSAiX0wxIiAmJiAkZnVuY3Rpb24gbmUgIkxP V0VSIjsKCiAgICAgICAgICBTS0lQOgogICAgICAgICAgICBmb3JlYWNoIG15ICRsb2NhbGUg KCIiLCAkYmFzZV9sb2NhbGUsICR1dGY4X2xvY2FsZSkgewoKICAgICAgICAgICAgICAgICMg dGl0bGVjYXNlIGlzIG5vdCBkZWZpbmVkIGluIGxvY2FsZXMuCiAgICAgICAgICAgICAgICBu ZXh0IGlmICRuYW1lIGVxICdUSVRMRScgJiYgJHN1ZmZpeCBlcSAiX0xDIjsKCiAgICAgICAg ICAgICAgICBteSAoJGRpc3BsYXlfbG9jYWxlLCAkbG9jYWxlX2lzX3V0ZjgpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPSBnZXRfZGlzcGxheV9sb2NhbGVfb3Jfc2tpcCgk bG9jYWxlLCAkc3VmZml4KTsKICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIGRlZmluZWQg JGRpc3BsYXlfbG9jYWxlOwoKICAgICAgICAgICAgICAgIHNraXAoInRvJHtuYW1lfV9MQyBk b2VzIG5vdCB3b3JrIGZvciBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUyIKICAgICAgICAg ICAgICAgICAgLiAiJGRpc3BsYXlfbG9jYWxlIiwgMSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmICAkdSA9PSAweERGICYmICRuYW1lID1+IC8gRk9MRCB8IFVQUEVSIC94CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHN1ZmZpeCBlcSAiX0xDIiAmJiAkbG9j YWxlX2lzX3V0Zjg7CgogICAgICAgICAgICAgICAgdXNlIGlmICRsb2NhbGUsICJsb2NhbGUi OwogICAgICAgICAgICAgICAgUE9TSVg6OnNldGxvY2FsZSggJlBPU0lYOjpMQ19BTEwsICRs b2NhbGUpIGlmICRsb2NhbGU7CgogICAgICAgICAgICAgICAgbXkgJGRpc3BsYXlfY2FsbCA9 ICJ0byR7ZnVuY3Rpb259JHN1ZmZpeCgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC4gIiAkZGlzcGxheV9uYW1lICkkZGlzcGxheV9sb2NhbGUiOwogICAgICAgICAgICAg ICAgJHJldCA9IGV2YWwgInRlc3RfdG8ke2Z1bmN0aW9ufSRzdWZmaXgoJG4pIjsKICAgICAg ICAgICAgICAgIGlmIChpcyAoJEAsICIiLCAiJGRpc3BsYXlfY2FsbCBkaWRuJ3QgZ2l2ZSBl cnJvciIpKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJHNob3VsZF9iZTsKICAgICAgICAg ICAgICAgICAgICBpZiAoJG4gPiAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNo b3VsZF9iZSA9ICRuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg ICBlbHNpZiAoICAgICAkdSA+IDEyNwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYg KCAgICRzdWZmaXggZXEgIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAo JHN1ZmZpeCBlcSAiX0xDIiAmJiAhICRsb2NhbGVfaXNfdXRmOCkpKQogICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNob3VsZF9iZSA9ICRuOwogICAg ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoJG1hcF9yZWYt PlskaW5kZXhdICE9ICRtaXNzaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzaG91 bGRfYmUgPSAkbWFwX3JlZi0+WyRpbmRleF0gKyAkbiAtICRsaXN0X3JlZi0+WyRpbmRleF0K ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAg ICAgICAgICAgICAgICAgICAgICRzaG91bGRfYmUgPSAkbjsKICAgICAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgICAgIGlzICgkcmV0LCAkc2hvdWxkX2JlLAogICAgICAg ICAgICAgICAgICAgICAgICBzcHJpbnRmKCIke3RhYn1BbmQgY29ycmVjdGx5IHJldHVybmVk IDB4JTAyWCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJHNob3VsZF9iZSkpOwogICAgICAgICAgICAgICAgfQogICAg ICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFRoZSBfdW5pLCB1dmNociwgYW5kIF91 dGY4IGZ1bmN0aW9ucyByZXR1cm4gYm90aCB0aGUgb3JkaW5hbCBvZiB0aGUKICAgICAgICAj IGZpcnN0IGNvZGUgcG9pbnQgb2YgdGhlIHJlc3VsdCwgYW5kIHRoZSByZXN1bHQgaW4gdXRm OC4gIFRoZSAueHMKICAgICAgICAjIHRlc3RzIHJldHVybiB0aGVzZSBpbiBhbiBhcnJheSwg aW4gWzBdIGFuZCBbMV0gcmVzcGVjdGl2ZWx5LCB3aXRoCiAgICAgICAgIyBbMl0gdGhlIGxl bmd0aCBvZiB0aGUgdXRmOCBpbiBieXRlcy4KICAgICAgICBteSAkdXRmOF9zaG91bGRfYmUg PSAiIjsKICAgICAgICBteSAkZmlyc3Rfb3JkX3Nob3VsZF9iZTsKICAgICAgICBpZiAocmVm ICRtYXBfcmVmLT5bJGluZGV4XSkgeyAgICMgQSBtdWx0aS1jaGFyIHJlc3VsdAogICAgICAg ICAgICBmb3IgbXkgJG4gKDAgLi4gQHskbWFwX3JlZi0+WyRpbmRleF19IC0gMSkgewogICAg ICAgICAgICAgICAgJHV0Zjhfc2hvdWxkX2JlIC49IGNociAkbWFwX3JlZi0+WyRpbmRleF1b JG5dOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZmlyc3Rfb3JkX3Nob3VsZF9iZSA9 ICRtYXBfcmVmLT5bJGluZGV4XVswXTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7ICAjIEEg c2luZ2xlLWNoYXIgcmVzdWx0CiAgICAgICAgICAgICRmaXJzdF9vcmRfc2hvdWxkX2JlID0g KCRtYXBfcmVmLT5bJGluZGV4XSAhPSAkbWlzc2luZykKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPyAkbWFwX3JlZi0+WyRpbmRleF0gKyAkbgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtICRsaXN0X3Jl Zi0+WyRpbmRleF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkbjsK ICAgICAgICAgICAgJHV0Zjhfc2hvdWxkX2JlID0gY2hyICRmaXJzdF9vcmRfc2hvdWxkX2Jl OwogICAgICAgIH0KICAgICAgICB1dGY4Ojp1cGdyYWRlKCR1dGY4X3Nob3VsZF9iZSk7Cgog ICAgICAgICMgVGVzdCBfdW5pLCB1dmNocgogICAgICAgIGZvcmVhY2ggbXkgJHN1ZmZpeCAo J191bmknLCAnX3V2Y2hyJykgewogICAgICAgICAgICBteSAkczsKICAgICAgICAgICAgbXkg JGxlbjsKICAgICAgICAgICAgbXkgJGRpc3BsYXlfY2FsbCA9ICJ0byR7ZnVuY3Rpb259JHN1 ZmZpeCggJGRpc3BsYXlfbmFtZSApIjsKICAgICAgICAgICAgJHJldCA9IGV2YWwgInRlc3Rf dG8ke2Z1bmN0aW9ufSRzdWZmaXgoJG4pIjsKICAgICAgICAgICAgaWYgKGlzICgkQCwgIiIs ICIkZGlzcGxheV9jYWxsIGRpZG4ndCBnaXZlIGVycm9yIikpIHsKICAgICAgICAgICAgICAg IGlzICgkcmV0LT5bMF0sICRmaXJzdF9vcmRfc2hvdWxkX2JlLAogICAgICAgICAgICAgICAg ICAgIHNwcmludGYoIiR7dGFifUFuZCBjb3JyZWN0bHkgcmV0dXJuZWQgMHglMDJYIiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaXJz dF9vcmRfc2hvdWxkX2JlKSk7CiAgICAgICAgICAgICAgICBpcyAoJHJldC0+WzFdLCAkdXRm OF9zaG91bGRfYmUsICIke3RhYn1Hb3QgY29ycmVjdCB1dGY4Iik7CiAgICAgICAgICAgICAg ICB1c2UgYnl0ZXM7CiAgICAgICAgICAgICAgICBpcyAoJHJldC0+WzJdLCBsZW5ndGggJHV0 Zjhfc2hvdWxkX2JlLAogICAgICAgICAgICAgICAgICAgICIke3RhYn1Hb3QgY29ycmVjdCBu dW1iZXIgb2YgYnl0ZXMgZm9yIHV0ZjggbGVuZ3RoIik7CiAgICAgICAgICAgIH0KICAgICAg ICB9CgogICAgICAgICMgVGVzdCBfdXRmOAogICAgICAgIG15ICRjaGFyID0gY2hyKCRuKTsK ICAgICAgICB1dGY4Ojp1cGdyYWRlKCRjaGFyKTsKICAgICAgICAkY2hhciA9IHF1b3RlbWV0 YSAkY2hhciBpZiAkY2hhciBlcSAnXFwnIHx8ICRjaGFyIGVxICInIjsKICAgICAgICBmb3Jl YWNoIG15ICR1dGY4X3BhcmFtKCJfc2FmZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIl9zYWZlLCBtYWxmb3JtZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJkZXByZWNhdGVkIHVuc2FmZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImRlcHJlY2F0ZWQgbWF0aG9tcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKQogICAgICAgIHsKICAgICAgICAgICAgdXNlIENvbmZpZzsKICAgICAgICAgICAgbmV4 dCBpZiAgICAkdXRmOF9wYXJhbSBlcSAnZGVwcmVjYXRlZCBtYXRob21zJwogICAgICAgICAg ICAgICAgICAgICYmICRDb25maWd7J2NjZmxhZ3MnfSA9fiAvLUROT19NQVRIT01TLzsKCiAg ICAgICAgICAgIG15ICR1dGY4X3BhcmFtX2NvZGUgPSAkdXRmOF9wYXJhbV9jb2RleyR1dGY4 X3BhcmFtfTsKICAgICAgICAgICAgbXkgJGV4cGVjdF9lcnJvciA9ICR1dGY4X3BhcmFtX2Nv ZGUgPiAwOwoKICAgICAgICAgICAgIyBTa2lwIGlmIGNhbid0IG1hbGZvcm0gKGJlY2F1c2Ug aXMgYSBVVEYtOCBpbnZhcmlhbnQpCiAgICAgICAgICAgIG5leHQgaWYgJGV4cGVjdF9lcnJv ciAmJiAkdSA8ICgob3JkICJBIiA9PSA2NSkgPyAxMjggOiAxNjApOwoKICAgICAgICAgICAg bXkgJGRpc3BsYXlfY2FsbCA9ICJ0byR7ZnVuY3Rpb259X3V0ZjgoJGRpc3BsYXlfbmFtZSwg JHV0ZjhfcGFyYW0gKSI7CiAgICAgICAgICAgIG15ICRjb2RlID0gInRlc3RfdG8ke2Z1bmN0 aW9ufV91dGY4KCckY2hhcicsICR1dGY4X3BhcmFtX2NvZGUpIjsKICAgICAgICAgICAgJHJl dCA9IGV2YWwgICAkY29kZTsKICAgICAgICAgICAgbXkgJGVyciA9ICRAOwogICAgICAgICAg ICBpZiAoJGV4cGVjdF9lcnJvcikgewogICAgICAgICAgICAgICAgaXNudCAoJEAsICIiLCAi ZXhwZWN0ZWQgYW5kIGdvdCBlcnJvciBpbiAkZGlzcGxheV9jYWxsIik7CiAgICAgICAgICAg ICAgICBsaWtlKCRALCBxci9NYWxmb3JtZWQgVVRGLTggY2hhcmFjdGVyLywKICAgICAgICAg ICAgICAgICAgICAgIiR7dGFifUFuZCBnb3QgZXhwZWN0ZWQgbWVzc2FnZSIpOwogICAgICAg ICAgICAgICAgdW5kZWYgQHdhcm5pbmdzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVs c2lmIChpcyAoJEAsICIiLCAiJGRpc3BsYXlfY2FsbCBkaWRuJ3QgZ2l2ZSBlcnJvciIpKSB7 CiAgICAgICAgICAgICAgICBpcyAoJHJldC0+WzBdLCAkZmlyc3Rfb3JkX3Nob3VsZF9iZSwK ICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKCIke3RhYn1BbmQgY29ycmVjdGx5IHJldHVy bmVkIDB4JTAyWCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAkZmlyc3Rfb3JkX3Nob3VsZF9iZSkpOwogICAgICAgICAgICAgICAgaXMg KCRyZXQtPlsxXSwgJHV0Zjhfc2hvdWxkX2JlLCAiJHt0YWJ9R290IGNvcnJlY3QgdXRmOCIp OwogICAgICAgICAgICAgICAgdXNlIGJ5dGVzOwogICAgICAgICAgICAgICAgaXMgKCRyZXQt PlsyXSwgbGVuZ3RoICR1dGY4X3Nob3VsZF9iZSwKICAgICAgICAgICAgICAgICAgICAiJHt0 YWJ9R290IGNvcnJlY3QgbnVtYmVyIG9mIGJ5dGVzIGZvciB1dGY4IGxlbmd0aCIpOwogICAg ICAgICAgICAgICAgaWYgKCR1dGY4X3BhcmFtX2NvZGUgPCAwKSB7CiAgICAgICAgICAgICAg ICAgICAgbXkgJHdhcm5pbmdzX29rOwogICAgICAgICAgICAgICAgICAgIGlmICghICRzZWVu eyIke2Z1bmN0aW9ufV91dGY4JHV0ZjhfcGFyYW0ifSsrKSB7CiAgICAgICAgICAgICAgICAg ICAgICAgICR3YXJuaW5nc19vayA9IGlzKEB3YXJuaW5ncywgMSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiR7dGFifUdvdCBhIHNpbmds ZSB3YXJuaW5nIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkd2FybmluZ3Nfb2sp IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRleHBlY3RlZDsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmICgkdXRmOF9wYXJhbV9jb2RlID09IC0yKSB7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGxjX2Z1bmMgPSBsYyAkZnVuY3Rpb247 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkCiAgICAgICAgICAg ICAgICA9IHFyL3N0YXJ0aW5nIGluIFBlcmwgLiogdG9fdXRmOF8kbGNfZnVuY1woXCkgd2ls bCBiZSByZW1vdmVkLzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICRleHBlY3RlZAogICAgICAgICAgICAgICAgPSBxci9zdGFydGluZyBpbiBQZXJsIC4q IHdpbGwgcmVxdWlyZSBhbiBhZGRpdGlvbmFsIHBhcmFtZXRlci87CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2FybmluZ3Nf b2sgPSBsaWtlKCR3YXJuaW5nc1swXSwgJGV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIke3RhYn1Hb3QgZXhwZWN0ZWQgZGVwcmVjYXRpb24gd2Fy bmluZyIpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAk d2FybmluZ3Nfb2sgPSBpcyhAd2FybmluZ3MsIDAsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiJHt0YWJ9RGVwcmVjYXRpb24gd2FybmVkIG9ubHkgdGhlIG9uZSB0aW1l Iik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICR3YXJuaW5n c19vayBvciBkaWFnKCJAd2FybmluZ3MiKTsKICAgICAgICAgICAgICAgICAgICB1bmRlZiBA d2FybmluZ3M7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAg ZWxzZSB7CiAgICAgICAgICAgICAgICB3YXJuICJYWFggdW5leHBlY3RlZCBldmFsIGZhaWw6 XG4iOwogICAgICAgICAgICAgICAgdXNlIERldmVsOjpQZWVrOwogICAgICAgICAgICAgICAg RHVtcCAkZnVuY3Rpb247CiAgICAgICAgICAgICAgICBEdW1wICRjaGFyOwogICAgICAgICAg ICAgICAgRHVtcCAkdXRmOF9wYXJhbV9jb2RlOwogICAgICAgICAgICAgICAgRHVtcCAkY29k ZTsKICAgICAgICAgICAgICAgIER1bXAgJHJldDsKICAgICAgICAgICAgICAgIER1bXAgJGVy cjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKIyBUaGlzIGlzIHByaW1hcmls eSB0byBtYWtlIHN1cmUgdGhhdCBubyBub24tVW5pY29kZSB3YXJuaW5ncyBnZXQgZ2VuZXJh dGVkCmlzKHNjYWxhciBAd2FybmluZ3MsIDAsICJObyB1bmV4cGVjdGVkIHdhcm5pbmdzIHdl cmUgZ2VuZXJhdGVkIGluIHRoZSB0ZXN0cyIpCiAgb3IgZGlhZyBAd2FybmluZ3M7Cgpkb25l X3Rlc3Rpbmc7Cg== --------------F5B21D8D87337260BC01991E--