1 |
- {"remainingRequest":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\boman-framwork\\ruoyi-ui\\src\\views\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\boman-framwork\\ruoyi-ui\\src\\views\\index.vue","mtime":1618565769567},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgeyBsaXN0SW5kZXgsIGxpc3RJbmRleHR3bywgbGlzdEluZGV4dGhlcnIsIGxpc3RJbmRleGZvdSwgbGlzdEluZGV4dGFubCwgZ2V0Q29uZmlnLCBkZWxDb25maWcsIGFkZENvbmZpZywgYWRkQ29uZmlnaW5kZXgsIHVwZGF0ZUNvbmZpZywgY2xlYXJDYWNoZSB9IGZyb20gIkAvYXBpL3N5c3RlbS9jb25maWciOw0KaW1wb3J0IEVkaXRvciBmcm9tICdAL2NvbXBvbmVudHMvRWRpdG9yJzsNCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogImluZGV4IiwNCiAgY29tcG9uZW50czogew0KICAgIEVkaXRvcg0KICB9LA0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICAvLyDniYjmnKzlj7cNCiAgICAgIHZlcnNpb246ICIyLjUuMCIsDQogICAgICAgY3VycmVudFBhZ2UzOiAxLA0KICAgICAgIHRvdGFsOjAsDQogICAgICAgdG90YWxwcm9maWxlOjAsDQogICAgICAgdG90YWxhbGk6MCwNCiAgICAgICBwYWdlU2l6ZTo2LA0KICAgICAgIGFjdGl2ZU5hbWU6ICdzZWNvbmQnLA0KICAgICAgIC8vIOaYr+WQpuaYvuekuuW8ueWHuuWxgg0KICAgICAgIG9wZW46IGZhbHNlLA0KICAgICAgIC8vIOW8ueWHuuWxguagh+mimA0KICAgICAgIHRpdGxlOiAiIiwNCiAgICAgICB2YWx1ZTogbmV3IERhdGUoKSwNCiAgICAgICBlZGl0YWJsZVRhYnM6IFtdLA0KICAgICAgIGF0dGVuZGFuY2U6WyflvoXmiJHlrqHmibknLCflt7Llip7nkIYnLCfmiJHnmoTmtYHnqIsnLCfpqbPlm57lrqHmibknXSwNCiAgICAgICBlZGl0YWJsZVRhYnN0ZW86W10sDQogICAgICAgY29uZmlnTGlzdDpbXSwNCiAgICAgICBxdWVyeVBhcmFtczp7DQogICAgICAgIHRhYmxlOidzeXNfbm90aWNlJywNCiAgICAgICAgb3JkZXJCeTonY3JlYXRlX3RpbWUgZGVzYycsDQogICAgICAgIHBhZ2VObzoxLA0KICAgICAgICBwYWdlU2l6ZTo2LA0KICAgICAgICBjb25kaXRpb246ew0KICAgICAgICAgIG5vdGljZV90eXBlOjENCiAgICAgICAgfQ0KICAgICAgfSwNCiAgICAgIHF1ZXJ5UGFyYW1zdGFiOnsNCiAgICAgICAgdGFibGU6J3N5c19ub3RpY2UnLA0KICAgICAgICBvcmRlckJ5OidjcmVhdGVfdGltZSBkZXNjJywNCiAgICAgICAgcGFnZU5vOjEsDQogICAgICAgIHBhZ2VTaXplOjYsDQogICAgICAgIGNvbmRpdGlvbjp7DQogICAgICAgICAgbm90aWNlX3R5cGU6MQ0KICAgICAgICB9DQogICAgICB9LA0KICAgICAgLy8g5YWs5Y+45qaC5Ya1DQogICAgICBxdWVyeVBhcmFtc3RhYnByb2ZpbGU6ew0KICAgICAgICB0YWJsZTonc3lzX2luZm8nLA0KICAgICAgICBvcmRlckJ5OidjcmVhdGVfdGltZSBkZXNjJywNCiAgICAgICAgcGFnZU5vOjEsDQogICAgICAgIHBhZ2VTaXplOjEsDQogICAgICAgIGNvbmRpdGlvbjp7DQogICAgICAgICAgbm90aWNlX3R5cGU6MQ0KICAgICAgICB9DQogICAgICB9LA0KICAgICAgLy8g5pel5Y6GDQogICAgICBxdWVyeVBhcmFtc2NhbGVuZGFyOnsNCiAgICAgICAgdGFibGU6J3N5c19zY2hlZHVsZScsDQogICAgICAgIG9yZGVyQnk6J2NyZWF0ZV90aW1lIGRlc2MnLA0KICAgICAgICBwYWdlTm86MSwNCiAgICAgICAgcGFnZVNpemU6MTAsDQogICAgICB9LA0KICAgICAgLy8g5aSH5b+Y5b2VDQogICAgICBxdWVyeVBhcmFtc3RhYm1lbW9yYW5kdW06ew0KICAgICAgICB0YWJsZTonc3lzX21lbW9yYW5kdW0nLA0KICAgICAgICBvcmRlckJ5OidjcmVhdGVfdGltZSBkZXNjJywNCiAgICAgICAgcGFnZU5vOjEsDQogICAgICAgIHBhZ2VTaXplOjYsDQogICAgICB9LA0KICAgICAgLy8g6YCa6K6v5b2VDQogICAgICBxdWVyeVBhcmFtc2FpbDp7DQogICAgICAgIHRhYmxlOidzeXNfY29udGFjdHMnLA0KICAgICAgICBvcmRlckJ5OidjcmVhdGVfdGltZSBkZXNjJywNCiAgICAgICAgcGFnZU5vOjEsDQogICAgICAgIHBhZ2VTaXplOjYsDQogICAgICB9LA0KICAgICAgbnVtOjAsDQogICAgICBudW1saXN0OjAsDQogICAgICBudW1wcm9maWxlOjAsDQogICAgICBkaWN0VHlwZTonc3lzX25vdGljZV90eXBlJywNCiAgICAgIC8vIOWFrOWPuOamguWGtQ0KICAgICAgZGljdFR5cGV0d286J3N5c19kZXNjcmliZV90eXBlJywNCiAgICAgIGdldHRhYkxpc3Q6W10sDQogICAgICBnZXRMaXNwcm9maWxlb25lOltdLA0KICAgICAgLy8g5aSH5b+Y5b2VDQogICAgICBnZXRtZW1vcmFuZHVtOltdLA0KICAgICAgLy/pgJrorq/lvZXlj4LmlbANCiAgICAgIGFsaWVtZzp7DQogICAgICAgIHRhYmxlOidzeXNfY29udGFjdHMnLA0KICAgICAgICBvcmRlckJ5OidjcmVhdGVfdGltZSBkZXNjJywNCiAgICAgICAgcGFnZU5vOjEsDQogICAgICAgIHBhZ2VTaXplOjYsDQogICAgICB9LA0KICAgICAgdGFibGVEYXRhYWxpZDpbXSwNCiAgICAgIGdldExpc2FpbGxpZTpbXSwNCiAgICAgIGFsZW5kYXJMaXN0OltdLA0KICAgICAgY2FsZW5kYXJEYXRhOiBbDQogICAgICAgICAgICBdLA0KICAgICAgYXJ5OltdLA0KICAgICAgdGlla3U6JycsDQogICAgICBjb21nOicnLA0KICAgICAgYWVrdGk6JycsDQogICAgICAvLyDlvLnmoYbmlbDmja4NCiAgICAgIGZvcm06ew0KICAgICAgfSwNCiAgICAgIC8vIOihqOWNleagoemqjA0KICAgICAgcnVsZXM6IHsNCiAgICAgIH0sDQogICAgICAvL+aXpeWOhuW8ueahhg0KICAgICAgY2FsZW5kYXJhZGQ6ew0KICAgICAgICB0YWJsZTonc3lzX3NjaGVkdWxlJywNCiAgICAgICAgaXNVaTpmYWxzZQ0KICAgICAgfSwNCiAgICAgIC8v5aSH5b+Y5b2V5by55qGGDQogICAgICBjYWxlbmRhcmFkZG1lcjp7DQogICAgICAgIHRhYmxlOidzeXNfbWVtb3JhbmR1bScsDQogICAgICAgIGlzVWk6ZmFsc2UNCiAgICAgIH0sDQogICAgICAvLyBpbnB1dA0KICAgICAgaW5wdXRMaXN0OltdLA0KICAgICAgLy8g5pe26Ze0DQogICAgICBkYXRhTGlzdDpbXSwNCiAgICAgIC8v5Y2V6YCJ5qGGDQogICAgICByYWRpb2xpc3Q6W10sDQogICAgICAvLyDlpI3pgInmoYYNCiAgICAgIGNoZWtib3NMaXN0OltdLA0KICAgICAgLy/kuIvmi4nmoYYNCiAgICAgIHNlbGVjdExpc3Q6W10sDQogICAgICBlZGl0b3JMaXN0OltdLA0KICAgICAgcXVlcnlEYXRhOiB7fSwNCiAgICAgIHF1ZXJ5RGF0YXR3bzp7fSwNCiAgICAgIG51bW1lcjowICAgLC8vMCDmmK/ml6XljoYgIDEg5piv5aSH5b+Y5b2VDQogICAgICBmb3JtZTp7DQogICAgICAgIHRhYmxlOicnLA0KICAgICAgICBvYmpJZDotMSwNCiAgICAgICAgZml4ZWREYXRhOnt9DQogICAgICB9LA0KICAgICAgcmp0dTpbXSwNCiAgICAgIHRydWV3OltdLA0KICAgICAgZmFsZXM6W10sDQogICAgICBwb3N0TGlzdDp7fSwNCiAgICAgIGFycjonMiwyLDMsMyw0LDQnDQogICAgfTsNCiAgfSwNCg0KICBjcmVhdGVkKCkgew0KICAgIHRoaXMudW5pcXVlKHRoaXMuYXJyKQ0KICAgIHRoaXMuZ2V0TGlzYWxlbmRhcigpLy/ml6XljoYNCiAgICB0aGlzLmdldExpc3QoKQ0KICAgIHRoaXMuZ2V0TGlzdHRhYigpDQogICAgdGhpcy5nZXRMaXNlcigpDQogICAgdGhpcy5nZXRMaXNwcm9maWxlKCkNCiAgICB0aGlzLmdldExpc21lbW9yYW5kdW0oKSAgLy/lpIflv5jlvZUNCiAgICB0aGlzLmdldExpc2FpbCgpLy/pgJrorq/lvZUNCiAgICB0aGlzLmdldExpc2FpbHR3bygpDQoNCiAgfSwNCiAgY29tcHV0ZWQ6IHsNCg0KICAgICAvLyDml7bpl7Tpq5jkuq7nmoTmlbDnu4QNCiAgICAgYnJpZ2h0RGF0ZSAoKSB7DQogICAgICAgLy8gbGV0IGFyeSA9IFtdDQogICAgICAgdmFyIHRoYXQgPSAgdGhpcw0KICAgICAgIC8vIGNvbnNvbGUubG9nKHRoYXQuY2FsZW5kYXJEYXRhLDg4NykNCiAgICAgICBmb3IgKHZhciBpID0gMCA7IGkgPCB0aGF0LmNhbGVuZGFyRGF0YS5sZW5ndGg7IGkrKykgew0KICAgICAgICAgLy8gdGhhdC5hcnkucHVzaCh0aGF0LmNhbGVuZGFyRGF0YVtpXS5zdGFydERhdGUpDQogICAgICAgICAvLyB0aGF0LmFyeS5wdXNoKHRoYXQuY2FsZW5kYXJEYXRhW2ldLmJlZ2luX3RpbWUuc2xpY2UoMCwxMCkpDQogICAgICAgICAvLyB0aGF0LmFyeS5wdXNoKHRoYXQuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlLnNwbGl0KCcsJykpDQogICAgICAgICB0aGF0LmNhbGVuZGFyRGF0YVtpXS5sb3ZlPSJ5dSINCiAgICAgICAgIGlmKHRoYXQuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAvLyB0aGF0LnJqdHUuY29uY2F0KHRoYXQuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlLmpvaW4oJywnKSkNCiAgICAgICAgICAgdGhhdC5hcnkucHVzaCh0aGF0LmNhbGVuZGFyRGF0YVtpXS5hbGxfZGF0ZS5qb2luKCcsJykpDQogICAgICAgICAgIC8vIHRoYXQuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlLmZpDQogICAgICAgICAgIHRoYXQuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlLmZpbHRlcihyb3V0ZSA9PiB7DQogICAgICAgICAgICAgLy8gY29uc29sZS5sb2cocm91dGUsOTg3NSkNCiAgICAgICAgICAgICB0aGF0LmFyeS5wdXNoKHJvdXRlKQ0KICAgICAgICAgICB9KQ0KICAgICAgICAgICAvLyB0aGF0LmFyeSA9IHRoYXQuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlDQogICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoYXQuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlLmpvaW4oJywnKSw3NTQpDQogICAgICAgICB9DQogICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGF0LmNhbGVuZGFyRGF0YVtpXS5hbGxfZGF0ZSw3NTQpDQogICAgICAgfQ0KICAgICAgIC8vIGNvbnNvbGUubG9nKCB0aGF0LnJqdHUsNzU0NSkNCiAgICAgICBjb25zb2xlLmxvZyh0aGF0LmFyeSkNCiAgICAgICByZXR1cm4gdGhhdC5hcnkNCiAgICAgfQ0KDQogICB9LA0KICBtZXRob2RzOiB7DQogICAgICAvLyBUb29sdGlwIOaWh+Wtl+aPkOekug0KICAgICAgICBjb250ZW50IChkYXRlKSB7DQogICAgICAgICAgY29uc29sZS5sb2coZGF0ZSwzNzY0NSkNCiAgICAgICAgICBsZXQgZGF0YSA9IGRhdGUNCiAgICAgICAgICBsZXQgY29udGVudCA9ICcnDQogICAgICAgICAgbGV0IGNvbmVydCA9ICcnDQogICAgICAgICAgbGV0IGNvbmVydHJlID0gJycNCiAgICAgICAgICBsZXQgbnVqdWU9IDANCiAgICAgICAgICBsZXQgbnVqZXVnID0gW10NCiAgICAgICAgICBsZXQgc2V0cmUgPSBbXQ0KICAgICAgICAgIHRoaXMudHJ1ZXcgPSBbXQ0KICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY2FsZW5kYXJEYXRhKQ0KICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGRhdGEsMzc2NDUpDQogICAgICAgICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgdGhpcy5jYWxlbmRhckRhdGEubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgIC8vIGlmIChkYXRlID09PSB0aGlzLmNhbGVuZGFyRGF0YVtpXS5iZWdpbl90aW1lKSB7DQogICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY2FsZW5kYXJEYXRhW2ldKQ0KICAgICAgICAgICAgICBpZih0aGlzLmNhbGVuZGFyRGF0YVtpXS5hbGxfZGF0ZSAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNhbGVuZGFyRGF0YVtpXS5hbGxfZGF0ZS5pbmNsdWRlcyhkYXRhKSkNCiAgICAgICAgICAgICAgICBpZih0aGlzLmNhbGVuZGFyRGF0YVtpXS5hbGxfZGF0ZS5pbmNsdWRlcyhkYXRhKSA9PSB0cnVlKXsNCiAgICAgICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5jYWxlbmRhckRhdGFbaV0uYWxsX2RhdGUuaW5jbHVkZXMoZGF0YSkpDQogICAgICAgICAgICAgICAgIHRoaXMudHJ1ZXcucHVzaCh0aGlzLmNhbGVuZGFyRGF0YVtpXS5hbGxfZGF0ZS5pbmNsdWRlcyhkYXRhKSkNCiAgICAgICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy50cnVldykNCiAgICAgICAgICAgICAgICAgaWYodGhpcy50cnVldy5sZW5ndGggPjEpew0KICAgICAgICAgICAgICAgICAgICBjb250ZW50ICA9IGNvbnRlbnQgKyAnLCcgKyB0aGlzLmNhbGVuZGFyRGF0YVtpXS5zY2hlZHVsZV9jb250ZW50DQogICAgICAgICAgICAgICAgICAgIC8vIG51amV1ZyA9IGNvbnRlbnQuc3BsaXQoJywnKQ0KICAgICAgICAgICAgICAgICAgICAvLyBmb3IodmFyIGkgPSAwIDsgaSA8IG51amV1Zy5sZW5ndGg7IGkrKyl7DQogICAgICAgICAgICAgICAgICAgIC8vICAgaWYgKHNldHJlLmluZGV4T2YobnVqZXVnW2ldKSA9PT0gLTEpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gICAgICBzZXRyZS5wdXNoKG51amV1Z1tpXSkNCiAgICAgICAgICAgICAgICAgICAgLy8gICAgICB9DQogICAgICAgICAgICAgICAgICAgIC8vIH0NCiAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudCA9IHNldHJlLmpvaW4oJywnKQ0KICAgICAgICAgICAgICAgICAgICAvLyBzZXRyZSA9IFsuLi5uZXcgc2V0KG51amV1ZyldDQogICAgICAgICAgICAgICAgICAgIC8vIGNvbmVydCA9IHNldHJlLmpvaW4oJywnKQ0KICAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICAgICBjb250ZW50ICA9IHRoaXMuY2FsZW5kYXJEYXRhW2ldLnNjaGVkdWxlX2NvbnRlbnQNCiAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAvLyBjb250ZW50ICA9IHRoaXMuY2FsZW5kYXJEYXRhW2ldLnNjaGVkdWxlX2NvbnRlbnQNCiAgICAgICAgICAgICAgICAgIC8vIHJldHVybiBjb250ZW50DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNvbnRlbnQpDQogICAgICAgICAgICAgICAgLy8gIGlmKHRoaXMuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlLmluY2x1ZGVzKGRhdGEpID09IGZhbHNlKXsNCiAgICAgICAgICAgICAgICAvLyAgICBjb25zb2xlLmxvZyh0aGlzLmNhbGVuZGFyRGF0YVtpXS5hbGxfZGF0ZS5pbmNsdWRlcyhkYXRhKSkNCiAgICAgICAgICAgICAgICAvLyAgIC8vIHRoaXMucmp0dS5wdXNoKHRoaXMuY2FsZW5kYXJEYXRhW2ldLnNjaGVkdWxlX2NvbnRlbnQpDQogICAgICAgICAgICAgICAgLy8gICAvLyBjb250ZW50ICA9IHRoaXMuY2FsZW5kYXJEYXRhW2ldLnNjaGVkdWxlX2NvbnRlbnQNCg0KICAgICAgICAgICAgICAgIC8vIH0NCiAgICAgICAgICAgICAgICAvLw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAvLyByZXR1cm4gY29udGVudA0KICAgICAgICAgICAgICAvLyB9DQoNCiAgICAgICAgICAgICAgLy8gaWYodGhpcy5jYWxlbmRhckRhdGFbaV0uYWxsX2RhdGUgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICAgIC8vICAgZm9yKHZhciBqPSAwIDsgajx0aGlzLmNhbGVuZGFyRGF0YVtpXS5hbGxfZGF0ZS5sZW5ndGg7IGorKyl7DQogICAgICAgICAgICAgIC8vICAgICAvLyBpZihkYXRhID09IHRoaXMuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlW2pdKXsNCiAgICAgICAgICAgICAgLy8gICAgIC8vICAgLy8gY29uc29sZS5sb2coMTI0KQ0KICAgICAgICAgICAgICAvLyAgICAgLy8gICAvLyBjb25zb2xlLmxvZyh0aGlzLmNhbGVuZGFyRGF0YVtpXSkNCiAgICAgICAgICAgICAgLy8gICAgIC8vICAgLy8gY29udGVudCAgPSB0aGlzLmNhbGVuZGFyRGF0YVtpXS5zY2hlZHVsZV9jb250ZW50DQogICAgICAgICAgICAgIC8vICAgICAvLyAgIC8vIGNvbnNvbGUubG9nKGNvbnRlbnQpDQogICAgICAgICAgICAgIC8vICAgICAvLyB9ZWxzZSBpZihkYXRhICE9PSB0aGlzLmNhbGVuZGFyRGF0YVtpXS5hbGxfZGF0ZVtqXSl7DQogICAgICAgICAgICAgIC8vICAgICAvLyAgIGNvbnRlbnQgID0gdGhpcy5jYWxlbmRhckRhdGFbaV0uc2NoZWR1bGVfY29udGVudA0KICAgICAgICAgICAgICAvLyAgICAgLy8gICBjb25zb2xlLmxvZyg4NzY1NDMpDQogICAgICAgICAgICAgIC8vICAgICAvLyAgIGNvbnNvbGUubG9nKGNvbnRlbnQpDQogICAgICAgICAgICAgIC8vICAgICAvLyB9DQogICAgICAgICAgICAgIC8vICAgfQ0KICAgICAgICAgICAgICAvLyAgIC8vIHRoaXMuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlLmZpbHRlcihyb3V0ZSA9PiB7DQogICAgICAgICAgICAgIC8vICAgLy8gICBpZihkYXRhID09IHJvdXRlKXsNCiAgICAgICAgICAgICAgLy8gICAvLyAgICAgY29uc29sZS5sb2coMTI0KQ0KICAgICAgICAgICAgICAvLyAgIC8vICAgICBjb25zb2xlLmxvZyhyb3V0ZS5zY2hlZHVsZV9jb250ZW50KQ0KICAgICAgICAgICAgICAvLyAgIC8vICAgICBjb250ZW50ICA9IHJvdXRlLnNjaGVkdWxlX2NvbnRlbnQNCiAgICAgICAgICAgICAgLy8gICAvLyAgICAgY29uc29sZS5sb2coY29udGVudCkNCiAgICAgICAgICAgICAgLy8gICAvLyAgIH1lbHNlew0KICAgICAgICAgICAgICAvLyAgIC8vICAgICBjb25zb2xlLmxvZyg4NzY1NDMpDQogICAgICAgICAgICAgIC8vICAgLy8gICB9DQogICAgICAgICAgICAgIC8vICAgLy8gfSkNCiAgICAgICAgICAgICAgLy8gfQ0KDQogICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2cocm91dGUsOTg3NSkNCiAgICAgICAgICAgICAgICAvLyB0aGF0LmFyeS5wdXNoKHJvdXRlKQ0KDQogICAgICAgICAgICAgIC8vIGlmKHRoaXMuY2FsZW5kYXJEYXRhW2ldLnNjaGVkdWxlX2NvbnRlbnQgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICAgIC8vICAgbnVqdWUgPSBudWp1ZSArMQ0KICAgICAgICAgICAgICAvLyAgIGlmKHRoaXMuY2FsZW5kYXJEYXRhW2ldLnNjaGVkdWxlX2NvbnRlbnQgIT09IHRoaXMuY2FsZW5kYXJEYXRhW251anVlXS5zY2hlZHVsZV9jb250ZW50KXsNCiAgICAgICAgICAgICAgLy8gICAgIC8vIHRoaXMucmp0dS5wdXNoKHRoaXMuY2FsZW5kYXJEYXRhW2ldLnNjaGVkdWxlX2NvbnRlbnQpDQogICAgICAgICAgICAgIC8vICAgfQ0KICAgICAgICAgICAgICAvLyAgIC8vIGNvbnRlbnQgPSB0aGlzLnJqdHUuam9pbignLCcpDQoNCiAgICAgICAgICAgICAgLy8gfQ0KDQogICAgICAgICAgICAvLyB9DQogICAgICAgICAgfQ0KICAgICAgICAgIC8vIHRoaXMuY2FsZW5kYXJEYXRhLmZpbHRlcihyb3V0ZSA9PnsNCiAgICAgICAgICAvLyAgIGlmKHJvdXRlLnNjaGVkdWxlX2NvbnRlbnQgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgLy8gICAgIC8vIGlmKGRhdGUgPT0gcm91dGUuYWxsX2RhdGUpDQoNCiAgICAgICAgICAvLyAgICAgY29uc29sZS5sb2cocm91dGUuc2NoZWR1bGVfY29udGVudCwyMzQ1NikNCiAgICAgICAgICAvLyAgICAgY29udGVudCAgPSByb3V0ZS5zY2hlZHVsZV9jb250ZW50DQogICAgICAgICAgLy8gICB9DQoNCiAgICAgICAgICAvLyB9KQ0KICAgICAgICAgIC8vIGlmKGNvbnRlbnQubGVuZ3RoID4xKXsNCiAgICAgICAgICAvLyAgIGZvcih2YXIgayA9IDAgOyBrIDwgY29udGVudC5sZW5ndGg7IGsrKyl7DQogICAgICAgICAgLy8gICAgIGNvbnNvbGUubG9nKGNvbnRlbnRbaV0pDQogICAgICAgICAgLy8gICAgIC8vIGlmKGNvbmVydHJlLmluZGV4T2YoY29uZXJ0W2ldKT09LTEpew0KICAgICAgICAgIC8vICAgICAvLyBjb25lcnRyZSs9Y29uZXJ0W2ldOw0KICAgICAgICAgIC8vICAgICB9DQogICAgICAgICAgLy8gfQ0KDQogICAgICAgICAgY29uc29sZS5sb2coY29udGVudCkNCiAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnJqdHUsMTIzNDUpDQogICAgICAgICAgLy8gY29udGVudCA9IHRoaXMucmp0dS5qb2luKCcsJykNCiAgICAgICAgIHJldHVybiBjb250ZW50DQogICAgICAgIH0sDQogICAgLy/mlbDmja4gIOesrOS4gOmDqOWIhuWIl+ihqA0KICAgIGdldExpc3QoKSB7DQogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOw0KICAgICAgbGlzdEluZGV4KHRoaXMucXVlcnlQYXJhbXMpLnRoZW4ocmVzcG9uc2UgPT4gew0KICAgICAgICAgIHRoaXMuY29uZmlnTGlzdCA9IHJlc3BvbnNlLmRhdGEucm93czsNCiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNvbmZpZ0xpc3QpDQogICAgICAgICAgdGhpcy50b3RhbCA9IHJlc3BvbnNlLmRhdGEudG90YWw7DQogICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7DQogICAgICAgIH0NCiAgICAgICk7DQogICAgfSwNCiAgICAvL+aVsOaNriAg56ys5LqM6YOo5YiG5YiX6KGoDQogICAgZ2V0TGlzdHRhYm9uZSgpIHsNCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7DQogICAgICBsaXN0SW5kZXgodGhpcy5xdWVyeVBhcmFtcykudGhlbihyZXNwb25zZSA9PiB7DQogICAgICAgICAgdGhpcy5jb25maWdMaXN0ID0gcmVzcG9uc2UuZGF0YS5yb3dzOw0KICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY29uZmlnTGlzdCkNCiAgICAgICAgICB0aGlzLnRvdGFsID0gcmVzcG9uc2UuZGF0YS50b3RhbDsNCiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgKTsNCiAgICB9LA0KICAgIC8v5pWw5o2uICDnrKzkuInpg6jliIbliJfooagNCiAgICBnZXRMaXNwcm9maWxlKCkgew0KICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsNCiAgICAgIGxpc3RJbmRleCh0aGlzLnF1ZXJ5UGFyYW1zdGFicHJvZmlsZSkudGhlbihyZXNwb25zZSA9PiB7DQogICAgICAgICAgaWYocmVzcG9uc2UuZGF0YSAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgIHRoaXMuZ2V0TGlzcHJvZmlsZW9uZSA9IHJlc3BvbnNlLmRhdGEucm93czsNCiAgICAgICAgICAgIHRoaXMudGlla3UgPSB0aGlzLmdldExpc3Byb2ZpbGVvbmVbMF0uaW5mb190aXRsZQ0KICAgICAgICAgICAgdGhpcy5jb21nID0gdGhpcy5nZXRMaXNwcm9maWxlb25lWzBdLmluZm9fY29udGVudA0KICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5nZXRMaXNwcm9maWxlb25lWzBdLmluZm9fdGl0bGUsOTgpDQogICAgICAgICAgICB0aGlzLnRvdGFscHJvZmlsZSA9IHJlc3BvbnNlLmRhdGEudG90YWw7DQogICAgICAgICAgfQ0KICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOw0KICAgICAgICB9DQogICAgICApOw0KICAgIH0sDQogICAgLy/mlbDmja4gIOaXpeWOhuaVsOaNruWIl+ihqA0KICAgIGdldExpc2FsZW5kYXIoKSB7DQogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOw0KICAgICAgbGlzdEluZGV4KHRoaXMucXVlcnlQYXJhbXNjYWxlbmRhcikudGhlbihyZXNwb25zZSA9PiB7DQogICAgICAgICAgaWYocmVzcG9uc2UuZGF0YSAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJEYXRhID0gcmVzcG9uc2UuZGF0YS5yb3dzOw0KICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5jYWxlbmRhckRhdGEsOTg0NTc2NSkNCiAgICAgICAgICB9DQogICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7DQogICAgICAgIH0NCiAgICAgICk7DQogICAgfSwNCiAgICAvL+aVsOaNriAg5aSH5b+Y5b2V5pWw5o2u5YiX6KGoDQogICAgZ2V0TGlzbWVtb3JhbmR1bSgpIHsNCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7DQogICAgICBsaXN0SW5kZXgodGhpcy5xdWVyeVBhcmFtc3RhYm1lbW9yYW5kdW0pLnRoZW4ocmVzcG9uc2UgPT4gew0KICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICB0aGlzLmdldG1lbW9yYW5kdW0gPSByZXNwb25zZS5kYXRhLnJvd3M7DQogICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmdldG1lbW9yYW5kdW0sOTg3NjUpDQogICAgICAgICAgfQ0KICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOw0KICAgICAgICB9DQogICAgICApOw0KICAgIH0sDQogICAgLy8g5pWw5o2u5YiX6KGoICAg6YCa6K6v5b2V5pWw5o2uDQogICAgZ2V0TGlzYWlsdHdvKCkgew0KICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsNCiAgICAgIGxpc3RJbmRleCh0aGlzLnF1ZXJ5UGFyYW1zYWlsKS50aGVuKHJlc3BvbnNlID0+IHsNCiAgICAgICAgICBpZihyZXNwb25zZS5kYXRhICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgdGhpcy5nZXRMaXNhaWxsaWUgPSByZXNwb25zZS5kYXRhLnJvd3M7DQogICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNvbmZpZ0xpc3QpDQogICAgICAgICAgfQ0KICAgICAgICAgIHRoaXMudG90YWxhbGkgPSByZXNwb25zZS5kYXRhLnRvdGFsDQogICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7DQogICAgICAgIH0NCiAgICAgICk7DQogICAgfSwNCiAgICAvL3RhYiDlhazlkYog5qCP5pWw5o2uDQogICAgZ2V0TGlzdHRhYigpIHsNCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7DQogICAgICBsaXN0SW5kZXh0d28odGhpcy5kaWN0VHlwZSkudGhlbihyZXNwb25zZSA9PiB7DQogICAgICAgICAgdGhpcy5lZGl0YWJsZVRhYnMgPSByZXNwb25zZS5kYXRhOw0KICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXMuZGljdFR5cGUgPSByZXNwb25zZS5kYXRhWzFdLmRpY3RUeXBlDQogICAgICAgICAgY29uc29sZS5sb2codGhpcy5lZGl0YWJsZVRhYnMpDQogICAgICAgICAgLy8gdGhpcy50b3RhbCA9IHJlc3BvbnNlLnRvdGFsOw0KICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOw0KICAgICAgICB9DQogICAgICApDQogICAgfSwNCiAgICAvLyDlhazlj7jmpoLlhrUgIHRhYg0KICAgIGdldExpc2VyKCkgew0KICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsNCiAgICAgIGxpc3RJbmRleHRoZXJyKHRoaXMuZGljdFR5cGV0d28pLnRoZW4ocmVzcG9uc2UgPT4gew0KICAgICAgICAgIHRoaXMuZWRpdGFibGVUYWJzdGVvID0gcmVzcG9uc2UuZGF0YTsNCiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmVkaXRhYmxlVGFic3RlbykNCiAgICAgICAgICAvLyB0aGlzLnRvdGFsID0gcmVzcG9uc2UudG90YWw7DQogICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7DQogICAgICAgIH0NCiAgICAgICkNCiAgICB9LA0KICAgLy8g6YCa6K6v5b2V6KGo5aS0DQogICBnZXRMaXNhaWwoKSB7DQogICAgIHRoaXMubG9hZGluZyA9IHRydWU7DQogICAgIGxpc3RJbmRleGZvdSh0aGlzLmFsaWVtZykudGhlbihyZXNwb25zZSA9PiB7DQogICAgICAgICBpZihyZXNwb25zZS5kYXRhICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICB0aGlzLnRhYmxlRGF0YWFsaWQgPSByZXNwb25zZS5kYXRhLnRhYmxlSGVhZExpc3Q7DQogICAgICAgICAgIHRoaXMucG9zdExpc3QgPSByZXNwb25zZS5kYXRhDQogICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMudGFibGVEYXRhYWxpZCw2NykNCiAgICAgICAgICAgdGhpcy50b3RhbHByb2ZpbGUgPSByZXNwb25zZS5kYXRhLnRvdGFsOw0KICAgICAgICAgfQ0KICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7DQogICAgICAgfQ0KICAgICApOw0KICAgfSwNCiAgIC8v5pel5Y6G5paw5aKe5by55qGG5pWw5o2uDQogICBnZXRMaXNhbGVuZGFyYWRkZCgpIHsNCiAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsNCiAgICAgdGhpcy5xdWVyeURhdGEgPSBbXQ0KICAgICBsaXN0SW5kZXh0YW5sKHRoaXMuY2FsZW5kYXJhZGQpLnRoZW4ocmVzcG9uc2UgPT4gew0KICAgICAgICAgaWYocmVzcG9uc2UuZGF0YSAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgdGhpcy5xdWVyeURhdGEgPSByZXNwb25zZS5kYXRhDQogICAgICAgICAgIHRoaXMucXVlcnlEYXRhLmNvbHVtbnMuZmlsdGVyKHJvdXRlID0+IHsNCiAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyb3V0ZSkNCiAgICAgICAgICAgICBpZihyb3V0ZS5odG1sVHlwZSA9PSAiaW5wdXQiIHx8IHJvdXRlLmh0bWxUeXBlID09ICd0ZXh0YXJlYScpew0KICAgICAgICAgICAgICAgdGhpcy5pbnB1dExpc3QucHVzaChyb3V0ZSkNCiAgICAgICAgICAgICB9ZWxzZSBpZihyb3V0ZS5odG1sVHlwZSA9PSAic2VsZWN0Iil7DQogICAgICAgICAgICAgICB0aGlzLnNlbGVjdExpc3QucHVzaChyb3V0ZSkNCiAgICAgICAgICAgICB9ZWxzZSBpZihyb3V0ZS5odG1sVHlwZSA9PSAiZGF0ZXRpbWUiKXsNCiAgICAgICAgICAgICAgIHRoaXMuZGF0YUxpc3QucHVzaChyb3V0ZSkNCiAgICAgICAgICAgICB9ZWxzZSBpZihyb3V0ZS5odG1sVHlwZSA9PSAiZWRpdG9yIil7DQogICAgICAgICAgICAgICB0aGlzLmVkaXRvckxpc3QucHVzaChyb3V0ZSkNCiAgICAgICAgICAgICB9DQogICAgICAgICB9KQ0KICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdExpc3QpDQoNCiAgICAgICAgIH0NCiAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOw0KICAgICAgIH0NCiAgICAgKTsNCiAgIH0sDQogICAvL+Wkh+W/mOW9leaWsOWinuW8ueahhuaVsOaNrg0KICAgZ2V0TGlzYWxlbmRhcmFkZGRtZXIoKSB7DQogICAgIHRoaXMubG9hZGluZyA9IHRydWU7DQogICAgIHRoaXMucXVlcnlEYXRhID0gW10NCiAgICAgbGlzdEluZGV4dGFubCh0aGlzLmNhbGVuZGFyYWRkbWVyKS50aGVuKHJlc3BvbnNlID0+IHsNCiAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgIHRoaXMucXVlcnlEYXRhID0gcmVzcG9uc2UuZGF0YQ0KICAgICAgICAgICB0aGlzLnF1ZXJ5RGF0YS5jb2x1bW5zLmZpbHRlcihyb3V0ZSA9PiB7DQogICAgICAgICAgICAgLy8gY29uc29sZS5sb2cocm91dGUpDQogICAgICAgICAgICAgaWYocm91dGUuaHRtbFR5cGUgPT0gImlucHV0IiB8fCByb3V0ZS5odG1sVHlwZSA9PSAndGV4dGFyZWEnKXsNCiAgICAgICAgICAgICAgIHRoaXMuaW5wdXRMaXN0LnB1c2gocm91dGUpDQogICAgICAgICAgICAgfWVsc2UgaWYocm91dGUuaHRtbFR5cGUgPT0gInNlbGVjdCIpew0KICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RMaXN0LnB1c2gocm91dGUpDQogICAgICAgICAgICAgfWVsc2UgaWYocm91dGUuaHRtbFR5cGUgPT0gImRhdGV0aW1lIil7DQogICAgICAgICAgICAgICB0aGlzLmRhdGFMaXN0LnB1c2gocm91dGUpDQogICAgICAgICAgICAgfWVsc2UgaWYocm91dGUuaHRtbFR5cGUgPT0gImVkaXRvciIpew0KICAgICAgICAgICAgICAgdGhpcy5lZGl0b3JMaXN0LnB1c2gocm91dGUpDQogICAgICAgICAgICAgfQ0KICAgICAgICAgfSkNCiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5zZWxlY3RMaXN0KQ0KDQogICAgICAgICB9DQogICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsNCiAgICAgICB9DQogICAgICk7DQogICB9LA0KICAgIGdvVGFyZ2V0KGhyZWYpIHsNCiAgICAgIHdpbmRvdy5vcGVuKGhyZWYsICJfYmxhbmsiKTsNCiAgICB9LA0KICAgICBoYW5kbGVTaXplQ2hhbmdlKHZhbCkgew0KICAgICAgY29uc29sZS5sb2coYOavj+mhtSAke3ZhbH0g5p2hYCk7DQogICAgICB9LA0KICAgIGhhbmRsZUN1cnJlbnRDaGFuZ2UodmFsKSB7DQogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2VObyA9IHZhbA0KICAgICAgdGhpcy5nZXRMaXN0KCkNCiAgICAgICAgY29uc29sZS5sb2coYOW9k+WJjemhtTogJHt2YWx9YCk7DQogICAgICB9LA0KICAgICAgLy8g5YWs5Y+45qaC5Ya1DQogICAgICBoYW5kbGVTaXplQ2hhbmdlcHJvZmlsZSh2YWwpIHsNCiAgICAgICAgICAgICAgY29uc29sZS5sb2coYOavj+mhtSAke3ZhbH0g5p2hYCk7DQogICAgICAgIH0sDQogICAgICBoYW5kbGVDdXJyZW50Q2hhbmdlcHJvZmlsZSh2YWwpIHsNCiAgICAgICAgdGhpcy5xdWVyeVBhcmFtc3RhYnByb2ZpbGUucGFnZU5vID0gdmFsDQogICAgICAgIHRoaXMuZ2V0TGlzcHJvZmlsZSgpDQogICAgICAgICAgY29uc29sZS5sb2coYOW9k+WJjemhtTogJHt2YWx9YCk7DQogICAgICAgIH0sDQogICAgIC8vIOmAmuiur+W9lQ0KICAgICBoYW5kbGVTaXplQ2hhbmdlYWxpKHZhbCkgew0KICAgICAgICAgICAgIGNvbnNvbGUubG9nKGDmr4/pobUgJHt2YWx9IOadoWApOw0KICAgICAgIH0sDQogICAgIGhhbmRsZUN1cnJlbnRDaGFuZ2VhbGkodmFsKSB7DQogICAgICAgdGhpcy5xdWVyeVBhcmFtc2FpbC5wYWdlTm8gPSB2YWwNCiAgICAgICB0aGlzLmdldExpc2FpbHR3bygpDQogICAgICAgICBjb25zb2xlLmxvZyhg5b2T5YmN6aG1OiAke3ZhbH1gKTsNCiAgICAgICB9LA0KICAgIGhhbmRsZUNsaWNrKHRhYiwgZXZlbnQpIHsNCiAgICAgICAgICAgICAgY29uc29sZS5sb2codGFiLCBldmVudCk7DQogICAgICB9LA0KICAgICAgLy8g56ys5LiA6YOo5YiGdGFi54K55Ye7DQogICAgdGFiU2J1KGluZGV4KXsNCiAgICAgIGNvbnNvbGUubG9nKGluZGV4KQ0KICAgICB0aGlzLm51bSA9IGluZGV4IC0gMQ0KICAgICB0aGlzLnF1ZXJ5UGFyYW1zLmNvbmRpdGlvbi5ub3RpY2VfdHlwZSA9IGluZGV4DQogICAgIHRoaXMuZ2V0TGlzdCgpDQogICAgfSwNCiAgICAvLyDnrKzkuozpg6jliIZ0YWLngrnlh7tudW1saXN0DQogICAgdGFiTGlzdChpbmRleCl7DQogICAgICB0aGlzLm51bWxpc3QgPSBpbmRleA0KICAgIH0sDQogICAgLy8g56ys5LiJ6YOo5YiGdGFi54K55Ye7DQogICAgdGFiU2J1cHJvZmlsZShpbmRleCl7DQogICAgICB0aGlzLm51bXByb2ZpbGUgPSBpbmRleCAtIDENCiAgICAgIHRoaXMucXVlcnlQYXJhbXN0YWJwcm9maWxlLmNvbmRpdGlvbi5ub3RpY2VfdHlwZSA9IGluZGV4DQogICAgICB0aGlzLmdldExpc3Byb2ZpbGUoKQ0KICAgIH0sDQogICAgLy8g6KGo5Y2V6YeN572uDQogICAgcmVzZXQoKSB7DQogICAgICB0aGlzLmZvcm0gPXsNCiAgICAgIH0sDQogICAgICB0aGlzLnJlc2V0Rm9ybSgiZm9ybSIpOw0KICAgIH0sDQogICAgLy8g5Y+W5raI5oyJ6ZKuDQogICAgY2FuY2VsKCkgew0KICAgICAgdGhpcy5vcGVuID0gZmFsc2U7DQogICAgICB0aGlzLnJlc2V0KCk7DQogICAgfSwNCiAgICAvKiog5paw5aKe5oyJ6ZKu5pON5L2cICovDQogICAgaGFuZGxlQWRkKCkgew0KICAgICAgdGhpcy5udW1tZXIgPSAwDQogICAgICBjb25zb2xlLmxvZyh0aGlzLm9wZW4pDQogICAgICB0aGlzLnJlc2V0KCk7DQogICAgICB0aGlzLmZvcm0gPXsNCiAgICAgIH0NCiAgICAgIHRoaXMuZ2V0TGlzYWxlbmRhcmFkZGQoKQ0KICAgICAgdGhpcy5vcGVuID0gdHJ1ZTsNCiAgICAgIHRoaXMudGl0bGUgPSAi5re75Yqg5pel5Y6GIjsNCiAgICB9LA0KICAgIC8qKiDmj5DkuqTmjInpkq7mk43kvZwgKi8NCiAgICBoYW5kbGVRdWVyeSgpIHsNCiAgICAgIGZvcihsZXQgaXRlbSBvZiB0aGlzLnF1ZXJ5RGF0YS5jb2x1bW5zKXsNCiAgICAgICAgaWYoaXRlbS5odG1sVHlwZSA9PSAnY2hlY2tib3gnIHx8IGl0ZW0uaHRtbFR5cGUgPT0gJ2ltYWdlVXBsb2FkJyB8fCBpdGVtLmh0bWxUeXBlID09ICdmaWxlVXBsb2FkJyl7DQogICAgICAgICAgdGhpcy5mb3JtW2l0ZW0uY29sdW1uTmFtZV0gPSB0aGlzLiRyZWZzW2l0ZW0uY29sdW1uTmFtZV1bMF0uY29uZmlnDQogICAgICAgIH0gZWxzZXsNCiAgICAgICAgICB0aGlzLmZvcm1baXRlbS5jb2x1bW5OYW1lXSA9IHRoaXMuJHJlZnNbaXRlbS5jb2x1bW5OYW1lXVswXS5jb25maWdbaXRlbS5jb2x1bW5OYW1lXQ0KICAgICAgICB9DQogICAgICB9DQogICAgICAvLyB0aGlzLmZvcm1lID0gdGhpcy5mb3JtDQogICAgICBpZih0aGlzLm51bW1lciA9PSAwKXsNCiAgICAgICAgdGhpcy5mb3JtZS50YWJsZSA9ICdzeXNfc2NoZWR1bGUnDQogICAgICAgIHRoaXMuZm9ybWUub2JqSWQgPSAtMQ0KICAgICAgICB0aGlzLmZvcm1lLmZpeGVkRGF0YSA9IHRoaXMuZm9ybQ0KICAgICAgICBpZih0aGlzLmZvcm1lLmZpeGVkRGF0YS5yZW1pbmRfdHlwZSAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICB0aGlzLmZvcm1lLmZpeGVkRGF0YS5yZW1pbmRfdHlwZSA9IHRoaXMuZm9ybWUuZml4ZWREYXRhLnJlbWluZF90eXBlLmpvaW4oJywnKTsNCiAgICAgICAgfQ0KICAgICAgICAvL+aXpeWOhg0KICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmZvcm1lLmZpeGVkRGF0YSx0aGlzLmZvcm1lKQ0KICAgICAgICBhZGRDb25maWdpbmRleCh0aGlzLmZvcm1lKS50aGVuKHJlc3BvbnNlID0+IHsNCiAgICAgICAgICB0aGlzLm1zZ1N1Y2Nlc3MoIuaWsOWinuaIkOWKnyIpOw0KICAgICAgICAgIC8vIHRoaXMub3BlbiA9IGZhbHNlOw0KICAgICAgICAgIHRoaXMuZ2V0TGlzYWxlbmRhcigpDQogICAgICAgICAgdGhpcy5jYW5jZWwoKTsNCiAgICAgICAgfSk7DQogICAgICB9ZWxzZSBpZih0aGlzLm51bW1lciA9PSAxKXsNCiAgICAgICAgLy8gdGhpcy5mb3JtLnRhYmxlID0gJ3N5c19tZW1vcmFuZHVtJw0KICAgICAgICB0aGlzLmZvcm1lLnRhYmxlID0gJ3N5c19tZW1vcmFuZHVtJw0KICAgICAgICB0aGlzLmZvcm1lLm9iaklkID0gLTENCiAgICAgICAgdGhpcy5mb3JtZS5maXhlZERhdGEgPSB0aGlzLmZvcm0NCiAgICAgICAgaWYodGhpcy5mb3JtZS5maXhlZERhdGEucmVtaW5kX3R5cGUgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgdGhpcy5mb3JtZS5maXhlZERhdGEucmVtaW5kX3R5cGUgPSB0aGlzLmZvcm1lLmZpeGVkRGF0YS5yZW1pbmRfdHlwZS5qb2luKCcsJyk7DQogICAgICAgIH0NCiAgICAgICAgLy/lpIflv5jlvZUNCiAgICAgICBhZGRDb25maWdpbmRleCh0aGlzLmZvcm1lKS50aGVuKHJlc3BvbnNlID0+IHsNCiAgICAgICAgIHRoaXMubXNnU3VjY2Vzcygi5paw5aKe5oiQ5YqfIik7DQogICAgICAgICAvLyB0aGlzLm9wZW4gPSBmYWxzZTsNCiAgICAgICAgIHRoaXMuZ2V0TGlzbWVtb3JhbmR1bSgpDQogICAgICAgICB0aGlzLmNhbmNlbCgpOw0KICAgICAgIH0pOw0KICAgICAgfQ0KICAgICAgY29uc29sZS5sb2codGhpcy5mb3JtLmZpeGVkRGF0YSwyMjMxMSkNCiAgICAgIC8vIHRoaXMuZ2V0TGlzdCgpOw0KICAgIH0sDQogICAgLy8g5by55qGGDQogICAgY2hhbmdlRm4ob2JqKSB7DQogICAgICBjb25zb2xlLmxvZyhvYmopDQogICAgICBmb3IobGV0IGtleSBpbiBvYmopew0KICAgICAgICB0aGlzLmZvcm0uZml4ZWREYXRhW2tleV0gPSBvYmpba2V5XQ0KICAgICAgfQ0KICAgIH0sDQogICAgLy8g5paw5aKe5aSH5b+Y5b2VDQogICAgbWVtb2VyZSgpew0KICAgICB0aGlzLm51bW1lciA9IDENCiAgICAgdGhpcy5vcGVuID0gdHJ1ZTsNCiAgICAgdGhpcy50aXRsZSA9ICLmt7vliqDlpIflv5jlvZUiOw0KICAgICB0aGlzLmdldExpc2FsZW5kYXJhZGRkbWVyKCkNCiAgICB9LA0KICAgIGhhbmRsZVNlbGVjdGlvbkNoYW5nZSgpIHsNCg0KICAgIH0sDQogICAgLy8g5a2X56ym5Liy5Y676YeNDQogICAgdW5pcXVlKGFycikgew0KICAgICAgbGV0IGFyZmUgPSBbXQ0KICAgICAgbGV0IHNlcmZndCA9IFtdDQogICAgICBhcmZlID0gYXJyLnNwbGl0KCcsJykNCiAgICAgIGZvcih2YXIgaSA9IDAgOyBpIDwgYXJmZS5sZW5ndGg7IGkrKyl7DQogICAgICAgICBpZiAoc2VyZmd0LmluZGV4T2YoYXJmZVtpXSkgPT09IC0xKSB7DQogICAgICAgICAgICBzZXJmZ3QucHVzaChhcmZlW2ldKQ0KICAgICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgY29uc29sZS5sb2coc2VyZmd0LmpvaW4oJywnKSkNCiAgICAgLy8gY29uc3QgcmVzID0gbmV3IE1hcCgpOw0KICAgICAvLyBjb25zb2xlLmxvZyhhcnIuZmlsdGVyKChhcnIpID0+ICFyZXMuaGFzKGFyci5pZCkgJiYgcmVzLnNldChhcnIuaWQsIDEpKSkNCiAgICAgLy8gcmV0dXJuIGFyci5maWx0ZXIoKGFycikgPT4gIXJlcy5oYXMoYXJyLmlkKSAmJiByZXMuc2V0KGFyci5pZCwgMSkpOw0KICAgIH0NCiAgfSwNCn07DQo="},null]}
|