{"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\\VideoFacilities.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\src\\views\\Device\\deviceManage\\VideoFacilities.vue","mtime":1731062408753},{"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:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvYnp6Z2otZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbHRlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwoKaW1wb3J0IHsgbWFwU3RhdGUgfSBmcm9tICd2dWV4JzsKaW1wb3J0IGRpY3RVdGlscyBmcm9tICdAL2NvbXBvbmVudHMvZGljdC9EaWN0U2VsZWN0VXRpbHMuanMnOwppbXBvcnQgZXF1aXBtZW50TWFuYWdlIGZyb20gJ0AvYXBpL2RldmljZS9lcXVpcG1lbnRNYW5hZ2UuanMnOwppbXBvcnQgVmlkZW9GYWNpbGl0aWVzIGZyb20gJ0AvYXBpL2RldmljZS9WaWRlb0ZhY2lsaXRpZXMuanMnOwppbXBvcnQgeyBkcmFnQ29udHJvbGxlckRpdiB9IGZyb20gJ0AvbWl4aW5zL2RyYWdDb250cm9sbGVyRGl2JzsKaW1wb3J0IHZpZGVvTW9uaXRvciBmcm9tICdAL2FwaS92aWRlb01vbml0b3JhcGkuanMnOwppbXBvcnQgcmVxIGZyb20gJ0AvcmVxdWVzdC5qcyc7CmltcG9ydCB7IFRhYmxlTWl4aW4gfSBmcm9tICdAL21peGlucy90YWJsZU1peGluJzsKaW1wb3J0IHZpZGVvRm9ybURpYWxvZyBmcm9tICdAL3ZpZXdzL0RldmljZS9kZXZpY2VNYW5hZ2UvY29tcG9uZW50cy92aWRlb0Zvcm1EaWFsb2cnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ1ZpZGVvRmFjaWxpdGllcycsCiAgY29tcG9uZW50czogewogICAgdmlkZW9Gb3JtRGlhbG9nOiB2aWRlb0Zvcm1EaWFsb2cKICB9LAogIG1peGluczogW1RhYmxlTWl4aW5dLAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICAvL+aQuuW4puWPguaVsAogICAgICB1cGxvYWREYXRhOiB7CiAgICAgICAgem9uZUNvZGU6ICcnCiAgICAgIH0sCiAgICAgIHJldmlzZURhdDogJycsCiAgICAgIHJldmlzZVZpc2libGU6IGZhbHNlLAogICAgICByZXZpc2VTdGFydDogJycsCiAgICAgIGNhdGFsb2dzOiBbXSwKICAgICAgLy/op4bpopHnm67lvZUKICAgICAgbG9hZGluZzogZmFsc2UsCiAgICAgIGZ1bGxJZDogJycsCiAgICAgIC8v55uu5b2V5qCR57yW56CBCiAgICAgIGNhdGFsb2dDb2RlOiAnJywKICAgICAgLy/nm67lvZXnvJbnoIEKICAgICAgY2F0YWxvZ1BsYXRmb3JtOiAnJywKICAgICAgbXVsdGlwbGVTZWxlY3Rpb246IFtdLAogICAgICAvLyDlpI3pgInmoYYKICAgICAgcGFyYW1zOiB7CiAgICAgICAgbmFtZTogJycsCiAgICAgICAgaW1wb3J0YW50OiAnJywKICAgICAgICBzdGF0dXM6ICcnLAogICAgICAgIHpvbmVDb2RlOiAnJwogICAgICB9LAogICAgICBxdWVyeXM6IFt7CiAgICAgICAgZ3JvdXA6ICdtYWluJywKICAgICAgICBvcGVyYXRpb246ICdMSUtFJywKICAgICAgICBwYXJlbnRHcm91cDogJycsCiAgICAgICAgcHJvcGVydHk6ICdyLm5hbWVfJywKICAgICAgICByZWxhdGlvbjogJ0FORCcsCiAgICAgICAgdmFsdWU6ICcnCiAgICAgIH0sCiAgICAgIC8vIHsKICAgICAgLy8gICBncm91cDogJ21haW4nLAogICAgICAvLyAgIG9wZXJhdGlvbjogJ1JJR0hUX0xJS0UnLAogICAgICAvLyAgIHBhcmVudEdyb3VwOiAnJywKICAgICAgLy8gICBwcm9wZXJ0eTogJ3ouZnVsbF9pZF8nLAogICAgICAvLyAgIHJlbGF0aW9uOiAnQU5EJywKICAgICAgLy8gICB2YWx1ZTogJycKICAgICAgLy8gfSwKICAgICAgewogICAgICAgIGdyb3VwOiAnbWFpbicsCiAgICAgICAgb3BlcmF0aW9uOiAnRVFVQUwnLAogICAgICAgIHBhcmVudEdyb3VwOiAnJywKICAgICAgICBwcm9wZXJ0eTogJ3IuY2F0YWxvZ19jb2RlXycsCiAgICAgICAgcmVsYXRpb246ICdBTkQnLAogICAgICAgIHZhbHVlOiAnJwogICAgICB9LCB7CiAgICAgICAgZ3JvdXA6ICdtYWluJywKICAgICAgICBvcGVyYXRpb246ICdFUVVBTCcsCiAgICAgICAgcGFyZW50R3JvdXA6ICcnLAogICAgICAgIHByb3BlcnR5OiAnZS5pbXBvcnRhbnRfJywKICAgICAgICByZWxhdGlvbjogJ0FORCcsCiAgICAgICAgdmFsdWU6ICcnCiAgICAgIH1dLAogICAgICByZWdpb25JbmRleENvZGU6ICcnLAogICAgICB0b3RhbDogMCwKICAgICAgdGFibGVEYXRhOiBbXSwKICAgICAgdmlkZW9UcmVlOiBbXSwKICAgICAgZGVmYXVsdFByb3BzOiB7CiAgICAgICAgdmFsdWU6ICdjb2RlJywKICAgICAgICBsYWJlbDogJ25hbWUnCiAgICAgIH0sCiAgICAgIGRhdGE6IFtdLAogICAgICBmaWx0ZXJUZXh0OiAnJywKICAgICAgc2hvdzogZmFsc2UsCiAgICAgIHJ1bGVzOiB7CiAgICAgICAgbmFtZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpeWMuuWfn+WQjeensCcsCiAgICAgICAgICB0cmlnZ2VyOiAnY2hhbmdlJwogICAgICAgIH1dLAogICAgICAgIGNvZGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fovpPlhaXljLrln5/nvJbnoIEnLAogICAgICAgICAgdHJpZ2dlcjogJ2NoYW5nZScKICAgICAgICB9XQogICAgICB9LAogICAgICB0aXRsZXM6ICcnLAogICAgICBhcmVhOiB7CiAgICAgICAgY29kZTogJycsCiAgICAgICAgbmFtZTogJycKICAgICAgfSwKICAgICAgcEFyZWE6IG51bGwsCiAgICAgIGFjdGl2ZUNvbGxhcHNlRGlhOiAnMScsCiAgICAgIHNob3dUcmVlTm9kZTogZmFsc2UsCiAgICAgIHVybDogewogICAgICAgIGRlbGV0ZTogJy9iaXovY2F0YWxvZy9iYXNlL3BvaW50LycKICAgICAgfSwKICAgICAgc2J6dExpc3Q6IFtdLAogICAgICB0cmVlS2V5OiAnJywKICAgICAgb3B0aW9uczogW10sCiAgICAgIHNwZHd6dExpc3Q6IFtdLAogICAgICBzcGR3c3NwdExpc3Q6IFtdLAogICAgICBhY3Rpb25Vcmw6IHdpbmRvdy5jb250ZXh0LnBvcnRhbAogICAgfTsKICB9LAogIHdhdGNoOiB7CiAgICBmaWx0ZXJUZXh0OiBmdW5jdGlvbiBmaWx0ZXJUZXh0KHZhbCkgewogICAgICB0aGlzLiRyZWZzLnRyZWUuZmlsdGVyKHZhbCk7CiAgICB9CiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgZHJhZ0NvbnRyb2xsZXJEaXYoKTsKICB9LAogIC8v6I635Y+WdG9rZW4KICBjb21wdXRlZDogX29iamVjdFNwcmVhZCh7fSwgbWFwU3RhdGUoewogICAgaGVhZGVyOiBmdW5jdGlvbiBoZWFkZXIoc3RhdGUpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBBdXRob3JpemF0aW9uOiAiQmVhcmVyICIuY29uY2F0KHN0YXRlLmxvZ2luLmN1cnJlbnRVc2VyLnRva2VuKQogICAgICB9OwogICAgfQogIH0pKSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgLy/lnKhjcmVhdGVk6YeM6Z2i5Yy66I635Y+WYWN0aW9uVXJsCiAgICB0aGlzLnNienRMaXN0ID0gZGljdFV0aWxzLmdldERpY3RJdGVtc0Zyb21DYWNoZSgnc2J6dCcpOwogICAgdGhpcy5zcGR3enRMaXN0ID0gZGljdFV0aWxzLmdldERpY3RJdGVtc0Zyb21DYWNoZSgnc3Bkd3p0Jyk7CiAgICB0aGlzLnNwZHdzc3B0TGlzdCA9IGRpY3RVdGlscy5nZXREaWN0SXRlbXNGcm9tQ2FjaGUoJ3NwZHdzc3B0Jyk7CiAgICB0aGlzLmdldEJ1c2luZXNzVHJlZW4oKTsKICB9LAogIG1ldGhvZHM6IHsKICAgIGNoYW5nZVZlZGVvRjogZnVuY3Rpb24gY2hhbmdlVmVkZW9GKHZhbCkgewogICAgICBpZiAodmFsKSB7CiAgICAgICAgdGhpcy50cmVlS2V5ID0gdmFsOwogICAgICAgIHRoaXMuY2F0YWxvZ0NvZGUgPSB2YWw7CiAgICAgICAgdGhpcy5xdWVyeSA9IHsKICAgICAgICAgIHpvbmVDb2RlOiB0aGlzLnRyZWVLZXkKICAgICAgICB9OwogICAgICAgIHRoaXMuZ2V0VHJlZSgpOwogICAgICAgIC8vIHRoaXMucXVlcnkgPSB7CiAgICAgICAgLy8gCXpvbmVDb2RlOiB2YWwsCiAgICAgICAgLy8gfQogICAgICAgIC8vIHZpZGVvTW9uaXRvci5nZXRWaWRlb1RyZWVTaXRlKHRoaXMucXVlcnksIChyZXMpID0+IHsKICAgICAgICAvLyAJdGhpcy5kYXRhID0gcmVzLnZhbHVlCiAgICAgICAgLy8gfSkKICAgICAgICAvLyBsZXQgb2JqID0gdGhpcy5vcHRpb25zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uY29kZSA9PSB2YWwpCiAgICAgICAgLy8gaWYgKG9iaiAmJiBvYmoucGxhdGZvcm0pIHsKICAgICAgICAvLyAJdGhpcy5wbGF0Zm9ybSA9IG9iai5wbGF0Zm9ybQogICAgICAgIC8vIH0KICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmRhdGEgPSBbXTsKICAgICAgICB0aGlzLiRzZXQodGhpcy5kYXRhLCB0aGlzLmRhdGEsIHJlcy52YWx1ZSk7CiAgICAgIH0KICAgIH0sCiAgICBnZXRCdXNpbmVzc1RyZWVuOiBmdW5jdGlvbiBnZXRCdXNpbmVzc1RyZWVuKCkgewogICAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgICB2aWRlb01vbml0b3IuZ2V0VmlkZW9GKHt9LCBmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXMub3B0aW9ucyA9IHJlcy52YWx1ZTsKICAgICAgICBfdGhpcy50cmVlS2V5ID0gX3RoaXMub3B0aW9uc1swXS5jb2RlOwogICAgICAgIF90aGlzLmNhdGFsb2dDb2RlID0gX3RoaXMub3B0aW9uc1swXS5jb2RlOwogICAgICAgIF90aGlzLnF1ZXJ5ID0gewogICAgICAgICAgem9uZUNvZGU6IF90aGlzLnRyZWVLZXkKICAgICAgICB9OwogICAgICAgIF90aGlzLmdldFRyZWUoKTsKICAgICAgICAvLyB2aWRlb01vbml0b3IuZ2V0VmlkZW9UcmVlU2l0ZSh0aGlzLnF1ZXJ5LCAocmVzKSA9PiB7CiAgICAgICAgLy8gCXRoaXMuZGF0YSA9IHJlcy52YWx1ZQogICAgICAgIC8vIAl0aGlzLnF1ZXJ5UGFyYW0ucGFyYW1zLnRyZWVLZXkgPSB0aGlzLmRhdGFbMF0uY29kZQogICAgICAgIC8vIH0pCiAgICAgICAgLy8gdmlkZW9Nb25pdG9yLmdldFZpZGVvVHJlZSh0aGlzLnF1ZXJ5LCAocmVzKSA9PiB7CiAgICAgICAgLy8gICAgIHRoaXMuZGF0YSA9IHJlcy52YWx1ZQogICAgICAgIC8vICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnZpZGVvVHJlZSw2NjYpCiAgICAgICAgLy8gICAgIHRoaXMucXVlcnlQYXJhbS5wYXJhbXMudHJlZUtleSA9IHRoaXMuZGF0YVswXS5jb2RlCiAgICAgICAgLy8gfSkKICAgICAgfSk7CiAgICB9LAogICAgaGFuZGxlRGJDbGljazogZnVuY3Rpb24gaGFuZGxlRGJDbGljayh2YWwpIHsKICAgICAgY29uc29sZS5sb2codmFsKTsKICAgICAgdGhpcy4kcmVmcy5mb3JtTW9kYWwuZWRpdEJhc2ljKHZhbCk7CiAgICB9LAogICAgLy/kuIrkvKDmiJDlip8KICAgIGhhbmRsZUF2YXRhclN1Y2Nlc3M6IGZ1bmN0aW9uIGhhbmRsZUF2YXRhclN1Y2Nlc3MocmVzLCBmaWxlKSB7CiAgICAgIC8v5o+Q56S6CiAgICAgIHRoaXMuJG5vdGlmeSh7CiAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLAogICAgICAgIG1lc3NhZ2U6IHRoaXMuJHQoJ2RvbWVzdGljLnN1Y2Nlc3MnKSwKICAgICAgICBkdXJhdGlvbjogMjAwMAogICAgICB9KTsKICAgICAgdGhpcy5sb2FkRGF0YSgpOyAvL+iwg+eUqOeUqOmhtemdouafpeivouaOpeWPo++8jOWIt+aWsOaVsOaNrgogICAgfSwKICAgIC8v5LiK5Lyg5aSx6LSlCiAgICBoYW5kbGVBdmF0YXJFcnJvcjogZnVuY3Rpb24gaGFuZGxlQXZhdGFyRXJyb3IoZXJyLCBmaWxlLCBmaWxlTGlzdCkgewogICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UoZXJyLm1lc3NhZ2UpOwogICAgICB2YXIgbXNnID0gZGF0YS5tZXNzYWdlID8gZGF0YS5tZXNzYWdlIDogJ+WvvOWFpeWksei0pe+8gSc7CiAgICAgIC8v5o+Q56S6CiAgICAgIHRoaXMuJG5vdGlmeSh7CiAgICAgICAgdHlwZTogJ2Vycm9yJywKICAgICAgICBtZXNzYWdlOiB0aGlzLiR0KG1zZyksCiAgICAgICAgZHVyYXRpb246IDIwMDAKICAgICAgfSk7CiAgICB9LAogICAgLy/mlbDmja7lr7zlhaUKICAgIGltcG9ydERhdGE6IGZ1bmN0aW9uIGltcG9ydERhdGEoKSB7fSwKICAgIC8v5pWw5o2u5a+85Ye6CiAgICBleHBvcnREYXRhOiBmdW5jdGlvbiBleHBvcnREYXRhKCkgewogICAgICB2YXIgZXhwb3J0UGFyYW0gPSBfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLnF1ZXJ5UGFyYW0pOwogICAgICBleHBvcnRQYXJhbS5wYWdlQmVhbiA9IHsKICAgICAgICBwYWdlOiAxLAogICAgICAgIHBhZ2VTaXplOiAtMQogICAgICB9OwogICAgICBjb25zb2xlLmxvZyhleHBvcnRQYXJhbSk7CiAgICAgIGVxdWlwbWVudE1hbmFnZS5leHBvcnRQb2ludEJhc2UoZXhwb3J0UGFyYW0sIGZ1bmN0aW9uIChyZXMpIHt9KTsKICAgICAgLy8gICB0aGlzLmxvYWREYXRhKCkKICAgIH0sCiAgICAvLwogICAgaGFuZGxlQ2xvc2U6IGZ1bmN0aW9uIGhhbmRsZUNsb3NlKCkgewogICAgICB0aGlzLnJldmlzZVZpc2libGUgPSBmYWxzZTsKICAgIH0sCiAgICAvLwogICAgcmV2aXNlOiBmdW5jdGlvbiByZXZpc2UodmFsKSB7CiAgICAgIHRoaXMucmV2aXNlVmlzaWJsZSA9IHRydWU7CiAgICAgIHRoaXMucmV2aXNlU3RhcnQgPSB2YWwuc3RhdHVzICsgJyc7CiAgICAgIHRoaXMucmV2aXNlRGF0ID0gdmFsOwogICAgfSwKICAgIHJldmlzZUJ0bjogZnVuY3Rpb24gcmV2aXNlQnRuKCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgLy8gY29uc29sZS5sb2codGhpcy5yZXZpc2VEYXQpCiAgICAgIGVxdWlwbWVudE1hbmFnZS51cGRhdGVTdGF0dXMoewogICAgICAgIGlkOiB0aGlzLnJldmlzZURhdC5pZCwKICAgICAgICBwcm9kdWN0Q29kZTogJ3ZpZGVvJywKICAgICAgICBzdGF0dXM6IHRoaXMucmV2aXNlU3RhcnQKICAgICAgfSwgZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzMi5sb2FkRGF0YSgpOwogICAgICAgIF90aGlzMi5yZXZpc2VWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgLy8gICBpZiAocmVzLnN0YXRlKSB7CiAgICAgICAgLy8gICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgIC8vICAgICAgIG1lc3NhZ2U6IHJlcy5tZXNzYWdlLAogICAgICAgIC8vICAgICAgIHR5cGU6ICdzdWNjZXNzJwogICAgICAgIC8vICAgICB9KQogICAgICAgIC8vICAgICB0aGlzLmxvYWREYXRhKCkKICAgICAgICAvLyAgICAgdGhpcy5yZXZpc2VWaXNpYmxlID0gZmFsc2UKICAgICAgICAvLyAgIH0KICAgICAgfSk7CiAgICB9LAogICAgZXF1aXBtZW50OiBmdW5jdGlvbiBlcXVpcG1lbnQodmFsKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICBjb25zb2xlLmxvZyh2YWwpOwogICAgICB2YXIgaW1wb3J0YW50RGF0YSA9IDA7CiAgICAgIGlmICh2YWwuaW1wb3J0YW50ID09IDEgJiYgdmFsLmltcG9ydGFudCkgewogICAgICAgIGltcG9ydGFudERhdGEgPSAwOwogICAgICB9IGVsc2UgewogICAgICAgIGltcG9ydGFudERhdGEgPSAxOwogICAgICB9CiAgICAgIGVxdWlwbWVudE1hbmFnZS51cGRhdGVJbXBvcnRhbnRQb2ludCh7CiAgICAgICAgaWQ6IHZhbC5pZCwKICAgICAgICBpbXBvcnRhbnQ6IGltcG9ydGFudERhdGEKICAgICAgfSwgZnVuY3Rpb24gKHJlcykgewogICAgICAgIC8vIGNvbnNvbGUubG9nKHJlcykKICAgICAgICBpZiAocmVzLnN0YXRlKSB7CiAgICAgICAgICBfdGhpczMuJG1lc3NhZ2UoewogICAgICAgICAgICBtZXNzYWdlOiByZXMubWVzc2FnZSwKICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnCiAgICAgICAgICB9KTsKICAgICAgICAgIF90aGlzMy5sb2FkRGF0YSgpOwogICAgICAgICAgLy8gdGhpcy5yZXZpc2VWaXNpYmxlID0gZmFsc2UKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIGhhbmRsZURlbGV0ZVNpdGU6IGZ1bmN0aW9uIGhhbmRsZURlbGV0ZVNpdGUocm93KSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICBWaWRlb0ZhY2lsaXRpZXMuZGVsZXRlVmlkZW9TaXRlKHJvdy5pZCwgZnVuY3Rpb24gKHJlcykgewogICAgICAgIGlmIChyZXMuc3RhdGUpIHsKICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS5zdWNjZXNzKCfliKDpmaTmiJDlip8nKTsKICAgICAgICAgIF90aGlzNC5sb2FkRGF0YSgpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAogICAgc2VsZWN0YWJsZTogZnVuY3Rpb24gc2VsZWN0YWJsZShyb3cpIHsKICAgICAgaWYgKHJvdy5kYXRhVHlwZSA9PSAyKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICB9LAogICAgaGFuZGxlQWRkOiBmdW5jdGlvbiBoYW5kbGVBZGQoKSB7CiAgICAgIGlmICghdGhpcy5yZWdpb25JbmRleENvZGUpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeaWsOWinuinhumikeeCueS9jeaJgOWxnuWMuuWfn++8gScpOwogICAgICAgIHJldHVybjsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgcERhdGEgPSB7CiAgICAgICAgICBjYXRhbG9nQ29kZTogdGhpcy5jYXRhbG9nQ29kZSwKICAgICAgICAgIHBsYXRmb3JtOiB0aGlzLmNhdGFsb2dQbGF0Zm9ybSwKICAgICAgICAgIHpvbmVDb2RlOiB0aGlzLnJlZ2lvbkluZGV4Q29kZQogICAgICAgIH07CiAgICAgICAgdGhpcy4kcmVmcy5mb3JtTW9kYWwuYWRkKHBEYXRhKTsKICAgICAgfQogICAgfSwKICAgIHJlbG9hZDogZnVuY3Rpb24gcmVsb2FkKCkge30sCiAgICBoYW5kbGVDbG9zZURpYTogZnVuY3Rpb24gaGFuZGxlQ2xvc2VEaWEoKSB7CiAgICAgIHRoaXMuc2hvd1RyZWVOb2RlID0gZmFsc2U7CiAgICAgIHRoaXMuYXJlYSA9IHsKICAgICAgICBjb2RlOiAnJywKICAgICAgICBuYW1lOiAnJwogICAgICB9OwogICAgICB0aGlzLnBBcmVhID0gbnVsbDsKICAgIH0sCiAgICBoYW5kbGVTYXZlRGlhOiBmdW5jdGlvbiBoYW5kbGVTYXZlRGlhKCkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgdGhpcy4kcmVmcy5mb3JtSW5mby52YWxpZGF0ZShmdW5jdGlvbiAodmFsaWQpIHsKICAgICAgICBpZiAodmFsaWQpIHsKICAgICAgICAgIHZhciBBUEkgPSBWaWRlb0ZhY2lsaXRpZXMudXBkYXRlVmlkZW9BcmVhOwogICAgICAgICAgaWYgKF90aGlzNS50aXRsZXMgPT0gJ+aWsOWinicpIHsKICAgICAgICAgICAgX3RoaXM1LmFyZWEuYmFzZUNvZGUgPSBfdGhpczUucEFyZWEuYmFzZUNvZGU7CiAgICAgICAgICAgIF90aGlzNS5hcmVhLnBhcmVudElkID0gX3RoaXM1LnBBcmVhLmlkOwogICAgICAgICAgICBfdGhpczUuYXJlYS5wbGF0Zm9ybSA9IF90aGlzNS5wQXJlYS5wbGF0Zm9ybTsKICAgICAgICAgICAgQVBJID0gVmlkZW9GYWNpbGl0aWVzLmFkZFZpZGVvQXJlYTsKICAgICAgICAgIH0KICAgICAgICAgIGNvbnNvbGUubG9nKF90aGlzNS5hcmVhKTsKICAgICAgICAgIEFQSShfdGhpczUuYXJlYSwgZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICBpZiAocmVzLnN0YXRlKSB7CiAgICAgICAgICAgICAgX3RoaXM1LiRub3RpZnkoewogICAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLAogICAgICAgICAgICAgICAgbWVzc2FnZTogX3RoaXM1LnRpdGxlcyArICfop4bpopHljLrln5/miJDlip/vvIEnLAogICAgICAgICAgICAgICAgZHVyYXRpb246IDIwMDAKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICBfdGhpczUuZ2V0VHJlZSgpOwogICAgICAgICAgICAgIF90aGlzNS5oYW5kbGVDbG9zZURpYSgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIF90aGlzNS4kbm90aWZ5KHsKICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXMubWVzc2FnZSwKICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAyMDAwLAogICAgICAgICAgICAgICAgb2Zmc2V0OiA4MAogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIGFwcGVuZDogZnVuY3Rpb24gYXBwZW5kKGRhdGEsIHR5cGUpIHsKICAgICAgY29uc29sZS5sb2coZGF0YSwgdHlwZSwgJ2RhdGEsIHR5cGUnKTsKICAgICAgdGhpcy5hY3RpdmVDb2xsYXBzZURpYSA9ICcxJzsKICAgICAgdGhpcy50aXRsZXMgPSAn5paw5aKeJzsKICAgICAgdGhpcy5zaG93VHJlZU5vZGUgPSB0cnVlOwogICAgICB0aGlzLnBBcmVhID0gZGF0YTsKICAgIH0sCiAgICB1cERhdGVpbmZvOiBmdW5jdGlvbiB1cERhdGVpbmZvKGRhdGEsIHR5cGUpIHsKICAgICAgdGhpcy50aXRsZXMgPSAn5L+u5pS5JzsKICAgICAgdGhpcy5hcmVhID0gZGF0YTsKICAgICAgdGhpcy5zaG93VHJlZU5vZGUgPSB0cnVlOwogICAgfSwKICAgIC8vIOWIoOmZpOinhumikeebruW9lQogICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoZGF0YSkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgdGhpcy4kY29uZmlybSgn56Gu5a6a5Yig6Zmk6YCJ5Lit5pWw5o2u77yfJywgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehriDlrponLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5Yg5raIJywKICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgVmlkZW9GYWNpbGl0aWVzLmRlbGV0ZVZpZGVvQXJlYShkYXRhLmlkLCBmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICBpZiAocmVzLnN0YXRlKSB7CiAgICAgICAgICAgIF90aGlzNi4kbm90aWZ5KHsKICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsCiAgICAgICAgICAgICAgbWVzc2FnZTogJ+WIoOmZpOaIkOWKnycsCiAgICAgICAgICAgICAgZHVyYXRpb246IDIwMDAKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIF90aGlzNi5nZXRUcmVlKCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBfdGhpczYuJG5vdGlmeSh7CiAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJywKICAgICAgICAgICAgICBtZXNzYWdlOiByZXMubWVzc2FnZSwKICAgICAgICAgICAgICBkdXJhdGlvbjogMjAwMCwKICAgICAgICAgICAgICBvZmZzZXQ6IDgwCiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7CiAgICB9LAogICAgcmVuZGVyQ29udGVudDogZnVuY3Rpb24gcmVuZGVyQ29udGVudChoLCBfcmVmKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICB2YXIgbm9kZSA9IF9yZWYubm9kZSwKICAgICAgICBkYXRhID0gX3JlZi5kYXRhLAogICAgICAgIHN0b3JlID0gX3JlZi5zdG9yZTsKICAgICAgcmV0dXJuIGgoInNwYW4iLCB7CiAgICAgICAgImNsYXNzIjogImN1c3RvbS10cmVlLW5vZGUiLAogICAgICAgICJvbiI6IHsKICAgICAgICAgICJtb3VzZW92ZXIiOiBmdW5jdGlvbiBtb3VzZW92ZXIoKSB7CiAgICAgICAgICAgIF90aGlzNy5zaG93ID0gdHJ1ZTsKICAgICAgICAgIH0sCiAgICAgICAgICAibW91c2VvdXQiOiBmdW5jdGlvbiBtb3VzZW91dCgpIHsKICAgICAgICAgICAgX3RoaXM3LnNob3cgPSBmYWxzZTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0sIFtoKCJzcGFuIiwgewogICAgICAgICJjbGFzcyI6ICJjdXN0b20tdHJlZS1ub2RlbmFtZSIsCiAgICAgICAgImF0dHJzIjogewogICAgICAgICAgInRpdGxlIjogIiIuY29uY2F0KGRhdGEubmFtZSkKICAgICAgICB9CiAgICAgIH0sIFtkYXRhLm5hbWVdKSwgaCgic3BhbiIsIFtoKCJlbC1wb3BvdmVyIiwgewogICAgICAgICJhdHRycyI6IHsKICAgICAgICAgICJwbGFjZW1lbnQiOiAiYm90dG9tIiwKICAgICAgICAgICJ3aWR0aCI6ICI1NSIsCiAgICAgICAgICAidHJpZ2dlciI6ICJob3ZlciIKICAgICAgICB9CiAgICAgIH0sIFtoKCJlbC1idXR0b24iLCB7CiAgICAgICAgInN0eWxlIjogIndpZHRoOjEwMCU7Ym9yZGVyOjA7bWFyZ2luOjA7Y29sb3I6IzYwNjI2NjsiLAogICAgICAgICJhdHRycyI6IHsKICAgICAgICAgICJzaXplIjogIm1pbmkiLAogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAiaWNvbiI6ICJlbC1pY29uLXBsdXMiCiAgICAgICAgfSwKICAgICAgICAib24iOiB7CiAgICAgICAgICAiY2xpY2siOiBmdW5jdGlvbiBjbGljaygpIHsKICAgICAgICAgICAgcmV0dXJuIF90aGlzNy5hcHBlbmQoZGF0YSwgJ3NvbicpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwgWyJcdTY1QjBcdTU4OUUiXSksIGgoImVsLWJ1dHRvbiIsIHsKICAgICAgICAiZGlyZWN0aXZlcyI6IFt7CiAgICAgICAgICBuYW1lOiAic2hvdyIsCiAgICAgICAgICB2YWx1ZTogZGF0YS5pZCAhPT0gJzAnICYmIGRhdGEuZGF0YVR5cGUgPT0gMgogICAgICAgIH1dLAogICAgICAgICJzdHlsZSI6ICJ3aWR0aDoxMDAlO2JvcmRlcjowO21hcmdpbjowO2NvbG9yOiM2MDYyNjY7IiwKICAgICAgICAiYXR0cnMiOiB7CiAgICAgICAgICAic2l6ZSI6ICJtaW5pIiwKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgImljb24iOiAiZWwtaWNvbi1lZGl0IgogICAgICAgIH0sCiAgICAgICAgIm9uIjogewogICAgICAgICAgImNsaWNrIjogZnVuY3Rpb24gY2xpY2soKSB7CiAgICAgICAgICAgIHJldHVybiBfdGhpczcudXBEYXRlaW5mbyhkYXRhLCAnJyk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9LCBbIlx1NEZFRVx1NjUzOSJdKSwgaCgiZWwtYnV0dG9uIiwgewogICAgICAgICJkaXJlY3RpdmVzIjogW3sKICAgICAgICAgIG5hbWU6ICJzaG93IiwKICAgICAgICAgIHZhbHVlOiBkYXRhLmlkICE9PSAnMCcgJiYgZGF0YS5kYXRhVHlwZSA9PSAyICYmIGRhdGEuaGFzQ2hpbGRyZW4gPT0gMAogICAgICAgIH1dLAogICAgICAgICJzdHlsZSI6ICJ3aWR0aDoxMDAlO2JvcmRlcjowO21hcmdpbjowO2NvbG9yOiM2MDYyNjY7IiwKICAgICAgICAiYXR0cnMiOiB7CiAgICAgICAgICAic2l6ZSI6ICJtaW5pIiwKICAgICAgICAgICJpY29uIjogImVsLWljb24tZGVsZXRlIiwKICAgICAgICAgICJ0eXBlIjogInRleHQiCiAgICAgICAgfSwKICAgICAgICAib24iOiB7CiAgICAgICAgICAiY2xpY2siOiBmdW5jdGlvbiBjbGljaygpIHsKICAgICAgICAgICAgcmV0dXJuIF90aGlzNy5yZW1vdmUoZGF0YSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9LCBbIlx1NTIyMFx1OTY2NCJdKSwgaCgiaSIsIHsKICAgICAgICAic2xvdCI6ICJyZWZlcmVuY2UiLAogICAgICAgICJjbGFzcyI6ICJlbC1pY29uLW1vcmUtb3V0bGluZSIsCiAgICAgICAgInN0eWxlIjogImZvbnQtc2l6ZTogMTVweDsiCiAgICAgIH0pXSldKV0pOwogICAgfSwKICAgIC8vIOiOt+WPluebruW9lQogICAgZ2V0VHJlZURpY3Q6IGZ1bmN0aW9uIGdldFRyZWVEaWN0KCkgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgVmlkZW9GYWNpbGl0aWVzLmdldFZpZGVvRih7fSwgZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzOC5jYXRhbG9ncyA9IHJlcy52YWx1ZTsKICAgICAgICBfdGhpczguY2F0YWxvZ0NvZGUgPSBfdGhpczguY2F0YWxvZ3NbMF0uY29kZTsKICAgICAgICBfdGhpczguY2F0YWxvZ1BsYXRmb3JtID0gX3RoaXM4LmNhdGFsb2dzWzBdLnBsYXRmb3JtOwogICAgICAgIF90aGlzOC5nZXRUcmVlKCk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOiOt+WPluebruW9leagkQogICAgZ2V0VHJlZTogZnVuY3Rpb24gZ2V0VHJlZSgpIHsKICAgICAgdmFyIF90aGlzOSA9IHRoaXM7CiAgICAgIHZhciBxdWVyeSA9IHsKICAgICAgICB6b25lQ29kZTogdGhpcy5jYXRhbG9nQ29kZQogICAgICB9OwogICAgICBWaWRlb0ZhY2lsaXRpZXMuZ2V0VmlkZW9UcmVlKHF1ZXJ5LCBmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXM5LnZpZGVvVHJlZSA9IHJlcy52YWx1ZTsKICAgICAgICBfdGhpczkuZnVsbElkID0gX3RoaXM5LnZpZGVvVHJlZS5sZW5ndGggPyBfdGhpczkudmlkZW9UcmVlWzBdLmZ1bGxJZCA6ICcnOwogICAgICAgIGlmIChfdGhpczkudmlkZW9UcmVlLmxlbmd0aCkgewogICAgICAgICAgX3RoaXM5LmxvYWREYXRhKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF90aGlzOS52aWRlb1RyZWUgPSBbXTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWIh+aNouebruW9lQogICAgY2hhbmdlQ2F0YWxvZzogZnVuY3Rpb24gY2hhbmdlQ2F0YWxvZyh2YWwpIHsKICAgICAgdGhpcy4kcmVmcy5tdWx0aXBsZVNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpOyAvL+WIh+aNou+8jOmAieS4reWwseW9kumbtgogICAgICBpZiAodmFsKSB7CiAgICAgICAgdGhpcy5jYXRhbG9nQ29kZSA9IHZhbDsKICAgICAgICB0aGlzLmNhdGFsb2dQbGF0Zm9ybSA9IHZhbDsKICAgICAgICB2YXIgcGxhdGZvcm0gPSB0aGlzLmNhdGFsb2dzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgcmV0dXJuIGl0ZW0uY29kZSA9PSB2YWw7CiAgICAgICAgfSlbMF0ucGxhdGZvcm07CiAgICAgICAgdGhpcy5jYXRhbG9nUGxhdGZvcm0gPSBwbGF0Zm9ybTsKICAgICAgICB0aGlzLmdldFRyZWUoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmNhdGFsb2dDb2RlID0gJyc7CiAgICAgICAgdGhpcy5jYXRhbG9nUGxhdGZvcm0gPSAnJzsKICAgICAgICB0aGlzLnZpZGVvVHJlZSA9IFtdOwogICAgICAgIHRoaXMuJHNldCh0aGlzLnZpZGVvVHJlZSwgdGhpcy52aWRlb1RyZWUsIHJlcy52YWx1ZSk7CiAgICAgIH0KICAgIH0sCiAgICBoYW5kbGVVcGRhdGU6IGZ1bmN0aW9uIGhhbmRsZVVwZGF0ZSh2YWwpIHsKICAgICAgdmFyIF90aGlzMTAgPSB0aGlzOwogICAgICBWaWRlb0ZhY2lsaXRpZXMuZ2V0RGV0YWlscyh2YWwuY29kZSwgZnVuY3Rpb24gKHJlcykgewogICAgICAgIGlmIChyZXMpIHsKICAgICAgICAgIHZhciBwYXRoID0gX3RoaXMxMC4kcm91dGUucGF0aDsKICAgICAgICAgIGlmIChwYXRoLmluZGV4T2YoJ2Zyb250UGxhdCcpICE9PSAtMSkgewogICAgICAgICAgICBfdGhpczEwLiRyb3V0ZXIucHVzaCh7CiAgICAgICAgICAgICAgbmFtZTogJ1ZpZGVvRGV0YWlscycsCiAgICAgICAgICAgICAgcXVlcnk6IHJlcwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF90aGlzMTAuJHJvdXRlci5wdXNoKHsKICAgICAgICAgICAgICBuYW1lOiAnVmlkZW9EZXRhaWxzTGluaycsCiAgICAgICAgICAgICAgcXVlcnk6IHJlcwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIGNoYW5nZU5vZGU6IGZ1bmN0aW9uIGNoYW5nZU5vZGUoZGF0YSkgewogICAgICBjb25zb2xlLmxvZyhkYXRhKTsKICAgICAgaWYgKGRhdGEpIHsKICAgICAgICB0aGlzLnJlZ2lvbkluZGV4Q29kZSA9IGRhdGEuY29kZTsKICAgICAgICB0aGlzLmZ1bGxJZCA9IGRhdGEuZnVsbElkOwogICAgICAgIHRoaXMucGFyYW1zLnpvbmVDb2RlID0gZGF0YS5jb2RlOwogICAgICAgIC8v5aaC5p6c54K55Ye75qCR77yM6YCJ5Lit54q25oCB5b2SMAogICAgICAgIHRoaXMuJHJlZnMubXVsdGlwbGVTZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKTsKICAgICAgICB0aGlzLmxvYWREYXRhKCk7CiAgICAgIH0KICAgIH0sCiAgICBsb2FkRGF0YTogZnVuY3Rpb24gbG9hZERhdGEoKSB7CiAgICAgIHZhciBfdGhpczExID0gdGhpczsKICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAgIHRoaXMudGFibGVEYXRhID0gW107CiAgICAgIHRoaXMucXVlcnlQYXJhbS5xdWVyeXMgPSBbXTsKICAgICAgLy8gICB0aGlzLnF1ZXJ5c1sxXS52YWx1ZSA9IHRoaXMuZnVsbElkCiAgICAgIC8vIHRoaXMucXVlcnlzWzFdLnZhbHVlID0gdGhpcy5jYXRhbG9nQ29kZQogICAgICB0aGlzLnF1ZXJ5UGFyYW0ucGFyYW1zID0gdGhpcy5wYXJhbXM7CiAgICAgIC8vIHRoaXMudXBsb2FkRGF0YS5jYXRhbG9nQ29kZSA9IHRoaXMuY2F0YWxvZ0NvZGUKICAgICAgdGhpcy51cGxvYWREYXRhLnpvbmVDb2RlID0gdGhpcy5wYXJhbXMuem9uZUNvZGU7CiAgICAgIC8vIGlmICh0aGlzLnF1ZXJ5c1swXS52YWx1ZSkgewogICAgICAvLyAJdGhpcy5xdWVyeVBhcmFtLnF1ZXJ5cy5wdXNoKHRoaXMucXVlcnlzWzBdKQogICAgICAvLyB9CiAgICAgIC8vIGlmICh0aGlzLnF1ZXJ5c1sxXS52YWx1ZSkgewogICAgICAvLyAJdGhpcy5xdWVyeVBhcmFtLnF1ZXJ5cy5wdXNoKHRoaXMucXVlcnlzWzFdKQogICAgICAvLyB9CiAgICAgIC8vIGlmICh0aGlzLnF1ZXJ5c1syXS52YWx1ZSkgewogICAgICAvLyAJdGhpcy5xdWVyeVBhcmFtLnF1ZXJ5cy5wdXNoKHRoaXMucXVlcnlzWzJdKQogICAgICAvLyB9CiAgICAgIFZpZGVvRmFjaWxpdGllcy5nZXRMaXN0KHRoaXMucXVlcnlQYXJhbSwgZnVuY3Rpb24gKHJlcykgewogICAgICAgIGNvbnNvbGUubG9nKHJlcywgOTk5KTsKICAgICAgICBpZiAocmVzKSB7CiAgICAgICAgICBfdGhpczExLnRhYmxlRGF0YSA9IHJlcy5yb3dzOwogICAgICAgICAgX3RoaXMxMS50YWJsZURhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICBfdGhpczExLnNwZHdzc3B0TGlzdC5mb3JFYWNoKGZ1bmN0aW9uICh2YWwpIHsKICAgICAgICAgICAgICBpZiAoaXRlbS5wbGF0Zm9ybSA9PSB2YWwudmFsdWUpIHsKICAgICAgICAgICAgICAgIGl0ZW1bJ3BsYXRmb3JtTmFtZSddID0gdmFsLm5hbWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0pOwogICAgICAgICAgX3RoaXMxMS50b3RhbCA9IHJlcy50b3RhbDsKICAgICAgICAgIF90aGlzMTEubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgLy8g5b2S56m6CiAgICAgICAgICAvLyAgIHRoaXMucXVlcnlzWzFdLnZhbHVlID0gJycKICAgICAgICAgIC8vICAgdGhpcy5xdWVyeXNbMl0udmFsdWUgPSAnJwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAogICAgLy/lkIzmraXmlbDmja4KICAgIHN5bmNocm9UcmVlOiBmdW5jdGlvbiBzeW5jaHJvVHJlZSgpIHsKICAgICAgdmFyIF90aGlzMTIgPSB0aGlzOwogICAgICBWaWRlb0ZhY2lsaXRpZXMuYXN5Y0NhdGFMb2coZnVuY3Rpb24gKHJlcykgewogICAgICAgIGlmIChyZXMuc3RhdGUpIHsKICAgICAgICAgIGlmIChyZXMuc3RhdGUpIHsKICAgICAgICAgICAgX3RoaXMxMi4kbWVzc2FnZS5zdWNjZXNzKCfnm67lvZXlkIzmraXmiJDlip8nKTsKICAgICAgICAgICAgX3RoaXMxMi5nZXRUcmVlRGljdCgpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgX3RoaXMxMi4kbWVzc2FnZS5lcnJvcign5ZCM5q2l5aSx6LSlJyk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sCiAgICBzeW5jaHJvOiBmdW5jdGlvbiBzeW5jaHJvKG5vZGUsIGRhdGEpIHsKICAgICAgdmFyIF90aGlzMTMgPSB0aGlzOwogICAgICBWaWRlb0ZhY2lsaXRpZXMuYXN5Y0NhdGFMb2dab25lKHsKICAgICAgICB0cmVlQ29kZTogdGhpcy5jYXRhbG9nQ29kZQogICAgICB9LCBmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgaWYgKHJlcy5zdGF0ZSkgewogICAgICAgICAgX3RoaXMxMy4kbWVzc2FnZS5zdWNjZXNzKCfljLrln5/lkIzmraXmiJDlip8nKTsKICAgICAgICAgIF90aGlzMTMuZ2V0VHJlZW4oKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgX3RoaXMxMy4kbWVzc2FnZS5lcnJvcign5ZCM5q2l5aSx6LSlJyk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sCiAgICBvbkNsaWNrU3luY2g6IGZ1bmN0aW9uIG9uQ2xpY2tTeW5jaCgpIHsKICAgICAgdmFyIF90aGlzMTQgPSB0aGlzOwogICAgICBWaWRlb0ZhY2lsaXRpZXMuZ2V0U3luY2goe30sIGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBpZiAocmVzLnN0YXRlKSB7CiAgICAgICAgICBfdGhpczE0LiRtZXNzYWdlLnN1Y2Nlc3MoJ+WQjOatpeaIkOWKnycpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfdGhpczE0LiRtZXNzYWdlLmVycm9yKCflkIzmraXlpLHotKUnKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIGZpbHRlck5vZGU6IGZ1bmN0aW9uIGZpbHRlck5vZGUodmFsdWUsIGRhdGEpIHsKICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHRydWU7CiAgICAgIHJldHVybiBkYXRhLm5hbWUuaW5kZXhPZih2YWx1ZSkgIT09IC0xOwogICAgfSwKICAgIGhhbmRsZVNpemVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVNpemVDaGFuZ2UodmFsKSB7CiAgICAgIHRoaXMucXVlcnlQYXJhbS5wYWdlQmVhbi5wYWdlU2l6ZSA9IHZhbDsKICAgICAgdGhpcy5sb2FkRGF0YSgpOwogICAgfSwKICAgIGhhbmRsZUN1cnJlbnRDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUN1cnJlbnRDaGFuZ2UodmFsKSB7CiAgICAgIHRoaXMucXVlcnlQYXJhbS5wYWdlQmVhbi5wYWdlID0gdmFsOwogICAgICB0aGlzLmxvYWREYXRhKCk7CiAgICB9LAogICAgLy8gaGFuZGxlU2VsZWN0aW9uQ2hhbmdlKHZhbCkgewogICAgLy8gICAgIHRoaXMubXVsdGlwbGVTZWxlY3Rpb24gPSB2YWwubWFwKChpdGVtKSA9PiB7CiAgICAvLyAgICAgICAgIHJldHVybiBpdGVtLmlkCiAgICAvLyAgICAgfSkKICAgIC8vIH0sCiAgICAvLyAvLyDmjIflrprkuIDkuKprZXnmoIfor4bov5nkuIDooYznmoTmlbDmja4KICAgIGdldFJvd0tleTogZnVuY3Rpb24gZ2V0Um93S2V5KHJvdykgewogICAgICByZXR1cm4gcm93LmlkOwogICAgfSwKICAgIC8vIC8vIOeCueWHu+afpeivogogICAgb25DbGlja1NlYXJjaDogZnVuY3Rpb24gb25DbGlja1NlYXJjaCgpIHsKICAgICAgdGhpcy5xdWVyeVBhcmFtLnBhZ2VCZWFuLnBhZ2UgPSAxOwogICAgICB0aGlzLmxvYWREYXRhKCk7CiAgICB9CiAgfQp9Ow=="},null]}