@omujs/omu 0.9.40 → 0.9.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/dts/api/asset/extension.d.ts +1 -1
- package/dist/dts/api/dashboard/extension.d.ts +13 -31
- package/dist/dts/api/http/index.d.ts +2 -1
- package/dist/dts/api/registry/registry.d.ts +1 -1
- package/dist/dts/api/server/extension.d.ts +7 -1
- package/dist/dts/api/session/extension.d.ts +6 -5
- package/dist/dts/identifier.d.ts +1 -0
- package/dist/dts/index.d.ts +2 -1
- package/dist/dts/network/network.d.ts +2 -2
- package/dist/dts/omu.d.ts +3 -3
- package/dist/dts/result.d.ts +41 -0
- package/dist/dts/token.d.ts +4 -5
- package/dist/dts/version.d.ts +1 -1
- package/dist/esm/api/asset/extension.js +10 -7
- package/dist/esm/api/asset/index.js +10 -7
- package/dist/esm/api/dashboard/extension.js +140 -76
- package/dist/esm/api/dashboard/index.js +140 -75
- package/dist/esm/api/endpoint/endpoint.js +5 -2
- package/dist/esm/api/endpoint/extension.js +5 -2
- package/dist/esm/api/endpoint/index.js +5 -2
- package/dist/esm/api/endpoint/packets.js +5 -2
- package/dist/esm/api/extension.js +5 -2
- package/dist/esm/api/http/extension.js +5 -2
- package/dist/esm/api/http/index.js +6 -2
- package/dist/esm/api/i18n/extension.js +10 -7
- package/dist/esm/api/i18n/index.js +10 -7
- package/dist/esm/api/index.js +5 -2
- package/dist/esm/api/logger/extension.js +5 -2
- package/dist/esm/api/logger/index.js +5 -2
- package/dist/esm/api/logger/packets.js +5 -2
- package/dist/esm/api/permission/extension.js +5 -2
- package/dist/esm/api/permission/index.js +5 -2
- package/dist/esm/api/permission/permission.js +5 -2
- package/dist/esm/api/plugin/extension.js +5 -2
- package/dist/esm/api/plugin/index.js +5 -2
- package/dist/esm/api/registry/extension.js +10 -7
- package/dist/esm/api/registry/index.js +10 -7
- package/dist/esm/api/registry/packets.js +5 -2
- package/dist/esm/api/registry/registry.js +5 -2
- package/dist/esm/api/server/extension.js +25 -9
- package/dist/esm/api/server/index.js +25 -9
- package/dist/esm/api/session/extension.js +28 -17
- package/dist/esm/api/session/index.js +28 -17
- package/dist/esm/api/signal/extension.js +7 -4
- package/dist/esm/api/signal/index.js +5 -2
- package/dist/esm/api/signal/packets.js +5 -2
- package/dist/esm/api/signal/signal.js +5 -2
- package/dist/esm/api/table/extension.js +7 -4
- package/dist/esm/api/table/index.js +7 -4
- package/dist/esm/api/table/packets.js +5 -2
- package/dist/esm/api/table/table.js +5 -2
- package/dist/esm/app.js +5 -2
- package/dist/esm/errors.js +5 -2
- package/dist/esm/identifier.js +5 -2
- package/dist/esm/index.js +3441 -3333
- package/dist/esm/network/connection.js +5 -2
- package/dist/esm/network/encryption.js +5 -2
- package/dist/esm/network/index.js +6 -3
- package/dist/esm/network/network.js +6 -3
- package/dist/esm/network/packet/index.js +5 -2
- package/dist/esm/network/packet/packet-types.js +5 -2
- package/dist/esm/omu.js +176 -106
- package/dist/esm/result.js +68 -0
- package/dist/esm/token.js +7 -10
- package/dist/esm/version.js +3 -3
- package/package.json +1 -1
- package/src/api/asset/extension.ts +6 -6
- package/src/api/dashboard/extension.ts +105 -94
- package/src/api/http/index.ts +2 -1
- package/src/api/registry/extension.ts +6 -6
- package/src/api/registry/registry.ts +1 -1
- package/src/api/server/extension.ts +20 -1
- package/src/api/session/extension.ts +21 -12
- package/src/api/signal/extension.ts +2 -2
- package/src/api/table/extension.ts +2 -2
- package/src/identifier.ts +4 -0
- package/src/index.ts +2 -1
- package/src/network/network.ts +2 -2
- package/src/omu.ts +4 -4
- package/src/result.ts +78 -0
- package/src/token.ts +5 -9
- package/src/version.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -139,6 +139,9 @@ class Identifier {
|
|
|
139
139
|
const parsed = new URL(url);
|
|
140
140
|
return parsed.hostname.split(".").reverse().join(".");
|
|
141
141
|
}
|
|
142
|
+
get base() {
|
|
143
|
+
return new Identifier(this.namespace, this.path[0]);
|
|
144
|
+
}
|
|
142
145
|
toJson() {
|
|
143
146
|
return this.key();
|
|
144
147
|
}
|
|
@@ -271,5 +274,5 @@ export {
|
|
|
271
274
|
ExtensionType
|
|
272
275
|
};
|
|
273
276
|
|
|
274
|
-
//# debugId=
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FwcC50cyIsICIuLi8uLi9zcmMvaWRlbnRpZmllci50cyIsICIuLi8uLi9zcmMvYXBpL2V4dGVuc2lvbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICJpbXBvcnQgeyBJZGVudGlmaWVyLCBJbnRvSWQgfSBmcm9tICcuL2lkZW50aWZpZXInO1xuaW1wb3J0IHR5cGUgeyBMb2NhbGUgfSBmcm9tICcuL2xvY2FsaXphdGlvbi9sb2NhbGUuanMnO1xuaW1wb3J0IHR5cGUgeyBMb2NhbGl6ZWRUZXh0IH0gZnJvbSAnLi9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uLmpzJztcblxuZXhwb3J0IHR5cGUgQXBwTWV0YWRhdGEgPSB7XG4gICAgbG9jYWxlOiBMb2NhbGU7XG4gICAgbmFtZT86IExvY2FsaXplZFRleHQ7XG4gICAgaWNvbj86IExvY2FsaXplZFRleHQ7XG4gICAgZGVzY3JpcHRpb24/OiBMb2NhbGl6ZWRUZXh0O1xuICAgIGltYWdlPzogTG9jYWxpemVkVGV4dDtcbiAgICBzaXRlPzogTG9jYWxpemVkVGV4dDtcbiAgICByZXBvc2l0b3J5PzogTG9jYWxpemVkVGV4dDtcbiAgICBhdXRob3JzPzogTG9jYWxpemVkVGV4dDtcbiAgICBsaWNlbnNlPzogTG9jYWxpemVkVGV4dDtcbiAgICB0YWdzPzogc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBBcHBUeXBlID0gJ2FwcCcgfCAnc2VydmljZScgfCAncmVtb3RlJyB8ICdwbHVnaW4nIHwgJ2Rhc2hib2FyZCc7XG5cbmV4cG9ydCB0eXBlIERlcGVuZGVuY3lTcGVjaWZpZXIgPSB7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIGluZGV4Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQXBwSnNvbiA9IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHR5cGU6IEFwcFR5cGU7XG4gICAgcGFyZW50X2lkPzogc3RyaW5nO1xuICAgIHZlcnNpb24/OiBzdHJpbmc7XG4gICAgdXJsPzogc3RyaW5nO1xuICAgIG1ldGFkYXRhPzogQXBwTWV0YWRhdGE7XG4gICAgZGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgRGVwZW5kZW5jeVNwZWNpZmllciB8IHN0cmluZz47XG59O1xuXG5leHBvcnQgY2xhc3MgQXBwIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWQ6IElkZW50aWZpZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IHR5cGU6IEFwcFR5cGU7XG4gICAgcHVibGljIHJlYWRvbmx5IHBhcmVudElkPzogSWRlbnRpZmllcjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcbiAgICBwdWJsaWMgcmVhZG9ubHkgdXJsPzogc3RyaW5nO1xuICAgIHB1YmxpYyByZWFkb25seSBtZXRhZGF0YT86IEFwcE1ldGFkYXRhO1xuICAgIHB1YmxpYyByZWFkb25seSBkZXBlbmRlbmNpZXM6IFJlY29yZDxzdHJpbmcsIERlcGVuZGVuY3lTcGVjaWZpZXIgfCBzdHJpbmc+O1xuXG4gICAgY29uc3RydWN0b3IoaWQ6IEludG9JZCwgb3B0aW9uczoge1xuICAgICAgICB0eXBlPzogQXBwVHlwZTtcbiAgICAgICAgcGFyZW50SWQ/OiBJbnRvSWQ7XG4gICAgICAgIHZlcnNpb24/OiBzdHJpbmc7XG4gICAgICAgIHVybD86IHN0cmluZztcbiAgICAgICAgbWV0YWRhdGE/OiBBcHBNZXRhZGF0YTtcbiAgICAgICAgZGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgRGVwZW5kZW5jeVNwZWNpZmllciB8IHN0cmluZz47XG4gICAgfSkge1xuICAgICAgICB0aGlzLmlkID0gSWRlbnRpZmllci5mcm9tKGlkKTtcbiAgICAgICAgdGhpcy5wYXJlbnRJZCA9IElkZW50aWZpZXIuZnJvbU9wdGlvbmFsKG9wdGlvbnMucGFyZW50SWQpO1xuICAgICAgICB0aGlzLnZlcnNpb24gPSBvcHRpb25zLnZlcnNpb247XG4gICAgICAgIHRoaXMudXJsID0gb3B0aW9ucy51cmw7XG4gICAgICAgIHRoaXMubWV0YWRhdGEgPSBvcHRpb25zLm1ldGFkYXRhO1xuICAgICAgICB0aGlzLnR5cGUgPSBvcHRpb25zLnR5cGUgPz8gJ2FwcCc7XG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzID0gb3B0aW9ucy5kZXBlbmRlbmNpZXMgPz8ge307XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBkZXNlcmlhbGl6ZShpbmZvOiBBcHBKc29uKTogQXBwIHtcbiAgICAgICAgY29uc3QgaWQgPSBJZGVudGlmaWVyLmZyb21LZXkoaW5mby5pZCk7XG4gICAgICAgIHJldHVybiBuZXcgQXBwKGlkLCB7XG4gICAgICAgICAgICBwYXJlbnRJZDogSWRlbnRpZmllci5mcm9tT3B0aW9uYWwoaW5mby5wYXJlbnRfaWQpLFxuICAgICAgICAgICAgdmVyc2lvbjogaW5mby52ZXJzaW9uLFxuICAgICAgICAgICAgdXJsOiBpbmZvLnVybCxcbiAgICAgICAgICAgIHR5cGU6IGluZm8udHlwZSxcbiAgICAgICAgICAgIG1ldGFkYXRhOiBpbmZvLm1ldGFkYXRhLFxuICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiBpbmZvLmRlcGVuZGVuY2llcyA/PyB7fSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzZXJpYWxpemUoZGF0YTogQXBwKTogQXBwSnNvbiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDogZGF0YS5pZC5rZXkoKSxcbiAgICAgICAgICAgIHR5cGU6IGRhdGEudHlwZSxcbiAgICAgICAgICAgIHBhcmVudF9pZDogZGF0YS5wYXJlbnRJZD8ua2V5KCksXG4gICAgICAgICAgICB2ZXJzaW9uOiBkYXRhLnZlcnNpb24sXG4gICAgICAgICAgICB1cmw6IGRhdGEudXJsLFxuICAgICAgICAgICAgbWV0YWRhdGE6IGRhdGEubWV0YWRhdGEsXG4gICAgICAgICAgICBkZXBlbmRlbmNpZXM6IGRhdGEuZGVwZW5kZW5jaWVzLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBqb2luKC4uLnBhdGhzOiBzdHJpbmdbXSk6IEFwcCB7XG4gICAgICAgIHJldHVybiBuZXcgQXBwKHRoaXMuaWQuam9pbiguLi5wYXRocyksIHtcbiAgICAgICAgICAgIHBhcmVudElkOiB0aGlzLnBhcmVudElkLFxuICAgICAgICAgICAgdmVyc2lvbjogdGhpcy52ZXJzaW9uLFxuICAgICAgICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIG1ldGFkYXRhOiB0aGlzLm1ldGFkYXRhLFxuICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiB0aGlzLmRlcGVuZGVuY2llcyxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwKICAgICJpbXBvcnQgdHlwZSB7IEV4dGVuc2lvblR5cGUgfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBBcHAgfSBmcm9tICcuL2FwcCc7XG5cbmNvbnN0IE5BTUVTUEFDRV9SRUdFWCA9IC9eKFxcLlteLzouXXxbXFx3LV0pKyQvO1xuY29uc3QgTkFNRV9SRUdFWCA9IC9eW14vOl0rJC87XG5cbmV4cG9ydCB0eXBlIEludG9JZCA9IElkZW50aWZpZXIgfCBzdHJpbmcgfCBFeHRlbnNpb25UeXBlIHwgQXBwO1xuXG5leHBvcnQgY2xhc3MgSWRlbnRpZmllciB7XG4gICAgcHVibGljIHJlYWRvbmx5IG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIHB1YmxpYyByZWFkb25seSBwYXRoOiBzdHJpbmdbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBuYW1lc3BhY2U6IHN0cmluZyxcbiAgICAgICAgLi4ucGF0aDogc3RyaW5nW11cbiAgICApIHtcbiAgICAgICAgSWRlbnRpZmllci52YWxpZGF0ZShuYW1lc3BhY2UsIHBhdGgpO1xuICAgICAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICAgICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNlcmlhbGl6ZShpZGVudGlmaWVyOiBJZGVudGlmaWVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIua2V5KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBkZXNlcmlhbGl6ZShqc29uOiBzdHJpbmcpOiBJZGVudGlmaWVyIHtcbiAgICAgICAgcmV0dXJuIElkZW50aWZpZXIuZnJvbUpzb24oanNvbik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tKGlkOiBJbnRvSWQpOiBJZGVudGlmaWVyIHtcbiAgICAgICAgaWYgKGlkIGluc3RhbmNlb2YgSWRlbnRpZmllcikge1xuICAgICAgICAgICAgcmV0dXJuIGlkO1xuICAgICAgICB9IGVsc2UgaWYgKGlkIGluc3RhbmNlb2YgQXBwKSB7XG4gICAgICAgICAgICByZXR1cm4gaWQuaWQ7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGlkID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIElkZW50aWZpZXIuZnJvbUtleShpZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUcnkgdG8gaW5mZXJcbiAgICAgICAgICAgIC8vIFZpdGUgZG9lcyBub3QgcHJlc2VydmUgY2xhc3MgaW5mb3JtYXRpb24gd2hlbiBpbXBvcnRpbmcgZnJvbSBkaWZmZXJlbnQgcGFja2FnZXNcbiAgICAgICAgICAgIGNvbnN0IGlkQ2FzdGVkID0gaWQgYXMgeyBuYW1lc3BhY2U6IHN0cmluZzsgcGF0aDogc3RyaW5nW10gfTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0eXBlb2YgaWRDYXN0ZWQubmFtZXNwYWNlID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoaWRDYXN0ZWQucGF0aCkgJiZcbiAgICAgICAgICAgICAgICBpZENhc3RlZC5wYXRoLmV2ZXJ5KChwKSA9PiB0eXBlb2YgcCA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IElkZW50aWZpZXIoaWRDYXN0ZWQubmFtZXNwYWNlLCAuLi5pZENhc3RlZC5wYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlkV2l0aElkID0gaWQgYXMgeyBpZDogSW50b0lkIHwgdW5kZWZpbmVkIH07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGlkV2l0aElkLmlkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBJZGVudGlmaWVyLmZyb20oaWRXaXRoSWQuaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY29udmVydCB0byBJZGVudGlmaWVyOiAke2lkfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tT3B0aW9uYWwoaWQ6IEludG9JZCB8IHVuZGVmaW5lZCB8IG51bGwpOiBJZGVudGlmaWVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQgfHwgaWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIElkZW50aWZpZXIuZnJvbShpZCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHZhbGlkYXRlKG5hbWVzcGFjZTogc3RyaW5nLCBwYXRoOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBpZiAoIW5hbWVzcGFjZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG5hbWVzcGFjZTogTmFtZXNwYWNlIGNhbm5vdCBiZSBlbXB0eScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHBhdGg6IFBhdGggbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBuYW1lJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFOQU1FU1BBQ0VfUkVHRVgudGVzdChuYW1lc3BhY2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbmFtZXNwYWNlOiBOYW1lc3BhY2UgbXVzdCBtYXRjaCAke05BTUVTUEFDRV9SRUdFWH1gKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgcGF0aCkge1xuICAgICAgICAgICAgaWYgKCFOQU1FX1JFR0VYLnRlc3QobmFtZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGF0aDogTmFtZSBtdXN0IG1hdGNoICR7TkFNRV9SRUdFWH0gYnV0IGdvdCAke25hbWV9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZm9ybWF0KG5hbWVzcGFjZTogc3RyaW5nLCAuLi5wYXRoOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgICAgIElkZW50aWZpZXIudmFsaWRhdGUobmFtZXNwYWNlLCBwYXRoKTtcbiAgICAgICAgcmV0dXJuIGAke25hbWVzcGFjZX06JHtwYXRoLmpvaW4oJy8nKX1gO1xuICAgIH1cblxuICAgIHN0YXRpYyBmcm9tS2V5KGtleTogc3RyaW5nKTogSWRlbnRpZmllciB7XG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IGtleS5pbmRleE9mKCc6Jyk7XG4gICAgICAgIGlmIChzZXBhcmF0b3IgPT09IC0xKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQga2V5OiBObyBzZXBhcmF0b3IgZm91bmQgaW4gJHtrZXl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleS5pbmRleE9mKCc6Jywgc2VwYXJhdG9yICsgMSkgIT09IC0xKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQga2V5OiBNdWx0aXBsZSBzZXBhcmF0b3JzIGZvdW5kIGluICR7a2V5fWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5hbWVzcGFjZSA9IGtleS5zbGljZSgwLCBzZXBhcmF0b3IpO1xuICAgICAgICBjb25zdCBwYXRoID0ga2V5LnNsaWNlKHNlcGFyYXRvciArIDEpO1xuICAgICAgICBpZiAoIW5hbWVzcGFjZSB8fCAhcGF0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGtleTogTmFtZXNwYWNlIGFuZCBwYXRoIGNhbm5vdCBiZSBlbXB0eScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgSWRlbnRpZmllcihuYW1lc3BhY2UsIC4uLnBhdGguc3BsaXQoJy8nKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tVXJsKHVybDogc3RyaW5nIHwgVVJMKTogSWRlbnRpZmllciB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFVybCA9IG5ldyBVUkwodXJsKTtcbiAgICAgICAgY29uc3QgbmFtZXNwYWNlID0gSWRlbnRpZmllci5uYW1lc3BhY2VGcm9tVXJsKHBhcnNlZFVybC5ocmVmKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IHBhcnNlZFVybC5wYXRobmFtZS5zbGljZSgxKS5zcGxpdCgnLycpO1xuICAgICAgICByZXR1cm4gbmV3IElkZW50aWZpZXIobmFtZXNwYWNlLCAuLi5wYXRoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG5hbWVzcGFjZUZyb21VcmwodXJsOiBzdHJpbmcgfCBVUkwpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBuZXcgVVJMKHVybCk7XG4gICAgICAgIHJldHVybiBwYXJzZWQuaG9zdG5hbWUuc3BsaXQoJy4nKS5yZXZlcnNlKCkuam9pbignLicpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b0pzb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMua2V5KCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGZyb21Kc29uKGpzb246IHN0cmluZyk6IElkZW50aWZpZXIge1xuICAgICAgICByZXR1cm4gSWRlbnRpZmllci5mcm9tS2V5KGpzb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBrZXkoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIElkZW50aWZpZXIuZm9ybWF0KHRoaXMubmFtZXNwYWNlLCAuLi50aGlzLnBhdGgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0VxdWFsKG90aGVyOiBJZGVudGlmaWVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmtleSgpID09PSBvdGhlci5rZXkoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNOYW1lc3BhY2VFcXVhbChvdGhlcjogSWRlbnRpZmllcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lc3BhY2UgPT09IG90aGVyLm5hbWVzcGFjZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNTdWJwYXRoT2Yob3RoZXI6IElkZW50aWZpZXIpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMubmFtZXNwYWNlICE9PSBvdGhlci5uYW1lc3BhY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wYXRoLmxlbmd0aCA8IG90aGVyLnBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvdGhlci5wYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wYXRoW2ldICE9PSBvdGhlci5wYXRoW2ldKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBqb2luKC4uLnBhdGg6IHN0cmluZ1tdKTogSWRlbnRpZmllciB7XG4gICAgICAgIHJldHVybiBuZXcgSWRlbnRpZmllcih0aGlzLm5hbWVzcGFjZSwgLi4udGhpcy5wYXRoLCAuLi5wYXRoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJZGVudGlmaWVyTWFwPFQ+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hcDogTWFwPHN0cmluZywgVD4gPSBuZXcgTWFwKCk7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGVudHJpZXM/OiBJdGVyYWJsZTxbSWRlbnRpZmllciwgVF0+LFxuICAgICkge1xuICAgICAgICBpZiAoIWVudHJpZXMpIHJldHVybjtcbiAgICAgICAgZm9yIChjb25zdCBbaWQsIHZhbHVlXSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICB0aGlzLm1hcC5zZXQoaWQua2V5KCksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2l6ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuc2l6ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0KGlkZW50aWZpZXI6IElkZW50aWZpZXIsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFwLnNldChpZGVudGlmaWVyLmtleSgpLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldChpZGVudGlmaWVyOiBJZGVudGlmaWVyKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoaWRlbnRpZmllci5rZXkoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhcyhpZGVudGlmaWVyOiBJZGVudGlmaWVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5oYXMoaWRlbnRpZmllci5rZXkoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZShpZGVudGlmaWVyOiBJZGVudGlmaWVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFwLmRlbGV0ZShpZGVudGlmaWVyLmtleSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFwLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHVibGljICprZXlzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8SWRlbnRpZmllcj4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLm1hcC5rZXlzKCkpIHtcbiAgICAgICAgICAgIHlpZWxkIElkZW50aWZpZXIuZnJvbUtleShrZXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHZhbHVlcygpOiBJdGVyYWJsZUl0ZXJhdG9yPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLnZhbHVlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyAqZW50cmllcygpOiBJdGVyYWJsZUl0ZXJhdG9yPFtJZGVudGlmaWVyLCBUXT4ge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiB0aGlzLm1hcC5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIHlpZWxkIFtJZGVudGlmaWVyLmZyb21LZXkoa2V5KSwgdmFsdWVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W0lkZW50aWZpZXIsIFRdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJpZXMoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJZGVudGlmaWVyU2V0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNldDogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG5cbiAgICBwdWJsaWMgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0LnNpemU7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZChpZGVudGlmaWVyOiBJZGVudGlmaWVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0LmFkZChpZGVudGlmaWVyLmtleSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzKGlkZW50aWZpZXI6IElkZW50aWZpZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0LmhhcyhpZGVudGlmaWVyLmtleSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlKGlkZW50aWZpZXI6IElkZW50aWZpZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXQuZGVsZXRlKGlkZW50aWZpZXIua2V5KCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXQuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgKmtleXMoKTogSXRlcmFibGVJdGVyYXRvcjxJZGVudGlmaWVyPiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuc2V0LmtleXMoKSkge1xuICAgICAgICAgICAgeWllbGQgSWRlbnRpZmllci5mcm9tS2V5KGtleSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsdWVzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8SWRlbnRpZmllcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5rZXlzKCk7XG4gICAgfVxuXG4gICAgcHVibGljICplbnRyaWVzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W0lkZW50aWZpZXIsIElkZW50aWZpZXJdPiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuc2V0LmtleXMoKSkge1xuICAgICAgICAgICAgY29uc3QgaWRlbnRpZmllciA9IElkZW50aWZpZXIuZnJvbUtleShrZXkpO1xuICAgICAgICAgICAgeWllbGQgW2lkZW50aWZpZXIsIGlkZW50aWZpZXJdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W0lkZW50aWZpZXIsIElkZW50aWZpZXJdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJpZXMoKTtcbiAgICB9XG59XG4iLAogICAgImltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IE9tdSB9IGZyb20gJy4uL29tdSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uIHtcbiAgICByZWFkb25seSB0eXBlOiBFeHRlbnNpb25UeXBlO1xufVxuXG5leHBvcnQgY2xhc3MgRXh0ZW5zaW9uVHlwZTxUIGV4dGVuZHMgRXh0ZW5zaW9uID0gRXh0ZW5zaW9uPiBleHRlbmRzIElkZW50aWZpZXIge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlOiAob211OiBPbXUpID0+IFQsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCdleHQnLCBuYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMga2V5KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBuZXcgSWRlbnRpZmllcignZXh0JywgdGhpcy5uYW1lKS5rZXkoKTtcbiAgICB9XG59XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiOztBQWtDTyxNQUFNLElBQUk7QUFBQSxFQUNHO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFFaEIsV0FBVyxDQUFDLElBQVksU0FPckI7QUFBQSxJQUNDLEtBQUssS0FBSyxXQUFXLEtBQUssRUFBRTtBQUFBLElBQzVCLEtBQUssV0FBVyxXQUFXLGFBQWEsUUFBUSxRQUFRO0FBQUEsSUFDeEQsS0FBSyxVQUFVLFFBQVE7QUFBQSxJQUN2QixLQUFLLE1BQU0sUUFBUTtBQUFBLElBQ25CLEtBQUssV0FBVyxRQUFRO0FBQUEsSUFDeEIsS0FBSyxPQUFPLFFBQVEsUUFBUTtBQUFBLElBQzVCLEtBQUssZUFBZSxRQUFRLGdCQUFnQixDQUFDO0FBQUE7QUFBQSxTQUduQyxXQUFXLENBQUMsTUFBb0I7QUFBQSxJQUMxQyxNQUFNLEtBQUssV0FBVyxRQUFRLEtBQUssRUFBRTtBQUFBLElBQ3JDLE9BQU8sSUFBSSxJQUFJLElBQUk7QUFBQSxNQUNmLFVBQVUsV0FBVyxhQUFhLEtBQUssU0FBUztBQUFBLE1BQ2hELFNB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LFNBQVMsR0FBc0M7QUFBQSxJQUMxRCxPQUFPLEtBQUssUUFBUTtBQUFBO0FBRTVCO0FBQUE7QUFFTyxNQUFNLGNBQWM7QUFBQSxFQUNOLE1BQW1CLElBQUk7QUFBQSxNQUU3QixJQUFJLEdBQVc7QUFBQSxJQUN0QixPQUFPLEtBQUssSUFBSTtBQUFBO0FBQUEsRUFHYixHQUFHLENBQUMsWUFBOEI7QUFBQSxJQUNyQyxLQUFLLElBQUksSUFBSSxXQUFXLElBQUksQ0FBQztBQUFBO0FBQUEsRUFHMUIsR0FBRyxDQUFDLFlBQWlDO0FBQUEsSUFDeEMsT0FBTyxLQUFLLElBQUksSUFBSSxXQUFXLElBQUksQ0FBQztBQUFBO0FBQUEsRUFHakMsTUFBTSxDQUFDLFlBQThCO0FBQUEsSUFDeEMsS0FBSyxJQUFJLE9BQU8sV0FBVyxJQUFJLENBQUM7QUFBQTtBQUFBLEVBRzdCLEtBQUssR0FBUztBQUFBLElBQ2pCLEtBQUssSUFBSSxNQUFNO0FBQUE7QUFBQSxHQUdYLElBQUksR0FBaUM7QUFBQSxJQUN6QyxXQUFXLE9BQU8sS0FBSyxJQUFJLEtBQUssR0FBRztBQUFBLE1BQy9CLE1BQU0sV0FBVyxRQUFRLEdBQUc7QUFBQSxJQUNoQztBQUFBO0FBQUEsRUFHRyxNQUFNLEdBQWlDO0FBQUEsSUFDMUMsT0FBTyxLQUFLLEtBQUs7QUFBQTtBQUFBLEdBR2IsT0FBTyxHQUErQztBQUFBLElBQzFELFdBQVcsT0FBTyxLQUFLLElBQUksS0FBSyxHQUFHO0FBQUEsTUFDL0IsTUFBTSxhQUFhLFdBQVcsUUFBUSxHQUFHO0FBQUEsTUFDekMsTUFBTSxDQUFDLFlBQVksVUFBVTtBQUFBLElBQ2pDO0FBQUE7QUFBQSxHQUdJLE9BQU8sU0FBUyxHQUErQztBQUFBLElBQ25FLE9BQU8sS0FBSyxRQUFRO0FBQUE7QUFFNUI7OztBQ3BQTyxNQUFNLHNCQUF1RCxXQUFXO0FBQUEsRUFFdkQ7QUFBQSxFQUNBO0FBQUEsRUFGcEIsV0FBVyxDQUNTLE1BQ0EsUUFDbEI7QUFBQSxJQUNFLE1BQU0sT0FBTyxJQUFJO0FBQUEsSUFIRDtBQUFBLElBQ0E7QUFBQTtBQUFBLEVBS2IsR0FBRyxHQUFXO0FBQUEsSUFDakIsT0FBTyxJQUFJLFdBQVcsT0FBTyxLQUFLLElBQUksRUFBRSxJQUFJO0FBQUE7QUFFcEQ7IiwKICAiZGVidWdJZCI6ICI3NjY4QTM4RUY0QTVCQjQ4NjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
|
|
277
|
+
//# debugId=B3226625378AEDB064756E2164756E21
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FwcC50cyIsICIuLi8uLi9zcmMvaWRlbnRpZmllci50cyIsICIuLi8uLi9zcmMvYXBpL2V4dGVuc2lvbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICJpbXBvcnQgeyBJZGVudGlmaWVyLCBJbnRvSWQgfSBmcm9tICcuL2lkZW50aWZpZXInO1xuaW1wb3J0IHR5cGUgeyBMb2NhbGUgfSBmcm9tICcuL2xvY2FsaXphdGlvbi9sb2NhbGUuanMnO1xuaW1wb3J0IHR5cGUgeyBMb2NhbGl6ZWRUZXh0IH0gZnJvbSAnLi9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uLmpzJztcblxuZXhwb3J0IHR5cGUgQXBwTWV0YWRhdGEgPSB7XG4gICAgbG9jYWxlOiBMb2NhbGU7XG4gICAgbmFtZT86IExvY2FsaXplZFRleHQ7XG4gICAgaWNvbj86IExvY2FsaXplZFRleHQ7XG4gICAgZGVzY3JpcHRpb24/OiBMb2NhbGl6ZWRUZXh0O1xuICAgIGltYWdlPzogTG9jYWxpemVkVGV4dDtcbiAgICBzaXRlPzogTG9jYWxpemVkVGV4dDtcbiAgICByZXBvc2l0b3J5PzogTG9jYWxpemVkVGV4dDtcbiAgICBhdXRob3JzPzogTG9jYWxpemVkVGV4dDtcbiAgICBsaWNlbnNlPzogTG9jYWxpemVkVGV4dDtcbiAgICB0YWdzPzogc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBBcHBUeXBlID0gJ2FwcCcgfCAnc2VydmljZScgfCAncmVtb3RlJyB8ICdwbHVnaW4nIHwgJ2Rhc2hib2FyZCc7XG5cbmV4cG9ydCB0eXBlIERlcGVuZGVuY3lTcGVjaWZpZXIgPSB7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIGluZGV4Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQXBwSnNvbiA9IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHR5cGU6IEFwcFR5cGU7XG4gICAgcGFyZW50X2lkPzogc3RyaW5nO1xuICAgIHZlcnNpb24/OiBzdHJpbmc7XG4gICAgdXJsPzogc3RyaW5nO1xuICAgIG1ldGFkYXRhPzogQXBwTWV0YWRhdGE7XG4gICAgZGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgRGVwZW5kZW5jeVNwZWNpZmllciB8IHN0cmluZz47XG59O1xuXG5leHBvcnQgY2xhc3MgQXBwIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWQ6IElkZW50aWZpZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IHR5cGU6IEFwcFR5cGU7XG4gICAgcHVibGljIHJlYWRvbmx5IHBhcmVudElkPzogSWRlbnRpZmllcjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcbiAgICBwdWJsaWMgcmVhZG9ubHkgdXJsPzogc3RyaW5nO1xuICAgIHB1YmxpYyByZWFkb25seSBtZXRhZGF0YT86IEFwcE1ldGFkYXRhO1xuICAgIHB1YmxpYyByZWFkb25seSBkZXBlbmRlbmNpZXM6IFJlY29yZDxzdHJpbmcsIERlcGVuZGVuY3lTcGVjaWZpZXIgfCBzdHJpbmc+O1xuXG4gICAgY29uc3RydWN0b3IoaWQ6IEludG9JZCwgb3B0aW9uczoge1xuICAgICAgICB0eXBlPzogQXBwVHlwZTtcbiAgICAgICAgcGFyZW50SWQ/OiBJbnRvSWQ7XG4gICAgICAgIHZlcnNpb24/OiBzdHJpbmc7XG4gICAgICAgIHVybD86IHN0cmluZztcbiAgICAgICAgbWV0YWRhdGE/OiBBcHBNZXRhZGF0YTtcbiAgICAgICAgZGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgRGVwZW5kZW5jeVNwZWNpZmllciB8IHN0cmluZz47XG4gICAgfSkge1xuICAgICAgICB0aGlzLmlkID0gSWRlbnRpZmllci5mcm9tKGlkKTtcbiAgICAgICAgdGhpcy5wYXJlbnRJZCA9IElkZW50aWZpZXIuZnJvbU9wdGlvbmFsKG9wdGlvbnMucGFyZW50SWQpO1xuICAgICAgICB0aGlzLnZlcnNpb24gPSBvcHRpb25zLnZlcnNpb247XG4gICAgICAgIHRoaXMudXJsID0gb3B0aW9ucy51cmw7XG4gICAgICAgIHRoaXMubWV0YWRhdGEgPSBvcHRpb25zLm1ldGFkYXRhO1xuICAgICAgICB0aGlzLnR5cGUgPSBvcHRpb25zLnR5cGUgPz8gJ2FwcCc7XG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzID0gb3B0aW9ucy5kZXBlbmRlbmNpZXMgPz8ge307XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBkZXNlcmlhbGl6ZShpbmZvOiBBcHBKc29uKTogQXBwIHtcbiAgICAgICAgY29uc3QgaWQgPSBJZGVudGlmaWVyLmZyb21LZXkoaW5mby5pZCk7XG4gICAgICAgIHJldHVybiBuZXcgQXBwKGlkLCB7XG4gICAgICAgICAgICBwYXJlbnRJZDogSWRlbnRpZmllci5mcm9tT3B0aW9uYWwoaW5mby5wYXJlbnRfaWQpLFxuICAgICAgICAgICAgdmVyc2lvbjogaW5mby52ZXJzaW9uLFxuICAgICAgICAgICAgdXJsOiBpbmZvLnVybCxcbiAgICAgICAgICAgIHR5cGU6IGluZm8udHlwZSxcbiAgICAgICAgICAgIG1ldGFkYXRhOiBpbmZvLm1ldGFkYXRhLFxuICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiBpbmZvLmRlcGVuZGVuY2llcyA/PyB7fSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzZXJpYWxpemUoZGF0YTogQXBwKTogQXBwSnNvbiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDogZGF0YS5pZC5rZXkoKSxcbiAgICAgICAgICAgIHR5cGU6IGRhdGEudHlwZSxcbiAgICAgICAgICAgIHBhcmVudF9pZDogZGF0YS5wYXJlbnRJZD8ua2V5KCksXG4gICAgICAgICAgICB2ZXJzaW9uOiBkYXRhLnZlcnNpb24sXG4gICAgICAgICAgICB1cmw6IGRhdGEudXJsLFxuICAgICAgICAgICAgbWV0YWRhdGE6IGRhdGEubWV0YWRhdGEsXG4gICAgICAgICAgICBkZXBlbmRlbmNpZXM6IGRhdGEuZGVwZW5kZW5jaWVzLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBqb2luKC4uLnBhdGhzOiBzdHJpbmdbXSk6IEFwcCB7XG4gICAgICAgIHJldHVybiBuZXcgQXBwKHRoaXMuaWQuam9pbiguLi5wYXRocyksIHtcbiAgICAgICAgICAgIHBhcmVudElkOiB0aGlzLnBhcmVudElkLFxuICAgICAgICAgICAgdmVyc2lvbjogdGhpcy52ZXJzaW9uLFxuICAgICAgICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIG1ldGFkYXRhOiB0aGlzLm1ldGFkYXRhLFxuICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiB0aGlzLmRlcGVuZGVuY2llcyxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwKICAgICJpbXBvcnQgdHlwZSB7IEV4dGVuc2lvblR5cGUgfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBBcHAgfSBmcm9tICcuL2FwcCc7XG5cbmNvbnN0IE5BTUVTUEFDRV9SRUdFWCA9IC9eKFxcLlteLzouXXxbXFx3LV0pKyQvO1xuY29uc3QgTkFNRV9SRUdFWCA9IC9eW14vOl0rJC87XG5cbmV4cG9ydCB0eXBlIEludG9JZCA9IElkZW50aWZpZXIgfCBzdHJpbmcgfCBFeHRlbnNpb25UeXBlIHwgQXBwO1xuXG5leHBvcnQgY2xhc3MgSWRlbnRpZmllciB7XG4gICAgcHVibGljIHJlYWRvbmx5IG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIHB1YmxpYyByZWFkb25seSBwYXRoOiBzdHJpbmdbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBuYW1lc3BhY2U6IHN0cmluZyxcbiAgICAgICAgLi4ucGF0aDogc3RyaW5nW11cbiAgICApIHtcbiAgICAgICAgSWRlbnRpZmllci52YWxpZGF0ZShuYW1lc3BhY2UsIHBhdGgpO1xuICAgICAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICAgICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNlcmlhbGl6ZShpZGVudGlmaWVyOiBJZGVudGlmaWVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIua2V5KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBkZXNlcmlhbGl6ZShqc29uOiBzdHJpbmcpOiBJZGVudGlmaWVyIHtcbiAgICAgICAgcmV0dXJuIElkZW50aWZpZXIuZnJvbUpzb24oanNvbik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tKGlkOiBJbnRvSWQpOiBJZGVudGlmaWVyIHtcbiAgICAgICAgaWYgKGlkIGluc3RhbmNlb2YgSWRlbnRpZmllcikge1xuICAgICAgICAgICAgcmV0dXJuIGlkO1xuICAgICAgICB9IGVsc2UgaWYgKGlkIGluc3RhbmNlb2YgQXBwKSB7XG4gICAgICAgICAgICByZXR1cm4gaWQuaWQ7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGlkID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIElkZW50aWZpZXIuZnJvbUtleShpZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUcnkgdG8gaW5mZXJcbiAgICAgICAgICAgIC8vIFZpdGUgZG9lcyBub3QgcHJlc2VydmUgY2xhc3MgaW5mb3JtYXRpb24gd2hlbiBpbXBvcnRpbmcgZnJvbSBkaWZmZXJlbnQgcGFja2FnZXNcbiAgICAgICAgICAgIGNvbnN0IGlkQ2FzdGVkID0gaWQgYXMgeyBuYW1lc3BhY2U6IHN0cmluZzsgcGF0aDogc3RyaW5nW10gfTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0eXBlb2YgaWRDYXN0ZWQubmFtZXNwYWNlID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoaWRDYXN0ZWQucGF0aCkgJiZcbiAgICAgICAgICAgICAgICBpZENhc3RlZC5wYXRoLmV2ZXJ5KChwKSA9PiB0eXBlb2YgcCA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IElkZW50aWZpZXIoaWRDYXN0ZWQubmFtZXNwYWNlLCAuLi5pZENhc3RlZC5wYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlkV2l0aElkID0gaWQgYXMgeyBpZDogSW50b0lkIHwgdW5kZWZpbmVkIH07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGlkV2l0aElkLmlkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBJZGVudGlmaWVyLmZyb20oaWRXaXRoSWQuaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY29udmVydCB0byBJZGVudGlmaWVyOiAke2lkfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tT3B0aW9uYWwoaWQ6IEludG9JZCB8IHVuZGVmaW5lZCB8IG51bGwpOiBJZGVudGlmaWVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQgfHwgaWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIElkZW50aWZpZXIuZnJvbShpZCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHZhbGlkYXRlKG5hbWVzcGFjZTogc3RyaW5nLCBwYXRoOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBpZiAoIW5hbWVzcGFjZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG5hbWVzcGFjZTogTmFtZXNwYWNlIGNhbm5vdCBiZSBlbXB0eScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHBhdGg6IFBhdGggbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBuYW1lJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFOQU1FU1BBQ0VfUkVHRVgudGVzdChuYW1lc3BhY2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbmFtZXNwYWNlOiBOYW1lc3BhY2UgbXVzdCBtYXRjaCAke05BTUVTUEFDRV9SRUdFWH1gKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgcGF0aCkge1xuICAgICAgICAgICAgaWYgKCFOQU1FX1JFR0VYLnRlc3QobmFtZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGF0aDogTmFtZSBtdXN0IG1hdGNoICR7TkFNRV9SRUdFWH0gYnV0IGdvdCAke25hbWV9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZm9ybWF0KG5hbWVzcGFjZTogc3RyaW5nLCAuLi5wYXRoOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgICAgIElkZW50aWZpZXIudmFsaWRhdGUobmFtZXNwYWNlLCBwYXRoKTtcbiAgICAgICAgcmV0dXJuIGAke25hbWVzcGFjZX06JHtwYXRoLmpvaW4oJy8nKX1gO1xuICAgIH1cblxuICAgIHN0YXRpYyBmcm9tS2V5KGtleTogc3RyaW5nKTogSWRlbnRpZmllciB7XG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IGtleS5pbmRleE9mKCc6Jyk7XG4gICAgICAgIGlmIChzZXBhcmF0b3IgPT09IC0xKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQga2V5OiBObyBzZXBhcmF0b3IgZm91bmQgaW4gJHtrZXl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleS5pbmRleE9mKCc6Jywgc2VwYXJhdG9yICsgMSkgIT09IC0xKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQga2V5OiBNdWx0aXBsZSBzZXBhcmF0b3JzIGZvdW5kIGluICR7a2V5fWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5hbWVzcGFjZSA9IGtleS5zbGljZSgwLCBzZXBhcmF0b3IpO1xuICAgICAgICBjb25zdCBwYXRoID0ga2V5LnNsaWNlKHNlcGFyYXRvciArIDEpO1xuICAgICAgICBpZiAoIW5hbWVzcGFjZSB8fCAhcGF0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGtleTogTmFtZXNwYWNlIGFuZCBwYXRoIGNhbm5vdCBiZSBlbXB0eScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgSWRlbnRpZmllcihuYW1lc3BhY2UsIC4uLnBhdGguc3BsaXQoJy8nKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tVXJsKHVybDogc3RyaW5nIHwgVVJMKTogSWRlbnRpZmllciB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFVybCA9IG5ldyBVUkwodXJsKTtcbiAgICAgICAgY29uc3QgbmFtZXNwYWNlID0gSWRlbnRpZmllci5uYW1lc3BhY2VGcm9tVXJsKHBhcnNlZFVybC5ocmVmKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IHBhcnNlZFVybC5wYXRobmFtZS5zbGljZSgxKS5zcGxpdCgnLycpO1xuICAgICAgICByZXR1cm4gbmV3IElkZW50aWZpZXIobmFtZXNwYWNlLCAuLi5wYXRoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG5hbWVzcGFjZUZyb21VcmwodXJsOiBzdHJpbmcgfCBVUkwpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBuZXcgVVJMKHVybCk7XG4gICAgICAgIHJldHVybiBwYXJzZWQuaG9zdG5hbWUuc3BsaXQoJy4nKS5yZXZlcnNlKCkuam9pbignLicpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYmFzZSgpOiBJZGVudGlmaWVyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJZGVudGlmaWVyKHRoaXMubmFtZXNwYWNlLCB0aGlzLnBhdGhbMF0pO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b0pzb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMua2V5KCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGZyb21Kc29uKGpzb246IHN0cmluZyk6IElkZW50aWZpZXIge1xuICAgICAgICByZXR1cm4gSWRlbnRpZmllci5mcm9tS2V5KGpzb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBrZXkoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIElkZW50aWZpZXIuZm9ybWF0KHRoaXMubmFtZXNwYWNlLCAuLi50aGlzLnBhdGgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0VxdWFsKG90aGVyOiBJZGVudGlmaWVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmtleSgpID09PSBvdGhlci5rZXkoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNOYW1lc3BhY2VFcXVhbChvdGhlcjogSWRlbnRpZmllcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lc3BhY2UgPT09IG90aGVyLm5hbWVzcGFjZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNTdWJwYXRoT2Yob3RoZXI6IElkZW50aWZpZXIpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMubmFtZXNwYWNlICE9PSBvdGhlci5uYW1lc3BhY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wYXRoLmxlbmd0aCA8IG90aGVyLnBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvdGhlci5wYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wYXRoW2ldICE9PSBvdGhlci5wYXRoW2ldKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBqb2luKC4uLnBhdGg6IHN0cmluZ1tdKTogSWRlbnRpZmllciB7XG4gICAgICAgIHJldHVybiBuZXcgSWRlbnRpZmllcih0aGlzLm5hbWVzcGFjZSwgLi4udGhpcy5wYXRoLCAuLi5wYXRoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJZGVudGlmaWVyTWFwPFQ+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hcDogTWFwPHN0cmluZywgVD4gPSBuZXcgTWFwKCk7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGVudHJpZXM/OiBJdGVyYWJsZTxbSWRlbnRpZmllciwgVF0+LFxuICAgICkge1xuICAgICAgICBpZiAoIWVudHJpZXMpIHJldHVybjtcbiAgICAgICAgZm9yIChjb25zdCBbaWQsIHZhbHVlXSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICB0aGlzLm1hcC5zZXQoaWQua2V5KCksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2l6ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuc2l6ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0KGlkZW50aWZpZXI6IElkZW50aWZpZXIsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFwLnNldChpZGVudGlmaWVyLmtleSgpLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldChpZGVudGlmaWVyOiBJZGVudGlmaWVyKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoaWRlbnRpZmllci5rZXkoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhcyhpZGVudGlmaWVyOiBJZGVudGlmaWVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5oYXMoaWRlbnRpZmllci5rZXkoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZShpZGVudGlmaWVyOiBJZGVudGlmaWVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFwLmRlbGV0ZShpZGVudGlmaWVyLmtleSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFwLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHVibGljICprZXlzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8SWRlbnRpZmllcj4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLm1hcC5rZXlzKCkpIHtcbiAgICAgICAgICAgIHlpZWxkIElkZW50aWZpZXIuZnJvbUtleShrZXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHZhbHVlcygpOiBJdGVyYWJsZUl0ZXJhdG9yPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLnZhbHVlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyAqZW50cmllcygpOiBJdGVyYWJsZUl0ZXJhdG9yPFtJZGVudGlmaWVyLCBUXT4ge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiB0aGlzLm1hcC5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIHlpZWxkIFtJZGVudGlmaWVyLmZyb21LZXkoa2V5KSwgdmFsdWVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W0lkZW50aWZpZXIsIFRdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJpZXMoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJZGVudGlmaWVyU2V0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNldDogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG5cbiAgICBwdWJsaWMgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0LnNpemU7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZChpZGVudGlmaWVyOiBJZGVudGlmaWVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0LmFkZChpZGVudGlmaWVyLmtleSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzKGlkZW50aWZpZXI6IElkZW50aWZpZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0LmhhcyhpZGVudGlmaWVyLmtleSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlKGlkZW50aWZpZXI6IElkZW50aWZpZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXQuZGVsZXRlKGlkZW50aWZpZXIua2V5KCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXQuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgKmtleXMoKTogSXRlcmFibGVJdGVyYXRvcjxJZGVudGlmaWVyPiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuc2V0LmtleXMoKSkge1xuICAgICAgICAgICAgeWllbGQgSWRlbnRpZmllci5mcm9tS2V5KGtleSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsdWVzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8SWRlbnRpZmllcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5rZXlzKCk7XG4gICAgfVxuXG4gICAgcHVibGljICplbnRyaWVzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W0lkZW50aWZpZXIsIElkZW50aWZpZXJdPiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuc2V0LmtleXMoKSkge1xuICAgICAgICAgICAgY29uc3QgaWRlbnRpZmllciA9IElkZW50aWZpZXIuZnJvbUtleShrZXkpO1xuICAgICAgICAgICAgeWllbGQgW2lkZW50aWZpZXIsIGlkZW50aWZpZXJdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W0lkZW50aWZpZXIsIElkZW50aWZpZXJdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJpZXMoKTtcbiAgICB9XG59XG4iLAogICAgImltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IE9tdSB9IGZyb20gJy4uL29tdSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uIHtcbiAgICByZWFkb25seSB0eXBlOiBFeHRlbnNpb25UeXBlO1xufVxuXG5leHBvcnQgY2xhc3MgRXh0ZW5zaW9uVHlwZTxUIGV4dGVuZHMgRXh0ZW5zaW9uID0gRXh0ZW5zaW9uPiBleHRlbmRzIElkZW50aWZpZXIge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlOiAob211OiBPbXUpID0+IFQsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCdleHQnLCBuYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMga2V5KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBuZXcgSWRlbnRpZmllcignZXh0JywgdGhpcy5uYW1lKS5rZXkoKTtcbiAgICB9XG59XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiOztBQWtDTyxNQUFNLElBQUk7QUFBQSxFQUNHO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFFaEIsV0FBVyxDQUFDLElBQVksU0FPckI7QUFBQSxJQUNDLEtBQUssS0FBSyxXQUFXLEtBQUssRUFBRTtBQUFBLElBQzVCLEtBQUssV0FBVyxXQUFXLGFBQWEsUUFBUSxRQUFRO0FBQUEsSUFDeEQsS0FBSyxVQUFVLFFBQVE7QUFBQSxJQUN2QixLQUFLLE1BQU0sUUFBUTtBQUFBLElBQ25CLEtBQUssV0FBVyxRQUFRO0FBQUEsSUFDeEIsS0FBSyxPQUFPLFFBQVEsUUFBUTtBQUFBLElBQzVCLEtBQUssZUFBZSxRQUFRLGdCQUFnQixDQUFDO0FBQUE7QUFBQSxTQUduQyxXQUFXLENBQUMsTUFBb0I7QUFBQSxJQUMxQyxN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QUF3QjtBQUFBLElBQ2pDLE9BQU8sS0FBSyxJQUFJLE9BQU87QUFBQTtBQUFBLEdBR25CLE9BQU8sR0FBc0M7QUFBQSxJQUNqRCxZQUFZLEtBQUssVUFBVSxLQUFLLElBQUksUUFBUSxHQUFHO0FBQUEsTUFDM0MsTUFBTSxDQUFDLFdBQVcsUUFBUSxHQUFHLEdBQUcsS0FBSztBQUFBLElBQ3pDO0FBQUE7QUFBQSxHQUdJLE9BQU8sU0FBUyxHQUFzQztBQUFBLElBQzFELE9BQU8sS0FBSyxRQUFRO0FBQUE7QUFFNUI7QUFBQTtBQUVPLE1BQU0sY0FBYztBQUFBLEVBQ04sTUFBbUIsSUFBSTtBQUFBLE1BRTdCLElBQUksR0FBVztBQUFBLElBQ3RCLE9BQU8sS0FBSyxJQUFJO0FBQUE7QUFBQSxFQUdiLEdBQUcsQ0FBQyxZQUE4QjtBQUFBLElBQ3JDLEtBQUssSUFBSSxJQUFJLFdBQVcsSUFBSSxDQUFDO0FBQUE7QUFBQSxFQUcxQixHQUFHLENBQUMsWUFBaUM7QUFBQSxJQUN4QyxPQUFPLEtBQUssSUFBSSxJQUFJLFdBQVcsSUFBSSxDQUFDO0FBQUE7QUFBQSxFQUdqQyxNQUFNLENBQUMsWUFBOEI7QUFBQSxJQUN4QyxLQUFLLElBQUksT0FBTyxXQUFXLElBQUksQ0FBQztBQUFBO0FBQUEsRUFHN0IsS0FBSyxHQUFTO0FBQUEsSUFDakIsS0FBSyxJQUFJLE1BQU07QUFBQTtBQUFBLEdBR1gsSUFBSSxHQUFpQztBQUFBLElBQ3pDLFdBQVcsT0FBTyxLQUFLLElBQUksS0FBSyxHQUFHO0FBQUEsTUFDL0IsTUFBTSxXQUFXLFFBQVEsR0FBRztBQUFBLElBQ2hDO0FBQUE7QUFBQSxFQUdHLE1BQU0sR0FBaUM7QUFBQSxJQUMxQyxPQUFPLEtBQUssS0FBSztBQUFBO0FBQUEsR0FHYixPQUFPLEdBQStDO0FBQUEsSUFDMUQsV0FBVyxPQUFPLEtBQUssSUFBSSxLQUFLLEdBQUc7QUFBQSxNQUMvQixNQUFNLGFBQWEsV0FBVyxRQUFRLEdBQUc7QUFBQSxNQUN6QyxNQUFNLENBQUMsWUFBWSxVQUFVO0FBQUEsSUFDakM7QUFBQTtBQUFBLEdBR0ksT0FBTyxTQUFTLEdBQStDO0FBQUEsSUFDbkUsT0FBTyxLQUFLLFFBQVE7QUFBQTtBQUU1Qjs7O0FDeFBPLE1BQU0sc0JBQXVELFdBQVc7QUFBQSxFQUV2RDtBQUFBLEVBQ0E7QUFBQSxFQUZwQixXQUFXLENBQ1MsTUFDQSxRQUNsQjtBQUFBLElBQ0UsTUFBTSxPQUFPLElBQUk7QUFBQSxJQUhEO0FBQUEsSUFDQTtBQUFBO0FBQUEsRUFLYixHQUFHLEdBQVc7QUFBQSxJQUNqQixPQUFPLElBQUksV0FBVyxPQUFPLEtBQUssSUFBSSxFQUFFLElBQUk7QUFBQTtBQUVwRDsiLAogICJkZWJ1Z0lkIjogIkIzMjI2NjI1Mzc4QUVEQjA2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
|