ems-web-app-cognito 1.0.8 → 1.0.9
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/esm2020/lib/cognito.component.mjs +7 -2
- package/fesm2015/ems-web-app-cognito.mjs +6 -1
- package/fesm2015/ems-web-app-cognito.mjs.map +1 -1
- package/fesm2020/ems-web-app-cognito.mjs +6 -1
- package/fesm2020/ems-web-app-cognito.mjs.map +1 -1
- package/lib/cognito.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -54,7 +54,7 @@ export class CognitoComponent {
|
|
|
54
54
|
this.cognito.user$.subscribe(user => {
|
|
55
55
|
this.user = user;
|
|
56
56
|
});
|
|
57
|
-
if (this.otp || this.magicLink) {
|
|
57
|
+
if (this.otp || this.magicLink || this.passkeys) {
|
|
58
58
|
this.showPasswordField = false;
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -65,6 +65,11 @@ export class CognitoComponent {
|
|
|
65
65
|
this.showEmailSubmitButton = false;
|
|
66
66
|
this.onUsernameEntered.emit(this.model.username.replace(/\s+/gim, ""));
|
|
67
67
|
}
|
|
68
|
+
updateButtons() {
|
|
69
|
+
if (this.otp || this.magicLink || this.passkeys) {
|
|
70
|
+
this.showPasswordField = false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
68
73
|
async login() {
|
|
69
74
|
if (!this.srp && this.otp) {
|
|
70
75
|
return this.getOtp();
|
|
@@ -575,4 +580,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
575
580
|
type: Output,
|
|
576
581
|
args: ["usernameEntered"]
|
|
577
582
|
}] } });
|
|
578
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0by5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvZ25pdG8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2xpYi9jb2duaXRvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFpQixLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRyxPQUFPLEVBQWUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU8sNEJBQTRCLENBQUM7QUFFbEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBVSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7O0FBT2pGLE1BQU0sT0FBTyxnQkFBZ0I7SUFtRDNCLFlBQW9CLE9BQXVCO1FBQXZCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBaERyQixjQUFTLEdBQW9DLEVBQUUsQ0FBQztRQUN6QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQ25CLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRzNDLGlCQUFZLEdBQVcsUUFBUSxDQUFDO1FBSTdCLG9CQUFlLEdBQVcsdUJBQXVCLENBQUM7UUFDM0QsV0FBTSxHQUFXLElBQUksQ0FBQztRQUUxQixRQUFHLEdBQVksSUFBSSxDQUFDO1FBQ3BCLFFBQUcsR0FBWSxLQUFLLENBQUM7UUFDZCxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRUwsa0NBQTZCLEdBQVksSUFBSSxDQUFDO1FBQ3RF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LCBPbkluaXQsIEhvc3RCaW5kaW5nLCBBZnRlclZpZXdJbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvZ25pdG9TZXJ2aWNlIH0gZnJvbSBcIi4vY29nbml0by5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBDb2duaXRvVXNlciwgQ29nbml0b1VzZXJTZXNzaW9uLCBDb2duaXRvSWRUb2tlbiwgQ29nbml0b0FjY2Vzc1Rva2VuIH0gIGZyb20gJ2FtYXpvbi1jb2duaXRvLWlkZW50aXR5LWpzJztcbmltcG9ydCB7IElDb2duaXRvUmVzcG9uc2UsIElDb2duaXRvVXNlckRhdGEgfSBmcm9tIFwiLi9jb2duaXRvLmludGVyZmFjZXNcIjtcbmltcG9ydCB7IENvZ25pdG9TdHJpbmdzIH0gZnJvbSBcIi4vY29nbml0by5jbGFzc2VzXCI7XG5pbXBvcnQgeyBDb2duaXRvUmVzcG9uc2VUeXBlLCBDb2duaXRvUmVxdWVzdFR5cGUsIENvZ25pdG9Gb3JtVHlwZSB9IGZyb20gXCIuL2NvZ25pdG8udHlwZXNcIjtcbmltcG9ydCB7IHVuc25ha2UsIHRpY2ssIHBhcmFtcywgdHJpbSB9IGZyb20gXCIuL2NvZ25pdG8udXRpbHNcIjtcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgc3RhcnRBdXRoZW50aWNhdGlvbiwgc3RhcnRSZWdpc3RyYXRpb24gfSBmcm9tICdAc2ltcGxld2ViYXV0aG4vYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NvZ25pdG8nLFxuICB0ZW1wbGF0ZVVybDogXCIuL2NvZ25pdG8uY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbIFwiLi9jb2duaXRvLmNvbXBvbmVudC5sZXNzXCIgXVxufSlcbmV4cG9ydCBjbGFzcyBDb2duaXRvQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblxuXG4gIEBIb3N0QmluZGluZyhcInN0eWxlXCIpIGhvc3RTdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHt9O1xuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5yZW5kZXJcIikgc2hvd0Zvcm06IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MudHJhbnNpdGlvbmluZ1wiKSB0cmFuc2l0aW9uaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KFwicG9vbC1pZFwiKSBwb29sSWQhOiBzdHJpbmc7XG4gIEBJbnB1dChcInByb3ZpZGVyLW5hbWVcIikgcHJvdmlkZXJOYW1lOiBzdHJpbmcgPSBcIkdvb2dsZVwiO1xuICBASW5wdXQoXCJjbGllbnQtaWRcIikgY2xpZW50SWQhOiBzdHJpbmc7XG4gIEBJbnB1dChcImNvZ25pdG8tc2lnbmluLXVybFwiKSBjb2duaXRvVXJsPzogc3RyaW5nO1xuICBASW5wdXQoXCJyZWdpb25cIikgcmVnaW9uITogc3RyaW5nO1xuICBASW5wdXQoXCJtb2RhbC1iYWNrZ3JvdW5kXCIpIG1vZGFsQmFja2dyb3VuZDogc3RyaW5nID0gXCJyZ2JhKDI1NSwyNTUsMjU1LDAuNSlcIjtcbiAgQElucHV0KFwiei1pbmRleFwiKSB6SW5kZXg6IG51bWJlciA9IDEwMDA7XG4gIEBJbnB1dChcImhvb2tcIikgaG9vaz86IChzdGF0ZTogYW55KSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICBASW5wdXQoXCJzcnBcIikgc3JwOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KFwib3RwXCIpIG90cDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoXCJtYWdpYy1saW5rXCIpIG1hZ2ljTGluazogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoXCJtYWdpYy1saW5rLWdlbmVyYXRvclwiKSBtYWdpY0xpbmtHZW5lcmF0b3I/OiBQcm9taXNlPGJvb2xlYW4+O1xuICBASW5wdXQoXCJyZWxvYWQtYWZ0ZXItbGluay1hdXRoZW50aWNhdGlvblwiKSByZWxvYWRBZnRlckxpbmtBdXRoZW50aWNhdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dChcInBhc3NrZXlzXCIpIHBhc3NrZXlzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KFwicGFzc2tleXMtZ2V0LXVzZXItaWRcIikgZ2V0VXNlcklkITogKHVzZXJuYW1lOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nPjtcbiAgQElucHV0KFwicGFzc2tleXMtZ2VuZXJhdGUtYXV0aGVudGljYXRpb24tb3B0aW9uc1wiKSBnZW5lcmF0ZUF1dGhlbnRpY2F0aW9uT3B0aW9ucyE6IChlbWFpbDogc3RyaW5nKSA9PiBQcm9taXNlPGFueT47XG4gIEBJbnB1dChcInBhc3NrZXlzLWdlbmVyYXRlLXJlZ2lzdHJhdGlvbi1vcHRpb25zXCIpIGdlbmVyYXRlUmVnaXN0cmF0aW9uT3B0aW9ucyE6ICh0b2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPGFueT47XG4gIEBJbnB1dChcInBhc3NrZXlzLXZlcmlmeS1yZWdpc3RyYXRpb25cIikgdmVyaWZ5UmVnaXN0cmF0aW9uITogKGlucHV0OiBhbnksIHRva2VuOiBzdHJpbmcgKSA9PiBQcm9taXNlPGFueT47XG4gIEBJbnB1dChcInBhc3NrZXlzLXZlcmlmeS1hdXRoZW50aWNhdGlvblwiKSB2ZXJpZnlBdXRoZW50aWNhdGlvbiE6IChpbnB1dDogYW55KSA9PiBQcm9taXNlPGFueT47XG5cbiAgQE91dHB1dChcInJlYWR5XCIpIG9uUmVhZHk6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KFwiY29ubmVjdGluZ1wiKSBvbkNvbm5lY3Rpbmc6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dChcImF1dGhlbnRpY2F0ZWRcIikgb25BdXRoZW50aWNhdGVkOiBFdmVudEVtaXR0ZXI8SUNvZ25pdG9Vc2VyRGF0YSB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KFwicmVzcG9uc2VcIikgb25SZXNwb25zZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7IFxuICBAT3V0cHV0KFwidXNlcm5hbWVFbnRlcmVkXCIpIG9uVXNlcm5hbWVFbnRlcmVkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgbW9kZWw6IGFueSA9IHsgdXNlcm5hbWU6IG51bGwsIHBhc3N3b3JkOiBudWxsfTtcbiAgcHVibGljIGNvbXBvbmVudFN0eWxlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+ID0ge307XG4gIHB1YmxpYyBmb3JtVHlwZTogQ29nbml0b0Zvcm1UeXBlIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBDb2duaXRvRm9ybVR5cGUgPSBDb2duaXRvRm9ybVR5cGU7XG4gIHB1YmxpYyByb3dzOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgZXJyb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgcHJvbXB0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIGNhY2hlOiBJQ29nbml0b1Jlc3BvbnNlIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBzdHJpbmdzID0gQ29nbml0b1N0cmluZ3M7XG4gIHB1YmxpYyBzaG93UGFzc3dvcmRGaWVsZDogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBzaG93RW1haWxTdWJtaXRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIHByaXZhdGUgc2Vzc2lvbjogQ29nbml0b1VzZXJTZXNzaW9uIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdXNlcjogQ29nbml0b1VzZXIgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIHBhc3NrZXlBdXRoT3B0aW9ucz86IGFueTtcbiAgcHVibGljIHBhc3NrZXlSZWdPcHRpb25zPzogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29nbml0bzogQ29nbml0b1NlcnZpY2UpIHtcbiAgICBcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIFxuICAgIHRoaXMuY29nbml0by5pbml0aWFsaXplKHRoaXMucG9vbElkLCB0aGlzLmNsaWVudElkKTtcblxuICAgIHRoaXMuY29nbml0by5mb3JtJC5zdWJzY3JpYmUoZm9ybSA9PiB7XG4gICAgICB0aGlzLmZvcm1UeXBlID0gZm9ybTtcbiAgICAgIHRoaXMuc2hvd0N1cnJlbnRGb3JtKCk7XG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy5jb2duaXRvLnNlc3Npb24kLnN1YnNjcmliZShzZXNzaW9uID0+IHtcbiAgICAgIHRoaXMuc2Vzc2lvbiA9IHNlc3Npb247XG4gICAgfSk7XG4gICAgdGhpcy5jb2duaXRvLnVzZXIkLnN1YnNjcmliZSh1c2VyID0+IHtcbiAgICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgfSk7XG5cbiAgICBpZih0aGlzLm90cCB8fCB0aGlzLm1hZ2ljTGluaykge1xuICAgICAgdGhpcy5zaG93UGFzc3dvcmRGaWVsZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaW5pdGlhbGl6ZSgpKTtcbiAgfVxuXG4gIG9uRW50ZXJVc2VybmFtZSgpIHtcbiAgICB0aGlzLnNob3dFbWFpbFN1Ym1pdEJ1dHRvbiA9IGZhbHNlO1xuICAgIHRoaXMub25Vc2VybmFtZUVudGVyZWQuZW1pdCh0aGlzLm1vZGVsLnVzZXJuYW1lIS5yZXBsYWNlKC9cXHMrL2dpbSxcIlwiKSk7XG4gIH1cblxuICBhc3luYyBsb2dpbigpIHtcblxuICAgIGlmKCF0aGlzLnNycCAmJiB0aGlzLm90cCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0T3RwKCk7XG4gICAgfSBlbHNlIGlmKCF0aGlzLnNycCAmJiB0aGlzLm1hZ2ljTGluaykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TWFnaWNMaW5rKCk7XG4gICAgfSBlbHNlIGlmKCF0aGlzLnNycCAmJiB0aGlzLnBhc3NrZXlzKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRQYXNza2V5KCk7XG4gICAgfSBlbHNlIGlmKCF0aGlzLnNycCkge1xuICAgICAgcmV0dXJuIHRoaXMub25FbnRlclVzZXJuYW1lKCk7XG4gICAgfVxuXG4gICAgbGV0IHJlc3BvbnNlOiBJQ29nbml0b1Jlc3BvbnNlO1xuICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgIHRoaXMubW9kZWwucGFzc3dvcmQgPSB0cmltKHRoaXMubW9kZWwucGFzc3dvcmQpO1xuXG4gICAgaWYodGhpcy5ob29rKSB7XG4gICAgICBjb25zdCBwcm9jZWVkID0gYXdhaXQgdGhpcy5ob29rKHsgXCJzdGF0ZVwiOiBcImJlZm9yZS1sb2dpblwiLCBtb2RlbDogdGhpcy5tb2RlbCB9KTtcbiAgICAgIGlmKCFwcm9jZWVkKSByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVzZXJuYW1lID0gdGhpcy5tb2RlbC51c2VybmFtZSEucmVwbGFjZSgvXFxzKy9naW0sXCJcIik7XG4gICAgICB0aGlzLm9uQ29ubmVjdGluZy5lbWl0KHRydWUpO1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvZ25pdG8uYXV0aGVudGljYXRlKHVzZXJuYW1lLCB0aGlzLm1vZGVsLnBhc3N3b3JkISk7XG4gICAgfSBjYXRjaChlOiBhbnkpIHtcbiAgICAgIHJlc3BvbnNlID0gZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZShyZXNwb25zZSEpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldE90cCgpIHtcbiAgICBsZXQgcmVzcG9uc2U6IElDb2duaXRvUmVzcG9uc2U7XG4gICAgdGhpcy5lcnJvciA9IG51bGw7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5vbkNvbm5lY3RpbmcuZW1pdCh0cnVlKTtcblxuICAgICAgY29uc3QgdXNlcm5hbWUgPSB0aGlzLm1vZGVsLnVzZXJuYW1lIS5yZXBsYWNlKC9cXHMrL2dpbSxcIlwiKTtcbiAgICAgIGNvbnN0IG90cCA9IHRoaXMubW9kZWwub3RwID8gdHJpbSh0aGlzLm1vZGVsLm90cCkgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMuc3JwID0gZmFsc2U7XG4gICAgICB0aGlzLm1hZ2ljTGluayA9IGZhbHNlO1xuICAgICAgdGhpcy5wYXNza2V5cyA9IGZhbHNlO1xuXG4gICAgICBpZih0aGlzLmhvb2spIHtcbiAgICAgICAgY29uc3QgcHJvY2VlZCA9IGF3YWl0IHRoaXMuaG9vayh7IFwic3RhdGVcIjogXCJiZWZvcmUtb3RwLXJlcXVlc3RcIiwgbW9kZWw6IHRoaXMubW9kZWwgfSk7XG4gICAgICAgIGlmKCFwcm9jZWVkKSByZXR1cm4gdGhpcy5jb25uZWN0aW9uQ29tcGxldGUoKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgcmVzcG9uc2UgID0gYXdhaXQgdGhpcy5jb2duaXRvLm90cEF1dGhlbnRpY2F0ZSh1c2VybmFtZSwgb3RwKTtcblxuICAgICAgaWYodGhpcy5ob29rKSB7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBwcm9jZWVkID0gYXdhaXQgdGhpcy5ob29rKHsgXCJzdGF0ZVwiOiBcImFmdGVyLW90cC1yZXF1ZXN0XCIsIG1vZGVsOiB0aGlzLm1vZGVsLCBzZXNzaW9uSWQ6IHJlc3BvbnNlLnVzZXIuU2Vzc2lvbiB9KTtcbiAgICAgICAgaWYoIXByb2NlZWQpIHRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBwcm9jZWVkXCIpO1xuICAgICAgfVxuICAgIH0gY2F0Y2goZTogYW55KSB7XG4gICAgICByZXNwb25zZSA9IGU7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzcG9uc2UhKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRNYWdpY0xpbmsoKSB7XG4gICAgXG4gICAgbGV0IHJlc3BvbnNlOiBJQ29nbml0b1Jlc3BvbnNlO1xuICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVzZXJuYW1lID0gdGhpcy5tb2RlbC51c2VybmFtZSEucmVwbGFjZSgvXFxzKy9naW0sXCJcIik7XG4gICAgICB0aGlzLm9uQ29ubmVjdGluZy5lbWl0KHRydWUpO1xuXG4gICAgICBpZih0aGlzLmhvb2spIHtcbiAgICAgICAgY29uc3QgcHJvY2VlZCA9IGF3YWl0IHRoaXMuaG9vayh7IFwic3RhdGVcIjogXCJiZWZvcmUtbWFnaWMtbGluay1yZXF1ZXN0XCIsIG1vZGVsOiB0aGlzLm1vZGVsIH0pO1xuICAgICAgICBpZighcHJvY2VlZCkgcmV0dXJuIHRoaXMuY29ubmVjdGlvbkNvbXBsZXRlKCk7XG4gICAgICB9XG5cbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb2duaXRvLm1hZ2ljTGlua0F1dGhlbnRpY2F0ZSh1c2VybmFtZSk7XG4gICAgICBcbiAgICAgIGlmKHRoaXMuaG9vaykge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgcHJvY2VlZCA9IGF3YWl0IHRoaXMuaG9vayh7IFwic3RhdGVcIjogXCJhZnRlci1tYWdpYy1saW5rLXJlcXVlc3RcIiwgbW9kZWw6IHRoaXMubW9kZWwsIHNlc3Npb25JZDogcmVzcG9uc2UudXNlci5TZXNzaW9uIH0pO1xuICAgICAgICBpZighcHJvY2VlZCkgcmV0dXJuIHRoaXMuY29ubmVjdGlvbkNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaChlOiBhbnkpIHtcbiAgICAgIHJlc3BvbnNlID0gZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5jb25uZWN0aW9uQ29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBwcm9jZXNzTWFnaWNMaW5rKGVtYWlsOiBzdHJpbmcsIGNvZGU6IHN0cmluZywgc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5vbkNvbm5lY3RpbmcuZW1pdCh0cnVlKTtcbiAgICAgIGF3YWl0IHRoaXMuY29nbml0by5tYWdpY0xpbmtBdXRoZW50aWNhdGUoZW1haWwsIGNvZGUsIHNlc3Npb25JZCk7XG4gICAgICBpZih0aGlzLnJlbG9hZEFmdGVyTGlua0F1dGhlbnRpY2F0aW9uKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub25BdXRoZW50aWNhdGVkLmVtaXQodGhpcy5nZXRVc2VyRGF0YSgpKTsgLy9jb25uZWN0ZWRcbiAgICAgICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25Db21wbGV0ZSgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2goZTogYW55KSB7IH0gXG4gIH1cblxuICBhc3luYyBnZXRQYXNza2V5KCkge1xuICAgIGNvbnN0IHVzZXJuYW1lID0gdGhpcy5tb2RlbC51c2VybmFtZSEucmVwbGFjZSgvXFxzKy9naW0sXCJcIik7XG4gICAgdGhpcy5wYXNza2V5QXV0aE9wdGlvbnMgPSBhd2FpdCB0aGlzLmdlbmVyYXRlQXV0aGVudGljYXRpb25PcHRpb25zKHVzZXJuYW1lKTtcbiAgICBcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHRoaXMucGFzc2tleUF1dGhPcHRpb25zPy5hbGxvd0NyZWRlbnRpYWxzID8/IFtdO1xuICAgIGlmKCFjcmVkZW50aWFscy5sZW5ndGggJiYgIXRoaXMubW9kZWwucGFzc2tleSkgdGhpcy5zZW5kUGFzc2tleUNvZGUoKTtcbiAgICBlbHNlIGlmKCFjcmVkZW50aWFscy5sZW5ndGgpIHRoaXMucmVnaXN0ZXJQYXNza2V5KCk7XG4gICAgZWxzZSB0aGlzLnVzZVBhc3NrZXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZFBhc3NrZXlDb2RlKCkge1xuICAgIGNvbnN0IHVzZXJuYW1lID0gdGhpcy5tb2RlbC51c2VybmFtZSEucmVwbGFjZSgvXFxzKy9naW0sXCJcIik7XG4gICAgY29uc3QgdG9rZW4gPSBhd2FpdCB0aGlzLmdldFVzZXJJZCh1c2VybmFtZSk7XG4gICAgdGhpcy5zcnAgPSBmYWxzZTtcbiAgICB0aGlzLm90cCA9IGZhbHNlO1xuICAgIHRoaXMubWFnaWNMaW5rID0gZmFsc2U7XG4gICAgdGhpcy5tb2RlbC5zaG93Q2hhbGxlbmdlRW50cnkgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1c2VQYXNza2V5KCkge1xuICAgIGNvbnN0IHVzZXJuYW1lID0gdGhpcy5tb2RlbC51c2VybmFtZSEucmVwbGFjZSgvXFxzKy9naW0sXCJcIik7XG4gICAgdGhpcy5vbkNvbm5lY3RpbmcuZW1pdCh0cnVlKTtcbiAgICBjb25zdCBhdXRoZW50aWNhdGlvbiA9IGF3YWl0IHN0YXJ0QXV0aGVudGljYXRpb24odGhpcy5wYXNza2V5QXV0aE9wdGlvbnMpO1xuICAgIGNvbnN0IG91dGNvbWUgPSBhd2FpdCB0aGlzLnZlcmlmeUF1dGhlbnRpY2F0aW9uKGF1dGhlbnRpY2F0aW9uKTtcbiAgICBhd2FpdCB0aGlzLmNvZ25pdG8ucGFzc2tleUF1dGhlbnRpY2F0ZSh1c2VybmFtZSk7XG4gICAgXG4gICAgaWYob3V0Y29tZS52ZXJpZmllZCkge1xuICAgICAgYXdhaXQgdGhpcy5jb2duaXRvLnBhc3NrZXlBdXRoZW50aWNhdGUodXNlcm5hbWUsIG91dGNvbWUudWlkKTtcbiAgICAgIHRoaXMub25BdXRoZW50aWNhdGVkLmVtaXQodGhpcy5nZXRVc2VyRGF0YSgpKTtcbiAgICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcbiAgICAgIHRoaXMuY29ubmVjdGlvbkNvbXBsZXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWdpc3RlclBhc3NrZXkoKSB7XG4gICAgY29uc3QgdXNlcm5hbWUgPSB0aGlzLm1vZGVsLnVzZXJuYW1lIS5yZXBsYWNlKC9cXHMrL2dpbSxcIlwiKTtcbiAgICBjb25zdCBjb2RlID0gdGhpcy5tb2RlbC5wYXNza2V5IS5yZXBsYWNlKC9cXHMrL2dpbSxcIlwiKTtcblxuICAgIHRoaXMub25Db25uZWN0aW5nLmVtaXQodHJ1ZSk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVSZWdpc3RyYXRpb25PcHRpb25zKGNvZGUpO1xuICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IHN0YXJ0UmVnaXN0cmF0aW9uKG9wdGlvbnMpO1xuICAgIGNvbnN0IG91dGNvbWUgPSBhd2FpdCB0aGlzLnZlcmlmeVJlZ2lzdHJhdGlvbihyZWdpc3RyYXRpb24sIGNvZGUpO1xuICAgIGF3YWl0IHRoaXMuY29nbml0by5wYXNza2V5QXV0aGVudGljYXRlKHVzZXJuYW1lKTtcbiAgICBcbiAgICBpZihvdXRjb21lLnZlcmlmaWVkKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvZ25pdG8ucGFzc2tleUF1dGhlbnRpY2F0ZSh1c2VybmFtZSwgb3V0Y29tZS51aWQpO1xuICAgICAgdGhpcy5vbkF1dGhlbnRpY2F0ZWQuZW1pdCh0aGlzLmdldFVzZXJEYXRhKCkpO1xuICAgICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xuICAgICAgdGhpcy5jb25uZWN0aW9uQ29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvbk5ld1VzZXIoKSB7XG4gICAgbGV0IHJlc3BvbnNlOiBJQ29nbml0b1Jlc3BvbnNlO1xuICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgIHRoaXMubW9kZWwubmV3UGFzc3dvcmQgPSB0cmltKHRoaXMubW9kZWwubmV3UGFzc3dvcmQpO1xuXG4gICAgaWYodGhpcy5ob29rKSB7XG4gICAgICBjb25zdCBwcm9jZWVkID0gYXdhaXQgdGhpcy5ob29rKHsgXCJzdGF0ZVwiOiBcImJlZm9yZS1yZWdpc3RyYXRpb25cIiwgbW9kZWw6IHRoaXMubW9kZWwgfSk7XG4gICAgICBpZighcHJvY2VlZCkgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICB0cnkge1xuICAgICAgdGhpcy5vbkNvbm5lY3RpbmcuZW1pdCh0cnVlKTtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb2duaXRvLmNvbXBsZXRlUGFzc3dvcmRVcGRhdGUodGhpcy5tb2RlbC5uZXdQYXNzd29yZCEsIHRoaXMuY2FjaGUhLnVzZXIsIHRoaXMuZ2V0VXNlckF0dHJpYnV0ZXMoKSk7XG4gICAgfSBjYXRjaChlOiBhbnkpIHtcbiAgICAgIHJlc3BvbnNlID0gZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZShyZXNwb25zZSEpO1xuICAgIH1cblxuICB9XG5cbiAgYXN5bmMgb25Gb3JjZVBhc3N3b3JkUmVzZXQoKSB7XG4gICAgXG4gICAgdGhpcy5tb2RlbC5jb2RlID0gdHJpbSh0aGlzLm1vZGVsLmNvZGUpO1xuICAgIHRoaXMubW9kZWwubmV3UGFzc3dvcmQgPSB0cmltKHRoaXMubW9kZWwubmV3UGFzc3dvcmQpO1xuICAgIHRoaXMub25Db25uZWN0aW5nLmVtaXQodHJ1ZSk7XG5cbiAgICBpZih0aGlzLmhvb2spIHtcbiAgICAgIGNvbnN0IHByb2NlZWQgPSBhd2FpdCB0aGlzLmhvb2soeyBcInN0YXRlXCI6IFwiYmVmb3JlLWZvcmNlLXBhc3N3b3JkLXJlc2V0XCIsIG1vZGVsOiB0aGlzLm1vZGVsIH0pO1xuICAgICAgaWYoIXByb2NlZWQpIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb2duaXRvLmNvbmZpcm1QYXNzd29yZCh0aGlzLmNhY2hlIS51c2VyLCB0aGlzLm1vZGVsLmNvZGUsIHRoaXMubW9kZWwubmV3UGFzc3dvcmQpO1xuICAgICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgICB0aGlzLnRyYW5zaXRpb25pbmcgPSB0cnVlO1xuICAgICAgYXdhaXQgdGljaygyNTApO1xuICAgICAgdGhpcy5mb3JtVHlwZSA9IENvZ25pdG9Gb3JtVHlwZS5Mb2dpbjtcbiAgICAgIHRoaXMuc2V0TWVzc2FnaW5nKHJlc3BvbnNlLCBDb2duaXRvU3RyaW5ncy5vblVzZXJQYXNzd29yZENoYW5nZVN1Y2Nlc3NmdWwpO1xuICAgICAgYXdhaXQgdGljaygwKTtcbiAgICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICAgIH0gY2F0Y2goZTogYW55KSB7XG4gICAgICB0aGlzLnNldE1lc3NhZ2luZyhlIGFzIElDb2duaXRvUmVzcG9uc2UpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9uQ29ubmVjdGluZy5lbWl0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvblVzZXJQYXNzd29yZFJlc2V0KCkge1xuXG4gICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgdGhpcy5vbkNvbm5lY3RpbmcuZW1pdCh0cnVlKTtcblxuICAgIHRoaXMubW9kZWwucGFzc3dvcmQgPSB0cmltKHRoaXMubW9kZWwucGFzc3dvcmQpO1xuICAgIHRoaXMubW9kZWwubmV3UGFzc3dvcmQgPSB0cmltKHRoaXMubW9kZWwubmV3UGFzc3dvcmQpO1xuXG4gICAgaWYodGhpcy5ob29rKSB7XG4gICAgICBjb25zdCBwcm9jZWVkID0gYXdhaXQgdGhpcy5ob29rKHsgXCJzdGF0ZVwiOiBcImJlZm9yZS11c2VyLXBhc3N3b3JkLXJlc2V0XCIsIG1vZGVsOiB0aGlzLm1vZGVsIH0pO1xuICAgICAgaWYoIXByb2NlZWQpIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb2duaXRvLnJlc2V0UGFzc3dvcmQodGhpcy51c2VyISwgdGhpcy5tb2RlbC5wYXNzd29yZCEsIHRoaXMubW9kZWwubmV3UGFzc3dvcmQpO1xuICAgICAgdGhpcy50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICAgIGF3YWl0IHRpY2soMjUwKTtcbiAgICAgIHRoaXMuZm9ybVR5cGUgPSBDb2duaXRvRm9ybVR5cGUuUGFzc3dvcmRVcGRhdGVTdWNjZXNzZnVsO1xuICAgICAgdGhpcy5wcm9tcHQgPSBDb2duaXRvU3RyaW5ncy5vblBhc3N3b3JkVXBkYXRlZDtcbiAgICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgICAgYXdhaXQgdGljaygpO1xuICAgICAgdGhpcy50cmFuc2l0aW9uaW5nID0gZmFsc2U7XG4gICAgfSBjYXRjaChlOiBhbnkpIHtcbiAgICAgIHRoaXMuc2V0TWVzc2FnaW5nKGUgYXMgSUNvZ25pdG9SZXNwb25zZSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMub25Db25uZWN0aW5nLmVtaXQoZmFsc2UpO1xuICAgIH1cblxuICB9XG5cbiAgYXN5bmMgb25Gb3Jnb3RQYXNzd29yZCgkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgXG4gICAgdGhpcy50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICBhd2FpdCB0aWNrKDI1MCk7XG4gICAgdGhpcy5mb3JtVHlwZSA9IENvZ25pdG9Gb3JtVHlwZS5Vc2VyVmVyaWZpY2F0aW9uUmVxdWVzdDtcbiAgICB0aGlzLnByb21wdCA9IENvZ25pdG9TdHJpbmdzLm9uVmVyaWZpY2F0aW9uQ29kZVNlbnQ7XG4gICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgYXdhaXQgdGljaygpO1xuICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgb25SZXF1ZXN0VmVyaWZpY2F0aW9uQ29kZSgpIHtcblxuICAgIGNvbnN0IHVzZXJuYW1lID0gdGhpcy5tb2RlbC51c2VybmFtZSEucmVwbGFjZSgvXFxzKy9naW0sXCJcIik7XG4gICAgY29uc3QgbW9kZWwgPSB7IHVzZXJuYW1lIH07XG5cbiAgICBpZih0aGlzLmhvb2spIHtcbiAgICAgIGNvbnN0IHByb2NlZWQgPSBhd2FpdCB0aGlzLmhvb2soeyBcInN0YXRlXCI6IFwicmVxdWVzdC12ZXJpZmljYXRpb24tY29kZVwiLCBcInVzZXJuYW1lXCI6IHVzZXJuYW1lLCBtb2RlbCB9KTtcbiAgICAgIGlmKCFwcm9jZWVkKSByZXR1cm47XG4gICAgICB0aGlzLm1vZGVsLnVzZXJuYW1lID0gbW9kZWwudXNlcm5hbWU7XG4gICAgfVxuXG4gICAgdGhpcy5vbkNvbm5lY3RpbmcuZW1pdCh0cnVlKTtcbiAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICBcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvZ25pdG8ucmVxdWVzdFZlcmlmaWNhdGlvbkNvZGUobW9kZWwudXNlcm5hbWUpO1xuICAgICAgdGhpcy50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICAgIGF3YWl0IHRpY2soMjUwKTtcbiAgICAgIHRoaXMuc2V0TWVzc2FnaW5nKHJlc3BvbnNlLCBDb2duaXRvU3RyaW5ncy5vbk5ld1Bhc3N3b3JkUmVxdWlyZWQpO1xuICAgICAgdGhpcy5zaG93UGFzc3dvcmRSZXNldEZvcm0ocmVzcG9uc2UsIGZhbHNlKTtcbiAgICB9IGNhdGNoKGU6IGFueSkge1xuICAgICAgdGhpcy5zZXRNZXNzYWdpbmcoZSBhcyBJQ29nbml0b1Jlc3BvbnNlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5jb25uZWN0aW9uQ29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBuZXdVc2VyRm9ybURpc2FibGVkKCkge1xuICAgIGxldCBkaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2FjaGU/LnJlcXVpcmVkQXR0cmlidXRlcz8uZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYoIXRoaXMubW9kZWxba2V5XSkgZGlzYWJsZWQgPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgaWYoIXRoaXMubW9kZWwubmV3UGFzc3dvcmQgfHwgIXRoaXMubW9kZWwubmV3UGFzc3dvcmRDb25maXJtKSB7XG4gICAgICBkaXNhYmxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYodGhpcy5tb2RlbC5uZXdQYXNzd29yZCAhPT0gdGhpcy5tb2RlbC5uZXdQYXNzd29yZENvbmZpcm0pIHtcbiAgICAgIGRpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGluaXRpYWxpemUoKSB7XG5cblxuICAgIHRyeSB7XG4gICAgICBpZih0aGlzLmNvZ25pdG9VcmwgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJlbXNfYWNjZXNzX3Rva2VuXCIpKSB7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBpbmZvID0gYXdhaXQgdGhpcy5jb2duaXRvLmdldFVzZXJJbmZvKHRoaXMuY29nbml0b1VybCkgYXMgSUNvZ25pdG9Vc2VyRGF0YTtcblxuICAgICAgICAvL2VtdWxhdGUgY29nbml0byB1c2VyL3Nlc3Npb24gZm9yIGZlZGVyYXRlZCBsb2dpblxuICAgICAgICB0aGlzLnNlc3Npb24gPSBuZXcgQ29nbml0b1VzZXJTZXNzaW9uKHtcbiAgICAgICAgICBJZFRva2VuOiBuZXcgQ29nbml0b0lkVG9rZW4oeyBJZFRva2VuOiBpbmZvLmlkVG9rZW4gfSksXG4gICAgICAgICAgQWNjZXNzVG9rZW46IG5ldyBDb2duaXRvQWNjZXNzVG9rZW4oeyBBY2Nlc3NUb2tlbjogaW5mby5hY2Nlc3NUb2tlbiB9KSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29nbml0by5jcmVhdGVGZWRlcmF0ZWRTZXNzaW9uKGluZm8uaWRUb2tlbiwgaW5mby5hY2Nlc3NUb2tlbilcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmKHRoaXMuc2Vzc2lvbikge1xuICAgICAgICB0aGlzLm9uQXV0aGVudGljYXRlZC5lbWl0KHRoaXMuZ2V0VXNlckRhdGEoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVSZXNwb25zZShyZXNwb25zZTogSUNvZ25pdG9SZXNwb25zZSkge1xuXG4gICAgdGhpcy50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICBcbiAgICBhd2FpdCB0aWNrKDI1MCk7XG5cbiAgICB0aGlzLnNldE1lc3NhZ2luZyhyZXNwb25zZSk7XG4gICAgdGhpcy5jYWNoZSA9IHJlc3BvbnNlLnVzZXJBdHRyaWJ1dGVzID8gcmVzcG9uc2UgOiB0aGlzLmNhY2hlO1xuXG4gICAgaWYocmVzcG9uc2UuZXJyb3I/LmNvZGUgPT09IENvZ25pdG9SZXNwb25zZVR5cGUuTm90QXV0aG9yaXplZCAmJiByZXNwb25zZS5yZXF1ZXN0ID09PSBDb2duaXRvUmVxdWVzdFR5cGUuQXV0aGVudGljYXRpb24pIHtcbiAgICAgIHRoaXMuY29ubmVjdGlvbkNvbXBsZXRlKCk7IC8vbGlrZWx5IGJhZCBwYXNzd29yZCBvciB0b28gbWFueSBhdHRlbXB0c1xuICAgIH0gZWxzZSBpZihyZXNwb25zZS5lcnJvcj8uY29kZSA9PT0gQ29nbml0b1Jlc3BvbnNlVHlwZS5Gb3JjZVBhc3N3b3JkUmVzZXQgJiYgcmVzcG9uc2UucmVxdWVzdCA9PT0gQ29nbml0b1JlcXVlc3RUeXBlLkF1dGhlbnRpY2F0aW9uKSB7XG4gICAgICB0aGlzLmluaXRpYXRlUGFzc3dvcmRSZXNldChyZXNwb25zZSk7IC8vYWRtaW4gaGFzIGZvcmNlZCB1c2VyIHBhc3N3b3JkIHJlc2V0XG4gICAgfSBlbHNlIGlmKHJlc3BvbnNlLnR5cGUgPT09IENvZ25pdG9SZXNwb25zZVR5cGUuT3RwQ2hhbGxlbmdlKSB7XG4gICAgICB0aGlzLm1vZGVsLnNob3dDaGFsbGVuZ2VFbnRyeSA9IHRydWU7XG4gICAgICB0aGlzLmNvbm5lY3Rpb25Db21wbGV0ZSgpO1xuICAgIH0gZWxzZSBpZihyZXNwb25zZS50eXBlID09PSBDb2duaXRvUmVzcG9uc2VUeXBlLlBhc3N3b3JkUmVzZXQgJiYgcmVzcG9uc2UucmVxdWVzdCA9PT0gQ29nbml0b1JlcXVlc3RUeXBlLkF1dGhlbnRpY2F0aW9uKSB7XG4gICAgICB0aGlzLnByb21wdCA9IENvZ25pdG9TdHJpbmdzLm9uRmlyc3RMb2dpbjtcbiAgICAgIHRoaXMuc2hvd1Bhc3N3b3JkUmVzZXRGb3JtKHJlc3BvbnNlKTsgLy9uZXcgdXNlclxuICAgIH0gZWxzZSBpZighcmVzcG9uc2UuZXJyb3I/LmNvZGUgJiYgKHJlc3BvbnNlLnJlcXVlc3QgPT09IENvZ25pdG9SZXF1ZXN0VHlwZS5BdXRoZW50aWNhdGlvbiB8fCByZXNwb25zZS50eXBlID09PSBDb2duaXRvUmVzcG9uc2VUeXBlLkF1dGhlbnRpY2F0ZWQgKSkge1xuICAgICAgdGhpcy5vbkF1dGhlbnRpY2F0ZWQuZW1pdCh0aGlzLmdldFVzZXJEYXRhKCkpOyAvL2Nvbm5lY3RlZFxuICAgICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xuICAgICAgdGhpcy5jb25uZWN0aW9uQ29tcGxldGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25uZWN0aW9uQ29tcGxldGUoKTsgLy91bnN1cHBvcnRlZCByZXNwb25zZSAtLSBob3BlZnVsbHkgZGVzY3JpYmVkIGluIG1lc3NhZ2luZ1xuICAgIH1cblxuICAgIHRoaXMub25SZXNwb25zZS5lbWl0KHsgcmVzcG9uc2UsIG1vZGVsOiB0aGlzLm1vZGVsIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpbml0aWF0ZVBhc3N3b3JkUmVzZXQocmVzcG9uc2U6IElDb2duaXRvUmVzcG9uc2UpIHtcbiAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jb2duaXRvLmZvcmdvdFBhc3N3b3JkKHJlc3BvbnNlLnVzZXIpO1xuICAgICAgdGhpcy5zZXRNZXNzYWdpbmcocmVzdWx0LCBDb2duaXRvU3RyaW5ncy5vbk5ld1Bhc3N3b3JkUmVxdWlyZWQpO1xuICAgICAgYXdhaXQgdGljaygyNTApO1xuICAgICAgdGhpcy5zaG93UGFzc3dvcmRSZXNldEZvcm0ocmVzcG9uc2UsIGZhbHNlKTtcbiAgICB9IGNhdGNoKGU6IGFueSkge1xuICAgICAgdGhpcy5zZXRNZXNzYWdpbmcoZSBhcyBJQ29nbml0b1Jlc3BvbnNlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5jb25uZWN0aW9uQ29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldE1lc3NhZ2luZyhyZXNwb25zZTogSUNvZ25pdG9SZXNwb25zZSwgcHJvbXB0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIGlmKHJlc3BvbnNlLmVycm9yPy5jb2RlID09PSBDb2duaXRvUmVzcG9uc2VUeXBlLkxpbWl0RXhjZWVkZWRFeGNlcHRpb24pIHtcbiAgICAgIHRoaXMuZXJyb3IgPSBDb2duaXRvU3RyaW5ncy5vblRvb01hbnlBdHRlbXB0cztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lcnJvciA9IHJlc3BvbnNlLmVycm9yPy5tZXNzYWdlID8/IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5wcm9tcHQgPSBwcm9tcHQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbm5lY3Rpb25Db21wbGV0ZSgpIHtcbiAgICBhd2FpdCB0aWNrKCk7XG4gICAgdGhpcy50cmFuc2l0aW9uaW5nID0gZmFsc2U7XG4gICAgdGhpcy5vbkNvbm5lY3RpbmcuZW1pdChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNob3dDdXJyZW50Rm9ybSgpIHtcbiAgICBpZighdGhpcy5mb3JtVHlwZSkgcmV0dXJuO1xuXG4gICAgaWYodGhpcy5mb3JtVHlwZSA9PT0gQ29nbml0b0Zvcm1UeXBlLkdvb2dsZVNpZ25Jbikge1xuICAgICAgcmV0dXJuIHRoaXMuc2lnbkluV2l0aEdvb2dsZSgpO1xuICAgIH1cblxuICAgIHRoaXMuaG9zdFN0eWxlID0ge1xuICAgICAgXCJiYWNrZ3JvdW5kXCI6IHRoaXMubW9kYWxCYWNrZ3JvdW5kLFxuICAgICAgXCJ6LWluZGV4XCI6IHRoaXMuekluZGV4XG4gICAgfVxuXG4gICAgYXdhaXQgdGljaygpO1xuXG4gICAgdGhpcy5zaG93Rm9ybSA9IHRydWU7XG4gICAgdGhpcy5vblJlYWR5LmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2hvd1Bhc3N3b3JkUmVzZXRGb3JtKHJlc3VsdDogSUNvZ25pdG9SZXNwb25zZSwgaXNOZXdVc2VyOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIHRoaXMuY2FjaGUgPSByZXN1bHQ7XG4gICAgdGhpcy5yb3dzID0gW107XG4gICAgdGhpcy5mb3JtVHlwZSA9IGlzTmV3VXNlciA/IENvZ25pdG9Gb3JtVHlwZS5OZXdVc2VyIDogQ29nbml0b0Zvcm1UeXBlLkZvcmNlUGFzc3dvcmRSZXNldDtcbiAgICBcbiAgICAvL2J1YmJsZSBmaXJzdCBhbmQgbGFzdCBuYW1lIGZpZWxkcyB0byB0aGUgdG9wIG9mIHRoZSBhdHRyaWJ1dGVzIGxpc3RcbiAgICByZXN1bHQucmVxdWlyZWRBdHRyaWJ1dGVzPy5zb3J0KChhLGIpID0+IHtcbiAgICAgIGlmKGEgPT09IFwiZ2l2ZW5fbmFtZVwiICYmIGIgPT09IFwiZmFtaWx5X25hbWVcIikgcmV0dXJuIC0xO1xuICAgICAgaWYoYiA9PT0gXCJnaXZlbl9uYW1lXCIgJiYgYSA9PT0gXCJmYW1pbHlfbmFtZVwiKSByZXR1cm4gMTtcbiAgICAgIGlmKGEgPT09IFwiZ2l2ZW5fbmFtZVwiKSByZXR1cm4gLTE7XG4gICAgICBpZihhID09PSBcImZhbWlseV9uYW1lXCIpIHJldHVybiAtIDE7XG4gICAgICBpZihiID09PSBcImdpdmVuX25hbWVcIikgcmV0dXJuIDE7XG4gICAgICBpZihiID09PSBcImZhbWlseV9uYW1lXCIpIHJldHVybiAxO1xuICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IC0xO1xuICAgIH0pO1xuXG4gICAgLy9pbmplY3QgZm9ybXJvd3MgZm9yIHJlcXVpcmVkIGF0dHJpYnV0ZXNcbiAgICByZXN1bHQucmVxdWlyZWRBdHRyaWJ1dGVzPy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZihrZXkubWF0Y2goL15lbWFpbC8pKSByZXR1cm47XG4gICAgICBjb25zdCB2YWx1ZSA9IHJlc3VsdC51c2VyQXR0cmlidXRlcyFba2V5XVxuICAgICAgdGhpcy5yb3dzLnB1c2goe1xuICAgICAgICBsYWJlbDogdW5zbmFrZShrZXkpLFxuICAgICAgICBrZXlcbiAgICAgIH0pO1xuICAgICAgdGhpcy5tb2RlbFtrZXldID0gdmFsdWUgJiYgdmFsdWUubGVuZ3RoID8gdmFsdWUgOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIGF3YWl0IHRpY2soKTtcbiAgICB0aGlzLmNvbm5lY3Rpb25Db21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVc2VyQXR0cmlidXRlcygpOiBSZWNvcmQ8c3RyaW5nLHN0cmluZz4ge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB7fSBhcyBSZWNvcmQ8c3RyaW5nLHN0cmluZz47XG4gICAgaWYoIXRoaXMuY2FjaGU/LnJlcXVpcmVkQXR0cmlidXRlcykgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gICAgdGhpcy5jYWNoZSEucmVxdWlyZWRBdHRyaWJ1dGVzIS5mb3JFYWNoKGtleSA9PiBhdHRyaWJ1dGVzW2tleV0gPSB0aGlzLm1vZGVsW2tleV0pO1xuICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBzaWduSW5XaXRoR29vZ2xlKCkge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuY29nbml0b1VybH0vb2F1dGgyL2F1dGhvcml6ZT9pZGVudGl0eV9wcm92aWRlcj0ke3RoaXMucHJvdmlkZXJOYW1lfSZyZWRpcmVjdF91cmk9JHt3aW5kb3cubG9jYXRpb24ub3JpZ2lufSZyZXNwb25zZV90eXBlPVRPS0VOJmNsaWVudF9pZD0ke3RoaXMuY2xpZW50SWR9JnNjb3BlPWVtYWlsIG9wZW5pZCBwcm9maWxlIGF3cy5jb2duaXRvLnNpZ25pbi51c2VyLmFkbWluYDtcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VXNlckRhdGEoKTogSUNvZ25pdG9Vc2VyRGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVtYWlsOiB0aGlzLnNlc3Npb24hLmdldElkVG9rZW4oKS5wYXlsb2FkW1wiZW1haWxcIl0sXG4gICAgICB1c2VybmFtZTogdGhpcy5zZXNzaW9uIS5nZXRJZFRva2VuKCkucGF5bG9hZFtcImNvZ25pdG86dXNlcm5hbWVcIl0sXG4gICAgICBzdWI6ICB0aGlzLnNlc3Npb24hLmdldElkVG9rZW4oKS5wYXlsb2FkW1wic3ViXCJdLFxuICAgICAgZmlyc3ROYW1lOiB0aGlzLnNlc3Npb24hLmdldElkVG9rZW4oKS5wYXlsb2FkW1wiZ2l2ZW5fbmFtZVwiXSxcbiAgICAgIGxhc3ROYW1lOiB0aGlzLnNlc3Npb24hLmdldElkVG9rZW4oKS5wYXlsb2FkW1wiZmFtaWx5X25hbWVcIl0sXG4gICAgICBpZFRva2VuOiAgdGhpcy5zZXNzaW9uIS5nZXRJZFRva2VuKCkuZ2V0Snd0VG9rZW4oKSxcbiAgICAgIGFjY2Vzc1Rva2VuOiAgdGhpcy5zZXNzaW9uIS5nZXRBY2Nlc3NUb2tlbigpLmdldEp3dFRva2VuKCksXG4gICAgfVxuICB9XG5cbn1cbiIsIjxmb3JtICpuZ0lmPVwic2hvd0Zvcm0gJiYgZm9ybVR5cGUgPT09IENvZ25pdG9Gb3JtVHlwZS5Mb2dpblwiIGNsYXNzPVwiY29nbml0by1mb3JtXCIgKHN1Ym1pdCk9XCJsb2dpbigpXCI+XG5cdDxidXR0b24gY2xhc3M9XCJidXR0b24gY2xvc2VcIiAoY2xpY2spPVwic2hvd0Zvcm09ZmFsc2VcIiB0eXBlPVwiYnV0dG9uXCI+PHNwYW4gY2xhc3M9XCJidXR0b250ZXh0XCI+e3sgc3RyaW5ncy5sYWJlbENsb3NlIH19PC9zcGFuPjwvYnV0dG9uPlxuXHQ8ZGl2ICpuZ0lmPVwicHJvbXB0XCIgY2xhc3M9XCJwcm9tcHRcIiBbaW5uZXJIdG1sXT1cInByb21wdFwiPjwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwiY29nbml0by1mb3Jtcm93XCI+XG5cdFx0PGxhYmVsIGNsYXNzPVwiY29nbml0by1sYWJlbFwiIGZvcj1cInVzZXJuYW1lXCI+e3sgc3RyaW5ncy5sYWJlbEVtYWlsIH19PC9sYWJlbD5cblx0XHQ8aW5wdXQgaWQ9XCJ1c2VybmFtZVwiIGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXRleHRcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJ1c2VybmFtZVwiIFsobmdNb2RlbCldPVwibW9kZWwudXNlcm5hbWVcIi8+XG5cdDwvZGl2PlxuXHQ8ZGl2ICpuZ0lmPVwiIXNycCAmJiAhb3RwICYmICFwYXNza2V5cyAmJiAhbWFnaWNMaW5rICYmIHNob3dFbWFpbFN1Ym1pdEJ1dHRvblwiIGNsYXNzPVwiY29nbml0by1idXR0b25zXCI+XG5cdFx0PGJ1dHRvbiBjbGFzcz1cImNvZ25pdG8taW5wdXQgY29nbml0by1zdWJtaXQgY29nbml0by1idXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uRW50ZXJVc2VybmFtZSgpXCIgW2Rpc2FibGVkXT1cIiFtb2RlbC51c2VybmFtZVwiPnt7IHN0cmluZ3MubGFiZWxTdWJtaXQgfX08L2J1dHRvbj5cblx0PC9kaXY+XG5cdDxkaXYgKm5nSWY9XCJzcnAgJiYgIXNob3dQYXNzd29yZEZpZWxkXCIgY2xhc3M9XCJjb2duaXRvLWJ1dHRvbnNcIj5cblx0XHQ8YnV0dG9uIGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXN1Ym1pdCBjb2duaXRvLWJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2hvd1Bhc3N3b3JkRmllbGQgPSB0cnVlOyBvdHAgPSBmYWxzZTsgbWFnaWNMaW5rID0gZmFsc2U7IHBhc3NrZXlzID0gZmFsc2VcIiBbZGlzYWJsZWRdPVwiIW1vZGVsLnVzZXJuYW1lXCI+e3sgc3RyaW5ncy5sYWJlbFVzZVJlZ3VsYXJQYXNzd29yZCB9fTwvYnV0dG9uPlxuXHQ8L2Rpdj5cblx0PGRpdiAqbmdJZj1cInNycCAmJiBzaG93UGFzc3dvcmRGaWVsZFwiIGNsYXNzPVwiY29nbml0by1mb3Jtcm93XCI+XG5cdFx0PGxhYmVsIGNsYXNzPVwiY29nbml0by1sYWJlbFwiIGZvcj1cInBhc3N3b3JkXCI+e3sgc3RyaW5ncy5sYWJlbFBhc3N3b3JkIH19PC9sYWJlbD5cblx0XHQ8aW5wdXQgaWQ9XCJwYXNzd29yZFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXRleHRcIiB0eXBlPVwicGFzc3dvcmRcIiBuYW1lPVwicGFzc3dvcmRcIiBbKG5nTW9kZWwpXT1cIm1vZGVsLnBhc3N3b3JkXCIvPlxuXHQ8L2Rpdj5cblx0PGRpdiAqbmdJZj1cInNycCAmJiBzaG93UGFzc3dvcmRGaWVsZFwiIGNsYXNzPVwiY29nbml0by1idXR0b25zXCI+XG5cdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhXCIgKGNsaWNrKT1cIm9uRm9yZ290UGFzc3dvcmQoJGV2ZW50KVwiPnt7IHN0cmluZ3MubGFiZWxGb3Jnb3RQYXNzd29yZCB9fTwvYnV0dG9uPlxuXHRcdDxpbnB1dCBjbGFzcz1cImNvZ25pdG8taW5wdXQgY29nbml0by1zdWJtaXQgY29nbml0by1idXR0b25cIiB0eXBlPVwic3VibWl0XCIgW3ZhbHVlXT1cInN0cmluZ3MubGFiZWxTdWJtaXRcIi8+XG5cdDwvZGl2PlxuXHQ8ZGl2ICpuZ0lmPVwib3RwICYmIG1vZGVsLnNob3dDaGFsbGVuZ2VFbnRyeVwiIGNsYXNzPVwiY29nbml0by1mb3Jtcm93XCI+XG5cdFx0PGxhYmVsIGNsYXNzPVwiY29nbml0by1sYWJlbFwiIGZvcj1cIm90cFwiPnt7IHN0cmluZ3MubGFiZWxPdHBFbnRlciB9fTwvbGFiZWw+XG5cdFx0PGlucHV0IGlkPVwib3RwXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tdGV4dFwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm90cFwiIFsobmdNb2RlbCldPVwibW9kZWwub3RwXCIvPlxuXHQ8L2Rpdj5cblx0PGRpdiAqbmdJZj1cInBhc3NrZXlzICYmIG1vZGVsLnNob3dDaGFsbGVuZ2VFbnRyeVwiIGNsYXNzPVwiY29nbml0by1mb3Jtcm93XCI+XG5cdFx0PGxhYmVsIGNsYXNzPVwiY29nbml0by1sYWJlbFwiIGZvcj1cInBhc3NrZXktcmVnXCI+e3sgc3RyaW5ncy5sYWJlbFBhc3NrZXlFbnRlciB9fTwvbGFiZWw+XG5cdFx0PHRleHRhcmVhIGlkPVwicGFzc2tleS1yZWdcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cImNvZ25pdG8taW5wdXQgY29nbml0by10ZXh0XCIgbmFtZT1cInBhc3NrZXktcmVnXCIgWyhuZ01vZGVsKV09XCJtb2RlbC5wYXNza2V5XCI+PC90ZXh0YXJlYT5cblx0PC9kaXY+XG5cdDxkaXYgKm5nSWY9XCJvdHBcIiBjbGFzcz1cImNvZ25pdG8tYnV0dG9uc1wiPlxuXHRcdDxidXR0b24gY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tc3VibWl0IGNvZ25pdG8tYnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJnZXRPdHAoKVwiIFtkaXNhYmxlZF09XCIhbW9kZWwudXNlcm5hbWVcIj57eyBtb2RlbC5zaG93Q2hhbGxlbmdlRW50cnkgPyBzdHJpbmdzLmxhYmVsU3VibWl0IDogc3RyaW5ncy5sYWJlbE90cCB9fTwvYnV0dG9uPlxuXHQ8L2Rpdj5cdFxuXHQ8ZGl2ICpuZ0lmPVwibWFnaWNMaW5rXCIgY2xhc3M9XCJjb2duaXRvLWJ1dHRvbnNcIj5cblx0XHQ8YnV0dG9uIGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXN1Ym1pdCBjb2duaXRvLWJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZ2V0TWFnaWNMaW5rKClcIiBbZGlzYWJsZWRdPVwiIW1vZGVsLnVzZXJuYW1lXCI+e3sgc3RyaW5ncy5sYWJlbE1hZ2ljTGluayB9fTwvYnV0dG9uPlxuXHQ8L2Rpdj5cdFxuXHQ8ZGl2ICpuZ0lmPVwicGFzc2tleXNcIiBjbGFzcz1cImNvZ25pdG8tYnV0dG9uc1wiPlxuXHRcdDxidXR0b24gY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tc3VibWl0IGNvZ25pdG8tYnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJnZXRQYXNza2V5KClcIiBbZGlzYWJsZWRdPVwiIW1vZGVsLnVzZXJuYW1lXCI+e3sgbW9kZWwuc2hvd0NoYWxsZW5nZUVudHJ5ID8gc3RyaW5ncy5sYWJlbFN1Ym1pdCA6IHN0cmluZ3MubGFiZWxQYXNza2V5cyB9fTwvYnV0dG9uPlxuXHQ8L2Rpdj5cdFxuXHQ8ZGl2ICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImVycm9yXCIgW2lubmVySHRtbF09XCJlcnJvclwiPjwvZGl2PlxuPC9mb3JtPlxuPGZvcm0gKm5nSWY9XCJzaG93Rm9ybSAmJiBmb3JtVHlwZSA9PT0gQ29nbml0b0Zvcm1UeXBlLk5ld1VzZXJcIiBjbGFzcz1cImNvZ25pdG8tZm9ybVwiIChzdWJtaXQpPVwib25OZXdVc2VyKClcIj5cblx0PGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBjbG9zZVwiIChjbGljayk9XCJzaG93Rm9ybT1mYWxzZVwiIHR5cGU9XCJidXR0b25cIj48c3BhbiBjbGFzcz1cImJ1dHRvbnRleHRcIj57eyBzdHJpbmdzLmxhYmVsQ2xvc2UgfX08L3NwYW4+PC9idXR0b24+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWZvcm1yb3dcIj5cblx0XHQ8bGFiZWwgY2xhc3M9XCJjb2duaXRvLWxhYmVsXCIgZm9yPVwidXNlcm5hbWVcIj57eyBzdHJpbmdzLmxhYmVsRW1haWwgfX08L2xhYmVsPlxuXHRcdDxpbnB1dCBpZD1cInVzZXJuYW1lXCIgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tdGV4dFwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInVzZXJuYW1lXCIgWyhuZ01vZGVsKV09XCJtb2RlbC51c2VybmFtZVwiIGRpc2FibGVkIC8+XG5cdDwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwiY29nbml0by1mb3Jtcm93XCI+XG5cdFx0PGxhYmVsIGNsYXNzPVwiY29nbml0by1sYWJlbCBuby1tYlwiIGZvcj1cIm5ldy1wYXNzd29yZFwiPnt7IHN0cmluZ3MubGFiZWxOZXdQYXNzd29yZCB9fTwvbGFiZWw+XG5cdFx0PHAgY2xhc3M9XCJjb2duaXRvLXN1YmxhYmVsXCI+e3sgc3RyaW5ncy5sYWJlbFBhc3N3b3JkUmVxdWlyZW1lbnQgfX08L3A+XG5cdFx0PGlucHV0IGlkPVwibmV3LXBhc3N3b3JkXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tdGV4dFwiIHR5cGU9XCJwYXNzd29yZFwiIG5hbWU9XCJwYXNzd29yZC1uZXdcIiBbKG5nTW9kZWwpXT1cIm1vZGVsLm5ld1Bhc3N3b3JkXCIvPlxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cImNvZ25pdG8tZm9ybXJvd1wiPlxuXHRcdDxsYWJlbCBjbGFzcz1cImNvZ25pdG8tbGFiZWxcIiBmb3I9XCJwYXNzd29yZC1jb25maXJtXCI+e3sgc3RyaW5ncy5sYWJlbENvbmZpcm1OZXdQYXNzd29yZCB9fTwvbGFiZWw+XG5cdFx0PGlucHV0IGlkPVwicGFzc3dvcmQtY29uZmlybVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXRleHRcIiB0eXBlPVwicGFzc3dvcmRcIiBuYW1lPVwicGFzc3dvcmQtY29uZmlybVwiIFsobmdNb2RlbCldPVwibW9kZWwubmV3UGFzc3dvcmRDb25maXJtXCIvPlxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cImNvZ25pdG8tZm9ybXJvd1wiICpuZ0Zvcj1cImxldCByb3cgb2Ygcm93c1wiPlxuXHRcdDxsYWJlbCBjbGFzcz1cImNvZ25pdG8tbGFiZWxcIiBmb3I9XCJ1c2VybmFtZVwiPnt7IHJvdy5sYWJlbHxsYWJlbGVyIH19PC9sYWJlbD5cblx0XHQ8aW5wdXQgW2lkXT1cInJvdy5rZXlcIiAgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tdGV4dFwiIHR5cGU9XCJ0ZXh0XCIgW25hbWVdPVwicm93LmtleVwiIFsobmdNb2RlbCldPVwibW9kZWxbcm93LmtleV1cIi8+XG5cdDwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwiY29nbml0by1idXR0b25zXCI+XG5cdFx0PGlucHV0IGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXN1Ym1pdCBjb2duaXRvLWJ1dHRvblwiIHR5cGU9XCJzdWJtaXRcIiBbZGlzYWJsZWRdPVwibmV3VXNlckZvcm1EaXNhYmxlZCgpXCIgW3ZhbHVlXT1cInN0cmluZ3MubGFiZWxTdWJtaXRcIi8+XG5cdDwvZGl2Plx0XG5cdDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIiBbaW5uZXJIdG1sXT1cImVycm9yXCI+PC9kaXY+XG48L2Zvcm0+XG48Zm9ybSAqbmdJZj1cInNob3dGb3JtICYmIGZvcm1UeXBlID09PSBDb2duaXRvRm9ybVR5cGUuRm9yY2VQYXNzd29yZFJlc2V0XCIgY2xhc3M9XCJjb2duaXRvLWZvcm1cIiAoc3VibWl0KT1cIm9uRm9yY2VQYXNzd29yZFJlc2V0KClcIj5cblx0PGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBjbG9zZVwiIChjbGljayk9XCJzaG93Rm9ybT1mYWxzZVwiIHR5cGU9XCJidXR0b25cIj48c3BhbiBjbGFzcz1cImJ1dHRvbnRleHRcIj57eyBzdHJpbmdzLmxhYmVsQ2xvc2UgfX08L3NwYW4+PC9idXR0b24+XG5cdDxkaXYgKm5nSWY9XCJwcm9tcHRcIiBjbGFzcz1cInByb21wdFwiIFtpbm5lckh0bWxdPVwicHJvbXB0XCI+PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWZvcm1yb3dcIj5cblx0XHQ8bGFiZWwgY2xhc3M9XCJjb2duaXRvLWxhYmVsXCIgZm9yPVwidXNlcm5hbWVcIj57eyBzdHJpbmdzLmxhYmVsRW1haWwgfX08L2xhYmVsPlxuXHRcdDxpbnB1dCBpZD1cInVzZXJuYW1lXCIgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tdGV4dFwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInVzZXJuYW1lXCIgWyhuZ01vZGVsKV09XCJtb2RlbC51c2VybmFtZVwiIGRpc2FibGVkIC8+XG5cdDwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwiY29nbml0by1mb3Jtcm93XCI+XG5cdFx0PGxhYmVsIGNsYXNzPVwiY29nbml0by1sYWJlbFwiIGZvcj1cImNvZGVcIj57eyBzdHJpbmdzLmxhYmVsQ29kZSB9fTwvbGFiZWw+XG5cdFx0PGlucHV0IGlkPVwiY29kZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXRleHRcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJjb2RlXCIgWyhuZ01vZGVsKV09XCJtb2RlbC5jb2RlXCIvPlxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cImNvZ25pdG8tZm9ybXJvd1wiPlxuXHRcdDxsYWJlbCBjbGFzcz1cImNvZ25pdG8tbGFiZWxcIiBmb3I9XCJuZXctcGFzc3dvcmRcIj57eyBzdHJpbmdzLmxhYmVsTmV3UGFzc3dvcmQgfX08L2xhYmVsPlxuXHRcdDxwIGNsYXNzPVwiY29nbml0by1zdWJsYWJlbFwiPnt7IHN0cmluZ3MubGFiZWxQYXNzd29yZFJlcXVpcmVtZW50IH19PC9wPlxuXHRcdDxpbnB1dCBpZD1cIm5ldy1wYXNzd29yZFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXRleHRcIiB0eXBlPVwicGFzc3dvcmRcIiBuYW1lPVwicGFzc3dvcmQtbmV3XCIgWyhuZ01vZGVsKV09XCJtb2RlbC5uZXdQYXNzd29yZFwiLz5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWZvcm1yb3dcIj5cblx0XHQ8bGFiZWwgY2xhc3M9XCJjb2duaXRvLWxhYmVsXCIgZm9yPVwicGFzc3dvcmQtY29uZmlybVwiPnt7IHN0cmluZ3MubGFiZWxDb25maXJtTmV3UGFzc3dvcmQgfX08L2xhYmVsPlxuXHRcdDxpbnB1dCBpZD1cInBhc3N3b3JkLWNvbmZpcm1cIiBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cImNvZ25pdG8taW5wdXQgY29nbml0by10ZXh0XCIgdHlwZT1cInBhc3N3b3JkXCIgbmFtZT1cInBhc3N3b3JkLWNvbmZpcm1cIiBbKG5nTW9kZWwpXT1cIm1vZGVsLm5ld1Bhc3N3b3JkQ29uZmlybVwiLz5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWJ1dHRvbnNcIj5cblx0XHQ8aW5wdXQgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tc3VibWl0IGNvZ25pdG8tYnV0dG9uXCIgdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJuZXdVc2VyRm9ybURpc2FibGVkKClcIiBbdmFsdWVdPVwic3RyaW5ncy5sYWJlbFN1Ym1pdFwiLz5cblx0PC9kaXY+XHRcblx0PGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvclwiIFtpbm5lckh0bWxdPVwiZXJyb3JcIj48L2Rpdj5cbjwvZm9ybT5cbjxmb3JtICpuZ0lmPVwic2hvd0Zvcm0gJiYgZm9ybVR5cGUgPT09IENvZ25pdG9Gb3JtVHlwZS5Vc2VyVmVyaWZpY2F0aW9uUmVxdWVzdFwiIGNsYXNzPVwiY29nbml0by1mb3JtXCIgKHN1Ym1pdCk9XCJvblJlcXVlc3RWZXJpZmljYXRpb25Db2RlKClcIj5cblx0PGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBjbG9zZVwiIChjbGljayk9XCJzaG93Rm9ybT1mYWxzZVwiIHR5cGU9XCJidXR0b25cIj48c3BhbiBjbGFzcz1cImJ1dHRvbnRleHRcIj57eyBzdHJpbmdzLmxhYmVsQ2xvc2UgfX08L3NwYW4+PC9idXR0b24+XG5cdDxkaXYgKm5nSWY9XCJwcm9tcHRcIiBjbGFzcz1cInByb21wdFwiIFtpbm5lckh0bWxdPVwicHJvbXB0XCI+PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWZvcm1yb3dcIj5cblx0XHQ8bGFiZWwgY2xhc3M9XCJjb2duaXRvLWxhYmVsXCIgZm9yPVwidXNlcm5hbWVcIj57eyBzdHJpbmdzLmxhYmVsRW1haWwgfX08L2xhYmVsPlxuXHRcdDxpbnB1dCBpZD1cInVzZXJuYW1lXCIgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tdGV4dFwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInVzZXJuYW1lXCIgWyhuZ01vZGVsKV09XCJtb2RlbC51c2VybmFtZVwiLz5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWJ1dHRvbnNcIj5cblx0XHQ8aW5wdXQgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tc3VibWl0IGNvZ25pdG8tYnV0dG9uXCIgdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCIhbW9kZWwudXNlcm5hbWVcIiBbdmFsdWVdPVwic3RyaW5ncy5sYWJlbFN1Ym1pdFwiLz5cblx0PC9kaXY+XHRcblx0PGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvclwiIFtpbm5lckh0bWxdPVwiZXJyb3JcIj48L2Rpdj5cbjwvZm9ybT5cbjxmb3JtICpuZ0lmPVwic2hvd0Zvcm0gJiYgZm9ybVR5cGUgPT09IENvZ25pdG9Gb3JtVHlwZS5Vc2VyUGFzc3dvcmRSZXNldFwiIGNsYXNzPVwiY29nbml0by1mb3JtXCIgKHN1Ym1pdCk9XCJvblVzZXJQYXNzd29yZFJlc2V0KClcIj5cblx0PGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBjbG9zZVwiIChjbGljayk9XCJzaG93Rm9ybT1mYWxzZVwiIHR5cGU9XCJidXR0b25cIj48c3BhbiBjbGFzcz1cImJ1dHRvbnRleHRcIj57eyBzdHJpbmdzLmxhYmVsQ2xvc2UgfX08L3NwYW4+PC9idXR0b24+XG5cdDxkaXYgKm5nSWY9XCJwcm9tcHRcIiBjbGFzcz1cInByb21wdFwiIFtpbm5lckh0bWxdPVwicHJvbXB0XCI+PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWZvcm1yb3dcIj5cblx0XHQ8bGFiZWwgY2xhc3M9XCJjb2duaXRvLWxhYmVsXCIgZm9yPVwiY3VycmVudC1wYXNzd29yZFwiPnt7IHN0cmluZ3MubGFiZWxDdXJyZW50UGFzc3dvcmQgfX08L2xhYmVsPlxuXHRcdDxpbnB1dCBpZD1cImN1cnJlbnQtcGFzc3dvcmRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cImNvZ25pdG8taW5wdXQgY29nbml0by10ZXh0XCIgdHlwZT1cInBhc3N3b3JkXCIgbmFtZT1cInBhc3N3b3JkXCIgWyhuZ01vZGVsKV09XCJtb2RlbC5wYXNzd29yZFwiLz5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWZvcm1yb3dcIj5cblx0XHQ8bGFiZWwgY2xhc3M9XCJjb2duaXRvLWxhYmVsXCIgZm9yPVwibmV3LXBhc3N3b3JkXCI+e3sgc3RyaW5ncy5sYWJlbE5ld1Bhc3N3b3JkIH19PC9sYWJlbD5cblx0XHQ8cCBjbGFzcz1cImNvZ25pdG8tc3VibGFiZWxcIj57eyBzdHJpbmdzLmxhYmVsUGFzc3dvcmRSZXF1aXJlbWVudCB9fTwvcD5cblx0XHQ8aW5wdXQgaWQ9XCJuZXctcGFzc3dvcmRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cImNvZ25pdG8taW5wdXQgY29nbml0by10ZXh0XCIgdHlwZT1cInBhc3N3b3JkXCIgbmFtZT1cInBhc3N3b3JkLW5ld1wiIFsobmdNb2RlbCldPVwibW9kZWwubmV3UGFzc3dvcmRcIi8+XG5cdDwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwiY29nbml0by1mb3Jtcm93XCI+XG5cdFx0PGxhYmVsIGNsYXNzPVwiY29nbml0by1sYWJlbFwiIGZvcj1cInBhc3N3b3JkLWNvbmZpcm1cIj57eyBzdHJpbmdzLmxhYmVsQ29uZmlybU5ld1Bhc3N3b3JkIH19PC9sYWJlbD5cblx0XHQ8aW5wdXQgaWQ9XCJwYXNzd29yZC1jb25maXJtXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tdGV4dFwiIHR5cGU9XCJwYXNzd29yZFwiIG5hbWU9XCJwYXNzd29yZC1jb25maXJtXCIgWyhuZ01vZGVsKV09XCJtb2RlbC5uZXdQYXNzd29yZENvbmZpcm1cIi8+XG5cdDwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwiY29nbml0by1idXR0b25zXCI+XG5cdFx0PGlucHV0IGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXN1Ym1pdCBjb2duaXRvLWJ1dHRvblwiIHR5cGU9XCJzdWJtaXRcIiBbZGlzYWJsZWRdPVwibmV3VXNlckZvcm1EaXNhYmxlZCgpXCIgW3ZhbHVlXT1cInN0cmluZ3MubGFiZWxTdWJtaXRcIi8+XG5cdDwvZGl2Plx0XG5cdDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIiBbaW5uZXJIdG1sXT1cImVycm9yXCI+PC9kaXY+XG48L2Zvcm0+XG48Zm9ybSAqbmdJZj1cInNob3dGb3JtICYmIGZvcm1UeXBlID09PSBDb2duaXRvRm9ybVR5cGUuUGFzc3dvcmRVcGRhdGVTdWNjZXNzZnVsXCIgY2xhc3M9XCJjb2duaXRvLWZvcm1cIiAoc3VibWl0KT1cInNob3dGb3JtID0gZmFsc2VcIj5cblx0PGRpdiBjbGFzcz1cInByb21wdFwiIFtpbm5lckh0bWxdPVwicHJvbXB0XCI+PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWJ1dHRvbnNcIj5cblx0XHQ8aW5wdXQgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tc3VibWl0IGNvZ25pdG8tYnV0dG9uXCIgdHlwZT1cInN1Ym1pdFwiIFt2YWx1ZV09XCJzdHJpbmdzLmxhYmVsQ2xvc2VcIi8+XG5cdDwvZGl2Plx0XG48L2Zvcm0+Il19
|
|
583
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0by5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvZ25pdG8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2xpYi9jb2duaXRvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFpQixLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRyxPQUFPLEVBQWUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU8sNEJBQTRCLENBQUM7QUFFbEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBVSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7O0FBT2pGLE1BQU0sT0FBTyxnQkFBZ0I7SUFtRDNCLFlBQW9CLE9BQXVCO1FBQXZCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBaERyQixjQUFTLEdBQW9DLEVBQUUsQ0FBQztRQUN6QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQ25CLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRzNDLGlCQUFZLEdBQVcsUUFBUSxDQUFDO1FBSTdCLG9CQUFlLEdBQVcsdUJBQXVCLENBQUM7UUFDM0QsV0FBTSxHQUFXLElBQUksQ0FBQztRQUUxQixRQUFHLEdBQVksSUFBSSxDQUFDO1FBQ3BCLFFBQUcsR0FBWSxLQUFLLENBQUM7UUFDZCxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRUwsa0NBQTZCLEdBQVksSUFBSSxDQUFDO1FBQ3RF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QkFBQyxZQUFZO2dCQUNLLGVBQWU7c0JBQXZDLE1BQU07dUJBQUMsZUFBZTtnQkFDSCxVQUFVO3NCQUE3QixNQUFNO3VCQUFDLFVBQVU7Z0JBQ1MsaUJBQWlCO3NCQUEzQyxNQUFNO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBIb3N0QmluZGluZywgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2duaXRvU2VydmljZSB9IGZyb20gXCIuL2NvZ25pdG8uc2VydmljZVwiO1xuaW1wb3J0IHsgQ29nbml0b1VzZXIsIENvZ25pdG9Vc2VyU2Vzc2lvbiwgQ29nbml0b0lkVG9rZW4sIENvZ25pdG9BY2Nlc3NUb2tlbiB9ICBmcm9tICdhbWF6b24tY29nbml0by1pZGVudGl0eS1qcyc7XG5pbXBvcnQgeyBJQ29nbml0b1Jlc3BvbnNlLCBJQ29nbml0b1VzZXJEYXRhIH0gZnJvbSBcIi4vY29nbml0by5pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBDb2duaXRvU3RyaW5ncyB9IGZyb20gXCIuL2NvZ25pdG8uY2xhc3Nlc1wiO1xuaW1wb3J0IHsgQ29nbml0b1Jlc3BvbnNlVHlwZSwgQ29nbml0b1JlcXVlc3RUeXBlLCBDb2duaXRvRm9ybVR5cGUgfSBmcm9tIFwiLi9jb2duaXRvLnR5cGVzXCI7XG5pbXBvcnQgeyB1bnNuYWtlLCB0aWNrLCBwYXJhbXMsIHRyaW0gfSBmcm9tIFwiLi9jb2duaXRvLnV0aWxzXCI7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IHN0YXJ0QXV0aGVudGljYXRpb24sIHN0YXJ0UmVnaXN0cmF0aW9uIH0gZnJvbSAnQHNpbXBsZXdlYmF1dGhuL2Jyb3dzZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjb2duaXRvJyxcbiAgdGVtcGxhdGVVcmw6IFwiLi9jb2duaXRvLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogWyBcIi4vY29nbml0by5jb21wb25lbnQubGVzc1wiIF1cbn0pXG5leHBvcnQgY2xhc3MgQ29nbml0b0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cblxuICBASG9zdEJpbmRpbmcoXCJzdHlsZVwiKSBob3N0U3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4gPSB7fTtcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MucmVuZGVyXCIpIHNob3dGb3JtOiBib29sZWFuID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZyhcImNsYXNzLnRyYW5zaXRpb25pbmdcIikgdHJhbnNpdGlvbmluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dChcInBvb2wtaWRcIikgcG9vbElkITogc3RyaW5nO1xuICBASW5wdXQoXCJwcm92aWRlci1uYW1lXCIpIHByb3ZpZGVyTmFtZTogc3RyaW5nID0gXCJHb29nbGVcIjtcbiAgQElucHV0KFwiY2xpZW50LWlkXCIpIGNsaWVudElkITogc3RyaW5nO1xuICBASW5wdXQoXCJjb2duaXRvLXNpZ25pbi11cmxcIikgY29nbml0b1VybD86IHN0cmluZztcbiAgQElucHV0KFwicmVnaW9uXCIpIHJlZ2lvbiE6IHN0cmluZztcbiAgQElucHV0KFwibW9kYWwtYmFja2dyb3VuZFwiKSBtb2RhbEJhY2tncm91bmQ6IHN0cmluZyA9IFwicmdiYSgyNTUsMjU1LDI1NSwwLjUpXCI7XG4gIEBJbnB1dChcInotaW5kZXhcIikgekluZGV4OiBudW1iZXIgPSAxMDAwO1xuICBASW5wdXQoXCJob29rXCIpIGhvb2s/OiAoc3RhdGU6IGFueSkgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgQElucHV0KFwic3JwXCIpIHNycDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dChcIm90cFwiKSBvdHA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KFwibWFnaWMtbGlua1wiKSBtYWdpY0xpbms6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KFwibWFnaWMtbGluay1nZW5lcmF0b3JcIikgbWFnaWNMaW5rR2VuZXJhdG9yPzogUHJvbWlzZTxib29sZWFuPjtcbiAgQElucHV0KFwicmVsb2FkLWFmdGVyLWxpbmstYXV0aGVudGljYXRpb25cIikgcmVsb2FkQWZ0ZXJMaW5rQXV0aGVudGljYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoXCJwYXNza2V5c1wiKSBwYXNza2V5czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dChcInBhc3NrZXlzLWdldC11c2VyLWlkXCIpIGdldFVzZXJJZCE6ICh1c2VybmFtZTogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZz47XG4gIEBJbnB1dChcInBhc3NrZXlzLWdlbmVyYXRlLWF1dGhlbnRpY2F0aW9uLW9wdGlvbnNcIikgZ2VuZXJhdGVBdXRoZW50aWNhdGlvbk9wdGlvbnMhOiAoZW1haWw6IHN0cmluZykgPT4gUHJvbWlzZTxhbnk+O1xuICBASW5wdXQoXCJwYXNza2V5cy1nZW5lcmF0ZS1yZWdpc3RyYXRpb24tb3B0aW9uc1wiKSBnZW5lcmF0ZVJlZ2lzdHJhdGlvbk9wdGlvbnMhOiAodG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxhbnk+O1xuICBASW5wdXQoXCJwYXNza2V5cy12ZXJpZnktcmVnaXN0cmF0aW9uXCIpIHZlcmlmeVJlZ2lzdHJhdGlvbiE6IChpbnB1dDogYW55LCB0b2tlbjogc3RyaW5nICkgPT4gUHJvbWlzZTxhbnk+O1xuICBASW5wdXQoXCJwYXNza2V5cy12ZXJpZnktYXV0aGVudGljYXRpb25cIikgdmVyaWZ5QXV0aGVudGljYXRpb24hOiAoaW5wdXQ6IGFueSkgPT4gUHJvbWlzZTxhbnk+O1xuXG4gIEBPdXRwdXQoXCJyZWFkeVwiKSBvblJlYWR5OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dChcImNvbm5lY3RpbmdcIikgb25Db25uZWN0aW5nOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoXCJhdXRoZW50aWNhdGVkXCIpIG9uQXV0aGVudGljYXRlZDogRXZlbnRFbWl0dGVyPElDb2duaXRvVXNlckRhdGEgfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dChcInJlc3BvbnNlXCIpIG9uUmVzcG9uc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpOyBcbiAgQE91dHB1dChcInVzZXJuYW1lRW50ZXJlZFwiKSBvblVzZXJuYW1lRW50ZXJlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIG1vZGVsOiBhbnkgPSB7IHVzZXJuYW1lOiBudWxsLCBwYXNzd29yZDogbnVsbH07XG4gIHB1YmxpYyBjb21wb25lbnRTdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHt9O1xuICBwdWJsaWMgZm9ybVR5cGU6IENvZ25pdG9Gb3JtVHlwZSB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgQ29nbml0b0Zvcm1UeXBlID0gQ29nbml0b0Zvcm1UeXBlO1xuICBwdWJsaWMgcm93czogYW55W10gPSBbXTtcbiAgcHVibGljIGVycm9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIHByb21wdDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBjYWNoZTogSUNvZ25pdG9SZXNwb25zZSB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgc3RyaW5ncyA9IENvZ25pdG9TdHJpbmdzO1xuICBwdWJsaWMgc2hvd1Bhc3N3b3JkRmllbGQ6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgc2hvd0VtYWlsU3VibWl0QnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICBwcml2YXRlIHNlc3Npb246IENvZ25pdG9Vc2VyU2Vzc2lvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHVzZXI6IENvZ25pdG9Vc2VyIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBwYXNza2V5QXV0aE9wdGlvbnM/OiBhbnk7XG4gIHB1YmxpYyBwYXNza2V5UmVnT3B0aW9ucz86IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvZ25pdG86IENvZ25pdG9TZXJ2aWNlKSB7XG4gICAgXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBcbiAgICB0aGlzLmNvZ25pdG8uaW5pdGlhbGl6ZSh0aGlzLnBvb2xJZCwgdGhpcy5jbGllbnRJZCk7XG5cbiAgICB0aGlzLmNvZ25pdG8uZm9ybSQuc3Vic2NyaWJlKGZvcm0gPT4ge1xuICAgICAgdGhpcy5mb3JtVHlwZSA9IGZvcm07XG4gICAgICB0aGlzLnNob3dDdXJyZW50Rm9ybSgpO1xuICAgIH0pO1xuICAgIFxuICAgIHRoaXMuY29nbml0by5zZXNzaW9uJC5zdWJzY3JpYmUoc2Vzc2lvbiA9PiB7XG4gICAgICB0aGlzLnNlc3Npb24gPSBzZXNzaW9uO1xuICAgIH0pO1xuICAgIHRoaXMuY29nbml0by51c2VyJC5zdWJzY3JpYmUodXNlciA9PiB7XG4gICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgIH0pO1xuXG4gICAgaWYodGhpcy5vdHAgfHwgdGhpcy5tYWdpY0xpbmsgfHwgdGhpcy5wYXNza2V5cykge1xuICAgICAgdGhpcy5zaG93UGFzc3dvcmRGaWVsZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaW5pdGlhbGl6ZSgpKTtcbiAgfVxuXG4gIG9uRW50ZXJVc2VybmFtZSgpIHtcbiAgICB0aGlzLnNob3dFbWFpbFN1Ym1pdEJ1dHRvbiA9IGZhbHNlO1xuICAgIHRoaXMub25Vc2VybmFtZUVudGVyZWQuZW1pdCh0aGlzLm1vZGVsLnVzZXJuYW1lIS5yZXBsYWNlKC9cXHMrL2dpbSxcIlwiKSk7XG4gIH1cblxuICB1cGRhdGVCdXR0b25zKCkge1xuICAgIGlmKHRoaXMub3RwIHx8IHRoaXMubWFnaWNMaW5rIHx8IHRoaXMucGFzc2tleXMpIHtcbiAgICAgIHRoaXMuc2hvd1Bhc3N3b3JkRmllbGQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2dpbigpIHtcblxuICAgIGlmKCF0aGlzLnNycCAmJiB0aGlzLm90cCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0T3RwKCk7XG4gICAgfSBlbHNlIGlmKCF0aGlzLnNycCAmJiB0aGlzLm1hZ2ljTGluaykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TWFnaWNMaW5rKCk7XG4gICAgfSBlbHNlIGlmKCF0aGlzLnNycCAmJiB0aGlzLnBhc3NrZXlzKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRQYXNza2V5KCk7XG4gICAgfSBlbHNlIGlmKCF0aGlzLnNycCkge1xuICAgICAgcmV0dXJuIHRoaXMub25FbnRlclVzZXJuYW1lKCk7XG4gICAgfVxuXG4gICAgbGV0IHJlc3BvbnNlOiBJQ29nbml0b1Jlc3BvbnNlO1xuICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgIHRoaXMubW9kZWwucGFzc3dvcmQgPSB0cmltKHRoaXMubW9kZWwucGFzc3dvcmQpO1xuXG4gICAgaWYodGhpcy5ob29rKSB7XG4gICAgICBjb25zdCBwcm9jZWVkID0gYXdhaXQgdGhpcy5ob29rKHsgXCJzdGF0ZVwiOiBcImJlZm9yZS1sb2dpblwiLCBtb2RlbDogdGhpcy5tb2RlbCB9KTtcbiAgICAgIGlmKCFwcm9jZWVkKSByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVzZXJuYW1lID0gdGhpcy5tb2RlbC51c2VybmFtZSEucmVwbGFjZSgvXFxzKy9naW0sXCJcIik7XG4gICAgICB0aGlzLm9uQ29ubmVjdGluZy5lbWl0KHRydWUpO1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvZ25pdG8uYXV0aGVudGljYXRlKHVzZXJuYW1lLCB0aGlzLm1vZGVsLnBhc3N3b3JkISk7XG4gICAgfSBjYXRjaChlOiBhbnkpIHtcbiAgICAgIHJlc3BvbnNlID0gZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZShyZXNwb25zZSEpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldE90cCgpIHtcbiAgICBsZXQgcmVzcG9uc2U6IElDb2duaXRvUmVzcG9uc2U7XG4gICAgdGhpcy5lcnJvciA9IG51bGw7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5vbkNvbm5lY3RpbmcuZW1pdCh0cnVlKTtcblxuICAgICAgY29uc3QgdXNlcm5hbWUgPSB0aGlzLm1vZGVsLnVzZXJuYW1lIS5yZXBsYWNlKC9cXHMrL2dpbSxcIlwiKTtcbiAgICAgIGNvbnN0IG90cCA9IHRoaXMubW9kZWwub3RwID8gdHJpbSh0aGlzLm1vZGVsLm90cCkgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMuc3JwID0gZmFsc2U7XG4gICAgICB0aGlzLm1hZ2ljTGluayA9IGZhbHNlO1xuICAgICAgdGhpcy5wYXNza2V5cyA9IGZhbHNlO1xuXG4gICAgICBpZih0aGlzLmhvb2spIHtcbiAgICAgICAgY29uc3QgcHJvY2VlZCA9IGF3YWl0IHRoaXMuaG9vayh7IFwic3RhdGVcIjogXCJiZWZvcmUtb3RwLXJlcXVlc3RcIiwgbW9kZWw6IHRoaXMubW9kZWwgfSk7XG4gICAgICAgIGlmKCFwcm9jZWVkKSByZXR1cm4gdGhpcy5jb25uZWN0aW9uQ29tcGxldGUoKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgcmVzcG9uc2UgID0gYXdhaXQgdGhpcy5jb2duaXRvLm90cEF1dGhlbnRpY2F0ZSh1c2VybmFtZSwgb3RwKTtcblxuICAgICAgaWYodGhpcy5ob29rKSB7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBwcm9jZWVkID0gYXdhaXQgdGhpcy5ob29rKHsgXCJzdGF0ZVwiOiBcImFmdGVyLW90cC1yZXF1ZXN0XCIsIG1vZGVsOiB0aGlzLm1vZGVsLCBzZXNzaW9uSWQ6IHJlc3BvbnNlLnVzZXIuU2Vzc2lvbiB9KTtcbiAgICAgICAgaWYoIXByb2NlZWQpIHRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBwcm9jZWVkXCIpO1xuICAgICAgfVxuICAgIH0gY2F0Y2goZTogYW55KSB7XG4gICAgICByZXNwb25zZSA9IGU7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzcG9uc2UhKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRNYWdpY0xpbmsoKSB7XG4gICAgXG4gICAgbGV0IHJlc3BvbnNlOiBJQ29nbml0b1Jlc3BvbnNlO1xuICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVzZXJuYW1lID0gdGhpcy5tb2RlbC51c2VybmFtZSEucmVwbGFjZSgvXFxzKy9naW0sXCJcIik7XG4gICAgICB0aGlzLm9uQ29ubmVjdGluZy5lbWl0KHRydWUpO1xuXG4gICAgICBpZih0aGlzLmhvb2spIHtcbiAgICAgICAgY29uc3QgcHJvY2VlZCA9IGF3YWl0IHRoaXMuaG9vayh7IFwic3RhdGVcIjogXCJiZWZvcmUtbWFnaWMtbGluay1yZXF1ZXN0XCIsIG1vZGVsOiB0aGlzLm1vZGVsIH0pO1xuICAgICAgICBpZighcHJvY2VlZCkgcmV0dXJuIHRoaXMuY29ubmVjdGlvbkNvbXBsZXRlKCk7XG4gICAgICB9XG5cbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb2duaXRvLm1hZ2ljTGlua0F1dGhlbnRpY2F0ZSh1c2VybmFtZSk7XG4gICAgICBcbiAgICAgIGlmKHRoaXMuaG9vaykge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgcHJvY2VlZCA9IGF3YWl0IHRoaXMuaG9vayh7IFwic3RhdGVcIjogXCJhZnRlci1tYWdpYy1saW5rLXJlcXVlc3RcIiwgbW9kZWw6IHRoaXMubW9kZWwsIHNlc3Npb25JZDogcmVzcG9uc2UudXNlci5TZXNzaW9uIH0pO1xuICAgICAgICBpZighcHJvY2VlZCkgcmV0dXJuIHRoaXMuY29ubmVjdGlvbkNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaChlOiBhbnkpIHtcbiAgICAgIHJlc3BvbnNlID0gZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5jb25uZWN0aW9uQ29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBwcm9jZXNzTWFnaWNMaW5rKGVtYWlsOiBzdHJpbmcsIGNvZGU6IHN0cmluZywgc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5vbkNvbm5lY3RpbmcuZW1pdCh0cnVlKTtcbiAgICAgIGF3YWl0IHRoaXMuY29nbml0by5tYWdpY0xpbmtBdXRoZW50aWNhdGUoZW1haWwsIGNvZGUsIHNlc3Npb25JZCk7XG4gICAgICBpZih0aGlzLnJlbG9hZEFmdGVyTGlua0F1dGhlbnRpY2F0aW9uKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub25BdXRoZW50aWNhdGVkLmVtaXQodGhpcy5nZXRVc2VyRGF0YSgpKTsgLy9jb25uZWN0ZWRcbiAgICAgICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25Db21wbGV0ZSgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2goZTogYW55KSB7IH0gXG4gIH1cblxuICBhc3luYyBnZXRQYXNza2V5KCkge1xuICAgIGNvbnN0IHVzZXJuYW1lID0gdGhpcy5tb2RlbC51c2VybmFtZSEucmVwbGFjZSgvXFxzKy9naW0sXCJcIik7XG4gICAgdGhpcy5wYXNza2V5QXV0aE9wdGlvbnMgPSBhd2FpdCB0aGlzLmdlbmVyYXRlQXV0aGVudGljYXRpb25PcHRpb25zKHVzZXJuYW1lKTtcbiAgICBcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHRoaXMucGFzc2tleUF1dGhPcHRpb25zPy5hbGxvd0NyZWRlbnRpYWxzID8/IFtdO1xuICAgIGlmKCFjcmVkZW50aWFscy5sZW5ndGggJiYgIXRoaXMubW9kZWwucGFzc2tleSkgdGhpcy5zZW5kUGFzc2tleUNvZGUoKTtcbiAgICBlbHNlIGlmKCFjcmVkZW50aWFscy5sZW5ndGgpIHRoaXMucmVnaXN0ZXJQYXNza2V5KCk7XG4gICAgZWxzZSB0aGlzLnVzZVBhc3NrZXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZFBhc3NrZXlDb2RlKCkge1xuICAgIGNvbnN0IHVzZXJuYW1lID0gdGhpcy5tb2RlbC51c2VybmFtZSEucmVwbGFjZSgvXFxzKy9naW0sXCJcIik7XG4gICAgY29uc3QgdG9rZW4gPSBhd2FpdCB0aGlzLmdldFVzZXJJZCh1c2VybmFtZSk7XG4gICAgdGhpcy5zcnAgPSBmYWxzZTtcbiAgICB0aGlzLm90cCA9IGZhbHNlO1xuICAgIHRoaXMubWFnaWNMaW5rID0gZmFsc2U7XG4gICAgdGhpcy5tb2RlbC5zaG93Q2hhbGxlbmdlRW50cnkgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1c2VQYXNza2V5KCkge1xuICAgIGNvbnN0IHVzZXJuYW1lID0gdGhpcy5tb2RlbC51c2VybmFtZSEucmVwbGFjZSgvXFxzKy9naW0sXCJcIik7XG4gICAgdGhpcy5vbkNvbm5lY3RpbmcuZW1pdCh0cnVlKTtcbiAgICBjb25zdCBhdXRoZW50aWNhdGlvbiA9IGF3YWl0IHN0YXJ0QXV0aGVudGljYXRpb24odGhpcy5wYXNza2V5QXV0aE9wdGlvbnMpO1xuICAgIGNvbnN0IG91dGNvbWUgPSBhd2FpdCB0aGlzLnZlcmlmeUF1dGhlbnRpY2F0aW9uKGF1dGhlbnRpY2F0aW9uKTtcbiAgICBhd2FpdCB0aGlzLmNvZ25pdG8ucGFzc2tleUF1dGhlbnRpY2F0ZSh1c2VybmFtZSk7XG4gICAgXG4gICAgaWYob3V0Y29tZS52ZXJpZmllZCkge1xuICAgICAgYXdhaXQgdGhpcy5jb2duaXRvLnBhc3NrZXlBdXRoZW50aWNhdGUodXNlcm5hbWUsIG91dGNvbWUudWlkKTtcbiAgICAgIHRoaXMub25BdXRoZW50aWNhdGVkLmVtaXQodGhpcy5nZXRVc2VyRGF0YSgpKTtcbiAgICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcbiAgICAgIHRoaXMuY29ubmVjdGlvbkNvbXBsZXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWdpc3RlclBhc3NrZXkoKSB7XG4gICAgY29uc3QgdXNlcm5hbWUgPSB0aGlzLm1vZGVsLnVzZXJuYW1lIS5yZXBsYWNlKC9cXHMrL2dpbSxcIlwiKTtcbiAgICBjb25zdCBjb2RlID0gdGhpcy5tb2RlbC5wYXNza2V5IS5yZXBsYWNlKC9cXHMrL2dpbSxcIlwiKTtcblxuICAgIHRoaXMub25Db25uZWN0aW5nLmVtaXQodHJ1ZSk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVSZWdpc3RyYXRpb25PcHRpb25zKGNvZGUpO1xuICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IHN0YXJ0UmVnaXN0cmF0aW9uKG9wdGlvbnMpO1xuICAgIGNvbnN0IG91dGNvbWUgPSBhd2FpdCB0aGlzLnZlcmlmeVJlZ2lzdHJhdGlvbihyZWdpc3RyYXRpb24sIGNvZGUpO1xuICAgIGF3YWl0IHRoaXMuY29nbml0by5wYXNza2V5QXV0aGVudGljYXRlKHVzZXJuYW1lKTtcbiAgICBcbiAgICBpZihvdXRjb21lLnZlcmlmaWVkKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvZ25pdG8ucGFzc2tleUF1dGhlbnRpY2F0ZSh1c2VybmFtZSwgb3V0Y29tZS51aWQpO1xuICAgICAgdGhpcy5vbkF1dGhlbnRpY2F0ZWQuZW1pdCh0aGlzLmdldFVzZXJEYXRhKCkpO1xuICAgICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xuICAgICAgdGhpcy5jb25uZWN0aW9uQ29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvbk5ld1VzZXIoKSB7XG4gICAgbGV0IHJlc3BvbnNlOiBJQ29nbml0b1Jlc3BvbnNlO1xuICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgIHRoaXMubW9kZWwubmV3UGFzc3dvcmQgPSB0cmltKHRoaXMubW9kZWwubmV3UGFzc3dvcmQpO1xuXG4gICAgaWYodGhpcy5ob29rKSB7XG4gICAgICBjb25zdCBwcm9jZWVkID0gYXdhaXQgdGhpcy5ob29rKHsgXCJzdGF0ZVwiOiBcImJlZm9yZS1yZWdpc3RyYXRpb25cIiwgbW9kZWw6IHRoaXMubW9kZWwgfSk7XG4gICAgICBpZighcHJvY2VlZCkgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICB0cnkge1xuICAgICAgdGhpcy5vbkNvbm5lY3RpbmcuZW1pdCh0cnVlKTtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb2duaXRvLmNvbXBsZXRlUGFzc3dvcmRVcGRhdGUodGhpcy5tb2RlbC5uZXdQYXNzd29yZCEsIHRoaXMuY2FjaGUhLnVzZXIsIHRoaXMuZ2V0VXNlckF0dHJpYnV0ZXMoKSk7XG4gICAgfSBjYXRjaChlOiBhbnkpIHtcbiAgICAgIHJlc3BvbnNlID0gZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZShyZXNwb25zZSEpO1xuICAgIH1cblxuICB9XG5cbiAgYXN5bmMgb25Gb3JjZVBhc3N3b3JkUmVzZXQoKSB7XG4gICAgXG4gICAgdGhpcy5tb2RlbC5jb2RlID0gdHJpbSh0aGlzLm1vZGVsLmNvZGUpO1xuICAgIHRoaXMubW9kZWwubmV3UGFzc3dvcmQgPSB0cmltKHRoaXMubW9kZWwubmV3UGFzc3dvcmQpO1xuICAgIHRoaXMub25Db25uZWN0aW5nLmVtaXQodHJ1ZSk7XG5cbiAgICBpZih0aGlzLmhvb2spIHtcbiAgICAgIGNvbnN0IHByb2NlZWQgPSBhd2FpdCB0aGlzLmhvb2soeyBcInN0YXRlXCI6IFwiYmVmb3JlLWZvcmNlLXBhc3N3b3JkLXJlc2V0XCIsIG1vZGVsOiB0aGlzLm1vZGVsIH0pO1xuICAgICAgaWYoIXByb2NlZWQpIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb2duaXRvLmNvbmZpcm1QYXNzd29yZCh0aGlzLmNhY2hlIS51c2VyLCB0aGlzLm1vZGVsLmNvZGUsIHRoaXMubW9kZWwubmV3UGFzc3dvcmQpO1xuICAgICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgICB0aGlzLnRyYW5zaXRpb25pbmcgPSB0cnVlO1xuICAgICAgYXdhaXQgdGljaygyNTApO1xuICAgICAgdGhpcy5mb3JtVHlwZSA9IENvZ25pdG9Gb3JtVHlwZS5Mb2dpbjtcbiAgICAgIHRoaXMuc2V0TWVzc2FnaW5nKHJlc3BvbnNlLCBDb2duaXRvU3RyaW5ncy5vblVzZXJQYXNzd29yZENoYW5nZVN1Y2Nlc3NmdWwpO1xuICAgICAgYXdhaXQgdGljaygwKTtcbiAgICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICAgIH0gY2F0Y2goZTogYW55KSB7XG4gICAgICB0aGlzLnNldE1lc3NhZ2luZyhlIGFzIElDb2duaXRvUmVzcG9uc2UpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9uQ29ubmVjdGluZy5lbWl0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvblVzZXJQYXNzd29yZFJlc2V0KCkge1xuXG4gICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgdGhpcy5vbkNvbm5lY3RpbmcuZW1pdCh0cnVlKTtcblxuICAgIHRoaXMubW9kZWwucGFzc3dvcmQgPSB0cmltKHRoaXMubW9kZWwucGFzc3dvcmQpO1xuICAgIHRoaXMubW9kZWwubmV3UGFzc3dvcmQgPSB0cmltKHRoaXMubW9kZWwubmV3UGFzc3dvcmQpO1xuXG4gICAgaWYodGhpcy5ob29rKSB7XG4gICAgICBjb25zdCBwcm9jZWVkID0gYXdhaXQgdGhpcy5ob29rKHsgXCJzdGF0ZVwiOiBcImJlZm9yZS11c2VyLXBhc3N3b3JkLXJlc2V0XCIsIG1vZGVsOiB0aGlzLm1vZGVsIH0pO1xuICAgICAgaWYoIXByb2NlZWQpIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb2duaXRvLnJlc2V0UGFzc3dvcmQodGhpcy51c2VyISwgdGhpcy5tb2RlbC5wYXNzd29yZCEsIHRoaXMubW9kZWwubmV3UGFzc3dvcmQpO1xuICAgICAgdGhpcy50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICAgIGF3YWl0IHRpY2soMjUwKTtcbiAgICAgIHRoaXMuZm9ybVR5cGUgPSBDb2duaXRvRm9ybVR5cGUuUGFzc3dvcmRVcGRhdGVTdWNjZXNzZnVsO1xuICAgICAgdGhpcy5wcm9tcHQgPSBDb2duaXRvU3RyaW5ncy5vblBhc3N3b3JkVXBkYXRlZDtcbiAgICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgICAgYXdhaXQgdGljaygpO1xuICAgICAgdGhpcy50cmFuc2l0aW9uaW5nID0gZmFsc2U7XG4gICAgfSBjYXRjaChlOiBhbnkpIHtcbiAgICAgIHRoaXMuc2V0TWVzc2FnaW5nKGUgYXMgSUNvZ25pdG9SZXNwb25zZSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMub25Db25uZWN0aW5nLmVtaXQoZmFsc2UpO1xuICAgIH1cblxuICB9XG5cbiAgYXN5bmMgb25Gb3Jnb3RQYXNzd29yZCgkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgXG4gICAgdGhpcy50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICBhd2FpdCB0aWNrKDI1MCk7XG4gICAgdGhpcy5mb3JtVHlwZSA9IENvZ25pdG9Gb3JtVHlwZS5Vc2VyVmVyaWZpY2F0aW9uUmVxdWVzdDtcbiAgICB0aGlzLnByb21wdCA9IENvZ25pdG9TdHJpbmdzLm9uVmVyaWZpY2F0aW9uQ29kZVNlbnQ7XG4gICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgYXdhaXQgdGljaygpO1xuICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgb25SZXF1ZXN0VmVyaWZpY2F0aW9uQ29kZSgpIHtcblxuICAgIGNvbnN0IHVzZXJuYW1lID0gdGhpcy5tb2RlbC51c2VybmFtZSEucmVwbGFjZSgvXFxzKy9naW0sXCJcIik7XG4gICAgY29uc3QgbW9kZWwgPSB7IHVzZXJuYW1lIH07XG5cbiAgICBpZih0aGlzLmhvb2spIHtcbiAgICAgIGNvbnN0IHByb2NlZWQgPSBhd2FpdCB0aGlzLmhvb2soeyBcInN0YXRlXCI6IFwicmVxdWVzdC12ZXJpZmljYXRpb24tY29kZVwiLCBcInVzZXJuYW1lXCI6IHVzZXJuYW1lLCBtb2RlbCB9KTtcbiAgICAgIGlmKCFwcm9jZWVkKSByZXR1cm47XG4gICAgICB0aGlzLm1vZGVsLnVzZXJuYW1lID0gbW9kZWwudXNlcm5hbWU7XG4gICAgfVxuXG4gICAgdGhpcy5vbkNvbm5lY3RpbmcuZW1pdCh0cnVlKTtcbiAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICBcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvZ25pdG8ucmVxdWVzdFZlcmlmaWNhdGlvbkNvZGUobW9kZWwudXNlcm5hbWUpO1xuICAgICAgdGhpcy50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICAgIGF3YWl0IHRpY2soMjUwKTtcbiAgICAgIHRoaXMuc2V0TWVzc2FnaW5nKHJlc3BvbnNlLCBDb2duaXRvU3RyaW5ncy5vbk5ld1Bhc3N3b3JkUmVxdWlyZWQpO1xuICAgICAgdGhpcy5zaG93UGFzc3dvcmRSZXNldEZvcm0ocmVzcG9uc2UsIGZhbHNlKTtcbiAgICB9IGNhdGNoKGU6IGFueSkge1xuICAgICAgdGhpcy5zZXRNZXNzYWdpbmcoZSBhcyBJQ29nbml0b1Jlc3BvbnNlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5jb25uZWN0aW9uQ29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBuZXdVc2VyRm9ybURpc2FibGVkKCkge1xuICAgIGxldCBkaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2FjaGU/LnJlcXVpcmVkQXR0cmlidXRlcz8uZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYoIXRoaXMubW9kZWxba2V5XSkgZGlzYWJsZWQgPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgaWYoIXRoaXMubW9kZWwubmV3UGFzc3dvcmQgfHwgIXRoaXMubW9kZWwubmV3UGFzc3dvcmRDb25maXJtKSB7XG4gICAgICBkaXNhYmxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYodGhpcy5tb2RlbC5uZXdQYXNzd29yZCAhPT0gdGhpcy5tb2RlbC5uZXdQYXNzd29yZENvbmZpcm0pIHtcbiAgICAgIGRpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGluaXRpYWxpemUoKSB7XG5cblxuICAgIHRyeSB7XG4gICAgICBpZih0aGlzLmNvZ25pdG9VcmwgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJlbXNfYWNjZXNzX3Rva2VuXCIpKSB7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBpbmZvID0gYXdhaXQgdGhpcy5jb2duaXRvLmdldFVzZXJJbmZvKHRoaXMuY29nbml0b1VybCkgYXMgSUNvZ25pdG9Vc2VyRGF0YTtcblxuICAgICAgICAvL2VtdWxhdGUgY29nbml0byB1c2VyL3Nlc3Npb24gZm9yIGZlZGVyYXRlZCBsb2dpblxuICAgICAgICB0aGlzLnNlc3Npb24gPSBuZXcgQ29nbml0b1VzZXJTZXNzaW9uKHtcbiAgICAgICAgICBJZFRva2VuOiBuZXcgQ29nbml0b0lkVG9rZW4oeyBJZFRva2VuOiBpbmZvLmlkVG9rZW4gfSksXG4gICAgICAgICAgQWNjZXNzVG9rZW46IG5ldyBDb2duaXRvQWNjZXNzVG9rZW4oeyBBY2Nlc3NUb2tlbjogaW5mby5hY2Nlc3NUb2tlbiB9KSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29nbml0by5jcmVhdGVGZWRlcmF0ZWRTZXNzaW9uKGluZm8uaWRUb2tlbiwgaW5mby5hY2Nlc3NUb2tlbilcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmKHRoaXMuc2Vzc2lvbikge1xuICAgICAgICB0aGlzLm9uQXV0aGVudGljYXRlZC5lbWl0KHRoaXMuZ2V0VXNlckRhdGEoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVSZXNwb25zZShyZXNwb25zZTogSUNvZ25pdG9SZXNwb25zZSkge1xuXG4gICAgdGhpcy50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICBcbiAgICBhd2FpdCB0aWNrKDI1MCk7XG5cbiAgICB0aGlzLnNldE1lc3NhZ2luZyhyZXNwb25zZSk7XG4gICAgdGhpcy5jYWNoZSA9IHJlc3BvbnNlLnVzZXJBdHRyaWJ1dGVzID8gcmVzcG9uc2UgOiB0aGlzLmNhY2hlO1xuXG4gICAgaWYocmVzcG9uc2UuZXJyb3I/LmNvZGUgPT09IENvZ25pdG9SZXNwb25zZVR5cGUuTm90QXV0aG9yaXplZCAmJiByZXNwb25zZS5yZXF1ZXN0ID09PSBDb2duaXRvUmVxdWVzdFR5cGUuQXV0aGVudGljYXRpb24pIHtcbiAgICAgIHRoaXMuY29ubmVjdGlvbkNvbXBsZXRlKCk7IC8vbGlrZWx5IGJhZCBwYXNzd29yZCBvciB0b28gbWFueSBhdHRlbXB0c1xuICAgIH0gZWxzZSBpZihyZXNwb25zZS5lcnJvcj8uY29kZSA9PT0gQ29nbml0b1Jlc3BvbnNlVHlwZS5Gb3JjZVBhc3N3b3JkUmVzZXQgJiYgcmVzcG9uc2UucmVxdWVzdCA9PT0gQ29nbml0b1JlcXVlc3RUeXBlLkF1dGhlbnRpY2F0aW9uKSB7XG4gICAgICB0aGlzLmluaXRpYXRlUGFzc3dvcmRSZXNldChyZXNwb25zZSk7IC8vYWRtaW4gaGFzIGZvcmNlZCB1c2VyIHBhc3N3b3JkIHJlc2V0XG4gICAgfSBlbHNlIGlmKHJlc3BvbnNlLnR5cGUgPT09IENvZ25pdG9SZXNwb25zZVR5cGUuT3RwQ2hhbGxlbmdlKSB7XG4gICAgICB0aGlzLm1vZGVsLnNob3dDaGFsbGVuZ2VFbnRyeSA9IHRydWU7XG4gICAgICB0aGlzLmNvbm5lY3Rpb25Db21wbGV0ZSgpO1xuICAgIH0gZWxzZSBpZihyZXNwb25zZS50eXBlID09PSBDb2duaXRvUmVzcG9uc2VUeXBlLlBhc3N3b3JkUmVzZXQgJiYgcmVzcG9uc2UucmVxdWVzdCA9PT0gQ29nbml0b1JlcXVlc3RUeXBlLkF1dGhlbnRpY2F0aW9uKSB7XG4gICAgICB0aGlzLnByb21wdCA9IENvZ25pdG9TdHJpbmdzLm9uRmlyc3RMb2dpbjtcbiAgICAgIHRoaXMuc2hvd1Bhc3N3b3JkUmVzZXRGb3JtKHJlc3BvbnNlKTsgLy9uZXcgdXNlclxuICAgIH0gZWxzZSBpZighcmVzcG9uc2UuZXJyb3I/LmNvZGUgJiYgKHJlc3BvbnNlLnJlcXVlc3QgPT09IENvZ25pdG9SZXF1ZXN0VHlwZS5BdXRoZW50aWNhdGlvbiB8fCByZXNwb25zZS50eXBlID09PSBDb2duaXRvUmVzcG9uc2VUeXBlLkF1dGhlbnRpY2F0ZWQgKSkge1xuICAgICAgdGhpcy5vbkF1dGhlbnRpY2F0ZWQuZW1pdCh0aGlzLmdldFVzZXJEYXRhKCkpOyAvL2Nvbm5lY3RlZFxuICAgICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xuICAgICAgdGhpcy5jb25uZWN0aW9uQ29tcGxldGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25uZWN0aW9uQ29tcGxldGUoKTsgLy91bnN1cHBvcnRlZCByZXNwb25zZSAtLSBob3BlZnVsbHkgZGVzY3JpYmVkIGluIG1lc3NhZ2luZ1xuICAgIH1cblxuICAgIHRoaXMub25SZXNwb25zZS5lbWl0KHsgcmVzcG9uc2UsIG1vZGVsOiB0aGlzLm1vZGVsIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpbml0aWF0ZVBhc3N3b3JkUmVzZXQocmVzcG9uc2U6IElDb2duaXRvUmVzcG9uc2UpIHtcbiAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jb2duaXRvLmZvcmdvdFBhc3N3b3JkKHJlc3BvbnNlLnVzZXIpO1xuICAgICAgdGhpcy5zZXRNZXNzYWdpbmcocmVzdWx0LCBDb2duaXRvU3RyaW5ncy5vbk5ld1Bhc3N3b3JkUmVxdWlyZWQpO1xuICAgICAgYXdhaXQgdGljaygyNTApO1xuICAgICAgdGhpcy5zaG93UGFzc3dvcmRSZXNldEZvcm0ocmVzcG9uc2UsIGZhbHNlKTtcbiAgICB9IGNhdGNoKGU6IGFueSkge1xuICAgICAgdGhpcy5zZXRNZXNzYWdpbmcoZSBhcyBJQ29nbml0b1Jlc3BvbnNlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5jb25uZWN0aW9uQ29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldE1lc3NhZ2luZyhyZXNwb25zZTogSUNvZ25pdG9SZXNwb25zZSwgcHJvbXB0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIGlmKHJlc3BvbnNlLmVycm9yPy5jb2RlID09PSBDb2duaXRvUmVzcG9uc2VUeXBlLkxpbWl0RXhjZWVkZWRFeGNlcHRpb24pIHtcbiAgICAgIHRoaXMuZXJyb3IgPSBDb2duaXRvU3RyaW5ncy5vblRvb01hbnlBdHRlbXB0cztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lcnJvciA9IHJlc3BvbnNlLmVycm9yPy5tZXNzYWdlID8/IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5wcm9tcHQgPSBwcm9tcHQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbm5lY3Rpb25Db21wbGV0ZSgpIHtcbiAgICBhd2FpdCB0aWNrKCk7XG4gICAgdGhpcy50cmFuc2l0aW9uaW5nID0gZmFsc2U7XG4gICAgdGhpcy5vbkNvbm5lY3RpbmcuZW1pdChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNob3dDdXJyZW50Rm9ybSgpIHtcbiAgICBpZighdGhpcy5mb3JtVHlwZSkgcmV0dXJuO1xuXG4gICAgaWYodGhpcy5mb3JtVHlwZSA9PT0gQ29nbml0b0Zvcm1UeXBlLkdvb2dsZVNpZ25Jbikge1xuICAgICAgcmV0dXJuIHRoaXMuc2lnbkluV2l0aEdvb2dsZSgpO1xuICAgIH1cblxuICAgIHRoaXMuaG9zdFN0eWxlID0ge1xuICAgICAgXCJiYWNrZ3JvdW5kXCI6IHRoaXMubW9kYWxCYWNrZ3JvdW5kLFxuICAgICAgXCJ6LWluZGV4XCI6IHRoaXMuekluZGV4XG4gICAgfVxuXG4gICAgYXdhaXQgdGljaygpO1xuXG4gICAgdGhpcy5zaG93Rm9ybSA9IHRydWU7XG4gICAgdGhpcy5vblJlYWR5LmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2hvd1Bhc3N3b3JkUmVzZXRGb3JtKHJlc3VsdDogSUNvZ25pdG9SZXNwb25zZSwgaXNOZXdVc2VyOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIHRoaXMuY2FjaGUgPSByZXN1bHQ7XG4gICAgdGhpcy5yb3dzID0gW107XG4gICAgdGhpcy5mb3JtVHlwZSA9IGlzTmV3VXNlciA/IENvZ25pdG9Gb3JtVHlwZS5OZXdVc2VyIDogQ29nbml0b0Zvcm1UeXBlLkZvcmNlUGFzc3dvcmRSZXNldDtcbiAgICBcbiAgICAvL2J1YmJsZSBmaXJzdCBhbmQgbGFzdCBuYW1lIGZpZWxkcyB0byB0aGUgdG9wIG9mIHRoZSBhdHRyaWJ1dGVzIGxpc3RcbiAgICByZXN1bHQucmVxdWlyZWRBdHRyaWJ1dGVzPy5zb3J0KChhLGIpID0+IHtcbiAgICAgIGlmKGEgPT09IFwiZ2l2ZW5fbmFtZVwiICYmIGIgPT09IFwiZmFtaWx5X25hbWVcIikgcmV0dXJuIC0xO1xuICAgICAgaWYoYiA9PT0gXCJnaXZlbl9uYW1lXCIgJiYgYSA9PT0gXCJmYW1pbHlfbmFtZVwiKSByZXR1cm4gMTtcbiAgICAgIGlmKGEgPT09IFwiZ2l2ZW5fbmFtZVwiKSByZXR1cm4gLTE7XG4gICAgICBpZihhID09PSBcImZhbWlseV9uYW1lXCIpIHJldHVybiAtIDE7XG4gICAgICBpZihiID09PSBcImdpdmVuX25hbWVcIikgcmV0dXJuIDE7XG4gICAgICBpZihiID09PSBcImZhbWlseV9uYW1lXCIpIHJldHVybiAxO1xuICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IC0xO1xuICAgIH0pO1xuXG4gICAgLy9pbmplY3QgZm9ybXJvd3MgZm9yIHJlcXVpcmVkIGF0dHJpYnV0ZXNcbiAgICByZXN1bHQucmVxdWlyZWRBdHRyaWJ1dGVzPy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZihrZXkubWF0Y2goL15lbWFpbC8pKSByZXR1cm47XG4gICAgICBjb25zdCB2YWx1ZSA9IHJlc3VsdC51c2VyQXR0cmlidXRlcyFba2V5XVxuICAgICAgdGhpcy5yb3dzLnB1c2goe1xuICAgICAgICBsYWJlbDogdW5zbmFrZShrZXkpLFxuICAgICAgICBrZXlcbiAgICAgIH0pO1xuICAgICAgdGhpcy5tb2RlbFtrZXldID0gdmFsdWUgJiYgdmFsdWUubGVuZ3RoID8gdmFsdWUgOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIGF3YWl0IHRpY2soKTtcbiAgICB0aGlzLmNvbm5lY3Rpb25Db21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVc2VyQXR0cmlidXRlcygpOiBSZWNvcmQ8c3RyaW5nLHN0cmluZz4ge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB7fSBhcyBSZWNvcmQ8c3RyaW5nLHN0cmluZz47XG4gICAgaWYoIXRoaXMuY2FjaGU/LnJlcXVpcmVkQXR0cmlidXRlcykgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gICAgdGhpcy5jYWNoZSEucmVxdWlyZWRBdHRyaWJ1dGVzIS5mb3JFYWNoKGtleSA9PiBhdHRyaWJ1dGVzW2tleV0gPSB0aGlzLm1vZGVsW2tleV0pO1xuICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBzaWduSW5XaXRoR29vZ2xlKCkge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuY29nbml0b1VybH0vb2F1dGgyL2F1dGhvcml6ZT9pZGVudGl0eV9wcm92aWRlcj0ke3RoaXMucHJvdmlkZXJOYW1lfSZyZWRpcmVjdF91cmk9JHt3aW5kb3cubG9jYXRpb24ub3JpZ2lufSZyZXNwb25zZV90eXBlPVRPS0VOJmNsaWVudF9pZD0ke3RoaXMuY2xpZW50SWR9JnNjb3BlPWVtYWlsIG9wZW5pZCBwcm9maWxlIGF3cy5jb2duaXRvLnNpZ25pbi51c2VyLmFkbWluYDtcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VXNlckRhdGEoKTogSUNvZ25pdG9Vc2VyRGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVtYWlsOiB0aGlzLnNlc3Npb24hLmdldElkVG9rZW4oKS5wYXlsb2FkW1wiZW1haWxcIl0sXG4gICAgICB1c2VybmFtZTogdGhpcy5zZXNzaW9uIS5nZXRJZFRva2VuKCkucGF5bG9hZFtcImNvZ25pdG86dXNlcm5hbWVcIl0sXG4gICAgICBzdWI6ICB0aGlzLnNlc3Npb24hLmdldElkVG9rZW4oKS5wYXlsb2FkW1wic3ViXCJdLFxuICAgICAgZmlyc3ROYW1lOiB0aGlzLnNlc3Npb24hLmdldElkVG9rZW4oKS5wYXlsb2FkW1wiZ2l2ZW5fbmFtZVwiXSxcbiAgICAgIGxhc3ROYW1lOiB0aGlzLnNlc3Npb24hLmdldElkVG9rZW4oKS5wYXlsb2FkW1wiZmFtaWx5X25hbWVcIl0sXG4gICAgICBpZFRva2VuOiAgdGhpcy5zZXNzaW9uIS5nZXRJZFRva2VuKCkuZ2V0Snd0VG9rZW4oKSxcbiAgICAgIGFjY2Vzc1Rva2VuOiAgdGhpcy5zZXNzaW9uIS5nZXRBY2Nlc3NUb2tlbigpLmdldEp3dFRva2VuKCksXG4gICAgfVxuICB9XG5cbn1cbiIsIjxmb3JtICpuZ0lmPVwic2hvd0Zvcm0gJiYgZm9ybVR5cGUgPT09IENvZ25pdG9Gb3JtVHlwZS5Mb2dpblwiIGNsYXNzPVwiY29nbml0by1mb3JtXCIgKHN1Ym1pdCk9XCJsb2dpbigpXCI+XG5cdDxidXR0b24gY2xhc3M9XCJidXR0b24gY2xvc2VcIiAoY2xpY2spPVwic2hvd0Zvcm09ZmFsc2VcIiB0eXBlPVwiYnV0dG9uXCI+PHNwYW4gY2xhc3M9XCJidXR0b250ZXh0XCI+e3sgc3RyaW5ncy5sYWJlbENsb3NlIH19PC9zcGFuPjwvYnV0dG9uPlxuXHQ8ZGl2ICpuZ0lmPVwicHJvbXB0XCIgY2xhc3M9XCJwcm9tcHRcIiBbaW5uZXJIdG1sXT1cInByb21wdFwiPjwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwiY29nbml0by1mb3Jtcm93XCI+XG5cdFx0PGxhYmVsIGNsYXNzPVwiY29nbml0by1sYWJlbFwiIGZvcj1cInVzZXJuYW1lXCI+e3sgc3RyaW5ncy5sYWJlbEVtYWlsIH19PC9sYWJlbD5cblx0XHQ8aW5wdXQgaWQ9XCJ1c2VybmFtZVwiIGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXRleHRcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJ1c2VybmFtZVwiIFsobmdNb2RlbCldPVwibW9kZWwudXNlcm5hbWVcIi8+XG5cdDwvZGl2PlxuXHQ8ZGl2ICpuZ0lmPVwiIXNycCAmJiAhb3RwICYmICFwYXNza2V5cyAmJiAhbWFnaWNMaW5rICYmIHNob3dFbWFpbFN1Ym1pdEJ1dHRvblwiIGNsYXNzPVwiY29nbml0by1idXR0b25zXCI+XG5cdFx0PGJ1dHRvbiBjbGFzcz1cImNvZ25pdG8taW5wdXQgY29nbml0by1zdWJtaXQgY29nbml0by1idXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uRW50ZXJVc2VybmFtZSgpXCIgW2Rpc2FibGVkXT1cIiFtb2RlbC51c2VybmFtZVwiPnt7IHN0cmluZ3MubGFiZWxTdWJtaXQgfX08L2J1dHRvbj5cblx0PC9kaXY+XG5cdDxkaXYgKm5nSWY9XCJzcnAgJiYgIXNob3dQYXNzd29yZEZpZWxkXCIgY2xhc3M9XCJjb2duaXRvLWJ1dHRvbnNcIj5cblx0XHQ8YnV0dG9uIGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXN1Ym1pdCBjb2duaXRvLWJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2hvd1Bhc3N3b3JkRmllbGQgPSB0cnVlOyBvdHAgPSBmYWxzZTsgbWFnaWNMaW5rID0gZmFsc2U7IHBhc3NrZXlzID0gZmFsc2VcIiBbZGlzYWJsZWRdPVwiIW1vZGVsLnVzZXJuYW1lXCI+e3sgc3RyaW5ncy5sYWJlbFVzZVJlZ3VsYXJQYXNzd29yZCB9fTwvYnV0dG9uPlxuXHQ8L2Rpdj5cblx0PGRpdiAqbmdJZj1cInNycCAmJiBzaG93UGFzc3dvcmRGaWVsZFwiIGNsYXNzPVwiY29nbml0by1mb3Jtcm93XCI+XG5cdFx0PGxhYmVsIGNsYXNzPVwiY29nbml0by1sYWJlbFwiIGZvcj1cInBhc3N3b3JkXCI+e3sgc3RyaW5ncy5sYWJlbFBhc3N3b3JkIH19PC9sYWJlbD5cblx0XHQ8aW5wdXQgaWQ9XCJwYXNzd29yZFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXRleHRcIiB0eXBlPVwicGFzc3dvcmRcIiBuYW1lPVwicGFzc3dvcmRcIiBbKG5nTW9kZWwpXT1cIm1vZGVsLnBhc3N3b3JkXCIvPlxuXHQ8L2Rpdj5cblx0PGRpdiAqbmdJZj1cInNycCAmJiBzaG93UGFzc3dvcmRGaWVsZFwiIGNsYXNzPVwiY29nbml0by1idXR0b25zXCI+XG5cdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhXCIgKGNsaWNrKT1cIm9uRm9yZ290UGFzc3dvcmQoJGV2ZW50KVwiPnt7IHN0cmluZ3MubGFiZWxGb3Jnb3RQYXNzd29yZCB9fTwvYnV0dG9uPlxuXHRcdDxpbnB1dCBjbGFzcz1cImNvZ25pdG8taW5wdXQgY29nbml0by1zdWJtaXQgY29nbml0by1idXR0b25cIiB0eXBlPVwic3VibWl0XCIgW3ZhbHVlXT1cInN0cmluZ3MubGFiZWxTdWJtaXRcIi8+XG5cdDwvZGl2PlxuXHQ8ZGl2ICpuZ0lmPVwib3RwICYmIG1vZGVsLnNob3dDaGFsbGVuZ2VFbnRyeVwiIGNsYXNzPVwiY29nbml0by1mb3Jtcm93XCI+XG5cdFx0PGxhYmVsIGNsYXNzPVwiY29nbml0by1sYWJlbFwiIGZvcj1cIm90cFwiPnt7IHN0cmluZ3MubGFiZWxPdHBFbnRlciB9fTwvbGFiZWw+XG5cdFx0PGlucHV0IGlkPVwib3RwXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tdGV4dFwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm90cFwiIFsobmdNb2RlbCldPVwibW9kZWwub3RwXCIvPlxuXHQ8L2Rpdj5cblx0PGRpdiAqbmdJZj1cInBhc3NrZXlzICYmIG1vZGVsLnNob3dDaGFsbGVuZ2VFbnRyeVwiIGNsYXNzPVwiY29nbml0by1mb3Jtcm93XCI+XG5cdFx0PGxhYmVsIGNsYXNzPVwiY29nbml0by1sYWJlbFwiIGZvcj1cInBhc3NrZXktcmVnXCI+e3sgc3RyaW5ncy5sYWJlbFBhc3NrZXlFbnRlciB9fTwvbGFiZWw+XG5cdFx0PHRleHRhcmVhIGlkPVwicGFzc2tleS1yZWdcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cImNvZ25pdG8taW5wdXQgY29nbml0by10ZXh0XCIgbmFtZT1cInBhc3NrZXktcmVnXCIgWyhuZ01vZGVsKV09XCJtb2RlbC5wYXNza2V5XCI+PC90ZXh0YXJlYT5cblx0PC9kaXY+XG5cdDxkaXYgKm5nSWY9XCJvdHBcIiBjbGFzcz1cImNvZ25pdG8tYnV0dG9uc1wiPlxuXHRcdDxidXR0b24gY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tc3VibWl0IGNvZ25pdG8tYnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJnZXRPdHAoKVwiIFtkaXNhYmxlZF09XCIhbW9kZWwudXNlcm5hbWVcIj57eyBtb2RlbC5zaG93Q2hhbGxlbmdlRW50cnkgPyBzdHJpbmdzLmxhYmVsU3VibWl0IDogc3RyaW5ncy5sYWJlbE90cCB9fTwvYnV0dG9uPlxuXHQ8L2Rpdj5cdFxuXHQ8ZGl2ICpuZ0lmPVwibWFnaWNMaW5rXCIgY2xhc3M9XCJjb2duaXRvLWJ1dHRvbnNcIj5cblx0XHQ8YnV0dG9uIGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXN1Ym1pdCBjb2duaXRvLWJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZ2V0TWFnaWNMaW5rKClcIiBbZGlzYWJsZWRdPVwiIW1vZGVsLnVzZXJuYW1lXCI+e3sgc3RyaW5ncy5sYWJlbE1hZ2ljTGluayB9fTwvYnV0dG9uPlxuXHQ8L2Rpdj5cdFxuXHQ8ZGl2ICpuZ0lmPVwicGFzc2tleXNcIiBjbGFzcz1cImNvZ25pdG8tYnV0dG9uc1wiPlxuXHRcdDxidXR0b24gY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tc3VibWl0IGNvZ25pdG8tYnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJnZXRQYXNza2V5KClcIiBbZGlzYWJsZWRdPVwiIW1vZGVsLnVzZXJuYW1lXCI+e3sgbW9kZWwuc2hvd0NoYWxsZW5nZUVudHJ5ID8gc3RyaW5ncy5sYWJlbFN1Ym1pdCA6IHN0cmluZ3MubGFiZWxQYXNza2V5cyB9fTwvYnV0dG9uPlxuXHQ8L2Rpdj5cdFxuXHQ8ZGl2ICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImVycm9yXCIgW2lubmVySHRtbF09XCJlcnJvclwiPjwvZGl2PlxuPC9mb3JtPlxuPGZvcm0gKm5nSWY9XCJzaG93Rm9ybSAmJiBmb3JtVHlwZSA9PT0gQ29nbml0b0Zvcm1UeXBlLk5ld1VzZXJcIiBjbGFzcz1cImNvZ25pdG8tZm9ybVwiIChzdWJtaXQpPVwib25OZXdVc2VyKClcIj5cblx0PGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBjbG9zZVwiIChjbGljayk9XCJzaG93Rm9ybT1mYWxzZVwiIHR5cGU9XCJidXR0b25cIj48c3BhbiBjbGFzcz1cImJ1dHRvbnRleHRcIj57eyBzdHJpbmdzLmxhYmVsQ2xvc2UgfX08L3NwYW4+PC9idXR0b24+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWZvcm1yb3dcIj5cblx0XHQ8bGFiZWwgY2xhc3M9XCJjb2duaXRvLWxhYmVsXCIgZm9yPVwidXNlcm5hbWVcIj57eyBzdHJpbmdzLmxhYmVsRW1haWwgfX08L2xhYmVsPlxuXHRcdDxpbnB1dCBpZD1cInVzZXJuYW1lXCIgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tdGV4dFwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInVzZXJuYW1lXCIgWyhuZ01vZGVsKV09XCJtb2RlbC51c2VybmFtZVwiIGRpc2FibGVkIC8+XG5cdDwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwiY29nbml0by1mb3Jtcm93XCI+XG5cdFx0PGxhYmVsIGNsYXNzPVwiY29nbml0by1sYWJlbCBuby1tYlwiIGZvcj1cIm5ldy1wYXNzd29yZFwiPnt7IHN0cmluZ3MubGFiZWxOZXdQYXNzd29yZCB9fTwvbGFiZWw+XG5cdFx0PHAgY2xhc3M9XCJjb2duaXRvLXN1YmxhYmVsXCI+e3sgc3RyaW5ncy5sYWJlbFBhc3N3b3JkUmVxdWlyZW1lbnQgfX08L3A+XG5cdFx0PGlucHV0IGlkPVwibmV3LXBhc3N3b3JkXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tdGV4dFwiIHR5cGU9XCJwYXNzd29yZFwiIG5hbWU9XCJwYXNzd29yZC1uZXdcIiBbKG5nTW9kZWwpXT1cIm1vZGVsLm5ld1Bhc3N3b3JkXCIvPlxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cImNvZ25pdG8tZm9ybXJvd1wiPlxuXHRcdDxsYWJlbCBjbGFzcz1cImNvZ25pdG8tbGFiZWxcIiBmb3I9XCJwYXNzd29yZC1jb25maXJtXCI+e3sgc3RyaW5ncy5sYWJlbENvbmZpcm1OZXdQYXNzd29yZCB9fTwvbGFiZWw+XG5cdFx0PGlucHV0IGlkPVwicGFzc3dvcmQtY29uZmlybVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXRleHRcIiB0eXBlPVwicGFzc3dvcmRcIiBuYW1lPVwicGFzc3dvcmQtY29uZmlybVwiIFsobmdNb2RlbCldPVwibW9kZWwubmV3UGFzc3dvcmRDb25maXJtXCIvPlxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cImNvZ25pdG8tZm9ybXJvd1wiICpuZ0Zvcj1cImxldCByb3cgb2Ygcm93c1wiPlxuXHRcdDxsYWJlbCBjbGFzcz1cImNvZ25pdG8tbGFiZWxcIiBmb3I9XCJ1c2VybmFtZVwiPnt7IHJvdy5sYWJlbHxsYWJlbGVyIH19PC9sYWJlbD5cblx0XHQ8aW5wdXQgW2lkXT1cInJvdy5rZXlcIiAgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tdGV4dFwiIHR5cGU9XCJ0ZXh0XCIgW25hbWVdPVwicm93LmtleVwiIFsobmdNb2RlbCldPVwibW9kZWxbcm93LmtleV1cIi8+XG5cdDwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwiY29nbml0by1idXR0b25zXCI+XG5cdFx0PGlucHV0IGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXN1Ym1pdCBjb2duaXRvLWJ1dHRvblwiIHR5cGU9XCJzdWJtaXRcIiBbZGlzYWJsZWRdPVwibmV3VXNlckZvcm1EaXNhYmxlZCgpXCIgW3ZhbHVlXT1cInN0cmluZ3MubGFiZWxTdWJtaXRcIi8+XG5cdDwvZGl2Plx0XG5cdDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIiBbaW5uZXJIdG1sXT1cImVycm9yXCI+PC9kaXY+XG48L2Zvcm0+XG48Zm9ybSAqbmdJZj1cInNob3dGb3JtICYmIGZvcm1UeXBlID09PSBDb2duaXRvRm9ybVR5cGUuRm9yY2VQYXNzd29yZFJlc2V0XCIgY2xhc3M9XCJjb2duaXRvLWZvcm1cIiAoc3VibWl0KT1cIm9uRm9yY2VQYXNzd29yZFJlc2V0KClcIj5cblx0PGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBjbG9zZVwiIChjbGljayk9XCJzaG93Rm9ybT1mYWxzZVwiIHR5cGU9XCJidXR0b25cIj48c3BhbiBjbGFzcz1cImJ1dHRvbnRleHRcIj57eyBzdHJpbmdzLmxhYmVsQ2xvc2UgfX08L3NwYW4+PC9idXR0b24+XG5cdDxkaXYgKm5nSWY9XCJwcm9tcHRcIiBjbGFzcz1cInByb21wdFwiIFtpbm5lckh0bWxdPVwicHJvbXB0XCI+PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWZvcm1yb3dcIj5cblx0XHQ8bGFiZWwgY2xhc3M9XCJjb2duaXRvLWxhYmVsXCIgZm9yPVwidXNlcm5hbWVcIj57eyBzdHJpbmdzLmxhYmVsRW1haWwgfX08L2xhYmVsPlxuXHRcdDxpbnB1dCBpZD1cInVzZXJuYW1lXCIgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tdGV4dFwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInVzZXJuYW1lXCIgWyhuZ01vZGVsKV09XCJtb2RlbC51c2VybmFtZVwiIGRpc2FibGVkIC8+XG5cdDwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwiY29nbml0by1mb3Jtcm93XCI+XG5cdFx0PGxhYmVsIGNsYXNzPVwiY29nbml0by1sYWJlbFwiIGZvcj1cImNvZGVcIj57eyBzdHJpbmdzLmxhYmVsQ29kZSB9fTwvbGFiZWw+XG5cdFx0PGlucHV0IGlkPVwiY29kZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXRleHRcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJjb2RlXCIgWyhuZ01vZGVsKV09XCJtb2RlbC5jb2RlXCIvPlxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cImNvZ25pdG8tZm9ybXJvd1wiPlxuXHRcdDxsYWJlbCBjbGFzcz1cImNvZ25pdG8tbGFiZWxcIiBmb3I9XCJuZXctcGFzc3dvcmRcIj57eyBzdHJpbmdzLmxhYmVsTmV3UGFzc3dvcmQgfX08L2xhYmVsPlxuXHRcdDxwIGNsYXNzPVwiY29nbml0by1zdWJsYWJlbFwiPnt7IHN0cmluZ3MubGFiZWxQYXNzd29yZFJlcXVpcmVtZW50IH19PC9wPlxuXHRcdDxpbnB1dCBpZD1cIm5ldy1wYXNzd29yZFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXRleHRcIiB0eXBlPVwicGFzc3dvcmRcIiBuYW1lPVwicGFzc3dvcmQtbmV3XCIgWyhuZ01vZGVsKV09XCJtb2RlbC5uZXdQYXNzd29yZFwiLz5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWZvcm1yb3dcIj5cblx0XHQ8bGFiZWwgY2xhc3M9XCJjb2duaXRvLWxhYmVsXCIgZm9yPVwicGFzc3dvcmQtY29uZmlybVwiPnt7IHN0cmluZ3MubGFiZWxDb25maXJtTmV3UGFzc3dvcmQgfX08L2xhYmVsPlxuXHRcdDxpbnB1dCBpZD1cInBhc3N3b3JkLWNvbmZpcm1cIiBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cImNvZ25pdG8taW5wdXQgY29nbml0by10ZXh0XCIgdHlwZT1cInBhc3N3b3JkXCIgbmFtZT1cInBhc3N3b3JkLWNvbmZpcm1cIiBbKG5nTW9kZWwpXT1cIm1vZGVsLm5ld1Bhc3N3b3JkQ29uZmlybVwiLz5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWJ1dHRvbnNcIj5cblx0XHQ8aW5wdXQgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tc3VibWl0IGNvZ25pdG8tYnV0dG9uXCIgdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJuZXdVc2VyRm9ybURpc2FibGVkKClcIiBbdmFsdWVdPVwic3RyaW5ncy5sYWJlbFN1Ym1pdFwiLz5cblx0PC9kaXY+XHRcblx0PGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvclwiIFtpbm5lckh0bWxdPVwiZXJyb3JcIj48L2Rpdj5cbjwvZm9ybT5cbjxmb3JtICpuZ0lmPVwic2hvd0Zvcm0gJiYgZm9ybVR5cGUgPT09IENvZ25pdG9Gb3JtVHlwZS5Vc2VyVmVyaWZpY2F0aW9uUmVxdWVzdFwiIGNsYXNzPVwiY29nbml0by1mb3JtXCIgKHN1Ym1pdCk9XCJvblJlcXVlc3RWZXJpZmljYXRpb25Db2RlKClcIj5cblx0PGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBjbG9zZVwiIChjbGljayk9XCJzaG93Rm9ybT1mYWxzZVwiIHR5cGU9XCJidXR0b25cIj48c3BhbiBjbGFzcz1cImJ1dHRvbnRleHRcIj57eyBzdHJpbmdzLmxhYmVsQ2xvc2UgfX08L3NwYW4+PC9idXR0b24+XG5cdDxkaXYgKm5nSWY9XCJwcm9tcHRcIiBjbGFzcz1cInByb21wdFwiIFtpbm5lckh0bWxdPVwicHJvbXB0XCI+PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWZvcm1yb3dcIj5cblx0XHQ8bGFiZWwgY2xhc3M9XCJjb2duaXRvLWxhYmVsXCIgZm9yPVwidXNlcm5hbWVcIj57eyBzdHJpbmdzLmxhYmVsRW1haWwgfX08L2xhYmVsPlxuXHRcdDxpbnB1dCBpZD1cInVzZXJuYW1lXCIgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tdGV4dFwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInVzZXJuYW1lXCIgWyhuZ01vZGVsKV09XCJtb2RlbC51c2VybmFtZVwiLz5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWJ1dHRvbnNcIj5cblx0XHQ8aW5wdXQgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tc3VibWl0IGNvZ25pdG8tYnV0dG9uXCIgdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCIhbW9kZWwudXNlcm5hbWVcIiBbdmFsdWVdPVwic3RyaW5ncy5sYWJlbFN1Ym1pdFwiLz5cblx0PC9kaXY+XHRcblx0PGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvclwiIFtpbm5lckh0bWxdPVwiZXJyb3JcIj48L2Rpdj5cbjwvZm9ybT5cbjxmb3JtICpuZ0lmPVwic2hvd0Zvcm0gJiYgZm9ybVR5cGUgPT09IENvZ25pdG9Gb3JtVHlwZS5Vc2VyUGFzc3dvcmRSZXNldFwiIGNsYXNzPVwiY29nbml0by1mb3JtXCIgKHN1Ym1pdCk9XCJvblVzZXJQYXNzd29yZFJlc2V0KClcIj5cblx0PGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBjbG9zZVwiIChjbGljayk9XCJzaG93Rm9ybT1mYWxzZVwiIHR5cGU9XCJidXR0b25cIj48c3BhbiBjbGFzcz1cImJ1dHRvbnRleHRcIj57eyBzdHJpbmdzLmxhYmVsQ2xvc2UgfX08L3NwYW4+PC9idXR0b24+XG5cdDxkaXYgKm5nSWY9XCJwcm9tcHRcIiBjbGFzcz1cInByb21wdFwiIFtpbm5lckh0bWxdPVwicHJvbXB0XCI+PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWZvcm1yb3dcIj5cblx0XHQ8bGFiZWwgY2xhc3M9XCJjb2duaXRvLWxhYmVsXCIgZm9yPVwiY3VycmVudC1wYXNzd29yZFwiPnt7IHN0cmluZ3MubGFiZWxDdXJyZW50UGFzc3dvcmQgfX08L2xhYmVsPlxuXHRcdDxpbnB1dCBpZD1cImN1cnJlbnQtcGFzc3dvcmRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cImNvZ25pdG8taW5wdXQgY29nbml0by10ZXh0XCIgdHlwZT1cInBhc3N3b3JkXCIgbmFtZT1cInBhc3N3b3JkXCIgWyhuZ01vZGVsKV09XCJtb2RlbC5wYXNzd29yZFwiLz5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWZvcm1yb3dcIj5cblx0XHQ8bGFiZWwgY2xhc3M9XCJjb2duaXRvLWxhYmVsXCIgZm9yPVwibmV3LXBhc3N3b3JkXCI+e3sgc3RyaW5ncy5sYWJlbE5ld1Bhc3N3b3JkIH19PC9sYWJlbD5cblx0XHQ8cCBjbGFzcz1cImNvZ25pdG8tc3VibGFiZWxcIj57eyBzdHJpbmdzLmxhYmVsUGFzc3dvcmRSZXF1aXJlbWVudCB9fTwvcD5cblx0XHQ8aW5wdXQgaWQ9XCJuZXctcGFzc3dvcmRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cImNvZ25pdG8taW5wdXQgY29nbml0by10ZXh0XCIgdHlwZT1cInBhc3N3b3JkXCIgbmFtZT1cInBhc3N3b3JkLW5ld1wiIFsobmdNb2RlbCldPVwibW9kZWwubmV3UGFzc3dvcmRcIi8+XG5cdDwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwiY29nbml0by1mb3Jtcm93XCI+XG5cdFx0PGxhYmVsIGNsYXNzPVwiY29nbml0by1sYWJlbFwiIGZvcj1cInBhc3N3b3JkLWNvbmZpcm1cIj57eyBzdHJpbmdzLmxhYmVsQ29uZmlybU5ld1Bhc3N3b3JkIH19PC9sYWJlbD5cblx0XHQ8aW5wdXQgaWQ9XCJwYXNzd29yZC1jb25maXJtXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tdGV4dFwiIHR5cGU9XCJwYXNzd29yZFwiIG5hbWU9XCJwYXNzd29yZC1jb25maXJtXCIgWyhuZ01vZGVsKV09XCJtb2RlbC5uZXdQYXNzd29yZENvbmZpcm1cIi8+XG5cdDwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwiY29nbml0by1idXR0b25zXCI+XG5cdFx0PGlucHV0IGNsYXNzPVwiY29nbml0by1pbnB1dCBjb2duaXRvLXN1Ym1pdCBjb2duaXRvLWJ1dHRvblwiIHR5cGU9XCJzdWJtaXRcIiBbZGlzYWJsZWRdPVwibmV3VXNlckZvcm1EaXNhYmxlZCgpXCIgW3ZhbHVlXT1cInN0cmluZ3MubGFiZWxTdWJtaXRcIi8+XG5cdDwvZGl2Plx0XG5cdDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIiBbaW5uZXJIdG1sXT1cImVycm9yXCI+PC9kaXY+XG48L2Zvcm0+XG48Zm9ybSAqbmdJZj1cInNob3dGb3JtICYmIGZvcm1UeXBlID09PSBDb2duaXRvRm9ybVR5cGUuUGFzc3dvcmRVcGRhdGVTdWNjZXNzZnVsXCIgY2xhc3M9XCJjb2duaXRvLWZvcm1cIiAoc3VibWl0KT1cInNob3dGb3JtID0gZmFsc2VcIj5cblx0PGRpdiBjbGFzcz1cInByb21wdFwiIFtpbm5lckh0bWxdPVwicHJvbXB0XCI+PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2duaXRvLWJ1dHRvbnNcIj5cblx0XHQ8aW5wdXQgY2xhc3M9XCJjb2duaXRvLWlucHV0IGNvZ25pdG8tc3VibWl0IGNvZ25pdG8tYnV0dG9uXCIgdHlwZT1cInN1Ym1pdFwiIFt2YWx1ZV09XCJzdHJpbmdzLmxhYmVsQ2xvc2VcIi8+XG5cdDwvZGl2Plx0XG48L2Zvcm0+Il19
|
|
@@ -442,7 +442,7 @@ class CognitoComponent {
|
|
|
442
442
|
this.cognito.user$.subscribe(user => {
|
|
443
443
|
this.user = user;
|
|
444
444
|
});
|
|
445
|
-
if (this.otp || this.magicLink) {
|
|
445
|
+
if (this.otp || this.magicLink || this.passkeys) {
|
|
446
446
|
this.showPasswordField = false;
|
|
447
447
|
}
|
|
448
448
|
}
|
|
@@ -453,6 +453,11 @@ class CognitoComponent {
|
|
|
453
453
|
this.showEmailSubmitButton = false;
|
|
454
454
|
this.onUsernameEntered.emit(this.model.username.replace(/\s+/gim, ""));
|
|
455
455
|
}
|
|
456
|
+
updateButtons() {
|
|
457
|
+
if (this.otp || this.magicLink || this.passkeys) {
|
|
458
|
+
this.showPasswordField = false;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
456
461
|
login() {
|
|
457
462
|
return __awaiter(this, void 0, void 0, function* () {
|
|
458
463
|
if (!this.srp && this.otp) {
|