{"remainingRequest":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\commandDispatch\\EventInquiry\\components\\DetailPage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\commandDispatch\\EventInquiry\\components\\DetailPage\\index.vue","mtime":1751880370774},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\babel.config.js","mtime":1741314102158},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS94Y2p5LWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDIuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zbGljZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmZpbmQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5zb21lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudG8tc3RyaW5nLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCB7IHJlZmluZVJlcXVlc3RCb2R5IH0gZnJvbSAnQC91dGlscy9yZXF1ZXN0V3JhcHBlcnMnOwppbXBvcnQgeyBkaWN0aW9uYXJ5RXNjYXBlLCBnZXREaWN0aW9uYXJ5QnlDb2RlIH0gZnJvbSAnQC91dGlscy9kaWN0aW9uYXJ5JzsKaW1wb3J0IHsgZGVyZWd1bGF0aW9uLCB0YWJsZURldGFpbCwgdGFibGVFZGl0IH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2NvbW1hbmREaXNwYXRjaC9ldmVudE1hbmFnZW1lbnQnOwppbXBvcnQgUHViU3ViIGZyb20gJ3B1YnN1Yi1qcyc7CmltcG9ydCB7IHRhYmxlRGF0YSBhcyByb2FkU2VjdGlvbkluZm9JbnRlciB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3JvYWRTZWN0aW9uSW5mbyc7CmltcG9ydCB7IHRhYmxlRGF0YSBhcyBhbG9uZ1JvdXRlSW5mb0ludGVyIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvYWxvbmdSb3V0ZUluZm8nOwppbXBvcnQgeyB0YWJsZURhdGEgYXMgdGVhbURhdGEgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvaW5mb01nbXRQYXRyb2xzUmVzY3Vlcy9wYXRyb2xBbmRSZXNjdWVUZWFtc01nbXQnOwppbXBvcnQgU2F2ZURldGFpbERpYWxvZyBmcm9tICdAL3ZpZXdzL3BhdHJvbEFuZFJlc2N1ZS9jb21tYW5kRGlzcGF0Y2gvRXZlbnRJbnF1aXJ5L2NvbXBvbmVudHMvU2F2ZURldGFpbERpYWxvZy9pbmRleC52dWUnOwppbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnRGV0YWlsUGFnZScsCiAgcHJvcHM6IHsKICAgIGNvbXBvbmVudE5hbWU6IHsKICAgICAgZGVmYXVsdDogJ1RhYmxlUGFnZScsCiAgICAgIHR5cGU6IFN0cmluZwogICAgfQogIH0sCiAgY29tcG9uZW50czogewogICAgU2F2ZURldGFpbERpYWxvZzogU2F2ZURldGFpbERpYWxvZwogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIGFwcG9pbnREaWFsb2c6IGZhbHNlLAogICAgICBlZGl0U2F2ZUxvYWRpbmc6IGZhbHNlLAogICAgICBwYWdlVHlwZTogJ2VkaXQnLAogICAgICBkZXRhaWxGb3JtOiB7fSwKICAgICAgcHViU3ViOiBudWxsLAogICAgICBldmVudFN0YXR1czogMCwKICAgICAgY29uZmlybUxvYWRpbmc6IGZhbHNlLAogICAgICByZXZlcnNlOiB0cnVlLAogICAgICBtYXA6IG51bGwsCiAgICAgIG1hcExvYWRpbmc6IHRydWUsCiAgICAgIG1hcERlZmF1bHRPcHRpb25zOiB7CiAgICAgICAgY2VudGVyOiBbMTA2LjU1MDcsIDI5LjU2NDddIC8q5Zyw5Zu+5Lit5b+D54K5Ki8sCiAgICAgICAgem9vbTogOSAvKuWcsOWbvum7mOiupOe8qeaUvuetiee6pyovCiAgICAgIH0sCiAgICAgIGV2ZW50R3JhZGVPcHRpb25zOiBbCiAgICAgIC8v5LqL5Lu2562J57qnCiAgICAgIHsKICAgICAgICBsYWJlbDogJzHnuqcnLAogICAgICAgIHZhbHVlOiAxCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJzLnuqcnLAogICAgICAgIHZhbHVlOiAyCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJzPnuqcnLAogICAgICAgIHZhbHVlOiAzCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJzTnuqcnLAogICAgICAgIHZhbHVlOiA0CiAgICAgIH1dLAogICAgICBtYXJrZXJzOiBbXSwKICAgICAgcm9hZE9wdGlvbnM6IFtdLAogICAgICBhbG9uZ1JvdXRlSW5mb0RhdGE6IFtdLAogICAgICB0ZWFtT3B0aW9uczogW10sCiAgICAgIGVkaXREaWFsb2c6IGZhbHNlLAogICAgICBldmVudFR5cGU6ICcnLAogICAgICBiYXNlSW5mbzoge30sCiAgICAgIFNhdmVEZXRhaWxEaWFsb2c6IGZhbHNlLAogICAgICBzYXZlRGV0YWlsRm9ybToge30sCiAgICAgIGppZWNodVRpbWU6IG5ldyBEYXRlKCksCiAgICAgIHBvcG92ZXJWaXNpYmxlOiBmYWxzZQogICAgfTsKICB9LAogIGNvbXB1dGVkOiB7fSwKICB3YXRjaDogewogICAgY29tcG9uZW50TmFtZTogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKG5ld1ZhbCkgewogICAgICAgIGlmIChuZXdWYWwgPT09IHRoaXMuJG9wdGlvbnMubmFtZSkgewogICAgICAgICAgdGhpcy5vcGVuUGFnZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLmNsb3NlUGFnZSgpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICB0aGlzLnB1YlN1YiA9IFB1YlN1Yi5zdWJzY3JpYmUoJ0RldGFpbFBhZ2UnLCBmdW5jdGlvbiAoXywgZGF0YSkgewogICAgICBpZiAoZGF0YS5pZCkgewogICAgICAgIF90aGlzLmV2ZW50U3RhdHVzID0gZGF0YS5zdGF0dXM7CiAgICAgICAgX3RoaXMuZ2V0RGV0YWlsKGRhdGEuaWQpOwogICAgICB9CiAgICAgIF90aGlzLmdldFJvYWRPcHRpb25zKCk7CiAgICB9KTsKICB9LAogIG1ldGhvZHM6IHsKICAgIGdldERpY3Rpb25hcnlCeUNvZGU6IGdldERpY3Rpb25hcnlCeUNvZGUsCiAgICBkaWN0aW9uYXJ5RXNjYXBlOiBkaWN0aW9uYXJ5RXNjYXBlLAogICAgaGFuZGxlRGF0ZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlRGF0ZUNoYW5nZShyb3cpIHsKICAgICAgaWYgKHJvdy5zdGFydFRpbWUgPiB0aGlzLmppZWNodVRpbWUpIHsKICAgICAgICB0aGlzLmppZWNodVRpbWUgPSAnJzsKICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCfnrqHliLbop6PpmaTml7bpl7Tlv4XpobvlnKjnrqHliLblvIDlp4vml7bpl7TkuYvlkI7vvIEnKTsKICAgICAgfQogICAgICB0aGlzLnBvcG92ZXJWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICBkaWN0aW9uQ2hhbmdlOiBmdW5jdGlvbiBkaWN0aW9uQ2hhbmdlKHZhbHVlLCBldmVudFBsYWNlKSB7CiAgICAgIHZhciBfcGxhY2VJdGVtJGxvd2VyRGljOwogICAgICBpZiAoIXZhbHVlIHx8ICFldmVudFBsYWNlKSByZXR1cm4gJy0nOwogICAgICB2YXIgcGxhY2VJdGVtID0gdGhpcy5nZXREaWN0aW9uYXJ5QnlDb2RlKCdzamZzcXknKS5maW5kKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgcmV0dXJuIGl0ZW0udmFsdWUgPT09IGV2ZW50UGxhY2U7CiAgICAgIH0pOwogICAgICBpZiAoIShwbGFjZUl0ZW0gIT09IG51bGwgJiYgcGxhY2VJdGVtICE9PSB2b2lkIDAgJiYgKF9wbGFjZUl0ZW0kbG93ZXJEaWMgPSBwbGFjZUl0ZW0ubG93ZXJEaWMpICE9PSBudWxsICYmIF9wbGFjZUl0ZW0kbG93ZXJEaWMgIT09IHZvaWQgMCAmJiBfcGxhY2VJdGVtJGxvd2VyRGljWydqdGd6LWZ4J10pKSByZXR1cm4gJy0nOwogICAgICB2YXIgbWF0Y2hlZEl0ZW0gPSBwbGFjZUl0ZW0ubG93ZXJEaWNbJ2p0Z3otZngnXS5maW5kKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgcmV0dXJuIGl0ZW0udmFsdWUgPT09IHZhbHVlOwogICAgICB9KTsKICAgICAgcmV0dXJuIChtYXRjaGVkSXRlbSA9PT0gbnVsbCB8fCBtYXRjaGVkSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbWF0Y2hlZEl0ZW0ubmFtZSkgfHwgJy0nOwogICAgfSwKICAgIHNob3dBcHBvaW50RGlhbG9nOiBmdW5jdGlvbiBzaG93QXBwb2ludERpYWxvZygpIHsKICAgICAgLy8gdGhpcy5iYXNlSW5mbyA9IHRoaXMuJHJlZnMuYmFzaWNzQ29udGVudC5zZW5kQmFzZURhdGEoKQogICAgICAvLyB0aGlzLiRyZWZzLmFkZEVkaXRGb3JtLnZhbGlkYXRlKGFzeW5jICh2YWxpZCwgb2JqZWN0KSA9PiB7CiAgICAgIC8vICAgaWYgKCF2YWxpZCkgewogICAgICAvLyAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKAogICAgICAvLyAgICAgICBg5pyJJHtPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCArIChiYXNpY2VEYXRhLmZpZWxkTnVtIHx8IDApCiAgICAgIC8vICAgICAgIH3kuKrlrZfmrrXmnKrpgJrov4fmoKHpqozvvIzor7fmraPnoa7loavlhpnooajljZXlhoXlrrnjgIJgCiAgICAgIC8vICAgICApCiAgICAgIC8vICAgfSBlbHNlIHsKCiAgICAgIC8vICAgfQogICAgICAvLyB9KQogICAgICB0aGlzLmFwcG9pbnREaWFsb2cgPSB0cnVlOwogICAgfSwKICAgIHJlc2N1ZUluY2lkZW50czogZnVuY3Rpb24gcmVzY3VlSW5jaWRlbnRzKHJvdykgewogICAgICB0aGlzLlNhdmVEZXRhaWxEaWFsb2cgPSB0cnVlOwogICAgICB0aGlzLnNhdmVEZXRhaWxGb3JtID0gcm93OwogICAgfSwKICAgIGNsaWNrRWRpdDogZnVuY3Rpb24gY2xpY2tFZGl0KCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgdGhpcy5wYWdlVHlwZSA9IHRoaXMucGFnZVR5cGUgPT09ICdlZGl0JyA/ICdkZXRhaWwnIDogJ2VkaXQnOwogICAgICBpZiAodGhpcy5wYWdlVHlwZSAhPT0gJ2VkaXQnKSB7CiAgICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgX3RoaXMyLiRyZWZzLmJhc2ljc0NvbnRlbnQuZ2V0RGV0YWlsKF90aGlzMi5kZXRhaWxGb3JtKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIGNsaWNrU2F2ZTogZnVuY3Rpb24gY2xpY2tTYXZlKCkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBkYXRhLCBfeWllbGQkdGFibGVFZGl0LCBzdGF0ZSwgbWVzc2FnZSwgdmFsdWU7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgLy8gbGV0IGRhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGV0YWlsRm9ybSkpCiAgICAgICAgICAgICAgZGF0YSA9IF90aGlzMy4kcmVmcy5iYXNpY3NDb250ZW50LnNlbmRCYXNlRGF0YSgpOwogICAgICAgICAgICAgIGlmICghZGF0YS5maWVsZE51bSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlLndhcm5pbmcoIlx1NjcwOSIuY29uY2F0KGRhdGEuZmllbGROdW0sICJcdTRFMkFcdTVCNTdcdTZCQjVcdTY3MkFcdTkwMUFcdThGQzdcdTY4MjFcdTlBOENcdUZGMENcdThCRjdcdTZCNjNcdTc4NkVcdTU4NkJcdTUxOTlcdTg4NjhcdTUzNTVcdTUxODVcdTVCQjlcdTMwMDIiKSk7CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDIyOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgZGVsZXRlIGRhdGEuaGFuZGxlczsKICAgICAgICAgICAgICBkZWxldGUgZGF0YS5jb21wZW5zYXRpb25JbmZvOwogICAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnRyYWZmaWNDb25nZXN0aW9uczsKICAgICAgICAgICAgICBkZWxldGUgZGF0YS50cmFmZmljQ29udHJvbHM7CiAgICAgICAgICAgICAgZGF0YS5ldmVudFR5cGUgPSBKU09OLnN0cmluZ2lmeShkYXRhLmV2ZW50VHlwZSk7CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDEwOwogICAgICAgICAgICAgIF90aGlzMy5lZGl0U2F2ZUxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxNDsKICAgICAgICAgICAgICByZXR1cm4gdGFibGVFZGl0KGRhdGEpOwogICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICAgIF95aWVsZCR0YWJsZUVkaXQgPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJHRhYmxlRWRpdC5zdGF0ZTsKICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJHRhYmxlRWRpdC5tZXNzYWdlOwogICAgICAgICAgICAgIHZhbHVlID0gX3lpZWxkJHRhYmxlRWRpdC52YWx1ZTsKICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS5zdWNjZXNzKCJcdTdGMTZcdThGOTFcdTRGRERcdTVCNThcdTYyMTBcdTUyOUYiKTsKICAgICAgICAgICAgICAgIF90aGlzMy5wYWdlVHlwZSA9ICdlZGl0JzsKICAgICAgICAgICAgICAgIF90aGlzMy5kZXRhaWxGb3JtID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBfdGhpczMuZGV0YWlsRm9ybSksIGRhdGEpOwogICAgICAgICAgICAgICAgX3RoaXMzLmRldGFpbEZvcm0uZXZlbnRUeXBlID0gSlNPTi5wYXJzZShkYXRhLmV2ZW50VHlwZSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlIDE5OgogICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAxOTsKICAgICAgICAgICAgICBfdGhpczMuZWRpdFNhdmVMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmZpbmlzaCgxOSk7CiAgICAgICAgICAgIGNhc2UgMjI6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlLCBudWxsLCBbWzEwLCwgMTksIDIyXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDot6/mrrXmlbDmja7mn6Xor6IKICAgIGdldFJvYWRPcHRpb25zOiBmdW5jdGlvbiBnZXRSb2FkT3B0aW9ucygpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7CiAgICAgICAgdmFyIF95aWVsZCRyb2FkU2VjdGlvbkluZiwgX3lpZWxkJHJvYWRTZWN0aW9uSW5mMiwgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiByb2FkU2VjdGlvbkluZm9JbnRlcih7CiAgICAgICAgICAgICAgICBwYWdlQmVhbjogewogICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogLTEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF95aWVsZCRyb2FkU2VjdGlvbkluZiA9IF9jb250ZXh0Mi5zZW50OwogICAgICAgICAgICAgIF95aWVsZCRyb2FkU2VjdGlvbkluZjIgPSBfeWllbGQkcm9hZFNlY3Rpb25JbmYucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJHJvYWRTZWN0aW9uSW5mMiA9PT0gdm9pZCAwID8gW10gOiBfeWllbGQkcm9hZFNlY3Rpb25JbmYyOwogICAgICAgICAgICAgIF90aGlzNC5yb2FkT3B0aW9ucyA9IHJvd3MubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICBpdGVtLnJvYWROYW1lID0gaXRlbS5uYW1lICsgJyAnICsgaXRlbS5jb2RlOwogICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgLy8gaWYoIXRoaXMuaWQpIHsKICAgICAgICAgICAgICAvLyAgIHRoaXMuJHNldCh0aGlzLmRldGFpbEZvcm0sICdyb2FkSWQnLCB0aGlzLnJvYWRPcHRpb25zWzBdLmlkKQogICAgICAgICAgICAgIC8vICAgdGhpcy5yb2FkQ2hhbmdlKHRoaXMucm9hZE9wdGlvbnNbMF0uaWQpCiAgICAgICAgICAgICAgLy8gfQogICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTIpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDot6/mrrXpgInmi6nlj5jljJYKICAgIHJvYWRDaGFuZ2U6IGZ1bmN0aW9uIHJvYWRDaGFuZ2UodmFsdWUpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF90aGlzNS5nZXRUZWFtRGF0YSh2YWx1ZSk7CiAgICAgICAgICAgICAgLy8g6YCa6L+H6Lev5q615L+h5oGv6I635Y+W5rK/57q/6K6+5aSH5L+h5oGvCiAgICAgICAgICAgICAgX3RoaXM1LmdldEFsb25nUm91dGVJbmZvKHZhbHVlLCBmdW5jdGlvbiAoZGF0YSkgewogICAgICAgICAgICAgICAgdmFyIF90aGlzNSRkZXRhaWxGb3JtID0gX3RoaXM1LmRldGFpbEZvcm0sCiAgICAgICAgICAgICAgICAgIHN0YXJ0UGF0cm9sSWQgPSBfdGhpczUkZGV0YWlsRm9ybS5zdGFydFBhdHJvbElkLAogICAgICAgICAgICAgICAgICBlbmRQYXRyb2xJZCA9IF90aGlzNSRkZXRhaWxGb3JtLmVuZFBhdHJvbElkOwoKICAgICAgICAgICAgICAgIC8qDQogICAgICAgICAgICAgICAgICog5beh5qOA5byA5aeL77yM57uT5p2f56uZDQogICAgICAgICAgICAgICAgICogKi8KICAgICAgICAgICAgICAgIGlmIChzdGFydFBhdHJvbElkKSB7CiAgICAgICAgICAgICAgICAgIGlmICghZGF0YS5zb21lKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuaWQgPT09IHN0YXJ0UGF0cm9sSWQ7CiAgICAgICAgICAgICAgICAgIH0pKSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM1LmRldGFpbEZvcm0uc3RhcnRQYXRyb2xJZCA9ICcnOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKF8pIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczUuJG1lc3NhZ2Uud2FybmluZygn6K+36YeN5paw6YCJ5oup5beh5qOA5byA5aeL56uZLi4nKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGVuZFBhdHJvbElkKSB7CiAgICAgICAgICAgICAgICAgIGlmICghZGF0YS5zb21lKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuaWQgPT09IGVuZFBhdHJvbElkOwogICAgICAgICAgICAgICAgICB9KSkgewogICAgICAgICAgICAgICAgICAgIF90aGlzNS5kZXRhaWxGb3JtLmVuZFBhdHJvbElkID0gJyc7CiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoXykgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNS4kbWVzc2FnZS53YXJuaW5nKCfor7fph43mlrDpgInmi6nlt6Hmo4Dnu5PmnZ/nq5kuLicpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMyk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOmAmui/h+i3r+auteS/oeaBr+iOt+WPluayv+e6v+iuvuWkh+S/oeaBrwogICAgZ2V0QWxvbmdSb3V0ZUluZm86IGZ1bmN0aW9uIGdldEFsb25nUm91dGVJbmZvKHZhbHVlLCBjYWxsYmFjaykgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNCgpIHsKICAgICAgICB2YXIgX3dpcGVEYXRhLCBfeWllbGQkYWxvbmdSb3V0ZUluZm8sIF95aWVsZCRhbG9uZ1JvdXRlSW5mbzIsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF93aXBlRGF0YSA9IGZ1bmN0aW9uIF93aXBlRGF0YSgpIHsKICAgICAgICAgICAgICAgIF90aGlzNi5hbG9uZ1JvdXRlSW5mb0RhdGEgPSBbXTsKICAgICAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKF90aGlzNi5hbG9uZ1JvdXRlSW5mb0RhdGEpOwogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSAxOwogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gNDsKICAgICAgICAgICAgICByZXR1cm4gYWxvbmdSb3V0ZUluZm9JbnRlcihyZWZpbmVSZXF1ZXN0Qm9keSh7CiAgICAgICAgICAgICAgICBxdWVyeXM6IFt7CiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ0lOJywKICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICdyb2FkX3NlZ21lbnRfaWRfJywKICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlCiAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICAgIH0pLCAnYWRkRWRpdCcpOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgX3lpZWxkJGFsb25nUm91dGVJbmZvID0gX2NvbnRleHQ0LnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJGFsb25nUm91dGVJbmZvMiA9IF95aWVsZCRhbG9uZ1JvdXRlSW5mby5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkYWxvbmdSb3V0ZUluZm8yID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCRhbG9uZ1JvdXRlSW5mbzI7CiAgICAgICAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2socm93cyk7CiAgICAgICAgICAgICAgX3RoaXM2LmFsb25nUm91dGVJbmZvRGF0YSA9IHJvd3M7CiAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAxNDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDExOwogICAgICAgICAgICAgIF9jb250ZXh0NC50MCA9IF9jb250ZXh0NFsiY2F0Y2giXSgxKTsKICAgICAgICAgICAgICAvLyDkuI3kuLror7fmsYLov4flv6vnu5PmnZ/nmoTmg4XlhrXkuIvvvIzph43nva4KICAgICAgICAgICAgICBpZiAoX2NvbnRleHQ0LnQwLm1lc3NhZ2UgIT09ICdjYW5jZWxlZCcpIF93aXBlRGF0YSgpOwogICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU0LCBudWxsLCBbWzEsIDExXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBzaXRlQ2hhbmdlOiBmdW5jdGlvbiBzaXRlQ2hhbmdlKGUsIHR5cGUpIHsKICAgICAgdmFyIHNpdGVJbmZvID0gdGhpcy5hbG9uZ1JvdXRlSW5mb0RhdGEuZmluZChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIHJldHVybiBpdGVtLmlkID09PSBlOwogICAgICB9KTsKICAgICAgdGhpcy5kZXRhaWxGb3JtWyIiLmNvbmNhdCh0eXBlLCAiTmFtZSIpXSA9IHNpdGVJbmZvLm5hbWU7CiAgICB9LAogICAgLy8g6YCa6L+H6Lev5q615L+h5oGv6I635Y+W5beh5p+l5pWR5o+06Zif5LyN5L+h5oGvCiAgICBnZXRUZWFtRGF0YTogZnVuY3Rpb24gZ2V0VGVhbURhdGEodmFsdWUpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTUoKSB7CiAgICAgICAgdmFyIF95aWVsZCR0ZWFtRGF0YSwgX3lpZWxkJHRlYW1EYXRhJHJvd3MsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU1JChfY29udGV4dDUpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gdGVhbURhdGEocmVmaW5lUmVxdWVzdEJvZHkoewogICAgICAgICAgICAgICAgcXVlcnlzOiBbewogICAgICAgICAgICAgICAgICBvcGVyYXRpb246ICdJTicsCiAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAnci5pZF8nLAogICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUKICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uOiAnRVFVQUwnLAogICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogJ3QudHlwZV8nLAogICAgICAgICAgICAgICAgICB2YWx1ZTogJzEnCiAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICAgIH0pLCAnYWRkRWRpdCcpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3lpZWxkJHRlYW1EYXRhID0gX2NvbnRleHQ1LnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJHRlYW1EYXRhJHJvd3MgPSBfeWllbGQkdGVhbURhdGEucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJHRlYW1EYXRhJHJvd3MgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJHRlYW1EYXRhJHJvd3M7CiAgICAgICAgICAgICAgX3RoaXM3LnRlYW1PcHRpb25zID0gcm93czsKICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU1KTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g6ZmE5Lu26aKE6KeIbGlzdAogICAgZ2V0RmlsZVByZXZpZXdVcmxMaXN0OiBmdW5jdGlvbiBnZXRGaWxlUHJldmlld1VybExpc3QoZmlsZXMpIHsKICAgICAgdmFyIHNyY0xpc3QgPSBmaWxlcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbS5maWxlUHJldmlld1VybDsKICAgICAgfSk7CiAgICAgIHJldHVybiBzcmNMaXN0OwogICAgfSwKICAgIGV2ZW50Q29uZmlybTogZnVuY3Rpb24gKF9ldmVudENvbmZpcm0pIHsKICAgICAgZnVuY3Rpb24gZXZlbnRDb25maXJtKCkgewogICAgICAgIHJldHVybiBfZXZlbnRDb25maXJtLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgIH0KICAgICAgZXZlbnRDb25maXJtLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiBfZXZlbnRDb25maXJtLnRvU3RyaW5nKCk7CiAgICAgIH07CiAgICAgIHJldHVybiBldmVudENvbmZpcm07CiAgICB9KGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CiAgICAgIHRoaXMuJGNvbmZpcm0oJ+ehruWumuS6i+S7tuaguOWunuehruiupOWQl++8nycsICfmj5DnpLonLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7orqQnLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICB9KS50aGVuKC8qI19fUFVSRV9fKi9fYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTYoKSB7CiAgICAgICAgdmFyIF95aWVsZCRldmVudENvbmZpcm0sIHN0YXRlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNiQoX2NvbnRleHQ2KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDYucHJldiA9IF9jb250ZXh0Ni5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfdGhpczguY29uZmlybUxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgIF9jb250ZXh0Ni5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gZXZlbnRDb25maXJtKF90aGlzOC5kZXRhaWxGb3JtLmlkKTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF95aWVsZCRldmVudENvbmZpcm0gPSBfY29udGV4dDYuc2VudDsKICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRldmVudENvbmZpcm0uc3RhdGU7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczguJG1lc3NhZ2Uuc3VjY2VzcygiXHU0RThCXHU0RUY2XHU3ODZFXHU4QkE0XHU2MjEwXHU1MjlGIik7CiAgICAgICAgICAgICAgICBfdGhpczguY29uZmlybUxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIF90aGlzOC5jaGFuZ2VQYWdlKCdUYWJsZVBhZ2UnLCAnYWRkJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ni5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTYpOwogICAgICB9KSkpOwogICAgfSksCiAgICAvLyDmiZPlvIDpobXpnaLmiafooYwKICAgIG9wZW5QYWdlOiBmdW5jdGlvbiBvcGVuUGFnZSgpIHsKICAgICAgLy8gdGhpcy4kcmVmcy5taW5lTWFwPy5tYXA/LnJlc2l6ZSgpCiAgICB9LAogICAgY2hhbmdlUGFnZTogZnVuY3Rpb24gY2hhbmdlUGFnZSgpIHsKICAgICAgdmFyIHBhZ2VOYW1lID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAnJzsKICAgICAgdmFyIHR5cGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICcnOwogICAgICBpZiAoIXBhZ2VOYW1lKSByZXR1cm47CiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZVBhZ2UnLCBwYWdlTmFtZSwgZnVuY3Rpb24gKF8pIHsKICAgICAgICBQdWJTdWIucHVibGlzaChwYWdlTmFtZSwgewogICAgICAgICAgdHlwZTogdHlwZQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDlhbPpl63pobXpnaLmiafooYwKICAgIGNsb3NlUGFnZTogZnVuY3Rpb24gY2xvc2VQYWdlKCkgewogICAgICB2YXIgX3RoaXM5ID0gdGhpczsKICAgICAgdmFyIHB1YlN1YiA9IHRoaXMucHViU3ViLAogICAgICAgIGFkZEVkaXRSdWxlcyA9IHRoaXMuYWRkRWRpdFJ1bGVzLAogICAgICAgIHJvYWRPcHRpb25zID0gdGhpcy5yb2FkT3B0aW9uczsKICAgICAgLy8g6YeN572u57uE5Lu25pWw5o2uCiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy4kZGF0YSwgdGhpcy4kb3B0aW9ucy5kYXRhLmNhbGwodGhpcyksIHsKICAgICAgICBwdWJTdWI6IHB1YlN1YiwKICAgICAgICByb2FkT3B0aW9uczogcm9hZE9wdGlvbnMKICAgICAgfSk7CiAgICAgIC8vIHRoaXMuJHJlZnMubWluZU1hcD8ucmVzZXRNYXAoXyA9PiB0aGlzLm1hcExvYWRpbmcgPSBmYWxzZSkgLy8g6YeN572u5Zyw5Zu+CiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgX3RoaXM5LiRyZWZzLmZvcm1JbmZvLiRlbC5zY3JvbGxUb3AgPSAwOwogICAgICB9KTsKICAgIH0sCiAgICBtYXBMb2FkOiBmdW5jdGlvbiBtYXBMb2FkKCkgewogICAgICB0aGlzLm1hcExvYWRpbmcgPSBmYWxzZTsKICAgIH0sCiAgICAvLyDoh6rlrprkuYnmoIforrDngrkKICAgIGN1c3RvbVRhZ1BvaW50czogZnVuY3Rpb24gY3VzdG9tVGFnUG9pbnRzKCkgewogICAgICB2YXIgX3RoaXMkbWFya2VyczsKICAgICAgdmFyIGxuZ2xhdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogW107CiAgICAgIChfdGhpcyRtYXJrZXJzID0gdGhpcy5tYXJrZXJzW3RoaXMubWFya2Vycy5sZW5ndGggLSAxXSkgPT09IG51bGwgfHwgX3RoaXMkbWFya2VycyA9PT0gdm9pZCAwIHx8IF90aGlzJG1hcmtlcnMucmVtb3ZlKCk7CiAgICAgIC8vIOiHquWumuS5ieeCueagh+iusOeahOWGhemDqERPTeWFg+e0oAogICAgICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgZWwuY2xhc3NOYW1lID0gJ21hcmtlci10aXAnOwogICAgICAvLyBNYXJrZXLmnoTpgKDlh73mlbDmjqXmlLbkuKTkuKrlj4LmlbDvvIzkuIDkuKrkuLroh6rlrprkuYnnmoRET03lhYPntKDvvIzkuIDkuKrmmK9PYmplY3Tlj4LmlbDvvIzlhbbkuK3ljIXmi6zlgY/np7vph4/nrYkKICAgICAgdmFyIG1hcmtlciA9IG5ldyB0aGlzLiRyZWZzLm1pbmVNYXAubWluZU1hcC5NYXJrZXIoZWwsIHsKICAgICAgICBhbmNob3I6ICdjZW50ZXInLAogICAgICAgIG9mZnNldDogWzAsIDBdIC8vIG9mZnNldOWPguaVsOS4uuagh+azqOeCueebuOWvueS6juWFtuW3puS4iuinkuWBj+enu+WDj+e0oOWkp+WwjwogICAgICB9KQogICAgICAvLyDosIPnlKhzZXRMbmdMYXTmlrnms5XmjIflrppNYXJrZXLnmoTlnZDmoIfkvY3nva4KICAgICAgLnNldExuZ0xhdChsbmdsYXQpLmFkZFRvKHRoaXMuJHJlZnMubWluZU1hcC5tYXApOwogICAgICB0aGlzLm1hcmtlcnMucHVzaChtYXJrZXIpOwogICAgfSwKICAgIC8vIOiOt+WPluivpuaDhQogICAgZ2V0RGV0YWlsOiBmdW5jdGlvbiBnZXREZXRhaWwoaWQpIHsKICAgICAgdmFyIF90aGlzMTAgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU3KCkgewogICAgICAgIHZhciBfdGhpczEwJGRldGFpbEZvcm0sIF90aGlzMTAkZGV0YWlsRm9ybSRwZSwgcGVnU1ZhbCwgX3RoaXMxMCRkZXRhaWxGb3JtJHBlMiwgcGVnRVZhbCwgc3RhcnRQZWdBcnIsIGVuZFBlZ0FycjsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTckKF9jb250ZXh0NykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ3LnByZXYgPSBfY29udGV4dDcubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQ3Lm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiB0YWJsZURldGFpbChpZCk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBfdGhpczEwLmRldGFpbEZvcm0gPSBfY29udGV4dDcuc2VudDsKICAgICAgICAgICAgICBfdGhpczEwJGRldGFpbEZvcm0gPSBfdGhpczEwLmRldGFpbEZvcm0sIF90aGlzMTAkZGV0YWlsRm9ybSRwZSA9IF90aGlzMTAkZGV0YWlsRm9ybS5wZWdTVmFsLCBwZWdTVmFsID0gX3RoaXMxMCRkZXRhaWxGb3JtJHBlID09PSB2b2lkIDAgPyAnJyA6IF90aGlzMTAkZGV0YWlsRm9ybSRwZSwgX3RoaXMxMCRkZXRhaWxGb3JtJHBlMiA9IF90aGlzMTAkZGV0YWlsRm9ybS5wZWdFVmFsLCBwZWdFVmFsID0gX3RoaXMxMCRkZXRhaWxGb3JtJHBlMiA9PT0gdm9pZCAwID8gJycgOiBfdGhpczEwJGRldGFpbEZvcm0kcGUyOwogICAgICAgICAgICAgIGlmIChwZWdTVmFsKSB7CiAgICAgICAgICAgICAgICBzdGFydFBlZ0FyciA9IHBlZ1NWYWwuc3BsaXQoJysnKTsKICAgICAgICAgICAgICAgIF90aGlzMTAuZGV0YWlsRm9ybS5zdGFydFBlZyA9IHN0YXJ0UGVnQXJyWzBdLnNsaWNlKDEpOwogICAgICAgICAgICAgICAgX3RoaXMxMC5kZXRhaWxGb3JtLnN0YXJ0UGVnQWRkID0gc3RhcnRQZWdBcnJbMV07CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmIChwZWdFVmFsKSB7CiAgICAgICAgICAgICAgICBlbmRQZWdBcnIgPSBwZWdFVmFsLnNwbGl0KCcrJyk7CiAgICAgICAgICAgICAgICBfdGhpczEwLmRldGFpbEZvcm0uZW5kUGVnID0gZW5kUGVnQXJyWzBdLnNsaWNlKDEpOwogICAgICAgICAgICAgICAgX3RoaXMxMC5kZXRhaWxGb3JtLmVuZFBlZ0FkZCA9IGVuZFBlZ0FyclsxXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX3RoaXMxMC5kZXRhaWxGb3JtLmV2ZW50VHlwZSA9IEpTT04ucGFyc2UoX3RoaXMxMC5kZXRhaWxGb3JtLmV2ZW50VHlwZSk7CiAgICAgICAgICAgICAgX3RoaXMxMC5yb2FkQ2hhbmdlKF90aGlzMTAuZGV0YWlsRm9ybS5yb2FkSWQpOwogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ny5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTcpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBnZXRFdmVudFR5cGU6IGZ1bmN0aW9uIGdldEV2ZW50VHlwZSgpIHsKICAgICAgdmFyIGV2ZW50VHlwZSA9IHRoaXMuZGV0YWlsRm9ybS5ldmVudFR5cGU7CiAgICAgIGlmIChldmVudFR5cGUpIHsKICAgICAgICBpZiAoZXZlbnRUeXBlLmxlbmd0aCA+IDEpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmRpY3Rpb25hcnlFc2NhcGUoJ2x4X3NqbHh4cScsIGV2ZW50VHlwZVsxXSArICcnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuICctJzsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICctJzsKICAgICAgfQogICAgfSwKICAgIC8vCiAgICBoYW5kbGVSZWxpZXZlOiBmdW5jdGlvbiBoYW5kbGVSZWxpZXZlKHJvdywgaW5kZXgpIHsKICAgICAgdmFyIF90aGlzMTEgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU4KCkgewogICAgICAgIHZhciBfeWllbGQkZGVyZWd1bGF0aW9uLCBzdGF0ZSwgdmFsdWUsIG1lc3NhZ2U7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU4JChfY29udGV4dDgpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0OC5wcmV2ID0gX2NvbnRleHQ4Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGlmICghX3RoaXMxMS5qaWVjaHVUaW1lKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dDgubmV4dCA9IDE5OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF90aGlzMTEucG9wb3ZlclZpc2libGUgPSBmYWxzZTsKICAgICAgICAgICAgICByb3cuZW5kVGltZSA9IG1vbWVudChfdGhpczExLmppZWNodVRpbWUpLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpOwogICAgICAgICAgICAgIHJvdy5zdGF0dXMgPSAyOwogICAgICAgICAgICAgIF9jb250ZXh0OC5uZXh0ID0gNjsKICAgICAgICAgICAgICByZXR1cm4gZGVyZWd1bGF0aW9uKHJvdyk7CiAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICBfeWllbGQkZGVyZWd1bGF0aW9uID0gX2NvbnRleHQ4LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkZGVyZWd1bGF0aW9uLnN0YXRlOwogICAgICAgICAgICAgIHZhbHVlID0gX3lpZWxkJGRlcmVndWxhdGlvbi52YWx1ZTsKICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJGRlcmVndWxhdGlvbi5tZXNzYWdlOwogICAgICAgICAgICAgIGlmICghc3RhdGUpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0OC5uZXh0ID0gMTY7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX3RoaXMxMS4kbWVzc2FnZS5zdWNjZXNzKCfop6PpmaTnrqHliLbmiJDlip8nKTsKICAgICAgICAgICAgICBfY29udGV4dDgubmV4dCA9IDE0OwogICAgICAgICAgICAgIHJldHVybiBfdGhpczExLmdldERldGFpbChfdGhpczExLmRldGFpbEZvcm0uaWQpOwogICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICAgIF9jb250ZXh0OC5uZXh0ID0gMTc7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgX3RoaXMxMS4kbWVzc2FnZS5lcnJvcihtZXNzYWdlIHx8ICfop6PpmaTnrqHliLblpLHotKUnKTsKICAgICAgICAgICAgY2FzZSAxNzoKICAgICAgICAgICAgICBfY29udGV4dDgubmV4dCA9IDIwOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDE5OgogICAgICAgICAgICAgIF90aGlzMTEuJG1lc3NhZ2Uud2FybmluZygn6K+36YCJ5oup6Kej6Zmk5pe26Ze0Jyk7CiAgICAgICAgICAgIGNhc2UgMjA6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0OC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTgpOwogICAgICB9KSkoKTsKICAgIH0KICB9LAogIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7CiAgICAvLyDlnKjnu4Tku7bplIDmr4HkuYvliY0g5riF6Zmk6K6i6ZiF5raI5oGvCiAgICBQdWJTdWIudW5zdWJzY3JpYmUodGhpcy5wdWJTdWIpOwogIH0KfTs="},null]}