ngx-histaff-alpha 3.5.0 → 3.5.2
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/esm2022/lib/app/libraries/core-navigation-tracker/core-navigation-tracker/core-navigation-tracker.component.mjs +27 -15
- package/esm2022/lib/app/libraries/core-org-tree/core-org-tree/core-org-tree.component.mjs +6 -1
- package/esm2022/lib/app/libraries/core-page-list/core-page-list.component.mjs +2 -1
- package/esm2022/lib/app/libraries/core-pagination-full/core-pagination-full/core-pagination-full.component.mjs +3 -3
- package/esm2022/lib/app/libraries/core-table/EnumCoreTablePipeType.mjs +2 -1
- package/esm2022/lib/app/libraries/pipes/table-cell.pipe.mjs +29 -1
- package/esm2022/lib/app/libraries/services/long-task.service.mjs +2 -1
- package/fesm2022/ngx-histaff-alpha.mjs +64 -16
- package/fesm2022/ngx-histaff-alpha.mjs.map +1 -1
- package/lib/app/libraries/core-table/EnumCoreTablePipeType.d.ts +1 -0
- package/lib/app/libraries/services/long-task.service.d.ts +1 -0
- package/package.json +1 -1
|
@@ -20,6 +20,32 @@ import * as i12 from "../../../services/app.service";
|
|
|
20
20
|
import * as i13 from "../../../services/app-config.service";
|
|
21
21
|
export class CoreNavigationTrackerComponent {
|
|
22
22
|
constructor(authService, router, route, routingService, layoutService, hubConnectionService, userActivityService, urlService, navigatorService, alertService, dialogService, mls, appService, appConfigService) {
|
|
23
|
+
/*
|
|
24
|
+
this.subscriptions.push(
|
|
25
|
+
this.dialogService.dialogConfirmed$.pipe(
|
|
26
|
+
filter(x => {
|
|
27
|
+
return (
|
|
28
|
+
// !!this.dialogService.busy
|
|
29
|
+
true
|
|
30
|
+
&& x?.instanceNumber === this.dialogInstanceNumber && !!x?.confirmed
|
|
31
|
+
&& !!this.navigatorService.clickedItem$.value
|
|
32
|
+
&& (this.authService.data$.value?.id === '8c24683d-7d52-4f5a-8090-31c777e8869d' || this.authService.data$.value?.id === 'bd3e4ad4-11fc-4766-9224-4f9902f3a623')
|
|
33
|
+
)
|
|
34
|
+
})
|
|
35
|
+
).subscribe(_ => {
|
|
36
|
+
this.router.navigate(
|
|
37
|
+
[
|
|
38
|
+
'/root',
|
|
39
|
+
'url-mapper',
|
|
40
|
+
],
|
|
41
|
+
{ state: { url: this.pendingUrl, lastClickedMenuItem: this.lastClickedMenuItem, lastClickedMenuItemString: this.lastClickedMenuItemString } }
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
this.dialogService.resetService();
|
|
45
|
+
|
|
46
|
+
})
|
|
47
|
+
)
|
|
48
|
+
*/
|
|
23
49
|
this.authService = authService;
|
|
24
50
|
this.router = router;
|
|
25
51
|
this.route = route;
|
|
@@ -40,20 +66,6 @@ export class CoreNavigationTrackerComponent {
|
|
|
40
66
|
this.unsubscribe = new Subject();
|
|
41
67
|
this.subscriptions = [];
|
|
42
68
|
this.routingHistory = [];
|
|
43
|
-
this.subscriptions.push(this.dialogService.dialogConfirmed$.pipe(filter(x => {
|
|
44
|
-
return (
|
|
45
|
-
// !!this.dialogService.busy
|
|
46
|
-
true
|
|
47
|
-
&& x?.instanceNumber === this.dialogInstanceNumber && !!x?.confirmed
|
|
48
|
-
&& !!this.navigatorService.clickedItem$.value
|
|
49
|
-
&& (this.authService.data$.value?.id === '8c24683d-7d52-4f5a-8090-31c777e8869d' || this.authService.data$.value?.id === 'bd3e4ad4-11fc-4766-9224-4f9902f3a623'));
|
|
50
|
-
})).subscribe(_ => {
|
|
51
|
-
this.router.navigate([
|
|
52
|
-
'/root',
|
|
53
|
-
'url-mapper',
|
|
54
|
-
], { state: { url: this.pendingUrl, lastClickedMenuItem: this.lastClickedMenuItem, lastClickedMenuItemString: this.lastClickedMenuItemString } });
|
|
55
|
-
this.dialogService.resetService();
|
|
56
|
-
}));
|
|
57
69
|
this.subscriptions.push(this.navigatorService.clickedItem$.pipe(filter(s => !!s)).subscribe(x => {
|
|
58
70
|
this.lastClickedMenuItem = x;
|
|
59
71
|
this.lastClickedMenuItemString = `[${x?.id}]=>${this.mls.trans(x.code)}=>(${x?.url})`;
|
|
@@ -306,4 +318,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
306
318
|
type: Component,
|
|
307
319
|
args: [{ selector: 'core-navigation-tracker', standalone: true, imports: [], template: "" }]
|
|
308
320
|
}], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.RoutingService }, { type: i4.LayoutService }, { type: i5.HubConnectionService }, { type: i6.UserActivityService }, { type: i7.UrlService }, { type: i8.NavigatorService }, { type: i9.AlertService }, { type: i10.DialogService }, { type: i11.MultiLanguageService }, { type: i12.AppService }, { type: i13.AppConfigService }] });
|
|
309
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1uYXZpZ2F0aW9uLXRyYWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFDekksT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFZaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHMUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQXVCN0UsTUFBTSxPQUFPLDhCQUE4QjtJQW1DekMsWUFDVSxXQUF3QixFQUN4QixNQUFjLEVBQ2QsS0FBcUIsRUFDckIsY0FBOEIsRUFDL0IsYUFBNEIsRUFDM0Isb0JBQTBDLEVBQzFDLG1CQUF3QyxFQUN4QyxVQUFzQixFQUN0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O1FBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQ2xFLE1BQU0sUUFBUSxHQUEyQjtZQUN2QyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVM7WUFDcEIsVUFBVSxFQUFFLGVBQWUsQ0FBQyxzQkFBc0I7WUFDbEQsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFTO1lBQ3pCLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTztZQUNyQixPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsUUFBUSw2QkFBNkI7WUFDdkQsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFVO1lBQ25ELElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQTtRQUVELElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRTtZQUNoQixJQUFJO2dCQUNGLFVBQVUsRUFBRSxNQUFNLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzdDO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUNqQjtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQy9DLENBQUM7OEdBdlhVLDhCQUE4QjtrR0FBOUIsOEJBQThCLG1GQ3pDM0MsRUFBQTs7MkZEeUNhLDhCQUE4QjtrQkFQMUMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25DYW5jZWwsIE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25FcnJvciwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIsIFJvdXRlckV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnVtU2lnbmFsUlR5cGUgfSBmcm9tICcuLi8uLi8uLi9lbnVtL0VudW1TaWduYWxSVHlwZSc7XHJcbmltcG9ydCB7IElIdWJDb25uZWN0aW9uQWN0aXZpdHkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL0lIdWJDb25uZWN0aW9uQWN0aXZpdHknO1xyXG5pbXBvcnQgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JvdXRpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaHViLWNvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91c2VyLWFjdGl2aXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJUm91dGluZ0hpc3RvcnlJdGVtIH0gZnJvbSAnLi4vLi4vY29yZS1yb3V0aW5nLWhpc3RvcnkvY29yZS1yb3V0aW5nLWhpc3RvcnkvY29yZS1yb3V0aW5nLWhpc3RvcnkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXJsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VybC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IElOYXZpZ2F0b3JJdGVtIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JTmF2aWdhdG9ySXRlbSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElBdXRoRGF0YSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSUF1dGhEYXRhJztcclxuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMb2dVc2VyQWN0aXZpdHkge1xyXG4gIGNsaWVudENvZGU6IHN0cmluZztcclxuICBhcHBUeXBlOiBzdHJpbmc7XHJcbiAgdXNlcm5hbWU/OiBzdHJpbmc7XHJcbiAgc2lkPzogc3RyaW5nO1xyXG4gIGxvZ2luVGltZT86IERhdGU7XHJcbiAgYWNjZXNzVGltZTogRGF0ZTtcclxuICBwYXRoOiBzdHJpbmc7XHJcbiAgcGF0aG5hbWU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1uYXZpZ2F0aW9uLXRyYWNrZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW10sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlTmF2aWdhdGlvblRyYWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBuYXZpZ2F0aW5nITogYm9vbGVhbjtcclxuICB1cmwhOiBzdHJpbmc7XHJcblxyXG4gIGxhbmchOiBzdHJpbmc7XHJcblxyXG4gIGFwcENvbmZpZzogYW55ID0ge1xyXG4gICAgc2hvd0xheW91dDogJ2ZhbHNlJ1xyXG4gIH07XHJcblxyXG4gIGFwcEluaXRpYWxpemluZyE6IGJvb2xlYW47XHJcbiAgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgc3VibWl0dGluZyE6IGJvb2xlYW47XHJcbiAgbWVudU9wZW4hOiBib29sZWFuO1xyXG4gIGxlZnRiYXJSZWR1Y2VkITogYm9vbGVhbjtcclxuICBrZXl3b3JkITogc3RyaW5nO1xyXG4gIHNpZCE6IHN0cmluZztcclxuICB1c2VybmFtZSE6IHN0cmluZztcclxuICBleHBpcmVzQXQhOiBzdHJpbmc7XHJcbiAgYXZhdGFyITogc3RyaW5nO1xyXG5cclxuXHJcbiAgdW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICByb3V0aW5nSGlzdG9yeTogSVJvdXRpbmdIaXN0b3J5SXRlbVtdID0gW107XHJcblxyXG4gIHBlbmRpbmdVcmwhOiBzdHJpbmc7XHJcbiAgbGFzdENsaWNrZWRNZW51SXRlbSE6IElOYXZpZ2F0b3JJdGVtIHwgbnVsbDtcclxuICBsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nITogc3RyaW5nO1xyXG5cclxuICBkaWFsb2dJbnN0YW5jZU51bWJlciE6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcm91dGluZ1NlcnZpY2U6IFJvdXRpbmdTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGh1YkNvbm5lY3Rpb25TZXJ2aWNlOiBIdWJDb25uZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlckFjdGl2aXR5U2VydmljZTogVXNlckFjdGl2aXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgdXJsU2VydmljZTogVXJsU2VydmljZSxcclxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcFNlcnZpY2U6IEFwcFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZGlhbG9nQ29uZmlybWVkJC5waXBlKFxyXG4gICAgICAgIGZpbHRlcih4ID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIC8vICEhdGhpcy5kaWFsb2dTZXJ2aWNlLmJ1c3lcclxuICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICAgICAmJiB4Py5pbnN0YW5jZU51bWJlciA9PT0gdGhpcy5kaWFsb2dJbnN0YW5jZU51bWJlciAmJiAhIXg/LmNvbmZpcm1lZFxyXG4gICAgICAgICAgICAmJiAhIXRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQudmFsdWVcclxuICAgICAgICAgICAgJiYgKHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlkID09PSAnOGMyNDY4M2QtN2Q1Mi00ZjVhLTgwOTAtMzFjNzc3ZTg4NjlkJyB8fCB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pZCA9PT0gJ2JkM2U0YWQ0LTExZmMtNDc2Ni05MjI0LTRmOTkwMmYzYTYyMycpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoXHJcbiAgICAgICAgICBbXHJcbiAgICAgICAgICAgICcvcm9vdCcsXHJcbiAgICAgICAgICAgICd1cmwtbWFwcGVyJyxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICB7IHN0YXRlOiB7IHVybDogdGhpcy5wZW5kaW5nVXJsLCBsYXN0Q2xpY2tlZE1lbnVJdGVtOiB0aGlzLmxhc3RDbGlja2VkTWVudUl0ZW0sIGxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmc6IHRoaXMubGFzdENsaWNrZWRNZW51SXRlbVN0cmluZyB9IH1cclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVzZXRTZXJ2aWNlKCk7XHJcblxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLnBpcGUoZmlsdGVyKHMgPT4gISFzKSkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMubGFzdENsaWNrZWRNZW51SXRlbSA9IHhcclxuICAgICAgICB0aGlzLmxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcgPSBgWyR7eD8uaWR9XT0+JHt0aGlzLm1scy50cmFucyh4IS5jb2RlKX09Pigke3g/LnVybH0pYFxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC5uZXh0KHRoaXMucm91dGVyLnVybCk7XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLnJvdXRpbmdIaXN0b3J5JC5zdWJzY3JpYmUoeCA9PiB0aGlzLnJvdXRpbmdIaXN0b3J5ID0geClcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgocm91dGVyRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja1JvdXRlckV2ZW50KHJvdXRlckV2ZW50IGFzIFJvdXRlckV2ZW50KTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoeCA9PiB7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuZGlhbG9nU2VydmljZS5zaG93Q29uZmlybURpYWxvZyQudmFsdWUpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuICEhIVsnLyddLmluY2x1ZGVzKHgpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgY29uc3QgaWdub3JlZFBhdGhzID0gdGhpcy5yb3V0aW5nU2VydmljZS5pZ25vcmVkUGF0aHMkLnZhbHVlO1xyXG4gICAgICAgICAgY29uc3QgZnVsbEZ1bmN0aW9ucyA9IHRoaXMucm91dGluZ1NlcnZpY2UuZnVsbEZ1bmN0aW9ucyQudmFsdWU/LmZpbHRlcihmID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuICFpZ25vcmVkUGF0aHM/LmluY2x1ZGVzKGYucGF0aClcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgY29uc3QgZnVuY3Rpb25GaWx0ZXIgPSBmdWxsRnVuY3Rpb25zLmZpbHRlcihmID0+IHtcclxuICAgICAgICAgICAgaWYgKGYucGF0aEZ1bGxNYXRjaCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBmLnBhdGggPT09IHg7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy9yZXR1cm4geC5pbmRleE9mKGYucGF0aCkgPT09IDBcclxuXHJcbiAgICAgICAgICAgICAgLy8gZXhwZXJpbWVudGFsIHNpbmNlIDIwMjQtMDQtMDJcclxuICAgICAgICAgICAgICByZXR1cm4geC5pbmRleE9mKGYucGF0aCkgPj0gMCAvLyBmb3Igc29tZSBhdXhpbGlhcnkgcm91dGVzLCBmb3IgZXggLi4uKHBvcHVwQXV4MjpvbmxpbmUtdXNlcnMpIHRvIGJlIGFjY2VwdGFibGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJmdW5jdGlvbkZpbHRlclwiLCBpZ25vcmVkUGF0aHMpXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImZ1bmN0aW9uRmlsdGVyXCIsIGZ1bmN0aW9uRmlsdGVyKVxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJmdW5jdGlvbkZpbHRlclwiLCBpZ25vcmVkUGF0aHMuaW5jbHVkZXMoXCIvY21zL3N5c3RlbS91cGVybWlzc2lvbi8wXCIpKVxyXG5cclxuICAgICAgICAgIGlmICh4LmluZGV4T2YoJy9yb290JykgIT09IDAgJiYgISEhZnVuY3Rpb25GaWx0ZXIubGVuZ3RoICYmICEhIWlnbm9yZWRQYXRocy5pbmNsdWRlcyh4KSAmJiAhIXRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQudmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlzUm9vdCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXIgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZGlhbG9nQ29uZmlybWVkJC5uZXh0KHtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlTnVtYmVyOiB0aGlzLmRpYWxvZ0luc3RhbmNlTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgY29uZmlybWVkOiBmYWxzZVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jcmVhdGVOZXcoXHJcbiAgICAgICAgICAgICAgICBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfQ09ORklSTV9ESUFMT0dfVElUTEUsXHJcbiAgICAgICAgICAgICAgICBFbnVtVHJhbnNsYXRlS2V5LllFUyxcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuSUdOT1JFLFxyXG4gICAgICAgICAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBFbnVtVHJhbnNsYXRlS2V5LlJPT1RfQ1VSUkVOVF9VUkxfRE9FU19OT1RfRVhJU1RfSU5fQVBQX0ZVTkNUSU9OX1BBVEhfRE9fWU9VX1dBTlRfVE9fTUFQLFxyXG4gICAgICAgICAgICAgICAgW3hdXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uRmlsdGVyLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRGdW5jdGlvbiQubmV4dChmdW5jdGlvbkZpbHRlclswXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgLy8gdHJ5IHRvIHNldCBjdXJyZW50IGZ1bmN0aW9uIGltbWVkaWF0ZWx5IHdoZW4gdXNlciBoYXMgcHJlc3NlZCBGNVxyXG4gICAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlci51cmw7XHJcbiAgICAgIGNvbnN0IGlnbm9yZWRQYXRocyA9IHRoaXMucm91dGluZ1NlcnZpY2UuaWdub3JlZFBhdGhzJC52YWx1ZTtcclxuICAgICAgY29uc3QgZnVsbEZ1bmN0aW9ucyA9IHRoaXMucm91dGluZ1NlcnZpY2UuZnVsbEZ1bmN0aW9ucyQudmFsdWU/LmZpbHRlcihmID0+IHtcclxuICAgICAgICByZXR1cm4gIWlnbm9yZWRQYXRocz8uaW5jbHVkZXMoZi5wYXRoKVxyXG4gICAgICB9KTtcclxuICAgICAgY29uc3QgZnVuY3Rpb25GaWx0ZXIgPSBmdWxsRnVuY3Rpb25zLmZpbHRlcihmID0+IHtcclxuICAgICAgICBpZiAoZi5wYXRoRnVsbE1hdGNoKSB7XHJcbiAgICAgICAgICByZXR1cm4gZi5wYXRoID09PSB1cmw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB1cmwuaW5kZXhPZihmLnBhdGgpID09PSAwXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcblxyXG4gICAgICBpZiAoISFmdW5jdGlvbkZpbHRlci5sZW5ndGgpIHtcclxuICAgICAgICBpZiAoZnVuY3Rpb25GaWx0ZXIubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgIHZhciBmdW5jdGlvbkZpbHRlckxpbmtzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgICBmdW5jdGlvbkZpbHRlci5tYXAoeCA9PiB7XHJcbiAgICAgICAgICAgICAgZnVuY3Rpb25GaWx0ZXJMaW5rcy5wdXNoKHgucGF0aCArIFwiIChcIiArICh4LnBhdGhGdWxsTWF0Y2ggPyBcInTGsMahbmcg4bupbmcgdG/DoG4gcGjhuqduXCIgOiBcInTGsMahbmcg4bupbmcgcGjhuqduIGLDqm4gdHLDoWlcIikgKyBcIilcIilcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICAgICAgYE5oaeG7gXUgaMahbiAwMSBjaOG7qWMgbsSDbmcgY8O5bmcgxJFhbmcgdMawxqFuZyDhu6luZyB24bubaSDEkWnhu4F1IGjGsOG7m25nICR7dXJsfTpcXG4ke0pTT04uc3RyaW5naWZ5KGZ1bmN0aW9uRmlsdGVyTGlua3MsIG51bGwsIDIpfWAsXHJcbiAgICAgICAgICAgICAgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnNcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gTuG6v3Uga2jDtG5nIHBo4bqjaSBJU19ST09UIGPFqW5nIGtow7RuZyBwaOG6o2kgSVNfQURNSU4gdGjDrCDEkWnhu4F1IGjGsOG7m25nIHbhu4EgdHJhbmcgY2jhu6dcclxuICAgICAgICAgIGlmICghdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNSb290ICYmICF0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pc0FkbWluKSB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvaG9tZScpXHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgLy8gS2nhu4NtIHRyYSB4ZW0gY8OzIHF1eeG7gW4gduG7m2kgRnVuY3Rpb24gaGnhu4duIHThuqFpIGhheSBraMO0bmdcclxuICAgICAgICAgIGNvbnN0IHRyeUZpbmQgPSB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5wZXJtaXNzaW9uQWN0aW9ucy5maWx0ZXIoeCA9PiB4LmZ1bmN0aW9uSWQgPT09IGZ1bmN0aW9uRmlsdGVyWzBdLmlkKVxyXG4gICAgICAgICAgLy8gTuG6v3Uga2jDtG5nIHTDrG0gdGjhuqV5IHbDoCBraMO0bmcgcGjhuqNpIElTX1JPT1QgY8Wpbmcga2jDtG5nIHBo4bqjaSBJU19BRE1JTiB0aMOsIMSRxrBhIHJhIHRow7RuZyBiw6FvIHbDoCDEkWnhu4F1IGjGsOG7m25nIHbhu4EgdHJhbmcgY2jhu6dcclxuICAgICAgICAgIC8vIFwiL2F1dGgvbG9naW5cIiDEkcaw4bujYyBi4buPIHF1YVxyXG4gICAgICAgICAgaWYgKCF0cnlGaW5kPy5sZW5ndGggJiYgIXRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlzUm9vdCAmJiAhdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNBZG1pbikge1xyXG4gICAgICAgICAgICBpZiAoIShbXCIvYXV0aC9sb2dpblwiLCBcIi9ob21lXCJdLmluY2x1ZGVzKGZ1bmN0aW9uRmlsdGVyWzBdLnBhdGgpKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb25GaWx0ZXJbMF0ucGF0aCArIFwiIFwiICtcclxuICAgICAgICAgICAgICAgIHRoaXMubWxzLnRyYW5zKCdDT1JFLlBFUk1JU1NJT04uVEhFX1BBVEhfSVNfTk9UX1BFUk1JVFRFRCcpLFxyXG4gICAgICAgICAgICAgICAgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2hvbWUnKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50RnVuY3Rpb24kLm5leHQoZnVuY3Rpb25GaWx0ZXJbMF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY2hlY2tSb3V0ZXJFdmVudChyb3V0ZXJFdmVudDogUm91dGVyRXZlbnQpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAocm91dGVyRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcclxuICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5uYXZpZ2F0aW9uVXJsJC5uZXh0KHJvdXRlckV2ZW50LnVybCk7XHJcblxyXG4gICAgICAvLyBTa2lwIG5hdmlnYXRpbmcgZWZmZWN0IHdoZW4gdGhlIG5hdmlnYXRpb24gc3RhcnRzIHdpdGggL2Ntcy9wcm9maWxlL2J1c2luZXNzL3N0YWZmcHJvZmlsZVxyXG4gICAgICBpZiAocm91dGVyRXZlbnQudXJsLmluZGV4T2YoXCIvY21zL3Byb2ZpbGUvYnVzaW5lc3Mvc3RhZmZwcm9maWxlXCIpICE9PSAwKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5uYXZpZ2F0aW5nJC5uZXh0KHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJvdXRlckV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICB0aGlzLnVybCA9IHRoaXMucm91dGVyLnVybDtcclxuXHJcbiAgICAgIGlmICghIXRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlzRmlyc3RMb2dpbiAmJiB0aGlzLnVybCAhPT0gJy9jbXMvY2hhbmdlLXBhc3N3b3JkJykge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY21zJywgJ2NoYW5nZS1wYXNzd29yZCcsIGJ0b2EoKHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWUgYXMgSUF1dGhEYXRhKS5yZWZyZXNoVG9rZW4udXNlcildKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgbmV3Um91dGluZ0hpc3Rvcnk6IElSb3V0aW5nSGlzdG9yeUl0ZW1bXSA9IHRoaXMucm91dGluZ1NlcnZpY2Uucm91dGluZ0hpc3RvcnkkLnZhbHVlO1xyXG4gICAgICBuZXdSb3V0aW5nSGlzdG9yeS5wdXNoKHsgZnVsbFVybDogdGhpcy51cmwgfSk7XHJcbiAgICAgIHRoaXMucm91dGluZ1NlcnZpY2Uucm91dGluZ0hpc3RvcnkkLm5leHQobmV3Um91dGluZ0hpc3RvcnkpO1xyXG5cclxuICAgICAgY29uc3QgdXNlckFjdGl2aXR5ID0gdGhpcy51c2VyQWN0aXZpdHlTZXJ2aWNlLnVzZXJBY3Rpdml0eSQudmFsdWU7XHJcbiAgICAgIGNvbnN0IGF1dGggPSB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlO1xyXG5cclxuICAgICAgY29uc3QgbmV3VXNlckFjdGl2aXR5ID0gdXNlckFjdGl2aXR5LmZpbHRlcihpdGVtID0+IGl0ZW0uc2lkICE9PSBhdXRoPy5pZClcclxuICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuaHViQ29ubmVjdGlvblNlcnZpY2UuaHViQ29ubmVjdGlvbiQudmFsdWU7XHJcbiAgICAgIG5ld1VzZXJBY3Rpdml0eS5wdXNoKHtcclxuICAgICAgICBzaWQ6IGF1dGg/LmZ1bGxOYW1lISxcclxuICAgICAgICB1c2VybmFtZTogYXV0aD8udXNlck5hbWUhLFxyXG4gICAgICAgIHBhdGhuYW1lOiB0aGlzLnVybCxcclxuICAgICAgICBhdmF0YXI6IGF1dGg/LmF2YXRhciEsXHJcbiAgICAgICAgaHViQ29ubmVjdGlvbklkOiBjb25uZWN0aW9uPy5jb25uZWN0aW9uSWQhLFxyXG4gICAgICAgIGFjY2Vzc1RpbWU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLFxyXG4gICAgICB9KVxyXG5cclxuICAgICAgY29uc3QgYWNjZXNzTW9tZW50ID0gbmV3IERhdGUoKTtcclxuICAgICAgY29uc3QgYWNjZXNzVGltZSA9IGFjY2Vzc01vbWVudC5nZXRUaW1lKCk7XHJcblxyXG4gICAgICBjb25zdCBhY3Rpdml0eTogSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSA9IHtcclxuICAgICAgICBzaWQ6IGF1dGg/LmZ1bGxOYW1lISxcclxuICAgICAgICBzaWduYWxUeXBlOiBFbnVtU2lnbmFsUlR5cGUuQUNUSVZJVFksXHJcbiAgICAgICAgdXNlcm5hbWU6IGF1dGg/LnVzZXJOYW1lISxcclxuICAgICAgICBhdmF0YXI6IGF1dGg/LmF2YXRhciEsXHJcbiAgICAgICAgbWVzc2FnZTogYCR7YXV0aD8udXNlck5hbWV9IG5hdmlnYXRlZCB0byAke2xvY2F0aW9uLnBhdGhuYW1lfWAsXHJcbiAgICAgICAgbG9naW5UaW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUhLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUsXHJcbiAgICAgICAgICB1c2VyTmFtZTogYXV0aD8udXNlck5hbWUsXHJcbiAgICAgICAgICBwYXRobmFtZTogdGhpcy51cmwsXHJcbiAgICAgICAgICBhdmF0YXI6IGF1dGg/LmF2YXRhcixcclxuICAgICAgICAgIGh1YkNvbm5lY3Rpb25JZDogY29ubmVjdGlvbj8uY29ubmVjdGlvbklkISxcclxuICAgICAgICAgIGFjY2Vzc1RpbWUsXHJcbiAgICAgICAgICB1c2VyQWN0aXZpdHk6IG5ld1VzZXJBY3Rpdml0eSxcclxuICAgICAgICB9LFxyXG4gICAgICB9XHJcblxyXG4gICAgICAvKiBpZiBsb2cgbmVlZGVkXHJcbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICBjb25zdCBsb2dQYXlsb2FkOiBJTG9nVXNlckFjdGl2aXR5ID0ge1xyXG4gICAgICAgIGNsaWVudENvZGU6ICdWTlMnLFxyXG4gICAgICAgIGFwcFR5cGU6ICdXRUJBUFAnLFxyXG4gICAgICAgIHVzZXJuYW1lOiBhdXRoPy51c2VyTmFtZSxcclxuICAgICAgICBzaWQ6IGF1dGg/LmZ1bGxOYW1lLFxyXG4gICAgICAgIGxvZ2luVGltZTogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ubG9naW5UaW1lID8gbmV3IERhdGUodGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ubG9naW5UaW1lKSA6IHVuZGVmaW5lZCxcclxuICAgICAgICBhY2Nlc3NUaW1lOiBhY2Nlc3NNb21lbnQsXHJcbiAgICAgICAgcGF0aDogd2luZG93LmxvY2F0aW9uLmhyZWYsXHJcbiAgICAgICAgcGF0aG5hbWU6ICcnXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCdsb2NhbGhvc3QnKSA8IDAgJiYgd2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZignLndlYi5hcHAnKSA8IDApIHtcclxuICAgICAgICB0aGlzLmFwcFNlcnZpY2UucG9zdEZ1bGxVcmwoXCJodHRwczovL2Jsb2cudGFubGVpY2EuY29tL2FwaS9Mb2dVc2VyQWN0aXZpdHkvQ3JlYXRlXCIsIGxvZ1BheWxvYWQpLnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICAqL1xyXG5cclxuICAgICAgY29uc29sZS5sb2coXCJOYXZpZ2F0aW9uRW5kIGFjdGl2aXR5XCIsIGFjdGl2aXR5KVxyXG4gICAgICBpZiAoISFjb25uZWN0aW9uKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNvbm5lY3Rpb24/Lmludm9rZShcIlNlbmRNZXNzYWdlXCIsIGFjdGl2aXR5KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJvdXRlckV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCB8fFxyXG4gICAgICByb3V0ZXJFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25DYW5jZWwgfHxcclxuICAgICAgcm91dGVyRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcclxuXHJcblxyXG4gICAgICBjb25zb2xlLmdyb3VwKFwicm91dGVyRXZlbnQudXJsXCIpXHJcbiAgICAgIGNvbnNvbGUubG9nKHJvdXRlckV2ZW50LnVybClcclxuICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5yb3V0aW5nU2VydmljZS5wb3J0YWxSb3V0ZXMkLnZhbHVlLmZpbHRlcih4ID0+IHgucGF0aCA9PT0gcm91dGVyRXZlbnQudXJsKTtcclxuICAgICAgaWYgKGZpbHRlci5sZW5ndGgpIHtcclxuICAgICAgICBpZiAodGhpcy5sYW5nID09PSBcInZpXCIpIHtcclxuICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudFNjcmVlbkNhcHRpb24kLm5leHQoZmlsdGVyWzBdLnZpKVxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5sYW5nID09PSBcImVuXCIpIHtcclxuICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudFNjcmVlbkNhcHRpb24kLm5leHQoZmlsdGVyWzBdLmVuKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRTY3JlZW5DYXB0aW9uJC5uZXh0KGZpbHRlclswXS52aSlcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50U2NyZWVuQ2FwdGlvbiQubmV4dCgnJyk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5ncm91cEVuZCgpXHJcblxyXG4gICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLm5hdmlnYXRpbmckLm5leHQoZmFsc2UpO1xyXG5cclxuICAgICAgc3dpdGNoICh0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQVBQX1RZUEUpIHtcclxuICAgICAgICBjYXNlIFwiV0VCQVBQXCI6XHJcblxyXG4gICAgICAgICAgdGhpcy51cmxTZXJ2aWNlLnByZXZpb3VzUm91dGVVcmwkLm5leHQodGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQudmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQubmV4dChyb3V0ZXJFdmVudC51cmwpO1xyXG5cclxuICAgICAgICAgIC8vIHRoaXMubGF5b3V0U2VydmljZS5sZWZ0YmFyUmVkdWNlZCQubmV4dCh0cnVlKTsgLy8gaWYgd2Ugd2FudCBhdXRvLXJlZHVjZSB0aGUgbWVudSwgdW5jb21tZW50IHRoaXMgbGluZVxyXG4gICAgICAgICAgLypcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBsZWZ0QmFyID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0tc2l6ZS1sZWZ0LWJhci1jdXJyZW50LXdpZHRoJykucmVwbGFjZSgncHgnLCAnJyk7XHJcbiAgICAgICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5sZWZ0QmFyQ3VycmVudFdpZHRoJC5uZXh0KE51bWJlcihsZWZ0QmFyKSlcclxuICAgICAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbnRlbnRDb250YWluZXJXaWR0aCQubmV4dCh3aW5kb3cuaW5uZXJXaWR0aCAtIE51bWJlcihsZWZ0QmFyKSlcclxuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWNvbnRlbnQtY29udGFpbmVyLXdpZHRoJywgd2luZG93LmlubmVyV2lkdGggLSBOdW1iZXIobGVmdEJhcikgKyAncHgnKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgICovXHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgXCJQT1JUQUxcIjpcclxuXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImNoZWNrUm91dGVyRXZlbnRcIiwgcm91dGVyRXZlbnQudXJsKTtcclxuXHJcbiAgICAgICAgICBpZiAoIXJvdXRlckV2ZW50LnVybC5lbmRzV2l0aCgnLWVkaXQnKSkge1xyXG4gICAgICAgICAgICB0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQubmV4dCh0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC52YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLm5leHQocm91dGVyRXZlbnQudXJsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC5uZXh0KHJvdXRlckV2ZW50LnVybClcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRBY3Rpdml0eUhpc3RvcnkoKTogdm9pZCB7XHJcbiAgICBjb25zdCBhdXRoID0gdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZTtcclxuICAgIGlmICghYXV0aD8uaXNBZG1pbikgcmV0dXJuO1xyXG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuaHViQ29ubmVjdGlvblNlcnZpY2UuaHViQ29ubmVjdGlvbiQudmFsdWU7XHJcbiAgICBjb25zdCBhY3Rpdml0eTogSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSA9IHtcclxuICAgICAgc2lkOiBhdXRoPy5mdWxsTmFtZSEsXHJcbiAgICAgIHNpZ25hbFR5cGU6IEVudW1TaWduYWxSVHlwZS5BQ1RJVklUWV9ISVNUT1JZX1JFU0VULFxyXG4gICAgICB1c2VybmFtZTogYXV0aD8udXNlck5hbWUhLFxyXG4gICAgICBhdmF0YXI6IGF1dGg/LmF2YXRhciEsXHJcbiAgICAgIG1lc3NhZ2U6IGAke2F1dGg/LnVzZXJOYW1lfSBoYXMgcmVzZXQgYWN0aXZpdHkgaGlzdG9yeWAsXHJcbiAgICAgIGxvZ2luVGltZTogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ubG9naW5UaW1lISxcclxuICAgICAgZGF0YTogbnVsbCxcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISFjb25uZWN0aW9uKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29ubmVjdGlvbj8uaW52b2tlKFwiU2VuZE1lc3NhZ2VcIiwgYWN0aXZpdHkpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKVxyXG4gIH1cclxuXHJcbn1cclxuIiwiIl19
|
|
321
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1uYXZpZ2F0aW9uLXRyYWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFDekksT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFZaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHMUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQXVCN0UsTUFBTSxPQUFPLDhCQUE4QjtJQW1DekMsWUFDVSxXQUF3QixFQUN4QixNQUFjLEVBQ2QsS0FBcUIsRUFDckIsY0FBOEIsRUFDL0IsYUFBNEIsRUFDM0Isb0JBQTBDLEVBQzFDLG1CQUF3QyxFQUN4QyxVQUFzQixFQUN0QixnQkFBa0MsRUFDbEMsWUFBMEIsRUFDMUIsYUFBNEIsRUFDNUIsR0FBeUIsRUFDekIsVUFBc0IsRUFDdEIsZ0JBQWtDO1FBRTFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VBeUJFO1FBeENNLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixRQUFHLEdBQUgsR0FBRyxDQUFzQjtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUExQzVDLGNBQVMsR0FBUTtZQUNmLFVBQVUsRUFBRSxPQUFPO1NBQ3BCLENBQUM7UUFjRixnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbEMsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBRW5DLG1CQUFjLEdBQTBCLEVBQUUsQ0FBQztRQW1EekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN0RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxDQUFBO1lBQzVCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQTtRQUN4RixDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixVQUFVLENBQUMsR0FBRyxFQUFFO1lBRWQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUV2RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FDNUUsQ0FBQTtZQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDakQsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUEwQixDQUFDLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQ0wsQ0FBQTtZQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDbkMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNULElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsS0FBSztvQkFBRSxPQUFPLEtBQUssQ0FBQztnQkFDaEUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUM3QixDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDZCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7Z0JBQzdELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3pFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDeEMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDOUMsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFO3dCQUNuQixPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDO3FCQUNyQjt5QkFBTTt3QkFDTCxnQ0FBZ0M7d0JBRWhDLGdDQUFnQzt3QkFDaEMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxpRkFBaUY7cUJBQ2hIO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLENBQUE7Z0JBQzNDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUE7Z0JBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUE7Z0JBRWpGLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtvQkFDckksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO3dCQUN4QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDakQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7NEJBQ3ZDLGNBQWMsRUFBRSxJQUFJLENBQUMsb0JBQW9COzRCQUN6QyxTQUFTLEVBQUUsS0FBSzt5QkFDakIsQ0FBQyxDQUFDO3dCQUNILElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUMxQixnQkFBZ0IsQ0FBQyw0QkFBNEIsRUFDN0MsZ0JBQWdCLENBQUMsR0FBRyxFQUNwQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQ3ZCLEtBQUssRUFDTCxnQkFBZ0IsQ0FBQyx1RUFBdUUsRUFDeEYsQ0FBQyxDQUFDLENBQUMsQ0FDSixDQUFBO3FCQUNGO2lCQUNGO3FCQUFNLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM5RDtZQUNILENBQUMsQ0FBQyxDQUNILENBQUE7WUFFRCxtRUFBbUU7WUFDbkUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDNUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQzdELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUN4QyxDQUFDLENBQUMsQ0FBQztZQUNILE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRTtvQkFDbkIsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQztpQkFDdkI7cUJBQU07b0JBQ0wsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7aUJBQ2pDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFHSCxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFO2dCQUMzQixJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUM3QixJQUFJLFNBQVMsRUFBRSxFQUFFO3dCQUNmLElBQUksbUJBQW1CLEdBQWEsRUFBRSxDQUFDO3dCQUN2QyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFOzRCQUNyQixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTt3QkFDdkgsQ0FBQyxDQUFDLENBQUE7d0JBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQ3JCLDZEQUE2RCxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFDcEgsMEJBQTBCLENBQzNCLENBQUE7cUJBQ0Y7b0JBQ0QsOEVBQThFO29CQUM5RSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPO3dCQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFBO2lCQUV4SDtxQkFBTTtvQkFFTCx3REFBd0Q7b0JBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtvQkFDbEgsb0hBQW9IO29CQUNwSCw0QkFBNEI7b0JBQzVCLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUU7d0JBQ3ZHLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTs0QkFDaEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQ3JCLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRztnQ0FDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsRUFDM0QsMEJBQTBCLENBQUMsQ0FBQTs0QkFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUE7eUJBQ25DO3FCQUNGO29CQUVELElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM5RDthQUNGO1FBR0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsV0FBd0I7UUFFdkMsSUFBSSxXQUFXLFlBQVksZUFBZSxFQUFFO1lBQzFDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFekQsNEZBQTRGO1lBQzVGLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsb0NBQW9DLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3ZFLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM1QztTQUNGO1FBRUQsSUFBSSxXQUFXLFlBQVksYUFBYSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFFM0IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFlBQVksSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLHNCQUFzQixFQUFFO2dCQUN2RixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBbUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZIO1lBRUQsTUFBTSxpQkFBaUIsR0FBMEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO1lBQzNGLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUU1RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUNsRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFFMUMsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQzFFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1lBQ2xFLGVBQWUsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUztnQkFDcEIsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFTO2dCQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2xCLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTztnQkFDckIsZUFBZSxFQUFFLFVBQVUsRUFBRSxZQUFhO2dCQUMxQyxVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7YUFDakMsQ0FBQyxDQUFBO1lBRUYsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNoQyxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFMUMsTUFBTSxRQUFRLEdBQTJCO2dCQUN2QyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVM7Z0JBQ3BCLFVBQVUsRUFBRSxlQUFlLENBQUMsUUFBUTtnQkFDcEMsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFTO2dCQUN6QixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU87Z0JBQ3JCLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxRQUFRLGlCQUFpQixRQUFRLENBQUMsUUFBUSxFQUFFO2dCQUM5RCxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVU7Z0JBQ25ELElBQUksRUFBRTtvQkFDSixHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVE7b0JBQ25CLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTtvQkFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHO29CQUNsQixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU07b0JBQ3BCLGVBQWUsRUFBRSxVQUFVLEVBQUUsWUFBYTtvQkFDMUMsVUFBVTtvQkFDVixZQUFZLEVBQUUsZUFBZTtpQkFDOUI7YUFDRixDQUFBO1lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O2NBaUJFO1lBRUYsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUMvQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUU7Z0JBQ2hCLElBQUk7b0JBQ0YsVUFBVSxFQUFFLE1BQU0sQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7aUJBQzdDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7aUJBQ2pCO2FBQ0Y7U0FDRjtRQUVELElBQUksV0FBVyxZQUFZLGFBQWE7WUFDdEMsV0FBVyxZQUFZLGdCQUFnQjtZQUN2QyxXQUFXLFlBQVksZUFBZSxFQUFFO1lBR3hDLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtZQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUM1QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0YsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO2dCQUNqQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO29CQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7aUJBQzdEO3FCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtpQkFDN0Q7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO2lCQUM3RDthQUNGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3BEO1lBQ0QsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFBO1lBRWxCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU1QyxRQUFRLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RDLEtBQUssUUFBUTtvQkFFWCxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMvRSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBRXZELHlHQUF5RztvQkFDekc7Ozs7Ozs7c0JBT0U7b0JBRUYsTUFBTTtnQkFFUixLQUFLLFFBQVE7b0JBRVgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBRWpELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTt3QkFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDL0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUN4RDt5QkFDSTt3QkFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUE7cUJBQ3ZEO29CQUVELE1BQU07Z0JBQ1I7b0JBQ0UsTUFBTTthQUNUO1NBR0Y7SUFDSCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU87WUFBRSxPQUFPO1FBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQ2xFLE1BQU0sUUFBUSxHQUEyQjtZQUN2QyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVM7WUFDcEIsVUFBVSxFQUFFLGVBQWUsQ0FBQyxzQkFBc0I7WUFDbEQsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFTO1lBQ3pCLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTztZQUNyQixPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsUUFBUSw2QkFBNkI7WUFDdkQsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFVO1lBQ25ELElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQTtRQUVELElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRTtZQUNoQixJQUFJO2dCQUNGLFVBQVUsRUFBRSxNQUFNLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzdDO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUNqQjtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQy9DLENBQUM7OEdBelhVLDhCQUE4QjtrR0FBOUIsOEJBQThCLG1GQ3pDM0MsRUFBQTs7MkZEeUNhLDhCQUE4QjtrQkFQMUMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25DYW5jZWwsIE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25FcnJvciwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIsIFJvdXRlckV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnVtU2lnbmFsUlR5cGUgfSBmcm9tICcuLi8uLi8uLi9lbnVtL0VudW1TaWduYWxSVHlwZSc7XHJcbmltcG9ydCB7IElIdWJDb25uZWN0aW9uQWN0aXZpdHkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL0lIdWJDb25uZWN0aW9uQWN0aXZpdHknO1xyXG5pbXBvcnQgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JvdXRpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaHViLWNvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91c2VyLWFjdGl2aXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJUm91dGluZ0hpc3RvcnlJdGVtIH0gZnJvbSAnLi4vLi4vY29yZS1yb3V0aW5nLWhpc3RvcnkvY29yZS1yb3V0aW5nLWhpc3RvcnkvY29yZS1yb3V0aW5nLWhpc3RvcnkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXJsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VybC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IElOYXZpZ2F0b3JJdGVtIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JTmF2aWdhdG9ySXRlbSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElBdXRoRGF0YSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSUF1dGhEYXRhJztcclxuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMb2dVc2VyQWN0aXZpdHkge1xyXG4gIGNsaWVudENvZGU6IHN0cmluZztcclxuICBhcHBUeXBlOiBzdHJpbmc7XHJcbiAgdXNlcm5hbWU/OiBzdHJpbmc7XHJcbiAgc2lkPzogc3RyaW5nO1xyXG4gIGxvZ2luVGltZT86IERhdGU7XHJcbiAgYWNjZXNzVGltZTogRGF0ZTtcclxuICBwYXRoOiBzdHJpbmc7XHJcbiAgcGF0aG5hbWU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1uYXZpZ2F0aW9uLXRyYWNrZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW10sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlTmF2aWdhdGlvblRyYWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBuYXZpZ2F0aW5nITogYm9vbGVhbjtcclxuICB1cmwhOiBzdHJpbmc7XHJcblxyXG4gIGxhbmchOiBzdHJpbmc7XHJcblxyXG4gIGFwcENvbmZpZzogYW55ID0ge1xyXG4gICAgc2hvd0xheW91dDogJ2ZhbHNlJ1xyXG4gIH07XHJcblxyXG4gIGFwcEluaXRpYWxpemluZyE6IGJvb2xlYW47XHJcbiAgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgc3VibWl0dGluZyE6IGJvb2xlYW47XHJcbiAgbWVudU9wZW4hOiBib29sZWFuO1xyXG4gIGxlZnRiYXJSZWR1Y2VkITogYm9vbGVhbjtcclxuICBrZXl3b3JkITogc3RyaW5nO1xyXG4gIHNpZCE6IHN0cmluZztcclxuICB1c2VybmFtZSE6IHN0cmluZztcclxuICBleHBpcmVzQXQhOiBzdHJpbmc7XHJcbiAgYXZhdGFyITogc3RyaW5nO1xyXG5cclxuXHJcbiAgdW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICByb3V0aW5nSGlzdG9yeTogSVJvdXRpbmdIaXN0b3J5SXRlbVtdID0gW107XHJcblxyXG4gIHBlbmRpbmdVcmwhOiBzdHJpbmc7XHJcbiAgbGFzdENsaWNrZWRNZW51SXRlbSE6IElOYXZpZ2F0b3JJdGVtIHwgbnVsbDtcclxuICBsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nITogc3RyaW5nO1xyXG5cclxuICBkaWFsb2dJbnN0YW5jZU51bWJlciE6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcm91dGluZ1NlcnZpY2U6IFJvdXRpbmdTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGh1YkNvbm5lY3Rpb25TZXJ2aWNlOiBIdWJDb25uZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlckFjdGl2aXR5U2VydmljZTogVXNlckFjdGl2aXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgdXJsU2VydmljZTogVXJsU2VydmljZSxcclxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcFNlcnZpY2U6IEFwcFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIC8qXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmRpYWxvZ0NvbmZpcm1lZCQucGlwZShcclxuICAgICAgICBmaWx0ZXIoeCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAvLyAhIXRoaXMuZGlhbG9nU2VydmljZS5idXN5XHJcbiAgICAgICAgICAgIHRydWVcclxuICAgICAgICAgICAgJiYgeD8uaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXIgJiYgISF4Py5jb25maXJtZWRcclxuICAgICAgICAgICAgJiYgISF0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLnZhbHVlXHJcbiAgICAgICAgICAgICYmICh0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pZCA9PT0gJzhjMjQ2ODNkLTdkNTItNGY1YS04MDkwLTMxYzc3N2U4ODY5ZCcgfHwgdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaWQgPT09ICdiZDNlNGFkNC0xMWZjLTQ3NjYtOTIyNC00Zjk5MDJmM2E2MjMnKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxyXG4gICAgICAgICAgW1xyXG4gICAgICAgICAgICAnL3Jvb3QnLFxyXG4gICAgICAgICAgICAndXJsLW1hcHBlcicsXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgICAgeyBzdGF0ZTogeyB1cmw6IHRoaXMucGVuZGluZ1VybCwgbGFzdENsaWNrZWRNZW51SXRlbTogdGhpcy5sYXN0Q2xpY2tlZE1lbnVJdGVtLCBsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nOiB0aGlzLmxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcgfSB9XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlc2V0U2VydmljZSgpO1xyXG5cclxuICAgICAgfSlcclxuICAgIClcclxuICAgICovXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQucGlwZShmaWx0ZXIocyA9PiAhIXMpKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5sYXN0Q2xpY2tlZE1lbnVJdGVtID0geFxyXG4gICAgICAgIHRoaXMubGFzdENsaWNrZWRNZW51SXRlbVN0cmluZyA9IGBbJHt4Py5pZH1dPT4ke3RoaXMubWxzLnRyYW5zKHghLmNvZGUpfT0+KCR7eD8udXJsfSlgXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLm5leHQodGhpcy5yb3V0ZXIudXJsKTtcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2Uucm91dGluZ0hpc3RvcnkkLnN1YnNjcmliZSh4ID0+IHRoaXMucm91dGluZ0hpc3RvcnkgPSB4KVxyXG4gICAgICApXHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChyb3V0ZXJFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrUm91dGVyRXZlbnQocm91dGVyRXZlbnQgYXMgUm91dGVyRXZlbnQpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQucGlwZShcclxuICAgICAgICAgIGZpbHRlcih4ID0+IHtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dDb25maXJtRGlhbG9nJC52YWx1ZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm4gISEhWycvJ10uaW5jbHVkZXMoeClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpZ25vcmVkUGF0aHMgPSB0aGlzLnJvdXRpbmdTZXJ2aWNlLmlnbm9yZWRQYXRocyQudmFsdWU7XHJcbiAgICAgICAgICBjb25zdCBmdWxsRnVuY3Rpb25zID0gdGhpcy5yb3V0aW5nU2VydmljZS5mdWxsRnVuY3Rpb25zJC52YWx1ZT8uZmlsdGVyKGYgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gIWlnbm9yZWRQYXRocz8uaW5jbHVkZXMoZi5wYXRoKVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBjb25zdCBmdW5jdGlvbkZpbHRlciA9IGZ1bGxGdW5jdGlvbnMuZmlsdGVyKGYgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZi5wYXRoRnVsbE1hdGNoKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGYucGF0aCA9PT0geDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAvL3JldHVybiB4LmluZGV4T2YoZi5wYXRoKSA9PT0gMFxyXG5cclxuICAgICAgICAgICAgICAvLyBleHBlcmltZW50YWwgc2luY2UgMjAyNC0wNC0wMlxyXG4gICAgICAgICAgICAgIHJldHVybiB4LmluZGV4T2YoZi5wYXRoKSA+PSAwIC8vIGZvciBzb21lIGF1eGlsaWFyeSByb3V0ZXMsIGZvciBleCAuLi4ocG9wdXBBdXgyOm9ubGluZS11c2VycykgdG8gYmUgYWNjZXB0YWJsZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImZ1bmN0aW9uRmlsdGVyXCIsIGlnbm9yZWRQYXRocylcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiZnVuY3Rpb25GaWx0ZXJcIiwgZnVuY3Rpb25GaWx0ZXIpXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImZ1bmN0aW9uRmlsdGVyXCIsIGlnbm9yZWRQYXRocy5pbmNsdWRlcyhcIi9jbXMvc3lzdGVtL3VwZXJtaXNzaW9uLzBcIikpXHJcblxyXG4gICAgICAgICAgaWYgKHguaW5kZXhPZignL3Jvb3QnKSAhPT0gMCAmJiAhISFmdW5jdGlvbkZpbHRlci5sZW5ndGggJiYgISEhaWdub3JlZFBhdGhzLmluY2x1ZGVzKHgpICYmICEhdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC52YWx1ZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNSb290KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaWFsb2dJbnN0YW5jZU51bWJlciA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2VOdW1iZXI6IHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtZWQ6IGZhbHNlXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNyZWF0ZU5ldyhcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19USVRMRSxcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuWUVTLFxyXG4gICAgICAgICAgICAgICAgRW51bVRyYW5zbGF0ZUtleS5JR05PUkUsXHJcbiAgICAgICAgICAgICAgICBmYWxzZSxcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuUk9PVF9DVVJSRU5UX1VSTF9ET0VTX05PVF9FWElTVF9JTl9BUFBfRlVOQ1RJT05fUEFUSF9ET19ZT1VfV0FOVF9UT19NQVAsXHJcbiAgICAgICAgICAgICAgICBbeF1cclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAoZnVuY3Rpb25GaWx0ZXIubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudEZ1bmN0aW9uJC5uZXh0KGZ1bmN0aW9uRmlsdGVyWzBdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICAvLyB0cnkgdG8gc2V0IGN1cnJlbnQgZnVuY3Rpb24gaW1tZWRpYXRlbHkgd2hlbiB1c2VyIGhhcyBwcmVzc2VkIEY1XHJcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgICAgY29uc3QgaWdub3JlZFBhdGhzID0gdGhpcy5yb3V0aW5nU2VydmljZS5pZ25vcmVkUGF0aHMkLnZhbHVlO1xyXG4gICAgICBjb25zdCBmdWxsRnVuY3Rpb25zID0gdGhpcy5yb3V0aW5nU2VydmljZS5mdWxsRnVuY3Rpb25zJC52YWx1ZT8uZmlsdGVyKGYgPT4ge1xyXG4gICAgICAgIHJldHVybiAhaWdub3JlZFBhdGhzPy5pbmNsdWRlcyhmLnBhdGgpXHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zdCBmdW5jdGlvbkZpbHRlciA9IGZ1bGxGdW5jdGlvbnMuZmlsdGVyKGYgPT4ge1xyXG4gICAgICAgIGlmIChmLnBhdGhGdWxsTWF0Y2gpIHtcclxuICAgICAgICAgIHJldHVybiBmLnBhdGggPT09IHVybDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHVybC5pbmRleE9mKGYucGF0aCkgPT09IDBcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgIGlmICghIWZ1bmN0aW9uRmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgIGlmIChmdW5jdGlvbkZpbHRlci5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgdmFyIGZ1bmN0aW9uRmlsdGVyTGlua3M6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uRmlsdGVyLm1hcCh4ID0+IHtcclxuICAgICAgICAgICAgICBmdW5jdGlvbkZpbHRlckxpbmtzLnB1c2goeC5wYXRoICsgXCIgKFwiICsgKHgucGF0aEZ1bGxNYXRjaCA/IFwidMawxqFuZyDhu6luZyB0b8OgbiBwaOG6p25cIiA6IFwidMawxqFuZyDhu6luZyBwaOG6p24gYsOqbiB0csOhaVwiKSArIFwiKVwiKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcclxuICAgICAgICAgICAgICBgTmhp4buBdSBoxqFuIDAxIGNo4bupYyBuxINuZyBjw7luZyDEkWFuZyB0xrDGoW5nIOG7qW5nIHbhu5tpIMSRaeG7gXUgaMaw4bubbmcgJHt1cmx9OlxcbiR7SlNPTi5zdHJpbmdpZnkoZnVuY3Rpb25GaWx0ZXJMaW5rcywgbnVsbCwgMil9YCxcclxuICAgICAgICAgICAgICBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9uc1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBO4bq/dSBraMO0bmcgcGjhuqNpIElTX1JPT1QgY8Wpbmcga2jDtG5nIHBo4bqjaSBJU19BRE1JTiB0aMOsIMSRaeG7gXUgaMaw4bubbmcgduG7gSB0cmFuZyBjaOG7p1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pc1Jvb3QgJiYgIXRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlzQWRtaW4pIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9ob21lJylcclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAvLyBLaeG7g20gdHJhIHhlbSBjw7MgcXV54buBbiB24bubaSBGdW5jdGlvbiBoaeG7h24gdOG6oWkgaGF5IGtow7RuZ1xyXG4gICAgICAgICAgY29uc3QgdHJ5RmluZCA9IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LnBlcm1pc3Npb25BY3Rpb25zLmZpbHRlcih4ID0+IHguZnVuY3Rpb25JZCA9PT0gZnVuY3Rpb25GaWx0ZXJbMF0uaWQpXHJcbiAgICAgICAgICAvLyBO4bq/dSBraMO0bmcgdMOsbSB0aOG6pXkgdsOgIGtow7RuZyBwaOG6o2kgSVNfUk9PVCBjxaluZyBraMO0bmcgcGjhuqNpIElTX0FETUlOIHRow6wgxJHGsGEgcmEgdGjDtG5nIGLDoW8gdsOgIMSRaeG7gXUgaMaw4bubbmcgduG7gSB0cmFuZyBjaOG7p1xyXG4gICAgICAgICAgLy8gXCIvYXV0aC9sb2dpblwiIMSRxrDhu6NjIGLhu48gcXVhXHJcbiAgICAgICAgICBpZiAoIXRyeUZpbmQ/Lmxlbmd0aCAmJiAhdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNSb290ICYmICF0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pc0FkbWluKSB7XHJcbiAgICAgICAgICAgIGlmICghKFtcIi9hdXRoL2xvZ2luXCIsIFwiL2hvbWVcIl0uaW5jbHVkZXMoZnVuY3Rpb25GaWx0ZXJbMF0ucGF0aCkpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbkZpbHRlclswXS5wYXRoICsgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tbHMudHJhbnMoJ0NPUkUuUEVSTUlTU0lPTi5USEVfUEFUSF9JU19OT1RfUEVSTUlUVEVEJyksXHJcbiAgICAgICAgICAgICAgICBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvaG9tZScpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRGdW5jdGlvbiQubmV4dChmdW5jdGlvbkZpbHRlclswXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjaGVja1JvdXRlckV2ZW50KHJvdXRlckV2ZW50OiBSb3V0ZXJFdmVudCk6IHZvaWQge1xyXG5cclxuICAgIGlmIChyb3V0ZXJFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xyXG4gICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLm5hdmlnYXRpb25VcmwkLm5leHQocm91dGVyRXZlbnQudXJsKTtcclxuXHJcbiAgICAgIC8vIFNraXAgbmF2aWdhdGluZyBlZmZlY3Qgd2hlbiB0aGUgbmF2aWdhdGlvbiBzdGFydHMgd2l0aCAvY21zL3Byb2ZpbGUvYnVzaW5lc3Mvc3RhZmZwcm9maWxlXHJcbiAgICAgIGlmIChyb3V0ZXJFdmVudC51cmwuaW5kZXhPZihcIi9jbXMvcHJvZmlsZS9idXNpbmVzcy9zdGFmZnByb2ZpbGVcIikgIT09IDApIHtcclxuICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLm5hdmlnYXRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAocm91dGVyRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgIHRoaXMudXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cclxuICAgICAgaWYgKCEhdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNGaXJzdExvZ2luICYmIHRoaXMudXJsICE9PSAnL2Ntcy9jaGFuZ2UtcGFzc3dvcmQnKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydjbXMnLCAnY2hhbmdlLXBhc3N3b3JkJywgYnRvYSgodGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZSBhcyBJQXV0aERhdGEpLnJlZnJlc2hUb2tlbi51c2VyKV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBuZXdSb3V0aW5nSGlzdG9yeTogSVJvdXRpbmdIaXN0b3J5SXRlbVtdID0gdGhpcy5yb3V0aW5nU2VydmljZS5yb3V0aW5nSGlzdG9yeSQudmFsdWU7XHJcbiAgICAgIG5ld1JvdXRpbmdIaXN0b3J5LnB1c2goeyBmdWxsVXJsOiB0aGlzLnVybCB9KTtcclxuICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5yb3V0aW5nSGlzdG9yeSQubmV4dChuZXdSb3V0aW5nSGlzdG9yeSk7XHJcblxyXG4gICAgICBjb25zdCB1c2VyQWN0aXZpdHkgPSB0aGlzLnVzZXJBY3Rpdml0eVNlcnZpY2UudXNlckFjdGl2aXR5JC52YWx1ZTtcclxuICAgICAgY29uc3QgYXV0aCA9IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU7XHJcblxyXG4gICAgICBjb25zdCBuZXdVc2VyQWN0aXZpdHkgPSB1c2VyQWN0aXZpdHkuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zaWQgIT09IGF1dGg/LmlkKVxyXG4gICAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5odWJDb25uZWN0aW9uU2VydmljZS5odWJDb25uZWN0aW9uJC52YWx1ZTtcclxuICAgICAgbmV3VXNlckFjdGl2aXR5LnB1c2goe1xyXG4gICAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUhLFxyXG4gICAgICAgIHVzZXJuYW1lOiBhdXRoPy51c2VyTmFtZSEsXHJcbiAgICAgICAgcGF0aG5hbWU6IHRoaXMudXJsLFxyXG4gICAgICAgIGF2YXRhcjogYXV0aD8uYXZhdGFyISxcclxuICAgICAgICBodWJDb25uZWN0aW9uSWQ6IGNvbm5lY3Rpb24/LmNvbm5lY3Rpb25JZCEsXHJcbiAgICAgICAgYWNjZXNzVGltZTogbmV3IERhdGUoKS5nZXRUaW1lKCksXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBjb25zdCBhY2Nlc3NNb21lbnQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBjb25zdCBhY2Nlc3NUaW1lID0gYWNjZXNzTW9tZW50LmdldFRpbWUoKTtcclxuXHJcbiAgICAgIGNvbnN0IGFjdGl2aXR5OiBJSHViQ29ubmVjdGlvbkFjdGl2aXR5ID0ge1xyXG4gICAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUhLFxyXG4gICAgICAgIHNpZ25hbFR5cGU6IEVudW1TaWduYWxSVHlwZS5BQ1RJVklUWSxcclxuICAgICAgICB1c2VybmFtZTogYXV0aD8udXNlck5hbWUhLFxyXG4gICAgICAgIGF2YXRhcjogYXV0aD8uYXZhdGFyISxcclxuICAgICAgICBtZXNzYWdlOiBgJHthdXRoPy51c2VyTmFtZX0gbmF2aWdhdGVkIHRvICR7bG9jYXRpb24ucGF0aG5hbWV9YCxcclxuICAgICAgICBsb2dpblRpbWU6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmxvZ2luVGltZSEsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgc2lkOiBhdXRoPy5mdWxsTmFtZSxcclxuICAgICAgICAgIHVzZXJOYW1lOiBhdXRoPy51c2VyTmFtZSxcclxuICAgICAgICAgIHBhdGhuYW1lOiB0aGlzLnVybCxcclxuICAgICAgICAgIGF2YXRhcjogYXV0aD8uYXZhdGFyLFxyXG4gICAgICAgICAgaHViQ29ubmVjdGlvbklkOiBjb25uZWN0aW9uPy5jb25uZWN0aW9uSWQhLFxyXG4gICAgICAgICAgYWNjZXNzVGltZSxcclxuICAgICAgICAgIHVzZXJBY3Rpdml0eTogbmV3VXNlckFjdGl2aXR5LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8qIGlmIGxvZyBuZWVkZWRcclxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGNvbnN0IGxvZ1BheWxvYWQ6IElMb2dVc2VyQWN0aXZpdHkgPSB7XHJcbiAgICAgICAgY2xpZW50Q29kZTogJ1ZOUycsXHJcbiAgICAgICAgYXBwVHlwZTogJ1dFQkFQUCcsXHJcbiAgICAgICAgdXNlcm5hbWU6IGF1dGg/LnVzZXJOYW1lLFxyXG4gICAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUsXHJcbiAgICAgICAgbG9naW5UaW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUgPyBuZXcgRGF0ZSh0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUpIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIGFjY2Vzc1RpbWU6IGFjY2Vzc01vbWVudCxcclxuICAgICAgICBwYXRoOiB3aW5kb3cubG9jYXRpb24uaHJlZixcclxuICAgICAgICBwYXRobmFtZTogJydcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2xvY2FsaG9zdCcpIDwgMCAmJiB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCcud2ViLmFwcCcpIDwgMCkge1xyXG4gICAgICAgIHRoaXMuYXBwU2VydmljZS5wb3N0RnVsbFVybChcImh0dHBzOi8vYmxvZy50YW5sZWljYS5jb20vYXBpL0xvZ1VzZXJBY3Rpdml0eS9DcmVhdGVcIiwgbG9nUGF5bG9hZCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgICovXHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcIk5hdmlnYXRpb25FbmQgYWN0aXZpdHlcIiwgYWN0aXZpdHkpXHJcbiAgICAgIGlmICghIWNvbm5lY3Rpb24pIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29ubmVjdGlvbj8uaW52b2tlKFwiU2VuZE1lc3NhZ2VcIiwgYWN0aXZpdHkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAocm91dGVyRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8XHJcbiAgICAgIHJvdXRlckV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCB8fFxyXG4gICAgICByb3V0ZXJFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcikge1xyXG5cclxuXHJcbiAgICAgIGNvbnNvbGUuZ3JvdXAoXCJyb3V0ZXJFdmVudC51cmxcIilcclxuICAgICAgY29uc29sZS5sb2cocm91dGVyRXZlbnQudXJsKVxyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLnJvdXRpbmdTZXJ2aWNlLnBvcnRhbFJvdXRlcyQudmFsdWUuZmlsdGVyKHggPT4geC5wYXRoID09PSByb3V0ZXJFdmVudC51cmwpO1xyXG4gICAgICBpZiAoZmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgIGlmICh0aGlzLmxhbmcgPT09IFwidmlcIikge1xyXG4gICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50U2NyZWVuQ2FwdGlvbiQubmV4dChmaWx0ZXJbMF0udmkpXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxhbmcgPT09IFwiZW5cIikge1xyXG4gICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50U2NyZWVuQ2FwdGlvbiQubmV4dChmaWx0ZXJbMF0uZW4pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudFNjcmVlbkNhcHRpb24kLm5leHQoZmlsdGVyWzBdLnZpKVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRTY3JlZW5DYXB0aW9uJC5uZXh0KCcnKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmdyb3VwRW5kKClcclxuXHJcbiAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UubmF2aWdhdGluZyQubmV4dChmYWxzZSk7XHJcblxyXG4gICAgICBzd2l0Y2ggKHRoaXMuYXBwQ29uZmlnU2VydmljZS5BUFBfVFlQRSkge1xyXG4gICAgICAgIGNhc2UgXCJXRUJBUFBcIjpcclxuXHJcbiAgICAgICAgICB0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQubmV4dCh0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC5uZXh0KHJvdXRlckV2ZW50LnVybCk7XHJcblxyXG4gICAgICAgICAgLy8gdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRiYXJSZWR1Y2VkJC5uZXh0KHRydWUpOyAvLyBpZiB3ZSB3YW50IGF1dG8tcmVkdWNlIHRoZSBtZW51LCB1bmNvbW1lbnQgdGhpcyBsaW5lXHJcbiAgICAgICAgICAvKlxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlZnRCYXIgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zaXplLWxlZnQtYmFyLWN1cnJlbnQtd2lkdGgnKS5yZXBsYWNlKCdweCcsICcnKTtcclxuICAgICAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRCYXJDdXJyZW50V2lkdGgkLm5leHQoTnVtYmVyKGxlZnRCYXIpKVxyXG4gICAgICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UuY29udGVudENvbnRhaW5lcldpZHRoJC5uZXh0KHdpbmRvdy5pbm5lcldpZHRoIC0gTnVtYmVyKGxlZnRCYXIpKVxyXG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tY29udGVudC1jb250YWluZXItd2lkdGgnLCB3aW5kb3cuaW5uZXJXaWR0aCAtIE51bWJlcihsZWZ0QmFyKSArICdweCcpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgKi9cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBcIlBPUlRBTFwiOlxyXG5cclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiY2hlY2tSb3V0ZXJFdmVudFwiLCByb3V0ZXJFdmVudC51cmwpO1xyXG5cclxuICAgICAgICAgIGlmICghcm91dGVyRXZlbnQudXJsLmVuZHNXaXRoKCctZWRpdCcpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXJsU2VydmljZS5wcmV2aW91c1JvdXRlVXJsJC5uZXh0KHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLnZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQubmV4dChyb3V0ZXJFdmVudC51cmwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLm5leHQocm91dGVyRXZlbnQudXJsKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldEFjdGl2aXR5SGlzdG9yeSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGF1dGggPSB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlO1xyXG4gICAgaWYgKCFhdXRoPy5pc0FkbWluKSByZXR1cm47XHJcbiAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5odWJDb25uZWN0aW9uU2VydmljZS5odWJDb25uZWN0aW9uJC52YWx1ZTtcclxuICAgIGNvbnN0IGFjdGl2aXR5OiBJSHViQ29ubmVjdGlvbkFjdGl2aXR5ID0ge1xyXG4gICAgICBzaWQ6IGF1dGg/LmZ1bGxOYW1lISxcclxuICAgICAgc2lnbmFsVHlwZTogRW51bVNpZ25hbFJUeXBlLkFDVElWSVRZX0hJU1RPUllfUkVTRVQsXHJcbiAgICAgIHVzZXJuYW1lOiBhdXRoPy51c2VyTmFtZSEsXHJcbiAgICAgIGF2YXRhcjogYXV0aD8uYXZhdGFyISxcclxuICAgICAgbWVzc2FnZTogYCR7YXV0aD8udXNlck5hbWV9IGhhcyByZXNldCBhY3Rpdml0eSBoaXN0b3J5YCxcclxuICAgICAgbG9naW5UaW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUhLFxyXG4gICAgICBkYXRhOiBudWxsLFxyXG4gICAgfVxyXG5cclxuICAgIGlmICghIWNvbm5lY3Rpb24pIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25uZWN0aW9uPy5pbnZva2UoXCJTZW5kTWVzc2FnZVwiLCBhY3Rpdml0eSk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGUpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpXHJcbiAgfVxyXG5cclxufVxyXG4iLCIiXX0=
|
|
@@ -302,6 +302,11 @@ export class CoreOrgTreeComponent extends CoreFormControlBaseComponent {
|
|
|
302
302
|
this.recursiveService
|
|
303
303
|
.nestedToggleCheck(e, newValue)
|
|
304
304
|
.then((x) => {
|
|
305
|
+
console.log(".nestedToggleCheck x", x);
|
|
306
|
+
this.organizationService.status$.next({
|
|
307
|
+
...this.organizationService.status$.value,
|
|
308
|
+
checkedKeys: x.map(item => item.toString())
|
|
309
|
+
});
|
|
305
310
|
// The ids have been changed
|
|
306
311
|
toggledIds = x;
|
|
307
312
|
// Now toggledIds were set. We call the function we declared
|
|
@@ -454,4 +459,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
454
459
|
type: ViewChild,
|
|
455
460
|
args: ['reducedIconWrapper']
|
|
456
461
|
}] } });
|
|
457
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1vcmctdHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9DLEtBQUssRUFBYyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBOEMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZMLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFnQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsR0FBRyxNQUFNLE1BQU0sQ0FBQztBQVF0SCxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQzdILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7OztBQUVuRSxNQUFNLENBQU4sSUFBWSw0QkFJWDtBQUpELFdBQVksNEJBQTRCO0lBQ3RDLHFFQUFxQyxDQUFBO0lBQ3JDLCtFQUErQyxDQUFBO0lBQy9DLG1EQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFKVyw0QkFBNEIsS0FBNUIsNEJBQTRCLFFBSXZDO0FBd0JELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSw0QkFBNEI7SUFtQjNELFVBQVUsQ0FBQyxHQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBRWpCLFFBQVEsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN6QixLQUFLLDRCQUE0QixDQUFDLE9BQU87Z0JBQ3ZDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRTtvQkFDVCxNQUFNLFdBQVcsR0FBYSxFQUFFLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUMsa0JBQWtCO29CQUN6QyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztvQkFDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDckcsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7d0JBQ3JCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTTs0QkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7b0JBQzVFLENBQUMsQ0FBQyxDQUFDO2lCQUNKO2dCQUNELE1BQU07WUFDUixLQUFLLDRCQUE0QixDQUFDLGdCQUFnQixDQUFDO1lBQ25ELEtBQUssNEJBQTRCLENBQUMscUJBQXFCO2dCQUNyRCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUU7b0JBQ1QsTUFBTSxhQUFhLEdBQWEsRUFBRSxDQUFDO29CQUNuQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztvQkFDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDekcsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7d0JBQ3JCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTTs0QkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7b0JBQzVFLENBQUMsQ0FBQyxDQUFDO2lCQUNKO2dCQUNELE1BQU07WUFDUjtnQkFDRSxNQUFNO1NBQ1Q7UUFHRCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssNEJBQTRCLENBQUMsT0FBTyxFQUFFO1NBRS9EO2FBQU0seUdBQXlHLENBQUM7U0FFaEg7SUFDSCxDQUFDO0lBRVEsZ0JBQWdCLENBQUMsUUFBaUI7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQTRCRDtJQUNFLHFDQUFxQztJQUM3QixXQUF3QixFQUN4QixnQkFBa0MsRUFDbEMsR0FBeUIsRUFDMUIsYUFBNEIsRUFDM0Isa0JBQXNDO0lBQzlDLDhDQUE4QztJQUN0QyxZQUEwQixFQUMzQixtQkFBd0M7UUFFL0MsS0FBSyxFQUFDLFlBQVksQ0FBQyxDQUFDO1FBVFosZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxRQUFHLEdBQUgsR0FBRyxDQUFzQjtRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBRXRDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzNCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFqR3hDLGNBQVMsR0FBVyxhQUFhLENBQUM7UUFPbEMsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdDQUFnQztRQUVqRixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFvRHpDLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFFekIsZUFBVSxHQUFhLEVBQUUsQ0FBQztRQU0xQixrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFHbkMsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFFaEMsc0JBQWlCLEdBQUcsZ0JBQWdCLENBQUMsaUNBQWlDLENBQUM7UUFHdkUscUJBQWdCLEdBQVksSUFBSSxDQUFDLENBQUMsd0JBQXdCO1FBQzFELGtCQUFhLEdBQVksS0FBSyxDQUFDLENBQUMseUJBQXlCO1FBcUJ2RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUV6Qiw2REFBNkQ7UUFFN0QsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFFNUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUVOLDhDQUE4QztRQUU5QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0MsTUFBTSxXQUFXLEdBQXlCO1lBQ3hDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxZQUFZLEVBQUUsSUFBSSxlQUFlLENBQXFCLFNBQVMsQ0FBQztZQUNoRSxXQUFXLEVBQUUsSUFBSSxlQUFlLENBQVcsRUFBRSxDQUFDO1lBQzlDLFlBQVksRUFBRSxJQUFJLGVBQWUsQ0FBVyxFQUFFLENBQUM7WUFDL0MsYUFBYSxFQUFFLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQztZQUNoRCxpQkFBaUIsRUFBRSxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUM7U0FDdEQsQ0FBQTtRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBRXBELDBEQUEwRDtRQUMxRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQzdCLElBQUksU0FBUyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsb0lBQW9JLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDNUs7WUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3ZELDBEQUEwRDtnQkFDMUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztZQUM5RixDQUFDLENBQUMsQ0FDSCxDQUFBO1NBQ0Y7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsRCxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFFL0MsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUUxRCxNQUFNLFlBQVksR0FBYSxFQUFFLENBQUM7WUFDbEMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDckIsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDO1lBQzlCLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyw0QkFBNEIsQ0FBQyxPQUFPLEVBQUU7Z0JBQzlELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDL0I7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsT0FBTzthQUNULElBQUksQ0FDSCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsRUFDekIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixvQkFBb0IsRUFBRSxFQUN0QixTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUNMLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU87YUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDeEQsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUU7Z0JBQ2xCLFlBQVksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzlEO1FBQ0gsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU1RSxDQUFDO0lBRU8sWUFBWTtRQUVsQixzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2xCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUM3QixnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO2lCQUN2QyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDeEMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FDckIsQ0FBQztZQUNGLE1BQU0sd0JBQXdCLEdBQUcsTUFBTSxDQUNyQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO2lCQUN2QyxnQkFBZ0IsQ0FBQyxnQ0FBZ0MsQ0FBQztpQkFDbEQsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FDckIsQ0FBQztZQUVGLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUM7WUFFekYsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQzdCLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7aUJBQ3ZDLGdCQUFnQixDQUFDLGdDQUFnQyxDQUFDO2lCQUNsRCxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUNyQixDQUFDO1lBRUYsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQzdCLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7aUJBQ3ZDLGdCQUFnQixDQUFDLCtCQUErQixDQUFDO2lCQUNqRCxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUNyQixDQUFDO1lBQ0YsTUFBTSw0QkFBNEIsR0FBRyxNQUFNLENBQ3pDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7aUJBQ3ZDLGdCQUFnQixDQUFDLCtCQUErQixDQUFDO2lCQUNqRCxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUNyQixDQUFDO1lBR0YsTUFBTSxNQUFNLEdBQUcsZUFBZSxHQUFHLGdCQUFnQixHQUFHLGdCQUFnQixHQUFHLDRCQUE0QixDQUFDO1lBQ3BHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFcEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FDN0MsVUFBVSxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQzFCLENBQUM7U0FFSDthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FDN0MsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUMvQixDQUFDO1NBQ0g7SUFFSCxDQUFDO0lBRUQsZUFBZTtRQUViLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFFZCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDcEQsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7Z0JBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtnQkFDL0QsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtvQkFDZixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07d0JBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2lCQUMzRDtZQUNILENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxDQUFlO1FBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFlBQVksQ0FBQyxDQUFlO1FBQzFCLE1BQU0sU0FBUyxHQUF3QixJQUFJLENBQUMsS0FBSyxDQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FDcEMsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXRELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7UUFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFcEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBRWxFLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFO1lBQ2pDLGVBQWU7WUFFZixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFFakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUN4RCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTTtvQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQzFFLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLFdBQVcsQ0FBQztnQkFDakIsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLFdBQVcsRUFBRSxVQUFVO2dCQUN2QixXQUFXLEVBQUUsUUFBUTtnQkFDckIsNENBQTRDO2dCQUM1QyxZQUFZLEVBQUUsU0FBUztnQkFDdkIsYUFBYSxFQUFFLFFBQVE7YUFDeEIsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLHFEQUFxRDtZQUNyRCwyRUFBMkU7WUFDM0UsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxnQkFBZ0I7aUJBQ2xCLHVCQUF1QixDQUN0QixTQUFTLEVBQ1QsSUFBSSxFQUNKLE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUNSLFNBQVMsRUFDVCxRQUFRLENBRVQ7aUJBQ0EsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztnQkFDckIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNO29CQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztnQkFDMUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLENBQWUsRUFBRSxLQUFVO1FBRTlDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDbEMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUM7UUFFM0IsZ0NBQWdDO1FBQ2hDLE1BQU0sa0JBQWtCLEdBQ3RCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQztRQUN2RCxJQUFJLGNBQWMsR0FBRyxrQkFBa0IsRUFBRSxNQUFNLENBQzdDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUN2RCxDQUFDO1FBRUYsSUFBSSxRQUFRLEVBQUU7WUFDWixjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUN2QztRQUVELGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUV2QixNQUFNLGVBQWUsR0FBYSxFQUFFLENBQUM7UUFDckMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTlELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3BDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxLQUFNO1lBQzFDLFlBQVksRUFBRSxlQUFlO1NBQzlCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsQ0FBZSxFQUFFLFFBQWlCO1FBQzVDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyw0QkFBNEIsQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUV2RSx3REFBd0Q7UUFDeEQsSUFBSSxVQUFvQixDQUFDO1FBQ3pCLGtEQUFrRDtRQUNsRCxNQUFNLGFBQWEsR0FBYSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFNUUsc0RBQXNEO1FBQ3RELE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRTtZQUV2Qix5RUFBeUU7WUFDekUsK0NBQStDO1lBQy9DLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtnQkFDZCxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNqQixJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ2hDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3ZCO2dCQUNILENBQUMsQ0FBQyxDQUFBO2dCQUNGLDRDQUE0QztnQkFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7YUFFakM7aUJBQU07Z0JBQ0wsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDbkUscUNBQXFDO2dCQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQzthQUMxQjtZQUVELG9FQUFvRTtZQUNwRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQTtRQUVELGtEQUFrRDtRQUNsRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QiwwREFBMEQ7WUFDMUQsSUFBSSxDQUFDLGdCQUFnQjtpQkFDbEIsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQztpQkFDOUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBRVYsNEJBQTRCO2dCQUM1QixVQUFVLEdBQUcsQ0FBQyxDQUFDO2dCQUVmLDREQUE0RDtnQkFDNUQsV0FBVyxFQUFFLENBQUM7WUFFaEIsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO2dCQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNMLHlEQUF5RDtZQUN6RCxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFcEIsNERBQTREO1lBQzVELFdBQVcsRUFBRSxDQUFDO1NBRWY7UUFDRCxnREFBZ0Q7UUFFaEQsNEJBQTRCO0lBRTlCLENBQUM7SUFFRCw2QkFBNkIsQ0FBQyxLQUFjO1FBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELHdCQUF3QixDQUFDLEtBQWM7UUFDckMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDcEMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEtBQU07WUFDMUMsZ0JBQWdCLEVBQUUsS0FBSztTQUN4QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLENBQWUsRUFBRSxLQUFVO1FBRXZDLHlCQUF5QjtRQUN6QixRQUFRO1FBRVIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBRTFCLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXhCLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyw0QkFBNEIsQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUN2RSxJQUFJLFNBQVMsR0FBYSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQy9DLElBQ0UsSUFBSSxDQUFDLFlBQVk7WUFDakIsNEJBQTRCLENBQUMscUJBQXFCO1lBQ2xELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQ3BCO1lBQ0Esd0VBQXdFO1lBQ3hFLElBQUksQ0FBQyxnQkFBZ0I7aUJBQ2xCLGlCQUFpQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7aUJBQzFCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNWLFNBQVMsR0FBRyxDQUFDLENBQUM7Z0JBQ2QsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNqQixNQUFNLGFBQWEsR0FBYSxFQUFFLENBQUM7Z0JBQ25DLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ3BDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxLQUFNO29CQUMxQyxVQUFVLEVBQUUsYUFBYTtvQkFDekIsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFO2lCQUM3QixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNCLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQztTQUdOO2FBQU07WUFFTCxtQkFBbUI7WUFDbkIseURBQXlEO1lBQ3pELFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUUzQixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDcEMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEtBQU07Z0JBQzFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzdCLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRTthQUM3QixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzFCO1FBRUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUV6QixJQUFJLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzlCO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7SUFFeEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDekIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQ3pELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxLQUFLLElBQUksQ0FBQyxjQUFjLENBQ2hELENBQUM7WUFFRixJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO2dCQUN0QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FDNUQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FDaEQsQ0FBQztnQkFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQzthQUNuRDtTQUNGO0lBQ0gsQ0FBQzs4R0EvZ0JVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLCtZQVJwQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLEtBQUssRUFBRSxJQUFJO2dCQUNYLFdBQVcsRUFBRSxvQkFBb0I7YUFDbEM7U0FDRiw0WENuREgscTBMQTRHTSxzK0xEekVGLFlBQVksOFhBQ1osV0FBVywrbUJBQ1gsMkJBQTJCLGdHQUMzQixxQkFBcUIscUpBRXJCLGFBQWEsa0RBQ2IsZ0JBQWdCOzsyRkFZUCxvQkFBb0I7a0JBdEJoQyxTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLDJCQUEyQjt3QkFDM0IscUJBQXFCO3dCQUNyQix3QkFBd0I7d0JBQ3hCLGFBQWE7d0JBQ2IsZ0JBQWdCO3FCQUNqQixhQUdVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsc0JBQXNCO3lCQUNsQztxQkFDRjs0UUFHUSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUVpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ08sY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ00sa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIElucHV0LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBzd2l0Y2hNYXAsIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBSZWN1cnNpdmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVjdXJzaXZlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlT3JnVHJlZVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlLW9yZy10cmVlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IElPcmdUcmVlSXRlbSwgSU9yZ1RyZWVMaW5lckl0ZW0gfSBmcm9tICcuL0lPcmdUcmVlSXRlbSc7XHJcblxyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1mb3JtLWNvbnRyb2wtYmFzZS9jb3JlLWZvcm0tY29udHJvbC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IElDb3JlT3JnVHJlZUluc3RhbmNlLCBPcmdhbml6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnYW5pemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhbGVydE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYWxlcnRPcHRpb25zJztcclxuaW1wb3J0IHsgbGluZXJfdG9fbmVzdGVkX2FycmF5X3NjcmlwdCB9IGZyb20gJy4uLy4uLy4uLy4uL2Fzc2V0cy9qcy9yZXNjdXNpdmVfd2snXHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvcmVDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC9jb3JlLWNoZWNrYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlUmVkdWNlckljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLXJlZHVjZXItaWNvbi9jb3JlLXJlZHVjZXItaWNvbi9jb3JlLXJlZHVjZXItaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZSc7XHJcblxyXG5leHBvcnQgZW51bSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlIHtcclxuICBBQ1RJVkFURURfU0lOR0xFID0gJ0FDVElWQVRFRF9TSU5HTEUnLFxyXG4gIEFDVElWQVRFRF9JTkhFUklUQU5DRSA9ICdBQ1RJVkFURURfSU5IRVJJVEFOQ0UnLFxyXG4gIENIRUNLRUQgPSAnQ0hFQ0tFRCcsXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1vcmctdHJlZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIENvcmVMb2FkaW5nU3VyZmFjZUNvbXBvbmVudCxcclxuICAgIENvcmVDaGVja2JveENvbXBvbmVudCxcclxuICAgIENvcmVSZWR1Y2VySWNvbkNvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogQ29yZU9yZ1RyZWVDb21wb25lbnQsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlT3JnVHJlZUNvbXBvbmVudCBleHRlbmRzIENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQElucHV0KCkgbGluZUNvbG9yOiBzdHJpbmcgPSAndHJhbnNwYXJlbnQnO1xyXG4gIEBJbnB1dCgpIGZ1bGxXaWR0aE1vZGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGFjY2Vzc29yTW9kZSE6IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGU7XHJcbiAgQElucHV0KCkgZnVsbFJlbmRlcmluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGVpZ2h0ITogbnVtYmVyOyAvLyBDaGnhu4F1IGNhbyBj4bunYSBDb3JlT3JnVHJlZSBj4bqnbiDEkcaw4bujYyB0cnV54buBbiB2w6BvIVxyXG4gIEBJbnB1dCgpIGRpc2FibGVkTG9vcEV4cGFuZCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2hvd0NoZWNrSW5oZXJpdGFuY2UhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGV4Y2x1ZGVkSWRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyW10+KFtdKTsgLy8gMjAyNC0wNS0xMDogdG8gYmUgaW1wbGVtZW50ZWRcclxuXHJcbiAgQE91dHB1dCgpIGl0ZW1Eb3VibGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgaXRlbUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2Rpc3BsYXlDb250ZW50JykgZGlzcGxheUNvbnRlbnQhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3JlZHVjZWRJY29uV3JhcHBlcicpIHJlZHVjZWRJY29uV3JhcHBlciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIG92ZXJyaWRlIHZhbHVlITogbnVtYmVyW107XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBudW1iZXJbXSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IG9iajtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuYWNjZXNzb3JNb2RlKSB7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5DSEVDS0VEOlxyXG4gICAgICAgIGlmICghIW9iaikge1xyXG4gICAgICAgICAgY29uc3QgY2hlY2tlZEtleXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICB0aGlzLmNoZWNrZWRJZHMgPSBvYmo7IC8vIDw9PT0gMjQvMTAvMjAyM1xyXG4gICAgICAgICAgb2JqLm1hcCh4ID0+IGNoZWNrZWRLZXlzLnB1c2goeC50b1N0cmluZygpKSk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5yZWN1cnNpdmVTZXJ2aWNlLndyaXRlVmFsdWVDaGVja2VkKGNoZWNrZWRLZXlzLCB0aGlzLmRhdGEsIHRoaXMuZGlzYWJsZWRMb29wRXhwYW5kKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGEgJiYgISF0aGlzLmRhdGE/Lmxlbmd0aCkgdGhpcy5kYXRhWzBdLnRyZWUkRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQUNUSVZBVEVEX1NJTkdMRTpcclxuICAgICAgY2FzZSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkFDVElWQVRFRF9JTkhFUklUQU5DRTpcclxuICAgICAgICBpZiAoISFvYmopIHtcclxuICAgICAgICAgIGNvbnN0IGFjdGl2YXRlZEtleXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICBvYmoubWFwKHggPT4gYWN0aXZhdGVkS2V5cy5wdXNoKHgudG9TdHJpbmcoKSkpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVjdXJzaXZlU2VydmljZS53cml0ZVZhbHVlQWN0aXZhdGVkKGFjdGl2YXRlZEtleXMsIHRoaXMuZGF0YSwgdGhpcy5kaXNhYmxlZExvb3BFeHBhbmQpLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuZGF0YSAmJiAhIXRoaXMuZGF0YT8ubGVuZ3RoKSB0aGlzLmRhdGFbMF0udHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0aGlzLmFjY2Vzc29yTW9kZSA9PT0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5DSEVDS0VEKSB7XHJcblxyXG4gICAgfSBlbHNlIC8qIEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQUNUSVZBVEVEX1NJTkdMRSBvciBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkFDVElWQVRFRF9JTkhFUklUQU5DRSAqLyB7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlSWRzOiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICBjaGVja2VkSWRzOiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICAvLyBmb3IgZGVidWdnaW5nXHJcbiAgLy8gYWN0aXZlSWRzU3RyaW5nITogc3RyaW5nOyAgXHJcbiAgZGF0YSE6IElPcmdUcmVlSXRlbVtdO1xyXG4gIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgbGlubmVyT3JnQXJyYXkhOiBJT3JnVHJlZUxpbmVySXRlbVtdO1xyXG4gIHNlYXJjaCE6IHN0cmluZztcclxuICBzZWFyY2gkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gIHJlZHVjZWQhOiBib29sZWFuO1xyXG4gIHNlYXJjaFBsYWNlaG9sZGVyID0gRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fUExBQ0VfSE9MREVSX1NFQVJDSF9PUkc7XHJcblxyXG4gIGluaXRpYWxpemluZyE6IGJvb2xlYW47XHJcbiAgY2hlY2tJbmhlcml0YW5jZTogYm9vbGVhbiA9IHRydWU7IC8vIGRlZmF1bHQgdmFsdWUgaXMgdHJ1ZVxyXG4gIHNob3dEaXNzb2x2ZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gZGVmYXVsdCB2YWx1ZSBpcyBmYWxzZVxyXG4gIHNlbGVjdGVkS2V5ITogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHNlbGVjdGVkSXRlbSE6IElPcmdUcmVlTGluZXJJdGVtO1xyXG4gIGxhbmchOiBzdHJpbmc7XHJcbiAgLy9yZWR1Y2VkJCE6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcclxuXHJcbiAgaW5zdGFuY2VOdW1iZXIhOiBudW1iZXI7XHJcbiAgc2Nyb2xsQ29udGFpbmVySGVpZ2h0ITogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vcHVibGljIG92ZXJyaWRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWN1cnNpdmVTZXJ2aWNlOiBSZWN1cnNpdmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvcmVPcmdUcmVlU2VydmljZTogQ29yZU9yZ1RyZWVTZXJ2aWNlLFxyXG4gICAgLy8gcHJpdmF0ZSBjb3JlT3JnVHJlZVN0YXRlOiBDb3JlT3JnVHJlZVN0YXRlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHB1YmxpYyBvcmdhbml6YXRpb25TZXJ2aWNlOiBPcmdhbml6YXRpb25TZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIoLyppbmplY3RvciovKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6aW5nID0gdHJ1ZTtcclxuXHJcbiAgICAvLyB0aGlzLnJlZHVjZWQkID0gdGhpcy5jb3JlT3JnVHJlZVN0YXRlLmNvcmVPcmdUcmVlUmVkdWNlZCQ7XHJcblxyXG4gICAgdGhpcy5pbml0aWFsaXppbmcgPSBmYWxzZTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snaGVpZ2h0J10pIHtcclxuICAgICAgdGhpcy5yZXNpemVIZWlnaHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIC8vdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRiYXJPcGVuJC5uZXh0KGZhbHNlKTtcclxuXHJcbiAgICB0aGlzLmluc3RhbmNlTnVtYmVyID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICBjb25zdCBuZXdJbnN0YW5jZTogSUNvcmVPcmdUcmVlSW5zdGFuY2UgPSB7XHJcbiAgICAgIGluc3RhbmNlTnVtYmVyOiB0aGlzLmluc3RhbmNlTnVtYmVyLFxyXG4gICAgICBzZWxlY3RlZEtleSQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpLFxyXG4gICAgICBhY3RpdmVLZXlzJDogbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pLFxyXG4gICAgICBjaGVja2VkS2V5cyQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKSxcclxuICAgICAgZXhwYW5kZWRLZXlzJDogbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pLFxyXG4gICAgICBjaGVja0luaGVyaXRhbmNlJDogbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKVxyXG4gICAgfVxyXG4gICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLmluc3RhbmNlcy5wdXNoKG5ld0luc3RhbmNlKVxyXG5cclxuICAgIC8vIENoZWNrIHhlbSBjaGnhu4F1IGNhbyBoZWlnaHQgY8OzIMSRxrDhu6NjIHRydXnhu4FuIHbDoG8gaGF5IGtow7RuZ1xyXG4gICAgaWYgKHRoaXMuaGVpZ2h0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uud2FybihcIkNvcmVPcmdUcmVlIGtow7RuZyBuaOG6rW4gxJHGsOG7o2MgY2hp4buBdSBjYW8gKGhlaWdodCkgdHJ1eeG7gW4gdsOgbyB04burIGzhu5twIG5nb8OgaS4gQ2hp4buBdSBjYW8gbeG6t2MgxJHhu4tuaCBz4bq9IMSRxrDhu6NjIHTDrW5oIHRvw6FuIGThu7FhIHbDoG8gYuG7kSBj4bulYyBjaMOtbmguXCIsIGFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbnRlbnRDb250YWluZXJIZWlnaHQkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIC8vIGJhc2ljU3BhY2luZyBsw6AgcGFkZGluZ0JvdHRvbSBj4bunYSBs4bubcCBjb250ZW50LWNvbnRhaW5lclxyXG4gICAgICAgICAgdGhpcy5oZWlnaHQgPSB4IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvcmVQYWdlSGVhZGVySGVpZ2h0IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmJhc2ljU3BhY2luZztcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5saW5lckRhdGEkLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubGlubmVyT3JnQXJyYXkgPSB4O1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQuc3Vic2NyaWJlKCh4KSA9PiB7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQgY2hhbmdlc1wiLCB4KVxyXG5cclxuICAgICAgICBjb25zdCBuZXdBY3RpdmVJZHM6IG51bWJlcltdID0gW107XHJcbiAgICAgICAgeC5hY3RpdmVLZXlzLm1hcCgoaykgPT4ge1xyXG4gICAgICAgICAgbmV3QWN0aXZlSWRzLnB1c2goTnVtYmVyKGspKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmFjdGl2ZUlkcyA9IG5ld0FjdGl2ZUlkcztcclxuICAgICAgICBpZiAodGhpcy5hY2Nlc3Nvck1vZGUgIT09IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRCkge1xyXG4gICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuYWN0aXZlSWRzO1xyXG4gICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmFjdGl2ZUlkcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSB4LnNlbGVjdGVkS2V5O1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5zZWFyY2gkXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoKHgpID0+IHggIT09IG51bGwpLFxyXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXHJcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgc3dpdGNoTWFwKCh0ZXh0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzd2l0Y2hNYXAgd29ya3MnKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVjdXJzaXZlU2VydmljZS5maW5kSXRlbSh0ZXh0LCB0aGlzLmRhdGEpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyRcclxuICAgICAgICAucGlwZShmaWx0ZXIoKHZhbHVlKSA9PiAhISF0aGlzLmluaXRpYWxpemluZyAmJiAhIXZhbHVlKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICBpZiAoISFsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NvcmVPcmdUcmVlU3RhdHVzJywgSlNPTi5zdHJpbmdpZnkoeCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKCh4KSA9PiAodGhpcy5sYW5nID0geCkpKTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2l6ZUhlaWdodCgpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBoZWlnaHQgaXMgbm90IGdpdmVuIGFuZCB0aGUgdHJlZSByZXNpemUgYXMgc3RhbmRhcmRcclxuICAgIGlmICghISF0aGlzLmhlaWdodCkge1xyXG4gICAgICBjb25zdCBzaXplSGVhZGVySGVpZ2h0ID0gTnVtYmVyKFxyXG4gICAgICAgIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxyXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc2l6ZS1oZWFkZXItaGVpZ2h0JylcclxuICAgICAgICAgIC5yZXBsYWNlKCdweCcsICcnKVxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCBzaXplQ29yZVBhZ2VIZWFkZXJIZWlnaHQgPSBOdW1iZXIoXHJcbiAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXHJcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zaXplLWNvcmUtcGFnZS1oZWFkZXItaGVpZ2h0JylcclxuICAgICAgICAgIC5yZXBsYWNlKCdweCcsICcnKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgY29uc3QgY29udGFpbmVySGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gc2l6ZUhlYWRlckhlaWdodCAtIHNpemVDb3JlUGFnZUhlYWRlckhlaWdodDtcclxuXHJcbiAgICAgIGNvbnN0IHBhZ2VIZWFkZXJIZWlnaHQgPSBOdW1iZXIoXHJcbiAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXHJcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zaXplLWNvcmUtcGFnZS1oZWFkZXItaGVpZ2h0JylcclxuICAgICAgICAgIC5yZXBsYWNlKCdweCcsICcnKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgY29uc3QgcGFnaW5hdGlvbkhlaWdodCA9IE51bWJlcihcclxuICAgICAgICBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcclxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXNpemUtY29yZS1wYWdpbmF0aW9uLWhlaWdodCcpXHJcbiAgICAgICAgICAucmVwbGFjZSgncHgnLCAnJylcclxuICAgICAgKTtcclxuICAgICAgY29uc3Qgc2l6ZU1hcmdpbkNvcmVQYWdpbmF0aW9uRnVsbCA9IE51bWJlcihcclxuICAgICAgICBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcclxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXNpemUtbWFyZ2luLWNvcmUtcGFnaW5hdGlvbicpXHJcbiAgICAgICAgICAucmVwbGFjZSgncHgnLCAnJylcclxuICAgICAgKTtcclxuXHJcblxyXG4gICAgICBjb25zdCBoZWlnaHQgPSBjb250YWluZXJIZWlnaHQgLSBwYWdlSGVhZGVySGVpZ2h0IC0gcGFnaW5hdGlvbkhlaWdodCArIHNpemVNYXJnaW5Db3JlUGFnaW5hdGlvbkZ1bGw7XHJcbiAgICAgIGNvbnNvbGUubG9nKGhlaWdodCk7XHJcblxyXG4gICAgICB0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcclxuICAgICAgICAnLS1oZWlnaHQnLCBoZWlnaHQgKyAncHgnXHJcbiAgICAgICk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXHJcbiAgICAgICAgJy0taGVpZ2h0JywgdGhpcy5oZWlnaHQgKyAncHgnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLm9yZ1RyZWVEYXRhJC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGF0YSA9IHg7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIm5ldyBEYXRhIGNvbWluZ1wiLCB0aGlzLmRhdGEsIG5ldyBEYXRlKCkuZ2V0VGltZSgpKVxyXG4gICAgICAgICAgaWYgKCEhdGhpcy5kYXRhKSB7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuZGF0YS5sZW5ndGgpIHRoaXMuZGF0YVswXS50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG9uSXRlbUNsaWNrTG9jYWwoZTogSU9yZ1RyZWVJdGVtKTogdm9pZCB7XHJcbiAgICB0aGlzLmxpbm5lck9yZ0FycmF5Lm1hcCgoeCkgPT4gKHguYWN0aXZlID0gZmFsc2UpKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5idWlsZFRyZWVEYXRhKCkpO1xyXG4gIH1cclxuXHJcbiAgb25Ub2dnbGVJdGVtKGU6IElPcmdUcmVlSXRlbSkge1xyXG4gICAgY29uc3QgY2xvbmVDb3B5OiBJT3JnVHJlZUxpbmVySXRlbVtdID0gSlNPTi5wYXJzZShcclxuICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5saW5uZXJPcmdBcnJheSlcclxuICAgICk7XHJcbiAgICBjb25zdCBmaWx0ZXIgPSBjbG9uZUNvcHkuZmlsdGVyKCh4KSA9PiB4LmlkID09PSBlLmlkKTtcclxuXHJcbiAgICBpZiAoZmlsdGVyLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICBmaWx0ZXJbMF0uZXhwYW5kID0gISEhZS5leHBhbmQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxpbm5lck9yZ0FycmF5ID0gY2xvbmVDb3B5O1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmJ1aWxkVHJlZURhdGEoKSk7XHJcbiAgfVxyXG5cclxuICBidWlsZFRyZWVEYXRhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCBjbG9uZUNvcHkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMubGlubmVyT3JnQXJyYXkpKTtcclxuXHJcbiAgICBpZiAodHlwZW9mIFdvcmtlciAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgLy8gQ3JlYXRlIGEgbmV3XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcIvCfn6Lwn5+iIFdvcmtlciB3b3Jrc1wiKTtcclxuXHJcbiAgICAgIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIobGluZXJfdG9fbmVzdGVkX2FycmF5X3NjcmlwdCk7XHJcbiAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKHsgZGF0YSB9KSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YS5saXN0O1xyXG4gICAgICAgIGlmICghIXRoaXMuZGF0YSAmJiAhIXRoaXMuZGF0YT8ubGVuZ3RoKSB0aGlzLmRhdGFbMF0udHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtcclxuICAgICAgICBsaXN0OiBjbG9uZUNvcHksXHJcbiAgICAgICAga2V5RmllbGQ6ICdpZCcsXHJcbiAgICAgICAgdGl0bGVGaWVsZDogJ25hbWUnLFxyXG4gICAgICAgIHBhcmVudEZpZWxkOiAncGFyZW50SWQnLFxyXG4gICAgICAgIGFjdGl2ZUZpZWxkOiAnYWN0aXZlJyxcclxuICAgICAgICAvL2luaGVyaXRhbnRBY3RpdmVGaWVsZDogJ2luaGVyaXRhbnRBY3RpdmUnLFxyXG4gICAgICAgIGNoZWNrZWRGaWVsZDogJ2NoZWNrZWQnLFxyXG4gICAgICAgIGV4cGFuZGVkRmllbGQ6ICdleHBhbmQnLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIFdlYiB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgZW52aXJvbm1lbnQuXHJcbiAgICAgIC8vIFlvdSBzaG91bGQgYWRkIGEgZmFsbGJhY2sgc28gdGhhdCB5b3VyIHByb2dyYW0gc3RpbGwgZXhlY3V0ZXMgY29ycmVjdGx5LlxyXG4gICAgICBjb25zdCBzdGF0dXMgPSB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5yZWN1cnNpdmVTZXJ2aWNlXHJcbiAgICAgICAgICAubGluZXJBcnJheVRvTmVzdGVkQXJyYXkoXHJcbiAgICAgICAgICAgIGNsb25lQ29weSxcclxuICAgICAgICAgICAgJ2lkJyxcclxuICAgICAgICAgICAgJ25hbWUnLFxyXG4gICAgICAgICAgICAncGFyZW50SWQnLFxyXG4gICAgICAgICAgICAnYWN0aXZlJyxcclxuICAgICAgICAgICAgJ2NoZWNrZWQnLFxyXG4gICAgICAgICAgICAnZXhwYW5kJyxcclxuICAgICAgICAgICAgLy9zdGF0dXNcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKG9iaikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBvYmoubGlzdDtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5kYXRhICYmICEhdGhpcy5kYXRhPy5sZW5ndGgpIHRoaXMuZGF0YVswXS50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25FeHBhbmRUb2dnbGVyQ2xpY2soZTogSU9yZ1RyZWVJdGVtLCBldmVudDogYW55KTogdm9pZCB7XHJcblxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgY29uc3QgbmV3VmFsdWUgPSAhZS50cmVlJEV4cGFuZGVkO1xyXG4gICAgZS50cmVlJEV4cGFuZGVkID0gbmV3VmFsdWU7XHJcblxyXG4gICAgLy8gdXBkYXRpbmcgc3RhdHVzIHdpdGggbmV3VmFsdWVcclxuICAgIGNvbnN0IGN1cnJlbnRFeHBhbmRlZElkcyA9XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLnZhbHVlPy5leHBhbmRlZEtleXM7XHJcbiAgICBsZXQgbmV3RXhwYW5kZWRJZHMgPSBjdXJyZW50RXhwYW5kZWRJZHM/LmZpbHRlcihcclxuICAgICAgKF8pID0+ICEhIWN1cnJlbnRFeHBhbmRlZElkcy5pbmNsdWRlcyhlLmlkLnRvU3RyaW5nKCkpXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChuZXdWYWx1ZSkge1xyXG4gICAgICBuZXdFeHBhbmRlZElkcz8ucHVzaChlLmlkLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIG5ld0V4cGFuZGVkSWRzPy5zb3J0KCk7XHJcblxyXG4gICAgY29uc3QgbmV3RXhwYW5kZWRLZXlzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgbmV3RXhwYW5kZWRJZHMubWFwKCh4KSA9PiBuZXdFeHBhbmRlZEtleXMucHVzaCh4LnRvU3RyaW5nKCkpKTtcclxuXHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC5uZXh0KHtcclxuICAgICAgLi4udGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWUhLFxyXG4gICAgICBleHBhbmRlZEtleXM6IG5ld0V4cGFuZGVkS2V5cyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25JdGVtQ2hlY2soZTogSU9yZ1RyZWVJdGVtLCBuZXdWYWx1ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pdGVtQ2xpY2s/LmVtaXQoZSk7XHJcbiAgICBpZiAodGhpcy5hY2Nlc3Nvck1vZGUgIT09IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRCkgcmV0dXJuO1xyXG5cclxuICAgIC8vIFdlIGhhdmUgdGhpcyB2YXIgdG8gaG9sZCBub2RlcyB0aGF0IGFyZSBiZWluZyBjaGFuZ2VkXHJcbiAgICBsZXQgdG9nZ2xlZElkczogbnVtYmVyW107XHJcbiAgICAvLyBXZSBzaG91bGQgY2FsY3VsYXRlIGEgbmV3IHN0YXRlIGludG8gdGhpcyB2YXI6IFxyXG4gICAgY29uc3QgbmV3Q2hlY2tlZElkczogbnVtYmVyW10gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY2hlY2tlZElkcykpO1xyXG5cclxuICAgIC8vIFdlIHdpbGwgY2FsbCB0aGlzIGZ1bmN0aW9uIGFmdGVyIHRvZ2dsZWRJZHMgY2hhbmdlZFxyXG4gICAgY29uc3QgY2hhbmdlVmFsdWUgPSAoKSA9PiB7XHJcblxyXG4gICAgICAvLyBJZiBuZXdWYWx1ZSA9PT0gdHJ1ZSwgd2Ugd2lsbCBkaXNjdGludGx5IHB1c2ggY2hhbmdlZCBpZHMgdG8gdGhlIHN0YXRlXHJcbiAgICAgIC8vIE90aGVyd2lzZSB3ZSB3aWxsIHJlbW92ZSB0aGVtIGZyb20gdGhlIHN0YXRlXHJcbiAgICAgIGlmICghIW5ld1ZhbHVlKSB7XHJcbiAgICAgICAgdG9nZ2xlZElkcy5tYXAoeCA9PiB7XHJcbiAgICAgICAgICBpZiAoISEhbmV3Q2hlY2tlZElkcy5pbmNsdWRlcyh4KSkge1xyXG4gICAgICAgICAgICBuZXdDaGVja2VkSWRzLnB1c2goeCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAvLyBUaGVuIGFzaWduIHRoZSBzdGF0ZSB0byB0aGUgbmV3Q2hlY2tlZElkc1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZElkcyA9IG5ld0NoZWNrZWRJZHM7XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlciA9IG5ld0NoZWNrZWRJZHMuZmlsdGVyKHggPT4gISEhdG9nZ2xlZElkcy5pbmNsdWRlcyh4KSlcclxuICAgICAgICAvLyBUaGVuIGFzaWduIHRoZSBzdGF0ZSB0byB0aGUgZmlsdGVyXHJcbiAgICAgICAgdGhpcy5jaGVja2VkSWRzID0gZmlsdGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBBZnRlciB0aGUgY2FzZXMgb2YgaWYvZWxzZSwgbWFrZSB0aGUgY29udHJvbCBjaGFuZ2Ugd2l0aCBvbkNoYW5nZVxyXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5jaGVja2VkSWRzO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuY2hlY2tlZElkcyk7XHJcbiAgICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIHN0YXJ0OiBUSElTIENPREUgU0NPUEUgY2FsY3VsYXRlcyB0b2dnbGVkSWRzICovXHJcbiAgICBpZiAodGhpcy5jaGVja0luaGVyaXRhbmNlKSB7XHJcbiAgICAgIC8vIElmIHRydWUsIGFsbCB0aGUgbmVzdGVkIGl0ZW1zIHdpbGwgYmUgY2hlY2tlZC91bmNoZWNrZWRcclxuICAgICAgdGhpcy5yZWN1cnNpdmVTZXJ2aWNlXHJcbiAgICAgICAgLm5lc3RlZFRvZ2dsZUNoZWNrKGUsIG5ld1ZhbHVlKVxyXG4gICAgICAgIC50aGVuKCh4KSA9PiB7XHJcblxyXG4gICAgICAgICAgLy8gVGhlIGlkcyBoYXZlIGJlZW4gY2hhbmdlZFxyXG4gICAgICAgICAgdG9nZ2xlZElkcyA9IHg7XHJcblxyXG4gICAgICAgICAgLy8gTm93IHRvZ2dsZWRJZHMgd2VyZSBzZXQuIFdlIGNhbGwgdGhlIGZ1bmN0aW9uIHdlIGRlY2xhcmVkXHJcbiAgICAgICAgICBjaGFuZ2VWYWx1ZSgpO1xyXG5cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoeDogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKHgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gT3RoZXJ3aXNlIHdlIHNpbXBseSB0b2dnbGUgY2hlY2sgZm9yIGN1cnJlbnQgaXRlbSBvbmx5XHJcbiAgICAgIHRvZ2dsZWRJZHMgPSBbZS5pZF07XHJcblxyXG4gICAgICAvLyBOb3cgdG9nZ2xlZElkcyB3ZXJlIHNldC4gV2UgY2FsbCB0aGUgZnVuY3Rpb24gd2UgZGVjbGFyZWRcclxuICAgICAgY2hhbmdlVmFsdWUoKTtcclxuXHJcbiAgICB9XHJcbiAgICAvKiBlbmQ6IFRISVMgQ09ERSBTQ09QRSBjYWxjdWxhdGVzIHRvZ2dsZWRJZHMgKi9cclxuXHJcbiAgICAvLyBUaGF0IGlzLiBIYXBweSBkZWJ1Z2dpbmchXHJcblxyXG4gIH1cclxuXHJcbiAgb25DaGVja0luY2x1ZGVEaXNzb2x2ZWRDaGFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGNvbnNvbGUubG9nKFwib25DaGVja0luY2x1ZGVEaXNzb2x2ZWRDaGFuZ2VcIiwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25DaGVja0luaGVyaXRhbmNlQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC5uZXh0KHtcclxuICAgICAgLi4udGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWUhLFxyXG4gICAgICBjaGVja0luaGVyaXRhbmNlOiB2YWx1ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25PYmplY3RDbGljayhlOiBJT3JnVHJlZUl0ZW0sIGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuXHJcbiAgICAvLyByZW1vdmUgaGlnaGxpZ2h0IGNsYXNzXHJcbiAgICAvLyBUTyBET1xyXG5cclxuICAgIGlmICghIWUucHJvdGVjdGVkKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5pdGVtQ2xpY2s/LmVtaXQoZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuYWNjZXNzb3JNb2RlID09PSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkNIRUNLRUQpIHJldHVybjtcclxuICAgIGxldCBhY3RpdmVJZHM6IG51bWJlcltdID0gW107XHJcbiAgICB0aGlzLmRhdGEubWFwKChpdGVtKSA9PiAoaXRlbS5hY3RpdmUgPSBmYWxzZSkpO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmFjY2Vzc29yTW9kZSA9PT1cclxuICAgICAgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5BQ1RJVkFURURfSU5IRVJJVEFOQ0UgfHxcclxuICAgICAgISEhdGhpcy5hY2Nlc3Nvck1vZGVcclxuICAgICkge1xyXG4gICAgICAvLyBJZiB0cnVlLCBhbGwgdGhlIG5lc3RlZCBpdGVtcyB3aWxsIGJlIGFjdGl2ZSwgdGhlIG90aGVycyBhcmUgaW5hY3RpdmVcclxuICAgICAgdGhpcy5yZWN1cnNpdmVTZXJ2aWNlXHJcbiAgICAgICAgLm5lc3RlZFJlc2V0QWN0aXZlKGUsIHRydWUpXHJcbiAgICAgICAgLnRoZW4oKHgpID0+IHtcclxuICAgICAgICAgIGFjdGl2ZUlkcyA9IHg7XHJcbiAgICAgICAgICBhY3RpdmVJZHMuc29ydCgpO1xyXG4gICAgICAgICAgY29uc3QgbmV3QWN0aXZlS2V5czogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICAgIGFjdGl2ZUlkcy5tYXAoKHgpID0+IG5ld0FjdGl2ZUtleXMucHVzaCh4LnRvU3RyaW5nKCkpKTtcclxuICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLm5leHQoe1xyXG4gICAgICAgICAgICAuLi50aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZSEsXHJcbiAgICAgICAgICAgIGFjdGl2ZUtleXM6IG5ld0FjdGl2ZUtleXMsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkS2V5OiBlLmlkLnRvU3RyaW5nKClcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVJZHMgPSBhY3RpdmVJZHM7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmFjdGl2ZUlkcyk7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGFjdGl2ZUlkcyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKHg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcih4KTtcclxuICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIC8vIEFDVElWQVRFRF9TSU5HTEVcclxuICAgICAgLy8gT3RoZXJ3aXNlIHdlIHNpbXBseSBzZXQgY3VycmVudCBpdGVtIHRvIGJlIGFjdGl2ZSBvbmx5XHJcbiAgICAgIGFjdGl2ZUlkcyA9IFtlLmlkXTtcclxuICAgICAgdGhpcy5hY3RpdmVJZHMgPSBhY3RpdmVJZHM7XHJcblxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC5uZXh0KHtcclxuICAgICAgICAuLi50aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZSEsXHJcbiAgICAgICAgYWN0aXZlS2V5czogW2UuaWQudG9TdHJpbmcoKV0sXHJcbiAgICAgICAgc2VsZWN0ZWRLZXk6IGUuaWQudG9TdHJpbmcoKSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLm9uQ2hhbmdlKGFjdGl2ZUlkcyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2ZW50O1xyXG5cclxuICAgIGlmIChkZXRhaWwgPT09IDIpIHtcclxuICAgICAgY29uc29sZS5sb2coJ1RoaXMgd2FzIGEgZGJsY2xpY2snKTtcclxuICAgICAgdGhpcy5pdGVtRG91YmxlQ2xpY2suZW1pdChlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGU7XHJcblxyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hDaGFuZ2UodGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaCQubmV4dCh0ZXh0KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKFwibmdBZnRlckNvbnRlbnRJbml0XCIpXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoKHgpID0+IHg/LnVuc3Vic2NyaWJlKCkpO1xyXG5cclxuICAgIGlmICghIXRoaXMuaW5zdGFuY2VOdW1iZXIpIHtcclxuICAgICAgY29uc3QgdHJ5VG9GaW5kID0gdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoXHJcbiAgICAgICAgKHgpID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuaW5zdGFuY2VOdW1iZXJcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICghIXRyeVRvRmluZC5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBuZXdJbnN0YW5jZXMgPSB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcihcclxuICAgICAgICAgICh4KSA9PiB4Lmluc3RhbmNlTnVtYmVyICE9PSB0aGlzLmluc3RhbmNlTnVtYmVyXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2UuaW5zdGFuY2VzID0gbmV3SW5zdGFuY2VzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI2NvbnRhaW5lciBjbGFzcz1cImNvcmUtb3JnLXRyZWUtY29udGFpbmVyXCIgW2NsYXNzLmZ1bGwtd2lkdGhdPVwiISFmdWxsV2lkdGhNb2RlXCIgKm5nSWY9XCIhIWRhdGFcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgcG9zaXRpb24gOiAncmVsYXRpdmUnLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQgKyAncHgnXHJcbiAgICB9XCI+XHJcbiAgICA8ZGl2ICNkaXNwbGF5Q29udGVudCBjbGFzcz1cImN1c3RvbS1vcmctdHJlZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb3JlLW9yZy10cmVlLWhlYWRlciBkLWZsZXgtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibTVcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hcIiAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXIgfCB0cmFuc2xhdGU6IGxhbmdcIiBbY2xhc3MuZnVsbC13aWR0aF09XCIhIWZ1bGxXaWR0aE1vZGVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICNzY3JvbGxDb250YWluZXIgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgLSBsYXlvdXRTZXJ2aWNlLmNvcmVPcmdUcmVlVG9wSGVpZ2h0IC0gbGF5b3V0U2VydmljZS5jb3JlT3JnVHJlZUJvdHRvbUhlaWdodCArICdweCcsXHJcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ3Njcm9sbCdcclxuICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgIDxjb3JlLWxvYWRpbmctc3VyZmFjZSBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2hlaWdodF09XCJzY3JvbGxDb250YWluZXJIZWlnaHRcIj48L2NvcmUtbG9hZGluZy1zdXJmYWNlPlxyXG4gICAgICAgICAgICAgICAgQGZvciAocm9vdCBvZiBkYXRhOyB0cmFjayByb290KSB7XHJcblxyXG4gICAgICAgICAgICAgICAgQGRlZmVyKG9uIHZpZXdwb3J0KHNjcm9sbENvbnRhaW5lcikpIHtcclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInJvb3RcIiBbY2xhc3MuY29sbGFwc2VkXT1cIiEhIXJvb3QudHJlZSRFeHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtOyBjb250ZXh0OiB7IGNvbnRleHQ6IHJvb3QgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIH0gQHBsYWNlaG9sZGVyKCkge1xyXG4gICAgICAgICAgICAgICAgUGxhY2Vob2xkZXIuLi5cclxuICAgICAgICAgICAgICAgIH0gQGxvYWRpbmcoKSB7XHJcbiAgICAgICAgICAgICAgICBMb2FkaW5nLi4uXHJcbiAgICAgICAgICAgICAgICB9IEBlcnJvcigpIHtcclxuICAgICAgICAgICAgICAgIEVycm9yLi4uXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXHJcbiAgICAgICAgICAgICAgICBib3R0b206ICcwcHgnLFxyXG4gICAgICAgICAgICAgICAgbGVmdDogJzBweCcsXHJcbiAgICAgICAgICAgICAgICByaWdodDogJzBweCcsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGxheW91dFNlcnZpY2UuY29yZVBhZ2luYXRpb25IZWlnaHQgKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ6IGxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodDogbGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmcgKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgbGluZUhlaWdodDogbGF5b3V0U2VydmljZS5jb3JlUGFnaW5hdGlvbkhlaWdodCArICdweCcsXHJcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbidcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBsYXlvdXRTZXJ2aWNlLmNvcmVQYWdpbmF0aW9uSGVpZ2h0ICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXHJcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJ1xyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94IFsobmdNb2RlbCldPVwic2hvd0Rpc3NvbHZlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrSW5jbHVkZURpc3NvbHZlZENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidVSS5DT1JFX09SR19UUkVFLlNIT1dfT1VUREFURURfVU5JVFNfQUJCUkVWSUFURUQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIidVSS5DT1JFX09SR19UUkVFLlNIT1dfT1VUREFURURfVU5JVFMnXCIgdG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrLWluaGVyaXRhbmNlLXdyYXBwZXJcIiAqbmdJZj1cImFjY2Vzc29yTW9kZSA9PT0gJ0NIRUNLRUQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94ICpuZ0lmPVwic2hvd0NoZWNrSW5oZXJpdGFuY2VcIiBbKG5nTW9kZWwpXT1cImNoZWNrSW5oZXJpdGFuY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGVja0luaGVyaXRhbmNlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiJ1VJLkNPUkVfT1JHX1RSRUUuQ0hFQ0tfSU5IRVJJVEFOQ0UnXCI+PC9jb3JlLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtIGxldC1jb250ZXh0PVwiY29udGV4dFwiIGxldC1pZD1cImNvbnRleHQuaWRcIiBsZXQtdGl0bGU9XCJjb250ZXh0LnRyZWUkVGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgbGV0LWhpZ2hsaWdodGVkPVwiY29udGV4dC50cmVlJEhpZ2hsaWdodGVkXCIgbGV0LWhhc0NoaWxkcmVuPVwiY29udGV4dC50cmVlJEhhc0NoaWxkcmVuXCJcclxuICAgICAgICAgICAgICAgIGxldC1oYXNBY3RpdmVDaGlsZHJlbj1cImNvbnRleHQudHJlZSRIYXNBY3RpdmVDaGlsZHJlblwiIGxldC1jaGlsZHJlbj1cImNvbnRleHQudHJlZSRDaGlsZHJlblwiXHJcbiAgICAgICAgICAgICAgICBsZXQtZXhwYW5kZWQ9XCJjb250ZXh0LnRyZWUkRXhwYW5kZWRcIiBsZXQtaXNBY3RpdmU9XCJjb250ZXh0LmlzQWN0aXZlXCIgbGV0LWFjdGl2ZT1cImNvbnRleHQudHJlZSRBY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgbGV0LWNoZWNrZWQ9XCJjb250ZXh0LnRyZWUkQ2hlY2tlZFwiIGxldC1wcm90ZWN0ZWQ9XCJjb250ZXh0LnByb3RlY3RlZFwiPlxyXG5cclxuICAgICAgICAgICAgICAgIEBpZiAoKCFzaG93RGlzc29sdmVkICYmICEhaXNBY3RpdmUpIHx8ICghIXNob3dEaXNzb2x2ZWQpKSB7XHJcbiAgICAgICAgICAgICAgICA8bGkgW2NsYXNzLmhhcy1jaGlsZHJlbl09XCIhIWhhc0NoaWxkcmVuXCIgW2NsYXNzLmNvbGxhcHNlZF09XCIhIWhhc0NoaWxkcmVuICYmICEhIWV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAoY2xpY2spPVwiYWNjZXNzb3JNb2RlICE9PSAnQ0hFQ0tFRCcgPyBvbk9iamVjdENsaWNrKGNvbnRleHQsICRldmVudCkgOiAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJvbk9iamVjdENsaWNrKGNvbnRleHQsICRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICgoISFzaG93RGlzc29sdmVkICYmICEhaGFzQ2hpbGRyZW4pIHx8ICghc2hvd0Rpc3NvbHZlZCAmJiAhIWhhc0FjdGl2ZUNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImV4cGFuZC10b2dnbGVyIGN1c3RvbS1pY29uLXBhcmVudC1kb3duXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkV4cGFuZFRvZ2dsZXJDbGljayhjb250ZXh0LCAkZXZlbnQpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWNjZXNzb3JNb2RlID09PSAnQ0hFQ0tFRCcgJiYgIXByb3RlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y29yZS1jaGVja2JveCAob25DbGljayk9XCJvbkl0ZW1DaGVjayhjb250ZXh0LCAkZXZlbnQpXCIgW2lucHV0VmFsdWVdPVwiY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkS2V5PT09aWQudG9TdHJpbmcoKVwiIFtjbGFzcy5oaWdobGlnaHRlZF09XCJoaWdobGlnaHRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzc29sdmVkXT1cIiFpc0FjdGl2ZVwiIFtjbGFzcy5wcm90ZWN0ZWRdPVwicHJvdGVjdGVkXCIgW2FwcFRvb2x0aXBdPVwidGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRpdGxlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICBAaWYgKCEhY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIFtjbGFzcy5jb2xsYXBzZWRdPVwiICEhIWV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIGNoaWxkcmVuOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghIWV4cGFuZGVkIHx8ICEhZnVsbFJlbmRlcmluZykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW07IGNvbnRleHQ6IHsgY29udGV4dDogY2hpbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
462
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1vcmctdHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9DLEtBQUssRUFBYyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBOEMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZMLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFnQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsR0FBRyxNQUFNLE1BQU0sQ0FBQztBQVF0SCxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFN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V0FBVzt3QkFDWCwyQkFBMkI7d0JBQzNCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4QixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakIsYUFHVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLHNCQUFzQjt5QkFDbEM7cUJBQ0Y7NFFBR1EsU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFFaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNPLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNNLGtCQUFrQjtzQkFBbEQsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBJbnB1dCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc3dpdGNoTWFwLCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgUmVjdXJzaXZlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlY3Vyc2l2ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZU9yZ1RyZWVTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS1vcmctdHJlZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBJT3JnVHJlZUl0ZW0sIElPcmdUcmVlTGluZXJJdGVtIH0gZnJvbSAnLi9JT3JnVHJlZUl0ZW0nO1xyXG5cclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtZm9ybS1jb250cm9sLWJhc2UvY29yZS1mb3JtLWNvbnRyb2wtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJQ29yZU9yZ1RyZWVJbnN0YW5jZSwgT3JnYW5pemF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZ2FuaXphdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IGxpbmVyX3RvX25lc3RlZF9hcnJheV9zY3JpcHQgfSBmcm9tICcuLi8uLi8uLi8uLi9hc3NldHMvanMvcmVzY3VzaXZlX3drJ1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLXBpcGVzL3RyYW5zbGF0ZS5waXBlJztcclxuaW1wb3J0IHsgQ29yZUxvYWRpbmdTdXJmYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1sb2FkaW5nLXN1cmZhY2UvY29yZS1sb2FkaW5nLXN1cmZhY2UvY29yZS1sb2FkaW5nLXN1cmZhY2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZVJlZHVjZXJJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1yZWR1Y2VyLWljb24vY29yZS1yZWR1Y2VyLWljb24vY29yZS1yZWR1Y2VyLWljb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5cclxuZXhwb3J0IGVudW0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZSB7XHJcbiAgQUNUSVZBVEVEX1NJTkdMRSA9ICdBQ1RJVkFURURfU0lOR0xFJyxcclxuICBBQ1RJVkFURURfSU5IRVJJVEFOQ0UgPSAnQUNUSVZBVEVEX0lOSEVSSVRBTkNFJyxcclxuICBDSEVDS0VEID0gJ0NIRUNLRUQnLFxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtb3JnLXRyZWUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQsXHJcbiAgICBDb3JlQ2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBDb3JlUmVkdWNlckljb25Db21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgVG9vbHRpcERpcmVjdGl2ZSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLW9yZy10cmVlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLW9yZy10cmVlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IENvcmVPcmdUcmVlQ29tcG9uZW50LFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZU9yZ1RyZWVDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBJbnB1dCgpIGxpbmVDb2xvcjogc3RyaW5nID0gJ3RyYW5zcGFyZW50JztcclxuICBASW5wdXQoKSBmdWxsV2lkdGhNb2RlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBhY2Nlc3Nvck1vZGUhOiBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlO1xyXG4gIEBJbnB1dCgpIGZ1bGxSZW5kZXJpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGhlaWdodCE6IG51bWJlcjsgLy8gQ2hp4buBdSBjYW8gY+G7p2EgQ29yZU9yZ1RyZWUgY+G6p24gxJHGsOG7o2MgdHJ1eeG7gW4gdsOgbyFcclxuICBASW5wdXQoKSBkaXNhYmxlZExvb3BFeHBhbmQhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNob3dDaGVja0luaGVyaXRhbmNlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBleGNsdWRlZElkcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcltdPihbXSk7IC8vIDIwMjQtMDUtMTA6IHRvIGJlIGltcGxlbWVudGVkXHJcblxyXG4gIEBPdXRwdXQoKSBpdGVtRG91YmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdkaXNwbGF5Q29udGVudCcpIGRpc3BsYXlDb250ZW50ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdyZWR1Y2VkSWNvbldyYXBwZXInKSByZWR1Y2VkSWNvbldyYXBwZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICBvdmVycmlkZSB2YWx1ZSE6IG51bWJlcltdO1xyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogbnVtYmVyW10pOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSBvYmo7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmFjY2Vzc29yTW9kZSkge1xyXG4gICAgICBjYXNlIEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRDpcclxuICAgICAgICBpZiAoISFvYmopIHtcclxuICAgICAgICAgIGNvbnN0IGNoZWNrZWRLZXlzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5jaGVja2VkSWRzID0gb2JqOyAvLyA8PT09IDI0LzEwLzIwMjNcclxuICAgICAgICAgIG9iai5tYXAoeCA9PiBjaGVja2VkS2V5cy5wdXNoKHgudG9TdHJpbmcoKSkpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVjdXJzaXZlU2VydmljZS53cml0ZVZhbHVlQ2hlY2tlZChjaGVja2VkS2V5cywgdGhpcy5kYXRhLCB0aGlzLmRpc2FibGVkTG9vcEV4cGFuZCkuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5kYXRhICYmICEhdGhpcy5kYXRhPy5sZW5ndGgpIHRoaXMuZGF0YVswXS50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkFDVElWQVRFRF9TSU5HTEU6XHJcbiAgICAgIGNhc2UgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5BQ1RJVkFURURfSU5IRVJJVEFOQ0U6XHJcbiAgICAgICAgaWYgKCEhb2JqKSB7XHJcbiAgICAgICAgICBjb25zdCBhY3RpdmF0ZWRLZXlzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgb2JqLm1hcCh4ID0+IGFjdGl2YXRlZEtleXMucHVzaCh4LnRvU3RyaW5nKCkpKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnJlY3Vyc2l2ZVNlcnZpY2Uud3JpdGVWYWx1ZUFjdGl2YXRlZChhY3RpdmF0ZWRLZXlzLCB0aGlzLmRhdGEsIHRoaXMuZGlzYWJsZWRMb29wRXhwYW5kKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGEgJiYgISF0aGlzLmRhdGE/Lmxlbmd0aCkgdGhpcy5kYXRhWzBdLnRyZWUkRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5hY2Nlc3Nvck1vZGUgPT09IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRCkge1xyXG5cclxuICAgIH0gZWxzZSAvKiBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkFDVElWQVRFRF9TSU5HTEUgb3IgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5BQ1RJVkFURURfSU5IRVJJVEFOQ0UgKi8ge1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIGFjdGl2ZUlkczogbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgY2hlY2tlZElkczogbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgLy8gZm9yIGRlYnVnZ2luZ1xyXG4gIC8vIGFjdGl2ZUlkc1N0cmluZyE6IHN0cmluZzsgIFxyXG4gIGRhdGEhOiBJT3JnVHJlZUl0ZW1bXTtcclxuICBsb2FkaW5nITogYm9vbGVhbjtcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIGxpbm5lck9yZ0FycmF5ITogSU9yZ1RyZWVMaW5lckl0ZW1bXTtcclxuICBzZWFyY2ghOiBzdHJpbmc7XHJcbiAgc2VhcmNoJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICByZWR1Y2VkITogYm9vbGVhbjtcclxuICBzZWFyY2hQbGFjZWhvbGRlciA9IEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NTU9OX1BMQUNFX0hPTERFUl9TRUFSQ0hfT1JHO1xyXG5cclxuICBpbml0aWFsaXppbmchOiBib29sZWFuO1xyXG4gIGNoZWNrSW5oZXJpdGFuY2U6IGJvb2xlYW4gPSB0cnVlOyAvLyBkZWZhdWx0IHZhbHVlIGlzIHRydWVcclxuICBzaG93RGlzc29sdmVkOiBib29sZWFuID0gZmFsc2U7IC8vIGRlZmF1bHQgdmFsdWUgaXMgZmFsc2VcclxuICBzZWxlY3RlZEtleSE6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBzZWxlY3RlZEl0ZW0hOiBJT3JnVHJlZUxpbmVySXRlbTtcclxuICBsYW5nITogc3RyaW5nO1xyXG4gIC8vcmVkdWNlZCQhOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XHJcblxyXG4gIGluc3RhbmNlTnVtYmVyITogbnVtYmVyO1xyXG4gIHNjcm9sbENvbnRhaW5lckhlaWdodCE6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvL3B1YmxpYyBvdmVycmlkZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVjdXJzaXZlU2VydmljZTogUmVjdXJzaXZlU2VydmljZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlT3JnVHJlZVNlcnZpY2U6IENvcmVPcmdUcmVlU2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgY29yZU9yZ1RyZWVTdGF0ZTogQ29yZU9yZ1RyZWVTdGF0ZSxcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgb3JnYW5pemF0aW9uU2VydmljZTogT3JnYW5pemF0aW9uU2VydmljZSxcclxuICApIHtcclxuICAgIHN1cGVyKC8qaW5qZWN0b3IqLyk7XHJcbiAgICB0aGlzLmluaXRpYWxpemluZyA9IHRydWU7XHJcblxyXG4gICAgLy8gdGhpcy5yZWR1Y2VkJCA9IHRoaXMuY29yZU9yZ1RyZWVTdGF0ZS5jb3JlT3JnVHJlZVJlZHVjZWQkO1xyXG5cclxuICAgIHRoaXMuaW5pdGlhbGl6aW5nID0gZmFsc2U7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2hlaWdodCddKSB7XHJcbiAgICAgIHRoaXMucmVzaXplSGVpZ2h0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICAvL3RoaXMubGF5b3V0U2VydmljZS5sZWZ0YmFyT3BlbiQubmV4dChmYWxzZSk7XHJcblxyXG4gICAgdGhpcy5pbnN0YW5jZU51bWJlciA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgY29uc3QgbmV3SW5zdGFuY2U6IElDb3JlT3JnVHJlZUluc3RhbmNlID0ge1xyXG4gICAgICBpbnN0YW5jZU51bWJlcjogdGhpcy5pbnN0YW5jZU51bWJlcixcclxuICAgICAgc2VsZWN0ZWRLZXkkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKSxcclxuICAgICAgYWN0aXZlS2V5cyQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKSxcclxuICAgICAgY2hlY2tlZEtleXMkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSksXHJcbiAgICAgIGV4cGFuZGVkS2V5cyQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKSxcclxuICAgICAgY2hlY2tJbmhlcml0YW5jZSQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSlcclxuICAgIH1cclxuICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5pbnN0YW5jZXMucHVzaChuZXdJbnN0YW5jZSlcclxuXHJcbiAgICAvLyBDaGVjayB4ZW0gY2hp4buBdSBjYW8gaGVpZ2h0IGPDsyDEkcaw4bujYyB0cnV54buBbiB2w6BvIGhheSBraMO0bmdcclxuICAgIGlmICh0aGlzLmhlaWdodCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLndhcm4oXCJDb3JlT3JnVHJlZSBraMO0bmcgbmjhuq1uIMSRxrDhu6NjIGNoaeG7gXUgY2FvIChoZWlnaHQpIHRydXnhu4FuIHbDoG8gdOG7qyBs4bubcCBuZ2/DoGkuIENoaeG7gXUgY2FvIG3hurdjIMSR4buLbmggc+G6vSDEkcaw4bujYyB0w61uaCB0b8OhbiBk4buxYSB2w6BvIGLhu5EgY+G7pWMgY2jDrW5oLlwiLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5jb250ZW50Q29udGFpbmVySGVpZ2h0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAvLyBiYXNpY1NwYWNpbmcgbMOgIHBhZGRpbmdCb3R0b20gY+G7p2EgbOG7m3AgY29udGVudC1jb250YWluZXJcclxuICAgICAgICAgIHRoaXMuaGVpZ2h0ID0geCAtIHRoaXMubGF5b3V0U2VydmljZS5jb3JlUGFnZUhlYWRlckhlaWdodCAtIHRoaXMubGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmc7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2UubGluZXJEYXRhJC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLmxpbm5lck9yZ0FycmF5ID0geDtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLnN1YnNjcmliZSgoeCkgPT4ge1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZyhcInRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkIGNoYW5nZXNcIiwgeClcclxuXHJcbiAgICAgICAgY29uc3QgbmV3QWN0aXZlSWRzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgICAgIHguYWN0aXZlS2V5cy5tYXAoKGspID0+IHtcclxuICAgICAgICAgIG5ld0FjdGl2ZUlkcy5wdXNoKE51bWJlcihrKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVJZHMgPSBuZXdBY3RpdmVJZHM7XHJcbiAgICAgICAgaWYgKHRoaXMuYWNjZXNzb3JNb2RlICE9PSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkNIRUNLRUQpIHtcclxuICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmFjdGl2ZUlkcztcclxuICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5hY3RpdmVJZHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNlbGVjdGVkS2V5ID0geC5zZWxlY3RlZEtleTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuc2VhcmNoJFxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKCh4KSA9PiB4ICE9PSBudWxsKSxcclxuICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApLFxyXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgIHN3aXRjaE1hcCgodGV4dCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnc3dpdGNoTWFwIHdvcmtzJyk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlY3Vyc2l2ZVNlcnZpY2UuZmluZEl0ZW0odGV4dCwgdGhpcy5kYXRhKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkXHJcbiAgICAgICAgLnBpcGUoZmlsdGVyKCh2YWx1ZSkgPT4gISEhdGhpcy5pbml0aWFsaXppbmcgJiYgISF2YWx1ZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCEhbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjb3JlT3JnVHJlZVN0YXR1cycsIEpTT04uc3RyaW5naWZ5KHgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSgoeCkgPT4gKHRoaXMubGFuZyA9IHgpKSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNpemVIZWlnaHQoKTogdm9pZCB7XHJcblxyXG4gICAgLy8gaGVpZ2h0IGlzIG5vdCBnaXZlbiBhbmQgdGhlIHRyZWUgcmVzaXplIGFzIHN0YW5kYXJkXHJcbiAgICBpZiAoISEhdGhpcy5oZWlnaHQpIHtcclxuICAgICAgY29uc3Qgc2l6ZUhlYWRlckhlaWdodCA9IE51bWJlcihcclxuICAgICAgICBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcclxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXNpemUtaGVhZGVyLWhlaWdodCcpXHJcbiAgICAgICAgICAucmVwbGFjZSgncHgnLCAnJylcclxuICAgICAgKTtcclxuICAgICAgY29uc3Qgc2l6ZUNvcmVQYWdlSGVhZGVySGVpZ2h0ID0gTnVtYmVyKFxyXG4gICAgICAgIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxyXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc2l6ZS1jb3JlLXBhZ2UtaGVhZGVyLWhlaWdodCcpXHJcbiAgICAgICAgICAucmVwbGFjZSgncHgnLCAnJylcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGNvbnN0IGNvbnRhaW5lckhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHNpemVIZWFkZXJIZWlnaHQgLSBzaXplQ29yZVBhZ2VIZWFkZXJIZWlnaHQ7XHJcblxyXG4gICAgICBjb25zdCBwYWdlSGVhZGVySGVpZ2h0ID0gTnVtYmVyKFxyXG4gICAgICAgIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxyXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc2l6ZS1jb3JlLXBhZ2UtaGVhZGVyLWhlaWdodCcpXHJcbiAgICAgICAgICAucmVwbGFjZSgncHgnLCAnJylcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGNvbnN0IHBhZ2luYXRpb25IZWlnaHQgPSBOdW1iZXIoXHJcbiAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXHJcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zaXplLWNvcmUtcGFnaW5hdGlvbi1oZWlnaHQnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ3B4JywgJycpXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IHNpemVNYXJnaW5Db3JlUGFnaW5hdGlvbkZ1bGwgPSBOdW1iZXIoXHJcbiAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXHJcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zaXplLW1hcmdpbi1jb3JlLXBhZ2luYXRpb24nKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ3B4JywgJycpXHJcbiAgICAgICk7XHJcblxyXG5cclxuICAgICAgY29uc3QgaGVpZ2h0ID0gY29udGFpbmVySGVpZ2h0IC0gcGFnZUhlYWRlckhlaWdodCAtIHBhZ2luYXRpb25IZWlnaHQgKyBzaXplTWFyZ2luQ29yZVBhZ2luYXRpb25GdWxsO1xyXG4gICAgICBjb25zb2xlLmxvZyhoZWlnaHQpO1xyXG5cclxuICAgICAgdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXHJcbiAgICAgICAgJy0taGVpZ2h0JywgaGVpZ2h0ICsgJ3B4J1xyXG4gICAgICApO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxyXG4gICAgICAgICctLWhlaWdodCcsIHRoaXMuaGVpZ2h0ICsgJ3B4J1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5vcmdUcmVlRGF0YSQuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRhdGEgPSB4O1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJuZXcgRGF0YSBjb21pbmdcIiwgdGhpcy5kYXRhLCBuZXcgRGF0ZSgpLmdldFRpbWUoKSlcclxuICAgICAgICAgIGlmICghIXRoaXMuZGF0YSkge1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGEubGVuZ3RoKSB0aGlzLmRhdGFbMF0udHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvbkl0ZW1DbGlja0xvY2FsKGU6IElPcmdUcmVlSXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5saW5uZXJPcmdBcnJheS5tYXAoKHgpID0+ICh4LmFjdGl2ZSA9IGZhbHNlKSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYnVpbGRUcmVlRGF0YSgpKTtcclxuICB9XHJcblxyXG4gIG9uVG9nZ2xlSXRlbShlOiBJT3JnVHJlZUl0ZW0pIHtcclxuICAgIGNvbnN0IGNsb25lQ29weTogSU9yZ1RyZWVMaW5lckl0ZW1bXSA9IEpTT04ucGFyc2UoXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMubGlubmVyT3JnQXJyYXkpXHJcbiAgICApO1xyXG4gICAgY29uc3QgZmlsdGVyID0gY2xvbmVDb3B5LmZpbHRlcigoeCkgPT4geC5pZCA9PT0gZS5pZCk7XHJcblxyXG4gICAgaWYgKGZpbHRlci5sZW5ndGggPT09IDEpIHtcclxuICAgICAgZmlsdGVyWzBdLmV4cGFuZCA9ICEhIWUuZXhwYW5kO1xyXG4gICAgfVxyXG4gICAgdGhpcy5saW5uZXJPcmdBcnJheSA9IGNsb25lQ29weTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5idWlsZFRyZWVEYXRhKCkpO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRUcmVlRGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgY2xvbmVDb3B5ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmxpbm5lck9yZ0FycmF5KSk7XHJcblxyXG4gICAgaWYgKHR5cGVvZiBXb3JrZXIgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIC8vIENyZWF0ZSBhIG5ld1xyXG5cclxuICAgICAgY29uc29sZS5sb2coXCLwn5+i8J+foiBXb3JrZXIgd29ya3NcIik7XHJcblxyXG4gICAgICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKGxpbmVyX3RvX25lc3RlZF9hcnJheV9zY3JpcHQpO1xyXG4gICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsICh7IGRhdGEgfSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGEubGlzdDtcclxuICAgICAgICBpZiAoISF0aGlzLmRhdGEgJiYgISF0aGlzLmRhdGE/Lmxlbmd0aCkgdGhpcy5kYXRhWzBdLnRyZWUkRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgbGlzdDogY2xvbmVDb3B5LFxyXG4gICAgICAgIGtleUZpZWxkOiAnaWQnLFxyXG4gICAgICAgIHRpdGxlRmllbGQ6ICduYW1lJyxcclxuICAgICAgICBwYXJlbnRGaWVsZDogJ3BhcmVudElkJyxcclxuICAgICAgICBhY3RpdmVGaWVsZDogJ2FjdGl2ZScsXHJcbiAgICAgICAgLy9pbmhlcml0YW50QWN0aXZlRmllbGQ6ICdpbmhlcml0YW50QWN0aXZlJyxcclxuICAgICAgICBjaGVja2VkRmllbGQ6ICdjaGVja2VkJyxcclxuICAgICAgICBleHBhbmRlZEZpZWxkOiAnZXhwYW5kJyxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBXZWIgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGVudmlyb25tZW50LlxyXG4gICAgICAvLyBZb3Ugc2hvdWxkIGFkZCBhIGZhbGxiYWNrIHNvIHRoYXQgeW91ciBwcm9ncmFtIHN0aWxsIGV4ZWN1dGVzIGNvcnJlY3RseS5cclxuICAgICAgY29uc3Qgc3RhdHVzID0gdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWU7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMucmVjdXJzaXZlU2VydmljZVxyXG4gICAgICAgICAgLmxpbmVyQXJyYXlUb05lc3RlZEFycmF5KFxyXG4gICAgICAgICAgICBjbG9uZUNvcHksXHJcbiAgICAgICAgICAgICdpZCcsXHJcbiAgICAgICAgICAgICduYW1lJyxcclxuICAgICAgICAgICAgJ3BhcmVudElkJyxcclxuICAgICAgICAgICAgJ2FjdGl2ZScsXHJcbiAgICAgICAgICAgICdjaGVja2VkJyxcclxuICAgICAgICAgICAgJ2V4cGFuZCcsXHJcbiAgICAgICAgICAgIC8vc3RhdHVzXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChvYmopID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhID0gb2JqLmxpc3Q7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuZGF0YSAmJiAhIXRoaXMuZGF0YT8ubGVuZ3RoKSB0aGlzLmRhdGFbMF0udHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRXhwYW5kVG9nZ2xlckNsaWNrKGU6IElPcmdUcmVlSXRlbSwgZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gIWUudHJlZSRFeHBhbmRlZDtcclxuICAgIGUudHJlZSRFeHBhbmRlZCA9IG5ld1ZhbHVlO1xyXG5cclxuICAgIC8vIHVwZGF0aW5nIHN0YXR1cyB3aXRoIG5ld1ZhbHVlXHJcbiAgICBjb25zdCBjdXJyZW50RXhwYW5kZWRJZHMgPVxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZT8uZXhwYW5kZWRLZXlzO1xyXG4gICAgbGV0IG5ld0V4cGFuZGVkSWRzID0gY3VycmVudEV4cGFuZGVkSWRzPy5maWx0ZXIoXHJcbiAgICAgIChfKSA9PiAhISFjdXJyZW50RXhwYW5kZWRJZHMuaW5jbHVkZXMoZS5pZC50b1N0cmluZygpKVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAobmV3VmFsdWUpIHtcclxuICAgICAgbmV3RXhwYW5kZWRJZHM/LnB1c2goZS5pZC50b1N0cmluZygpKTtcclxuICAgIH1cclxuXHJcbiAgICBuZXdFeHBhbmRlZElkcz8uc29ydCgpO1xyXG5cclxuICAgIGNvbnN0IG5ld0V4cGFuZGVkS2V5czogc3RyaW5nW10gPSBbXTtcclxuICAgIG5ld0V4cGFuZGVkSWRzLm1hcCgoeCkgPT4gbmV3RXhwYW5kZWRLZXlzLnB1c2goeC50b1N0cmluZygpKSk7XHJcblxyXG4gICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQubmV4dCh7XHJcbiAgICAgIC4uLnRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLnZhbHVlISxcclxuICAgICAgZXhwYW5kZWRLZXlzOiBuZXdFeHBhbmRlZEtleXMsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uSXRlbUNoZWNrKGU6IElPcmdUcmVlSXRlbSwgbmV3VmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXRlbUNsaWNrPy5lbWl0KGUpO1xyXG4gICAgaWYgKHRoaXMuYWNjZXNzb3JNb2RlICE9PSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkNIRUNLRUQpIHJldHVybjtcclxuXHJcbiAgICAvLyBXZSBoYXZlIHRoaXMgdmFyIHRvIGhvbGQgbm9kZXMgdGhhdCBhcmUgYmVpbmcgY2hhbmdlZFxyXG4gICAgbGV0IHRvZ2dsZWRJZHM6IG51bWJlcltdO1xyXG4gICAgLy8gV2Ugc2hvdWxkIGNhbGN1bGF0ZSBhIG5ldyBzdGF0ZSBpbnRvIHRoaXMgdmFyOiBcclxuICAgIGNvbnN0IG5ld0NoZWNrZWRJZHM6IG51bWJlcltdID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNoZWNrZWRJZHMpKTtcclxuXHJcbiAgICAvLyBXZSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciB0b2dnbGVkSWRzIGNoYW5nZWRcclxuICAgIGNvbnN0IGNoYW5nZVZhbHVlID0gKCkgPT4ge1xyXG5cclxuICAgICAgLy8gSWYgbmV3VmFsdWUgPT09IHRydWUsIHdlIHdpbGwgZGlzY3RpbnRseSBwdXNoIGNoYW5nZWQgaWRzIHRvIHRoZSBzdGF0ZVxyXG4gICAgICAvLyBPdGhlcndpc2Ugd2Ugd2lsbCByZW1vdmUgdGhlbSBmcm9tIHRoZSBzdGF0ZVxyXG4gICAgICBpZiAoISFuZXdWYWx1ZSkge1xyXG4gICAgICAgIHRvZ2dsZWRJZHMubWFwKHggPT4ge1xyXG4gICAgICAgICAgaWYgKCEhIW5ld0NoZWNrZWRJZHMuaW5jbHVkZXMoeCkpIHtcclxuICAgICAgICAgICAgbmV3Q2hlY2tlZElkcy5wdXNoKHgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLy8gVGhlbiBhc2lnbiB0aGUgc3RhdGUgdG8gdGhlIG5ld0NoZWNrZWRJZHNcclxuICAgICAgICB0aGlzLmNoZWNrZWRJZHMgPSBuZXdDaGVja2VkSWRzO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXIgPSBuZXdDaGVja2VkSWRzLmZpbHRlcih4ID0+ICEhIXRvZ2dsZWRJZHMuaW5jbHVkZXMoeCkpXHJcbiAgICAgICAgLy8gVGhlbiBhc2lnbiB0aGUgc3RhdGUgdG8gdGhlIGZpbHRlclxyXG4gICAgICAgIHRoaXMuY2hlY2tlZElkcyA9IGZpbHRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQWZ0ZXIgdGhlIGNhc2VzIG9mIGlmL2Vsc2UsIG1ha2UgdGhlIGNvbnRyb2wgY2hhbmdlIHdpdGggb25DaGFuZ2VcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY2hlY2tlZElkcztcclxuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmNoZWNrZWRJZHMpO1xyXG4gICAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiBzdGFydDogVEhJUyBDT0RFIFNDT1BFIGNhbGN1bGF0ZXMgdG9nZ2xlZElkcyAqL1xyXG4gICAgaWYgKHRoaXMuY2hlY2tJbmhlcml0YW5jZSkge1xyXG4gICAgICAvLyBJZiB0cnVlLCBhbGwgdGhlIG5lc3RlZCBpdGVtcyB3aWxsIGJlIGNoZWNrZWQvdW5jaGVja2VkXHJcbiAgICAgIHRoaXMucmVjdXJzaXZlU2VydmljZVxyXG4gICAgICAgIC5uZXN0ZWRUb2dnbGVDaGVjayhlLCBuZXdWYWx1ZSlcclxuICAgICAgICAudGhlbigoeCkgPT4ge1xyXG5cclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiLm5lc3RlZFRvZ2dsZUNoZWNrIHhcIiwgeClcclxuICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLm5leHQoe1xyXG4gICAgICAgICAgICAuLi50aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZSxcclxuICAgICAgICAgICAgY2hlY2tlZEtleXM6IHgubWFwKGl0ZW0gPT4gaXRlbS50b1N0cmluZygpKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC8vIFRoZSBpZHMgaGF2ZSBiZWVuIGNoYW5nZWRcclxuICAgICAgICAgIHRvZ2dsZWRJZHMgPSB4O1xyXG5cclxuICAgICAgICAgIC8vIE5vdyB0b2dnbGVkSWRzIHdlcmUgc2V0LiBXZSBjYWxsIHRoZSBmdW5jdGlvbiB3ZSBkZWNsYXJlZFxyXG4gICAgICAgICAgY2hhbmdlVmFsdWUoKTtcclxuXHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKHg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcih4KTtcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIE90aGVyd2lzZSB3ZSBzaW1wbHkgdG9nZ2xlIGNoZWNrIGZvciBjdXJyZW50IGl0ZW0gb25seVxyXG4gICAgICB0b2dnbGVkSWRzID0gW2UuaWRdO1xyXG5cclxuICAgICAgLy8gTm93IHRvZ2dsZWRJZHMgd2VyZSBzZXQuIFdlIGNhbGwgdGhlIGZ1bmN0aW9uIHdlIGRlY2xhcmVkXHJcbiAgICAgIGNoYW5nZVZhbHVlKCk7XHJcblxyXG4gICAgfVxyXG4gICAgLyogZW5kOiBUSElTIENPREUgU0NPUEUgY2FsY3VsYXRlcyB0b2dnbGVkSWRzICovXHJcblxyXG4gICAgLy8gVGhhdCBpcy4gSGFwcHkgZGVidWdnaW5nIVxyXG5cclxuICB9XHJcblxyXG4gIG9uQ2hlY2tJbmNsdWRlRGlzc29sdmVkQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcIm9uQ2hlY2tJbmNsdWRlRGlzc29sdmVkQ2hhbmdlXCIsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uQ2hlY2tJbmhlcml0YW5jZUNoYW5nZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQubmV4dCh7XHJcbiAgICAgIC4uLnRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLnZhbHVlISxcclxuICAgICAgY2hlY2tJbmhlcml0YW5jZTogdmFsdWUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uT2JqZWN0Q2xpY2soZTogSU9yZ1RyZWVJdGVtLCBldmVudDogYW55KTogdm9pZCB7XHJcblxyXG4gICAgLy8gcmVtb3ZlIGhpZ2hsaWdodCBjbGFzc1xyXG4gICAgLy8gVE8gRE9cclxuXHJcbiAgICBpZiAoISFlLnByb3RlY3RlZCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuaXRlbUNsaWNrPy5lbWl0KGUpO1xyXG5cclxuICAgIGlmICh0aGlzLmFjY2Vzc29yTW9kZSA9PT0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5DSEVDS0VEKSByZXR1cm47XHJcbiAgICBsZXQgYWN0aXZlSWRzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgdGhpcy5kYXRhLm1hcCgoaXRlbSkgPT4gKGl0ZW0uYWN0aXZlID0gZmFsc2UpKTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5hY2Nlc3Nvck1vZGUgPT09XHJcbiAgICAgIEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQUNUSVZBVEVEX0lOSEVSSVRBTkNFIHx8XHJcbiAgICAgICEhIXRoaXMuYWNjZXNzb3JNb2RlXHJcbiAgICApIHtcclxuICAgICAgLy8gSWYgdHJ1ZSwgYWxsIHRoZSBuZXN0ZWQgaXRlbXMgd2lsbCBiZSBhY3RpdmUsIHRoZSBvdGhlcnMgYXJlIGluYWN0aXZlXHJcbiAgICAgIHRoaXMucmVjdXJzaXZlU2VydmljZVxyXG4gICAgICAgIC5uZXN0ZWRSZXNldEFjdGl2ZShlLCB0cnVlKVxyXG4gICAgICAgIC50aGVuKCh4KSA9PiB7XHJcbiAgICAgICAgICBhY3RpdmVJZHMgPSB4O1xyXG4gICAgICAgICAgYWN0aXZlSWRzLnNvcnQoKTtcclxuICAgICAgICAgIGNvbnN0IG5ld0FjdGl2ZUtleXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICBhY3RpdmVJZHMubWFwKCh4KSA9PiBuZXdBY3RpdmVLZXlzLnB1c2goeC50b1N0cmluZygpKSk7XHJcbiAgICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC5uZXh0KHtcclxuICAgICAgICAgICAgLi4udGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWUhLFxyXG4gICAgICAgICAgICBhY3RpdmVLZXlzOiBuZXdBY3RpdmVLZXlzLFxyXG4gICAgICAgICAgICBzZWxlY3RlZEtleTogZS5pZC50b1N0cmluZygpXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlSWRzID0gYWN0aXZlSWRzO1xyXG4gICAgICAgICAgY29uc29sZS5sb2codGhpcy5hY3RpdmVJZHMpO1xyXG4gICAgICAgICAgdGhpcy5vbkNoYW5nZShhY3RpdmVJZHMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKCh4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoeCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG5cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAvLyBBQ1RJVkFURURfU0lOR0xFXHJcbiAgICAgIC8vIE90aGVyd2lzZSB3ZSBzaW1wbHkgc2V0IGN1cnJlbnQgaXRlbSB0byBiZSBhY3RpdmUgb25seVxyXG4gICAgICBhY3RpdmVJZHMgPSBbZS5pZF07XHJcbiAgICAgIHRoaXMuYWN0aXZlSWRzID0gYWN0aXZlSWRzO1xyXG5cclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQubmV4dCh7XHJcbiAgICAgICAgLi4udGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWUhLFxyXG4gICAgICAgIGFjdGl2ZUtleXM6IFtlLmlkLnRvU3RyaW5nKCldLFxyXG4gICAgICAgIHNlbGVjdGVkS2V5OiBlLmlkLnRvU3RyaW5nKCksXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5vbkNoYW5nZShhY3RpdmVJZHMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldmVudDtcclxuXHJcbiAgICBpZiAoZGV0YWlsID09PSAyKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdUaGlzIHdhcyBhIGRibGNsaWNrJyk7XHJcbiAgICAgIHRoaXMuaXRlbURvdWJsZUNsaWNrLmVtaXQoZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBlO1xyXG5cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoQ2hhbmdlKHRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2gkLm5leHQodGV4dCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhcIm5nQWZ0ZXJDb250ZW50SW5pdFwiKVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKCh4KSA9PiB4Py51bnN1YnNjcmliZSgpKTtcclxuXHJcbiAgICBpZiAoISF0aGlzLmluc3RhbmNlTnVtYmVyKSB7XHJcbiAgICAgIGNvbnN0IHRyeVRvRmluZCA9IHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKFxyXG4gICAgICAgICh4KSA9PiB4Lmluc3RhbmNlTnVtYmVyID09PSB0aGlzLmluc3RhbmNlTnVtYmVyXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAoISF0cnlUb0ZpbmQubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgbmV3SW5zdGFuY2VzID0gdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoXHJcbiAgICAgICAgICAoeCkgPT4geC5pbnN0YW5jZU51bWJlciAhPT0gdGhpcy5pbnN0YW5jZU51bWJlclxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLmluc3RhbmNlcyA9IG5ld0luc3RhbmNlcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJjb3JlLW9yZy10cmVlLWNvbnRhaW5lclwiIFtjbGFzcy5mdWxsLXdpZHRoXT1cIiEhZnVsbFdpZHRoTW9kZVwiICpuZ0lmPVwiISFkYXRhXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgIHBvc2l0aW9uIDogJ3JlbGF0aXZlJyxcclxuICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICAgIGhlaWdodDogaGVpZ2h0ICsgJ3B4J1xyXG4gICAgfVwiPlxyXG4gICAgPGRpdiAjZGlzcGxheUNvbnRlbnQgY2xhc3M9XCJjdXN0b20tb3JnLXRyZWVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29yZS1vcmctdHJlZS1oZWFkZXIgZC1mbGV4LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm01XCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwic2VhcmNoXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlOiBsYW5nXCIgW2NsYXNzLmZ1bGwtd2lkdGhdPVwiISFmdWxsV2lkdGhNb2RlXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPGRpdiAjc2Nyb2xsQ29udGFpbmVyIGNsYXNzPVwic2Nyb2xsLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0IC0gbGF5b3V0U2VydmljZS5jb3JlT3JnVHJlZVRvcEhlaWdodCAtIGxheW91dFNlcnZpY2UuY29yZU9yZ1RyZWVCb3R0b21IZWlnaHQgKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdzY3JvbGwnXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICA8Y29yZS1sb2FkaW5nLXN1cmZhY2UgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtoZWlnaHRdPVwic2Nyb2xsQ29udGFpbmVySGVpZ2h0XCI+PC9jb3JlLWxvYWRpbmctc3VyZmFjZT5cclxuICAgICAgICAgICAgICAgIEBmb3IgKHJvb3Qgb2YgZGF0YTsgdHJhY2sgcm9vdCkge1xyXG5cclxuICAgICAgICAgICAgICAgIEBkZWZlcihvbiB2aWV3cG9ydChzY3JvbGxDb250YWluZXIpKSB7XHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJyb290XCIgW2NsYXNzLmNvbGxhcHNlZF09XCIhISFyb290LnRyZWUkRXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbTsgY29udGV4dDogeyBjb250ZXh0OiByb290IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICB9IEBwbGFjZWhvbGRlcigpIHtcclxuICAgICAgICAgICAgICAgIFBsYWNlaG9sZGVyLi4uXHJcbiAgICAgICAgICAgICAgICB9IEBsb2FkaW5nKCkge1xyXG4gICAgICAgICAgICAgICAgTG9hZGluZy4uLlxyXG4gICAgICAgICAgICAgICAgfSBAZXJyb3IoKSB7XHJcbiAgICAgICAgICAgICAgICBFcnJvci4uLlxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxyXG4gICAgICAgICAgICAgICAgYm90dG9tOiAnMHB4JyxcclxuICAgICAgICAgICAgICAgIGxlZnQ6ICcwcHgnLFxyXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICcwcHgnLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBsYXlvdXRTZXJ2aWNlLmNvcmVQYWdpbmF0aW9uSGVpZ2h0ICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBsYXlvdXRTZXJ2aWNlLmJhc2ljU3BhY2luZyArICdweCcsXHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ6IGxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IGxheW91dFNlcnZpY2UuY29yZVBhZ2luYXRpb25IZWlnaHQgKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nXHJcbiAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogbGF5b3V0U2VydmljZS5jb3JlUGFnaW5hdGlvbkhlaWdodCArICdweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxyXG4gICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbidcclxuICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y29yZS1jaGVja2JveCBbKG5nTW9kZWwpXT1cInNob3dEaXNzb2x2ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGVja0luY2x1ZGVEaXNzb2x2ZWRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCInVUkuQ09SRV9PUkdfVFJFRS5TSE9XX09VVERBVEVEX1VOSVRTX0FCQlJFVklBVEVEJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCInVUkuQ09SRV9PUkdfVFJFRS5TSE9XX09VVERBVEVEX1VOSVRTJ1wiIHRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+PC9jb3JlLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVjay1pbmhlcml0YW5jZS13cmFwcGVyXCIgKm5nSWY9XCJhY2Nlc3Nvck1vZGUgPT09ICdDSEVDS0VEJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y29yZS1jaGVja2JveCAqbmdJZj1cInNob3dDaGVja0luaGVyaXRhbmNlXCIgWyhuZ01vZGVsKV09XCJjaGVja0luaGVyaXRhbmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tJbmhlcml0YW5jZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidVSS5DT1JFX09SR19UUkVFLkNIRUNLX0lOSEVSSVRBTkNFJ1wiPjwvY29yZS1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbSBsZXQtY29udGV4dD1cImNvbnRleHRcIiBsZXQtaWQ9XCJjb250ZXh0LmlkXCIgbGV0LXRpdGxlPVwiY29udGV4dC50cmVlJFRpdGxlXCJcclxuICAgICAgICAgICAgICAgIGxldC1oaWdobGlnaHRlZD1cImNvbnRleHQudHJlZSRIaWdobGlnaHRlZFwiIGxldC1oYXNDaGlsZHJlbj1cImNvbnRleHQudHJlZSRIYXNDaGlsZHJlblwiXHJcbiAgICAgICAgICAgICAgICBsZXQtaGFzQWN0aXZlQ2hpbGRyZW49XCJjb250ZXh0LnRyZWUkSGFzQWN0aXZlQ2hpbGRyZW5cIiBsZXQtY2hpbGRyZW49XCJjb250ZXh0LnRyZWUkQ2hpbGRyZW5cIlxyXG4gICAgICAgICAgICAgICAgbGV0LWV4cGFuZGVkPVwiY29udGV4dC50cmVlJEV4cGFuZGVkXCIgbGV0LWlzQWN0aXZlPVwiY29udGV4dC5pc0FjdGl2ZVwiIGxldC1hY3RpdmU9XCJjb250ZXh0LnRyZWUkQWN0aXZlXCJcclxuICAgICAgICAgICAgICAgIGxldC1jaGVja2VkPVwiY29udGV4dC50cmVlJENoZWNrZWRcIiBsZXQtcHJvdGVjdGVkPVwiY29udGV4dC5wcm90ZWN0ZWRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICBAaWYgKCghc2hvd0Rpc3NvbHZlZCAmJiAhIWlzQWN0aXZlKSB8fCAoISFzaG93RGlzc29sdmVkKSkge1xyXG4gICAgICAgICAgICAgICAgPGxpIFtjbGFzcy5oYXMtY2hpbGRyZW5dPVwiISFoYXNDaGlsZHJlblwiIFtjbGFzcy5jb2xsYXBzZWRdPVwiISFoYXNDaGlsZHJlbiAmJiAhISFleHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gKGNsaWNrKT1cImFjY2Vzc29yTW9kZSAhPT0gJ0NIRUNLRUQnID8gb25PYmplY3RDbGljayhjb250ZXh0LCAkZXZlbnQpIDogJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwib25PYmplY3RDbGljayhjb250ZXh0LCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoKCEhc2hvd0Rpc3NvbHZlZCAmJiAhIWhhc0NoaWxkcmVuKSB8fCAoIXNob3dEaXNzb2x2ZWQgJiYgISFoYXNBY3RpdmVDaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJleHBhbmQtdG9nZ2xlciBjdXN0b20taWNvbi1wYXJlbnQtZG93blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FeHBhbmRUb2dnbGVyQ2xpY2soY29udGV4dCwgJGV2ZW50KVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjY2Vzc29yTW9kZSA9PT0gJ0NIRUNLRUQnICYmICFwcm90ZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNvcmUtY2hlY2tib3ggKG9uQ2xpY2spPVwib25JdGVtQ2hlY2soY29udGV4dCwgJGV2ZW50KVwiIFtpbnB1dFZhbHVlXT1cImNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+PC9jb3JlLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgW2NsYXNzLmFjdGl2ZV09XCJzZWxlY3RlZEtleT09PWlkLnRvU3RyaW5nKClcIiBbY2xhc3MuaGlnaGxpZ2h0ZWRdPVwiaGlnaGxpZ2h0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc3NvbHZlZF09XCIhaXNBY3RpdmVcIiBbY2xhc3MucHJvdGVjdGVkXT1cInByb3RlY3RlZFwiIFthcHBUb29sdGlwXT1cInRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0aXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmICghIWNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBbY2xhc3MuY29sbGFwc2VkXT1cIiAhISFleHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChjaGlsZCBvZiBjaGlsZHJlbjsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoISFleHBhbmRlZCB8fCAhIWZ1bGxSZW5kZXJpbmcpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtOyBjb250ZXh0OiB7IGNvbnRleHQ6IGNoaWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|