{"remainingRequest":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\appLayer\\appLayerCatalogue\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\appLayer\\appLayerCatalogue\\index.vue","mtime":1736794526048},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\babel.config.js","mtime":1733906004399},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRlc3QuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnJlcGxhY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCB7IGdldERpY3Rpb25hcnlCeUNvZGUgfSBmcm9tICdAL3V0aWxzL2RpY3Rpb25hcnkuanMnOwppbXBvcnQgdGFibGVNaXhpbiBmcm9tICdAL21peGlucy90YWJsZS5qcyc7IC8vIOWIl+ihqG1peGlucwppbXBvcnQgc291cmNlRGlhbG9nIGZyb20gJy4vc291cmNlRGlhbG9nLnZ1ZSc7CmltcG9ydCBmaWVsZHNNYW5hZ2UgZnJvbSAnLi9maWVsZHNNYW5hZ2UudnVlJzsKaW1wb3J0IHB1dE91dERpYWxvZyBmcm9tICcuL1B1dE91dERpYWxvZy52dWUnOwppbXBvcnQgQVBJIGZyb20gJ0AvYXBpL2J1c2luZXNzL2RhdGFBUFBDYXRhbG9nLmpzJzsKaW1wb3J0IHsgbWFwU3RhdGUgfSBmcm9tICd2dWV4JzsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICdBcHBMYXllckNhdGFsb2d1ZScsCiAgY29tcG9uZW50czogewogICAgc291cmNlRGlhbG9nOiBzb3VyY2VEaWFsb2csCiAgICBmaWVsZHNNYW5hZ2U6IGZpZWxkc01hbmFnZSwKICAgIHB1dE91dERpYWxvZzogcHV0T3V0RGlhbG9nCiAgfSwKICBtaXhpbnM6IFt0YWJsZU1peGluXSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIHZhciBUUkVFX0NPTkZJRyA9IHsKICAgICAgdHJlZVByb3BzOiB7CiAgICAgICAgdmFsdWU6ICdpZCcsCiAgICAgICAgbGFiZWw6ICduYW1lJwogICAgICB9LAogICAgICBleHBhbmRBbGw6IGZhbHNlLAogICAgICBkZWZhdWx0RXhwYW5kZWRLZXlzOiBbJzEnXSwKICAgICAgZGVmYXVsdENoZWNrZWRLZXlzOiBbJzEnXSwKICAgICAgLy8g5q2k5aSEZmllbGRz5YaF6YWN572u5a+56LGh5bGe5oCn5YyF5ousOiBsYWJlbC9wcm9wL3J1bGVzL3R5cGUo5p6a5Li+OnN3aXRjaC9udW1iZXIvaW5wdXQo6buY6K6kKSkvc3Bhbi8KICAgICAgdHJlZUZpZWxkczogW3sKICAgICAgICBsYWJlbDogJ+i1hOa6kOebruW9leWQjeensCcsCiAgICAgICAgcHJvcDogJ25hbWUnLAogICAgICAgIGxhYmVsV2lkdGg6ICcxMjAnLAogICAgICAgIHJ1bGVzOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6LWE5rqQ55uu5b2V5ZCN56ew5LiN6IO95Li656m6JwogICAgICAgIH1dCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+i1hOa6kOebruW9lee8lueggScsCiAgICAgICAgcHJvcDogJ2NvZGUnLAogICAgICAgIGxhYmVsV2lkdGg6ICcxMjAnLAogICAgICAgIHJ1bGVzOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6LWE5rqQ55uu5b2V57yW56CB5LiN6IO95Li656m6JwogICAgICAgIH1dCiAgICAgIH1dLAogICAgICBjdXJOb2RlOiB7fSAvLyDlvZPliY3pgInmi6noioLngrkKICAgIH07CiAgICB2YXIgVEFCTEVfQ09ORklHID0gewogICAgICBkZXBsb3lTdGF0dXM6IFt7CiAgICAgICAgdmFsdWU6ICcxJywKICAgICAgICBsYWJlbDogJ+W3suWPkeW4gycKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnMCcsCiAgICAgICAgbGFiZWw6ICfmnKrlj5HluIMnCiAgICAgIH1dLAogICAgICAvLyDliJfooajooajlpLQKICAgICAgY29sdW1uczogW3sKICAgICAgICBsYWJlbDogJ+ihqOi1hOa6kOWQjeensCcsCiAgICAgICAgcHJvcDogJ25hbWUnCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+ihqOi1hOa6kOe8lueggScsCiAgICAgICAgcHJvcDogJ2NvZGUnCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+aVsOaNruW6k+ihqOWQjScsCiAgICAgICAgcHJvcDogJ3RhYmxlTmFtZUVuJwogICAgICB9LAogICAgICAvLyB7IGxhYmVsOiAn5Lit5paHJywgcHJvcDogJ3RhYmxlTmFtZUNoJyB9LAogICAgICB7CiAgICAgICAgbGFiZWw6ICflj5HluIPnirbmgIEnLAogICAgICAgIHByb3A6ICdkZXBsb3llZCcsCiAgICAgICAgZGF0YVR5cGU6ICdzbG90JywKICAgICAgICBzbG90OiAnZGVwbG95ZWQnLAogICAgICAgIHdpZHRoOiAnMTQwJywKICAgICAgICBhbGlnbjogJ2NlbnRlcicKICAgICAgfSwgewogICAgICAgIGRhdGFUeXBlOiAnb3B0aW9uJywKICAgICAgICBsYWJlbDogJ+aTjeS9nCcsCiAgICAgICAgd2lkdGg6ICcyNjBweCcsCiAgICAgICAgZml4ZWQ6ICdyaWdodCcsCiAgICAgICAgb3BlcmF0aW9uOiBbewogICAgICAgICAgbmFtZTogJ+Wtl+auteeuoeeQhicsCiAgICAgICAgICB0eXBlOiAndGV4dCcsCiAgICAgICAgICBzaXplOiAnbWluaScsCiAgICAgICAgICBpY29uOiAnZWwtaWNvbi1zLW9yZGVyJywKICAgICAgICAgIGNvbG9yOiAnIzQwOWVmZicsCiAgICAgICAgICBwbGFpbjogdHJ1ZSwKICAgICAgICAgIGNsaWNrRnVuOiBmdW5jdGlvbiBjbGlja0Z1bihyb3cpIHsKICAgICAgICAgICAgX3RoaXMucm93RGF0YSA9IHJvdzsKICAgICAgICAgICAgX3RoaXMuZmllbGRNYW5hZ2Uocm93KTsKICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICBuYW1lOiAn5Y+R5biD5bu66KGoJywKICAgICAgICAgIHR5cGU6ICd0ZXh0JywKICAgICAgICAgIHNpemU6ICdtaW5pJywKICAgICAgICAgIGljb246ICdlbC1pY29uLXMtcHJvbW90aW9uJywKICAgICAgICAgIGNvbG9yOiAnI2ZhOTEyYScsCiAgICAgICAgICBwbGFpbjogdHJ1ZSwKICAgICAgICAgIHNob3dIaWRlOiBmdW5jdGlvbiBzaG93SGlkZShyb3cpIHsKICAgICAgICAgICAgcmV0dXJuIHJvdy5kZXBsb3llZCAhPT0gJzEnOwogICAgICAgICAgfSwKICAgICAgICAgIGNsaWNrRnVuOiBmdW5jdGlvbiBjbGlja0Z1bihyb3cpIHsKICAgICAgICAgICAgX3RoaXMucHVibGlzaFRhYmxlKHJvdyk7CiAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgbmFtZTogJ+WIoOmZpCcsCiAgICAgICAgICB0eXBlOiAndGV4dCcsCiAgICAgICAgICBzaXplOiAnbWluaScsCiAgICAgICAgICBpY29uOiAnZWwtaWNvbi1kZWxldGUnLAogICAgICAgICAgY29sb3I6ICdyZWQnLAogICAgICAgICAgcGxhaW46IHRydWUsCiAgICAgICAgICBjbGlja0Z1bjogZnVuY3Rpb24gY2xpY2tGdW4ocm93KSB7CiAgICAgICAgICAgIF90aGlzLmRlbFRhYmxlKHJvdyk7CiAgICAgICAgICB9CiAgICAgICAgfV0KICAgICAgfV0sCiAgICAgIGRlZmF1bHRGaWx0ZXI6IFt7CiAgICAgICAgb3BlcmF0aW9uOiAnRVFVQUwnLAogICAgICAgIHByb3BlcnR5OiAnYXBwQ2F0YWxvZ3NJZCcsCiAgICAgICAgcmVsYXRpb246ICdBTkQnLAogICAgICAgIHZhbHVlOiAnJwogICAgICB9XSwKICAgICAgcm93RGF0YToge30KICAgIH07CiAgICB2YXIgRElBTE9HX0NPTkZJRyA9IHsKICAgICAgZGlhbG9nVmlzaWJsZTogZmFsc2UsCiAgICAgIGRpYWxvZ1RpdGxlOiAn5paw5aKeJywKICAgICAgZmllbGREaWFsb2dWaXNpYmxlOiBmYWxzZSwKICAgICAgZGlhbG9nZERhdGE6IHt9LAogICAgICBwdXRPdXRWaXNpYmxlOiBmYWxzZQogICAgfTsKICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHsKICAgICAgdHJlZURhdGE6IFtdCiAgICB9LCBUUkVFX0NPTkZJRyksIFRBQkxFX0NPTkZJRyksIERJQUxPR19DT05GSUcpLCB7fSwgewogICAgICB1cGxvYWRWaXNpYmxlOiBmYWxzZSwKICAgICAgdXBsb2FkTG9hZGluZzogZmFsc2UsCiAgICAgIGltcG9ydERhdGE6IHsKICAgICAgICBjYXRhbG9nSWQ6ICcnCiAgICAgIH0KICAgIH0pOwogIH0sCiAgY29tcHV0ZWQ6IF9vYmplY3RTcHJlYWQoewogICAgLy8g6YWN572u5YiX6KGo5o6l5Y+j5pa55rOV77ya5Y+q5pyJ6YWN572u5LqG6K+l6K6h566X5bGe5oCnIOaJjeS8muaJp+ihjCB0YWJsZSBtaXhpbnPkuK3nmoRnZXREYXRh5pa55rOVCiAgICBkYXRhTWV0aG9kOiBmdW5jdGlvbiBkYXRhTWV0aG9kKCkgewogICAgICByZXR1cm4gQVBJLnF1ZXJ5QVBQVGFibGU7CiAgICB9LAogICAgYWN0aW9uVXJsOiBmdW5jdGlvbiBhY3Rpb25VcmwoXykgewogICAgICByZXR1cm4gIiIuY29uY2F0KHdpbmRvdy5jb250ZXh0LnBvcnRhbCwgIi9iaXovYXBwL2NhdGFsb2dzL3RhYmxlL3YxL2ltcG9ydEZpbGUiKTsKICAgIH0KICB9LCBtYXBTdGF0ZSh7CiAgICBoZWFkZXJzOiBmdW5jdGlvbiBoZWFkZXJzKHN0YXRlKSB7CiAgICAgIHJldHVybiB7CiAgICAgICAgQXV0aG9yaXphdGlvbjogIkJlYXJlciAiLmNvbmNhdChzdGF0ZS5sb2dpbi5jdXJyZW50VXNlci50b2tlbikKICAgICAgfTsKICAgIH0KICB9KSksCiAgbWV0aG9kczogewogICAgZ2V0RGljdGlvbmFyeUJ5Q29kZTogZ2V0RGljdGlvbmFyeUJ5Q29kZSwKICAgIC8vIOagkSAtLS0tLS0tLS0tLS0tLS0tLQogICAgZ2V0VHJlZU5vZGVzOiBmdW5jdGlvbiBnZXRUcmVlTm9kZXMoKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgICAgdmFyIF92YWx1ZSQ7CiAgICAgICAgdmFyIF95aWVsZCRBUEkkZ2V0QVBQVHJlZSwgX3lpZWxkJEFQSSRnZXRBUFBUcmVlMiwgdmFsdWU7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIEFQSS5nZXRBUFBUcmVlKCk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBfeWllbGQkQVBJJGdldEFQUFRyZWUgPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAgIF95aWVsZCRBUEkkZ2V0QVBQVHJlZTIgPSBfeWllbGQkQVBJJGdldEFQUFRyZWUudmFsdWU7CiAgICAgICAgICAgICAgdmFsdWUgPSBfeWllbGQkQVBJJGdldEFQUFRyZWUyID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCRBUEkkZ2V0QVBQVHJlZTI7CiAgICAgICAgICAgICAgX3RoaXMyLmRlZmF1bHRFeHBhbmRlZEtleXMgPSBbKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDAgfHwgKF92YWx1ZSQgPSB2YWx1ZVswXSkgPT09IG51bGwgfHwgX3ZhbHVlJCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3ZhbHVlJC5pZCkgfHwgJyddOwogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoInJldHVybiIsIHsKICAgICAgICAgICAgICAgIGRhdGE6IHZhbHVlIHx8IFtdCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICByZWxvYWRUcmVlOiBmdW5jdGlvbiByZWxvYWRUcmVlKCkgewogICAgICB0aGlzLiRyZWZzLmFwcEFzeW5jVHJlZS5nZXRUcmVlRGF0YSgpOwogICAgfSwKICAgIC8qKg0KICAgICAqIEBkZXNjcmlwdGlvbjogdHJlZUFjdGlvbnPmlK/mjIHlh73mlbDkuZ/mlK/mjIHmlbDnu4TvvIznlLHkuo7lrp7pmYXlnLrmma/lvZPkuK0g5Y+v6IO95Lya5Yqo5oCB6K6+572u5oyJ6ZKu77yM5pWF5Lul5Ye95pWw56S65L6L5p2l5bGV56S6DQogICAgICogQHBhcmFtIHsqfSBkYXRhIOW9k+WJjeeCueWHu+iKgueCueaVsOaNrg0KICAgICAqIEByZXR1cm4geyp9IOW9k+WJjeiKgueCueWxleekuueahOaTjeS9nOmhueaVsOe7hA0KICAgICAqLwogICAgdHJlZUFjdGlvbnM6IGZ1bmN0aW9uIHRyZWVBY3Rpb25zKGRhdGEpIHsKICAgICAgLy8g5qC56IqC54K55Yik5pat5pa55byP5Lul5Lia5Yqh5Li65YeG77yM5q2k5aSE5LuF5Li656S65L6LCiAgICAgIHJldHVybiBbewogICAgICAgIGxhYmVsOiAn5re75YqgJywKICAgICAgICB0eXBlOiAnYWRkJywKICAgICAgICBtZXRob2Q6IHRoaXMuYWRkTm9kZQogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfnvJbovpEnLAogICAgICAgIHR5cGU6ICdlZGl0JywKICAgICAgICBtZXRob2Q6IHRoaXMuZWRpdE5vZGUsCiAgICAgICAgc2hvd0hpZGU6IGZ1bmN0aW9uIHNob3dIaWRlKHJvdykgewogICAgICAgICAgcmV0dXJuIHJvdy5pZCAhPT0gJzEnOwogICAgICAgIH0KICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn5Yig6ZmkJywKICAgICAgICB0eXBlOiAnZGVsZXRlJywKICAgICAgICBtZXRob2Q6IHRoaXMuZGVsTm9kZSwKICAgICAgICBzaG93SGlkZTogZnVuY3Rpb24gc2hvd0hpZGUocm93KSB7CiAgICAgICAgICByZXR1cm4gcm93LmlkICE9PSAnMSc7CiAgICAgICAgfQogICAgICB9XTsKICAgIH0sCiAgICBvblRyZWVOb2RlQ2xpY2s6IGZ1bmN0aW9uIG9uVHJlZU5vZGVDbGljayhub2RlKSB7CiAgICAgIHZhciBfdGhpcyRjdXJOb2RlOwogICAgICBpZiAobm9kZS5pZCA9PT0gKChfdGhpcyRjdXJOb2RlID0gdGhpcy5jdXJOb2RlKSA9PT0gbnVsbCB8fCBfdGhpcyRjdXJOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRjdXJOb2RlLmlkKSkgcmV0dXJuOwogICAgICB0aGlzLmN1ck5vZGUgPSBfb2JqZWN0U3ByZWFkKHt9LCBub2RlKTsKICAgICAgdGhpcy5pbXBvcnREYXRhLmNhdGFsb2dJZCA9IHRoaXMuY3VyTm9kZS5pZDsKICAgICAgdGhpcy5nZXREYXRhKCk7CiAgICB9LAogICAgYWRkTm9kZTogZnVuY3Rpb24gYWRkTm9kZShwYXJhbXMsIG5vZGUpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7CiAgICAgICAgdmFyIGNvZGUsIG5hbWUsIGlkLCBuZXdOb2RlLCBfeWllbGQkQVBJJGFkZEFQUFRyZWUsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBjb2RlID0gcGFyYW1zLmNvZGUsIG5hbWUgPSBwYXJhbXMubmFtZTsKICAgICAgICAgICAgICBpZCA9IG5vZGUuaWQ7CiAgICAgICAgICAgICAgbmV3Tm9kZSA9IHsKICAgICAgICAgICAgICAgIGNvZGU6IGNvZGUsCiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLAogICAgICAgICAgICAgICAgcGFyZW50SWQ6IGlkCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDM7CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSA2OwogICAgICAgICAgICAgIHJldHVybiBBUEkuYWRkQVBQVHJlZShuZXdOb2RlKTsKICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgIF95aWVsZCRBUEkkYWRkQVBQVHJlZSA9IF9jb250ZXh0Mi5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJEFQSSRhZGRBUFBUcmVlLnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkQVBJJGFkZEFQUFRyZWUubWVzc2FnZTsKICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgIF90aGlzMy5yZWxvYWRUcmVlKCk7CiAgICAgICAgICAgICAgICBfdGhpczMuJG1lc3NhZ2Uuc3VjY2Vzcygn5re75Yqg6LWE5rqQ55uu5b2V5oiQ5Yqf77yBJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTU7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAxMjsKICAgICAgICAgICAgICBfY29udGV4dDIudDAgPSBfY29udGV4dDJbImNhdGNoIl0oMyk7CiAgICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQyLnQwIHx8ICfmt7vliqDotYTmupDnm67lvZXlpLHotKXvvIEnKTsKICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMiwgbnVsbCwgW1szLCAxMl1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgZWRpdE5vZGU6IGZ1bmN0aW9uIGVkaXROb2RlKHBhcmFtcykgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICB2YXIgY29kZSwgbmFtZSwgcGFyZW50SWQsIGlkLCBuZXdOb2RlLCBfeWllbGQkQVBJJGVkaXRBUFBUcmUsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBjb2RlID0gcGFyYW1zLmNvZGUsIG5hbWUgPSBwYXJhbXMubmFtZSwgcGFyZW50SWQgPSBwYXJhbXMucGFyZW50SWQsIGlkID0gcGFyYW1zLmlkOwogICAgICAgICAgICAgIG5ld05vZGUgPSB7CiAgICAgICAgICAgICAgICBjb2RlOiBjb2RlLAogICAgICAgICAgICAgICAgbmFtZTogbmFtZSwKICAgICAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgICAgIHBhcmVudElkOiBwYXJlbnRJZAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAyOwogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gNTsKICAgICAgICAgICAgICByZXR1cm4gQVBJLmVkaXRBUFBUcmVlKG5ld05vZGUpOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRlZGl0QVBQVHJlID0gX2NvbnRleHQzLnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJGVkaXRBUFBUcmUuc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRBUEkkZWRpdEFQUFRyZS5tZXNzYWdlOwogICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgX3RoaXM0LnJlbG9hZFRyZWUoKTsKICAgICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS5zdWNjZXNzKCfnvJbovpHotYTmupDnm67lvZXmiJDlip/vvIEnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxNDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICBfY29udGV4dDMucHJldiA9IDExOwogICAgICAgICAgICAgIF9jb250ZXh0My50MCA9IF9jb250ZXh0M1siY2F0Y2giXSgyKTsKICAgICAgICAgICAgICBfdGhpczQuJG1lc3NhZ2Uud2FybmluZyhfY29udGV4dDMudDAgfHwgJ+e8lui+kei1hOa6kOebruW9leWksei0pe+8gScpOwogICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUzLCBudWxsLCBbWzIsIDExXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBkZWxOb2RlOiBmdW5jdGlvbiBkZWxOb2RlKHBhcmFtcywgbm9kZSkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNCgpIHsKICAgICAgICB2YXIgX3lpZWxkJEFQSSRyZW1vdmVBUFBULCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSAwOwogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gQVBJLnJlbW92ZUFQUFRyZWUobm9kZS5pZCk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfeWllbGQkQVBJJHJlbW92ZUFQUFQgPSBfY29udGV4dDQuc2VudDsKICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRBUEkkcmVtb3ZlQVBQVC5zdGF0ZTsKICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJEFQSSRyZW1vdmVBUFBULm1lc3NhZ2U7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczUucmVsb2FkVHJlZSgpOwogICAgICAgICAgICAgICAgX3RoaXM1LiRtZXNzYWdlLnN1Y2Nlc3MoJ+WIoOmZpOi1hOa6kOebruW9leaIkOWKn++8gScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDEyOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSA5OwogICAgICAgICAgICAgIF9jb250ZXh0NC50MCA9IF9jb250ZXh0NFsiY2F0Y2giXSgwKTsKICAgICAgICAgICAgICBfdGhpczUuJG1lc3NhZ2Uud2FybmluZyhfY29udGV4dDQudDAgfHwgJ+WIoOmZpOi1hOa6kOebruW9leWksei0pe+8gScpOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU0LCBudWxsLCBbWzAsIDldXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOWIl+ihqCAtLS0tLS0tLS0tLS0KICAgIGFkZFRhYmxlOiBmdW5jdGlvbiBhZGRUYWJsZSgpIHsKICAgICAgdmFyIF90aGlzJGN1ck5vZGUyOwogICAgICBpZiAoISgoX3RoaXMkY3VyTm9kZTIgPSB0aGlzLmN1ck5vZGUpICE9PSBudWxsICYmIF90aGlzJGN1ck5vZGUyICE9PSB2b2lkIDAgJiYgX3RoaXMkY3VyTm9kZTIuaWQpKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7fpgInmi6notYTmupDpobnmiYDlsZ7nm67lvZUnKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy5kaWFsb2dUaXRsZSA9ICfmlrDlop7mlbDmja7otYTmupDpobknOwogICAgICB0aGlzLmRpYWxvZ2REYXRhID0gewogICAgICAgIGFwcENhdGFsb2dzSWQ6IHRoaXMuY3VyTm9kZS5pZAogICAgICB9OwogICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlOwogICAgfSwKICAgIGVkaXRUYWJsZTogZnVuY3Rpb24gZWRpdFRhYmxlKHJvdykgewogICAgICB0aGlzLmRpYWxvZ1RpdGxlID0gIlx1N0YxNlx1OEY5MSAtICIuY29uY2F0KHJvdy5uYW1lKTsKICAgICAgdGhpcy5kaWFsb2dkRGF0YSA9IHJvdzsKICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICBmaWVsZE1hbmFnZTogZnVuY3Rpb24gZmllbGRNYW5hZ2UoKSB7CiAgICAgIHRoaXMuZmllbGREaWFsb2dWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICBkZWxUYWJsZTogZnVuY3Rpb24gZGVsVGFibGUocm93KSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB0aGlzLiRjb25maXJtKCJcdTZCNjRcdTY0Q0RcdTRGNUNcdTVDMDZcdTUyMjBcdTk2NjRcdTUyMDZcdTdDN0JcdUZGMDgiLmNvbmNhdChyb3cubmFtZSwgIlx1RkYwOSwgXHU2NjJGXHU1NDI2XHU3RUU3XHU3RUVEPyIpLCAn5o+Q56S6JywgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJHJlbW92ZUFwcFMsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDUucHJldiA9IF9jb250ZXh0NS5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDUucHJldiA9IDA7CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiBBUEkucmVtb3ZlQXBwU291cmNlKHJvdy5pZCk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfeWllbGQkQVBJJHJlbW92ZUFwcFMgPSBfY29udGV4dDUuc2VudDsKICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRBUEkkcmVtb3ZlQXBwUy5zdGF0ZTsKICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJEFQSSRyZW1vdmVBcHBTLm1lc3NhZ2U7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczYuZ2V0RGF0YSgpOwogICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLnN1Y2Nlc3MoJ+WIoOmZpOi1hOa6kOmhueaIkOWKn++8gScpOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uud2FybmluZyhtZXNzYWdlIHx8ICfliKDpmaTotYTmupDpobnlpLHotKXvvIEnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAxMjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgIF9jb250ZXh0NS5wcmV2ID0gOTsKICAgICAgICAgICAgICBfY29udGV4dDUudDAgPSBfY29udGV4dDVbImNhdGNoIl0oMCk7CiAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQ1LnQwIHx8ICfliKDpmaTotYTmupDpobnlpLHotKXvvIEnKTsKICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNSwgbnVsbCwgW1swLCA5XV0pOwogICAgICB9KSkpLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICAgIH0sCiAgICBvbkJlZm9yZUdldERhdGE6IGZ1bmN0aW9uIG9uQmVmb3JlR2V0RGF0YShxdWVyeVBhcmFtcywgZm9ybURhdGEpIHsKICAgICAgdGhpcy5zZXRGaWx0ZXJWYWx1ZSh0aGlzLnF1ZXJ5UGFyYW1zLCB0aGlzLmRlZmF1bHRGaWx0ZXIsICdhcHBDYXRhbG9nc0lkJywgdGhpcy5jdXJOb2RlLmlkKTsKICAgIH0sCiAgICBvbkNvbmZpcm06IGZ1bmN0aW9uIG9uQ29uZmlybShkYXRhLCBwRGF0YSkgewogICAgICB0aGlzLmdldERhdGEoKTsKICAgIH0sCiAgICBwdWJsaXNoVGFibGU6IGZ1bmN0aW9uIHB1Ymxpc2hUYWJsZShkYXRhKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU2KCkgewogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNiQoX2NvbnRleHQ2KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDYucHJldiA9IF9jb250ZXh0Ni5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfdGhpczcucm93RGF0YSA9IGRhdGE7CiAgICAgICAgICAgICAgX3RoaXM3LnB1dE91dFZpc2libGUgPSB0cnVlOwogICAgICAgICAgICAgIC8vICAgdGhpcy4kY29uZmlybShg5q2k5pON5L2c5bCG5Y+R5biD77yIJHtkYXRhLm5hbWV977yJLCDmmK/lkKbnu6fnu60/YCwgJ+aPkOekuicsIHsKICAgICAgICAgICAgICAvLyAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgICAgICAgIC8vICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICAgICAgICAvLyAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgICAgIC8vICAgfSkKICAgICAgICAgICAgICAvLyAgICAgLnRoZW4oYXN5bmMgKCkgPT4gewogICAgICAgICAgICAgIC8vICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgLy8gICAgICAgICBjb25zdCB7IHN0YXRlLCBtZXNzYWdlIH0gPSBhd2FpdCBBUEkucHVibGlzaEFwcFNvdXJjZShkYXRhLmlkKTsKICAgICAgICAgICAgICAvLyAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgIC8vICAgICAgICAgICB0aGlzLmdldERhdGEoKTsKICAgICAgICAgICAgICAvLyAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCfotYTmupDpobnlj5HluIPmiJDlip/vvIEnKTsKICAgICAgICAgICAgICAvLyAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgLy8gICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZyhtZXNzYWdlIHx8ICfotYTmupDpobnlj5HluIPlpLHotKXvvIEnKTsKICAgICAgICAgICAgICAvLyAgICAgICAgIH0KICAgICAgICAgICAgICAvLyAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgICAgICAvLyAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZyhlcnIgfHwgJ+i1hOa6kOmhueWPkeW4g+Wksei0pe+8gScpOwogICAgICAgICAgICAgIC8vICAgICAgIH0KICAgICAgICAgICAgICAvLyAgICAgfSkKICAgICAgICAgICAgICAvLyAgICAgLmNhdGNoKCgpID0+IHt9KTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDYuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU2KTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgZG93bmxvYWQ6IGZ1bmN0aW9uIGRvd25sb2FkKCkgewogICAgICB2YXIgZmlsZVR5cGUgPSAn5pWw5o2u5bqU55So5bGC5pWw5o2u6LWE5rqQ6KGo5riF5Y2VLnhsc3gnOwogICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgYS5ocmVmID0gd2luZG93LmNvbnRleHQuZG93bmxvYWQgKyBmaWxlVHlwZTsKICAgICAgYS5kb3dubG9hZCA9IGZpbGVUeXBlOyAvLyDorr7nva7kuIvovb3mlofku7bmlofku7blkI0KICAgICAgYS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOwogICAgICBhLmNsaWNrKCk7CiAgICAgIGEucmVtb3ZlKCk7CiAgICB9LAogICAgLy8gIOWvvOWFpeaWh+S7tuS4iuS8oOWJjQogICAgYmVmb3JlVXBsb2FkOiBmdW5jdGlvbiBiZWZvcmVVcGxvYWQoZmlsZSkgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICBfdGhpczgudXBsb2FkTG9hZGluZyA9IHRydWU7CiAgICAgICAgdmFyIHNpemUgPSBmaWxlLnNpemUsCiAgICAgICAgICBuYW1lID0gZmlsZS5uYW1lOwogICAgICAgIF90aGlzOC4kY29uZmlybSgiXHU4QkY3XHU3ODZFXHU4QkE0XHU2NjJGXHU1NDI2XHU1QkZDXHU1MTY1IFx1MjAxQyIuY29uY2F0KG5hbWUsICJcdTIwMUQgXHVGRjFGIiksICfmj5DnpLonLCB7CiAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruiupCcsCiAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKF8pIHsKICAgICAgICAgIHZhciBwYXNzZWRPck5vdCA9IHRydWU7IC8vIOaYr+WQpumAmui/h+mqjOivgQogICAgICAgICAgdmFyIHR5cGVSZWd1bGFyID0gL1wuKHhsc3x4bHN4KSQvaTsKICAgICAgICAgIHZhciB2ZXJpZmljYXRpb24gPSBbewogICAgICAgICAgICBjb25kaXRpb246ICF0eXBlUmVndWxhci50ZXN0KG5hbWUpLAogICAgICAgICAgICByZXN1bHQ6IGZ1bmN0aW9uIHJlc3VsdCgpIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXM4LiRtZXNzYWdlLmVycm9yKCflj6rog73kuIrkvKB4bHPmiJZ4bHN45paH5Lu257G75Z6LJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH1dOwogICAgICAgICAgdmVyaWZpY2F0aW9uLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgaWYgKGl0ZW0uY29uZGl0aW9uKSB7CiAgICAgICAgICAgICAgaXRlbS5yZXN1bHQoKTsKICAgICAgICAgICAgICBwYXNzZWRPck5vdCA9IGZhbHNlOwogICAgICAgICAgICAgIF90aGlzOC51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgICAgcGFzc2VkT3JOb3QgPyByZXNvbHZlKCkgOiByZWplY3QoKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoXykgewogICAgICAgICAgcmVqZWN0KCk7CiAgICAgICAgICBfdGhpczgudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgX3RoaXM4LiRtZXNzYWdlLndhcm5pbmcoJ+W3suWPlua2iOS4iuS8oCcpOwogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDlr7zlhaXmlofku7bkuIrkvKDmiJDlip8KICAgIGhhbmRsZVN1Y2Nlc3M6IGZ1bmN0aW9uIGhhbmRsZVN1Y2Nlc3MocmVzKSB7CiAgICAgIGlmIChyZXMuc3RhdGUpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+WvvOWFpeaIkOWKnycpOwogICAgICAgIHRoaXMudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgICAgIHRoaXMuZ2V0RGF0YSgpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IocmVzLm1lc3NhZ2UpOwogICAgICB9CiAgICB9LAogICAgLy8g5a+85YWl5paH5Lu25LiK5Lyg5aSx6LSlCiAgICBoYW5kbGVFcnJvcjogZnVuY3Rpb24gaGFuZGxlRXJyb3IoZXJyKSB7CiAgICAgIGlmIChlcnIpIHsKICAgICAgICB2YXIgZXJyRGF0YSA9IGVyci50b1N0cmluZygpLnJlcGxhY2UoJ0Vycm9yOicsICcnKTsKICAgICAgICBlcnJEYXRhID0gSlNPTi5wYXJzZShlcnJEYXRhKTsKICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGVyckRhdGEubWVzc2FnZSB8fCAn5a+85YWl5aSx6LSl77yM6K+36YeN6K+VJyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcign5a+85YWl5aSx6LSl77yM6K+36YeN6K+VJyk7CiAgICAgIH0KICAgICAgdGhpcy51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICB9CiAgfQp9Ow=="},null]}