{"remainingRequest":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataResource\\dataServices\\dataServiceAPI\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataResource\\dataServices\\dataServiceAPI\\index.vue","mtime":1749495331801},{"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:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgQVBJIGZyb20gJ0AvYXBpL2J1c2luZXNzL2RhdGFTZXJ2aWNlQVBJJw0KaW1wb3J0IFNlcnZpY2VEaWFsb2cgZnJvbSAnLi4vZGF0YVNlcnZpY2VBUEkvU2VydmljZURpYWxvZy52dWUnDQppbXBvcnQgRGV0YWlsRGlhbG9nIGZyb20gJy4vRGV0YWlsRGlhbG9nLnZ1ZScNCmltcG9ydCBBZGREaWFsb2cgZnJvbSAnQC92aWV3cy9kYXRhUmVzb3VyY2UvZGF0YVNlcnZpY2VzL2RhdGFTZXJ2aWNlQVBJL0FkZERpYWxvZy52dWUnDQppbXBvcnQgdGFibGVNaXhpbiBmcm9tICdAL21peGlucy90YWJsZS5qcycgLy8g5YiX6KGobWl4aW5zDQppbXBvcnQgU2hvd0RpYWxvZyBmcm9tICdAL3ZpZXdzL2RhdGFSZXNvdXJjZS9kYXRhU2VydmljZXMvZGF0YVNlcnZpY2VBUEkvU2hvd0RpYWxvZy52dWUnDQppbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnIC8vIOWcqOaWh+S7tumhtumDqOa3u+WKoA0KZXhwb3J0IGRlZmF1bHQgew0KICBjb21wb25lbnRzOiB7DQogICAgRGV0YWlsRGlhbG9nLA0KICAgIFNlcnZpY2VEaWFsb2csDQogICAgU2hvd0RpYWxvZywNCiAgICBBZGREaWFsb2cNCiAgfSwNCiAgbWl4aW5zOiBbdGFibGVNaXhpbl0sDQogIGRhdGEoKSB7DQogICAgLy8g5qCRDQogICAgY29uc3QgVFJFRV9DT05GSUcgPSB7DQogICAgICBuYW1lOiAnJywNCiAgICAgIHRyZWVJZDogJycsDQogICAgICB0cmVlUHJvcHM6IHsNCiAgICAgICAgdmFsdWU6ICdpZCcsDQogICAgICAgIGxhYmVsOiAnbmFtZScNCiAgICAgIH0sDQogICAgICBleHBhbmRBbGw6IGZhbHNlLA0KICAgICAgZGVmYXVsdEV4cGFuZGVkS2V5czogWycwJ10sDQogICAgICAvLyDmraTlpIRmaWVsZHPlhoXphY3nva7lr7nosaHlsZ7mgKfljIXmi6w6IGxhYmVsL3Byb3AvcnVsZXMvdHlwZSjmnprkuL46c3dpdGNoL251bWJlci9pbnB1dCjpu5jorqQpKS9zcGFuLw0KICAgICAgdHJlZUZpZWxkczogWw0KICAgICAgICB7DQogICAgICAgICAgbGFiZWw6ICfmjqXlj6Pnm67lvZXlkI3np7AnLA0KICAgICAgICAgIHByb3A6ICduYW1lJywNCiAgICAgICAgICBsYWJlbFdpZHRoOiAnMTIwJywNCiAgICAgICAgICBydWxlczogW3tyZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogJ+aOpeWPo+ebruW9leWQjeensOS4jeiDveS4uuepuid9XQ0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgbGFiZWw6ICfmjqXlj6Pnm67lvZXnvJbnoIEnLA0KICAgICAgICAgIHByb3A6ICdjb2RlJywNCiAgICAgICAgICBsYWJlbFdpZHRoOiAnMTIwJywNCiAgICAgICAgICBydWxlczogW3tyZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogJ+aOpeWPo+ebruW9lee8lueggeS4jeiDveS4uuepuid9XQ0KICAgICAgICB9DQogICAgICBdLA0KICAgICAgY3VyTm9kZToge30gLy8g5b2T5YmN6YCJ5oup6IqC54K5DQogICAgfQ0KICAgIC8vIHRhYmxl5YiX6KGoDQogICAgY29uc3QgVEFCTEVfQ09ORklHID0gew0KICAgICAgLy8gZmlsdGVyczogew0KICAgICAgLy8gICBhcGlNb2RlOiAxLCAvLyDor7fmsYLmlrnlvI/pu5jorqTkuLpHRVQNCiAgICAgIC8vIH0sDQogICAgICBjcmVhdGVkTGlzdDogWw0KICAgICAgICB7bGFiZWw6ICdHRVQnLCB2YWx1ZTogJzEnfSwNCiAgICAgICAge2xhYmVsOiAnUE9TVCcsIHZhbHVlOiAnMCd9DQogICAgICBdLA0KICAgICAgLy8g5YiX6KGo6KGo5aS0DQogICAgICBjb2x1bW5zOiBbDQogICAgICAgIHtsYWJlbDogJ+aOpeWPo+WQjeensCcsIHByb3A6ICdhcGlOYW1lJywgd2lkdGg6ICcyMDBweCcsIGFsaWduOiAnY2VudGVyJ30sDQogICAgICAgIHtsYWJlbDogJ+aOpeWPo+aPj+i/sCcsIHByb3A6ICdhcGlEZXNjJywgd2lkdGg6ICcyMDBweCcsIGFsaWduOiAnY2VudGVyJ30sDQogICAgICAgIHtsYWJlbDogJ+aOpeWPo+WcsOWdgCcsIHByb3A6ICdhcGlVcmwnLCBhbGlnbjogJ2NlbnRlcid9LA0KICAgICAgICB7bGFiZWw6ICfmlbDmja7lupPooajlkI0nLCBwcm9wOiAnZGJBbGlhcycsIHdpZHRoOiAnMTAwcHgnLCBhbGlnbjogJ2NlbnRlcid9LA0KICAgICAgICB7bGFiZWw6ICfor7fmsYLmlrnlvI8nLCBwcm9wOiAnYXBpTW9kZScsIGRhdGFUeXBlOiAnc2xvdCcsIHNsb3Q6ICdhcGlNb2RlJywgd2lkdGg6ICcxMDBweCcsIGFsaWduOiAnY2VudGVyJ30sDQogICAgICAgIHsNCiAgICAgICAgICBsYWJlbDogJ+aOpeWPo+eKtuaAgScsDQogICAgICAgICAgcHJvcDogJ3N0YXR1cycsDQogICAgICAgICAgd2lkdGg6ICcxMDAnLA0KICAgICAgICAgIGFsaWduOiAnY2VudGVyJywNCiAgICAgICAgICBkYXRhVHlwZTogJ3Nsb3QnLCAvLyDkvb/nlKjmj5Lmp70NCiAgICAgICAgICBzbG90OiAnc3RhdHVzJw0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgZGF0YVR5cGU6ICdvcHRpb24nLA0KICAgICAgICAgIGxhYmVsOiAn5pON5L2cJywNCiAgICAgICAgICB3aWR0aDogJzIyMCcsDQogICAgICAgICAgb3BlcmF0aW9uOiBbDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIG5hbWU6ICfmtYvor5UnLA0KICAgICAgICAgICAgICBpY29uOiAnZWwtaWNvbi1zLXVuZm9sZCcsDQogICAgICAgICAgICAgIGNvbG9yOiAnIzQwOWVmZicsDQogICAgICAgICAgICAgIGNsaWNrRnVuOiAocm93KSA9PiB7DQogICAgICAgICAgICAgICAgdGhpcy5zaG93RHJhd2VyKHJvdykNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgbmFtZTogJ+afpeeci+aXpeW/lycsDQogICAgICAgICAgICAgIGljb246ICdlbC1pY29uLWRvY3VtZW50JywNCiAgICAgICAgICAgICAgY2xpY2tGdW46IChyb3cpID0+IHsNCiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2VzaG93KHJvdykNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgbmFtZTogJ+aOpeWPo+aWh+aho+afpeeciycsDQogICAgICAgICAgICAgIGljb246ICdlbC1pY29uLXRpY2tldHMnLA0KICAgICAgICAgICAgICBjb2xvcjogJyM0MDdjZmYnLA0KICAgICAgICAgICAgICBjbGlja0Z1bjogKHJvdykgPT4gew0KICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsc3Nob3cocm93KQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBuYW1lOiAn5Y+R5biDJywNCiAgICAgICAgICAgICAgaWNvbjogJ2VsLWljb24tcy1wcm9tb3Rpb24nLA0KICAgICAgICAgICAgICBjb2xvcjogJyNmYTkxMmEnLA0KICAgICAgICAgICAgICBzaG93SGlkZTogKHJvdykgPT4gew0KICAgICAgICAgICAgICAgIHJldHVybiByb3cuc3RhdHVzICE9PSAnMScNCiAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgY2xpY2tGdW46IChyb3cpID0+IHsNCiAgICAgICAgICAgICAgICB0aGlzLnB1Ymxpc2hUYWJsZShyb3cpDQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIG5hbWU6ICfkuIvmnrYnLA0KICAgICAgICAgICAgICBpY29uOiAnZWwtaWNvbi1yZW1vdmUnLA0KICAgICAgICAgICAgICBjb2xvcjogJyNmNTZjNmMnLA0KICAgICAgICAgICAgICBzaG93SGlkZTogKHJvdykgPT4gew0KICAgICAgICAgICAgICAgIHJldHVybiByb3cuc3RhdHVzID09PSAnMScgLy8g5bey5Y+R5biD5pe25pi+56S6ICLkuIvmnrYiIOaMiemSrg0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICBjbGlja0Z1bjogKHJvdykgPT4gew0KICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaFRhYmxlKHJvdykNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgbmFtZTogJ+WIoOmZpCcsDQogICAgICAgICAgICAgIGljb246ICdlbC1pY29uLWRlbGV0ZScsDQogICAgICAgICAgICAgIGNvbG9yOiAncmVkJywNCiAgICAgICAgICAgICAgc2hvd0hpZGU6IChyb3cpID0+IHsNCiAgICAgICAgICAgICAgICByZXR1cm4gcm93LnN0YXR1cyAhPT0gJzEnIC8vIOW3suWPkeW4g+aXtuaYvuekuiAi5LiL5p62IiDmjInpkq4NCiAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgY2xpY2tGdW46IChyb3cpID0+IHsNCiAgICAgICAgICAgICAgICB0aGlzLmRlbEFwaShyb3cpDQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICBdDQogICAgICAgIH0NCiAgICAgIF0sDQogICAgICBkZWZhdWx0RmlsdGVyOiBbDQogICAgICAgIHsNCiAgICAgICAgICBvcGVyYXRpb246ICdFUVVBTCcsDQogICAgICAgICAgcHJvcGVydHk6ICdjYXRhbG9nSWQnLA0KICAgICAgICAgIHJlbGF0aW9uOiAnQU5EJywNCiAgICAgICAgICB2YWx1ZTogJycNCiAgICAgICAgfQ0KICAgICAgXQ0KICAgIH0NCiAgICAvLyBkaWFsb2flvLnlh7oNCiAgICBjb25zdCBESUFMT0dfQ09ORklHID0gew0KICAgICAgZGV0YWlsVmlzaWJsZTogZmFsc2UsDQogICAgICBhZGRWaXNpYmxlOiBmYWxzZSwNCiAgICAgIGRpYWxvZ1NlcnZpY2U6IGZhbHNlLA0KICAgICAgZGlhbG9nRGV0YWlsczogZmFsc2UsDQogICAgICBkcmF3ZXJWaXNpYmxlOiBmYWxzZSwgLy8g5o6n5Yi25oq95bGJ5pi+56S65ZKM6ZqQ6JeP55qE5Y+Y6YePDQogICAgICBkZXRhaWxUaXRsZTogJ+e8lui+kScsDQogICAgICBhZGRUaXRsZTogJ+aWsOWinicsDQogICAgICBkaWFsb2dTZXJ2aWNlVGl0bGU6ICfmn6XnnIvml6Xlv5cnLA0KICAgICAgZGlhbG9nRGV0YWlsc1RpdGxlOiAn5o6l5Y+j6K+m5oOFJywNCiAgICAgIGRpYWxvZ2REYXRhOiB7fQ0KICAgIH0NCiAgICByZXR1cm4gew0KICAgICAgLi4uVFJFRV9DT05GSUcsIC8vIOagkeebuOWFsw0KICAgICAgLi4uVEFCTEVfQ09ORklHLCAvLyB0YWJsZeebuOWFsw0KICAgICAgLi4uRElBTE9HX0NPTkZJRywgLy8g5Li75YiX6KGoZGlhbG9n55u45YWzDQogICAgICAvLyBzdGF0dXM6ICcnLCAvLyDliJ3lp4vljJbmjqXlj6PnirbmgIHkuLrnqboNCiAgICAgIHRhYmxlRGF0YTogW10sIC8vIOWIneWni+WMluWIl+ihqOS4uuepuuaVsOe7hA0KICAgICAgdmFsdWU6ICcnLA0KICAgICAgcmVxdWVzdFVybDogJycsDQogICAgICByZXF1ZXN0TWV0aG9kOiAnJywNCiAgICAgIHJlc3BvbnNlRGF0YTogbnVsbCwNCiAgICAgIHJlc3BvbnNlU3RhdHVzOiBudWxsLA0KICAgICAgcmVzcG9uc2VUaW1lOiBudWxsLA0KICAgICAgcmVzcG9uc2VIZWFkZXJzOiBbXSwNCiAgICAgIHJlc3BvbnNlQ29va2llczogW10sDQogICAgICBhY3RpdmVSZXNwb25zZVRhYjogJ2JvZHknLA0KICAgICAgY3VycmVudFJvdzogbnVsbCwNCiAgICAgIGN1cnJlbnRSb3dhOiBudWxsLA0KICAgICAgaXNVcmxEaXNhYmxlZDogZmFsc2UsIC8vIOaOp+WItnJlcXVlc3RVcmzovpPlhaXmoYbmmK/lkKbnpoHnlKgNCiAgICAgIGlzTWV0aG9kRGlzYWJsZWQ6IGZhbHNlLCAvLyDmjqfliLZyZXF1ZXN0TWV0aG9k6YCJ5oup5qGG5piv5ZCm56aB55SoDQogICAgICBib2R5Rm9ybWF0OiAncmF3JywNCiAgICAgIHJhd0Zvcm1hdDogJ2FwcGxpY2F0aW9uL2pzb24nLA0KICAgICAgYWN0aXZlUmVxdWVzdFRhYjogJ3BhcmFtcycsIC8vIOaWsOWinu+8muW9k+WJjea/gOa0u+eahOivt+axguagh+etvumhtQ0KICAgICAgcmVxdWVzdEhlYWRlcnM6IFsgLy8g5paw5aKe77ya6K+35rGC5aS05Y+C5pWwDQogICAgICAgIHtrZXk6ICcnLCB2YWx1ZTogJyd9DQogICAgICBdLA0KICAgICAgYm9keVBhcmFtczogWyAvLyDmlrDlop7vvJror7fmsYLkvZPlj4LmlbANCiAgICAgICAge2tleTogJycsIHZhbHVlOiAnJ30NCiAgICAgIF0sDQogICAgICByYXdCb2R5OiAnJywgLy8g5paw5aKe77yacmF35qC85byP55qE6K+35rGC5L2T5YaF5a65DQogICAgICAvLyBSZXF1ZXN0IHBhcmFtZXRlcnMNCiAgICAgIHJlcXVlc3RQYXJhbXM6IFsNCiAgICAgICAge2tleTogJycsIHZhbHVlOiAnJywgZGVzY3JpcHRpb246ICcnfQ0KICAgICAgXQ0KICAgIH0NCiAgfSwNCiAgY29tcHV0ZWQ6IHsNCiAgICBzaG93Qm9keUZvcm1hdFNlbGVjdG9yKCkgew0KICAgICAgLy8g5YWB6K645bimYm9keeeahEhUVFDmlrnms5UNCiAgICAgIHJldHVybiBbJ1BPU1QnLCAnUFVUJywgJ1BBVENIJywgJ0RFTEVURSddLmluY2x1ZGVzKHRoaXMucmVxdWVzdE1ldGhvZD8udG9VcHBlckNhc2UoKSkNCiAgICB9LA0KICAgIC8vIOmFjee9ruWIl+ihqOaOpeWPo+aWueazle+8m+WPquaciemFjee9ruS6huivpeiuoeeul+WxnuaAp+aJjeS8muaJp+ihjHRhYmxlIG1peGluc+S4reeahGdldERhdGHmlrnms5UNCiAgICBkYXRhTWV0aG9kKCkgew0KICAgICAgcmV0dXJuIEFQSS50cmVlcXVlcnlUYWJsZQ0KICAgIH0sDQogICAgZm9ybWF0dGVkUmVzcG9uc2UoKSB7DQogICAgICBpZiAoIXRoaXMucmVzcG9uc2VEYXRhKSByZXR1cm4gJycNCiAgICAgIHRyeSB7DQogICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShKU09OLnBhcnNlKHRoaXMucmVzcG9uc2VEYXRhKSwgbnVsbCwgMikNCiAgICAgIH0gY2F0Y2ggKGUpIHsNCiAgICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2VEYXRhDQogICAgICB9DQogICAgfSwNCiAgICBzdGF0dXNDbGFzcygpIHsNCiAgICAgIGlmICghdGhpcy5yZXNwb25zZVN0YXR1cykgcmV0dXJuICcnDQogICAgICBjb25zdCBjb2RlID0gcGFyc2VJbnQodGhpcy5yZXNwb25zZVN0YXR1cykNCiAgICAgIGlmIChjb2RlID49IDIwMCAmJiBjb2RlIDwgMzAwKSByZXR1cm4gJ3N1Y2Nlc3MnDQogICAgICBpZiAoY29kZSA+PSAzMDAgJiYgY29kZSA8IDQwMCkgcmV0dXJuICdyZWRpcmVjdCcNCiAgICAgIGlmIChjb2RlID49IDQwMCAmJiBjb2RlIDwgNTAwKSByZXR1cm4gJ2NsaWVudC1lcnJvcicNCiAgICAgIGlmIChjb2RlID49IDUwMCkgcmV0dXJuICdzZXJ2ZXItZXJyb3InDQogICAgICByZXR1cm4gJycNCiAgICB9DQogIH0sDQogIG1ldGhvZHM6IHsNCiAgICAvLyBhcGlNb2Rl5qCH562+6aKc6ImyDQogICAgZGV0ZXJtaW5lVGFnVHlwZShhcGlNb2RlKSB7DQogICAgICByZXR1cm4gYXBpTW9kZSA9PT0gJ0dFVCcgPyAnJyA6ICd3YXJuaW5nJw0KICAgIH0sDQogICAgLy8g5qCRDQogICAgYXN5bmMgZ2V0VHJlZU5vZGVzKCkgew0KICAgICAgY29uc3Qge3ZhbHVlID0gW119ID0gYXdhaXQgQVBJLnRyZWVBY3Rpb24oKQ0KICAgICAgdGhpcy5kZWZhdWx0RXhwYW5kZWRLZXlzID0gW3ZhbHVlPy5bMF0uaWQgfHwgJyddDQogICAgICByZXR1cm4ge2RhdGE6IHZhbHVlIHx8IFtdfQ0KICAgIH0sDQogICAgcmVsb2FkVHJlZSgpIHsNCiAgICAgIHRoaXMuJHJlZnMuYXBwQXN5bmNUcmVlLmdldFRyZWVEYXRhKCkNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIEBkZXNjcmlwdGlvbjogdHJlZUFjdGlvbnPmlK/mjIHlh73mlbDkuZ/mlK/mjIHmlbDnu4TvvIznlLHkuo7lrp7pmYXlnLrmma/lvZPkuK0g5Y+v6IO95Lya5Yqo5oCB6K6+572u5oyJ6ZKu77yM5pWF5Lul5Ye95pWw56S65L6L5p2l5bGV56S6DQogICAgICogQHBhcmFtIHsqfSBkYXRhIOW9k+WJjeeCueWHu+iKgueCueaVsOaNrg0KICAgICAqIEByZXR1cm4geyp9IOW9k+WJjeiKgueCueWxleekuueahOaTjeS9nOmhueaVsOe7hA0KICAgICAqLw0KICAgIHRyZWVBY3Rpb25zKGRhdGEpIHsNCiAgICAgIC8vIOagueiKgueCueWIpOaWreaWueW8j+S7peS4muWKoeS4uuWHhu+8jOatpOWkhOS7heS4uuekuuS+iw0KICAgICAgcmV0dXJuIFsNCiAgICAgICAge2xhYmVsOiAn5re75YqgJywgdHlwZTogJ2FkZCcsIG1ldGhvZDogdGhpcy5hZGROb2RlfSwNCiAgICAgICAge2xhYmVsOiAn57yW6L6RJywgdHlwZTogJ2VkaXQnLCBtZXRob2Q6IHRoaXMuZWRpdE5vZGV9LA0KICAgICAgICB7bGFiZWw6ICfliKDpmaQnLCB0eXBlOiAnZGVsZXRlJywgbWV0aG9kOiB0aGlzLmRlbE5vZGV9DQogICAgICBdDQogICAgfSwNCiAgICBvblRyZWVOb2RlQ2xpY2sobm9kZSkgew0KICAgICAgdGhpcy50cmVlSWQgPSBub2RlLmlkDQogICAgICAvLyDmnoTlu7rmn6Xor6Llj4LmlbDlr7nosaHvvIzmjInnhafkvaDmj5DkvpvnmoTmoLzlvI/npLrkvosNCiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gew0KICAgICAgICBncm91cFJlbGF0aW9uOiAnQU5EJywNCiAgICAgICAgZ3JvdXBUcmVlOiB7fSwNCiAgICAgICAgcGFyYW1zOiB7fSwNCiAgICAgICAgcXVlcnlzOiBbDQogICAgICAgICAgew0KICAgICAgICAgICAgZ3JvdXA6ICdtYWluJywNCiAgICAgICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywNCiAgICAgICAgICAgIHBhcmVudEdyb3VwOiAnJywNCiAgICAgICAgICAgIHByb3BlcnR5OiAnJywNCiAgICAgICAgICAgIHJlbGF0aW9uOiAnQU5EJywNCiAgICAgICAgICAgIHZhbHVlOiB7fQ0KICAgICAgICAgIH0sDQogICAgICAgICAgew0KICAgICAgICAgICAgZ3JvdXA6ICdtYWluJywNCiAgICAgICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywNCiAgICAgICAgICAgIHBhcmVudEdyb3VwOiAnJywNCiAgICAgICAgICAgIHByb3BlcnR5OiAnY2F0YWxvZ0lkJywNCiAgICAgICAgICAgIHJlbGF0aW9uOiAnQU5EJywNCiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnRyZWVJZA0KICAgICAgICAgIH0NCiAgICAgICAgXSwNCiAgICAgICAgc29ydGVyOiBbDQogICAgICAgICAgew0KICAgICAgICAgICAgZGlyZWN0aW9uOiAnQVNDJywNCiAgICAgICAgICAgIHByb3BlcnR5OiAnJw0KICAgICAgICAgIH0NCiAgICAgICAgXQ0KICAgICAgfQ0KICAgICAgaWYgKG5vZGUuaWQgPT09IHRoaXMuY3VyTm9kZT8uaWQpIHJldHVybg0KICAgICAgdGhpcy5kZXB0TmFtZSA9IG5vZGUubGFiZWwNCiAgICAgIHRoaXMuY3VyTm9kZSA9IHsuLi5ub2RlfQ0KICAgICAgdGhpcy5mb3JtID0gdGhpcy4kb3B0aW9ucy5kYXRhKCkuZm9ybQ0KICAgICAgdGhpcy5nZXREYXRhKHF1ZXJ5UGFyYW1zKQ0KICAgIH0sDQogICAgLy8g55uu5b2V5paw5aKeDQogICAgYXN5bmMgYWRkTm9kZShwYXJhbXMsIG5vZGUpIHsNCiAgICAgIGNvbnN0IHtjb2RlLCBuYW1lfSA9IHBhcmFtcw0KICAgICAgY29uc3Qge2lkfSA9IG5vZGUNCiAgICAgIGNvbnN0IG5ld05vZGUgPSB7DQogICAgICAgIGNvZGUsDQogICAgICAgIG5hbWUsDQogICAgICAgIHBhcmVudElkOiBpZA0KICAgICAgfQ0KICAgICAgdHJ5IHsNCiAgICAgICAgY29uc3Qge3N0YXRlLCBtZXNzYWdlfSA9IGF3YWl0IEFQSS5hZGRBUElUcmVlKG5ld05vZGUpDQogICAgICAgIGlmIChzdGF0ZSkgew0KICAgICAgICAgIHRoaXMucmVsb2FkVHJlZSgpDQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCfmt7vliqDotYTmupDnm67lvZXmiJDlip/vvIEnKQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZyhtZXNzYWdlIHx8ICfmt7vliqDmjqXlj6Pnm67lvZXlpLHotKXvvIEnKQ0KICAgICAgICB9DQogICAgICB9IGNhdGNoIChlcnIpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKGVyciB8fCAn5re75Yqg5o6l5Y+j55uu5b2V5aSx6LSl77yBJykNCiAgICAgIH0NCiAgICB9LA0KICAgIC8vIOebruW9lee8lui+kQ0KICAgIGFzeW5jIGVkaXROb2RlKHBhcmFtcykgew0KICAgICAgY29uc3Qge2NvZGUsIG5hbWUsIHBhcmVudElkLCBpZH0gPSBwYXJhbXMNCiAgICAgIGNvbnN0IG5ld05vZGUgPSB7DQogICAgICAgIGNvZGUsDQogICAgICAgIG5hbWUsDQogICAgICAgIGlkLA0KICAgICAgICBwYXJlbnRJZA0KICAgICAgfQ0KICAgICAgdHJ5IHsNCiAgICAgICAgY29uc3Qge3N0YXRlLCBtZXNzYWdlfSA9IGF3YWl0IEFQSS5lZGl0QVBJVHJlZShuZXdOb2RlKQ0KICAgICAgICBpZiAoc3RhdGUpIHsNCiAgICAgICAgICB0aGlzLnJlbG9hZFRyZWUoKQ0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn57yW6L6R6LWE5rqQ55uu5b2V5oiQ5Yqf77yBJykNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcobWVzc2FnZSB8fCAn57yW6L6R5o6l5Y+j55uu5b2V5aSx6LSl77yBJykNCiAgICAgICAgfQ0KICAgICAgfSBjYXRjaCAoZXJyKSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZyhlcnIgfHwgJ+e8lui+keaOpeWPo+ebruW9leWksei0pe+8gScpDQogICAgICB9DQogICAgfSwNCiAgICAvLyDnm67lvZXliKDpmaQNCiAgICBhc3luYyBkZWxOb2RlKHBhcmFtcywgbm9kZSkgew0KICAgICAgdHJ5IHsNCiAgICAgICAgY29uc3Qge3N0YXRlLCBtZXNzYWdlfSA9IGF3YWl0IEFQSS5yZW1vdmVBUElUcmVlKG5vZGUuaWQpDQogICAgICAgIGlmIChzdGF0ZSkgew0KICAgICAgICAgIHRoaXMucmVsb2FkVHJlZSgpDQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCfliKDpmaTotYTmupDnm67lvZXmiJDlip/vvIEnKQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZyhtZXNzYWdlIHx8ICfliKDpmaTmjqXlj6Pnm67lvZXlpLHotKXvvIEnKQ0KICAgICAgICB9DQogICAgICB9IGNhdGNoIChlcnIpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKGVyciB8fCAn5Yig6Zmk6LWE5o6l5Y+j55uu5b2V5aSx6LSl77yBJykNCiAgICAgIH0NCiAgICB9LA0KICAgIC8vIHRhYmxl5YiX6KGo5paw5aKeDQogICAgYWRkRGF0YSgpIHsNCiAgICAgIHRoaXMuYWRkVGl0bGUgPSAn5paw5aKeQVBJ5o6l5Y+jJw0KICAgICAgdGhpcy5kaWFsb2dkRGF0YSA9IHsNCiAgICAgICAgY2F0YWxvZ0lkOiB0aGlzLmN1ck5vZGUuaWQNCiAgICAgIH0NCiAgICAgIHRoaXMuYWRkVmlzaWJsZSA9IHRydWUNCiAgICB9LA0KICAgIC8vIOWkhOeQhuWPjOWHu+S6i+S7tg0KICAgIGhhbmRsZVJvd0RibENsaWNrKHJvdykgew0KICAgICAgY29uc29sZS5sb2cocm93LCAnNzc3Nzc3NzQ0JykNCiAgICAgIGlmIChyb3cuc3RhdHVzID09PSAnMScpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCflj6rmnInkuIvmnrbnmoTmjqXlj6PmiY3og73nvJbovpHvvIEnKQ0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIHRoaXMuZWRpdERhdGEocm93KQ0KICAgIH0sDQogICAgLy8gdGFibGXliJfooajnvJbovpENCiAgICBlZGl0RGF0YShyb3cpIHsNCiAgICAgIGlmIChyb3cuc3RhdHVzID09PSAnMScpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCflj6rmnInkuIvmnrbnmoTmjqXlj6PmiY3og73nvJbovpHvvIEnKQ0KICAgICAgICByZXR1cm4gLy8g55u05o6l6L+U5Zue77yM5LiN5omn6KGM5ZCO57ut6YC76L6RDQogICAgICB9DQogICAgICB0aGlzLmRldGFpbFRpdGxlID0gYOe8lui+kSAtICR7cm93LmFwaU5hbWV9YA0KICAgICAgdGhpcy5kaWFsb2dkRGF0YSA9IHJvdw0KICAgICAgdGhpcy5kZXRhaWxWaXNpYmxlID0gdHJ1ZQ0KICAgIH0sDQogICAgLy8gdGFibGXliJfooajliKDpmaQNCiAgICBkZWxBcGkocm93KSB7DQogICAgICB0aGlzLiRjb25maXJtKGDmraTmk43kvZzlsIbmsLjkuYXliKDpmaTor6XmjqXlj6PpobnvvIgke3Jvdy5hcGlOYW1lfe+8iSwg5piv5ZCm57un57utP2AsICfmj5DnpLonLCB7DQogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywNCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsDQogICAgICAgIHR5cGU6ICd3YXJuaW5nJw0KICAgICAgfSkNCiAgICAgICAgLnRoZW4oYXN5bmMgKCkgPT4gew0KICAgICAgICAgIGF3YWl0IEFQSS5kZWxBcGlEYXRhKHJvdy5pZCkNCiAgICAgICAgICB0aGlzLmdldERhdGEoKQ0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn5Yig6Zmk5oiQ5YqfJykNCiAgICAgICAgICAvLyDmib7liLDopoHliKDpmaTnmoTmlbDmja7lnKh0YWJsZURhdGHkuK3nmoTntKLlvJUNCiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudGFibGVEYXRhLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gcm93LmlkKQ0KICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHsNCiAgICAgICAgICAgIC8vIOS7jnRhYmxlRGF0YeaVsOe7hOS4reWIoOmZpOWvueW6lOeahOaVsOaNrg0KICAgICAgICAgICAgdGhpcy50YWJsZURhdGEuc3BsaWNlKGluZGV4LCAxKQ0KICAgICAgICAgIH0NCiAgICAgICAgfSkNCiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gew0KICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WIoOmZpOaVsOaNruWksei0pTonLCBlcnJvcikNCiAgICAgICAgfSkNCiAgICB9LA0KICAgIG9uQmVmb3JlR2V0RGF0YShxdWVyeVBhcmFtcywgZm9ybURhdGEpIHsNCiAgICAgIHRoaXMuc2V0RmlsdGVyVmFsdWUodGhpcy5xdWVyeVBhcmFtcywgdGhpcy5kZWZhdWx0RmlsdGVyLCAnY2F0YWxvZ0lkJywgdGhpcy5jdXJOb2RlLmlkKQ0KICAgIH0sDQogICAgLy8g5paw5aKe56Gu5a6a5oyJ6ZKuDQogICAgb25Db25maXJtKGRhdGEsIHBEYXRhKSB7DQogICAgICB0aGlzLmdldERhdGEoKQ0KICAgIH0sDQoNCiAgICAvLyDmn6XnnIvml6Xlv5fmjInpkq4NCiAgICBzZXJ2aWNlc2hvdyhyb3cpIHsNCiAgICAgIHRoaXMuZGlhbG9nU2VydmljZVRpdGxlID0gYOafpeeci+aXpeW/ly0gJHtyb3cuYXBpTmFtZX1gDQogICAgICB0aGlzLmN1cnJlbnRSb3cgPSByb3cNCiAgICAgIGNvbnN0IHJvd0lkID0gcm93LmlkIC8vIOiOt+WPluW9k+WJjeihjOeahGlkDQogICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UgPSB0cnVlDQogICAgICB0aGlzLiRyZWZzLlNlcnZpY2VEaWFsb2cuaW5pdERhdGEoe2lkOiByb3dJZH0pIC8vIOWwhmlk5Lyg6YCS57uZU2VydmljZURpYWxvZ+e7hOS7tg0KICAgIH0sDQogICAgLy8g5o6l5Y+j5paH5qGj5p+l55yLDQogICAgZGV0YWlsc3Nob3cocm93KSB7DQogICAgICBjb25zb2xlLmxvZyhyb3csICc5OTk5OTk5OScpDQogICAgICB0aGlzLmRpYWxvZ0RldGFpbHNUaXRsZSA9IGDmjqXlj6Por6bmg4UtICR7cm93LmFwaU5hbWV9YA0KICAgICAgdGhpcy5jdXJyZW50Um93YSA9IHJvdw0KICAgICAgdGhpcy5kaWFsb2dEZXRhaWxzID0gdHJ1ZQ0KICAgIH0sDQogICAgLy8g5Y+R5biDDQogICAgYXN5bmMgcHVibGlzaFRhYmxlKGRhdGEpIHsNCiAgICAgIGNvbnN0IGlzUHVibGlzaGVkID0gZGF0YS5zdGF0dXMgPT09ICcxJyAvLyDliKTmlq3lvZPliY3nirbmgIHmmK/lkKblt7Llj5HluIMNCiAgICAgIGNvbnN0IGFjdGlvbiA9IGlzUHVibGlzaGVkID8gJ+S4i+aeticgOiAn5Y+R5biDJw0KICAgICAgLy8gY29uc3QgYXBpTWV0aG9kID0gaXNQdWJsaXNoZWQgPyBBUEkuVGFrZW9mZkFQSSA6IEFQSS5wdWJsaXNoQVBJDQogICAgICB0aGlzLiRjb25maXJtKGDmraTmk43kvZzlsIYke2FjdGlvbn3mjqXlj6PvvIgke2RhdGEuYXBpTmFtZX3vvInvvIzmmK/lkKbnu6fnu63vvJ9gLCAn5o+Q56S6Jywgew0KICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsDQogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLA0KICAgICAgICB0eXBlOiAnd2FybmluZycNCiAgICAgIH0pDQogICAgICAgIC50aGVuKGFzeW5jICgpID0+IHsNCiAgICAgICAgICAvLyBkYXRhLnN0YXR1cyA9ICcxJw0KICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICB0aGlzLnRhYmxlTG9hZGluZyA9IHRydWUNCiAgICAgICAgICAgIC8vIGNvbnN0IHtzdGF0ZSwgbWVzc2FnZX0gPSBhd2FpdCBhcGlNZXRob2QoZGF0YSkgLy/liqjmgIHosIPnlKjmjqXlj6MNCiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCkNCiAgICAgICAgICAgIHBheWxvYWQuYXBwZW5kKCdpZCcsIGRhdGEuaWQpDQogICAgICAgICAgICAvLyDliJvlu7rlj6rljIXlkKtpZOeahEZvcm1EYXRhDQogICAgICAgICAgICAvLyBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpDQogICAgICAgICAgICAvLyBmb3JtRGF0YS5hcHBlbmQoJ2lkJywgZGF0YS5pZCkNCg0KICAgICAgICAgICAgLy8g5qC55o2u54q25oCB6LCD55So5LiN5ZCM5o6l5Y+jDQogICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGlzUHVibGlzaGVkDQogICAgICAgICAgICAgID8gYXdhaXQgQVBJLlRha2VvZmZBUEkocGF5bG9hZCkNCiAgICAgICAgICAgICAgOiBhd2FpdCBBUEkucHVibGlzaEFQSShwYXlsb2FkKQ0KDQogICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdGUpIHsNCiAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCkNCiAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKGDmjqXlj6Mke2FjdGlvbn3miJDlip/vvIFgKQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWRpbmcgPSBmYWxzZQ0KICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcocmVzcG9uc2UubWVzc2FnZSB8fCBg5o6l5Y+jJHthY3Rpb2595aSx6LSl77yBYCkNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9IGNhdGNoIChlcnIpIHsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZyhlcnIgfHwgYOaOpeWPoyR7YWN0aW9ufeWksei0pe+8gWApDQogICAgICAgICAgfQ0KICAgICAgICB9KQ0KICAgICAgICAuY2F0Y2goKCkgPT4gew0KICAgICAgICB9KQ0KICAgIH0sDQogICAgLy8g5rWL6K+V5oyJ6ZKuDQogICAgc2hvd0RyYXdlcihyb3cpIHsNCiAgICAgIHRoaXMuY3VycmVudFJvdyA9IHJvdw0KICAgICAgdGhpcy5kcmF3ZXJWaXNpYmxlID0gdHJ1ZQ0KICAgICAgdGhpcy5yZXF1ZXN0TWV0aG9kID0gcm93LmFwaU1vZGUudG9VcHBlckNhc2UoKQ0KICAgICAgLy8g5ZyoYXBpVXJs5YmN6Z2i5Yqg5LiK6K+35rGC5aS0aHR0cHM6Ly84MDgwDQogICAgICAvLyB0aGlzLnJlcXVlc3RVcmwgPSBgaHR0cDovLzEyMC40Ni4xNS4xNjU6OTE2NiR7cm93LmFwaVVybH1gOw0KICAgICAgLy8gdGhpcy5yZXF1ZXN0VXJsID0gYGh0dHA6Ly8xMC4zMS4yNDMuMTgyOjkxNTcke3Jvdy5hcGlVcmx9YDsvL+acrOWcsOeOr+Wigw0KICAgICAgdGhpcy5yZXF1ZXN0VXJsID0gd2luZG93LmNvbnRleHQuZGF0YUFwaSArIHJvdy5hcGlVcmwvLyDmraPlvI/njq/looMNCiAgICAgIHRoaXMuaXNVcmxEaXNhYmxlZCA9IHRydWUvLyDnpoHnlKhyZXF1ZXN0VXJs6L6T5YWl5qGGDQogICAgICB0aGlzLmlzTWV0aG9kRGlzYWJsZWQgPSB0cnVlIC8vIOemgeeUqHJlcXVlc3RNZXRob2TpgInmi6nmoYYNCiAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gbnVsbA0KICAgICAgdGhpcy5yZXNwb25zZVN0YXR1cyA9IG51bGwNCiAgICAgIHRoaXMucmVzcG9uc2VUaW1lID0gbnVsbA0KICAgICAgdGhpcy5yZXNwb25zZUhlYWRlcnMgPSBbXQ0KICAgICAgdGhpcy5yZXNwb25zZUNvb2tpZXMgPSBbXQ0KICAgICAgdGhpcy5yZXF1ZXN0UGFyYW1zID0gW3trZXk6ICcnLCB2YWx1ZTogJyd9XQ0KICAgICAgLy8gdGhpcy5ib2R5Rm9ybWF0ID0gJ3Jhdyc7IC8vIOmHjee9ruS4um5vbmUNCiAgICAgIC8vIOagueaNruivt+axguaWueazleiuvue9rum7mOiupOa/gOa0u+eahOagh+etvumhteWSjGJvZHlGb3JtYXQNCiAgICAgIGlmICh0aGlzLnJlcXVlc3RNZXRob2QudG9Mb3dlckNhc2UoKSA9PT0gJ2dldCcpIHsNCiAgICAgICAgdGhpcy5hY3RpdmVSZXF1ZXN0VGFiID0gJ3BhcmFtcycNCiAgICAgICAgdGhpcy5ib2R5Rm9ybWF0ID0gJ25vbmUnDQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLmFjdGl2ZVJlcXVlc3RUYWIgPSAnYm9keScNCiAgICAgICAgdGhpcy5ib2R5Rm9ybWF0ID0gJ3JhdycNCiAgICAgIH0NCiAgICAgIHRoaXMuYm9keVBhcmFtcyA9IFt7a2V5OiAnJywgdmFsdWU6ICcnfV0gLy8g6YeN572u5Y+C5pWwDQogICAgICB0aGlzLnJhd0JvZHkgPSAnJyAvLyDmuIXnqbpyYXcgYm9keQ0KICAgIH0sDQogICAgaGFuZGxlQm9keUZvcm1hdENoYW5nZSh2YWwpIHsNCiAgICAgIC8vIOW9k2JvZHnmoLzlvI/mlLnlj5jml7blj6/ku6XmiafooYzkuIDkupvpgLvovpENCiAgICAgIGNvbnNvbGUubG9nKCdCb2R5IGZvcm1hdCBjaGFuZ2VkIHRvOicsIHZhbCkgLy8g5omT5Y2w54K55Ye755qE5Y2V6YCJ5qGGDQoNCiAgICAgIC8vIOWmguaenOWIh+aNouWIsG5vbmXvvIzlj6/ku6XmuIXnqbrnm7jlhbPmlbDmja4NCiAgICAgIGlmICh2YWwgPT09ICdub25lJykgew0KICAgICAgICB0aGlzLmJvZHlQYXJhbXMgPSBbe2tleTogJycsIHZhbHVlOiAnJ31dDQogICAgICAgIHRoaXMucmF3Qm9keSA9ICcnDQogICAgICB9DQoNCiAgICAgIC8vIOWmguaenOWIh+aNouWIsGZvcm0tZGF0YeaIlngtd3d3LWZvcm0tdXJsZW5jb2RlZO+8jOehruS/neiHs+WwkeacieS4gOS4quWPguaVsA0KICAgICAgaWYgKHZhbCA9PT0gJ2Zvcm0tZGF0YScgfHwgdmFsID09PSAneC13d3ctZm9ybS11cmxlbmNvZGVkJykgew0KICAgICAgICBpZiAodGhpcy5ib2R5UGFyYW1zLmxlbmd0aCA9PT0gMCkgew0KICAgICAgICAgIHRoaXMuYm9keVBhcmFtcyA9IFt7a2V5OiAnJywgdmFsdWU6ICcnfV0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0sDQogICAgYWRkUGFyYW0oKSB7DQogICAgICB0aGlzLnJlcXVlc3RQYXJhbXMucHVzaCh7a2V5OiAnJywgdmFsdWU6ICcnLCBkZXNjcmlwdGlvbjogJyd9KQ0KICAgIH0sDQoNCiAgICByZW1vdmVQYXJhbShpbmRleCkgew0KICAgICAgdGhpcy5yZXF1ZXN0UGFyYW1zLnNwbGljZShpbmRleCwgMSkNCiAgICB9LA0KICAgIC8vIOaWsOWinu+8mua3u+WKoOivt+axguWktA0KICAgIGFkZEhlYWRlcigpIHsNCiAgICAgIHRoaXMucmVxdWVzdEhlYWRlcnMucHVzaCh7a2V5OiAnJywgdmFsdWU6ICcnfSkNCiAgICB9LA0KDQogICAgLy8g5paw5aKe77ya5Yig6Zmk6K+35rGC5aS0DQogICAgcmVtb3ZlSGVhZGVyKGluZGV4KSB7DQogICAgICB0aGlzLnJlcXVlc3RIZWFkZXJzLnNwbGljZShpbmRleCwgMSkNCiAgICB9LA0KDQogICAgLy8g5paw5aKe77ya5re75Yqg6K+35rGC5L2T5Y+C5pWwDQogICAgYWRkQm9keVBhcmFtKCkgew0KICAgICAgdGhpcy5ib2R5UGFyYW1zLnB1c2goe2tleTogJycsIHZhbHVlOiAnJ30pDQogICAgfSwNCiAgICAvLyDmlrDlop7vvJrliKDpmaTor7fmsYLkvZPlj4LmlbANCiAgICByZW1vdmVCb2R5UGFyYW0oaW5kZXgpIHsNCiAgICAgIHRoaXMuYm9keVBhcmFtcy5zcGxpY2UoaW5kZXgsIDEpDQogICAgfSwNCiAgICAvLyBj5rWL6K+V5oyJ6ZKu5Y+R6YCBDQogICAgLy8gY+a1i+ivleaMiemSruWPkemAgQ0KICAgIGFzeW5jIHNlbmRSZXF1ZXN0KCkgew0KICAgICAgaWYgKCF0aGlzLnJlcXVlc3RVcmwpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7fovpPlhaXor7fmsYJVUkwnKQ0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCg0KICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKQ0KICAgICAgY29uc3QgY29uZmlnID0gew0KICAgICAgICBtZXRob2Q6IHRoaXMucmVxdWVzdE1ldGhvZC50b0xvd2VyQ2FzZSgpLA0KICAgICAgICB1cmw6IHRoaXMucmVxdWVzdFVybCwNCiAgICAgICAgaGVhZGVyczoge30sDQogICAgICAgIHdpdGhDcmVkZW50aWFsczogZmFsc2UgLy8g5L+u5pS55Li6ZmFsc2XvvIzpmaTpnZ7kvaDpnIDopoHlj5HpgIFjb29raWVzDQogICAgICB9DQogICAgICAvLyDlpITnkIbor7fmsYLlpLQNCiAgICAgIHRoaXMucmVxdWVzdEhlYWRlcnMuZm9yRWFjaChoZWFkZXIgPT4gew0KICAgICAgICBpZiAoaGVhZGVyLmtleSkgew0KICAgICAgICAgIGNvbmZpZy5oZWFkZXJzW2hlYWRlci5rZXldID0gaGVhZGVyLnZhbHVlDQogICAgICAgIH0NCiAgICAgIH0pDQogICAgICB0cnkgew0KICAgICAgICAvLyDmoLnmja7or7fmsYLmlrnms5XlhrPlrprlpoLkvZXlpITnkIblj4LmlbANCiAgICAgICAgaWYgKFsncG9zdCcsICdwdXQnLCAncGF0Y2gnLCAnZGVsZXRlJ10uaW5jbHVkZXModGhpcy5yZXF1ZXN0TWV0aG9kLnRvTG93ZXJDYXNlKCkpKSB7DQogICAgICAgICAgLy8g5Y+v5Lul5bimYm9keeeahOivt+axguaWueazlQ0KICAgICAgICAgIGlmICh0aGlzLmJvZHlGb3JtYXQgPT09ICdmb3JtLWRhdGEnKSB7DQogICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpDQogICAgICAgICAgICB0aGlzLmJvZHlQYXJhbXMuZm9yRWFjaChwYXJhbSA9PiB7DQogICAgICAgICAgICAgIGlmIChwYXJhbS5rZXkpIGZvcm1EYXRhLmFwcGVuZChwYXJhbS5rZXksIHBhcmFtLnZhbHVlKQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgICAgIGNvbmZpZy5kYXRhID0gZm9ybURhdGENCiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYm9keUZvcm1hdCA9PT0gJ3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpIHsNCiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKQ0KICAgICAgICAgICAgdGhpcy5ib2R5UGFyYW1zLmZvckVhY2gocGFyYW0gPT4gew0KICAgICAgICAgICAgICBpZiAocGFyYW0ua2V5KSBwYXJhbXMuYXBwZW5kKHBhcmFtLmtleSwgcGFyYW0udmFsdWUpDQogICAgICAgICAgICB9KQ0KICAgICAgICAgICAgY29uZmlnLmRhdGEgPSBwYXJhbXMNCiAgICAgICAgICAgIGNvbmZpZy5oZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnDQogICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmJvZHlGb3JtYXQgPT09ICdyYXcnKSB7DQogICAgICAgICAgICBjb25maWcuZGF0YSA9IHRoaXMucmF3Qm9keQ0KICAgICAgICAgICAgY29uZmlnLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gdGhpcy5yYXdGb3JtYXQNCiAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgLy8gR0VUL0hFQUTnrYnor7fmsYLvvIzlj4LmlbDkvZzkuLrmn6Xor6Llj4LmlbANCiAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7fQ0KICAgICAgICAgIHRoaXMucmVxdWVzdFBhcmFtcy5mb3JFYWNoKHBhcmFtID0+IHsNCiAgICAgICAgICAgIGlmIChwYXJhbS5rZXkgJiYgcGFyYW0udmFsdWUpIHsNCiAgICAgICAgICAgICAgcGFyYW1zW3BhcmFtLmtleV0gPSBwYXJhbS52YWx1ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0pDQogICAgICAgICAgY29uZmlnLnBhcmFtcyA9IHBhcmFtcw0KICAgICAgICB9DQoNCiAgICAgICAgY29uc29sZS5sb2coJ1NlbmRpbmcgcmVxdWVzdCB3aXRoIGNvbmZpZzonLCBjb25maWcpLy8g5q2k5aSE5omT5Y2w5LqG5pa55byP77yM5Zyw5Z2ADQogICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MoY29uZmlnKQ0KICAgICAgICBjb25zdCByZXNwb25zZVRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lDQoNCiAgICAgICAgLy8g5aSE55CG5ZON5bqULi4uDQogICAgICAgIHRoaXMucmVzcG9uc2VTdGF0dXMgPSByZXNwb25zZS5zdGF0dXMNCiAgICAgICAgdGhpcy5yZXNwb25zZVRpbWUgPSByZXNwb25zZVRpbWUNCiAgICAgICAgdGhpcy5yZXNwb25zZUhlYWRlcnMgPSBbXQ0KDQogICAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3BvbnNlLmhlYWRlcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gew0KICAgICAgICAgIHRoaXMucmVzcG9uc2VIZWFkZXJzLnB1c2goe2tleSwgdmFsdWV9KQ0KICAgICAgICB9KQ0KDQogICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gcmVzcG9uc2UuZGF0YQ0KICAgICAgICB0aGlzLnByb2Nlc3NDb29raWVzKHJlc3BvbnNlKQ0KICAgICAgfSBjYXRjaCAoZXJyb3IpIHsNCiAgICAgICAgaWYgKGVycm9yLnJlc3BvbnNlKSB7DQogICAgICAgICAgdGhpcy5yZXNwb25zZVN0YXR1cyA9IGVycm9yLnJlc3BvbnNlLnN0YXR1cw0KICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gZXJyb3IucmVzcG9uc2UuZGF0YQ0KICAgICAgICB9IGVsc2UgaWYgKGVycm9yLnJlcXVlc3QpIHsNCiAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9ICfor7fmsYLlh7rplJk6IOayoeacieaUtuWIsOWTjeW6lCcNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IGDor7fmsYLlh7rplJk6ICR7ZXJyb3IubWVzc2FnZX1gDQogICAgICAgIH0NCiAgICAgICAgdGhpcy5yZXNwb25zZVN0YXR1cyA9ICdFcnJvcicNCiAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihg6K+35rGC5aSx6LSlOiAke2Vycm9yLm1lc3NhZ2V9YCkNCiAgICAgIH0NCiAgICB9LA0KDQogICAgcHJvY2Vzc0Nvb2tpZXMocmVzcG9uc2UpIHsNCiAgICAgIHRoaXMucmVzcG9uc2VDb29raWVzID0gW10NCiAgICAgIGNvbnN0IGNvb2tpZUhlYWRlciA9IHJlc3BvbnNlLmhlYWRlcnNbJ3NldC1jb29raWUnXSB8fCAnJw0KDQogICAgICBpZiAoY29va2llSGVhZGVyKSB7DQogICAgICAgIC8vIOWkhOeQhuWkmuS4qiBjb29raWUNCiAgICAgICAgY29uc3QgY29va2llcyA9IEFycmF5LmlzQXJyYXkoY29va2llSGVhZGVyKSA/IGNvb2tpZUhlYWRlciA6IFtjb29raWVIZWFkZXJdDQoNCiAgICAgICAgY29va2llcy5mb3JFYWNoKGNvb2tpZSA9PiB7DQogICAgICAgICAgLy8g5YiG5Ymy5q+P5LiqIGNvb2tpZSDlrZfnrKbkuLINCiAgICAgICAgICBjb25zdCBwYXJ0cyA9IGNvb2tpZS5zcGxpdCgnOycpDQogICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgIGNvbnN0IFtrZXlWYWx1ZV0gPSBwYXJ0c1swXS5zcGxpdCgnPScpDQogICAgICAgICAgICBpZiAoa2V5VmFsdWUpIHsNCiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZUNvb2tpZXMucHVzaCh7a2V5OiBrZXlWYWx1ZS50cmltKCksIHZhbHVlOiBwYXJ0c1swXS5zdWJzdHJpbmcoa2V5VmFsdWUubGVuZ3RoICsgMSl9KQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgfSkNCiAgICAgIH0NCiAgICB9DQogIH0NCn0NCg=="},null]}