-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.py
3 lines (3 loc) · 8.22 KB
/
test.py
1
2
3
import base64
myscript ='''ZnJvbSBwdXp6bGUgaW1wb3J0IHNvbHZlCmltcG9ydCB0aW1lCmltcG9ydCByYW5kb20KaW1wb3J0IHN5cwpmcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5CgpzYW1wbGVfYm9hcmQgPSBbICNyZXByZXNlbnRlZCBhcyBhIDJEIGxpc3QKICAgIFsxLDIsM10sCiAgICBbNCw1LDZdLAogICAgWzcsOCwwXSAjIDAgc3RhbmRzIGZvciB0aGUgZW1wdHkgc2xvdApdCkFDVElPTlMgPSBbInVwIiwgImRvd24iLCAibGVmdCIsICJyaWdodCJdICNBY3Rpb25zIGFyZSByZXByZXNlbnRlZCBhcyB3YXlzIHRvIG1vdmUgdGhlIGVtcHR5IHNsb3QgKDApIGFyb3VuZC4KCgpkZWYgcHJpbnRfYm9hcmQoYm9hcmQpOgogICAgJycnUHJpbnQgQk9BUkQgdG8gY29uc29sZSBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDoKICAgIC0tLS0tLS0tLS0tLS0KICAgIHwgNCB8IDMgfCA2IHwKICAgIC0tLS0tLS0tLS0tLS0KICAgIHwgICB8IDUgfCA3IHwKICAgIC0tLS0tLS0tLS0tLS0KICAgIHwgMSB8IDggfCA0IHwKICAgIC0tLS0tLS0tLS0tLS0KICAgICcnJwogICAgcHJpbnQoIi0tLS0tLS0tLS0tLS0iKQogICAgZm9yIHJvdyBpbiByYW5nZShsZW4oYm9hcmQpKToKICAgICAgICBwcmludCgifCAiLCBlbmQ9IiIpCiAgICAgICAgZm9yIGNvbCBpbiByYW5nZShsZW4oYm9hcmRbMF0pKToKICAgICAgICAgICAgY29udGVudCA9IGJvYXJkW3Jvd11bY29sXQogICAgICAgICAgICBwcmludChjb250ZW50IGlmIGNvbnRlbnQgIT0gMCBlbHNlICIgIiwgZW5kPSIgfCAiKQogICAgICAgIHByaW50KCJcbi0tLS0tLS0tLS0tLS0iKQoKZGVmIGZpbmRfemVybyhib2FyZCk6CiAgICAnJydSZXR1cm4gdGhlIGNvb3JkaW5hdGUgYXMgKHJvd19udW1iZXIsIGNvbHVtbl9udW1iZXIpCiAgICBvZiAiMCIgKHRoZSBlbXB0eSBzbG90KSBpbiBCT0FSRC4KCiAgICBFLmcuCiAgICBUaGUgemVybyBjb29yZGluYXRlIG9mIHRoZSBmb2xsb3dpbmcgYm9hcmQgaXMgKDEsIDApCiAgICAtLS0tLS0tLS0tLS0tCiAgICB8IDIgfCAzIHwgNiB8CiAgICAtLS0tLS0tLS0tLS0tCiAgICB8ICAgfCA1IHwgNyB8CiAgICAtLS0tLS0tLS0tLS0tCiAgICB8IDEgfCA4IHwgNCB8CiAgICAtLS0tLS0tLS0tLS0tCiAgICAnJycKICAgIGZvciByb3cgaW4gcmFuZ2UobGVuKGJvYXJkKSk6CiAgICAgICAgZm9yIGNvbCBpbiByYW5nZShsZW4oYm9hcmRbMF0pKToKICAgICAgICAgICAgaWYgYm9hcmRbcm93XVtjb2xdID09IDA6CiAgICAgICAgICAgICAgICByZXR1cm4gcm93LCBjb2wKCmRlZiBnZXRfbGVnYWxfYWN0aW9ucyhib2FyZCk6CiAgICAnJydSZXR1cm4gYSBsaXN0IG9mIGxlZ2FsIGFjdGlvbnMgaW4gQk9BUkQuIEFjdGlvbnMgYXJlIHJlcHJlc2VudGVkCiAgICBhcyB3YXlzIHRvIG1vdmUgdGhlIGVtcHR5IHNsb3QgKDApIGFyb3VuZC4gQW4gYWN0aW9uIHNob3VsZCBiZSBpbgogICAgWyJ1cCIsICJkb3duIiwgImxlZnQiLCAicmlnaHQiXS4KCiAgICBFLmcuIEluIHRoZSBmb2xsb3dpbmcgYm9hcmQsIHRoZSBsZWdhbCBhY3Rpb25zIGFyZSBbInVwIiwgImRvd24iLCAicmlnaHQiXS4KICAgIC0tLS0tLS0tLS0tLS0KICAgIHwgMiB8IDMgfCA2IHwKICAgIC0tLS0tLS0tLS0tLS0KICAgIHwgICB8IDUgfCA3IHwKICAgIC0tLS0tLS0tLS0tLS0KICAgIHwgMSB8IDggfCA0IHwKICAgIC0tLS0tLS0tLS0tLS0nJycKICAgIHplcm9fcG9zID0gZmluZF96ZXJvKGJvYXJkKQogICAgYm9hcmRfcm93cyA9IGxlbihib2FyZCkKICAgIGJvYXJkX2NvbHMgPSBsZW4oYm9hcmRbMF0pCiAgICBhY3Rpb25zID0gQUNUSU9OU1s6XQogICAgaWYgemVyb19wb3NbMF0gPT0gMDoKICAgICAgICBhY3Rpb25zLnJlbW92ZSgidXAiKQogICAgaWYgemVyb19wb3NbMF0gPT0gYm9hcmRfcm93cyAtIDE6CiAgICAgICAgYWN0aW9ucy5yZW1vdmUoImRvd24iKQogICAgaWYgemVyb19wb3NbMV0gPT0gMDoKICAgICAgICBhY3Rpb25zLnJlbW92ZSgibGVmdCIpCiAgICBpZiB6ZXJvX3Bvc1sxXSA9PSBib2FyZF9jb2xzIC0gMToKICAgICAgICBhY3Rpb25zLnJlbW92ZSgicmlnaHQiKQogICAgcmV0dXJuIGFjdGlvbnMKCmRlZiB0YWtlKGFjdGlvbiwgYm9hcmQpOgogICAgJycnUmV0dXJuIHRoZSByZXN1bHRpbmcgYm9hcmQgYWZ0ZXIgdGFraW5nIEFDVElPTiBvbiBCT0FSRCwKICAgIGFzc3VtaW5nIEFDVElPTiBpcyBsZWdhbC4gQUNUSU9OIHNob3VsZCBiZSBpbiBbInVwIiwgImRvd24iLCAibGVmdCIsICJyaWdodCJdLgogICAgQWN0aW9ucyBhcmUgcmVwcmVzZW50ZWQgYXMgd2F5cyB0byBtb3ZlIHRoZSBlbXB0eSBzbG90ICgwKSBhcm91bmQuCgogICAgRS5nLgogICAgLS0tLS0tLS0tLS0tLQogICAgfCAyIHwgMyB8IDYgfAogICAgLS0tLS0tLS0tLS0tLQogICAgfCAgIHwgNSB8IDcgfAogICAgLS0tLS0tLS0tLS0tLQogICAgfCAxIHwgOCB8IDQgfAogICAgLS0tLS0tLS0tLS0tLQogICAgVGFraW5nIGFjdGlvbiAidXAiIGluIHRoZSBhYm92ZSBib2FyZCB3aWxsIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIGJvYXJkOgogICAgLS0tLS0tLS0tLS0tLQogICAgfCAgIHwgMyB8IDYgfAogICAgLS0tLS0tLS0tLS0tLQogICAgfCAyIHwgNSB8IDcgfAogICAgLS0tLS0tLS0tLS0tLQogICAgfCAxIHwgOCB8IDQgfAogICAgLS0tLS0tLS0tLS0tLQogICAgJycnCiAgICBhc3NlcnQgYWN0aW9uIGluIEFDVElPTlMsICJJbnZhbGlkIGFjdGlvbjogJ3t9JyIuZm9ybWF0KGFjdGlvbikKICAgIHplcm9fcG9zID0gZmluZF96ZXJvKGJvYXJkKQogICAgemVyb19yb3cgPSB6ZXJvX3Bvc1swXQogICAgemVyb19jb2wgPSB6ZXJvX3Bvc1sxXQogICAgbmV3X2JvYXJkID0gZGVlcGNvcHkoYm9hcmQpCiAgICBpZiBhY3Rpb24gPT0gInVwIjoKICAgICAgICBuZXdfYm9hcmRbemVyb19yb3ddW3plcm9fY29sXSwgbmV3X2JvYXJkW3plcm9fcm93IC0gMV1bemVyb19jb2xdID0gbmV3X2JvYXJkW3plcm9fcm93IC0gMV1bemVyb19jb2xdLCBuZXdfYm9hcmRbemVyb19yb3ddW3plcm9fY29sXQogICAgaWYgYWN0aW9uID09ICJkb3duIjoKICAgICAgICBuZXdfYm9hcmRbemVyb19yb3ddW3plcm9fY29sXSwgbmV3X2JvYXJkW3plcm9fcm93ICsgMV1bemVyb19jb2xdID0gbmV3X2JvYXJkW3plcm9fcm93ICsgMV1bemVyb19jb2xdLCBuZXdfYm9hcmRbemVyb19yb3ddW3plcm9fY29sXQogICAgaWYgYWN0aW9uID09ICJsZWZ0IjoKICAgICAgICBuZXdfYm9hcmRbemVyb19yb3ddW3plcm9fY29sXSwgbmV3X2JvYXJkW3plcm9fcm93XVt6ZXJvX2NvbCAtIDFdID0gbmV3X2JvYXJkW3plcm9fcm93XVt6ZXJvX2NvbCAtIDFdLCBuZXdfYm9hcmRbemVyb19yb3ddW3plcm9fY29sXQogICAgaWYgYWN0aW9uID09ICJyaWdodCI6CiAgICAgICAgbmV3X2JvYXJkW3plcm9fcm93XVt6ZXJvX2NvbF0sIG5ld19ib2FyZFt6ZXJvX3Jvd11bemVyb19jb2wgKyAxXSA9IG5ld19ib2FyZFt6ZXJvX3Jvd11bemVyb19jb2wgKyAxXSwgbmV3X2JvYXJkW3plcm9fcm93XVt6ZXJvX2NvbF0KICAgIHJldHVybiBuZXdfYm9hcmQKCmRlZiBzaHVmZmxlKGJvYXJkKToKICAgICcnJ1JldHVybiBhIG5ldyBib2FyZCBvYnRhaW5lZCBieSB0YWtpbmcgNTAgcmFuZG9tCiAgICBhY3Rpb25zIGZyb20gQk9BUkQuICcnJwogICAgbmV3X2JvYXJkID0gZGVlcGNvcHkoYm9hcmQpCiAgICBmb3IgaSBpbiByYW5nZSg1MCk6CiAgICAgICAgYWN0aW9uID0gcmFuZG9tLmNob2ljZShnZXRfbGVnYWxfYWN0aW9ucyhuZXdfYm9hcmQpKQogICAgICAgIG5ld19ib2FyZCA9IHRha2UoYWN0aW9uLCBuZXdfYm9hcmQpCiAgICByZXR1cm4gbmV3X2JvYXJkCgpkZWYgaXNfZ29hbChib2FyZCk6CiAgICAnJydSZXR1cm4gVHJ1ZSBpZmYgQk9BUkQgaXMKICAgIC0tLS0tLS0tLS0tLS0KICAgIHwgMSB8IDIgfCAzIHwKICAgIC0tLS0tLS0tLS0tLS0KICAgIHwgNCB8IDUgfCA2IHwKICAgIC0tLS0tLS0tLS0tLS0KICAgIHwgNyB8IDggfCAgIHwKICAgIC0tLS0tLS0tLS0tLS0nJycKICAgIHJldHVybiBib2FyZCA9PSBbWzEsMiwzXSxbNCw1LDZdLFs3LDgsMF1dCgpkZWYgdGVzdChzZWVkPU5vbmUpOgogICAgJycnUnVuIHNvbHZlKCkgNTAgdGltZXMgb24gcmFuZG9tbHkgc2h1ZmZsZWQgM3gzIGJvYXJkcywKICAgIGNoZWNrIGZvciBjb3JyZWN0bmVzcyBhbmQgcmVjb3JkIHRvdGFsIGVsYXBzZWQgdGltZS4nJycKICAgIHByaW50KCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IikKICAgIHByaW50KCJSdW5uaW5nIDUwIHJhbmRvbWl6ZWQgdGVzdHM6XG4iKQogICAgcmFuZG9tLnNlZWQoYT1zZWVkKQogICAgdG90YWxfdGltZSA9IDAKICAgIHBhc3NlZCA9IDAKICAgIGZvciBpIGluIHJhbmdlKDUwKToKICAgICAgICBpZiBpICUgMTAgPT0gMDoKICAgICAgICAgICAgcHJpbnQoIlJ1bm5pbmcgdGVzdCIsIGkgKyAxLCAiLSIsIGkgKyAxMCwgIi4uLiIpCiAgICAgICAgYm9hcmQgPSBzaHVmZmxlKHNhbXBsZV9ib2FyZCkKICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCiAgICAgICAgc29sdXRpb24gPSBzb2x2ZShib2FyZFs6XSkKICAgICAgICAjIHByaW50KCJTb2x1dGlvbiBpcyIsIHNvbHV0aW9uKQogICAgICAgIGVuZCA9IHRpbWUudGltZSgpCiAgICAgICAgdG90YWxfdGltZSArPSBlbmQgLSBzdGFydAogICAgICAgIGlmIG5vdCBjaGVjayhzb2x1dGlvbiwgYm9hcmQsIHBhc3NlZCk6CiAgICAgICAgICAgIHByaW50KCJDdXJyZW50IHRlc3QgdGVybWluYXRlZC4iKQogICAgICAgICAgICBwcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHBhc3NlZCArPSAxCiAgICBwcmludCgiQWxsIHRlc3RzIHBhc3NlZC4gc29sdmUoKSB0b3RhbCBydW5uaW5nIHRpbWU6IiwgdG90YWxfdGltZSwgInMiKQogICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQoKZGVmIGNoZWNrKHNvbHV0aW9uLCBib2FyZCwgcGFzc2VkKToKICAgIHRyYW5zaXRpb25zID0gW1tib2FyZCxOb25lXV0KICAgICMgYWN0aW9ucyA9IFtdCiAgICBmb3IgaSBpbiByYW5nZShsZW4oc29sdXRpb24pKToKICAgICAgICBhY3Rpb24gPSBzb2x1dGlvbltpXQogICAgICAgIGlmIGFjdGlvbiBub3QgaW4gZ2V0X2xlZ2FsX2FjdGlvbnModHJhbnNpdGlvbnNbLTFdWzBdKToKICAgICAgICAgICAgcHJpbnQoInt9IHRlc3RzIHBhc3NlZCBiZWZvcmUgZW5jb3VudGVyaW5nIHRoZSBmaXJzdCBmYWlsZWQgY2FzZS4iLmZvcm1hdChwYXNzZWQpKQogICAgICAgICAgICBwcmludF90cmFuc2l0aW9ucyh0cmFuc2l0aW9ucykKICAgICAgICAgICAgcHJpbnQoIklsbGVnYWwgYWN0aW9uOiIsIGFjdGlvbi5fX3JlcHJfXygpKQogICAgICAgICAgICAjIHByaW50X2JvYXJkKHRyYW5zaXRpb25zWy0xXSkKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIyBhY3Rpb25zLmFwcGVuZChhY3Rpb24pCiAgICAgICAgbmV4dF9zdGF0ZSA9IHRha2UoYWN0aW9uLCB0cmFuc2l0aW9uc1stMV1bMF0pCiAgICAgICAgIyBwcmludCgiLi4uLi4uIikKICAgICAgICAjIHByaW50X2JvYXJkKG5leHRfc3RhdGUpCiAgICAgICAgdHJhbnNpdGlvbnMuYXBwZW5kKFtuZXh0X3N0YXRlLCBhY3Rpb25dKQogICAgICAgICMgcHJpbnQoIioqKioqKioiKQogICAgICAgICMgcHJpbnQodHJhbnNpdGlvbnMpCiAgICBpZiBub3QgaXNfZ29hbCh0cmFuc2l0aW9uc1stMV1bMF0pOgogICAgICAgIHByaW50KCJ7fSB0ZXN0cyBwYXNzZWQgYmVmb3JlIGVuY291bnRlcmluZyB0aGUgZmlyc3QgZmFpbGVkIGNhc2UuIi5mb3JtYXQocGFzc2VkKSkKICAgICAgICBwcmludF90cmFuc2l0aW9ucyh0cmFuc2l0aW9ucykKICAgICAgICBwcmludCgiVGhlIGFib3ZlIHN0YXRlIGlzIG5vdCB0aGUgZ29hbCBzdGF0ZS4iKQogICAgICAgIHJldHVybiBGYWxzZQogICAgcmV0dXJuIFRydWUKCmRlZiBwcmludF90cmFuc2l0aW9ucyh0cmFucyk6CiAgICBwcmludCgiSW5pdGlhbCBzdGF0ZToiKQogICAgcHJpbnRfYm9hcmQodHJhbnNbMF1bMF0pCiAgICB0cmFucy5wb3AoMCkKICAgIGZvciBzdGF0ZSwgYWN0aW9uIGluIHRyYW5zOgogICAgICAgIHByaW50KCJUYWtpbmcgYWN0aW9uOiIsIGFjdGlvbikKICAgICAgICBwcmludF9ib2FyZChzdGF0ZSkKCnNlZWQgPSBpbnQoc3lzLmFyZ3ZbMV0pIGlmIGxlbihzeXMuYXJndikgPiAxIGVsc2UgMAp0ZXN0KHNlZWQpCg=='''
eval(compile(base64.b64decode(myscript),'<string>','exec'))