{"remainingRequest":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\bzzgj-fvue\\src\\views\\Device\\deviceManage\\components\\modle\\EquipFunctionDialog.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\src\\views\\Device\\deviceManage\\components\\modle\\EquipFunctionDialog.vue","mtime":1731062408816},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\babel.config.js","mtime":1725536844935},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9ienpnai1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b0NvbnN1bWFibGVBcnJheS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9ienpnai1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucHVzaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNwbGljZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmpzb24uc3RyaW5naWZ5LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc2V0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc2V0LmRpZmZlcmVuY2UudjIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuaW50ZXJzZWN0aW9uLnYyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc2V0LmlzLWRpc2pvaW50LWZyb20udjIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuaXMtc3Vic2V0LW9mLnYyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc2V0LmlzLXN1cGVyc2V0LW9mLnYyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc2V0LnN5bW1ldHJpYy1kaWZmZXJlbmNlLnYyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc2V0LnVuaW9uLnYyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvci5qcyI7CmltcG9ydCAicmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBQaHlzaWNhbE1vZGVsIGZyb20gJ0AvYXBpL2RldmljZS9QaHlzaWNhbE1vZGVsLmpzJzsKaW1wb3J0IGRpY3RVdGlscyBmcm9tICdAL2NvbXBvbmVudHMvZGljdC9EaWN0U2VsZWN0VXRpbHMuanMnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ0Z1bmN0aW9uRGlhbG9nJywKICBwcm9wczogewogICAgcElkOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogJycKICAgIH0sCiAgICBwYXJhbWV0ZXJJRDogewogICAgICB0eXBlOiBPYmplY3QsCiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogIH0sCiAgY29tcG9uZW50czoge30sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIGpzb25zOiB0cnVlLAogICAgICBkdHlwZTogdHJ1ZSwKICAgICAganNvbnMyOiB0cnVlLAogICAgICBkdHlwZTI6IHRydWUsCiAgICAgIC8vIOi+k+WHuuaYvuekugogICAgICB0aW1lOiAn5pe26Ze0JywKICAgICAgLy/ml7bpl7Qm5pel5pyf55qEbGFibGUKICAgICAgc2hvd0Zvcm1EYXRhOiAnJywKICAgICAgLy/nlKjkuo7liKTmlq3nsbvlnovmmL7npLrkuI3lkIzovpPlh7oKICAgICAgZGF0YXRpbWVzOiBbXSwKICAgICAgLy8g55So5LqO5Yqo5oCB57uR5a6a5pe26Ze0L+aXpeacn+eahOS4i+aLieahhgogICAgICBsYWJsZU5hbWU6ICcnLAogICAgICAvL+W4g+WwlCbmnprkuL5sYWJsZQogICAgICBib29sU2hvdzogZmFsc2UsCiAgICAgIC8v56aB55So5biD5bCU5YmN6Z2i55qEa2V5CiAgICAgIGRpYWxvZ0RhdGE6IFt7fV0sCiAgICAgIC8v5biD5bCUJuaemuS4vuWtmOWCqOaVsOaNrgoKICAgICAgLy8g5a2X5YW4CiAgICAgIGRhdGVGb3JtYXJ0czogW10sCiAgICAgIGRhdGVUaW1lRm9ybWFydHM6IFtdLAogICAgICBkYXRhVHlwZXM6IFtdLAogICAgICBkYXRhVW5pdHM6IFtdLAogICAgICBhY3RpdmVDb2xsYXBzZTogJzEnLAogICAgICB0aXRsZTogJ+aWsOWinicsCiAgICAgIHNob3dGb3JtRGlhOiBmYWxzZSwKICAgICAgcGFyYW1ldGVyczogewogICAgICAgIGNvZGU6ICcnLAogICAgICAgIGlzQXN5bjogMCwKICAgICAgICBtZW1vOiAnJywKICAgICAgICBuYW1lOiAnJywKICAgICAgICBvdXREYXRhRm9ybWFydDogJycsCiAgICAgICAgb3V0RGF0YVR5cGU6ICcnLAogICAgICAgIG91dERhdGFVbml0OiAnJywKICAgICAgICBwYXJhbXM6IFt7CiAgICAgICAgICBwYXJhbUNvZGU6ICcnLAogICAgICAgICAgcGFyYW1EYXRhRm9ybWFydDogJycsCiAgICAgICAgICBwYXJhbURhdGFUeXBlOiAnJywKICAgICAgICAgIHBhcmFtTmFtZTogJycsCiAgICAgICAgICAvLyDovpPlhaXmmL7npLoKICAgICAgICAgIHNob3dJbnB1dERhdGE6ICcnLAogICAgICAgICAgdGltZTI6ICfml7bpl7QnLAogICAgICAgICAgLy/ml7bpl7Qm5pel5pyf55qEbGFibGUKICAgICAgICAgIGRhdGF0aW1lczI6IFtdLAogICAgICAgICAgLy8g55So5LqO5Yqo5oCB57uR5a6a5pe26Ze0L+aXpeacn+eahOS4i+aLieahhgogICAgICAgICAgbGFibGVOYW1lMjogJycsCiAgICAgICAgICAvL+W4g+WwlCbmnprkuL5sYWJsZQogICAgICAgICAgYm9vbFNob3cyOiBmYWxzZSwKICAgICAgICAgIC8v56aB55So5biD5bCU5YmN6Z2i55qEa2V5CiAgICAgICAgICBkaWFsb2dEYXRhMjogW3t9XSAvL+W4g+WwlCbmnprkuL7lrZjlgqjmlbDmja4KICAgICAgICB9XSwKICAgICAgICBwcm9kdWN0SWQ6ICcnLAogICAgICAgIHNuOiAwCiAgICAgIH0sCiAgICAgIHJ1bGVzOiB7CiAgICAgICAgbmFtZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpeWKn+iDveWQjeensCcsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XSwKICAgICAgICBjb2RlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWl5Yqf6IO95qCH6K+GJywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dLAogICAgICAgIGlzQXN5bjogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeaYr+WQpuW8guatpScsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XSwKICAgICAgICBvdXREYXRhVHlwZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqei+k+WHuuWPguaVsOexu+WeiycsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XQogICAgICB9CiAgICB9OwogIH0sCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgIHJldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgIC8vIOaVsOaNruWNleS9jQogICAgICAgICAgICBfdGhpcy5kYXRhVW5pdHMgPSBkaWN0VXRpbHMuZ2V0RGljdEl0ZW1zRnJvbUNhY2hlKCdzamR3Jyk7CiAgICAgICAgICAgIC8vIOWxnuaAp+exu+WeiwogICAgICAgICAgICBfdGhpcy5kYXRhVHlwZXMgPSBkaWN0VXRpbHMuZ2V0RGljdEl0ZW1zRnJvbUNhY2hlKCdzeGx4Jyk7CiAgICAgICAgICAgIC8vIOaXtumXtOagvOW8jwogICAgICAgICAgICBfdGhpcy5kYXRlVGltZUZvcm1hcnRzID0gZGljdFV0aWxzLmdldERpY3RJdGVtc0Zyb21DYWNoZSgnc2pncycpOwogICAgICAgICAgICAvLyDml6XmnJ/moLzlvI8KICAgICAgICAgICAgX3RoaXMuZGF0ZUZvcm1hcnRzID0gZGljdFV0aWxzLmdldERpY3RJdGVtc0Zyb21DYWNoZSgncnFncycpOwogICAgICAgICAgY2FzZSA0OgogICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICB9CiAgICAgIH0sIF9jYWxsZWUpOwogICAgfSkpKCk7CiAgfSwKICBtZXRob2RzOiB7CiAgICAvLyDliqjmgIHmuLLmn5PmlbDmja7ljZXkvY0s5qC85byPID09PT4g6L6T5Ye65pi+56S6CiAgICBjaGFuZ2VEYXRhVHlwZTogZnVuY3Rpb24gY2hhbmdlRGF0YVR5cGUoaXRlbSkgewogICAgICBpZiAoaXRlbSA9PSAnJykgewogICAgICAgIHRoaXMuc2hvd0Zvcm1EYXRhID0gaXRlbTsKICAgICAgfQogICAgICBpZiAoaXRlbSA9PSAnc3RyaW5nJykgewogICAgICAgIHRoaXMuc2hvd0Zvcm1EYXRhID0gaXRlbTsKICAgICAgICB0aGlzLnBhcmFtZXRlcnMub3V0RGF0YUZvcm1hcnQgPSAnbnVsbCc7CiAgICAgIH0KICAgICAgaWYgKGl0ZW0gPT0gJ2ludCcpIHsKICAgICAgICB0aGlzLnNob3dGb3JtRGF0YSA9IGl0ZW07CiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLm91dERhdGFGb3JtYXJ0ID0gJ251bGwnOwogICAgICB9CiAgICAgIGlmIChpdGVtID09ICdmbG9hdCcpIHsKICAgICAgICB0aGlzLnNob3dGb3JtRGF0YSA9IGl0ZW07CiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLm91dERhdGFGb3JtYXJ0ID0gMDsKICAgICAgfQogICAgICBpZiAoaXRlbSA9PSAnYm9vbCcpIHsKICAgICAgICB0aGlzLnNob3dGb3JtRGF0YSA9IGl0ZW07CiAgICAgICAgdGhpcy5sYWJsZU5hbWUgPSAn5biD5bCU5YC8Oic7CiAgICAgICAgdGhpcy5ib29sU2hvdyA9IHRydWU7CiAgICAgICAgdGhpcy5kaWFsb2dEYXRhID0gW3t9LCB7fV07CiAgICAgICAgdGhpcy5kaWFsb2dEYXRhWzBdLmxhYmVsID0gJ+aYryc7CiAgICAgICAgdGhpcy5kaWFsb2dEYXRhWzFdLmxhYmVsID0gJ+WQpic7CiAgICAgIH0KICAgICAgaWYgKGl0ZW0gPT0gJ2RhdGUnKSB7CiAgICAgICAgdGhpcy5zaG93Rm9ybURhdGEgPSBpdGVtOwogICAgICAgIHRoaXMudGltZSA9ICfml6XmnJ8nOwogICAgICAgIHRoaXMuZGF0YXRpbWVzID0gdGhpcy5kYXRlRm9ybWFydHM7CiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLm91dERhdGFGb3JtYXJ0ID0gJ3l5eXktTU0tZGQnOwogICAgICB9CiAgICAgIGlmIChpdGVtID09ICdkYXRlVGltZScpIHsKICAgICAgICB0aGlzLnNob3dGb3JtRGF0YSA9IGl0ZW07CiAgICAgICAgdGhpcy50aW1lID0gJ+aXtumXtCc7CiAgICAgICAgdGhpcy5kYXRhdGltZXMgPSB0aGlzLmRhdGVUaW1lRm9ybWFydHM7CiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLm91dERhdGFGb3JtYXJ0ID0gJ3l5eXktTU0tZGQgSEg6bW06c3MnOwogICAgICB9CiAgICAgIGlmIChpdGVtID09ICdlbnVtJykgewogICAgICAgIHRoaXMuc2hvd0Zvcm1EYXRhID0gaXRlbTsKICAgICAgICB0aGlzLmxhYmxlTmFtZSA9ICfmnprkuL7pobk6JzsKICAgICAgICB0aGlzLmJvb2xTaG93ID0gZmFsc2U7CiAgICAgICAgdGhpcy5kaWFsb2dEYXRhID0gW3t9XTsKICAgICAgfQogICAgfSwKICAgIC8vIOWKqOaAgea4suafk+aVsOaNruWNleS9jSzmoLzlvI8gPT09PiDovpPlhaXmmL7npLoKICAgIGNoYW5nZUlucHV0VHlwZTogZnVuY3Rpb24gY2hhbmdlSW5wdXRUeXBlKGl0ZW0pIHsKICAgICAgaWYgKGl0ZW0ucGFyYW1EYXRhVHlwZSA9PSAnJykgewogICAgICAgIGl0ZW0uc2hvd0lucHV0RGF0YSA9IGl0ZW0ucGFyYW1EYXRhVHlwZTsKICAgICAgfQogICAgICBpZiAoaXRlbS5wYXJhbURhdGFUeXBlID09ICdzdHJpbmcnKSB7CiAgICAgICAgaXRlbS5zaG93SW5wdXREYXRhID0gaXRlbS5wYXJhbURhdGFUeXBlOwogICAgICAgIGl0ZW0ucGFyYW1EYXRhRm9ybWFydCA9ICdudWxsJzsKICAgICAgfQogICAgICBpZiAoaXRlbS5wYXJhbURhdGFUeXBlID09ICdpbnQnKSB7CiAgICAgICAgaXRlbS5zaG93SW5wdXREYXRhID0gaXRlbS5wYXJhbURhdGFUeXBlOwogICAgICAgIGl0ZW0ucGFyYW1EYXRhRm9ybWFydCA9ICdudWxsJzsKICAgICAgfQogICAgICBpZiAoaXRlbS5wYXJhbURhdGFUeXBlID09ICdmbG9hdCcpIHsKICAgICAgICBpdGVtLnNob3dJbnB1dERhdGEgPSBpdGVtLnBhcmFtRGF0YVR5cGU7CiAgICAgIH0KICAgICAgaWYgKGl0ZW0ucGFyYW1EYXRhVHlwZSA9PSAnZGF0ZScpIHsKICAgICAgICBpdGVtLnNob3dJbnB1dERhdGEgPSBpdGVtLnBhcmFtRGF0YVR5cGU7CiAgICAgICAgaXRlbS50aW1lMiA9ICfml6XmnJ8nOwogICAgICAgIGl0ZW0uZGF0YXRpbWVzMiA9IHRoaXMuZGF0ZUZvcm1hcnRzOwogICAgICB9CiAgICAgIGlmIChpdGVtLnBhcmFtRGF0YVR5cGUgPT0gJ2RhdGVUaW1lJykgewogICAgICAgIGl0ZW0uc2hvd0lucHV0RGF0YSA9IGl0ZW0ucGFyYW1EYXRhVHlwZTsKICAgICAgICBpdGVtLnRpbWUyID0gJ+aXtumXtCc7CiAgICAgICAgaXRlbS5kYXRhdGltZXMyID0gdGhpcy5kYXRlVGltZUZvcm1hcnRzOwogICAgICB9CiAgICAgIGlmIChpdGVtLnBhcmFtRGF0YVR5cGUgPT0gJ2Jvb2wnKSB7CiAgICAgICAgaXRlbS5zaG93SW5wdXREYXRhID0gaXRlbS5wYXJhbURhdGFUeXBlOwogICAgICAgIGl0ZW0ubGFibGVOYW1lMiA9ICfluIPlsJTlgLw6JzsKICAgICAgICBpdGVtLmJvb2xTaG93MiA9IHRydWU7CiAgICAgICAgaXRlbS5kaWFsb2dEYXRhMiA9IFt7fSwge31dOwogICAgICAgIGl0ZW0uZGlhbG9nRGF0YTJbMF0ubGFiZWwgPSAn5pivJzsKICAgICAgICBpdGVtLmRpYWxvZ0RhdGEyWzFdLmxhYmVsID0gJ+WQpic7CiAgICAgIH0KICAgICAgaWYgKGl0ZW0ucGFyYW1EYXRhVHlwZSA9PSAnZW51bScpIHsKICAgICAgICBpdGVtLnNob3dJbnB1dERhdGEgPSBpdGVtLnBhcmFtRGF0YVR5cGU7CiAgICAgICAgaXRlbS5sYWJsZU5hbWUyID0gJ+aemuS4vumhuTonOwogICAgICAgIGl0ZW0uYm9vbFNob3cyID0gZmFsc2U7CiAgICAgICAgaXRlbS5kaWFsb2dEYXRhMiA9IFt7fV07CiAgICAgIH0KICAgIH0sCiAgICAvKioNCiAgICAgKiDovpPlh7oNCiAgICAgKiAqLwogICAgLy8g5biD5bCUJuaemuS4vua3u+WKoAogICAgYWRkVGFibGU6IGZ1bmN0aW9uIGFkZFRhYmxlKCkgewogICAgICB0aGlzLmRpYWxvZ0RhdGEucHVzaCh7fSk7CiAgICB9LAogICAgLy8g5biD5bCUJuaemuS4vuWIoOmZpAogICAgcmVtb3ZlVGFibGU6IGZ1bmN0aW9uIHJlbW92ZVRhYmxlKGluZGV4KSB7CiAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEubGVuZ3RoID09IDEpIHsKICAgICAgICB0aGlzLnBhcmFtZXRlcnMub3V0RGF0YUZvcm1hcnQgPSAnJzsKICAgICAgICB0aGlzLmRpYWxvZ0RhdGEgPSBbe31dOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuZGlhbG9nRGF0YS5zcGxpY2UoaW5kZXgsIDEpOwogICAgICB9CiAgICB9LAogICAgLyoqDQogICAgICog6L6T5YWlDQogICAgICogKi8KICAgIC8vIOW4g+WwlCbmnprkuL7mt7vliqAKICAgIGFkZFRhYmxlMjogZnVuY3Rpb24gYWRkVGFibGUyKGl0ZW0pIHsKICAgICAgaXRlbS5kaWFsb2dEYXRhMi5wdXNoKHt9KTsKICAgIH0sCiAgICAvLyDluIPlsJQm5p6a5Li+5Yig6ZmkCiAgICByZW1vdmVUYWJsZTI6IGZ1bmN0aW9uIHJlbW92ZVRhYmxlMihpdGVtLCBpbmRleCkgewogICAgICBpZiAoaXRlbS5kaWFsb2dEYXRhMi5sZW5ndGggPT0gMSkgewogICAgICAgIGl0ZW0ucGFyYW1EYXRhRm9ybWFydCA9ICcnOwogICAgICAgIGl0ZW0uZGlhbG9nRGF0YTIgPSBbe31dOwogICAgICB9IGVsc2UgewogICAgICAgIGl0ZW0uZGlhbG9nRGF0YTIuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgfQogICAgfSwKICAgIC8qKg0KICAgICAqIOi+k+WFpea3u+WKoOmhuQ0KICAgICAqICAqLwogICAgLy/ovpPlhaXlj4LmlbDphY3nva7mt7vliqAKICAgIGFkZEl0ZW06IGZ1bmN0aW9uIGFkZEl0ZW0oKSB7CiAgICAgIHRoaXMucGFyYW1ldGVycy5wYXJhbXMucHVzaCh7CiAgICAgICAgcGFyYW1Db2RlOiBudWxsLAogICAgICAgIHBhcmFtRGF0YUZvcm1hcnQ6IG51bGwsCiAgICAgICAgcGFyYW1EYXRhVHlwZTogbnVsbCwKICAgICAgICBwYXJhbU5hbWU6IG51bGwKICAgICAgfSk7CiAgICB9LAogICAgLy/ovpPlhaXlj4LmlbDphY3nva7liKDpmaQKICAgIHJlbW92ZUl0ZW06IGZ1bmN0aW9uIHJlbW92ZUl0ZW0odmFsKSB7CiAgICAgIC8vIGNvbnNvbGUubG9nKHZhbCkKICAgICAgaWYgKHRoaXMucGFyYW1ldGVycy5wYXJhbXMubGVuZ3RoID09IDEpIHsKICAgICAgICB0aGlzLnBhcmFtZXRlcnMucGFyYW1zID0gW3sKICAgICAgICAgIHBhcmFtQ29kZTogbnVsbCwKICAgICAgICAgIHBhcmFtRGF0YUZvcm1hcnQ6IG51bGwsCiAgICAgICAgICBwYXJhbURhdGFUeXBlOiBudWxsLAogICAgICAgICAgcGFyYW1OYW1lOiBudWxsCiAgICAgICAgfV07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnBhcmFtcy5zcGxpY2UodmFsLCAxKTsKICAgICAgfQogICAgfSwKICAgIGFkZDogZnVuY3Rpb24gYWRkKCkgewogICAgICB0aGlzLnNob3dGb3JtRGlhID0gdHJ1ZTsKICAgIH0sCiAgICBoYW5kbGVDbG9zZTogZnVuY3Rpb24gaGFuZGxlQ2xvc2UoKSB7CiAgICAgIHRoaXMucGFyYW1ldGVycyA9IHsKICAgICAgICBjb2RlOiAnJywKICAgICAgICBpc0FzeW46IDAsCiAgICAgICAgbWVtbzogJycsCiAgICAgICAgbmFtZTogJycsCiAgICAgICAgb3V0RGF0YUZvcm1hcnQ6ICcnLAogICAgICAgIG91dERhdGFUeXBlOiAnJywKICAgICAgICBvdXREYXRhVW5pdDogJycsCiAgICAgICAgcGFyYW1zOiBbewogICAgICAgICAgZnVuY3Rpb25JZDogJycsCiAgICAgICAgICBtZW1vOiAnJywKICAgICAgICAgIHBhcmFtQ29kZTogJycsCiAgICAgICAgICBwYXJhbURhdGFGb3JtYXJ0OiAnJywKICAgICAgICAgIHBhcmFtRGF0YVR5cGU6ICcnLAogICAgICAgICAgcGFyYW1OYW1lOiAnJywKICAgICAgICAgIC8vIOi+k+WFpeaYvuekugogICAgICAgICAgc2hvd0lucHV0RGF0YTogJycsCiAgICAgICAgICB0aW1lMjogJ+aXtumXtCcsCiAgICAgICAgICAvL+aXtumXtCbml6XmnJ/nmoRsYWJsZQogICAgICAgICAgZGF0YXRpbWVzMjogW10sCiAgICAgICAgICAvLyDnlKjkuo7liqjmgIHnu5Hlrprml7bpl7Qv5pel5pyf55qE5LiL5ouJ5qGGCiAgICAgICAgICBsYWJsZU5hbWUyOiAnJywKICAgICAgICAgIC8v5biD5bCUJuaemuS4vmxhYmxlCiAgICAgICAgICBib29sU2hvdzI6IGZhbHNlLAogICAgICAgICAgLy/npoHnlKjluIPlsJTliY3pnaLnmoRrZXkKICAgICAgICAgIGRpYWxvZ0RhdGEyOiBbe31dIC8v5biD5bCUJuaemuS4vuWtmOWCqOaVsOaNrgogICAgICAgIH1dLAogICAgICAgIHByb2R1Y3RJZDogJycKICAgICAgfTsKICAgICAgdGhpcy50aXRsZSA9ICfmlrDlop4nOwogICAgICB0aGlzLnNob3dGb3JtRGlhID0gZmFsc2U7CiAgICAgIC8vIOi+k+WHugogICAgICB0aGlzLnNob3dGb3JtRGF0YSA9ICcnOwogICAgICB0aGlzLmJvb2xTaG93ID0gZmFsc2U7CiAgICAgIHRoaXMuZGF0YXRpbWVzID0gW107CiAgICAgIHRoaXMuZGlhbG9nRGF0YSA9IFt7fV07CiAgICB9LAogICAgaGFuZGxlU2F2ZTogZnVuY3Rpb24gaGFuZGxlU2F2ZSgpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgIC8vIOeUqOS6juagoemqjOW4g+WwlCbmnprkuL7mlbDmja4gPT09PiDovpPlh7oKICAgICAgaWYgKHRoaXMuc2hvd0Zvcm1EYXRhID09ICdib29sJyB8fCB0aGlzLnNob3dGb3JtRGF0YSA9PSAnZW51bScpIHsKICAgICAgICAvLyDmib7liLDlr7zoh7Tph43lpI3nmoTlhYPntKDvvIxJRAogICAgICAgIC8vIOWwhuaJgOacieWvueixoeeahElE6YeN5paw57uE5oiQ5pWw57uECiAgICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YVswXS5sYWJlbCB8fCB0aGlzLmRpYWxvZ0RhdGFbMF0udmFsdWUpIHsKICAgICAgICAgIHZhciBsYWJlbCA9IHRoaXMuZGlhbG9nRGF0YS5tYXAoZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgaWYgKGUubGFiZWwgPT0gJycgfHwgdHlwZW9mIGUubGFiZWwgPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICBfdGhpczIuZHR5cGUgPSBmYWxzZTsKICAgICAgICAgICAgICBfdGhpczIuanNvbnMgPSBmYWxzZTsKICAgICAgICAgICAgICBfdGhpczIuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgbWVzc2FnZTogJ+WQjeensOS4jeiDveS4uuepuu+8iOi+k+WHuu+8iScsCiAgICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gZS5sYWJlbDsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLmRpYWxvZ0RhdGEubWFwKGZ1bmN0aW9uICh2KSB7CiAgICAgICAgICAgIGlmICh2LnZhbHVlID09ICcnIHx8IHR5cGVvZiB2LnZhbHVlID09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgX3RoaXMyLmR0eXBlID0gZmFsc2U7CiAgICAgICAgICAgICAgX3RoaXMyLmpzb25zID0gZmFsc2U7CiAgICAgICAgICAgICAgX3RoaXMyLiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICflgLzkuI3og73kuLrnqboo6L6T5Ye6KScsCiAgICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gdi52YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgICBpZiAodGhpcy5kdHlwZSkgewogICAgICAgICAgICAvLyDpgJrov4dTZXTljrvpmaTmlbDnu4Tph43lpI3pobkKICAgICAgICAgICAgdmFyIGxhYmVsU2V0ID0gbmV3IFNldChsYWJlbCk7CiAgICAgICAgICAgIHZhciB2YWx1ZVNldCA9IG5ldyBTZXQodmFsdWUpOwogICAgICAgICAgICAvLyDmr5TovoPkuKTkuKrmlbDnu4TnmoTplb/luqbmnaXliKTmlq3mmK/lkKblrZjlnKjph43lpI3pobkKICAgICAgICAgICAgaWYgKF90b0NvbnN1bWFibGVBcnJheShsYWJlbFNldCkubGVuZ3RoICE9IGxhYmVsLmxlbmd0aCkgewogICAgICAgICAgICAgIHRoaXMuanNvbnMgPSBmYWxzZTsKICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICflrZjlnKjnm7jlkIzlkI3np7DvvIjovpPlh7rvvIknLAogICAgICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoX3RvQ29uc3VtYWJsZUFycmF5KHZhbHVlU2V0KS5sZW5ndGggIT0gdmFsdWUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgdGhpcy5qc29ucyA9IGZhbHNlOwogICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgbWVzc2FnZTogJ+WtmOWcqOebuOWQjOWAvO+8iOi+k+WHuu+8iScsCiAgICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSBlbHNlIGlmIChfdG9Db25zdW1hYmxlQXJyYXkobGFiZWxTZXQpLmxlbmd0aCA9PT0gbGFiZWwubGVuZ3RoICYmIF90b0NvbnN1bWFibGVBcnJheSh2YWx1ZVNldCkubGVuZ3RoID09PSB2YWx1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMub3V0RGF0YUZvcm1hcnQgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmRpYWxvZ0RhdGEpOwogICAgICAgICAgICAgIHRoaXMuanNvbnMgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLnBhcmFtZXRlcnMucGFyYW1zLmxlbmd0aDsgaW5kZXgrKykgewogICAgICAgIHZhciBCRXZhbHVlID0gdGhpcy5wYXJhbWV0ZXJzLnBhcmFtc1tpbmRleF07CiAgICAgICAgY29uc29sZS5sb2coQkV2YWx1ZSk7CiAgICAgICAgZGVsZXRlIEJFdmFsdWUuc2hvd0lucHV0RGF0YTsKICAgICAgICBkZWxldGUgQkV2YWx1ZS5kYXRhdGltZXMyOwogICAgICAgIGRlbGV0ZSBCRXZhbHVlLmxhYmxlTmFtZTI7CiAgICAgICAgZGVsZXRlIEJFdmFsdWUuYm9vbFNob3cyOwogICAgICAgIGRlbGV0ZSBCRXZhbHVlLnRpbWUyOwogICAgICAgIGlmIChCRXZhbHVlLnBhcmFtRGF0YVR5cGUgPT0gJ3N0cmluZycgfHwgQkV2YWx1ZS5wYXJhbURhdGFUeXBlID09ICdpbnQnIHx8IEJFdmFsdWUucGFyYW1EYXRhVHlwZSA9PSAnZmxvYXQnKSB7CiAgICAgICAgICBkZWxldGUgQkV2YWx1ZS5kaWFsb2dEYXRhMjsKICAgICAgICB9CiAgICAgICAgLy8g55So5LqO5qCh6aqM5biD5bCUJuaemuS4vuaVsOaNriA9PT0+IOi+k+WFpQogICAgICAgIGlmIChCRXZhbHVlLnBhcmFtRGF0YVR5cGUgPT0gJ2Jvb2wnIHx8IEJFdmFsdWUucGFyYW1EYXRhVHlwZSA9PSAnZW51bScpIHsKICAgICAgICAgIGlmIChCRXZhbHVlLmRpYWxvZ0RhdGEyWzBdLmxhYmVsIHx8IEJFdmFsdWUuZGlhbG9nRGF0YTJbMF0udmFsdWUpIHsKICAgICAgICAgICAgdmFyIF9sYWJlbCA9IEJFdmFsdWUuZGlhbG9nRGF0YTIubWFwKGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgaWYgKGUubGFiZWwgPT0gJycgfHwgdHlwZW9mIGUubGFiZWwgPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIF90aGlzMi5kdHlwZTIgPSBmYWxzZTsKICAgICAgICAgICAgICAgIF90aGlzMi5qc29uczIgPSBmYWxzZTsKICAgICAgICAgICAgICAgIF90aGlzMi4kbWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICflkI3np7DkuI3og73kuLrnqbrvvIjovpPlhaXvvIknLAogICAgICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5sYWJlbDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB2YXIgX3ZhbHVlID0gQkV2YWx1ZS5kaWFsb2dEYXRhMi5tYXAoZnVuY3Rpb24gKHYpIHsKICAgICAgICAgICAgICBpZiAodi52YWx1ZSA9PSAnJyB8fCB0eXBlb2Ygdi52YWx1ZSA9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgX3RoaXMyLmR0eXBlMiA9IGZhbHNlOwogICAgICAgICAgICAgICAgX3RoaXMyLmpzb25zMiA9IGZhbHNlOwogICAgICAgICAgICAgICAgX3RoaXMyLiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ+WAvOS4jeiDveS4uuepuu+8iOi+k+WFpe+8iScsCiAgICAgICAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiB2LnZhbHVlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmICh0aGlzLmR0eXBlMikgewogICAgICAgICAgICAgIC8vIOmAmui/h1NldOWOu+mZpOaVsOe7hOmHjeWkjemhuQogICAgICAgICAgICAgIHZhciBfbGFiZWxTZXQgPSBuZXcgU2V0KF9sYWJlbCk7CiAgICAgICAgICAgICAgdmFyIF92YWx1ZVNldCA9IG5ldyBTZXQoX3ZhbHVlKTsKICAgICAgICAgICAgICAvLyDmr5TovoPkuKTkuKrmlbDnu4TnmoTplb/luqbmnaXliKTmlq3mmK/lkKblrZjlnKjph43lpI3pobkKICAgICAgICAgICAgICBpZiAoX3RvQ29uc3VtYWJsZUFycmF5KF9sYWJlbFNldCkubGVuZ3RoICE9IF9sYWJlbC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHRoaXMuanNvbnMyID0gZmFsc2U7CiAgICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ+WtmOWcqOebuOWQjOWQjeensO+8iOi+k+WFpe+8iScsCiAgICAgICAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfSBlbHNlIGlmIChfdG9Db25zdW1hYmxlQXJyYXkoX3ZhbHVlU2V0KS5sZW5ndGggIT0gX3ZhbHVlLmxlbmd0aCkgewogICAgICAgICAgICAgICAgdGhpcy5qc29uczIgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgICBtZXNzYWdlOiAn5a2Y5Zyo55u45ZCM5YC877yI6L6T5YWl77yJJywKICAgICAgICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9IGVsc2UgaWYgKF90b0NvbnN1bWFibGVBcnJheShfbGFiZWxTZXQpLmxlbmd0aCA9PT0gX2xhYmVsLmxlbmd0aCAmJiBfdG9Db25zdW1hYmxlQXJyYXkoX3ZhbHVlU2V0KS5sZW5ndGggPT09IF92YWx1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKEJFdmFsdWUuZGlhbG9nRGF0YTIpOwogICAgICAgICAgICAgICAgQkV2YWx1ZS5wYXJhbURhdGFGb3JtYXJ0ID0gSlNPTi5zdHJpbmdpZnkoQkV2YWx1ZS5kaWFsb2dEYXRhMik7CiAgICAgICAgICAgICAgICB0aGlzLmpzb25zMiA9IHRydWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvbnNvbGUubG9nKEJFdmFsdWUsICd2YWx1ZScpOwogICAgICB9CiAgICAgIHRoaXMucGFyYW1ldGVycy5wcm9kdWN0SWQgPSB0aGlzLnBhcmFtZXRlcklELmlkOwogICAgICB0aGlzLiRyZWZzLmZvcm1JbmZvLnZhbGlkYXRlKGZ1bmN0aW9uICh2YWxpZCkgewogICAgICAgIGlmICh2YWxpZCkgewogICAgICAgICAgdmFyIG1ldGhvZDsKICAgICAgICAgIGlmIChfdGhpczIuanNvbnMyICYmIF90aGlzMi5qc29ucykgewogICAgICAgICAgICBpZiAoIV90aGlzMi5wYXJhbWV0ZXJzLmlkKSB7CiAgICAgICAgICAgICAgLy8g5paw5aKeCiAgICAgICAgICAgICAgbWV0aG9kID0gUGh5c2ljYWxNb2RlbC5BZGRGdW5jdGlvbjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoISFfdGhpczIucGFyYW1ldGVycy5pZCkgewogICAgICAgICAgICAgIC8vIOS/ruaUuQogICAgICAgICAgICAgIG1ldGhvZCA9IFBoeXNpY2FsTW9kZWwubW9kaWZ5RnVuY3Rpb247CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbWV0aG9kKF90aGlzMi5wYXJhbWV0ZXJzLCBmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0ZSkgewogICAgICAgICAgICAgICAgX3RoaXMyLiRub3RpZnkoewogICAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsCiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IF90aGlzMi50aXRsZSArICfmiJDlip8nLAogICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjAwMAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBfdGhpczIuaGFuZGxlQ2xvc2UoKTsKICAgICAgICAgICAgICAgIF90aGlzMi4kZW1pdCgnbG9hZERhdGEnKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX3RoaXMyLiRtZXNzYWdlLndhcm5pbmcocmVzcG9uc2UubWVzc2FnZSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIFVwZGF0ZTogZnVuY3Rpb24gVXBkYXRlKHJvdykgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgLy8gY29uc29sZS5sb2cocm93KQogICAgICB0aGlzLnRpdGxlID0gJ+S/ruaUuSc7CiAgICAgIC8qKg0KICAgICAgICog5Zue5pi+6LWL5YC8DQogICAgICAgKiAqLwogICAgICB0aGlzLnBhcmFtZXRlcnMuY29kZSA9IHJvdy5jb2RlOwogICAgICB0aGlzLnBhcmFtZXRlcnMubmFtZSA9IHJvdy5uYW1lOwogICAgICB0aGlzLnBhcmFtZXRlcnMub3V0RGF0YVR5cGUgPSByb3cub3V0RGF0YVR5cGU7CiAgICAgIHRoaXMucGFyYW1ldGVycy5vdXREYXRhRm9ybWFydCA9IHJvdy5vdXREYXRhRm9ybWFydDsKICAgICAgdGhpcy5wYXJhbWV0ZXJzLm91dERhdGFVbml0ID0gcm93Lm91dERhdGFVbml0OwogICAgICB0aGlzLnBhcmFtZXRlcnMubWVtbyA9IHJvdy5tZW1vOwogICAgICB0aGlzLnBhcmFtZXRlcnMuY29kZSA9IHJvdy5jb2RlOwogICAgICB0aGlzLnBhcmFtZXRlcnMuaXNBc3luID0gTnVtYmVyKHJvdy5pc0FzeW4pOwogICAgICB0aGlzLnBhcmFtZXRlcnMuaWQgPSByb3cuaWQ7CiAgICAgIHRoaXMucGFyYW1ldGVycy5zbiA9IHJvdy5zbjsKICAgICAgLy8g6I635Y+W6L6T5YWl6YWN572u5pWw5o2uCiAgICAgIFBoeXNpY2FsTW9kZWwuRnVuY3Rpb25EZXRhaWxzKHJvdy5pZCwgZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzMy5wYXJhbWV0ZXJzLnBhcmFtcyA9IHJlcy5wYXJhbXM7CiAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IF90aGlzMy5wYXJhbWV0ZXJzLnBhcmFtcy5sZW5ndGg7IGluZGV4KyspIHsKICAgICAgICAgIHZhciBpdGVtID0gX3RoaXMzLnBhcmFtZXRlcnMucGFyYW1zW2luZGV4XTsKICAgICAgICAgIGlmIChpdGVtLnBhcmFtRGF0YVR5cGUgPT0gJ2Jvb2wnKSB7CiAgICAgICAgICAgIGl0ZW0ubGFibGVOYW1lMiA9ICfluIPlsJTlgLw6JzsKICAgICAgICAgICAgaXRlbS5zaG93SW5wdXREYXRhID0gaXRlbS5wYXJhbURhdGFUeXBlOwogICAgICAgICAgICBpdGVtLmJvb2xTaG93MiA9IHRydWU7CiAgICAgICAgICAgIGl0ZW0uZGlhbG9nRGF0YTIgPSBKU09OLnBhcnNlKGl0ZW0ucGFyYW1EYXRhRm9ybWFydCk7CiAgICAgICAgICAgIGl0ZW0ucGFyYW1EYXRhRm9ybWFydCA9IG51bGw7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoaXRlbS5wYXJhbURhdGFUeXBlID09ICdlbnVtJykgewogICAgICAgICAgICBpdGVtLmxhYmxlTmFtZTIgPSAn5p6a5Li+6aG5Oic7CiAgICAgICAgICAgIGl0ZW0uc2hvd0lucHV0RGF0YSA9IGl0ZW0ucGFyYW1EYXRhVHlwZTsKICAgICAgICAgICAgaXRlbS5ib29sU2hvdzIgPSBmYWxzZTsKICAgICAgICAgICAgaXRlbS5kaWFsb2dEYXRhMiA9IEpTT04ucGFyc2UoaXRlbS5wYXJhbURhdGFGb3JtYXJ0KTsKICAgICAgICAgICAgaXRlbS5wYXJhbURhdGFGb3JtYXJ0ID0gbnVsbDsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChpdGVtLnBhcmFtRGF0YVR5cGUgPT0gJ2Zsb2F0JykgewogICAgICAgICAgICBpdGVtLnNob3dJbnB1dERhdGEgPSBpdGVtLnBhcmFtRGF0YVR5cGU7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoaXRlbS5wYXJhbURhdGFUeXBlID09ICdkYXRlJykgewogICAgICAgICAgICBpdGVtLnNob3dJbnB1dERhdGEgPSBpdGVtLnBhcmFtRGF0YVR5cGU7CiAgICAgICAgICAgIGl0ZW0udGltZTIgPSAn5pel5pyfJzsKICAgICAgICAgICAgaXRlbS5kYXRhdGltZXMyID0gX3RoaXMzLmRhdGVGb3JtYXJ0czsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChpdGVtLnBhcmFtRGF0YVR5cGUgPT0gJ2RhdGVUaW1lJykgewogICAgICAgICAgICBpdGVtLnNob3dJbnB1dERhdGEgPSBpdGVtLnBhcmFtRGF0YVR5cGU7CiAgICAgICAgICAgIGl0ZW0udGltZTIgPSAn5pe26Ze0JzsKICAgICAgICAgICAgaXRlbS5kYXRhdGltZXMyID0gX3RoaXMzLmRhdGVUaW1lRm9ybWFydHM7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvbnNvbGUubG9nKF90aGlzMy5wYXJhbWV0ZXJzKTsKICAgICAgfSk7CiAgICAgIHRoaXMuc2hvd0Zvcm1EaWEgPSB0cnVlOwogICAgICAvKioqDQogICAgICAgKiDovpPlh7rlm57mmL4NCiAgICAgICAqICovCiAgICAgIHRoaXMuc2hvd0Zvcm1EYXRhID0gcm93Lm91dERhdGFUeXBlOwogICAgICAvLyDluIPlsJTlgLzlm57mmL4KICAgICAgaWYgKHJvdy5vdXREYXRhVHlwZSA9PSAnYm9vbCcpIHsKICAgICAgICB0aGlzLmxhYmxlTmFtZSA9ICfluIPlsJTlgLw6JzsKICAgICAgICB0aGlzLmJvb2xTaG93ID0gdHJ1ZTsKICAgICAgICB0aGlzLmRpYWxvZ0RhdGEgPSBKU09OLnBhcnNlKHJvdy5vdXREYXRhRm9ybWFydCk7CiAgICAgIH0KICAgICAgLy8g5p6a5Li+6aG55Zue5pi+CiAgICAgIGlmIChyb3cub3V0RGF0YVR5cGUgPT0gJ2VudW0nKSB7CiAgICAgICAgdGhpcy5sYWJsZU5hbWUgPSAn5p6a5Li+6aG5Oic7CiAgICAgICAgdGhpcy5ib29sU2hvdyA9IGZhbHNlOwogICAgICAgIHRoaXMuZGlhbG9nRGF0YSA9IEpTT04ucGFyc2Uocm93Lm91dERhdGFGb3JtYXJ0KTsKICAgICAgfQogICAgICBpZiAocm93Lm91dERhdGFUeXBlID09ICdkYXRlJykgewogICAgICAgIHRoaXMudGltZSA9ICfml6XmnJ8nOwogICAgICAgIHRoaXMuZGF0YXRpbWVzID0gdGhpcy5kYXRlRm9ybWFydHM7CiAgICAgIH0KICAgICAgaWYgKHJvdy5vdXREYXRhVHlwZSA9PSAnZGF0ZVRpbWUnKSB7CiAgICAgICAgdGhpcy50aW1lID0gJ+aXtumXtCc7CiAgICAgICAgdGhpcy5kYXRhdGltZXMgPSB0aGlzLmRhdGVUaW1lRm9ybWFydHM7CiAgICAgIH0KICAgIH0KICB9Cn07"},null]}