ngx-histaff-alpha 1.2.2 → 1.2.3
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.
|
@@ -356,7 +356,12 @@ export class CorePageEditComponent {
|
|
|
356
356
|
Transfer current record id
|
|
357
357
|
*/
|
|
358
358
|
this.toggleReloadFlagForTheCaller(body.innerBody.id);
|
|
359
|
-
this.
|
|
359
|
+
if (this.appConfigService.APP_TYPE === "MOBILE") {
|
|
360
|
+
this.router.navigate(['../'], { /* experiment*/ replaceUrl: true, relativeTo: this.route, state: { id: body.innerBody.id, instanceNumber: this.listInstance } });
|
|
361
|
+
}
|
|
362
|
+
else if (this.appConfigService.APP_TYPE === "WEBAPP") {
|
|
363
|
+
this.router.navigate(['../'], { relativeTo: this.route, state: { id: body.innerBody.id, instanceNumber: this.listInstance } });
|
|
364
|
+
}
|
|
360
365
|
}
|
|
361
366
|
}
|
|
362
367
|
else {
|
|
@@ -489,4 +494,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
489
494
|
type: ViewChild,
|
|
490
495
|
args: ['containerBigger']
|
|
491
496
|
}] } });
|
|
492
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wYWdlLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGFnZS1lZGl0L2NvcmUtcGFnZS1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXBhZ2UtZWRpdC9jb3JlLXBhZ2UtZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBeUIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxHQUE0QixNQUFNLGVBQWUsQ0FBQztBQU85SSxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUlyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWlDLE1BQU0sNENBQTRDLENBQUM7QUFDOUcsT0FBTyxFQUFhLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBUTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFeEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8s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QkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBSUUsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBRWlCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDUSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGlzRGV2TW9kZSwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBUZW1wbGF0ZVJlZiwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBDb3JlUGFnZUVkaXRTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlLXBhZ2UtZWRpdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQW5pbWF0ZWRUZXh0U2VydmljZSB9IGZyb20gJy4uL2FuaW1hdGVkLXRleHQvYW5pbWF0ZWQtdGV4dC5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUxpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS1wYWdlLWxpc3QvY29yZS1wYWdlLWxpc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmVGb3JtU2VydmljZSB9IGZyb20gJy4uL2NvcmUtZm9ybS9jb3JlLWZvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IElDb3JlRm9ybVNlY3Rpb24sIH0gZnJvbSAnLi4vY29yZS1mb3JtL2NvcmUtZm9ybS9lbnVtLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybUNvbXBvbmVudCwgSUR5bmFtaWNGb3JtRW1pdE9uRm9ybUNyZWF0ZWQgfSBmcm9tICcuLi9jb3JlLWZvcm0vY29yZS1mb3JtL2NvcmUtZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZUJ1dHRvblZOU0NvZGUgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0VudW1Db3JlQnV0dG9uVk5TQ29kZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBDb21tb25IdHRwUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24taHR0cC1yZXF1ZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdWJDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h1Yi1jb25uZWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFVybFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91cmwuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcm91dGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSc7XHJcbmltcG9ydCB7IEVudW1TaWduYWxSVHlwZSB9IGZyb20gJy4uLy4uL2VudW0vRW51bVNpZ25hbFJUeXBlJztcclxuaW1wb3J0IHsgSUZvcm1hdGVkUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lGb3JtYXRlZFJlc3BvbnNlJztcclxuaW1wb3J0IHsgYWxlcnRPcHRpb25zLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBJU3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lTeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCc7XHJcbmltcG9ydCB7IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtL0VudW1Gb3JtQmFzZUNvbnRvbFR5cGUnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZVBhZ2VFZGl0TW9kZSB9IGZyb20gJy4vRW51bUNvcmVQYWdlRWRpdE1vZGUnO1xyXG5pbXBvcnQgeyBJQ29yZVBhZ2VFZGl0Q1JVRCB9IGZyb20gJy4vSUNvcmVQYWdlRWRpdENSVUQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vYXBwLXBpcGVzL3RyYW5zbGF0ZS5waXBlJztcclxuaW1wb3J0IHsgRnVsbHNjcmVlbk1vZGFsTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZnVsbHNjcmVlbi1tb2RhbC1sb2FkZXIvZnVsbHNjcmVlbi1tb2RhbC1sb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXNwb25zZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXNwb25zZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IElDb3JlQnV0dG9uVk5TIH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9JQ29yZUJ1dHRvblZOUyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtcGFnZS1lZGl0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIENvcmVGb3JtQ29tcG9uZW50LFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIEZ1bGxzY3JlZW5Nb2RhbExvYWRlckNvbXBvbmVudCxcclxuICAgIENvcmVQYWdlSGVhZGVyQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1wYWdlLWVkaXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtcGFnZS1lZGl0LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlUGFnZUVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIHN0YXlBZnRlclN1Ym1pdCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgd2lkdGghOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZW50aXR5VGFibGUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaGFzSWRPZlN0cmluZ1R5cGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGNhcHRpb25Db2RlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGxlZnRJbnB1dFNlY3Rpb25zITogSUNvcmVGb3JtU2VjdGlvbltdO1xyXG4gIEBJbnB1dCgpIGxlZnRJbnB1dFNlY3Rpb25zRmxleFNpemUhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgc2VjdGlvbnMhOiBJQ29yZUZvcm1TZWN0aW9uW107XHJcbiAgQElucHV0KCkgbm9ybWFsTW9kZSE6IGJvb2xlYW47IC8vIHRoaXMgYWxsb3dzIHRvIG9wZW4gdGhlIGVkaXQgZm9ybSBhcyB1c3VhbCBtb2RlXHJcbiAgQElucHV0KCkgYm90dG9tVGVtcGxhdGVSZWYhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dCgpIGF1dG9HZXRCeUlkT2ZmITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBhdXRvU3VibWl0TG9naWNPZmYhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGF1dG9DYW5jZWxMb2dpY09mZiE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY3VzdG9tRm9ybUJ1dHRvbkl0ZW1zITogRW51bUNvcmVCdXR0b25WTlNDb2RlW107XHJcbiAgQElucHV0KCkgbWl4ZWRNb2RlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjaGVja0Vycm9yJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIEBJbnB1dCgpIHNob3dTYXZlQnV0dG9uITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkaXNhYmxlU2F2ZUJ1dHRvbiE6IGJvb2xlYW47XHJcblxyXG5cclxuICBAT3V0cHV0KCkgc3VibWl0TG9naWMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uRm9ybUNyZWF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uU3VibWl0U3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25CdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2FuY2VsTG9naWMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGZvcm0hOiBGb3JtR3JvdXA7XHJcblxyXG4gIEBJbnB1dCgpIGNydWQhOiBJQ29yZVBhZ2VFZGl0Q1JVRDtcclxuICBASW5wdXQoKSBlbnRpdHlVbmlxdWVJbmRleHM6IHN0cmluZ1tdW10gPVxyXG4gICAgW107IC8qIEZvciBleDogW1snaWQnXSwgWydwcm92aW5jZUlkJywgJ2Rpc3RyaWNDb2RlJ11dICBldGMuLi4gKi9cclxuICBAT3V0cHV0KCkgb25Jbml0aWFsVmFsdWVTdHJpbmdSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lckJpZ2dlcicpIGNvbnRhaW5lckJpZ2dlciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIHNlY3Rpb25zJCE6IEJlaGF2aW9yU3ViamVjdDxJQ29yZUZvcm1TZWN0aW9uW10+O1xyXG4gIG1vZGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxFbnVtQ29yZVBhZ2VFZGl0TW9kZT4oXHJcbiAgICBFbnVtQ29yZVBhZ2VFZGl0TW9kZS5DUkVBVEVcclxuICApO1xyXG5cclxuICBjdXJyZW50VmFsdWU6IGFueTtcclxuICBpbml0aWFsVmFsdWUhOiBzdHJpbmc7XHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgZnJvbVVybCE6IHN0cmluZztcclxuICBsaXN0SW5zdGFuY2UhOiBudW1iZXI7XHJcbiAgbG9hZGluZyE6IGJvb2xlYW47XHJcblxyXG4gIGxhbmchOiBzdHJpbmc7XHJcblxyXG4gIHN1Ym1pdFRleHQhOiBFbnVtVHJhbnNsYXRlS2V5O1xyXG5cclxuICBzaG93Q2FwdGlvbkJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHNjcm9sbCE6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBjb3JlUGFnZUVkaXRTZXJ2aWNlOiBDb3JlUGFnZUVkaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb21tb25IdHRwUmVxdWVzdFNlcnZpY2U6IENvbW1vbkh0dHBSZXF1ZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgYW5pbWF0ZWRUZXh0U2VydmljZTogQW5pbWF0ZWRUZXh0U2VydmljZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZUZvcm1TZXJ2aWNlOiBDb3JlRm9ybVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvcmVQYWdlTGlzdFNlcnZpY2U6IENvcmVQYWdlTGlzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGh1YkNvbm5lY3Rpb25TZXJ2aWNlOiBIdWJDb25uZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgdXJsU2VydmljZTogVXJsU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGluZ1NlcnZpY2U6IFJvdXRpbmdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXNwb25zZVNlcnZpY2U6IFJlc3BvbnNlU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5mcm9tVXJsID0gdGhpcy5jb3JlUGFnZUVkaXRTZXJ2aWNlLmZyb21Vcmw7XHJcbiAgICB0aGlzLmxpc3RJbnN0YW5jZSA9IE51bWJlcihcclxuICAgICAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2xpc3RJbnN0YW5jZScpIVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VuZFNpZ25hbChkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmh1YkNvbm5lY3Rpb25TZXJ2aWNlLmh1YkNvbm5lY3Rpb24kLnZhbHVlO1xyXG4gICAgaWYgKCEhY29ubmVjdGlvbikge1xyXG4gICAgICBjb25zdCBtZXNzYWdlOiBJSHViQ29ubmVjdGlvbkFjdGl2aXR5ID0ge1xyXG4gICAgICAgIHNpZDogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaWQhLFxyXG4gICAgICAgIHVzZXJuYW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5mdWxsTmFtZSEsXHJcbiAgICAgICAgYXZhdGFyOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5hdmF0YXIhLFxyXG4gICAgICAgIHNpZ25hbFR5cGU6IEVudW1TaWduYWxSVHlwZS5FTlRJVFlfQ0hBTkdFRCxcclxuICAgICAgICBtZXNzYWdlOiBgJHt0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlXHJcbiAgICAgICAgICA/LnVzZXJOYW1lIX0gaGFzIGNoYW5nZWQgZW50aXR5ICR7dGhpcy5lbnRpdHlUYWJsZX1gLFxyXG4gICAgICAgIGxvZ2luVGltZTogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ubG9naW5UaW1lISxcclxuICAgICAgICBkYXRhOiBudWxsLFxyXG4gICAgICB9O1xyXG4gICAgICBjb25uZWN0aW9uLmludm9rZSgnU2VuZE1lc3NhZ2UnLCBtZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc2VjdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJQ29yZUZvcm1TZWN0aW9uW10+KHRoaXMuc2VjdGlvbnMpO1xyXG5cclxuICAgIGlmICghISF0aGlzLmVudGl0eVRhYmxlKSB7XHJcbiAgICAgIGFsZXJ0KFxyXG4gICAgICAgICdQcm9wZXJ0eSBlbnRpdHlUYWJsZSAobmFtZSkgaXMgcmVxdWlyZWQgZm9yIGNvbXBvbmVudCAnICtcclxuICAgICAgICB0aGlzLmNhcHRpb25Db2RlXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgJ1Byb3BlcnR5IGVudGl0eVRhYmxlIChuYW1lKSBpcyByZXF1aXJlZCBmb3IgY29tcG9uZW50ICcgK1xyXG4gICAgICAgIHRoaXMuY2FwdGlvbkNvZGVcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghIXRoaXMubm9ybWFsTW9kZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmNvbnRhaW5lcilcclxuICAgICAgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS13aWR0aCcsICcxMDAlJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoISF0aGlzLndpZHRoKSB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcclxuICAgICAgICAgICctLXdpZHRoJyxcclxuICAgICAgICAgIHRoaXMud2lkdGggKyAncHgnXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbnRhaW5lckJpZ2dlci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxyXG4gICAgICAgICctLWhlaWdodCcsXHJcbiAgICAgICAgJzk1JSdcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNjcm9sbCA9IHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHRcclxuICAgIH0pO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoISEhdGhpcy5taXhlZE1vZGUpIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJ0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmVcIiwgeClcclxuXHJcbiAgICAgICAgICAgIGxldCBpZDogc3RyaW5nID0gJzAnO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNJZE9mU3RyaW5nVHlwZSkge1xyXG4gICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZCA9IGF0b2IoeFsnaWQnXSk7XHJcbiAgICAgICAgICAgICAgfSBjYXRjaCB7IHJldHVybiB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlkID0gTnVtYmVyKGF0b2IoeFsnaWQnXSkpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgfSBjYXRjaCB7IHJldHVybiB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpZCAhPT0gJzAnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5tb2RlJC5uZXh0KEVudW1Db3JlUGFnZUVkaXRNb2RlLlVQREFURSk7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc3VibWl0VGV4dCA9IEVudW1UcmFuc2xhdGVLZXkuVUlfRURJVF9GT1JNX0JVVFRPTl9TQVZFO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoISEhdGhpcy5hdXRvR2V0QnlJZE9mZikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvcmVQYWdlRWRpdFNlcnZpY2UuZ2V0QnlJZChpZCwgdGhpcy5jcnVkLnIpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5yZXNwb25zZVNlcnZpY2UucmVzb2x2ZShib2R5KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKGJvZHkuc3RhdHVzQ29kZSA9IDIwMCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIC8qICNyZWdpb24gRXhjbHVkZSBzZWN0aW9ucyB3aXRoIGZsYWcgYWRkTW9kZU9ubHk9dHJ1ZSAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCEhYm9keS5pbm5lckJvZHkuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHJlbGV2YW50IGNvbnRyb2xzIGZyb20gZm9ybSBncm91cFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRNb2RlT25seVNlY3Rpb25zID0gdGhpcy5zZWN0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHgpID0+ICEheC5hZGRNb2RlT25seVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRNb2RlT25seVNlY3Rpb25zLm1hcCgoYWRkTW9kZU9ubHlTZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkTW9kZU9ubHlTZWN0aW9uLnJvd3MubWFwKChhZGRNb2RlT25seVJvdykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkTW9kZU9ubHlSb3cubWFwKChhZGRNb2RlT25seUNvbnRyb2wpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnJlbW92ZUNvbnRyb2woYWRkTW9kZU9ubHlDb250cm9sLmZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSByZWxldmFudCBjb250cm9scyBmcm9tIGZvcm0gc2VjdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U2VjdGlvbnMgPSB0aGlzLnNlY3Rpb25zLmZpbHRlcigoeCkgPT4gISEheC5hZGRNb2RlT25seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvbnMgPSBuZXdTZWN0aW9ucztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9ucyQubmV4dCh0aGlzLnNlY3Rpb25zKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIC8qICNlbmRyZWdpb24gRXhjbHVkZSBzZWN0aW9ucyB3aXRoIGZsYWcgYWRkTW9kZU9ubHk9dHJ1ZSAqL1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIC8qICNyZWdpb246IEFzc2lnbiB2YWx1ZSB0byBhdHRhY2htZW50IGZpZWxkcyB3aGVuIGNvbnRyb2xUeXBlID0gQVRUQUNITUVOVCAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9ucy5tYXAoKHNlY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi5yb3dzLm1hcCgocm93KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm93Lm1hcCgoY29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wuY29udHJvbFR5cGUgPT09IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuQVRUQUNITUVOVCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlVG9TaG93ID0gYm9keS5pbm5lckJvZHlbY29udHJvbC5hc3NpZ25UbyFdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgLyogI2VuZHJlZ2lvbjogQXNzaWduIHZhbHVlIHRvIGJhc2ljIGZpZWxkcyB3aGVuIGNvbnRyb2xUeXBlID0gQVRUQUNITUVOVCAqL1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIC8qICNyZWdpb246IFVzaW5nIFBhdGNoVmFsdWUgaW5zdGVhZCBvZiBzZXRWYWx1ZSAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXMgb2Z0ZW4gaGF2ZSBleHRyYSBoZWxwZXIgZmllbGRzXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdGh1cywgaWYgd2UgdXNlIHNldFZhbHVlIG1ldGhvZCwgdGhlIGhlbHBlciBmaWVsZHMgd2lsbCBiZSBsb3N0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5mb3JtLnNldFZhbHVlKGJvZHkuaW5uZXJCb2R5KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIC8vIHNvLCB3ZSB1c2UgcGF0Y2hWYWx1ZSBtZXRob2QgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VmFsdWUgPSBib2R5LmlubmVyQm9keTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMuY3VycmVudFZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zLm1hcCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLnJvd3MubWFwKChyb3cpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByb3cubWFwKChjb250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlNFRUtFUixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtRm9ybUJhc2VDb250b2xUeXBlLkRST1BET1dOLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuQ0hFQ0tMSVNULFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGNvbnRyb2wuY29udHJvbFR5cGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhdGhpcy5jdXJyZW50VmFsdWVbY29udHJvbC5maWVsZF0pIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpICYmICEhIWNvbnRyb2wuZ2V0QnlJZEFwaSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjb250cm9sLmNvbnRyb2xUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUZvcm1CYXNlQ29udG9sVHlwZS5EUk9QRE9XTjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISEhY29udHJvbC5kcm9wZG93bk9wdGlvbnMkPy52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoYGdldEJ5SWRBcGkgbm90IHByb3ZpZGVkIGZvciAnJHtjb250cm9sLmZpZWxkfSdgLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUZvcm1CYXNlQ29udG9sVHlwZS5DSEVDS0xJU1Q6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhIWNvbnRyb2wuY2hlY2tsaXN0T3B0aW9ucyQ/LnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgZ2V0QnlJZEFwaSBub3QgcHJvdmlkZWQgZm9yICcke2NvbnRyb2wuZmllbGR9J2AsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgZ2V0QnlJZEFwaSBub3QgcHJvdmlkZWQgZm9yICcke2NvbnRyb2wuZmllbGR9J2AsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1ha2VHZXRSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRCeUlkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLmdldEJ5SWRBcGkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGA/aWQ9JHt0aGlzLmN1cnJlbnRWYWx1ZVtjb250cm9sLmZpZWxkXX1gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZm9ybSBnZXRCeUlkIHJlc3VsdDogXCIsIHRoaXMuY3VycmVudFZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0QnlJZE9iamVjdCQ/Lm5leHQoYm9keS5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5nZXRCeUlkT2JqZWN0JD8ubmV4dChudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xUeXBlID09PSBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlNFRUtFUiAmJiBjb250cm9sLm11bHRpTW9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLm9iamVjdExpc3QkPy5uZXh0KGJvZHkuaW5uZXJCb2R5W2NvbnRyb2wuZ2V0T2JqZWN0TGlzdEZyb20hXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9ucyQubmV4dCh0aGlzLnNlY3Rpb25zKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAvKiAjZW5kcmVnaW9uOiBVc2luZyBQYXRjaFZhbHVlIGluc3RlYWQgb2Ygc2V0VmFsdWUgKi9cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIGluaXRGb3JtVmFsdWVTdHJpbmcgdG8gdGhlIGNhbGxlclxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Jbml0aWFsVmFsdWVTdHJpbmdSZWFkeS5lbWl0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kZSQubmV4dChFbnVtQ29yZVBhZ2VFZGl0TW9kZS5DUkVBVEUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc3VibWl0VGV4dCA9IEVudW1UcmFuc2xhdGVLZXkuVUlfRURJVF9GT1JNX0JVVFRPTl9BREQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMubGFuZyA9IHgpXHJcbiAgICAgIClcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVSZWxvYWRGbGFnRm9yVGhlQ2FsbGVyKGlkOiBudW1iZXIpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBpbnN0YW5jZXNGaWx0ZXIgPSB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcihcclxuICAgICAgKHgpID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMubGlzdEluc3RhbmNlXHJcbiAgICApO1xyXG4gICAgaWYgKCEhaW5zdGFuY2VzRmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc0ZpbHRlclswXTtcclxuICAgICAgaW5zdGFuY2UuaWQkLm5leHQoaWQpO1xyXG4gICAgICAvL2lmICghISF0aGlzLm5vcm1hbE1vZGUpIGluc3RhbmNlLnJlbG9hZEZsYWckPy5uZXh0KCFpbnN0YW5jZS5yZWxvYWRGbGFnJC52YWx1ZSk7XHJcblxyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKGBDb3JlUGFnZUxpc3QgaW5zdGFuY2UgbnVtYmVyICR7dGhpcy5saXN0SW5zdGFuY2V9IGN1cnJlbnQgaWQgaXM6ICR7aW5zdGFuY2UuaWQkLnZhbHVlfWAsIGFsZXJ0T3B0aW9ucylcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oYENvcmVQYWdlTGlzdCBpbnN0YW5jZXMgZG8gbm90IGluY2x1ZGUgbnVtYmVyICR7dGhpcy5saXN0SW5zdGFuY2V9YCwgYWxlcnRPcHRpb25zKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk5vdE9rMjAwUmVzcG9uc2UoeDogb2JqZWN0KTogdm9pZCB7XHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKHgpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFwiTm8gcmVzcG9uc2UgY29udGVudC4gSXQgd2FzIHBvc3NpYmx5IGEgQ09SUyBlcnJvci5cIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy90aGlzLmFsZXJ0U2VydmljZS5lcnJvcihKU09OLnN0cmluZ2lmeSh4LCBudWxsLCAyKSwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCk6IHZvaWQge1xyXG5cclxuICAgIC8qIElGIGlkIGlzIGZhbHN5ID0+IENSRUFULCBvdGhlcndpc2UgVVBEQVRFICovXHJcblxyXG4gICAgLyogRk9SIENPTlRST0wgT0YgVFlQRSBHUklEQlVGRkVSLCBTRVQgRVZFUlkgaWQgVE8gTlVMTCAqL1xyXG4gICAgdGhpcy5zZWN0aW9ucy5tYXAoc2VjdGlvbiA9PiB7XHJcbiAgICAgIHNlY3Rpb24ucm93cy5tYXAocm93ID0+IHtcclxuICAgICAgICByb3cubWFwKGNvbnRyb2wgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coY29udHJvbC5jb250cm9sVHlwZSlcclxuICAgICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xUeXBlID09PSBFbnVtRm9ybUJhc2VDb250b2xUeXBlLkdSSURCVUZGRVIpIHtcclxuICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RDb250cm9sID0gdGhpcy5mb3JtLmdldChjb250cm9sLmZpZWxkKT8udmFsdWU7XHJcbiAgICAgICAgICAgIC8vIFRPIERPIDE3LzA4LzIwMjMgPT09PT09PT09PT1cclxuICAgICAgICAgICAgYWJzdHJhY3RDb250cm9sPy52YWx1ZT8ubWFwKCh4OiBhbnkpID0+IHguaWQgPSBudWxsKTtcclxuICAgICAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG5cclxuICAgIGlmICghIXRoaXMubWl4ZWRNb2RlKSB7XHJcbiAgICAgIHRoaXMuc3VibWl0TG9naWMuZW1pdChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBtb2RlOiB0aGlzLmZvcm0uZ2V0KCdlZGl0TW9kZScpPy52YWx1ZSxcclxuICAgICAgICAgIGZvcm1WYWx1ZTogdGhpcy5mb3JtLmdldFJhd1ZhbHVlKClcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISF0aGlzLmF1dG9TdWJtaXRMb2dpY09mZikge1xyXG4gICAgICAvLyBETyB5b3VyIGxvZ2ljIGhlcmVcclxuICAgICAgdGhpcy5zdWJtaXRMb2dpYy5lbWl0KEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmICghISF0aGlzLmZvcm0uZ2V0KCdpZCcpIS52YWx1ZSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgY29uc3Qgc3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3Q6IElTeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCA9IHtcclxuICAgICAgICBzeXNGdW5jdGlvbkNvZGU6IHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudEZ1bmN0aW9uJC52YWx1ZT8uY29kZSB8fCAnVU5ERUZJTkVEJyxcclxuICAgICAgICBzeXNBY3Rpb25Db2RlOiBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX0NSRUFURSxcclxuICAgICAgICBiZWZvcmU6IEpTT04uc3RyaW5naWZ5KHRoaXMuY3VycmVudFZhbHVlKSA/PyAnXCJcIicsXHJcbiAgICAgICAgYWZ0ZXI6IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKSxcclxuICAgICAgICB1c2VybmFtZTogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8udXNlck5hbWUhXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYW5pbWF0ZWRUZXh0U2VydmljZS50ZXh0JC5uZXh0KFxyXG4gICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfRElBTE9HX0FERElOR19QTEVBU0VfV0FJVClcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlXHJcbiAgICAgICAgLm1ha2VQb3N0UmVxdWVzdChcclxuICAgICAgICAgICdjcmVhdGUgJyArIHRoaXMuZW50aXR5VGFibGUsXHJcbiAgICAgICAgICB0aGlzLmNydWQuYyEsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLFxyXG4gICAgICAgICAgICBzeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCxcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keSk7XHJcbiAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZW5kU2lnbmFsKGJvZHkuaW5uZXJCb2R5KTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TdWJtaXRTdWNjZXNzLmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLm9uSW5pdGlhbFZhbHVlU3RyaW5nUmVhZHkuZW1pdChcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKVxyXG4gICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgVHJhbnNmZXIgbmV3bHkgY3JlYXRlZCByZWNvcmQgaWRcclxuICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVJlbG9hZEZsYWdGb3JUaGVDYWxsZXIoYm9keS5pbm5lckJvZHkuaWQpO1xyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJ10sIHsgLyogZXhwZXJpbWVudCovIHJlcGxhY2VVcmw6IHRydWUsIHJlbGF0aXZlVG86IHRoaXMucm91dGUsIHN0YXRlOiB7IGlkOiBib2R5LmlubmVyQm9keS5pZCwgaW5zdGFuY2VOdW1iZXI6IHRoaXMubGlzdEluc3RhbmNlIH0gfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub25Ob3RPazIwMFJlc3BvbnNlKHgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgIGNvbnN0IHN5c011dGF0aW9uTG9nQmVmb3JlQWZ0ZXJSZXF1ZXN0OiBJU3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3QgPSB7XHJcbiAgICAgICAgc3lzRnVuY3Rpb25Db2RlOiB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRGdW5jdGlvbiQudmFsdWU/LmNvZGUgfHwgJ1VOREVGSU5FRCcsXHJcbiAgICAgICAgc3lzQWN0aW9uQ29kZTogRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9TQVZFLFxyXG4gICAgICAgIGJlZm9yZTogSlNPTi5zdHJpbmdpZnkodGhpcy5jdXJyZW50VmFsdWUpID8/ICdcIlwiJyxcclxuICAgICAgICBhZnRlcjogSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpLFxyXG4gICAgICAgIHVzZXJuYW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy51c2VyTmFtZSFcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgYTEgPSB0aGlzLmNvcmVGb3JtU2VydmljZS5nZXRBbGxGb3JtQmFzZUNvbnRyb2xOYW1lcyh0aGlzLmxlZnRJbnB1dFNlY3Rpb25zPy5maWx0ZXIoeCA9PiAheC5oaWRkZW4pKTtcclxuICAgICAgY29uc3QgYTIgPSB0aGlzLmNvcmVGb3JtU2VydmljZS5nZXRBbGxGb3JtQmFzZUNvbnRyb2xOYW1lcyh0aGlzLnNlY3Rpb25zPy5maWx0ZXIoeCA9PiAheC5oaWRkZW4pKTtcclxuICAgICAgY29uc3QgYWN0dWFsRm9ybURlY2xhcmVkRmllbGRzID0gWy4uLmExLCAuLi5hMl07XHJcblxyXG4gICAgICB0aGlzLmFuaW1hdGVkVGV4dFNlcnZpY2UudGV4dCQubmV4dChcclxuICAgICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0RJQUxPR19VUERBVElOR19QTEVBU0VfV0FJVClcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2VcclxuICAgICAgICAubWFrZVBvc3RSZXF1ZXN0KFxyXG4gICAgICAgICAgJ3VwZGF0ZSAnICsgdGhpcy5lbnRpdHlUYWJsZSxcclxuICAgICAgICAgIHRoaXMuY3J1ZC51LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAuLi50aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSxcclxuICAgICAgICAgICAgc3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3QsXHJcbiAgICAgICAgICAgIGFjdHVhbEZvcm1EZWNsYXJlZEZpZWxkc1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHk7XHJcbiAgICAgICAgICAgIC8vdGhpcy5yZXNwb25zZVNlcnZpY2UucmVzb2x2ZShib2R5KTtcclxuICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmRTaWduYWwoYm9keS5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblN1Ym1pdFN1Y2Nlc3MuZW1pdCh0cnVlKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMub25Jbml0aWFsVmFsdWVTdHJpbmdSZWFkeS5lbWl0KFxyXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgIFRyYW5zZmVyIGN1cnJlbnQgcmVjb3JkIGlkXHJcbiAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgdGhpcy50b2dnbGVSZWxvYWRGbGFnRm9yVGhlQ2FsbGVyKGJvZHkuaW5uZXJCb2R5LmlkKTtcclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLyddLCB7IC8qIGV4cGVyaW1lbnQqLyByZXBsYWNlVXJsOiB0cnVlLCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLCBzdGF0ZTogeyBpZDogYm9keS5pbm5lckJvZHkuaWQsIGluc3RhbmNlTnVtYmVyOiB0aGlzLmxpc3RJbnN0YW5jZSB9IH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9uTm90T2syMDBSZXNwb25zZSh4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBQSMavxqBORyBUSOG7qEMgTsOAWSDEkMav4buiQyBU4bqgTyBSQSBLSEkgREVWIFZOUy1QT1JUQUxcclxuICAgKi9cclxuXHJcbiAgb25TYXZlKGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuYW5pbWF0ZWRUZXh0U2VydmljZS50ZXh0JC5uZXh0KFxyXG4gICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0RJQUxPR19BRERJTkdfUExFQVNFX1dBSVQpXHJcbiAgICApO1xyXG4gICAgaWYgKCEhdGhpcy5hcHBDb25maWdTZXJ2aWNlLkRFQlVHX0VOQUJMRUQpIHtcclxuICAgICAgYWxlcnQoSlNPTi5zdHJpbmdpZnkoZSwgbnVsbCwgMikpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2VcclxuICAgICAgLm1ha2VQb3N0UmVxdWVzdChcclxuICAgICAgICAnY3JlYXRlICcgKyB0aGlzLmVudGl0eVRhYmxlLFxyXG4gICAgICAgIHRoaXMuY3J1ZC5zISxcclxuICAgICAgICBlXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keSk7XHJcbiAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCAmJiBib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VuZFNpZ25hbChib2R5LmlubmVyQm9keSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5vbkluaXRpYWxWYWx1ZVN0cmluZ1JlYWR5LmVtaXQoXHJcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGUpXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIC8qXHJcbiAgICAgICAgICBUcmFuc2ZlciBuZXdseSBjcmVhdGVkIHJlY29yZCBpZFxyXG4gICAgICAgICAgKi9cclxuICAgICAgICAgIHRoaXMudG9nZ2xlUmVsb2FkRmxhZ0ZvclRoZUNhbGxlcihib2R5LmlubmVyQm9keS5pZCk7XHJcblxyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbCgpOiB2b2lkIHtcclxuICAgIGlmICghIXRoaXMuYXV0b0NhbmNlbExvZ2ljT2ZmKSB7XHJcbiAgICAgIHRoaXMuY2FuY2VsTG9naWMuZW1pdCh0cnVlKTtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAoISF0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQudmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy51cmxTZXJ2aWNlLnByZXZpb3VzUm91dGVVcmwkLnZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJ1dHRvbkNsaWNrKGU6IElDb3JlQnV0dG9uVk5TKSB7XHJcbiAgICB0aGlzLm9uQnV0dG9uQ2xpY2suZW1pdChlKTtcclxuICB9XHJcblxyXG4gIG9uRm9ybUNyZWF0ZWRMb2NhbChlOiBJRHluYW1pY0Zvcm1FbWl0T25Gb3JtQ3JlYXRlZCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtID0gZS5mb3JtR3JvdXA7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICB0aGlzLm9uRm9ybUNyZWF0ZWQuZW1pdCh0aGlzLmZvcm0pO1xyXG5cclxuICAgIC8vIE5vdyB3ZSBjYW4gcmV0dXJuIGluaXRGb3JtVmFsdWVTdHJpbmcgdG8gdGhlIGNhbGxlclxyXG4gICAgdGhpcy5vbkluaXRpYWxWYWx1ZVN0cmluZ1JlYWR5LmVtaXQoXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiPCEtLSBu4bq/dSBjw7Mga2jDsyBraMSDbiBj4bqnbiBz4butYSBzdHlsZSB4aW4gdnVpIGzDsm5nIHRyYW8gxJHhu5VpIHZzIGFuaCBUw6JuIGdpw6AgLS0+XHJcbjxkaXYgY2xhc3M9XCJtb2RhbC1jb250YWluZXJcIiAqbmdJZj1cIiEhIW5vcm1hbE1vZGVcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICBvdmVyZmxvd1k6ICdzY3JvbGwnXHJcbn1cIj5cclxuICAgIDwhLS0gLS0tIC0tPlxyXG5cclxuXHJcbiAgICA8ZGl2ICNjb250YWluZXJCaWdnZXIgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1oZWFkZXItcG9wdXBcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXhcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPjwvaT5cclxuICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7IG1hcmdpbjogJzBweCAyNHB4JyB9XCI+XHJcbiAgICAgICAgICAgICAgICA8Y29yZS1wYWdlLWhlYWRlciBbdGl0bGVdPVwiY2FwdGlvbkNvZGVcIiBbaGlkZUJ1dHRvbkdyb3VwXT1cInRydWVcIj48L2NvcmUtcGFnZS1oZWFkZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIG7hur91IGPDsyBraMOzIGtoxINuIGPhuqduIHPhu61hIHN0eWxlIHhpbiB2dWkgbMOybmcgdHJhbyDEkeG7lWkgdnMgYW5oIFTDom4gZ2nDoCAtLT5cclxuICAgICAgICA8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJjb3JlLXBhZ2UtZWRpdC1jb250YWluZXIgbm90LW5vcm1hbC1tb2RlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICBvdmVyZmxvdzogJ3Zpc2libGUnXHJcbiAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICA8IS0tIC0tLSAtLT5cclxuXHJcblxyXG4gICAgICAgICAgICA8Y29yZS1mb3JtICpuZ0lmPVwiISFzZWN0aW9ucy5sZW5ndGhcIiBbZm9ybU5hbWVdPVwiJ2Zvcm0nXCIgW3N1Ym1pdFRleHRdPVwic3VibWl0VGV4dFwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd0NhcHRpb25CdXR0b25dPVwic2hvd0NhcHRpb25CdXR0b25cIiBbbGVmdElucHV0U2VjdGlvbnNdPVwibGVmdElucHV0U2VjdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgW2xlZnRJbnB1dFNlY3Rpb25zRmxleFNpemVdPVwibGVmdElucHV0U2VjdGlvbnNGbGV4U2l6ZVwiIFtpbnB1dFNlY3Rpb25zXT1cInNlY3Rpb25zXCIgW21vZGUkXT1cIm1vZGUkXCJcclxuICAgICAgICAgICAgICAgIFtjdXN0b21Gb3JtQnV0dG9uSXRlbXNdPVwiY3VzdG9tRm9ybUJ1dHRvbkl0ZW1zXCIgXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVNhdmVCdXR0b25dPVwiZGlzYWJsZVNhdmVCdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgW2NoZWNrRXJyb3IkXT1cImNoZWNrRXJyb3IkXCJcclxuICAgICAgICAgICAgICAgIChvbkZvcm1DcmVhdGVkKT1cIm9uRm9ybUNyZWF0ZWRMb2NhbCgkZXZlbnQpXCIgKG9uU3VibWl0KT1cIm9uU3VibWl0KClcIiAob25TYXZlKT1cIm9uU2F2ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChvbkNhbmNhbCk9XCJvbkNhbmNlbCgpXCI+PC9jb3JlLWZvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2ICNjb250YWluZXIgY2xhc3M9XCJjb3JlLXBhZ2UtZWRpdC1jb250YWluZXJcIiAqbmdJZj1cIiEhbm9ybWFsTW9kZVwiPlxyXG4gICAgPGkgY2xhc3M9XCJmZWF0aGVyLXhcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPjwvaT5cclxuICAgIDxkaXYgW25nU3R5bGVdPVwieyBtYXJnaW46ICcwcHggMjRweCcgfVwiPlxyXG4gICAgICAgIDxjb3JlLXBhZ2UtaGVhZGVyIFt0aXRsZV09XCJjYXB0aW9uQ29kZVwiIFtoaWRlQnV0dG9uR3JvdXBdPVwidHJ1ZVwiPjwvY29yZS1wYWdlLWhlYWRlcj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8Y29yZS1mb3JtICpuZ0lmPVwiISFzZWN0aW9ucy5sZW5ndGhcIiBbZm9ybU5hbWVdPVwiJ2Zvcm0nXCIgW3N1Ym1pdFRleHRdPVwic3VibWl0VGV4dFwiXHJcbiAgICAgICAgW3Nob3dDYXB0aW9uQnV0dG9uXT1cInNob3dDYXB0aW9uQnV0dG9uXCIgW2xlZnRJbnB1dFNlY3Rpb25zXT1cImxlZnRJbnB1dFNlY3Rpb25zXCJcclxuICAgICAgICBbbGVmdElucHV0U2VjdGlvbnNGbGV4U2l6ZV09XCJsZWZ0SW5wdXRTZWN0aW9uc0ZsZXhTaXplXCIgW2lucHV0U2VjdGlvbnNdPVwic2VjdGlvbnNcIiBbbW9kZSRdPVwibW9kZSRcIlxyXG4gICAgICAgIFtib3R0b21UZW1wbGF0ZVJlZl09XCJib3R0b21UZW1wbGF0ZVJlZlwiIFtjdXN0b21Gb3JtQnV0dG9uSXRlbXNdPVwiY3VzdG9tRm9ybUJ1dHRvbkl0ZW1zXCJcclxuICAgICAgICBbZGlzYWJsZVNhdmVCdXR0b25dPVwiZGlzYWJsZVNhdmVCdXR0b25cIlxyXG4gICAgICAgIFtjaGVja0Vycm9yJF09XCJjaGVja0Vycm9yJFwiIChvbkZvcm1DcmVhdGVkKT1cIm9uRm9ybUNyZWF0ZWRMb2NhbCgkZXZlbnQpXCIgKG9uU3VibWl0KT1cIm9uU3VibWl0KClcIiAob25TYXZlKT1cIm9uU2F2ZSgkZXZlbnQpXCIgKGJ1dHRvbkNsaWNrKT1cImJ1dHRvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgIChvbkNhbmNhbCk9XCJvbkNhbmNlbCgpXCI+PC9jb3JlLWZvcm0+XHJcbjwvZGl2PlxyXG5cclxuPGFwcC1mdWxsc2NyZWVuLW1vZGFsLWxvYWRlciAqbmdJZj1cImxvYWRpbmdcIj48L2FwcC1mdWxsc2NyZWVuLW1vZGFsLWxvYWRlcj4iXX0=
|
|
497
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wYWdlLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGFnZS1lZGl0L2NvcmUtcGFnZS1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXBhZ2UtZWRpdC9jb3JlLXBhZ2UtZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBeUIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxHQUE0QixNQUFNLGVBQWUsQ0FBQztBQU85SSxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUlyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWlDLE1BQU0sNENBQTRDLENBQUM7QUFDOUcsT0FBTyxFQUFhLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBUTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFeEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8s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QUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBSUUsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBRWlCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDUSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGlzRGV2TW9kZSwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBUZW1wbGF0ZVJlZiwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBDb3JlUGFnZUVkaXRTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlLXBhZ2UtZWRpdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQW5pbWF0ZWRUZXh0U2VydmljZSB9IGZyb20gJy4uL2FuaW1hdGVkLXRleHQvYW5pbWF0ZWQtdGV4dC5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUxpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS1wYWdlLWxpc3QvY29yZS1wYWdlLWxpc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmVGb3JtU2VydmljZSB9IGZyb20gJy4uL2NvcmUtZm9ybS9jb3JlLWZvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IElDb3JlRm9ybVNlY3Rpb24sIH0gZnJvbSAnLi4vY29yZS1mb3JtL2NvcmUtZm9ybS9lbnVtLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybUNvbXBvbmVudCwgSUR5bmFtaWNGb3JtRW1pdE9uRm9ybUNyZWF0ZWQgfSBmcm9tICcuLi9jb3JlLWZvcm0vY29yZS1mb3JtL2NvcmUtZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZUJ1dHRvblZOU0NvZGUgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0VudW1Db3JlQnV0dG9uVk5TQ29kZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBDb21tb25IdHRwUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24taHR0cC1yZXF1ZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdWJDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h1Yi1jb25uZWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFVybFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91cmwuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcm91dGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSc7XHJcbmltcG9ydCB7IEVudW1TaWduYWxSVHlwZSB9IGZyb20gJy4uLy4uL2VudW0vRW51bVNpZ25hbFJUeXBlJztcclxuaW1wb3J0IHsgSUZvcm1hdGVkUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lGb3JtYXRlZFJlc3BvbnNlJztcclxuaW1wb3J0IHsgYWxlcnRPcHRpb25zLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBJU3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lTeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCc7XHJcbmltcG9ydCB7IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtL0VudW1Gb3JtQmFzZUNvbnRvbFR5cGUnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZVBhZ2VFZGl0TW9kZSB9IGZyb20gJy4vRW51bUNvcmVQYWdlRWRpdE1vZGUnO1xyXG5pbXBvcnQgeyBJQ29yZVBhZ2VFZGl0Q1JVRCB9IGZyb20gJy4vSUNvcmVQYWdlRWRpdENSVUQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vYXBwLXBpcGVzL3RyYW5zbGF0ZS5waXBlJztcclxuaW1wb3J0IHsgRnVsbHNjcmVlbk1vZGFsTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZnVsbHNjcmVlbi1tb2RhbC1sb2FkZXIvZnVsbHNjcmVlbi1tb2RhbC1sb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXNwb25zZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXNwb25zZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IElDb3JlQnV0dG9uVk5TIH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9JQ29yZUJ1dHRvblZOUyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtcGFnZS1lZGl0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIENvcmVGb3JtQ29tcG9uZW50LFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIEZ1bGxzY3JlZW5Nb2RhbExvYWRlckNvbXBvbmVudCxcclxuICAgIENvcmVQYWdlSGVhZGVyQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1wYWdlLWVkaXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtcGFnZS1lZGl0LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlUGFnZUVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIHN0YXlBZnRlclN1Ym1pdCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgd2lkdGghOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZW50aXR5VGFibGUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaGFzSWRPZlN0cmluZ1R5cGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGNhcHRpb25Db2RlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGxlZnRJbnB1dFNlY3Rpb25zITogSUNvcmVGb3JtU2VjdGlvbltdO1xyXG4gIEBJbnB1dCgpIGxlZnRJbnB1dFNlY3Rpb25zRmxleFNpemUhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgc2VjdGlvbnMhOiBJQ29yZUZvcm1TZWN0aW9uW107XHJcbiAgQElucHV0KCkgbm9ybWFsTW9kZSE6IGJvb2xlYW47IC8vIHRoaXMgYWxsb3dzIHRvIG9wZW4gdGhlIGVkaXQgZm9ybSBhcyB1c3VhbCBtb2RlXHJcbiAgQElucHV0KCkgYm90dG9tVGVtcGxhdGVSZWYhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dCgpIGF1dG9HZXRCeUlkT2ZmITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBhdXRvU3VibWl0TG9naWNPZmYhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGF1dG9DYW5jZWxMb2dpY09mZiE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY3VzdG9tRm9ybUJ1dHRvbkl0ZW1zITogRW51bUNvcmVCdXR0b25WTlNDb2RlW107XHJcbiAgQElucHV0KCkgbWl4ZWRNb2RlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjaGVja0Vycm9yJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIEBJbnB1dCgpIHNob3dTYXZlQnV0dG9uITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkaXNhYmxlU2F2ZUJ1dHRvbiE6IGJvb2xlYW47XHJcblxyXG5cclxuICBAT3V0cHV0KCkgc3VibWl0TG9naWMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uRm9ybUNyZWF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uU3VibWl0U3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25CdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2FuY2VsTG9naWMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGZvcm0hOiBGb3JtR3JvdXA7XHJcblxyXG4gIEBJbnB1dCgpIGNydWQhOiBJQ29yZVBhZ2VFZGl0Q1JVRDtcclxuICBASW5wdXQoKSBlbnRpdHlVbmlxdWVJbmRleHM6IHN0cmluZ1tdW10gPVxyXG4gICAgW107IC8qIEZvciBleDogW1snaWQnXSwgWydwcm92aW5jZUlkJywgJ2Rpc3RyaWNDb2RlJ11dICBldGMuLi4gKi9cclxuICBAT3V0cHV0KCkgb25Jbml0aWFsVmFsdWVTdHJpbmdSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lckJpZ2dlcicpIGNvbnRhaW5lckJpZ2dlciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIHNlY3Rpb25zJCE6IEJlaGF2aW9yU3ViamVjdDxJQ29yZUZvcm1TZWN0aW9uW10+O1xyXG4gIG1vZGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxFbnVtQ29yZVBhZ2VFZGl0TW9kZT4oXHJcbiAgICBFbnVtQ29yZVBhZ2VFZGl0TW9kZS5DUkVBVEVcclxuICApO1xyXG5cclxuICBjdXJyZW50VmFsdWU6IGFueTtcclxuICBpbml0aWFsVmFsdWUhOiBzdHJpbmc7XHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgZnJvbVVybCE6IHN0cmluZztcclxuICBsaXN0SW5zdGFuY2UhOiBudW1iZXI7XHJcbiAgbG9hZGluZyE6IGJvb2xlYW47XHJcblxyXG4gIGxhbmchOiBzdHJpbmc7XHJcblxyXG4gIHN1Ym1pdFRleHQhOiBFbnVtVHJhbnNsYXRlS2V5O1xyXG5cclxuICBzaG93Q2FwdGlvbkJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHNjcm9sbCE6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBjb3JlUGFnZUVkaXRTZXJ2aWNlOiBDb3JlUGFnZUVkaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb21tb25IdHRwUmVxdWVzdFNlcnZpY2U6IENvbW1vbkh0dHBSZXF1ZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgYW5pbWF0ZWRUZXh0U2VydmljZTogQW5pbWF0ZWRUZXh0U2VydmljZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZUZvcm1TZXJ2aWNlOiBDb3JlRm9ybVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvcmVQYWdlTGlzdFNlcnZpY2U6IENvcmVQYWdlTGlzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGh1YkNvbm5lY3Rpb25TZXJ2aWNlOiBIdWJDb25uZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgdXJsU2VydmljZTogVXJsU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGluZ1NlcnZpY2U6IFJvdXRpbmdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXNwb25zZVNlcnZpY2U6IFJlc3BvbnNlU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5mcm9tVXJsID0gdGhpcy5jb3JlUGFnZUVkaXRTZXJ2aWNlLmZyb21Vcmw7XHJcbiAgICB0aGlzLmxpc3RJbnN0YW5jZSA9IE51bWJlcihcclxuICAgICAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2xpc3RJbnN0YW5jZScpIVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VuZFNpZ25hbChkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmh1YkNvbm5lY3Rpb25TZXJ2aWNlLmh1YkNvbm5lY3Rpb24kLnZhbHVlO1xyXG4gICAgaWYgKCEhY29ubmVjdGlvbikge1xyXG4gICAgICBjb25zdCBtZXNzYWdlOiBJSHViQ29ubmVjdGlvbkFjdGl2aXR5ID0ge1xyXG4gICAgICAgIHNpZDogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaWQhLFxyXG4gICAgICAgIHVzZXJuYW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5mdWxsTmFtZSEsXHJcbiAgICAgICAgYXZhdGFyOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5hdmF0YXIhLFxyXG4gICAgICAgIHNpZ25hbFR5cGU6IEVudW1TaWduYWxSVHlwZS5FTlRJVFlfQ0hBTkdFRCxcclxuICAgICAgICBtZXNzYWdlOiBgJHt0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlXHJcbiAgICAgICAgICA/LnVzZXJOYW1lIX0gaGFzIGNoYW5nZWQgZW50aXR5ICR7dGhpcy5lbnRpdHlUYWJsZX1gLFxyXG4gICAgICAgIGxvZ2luVGltZTogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ubG9naW5UaW1lISxcclxuICAgICAgICBkYXRhOiBudWxsLFxyXG4gICAgICB9O1xyXG4gICAgICBjb25uZWN0aW9uLmludm9rZSgnU2VuZE1lc3NhZ2UnLCBtZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc2VjdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJQ29yZUZvcm1TZWN0aW9uW10+KHRoaXMuc2VjdGlvbnMpO1xyXG5cclxuICAgIGlmICghISF0aGlzLmVudGl0eVRhYmxlKSB7XHJcbiAgICAgIGFsZXJ0KFxyXG4gICAgICAgICdQcm9wZXJ0eSBlbnRpdHlUYWJsZSAobmFtZSkgaXMgcmVxdWlyZWQgZm9yIGNvbXBvbmVudCAnICtcclxuICAgICAgICB0aGlzLmNhcHRpb25Db2RlXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgJ1Byb3BlcnR5IGVudGl0eVRhYmxlIChuYW1lKSBpcyByZXF1aXJlZCBmb3IgY29tcG9uZW50ICcgK1xyXG4gICAgICAgIHRoaXMuY2FwdGlvbkNvZGVcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghIXRoaXMubm9ybWFsTW9kZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmNvbnRhaW5lcilcclxuICAgICAgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS13aWR0aCcsICcxMDAlJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoISF0aGlzLndpZHRoKSB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcclxuICAgICAgICAgICctLXdpZHRoJyxcclxuICAgICAgICAgIHRoaXMud2lkdGggKyAncHgnXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbnRhaW5lckJpZ2dlci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxyXG4gICAgICAgICctLWhlaWdodCcsXHJcbiAgICAgICAgJzk1JSdcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNjcm9sbCA9IHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHRcclxuICAgIH0pO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoISEhdGhpcy5taXhlZE1vZGUpIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJ0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmVcIiwgeClcclxuXHJcbiAgICAgICAgICAgIGxldCBpZDogc3RyaW5nID0gJzAnO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNJZE9mU3RyaW5nVHlwZSkge1xyXG4gICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZCA9IGF0b2IoeFsnaWQnXSk7XHJcbiAgICAgICAgICAgICAgfSBjYXRjaCB7IHJldHVybiB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlkID0gTnVtYmVyKGF0b2IoeFsnaWQnXSkpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgfSBjYXRjaCB7IHJldHVybiB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpZCAhPT0gJzAnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5tb2RlJC5uZXh0KEVudW1Db3JlUGFnZUVkaXRNb2RlLlVQREFURSk7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc3VibWl0VGV4dCA9IEVudW1UcmFuc2xhdGVLZXkuVUlfRURJVF9GT1JNX0JVVFRPTl9TQVZFO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoISEhdGhpcy5hdXRvR2V0QnlJZE9mZikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvcmVQYWdlRWRpdFNlcnZpY2UuZ2V0QnlJZChpZCwgdGhpcy5jcnVkLnIpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5yZXNwb25zZVNlcnZpY2UucmVzb2x2ZShib2R5KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKGJvZHkuc3RhdHVzQ29kZSA9IDIwMCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIC8qICNyZWdpb24gRXhjbHVkZSBzZWN0aW9ucyB3aXRoIGZsYWcgYWRkTW9kZU9ubHk9dHJ1ZSAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCEhYm9keS5pbm5lckJvZHkuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHJlbGV2YW50IGNvbnRyb2xzIGZyb20gZm9ybSBncm91cFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRNb2RlT25seVNlY3Rpb25zID0gdGhpcy5zZWN0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHgpID0+ICEheC5hZGRNb2RlT25seVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRNb2RlT25seVNlY3Rpb25zLm1hcCgoYWRkTW9kZU9ubHlTZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkTW9kZU9ubHlTZWN0aW9uLnJvd3MubWFwKChhZGRNb2RlT25seVJvdykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkTW9kZU9ubHlSb3cubWFwKChhZGRNb2RlT25seUNvbnRyb2wpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnJlbW92ZUNvbnRyb2woYWRkTW9kZU9ubHlDb250cm9sLmZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSByZWxldmFudCBjb250cm9scyBmcm9tIGZvcm0gc2VjdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U2VjdGlvbnMgPSB0aGlzLnNlY3Rpb25zLmZpbHRlcigoeCkgPT4gISEheC5hZGRNb2RlT25seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvbnMgPSBuZXdTZWN0aW9ucztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9ucyQubmV4dCh0aGlzLnNlY3Rpb25zKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIC8qICNlbmRyZWdpb24gRXhjbHVkZSBzZWN0aW9ucyB3aXRoIGZsYWcgYWRkTW9kZU9ubHk9dHJ1ZSAqL1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIC8qICNyZWdpb246IEFzc2lnbiB2YWx1ZSB0byBhdHRhY2htZW50IGZpZWxkcyB3aGVuIGNvbnRyb2xUeXBlID0gQVRUQUNITUVOVCAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9ucy5tYXAoKHNlY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi5yb3dzLm1hcCgocm93KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm93Lm1hcCgoY29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wuY29udHJvbFR5cGUgPT09IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuQVRUQUNITUVOVCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlVG9TaG93ID0gYm9keS5pbm5lckJvZHlbY29udHJvbC5hc3NpZ25UbyFdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgLyogI2VuZHJlZ2lvbjogQXNzaWduIHZhbHVlIHRvIGJhc2ljIGZpZWxkcyB3aGVuIGNvbnRyb2xUeXBlID0gQVRUQUNITUVOVCAqL1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIC8qICNyZWdpb246IFVzaW5nIFBhdGNoVmFsdWUgaW5zdGVhZCBvZiBzZXRWYWx1ZSAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXMgb2Z0ZW4gaGF2ZSBleHRyYSBoZWxwZXIgZmllbGRzXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdGh1cywgaWYgd2UgdXNlIHNldFZhbHVlIG1ldGhvZCwgdGhlIGhlbHBlciBmaWVsZHMgd2lsbCBiZSBsb3N0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5mb3JtLnNldFZhbHVlKGJvZHkuaW5uZXJCb2R5KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIC8vIHNvLCB3ZSB1c2UgcGF0Y2hWYWx1ZSBtZXRob2QgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VmFsdWUgPSBib2R5LmlubmVyQm9keTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMuY3VycmVudFZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zLm1hcCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLnJvd3MubWFwKChyb3cpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByb3cubWFwKChjb250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlNFRUtFUixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtRm9ybUJhc2VDb250b2xUeXBlLkRST1BET1dOLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuQ0hFQ0tMSVNULFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGNvbnRyb2wuY29udHJvbFR5cGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhdGhpcy5jdXJyZW50VmFsdWVbY29udHJvbC5maWVsZF0pIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpICYmICEhIWNvbnRyb2wuZ2V0QnlJZEFwaSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjb250cm9sLmNvbnRyb2xUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUZvcm1CYXNlQ29udG9sVHlwZS5EUk9QRE9XTjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISEhY29udHJvbC5kcm9wZG93bk9wdGlvbnMkPy52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoYGdldEJ5SWRBcGkgbm90IHByb3ZpZGVkIGZvciAnJHtjb250cm9sLmZpZWxkfSdgLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUZvcm1CYXNlQ29udG9sVHlwZS5DSEVDS0xJU1Q6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhIWNvbnRyb2wuY2hlY2tsaXN0T3B0aW9ucyQ/LnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgZ2V0QnlJZEFwaSBub3QgcHJvdmlkZWQgZm9yICcke2NvbnRyb2wuZmllbGR9J2AsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgZ2V0QnlJZEFwaSBub3QgcHJvdmlkZWQgZm9yICcke2NvbnRyb2wuZmllbGR9J2AsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1ha2VHZXRSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRCeUlkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLmdldEJ5SWRBcGkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGA/aWQ9JHt0aGlzLmN1cnJlbnRWYWx1ZVtjb250cm9sLmZpZWxkXX1gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZm9ybSBnZXRCeUlkIHJlc3VsdDogXCIsIHRoaXMuY3VycmVudFZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0QnlJZE9iamVjdCQ/Lm5leHQoYm9keS5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5nZXRCeUlkT2JqZWN0JD8ubmV4dChudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xUeXBlID09PSBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlNFRUtFUiAmJiBjb250cm9sLm11bHRpTW9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLm9iamVjdExpc3QkPy5uZXh0KGJvZHkuaW5uZXJCb2R5W2NvbnRyb2wuZ2V0T2JqZWN0TGlzdEZyb20hXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9ucyQubmV4dCh0aGlzLnNlY3Rpb25zKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAvKiAjZW5kcmVnaW9uOiBVc2luZyBQYXRjaFZhbHVlIGluc3RlYWQgb2Ygc2V0VmFsdWUgKi9cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIGluaXRGb3JtVmFsdWVTdHJpbmcgdG8gdGhlIGNhbGxlclxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Jbml0aWFsVmFsdWVTdHJpbmdSZWFkeS5lbWl0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kZSQubmV4dChFbnVtQ29yZVBhZ2VFZGl0TW9kZS5DUkVBVEUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc3VibWl0VGV4dCA9IEVudW1UcmFuc2xhdGVLZXkuVUlfRURJVF9GT1JNX0JVVFRPTl9BREQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMubGFuZyA9IHgpXHJcbiAgICAgIClcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVSZWxvYWRGbGFnRm9yVGhlQ2FsbGVyKGlkOiBudW1iZXIpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBpbnN0YW5jZXNGaWx0ZXIgPSB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcihcclxuICAgICAgKHgpID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMubGlzdEluc3RhbmNlXHJcbiAgICApO1xyXG4gICAgaWYgKCEhaW5zdGFuY2VzRmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc0ZpbHRlclswXTtcclxuICAgICAgaW5zdGFuY2UuaWQkLm5leHQoaWQpO1xyXG4gICAgICAvL2lmICghISF0aGlzLm5vcm1hbE1vZGUpIGluc3RhbmNlLnJlbG9hZEZsYWckPy5uZXh0KCFpbnN0YW5jZS5yZWxvYWRGbGFnJC52YWx1ZSk7XHJcblxyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKGBDb3JlUGFnZUxpc3QgaW5zdGFuY2UgbnVtYmVyICR7dGhpcy5saXN0SW5zdGFuY2V9IGN1cnJlbnQgaWQgaXM6ICR7aW5zdGFuY2UuaWQkLnZhbHVlfWAsIGFsZXJ0T3B0aW9ucylcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oYENvcmVQYWdlTGlzdCBpbnN0YW5jZXMgZG8gbm90IGluY2x1ZGUgbnVtYmVyICR7dGhpcy5saXN0SW5zdGFuY2V9YCwgYWxlcnRPcHRpb25zKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk5vdE9rMjAwUmVzcG9uc2UoeDogb2JqZWN0KTogdm9pZCB7XHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKHgpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFwiTm8gcmVzcG9uc2UgY29udGVudC4gSXQgd2FzIHBvc3NpYmx5IGEgQ09SUyBlcnJvci5cIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy90aGlzLmFsZXJ0U2VydmljZS5lcnJvcihKU09OLnN0cmluZ2lmeSh4LCBudWxsLCAyKSwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCk6IHZvaWQge1xyXG5cclxuICAgIC8qIElGIGlkIGlzIGZhbHN5ID0+IENSRUFULCBvdGhlcndpc2UgVVBEQVRFICovXHJcblxyXG4gICAgLyogRk9SIENPTlRST0wgT0YgVFlQRSBHUklEQlVGRkVSLCBTRVQgRVZFUlkgaWQgVE8gTlVMTCAqL1xyXG4gICAgdGhpcy5zZWN0aW9ucy5tYXAoc2VjdGlvbiA9PiB7XHJcbiAgICAgIHNlY3Rpb24ucm93cy5tYXAocm93ID0+IHtcclxuICAgICAgICByb3cubWFwKGNvbnRyb2wgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coY29udHJvbC5jb250cm9sVHlwZSlcclxuICAgICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xUeXBlID09PSBFbnVtRm9ybUJhc2VDb250b2xUeXBlLkdSSURCVUZGRVIpIHtcclxuICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RDb250cm9sID0gdGhpcy5mb3JtLmdldChjb250cm9sLmZpZWxkKT8udmFsdWU7XHJcbiAgICAgICAgICAgIC8vIFRPIERPIDE3LzA4LzIwMjMgPT09PT09PT09PT1cclxuICAgICAgICAgICAgYWJzdHJhY3RDb250cm9sPy52YWx1ZT8ubWFwKCh4OiBhbnkpID0+IHguaWQgPSBudWxsKTtcclxuICAgICAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG5cclxuICAgIGlmICghIXRoaXMubWl4ZWRNb2RlKSB7XHJcbiAgICAgIHRoaXMuc3VibWl0TG9naWMuZW1pdChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBtb2RlOiB0aGlzLmZvcm0uZ2V0KCdlZGl0TW9kZScpPy52YWx1ZSxcclxuICAgICAgICAgIGZvcm1WYWx1ZTogdGhpcy5mb3JtLmdldFJhd1ZhbHVlKClcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISF0aGlzLmF1dG9TdWJtaXRMb2dpY09mZikge1xyXG4gICAgICAvLyBETyB5b3VyIGxvZ2ljIGhlcmVcclxuICAgICAgdGhpcy5zdWJtaXRMb2dpYy5lbWl0KEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmICghISF0aGlzLmZvcm0uZ2V0KCdpZCcpIS52YWx1ZSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgY29uc3Qgc3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3Q6IElTeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCA9IHtcclxuICAgICAgICBzeXNGdW5jdGlvbkNvZGU6IHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudEZ1bmN0aW9uJC52YWx1ZT8uY29kZSB8fCAnVU5ERUZJTkVEJyxcclxuICAgICAgICBzeXNBY3Rpb25Db2RlOiBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX0NSRUFURSxcclxuICAgICAgICBiZWZvcmU6IEpTT04uc3RyaW5naWZ5KHRoaXMuY3VycmVudFZhbHVlKSA/PyAnXCJcIicsXHJcbiAgICAgICAgYWZ0ZXI6IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKSxcclxuICAgICAgICB1c2VybmFtZTogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8udXNlck5hbWUhXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYW5pbWF0ZWRUZXh0U2VydmljZS50ZXh0JC5uZXh0KFxyXG4gICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfRElBTE9HX0FERElOR19QTEVBU0VfV0FJVClcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlXHJcbiAgICAgICAgLm1ha2VQb3N0UmVxdWVzdChcclxuICAgICAgICAgICdjcmVhdGUgJyArIHRoaXMuZW50aXR5VGFibGUsXHJcbiAgICAgICAgICB0aGlzLmNydWQuYyEsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLFxyXG4gICAgICAgICAgICBzeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCxcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keSk7XHJcbiAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZW5kU2lnbmFsKGJvZHkuaW5uZXJCb2R5KTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TdWJtaXRTdWNjZXNzLmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLm9uSW5pdGlhbFZhbHVlU3RyaW5nUmVhZHkuZW1pdChcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKVxyXG4gICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgVHJhbnNmZXIgbmV3bHkgY3JlYXRlZCByZWNvcmQgaWRcclxuICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVJlbG9hZEZsYWdGb3JUaGVDYWxsZXIoYm9keS5pbm5lckJvZHkuaWQpO1xyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJ10sIHsgLyogZXhwZXJpbWVudCovIHJlcGxhY2VVcmw6IHRydWUsIHJlbGF0aXZlVG86IHRoaXMucm91dGUsIHN0YXRlOiB7IGlkOiBib2R5LmlubmVyQm9keS5pZCwgaW5zdGFuY2VOdW1iZXI6IHRoaXMubGlzdEluc3RhbmNlIH0gfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub25Ob3RPazIwMFJlc3BvbnNlKHgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgIGNvbnN0IHN5c011dGF0aW9uTG9nQmVmb3JlQWZ0ZXJSZXF1ZXN0OiBJU3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3QgPSB7XHJcbiAgICAgICAgc3lzRnVuY3Rpb25Db2RlOiB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRGdW5jdGlvbiQudmFsdWU/LmNvZGUgfHwgJ1VOREVGSU5FRCcsXHJcbiAgICAgICAgc3lzQWN0aW9uQ29kZTogRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9TQVZFLFxyXG4gICAgICAgIGJlZm9yZTogSlNPTi5zdHJpbmdpZnkodGhpcy5jdXJyZW50VmFsdWUpID8/ICdcIlwiJyxcclxuICAgICAgICBhZnRlcjogSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpLFxyXG4gICAgICAgIHVzZXJuYW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy51c2VyTmFtZSFcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgYTEgPSB0aGlzLmNvcmVGb3JtU2VydmljZS5nZXRBbGxGb3JtQmFzZUNvbnRyb2xOYW1lcyh0aGlzLmxlZnRJbnB1dFNlY3Rpb25zPy5maWx0ZXIoeCA9PiAheC5oaWRkZW4pKTtcclxuICAgICAgY29uc3QgYTIgPSB0aGlzLmNvcmVGb3JtU2VydmljZS5nZXRBbGxGb3JtQmFzZUNvbnRyb2xOYW1lcyh0aGlzLnNlY3Rpb25zPy5maWx0ZXIoeCA9PiAheC5oaWRkZW4pKTtcclxuICAgICAgY29uc3QgYWN0dWFsRm9ybURlY2xhcmVkRmllbGRzID0gWy4uLmExLCAuLi5hMl07XHJcblxyXG4gICAgICB0aGlzLmFuaW1hdGVkVGV4dFNlcnZpY2UudGV4dCQubmV4dChcclxuICAgICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0RJQUxPR19VUERBVElOR19QTEVBU0VfV0FJVClcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2VcclxuICAgICAgICAubWFrZVBvc3RSZXF1ZXN0KFxyXG4gICAgICAgICAgJ3VwZGF0ZSAnICsgdGhpcy5lbnRpdHlUYWJsZSxcclxuICAgICAgICAgIHRoaXMuY3J1ZC51LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAuLi50aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSxcclxuICAgICAgICAgICAgc3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3QsXHJcbiAgICAgICAgICAgIGFjdHVhbEZvcm1EZWNsYXJlZEZpZWxkc1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHk7XHJcbiAgICAgICAgICAgIC8vdGhpcy5yZXNwb25zZVNlcnZpY2UucmVzb2x2ZShib2R5KTtcclxuICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmRTaWduYWwoYm9keS5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblN1Ym1pdFN1Y2Nlc3MuZW1pdCh0cnVlKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMub25Jbml0aWFsVmFsdWVTdHJpbmdSZWFkeS5lbWl0KFxyXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgIFRyYW5zZmVyIGN1cnJlbnQgcmVjb3JkIGlkXHJcbiAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgdGhpcy50b2dnbGVSZWxvYWRGbGFnRm9yVGhlQ2FsbGVyKGJvZHkuaW5uZXJCb2R5LmlkKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9UWVBFID09PSBcIk1PQklMRVwiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLyddLCB7IC8qIGV4cGVyaW1lbnQqLyByZXBsYWNlVXJsOiB0cnVlLCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLCBzdGF0ZTogeyBpZDogYm9keS5pbm5lckJvZHkuaWQsIGluc3RhbmNlTnVtYmVyOiB0aGlzLmxpc3RJbnN0YW5jZSB9IH0pOyAgXHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQVBQX1RZUEUgPT09IFwiV0VCQVBQXCIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSwgc3RhdGU6IHsgaWQ6IGJvZHkuaW5uZXJCb2R5LmlkLCBpbnN0YW5jZU51bWJlcjogdGhpcy5saXN0SW5zdGFuY2UgfSB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub25Ob3RPazIwMFJlc3BvbnNlKHgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIFBIxq/GoE5HIFRI4buoQyBOw4BZIMSQxq/hu6JDIFThuqBPIFJBIEtISSBERVYgVk5TLVBPUlRBTFxyXG4gICAqL1xyXG5cclxuICBvblNhdmUoZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5hbmltYXRlZFRleHRTZXJ2aWNlLnRleHQkLm5leHQoXHJcbiAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfRElBTE9HX0FERElOR19QTEVBU0VfV0FJVClcclxuICAgICk7XHJcbiAgICBpZiAoISF0aGlzLmFwcENvbmZpZ1NlcnZpY2UuREVCVUdfRU5BQkxFRCkge1xyXG4gICAgICBhbGVydChKU09OLnN0cmluZ2lmeShlLCBudWxsLCAyKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbW1vbkh0dHBSZXF1ZXN0U2VydmljZVxyXG4gICAgICAubWFrZVBvc3RSZXF1ZXN0KFxyXG4gICAgICAgICdjcmVhdGUgJyArIHRoaXMuZW50aXR5VGFibGUsXHJcbiAgICAgICAgdGhpcy5jcnVkLnMhLFxyXG4gICAgICAgIGVcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZVNlcnZpY2UucmVzb2x2ZShib2R5KTtcclxuICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwICYmIGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZW5kU2lnbmFsKGJvZHkuaW5uZXJCb2R5KTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLm9uSW5pdGlhbFZhbHVlU3RyaW5nUmVhZHkuZW1pdChcclxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgLypcclxuICAgICAgICAgIFRyYW5zZmVyIG5ld2x5IGNyZWF0ZWQgcmVjb3JkIGlkXHJcbiAgICAgICAgICAqL1xyXG4gICAgICAgICAgdGhpcy50b2dnbGVSZWxvYWRGbGFnRm9yVGhlQ2FsbGVyKGJvZHkuaW5uZXJCb2R5LmlkKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMudXJsU2VydmljZS5wcmV2aW91c1JvdXRlVXJsJC52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgaWYgKCEhdGhpcy5hdXRvQ2FuY2VsTG9naWNPZmYpIHtcclxuICAgICAgdGhpcy5jYW5jZWxMb2dpYy5lbWl0KHRydWUpO1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGlmICghIXRoaXMudXJsU2VydmljZS5wcmV2aW91c1JvdXRlVXJsJC52YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQudmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYnV0dG9uQ2xpY2soZTogSUNvcmVCdXR0b25WTlMpIHtcclxuICAgIHRoaXMub25CdXR0b25DbGljay5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgb25Gb3JtQ3JlYXRlZExvY2FsKGU6IElEeW5hbWljRm9ybUVtaXRPbkZvcm1DcmVhdGVkKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0gPSBlLmZvcm1Hcm91cDtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMuY3VycmVudFZhbHVlKTtcclxuICAgIHRoaXMub25Gb3JtQ3JlYXRlZC5lbWl0KHRoaXMuZm9ybSk7XHJcblxyXG4gICAgLy8gTm93IHdlIGNhbiByZXR1cm4gaW5pdEZvcm1WYWx1ZVN0cmluZyB0byB0aGUgY2FsbGVyXHJcbiAgICB0aGlzLm9uSW5pdGlhbFZhbHVlU3RyaW5nUmVhZHkuZW1pdChcclxuICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCI8IS0tIG7hur91IGPDsyBraMOzIGtoxINuIGPhuqduIHPhu61hIHN0eWxlIHhpbiB2dWkgbMOybmcgdHJhbyDEkeG7lWkgdnMgYW5oIFTDom4gZ2nDoCAtLT5cclxuPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRhaW5lclwiICpuZ0lmPVwiISEhbm9ybWFsTW9kZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgIG92ZXJmbG93WTogJ3Njcm9sbCdcclxufVwiPlxyXG4gICAgPCEtLSAtLS0gLS0+XHJcblxyXG5cclxuICAgIDxkaXYgI2NvbnRhaW5lckJpZ2dlciBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWhlYWRlci1wb3B1cFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZlYXRoZXIteFwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+PC9pPlxyXG4gICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgbWFyZ2luOiAnMHB4IDI0cHgnIH1cIj5cclxuICAgICAgICAgICAgICAgIDxjb3JlLXBhZ2UtaGVhZGVyIFt0aXRsZV09XCJjYXB0aW9uQ29kZVwiIFtoaWRlQnV0dG9uR3JvdXBdPVwidHJ1ZVwiPjwvY29yZS1wYWdlLWhlYWRlcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gbuG6v3UgY8OzIGtow7Mga2jEg24gY+G6p24gc+G7rWEgc3R5bGUgeGluIHZ1aSBsw7JuZyB0cmFvIMSR4buVaSB2cyBhbmggVMOibiBnacOgIC0tPlxyXG4gICAgICAgIDxkaXYgI2NvbnRhaW5lciBjbGFzcz1cImNvcmUtcGFnZS1lZGl0LWNvbnRhaW5lciBub3Qtbm9ybWFsLW1vZGVcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgIG92ZXJmbG93OiAndmlzaWJsZSdcclxuICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgIDwhLS0gLS0tIC0tPlxyXG5cclxuXHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0gKm5nSWY9XCIhIXNlY3Rpb25zLmxlbmd0aFwiIFtmb3JtTmFtZV09XCInZm9ybSdcIiBbc3VibWl0VGV4dF09XCJzdWJtaXRUZXh0XCJcclxuICAgICAgICAgICAgICAgIFtzaG93Q2FwdGlvbkJ1dHRvbl09XCJzaG93Q2FwdGlvbkJ1dHRvblwiIFtsZWZ0SW5wdXRTZWN0aW9uc109XCJsZWZ0SW5wdXRTZWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICBbbGVmdElucHV0U2VjdGlvbnNGbGV4U2l6ZV09XCJsZWZ0SW5wdXRTZWN0aW9uc0ZsZXhTaXplXCIgW2lucHV0U2VjdGlvbnNdPVwic2VjdGlvbnNcIiBbbW9kZSRdPVwibW9kZSRcIlxyXG4gICAgICAgICAgICAgICAgW2N1c3RvbUZvcm1CdXR0b25JdGVtc109XCJjdXN0b21Gb3JtQnV0dG9uSXRlbXNcIiBcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlU2F2ZUJ1dHRvbl09XCJkaXNhYmxlU2F2ZUJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tFcnJvciRdPVwiY2hlY2tFcnJvciRcIlxyXG4gICAgICAgICAgICAgICAgKG9uRm9ybUNyZWF0ZWQpPVwib25Gb3JtQ3JlYXRlZExvY2FsKCRldmVudClcIiAob25TdWJtaXQpPVwib25TdWJtaXQoKVwiIChvblNhdmUpPVwib25TYXZlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKG9uQ2FuY2FsKT1cIm9uQ2FuY2VsKClcIj48L2NvcmUtZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgI2NvbnRhaW5lciBjbGFzcz1cImNvcmUtcGFnZS1lZGl0LWNvbnRhaW5lclwiICpuZ0lmPVwiISFub3JtYWxNb2RlXCI+XHJcbiAgICA8aSBjbGFzcz1cImZlYXRoZXIteFwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+PC9pPlxyXG4gICAgPGRpdiBbbmdTdHlsZV09XCJ7IG1hcmdpbjogJzBweCAyNHB4JyB9XCI+XHJcbiAgICAgICAgPGNvcmUtcGFnZS1oZWFkZXIgW3RpdGxlXT1cImNhcHRpb25Db2RlXCIgW2hpZGVCdXR0b25Hcm91cF09XCJ0cnVlXCI+PC9jb3JlLXBhZ2UtaGVhZGVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxjb3JlLWZvcm0gKm5nSWY9XCIhIXNlY3Rpb25zLmxlbmd0aFwiIFtmb3JtTmFtZV09XCInZm9ybSdcIiBbc3VibWl0VGV4dF09XCJzdWJtaXRUZXh0XCJcclxuICAgICAgICBbc2hvd0NhcHRpb25CdXR0b25dPVwic2hvd0NhcHRpb25CdXR0b25cIiBbbGVmdElucHV0U2VjdGlvbnNdPVwibGVmdElucHV0U2VjdGlvbnNcIlxyXG4gICAgICAgIFtsZWZ0SW5wdXRTZWN0aW9uc0ZsZXhTaXplXT1cImxlZnRJbnB1dFNlY3Rpb25zRmxleFNpemVcIiBbaW5wdXRTZWN0aW9uc109XCJzZWN0aW9uc1wiIFttb2RlJF09XCJtb2RlJFwiXHJcbiAgICAgICAgW2JvdHRvbVRlbXBsYXRlUmVmXT1cImJvdHRvbVRlbXBsYXRlUmVmXCIgW2N1c3RvbUZvcm1CdXR0b25JdGVtc109XCJjdXN0b21Gb3JtQnV0dG9uSXRlbXNcIlxyXG4gICAgICAgIFtkaXNhYmxlU2F2ZUJ1dHRvbl09XCJkaXNhYmxlU2F2ZUJ1dHRvblwiXHJcbiAgICAgICAgW2NoZWNrRXJyb3IkXT1cImNoZWNrRXJyb3IkXCIgKG9uRm9ybUNyZWF0ZWQpPVwib25Gb3JtQ3JlYXRlZExvY2FsKCRldmVudClcIiAob25TdWJtaXQpPVwib25TdWJtaXQoKVwiIChvblNhdmUpPVwib25TYXZlKCRldmVudClcIiAoYnV0dG9uQ2xpY2spPVwiYnV0dG9uQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uQ2FuY2FsKT1cIm9uQ2FuY2VsKClcIj48L2NvcmUtZm9ybT5cclxuPC9kaXY+XHJcblxyXG48YXBwLWZ1bGxzY3JlZW4tbW9kYWwtbG9hZGVyICpuZ0lmPVwibG9hZGluZ1wiPjwvYXBwLWZ1bGxzY3JlZW4tbW9kYWwtbG9hZGVyPiJdfQ==
|
|
@@ -14840,7 +14840,12 @@ class CorePageEditComponent {
|
|
|
14840
14840
|
Transfer current record id
|
|
14841
14841
|
*/
|
|
14842
14842
|
this.toggleReloadFlagForTheCaller(body.innerBody.id);
|
|
14843
|
-
this.
|
|
14843
|
+
if (this.appConfigService.APP_TYPE === "MOBILE") {
|
|
14844
|
+
this.router.navigate(['../'], { /* experiment*/ replaceUrl: true, relativeTo: this.route, state: { id: body.innerBody.id, instanceNumber: this.listInstance } });
|
|
14845
|
+
}
|
|
14846
|
+
else if (this.appConfigService.APP_TYPE === "WEBAPP") {
|
|
14847
|
+
this.router.navigate(['../'], { relativeTo: this.route, state: { id: body.innerBody.id, instanceNumber: this.listInstance } });
|
|
14848
|
+
}
|
|
14844
14849
|
}
|
|
14845
14850
|
}
|
|
14846
14851
|
else {
|