{"remainingRequest":"D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\tj_zsj_web\\src\\components\\SuperTableSelectorDialog\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\tj_zsj_web\\src\\components\\SuperTableSelectorDialog\\index.vue","mtime":1741330407584},{"path":"D:\\jenkins\\workspace\\tj_zsj_web\\babel.config.js","mtime":1741330404271},{"path":"D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS90al96c2pfd2ViL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b0NvbnN1bWFibGVBcnJheS5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL3RqX3pzal93ZWIvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC1pbmRleC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZsYXQtbWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5yZWR1Y2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zcGxpY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS51bnNjb3BhYmxlcy5mbGF0LW1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZXZlcnkuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5maW5kLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZmxhdC1tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLnJlZHVjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLnNvbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCgppbXBvcnQgU3VwZXJEaWFsb2cgZnJvbSAnQC9jb21wb25lbnRzL1N1cGVyRGlhbG9nL2luZGV4LnZ1ZSc7CmltcG9ydCB0cmVlU2lkZSBmcm9tICdAL2NvbXBvbmVudHMvdHJlZVNpZGUvaW5kZXgudnVlJzsKaW1wb3J0IHsgc2V0UXVlcnlWYWx1ZSB9IGZyb20gJ0AvdXRpbHMvcmVxdWVzdFdyYXBwZXJzJzsKaW1wb3J0IFNlYXJjaENvbW1vbiBmcm9tICdAL2NvbXBvbmVudHMvU2VhcmNoQ29tbW9uL2luZGV4LnZ1ZSc7CmltcG9ydCBwYWdpbmF0aW9uIGZyb20gJ0AvY29tcG9uZW50cy9TdXBlclBhZ2luYXRpb24vaW5kZXgudnVlJzsKaW1wb3J0IF8gZnJvbSAnbG9kYXNoJzsKaW1wb3J0IHsgVGFibGVNaXhpbiB9IGZyb20gJ0AvbWl4aW5zL3RhYmxlTWl4aW4nOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ1N1cGVyVGFibGVTZWxlY3RvckRpYWxvZycsCiAgaW5oZXJpdEF0dHJzOiBmYWxzZSwKICBtaXhpbnM6IFtUYWJsZU1peGluXSwKICBwcm9wczogewogICAgaXNTaG93OiB7CiAgICAgIGRlZmF1bHQ6IGZhbHNlLAogICAgICB0eXBlOiBCb29sZWFuCiAgICB9LAogICAgc2VsZWN0ZWRDb250ZW50OiB7CiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfSwKICAgICAgdHlwZTogW0FycmF5LCBPYmplY3RdCiAgICB9LAogICAgdG9wOiB7CiAgICAgIGRlZmF1bHQ6ICcxNHZoJywKICAgICAgdHlwZTogU3RyaW5nCiAgICB9LAogICAgd2lkdGg6IHsKICAgICAgZGVmYXVsdDogJzgwJScsCiAgICAgIHR5cGU6IFN0cmluZwogICAgfSwKICAgIGhlaWdodDogewogICAgICBkZWZhdWx0OiAnNjV2aCcsCiAgICAgIHR5cGU6IFN0cmluZwogICAgfSwKICAgIGlzU2hvd1RyZWU6IHsKICAgICAgZGVmYXVsdDogdHJ1ZSwKICAgICAgdHlwZTogQm9vbGVhbgogICAgfSwKICAgIHRyZWVPcHRpb25zOiB7CiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICBjaGlsZHJlbjogJ2NoaWxkcmVuJywKICAgICAgICAgIGxhYmVsOiAnbmFtZScKICAgICAgICB9OwogICAgICB9LAogICAgICB0eXBlOiBPYmplY3QKICAgIH0sCiAgICB0cmVlVGFiTGlzdDogewogICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4gW107CiAgICAgIH0sCiAgICAgIHR5cGU6IEFycmF5CiAgICB9LAogICAgdHJlZUFjdGl2ZVRhYk5hbWU6IHsKICAgICAgZGVmYXVsdDogJycsCiAgICAgIHR5cGU6IFN0cmluZwogICAgfSwKICAgIHRyZWVMb2FkaW5nOiB7CiAgICAgIGRlZmF1bHQ6IGZhbHNlLAogICAgICB0eXBlOiBCb29sZWFuCiAgICB9LAogICAgdHJlZUl0ZW06IHsKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIHt9OwogICAgICB9LAogICAgICB0eXBlOiBPYmplY3QKICAgIH0sCiAgICB0YWJsZUxvYWRpbmc6IHsKICAgICAgZGVmYXVsdDogZmFsc2UsCiAgICAgIHR5cGU6IEJvb2xlYW4KICAgIH0sCiAgICB0YWJsZVBhcmFtczogewogICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgcGFnZUJlYW46IHsKICAgICAgICAgICAgcGFnZVNpemU6IDAsCiAgICAgICAgICAgIHBhZ2U6IDAsCiAgICAgICAgICAgIHRvdGFsOiAwCiAgICAgICAgICB9LAogICAgICAgICAgcXVlcnlzOiBbXSwKICAgICAgICAgIHNvcnRlcjogW10KICAgICAgICB9OwogICAgICB9LAogICAgICB0eXBlOiBPYmplY3QKICAgIH0sCiAgICB0YWJsZURhdGE6IHsKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgICB9LAogICAgICB0eXBlOiBBcnJheQogICAgfSwKICAgIHRyZWVEYXRhOiB7CiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfSwKICAgICAgdHlwZTogQXJyYXkKICAgIH0sCiAgICBzZWFyY2hPcHRpb246IHsKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgICB9LAogICAgICB0eXBlOiBBcnJheQogICAgfSwKICAgIHRhYmxlT3B0aW9uczogewogICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4gW107CiAgICAgIH0sCiAgICAgIHR5cGU6IEFycmF5CiAgICB9LAogICAgdHJlZUtleTogewogICAgICBkZWZhdWx0OiAnaWQnLAogICAgICB0eXBlOiBTdHJpbmcKICAgIH0sCiAgICBzZWxlY3RLZXk6IHsKICAgICAgZGVmYXVsdDogJ2lkJywKICAgICAgdHlwZTogU3RyaW5nCiAgICB9LAogICAgc2VsZWN0TGFiZWw6IHsKICAgICAgZGVmYXVsdDogJ25hbWUnLAogICAgICB0eXBlOiBTdHJpbmcKICAgIH0sCiAgICBzZWxlY3RUaXRsZU5hbWU6IHsKICAgICAgZGVmYXVsdDogJ+W3sumAieaLqScsCiAgICAgIHR5cGU6IFN0cmluZwogICAgfSwKICAgIHRyZWVWYWx1ZUtleTogewogICAgICBkZWZhdWx0OiAnJywKICAgICAgdHlwZTogU3RyaW5nCiAgICB9LAogICAgZGVmYXVsdFRyZWVFeHBhbmRMZXZlbDogewogICAgICBkZWZhdWx0OiAtMSwKICAgICAgdHlwZTogTnVtYmVyCiAgICB9LAogICAgaXNTaW5nbGVDaG9pY2U6IHsKICAgICAgZGVmYXVsdDogZmFsc2UsCiAgICAgIHR5cGU6IEJvb2xlYW4KICAgIH0sCiAgICBpc1Nob3dTZWxlY3Q6IHsKICAgICAgZGVmYXVsdDogdHJ1ZSwKICAgICAgdHlwZTogQm9vbGVhbgogICAgfSwKICAgIGlzU2hvd1RhYmxlQ2hlY2tib3g6IHsKICAgICAgZGVmYXVsdDogdHJ1ZSwKICAgICAgdHlwZTogQm9vbGVhbgogICAgfSwKICAgIGNvbmZpcm1DbG9zZURpYWxvZzogewogICAgICBkZWZhdWx0OiB0cnVlLAogICAgICB0eXBlOiBCb29sZWFuCiAgICB9LAogICAgaXNTaG93UGFnaW5hdGlvbjogewogICAgICBkZWZhdWx0OiB0cnVlLAogICAgICB0eXBlOiBCb29sZWFuCiAgICB9LAogICAgaXNTaG93U2VhcmNoOiB7CiAgICAgIGRlZmF1bHQ6IHRydWUsCiAgICAgIHR5cGU6IEJvb2xlYW4KICAgIH0sCiAgICBpc1Nob3dBZGRCdXR0b246IHsKICAgICAgZGVmYXVsdDogZmFsc2UsCiAgICAgIHR5cGU6IEJvb2xlYW4KICAgIH0KICB9LAogIGNvbXBvbmVudHM6IHsKICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb24sCiAgICBTZWFyY2hDb21tb246IFNlYXJjaENvbW1vbiwKICAgIHRyZWVTaWRlOiB0cmVlU2lkZSwKICAgIFN1cGVyRGlhbG9nOiBTdXBlckRpYWxvZwogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIGluaXRpYWxpemVSZW5kZXJpbmc6IGZhbHNlLAogICAgICAvLyDlvLnlsYLlhoXlrrnliJ3lp4vljJbmuLLmn5MKICAgICAgdGFibGVNYXhIZWlnaHQ6ICc2MDBweCcsCiAgICAgIGVuaGFuY2VkVGFibGVEYXRhOiBbXSwKICAgICAgLy8g5aKe5by655qE6KGo5qC85pWw5o2u77yI5aKe5Yqg6aKd5aSW54m55oCn77yJCiAgICAgIGFsbFNlbGVjdGlvbjogW10sCiAgICAgIC8vIOihqOagvOmAieS4rQogICAgICBjaGVja2JveE9wdDogW10sCiAgICAgIC8vIOWkmumAieahhumFjee9ruaVsOe7hAogICAgICBjaGVja2JveFNlbGVjdDogW10sCiAgICAgIC8vIOWkmumAieahhumAieS4rQogICAgICBjaGVja0FsbDogZmFsc2UsCiAgICAgIC8vIOWFqOmAiQogICAgICB0YWJsZUNoZWNrQWxsOiBmYWxzZSwKICAgICAgLy8g6KGo5qC85YWo6YCJCiAgICAgIHRhYmxlSXNJbmRldGVybWluYXRlOiBmYWxzZSwKICAgICAgLy8g6KGo5qC85aSa6YCJ5qGG5LiN56Gu5a6aCiAgICAgIGlzSW5kZXRlcm1pbmF0ZTogZmFsc2UgLy8g5aSa6YCJ5qGG5LiN56Gu5a6aCiAgICB9OwogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIGlzU2hvd0RpYWxvZzogewogICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICByZXR1cm4gdGhpcy5pc1Nob3c7CiAgICAgIH0sCiAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbCkgewogICAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZTppc1Nob3cnLCB2YWwpOwogICAgICB9CiAgICB9CiAgfSwKICB3YXRjaDogewogICAgdHJlZURhdGE6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcigpIHsKICAgICAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgICAgIGlmICghdGhpcy5pc1Nob3dUcmVlKSByZXR1cm47CiAgICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHsKICAgICAgICAgIHZhciBfdGhpcyQkcmVmcyR0cmVlU2lkZSwgX3RoaXMkdHJlZUl0ZW0sIF90aGlzJCRyZWZzJHRyZWVTaWRlMjsKICAgICAgICAgIChfdGhpcyQkcmVmcyR0cmVlU2lkZSA9IF90aGlzLiRyZWZzLnRyZWVTaWRlKSA9PT0gbnVsbCB8fCBfdGhpcyQkcmVmcyR0cmVlU2lkZSA9PT0gdm9pZCAwIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlLnNldEN1cnJlbnRLZXkoKChfdGhpcyR0cmVlSXRlbSA9IF90aGlzLnRyZWVJdGVtKSA9PT0gbnVsbCB8fCBfdGhpcyR0cmVlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkdHJlZUl0ZW1bX3RoaXMudHJlZUtleV0pIHx8ICcnKTsKICAgICAgICAgIChfdGhpcyQkcmVmcyR0cmVlU2lkZTIgPSBfdGhpcy4kcmVmcy50cmVlU2lkZSkgPT09IG51bGwgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUyID09PSB2b2lkIDAgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUyLmV4cGFuZEhhbmRsZSh0cnVlLCBfdGhpcy5kZWZhdWx0VHJlZUV4cGFuZExldmVsKTsKICAgICAgICB9KTsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlCiAgICB9LAogICAgdGFibGVEYXRhOiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoZGF0YSkgewogICAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICAgIHRoaXMuZW5oYW5jZWRUYWJsZURhdGEgPSBkYXRhLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgdmFyIF90aGlzMiRhbGxTZWxlY3Rpb24kZiwgX3RoaXMyJGFsbFNlbGVjdGlvbiRmMjsKICAgICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGl0ZW0pLCB7fSwgewogICAgICAgICAgICBjaGVja2VkOiBfdGhpczIuYWxsU2VsZWN0aW9uLnNvbWUoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgICAgICByZXR1cm4gaVtfdGhpczIuc2VsZWN0S2V5XSA9PT0gaXRlbVtfdGhpczIuc2VsZWN0S2V5XTsKICAgICAgICAgICAgfSksCiAgICAgICAgICAgIGRpc2FibGVkOiAoX3RoaXMyJGFsbFNlbGVjdGlvbiRmID0gKF90aGlzMiRhbGxTZWxlY3Rpb24kZjIgPSBfdGhpczIuYWxsU2VsZWN0aW9uLmZpbmQoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgICAgICByZXR1cm4gaVtfdGhpczIuc2VsZWN0S2V5XSA9PT0gaXRlbVtfdGhpczIuc2VsZWN0S2V5XTsKICAgICAgICAgICAgfSkpID09PSBudWxsIHx8IF90aGlzMiRhbGxTZWxlY3Rpb24kZjIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzMiRhbGxTZWxlY3Rpb24kZjIuZGlzYWJsZWQpICE9PSBudWxsICYmIF90aGlzMiRhbGxTZWxlY3Rpb24kZiAhPT0gdm9pZCAwID8gX3RoaXMyJGFsbFNlbGVjdGlvbiRmIDogZmFsc2UKICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICAgIHRoaXMudGFibGVDaGVja0FsbCA9IHRoaXMuZW5oYW5jZWRUYWJsZURhdGEubGVuZ3RoID8gdGhpcy5lbmhhbmNlZFRhYmxlRGF0YS5ldmVyeShmdW5jdGlvbiAoaSkgewogICAgICAgICAgcmV0dXJuIGkuY2hlY2tlZDsKICAgICAgICB9KSA6IGZhbHNlOwogICAgICAgIHRoaXMudGFibGVJc0luZGV0ZXJtaW5hdGUgPSB0aGlzLmVuaGFuY2VkVGFibGVEYXRhLnNvbWUoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgIHJldHVybiBpLmNoZWNrZWQ7CiAgICAgICAgfSkgJiYgIXRoaXMudGFibGVDaGVja0FsbDsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlLAogICAgICBkZWVwOiB0cnVlCiAgICB9LAogICAgc2VsZWN0ZWRDb250ZW50OiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoZGF0YSkgewogICAgICAgIHZhciBhbGxTZWxlY3Rpb247CiAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVDaG9pY2UpIHsKICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZGF0YSkgPT09ICdbb2JqZWN0IE9iamVjdF0nICYmIE9iamVjdC5rZXlzKGRhdGEpLmxlbmd0aCkgewogICAgICAgICAgICBhbGxTZWxlY3Rpb24gPSBbXy5jbG9uZURlZXAoZGF0YSldIHx8IFtdOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYWxsU2VsZWN0aW9uID0gW107CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGFsbFNlbGVjdGlvbiA9IF8uY2xvbmVEZWVwKGRhdGEpIHx8IFtdOwogICAgICAgIH0KICAgICAgICB0aGlzLmFsbFNlbGVjdGlvbiA9IGFsbFNlbGVjdGlvbi5tYXAoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGkpLCB7fSwgewogICAgICAgICAgICBjaGVja2VkOiB0cnVlCiAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgICB0aGlzLnVwZGF0ZUNoZWNrYm94T3B0KCk7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZSwKICAgICAgZGVlcDogdHJ1ZQogICAgfQogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgdGhpcy4kcm9vdC4kb24oJ3Jlc2l6ZScsIGZ1bmN0aW9uICgpIHsKICAgICAgX3RoaXMzLmNhbGNUYWJsZUhlaWdodCg1MDApOwogICAgfSk7CiAgfSwKICBtZXRob2RzOiB7CiAgICB0cmVlVGFiQ2hhbmdlOiBmdW5jdGlvbiB0cmVlVGFiQ2hhbmdlKHRyZWVBY3RpdmVUYWJOYW1lKSB7CiAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZTp0cmVlQWN0aXZlVGFiTmFtZScsIHRyZWVBY3RpdmVUYWJOYW1lKTsKICAgICAgdGhpcy4kZW1pdCgndHJlZVRhYkNoYW5nZScsIHRyZWVBY3RpdmVUYWJOYW1lKTsKICAgIH0sCiAgICAvLyDmiZPlvIDlvLnlsYLml7bop6blj5EKICAgIG9wZW46IGZ1bmN0aW9uIG9wZW4oKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZVJlbmRlcmluZykgdGhpcy4kZW1pdCgnaW5pdGlhbGl6ZVJlbmRlcmluZycpOwogICAgICB2YXIgYWxsU2VsZWN0aW9uOwogICAgICBpZiAodGhpcy5pc1NpbmdsZUNob2ljZSkgewogICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcy5zZWxlY3RlZENvbnRlbnQpID09PSAnW29iamVjdCBPYmplY3RdJyAmJiBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkQ29udGVudCkubGVuZ3RoKSB7CiAgICAgICAgICBhbGxTZWxlY3Rpb24gPSBbXy5jbG9uZURlZXAodGhpcy5zZWxlY3RlZENvbnRlbnQpXSB8fCBbXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgYWxsU2VsZWN0aW9uID0gW107CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGFsbFNlbGVjdGlvbiA9IF8uY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRDb250ZW50KSB8fCBbXTsKICAgICAgfQogICAgICB0aGlzLmFsbFNlbGVjdGlvbiA9IGFsbFNlbGVjdGlvbi5tYXAoZnVuY3Rpb24gKGkpIHsKICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBpKSwge30sIHsKICAgICAgICAgIGNoZWNrZWQ6IHRydWUKICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIHRoaXMudXBkYXRlQ2hlY2tib3hPcHQoKTsKCiAgICAgIC8vIOWIneWni+WMlummluasoeaJk+W8gOW8ueWxgumAieS4reaViOaenCwKICAgICAgaWYgKHRoaXMuaXNTaG93VHJlZSAmJiAhdGhpcy5pbml0aWFsaXplUmVuZGVyaW5nKSB7CiAgICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHsKICAgICAgICAgIHZhciBfdGhpczQkJHJlZnMkdHJlZVNpZGUsIF90aGlzNCR0cmVlSXRlbSwgX3RoaXM0JCRyZWZzJHRyZWVTaWRlMjsKICAgICAgICAgIChfdGhpczQkJHJlZnMkdHJlZVNpZGUgPSBfdGhpczQuJHJlZnMudHJlZVNpZGUpID09PSBudWxsIHx8IF90aGlzNCQkcmVmcyR0cmVlU2lkZSA9PT0gdm9pZCAwIHx8IF90aGlzNCQkcmVmcyR0cmVlU2lkZS5zZXRDdXJyZW50S2V5KCgoX3RoaXM0JHRyZWVJdGVtID0gX3RoaXM0LnRyZWVJdGVtKSA9PT0gbnVsbCB8fCBfdGhpczQkdHJlZUl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzNCR0cmVlSXRlbVtfdGhpczQudHJlZUtleV0pIHx8ICcnKTsKICAgICAgICAgIChfdGhpczQkJHJlZnMkdHJlZVNpZGUyID0gX3RoaXM0LiRyZWZzLnRyZWVTaWRlKSA9PT0gbnVsbCB8fCBfdGhpczQkJHJlZnMkdHJlZVNpZGUyID09PSB2b2lkIDAgfHwgX3RoaXM0JCRyZWZzJHRyZWVTaWRlMi5leHBhbmRIYW5kbGUodHJ1ZSwgX3RoaXM0LmRlZmF1bHRUcmVlRXhwYW5kTGV2ZWwpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHRoaXMuJGVtaXQoJ29wZW4nLCB0aGlzLmluaXRpYWxpemVSZW5kZXJpbmcpOwogICAgICB0aGlzLmluaXRpYWxpemVSZW5kZXJpbmcgPSB0cnVlOwogICAgfSwKICAgIC8vIOWFs+mXreW8ueWxguWQjuinpuWPkQogICAgY2xvc2VkOiBmdW5jdGlvbiBjbG9zZWQoKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICBPYmplY3QuYXNzaWduKHRoaXMuJGRhdGEsIHRoaXMuJG9wdGlvbnMuZGF0YS5jYWxsKHRoaXMpKTsgLy8g6YeN572uZGF0YeS4reeahOaVsOaNrgogICAgICAvLyDph43nva7miZPlvIDlvLnlsYLpgInkuK3mlYjmnpwsCiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgdmFyIF90aGlzNSQkcmVmcyRzZWFyY2hDbywgX3RoaXM1JCRyZWZzJG11bHRpcGxlOwogICAgICAgIGlmIChfdGhpczUuaXNTaG93VHJlZSkgewogICAgICAgICAgdmFyIF90aGlzNSQkcmVmcyR0cmVlU2lkZSwgX3RoaXM1JHRyZWVJdGVtLCBfdGhpczUkJHJlZnMkdHJlZVNpZGUyOwogICAgICAgICAgKF90aGlzNSQkcmVmcyR0cmVlU2lkZSA9IF90aGlzNS4kcmVmcy50cmVlU2lkZSkgPT09IG51bGwgfHwgX3RoaXM1JCRyZWZzJHRyZWVTaWRlID09PSB2b2lkIDAgfHwgX3RoaXM1JCRyZWZzJHRyZWVTaWRlLnNldEN1cnJlbnRLZXkoKChfdGhpczUkdHJlZUl0ZW0gPSBfdGhpczUudHJlZUl0ZW0pID09PSBudWxsIHx8IF90aGlzNSR0cmVlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXM1JHRyZWVJdGVtW190aGlzNS50cmVlS2V5XSkgfHwgJycpOwogICAgICAgICAgKF90aGlzNSQkcmVmcyR0cmVlU2lkZTIgPSBfdGhpczUuJHJlZnMudHJlZVNpZGUpID09PSBudWxsIHx8IF90aGlzNSQkcmVmcyR0cmVlU2lkZTIgPT09IHZvaWQgMCB8fCBfdGhpczUkJHJlZnMkdHJlZVNpZGUyLmV4cGFuZEhhbmRsZSh0cnVlLCBfdGhpczUuZGVmYXVsdFRyZWVFeHBhbmRMZXZlbCk7CiAgICAgICAgfQogICAgICAgIChfdGhpczUkJHJlZnMkc2VhcmNoQ28gPSBfdGhpczUuJHJlZnMuc2VhcmNoQ29tbW9uKSA9PT0gbnVsbCB8fCBfdGhpczUkJHJlZnMkc2VhcmNoQ28gPT09IHZvaWQgMCB8fCBfdGhpczUkJHJlZnMkc2VhcmNoQ28uZGVsZXRlQ2hvb3NlKCdhbGwnLCBmYWxzZSk7IC8vIOa4heepuuaQnOe0oumAieS4rQogICAgICAgIChfdGhpczUkJHJlZnMkbXVsdGlwbGUgPSBfdGhpczUuJHJlZnMubXVsdGlwbGVTZWxlY3Rpb24pID09PSBudWxsIHx8IF90aGlzNSQkcmVmcyRtdWx0aXBsZSA9PT0gdm9pZCAwIHx8IF90aGlzNSQkcmVmcyRtdWx0aXBsZS5jbGVhclNvcnQoKTsgLy8g55So5LqO5riF56m65o6S5bqP5p2h5Lu277yM5pWw5o2u5Lya5oGi5aSN5oiQ5pyq5o6S5bqP55qE54q25oCBCiAgICAgIH0pOwogICAgICB0aGlzLiRlbWl0KCdjbG9zZWQnKTsKICAgIH0sCiAgICAvLyDooajmoLzooYzmoLflvI/oh6rlrprkuYkKICAgIHJvd0NsYXNzTmFtZTogZnVuY3Rpb24gcm93Q2xhc3NOYW1lKF9yZWYpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIHZhciByb3cgPSBfcmVmLnJvdzsKICAgICAgdmFyIGNsYXNzQXJyID0gW107CiAgICAgIGlmICh0aGlzLmFsbFNlbGVjdGlvbi5zb21lKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgcmV0dXJuIGlbX3RoaXM2LnNlbGVjdEtleV0gPT09IHJvd1tfdGhpczYuc2VsZWN0S2V5XTsKICAgICAgfSkpIHsKICAgICAgICBjbGFzc0Fyci5wdXNoKCdjdXJyZW50LXJvdycpOwogICAgICB9CiAgICAgIGlmIChyb3cuZGlzYWJsZWQpIHsKICAgICAgICBjbGFzc0Fyci5wdXNoKCdkaXNhYmxlZC1yb3cnKTsKICAgICAgfQogICAgICByZXR1cm4gY2xhc3NBcnIuam9pbignICcpOwogICAgfSwKICAgIC8v5bem6L655qCR6IqC6YCJ5Lit5pS55Y+YCiAgICBjdXJyZW50Q2hhbmdlOiBmdW5jdGlvbiBjdXJyZW50Q2hhbmdlKG5vZGVJdGVtKSB7CiAgICAgIHRoaXMudGFibGVQYXJhbXMucGFnZUJlYW4ucGFnZSA9IDE7CiAgICAgIC8vIOS4uuS6humBv+WFjeW3puS+p+agkeWLvumAieeahOWPguaVsOeUqOS6juihqOagvOafpeivouS4reeahOaWueW8j+acieS4jeehruWumuaAp++8jOWImeaKiuS/ruaUueafpeivoumhueWKn+iDveeVmee7meeItue7hOS7tuiHquW3seWBmgogICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6dHJlZUl0ZW0nLCBub2RlSXRlbSB8fCB7fSk7CiAgICAgIHRoaXMuJGVtaXQoJ3RyZWVDaGFuZ2UnLCBub2RlSXRlbSk7CiAgICB9LAogICAgLy8g6aG26YOo5pCc57Si6YC76L6R6Kem5Y+RCiAgICBoYW5kbGVTZWFyY2g6IGZ1bmN0aW9uIGhhbmRsZVNlYXJjaChkYXRhKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICB0aGlzLnRhYmxlUGFyYW1zLnBhZ2VCZWFuLnBhZ2UgPSAxOwogICAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLnByb3ApICYmIGl0ZW0ucHJvcC5sZW5ndGgpIHsKICAgICAgICAgIGl0ZW0ucHJvcC5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7CiAgICAgICAgICAgIHNldFF1ZXJ5VmFsdWUoX3RoaXM3LnRhYmxlUGFyYW1zLCBwcm9wLCBpdGVtLnZhbHVlKTsKICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0ucHJvcCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgIHNldFF1ZXJ5VmFsdWUoX3RoaXM3LnRhYmxlUGFyYW1zLCBpdGVtLnByb3AsIGl0ZW0udmFsdWUpOwogICAgICAgIH0KICAgICAgICBjb25zb2xlLmxvZyhfdGhpczcudGFibGVQYXJhbXMucXVlcnlzKTsKICAgICAgfSk7CiAgICAgIGNvbnNvbGUubG9nKGRhdGEsIHRoaXMudGFibGVQYXJhbXMucXVlcnlzKTsKICAgICAgdGhpcy4kZW1pdCgndGFibGVSZWZyZXNoJywgdGhpcy50YWJsZVBhcmFtcyk7CiAgICB9LAogICAgLy/liIbpobXpobXmlbAKICAgIGhhbmRsZUN1cnJlbnRDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUN1cnJlbnRDaGFuZ2UocGFnZSkgewogICAgICB0aGlzLnRhYmxlUGFyYW1zLnBhZ2VCZWFuLnBhZ2UgPSBwYWdlOwogICAgICB0aGlzLiRlbWl0KCd0YWJsZVJlZnJlc2gnLCB0aGlzLnRhYmxlUGFyYW1zKTsKICAgIH0sCiAgICAvL+WIhumhteWkp+WwjwogICAgaGFuZGxlU2l6ZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlU2l6ZUNoYW5nZShwYWdlU2l6ZSkgewogICAgICB0aGlzLnRhYmxlUGFyYW1zLnBhZ2VCZWFuLnBhZ2VTaXplID0gcGFnZVNpemU7CiAgICAgIHRoaXMuJGVtaXQoJ3RhYmxlUmVmcmVzaCcsIHRoaXMudGFibGVQYXJhbXMpOwogICAgfSwKICAgIC8vIOihqOagvOihjOeCueWHuwogICAgdGFibGVSb3dDbGljazogZnVuY3Rpb24gdGFibGVSb3dDbGljayhyb3csIHN0YXR1cykgewogICAgICB0aGlzLnRhYmxlU2VsZWN0aW9uKHJvdywgc3RhdHVzKTsKICAgICAgdGhpcy51cGRhdGVDaGVja2JveE9wdCgpOwogICAgfSwKICAgIC8vIOihqOagvOWLvumAieaIluWPlua2iOWLvumAiQogICAgdGFibGVTZWxlY3Rpb246IGZ1bmN0aW9uIHRhYmxlU2VsZWN0aW9uKGl0ZW0sIHN0YXR1cykgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHJldHVybjsKICAgICAgdmFyIHRhYmxlSW5kZXggPSB0aGlzLmVuaGFuY2VkVGFibGVEYXRhLmZpbmRJbmRleChmdW5jdGlvbiAoaSkgewogICAgICAgIHJldHVybiBpW190aGlzOC5zZWxlY3RLZXldID09PSBpdGVtW190aGlzOC5zZWxlY3RLZXldOwogICAgICB9KTsKICAgICAgdmFyIGZpbmRJbmRleCA9IHRoaXMuYWxsU2VsZWN0aW9uLmZpbmRJbmRleChmdW5jdGlvbiAoaSkgewogICAgICAgIHJldHVybiBpW190aGlzOC5zZWxlY3RLZXldID09PSBpdGVtW190aGlzOC5zZWxlY3RLZXldOwogICAgICB9KTsKICAgICAgaWYgKHRhYmxlSW5kZXggIT09IC0xKSB0aGlzLmVuaGFuY2VkVGFibGVEYXRhW3RhYmxlSW5kZXhdLmNoZWNrZWQgPSBzdGF0dXM7CiAgICAgIGlmIChzdGF0dXMpIHsKICAgICAgICBpZiAodGhpcy5pc1NpbmdsZUNob2ljZSkgewogICAgICAgICAgdGhpcy5hbGxTZWxlY3Rpb24gPSBbaXRlbV07CiAgICAgICAgICB0aGlzLmVuaGFuY2VkVGFibGVEYXRhLmZvckVhY2goZnVuY3Rpb24gKGkpIHsKICAgICAgICAgICAgaWYgKGlbX3RoaXM4LnNlbGVjdEtleV0gIT09IGl0ZW1bX3RoaXM4LnNlbGVjdEtleV0pIGkuY2hlY2tlZCA9IGZhbHNlOwogICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChmaW5kSW5kZXggPT09IC0xKSB0aGlzLmFsbFNlbGVjdGlvbi5wdXNoKGl0ZW0pOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBpZiAoZmluZEluZGV4ICE9PSAtMSkgdGhpcy5hbGxTZWxlY3Rpb24uc3BsaWNlKGZpbmRJbmRleCwgMSk7CiAgICAgIH0KICAgICAgdGhpcy50YWJsZUNoZWNrQWxsID0gdGhpcy5lbmhhbmNlZFRhYmxlRGF0YS5ldmVyeShmdW5jdGlvbiAoaSkgewogICAgICAgIHJldHVybiBpLmNoZWNrZWQ7CiAgICAgIH0pOwogICAgICB0aGlzLnRhYmxlSXNJbmRldGVybWluYXRlID0gdGhpcy5lbmhhbmNlZFRhYmxlRGF0YS5zb21lKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgcmV0dXJuIGkuY2hlY2tlZDsKICAgICAgfSkgJiYgIXRoaXMudGFibGVDaGVja0FsbDsKICAgIH0sCiAgICAvLyDlpJrpgInmoYbliJfooajmu5rliqjliLDlupXpg6gKICAgIGNoZWNrYm94U2Nyb2xsQm90dG9tOiBmdW5jdGlvbiBjaGVja2JveFNjcm9sbEJvdHRvbSgpIHsKICAgICAgdmFyIF90aGlzOSA9IHRoaXM7CiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgdmFyIF90aGlzOSQkcmVmcyRjaGVja2JveDsKICAgICAgICB2YXIgY29udGFpbmVyID0gKF90aGlzOSQkcmVmcyRjaGVja2JveCA9IF90aGlzOS4kcmVmcy5jaGVja2JveEdyb3VwKSA9PT0gbnVsbCB8fCBfdGhpczkkJHJlZnMkY2hlY2tib3ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzOSQkcmVmcyRjaGVja2JveC4kZWw7CiAgICAgICAgY29udGFpbmVyID09PSBudWxsIHx8IGNvbnRhaW5lciA9PT0gdm9pZCAwIHx8IGNvbnRhaW5lci5zY3JvbGxUbyh7CiAgICAgICAgICB0b3A6IGNvbnRhaW5lci5zY3JvbGxIZWlnaHQsCiAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g6KGo5qC85rua5Yqo5Yiw5p+Q5LiA6KGMCiAgICB0YWJsZVRyU2Nyb2xsOiBmdW5jdGlvbiB0YWJsZVRyU2Nyb2xsKGl0ZW0pIHsKICAgICAgdmFyIF90aGlzMTAgPSB0aGlzOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoXykgewogICAgICAgIHZhciBfdGFibGVFbGVtZW50JGJvZHlXcmE7CiAgICAgICAgdmFyIHRhYmxlRWxlbWVudCA9IF90aGlzMTAuJHJlZnMubXVsdGlwbGVTZWxlY3Rpb247CiAgICAgICAgdmFyIHRoZVRhYmxlUm93QXJyID0gdGFibGVFbGVtZW50LmJvZHlXcmFwcGVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5lbC10YWJsZV9fYm9keSB0Ym9keSAuZWwtdGFibGVfX3JvdycpOwogICAgICAgIHZhciByb3dJbmRleCA9IF90aGlzMTAuZW5oYW5jZWRUYWJsZURhdGEuZmluZEluZGV4KGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICByZXR1cm4gaVtfdGhpczEwLnNlbGVjdEtleV0gPT09IGl0ZW1bX3RoaXMxMC5zZWxlY3RLZXldOwogICAgICAgIH0pOwogICAgICAgIGlmIChyb3dJbmRleCA9PT0gLTEpIHJldHVybjsKICAgICAgICB2YXIgdG9wID0gX3RvQ29uc3VtYWJsZUFycmF5KHRoZVRhYmxlUm93QXJyKS5yZWR1Y2UoZnVuY3Rpb24gKHRvcFN1bSwgaSwgaW5kZXgpIHsKICAgICAgICAgIGlmIChpbmRleCA8IHJvd0luZGV4KSB7CiAgICAgICAgICAgIHJldHVybiB0b3BTdW0gKyB0aGVUYWJsZVJvd0FycltpbmRleF0ub2Zmc2V0SGVpZ2h0OwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHRvcFN1bTsKICAgICAgICAgIH0KICAgICAgICB9LCAwKTsKICAgICAgICAoX3RhYmxlRWxlbWVudCRib2R5V3JhID0gdGFibGVFbGVtZW50LmJvZHlXcmFwcGVyKSA9PT0gbnVsbCB8fCBfdGFibGVFbGVtZW50JGJvZHlXcmEgPT09IHZvaWQgMCB8fCBfdGFibGVFbGVtZW50JGJvZHlXcmEuc2Nyb2xsVG8oewogICAgICAgICAgdG9wOiB0b3AsCiAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5pu05paw5aSa6YCJ5qGG6YWN572u6aG5CiAgICB1cGRhdGVDaGVja2JveE9wdDogZnVuY3Rpb24gdXBkYXRlQ2hlY2tib3hPcHQoKSB7CiAgICAgIHZhciBfdGhpczExID0gdGhpczsKICAgICAgdGhpcy5jaGVja2JveE9wdCA9IF8uY2xvbmVEZWVwKHRoaXMuYWxsU2VsZWN0aW9uKTsKICAgICAgdGhpcy5jaGVja2JveFNlbGVjdCA9IHRoaXMuY2hlY2tib3hPcHQubWFwKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgcmV0dXJuIGlbX3RoaXMxMS5zZWxlY3RLZXldOwogICAgICB9KTsKICAgICAgdGhpcy5jaGVja0FsbCA9ICEhdGhpcy5jaGVja2JveFNlbGVjdC5sZW5ndGg7CiAgICAgIHRoaXMuaXNJbmRldGVybWluYXRlID0gZmFsc2U7CiAgICAgIHRoaXMuY2hlY2tib3hTY3JvbGxCb3R0b20oKTsKICAgIH0sCiAgICAvLyDooajmoLzlhajpgInmlLnlj5gKICAgIHRhYmxlSGFuZGxlQ2hlY2tBbGxDaGFuZ2U6IGZ1bmN0aW9uIHRhYmxlSGFuZGxlQ2hlY2tBbGxDaGFuZ2UodmFsKSB7CiAgICAgIHZhciBfdGhpczEyID0gdGhpczsKICAgICAgdGhpcy5lbmhhbmNlZFRhYmxlRGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgcmV0dXJuIF90aGlzMTIudGFibGVSb3dDbGljayhpLCB2YWwpOwogICAgICB9KTsKICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSBmYWxzZTsKICAgIH0sCiAgICAvLyDlpJrpgInmoYbliJfooajlhajpgInmoYbmlLnlj5gKICAgIGhhbmRsZUNoZWNrQWxsQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVDaGVja0FsbENoYW5nZSh2YWwpIHsKICAgICAgdmFyIF90aGlzMTMgPSB0aGlzOwogICAgICBpZiAodmFsKSB7CiAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdCA9IHRoaXMuY2hlY2tib3hPcHQubWFwKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICByZXR1cm4gaVtfdGhpczEzLnNlbGVjdEtleV07CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5hbGxTZWxlY3Rpb24gPSB0aGlzLmNoZWNrYm94T3B0OwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3QgPSB0aGlzLmNoZWNrYm94T3B0LmZsYXRNYXAoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgIHJldHVybiBpLmRpc2FibGVkID8gaVtfdGhpczEzLnNlbGVjdEtleV0gOiBbXTsKICAgICAgICB9KTsKICAgICAgICB0aGlzLmFsbFNlbGVjdGlvbiA9IHRoaXMuYWxsU2VsZWN0aW9uLmZsYXRNYXAoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgIHJldHVybiBpLmRpc2FibGVkICYmIGkuY2hlY2tlZCA/IGkgOiBbXTsKICAgICAgICB9KTsKICAgICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9ICEhdGhpcy5jaGVja2JveFNlbGVjdC5sZW5ndGg7CiAgICAgIH0KICAgICAgdGhpcy5jaGVja2JveE9wdC5mb3JFYWNoKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgdmFyIGZpbmRJdGVtID0gX3RoaXMxMy5lbmhhbmNlZFRhYmxlRGF0YS5maW5kKGZ1bmN0aW9uIChfaSkgewogICAgICAgICAgcmV0dXJuIF9pW190aGlzMTMuc2VsZWN0S2V5XSA9PT0gaVtfdGhpczEzLnNlbGVjdEtleV07CiAgICAgICAgfSk7CiAgICAgICAgaWYgKCFmaW5kSXRlbSkgcmV0dXJuOwogICAgICAgIF90aGlzMTMudGFibGVTZWxlY3Rpb24oZmluZEl0ZW0sIHZhbCk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWkmumAieahhuWIl+ihqOWkmumAieahhuaUueWPmAogICAgaGFuZGxlQ2hlY2tlZENoYW5nZTogZnVuY3Rpb24gaGFuZGxlQ2hlY2tlZENoYW5nZShzdGF0dXMsIGl0ZW0sIHZhbHVlKSB7CiAgICAgIHRoaXMudGFibGVUclNjcm9sbChpdGVtKTsKICAgICAgdGhpcy50YWJsZVNlbGVjdGlvbihpdGVtLCBzdGF0dXMpOwogICAgICB2YXIgY2hlY2tlZENvdW50ID0gdmFsdWUubGVuZ3RoOwogICAgICB0aGlzLmNoZWNrQWxsID0gY2hlY2tlZENvdW50ID09PSB0aGlzLmNoZWNrYm94T3B0Lmxlbmd0aDsKICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSBjaGVja2VkQ291bnQgPiAwICYmIGNoZWNrZWRDb3VudCA8IHRoaXMuY2hlY2tib3hPcHQubGVuZ3RoOwogICAgfSwKICAgIC8vIOehruiupOaMiemSrueCueWHuwogICAgY29uZmlybTogZnVuY3Rpb24gY29uZmlybSgpIHsKICAgICAgdmFyIF90aGlzMTQgPSB0aGlzOwogICAgICB2YXIgc2VsZWN0ZWRDb250ZW50ID0gdGhpcy5hbGxTZWxlY3Rpb24uZmlsdGVyKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgcmV0dXJuIF90aGlzMTQuY2hlY2tib3hTZWxlY3Quc29tZShmdW5jdGlvbiAoc2VsZWN0S2V5KSB7CiAgICAgICAgICByZXR1cm4gc2VsZWN0S2V5ID09PSBpW190aGlzMTQuc2VsZWN0S2V5XTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIHNlbGVjdGVkQ29udGVudCA9IHRoaXMuaXNTaW5nbGVDaG9pY2UgPyBzZWxlY3RlZENvbnRlbnRbMF0gfHwge30gOiBzZWxlY3RlZENvbnRlbnQ7CiAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZTpzZWxlY3RlZENvbnRlbnQnLCBzZWxlY3RlZENvbnRlbnQpOwogICAgICB0aGlzLiRlbWl0KCdjb25maXJtJywgc2VsZWN0ZWRDb250ZW50KTsKICAgICAgaWYgKHRoaXMuY29uZmlybUNsb3NlRGlhbG9nKSB0aGlzLmlzU2hvd0RpYWxvZyA9IGZhbHNlOwogICAgfSwKICAgIGhhbmRsZUFkZDogZnVuY3Rpb24gaGFuZGxlQWRkKCkgewogICAgICB0aGlzLiRlbWl0KCdhZGQnKTsKICAgIH0sCiAgICBoYW5kbGVDbGVhclJvdzogZnVuY3Rpb24gaGFuZGxlQ2xlYXJSb3cocm93LCBzdGF0dXMpIHsKICAgICAgLy8g6KGo5qC86KGM54K55Ye7CiAgICAgIHRoaXMudGFibGVSb3dDbGljayhyb3csIHN0YXR1cyk7CiAgICB9CiAgfQp9Ow=="},null]}