{"remainingRequest":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\HomePage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\HomePage\\index.vue","mtime":1741928431670},{"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:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQge2RpY3Rpb25hcnlFc2NhcGV9IGZyb20gJ0AvdXRpbHMvZGljdGlvbmFyeScNCmltcG9ydCB7DQogIGdldFRyZWUsDQogIHRhYmxlRGF0YWEsDQogIHRhYmxlRGF0YWFMaXN0LA0KICB0YWJsZURhdGFiLA0KICB0YWJsZURhdGFiTGlzdCwNCiAgdGFibGVEYXRhYywNCiAgdGFibGVEYXRhY0xpc3QNCn0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2hvbWVQYWdlJw0KaW1wb3J0IHtUYWJsZU1peGlufSBmcm9tICdAL21peGlucy90YWJsZU1peGluJw0KaW1wb3J0IHBhZ2luYXRpb24gZnJvbSAnQC9jb21wb25lbnRzL1N1cGVyUGFnaW5hdGlvbi9pbmRleC52dWUnDQoNCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogJ0hvbWVQYWdlJywNCiAgY29tcG9uZW50czoge3BhZ2luYXRpb259LA0KICBtaXhpbnM6IFtUYWJsZU1peGluXSwNCiAgY29tcHV0ZWQ6IHt9LA0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICBwYWdlUmVzdWx0OiB7DQogICAgICAgIHR5cGVvZjogT2JqZWN0LA0KICAgICAgICBkZWZhdWx0OiBfID0+ICh7DQogICAgICAgICAgcGFnZTogMSwNCiAgICAgICAgICBwYWdlU2l6ZTogMjAsDQogICAgICAgICAgdG90YWw6IDANCiAgICAgICAgfSkNCiAgICAgIH0sDQogICAgICBwYXJhbXM6IHsNCiAgICAgICAgcGFnZUJlYW46IHtwYWdlU2l6ZTogMTAsIHBhZ2U6IDEsIHRvdGFsOiAwfQ0KICAgICAgfSwNCiAgICAgIHRhc2tMaXN0b3RoZXJhYWE6IFtdLC8v5Lu75Yqh5YiX6KGoDQogICAgICB0YXNrTGlzdG90aGVyYmJiOiBbXSwvL+S6i+S7tuafpeivouWIl+ihqA0KICAgICAgdGltZVNob3c6ICdkYXknLCAvLyDpu5jorqTpgInmi6nigJzml6XigJ0NCiAgICAgIHRhc2tMaXN0b3RoZXJjY2M6IFtdLC8v5byC5bi45L+h5oGv5YiX6KGoDQogICAgICBwYWdpbmF0aW9uQWFhOiB7cGFnZVNpemU6IDEwLCBwYWdlOiAxLCB0b3RhbDogMH0sIC8vIHRhc2tMaXN0b3RoZXJhYWEg55qE5YiG6aG15Y+C5pWwDQogICAgICBwYWdpbmF0aW9uQmJiOiB7cGFnZVNpemU6IDEwLCBwYWdlOiAxLCB0b3RhbDogMH0sIC8vIHRhc2tMaXN0b3RoZXJiYmIg55qE5YiG6aG15Y+C5pWwDQogICAgICBwYWdpbmF0aW9uQ2NjOiB7cGFnZVNpemU6IDEwLCBwYWdlOiAxLCB0b3RhbDogMH0sIC8vIHRhc2tMaXN0b3RoZXJjY2Mg55qE5YiG6aG15Y+C5pWwDQogICAgICBldmVudFN0YXR1czogbnVsbCwgLy8g5b2T5YmN54K55Ye755qE5LqL5Lu254q25oCBLeS6i+S7tuafpeivouWIl+ihqA0KICAgICAgY3VycmVudFR5cGU6IDEsIC8vIOm7mOiupOexu+Wei+S4uuW3oeafpeS7u+WKoQ0KICAgICAgYmFja2dyb3VuZEltYWdlVXJsOiByZXF1aXJlKCdAL2Fzc2V0cy9pbWcvaG9tZVBhZ2UvZGFuZy5wbmcnKSwNCiAgICAgIHRhYmxlRGF0YTogW10sDQogICAgICBjdXJyZW50TWVudTogJ2hvbWVQYWdlJywNCiAgICAgIHRhc2tMaXN0OiBbXSwvL+S6i+S7tuafpeivog0KICAgICAgdGFza0xpc3RvdGhlcjogW10sLy/lvZPliY3ku7vliqENCiAgICAgIHRhc2tMaXN0b3RoZXJMaXN0OiBbXSwvL+W8guW4uOS/oeaBrw0KICAgICAgY3VycmVudEFjdGl2ZUluZGV4OiAtMSwgLy8g5paw5aKe5Y+Y6YeP77yM6K6w5b2V5b2T5YmN54K55Ye755qE57Si5byVDQogICAgICBvcmdMaXN0OiBbXSwNCiAgICAgIGN1cnJlbnRTdGFydFRpbWU6ICcnLCAvLyDmlrDlop7lj5jph4/vvIzlrZjlgqjlvZPliY3lvIDlp4vml7bpl7QNCiAgICAgIGN1cnJlbnRFbmRUaW1lOiAnJyAvLyDmlrDlop7lj5jph4/vvIzlrZjlgqjlvZPliY3nu5PmnZ/ml7bpl7QNCiAgICB9DQogIH0sDQogIGNyZWF0ZWQoKSB7DQogICAgLy8g5Yid5aeL5YyW6buY6K6k6YCJ5Lit4oCc5pel4oCdDQogICAgdGhpcy50aW1lU2hvdyA9ICdkYXknDQogICAgLy8g6I635Y+W5b2T5YmN5pel5pyfDQogICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKQ0KICAgIGNvbnN0IHllYXIgPSBub3cuZ2V0RnVsbFllYXIoKQ0KICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKG5vdy5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKSAvLyDmnIjku73ku44gMCDlvIDlp4vvvIzpnIDopoEgKzENCiAgICBjb25zdCBkYXkgPSBTdHJpbmcobm93LmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKQ0KICAgIHRoaXMuY3VycmVudFN0YXJ0VGltZSA9IGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWANCiAgICB0aGlzLmN1cnJlbnRFbmRUaW1lID0gdGhpcy5jdXJyZW50U3RhcnRUaW1lDQoNCiAgICAvLyDpu5jorqTngrnlh7vigJzkuovku7bmgLvmlbAo5Lu2KeKAnQ0KICAgIHRoaXMuaGFuZGxlVGFza0NsaWNrKDApIC8vIDAg6KGo56S65LqL5Lu25oC75pWwDQogICAgdGhpcy50YXNrTGlzdG90aGVyRGF0YSgpDQogICAgdGhpcy50YXNrTGlzdG90aGVyTGlzdERhdGEoKQ0KICAgIHRoaXMudGFza0xpc3REYXRhKHRoaXMuY3VycmVudFN0YXJ0VGltZSwgdGhpcy5jdXJyZW50RW5kVGltZSkNCiAgICB0aGlzLkxpc3RhYWEoKQ0KICAgIHRoaXMuTGlzdGJiYih0aGlzLmN1cnJlbnRTdGFydFRpbWUsIHRoaXMuY3VycmVudEVuZFRpbWUpDQogICAgdGhpcy5MaXN0Y2NjKCkNCiAgICB0aGlzLmdldE9yZ1RyZWVEYXRhKCkNCiAgfSwNCiAgd2F0Y2g6IHsNCiAgICAvLyDnm5HlkKwgdGltZVNob3cg55qE5Y+Y5YyWDQogICAgdGltZVNob3cobmV3VmFsKSB7DQogICAgICB0aGlzLmhhbmRsZVRpbWVDaGFuZ2UobmV3VmFsKSAvLyDosIPnlKjml7bpl7Tlj5jljJblpITnkIbmlrnms5UNCiAgICB9DQogICAgLy8gdGhpcy5vcGVuUGFnZSgpDQogIH0sDQogIG1vdW50ZWQoKSB7DQogICAgbGV0IGN1cnJlbnRVc2VyID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY3VycmVudFVzZXJEZXRhaWwnKQ0KICAgIHRoaXMubmFtZSA9IEpTT04ucGFyc2UoY3VycmVudFVzZXIpLnVzZXIuZnVsbG5hbWUNCiAgICB0aGlzLmRlcHROYW1lID0gSlNPTi5wYXJzZShjdXJyZW50VXNlcikub3JnWzBdLmRlcHROYW1lDQogICAgdGhpcy5vcmdOYW1lID0gSlNPTi5wYXJzZShjdXJyZW50VXNlcikub3JnWzBdLm9yZ05hbWUNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIC8vIOi3s+i9rOWIsOS6i+S7tueZu+iusOmhtemdog0KICAgIG5hdmlnYXRlVG9FdmVudFJlZ2lzdHJhdGlvbmEoKSB7DQogICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7cGF0aDogJ3BhdHJvbEFuZFJlc2N1ZS9yb2FkV2F0Y2gvaW5zcGVjdGlvblJlc3VsdHMnfSkNCiAgICB9LA0KICAgIG5hdmlnYXRlVG9FdmVudFJlZ2lzdHJhdGlvbmIoKSB7DQogICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7cGF0aDogJ3BhdHJvbEFuZFJlc2N1ZS9jb21tYW5kRGlzcGF0Y2gvZXZlbnRSZWdpc3RyYXRpb24nfSkNCiAgICB9LA0KICAgIG5hdmlnYXRlVG9FdmVudFJlZ2lzdHJhdGlvbmMoKSB7DQogICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7cGF0aDogJ3BhdHJvbEFuZFJlc2N1ZS9vYnN0YWNsZUNsZWFyaW5nUmVzY3VlL3Jlc2N1ZVJlZ2lzdHJhdGlvbid9KQ0KICAgIH0sDQogICAgLy8g5aSE55CG5pe26Ze05Y+Y5YyWDQogICAgaGFuZGxlVGltZUNoYW5nZSh0aW1lVHlwZSkgew0KICAgICAgbGV0IHN0YXJ0VGltZSA9ICcnDQogICAgICBsZXQgZW5kVGltZSA9ICcnDQoNCiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkNCiAgICAgIGNvbnN0IHllYXIgPSBub3cuZ2V0RnVsbFllYXIoKQ0KICAgICAgY29uc3QgbW9udGggPSBTdHJpbmcobm93LmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpIC8vIOaciOS7veS7jiAwIOW8gOWni++8jOmcgOimgSArMQ0KICAgICAgY29uc3QgZGF5ID0gU3RyaW5nKG5vdy5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJykNCg0KICAgICAgc3dpdGNoICh0aW1lVHlwZSkgew0KICAgICAgICBjYXNlICdkYXknOiAvLyDml6UNCiAgICAgICAgICBzdGFydFRpbWUgPSBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gDQogICAgICAgICAgZW5kVGltZSA9IHN0YXJ0VGltZSAvLyDlvIDlp4vml7bpl7Tlkoznu5PmnZ/ml7bpl7Tnm7jlkIwNCiAgICAgICAgICBjb25zb2xlLmxvZygn5b2T5YmN5pel5pyfOicsIHN0YXJ0VGltZSkNCiAgICAgICAgICBicmVhaw0KICAgICAgICBjYXNlICdtb250aCc6IC8vIOaciA0KICAgICAgICAgIHN0YXJ0VGltZSA9IGAke3llYXJ9LSR7bW9udGh9LTAxYCAvLyDlvZPliY3mnIjnmoTnrKzkuIDlpKkNCiAgICAgICAgICBlbmRUaW1lID0gYCR7eWVhcn0tJHttb250aH0tJHtuZXcgRGF0ZSh5ZWFyLCBub3cuZ2V0TW9udGgoKSArIDEsIDApLmdldERhdGUoKX1gIC8vIOW9k+WJjeaciOeahOacgOWQjuS4gOWkqQ0KICAgICAgICAgIGNvbnNvbGUubG9nKCflvZPliY3mnIjnmoTnrKzkuIDlpKk6Jywgc3RhcnRUaW1lKQ0KICAgICAgICAgIGNvbnNvbGUubG9nKCflvZPliY3mnIjnmoTmnIDlkI7kuIDlpKk6JywgZW5kVGltZSkNCiAgICAgICAgICBicmVhaw0KICAgICAgICBjYXNlICd5ZWFyJzogLy8g5bm0DQogICAgICAgICAgc3RhcnRUaW1lID0gYCR7eWVhcn0tMDEtMDFgIC8vIOW9k+WJjeW5tOeahOesrOS4gOWkqQ0KICAgICAgICAgIGVuZFRpbWUgPSBgJHt5ZWFyfS0xMi0zMWAgLy8g5b2T5YmN5bm055qE5pyA5ZCO5LiA5aSpDQogICAgICAgICAgY29uc29sZS5sb2coJ+W9k+WJjeW5tOeahOesrOS4gOWkqTonLCBzdGFydFRpbWUpDQogICAgICAgICAgY29uc29sZS5sb2coJ+W9k+WJjeW5tOeahOacgOWQjuS4gOWkqTonLCBlbmRUaW1lKQ0KICAgICAgICAgIGJyZWFrDQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgc3RhcnRUaW1lID0gJycNCiAgICAgICAgICBlbmRUaW1lID0gJycNCiAgICAgIH0NCiAgICAgIC8vIOWtmOWCqOW9k+WJjeaXtumXtOiMg+WbtA0KICAgICAgdGhpcy5jdXJyZW50U3RhcnRUaW1lID0gc3RhcnRUaW1lDQogICAgICB0aGlzLmN1cnJlbnRFbmRUaW1lID0gZW5kVGltZQ0KDQogICAgICAvLyDosIPnlKggTGlzdGJiYiDmlrnms5XvvIzkvKDlhaXml7bpl7TojIPlm7QNCiAgICAgIHRoaXMuTGlzdGJiYihzdGFydFRpbWUsIGVuZFRpbWUpDQogICAgICAvLyDosIPnlKggdGFza0xpc3REYXRhIOaWueazle+8jOS8oOWFpeaXtumXtOiMg+WbtA0KICAgICAgdGhpcy50YXNrTGlzdERhdGEoc3RhcnRUaW1lLCBlbmRUaW1lKQ0KICAgIH0sDQogICAgZGljdGlvbmFyeUVzY2FwZSwNCg0KICAgIC8v5byC5bi45L+h5oGvDQogICAgYXN5bmMgdGFza0xpc3RvdGhlckxpc3REYXRhKCkgew0KICAgICAgdGhpcy50YWJsZUxvYWRpbmcgPSB0cnVlDQogICAgICB0cnkgew0KICAgICAgICAvLyDnoa7kv50gb3JnTGlzdCDlt7LotYvlgLwNCiAgICAgICAgaWYgKCF0aGlzLm9yZ0xpc3QgfHwgdGhpcy5vcmdMaXN0Lmxlbmd0aCA9PT0gMCkgew0KICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0T3JnVHJlZURhdGEoKSAvLyDnrYnlvoUgZ2V0T3JnVHJlZURhdGEg5a6M5oiQDQogICAgICAgIH0NCiAgICAgICAgLy8g6K+35rGCIHRhYmxlRGF0YSDmjqXlj6MNCiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0YWJsZURhdGFiKHRoaXMub3JnTGlzdCkNCiAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnZhbHVlKSB7DQogICAgICAgICAgdGhpcy50YXNrTGlzdG90aGVyTGlzdCA9IHJlc3BvbnNlLnZhbHVlIC8vIOWwhuaOpeWPo+i/lOWbnueahOaVsOaNrui1i+WAvOe7mSB0YXNrTGlzdG90aGVyDQogICAgICAgIH0NCiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7DQogICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ivt+axguaVsOaNruWksei0pTonLCBlcnJvcikNCiAgICAgIH0gZmluYWxseSB7DQogICAgICAgIHRoaXMudGFibGVMb2FkaW5nID0gZmFsc2UNCiAgICAgIH0NCiAgICB9LA0KICAgIC8v5LqL5Lu257uf6K6hDQogICAgYXN5bmMgdGFza0xpc3REYXRhKHN0YXJ0VGltZSwgZW5kVGltZSkgew0KICAgICAgY29uc29sZS5sb2coc3RhcnRUaW1lLCAn57uf6K6h5pe26Ze0JykNCiAgICAgIHRoaXMudGFibGVMb2FkaW5nID0gdHJ1ZQ0KICAgICAgdHJ5IHsNCiAgICAgICAgLy8g56Gu5L+dIG9yZ0xpc3Qg5bey6LWL5YC8DQogICAgICAgIGlmICghdGhpcy5vcmdMaXN0IHx8IHRoaXMub3JnTGlzdC5sZW5ndGggPT09IDApIHsNCiAgICAgICAgICBhd2FpdCB0aGlzLmdldE9yZ1RyZWVEYXRhKCkgLy8g562J5b6FIGdldE9yZ1RyZWVEYXRhIOWujOaIkA0KICAgICAgICB9DQogICAgICAgIC8vIOaehOmAoOivt+axguS9kw0KICAgICAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHsNCiAgICAgICAgICBncm91cFJlbGF0aW9uOiAnQU5EJywNCiAgICAgICAgICBncm91cFRyZWU6IHt9LA0KICAgICAgICAgIHBhZ2VCZWFuOiB7DQogICAgICAgICAgICBwYWdlOiAxLA0KICAgICAgICAgICAgcGFnZVNpemU6IDEwLA0KICAgICAgICAgICAgc2hvd1RvdGFsOiB0cnVlDQogICAgICAgICAgfSwNCiAgICAgICAgICBwYXJhbXM6IHsNCiAgICAgICAgICAgIC8vIHN0YXJ0VGltZTogc3RhcnRUaW1lLCAvLyDlvIDlp4vml7bpl7QNCiAgICAgICAgICAgIC8vIGVuZFRpbWU6IGVuZFRpbWUgLy8g57uT5p2f5pe26Ze0DQogICAgICAgICAgfSwNCiAgICAgICAgICBxdWVyeXM6IFtdLA0KICAgICAgICAgIHNvcnRlcjogWw0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBkaXJlY3Rpb246ICdBU0MnLA0KICAgICAgICAgICAgICBwcm9wZXJ0eTogJycNCiAgICAgICAgICAgIH0NCiAgICAgICAgICBdDQogICAgICAgIH0NCiAgICAgICAgLy8g6K+35rGCIHRhYmxlRGF0YSDmjqXlj6MNCiAgICAgICAgLy8g5omT5Y2w6K+35rGC5L2T77yM5qOA5p+l5piv5ZCm5q2j56GuDQogICAgICAgIGNvbnNvbGUubG9nKHJlcXVlc3RCb2R5LCAn5Lyg5YWl57uf6K6hJykNCiAgICAgICAgY29uc29sZS5sb2coJ1JlcXVlc3QgQm9keTonLCBKU09OLnN0cmluZ2lmeShyZXF1ZXN0Qm9keSwgbnVsbCwgMikpDQogICAgICAgIC8vIOaJk+WNsOivt+axguS9k++8jOajgOafpeaYr+WQpuato+ehrg0KICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRhYmxlRGF0YWMocmVxdWVzdEJvZHksIHRoaXMub3JnTGlzdCwgc3RhcnRUaW1lLCBlbmRUaW1lKQ0KICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSwgJzExMTExMTExMTExMTEyMjIyMjIyMjIyMicpDQogICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS52YWx1ZSkgew0KICAgICAgICAgIHRoaXMudGFza0xpc3QgPSByZXNwb25zZS52YWx1ZSAvLyDlsIbmjqXlj6Pov5Tlm57nmoTmlbDmja7otYvlgLznu5kgdGFza0xpc3RvdGhlcg0KICAgICAgICB9DQogICAgICB9IGNhdGNoIChlcnJvcikgew0KICAgICAgICBjb25zb2xlLmVycm9yKCfor7fmsYLmlbDmja7lpLHotKU6JywgZXJyb3IpDQogICAgICB9IGZpbmFsbHkgew0KICAgICAgICB0aGlzLnRhYmxlTG9hZGluZyA9IGZhbHNlDQogICAgICB9DQogICAgfSwNCiAgICAvL+S6i+S7tuafpeivoueCueWHuy3or7fmsYLliJfooagNCiAgICBoYW5kbGVUYXNrQ2xpY2soaW5kZXgpIHsNCiAgICAgIHRoaXMuY3VycmVudEFjdGl2ZUluZGV4ID0gaW5kZXggLy8g5pu05paw5b2T5YmN54K55Ye755qE57Si5byVDQogICAgICBzd2l0Y2ggKGluZGV4KSB7DQogICAgICAgIGNhc2UgMDogLy8g5LqL5Lu25oC75pWwDQogICAgICAgICAgdGhpcy5ldmVudFN0YXR1cyA9IG51bGwgLy8g5LiN5LygIGV2ZW50U3RhdHVzDQogICAgICAgICAgYnJlYWsNCiAgICAgICAgY2FzZSAxOiAvLyDlvoXmjqXljZXkuovku7YNCiAgICAgICAgICB0aGlzLmV2ZW50U3RhdHVzID0gMQ0KICAgICAgICAgIGJyZWFrDQogICAgICAgIGNhc2UgMjogLy8g5aSE572u5Lit5LqL5Lu2DQogICAgICAgICAgdGhpcy5ldmVudFN0YXR1cyA9IDINCiAgICAgICAgICBicmVhaw0KICAgICAgICBjYXNlIDM6IC8vIOWkhOe9rue7k+adn+S6i+S7tg0KICAgICAgICAgIHRoaXMuZXZlbnRTdGF0dXMgPSAzDQogICAgICAgICAgYnJlYWsNCiAgICAgICAgY2FzZSA0OiAvLyDlt7Llip7nu5Pkuovku7YNCiAgICAgICAgICB0aGlzLmV2ZW50U3RhdHVzID0gNA0KICAgICAgICAgIGJyZWFrDQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgdGhpcy5ldmVudFN0YXR1cyA9IG51bGwNCiAgICAgIH0NCiAgICAgIGNvbnNvbGUubG9nKHRoaXMuY3VycmVudFN0YXJ0VGltZSwgdGhpcy5ldmVudFN0YXR1cywgJ+aXtumXtDExMTExMTExMTExMTExMTExMTExJykvL+S8oOi/m+adpeeahA0KICAgICAgLy8g5L2/55So5b2T5YmN5pe26Ze06IyD5Zu06LCD55SoIExpc3RiYmINCiAgICAgIHRoaXMuTGlzdGJiYih0aGlzLmN1cnJlbnRTdGFydFRpbWUsIHRoaXMuY3VycmVudEVuZFRpbWUpDQogICAgfSwNCg0KICAgIC8v5LqL5Lu25YiX6KGo5p+l6K+iDQogICAgYXN5bmMgTGlzdGJiYihzdGFydFRpbWUsIGVuZFRpbWUpIHsNCiAgICAgIHRoaXMudGFibGVMb2FkaW5nID0gdHJ1ZQ0KICAgICAgdHJ5IHsNCiAgICAgICAgLy8g56Gu5L+dIG9yZ0xpc3Qg5bey6LWL5YC8DQogICAgICAgIGlmICghdGhpcy5vcmdMaXN0IHx8IHRoaXMub3JnTGlzdC5sZW5ndGggPT09IDApIHsNCiAgICAgICAgICBhd2FpdCB0aGlzLmdldE9yZ1RyZWVEYXRhKCkgLy8g562J5b6FIGdldE9yZ1RyZWVEYXRhIOWujOaIkA0KICAgICAgICB9DQogICAgICAgIC8vIOaehOmAoOivt+axguS9kw0KICAgICAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHsNCiAgICAgICAgICBncm91cFJlbGF0aW9uOiAnQU5EJywNCiAgICAgICAgICBncm91cFRyZWU6IHt9LA0KICAgICAgICAgIHBhZ2VCZWFuOiB7DQogICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2luYXRpb25CYmIucGFnZSwgLy8g5b2T5YmN6aG156CBDQogICAgICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdpbmF0aW9uQmJiLnBhZ2VTaXplLCAvLyDmr4/pobXmnaHmlbANCiAgICAgICAgICAgIHNob3dUb3RhbDogdHJ1ZQ0KICAgICAgICAgIH0sDQoNCiAgICAgICAgICBwYXJhbXM6IHsNCiAgICAgICAgICAgIHN0YXJ0VGltZTogc3RhcnRUaW1lLCAvLyDlvIDlp4vml7bpl7QNCiAgICAgICAgICAgIGVuZFRpbWU6IGVuZFRpbWUgLy8g57uT5p2f5pe26Ze0DQogICAgICAgICAgfSwNCiAgICAgICAgICBxdWVyeXM6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgZ3JvdXA6ICdtYWluJywNCiAgICAgICAgICAgICAgb3BlcmF0aW9uOiAnRVFVQUwnLA0KICAgICAgICAgICAgICBwYXJlbnRHcm91cDogJycsDQogICAgICAgICAgICAgIHByb3BlcnR5OiAnZXZlbnRTdGF0dXMnLA0KICAgICAgICAgICAgICByZWxhdGlvbjogJ0FORCcsDQogICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmV2ZW50U3RhdHVzDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBncm91cDogJ21haW4nLA0KICAgICAgICAgICAgICBvcGVyYXRpb246ICdJTicsIC8vIOS9v+eUqCBJTiDmk43kvZznrKYNCiAgICAgICAgICAgICAgcGFyZW50R3JvdXA6ICcnLA0KICAgICAgICAgICAgICBwcm9wZXJ0eTogJ3JvYWRfaWRfJywgLy8g5bGe5oCn5ZCNDQogICAgICAgICAgICAgIHJlbGF0aW9uOiAnQU5EJywNCiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMub3JnTGlzdCAvLyDkvKDlhaUgb3JnTGlzdCDmlbDnu4QNCiAgICAgICAgICAgIH0NCiAgICAgICAgICBdLA0KICAgICAgICAgIHNvcnRlcjogWw0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBkaXJlY3Rpb246ICdBU0MnLA0KICAgICAgICAgICAgICBwcm9wZXJ0eTogJycNCiAgICAgICAgICAgIH0NCiAgICAgICAgICBdDQogICAgICAgIH0NCiAgICAgICAgLy8g5omT5Y2w6K+35rGC5L2T77yM5qOA5p+l5piv5ZCm5q2j56GuDQogICAgICAgIGNvbnNvbGUubG9nKCdSZXF1ZXN0IEJvZHk6JywgcmVxdWVzdEJvZHkpDQogICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGFibGVEYXRhYkxpc3QocmVxdWVzdEJvZHkpDQogICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5yb3dzKSB7DQogICAgICAgICAgdGhpcy50YXNrTGlzdG90aGVyYmJiID0gcmVzcG9uc2Uucm93cyAvLyDlsIbmjqXlj6Pov5Tlm57nmoTmlbDmja7otYvlgLznu5kgdGFza0xpc3RvdGhlcg0KICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkJiYi50b3RhbCA9IHJlc3BvbnNlLnRvdGFsIHx8IDAgLy8g5pu05paw5oC75p2h5pWwDQogICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UsICfkuovku7bliJfooagnKQ0KICAgICAgICB9DQogICAgICB9IGNhdGNoIChlcnJvcikgew0KICAgICAgICBjb25zb2xlLmVycm9yKCfor7fmsYLmlbDmja7lpLHotKU6JywgZXJyb3IpDQogICAgICB9IGZpbmFsbHkgew0KICAgICAgICB0aGlzLnRhYmxlTG9hZGluZyA9IGZhbHNlDQogICAgICB9DQogICAgfSwNCiAgICAvL+W9k+WJjeS7u+WKoQ0KICAgIGFzeW5jIHRhc2tMaXN0b3RoZXJEYXRhKCkgew0KICAgICAgdGhpcy50YWJsZUxvYWRpbmcgPSB0cnVlDQogICAgICB0cnkgew0KICAgICAgICAvLyDnoa7kv50gb3JnTGlzdCDlt7LotYvlgLwNCiAgICAgICAgaWYgKCF0aGlzLm9yZ0xpc3QgfHwgdGhpcy5vcmdMaXN0Lmxlbmd0aCA9PT0gMCkgew0KICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0T3JnVHJlZURhdGEoKSAvLyDnrYnlvoUgZ2V0T3JnVHJlZURhdGEg5a6M5oiQDQogICAgICAgIH0NCiAgICAgICAgLy8g6K+35rGCIHRhYmxlRGF0YSDmjqXlj6MNCiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0YWJsZURhdGFhKHRoaXMub3JnTGlzdCkNCiAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnZhbHVlKSB7DQogICAgICAgICAgdGhpcy50YXNrTGlzdG90aGVyID0gcmVzcG9uc2UudmFsdWUgLy8g5bCG5o6l5Y+j6L+U5Zue55qE5pWw5o2u6LWL5YC857uZIHRhc2tMaXN0b3RoZXINCiAgICAgICAgfQ0KICAgICAgfSBjYXRjaCAoZXJyb3IpIHsNCiAgICAgICAgY29uc29sZS5lcnJvcign6K+35rGC5pWw5o2u5aSx6LSlOicsIGVycm9yKQ0KICAgICAgfSBmaW5hbGx5IHsNCiAgICAgICAgdGhpcy50YWJsZUxvYWRpbmcgPSBmYWxzZQ0KICAgICAgfQ0KICAgIH0sDQogICAgLy/ku7vliqHngrnlh7st6K+35rGC5YiX6KGoDQogICAgdGFza0NoYW5nZShpbmRleCkgew0KICAgICAgaWYgKGluZGV4ID09PSAwKSB7DQogICAgICAgIHRoaXMuY3VycmVudFR5cGUgPSAxIC8vIOW3oeafpeS7u+WKoQ0KICAgICAgfSBlbHNlIGlmIChpbmRleCA9PT0gMSkgew0KICAgICAgICB0aGlzLmN1cnJlbnRUeXBlID0gMiAvLyDkuovku7blpITnva7ku7vliqENCiAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT09IDIpIHsNCiAgICAgICAgdGhpcy5jdXJyZW50VHlwZSA9IDMgLy8g5pWR5o+05Lu75YqhDQogICAgICB9DQogICAgICB0aGlzLkxpc3RhYWEoKSAvLyDosIPnlKjmjqXlj6PliLfmlrDmlbDmja4NCiAgICB9LA0KICAgIC8vIOagueaNriBjdXJyZW50VHlwZSDov5Tlm57lr7nlupTnmoTml7bpl7TlrZfmrrUNCiAgICBnZXRUYXNrVGltZSh0YXNrKSB7DQogICAgICBpZiAodGhpcy5jdXJyZW50VHlwZSA9PT0gMSkgew0KICAgICAgICByZXR1cm4gdGFzay50YXNrRGF0ZSAvLyDlt6Hmn6Xku7vliqENCiAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50VHlwZSA9PT0gMikgew0KICAgICAgICByZXR1cm4gdGFzay5ldmVudFRpbWUgLy8g5LqL5Lu25aSE572u5Lu75YqhDQogICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFR5cGUgPT09IDMpIHsNCiAgICAgICAgcmV0dXJuIHRhc2sucmVzY3VlVGltZSAvLyDmlZHmj7Tku7vliqENCiAgICAgIH0NCiAgICAgIHJldHVybiAnJyAvLyDpu5jorqTov5Tlm57nqbrlrZfnrKbkuLINCiAgICB9LA0KICAgIC8v5Lu75Yqh5YiX6KGoDQogICAgYXN5bmMgTGlzdGFhYSgpIHsNCiAgICAgIHRoaXMudGFibGVMb2FkaW5nID0gdHJ1ZQ0KICAgICAgdHJ5IHsNCiAgICAgICAgLy8g56Gu5L+dIG9yZ0xpc3Qg5bey6LWL5YC8DQogICAgICAgIGlmICghdGhpcy5vcmdMaXN0IHx8IHRoaXMub3JnTGlzdC5sZW5ndGggPT09IDApIHsNCiAgICAgICAgICBhd2FpdCB0aGlzLmdldE9yZ1RyZWVEYXRhKCkgLy8g562J5b6FIGdldE9yZ1RyZWVEYXRhIOWujOaIkA0KICAgICAgICB9DQogICAgICAgIC8vIOaehOmAoOivt+axguS9kw0KICAgICAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHsNCiAgICAgICAgICBncm91cFJlbGF0aW9uOiAnQU5EJywNCiAgICAgICAgICBncm91cFRyZWU6IHt9LA0KICAgICAgICAgIHBhZ2VCZWFuOiB7DQogICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2luYXRpb25BYWEucGFnZSwgLy8g5b2T5YmN6aG156CBDQogICAgICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdpbmF0aW9uQWFhLnBhZ2VTaXplLCAvLyDmr4/pobXmnaHmlbANCiAgICAgICAgICAgIHNob3dUb3RhbDogdHJ1ZQ0KICAgICAgICAgIH0sDQogICAgICAgICAgcGFyYW1zOiB7fSwNCiAgICAgICAgICBxdWVyeXM6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgZ3JvdXA6ICdtYWluJywNCiAgICAgICAgICAgICAgb3BlcmF0aW9uOiAnSU4nLCAvLyDkvb/nlKggSU4g5pON5L2c56ymDQogICAgICAgICAgICAgIHBhcmVudEdyb3VwOiAnJywNCiAgICAgICAgICAgICAgcHJvcGVydHk6ICdyb2FkX2lkXycsIC8vIOWxnuaAp+WQjQ0KICAgICAgICAgICAgICByZWxhdGlvbjogJ0FORCcsDQogICAgICAgICAgICAgIHZhbHVlOiB0aGlzLm9yZ0xpc3QgLy8g5Lyg5YWlIG9yZ0xpc3Qg5pWw57uEDQogICAgICAgICAgICB9DQogICAgICAgICAgXSwNCiAgICAgICAgICBzb3J0ZXI6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgZGlyZWN0aW9uOiAnQVNDJywNCiAgICAgICAgICAgICAgcHJvcGVydHk6ICcnDQogICAgICAgICAgICB9DQogICAgICAgICAgXQ0KICAgICAgICB9DQogICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGFibGVEYXRhYUxpc3QocmVxdWVzdEJvZHksIHRoaXMuY3VycmVudFR5cGUpDQogICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5yb3dzKSB7DQogICAgICAgICAgdGhpcy50YXNrTGlzdG90aGVyYWFhID0gcmVzcG9uc2Uucm93cyAvLyDlsIbmjqXlj6Pov5Tlm57nmoTmlbDmja7otYvlgLznu5kgdGFza0xpc3RvdGhlcg0KICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkFhYS50b3RhbCA9IHJlc3BvbnNlLnRvdGFsIHx8IDAgLy8g5pu05paw5oC75p2h5pWwDQogICAgICAgIH0NCiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7DQogICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ivt+axguaVsOaNruWksei0pTonLCBlcnJvcikNCiAgICAgIH0gZmluYWxseSB7DQogICAgICAgIHRoaXMudGFibGVMb2FkaW5nID0gZmFsc2UNCiAgICAgIH0NCiAgICB9LA0KDQogICAgLy/lvILluLjngrnlh7sNCiAgICBjaGFuZ2UoaW5kZXgpIHsNCiAgICAgIGxldCBoYW5kbGVUeXBlID0gbnVsbA0KICAgICAgaWYgKGluZGV4ID09PSAxKSB7DQogICAgICAgIGhhbmRsZVR5cGUgPSAxIC8vIOeOsOWcuuWkhOeQhg0KICAgICAgfSBlbHNlIGlmIChpbmRleCA9PT0gMikgew0KICAgICAgICBoYW5kbGVUeXBlID0gMiAvLyDkuIrmiqXkuK3lv4MNCiAgICAgIH0NCiAgICAgIHRoaXMuTGlzdGNjYyhoYW5kbGVUeXBlKSAvLyDosIPnlKggTGlzdGNjYyDmlrnms5XlubbkvKDpgJIgaGFuZGxlVHlwZQ0KICAgIH0sDQogICAgLy/lvILluLjliJfooagNCiAgICBhc3luYyBMaXN0Y2NjKGhhbmRsZVR5cGUpIHsNCiAgICAgIHRoaXMudGFibGVMb2FkaW5nID0gdHJ1ZQ0KICAgICAgdHJ5IHsNCiAgICAgICAgLy8g56Gu5L+dIG9yZ0xpc3Qg5bey6LWL5YC8DQogICAgICAgIGlmICghdGhpcy5vcmdMaXN0IHx8IHRoaXMub3JnTGlzdC5sZW5ndGggPT09IDApIHsNCiAgICAgICAgICBhd2FpdCB0aGlzLmdldE9yZ1RyZWVEYXRhKCkgLy8g562J5b6FIGdldE9yZ1RyZWVEYXRhIOWujOaIkA0KICAgICAgICB9DQogICAgICAgIC8vIOiOt+WPluW9k+WJjeaXtumXtOW5tuagvOW8j+WMluS4uiBZWVlZLU1NLUREDQogICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkNCiAgICAgICAgY29uc3QgeWVhciA9IG5vdy5nZXRGdWxsWWVhcigpDQogICAgICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKG5vdy5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKSAvLyDmnIjku73ku44gMCDlvIDlp4vvvIzpnIDopoEgKzENCiAgICAgICAgY29uc3QgZGF5ID0gU3RyaW5nKG5vdy5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJykNCiAgICAgICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWAgLy8g5qC85byP5YyW5Li6IFlZWVktTU0tREQNCiAgICAgICAgLy8g5p6E6YCg6K+35rGC5L2TDQogICAgICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0gew0KICAgICAgICAgIGdyb3VwUmVsYXRpb246ICdBTkQnLA0KICAgICAgICAgIGdyb3VwVHJlZToge30sDQogICAgICAgICAgcGFnZUJlYW46IHsNCiAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnaW5hdGlvbkNjYy5wYWdlLCAvLyDlvZPliY3pobXnoIENCiAgICAgICAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2luYXRpb25DY2MucGFnZVNpemUsIC8vIOavj+mhteadoeaVsA0KICAgICAgICAgICAgc2hvd1RvdGFsOiB0cnVlDQogICAgICAgICAgfSwNCiAgICAgICAgICBwYXJhbXM6IHt9LA0KICAgICAgICAgIHF1ZXJ5czogWw0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAnZ3JvdXAnOiAnbWFpbicsDQogICAgICAgICAgICAgICdvcGVyYXRpb24nOiAnRVFVQUwnLA0KICAgICAgICAgICAgICAncGFyZW50R3JvdXAnOiAnJywNCiAgICAgICAgICAgICAgJ3Byb3BlcnR5JzogJ1RBU0tfREFURV8nLA0KICAgICAgICAgICAgICAncmVsYXRpb24nOiAnQU5EJywNCiAgICAgICAgICAgICAgJ3ZhbHVlJzogZm9ybWF0dGVkRGF0ZQ0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgZ3JvdXA6ICdtYWluJywNCiAgICAgICAgICAgICAgb3BlcmF0aW9uOiAnSU4nLCAvLyDkvb/nlKggSU4g5pON5L2c56ymDQogICAgICAgICAgICAgIHBhcmVudEdyb3VwOiAnJywNCiAgICAgICAgICAgICAgcHJvcGVydHk6ICdyb2FkX2lkXycsIC8vIOWxnuaAp+WQjQ0KICAgICAgICAgICAgICByZWxhdGlvbjogJ0FORCcsDQogICAgICAgICAgICAgIHZhbHVlOiB0aGlzLm9yZ0xpc3QgLy8g5Lyg5YWlIG9yZ0xpc3Qg5pWw57uEDQogICAgICAgICAgICB9DQogICAgICAgICAgXSwNCiAgICAgICAgICBzb3J0ZXI6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgZGlyZWN0aW9uOiAnQVNDJywNCiAgICAgICAgICAgICAgcHJvcGVydHk6ICcnDQogICAgICAgICAgICB9DQogICAgICAgICAgXQ0KICAgICAgICB9DQogICAgICAgIC8vIOWmguaenCBoYW5kbGVUeXBlIOS4jeS4uuepuu+8jOa3u+WKoOWIsCBxdWVyeXMg5LitDQogICAgICAgIGlmIChoYW5kbGVUeXBlICE9PSBudWxsKSB7DQogICAgICAgICAgcmVxdWVzdEJvZHkucXVlcnlzLnB1c2goew0KICAgICAgICAgICAgZ3JvdXA6ICdtYWluJywNCiAgICAgICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywNCiAgICAgICAgICAgIHBhcmVudEdyb3VwOiAnJywNCiAgICAgICAgICAgIHByb3BlcnR5OiAnaGFuZGxlVHlwZScsDQogICAgICAgICAgICByZWxhdGlvbjogJ0FORCcsDQogICAgICAgICAgICB2YWx1ZTogaGFuZGxlVHlwZQ0KICAgICAgICAgIH0pDQogICAgICAgIH0NCiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0YWJsZURhdGFjTGlzdChyZXF1ZXN0Qm9keSkNCiAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnJvd3MpIHsNCiAgICAgICAgICB0aGlzLnRhc2tMaXN0b3RoZXJjY2MgPSByZXNwb25zZS5yb3dzIC8vIOWwhuaOpeWPo+i/lOWbnueahOaVsOaNrui1i+WAvOe7mSB0YXNrTGlzdG90aGVyDQogICAgICAgICAgdGhpcy5wYWdpbmF0aW9uQ2NjLnRvdGFsID0gcmVzcG9uc2UudG90YWwgfHwgMCAvLyDmm7TmlrDmgLvmnaHmlbANCiAgICAgICAgfQ0KICAgICAgfSBjYXRjaCAoZXJyb3IpIHsNCiAgICAgICAgY29uc29sZS5lcnJvcign6K+35rGC5pWw5o2u5aSx6LSlOicsIGVycm9yKQ0KICAgICAgfSBmaW5hbGx5IHsNCiAgICAgICAgdGhpcy50YWJsZUxvYWRpbmcgPSBmYWxzZQ0KICAgICAgfQ0KICAgIH0sDQogICAgLy8g6I635Y+W5YWs5Y+45qCRLeWwhmlk6ZuG5ZCI6LW35p2l5Lyg57uZ5ZCO56uvDQogICAgYXN5bmMgZ2V0T3JnVHJlZURhdGEoY2FsbGJhY2spIHsNCiAgICAgIHRyeSB7DQogICAgICAgIHRoaXMudHJlZUxvYWRpbmcgPSB0cnVlDQogICAgICAgIGNvbnN0IHZhbHVlZGF0YSA9IGF3YWl0IGdldFRyZWUoKQ0KICAgICAgICAvLyDmj5Dlj5bmiYDmnIkgcm9hZExpc3Qg5Lit55qEIGlkDQogICAgICAgIGNvbnN0IGFsbElkcyA9IFtdDQogICAgICAgIHZhbHVlZGF0YS52YWx1ZS5mb3JFYWNoKChpdGVtKSA9PiB7DQogICAgICAgICAgaWYgKGl0ZW0ucm9hZExpc3QgJiYgaXRlbS5yb2FkTGlzdC5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICBpdGVtLnJvYWRMaXN0LmZvckVhY2goKHJvYWQpID0+IHsNCiAgICAgICAgICAgICAgaWYgKHJvYWQuaWQpIHsNCiAgICAgICAgICAgICAgICBhbGxJZHMucHVzaChyb2FkLmlkKSAvLyDlsIYgaWQg5re75Yqg5Yiw5pWw57uE5LitDQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pDQogICAgICAgICAgfQ0KICAgICAgICB9KQ0KICAgICAgICB0aGlzLm9yZ0xpc3QgPSBhbGxJZHMNCiAgICAgICAgY29uc29sZS5sb2codGhpcy5vcmdMaXN0LCAnaWTmlbDnu4QnKQ0KICAgICAgfSBmaW5hbGx5IHsNCiAgICAgICAgdGhpcy50cmVlTG9hZGluZyA9IGZhbHNlDQogICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKHRoaXMudHJlZURhdGEpDQogICAgICAgIC8vIHRoaXMudGFibGVMb2FkaW5nID0gZmFsc2UNCiAgICAgIH0NCiAgICB9LA0KICAgIC8vIOS7u+WKoeWIl+ihqOWIhumhteS6i+S7tg0KICAgIGhhbmRsZVNpemVDaGFuZ2VBYWEocGFnZVNpemUpIHsNCiAgICAgIHRoaXMucGFnaW5hdGlvbkFhYS5wYWdlU2l6ZSA9IHBhZ2VTaXplDQogICAgICB0aGlzLnBhZ2luYXRpb25BYWEucGFnZSA9IDEgLy8g6YeN572u5Li656ys5LiA6aG1DQogICAgICB0aGlzLkxpc3RhYWEoKSAvLyDph43mlrDor7fmsYLmlbDmja4NCiAgICB9LA0KICAgIGhhbmRsZUN1cnJlbnRDaGFuZ2VBYWEocGFnZSkgew0KICAgICAgdGhpcy5wYWdpbmF0aW9uQWFhLnBhZ2UgPSBwYWdlDQogICAgICB0aGlzLkxpc3RhYWEoKSAvLyDph43mlrDor7fmsYLmlbDmja4NCiAgICB9LA0KDQogICAgLy8g5LqL5Lu25p+l6K+i5YiX6KGo5YiG6aG15LqL5Lu2DQogICAgaGFuZGxlU2l6ZUNoYW5nZUJiYihwYWdlU2l6ZSkgew0KICAgICAgdGhpcy5wYWdpbmF0aW9uQmJiLnBhZ2VTaXplID0gcGFnZVNpemUNCiAgICAgIHRoaXMucGFnaW5hdGlvbkJiYi5wYWdlID0gMSAvLyDph43nva7kuLrnrKzkuIDpobUNCiAgICAgIHRoaXMuTGlzdGJiYih0aGlzLmN1cnJlbnRTdGFydFRpbWUsIHRoaXMuY3VycmVudEVuZFRpbWUpIC8vIOmHjeaWsOivt+axguaVsOaNrg0KICAgIH0sDQogICAgaGFuZGxlQ3VycmVudENoYW5nZUJiYihwYWdlKSB7DQogICAgICB0aGlzLnBhZ2luYXRpb25CYmIucGFnZSA9IHBhZ2UNCiAgICAgIHRoaXMuTGlzdGJiYih0aGlzLmN1cnJlbnRTdGFydFRpbWUsIHRoaXMuY3VycmVudEVuZFRpbWUpIC8vIOmHjeaWsOivt+axguaVsOaNrg0KICAgIH0sDQoNCiAgICAvLyDlvILluLjliJfooajliIbpobXkuovku7YNCiAgICBoYW5kbGVTaXplQ2hhbmdlQ2NjKHBhZ2VTaXplKSB7DQogICAgICB0aGlzLnBhZ2luYXRpb25DY2MucGFnZVNpemUgPSBwYWdlU2l6ZQ0KICAgICAgdGhpcy5wYWdpbmF0aW9uQ2NjLnBhZ2UgPSAxIC8vIOmHjee9ruS4uuesrOS4gOmhtQ0KICAgICAgdGhpcy5MaXN0Y2NjKCkgLy8g6YeN5paw6K+35rGC5pWw5o2uDQogICAgfSwNCiAgICBoYW5kbGVDdXJyZW50Q2hhbmdlQ2NjKHBhZ2UpIHsNCiAgICAgIHRoaXMucGFnaW5hdGlvbkNjYy5wYWdlID0gcGFnZQ0KICAgICAgdGhpcy5MaXN0Y2NjKCkgLy8g6YeN5paw6K+35rGC5pWw5o2uDQogICAgfQ0KICB9DQp9DQo="},null]}