{"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\\sourceLayer\\tyDataManageQuery\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\sourceLayer\\tyDataManageQuery\\index.vue","mtime":1736794526063},{"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:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDIuanMiOwppbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcmVnZW5lcmF0b3JSdW50aW1lLmpzIjsKaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRlc3QuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBEZXRhaWxEaWFsb2cgZnJvbSAnQC92aWV3cy9zb3VyY2VMYXllci90eURhdGFNYW5hZ2VRdWVyeS9EZXRhaWxEaWFsb2cudnVlJzsKaW1wb3J0IHRhYmxlTWl4aW4gZnJvbSAnQC9taXhpbnMvdGFibGUuanMnOwppbXBvcnQgQVBJIGZyb20gJ0AvYXBpL2J1c2luZXNzL2RhdGFPRFNDYXRhbG9nJzsKaW1wb3J0IHsgbWFwU3RhdGUgfSBmcm9tICd2dWV4JzsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICcnLAogIGNvbXBvbmVudHM6IHsKICAgIERldGFpbERpYWxvZzogRGV0YWlsRGlhbG9nCiAgfSwKICBtaXhpbnM6IFt0YWJsZU1peGluXSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIHZhciBUUkVFX0NPTkZJRyA9IHsKICAgICAgdHJlZVByb3BzOiB7CiAgICAgICAgdmFsdWU6ICdpZCcsCiAgICAgICAgbGFiZWw6ICduYW1lJwogICAgICB9LAogICAgICBleHBhbmRBbGw6IGZhbHNlLAogICAgICBkZWZhdWx0RXhwYW5kZWRLZXlzOiBbJzEnXSwKICAgICAgLy8g5q2k5aSEZmllbGRz5YaF6YWN572u5a+56LGh5bGe5oCn5YyF5ousOiBsYWJlbC9wcm9wL3J1bGVzL3R5cGUo5p6a5Li+OnN3aXRjaC9udW1iZXIvaW5wdXQo6buY6K6kKSkvc3Bhbi8KICAgICAgdHJlZUZpZWxkczogW3sKICAgICAgICBsYWJlbDogJ+ebruW9leWQjeensCcsCiAgICAgICAgcHJvcDogJ25hbWUnLAogICAgICAgIHJ1bGVzOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6LWE5rqQ55uu5b2V5ZCN56ew5LiN6IO95Li656m6JwogICAgICAgIH1dCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+ebruW9lee8lueggScsCiAgICAgICAgcHJvcDogJ2NvZGUnLAogICAgICAgIHJ1bGVzOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6LWE5rqQ55uu5b2V57yW56CB5LiN6IO95Li656m6JwogICAgICAgIH1dCiAgICAgIH1dLAogICAgICBjdXJOb2RlOiB7fSAvLyDlvZPliY3pgInmi6noioLngrkKICAgIH07CiAgICB2YXIgVEFCTEVfQ09ORklHID0gewogICAgICAvLyDliJfooajooajlpLQKICAgICAgY29sdW1uczogW3sKICAgICAgICBsYWJlbDogJ+ihqOi1hOa6kOWQjeensCcsCiAgICAgICAgcHJvcDogJ25hbWUnCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+ihqOi1hOa6kOe8lueggScsCiAgICAgICAgcHJvcDogJ2NvZGUnLAogICAgICAgIHdpZHRoOiAnMzAwJwogICAgICB9LAogICAgICAvLyB7CiAgICAgIC8vICAgbGFiZWw6ICfotYTmupDlr4bnuqcnLAogICAgICAvLyAgIHByb3A6ICdsZXZlbCcsCiAgICAgIC8vICAgd2lkdGg6ICcxMDAnLAogICAgICAvLyAgIGFsaWduOiAnY2VudGVyJywKICAgICAgLy8gICBmb3JtYXREYXRhOiB2YWwgPT4gewogICAgICAvLyAgICAgcmV0dXJuIHRoaXMuZmlsdGVyRGljdCgnU0VDUkVUX0xFVkVMJywgdmFsKS5sYWJlbDsKICAgICAgLy8gICB9LAogICAgICAvLyB9LAogICAgICAvLyB7CiAgICAgIC8vICAgbGFiZWw6ICfotYTmupDmoLzlvI8nLAogICAgICAvLyAgIHByb3A6ICdzb3VyY2VUeXBlJywKICAgICAgLy8gICB3aWR0aDogJzEwMCcsCiAgICAgIC8vICAgYWxpZ246ICdjZW50ZXInLAogICAgICAvLyAgIGZvcm1hdERhdGE6IHZhbCA9PiB7CiAgICAgIC8vICAgICByZXR1cm4gdGhpcy5maWx0ZXJEaWN0KCdTT1VSQ0VfRklMRV9UWVBFJywgdmFsKS5sYWJlbDsKICAgICAgLy8gICB9LAogICAgICAvLyB9LAogICAgICAvLyB7CiAgICAgIC8vICAgbGFiZWw6ICfmj5DkvpvmlrnlvI8nLAogICAgICAvLyAgIHByb3A6ICdzb3VyY2UnLAogICAgICAvLyAgIHdpZHRoOiAnMTAwJywKICAgICAgLy8gICBhbGlnbjogJ2NlbnRlcicsCiAgICAgIC8vICAgZm9ybWF0RGF0YTogdmFsID0+IHsKICAgICAgLy8gICAgIHJldHVybiB0aGlzLmZpbHRlckRpY3QoJ1NPVVJDRV9QUk9WSURFRF9UWVBFJywgdmFsKS5sYWJlbDsKICAgICAgLy8gICB9LAogICAgICAvLyB9LAogICAgICB7CiAgICAgICAgbGFiZWw6ICfmlbDmja7lupPooajlkI0nLAogICAgICAgIHdpZHRoOiAnMjAwJywKICAgICAgICBwcm9wOiAndGFibGVOYW1lRW4nCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+aYr+WQpuWPkeW4gycsCiAgICAgICAgcHJvcDogJ2RlcGxveWVkJywKICAgICAgICB3aWR0aDogJzE1MCcsCiAgICAgICAgYWxpZ246ICdjZW50ZXInLAogICAgICAgIGRhdGFUeXBlOiAnc2xvdCcsCiAgICAgICAgLy8g5L2/55So5o+S5qe9CiAgICAgICAgc2xvdDogJ2RlcGxveWVkJyAvLyDmj5Lmp73lkI3vvIzmkK3phY0gZGF0YVR5cGU6ICdzbG90JyDkvb/nlKgKICAgICAgfSwKICAgICAgLy8geyBsYWJlbDogJ+aPkOS+m+aWueihqOWJjee8gOWRveWQjScsIHdpZHRoOiAnMTUwJywgcHJvcDogJ3RhYmxlUHJlZml4Q29kZScgfSwKCiAgICAgIC8vIHsgbGFiZWw6ICfniannkIblrp7kvZPooajkuK3mloflkI0nLCB3aWR0aDogJzE1MCcsIHByb3A6ICd0YWJsZU5hbWVDaCcgfSwKICAgICAgLy8geyBsYWJlbDogJ+eJqeeQhuWunuS9k+ihqOiLseaWh+WQjScsIHdpZHRoOiAnMTUwJywgcHJvcDogJ3RhYmxlTmFtZUVuJyB9LAogICAgICB7CiAgICAgICAgZGF0YVR5cGU6ICdvcHRpb24nLAogICAgICAgIGxhYmVsOiAn5pON5L2cJywKICAgICAgICB3aWR0aDogJzIwMHB4JywKICAgICAgICBmaXhlZDogJ3JpZ2h0JywKICAgICAgICBvcGVyYXRpb246IFt7CiAgICAgICAgICBuYW1lOiAn5a+85YWl5pWw5o2uJywKICAgICAgICAgIHR5cGU6ICd0ZXh0JywKICAgICAgICAgIHNpemU6ICdtaW5pJywKICAgICAgICAgIGljb246ICdlbC1pY29uLXVwbG9hZDInLAogICAgICAgICAgcGxhaW46IHRydWUsCiAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24gZGlzYWJsZWQocm93KSB7CiAgICAgICAgICAgIHJldHVybiByb3cuZGVwbG95ZWQgIT09IDE7CiAgICAgICAgICB9LAogICAgICAgICAgY2xpY2tGdW46IGZ1bmN0aW9uIGNsaWNrRnVuKHJvdykgewogICAgICAgICAgICBfdGhpcy5jdXJyZW50Um93ID0gcm93OwogICAgICAgICAgICBfdGhpcy5kb3duVmlzaWJsZSA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgbmFtZTogJ+afpeeci+aVsOaNricsCiAgICAgICAgICBpY29uOiAnZWwtaWNvbi10aWNrZXRzJywKICAgICAgICAgIC8vIHNob3dIaWRlOiAocm93KSA9PiB7fSwKICAgICAgICAgIGNsaWNrRnVuOiBmdW5jdGlvbiBjbGlja0Z1bihyb3cpIHsKICAgICAgICAgICAgX3RoaXMuY3VycmVudFJvdyA9IHJvdzsKICAgICAgICAgICAgX3RoaXMuZGlhbG9nVGl0bGUgPSAiIi5jb25jYXQocm93Lm5hbWUsICIgLSBcdTY1NzBcdTYzNkVcdTRGRTFcdTYwNkYiKTsKICAgICAgICAgICAgX3RoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIHsKICAgICAgICAvLyAgIG5hbWU6ICfph4fpm4bphY3nva4nLAogICAgICAgIC8vICAgaWNvbjogJ2VsLWljb24tcy1vcGVyYXRpb24nLAogICAgICAgIC8vICAgLy8gc2hvd0hpZGU6IChyb3cpID0+IHt9LAogICAgICAgIC8vICAgY2xpY2tGdW46IHJvdyA9PiB7CiAgICAgICAgLy8gICAgIHRoaXMuYWNxdWlzaXRpb25zaG93KHJvdyk7CiAgICAgICAgLy8gICB9LAogICAgICAgIC8vIH0sCiAgICAgICAgLy8gewogICAgICAgIC8vICAgbmFtZTogJ+avj+aXpemHh+mbhue7n+iuoScsCiAgICAgICAgLy8gICBpY29uOiAnZWwtaWNvbi1lZGl0LW91dGxpbmUnLAogICAgICAgIC8vICAgY2xpY2tGdW46IHJvdyA9PiB7CiAgICAgICAgLy8gICAgIHRoaXMuc2VydmljZXNob3cocm93KTsKICAgICAgICAvLyAgIH0sCiAgICAgICAgLy8gfSwKICAgICAgICAvLyB7CiAgICAgICAgLy8gICBuYW1lOiAn6YeH6ZuG5piO57uGJywKICAgICAgICAvLyAgIGljb246ICdlbC1pY29uLWRvY3VtZW50JywKICAgICAgICAvLyAgIGNsaWNrRnVuOiByb3cgPT4gewogICAgICAgIC8vICAgICB0aGlzLkNhcHR1cmVzaG93KHJvdyk7CiAgICAgICAgLy8gICB9LAogICAgICAgIC8vIH0sCiAgICAgICAgXQogICAgICB9XSwKICAgICAgZGVmYXVsdEZpbHRlcjogW3sKICAgICAgICBvcGVyYXRpb246ICdFUVVBTCcsCiAgICAgICAgcHJvcGVydHk6ICdvZHNDYXRhbG9nc0lkJywKICAgICAgICByZWxhdGlvbjogJ0FORCcsCiAgICAgICAgdmFsdWU6ICcnCiAgICAgIH0sIHsKICAgICAgICBvcGVyYXRpb246ICdFUVVBTCcsCiAgICAgICAgcHJvcGVydHk6ICdkZXBsb3llZCcsCiAgICAgICAgcmVsYXRpb246ICdBTkQnLAogICAgICAgIHZhbHVlOiAnMScKICAgICAgfV0KICAgIH07CiAgICB2YXIgRElBTE9HX0NPTkZJRyA9IHsKICAgICAgZGlhbG9nVmlzaWJsZTogZmFsc2UsCiAgICAgIGRpYWxvZ1RpdGxlOiAnJwogICAgICAvLyBkaWFsb2dTZXJ2aWNlOiBmYWxzZSwKICAgICAgLy8gZGlhbG9nU2VydmljZVRpdGxlOiAn6YeH6ZuG57uf6K6hJywKICAgICAgLy8gZGlhbG9nQ2FwdHVyZTogZmFsc2UsCiAgICAgIC8vIGRpYWxvZ0NhcHR1cmVUaXRsZTogJ+mHh+mbhuaYjue7hicsCiAgICAgIC8vIGRpYWxvZ0FjcXVpc2l0aW9uOiBmYWxzZSwKICAgICAgLy8gZGlhbG9nYUFxdWlzaXRpb25UaXRsZTogJ+mHh+mbhumFjee9ricsCiAgICB9OwogICAgdmFyIFVQTE9BRF9DT05GSUcgPSB7CiAgICAgIGJlZm9yZVVwbG9hZDogZnVuY3Rpb24gYmVmb3JlVXBsb2FkKGZpbGUpIHsKICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgX3RoaXMudXBsb2FkTG9hZGluZyA9IHRydWU7CiAgICAgICAgICB2YXIgc2l6ZSA9IGZpbGUuc2l6ZSwKICAgICAgICAgICAgbmFtZSA9IGZpbGUubmFtZTsKICAgICAgICAgIHZhciBwYXNzZWRPck5vdCA9IHRydWU7IC8vIOaYr+WQpumAmui/h+mqjOivgQogICAgICAgICAgdmFyIHR5cGVSZWd1bGFyID0gL1wuKHhsc3x4bHN4KSQvaTsKICAgICAgICAgIHZhciB2ZXJpZmljYXRpb24gPSBbewogICAgICAgICAgICBjb25kaXRpb246ICF0eXBlUmVndWxhci50ZXN0KG5hbWUpLAogICAgICAgICAgICByZXN1bHQ6IGZ1bmN0aW9uIHJlc3VsdCgpIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuJG1lc3NhZ2UuZXJyb3IoJ+WPquiDveS4iuS8oHhsc+aIlnhsc3jmlofku7bnsbvlnosnKTsKICAgICAgICAgICAgfQogICAgICAgICAgfV07CiAgICAgICAgICB2ZXJpZmljYXRpb24uZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICBpZiAoaXRlbS5jb25kaXRpb24pIHsKICAgICAgICAgICAgICBpdGVtLnJlc3VsdCgpOwogICAgICAgICAgICAgIHBhc3NlZE9yTm90ID0gZmFsc2U7CiAgICAgICAgICAgICAgX3RoaXMudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIHBhc3NlZE9yTm90ID8gcmVzb2x2ZSgpIDogcmVqZWN0KCk7CiAgICAgICAgfSk7CiAgICAgIH0sCiAgICAgIG9uRXJyb3I6IGZ1bmN0aW9uIG9uRXJyb3IocmVzKSB7CiAgICAgICAgdmFyIHJlc18gPSBKU09OLnBhcnNlKHJlcy5tZXNzYWdlKTsKICAgICAgICBfdGhpcy4kbWVzc2FnZS5lcnJvcihyZXNfLm1lc3NhZ2UgfHwgJ+WvvOWFpeWksei0pe+8jOivt+mHjeivlScpOwogICAgICAgIF90aGlzLnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgICAgfSwKICAgICAgb25TdWNjZXNzOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9vblN1Y2Nlc3MgPSBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZShyZXMpIHsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdGUpIHsKICAgICAgICAgICAgICAgICAgX3RoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn5a+85YWl5oiQ5YqfJyk7CiAgICAgICAgICAgICAgICAgIF90aGlzLnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgX3RoaXMuZG93blZpc2libGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIF90aGlzLiRtZXNzYWdlLmVycm9yKHJlcy5tZXNzYWdlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWUpOwogICAgICAgIH0pKTsKICAgICAgICBmdW5jdGlvbiBvblN1Y2Nlc3MoX3gpIHsKICAgICAgICAgIHJldHVybiBfb25TdWNjZXNzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBvblN1Y2Nlc3M7CiAgICAgIH0oKQogICAgfTsKICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBUUkVFX0NPTkZJRyksIFRBQkxFX0NPTkZJRyksIERJQUxPR19DT05GSUcpLCB7fSwgewogICAgICBVUExPQURfQ09ORklHOiBVUExPQURfQ09ORklHLAogICAgICAvLyDmir3lsYnnm7jlhbMKICAgICAgZG93blZpc2libGU6IGZhbHNlLAogICAgICB1cGxvYWRMb2FkaW5nOiBmYWxzZQogICAgfSk7CiAgfSwKICBjb21wdXRlZDogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHsKICAgIGFjdGlvblVybDogZnVuY3Rpb24gYWN0aW9uVXJsKF8pIHsKICAgICAgcmV0dXJuICIiLmNvbmNhdCh3aW5kb3cuY29udGV4dC5wb3J0YWwsICIvYml6L2RhdGFSZXNvdXJjZS9vZHNUYWJsZS92MS9pbXBvcnRNYWluIik7CiAgICB9CiAgfSwgbWFwU3RhdGUoewogICAgaGVhZGVyczogZnVuY3Rpb24gaGVhZGVycyhzdGF0ZSkgewogICAgICByZXR1cm4gewogICAgICAgIEF1dGhvcml6YXRpb246ICJCZWFyZXIgIi5jb25jYXQoc3RhdGUubG9naW4uY3VycmVudFVzZXIudG9rZW4pCiAgICAgIH07CiAgICB9CiAgfSkpLCB7fSwgewogICAgdXBsb2FkRmlsdGVyOiBmdW5jdGlvbiB1cGxvYWRGaWx0ZXIoKSB7CiAgICAgIHZhciBfdGhpcyRjdXJyZW50Um93OwogICAgICByZXR1cm4gKF90aGlzJGN1cnJlbnRSb3cgPSB0aGlzLmN1cnJlbnRSb3cpICE9PSBudWxsICYmIF90aGlzJGN1cnJlbnRSb3cgIT09IHZvaWQgMCAmJiBfdGhpcyRjdXJyZW50Um93LmlkID8gewogICAgICAgIHRhYmxlSWQ6IHRoaXMuY3VycmVudFJvdy5pZAogICAgICB9IDoge307CiAgICB9LAogICAgZGF0YU1ldGhvZDogZnVuY3Rpb24gZGF0YU1ldGhvZCgpIHsKICAgICAgcmV0dXJuIEFQSS5nZXRTb3VyY2VMaXN0OwogICAgfSAvLyBpbml0UmVmcmVzaDogKCkgPT4gZmFsc2UsCiAgfSksCiAgbWV0aG9kczogewogICAgZ2V0VHJlZU5vZGVzOiBmdW5jdGlvbiBnZXRUcmVlTm9kZXMoKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJHF1ZXJ5VHJlZUQsIHZhbHVlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIEFQSS5xdWVyeVRyZWVEYXRhKCk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBfeWllbGQkQVBJJHF1ZXJ5VHJlZUQgPSBfY29udGV4dDIuc2VudDsKICAgICAgICAgICAgICB2YWx1ZSA9IF95aWVsZCRBUEkkcXVlcnlUcmVlRC52YWx1ZTsKICAgICAgICAgICAgICBfdGhpczIuZGVmYXVsdEV4cGFuZGVkS2V5cyA9IFsodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZhbHVlWzBdLmlkKSB8fCAnJ107CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoInJldHVybiIsIHsKICAgICAgICAgICAgICAgIGRhdGE6IHZhbHVlIHx8IFtdCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMik7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIG9uVHJlZU5vZGVDbGljazogZnVuY3Rpb24gb25UcmVlTm9kZUNsaWNrKG5vZGUpIHsKICAgICAgdmFyIF90aGlzJGN1ck5vZGU7CiAgICAgIGlmIChub2RlLmlkID09PSAoKF90aGlzJGN1ck5vZGUgPSB0aGlzLmN1ck5vZGUpID09PSBudWxsIHx8IF90aGlzJGN1ck5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGN1ck5vZGUuaWQpKSByZXR1cm47CiAgICAgIHRoaXMuY3VyTm9kZSA9IF9vYmplY3RTcHJlYWQoe30sIG5vZGUpOwogICAgICAvLyB0aGlzLmZpbHRlcnNbJ29kc0NhdGFsb2dzSWQnXSA9IG5vZGUuaWQ7CiAgICAgIC8vIHRoaXMucmVmcmVzaCgpOwogICAgICB0aGlzLmdldERhdGEoKTsKICAgIH0sCiAgICByZWxvYWRUcmVlOiBmdW5jdGlvbiByZWxvYWRUcmVlKCkgewogICAgICB0aGlzLiRyZWZzLmFwcEFzeW5jVHJlZS5nZXRUcmVlRGF0YSgpOwogICAgfSwKICAgIC8vIOafpeeci+aXpeW/l+W8ueWxggogICAgLy8gc2VydmljZXNob3cocm93KSB7CiAgICAvLyAgIHRoaXMuZGlhbG9nU2VydmljZVRpdGxlID0gYOavj+aXpemHh+mbhue7n+iuoS0gJHtyb3cubmFtZX1gOwogICAgLy8gICB0aGlzLmN1cnJlbnRSb3cgPSByb3c7CiAgICAvLyAgIGNvbnN0IHJvd0lkID0gcm93LmlkOyAvLyDojrflj5blvZPliY3ooYznmoRpZAogICAgLy8gICB0aGlzLmRpYWxvZ1NlcnZpY2UgPSB0cnVlOwogICAgLy8gICAvLyBjb25zb2xlLmxvZygncm93cm93Jywgcm93LmlkKTsKICAgIC8vICAgdGhpcy4kcmVmcy5TZXJ2aWNlRGlhbG9nLmluaXREYXRhKHsgaWQ6IHJvd0lkIH0pOyAvLyDlsIZpZOS8oOmAkue7mVNlcnZpY2VEaWFsb2fnu4Tku7YKICAgIC8vIH0sCiAgICAvLyBDYXB0dXJlc2hvdyhyb3cpIHsKICAgIC8vICAgdGhpcy5kaWFsb2dDYXB0dXJlVGl0bGUgPSBg6YeH6ZuG5piO57uGLSAke3Jvdy5uYW1lfWA7CiAgICAvLyAgIHRoaXMuY3VycmVudFJvdyA9IHJvdzsKICAgIC8vICAgY29uc3Qgcm93SWQgPSByb3cuaWQ7IC8vIOiOt+WPluW9k+WJjeihjOeahGlkCiAgICAvLyAgIHRoaXMuZGlhbG9nQ2FwdHVyZSA9IHRydWU7CiAgICAvLyAgIC8vIGNvbnNvbGUubG9nKCdyb3dyb3cnLCByb3cuaWQpOwogICAgLy8gICB0aGlzLiRyZWZzLlNlcnZpY2VEaWFsb2cuaW5pdERhdGEoeyBpZDogcm93SWQgfSk7IC8vIOWwhmlk5Lyg6YCS57uZU2VydmljZURpYWxvZ+e7hOS7tgogICAgLy8gfSwKICAgIC8vIGFjcXVpc2l0aW9uc2hvdyhyb3cpIHsKICAgIC8vICAgdGhpcy5kaWFsb2dhQXF1aXNpdGlvblRpdGxlID0gJ+mFjee9rumHh+mbhuaWueW8jyc7CiAgICAvLyAgIHRoaXMuY3VycmVudFJvdyA9IHJvdzsKICAgIC8vICAgY29uc3Qgcm93SWQgPSByb3cuaWQ7IC8vIOiOt+WPluW9k+WJjeihjOeahGlkCiAgICAvLyAgIHRoaXMuZGlhbG9nQWNxdWlzaXRpb24gPSB0cnVlOwogICAgLy8gICAvLyBjb25zb2xlLmxvZygncm93cm93Jywgcm93LmlkKTsKICAgIC8vICAgdGhpcy4kcmVmcy5TZXJ2aWNlRGlhbG9nLmluaXREYXRhKHsgaWQ6IHJvd0lkIH0pOyAvLyDlsIZpZOS8oOmAkue7mVNlcnZpY2VEaWFsb2fnu4Tku7YKICAgIC8vIH0sCiAgICAvKioNCiAgICAgKiBAZGVzY3JpcHRpb246IHRyZWVBY3Rpb25z5pSv5oyB5Ye95pWw5Lmf5pSv5oyB5pWw57uE77yM55Sx5LqO5a6e6ZmF5Zy65pmv5b2T5LitIOWPr+iDveS8muWKqOaAgeiuvue9ruaMiemSru+8jOaVheS7peWHveaVsOekuuS+i+adpeWxleekug0KICAgICAqIEBwYXJhbSB7Kn0gZGF0YSDlvZPliY3ngrnlh7voioLngrnmlbDmja4NCiAgICAgKiBAcmV0dXJuIHsqfSDlvZPliY3oioLngrnlsZXnpLrnmoTmk43kvZzpobnmlbDnu4QNCiAgICAgKi8KICAgIHRyZWVBY3Rpb25zOiBmdW5jdGlvbiB0cmVlQWN0aW9ucyhkYXRhKSB7CiAgICAgIC8vIOagueiKgueCueWIpOaWreaWueW8j+S7peS4muWKoeS4uuWHhu+8jOatpOWkhOS7heS4uuekuuS+iwogICAgICByZXR1cm4gW3sKICAgICAgICBsYWJlbDogJ+a3u+WKoCcsCiAgICAgICAgdHlwZTogJ2FkZCcsCiAgICAgICAgbWV0aG9kOiB0aGlzLmFkZE5vZGUKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn57yW6L6RJywKICAgICAgICB0eXBlOiAnZWRpdCcsCiAgICAgICAgbWV0aG9kOiB0aGlzLmVkaXROb2RlLAogICAgICAgIHNob3dIaWRlOiBmdW5jdGlvbiBzaG93SGlkZShyb3cpIHsKICAgICAgICAgIHJldHVybiByb3cuaWQgIT09ICcxJzsKICAgICAgICB9CiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+WIoOmZpCcsCiAgICAgICAgdHlwZTogJ2RlbGV0ZScsCiAgICAgICAgbWV0aG9kOiB0aGlzLmRlbE5vZGUsCiAgICAgICAgc2hvd0hpZGU6IGZ1bmN0aW9uIHNob3dIaWRlKHJvdykgewogICAgICAgICAgcmV0dXJuIHJvdy5pZCAhPT0gJzEnOwogICAgICAgIH0KICAgICAgfV07CiAgICB9LAogICAgb25CZWZvcmVHZXREYXRhOiBmdW5jdGlvbiBvbkJlZm9yZUdldERhdGEocXVlcnlQYXJhbXMsIGZvcm1EYXRhKSB7CiAgICAgIHRoaXMuc2V0RmlsdGVyVmFsdWUodGhpcy5xdWVyeVBhcmFtcywgdGhpcy5kZWZhdWx0RmlsdGVyLCAnZGVwbG95ZWQnLCAnMScpOwogICAgICB0aGlzLnNldEZpbHRlclZhbHVlKHRoaXMucXVlcnlQYXJhbXMsIHRoaXMuZGVmYXVsdEZpbHRlciwgJ29kc0NhdGFsb2dzSWQnLCB0aGlzLmN1ck5vZGUuaWQpOwogICAgfSwKICAgIGRvd25Mb2FkOiBmdW5jdGlvbiBkb3duTG9hZCgpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMDsKICAgICAgICAgICAgICBfdGhpczMudXBsb2FkTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA0OwogICAgICAgICAgICAgIHJldHVybiBBUEkuZG93bkxvYWRGaWxlKF90aGlzMy5jdXJyZW50Um93LmlkKTsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gOTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gNjsKICAgICAgICAgICAgICBfY29udGV4dDMudDAgPSBfY29udGV4dDNbImNhdGNoIl0oMCk7CiAgICAgICAgICAgICAgY29uc29sZS5sb2coX2NvbnRleHQzLnQwLm1lc3NhZ2UgfHwgJ+S4i+i9veWksei0pScpOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSA5OwogICAgICAgICAgICAgIF90aGlzMy51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5maW5pc2goOSk7CiAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMsIG51bGwsIFtbMCwgNiwgOSwgMTJdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIGFzeW5jIGFkZE5vZGUocGFyYW1zLCBub2RlKSB7CiAgICAvLyAgIHRyeSB7CiAgICAvLyAgICAgYXdhaXQgQVBJLmFkZFRyZWVOb2RlKHBhcmFtcyk7CiAgICAvLyAgICAgY29uc3QgdHJlZSA9IHRoaXMuJHJlZnMuYXBwQXN5bmNUcmVlLmdldEVsVHJlZSgpOwogICAgLy8gICAgIHRyZWUuYXBwZW5kKHBhcmFtcywgbm9kZSk7CiAgICAvLyAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAvLyAgICAgY29uc29sZS5sb2coZXJyb3IpOwogICAgLy8gICB9CiAgICAvLyAgIC8vIGFkZFRyZWVOb2RlCiAgICAvLyAgIC8vIOatpOWkhOS7heS4uuekuuS+iyDlrp7pmYXkuLrlm57osIMKICAgIC8vIH0sCiAgICAvLyBhc3luYyBlZGl0Tm9kZShwYXJhbXMsIG5vZGUpIHsKICAgIC8vICAgdHJ5IHsKICAgIC8vICAgICBjb25zdCB7IGNvZGUsIG5hbWUsIHBhcmVudElkLCBpZCB9ID0gcGFyYW1zOwogICAgLy8gICAgIGF3YWl0IEFQSS5lZGl0VHJlZU5vZGUoeyBjb2RlLCBuYW1lLCBwYXJlbnRJZCwgaWQgfSk7CiAgICAvLyAgICAgdGhpcy4kcmVmcy5hcHBBc3luY1RyZWUuZ2V0VHJlZURhdGEoKTsKICAgIC8vICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgIC8vICAgICBjb25zb2xlLmxvZyhlcnJvcik7CiAgICAvLyAgIH0KICAgIC8vIH0sCiAgICAvLyBhc3luYyBkZWxOb2RlKHBhcmFtcywgbm9kZSkgewogICAgLy8gICB0cnkgewogICAgLy8gICAgIGF3YWl0IEFQSS5kZWxUcmVlTm9kZShub2RlLmlkKTsKICAgIC8vICAgICB0aGlzLiRyZWZzLmFwcEFzeW5jVHJlZS5nZXRUcmVlRGF0YSgpOwogICAgLy8gICB9IGNhdGNoIChlcnIpIHsKICAgIC8vICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoZXJyIHx8ICfliKDpmaTotYTmupDnm67lvZXlpLHotKXvvIEnKTsKICAgIC8vICAgfQogICAgLy8gfSwKICAgIGFkZE5vZGU6IGZ1bmN0aW9uIGFkZE5vZGUocGFyYW1zLCBub2RlKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KCkgewogICAgICAgIHZhciBjb2RlLCBuYW1lLCBpZCwgbmV3Tm9kZSwgX3lpZWxkJEFQSSRhZGRUcmVlTm9kLCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgY29kZSA9IHBhcmFtcy5jb2RlLCBuYW1lID0gcGFyYW1zLm5hbWU7CiAgICAgICAgICAgICAgaWQgPSBub2RlLmlkOwogICAgICAgICAgICAgIG5ld05vZGUgPSB7CiAgICAgICAgICAgICAgICBjb2RlOiBjb2RlLAogICAgICAgICAgICAgICAgbmFtZTogbmFtZSwKICAgICAgICAgICAgICAgIHBhcmVudElkOiBpZAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSAzOwogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gNjsKICAgICAgICAgICAgICByZXR1cm4gQVBJLmFkZFRyZWVOb2RlKG5ld05vZGUpOwogICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRhZGRUcmVlTm9kID0gX2NvbnRleHQ0LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJGFkZFRyZWVOb2Quc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRBUEkkYWRkVHJlZU5vZC5tZXNzYWdlOwogICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgX3RoaXM0LnJlbG9hZFRyZWUoKTsKICAgICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS5zdWNjZXNzKCfmt7vliqDotYTmupDnm67lvZXmiJDlip/vvIEnKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLndhcm5pbmcobWVzc2FnZSB8fCAn5re75Yqg6LS05rqQ5bGC55uu5b2V5aSx6LSl77yBJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMTU7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSAxMjsKICAgICAgICAgICAgICBfY29udGV4dDQudDAgPSBfY29udGV4dDRbImNhdGNoIl0oMyk7CiAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQ0LnQwIHx8ICfmt7vliqDotLTmupDlsYLnm67lvZXlpLHotKXvvIEnKTsKICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNCwgbnVsbCwgW1szLCAxMl1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g57yW6L6RCiAgICBlZGl0Tm9kZTogZnVuY3Rpb24gZWRpdE5vZGUocGFyYW1zKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KCkgewogICAgICAgIHZhciBjb2RlLCBuYW1lLCBwYXJlbnRJZCwgaWQsIG5ld05vZGUsIF95aWVsZCRBUEkkZWRpdFRyZWVObywgc3RhdGUsIG1lc3NhZ2U7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU1JChfY29udGV4dDUpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGNvZGUgPSBwYXJhbXMuY29kZSwgbmFtZSA9IHBhcmFtcy5uYW1lLCBwYXJlbnRJZCA9IHBhcmFtcy5wYXJlbnRJZCwgaWQgPSBwYXJhbXMuaWQ7CiAgICAgICAgICAgICAgbmV3Tm9kZSA9IHsKICAgICAgICAgICAgICAgIGNvZGU6IGNvZGUsCiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLAogICAgICAgICAgICAgICAgaWQ6IGlkLAogICAgICAgICAgICAgICAgcGFyZW50SWQ6IHBhcmVudElkCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dDUucHJldiA9IDI7CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSA1OwogICAgICAgICAgICAgIHJldHVybiBBUEkuZWRpdFRyZWVOb2RlKG5ld05vZGUpOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRlZGl0VHJlZU5vID0gX2NvbnRleHQ1LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJGVkaXRUcmVlTm8uc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRBUEkkZWRpdFRyZWVOby5tZXNzYWdlOwogICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgX3RoaXM1LnJlbG9hZFRyZWUoKTsKICAgICAgICAgICAgICAgIF90aGlzNS4kbWVzc2FnZS5zdWNjZXNzKCfnvJbovpHotLTmupDlsYLnm67lvZXmiJDlip/vvIEnKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX3RoaXM1LiRtZXNzYWdlLndhcm5pbmcobWVzc2FnZSB8fCAn57yW6L6R6LS05rqQ5bGC55uu5b2V5aSx6LSl77yBJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMTQ7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgX2NvbnRleHQ1LnByZXYgPSAxMTsKICAgICAgICAgICAgICBfY29udGV4dDUudDAgPSBfY29udGV4dDVbImNhdGNoIl0oMik7CiAgICAgICAgICAgICAgX3RoaXM1LiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQ1LnQwIHx8ICfnvJbovpHotLTmupDlsYLnm67lvZXlpLHotKXvvIEnKTsKICAgICAgICAgICAgY2FzZSAxNDoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNSwgbnVsbCwgW1syLCAxMV1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5Yig6ZmkCiAgICBkZWxOb2RlOiBmdW5jdGlvbiBkZWxOb2RlKHBhcmFtcywgbm9kZSkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNigpIHsKICAgICAgICB2YXIgX3lpZWxkJEFQSSRkZWxUcmVlTm9kLCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTYkKF9jb250ZXh0NikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ2LnByZXYgPSBfY29udGV4dDYubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQ2LnByZXYgPSAwOwogICAgICAgICAgICAgIF9jb250ZXh0Ni5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gQVBJLmRlbFRyZWVOb2RlKG5vZGUuaWQpOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRkZWxUcmVlTm9kID0gX2NvbnRleHQ2LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJGRlbFRyZWVOb2Quc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRBUEkkZGVsVHJlZU5vZC5tZXNzYWdlOwogICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgX3RoaXM2LnJlbG9hZFRyZWUoKTsKICAgICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS5zdWNjZXNzKCfliKDpmaTotLTmupDlsYLnm67lvZXmiJDlip/vvIEnKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLndhcm5pbmcobWVzc2FnZSB8fCAn5Yig6Zmk6LS05rqQ5bGC55uu5b2V5aSx6LSl77yBJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0Ni5uZXh0ID0gMTI7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICBfY29udGV4dDYucHJldiA9IDk7CiAgICAgICAgICAgICAgX2NvbnRleHQ2LnQwID0gX2NvbnRleHQ2WyJjYXRjaCJdKDApOwogICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0Ni50MCB8fCAn5Yig6Zmk6LS05rqQ5bGC55uu5b2V5aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ni5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTYsIG51bGwsIFtbMCwgOV1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgZGF0YUFkZDogZnVuY3Rpb24gZGF0YUFkZCgpIHsKICAgICAgdGhpcy5kaWFsb2dUaXRsZSA9ICfmlrDlop7otLTmupDlsYLmlbDmja7mupAnOwogICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlOwogICAgfSwKICAgIG9uQWRkQ29uZmlybTogZnVuY3Rpb24gb25BZGRDb25maXJtKHNvdXJjZSkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNygpIHsKICAgICAgICB2YXIgcGFyYW1zOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNyQoX2NvbnRleHQ3KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDcucHJldiA9IF9jb250ZXh0Ny5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAvKiog5YWI5rOo6YeKKi8KICAgICAgICAgICAgICAvLyBjb25zdCBwYXJhbXMgPSB7CiAgICAgICAgICAgICAgLy8gICAuLi5zb3VyY2UsCiAgICAgICAgICAgICAgLy8gICBvZHNDYXRhbG9nc0lkOiB0aGlzLmN1ck5vZGUuaWQsCiAgICAgICAgICAgICAgLy8gICBkYlNvdXJjZUlkOiBzb3VyY2UuaWQsCiAgICAgICAgICAgICAgLy8gICBjbHVzdGVyTW91bGRJZDogc291cmNlLmNsdXN0ZXJJZCwKICAgICAgICAgICAgICAvLyB9OwogICAgICAgICAgICAgIC8vIGRlbGV0ZSBwYXJhbXMuaWQ7CiAgICAgICAgICAgICAgLy8gZGVsZXRlIHBhcmFtcy5jbHVzdGVySWQ7CiAgICAgICAgICAgICAgLy8gZGVsZXRlIHBhcmFtcy5kZXBsb3llZDsKICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgIC8vIHRyeSB7CiAgICAgICAgICAgICAgLy8gICBhd2FpdCBBUEkuYWRkU291cmNlKHBhcmFtcyk7CiAgICAgICAgICAgICAgLy8gICAvLyB0aGlzLiRtZQogICAgICAgICAgICAgIC8vICAgdGhpcy5yZWZyZXNoKCk7CiAgICAgICAgICAgICAgLy8gfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgICAvLyAgIGNvbnNvbGUubG9nKGVycm9yKTsKICAgICAgICAgICAgICAvLyB9CiAgICAgICAgICAgICAgcGFyYW1zID0gewogICAgICAgICAgICAgICAgY2F0YWxvZ0lkOiBfdGhpczcuY3VyTm9kZS5pZCwKICAgICAgICAgICAgICAgIHRhYmxlSWQ6IHNvdXJjZS5pZAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQ3LnByZXYgPSAxOwogICAgICAgICAgICAgIF9jb250ZXh0Ny5uZXh0ID0gNDsKICAgICAgICAgICAgICByZXR1cm4gQVBJLmFkZEJ5Q29tcGFueVNvdXJjZShwYXJhbXMpOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgX3RoaXM3LiRtZXNzYWdlLnN1Y2Nlc3MoJ+aTjeS9nOaIkOWKnycpOwogICAgICAgICAgICAgIC8vIHRoaXMuJG1lCiAgICAgICAgICAgICAgLy8gdGhpcy5yZWZyZXNoKCk7CiAgICAgICAgICAgICAgX2NvbnRleHQ3Lm5leHQgPSAxMDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgIF9jb250ZXh0Ny5wcmV2ID0gNzsKICAgICAgICAgICAgICBfY29udGV4dDcudDAgPSBfY29udGV4dDdbImNhdGNoIl0oMSk7CiAgICAgICAgICAgICAgY29uc29sZS5sb2coX2NvbnRleHQ3LnQwKTsKICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICBjb25zb2xlLmxvZyhwYXJhbXMpOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDcuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU3LCBudWxsLCBbWzEsIDddXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIHNob3dEZXRhaWw6IGZ1bmN0aW9uIHNob3dEZXRhaWwoKSB7fQogIH0KfTs="},null]}