{"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\\EventManagement\\components\\AppointDialog\\components\\RescueInfoDialog\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\commandDispatch\\EventManagement\\components\\AppointDialog\\components\\RescueInfoDialog\\index.vue","mtime":1752142511495},{"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:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZXJyb3IuY2F1c2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5qb2luLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5maW5kLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5zb21lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaW5jbHVkZXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JzsKaW1wb3J0IFN1cGVyRGlhbG9nIGZyb20gJ0AvY29tcG9uZW50cy9TdXBlckRpYWxvZy9pbmRleC52dWUnOwppbXBvcnQgQ2FyQ2hvaWNlRGlhbG9nIGZyb20gJy4uL0NhckNob2ljZURpYWxvZyc7CmltcG9ydCBVc2VyQ2hvaWNlRGlhbG9nIGZyb20gJy4uL1VzZXJDaG9pY2VEaWFsb2cnOwppbXBvcnQgeyByZWZpbmVSZXF1ZXN0Qm9keSB9IGZyb20gJ0AvdXRpbHMvcmVxdWVzdFdyYXBwZXJzJzsKaW1wb3J0IHsgZ2V0RGljdGlvbmFyeUJ5Q29kZSB9IGZyb20gJ0AvdXRpbHMvZGljdGlvbmFyeSc7CmltcG9ydCB7IHRhYmxlRGF0YSBhcyByb2FkU2VjdGlvbkluZm9JbnRlciB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3JvYWRTZWN0aW9uSW5mbyc7CmltcG9ydCB7IHRhYmxlRGF0YSBhcyB0ZWFtRGF0YSB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3BhdHJvbEFuZFJlc2N1ZVRlYW1zTWdtdCc7CmltcG9ydCB7IHRhYmxlRGF0YSBhcyBhbG9uZ1JvdXRlSW5mb0ludGVyIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvYWxvbmdSb3V0ZUluZm8nOwppbXBvcnQgeyBwZXJzb25BbmRDYXJJbmZvIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2NvbW1hbmREaXNwYXRjaC9ldmVudFJlZ2lzdHJhdGlvbic7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnUmVzY3VlSW5mb0RpYWxvZycsCiAgaW5oZXJpdEF0dHJzOiBmYWxzZSwKICAvLyAgIG1peGluczogW1RhYmxlTWl4aW5dLAogIHByb3BzOiB7CiAgICBpc1Nob3c6IHsKICAgICAgZGVmYXVsdDogZmFsc2UsCiAgICAgIHR5cGU6IEJvb2xlYW4KICAgIH0sCiAgICB0b3A6IHsKICAgICAgZGVmYXVsdDogJzE0dmgnLAogICAgICB0eXBlOiBTdHJpbmcKICAgIH0sCiAgICB3aWR0aDogewogICAgICBkZWZhdWx0OiAnNjAlJywKICAgICAgdHlwZTogU3RyaW5nCiAgICB9LAogICAgaGVpZ2h0OiB7CiAgICAgIGRlZmF1bHQ6ICc2NXZoJywKICAgICAgdHlwZTogU3RyaW5nCiAgICB9LAogICAgY29uZmlybUNsb3NlRGlhbG9nOiB7CiAgICAgIGRlZmF1bHQ6IHRydWUsCiAgICAgIHR5cGU6IEJvb2xlYW4KICAgIH0sCiAgICByZXNjdWVJbmZvRGV0YWlsOiB7CiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge30sCiAgICAgIHR5cGU6IE9iamVjdAogICAgfSwKICAgIGJhc2VJbmZvOiB7CiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge30sCiAgICAgIHR5cGU6IE9iamVjdAogICAgfQogIH0sCiAgY29tcG9uZW50czogewogICAgU3VwZXJEaWFsb2c6IFN1cGVyRGlhbG9nLAogICAgQ2FyQ2hvaWNlRGlhbG9nOiBDYXJDaG9pY2VEaWFsb2csCiAgICBVc2VyQ2hvaWNlRGlhbG9nOiBVc2VyQ2hvaWNlRGlhbG9nCiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIHZhciB2YWxpZGF0ZVN0YXRpb24gPSBmdW5jdGlvbiB2YWxpZGF0ZVN0YXRpb24ocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSB7CiAgICAgIGlmIChfdGhpcy5yZXNjdWVJbmZvLnN0YXJ0UGVnID09PSB1bmRlZmluZWQgfHwgX3RoaXMucmVzY3VlSW5mby5zdGFydFBlZyA9PT0gJycgfHwgX3RoaXMucmVzY3VlSW5mby5zdGFydFBlZyA9PT0gbnVsbCkgewogICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcign6K+36L6T5YWl5byA5aeL54K55L2N5qGp5Y+35YWo5YC8JykpOwogICAgICB9IGVsc2UgaWYgKF90aGlzLnJlc2N1ZUluZm8uc3RhcnRQZWdBZGQgPT09IHVuZGVmaW5lZCB8fCBfdGhpcy5yZXNjdWVJbmZvLnN0YXJ0UGVnQWRkID09PSAnJyB8fCBfdGhpcy5yZXNjdWVJbmZvLnN0YXJ0UGVnQWRkID09PSBudWxsKSB7CiAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCfor7fovpPlhaXlvIDlp4vngrnkvY3moanlj7flhajlgLwhJykpOwogICAgICB9IGVsc2UgewogICAgICAgIGNhbGxiYWNrKCk7CiAgICAgIH0KICAgIH07CiAgICByZXR1cm4gewogICAgICB0YWJsZUxvYWRpbmc6IGZhbHNlLAogICAgICB0YWJsZU1heEhlaWdodDogJzYwMHB4JywKICAgICAgdGVhbURhdGFMaXN0OiBbXSwKICAgICAgcm9hZE9wdGlvbnM6IFtdLAogICAgICBhbG9uZ1JvdXRlSW5mb0RhdGE6IFtdLAogICAgICByZXNjdWVJbmZvOiB7CiAgICAgICAgcm9hZElkOiAnJywKICAgICAgICB0ZWFtSWQ6ICcnLAogICAgICAgIG9jY3VweTogWycwJ10sCiAgICAgICAgcmVzY3VlVHlwZTogMSwKICAgICAgICBjYXJDbGFzczogMSwKICAgICAgICBkaXJlY3Rpb246ICcxJywKICAgICAgICBjYXJUeXBlOiAxLAogICAgICAgIHJlc2N1ZVRpbWU6IG5ldyBEYXRlKCksCiAgICAgICAgY2FyOiB7fSwKICAgICAgICB1c2VyTmFtZTogJycsCiAgICAgICAgZGlzcGF0Y2hDYXJDb2RlOiAnJywKICAgICAgICB1c2VyOiBbXQogICAgICB9LAogICAgICByZXNjdWVJbmZvUnVsZXM6IHsKICAgICAgICByZXNjdWVUZWw6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfmiqXmoYjnlLXor53kuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfV0sCiAgICAgICAgcmVzY3VlVGltZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+aKpeahiOaXtumXtOS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10KICAgICAgICB9XSwKICAgICAgICBldmVudFR5cGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6nkuovku7bnsbvlnosnLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIHJlc2N1ZVR5cGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfmlZHmj7TnsbvlnovkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIHJvYWRJZDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+i3r+auteS/oeaBr+S4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgdGVhbUlkOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5rS+6YGj6Zif5LyN5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICBldmVudFRpbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfkuovku7blj5HnlJ/ml7bpl7TkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIGNhclVzZXJUZWw6IFt7CiAgICAgICAgICBwYXR0ZXJuOiAvXjEoM1swLTldfDRbNTddfDVbMC0zNS05XXw3WzA2NzhdfDhbMC05XSlcZHs4fSQvLAogICAgICAgICAgbWVzc2FnZTogJ+i9puS4u+eUteivnei+k+WFpeacieivrycsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XSwKICAgICAgICB1c2VyTmFtZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+a0vumBo+S6uuWRmOS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10KICAgICAgICB9XSwKICAgICAgICBkaXNwYXRjaENhckNvZGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfmtL7pgaPovabovobkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgfV0sCiAgICAgICAgcmVzY3VlU3RhdHVzOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup5pWR5o+054q25oCBJywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICBzdGFydFBlZzogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgdmFsaWRhdG9yOiB2YWxpZGF0ZVN0YXRpb24sCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XQogICAgICB9LAogICAgICAvLyDovabovoYKICAgICAgY2FyRGF0YTogW10sCiAgICAgIGNhckNob2ljZURpYWxvZzogZmFsc2UsCiAgICAgIC8vIOS6uuWRmAogICAgICB1c2VyQ2hvaWNlRGlhbG9nOiBmYWxzZSwKICAgICAgZGlzcGF0Y2hlczogW10sCiAgICAgIHBlcnNvbk9wdGlvbnM6IFtdCiAgICB9OwogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIGlzU2hvd0RpYWxvZzogewogICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICByZXR1cm4gdGhpcy5pc1Nob3c7CiAgICAgIH0sCiAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbCkgewogICAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZTppc1Nob3cnLCB2YWwpOwogICAgICB9CiAgICB9CiAgfSwKICBtZXRob2RzOiB7CiAgICBnZXREaWN0aW9uYXJ5QnlDb2RlOiBnZXREaWN0aW9uYXJ5QnlDb2RlLAogICAgY2hlY2tEaXNhYmxlZDogZnVuY3Rpb24gY2hlY2tEaXNhYmxlZCgpIHsKICAgICAgcmV0dXJuIHRoaXMucmVzY3VlSW5mby5vY2N1cHkuaW5jbHVkZXMoJzAnKTsKICAgIH0sCiAgICBnZXRDYXJDbGFzc2lmeTogZnVuY3Rpb24gZ2V0Q2FyQ2xhc3NpZnkodmFsdWUpIHsKICAgICAgdmFyIF9kaWN0JDsKICAgICAgdmFyIGRpY3RfYXJyID0gZ2V0RGljdGlvbmFyeUJ5Q29kZSgnZ3pjbCcpOwogICAgICB2YXIgZGljdCA9IGRpY3RfYXJyLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIHJldHVybiBpdGVtLnZhbHVlID09IHZhbHVlOwogICAgICB9KTsKICAgICAgcmV0dXJuIGRpY3QubGVuZ3RoID8gKF9kaWN0JCA9IGRpY3RbMF0pID09PSBudWxsIHx8IF9kaWN0JCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RpY3QkLmxvd2VyRGljWydnemN4J10gOiBbXTsKICAgIH0sCiAgICBjaGFlY2tDaGFuZ2U6IGZ1bmN0aW9uIGNoYWVja0NoYW5nZShlKSB7CiAgICAgIGlmICh0aGlzLnJlc2N1ZUluZm8ub2NjdXB5LmluY2x1ZGVzKCcwJykpIHsKICAgICAgICB0aGlzLnJlc2N1ZUluZm8ub2NjdXB5ID0gWycwJ107CiAgICAgIH0KICAgIH0sCiAgICAvLyDmiZPlvIDlvLnlsYLml7bop6blj5EKICAgIG9wZW46IGZ1bmN0aW9uIG9wZW4oKSB7CiAgICAgIHRoaXMuZ2V0Um9hZERhdGEoKTsKICAgICAgaWYgKHRoaXMucmVzY3VlSW5mb0RldGFpbC50eXBlID09PSAnZWRpdCcpIHsKICAgICAgICB0aGlzLnJlc2N1ZUluZm9EZXRhaWwub2NjdXB5ID0gdGhpcy5yZXNjdWVJbmZvRGV0YWlsLm9jY3VweS5zcGxpdCgnLCcpOwogICAgICAgIGlmICh0aGlzLnJlc2N1ZUluZm9EZXRhaWwucGVnVmFsKSB7CiAgICAgICAgICB2YXIgc3RhcnRQZWdBcnIgPSB0aGlzLnJlc2N1ZUluZm9EZXRhaWwucGVnVmFsLnNwbGl0KCcrJyk7CiAgICAgICAgICB0aGlzLiRzZXQodGhpcy5yZXNjdWVJbmZvLCAnc3RhcnRQZWcnLCBzdGFydFBlZ0FyclswXS5zbGljZSgxKSk7CiAgICAgICAgICB0aGlzLiRzZXQodGhpcy5yZXNjdWVJbmZvLCAnc3RhcnRQZWdBZGQnLCBzdGFydFBlZ0FyclsxXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJHNldCh0aGlzLnJlc2N1ZUluZm8sICdzdGFydFBlZycsICcnKTsKICAgICAgICAgIHRoaXMuJHNldCh0aGlzLnJlc2N1ZUluZm8sICdzdGFydFBlZ0FkZCcsICcnKTsKICAgICAgICB9CiAgICAgICAgdGhpcy4kc2V0KHRoaXMsICdyZXNjdWVJbmZvJywgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnJlc2N1ZUluZm9EZXRhaWwpKSk7CiAgICAgICAgdGhpcy5yb2FkQ2hhbmdlKHRoaXMucmVzY3VlSW5mb0RldGFpbC5yb2FkSWQsIHRydWUpOwogICAgICB9IGVsc2UgewogICAgICAgIGNvbnNvbGUubG9nKHRoaXMuYmFzZUluZm8sICd0aGlzLmJhc2VJbmZvJyk7CiAgICAgICAgLy8g6buY6K6k6LWL5YC8CiAgICAgICAgdGhpcy5yZXNjdWVJbmZvLnJvYWRJZCA9IHRoaXMuYmFzZUluZm8ucm9hZElkOwogICAgICAgIHRoaXMucm9hZENoYW5nZSh0aGlzLnJlc2N1ZUluZm8ucm9hZElkLCBmYWxzZSk7CiAgICAgICAgaWYgKHRoaXMucmVzY3VlSW5mby5yZXNjdWVUZWwpIHsKICAgICAgICAgIHRoaXMucmVzY3VlSW5mby5yZXNjdWVUZWwgPSB0aGlzLmJhc2VJbmZvLmV2ZW50VGVsOwogICAgICAgIH0KICAgICAgICB0aGlzLnJlc2N1ZUluZm8ucmVzY3VlVGltZSA9IHRoaXMuYmFzZUluZm8uZXZlbnRUaW1lOwogICAgICAgIHRoaXMucmVzY3VlSW5mby5kaXJlY3Rpb24gPSB0aGlzLmJhc2VJbmZvLmRpcmVjdGlvbjsKICAgICAgICBpZiAodGhpcy5iYXNlSW5mby5wZWdTVmFsKSB7CiAgICAgICAgICB2YXIgX3N0YXJ0UGVnQXJyID0gdGhpcy5iYXNlSW5mby5wZWdTVmFsLnNwbGl0KCcrJyk7CiAgICAgICAgICB0aGlzLiRzZXQodGhpcy5yZXNjdWVJbmZvLCAnc3RhcnRQZWcnLCBfc3RhcnRQZWdBcnJbMF0uc2xpY2UoMSkpOwogICAgICAgICAgdGhpcy4kc2V0KHRoaXMucmVzY3VlSW5mbywgJ3N0YXJ0UGVnQWRkJywgX3N0YXJ0UGVnQXJyWzFdKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy4kc2V0KHRoaXMucmVzY3VlSW5mbywgJ3N0YXJ0UGVnJywgJycpOwogICAgICAgICAgdGhpcy4kc2V0KHRoaXMucmVzY3VlSW5mbywgJ3N0YXJ0UGVnQWRkJywgJycpOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIC8vIOWxleekuuW8ueWxggogICAgc2hvd0RpYWxvZzogZnVuY3Rpb24gc2hvd0RpYWxvZyhkaWFsb2dOYW1lKSB7CiAgICAgIGlmICghZGlhbG9nTmFtZSkgcmV0dXJuOwogICAgICBpZiAoZGlhbG9nTmFtZSA9PT0gJ3VzZXJDaG9pY2UnKSB7CiAgICAgICAgaWYgKCF0aGlzLnJlc2N1ZUluZm8udGVhbUlkKSB7CiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCfor7flhYjpgInmi6nmlZHmj7TlpITnva7pmJ/kvI0nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpc1tkaWFsb2dOYW1lICsgJ0RpYWxvZyddID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpc1tkaWFsb2dOYW1lICsgJ0RpYWxvZyddID0gdHJ1ZTsKICAgICAgfQogICAgfSwKICAgIC8vIOi3r+auteWIl+ihqAogICAgZ2V0Um9hZERhdGE6IGZ1bmN0aW9uIGdldFJvYWREYXRhKCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBfeWllbGQkcm9hZFNlY3Rpb25JbmYsIF95aWVsZCRyb2FkU2VjdGlvbkluZjIsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIHJvYWRTZWN0aW9uSW5mb0ludGVyKHsKICAgICAgICAgICAgICAgIHBhZ2VCZWFuOiB7CiAgICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAtMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3lpZWxkJHJvYWRTZWN0aW9uSW5mID0gX2NvbnRleHQuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkcm9hZFNlY3Rpb25JbmYyID0gX3lpZWxkJHJvYWRTZWN0aW9uSW5mLnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCRyb2FkU2VjdGlvbkluZjIgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJHJvYWRTZWN0aW9uSW5mMjsKICAgICAgICAgICAgICBfdGhpczIucm9hZE9wdGlvbnMgPSByb3dzLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgaXRlbS5yb2FkTmFtZSA9IGl0ZW0ubmFtZSArICcgJyArIGl0ZW0uY29kZTsKICAgICAgICAgICAgICAgIHJldHVybiBpdGVtOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g6Lev5q615pa55rOVCiAgICByb2FkQ2hhbmdlOiBmdW5jdGlvbiByb2FkQ2hhbmdlKHZhbHVlKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICB2YXIgdHlwZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogZmFsc2U7CiAgICAgIGlmICghdHlwZSkgewogICAgICAgIHRoaXMucmVzY3VlSW5mby50ZWFtSWQgPSAnJzsKICAgICAgfQogICAgICB0aGlzLmdldFRlYW1EYXRhKHZhbHVlLCB0eXBlKTsKICAgICAgLy8g6YCa6L+H6Lev5q615L+h5oGv6I635Y+W5rK/57q/6K6+5aSH5L+h5oGvCiAgICAgIHRoaXMuZ2V0QWxvbmdSb3V0ZUluZm8odmFsdWUsIGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgdmFyIF90aGlzMyRyZXNjdWVJbmZvID0gX3RoaXMzLnJlc2N1ZUluZm8sCiAgICAgICAgICBzdGFydFBhdHJvbElkID0gX3RoaXMzJHJlc2N1ZUluZm8uc3RhcnRQYXRyb2xJZCwKICAgICAgICAgIGVuZFBhdHJvbElkID0gX3RoaXMzJHJlc2N1ZUluZm8uZW5kUGF0cm9sSWQ7CiAgICAgICAgLyoNCiAgICAgICAgICog5beh5qOA5byA5aeL77yM57uT5p2f56uZDQogICAgICAgICAqICovCiAgICAgICAgaWYgKHN0YXJ0UGF0cm9sSWQpIHsKICAgICAgICAgIGlmICghZGF0YS5zb21lKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICAgIHJldHVybiBpLmlkID09PSBzdGFydFBhdHJvbElkOwogICAgICAgICAgfSkpIHsKICAgICAgICAgICAgX3RoaXMzLnJlc2N1ZUluZm8uc3RhcnRQYXRyb2xJZCA9ICcnOwogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMy4kbWVzc2FnZS53YXJuaW5nKCfor7fph43mlrDpgInmi6nlvIDlp4vnq5kuLicpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGVuZFBhdHJvbElkKSB7CiAgICAgICAgICBpZiAoIWRhdGEuc29tZShmdW5jdGlvbiAoaSkgewogICAgICAgICAgICByZXR1cm4gaS5pZCA9PT0gZW5kUGF0cm9sSWQ7CiAgICAgICAgICB9KSkgewogICAgICAgICAgICBfdGhpczMucmVzY3VlSW5mby5lbmRQYXRyb2xJZCA9ICcnOwogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMy4kbWVzc2FnZS53YXJuaW5nKCfor7fph43mlrDpgInmi6nnu5PmnZ/nq5kuLicpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOmAmui/h+i3r+auteS/oeaBr+iOt+WPluayv+e6v+iuvuWkh+S/oeaBrwogICAgZ2V0QWxvbmdSb3V0ZUluZm86IGZ1bmN0aW9uIGdldEFsb25nUm91dGVJbmZvKHZhbHVlLCBjYWxsYmFjaykgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICB2YXIgX3dpcGVEYXRhLCBfeWllbGQkYWxvbmdSb3V0ZUluZm8sIF95aWVsZCRhbG9uZ1JvdXRlSW5mbzIsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF93aXBlRGF0YSA9IGZ1bmN0aW9uIF93aXBlRGF0YSgpIHsKICAgICAgICAgICAgICAgIF90aGlzNC5hbG9uZ1JvdXRlSW5mb0RhdGEgPSBbXTsKICAgICAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKF90aGlzNC5hbG9uZ1JvdXRlSW5mb0RhdGEpOwogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAxOwogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gNDsKICAgICAgICAgICAgICByZXR1cm4gYWxvbmdSb3V0ZUluZm9JbnRlcihyZWZpbmVSZXF1ZXN0Qm9keSh7CiAgICAgICAgICAgICAgICBxdWVyeXM6IFt7CiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ0lOJywKICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICdyb2FkX3NlZ21lbnRfaWRfJywKICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlCiAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICAgIH0pLCAnYWRkRWRpdCcpOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgX3lpZWxkJGFsb25nUm91dGVJbmZvID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJGFsb25nUm91dGVJbmZvMiA9IF95aWVsZCRhbG9uZ1JvdXRlSW5mby5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkYWxvbmdSb3V0ZUluZm8yID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCRhbG9uZ1JvdXRlSW5mbzI7CiAgICAgICAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2socm93cyk7CiAgICAgICAgICAgICAgX3RoaXM0LmFsb25nUm91dGVJbmZvRGF0YSA9IHJvd3M7CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxNDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDExOwogICAgICAgICAgICAgIF9jb250ZXh0Mi50MCA9IF9jb250ZXh0MlsiY2F0Y2giXSgxKTsKICAgICAgICAgICAgICAvLyDkuI3kuLror7fmsYLov4flv6vnu5PmnZ/nmoTmg4XlhrXkuIvvvIzph43nva4KICAgICAgICAgICAgICBpZiAoX2NvbnRleHQyLnQwLm1lc3NhZ2UgIT09ICdjYW5jZWxlZCcpIF93aXBlRGF0YSgpOwogICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUyLCBudWxsLCBbWzEsIDExXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDpgJrov4fot6/mrrXkv6Hmga/ojrflj5blt6Hmn6XmlZHmj7TpmJ/kvI3kv6Hmga8KICAgIGdldFRlYW1EYXRhOiBmdW5jdGlvbiBnZXRUZWFtRGF0YSh2YWx1ZSwgdHlwZSkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICB2YXIgX3lpZWxkJHRlYW1EYXRhLCBfeWllbGQkdGVhbURhdGEkcm93cywgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiB0ZWFtRGF0YShyZWZpbmVSZXF1ZXN0Qm9keSh7CiAgICAgICAgICAgICAgICBxdWVyeXM6IFt7CiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ0lOJywKICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICdyLmlkXycsCiAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZQogICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAgICB9KSwgJ2FkZEVkaXQnKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF95aWVsZCR0ZWFtRGF0YSA9IF9jb250ZXh0My5zZW50OwogICAgICAgICAgICAgIF95aWVsZCR0ZWFtRGF0YSRyb3dzID0gX3lpZWxkJHRlYW1EYXRhLnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCR0ZWFtRGF0YSRyb3dzID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCR0ZWFtRGF0YSRyb3dzOwogICAgICAgICAgICAgIF90aGlzNS50ZWFtT3B0aW9ucyA9IHJvd3M7CiAgICAgICAgICAgICAgX3RoaXM1LnRlYW1EYXRhTGlzdCA9IHJvd3MuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS50eXBlID09PSAnMic7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgaWYgKF90aGlzNS50ZWFtRGF0YUxpc3QubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgaWYgKCF0eXBlKSB7CiAgICAgICAgICAgICAgICAgIF90aGlzNS5yZXNjdWVJbmZvLnRlYW1JZCA9IF90aGlzNS50ZWFtRGF0YUxpc3RbMF0uaWQ7CiAgICAgICAgICAgICAgICAgIF90aGlzNS50ZWFtSWRDaGFuZ2UoX3RoaXM1LnRlYW1EYXRhTGlzdFswXS5pZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICB0ZWFtSWRDaGFuZ2U6IGZ1bmN0aW9uIHRlYW1JZENoYW5nZSh2YWx1ZSkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgdGhpcy5nZXRQZXJzb25BbmRDYXJJbmZvKHZhbHVlKTsKICAgICAgdmFyIHRlYW1JbmZvID0gdGhpcy50ZWFtT3B0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbS5pZCA9PT0gX3RoaXM2LnJlc2N1ZUluZm8udGVhbUlkOwogICAgICB9KVswXTsKICAgICAgdGhpcy5yZXNjdWVJbmZvLnRlYW1OYW1lID0gdGVhbUluZm8ubmFtZTsKICAgICAgdGhpcy4kc2V0KHRoaXMucmVzY3VlSW5mbywgJ3VzZXJOYW1lJywgJycpOwogICAgICB0aGlzLiRzZXQodGhpcy5yZXNjdWVJbmZvLCAnZGlzcGF0Y2hDYXJDb2RlJywgJycpOwogICAgICB0aGlzLnJlc2N1ZUluZm8udXNlciA9IFtdOwogICAgICB0aGlzLmRpc3BhdGNoZXMgPSBbXTsKICAgIH0sCiAgICAvLyDmoLnmja7pmJ/kvI1pZOafpeivouS6uuWRmOS/oeaBr+WPiui9pui+huS/oeaBrwogICAgZ2V0UGVyc29uQW5kQ2FySW5mbzogZnVuY3Rpb24gZ2V0UGVyc29uQW5kQ2FySW5mbyhpZCkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKICAgICAgcGVyc29uQW5kQ2FySW5mbyhpZCkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgdmFyIF9yZXMkdmFsdWUgPSByZXMudmFsdWUsCiAgICAgICAgICBfcmVzJHZhbHVlJG1lbWJlcnMgPSBfcmVzJHZhbHVlLm1lbWJlcnMsCiAgICAgICAgICBtZW1iZXJzID0gX3JlcyR2YWx1ZSRtZW1iZXJzID09PSB2b2lkIDAgPyBbXSA6IF9yZXMkdmFsdWUkbWVtYmVycywKICAgICAgICAgIF9yZXMkdmFsdWUkY2FycyA9IF9yZXMkdmFsdWUuY2FycywKICAgICAgICAgIGNhcnMgPSBfcmVzJHZhbHVlJGNhcnMgPT09IHZvaWQgMCA/IFtdIDogX3JlcyR2YWx1ZSRjYXJzOwogICAgICAgIF90aGlzNy5wZXJzb25PcHRpb25zID0gbWVtYmVycy5tYXAoZnVuY3Rpb24gKHBlcnNvbikgewogICAgICAgICAgcGVyc29uLmxhYmVsID0gcGVyc29uLnRlbCArICcgJyArIHBlcnNvbi5uYW1lOwogICAgICAgICAgcmV0dXJuIHBlcnNvbjsKICAgICAgICB9KTsKICAgICAgICBfdGhpczcuY2FyRGF0YSA9IGNhcnM7CiAgICAgIH0pOwogICAgfSwKICAgIHNpdGVDaGFuZ2U6IGZ1bmN0aW9uIHNpdGVDaGFuZ2UoZSwgdHlwZSkgewogICAgICB2YXIgc2l0ZUluZm8gPSB0aGlzLmFsb25nUm91dGVJbmZvRGF0YS5maW5kKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgcmV0dXJuIGl0ZW0uaWQgPT09IGU7CiAgICAgIH0pOwogICAgICB0aGlzLnJlc2N1ZUluZm9bIiIuY29uY2F0KHR5cGUsICJOYW1lIildID0gc2l0ZUluZm8ubmFtZTsKICAgIH0sCiAgICBoYW5kbGVDYXJTZWxlY3Q6IGZ1bmN0aW9uIGhhbmRsZUNhclNlbGVjdChfcmVmKSB7CiAgICAgIHZhciBjYXJOdW1iZXIgPSBfcmVmLmNhck51bWJlciwKICAgICAgICBjYXJDbGFzcyA9IF9yZWYuY2FyQ2xhc3M7CiAgICAgIHRoaXMuJHNldCh0aGlzLnJlc2N1ZUluZm8sICdkaXNwYXRjaENhckNvZGUnLCBjYXJOdW1iZXIpOwogICAgICB0aGlzLiRzZXQodGhpcy5yZXNjdWVJbmZvLCAnZGlzcGF0Y2hDYXJUeXBlJywgY2FyQ2xhc3MpOwogICAgICB0aGlzLmRpc3BhdGNoZXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIGl0ZW0uZGlzcGF0Y2hDYXJDb2RlID0gY2FyTnVtYmVyOwogICAgICAgIGl0ZW0uZGlzcGF0Y2hDYXJUeXBlID0gY2FyQ2xhc3M7CiAgICAgIH0pOwogICAgfSwKICAgIGhhbmRsZVVzZXJTZWxlY3Q6IGZ1bmN0aW9uIGhhbmRsZVVzZXJTZWxlY3QodXNlcikgewogICAgICB2YXIgX3RoaXMkcmVzY3VlSW5mbyA9IHRoaXMucmVzY3VlSW5mbywKICAgICAgICBfdGhpcyRyZXNjdWVJbmZvJGRpc3AgPSBfdGhpcyRyZXNjdWVJbmZvLmRpc3BhdGNoQ2FyQ29kZSwKICAgICAgICBkaXNwYXRjaENhckNvZGUgPSBfdGhpcyRyZXNjdWVJbmZvJGRpc3AgPT09IHZvaWQgMCA/ICcnIDogX3RoaXMkcmVzY3VlSW5mbyRkaXNwLAogICAgICAgIF90aGlzJHJlc2N1ZUluZm8kZGlzcDIgPSBfdGhpcyRyZXNjdWVJbmZvLmRpc3BhdGNoQ2FyVHlwZSwKICAgICAgICBkaXNwYXRjaENhclR5cGUgPSBfdGhpcyRyZXNjdWVJbmZvJGRpc3AyID09PSB2b2lkIDAgPyAnJyA6IF90aGlzJHJlc2N1ZUluZm8kZGlzcDI7CiAgICAgIGlmICh1c2VyLmxlbmd0aCA+IDApIHsKICAgICAgICB0aGlzLnJlc2N1ZUluZm8udXNlciA9IHVzZXI7CiAgICAgICAgdGhpcy5yZXNjdWVJbmZvLnVzZXJOYW1lID0gdXNlci5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIHJldHVybiBpdGVtLm5hbWU7CiAgICAgICAgfSkuam9pbignLCcpOwogICAgICAgIHRoaXMuZGlzcGF0Y2hlcyA9IHVzZXIubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICBkaXNwYXRjaENhckNvZGU6IGRpc3BhdGNoQ2FyQ29kZSwKICAgICAgICAgICAgZGlzcGF0Y2hDYXJUeXBlOiBkaXNwYXRjaENhclR5cGUsCiAgICAgICAgICAgIGRpc3BhdGNoVXNlcklkOiBpdGVtLmlkLAogICAgICAgICAgICBkaXNwYXRjaFVzZXJOYW1lOiBpdGVtLm5hbWUsCiAgICAgICAgICAgIGRpc3BhdGNoVXNlclRlbDogaXRlbS50ZWwKICAgICAgICAgIH07CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICBoYW5kbGVBcHBvaW50OiBmdW5jdGlvbiBoYW5kbGVBcHBvaW50KCkgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgdGhpcy4kcmVmcy5yZXNjdWVJbmZvLnZhbGlkYXRlKC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWYyID0gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KHZhbGlkLCBvYmplY3QpIHsKICAgICAgICAgIHZhciBkYXRhLCByb2FkSW5mbzsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkKSB7CiAgICAgICAgICAgICAgICAgIF90aGlzOC4kbWVzc2FnZS53YXJuaW5nKCJcdTY3MDkiLmNvbmNhdChPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCwgIlx1NEUyQVx1NUI1N1x1NkJCNVx1NjcyQVx1OTAxQVx1OEZDN1x1NjgyMVx1OUE4Q1x1RkYwQ1x1OEJGN1x1NkI2M1x1Nzg2RVx1NTg2Qlx1NTE5OVx1ODg2OFx1NTM1NVx1NTE4NVx1NUJCOVx1MzAwMiIpKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KF90aGlzOC5yZXNjdWVJbmZvKSk7CiAgICAgICAgICAgICAgICAgIGRhdGEub2NjdXB5ID0gZGF0YS5vY2N1cHkuam9pbignLCcpOwogICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGFydFBlZyAmJiBkYXRhLnN0YXJ0UGVnQWRkKSB7CiAgICAgICAgICAgICAgICAgICAgZGF0YS5wZWdWYWwgPSAnaycgKyAoZGF0YS5zdGFydFBlZyB8fCAnJykgKyAnKycgKyAoZGF0YS5zdGFydFBlZ0FkZCB8fCAnJyk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZGF0YS5yZXNjdWVUaW1lID0gbW9tZW50KGRhdGEucmVzY3VlVGltZSkuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyk7CiAgICAgICAgICAgICAgICAgIHJvYWRJbmZvID0gX3RoaXM4LnJvYWRPcHRpb25zLmZpbmQoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5pZCA9PT0gZGF0YS5yb2FkSWQ7CiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICBkYXRhLnJvYWROYW1lID0gcm9hZEluZm8ubmFtZTsKICAgICAgICAgICAgICAgICAgZGF0YS5yb2FkQ29kZSA9IHJvYWRJbmZvLmNvZGU7CiAgICAgICAgICAgICAgICAgIGRhdGEuY2FyID0gewogICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoQ2FyQ29kZTogZGF0YS5kaXNwYXRjaENhckNvZGUgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hDYXJUeXBlOiBkYXRhLmRpc3BhdGNoQ2FyVHlwZQogICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICBkYXRhLmRpc3BhdGNoZXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KF90aGlzOC5kaXNwYXRjaGVzKSk7CiAgICAgICAgICAgICAgICAgIF90aGlzOC4kY29uZmlybSgn56Gu6K6k5L+d5a2Y5pWR5o+05Y2V5L+h5oGv5ZCX77yfJywgJ+aPkOekuicsIHsKICAgICAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruiupCcsCiAgICAgICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgICAgICAgICAgIH0pLnRoZW4oLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkgewogICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM4LiRlbWl0KCdjb25maXJtJywgZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM4LmNsb3NlZCgpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgX2NhbGxlZTQpOwogICAgICAgICAgICAgICAgICB9KSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NS5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWU1KTsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeCwgX3gyKSB7CiAgICAgICAgICByZXR1cm4gX3JlZjIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgICB9KCkpOwogICAgfSwKICAgIC8vIOWFs+mXreW8ueWxguinpuWPkQogICAgY2xvc2VkOiBmdW5jdGlvbiBjbG9zZWQoKSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwogICAgICB2YXIgb3JnRGF0YSA9IHRoaXMub3JnRGF0YTsKICAgICAgLy8g6YeN572uZGF0YeS4reeahOaVsOaNrgogICAgICBPYmplY3QuYXNzaWduKHRoaXMuJGRhdGEsIHRoaXMuJG9wdGlvbnMuZGF0YS5jYWxsKHRoaXMpLCB7CiAgICAgICAgb3JnRGF0YTogb3JnRGF0YQogICAgICB9KTsKICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfdGhpczkkJHJlZnMkcmVzY3VlSW47CiAgICAgICAgKF90aGlzOSQkcmVmcyRyZXNjdWVJbiA9IF90aGlzOS4kcmVmcy5yZXNjdWVJbmZvKSA9PT0gbnVsbCB8fCBfdGhpczkkJHJlZnMkcmVzY3VlSW4gPT09IHZvaWQgMCB8fCBfdGhpczkkJHJlZnMkcmVzY3VlSW4uY2xlYXJWYWxpZGF0ZSgpOwogICAgICB9KTsKICAgICAgaWYgKHRoaXMuY29uZmlybUNsb3NlRGlhbG9nKSB0aGlzLmlzU2hvd0RpYWxvZyA9IGZhbHNlOwogICAgfQogIH0KfTs="},null]}