@tsi-developpement/tsi-shared-ui 1.7.2 → 1.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/enums/action-placement.mjs +2 -2
- package/esm2022/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.mjs +7 -4
- package/esm2022/lib/tsi-components/tsi-generic-crud/tsi-generic-crud.component.mjs +9 -9
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +15 -12
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -1
- package/lib/enums/action-placement.d.ts +1 -1
- package/package.json +1 -1
|
@@ -251,7 +251,7 @@ export class TsiGenericCrudComponent {
|
|
|
251
251
|
order: 3,
|
|
252
252
|
toolTipText: 'shared_actions_info',
|
|
253
253
|
isIconButton: true,
|
|
254
|
-
actionDisplay: ActionPlacement.
|
|
254
|
+
actionDisplay: ActionPlacement.Overflow,
|
|
255
255
|
},
|
|
256
256
|
...this.selectedColumns,
|
|
257
257
|
];
|
|
@@ -268,7 +268,7 @@ export class TsiGenericCrudComponent {
|
|
|
268
268
|
order: 2,
|
|
269
269
|
toolTipText: 'Télécharger',
|
|
270
270
|
isIconButton: true,
|
|
271
|
-
actionDisplay: ActionPlacement.
|
|
271
|
+
actionDisplay: ActionPlacement.Overflow,
|
|
272
272
|
},
|
|
273
273
|
...this.selectedColumns,
|
|
274
274
|
];
|
|
@@ -285,7 +285,7 @@ export class TsiGenericCrudComponent {
|
|
|
285
285
|
order: 4,
|
|
286
286
|
toolTipText: 'shared_actions_attachment',
|
|
287
287
|
isIconButton: true,
|
|
288
|
-
actionDisplay: ActionPlacement.
|
|
288
|
+
actionDisplay: ActionPlacement.Overflow,
|
|
289
289
|
},
|
|
290
290
|
...this.selectedColumns,
|
|
291
291
|
];
|
|
@@ -303,7 +303,7 @@ export class TsiGenericCrudComponent {
|
|
|
303
303
|
order: 5,
|
|
304
304
|
toolTipText: 'shared_actions_notes',
|
|
305
305
|
isIconButton: true,
|
|
306
|
-
actionDisplay: ActionPlacement.
|
|
306
|
+
actionDisplay: ActionPlacement.Overflow,
|
|
307
307
|
},
|
|
308
308
|
...this.selectedColumns,
|
|
309
309
|
];
|
|
@@ -321,7 +321,7 @@ export class TsiGenericCrudComponent {
|
|
|
321
321
|
order: 8,
|
|
322
322
|
toolTipText: 'shared_actions_form',
|
|
323
323
|
isIconButton: true,
|
|
324
|
-
actionDisplay: ActionPlacement.
|
|
324
|
+
actionDisplay: ActionPlacement.Overflow,
|
|
325
325
|
},
|
|
326
326
|
...this.selectedColumns,
|
|
327
327
|
];
|
|
@@ -340,7 +340,7 @@ export class TsiGenericCrudComponent {
|
|
|
340
340
|
toolTipText: 'Delete',
|
|
341
341
|
buttonType: ButtonType.Submit,
|
|
342
342
|
isIconButton: true,
|
|
343
|
-
actionDisplay: ActionPlacement.
|
|
343
|
+
actionDisplay: ActionPlacement.Overflow,
|
|
344
344
|
},
|
|
345
345
|
...this.selectedColumns,
|
|
346
346
|
];
|
|
@@ -376,7 +376,7 @@ export class TsiGenericCrudComponent {
|
|
|
376
376
|
order: 0,
|
|
377
377
|
toolTipText: 'Consulter',
|
|
378
378
|
isIconButton: true,
|
|
379
|
-
actionDisplay: ActionPlacement.
|
|
379
|
+
actionDisplay: ActionPlacement.Overflow,
|
|
380
380
|
},
|
|
381
381
|
...this.selectedColumns,
|
|
382
382
|
];
|
|
@@ -394,7 +394,7 @@ export class TsiGenericCrudComponent {
|
|
|
394
394
|
order: 7,
|
|
395
395
|
toolTipText: 'Dupliquer',
|
|
396
396
|
isIconButton: true,
|
|
397
|
-
actionDisplay: ActionPlacement.
|
|
397
|
+
actionDisplay: ActionPlacement.Overflow,
|
|
398
398
|
},
|
|
399
399
|
...this.selectedColumns,
|
|
400
400
|
];
|
|
@@ -976,4 +976,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
976
976
|
type: HostListener,
|
|
977
977
|
args: ['window:keydown', ['$event']]
|
|
978
978
|
}] } });
|
|
979
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWdlbmVyaWMtY3J1ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvdHNpLWdlbmVyaWMtY3J1ZC90c2ktZ2VuZXJpYy1jcnVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktZ2VuZXJpYy1jcnVkL3RzaS1nZW5lcmljLWNydWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFeEgsT0FBTyxFQUFlLHFDQUFxQyxFQUFvRCxNQUFNLGNBQWMsQ0FBQztBQVdwSSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUc5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FB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c0JBQVgsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBR08sYUFBYTtzQkFBekIsS0FBSztnQkFXTyxZQUFZO3NCQUF4QixLQUFLO2dCQVlHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFLSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csd0JBQXdCO3NCQUFqQyxNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRywwQkFBMEI7c0JBQW5DLE1BQU07Z0JBaXZCUCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuICBBZnRlckNvbnRlbnRDaGVja2VkLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbnZpcm9ubWVudEluamVjdG9yLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1lbnVJdGVtLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50X01vZGVzLCBNb2RhbFNpemVFbnVtLCBNb2RlcyB9IGZyb20gJy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgQWN0aW9uUGxhY2VtZW50IH0gZnJvbSAnLi4vLi4vZW51bXMvYWN0aW9uLXBsYWNlbWVudCc7XHJcbmltcG9ydCB7IEJ1dHRvblR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9idXR0b24tdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgR3JpZFNlbGVjdGlvbk1vZGUgfSBmcm9tICcuLi8uLi9lbnVtcy9ncmlkLXNlbGVjdGlvbi1tb2RlJztcclxuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vZW51bXMvdG9vbHRpcFBvc2l0aW9uLmVudW0nO1xyXG5pbXBvcnQgeyBvcGVuRHluYW1pY0Zvcm1Nb2RhbENvbXBvbmVudCwgb3Blbk1vZGFsVXBsb2FkR3JpZCwgb3Blbk5vdGVzTGlzdCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9tb2RhbC1vcGVuLmZ1bmN0aW9uJztcclxuaW1wb3J0IHsgQnV0dG9uQ2xpY2tSZXN1bHQsIEdyaWRDb2x1bW4sIElHcmlkQ29uZmlndXJhdGlvbiwgSU1vZGFsU2l6ZSwgSVBhZ2UsIElQYWdlZFJlcXVlc3QsIElQYWdlZFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEV2ZW50U2NoZW1hLCBHZXRXb3JrZmxvd0luc3RhbmNlSW5mb3JtYXRpb25SZXF1ZXN0LCBTZWFyY2hGaWVsZCwgd29ya2Zsb3dJbnN0YW5jZUluZm9ybWF0aW9uUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBFbnRpdHlJbmZvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS1pbmZvL2VudGl0eS1pbmZvJztcclxuaW1wb3J0IHsgTm90ZXNHcm91cGVkQnlVc2VyUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvTm90ZXMvTm90ZSc7XHJcbmltcG9ydCB7IFByZXNlbnRhdGlvblNldHRpbmcgfSBmcm9tICcuLi8uLi9tb2RlbHMvcHJlc2VudGF0aW9uLXNldHRpbmdzL3ByZXNlbnRhdGlvbi1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IExvY2FsaXplUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5pbXBvcnQgeyBDcnVkQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iYXNlL2NydWQtYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW50aXR5Q29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uL2VudGl0eS1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RpYWxvZy1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWNoaWVyVXBsb2FkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpY2hpZXIvZmljaGllci11cGxvYWQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRzaU1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vZGFsL3RzaS1tb2RhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9Ob3RlL05vdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vdHNpLW5vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVjb3JkSW5mb1BvcHVwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlY29yZC1pbmZvLXBvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd29ya2Zsb3cvd29ya2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHlwZVJlZ2lzdHJ5SGVscGVyIH0gZnJvbSAnLi4vLi4vdHNpLWhlbHBlcnMvdHlwZS1yZWdpc3RyeS5oZWxwZXInO1xyXG5pbXBvcnQgeyBUc2lHZW5lcmljR3JpZENvbXBvbmVudCB9IGZyb20gJy4uL291dHB1dC1jb21wb25lbnRzL3RzaS1nZW5lcmljLWdyaWQvdHNpLWdlbmVyaWMtZ3JpZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUc2lGb3JtTW9kYWxGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi90c2ktZm9ybS1tb2RhbC1mb290ZXIvdHNpLWZvcm0tbW9kYWwtZm9vdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRzaU5vdGVzQXZlcnRpckNvbXBvbmVudCB9IGZyb20gJy4uL3RzaS1ub3Rlcy1hdmVydGlyL3RzaS1ub3Rlcy1hdmVydGlyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRzaVBvcHVwVGV4dFZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4uL3RzaS1wb3B1cC10ZXh0LXZpZXdlci90c2ktcG9wdXAtdGV4dC12aWV3ZXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLUdlbmVyaWMtQ3J1ZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1nZW5lcmljLWNydWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RzaS1nZW5lcmljLWNydWQuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtUc2lOb3RpZmljYXRpb25TZXJ2aWNlXSxcclxufSkgLyosIE9uQ2hhbmdlcyovXHJcbmV4cG9ydCBjbGFzcyBUc2lHZW5lcmljQ3J1ZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XHJcbiAgLy8jcmVnaW9uIGxvY2FsIHZhcnNcclxuICBwcml2YXRlIF9kaWFsb2dSZWY/OiBEeW5hbWljRGlhbG9nUmVmO1xyXG4gIHByaXZhdGUgX2Zvcm1FbmRwb2ludDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIHByb3RlY3RlZCBmaWx0ZXJJY29uID0gJ3BpIHBpLWZpbHRlcic7XHJcbiAgcHJvdGVjdGVkIGZpbHRlclRvb2x0aXAgPSAnc2hvd19maWx0ZXInO1xyXG4gIHByaXZhdGUgX2lzV29ya2Zsb3dFdGF0Rm9ybUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgYnV0dG9uVHlwZSA9IEJ1dHRvblR5cGU7XHJcbiAgdG9vbHRpcFBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uO1xyXG4gIGNvbmZpZ01vZGVCdXR0b25JZDogc3RyaW5nID0gXCJjb25mZy1tb2RlLWJ1dHRvbi1mcm9tLWxpc3RcIlxyXG4gIHNhdmVQcm9wZXJ0aWVzQnV0dG9uQ2xhc3NOYW1lID0gXCJjb25mZy1tb2RlLWJ1dHRvbi1mcm9tLWxpc3Qtc2F2ZS1wcm9wZXJ0aWVzXCI7XHJcbiAgQElucHV0KCkgZW50aXR5SW5mbzogRW50aXR5SW5mbyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxyXG5cclxuICBpdGVtcz86IGFueVtdO1xyXG5cclxuICBwYWdlZFJlcXVlc3Q6IElQYWdlZFJlcXVlc3QgPSB7fTtcclxuXHJcbiAgcGFnZTogSVBhZ2U8YW55PiA9IHtcclxuICAgIGl0ZW1zOiBbXSxcclxuICAgIHBhZ2VTaXplOiAxMCxcclxuICAgIHBhZ2VOdW1iZXI6IDEsXHJcbiAgICB0b3RhbENvdW50OiAwLFxyXG4gICAgdG90YWxQYWdlczogMCxcclxuICAgIHN1bW1hcmllczogW10sXHJcbiAgICBsb2FkaW5nOiBmYWxzZSxcclxuICB9O1xyXG4gIGZpcnN0OiBudW1iZXIgPSAwO1xyXG4gIHJvd3MgPSAxO1xyXG4gIGZvcm1FbmRwb2ludEJvZHk6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBmaWx0ZXJzSHRtbFRlbXBsYXRlPzogc3RyaW5nID0gJyc7XHJcbiAgc2VsZWN0ZWRDb2x1bW5zOiBHcmlkQ29sdW1uW10gPSBbXTtcclxuICBfc2VhcmNoT25Jbml0OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBfbW9kYWxEYXRhOiBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoVHNpR2VuZXJpY0dyaWRDb21wb25lbnQpIGdlbmVyaWNHcmlkQ29tcG9uZW50PzogVHNpR2VuZXJpY0dyaWRDb21wb25lbnQ7XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gSW5wdXRzXHJcbiAgQElucHV0KCkgc2V0IG1vZGFsRGF0YSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl9tb2RhbERhdGEgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IEdyaWRDb2x1bW5bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGdyaWRDb25maWd1cmF0aW9uPzogSUdyaWRDb25maWd1cmF0aW9uO1xyXG4gIEBJbnB1dCgpIGN1ZENvbXBvbmVudDogYW55O1xyXG4gIEBJbnB1dCgpIGNydWRTZXJ2aWNlPzogQ3J1ZEJhc2VTZXJ2aWNlPGFueSwgYW55LCBhbnksIGFueT47XHJcbiAgQElucHV0KCkgaGVhZGVyOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBtb2RhbFNpemU/OiBJTW9kYWxTaXplO1xyXG4gIEBJbnB1dCgpIGRlc2NyaW1pbmF0b3JWYWx1ZT86IHN0cmluZ1xyXG4gIEBJbnB1dCgpIHByZXNlbnRhdGlvblNldHRpbmdzPzogUHJlc2VudGF0aW9uU2V0dGluZ1xyXG4gIEBJbnB1dCgpIHByZXZlbnRBZGRFdmVudD86IGJvb2xlYW4gPSBmYWxzZVxyXG4gIEBJbnB1dCgpIHNldCBmb3JtRW5kcG9pbnQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX2Zvcm1FbmRwb2ludCA9IGAke3ZhbHVlfS9nZXRhbGxwYWdlZGA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBmb3JtRW5kcG9pbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybUVuZHBvaW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZm9ybU5hbWU/OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGZvcm1OYW1lKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybU5hbWU7XHJcbiAgfVxyXG5cclxuICBzZXQgZm9ybU5hbWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fZm9ybU5hbWUgPSB2YWx1ZTtcclxuICAgIC8vIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaXNTZWFyY2hCdXR0b25EaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgaXNTZWFyY2hCdXR0b25EaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faXNTZWFyY2hCdXR0b25EaXNhYmxlZCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1NlYXJjaEJ1dHRvbkRpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzU2VhcmNoQnV0dG9uRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvLyBASW5wdXQoKSBmb3JtTmFtZT86IHN0cmluZztcclxuICBASW5wdXQoKSBzaG93SGVhZGVyRmlsdGVyczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dFZGl0QnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RGVsZXRlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93QWRkQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93Q29uc3VsdEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dVcGxvYWRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dOb3RlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RG93bmxvYWRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93SW5mb0J1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd1NlYXJjaEZpZWxkOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzZWFyY2hGaWVsZHM6IFNlYXJjaEZpZWxkW10gfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc2hvd0NhbGVuZGVyVmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNhbGVuZGVyU2NoZW1hOiBFdmVudFNjaGVtYSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBzaG93Q2FyZFZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93S2FuYmFuVmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dLYW5iYW5WaWV3T2ZXb3JrRmxvd0V0YXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93RHVwbGljYXRlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93Rm9ybUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0ltcG9ydEZyb21PdXRsb29rQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vZ3JpZCBzZWxlY3Rpb25cclxuICBASW5wdXQoKSBzZWxlY3RLZXlPbmx5OiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiBHcmlkU2VsZWN0aW9uTW9kZSA9IEdyaWRTZWxlY3Rpb25Nb2RlLk5vbmU7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpIGtleTogc3RyaW5nID0gJ3VpZCc7XHJcbiAgQElucHV0KCkgaWQ/OiBzdHJpbmc7XHJcblxyXG4gIF9idXNpbmVzc0NsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgZ2V0IGJ1c2luZXNzQ2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnVzaW5lc3NDbGFzcztcclxuICB9XHJcblxyXG4gIHNldCBidXNpbmVzc0NsYXNzKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2J1c2luZXNzQ2xhc3MgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLl9idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgIHRoaXMuZ2V0V29ya2Zsb3dFdGF0Rm9ybUZvckN1cnJlbnRCdXNpbmVzc0NsYXNzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIEBJbnB1dCgpIHNldCBzZWFyY2hPbkluaXQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGlmICh2YWx1ZSA9PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9zZWFyY2hPbkluaXQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fc2VhcmNoT25Jbml0ID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBzZWFyY2hPbkluaXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoT25Jbml0O1xyXG4gIH1cclxuXHJcblxyXG4gIEBJbnB1dCgpIHNob3dHbG9iYWxTZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dFeHBvcnRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dSZXBvcnRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIE91dHB1dHNcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PGFueT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PigpO1xyXG4gIEBPdXRwdXQoKSBzZWFyY2hGaWVsZHNWYWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBcnJheTxTZWFyY2hGaWVsZD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxTZWFyY2hGaWVsZD4+KCk7XHJcbiAgQE91dHB1dCgpIGJ1dHRvbkNvbHVtbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxCdXR0b25DbGlja1Jlc3VsdD4gPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkNsaWNrUmVzdWx0PigpO1xyXG4gIEBPdXRwdXQoKSBvbkltcG9ydEZyb21PdXRsb29rQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAvLyNlbmRyZWdpb24gT3V0cHV0c1xyXG4gIGlzQ3VzdG9tQ29sdW1uUmVuZGVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjbGlja0NvdW50ID0gMTtcclxuICBjdXJyZW50SWNvbiA9IFwicGkgcGktYWxpZ24tanVzdGlmeVwiO1xyXG4gIGN1cnJlbnRUb29sdGlwID0gXCJzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2xpc3Rfdmlld1wiO1xyXG5cclxuICB2aWV3T3B0aW9uczogTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuICBwYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9tZXNzYWdlU2VydmljZTogVHNpTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgbXNnU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90c2lNb2RhbFNlcnZpY2U6IFRzaU1vZGFsU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgbG9jYWxpemU6IExvY2FsaXplUGlwZSxcclxuICAgIHByaXZhdGUgZGlhbG9nRGF0YVNlcnZpY2U6IERpYWxvZ0RhdGFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWNoaWVyU2VydmljZTogRmljaGllclVwbG9hZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlY29yZEluZm9Qb3B1cFNlcnZpY2U6IFJlY29yZEluZm9Qb3B1cFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlOiBXb3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZW50aXR5Q29uZmlnU2VydmljZTogRW50aXR5Q29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGVzU2VydmljZTogTm90ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9pbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3RvclxyXG4gICkgeyB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24gZ3JpZCBzdGF0ZVxyXG5cclxuICBnZXRTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50LmdldFN0YXRlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxuXHJcbiAgcmVzdG9yZVN0YXRlKGNvbmZpZ3VyYXRpb246IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5nZW5lcmljR3JpZENvbXBvbmVudC5yZXN0b3JlU3RhdGUoY29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldFNlbGVjdGVkQ29sdW1ucyhjb25maWd1cmF0aW9uOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQucmVzZXRTZWxlY3RlZENvbHVtbnMoY29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG4gIC8vIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAvLyB9XHJcblxyXG4gIC8vIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyB9XHJcblxyXG4gIGFzeW5jIGdldFdvcmtmbG93RXRhdEZvcm1Gb3JDdXJyZW50QnVzaW5lc3NDbGFzcygpIHtcclxuICAgIGlmICh0aGlzLmJ1c2luZXNzQ2xhc3MgJiYgIXRoaXMuX2lzV29ya2Zsb3dFdGF0Rm9ybUxvYWRlZCkge1xyXG4gICAgICB0aGlzLl9pc1dvcmtmbG93RXRhdEZvcm1Mb2FkZWQgPSB0cnVlXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS5nZXRXb3JrZmxvd0V0YXRGb3JtQnlDbGFzc05hbWUodGhpcy5idXNpbmVzc0NsYXNzKSk7XHJcbiAgICAgICAgdGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS53b3JrZmxvd0V0YXRGb3JtRm9yQ3VycmVudEZvcm0gPSByZXN1bHRcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyB3b3JrZmxvdyBzdGF0ZSBmb3JtOicsIGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0V29ya2Zsb3dFbnRpdHlJbmZvcm1hdGlvbihidXNpbmVzc0NsYXNzOiBzdHJpbmcsIHVpZE9iamVjdD86IHN0cmluZykge1xyXG4gICAgbGV0IHJlc3VsdDogd29ya2Zsb3dJbnN0YW5jZUluZm9ybWF0aW9uUmVzcG9uc2UgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCByZXF1ZXN0OiBHZXRXb3JrZmxvd0luc3RhbmNlSW5mb3JtYXRpb25SZXF1ZXN0ID0gbmV3IEdldFdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlcXVlc3QoKTtcclxuICAgICAgcmVxdWVzdC5jbGFzc05hbWUgPSBidXNpbmVzc0NsYXNzXHJcbiAgICAgIHJlcXVlc3QudWlkT2JqZXQgPSB1aWRPYmplY3Q7XHJcbiAgICAgIHJlcXVlc3QuZGlzY3JpbWluYXRvckNsYXNzTmFtZSA9IHRoaXMuZW50aXR5SW5mbz8uZGlzY3JpbWluYXRvckNsYXNzTmFtZVxyXG4gICAgICByZXF1ZXN0LmRpc2NyaW1pbmF0b3JQcm9wZXJ0eU5hbWUgPSB0aGlzLmVudGl0eUluZm8/LmRpc2NyaW1pbmF0b3JQcm9wZXJ0eU5hbWVcclxuICAgICAgcmVxdWVzdC5kaXNjcmltaW5hdG9yVmFsdWUgPSB0aGlzLmRlc2NyaW1pbmF0b3JWYWx1ZVxyXG4gICAgICByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldEN1cnJlbnRFbnRpdHlXb3JrbGZvd0luc3RhbmNlSW5mb3JtYXRpb24ocmVxdWVzdCkpXHJcbiAgICAgIC8vIGlmIChyZXN1bHQpIHtcclxuICAgICAgLy8gICBsZXQgd29ya2Zsb3dFdGF0Rm9ybSA9IHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2Uud29ya2Zsb3dFdGF0Rm9ybUZvckN1cnJlbnRGb3JtXHJcbiAgICAgIC8vICAgICA/LmZpbmQoeCA9PiB4LnVpZCA9PSByZXN1bHQ/LndvcmtmbG93RXRhdClcclxuICAgICAgLy8gICBpZiAod29ya2Zsb3dFdGF0Rm9ybSkge1xyXG4gICAgICAvLyAgICAgLy8gdGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS53b3JrZmxvd0V0YXRGb3JGb3JDdXJyZW50RW50aXR5Rm9ybSA9XHJcbiAgICAgIC8vICAgICAvLyAgIHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UubWFwV29ya2Zsb3dFdGF0Rm9ybVRvUHJlc2VudGF0aW9uU2V0dGluZyh3b3JrZmxvd0V0YXRGb3JtLndvcmtmbG93RXRhdHNGb3JtcylcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdFxyXG4gIH1cclxuXHJcbiAgc2VhcmNoRmllbGRWYWx1ZUNoYW5nZXMobmV3U2VhcmNoRmllbGRWYWx1ZXM6IEFycmF5PFNlYXJjaEZpZWxkPikge1xyXG4gICAgdGhpcy5zZWFyY2hGaWVsZHNWYWx1ZUNoYW5nZWQuZW1pdChuZXdTZWFyY2hGaWVsZFZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmdldEVudGl0eUluZm8oKTtcclxuICAgIHRoaXMuaW5pdGlhbGlzZVNob3dLYW5iYW5WaWV3T2ZXb3JrRmxvd0V0YXQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5zaG93SGVhZGVyRmlsdGVycyA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmZpbHRlclRvb2x0aXAgPSAnaGlkZV9maWx0ZXInO1xyXG4gICAgICB0aGlzLmZpbHRlckljb24gPSAncGkgcGktZmlsdGVyLXNsYXNoJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyVG9vbHRpcCA9ICdzaG93X2ZpbHRlcic7XHJcbiAgICAgIHRoaXMuZmlsdGVySWNvbiA9ICdwaSBwaS1maWx0ZXInO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAodGhpcy5jb2x1bW5zID09IG51bGwgJiYgdGhpcy5jb2x1bW5zID09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgJ2NvbHVtbnMgY2FudCBiZSBudWxsIG9yIHVuZGVmaW5lZCwgZGV2ZWxvcHBlciBtdXN0IHNldCBjb2x1bW5zIG9mIGdyaWQgISdcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFsuLi50aGlzLmNvbHVtbnNdO1xyXG5cclxuICAgIGlmICh0aGlzLnNob3dJbmZvQnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfaW5mbycsXHJcbiAgICAgICAgICBmaWVsZDogJ2luZm8nLFxyXG4gICAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgICBidXR0b25JY29uOiAncGkgcGktaW5mbycsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiAzLFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdzaGFyZWRfYWN0aW9uc19pbmZvJyxcclxuICAgICAgICAgIGlzSWNvbkJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGFjdGlvbkRpc3BsYXk6IEFjdGlvblBsYWNlbWVudC5vdmVyZmxvdyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dEb3dubG9hZEJ1dHRvbiA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2Rvd25sb2FkJyxcclxuICAgICAgICAgIGZpZWxkOiAnZG93bmxvYWQnLFxyXG4gICAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgICBidXR0b25JY29uOiAncGkgcGktZG93bmxvYWQnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogMixcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnVMOpbMOpY2hhcmdlcicsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQub3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93VXBsb2FkQnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfYXR0YWNobWVudCcsXHJcbiAgICAgICAgICBmaWVsZDogJ3VwbG9hZCcsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1wYXBlcmNsaXAnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogNCxcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnc2hhcmVkX2FjdGlvbnNfYXR0YWNobWVudCcsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQub3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93Tm90ZUJ1dHRvbikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19ub3RlcycsXHJcbiAgICAgICAgICBidXR0b25MYWJlbDogJycsXHJcbiAgICAgICAgICBmaWVsZDogJ25vdGVzJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWNvbW1lbnQnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogNSxcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnc2hhcmVkX2FjdGlvbnNfbm90ZXMnLFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lm92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgIGlmICh0aGlzLnNob3dGb3JtQnV0dG9uKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2Zvcm0nLFxyXG4gICAgICAgICAgZmllbGQ6ICdmb3JtJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWJvb2snLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaWNvblN0eWxlQ2xhc3M6ICd0ZXh0LWluZGlnby01MDAnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogOCxcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnc2hhcmVkX2FjdGlvbnNfZm9ybScsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQub3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93RGVsZXRlQnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfZGVsZXRlJyxcclxuICAgICAgICAgIGZpZWxkOiAnZGVsZXRlJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLXRyYXNoJyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04IHAtYnV0dG9uLWRhbmdlcicsXHJcbiAgICAgICAgICBpY29uU3R5bGVDbGFzczogJ3RleHQtcmVkLTUwMCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiAxLFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdEZWxldGUnLFxyXG4gICAgICAgICAgYnV0dG9uVHlwZTogQnV0dG9uVHlwZS5TdWJtaXQsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQub3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93RWRpdEJ1dHRvbiA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2VkaXQnLFxyXG4gICAgICAgICAgZmllbGQ6ICdlZGl0JyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLXBlbmNpbCcsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiA2LFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdzaGFyZWRfYWN0aW9uc19lZGl0JyxcclxuICAgICAgICAgIGJ1dHRvblR5cGU6IEJ1dHRvblR5cGUuU3VibWl0LFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50LklubGluZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0NvbnN1bHRCdXR0b24gPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19jb25zdWx0JyxcclxuICAgICAgICAgIGZpZWxkOiAnY29uc3VsdCcsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1leWUnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaWNvblN0eWxlQ2xhc3M6ICd0ZXh0LWJsdWUtNTAwJyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDAsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogJ0NvbnN1bHRlcicsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQub3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93RHVwbGljYXRlQnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfZHVwbGljYXRlJyxcclxuICAgICAgICAgIGZpZWxkOiAnZHVwbGljYXRlJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWNsb25lJyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04JyxcclxuICAgICAgICAgIGljb25TdHlsZUNsYXNzOiAndGV4dC1wdXJwbGUtNTAwJyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDcsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogJ0R1cGxpcXVlcicsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQub3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuIFxyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zXHJcbiAgICAgICAgLmZpbHRlcihjb2wgPT4gY29sLm9yZGVyICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEub3JkZXIhIC0gYi5vcmRlciEpLFxyXG4gICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC5vcmRlciA9PT0gdW5kZWZpbmVkKSxcclxuICAgIF07XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMubWFwKFxyXG4gICAgICAoY29sdW1uKSA9PlxyXG4gICAgICAoY29sdW1uLnRyYW5zbGF0ZWRIZWFkZXIgPSBjb2x1bW4uaGVhZGVyXHJcbiAgICAgICAgPyB0aGlzLmxvY2FsaXplLnRyYW5zZm9ybShjb2x1bW4uaGVhZGVyKVxyXG4gICAgICAgIDogY29sdW1uLmhlYWRlcilcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy52aWV3T3B0aW9ucyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLmxvY2FsaXplLnRyYW5zZm9ybSgnc2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9saXN0X3ZpZXcnKSxcclxuICAgICAgICBpY29uOiAncGkgcGktYWxpZ24tanVzdGlmeScsXHJcbiAgICAgICAgY29tbWFuZDogKCkgPT4gdGhpcy50b2dnbGVMaXN0VmlldygpXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogdGhpcy5sb2NhbGl6ZS50cmFuc2Zvcm0oXCJzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhbGVuZGVyX3ZpZXdcIiksXHJcbiAgICAgICAgaWNvbjogJ3BpIHBpLWNhbGVuZGFyJyxcclxuICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLnRvZ2dsZUNhbGVuZGVyVmlldygpXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogdGhpcy5sb2NhbGl6ZS50cmFuc2Zvcm0oJ3NoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfY2FyZF92aWV3JyksXHJcbiAgICAgICAgaWNvbjogJ3BpIHBpLWlkLWNhcmQnLFxyXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHRoaXMudG9nZ2xlQ2FyZFZpZXcoKVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6IHRoaXMubG9jYWxpemUudHJhbnNmb3JtKCdzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2thbmJhbl92aWV3JyksXHJcbiAgICAgICAgaWNvbjogJ3BpIHBpLXRoLWxhcmdlJyxcclxuICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLnRvZ2dsZUthbmJhblZpZXcoKVxyXG4gICAgICB9XHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMuX2luaXRNb2RlbHMoKTtcclxuICB9XHJcblxyXG5cclxuICAvKiB0b2dnbGVIZWFkZXJGaWx0ZXJzKCl7XHJcbiAgICBpZih0aGlzLnNob3dIZWFkZXJGaWx0ZXJzID09PSB0cnVlKXtcclxuICAgICAgdGhpcy5zaG93SGVhZGVyRmlsdGVycyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZpbHRlckljb24gPSBcInBpIHBpLWZpbHRlclwiO1xyXG4gICAgICB0aGlzLmZpbHRlclRvb2x0aXAgPSBcInNob3dfZmlsdGVyXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHsgLy90aGlzLnNob3dIZWFkZXJGaWx0ZXJzID09PSBmYWxzZVxyXG4gICAgICB0aGlzLnNob3dIZWFkZXJGaWx0ZXJzID0gdHJ1ZTtcclxuICAgICAgdGhpcy5maWx0ZXJJY29uID0gXCJwaSBwaS1maWx0ZXItc2xhc2hcIjtcclxuICAgICAgdGhpcy5maWx0ZXJUb29sdGlwID0gXCJoaWRlX2ZpbHRlclwiO1xyXG5cclxuICAgIH1cclxuICB9ICovXHJcbiAgICBcclxuICBpc0xhc3RQYWdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnZVxyXG4gICAgICA/IHRoaXMucGFnZS5wYWdlTnVtYmVyID09PSB0aGlzLnBhZ2UudG90YWxDb3VudCAtIHRoaXMucGFnZS5wYWdlU2l6ZVxyXG4gICAgICA6IHRydWU7XHJcbiAgfVxyXG5cclxuICBpc0ZpcnN0UGFnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2UgPyB0aGlzLnBhZ2UucGFnZU51bWJlciA9PT0gMCA6IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMYXp5TG9hZFxyXG4gICAqL1xyXG4gIC8vZmlyc3QgPT0+IHBhZ2UucGFnZU51bWJlclxyXG4gIC8vcm93cyA9PT4gcGFnZS5wYWdlU2l6ZVxyXG4gIC8vdGhpcy5wYWdlLml0ZW1zLmxlbmd0aCA9PT4gdG90YWwgY291bnRcclxuXHJcbiAgb3Blbk5ldygpIHtcclxuICAgIGlmICghdGhpcy5wcmV2ZW50QWRkRXZlbnQpIHtcclxuICAgICAgdGhpcy5fb3Blbk1vZGFsKENvbXBvbmVudF9Nb2Rlcy5DUkVBVEUsIG51bGwsIHRoaXMuX21vZGFsRGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5idXR0b25Db2x1bW5DbGlja2VkLmVtaXQoe1xyXG4gICAgICBrZXk6IHVuZGVmaW5lZCxcclxuICAgICAgZmllbGQ6ICdhZGQnLFxyXG4gICAgICBzZWxlY3RLZXlPbmx5OiB0aGlzLnNlbGVjdEtleU9ubHksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGhhbmRsZUJ1dHRvbkNvbHVtbkNsaWNrZWQoZXZlbnQ6IEJ1dHRvbkNsaWNrUmVzdWx0KSB7XHJcblxyXG4gICAgbGV0IGl0ZW1LZXk6IGFueSA9IGV2ZW50LnNlbGVjdEtleU9ubHkgPyBldmVudC5rZXkgOiBldmVudC5rZXlbdGhpcy5rZXldO1xyXG5cclxuICAgIGNvbnN0IGV4Y2x1ZGVkID0gW1wiTm90ZXNcIiwgXCJGaWNoaWVyXCJdO1xyXG4gICAgaWYgKHRoaXMuYnVzaW5lc3NDbGFzcyAmJiAhZXhjbHVkZWQuaW5jbHVkZXModGhpcy5idXNpbmVzc0NsYXNzKSkge1xyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGFTZXJ2aWNlLnNldERhdGEoeyBpZDogaXRlbUtleSwgY2xhc3M6IHRoaXMuYnVzaW5lc3NDbGFzcyB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXZlbnQuZmllbGQgPT0gJ2VkaXQnKSB7XHJcbiAgICAgIHRoaXMuX2VkaXRSb3coaXRlbUtleSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdkZWxldGUnKSB7XHJcbiAgICAgIHRoaXMuX2RlbGV0ZVJvdyhpdGVtS2V5KTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ2NvbnN1bHQnKSB7XHJcbiAgICAgIHRoaXMuX2NvbnN1bHRSb3coaXRlbUtleSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdkdXBsaWNhdGUnKSB7XHJcblxyXG4gICAgICBpZiAoIXRoaXMuYnVzaW5lc3NDbGFzcykge1xyXG4gICAgICAgIHRocm93IEVycm9yKFwiQnVzc2luZXNzIGNsYXNzIGlzIG5vdCBkZWZpbmVkICFcIik7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRoaXMuX2R1cGxpY2F0ZVJvdyhpdGVtS2V5KTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICd1cGxvYWQnKSB7XHJcbiAgICAgIGNvbnN0IGNvbmYgPSB7XHJcbiAgICAgICAgZGF0YToge30sXHJcbiAgICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgICAgd2lkdGg6IHRoaXMubW9kYWxTaXplIS53aWR0aCxcclxuICAgICAgICBoZWlnaHQ6IHRoaXMubW9kYWxTaXplIS5oZWlnaHQsXHJcbiAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcmVmID0gYXdhaXQgb3Blbk1vZGFsVXBsb2FkR3JpZCh0aGlzLl9pbmplY3RvciwgY29uZilcclxuXHJcbiAgICAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB0aGlzLl9jbG9zZU1vZGFsKHZhbCkpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5maWVsZCA9PSAnbm90ZXMnKSB7XHJcblxyXG4gICAgICBjb25zdCByZWYgPSBhd2FpdCBvcGVuTm90ZXNMaXN0KHRoaXMuX2luamVjdG9yKTtcclxuXHJcbiAgICAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB0aGlzLl9jbG9zZU1vZGFsKHZhbCkpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5maWVsZCA9PSAnZG93bmxvYWQnKSB7XHJcblxyXG4gICAgICB0aGlzLmZpY2hpZXJTZXJ2aWNlLmdldEJ5SWQoaXRlbUtleSkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNhdmVGaWxlKGRhdGEuY29udGVudSwgZGF0YS5ub21GaWNoaWVyQ29tcGxldCEpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ2luZm8nKSB7XHJcblxyXG4gICAgICB0aGlzLnJlY29yZEluZm9Qb3B1cFNlcnZpY2VcclxuICAgICAgICAuZ2V0SW5mbyh0aGlzLmJ1c2luZXNzQ2xhc3MhLCBpdGVtS2V5KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbW9kYWxTaXplID0gTW9kYWxTaXplRW51bS5FeHRyYUxhcmdlO1xyXG4gICAgICAgICAgICBsZXQgdGV4dCA9XHJcbiAgICAgICAgICAgICAgJ1VJRCA6ICAnICtcclxuICAgICAgICAgICAgICBpdGVtS2V5ICtcclxuICAgICAgICAgICAgICAnPEJSPkNyZWF0ZWQgYnkgOiAgJyArXHJcbiAgICAgICAgICAgICAgZGF0YS5jcmVhdGlvblVzZXIgK1xyXG4gICAgICAgICAgICAgICc8QlI+TW9kaWZpZWQgYnkgOiAnICtcclxuICAgICAgICAgICAgICBkYXRhLm1vZGlmVXNlciArXHJcbiAgICAgICAgICAgICAgJzxCUj5DcmVhdGVkIG9uIDogJyArXHJcbiAgICAgICAgICAgICAgZGF0YS5kYXRlU2Fpc2llICtcclxuICAgICAgICAgICAgICAnPEJSPk1vZGlmaWVkIG9uIDogJyArXHJcbiAgICAgICAgICAgICAgZGF0YS5kYXRlTW9kaWY7XHJcblxyXG4gICAgICAgICAgICBsZXQgY29uZjogRHluYW1pY0RpYWxvZ0NvbmZpZyA9IHtcclxuICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBVaWQ6IGl0ZW1LZXksXHJcbiAgICAgICAgICAgICAgICBidXNpbmVzc0NsYXNzOiB0aGlzLmJ1c2luZXNzQ2xhc3MsXHJcbiAgICAgICAgICAgICAgICBjcmVhdGlvblVzZXI6IGRhdGEuY3JlYXRpb25Vc2VyLFxyXG4gICAgICAgICAgICAgICAgbW9kaWZVc2VyOiBkYXRhLm1vZGlmVXNlcixcclxuICAgICAgICAgICAgICAgIGRhdGVTYWlzaWU6IGRhdGEuZGF0ZVNhaXNpZSxcclxuICAgICAgICAgICAgICAgIGRhdGVNb2RpZjogZGF0YS5kYXRlTW9kaWYsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICB3aWR0aDogJzkwcmVtJyxcclxuICAgICAgICAgICAgICBoZWlnaHQ6ICc4MHJlbScsXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3BlbihcclxuICAgICAgICAgICAgICBUc2lQb3B1cFRleHRWaWV3ZXJDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgY29uZlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT5cclxuICAgICAgICAgICAgICB0aGlzLl9jbG9zZU1vZGFsKHZhbClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9IFxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ2Zvcm0nKXtcclxuICAgICAgIGNvbnN0IG1vZGFsQ29uZmlnID0ge1xyXG4gICAgICAgIGRhdGE6IHt9LFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICcnLFxyXG4gICAgICAgIHdpZHRoOiB0aGlzLm1vZGFsU2l6ZSEud2lkdGgsXHJcbiAgICAgICAgaGVpZ2h0OiB0aGlzLm1vZGFsU2l6ZSEuaGVpZ2h0LFxyXG4gICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHJlZiA9IGF3YWl0IG9wZW5EeW5hbWljRm9ybU1vZGFsQ29tcG9uZW50KHRoaXMuX2luamVjdG9yLCBtb2RhbENvbmZpZylcclxuXHJcbiAgICAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB0aGlzLl9jbG9zZU1vZGFsKHZhbCkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuYnV0dG9uQ29sdW1uQ2xpY2tlZC5lbWl0KHtcclxuICAgICAgICBrZXk6IGV2ZW50LmtleSxcclxuICAgICAgICBmaWVsZDogZXZlbnQuZmllbGQsXHJcbiAgICAgICAgc2VsZWN0S2V5T25seTogdGhpcy5zZWxlY3RLZXlPbmx5LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmVGaWxlKGJhc2U2NERhdGE6IGFueSwgZmlsZU5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGJhc2U2NERhdGEpO1xyXG4gICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoYnl0ZUNoYXJhY3RlcnMubGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgYnl0ZU51bWJlcnNbaV0gPSBieXRlQ2hhcmFjdGVycy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0pO1xyXG5cclxuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG5cclxuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgYS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgYS5ocmVmID0gdXJsO1xyXG4gICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgYS5jbGljaygpO1xyXG5cclxuICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgfVxyXG5cclxuICBsb2FkKGV2ZW50OiB7IHJlcXVlc3Q6IElQYWdlZFJlcXVlc3Q7IGlzRm9yQ2FsZW5kYXI6IGJvb2xlYW4gfSkge1xyXG4gICAgdGhpcy5wYWdlZFJlcXVlc3QgPSBldmVudC5yZXF1ZXN0O1xyXG4gICAgdGhpcy5fc2V0Zm9ybUVuZHBvaW50Qm9keSgpO1xyXG4gICAgdGhpcy5fbG9hZERTKGV2ZW50LmlzRm9yQ2FsZW5kYXIpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RlZEl0ZW1zQ2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gcHJpdmF0ZSBtZXRob2RzXHJcbiAgcHJpdmF0ZSBfc2V0Zm9ybUVuZHBvaW50Qm9keSgpOiB2b2lkIHtcclxuICAgIGxldCBveDogYW55ID0gdGhpcy5fY2xvbmVQYWdlZFJlcXVlc3QodGhpcy5wYWdlZFJlcXVlc3QpO1xyXG4gICAgb3hbJ2dldEFsbERhdGEnXSA9IHRydWU7XHJcbiAgICB0aGlzLmZvcm1FbmRwb2ludEJvZHkgPSBKU09OLnN0cmluZ2lmeShveCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0TW9kZWxzKCkge1xyXG4gICAgXHJcbiAgICB0aGlzLnBhZ2UgPSB7XHJcbiAgICAgIGl0ZW1zOiBbXSxcclxuICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICBwYWdlTnVtYmVyOiAxLFxyXG4gICAgICB0b3RhbENvdW50OiAwLFxyXG4gICAgICB0b3RhbFBhZ2VzOiAwLFxyXG4gICAgICBzdW1tYXJpZXM6IFtdLFxyXG4gICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5wYWdlZFJlcXVlc3QgPSB7XHJcbiAgICAgIG1heFJlc3VsdENvdW50OiAxMCxcclxuICAgICAgc2tpcENvdW50OiAwLFxyXG4gICAgICBzb3J0aW5nOiBbXSxcclxuICAgICAga2V5d29yZDogJycsXHJcbiAgICAgIGZpbHRlcnM6IFtdLFxyXG4gICAgICBnZXRBbGxEYXRhOiBmYWxzZSxcclxuICAgICAgc3VtbWFyaWVzOiBbXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2FkRFMoaXNGb3JDYWxlbmRlcjogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBcclxuICAgIHRoaXMucGFnZS5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucGFnZSQubmV4dCh0aGlzLnBhZ2UpO1xyXG4gICAgdGhpcy5wYWdlZFJlcXVlc3QgPSB7XHJcbiAgICAgIC4uLnRoaXMucGFnZWRSZXF1ZXN0LFxyXG4gICAgICBnZXRBbGxEYXRhOiBpc0ZvckNhbGVuZGVyLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5jcnVkU2VydmljZSAhPSBudWxsICYmIHRoaXMuY3J1ZFNlcnZpY2UgIT0gdW5kZWZpbmVkKSB7XHJcblxyXG4gICAgICB0aGlzLmNydWRTZXJ2aWNlLmdldEFsbFBhZ2VkKHRoaXMucGFnZWRSZXF1ZXN0KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICh2YWx1ZTogSVBhZ2VkUmVzcG9uc2U8YW55PikgPT4ge1xyXG4gICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFnZS5pdGVtcyA9IHZhbHVlLml0ZW1zO1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2UudG90YWxDb3VudCA9IHZhbHVlLnRvdGFsQ291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMucGFnZS5zdW1tYXJpZXMgPSB2YWx1ZS5zdW1tYXJpZXMgPyB2YWx1ZS5zdW1tYXJpZXMgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5wYWdlLnRvdGFsUGFnZXMgPVxyXG4gICAgICAgICAgICAgICh0aGlzLnBhZ2UudG90YWxDb3VudCAtICAodGhpcy5wYWdlLnRvdGFsQ291bnQgJSB0aGlzLnBhZ2UucGFnZVNpemUpKSAvIHRoaXMucGFnZS5wYWdlU2l6ZSArIDE7XHJcblxyXG4gICAgICAgICAgICBpZih0aGlzLmlzQ3VzdG9tQ29sdW1uUmVuZGVyZWQgPT0gZmFsc2UgJiYgdmFsdWUuY3VzdG9tQ29sdW1uU2NoZW1hICYmIHZhbHVlLmN1c3RvbUNvbHVtblNjaGVtYS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLy8gQWRkIGN1c3RvbSBjb2x1bW5zIHRvIHRoZSBncmlkXHJcbiAgICAgICAgICAgICAgICB2YWx1ZS5jdXN0b21Db2x1bW5TY2hlbWEuZm9yRWFjaChjY3MgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgY3VzdG9tQ29sdW1uR3JpZDogR3JpZENvbHVtbiA9IHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IGNjcy5jb2x1bW5OYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBjY3MuY29sdW1uTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJJbnB1dFR5cGU6IGNjcy50eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzQ3VzdG9tQ29sdW1uOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMucHVzaChjdXN0b21Db2x1bW5HcmlkKVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNDdXN0b21Db2x1bW5SZW5kZXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucGFnZS5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnBhZ2UkLm5leHQodmFsdWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgdGhpcy5wYWdlLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2VkaXRSb3coaXRlbUtleTogYW55KSB7XHJcbiAgICB0aGlzLl9oYW5kbGVBY3Rpb25XaXRoQWxlcnRDaGVjayhDb21wb25lbnRfTW9kZXMuRURJVCwgaXRlbUtleSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kZWxldGVSb3coaXRlbUtleTogYW55KSB7XHJcbiAgICB0aGlzLl9oYW5kbGVBY3Rpb25XaXRoQWxlcnRDaGVjayhDb21wb25lbnRfTW9kZXMuREVMRVRFLCBpdGVtS2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbnN1bHRSb3coaXRlbUtleTogYW55KSB7XHJcbiAgICB0aGlzLl9oYW5kbGVBY3Rpb25XaXRoQWxlcnRDaGVjayhDb21wb25lbnRfTW9kZXMuQ09OU1VMVCwgaXRlbUtleSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2R1cGxpY2F0ZVJvdyhpdGVtS2V5OiBhbnkpIHtcclxuICAgIHRoaXMuX2hhbmRsZUFjdGlvbldpdGhBbGVydENoZWNrKENvbXBvbmVudF9Nb2Rlcy5EVVBMSUNBVEUsIGl0ZW1LZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRFbnRpdHlJbmZvKCkge1xyXG4gICAgaWYgKHRoaXMuYnVzaW5lc3NDbGFzcykge1xyXG4gICAgICB0aGlzLmVudGl0eUluZm8gPSBhd2FpdCB0aGlzLl9lbnRpdHlDb25maWdTZXJ2aWNlLmdldEVudGl0eUluZm9Gcm9tQ2FjaGUodGhpcy5idXNpbmVzc0NsYXNzKTtcclxuICAgICAgaWYgKCF0aGlzLmVudGl0eUluZm8pIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oYE5vIGVudGl0eSBpbmZvIGZvdW5kIGZvciAke3RoaXMuYnVzaW5lc3NDbGFzc31gKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfb3Blbk1vZGFsKG1vZGU6IHN0cmluZywgaXRlbUtleTogYW55LCBkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuY3J1ZFNlcnZpY2UhLmlzRHVwbGljYXRlID0gbW9kZSA9PT0gTW9kZXMuZHVwbGljYXRlO1xyXG4gICAgbGV0IHdvcmtmbG93RW50aXR5SW5mb3JtYXRpb246IHdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlc3BvbnNlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXHJcblxyXG4gICAgaWYgKHRoaXMuYnVzaW5lc3NDbGFzcykge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMuZW50aXR5SW5mbyA9IGF3YWl0IHRoaXMuX2VudGl0eUNvbmZpZ1NlcnZpY2UuZ2V0RW50aXR5SW5mb0Zyb21DYWNoZSh0aGlzLmJ1c2luZXNzQ2xhc3MpXHJcbiAgICAgICAgd29ya2Zsb3dFbnRpdHlJbmZvcm1hdGlvbiA9IGF3YWl0IHRoaXMuZ2V0V29ya2Zsb3dFbnRpdHlJbmZvcm1hdGlvbih0aGlzLmJ1c2luZXNzQ2xhc3MsIGl0ZW1LZXkpO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlcnJvcil7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBjb25mOiBEeW5hbWljRGlhbG9nQ29uZmlnO1xyXG5cclxuICAgIGlmICh0aGlzLm1vZGFsU2l6ZSAhPSBudWxsICYmIHRoaXMubW9kYWxTaXplICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25mID0ge1xyXG4gICAgICAgIGRhdGE6IHsgaWQ6IGl0ZW1LZXksIG1vZGU6IG1vZGUsIGN1c3RvbURhdGE6IGRhdGEsIHdvcmtmbG93SW5mb3JtYXRpb246IHdvcmtmbG93RW50aXR5SW5mb3JtYXRpb24sIGVudGl0eUluZm86IHRoaXMuZW50aXR5SW5mbyB9LFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICcnLFxyXG4gICAgICAgIHdpZHRoOiB0aGlzLm1vZGFsU2l6ZS53aWR0aCxcclxuICAgICAgICBoZWlnaHQ6IHRoaXMubW9kYWxTaXplLmhlaWdodCxcclxuICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgICB0ZW1wbGF0ZXM6IHtcclxuICAgICAgICAgIGZvb3RlcjogVHNpRm9ybU1vZGFsRm9vdGVyQ29tcG9uZW50LFxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbmYgPSB7XHJcbiAgICAgICAgZGF0YTogeyBpZDogaXRlbUtleSwgbW9kZTogbW9kZSwgY3VzdG9tRGF0YTogZGF0YSwgd29ya2Zsb3dJbmZvcm1hdGlvbjogd29ya2Zsb3dFbnRpdHlJbmZvcm1hdGlvbiB9LFxyXG4gICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgdGhpcy5jdWRDb21wb25lbnQgPT0gJ3N0cmluZycpIHtcclxuICAgICAgdGhpcy5jdWRDb21wb25lbnQgPSBUeXBlUmVnaXN0cnlIZWxwZXIuZ2V0VHlwZSh0aGlzLmN1ZENvbXBvbmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fZGlhbG9nUmVmID0gdGhpcy5fdHNpTW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5jdWRDb21wb25lbnQsIGNvbmYpO1xyXG5cclxuICAgIHRoaXMuX2RpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB0aGlzLl9jbG9zZU1vZGFsKHZhbCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xvc2VNb2RhbCh2YWw/OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2YWwgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5fbG9hZERTKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kaWFsb2dSZWY/LmRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Nsb25lUGFnZWRSZXF1ZXN0KHJlcXVlc3Q6IElQYWdlZFJlcXVlc3QpOiBJUGFnZWRSZXF1ZXN0IHtcclxuICAgIGxldCBjbG9uZTogSVBhZ2VkUmVxdWVzdCA9IHtcclxuICAgICAgbWF4UmVzdWx0Q291bnQ6IHJlcXVlc3QubWF4UmVzdWx0Q291bnQsXHJcbiAgICAgIHNraXBDb3VudDogcmVxdWVzdC5za2lwQ291bnQsXHJcbiAgICAgIHNvcnRpbmc6IHJlcXVlc3Quc29ydGluZyxcclxuICAgICAga2V5d29yZDogcmVxdWVzdC5rZXl3b3JkLFxyXG4gICAgICBmaWx0ZXJzOiByZXF1ZXN0LmZpbHRlcnMsXHJcbiAgICAgIGdldEFsbERhdGE6IHJlcXVlc3QuZ2V0QWxsRGF0YSxcclxuICAgICAgc3VtbWFyaWVzOiByZXF1ZXN0LnN1bW1hcmllcyxcclxuICAgIH07XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKGRhdGE6IGFueSkge1xyXG4gICAgaWYgKGRhdGEgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLl9sb2FkRFMoKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGRpc3BsYXlTZWFyY2hGaWVsZHMoKSB7XHJcbiAgICB0aGlzLnNob3dTZWFyY2hGaWVsZCA9ICF0aGlzLnNob3dTZWFyY2hGaWVsZDtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBjYWxlbmRlclxyXG4gIGhhbmRsZUNhbGVuZGFyRXZlbnRDbGljayhpdGVtOiBhbnkpIHtcclxuICAgIHN3aXRjaCAoaXRlbS5tb2RlKSB7XHJcbiAgICAgIGNhc2UgQ29tcG9uZW50X01vZGVzLkNPTlNVTFQ6XHJcbiAgICAgICAgdGhpcy5fY29uc3VsdFJvdyhpdGVtLmlkKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb21wb25lbnRfTW9kZXMuQ1JFQVRFOlxyXG4gICAgICAgIHRoaXMuX29wZW5Nb2RhbChDb21wb25lbnRfTW9kZXMuQ1JFQVRFLCBudWxsLCBpdGVtLmRhdGVEZWJ1dCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29tcG9uZW50X01vZGVzLkVESVQ6XHJcbiAgICAgICAgdGhpcy5fZWRpdFJvdyhpdGVtLmlkKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb21wb25lbnRfTW9kZXMuRFVQTElDQVRFOlxyXG4gICAgICAgIC8vIHRvZG9cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlTGlzdFZpZXcoKSB7XHJcbiAgICB0aGlzLnNob3dDYXJkVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93Q2FsZW5kZXJWaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dLYW5iYW5WaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLl9sb2FkRFMoKTtcclxuICAgIHRoaXMuY3VycmVudEljb24gPSBcInBpIHBpLWFsaWduLWp1c3RpZnlcIjtcclxuICAgIHRoaXMuY3VycmVudFRvb2x0aXAgPSBcInNoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfbGlzdF92aWV3XCI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvZ2dsZUNhbGVuZGVyVmlldygpIHtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGVyVmlldyA9ICF0aGlzLnNob3dDYWxlbmRlclZpZXc7XHJcbiAgICB0aGlzLnNob3dDYXJkVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93S2FuYmFuVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5fbG9hZERTKHRoaXMuc2hvd0NhbGVuZGVyVmlldyk7XHJcbiAgICB0aGlzLmN1cnJlbnRJY29uID0gXCJwaSBwaS1jYWxlbmRhclwiO1xyXG4gICAgdGhpcy5jdXJyZW50VG9vbHRpcCA9IFwic2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9jYWxlbmRlcl92aWV3XCI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvZ2dsZUNhcmRWaWV3KCkge1xyXG4gICAgdGhpcy5zaG93Q2FyZFZpZXcgPSAhdGhpcy5zaG93Q2FyZFZpZXc7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRlclZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0thbmJhblZpZXcgPSBmYWxzZTtcclxuICAgIC8vIHRoaXMuX2xvYWREUyh0aGlzLnNob3dDYXJkVmlldyk7XHJcbiAgICB0aGlzLmN1cnJlbnRJY29uID0gXCJwaSBwaS1pZC1jYXJkXCI7XHJcbiAgICB0aGlzLmN1cnJlbnRUb29sdGlwID0gXCJzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhcmRfdmlld1wiO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVLYW5iYW5WaWV3KCkge1xyXG4gICAgdGhpcy5zaG93S2FuYmFuVmlldyA9ICF0aGlzLnNob3dLYW5iYW5WaWV3O1xyXG4gICAgdGhpcy5zaG93Q2FyZFZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGVyVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5fbG9hZERTKCk7XHJcbiAgICB0aGlzLmN1cnJlbnRJY29uID0gXCJwaSBwaS10aC1sYXJnZVwiO1xyXG4gICAgdGhpcy5jdXJyZW50VG9vbHRpcCA9IFwic2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9rYW5iYW5fdmlld1wiO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdGNCcpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5vcGVuTmV3KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgaGFuZGxlQWN0aW9uVmlld0NsaWNrKCkge1xyXG4gICAgdGhpcy5jbGlja0NvdW50Kys7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmNsaWNrQ291bnQpIHtcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIHRoaXMudG9nZ2xlTGlzdFZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICB0aGlzLnRvZ2dsZUNhbGVuZGVyVmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAzOlxyXG4gICAgICAgIHRoaXMudG9nZ2xlQ2FyZFZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgNDpcclxuICAgICAgICB0aGlzLnRvZ2dsZUthbmJhblZpZXcoKTtcclxuICAgICAgICB0aGlzLmNsaWNrQ291bnQgPSAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLmNsaWNrQ291bnQgPSAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgX2hhbmRsZUFjdGlvbldpdGhBbGVydENoZWNrKG1vZGU6IENvbXBvbmVudF9Nb2RlcywgaXRlbUtleTogYW55KSB7XHJcbiAgICAvLyBUT0RPIEBNZWRBbGkgdG8gYmUgZml4ZWRcclxuICAgIGlmICh0aGlzLmJ1c2luZXNzQ2xhc3MgJiYgdGhpcy5idXNpbmVzc0NsYXNzICE9PSBcIk5vdGVzXCIpIHtcclxuICAgICAgdGhpcy5ub3Rlc1NlcnZpY2UuZ2V0QWxlcnROb3RlcyhpdGVtS2V5Py50b1N0cmluZygpLCB0aGlzLmJ1c2luZXNzQ2xhc3MpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBOb3Rlc0dyb3VwZWRCeVVzZXJSZXNwb25zZVtdKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9vcGVuTW9kYWwobW9kZSwgaXRlbUtleSwgdGhpcy5fbW9kYWxEYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCByZWYgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3BlbihUc2lOb3Rlc0F2ZXJ0aXJDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICBkYXRhOiB7IGdyb3VwZWROb3RlczogcmVzcG9uc2UgfSxcclxuICAgICAgICAgICAgICBzdHlsZUNsYXNzOiAnJyxcclxuICAgICAgICAgICAgICB3aWR0aDogTW9kYWxTaXplRW51bS5TbWFsbC53aWR0aCxcclxuICAgICAgICAgICAgICBoZWlnaHQ6IE1vZGFsU2l6ZUVudW0uU21hbGwuaGVpZ2h0LFxyXG4gICAgICAgICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fY2xvc2VNb2RhbCh2YWwpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX29wZW5Nb2RhbChtb2RlLCBpdGVtS2V5LCB0aGlzLl9tb2RhbERhdGEpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIG5vdGVzIGZvciBhbGVydCcsIGVycik7XHJcbiAgICAgICAgICB0aGlzLl9vcGVuTW9kYWwobW9kZSwgaXRlbUtleSwgdGhpcy5fbW9kYWxEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuX29wZW5Nb2RhbChtb2RlLCBpdGVtS2V5LCB0aGlzLl9tb2RhbERhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TdGF0dXNGaWx0ZXJDaGFuZ2VkKGV2dDogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhldnQpXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydENsaWNrZWQoKXtcclxuICAgIHRoaXMub25JbXBvcnRGcm9tT3V0bG9va0NsaWNrZWQuZW1pdCh7XHJcbiAgICAgIGJ1c2luZXNzQ2xhc3M6IHRoaXMuYnVzaW5lc3NDbGFzcyxcclxuICAgICAgc2VhcmNoRmllbGRzOiB0aGlzLnNlYXJjaEZpZWxkc1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGluaXRpYWxpc2VTaG93S2FuYmFuVmlld09mV29ya0Zsb3dFdGF0KClcclxuICB7XHJcbiAgICBpZih0aGlzLmJ1c2luZXNzQ2xhc3MpXHJcbiAgICB7XHJcbiAgICAgIHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UuZ2V0V29ya2Zsb3dFdGF0QnlDbGFzc05hbWVBbmREZXNjcmltaW5hdG9yKHRoaXMuYnVzaW5lc3NDbGFzcywgdGhpcy5kZXNjcmltaW5hdG9yVmFsdWUpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgaWYoZGF0YSAhPSBudWxsICYmIGRhdGEubGVuZ3RoID4gMClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0thbmJhblZpZXdPZldvcmtGbG93RXRhdCA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gIFxyXG4gIDxwLXRvb2xiYXIgc3R5bGVDbGFzcz1cImJvcmRlci1yYWRpdXMtNyBtYi0xIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG5vLXBhZFwiIFxyXG4gICAgKm5nSWY9XCIoc2hvd0FkZEJ1dHRvbiB8fCBzZWFyY2hGaWVsZHMgfHwgZm9ybUVuZHBvaW50IHx8IGJ1c2luZXNzQ2xhc3MpICYmIHNob3dSZXBvcnRpbmdcIj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwibGVmdFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBteC0yXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dBZGRCdXR0b25cIiBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJhZGRfYnV0dG9uXCI+XHJcbiAgICAgICAgICA8VHNpLUJ1dHRvbiBpY29uPVwicGkgcGktcGx1c1wiIFxyXG4gICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiBcclxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9XCJzaGFyZWRfdHNpX2NvbXBvbmVudF9hZGRfdmlld1wiIFxyXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tc3VjY2VzcyBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCIgXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuTmV3KClcIj5cclxuICAgICAgICAgIDwvVHNpLUJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoRmllbGRzXCIgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwic2hvd19zZWFyY2hfZmllbGRzX2J1dHRvblwiPlxyXG4gICAgICAgICAgPFRzaS1CdXR0b24gaWNvbj1cInBpIHBpLXNsaWRlcnMtaFwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PVwic2hhcmVkX3RzaV9jb21wb25lbnRfbWVudVwiXHJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5IGhvdmVyOnNoYWRvdy02IHt7IHNob3dTZWFyY2hGaWVsZCA/ICdwLWJ1dHRvbi1zZWNvbmRhcnknIDogJ3AtYnV0dG9uLXN1Y2Nlc3MnIH19XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRpc3BsYXlTZWFyY2hGaWVsZHMoKVwiPlxyXG4gICAgICAgICAgPC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0ltcG9ydEZyb21PdXRsb29rQnV0dG9uXCIgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwiaW1wb3J0RnJvbU91dGxvb2tfYnV0dG9uXCI+XHJcbiAgICAgICAgICA8VHNpLUJ1dHRvbiBpY29uPVwicGkgcGktZW52ZWxvcGVcIiBcclxuICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCIgXHJcbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PVwic2hhcmVkX3RzaV9jb21wb25lbnRfaW1wb3J0X2Zyb21fb3V0bG9va1wiIFxyXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24taW5mbyBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCIgXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkltcG9ydENsaWNrZWQoKVwiPiBcclxuICAgICAgICAgIDwvVHNpLUJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwidG9nZ2xlX2FjdGlvbnNfdmlld19idXR0b25cIj5cclxuICAgICAgICAgIDxwLXNwbGl0QnV0dG9uXHJcbiAgICAgICAgICAgIFtpY29uXT1cImN1cnJlbnRJY29uXCJcclxuICAgICAgICAgICAgW21vZGVsXT1cInZpZXdPcHRpb25zXCJcclxuICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlQWN0aW9uVmlld0NsaWNrKClcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcF09XCJjdXJyZW50VG9vbHRpcCB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHkgcC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1wcmltYXJ5IGgtMnJlbSBob3ZlcjpzaGFkb3ctNlwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPCEtLSA8VHNpLUJ1dHRvblxyXG4gICAgICAgICAgICBbaWNvbl09XCJjdXJyZW50SWNvblwiXHJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWVsZW1lbnQgcC1idXR0b24tcHJpbWFyeSAgaC0ycmVtIHAtYnV0dG9uIHAtY29tcG9uZW50IHAtYnV0dG9uLWljb24tb25seVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVBY3Rpb25WaWV3Q2xpY2soKVwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwVGV4dF09XCJjdXJyZW50VG9vbHRpcCB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICA8L1RzaS1CdXR0b24+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICBcclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicmlnaHRcIj5cclxuICAgICAgICA8YXBwLXJlcG9ydGluZyAqbmdJZj1cIihmb3JtRW5kcG9pbnQgfHwgYnVzaW5lc3NDbGFzcylcIiBcclxuICAgICAgICAgIFtmb3JtRW5kcG9pbnRdPVwiZm9ybUVuZHBvaW50XCIgXHJcbiAgICAgICAgICBbZm9ybU5hbWVdPVwiZm9ybU5hbWVcIlxyXG4gICAgICAgICAgW2Zvcm1FbmRwb2ludEJvZHldPVwiZm9ybUVuZHBvaW50Qm9keVwiIFxyXG4gICAgICAgICAgW2lzRm9ybUVuZHBvaW50UGFnZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbYnVzaW5lc3NDbGFzc109XCJidXNpbmVzc0NsYXNzXCJcclxuICAgICAgICAgIFtyZXBvcnREaXNjcmltaW5hdG9yXT1cImRlc2NyaW1pbmF0b3JWYWx1ZVwiXHJcbiAgICAgICAgICAocmVmcmVzaERhdGEpPVwicmVmcmVzaCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtmaWx0ZXJzSHRtbFRlbXBsYXRlXT1cImZpbHRlcnNIdG1sVGVtcGxhdGVcIlxyXG4gICAgICAgICAgW3BhZ2VkUmVxdWVzdF09XCJwYWdlZFJlcXVlc3RcIlxyXG4gICAgICAgICAgW2N1ZENvbXBvbmVudF09XCJjdWRDb21wb25lbnRcIiBcclxuICAgICAgICAgIFtjb25maWdNb2RlQnV0dG9uSWRdPVwiY29uZmlnTW9kZUJ1dHRvbklkXCJcclxuICAgICAgICAgIFtzaG93Tm90ZUJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbc2hvd0luZm9CdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW3Nob3dVcGxvYWRCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgID48L2FwcC1yZXBvcnRpbmc+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10b29sYmFyPlxyXG5cclxuICA8ZGl2PlxyXG5cclxuICAgIDxUc2ktR2VuZXJpYy1HcmlkXHJcbiAgICAgIFtmb3JtTmFtZV09XCJmb3JtTmFtZVwiXHJcbiAgICAgIFtjcnVkU2VydmljZV09XCJjcnVkU2VydmljZVwiXHJcbiAgICAgIFtzaG93U2VhcmNoRmllbGRdPVwic2hvd1NlYXJjaEZpZWxkXCJcclxuICAgICAgW3NlYXJjaEZpZWxkc109XCJzZWFyY2hGaWVsZHNcIlxyXG4gICAgICBbZGVzY3JpbWluYXRvclZhbHVlXT1cImRlc2NyaW1pbmF0b3JWYWx1ZVwiXHJcbiAgICAgIFtoZWFkZXJdPVwiaGVhZGVyXCJcclxuICAgICAgW3BhZ2VdPVwicGFnZVwiXHJcbiAgICAgIFtwYWdlZFJlcXVlc3RdPVwicGFnZWRSZXF1ZXN0XCJcclxuICAgICAgW2NvbHVtbnNdPVwic2VsZWN0ZWRDb2x1bW5zXCJcclxuICAgICAgW3Nob3dIZWFkZXJGaWx0ZXJzXT1cInNob3dIZWFkZXJGaWx0ZXJzXCJcclxuICAgICAgWyhmaWx0ZXJzSHRtbFRlbXBsYXRlKV09XCJmaWx0ZXJzSHRtbFRlbXBsYXRlXCJcclxuICAgICAgW3ByZXNlbnRhdGlvblNldHRpbmdzXT1cInByZXNlbnRhdGlvblNldHRpbmdzXCJcclxuICAgICAgKGxvYWQpPVwibG9hZCgkZXZlbnQpXCJcclxuICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQ29sdW1uQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgW3NlbGVjdEtleU9ubHldPVwic2VsZWN0S2V5T25seVwiXHJcbiAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cInNlbGVjdGlvbk1vZGVcIlxyXG4gICAgICBba2V5XT1cImtleVwiXHJcbiAgICAgIFsoc2VsZWN0ZWRJdGVtcyldPVwic2VsZWN0ZWRJdGVtc1wiXHJcbiAgICAgIChzZWxlY3RlZEl0ZW1zQ2hhbmdlKT1cIm9uU2VsZWN0ZWRJdGVtc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgKHNlYXJjaEZpZWxkc1ZhbHVlQ2hhbmdlZCk9XCJzZWFyY2hGaWVsZFZhbHVlQ2hhbmdlcygkZXZlbnQpXCJcclxuICAgICAgW3NlYXJjaE9uSW5pdF09XCJzZWFyY2hPbkluaXRcIlxyXG4gICAgICBbc2hvd0V4cG9ydEJ1dHRvbl09XCJzaG93RXhwb3J0QnV0dG9uXCJcclxuICAgICAgW3Nob3dHbG9iYWxTZWFyY2hdPVwic2hvd0dsb2JhbFNlYXJjaFwiXHJcbiAgICAgIFtpc1NlYXJjaEJ1dHRvbkRpc2FibGVkXT1cImlzU2VhcmNoQnV0dG9uRGlzYWJsZWRcIlxyXG4gICAgICBbc2hvd0NhbGVuZGVyVmlld109XCJzaG93Q2FsZW5kZXJWaWV3XCJcclxuICAgICAgW3Nob3dDYXJkVmlld109XCJzaG93Q2FyZFZpZXdcIlxyXG4gICAgICBbc2hvd0thbmJhblZpZXddPVwic2hvd0thbmJhblZpZXdcIlxyXG4gICAgICBbc2hvd0thbmJhblZpZXdPZldvcmtGbG93RXRhdF09XCJzaG93S2FuYmFuVmlld09mV29ya0Zsb3dFdGF0XCJcclxuICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiYnVzaW5lc3NDbGFzc1wiXHJcbiAgICAgIFtjYWxlbmRlclNjaGVtYV09XCJjYWxlbmRlclNjaGVtYVwiXHJcbiAgICAgIFtjdWRDb21wb25lbnRdPVwiY3VkQ29tcG9uZW50XCIgXHJcbiAgICAgIFttb2RhbFNpemVdPVwibW9kYWxTaXplXCIgXHJcbiAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgIFtwYWdlJF09XCJwYWdlJFwiXHJcbiAgICAgIFtlbnRpdHlJbmZvXT1cImVudGl0eUluZm9cIlxyXG4gICAgICAoY2FsZW5kYXJFdmVudENsaWNrKT1cImhhbmRsZUNhbGVuZGFyRXZlbnRDbGljaygkZXZlbnQpXCJcclxuICAgICAgKHN0YXR1c0ZpbHRlckNoYW5nZWQpPVwib25TdGF0dXNGaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgPjwvVHNpLUdlbmVyaWMtR3JpZD5cclxuICA8L2Rpdj5cclxuICBcclxuPC9kaXY+XHJcbiJdfQ==
|
|
979
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWdlbmVyaWMtY3J1ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvdHNpLWdlbmVyaWMtY3J1ZC90c2ktZ2VuZXJpYy1jcnVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktZ2VuZXJpYy1jcnVkL3RzaS1nZW5lcmljLWNydWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFeEgsT0FBTyxFQUFlLHFDQUFxQyxFQUFvRCxNQUFNLGNBQWMsQ0FBQztBQVdwSSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUc5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FB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c0JBQVgsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBR08sYUFBYTtzQkFBekIsS0FBSztnQkFXTyxZQUFZO3NCQUF4QixLQUFLO2dCQVlHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFLSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csd0JBQXdCO3NCQUFqQyxNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRywwQkFBMEI7c0JBQW5DLE1BQU07Z0JBaXZCUCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuICBBZnRlckNvbnRlbnRDaGVja2VkLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbnZpcm9ubWVudEluamVjdG9yLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1lbnVJdGVtLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50X01vZGVzLCBNb2RhbFNpemVFbnVtLCBNb2RlcyB9IGZyb20gJy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgQWN0aW9uUGxhY2VtZW50IH0gZnJvbSAnLi4vLi4vZW51bXMvYWN0aW9uLXBsYWNlbWVudCc7XHJcbmltcG9ydCB7IEJ1dHRvblR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9idXR0b24tdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgR3JpZFNlbGVjdGlvbk1vZGUgfSBmcm9tICcuLi8uLi9lbnVtcy9ncmlkLXNlbGVjdGlvbi1tb2RlJztcclxuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vZW51bXMvdG9vbHRpcFBvc2l0aW9uLmVudW0nO1xyXG5pbXBvcnQgeyBvcGVuRHluYW1pY0Zvcm1Nb2RhbENvbXBvbmVudCwgb3Blbk1vZGFsVXBsb2FkR3JpZCwgb3Blbk5vdGVzTGlzdCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9tb2RhbC1vcGVuLmZ1bmN0aW9uJztcclxuaW1wb3J0IHsgQnV0dG9uQ2xpY2tSZXN1bHQsIEdyaWRDb2x1bW4sIElHcmlkQ29uZmlndXJhdGlvbiwgSU1vZGFsU2l6ZSwgSVBhZ2UsIElQYWdlZFJlcXVlc3QsIElQYWdlZFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEV2ZW50U2NoZW1hLCBHZXRXb3JrZmxvd0luc3RhbmNlSW5mb3JtYXRpb25SZXF1ZXN0LCBTZWFyY2hGaWVsZCwgd29ya2Zsb3dJbnN0YW5jZUluZm9ybWF0aW9uUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBFbnRpdHlJbmZvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS1pbmZvL2VudGl0eS1pbmZvJztcclxuaW1wb3J0IHsgTm90ZXNHcm91cGVkQnlVc2VyUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvTm90ZXMvTm90ZSc7XHJcbmltcG9ydCB7IFByZXNlbnRhdGlvblNldHRpbmcgfSBmcm9tICcuLi8uLi9tb2RlbHMvcHJlc2VudGF0aW9uLXNldHRpbmdzL3ByZXNlbnRhdGlvbi1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IExvY2FsaXplUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5pbXBvcnQgeyBDcnVkQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iYXNlL2NydWQtYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW50aXR5Q29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uL2VudGl0eS1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RpYWxvZy1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWNoaWVyVXBsb2FkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpY2hpZXIvZmljaGllci11cGxvYWQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRzaU1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vZGFsL3RzaS1tb2RhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9Ob3RlL05vdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vdHNpLW5vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVjb3JkSW5mb1BvcHVwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlY29yZC1pbmZvLXBvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd29ya2Zsb3cvd29ya2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHlwZVJlZ2lzdHJ5SGVscGVyIH0gZnJvbSAnLi4vLi4vdHNpLWhlbHBlcnMvdHlwZS1yZWdpc3RyeS5oZWxwZXInO1xyXG5pbXBvcnQgeyBUc2lHZW5lcmljR3JpZENvbXBvbmVudCB9IGZyb20gJy4uL291dHB1dC1jb21wb25lbnRzL3RzaS1nZW5lcmljLWdyaWQvdHNpLWdlbmVyaWMtZ3JpZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUc2lGb3JtTW9kYWxGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi90c2ktZm9ybS1tb2RhbC1mb290ZXIvdHNpLWZvcm0tbW9kYWwtZm9vdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRzaU5vdGVzQXZlcnRpckNvbXBvbmVudCB9IGZyb20gJy4uL3RzaS1ub3Rlcy1hdmVydGlyL3RzaS1ub3Rlcy1hdmVydGlyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRzaVBvcHVwVGV4dFZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4uL3RzaS1wb3B1cC10ZXh0LXZpZXdlci90c2ktcG9wdXAtdGV4dC12aWV3ZXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLUdlbmVyaWMtQ3J1ZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1nZW5lcmljLWNydWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RzaS1nZW5lcmljLWNydWQuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtUc2lOb3RpZmljYXRpb25TZXJ2aWNlXSxcclxufSkgLyosIE9uQ2hhbmdlcyovXHJcbmV4cG9ydCBjbGFzcyBUc2lHZW5lcmljQ3J1ZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XHJcbiAgLy8jcmVnaW9uIGxvY2FsIHZhcnNcclxuICBwcml2YXRlIF9kaWFsb2dSZWY/OiBEeW5hbWljRGlhbG9nUmVmO1xyXG4gIHByaXZhdGUgX2Zvcm1FbmRwb2ludDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIHByb3RlY3RlZCBmaWx0ZXJJY29uID0gJ3BpIHBpLWZpbHRlcic7XHJcbiAgcHJvdGVjdGVkIGZpbHRlclRvb2x0aXAgPSAnc2hvd19maWx0ZXInO1xyXG4gIHByaXZhdGUgX2lzV29ya2Zsb3dFdGF0Rm9ybUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgYnV0dG9uVHlwZSA9IEJ1dHRvblR5cGU7XHJcbiAgdG9vbHRpcFBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uO1xyXG4gIGNvbmZpZ01vZGVCdXR0b25JZDogc3RyaW5nID0gXCJjb25mZy1tb2RlLWJ1dHRvbi1mcm9tLWxpc3RcIlxyXG4gIHNhdmVQcm9wZXJ0aWVzQnV0dG9uQ2xhc3NOYW1lID0gXCJjb25mZy1tb2RlLWJ1dHRvbi1mcm9tLWxpc3Qtc2F2ZS1wcm9wZXJ0aWVzXCI7XHJcbiAgQElucHV0KCkgZW50aXR5SW5mbzogRW50aXR5SW5mbyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxyXG5cclxuICBpdGVtcz86IGFueVtdO1xyXG5cclxuICBwYWdlZFJlcXVlc3Q6IElQYWdlZFJlcXVlc3QgPSB7fTtcclxuXHJcbiAgcGFnZTogSVBhZ2U8YW55PiA9IHtcclxuICAgIGl0ZW1zOiBbXSxcclxuICAgIHBhZ2VTaXplOiAxMCxcclxuICAgIHBhZ2VOdW1iZXI6IDEsXHJcbiAgICB0b3RhbENvdW50OiAwLFxyXG4gICAgdG90YWxQYWdlczogMCxcclxuICAgIHN1bW1hcmllczogW10sXHJcbiAgICBsb2FkaW5nOiBmYWxzZSxcclxuICB9O1xyXG4gIGZpcnN0OiBudW1iZXIgPSAwO1xyXG4gIHJvd3MgPSAxO1xyXG4gIGZvcm1FbmRwb2ludEJvZHk6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBmaWx0ZXJzSHRtbFRlbXBsYXRlPzogc3RyaW5nID0gJyc7XHJcbiAgc2VsZWN0ZWRDb2x1bW5zOiBHcmlkQ29sdW1uW10gPSBbXTtcclxuICBfc2VhcmNoT25Jbml0OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBfbW9kYWxEYXRhOiBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoVHNpR2VuZXJpY0dyaWRDb21wb25lbnQpIGdlbmVyaWNHcmlkQ29tcG9uZW50PzogVHNpR2VuZXJpY0dyaWRDb21wb25lbnQ7XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gSW5wdXRzXHJcbiAgQElucHV0KCkgc2V0IG1vZGFsRGF0YSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl9tb2RhbERhdGEgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IEdyaWRDb2x1bW5bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGdyaWRDb25maWd1cmF0aW9uPzogSUdyaWRDb25maWd1cmF0aW9uO1xyXG4gIEBJbnB1dCgpIGN1ZENvbXBvbmVudDogYW55O1xyXG4gIEBJbnB1dCgpIGNydWRTZXJ2aWNlPzogQ3J1ZEJhc2VTZXJ2aWNlPGFueSwgYW55LCBhbnksIGFueT47XHJcbiAgQElucHV0KCkgaGVhZGVyOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBtb2RhbFNpemU/OiBJTW9kYWxTaXplO1xyXG4gIEBJbnB1dCgpIGRlc2NyaW1pbmF0b3JWYWx1ZT86IHN0cmluZ1xyXG4gIEBJbnB1dCgpIHByZXNlbnRhdGlvblNldHRpbmdzPzogUHJlc2VudGF0aW9uU2V0dGluZ1xyXG4gIEBJbnB1dCgpIHByZXZlbnRBZGRFdmVudD86IGJvb2xlYW4gPSBmYWxzZVxyXG4gIEBJbnB1dCgpIHNldCBmb3JtRW5kcG9pbnQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX2Zvcm1FbmRwb2ludCA9IGAke3ZhbHVlfS9nZXRhbGxwYWdlZGA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBmb3JtRW5kcG9pbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybUVuZHBvaW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZm9ybU5hbWU/OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGZvcm1OYW1lKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybU5hbWU7XHJcbiAgfVxyXG5cclxuICBzZXQgZm9ybU5hbWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fZm9ybU5hbWUgPSB2YWx1ZTtcclxuICAgIC8vIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaXNTZWFyY2hCdXR0b25EaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgaXNTZWFyY2hCdXR0b25EaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faXNTZWFyY2hCdXR0b25EaXNhYmxlZCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1NlYXJjaEJ1dHRvbkRpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzU2VhcmNoQnV0dG9uRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvLyBASW5wdXQoKSBmb3JtTmFtZT86IHN0cmluZztcclxuICBASW5wdXQoKSBzaG93SGVhZGVyRmlsdGVyczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dFZGl0QnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RGVsZXRlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93QWRkQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93Q29uc3VsdEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dVcGxvYWRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dOb3RlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RG93bmxvYWRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93SW5mb0J1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd1NlYXJjaEZpZWxkOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzZWFyY2hGaWVsZHM6IFNlYXJjaEZpZWxkW10gfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc2hvd0NhbGVuZGVyVmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNhbGVuZGVyU2NoZW1hOiBFdmVudFNjaGVtYSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBzaG93Q2FyZFZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93S2FuYmFuVmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dLYW5iYW5WaWV3T2ZXb3JrRmxvd0V0YXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93RHVwbGljYXRlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93Rm9ybUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0ltcG9ydEZyb21PdXRsb29rQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vZ3JpZCBzZWxlY3Rpb25cclxuICBASW5wdXQoKSBzZWxlY3RLZXlPbmx5OiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiBHcmlkU2VsZWN0aW9uTW9kZSA9IEdyaWRTZWxlY3Rpb25Nb2RlLk5vbmU7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpIGtleTogc3RyaW5nID0gJ3VpZCc7XHJcbiAgQElucHV0KCkgaWQ/OiBzdHJpbmc7XHJcblxyXG4gIF9idXNpbmVzc0NsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgZ2V0IGJ1c2luZXNzQ2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnVzaW5lc3NDbGFzcztcclxuICB9XHJcblxyXG4gIHNldCBidXNpbmVzc0NsYXNzKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2J1c2luZXNzQ2xhc3MgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLl9idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgIHRoaXMuZ2V0V29ya2Zsb3dFdGF0Rm9ybUZvckN1cnJlbnRCdXNpbmVzc0NsYXNzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIEBJbnB1dCgpIHNldCBzZWFyY2hPbkluaXQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGlmICh2YWx1ZSA9PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9zZWFyY2hPbkluaXQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fc2VhcmNoT25Jbml0ID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBzZWFyY2hPbkluaXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoT25Jbml0O1xyXG4gIH1cclxuXHJcblxyXG4gIEBJbnB1dCgpIHNob3dHbG9iYWxTZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dFeHBvcnRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dSZXBvcnRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIE91dHB1dHNcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PGFueT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PigpO1xyXG4gIEBPdXRwdXQoKSBzZWFyY2hGaWVsZHNWYWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBcnJheTxTZWFyY2hGaWVsZD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxTZWFyY2hGaWVsZD4+KCk7XHJcbiAgQE91dHB1dCgpIGJ1dHRvbkNvbHVtbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxCdXR0b25DbGlja1Jlc3VsdD4gPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkNsaWNrUmVzdWx0PigpO1xyXG4gIEBPdXRwdXQoKSBvbkltcG9ydEZyb21PdXRsb29rQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAvLyNlbmRyZWdpb24gT3V0cHV0c1xyXG4gIGlzQ3VzdG9tQ29sdW1uUmVuZGVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjbGlja0NvdW50ID0gMTtcclxuICBjdXJyZW50SWNvbiA9IFwicGkgcGktYWxpZ24tanVzdGlmeVwiO1xyXG4gIGN1cnJlbnRUb29sdGlwID0gXCJzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2xpc3Rfdmlld1wiO1xyXG5cclxuICB2aWV3T3B0aW9uczogTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuICBwYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9tZXNzYWdlU2VydmljZTogVHNpTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgbXNnU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90c2lNb2RhbFNlcnZpY2U6IFRzaU1vZGFsU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgbG9jYWxpemU6IExvY2FsaXplUGlwZSxcclxuICAgIHByaXZhdGUgZGlhbG9nRGF0YVNlcnZpY2U6IERpYWxvZ0RhdGFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWNoaWVyU2VydmljZTogRmljaGllclVwbG9hZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlY29yZEluZm9Qb3B1cFNlcnZpY2U6IFJlY29yZEluZm9Qb3B1cFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlOiBXb3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZW50aXR5Q29uZmlnU2VydmljZTogRW50aXR5Q29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGVzU2VydmljZTogTm90ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9pbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3RvclxyXG4gICkgeyB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24gZ3JpZCBzdGF0ZVxyXG5cclxuICBnZXRTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50LmdldFN0YXRlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxuXHJcbiAgcmVzdG9yZVN0YXRlKGNvbmZpZ3VyYXRpb246IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5nZW5lcmljR3JpZENvbXBvbmVudC5yZXN0b3JlU3RhdGUoY29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldFNlbGVjdGVkQ29sdW1ucyhjb25maWd1cmF0aW9uOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQucmVzZXRTZWxlY3RlZENvbHVtbnMoY29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG4gIC8vIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAvLyB9XHJcblxyXG4gIC8vIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyB9XHJcblxyXG4gIGFzeW5jIGdldFdvcmtmbG93RXRhdEZvcm1Gb3JDdXJyZW50QnVzaW5lc3NDbGFzcygpIHtcclxuICAgIGlmICh0aGlzLmJ1c2luZXNzQ2xhc3MgJiYgIXRoaXMuX2lzV29ya2Zsb3dFdGF0Rm9ybUxvYWRlZCkge1xyXG4gICAgICB0aGlzLl9pc1dvcmtmbG93RXRhdEZvcm1Mb2FkZWQgPSB0cnVlXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS5nZXRXb3JrZmxvd0V0YXRGb3JtQnlDbGFzc05hbWUodGhpcy5idXNpbmVzc0NsYXNzKSk7XHJcbiAgICAgICAgdGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS53b3JrZmxvd0V0YXRGb3JtRm9yQ3VycmVudEZvcm0gPSByZXN1bHRcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyB3b3JrZmxvdyBzdGF0ZSBmb3JtOicsIGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0V29ya2Zsb3dFbnRpdHlJbmZvcm1hdGlvbihidXNpbmVzc0NsYXNzOiBzdHJpbmcsIHVpZE9iamVjdD86IHN0cmluZykge1xyXG4gICAgbGV0IHJlc3VsdDogd29ya2Zsb3dJbnN0YW5jZUluZm9ybWF0aW9uUmVzcG9uc2UgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCByZXF1ZXN0OiBHZXRXb3JrZmxvd0luc3RhbmNlSW5mb3JtYXRpb25SZXF1ZXN0ID0gbmV3IEdldFdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlcXVlc3QoKTtcclxuICAgICAgcmVxdWVzdC5jbGFzc05hbWUgPSBidXNpbmVzc0NsYXNzXHJcbiAgICAgIHJlcXVlc3QudWlkT2JqZXQgPSB1aWRPYmplY3Q7XHJcbiAgICAgIHJlcXVlc3QuZGlzY3JpbWluYXRvckNsYXNzTmFtZSA9IHRoaXMuZW50aXR5SW5mbz8uZGlzY3JpbWluYXRvckNsYXNzTmFtZVxyXG4gICAgICByZXF1ZXN0LmRpc2NyaW1pbmF0b3JQcm9wZXJ0eU5hbWUgPSB0aGlzLmVudGl0eUluZm8/LmRpc2NyaW1pbmF0b3JQcm9wZXJ0eU5hbWVcclxuICAgICAgcmVxdWVzdC5kaXNjcmltaW5hdG9yVmFsdWUgPSB0aGlzLmRlc2NyaW1pbmF0b3JWYWx1ZVxyXG4gICAgICByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldEN1cnJlbnRFbnRpdHlXb3JrbGZvd0luc3RhbmNlSW5mb3JtYXRpb24ocmVxdWVzdCkpXHJcbiAgICAgIC8vIGlmIChyZXN1bHQpIHtcclxuICAgICAgLy8gICBsZXQgd29ya2Zsb3dFdGF0Rm9ybSA9IHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2Uud29ya2Zsb3dFdGF0Rm9ybUZvckN1cnJlbnRGb3JtXHJcbiAgICAgIC8vICAgICA/LmZpbmQoeCA9PiB4LnVpZCA9PSByZXN1bHQ/LndvcmtmbG93RXRhdClcclxuICAgICAgLy8gICBpZiAod29ya2Zsb3dFdGF0Rm9ybSkge1xyXG4gICAgICAvLyAgICAgLy8gdGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS53b3JrZmxvd0V0YXRGb3JGb3JDdXJyZW50RW50aXR5Rm9ybSA9XHJcbiAgICAgIC8vICAgICAvLyAgIHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UubWFwV29ya2Zsb3dFdGF0Rm9ybVRvUHJlc2VudGF0aW9uU2V0dGluZyh3b3JrZmxvd0V0YXRGb3JtLndvcmtmbG93RXRhdHNGb3JtcylcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdFxyXG4gIH1cclxuXHJcbiAgc2VhcmNoRmllbGRWYWx1ZUNoYW5nZXMobmV3U2VhcmNoRmllbGRWYWx1ZXM6IEFycmF5PFNlYXJjaEZpZWxkPikge1xyXG4gICAgdGhpcy5zZWFyY2hGaWVsZHNWYWx1ZUNoYW5nZWQuZW1pdChuZXdTZWFyY2hGaWVsZFZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmdldEVudGl0eUluZm8oKTtcclxuICAgIHRoaXMuaW5pdGlhbGlzZVNob3dLYW5iYW5WaWV3T2ZXb3JrRmxvd0V0YXQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5zaG93SGVhZGVyRmlsdGVycyA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmZpbHRlclRvb2x0aXAgPSAnaGlkZV9maWx0ZXInO1xyXG4gICAgICB0aGlzLmZpbHRlckljb24gPSAncGkgcGktZmlsdGVyLXNsYXNoJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyVG9vbHRpcCA9ICdzaG93X2ZpbHRlcic7XHJcbiAgICAgIHRoaXMuZmlsdGVySWNvbiA9ICdwaSBwaS1maWx0ZXInO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAodGhpcy5jb2x1bW5zID09IG51bGwgJiYgdGhpcy5jb2x1bW5zID09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgJ2NvbHVtbnMgY2FudCBiZSBudWxsIG9yIHVuZGVmaW5lZCwgZGV2ZWxvcHBlciBtdXN0IHNldCBjb2x1bW5zIG9mIGdyaWQgISdcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFsuLi50aGlzLmNvbHVtbnNdO1xyXG5cclxuICAgIGlmICh0aGlzLnNob3dJbmZvQnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfaW5mbycsXHJcbiAgICAgICAgICBmaWVsZDogJ2luZm8nLFxyXG4gICAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgICBidXR0b25JY29uOiAncGkgcGktaW5mbycsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiAzLFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdzaGFyZWRfYWN0aW9uc19pbmZvJyxcclxuICAgICAgICAgIGlzSWNvbkJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGFjdGlvbkRpc3BsYXk6IEFjdGlvblBsYWNlbWVudC5PdmVyZmxvdyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dEb3dubG9hZEJ1dHRvbiA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2Rvd25sb2FkJyxcclxuICAgICAgICAgIGZpZWxkOiAnZG93bmxvYWQnLFxyXG4gICAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgICBidXR0b25JY29uOiAncGkgcGktZG93bmxvYWQnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogMixcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnVMOpbMOpY2hhcmdlcicsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuT3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93VXBsb2FkQnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfYXR0YWNobWVudCcsXHJcbiAgICAgICAgICBmaWVsZDogJ3VwbG9hZCcsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1wYXBlcmNsaXAnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogNCxcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnc2hhcmVkX2FjdGlvbnNfYXR0YWNobWVudCcsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuT3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93Tm90ZUJ1dHRvbikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19ub3RlcycsXHJcbiAgICAgICAgICBidXR0b25MYWJlbDogJycsXHJcbiAgICAgICAgICBmaWVsZDogJ25vdGVzJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWNvbW1lbnQnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogNSxcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnc2hhcmVkX2FjdGlvbnNfbm90ZXMnLFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lk92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgIGlmICh0aGlzLnNob3dGb3JtQnV0dG9uKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2Zvcm0nLFxyXG4gICAgICAgICAgZmllbGQ6ICdmb3JtJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWJvb2snLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaWNvblN0eWxlQ2xhc3M6ICd0ZXh0LWluZGlnby01MDAnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogOCxcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnc2hhcmVkX2FjdGlvbnNfZm9ybScsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuT3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93RGVsZXRlQnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfZGVsZXRlJyxcclxuICAgICAgICAgIGZpZWxkOiAnZGVsZXRlJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLXRyYXNoJyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04IHAtYnV0dG9uLWRhbmdlcicsXHJcbiAgICAgICAgICBpY29uU3R5bGVDbGFzczogJ3RleHQtcmVkLTUwMCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiAxLFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdEZWxldGUnLFxyXG4gICAgICAgICAgYnV0dG9uVHlwZTogQnV0dG9uVHlwZS5TdWJtaXQsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuT3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93RWRpdEJ1dHRvbiA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2VkaXQnLFxyXG4gICAgICAgICAgZmllbGQ6ICdlZGl0JyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLXBlbmNpbCcsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiA2LFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdzaGFyZWRfYWN0aW9uc19lZGl0JyxcclxuICAgICAgICAgIGJ1dHRvblR5cGU6IEJ1dHRvblR5cGUuU3VibWl0LFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50LklubGluZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0NvbnN1bHRCdXR0b24gPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19jb25zdWx0JyxcclxuICAgICAgICAgIGZpZWxkOiAnY29uc3VsdCcsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1leWUnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaWNvblN0eWxlQ2xhc3M6ICd0ZXh0LWJsdWUtNTAwJyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDAsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogJ0NvbnN1bHRlcicsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuT3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93RHVwbGljYXRlQnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfZHVwbGljYXRlJyxcclxuICAgICAgICAgIGZpZWxkOiAnZHVwbGljYXRlJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWNsb25lJyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04JyxcclxuICAgICAgICAgIGljb25TdHlsZUNsYXNzOiAndGV4dC1wdXJwbGUtNTAwJyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDcsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogJ0R1cGxpcXVlcicsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuT3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuIFxyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zXHJcbiAgICAgICAgLmZpbHRlcihjb2wgPT4gY29sLm9yZGVyICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEub3JkZXIhIC0gYi5vcmRlciEpLFxyXG4gICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC5vcmRlciA9PT0gdW5kZWZpbmVkKSxcclxuICAgIF07XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMubWFwKFxyXG4gICAgICAoY29sdW1uKSA9PlxyXG4gICAgICAoY29sdW1uLnRyYW5zbGF0ZWRIZWFkZXIgPSBjb2x1bW4uaGVhZGVyXHJcbiAgICAgICAgPyB0aGlzLmxvY2FsaXplLnRyYW5zZm9ybShjb2x1bW4uaGVhZGVyKVxyXG4gICAgICAgIDogY29sdW1uLmhlYWRlcilcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy52aWV3T3B0aW9ucyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLmxvY2FsaXplLnRyYW5zZm9ybSgnc2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9saXN0X3ZpZXcnKSxcclxuICAgICAgICBpY29uOiAncGkgcGktYWxpZ24tanVzdGlmeScsXHJcbiAgICAgICAgY29tbWFuZDogKCkgPT4gdGhpcy50b2dnbGVMaXN0VmlldygpXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogdGhpcy5sb2NhbGl6ZS50cmFuc2Zvcm0oXCJzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhbGVuZGVyX3ZpZXdcIiksXHJcbiAgICAgICAgaWNvbjogJ3BpIHBpLWNhbGVuZGFyJyxcclxuICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLnRvZ2dsZUNhbGVuZGVyVmlldygpXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogdGhpcy5sb2NhbGl6ZS50cmFuc2Zvcm0oJ3NoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfY2FyZF92aWV3JyksXHJcbiAgICAgICAgaWNvbjogJ3BpIHBpLWlkLWNhcmQnLFxyXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHRoaXMudG9nZ2xlQ2FyZFZpZXcoKVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6IHRoaXMubG9jYWxpemUudHJhbnNmb3JtKCdzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2thbmJhbl92aWV3JyksXHJcbiAgICAgICAgaWNvbjogJ3BpIHBpLXRoLWxhcmdlJyxcclxuICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLnRvZ2dsZUthbmJhblZpZXcoKVxyXG4gICAgICB9XHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMuX2luaXRNb2RlbHMoKTtcclxuICB9XHJcblxyXG5cclxuICAvKiB0b2dnbGVIZWFkZXJGaWx0ZXJzKCl7XHJcbiAgICBpZih0aGlzLnNob3dIZWFkZXJGaWx0ZXJzID09PSB0cnVlKXtcclxuICAgICAgdGhpcy5zaG93SGVhZGVyRmlsdGVycyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZpbHRlckljb24gPSBcInBpIHBpLWZpbHRlclwiO1xyXG4gICAgICB0aGlzLmZpbHRlclRvb2x0aXAgPSBcInNob3dfZmlsdGVyXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHsgLy90aGlzLnNob3dIZWFkZXJGaWx0ZXJzID09PSBmYWxzZVxyXG4gICAgICB0aGlzLnNob3dIZWFkZXJGaWx0ZXJzID0gdHJ1ZTtcclxuICAgICAgdGhpcy5maWx0ZXJJY29uID0gXCJwaSBwaS1maWx0ZXItc2xhc2hcIjtcclxuICAgICAgdGhpcy5maWx0ZXJUb29sdGlwID0gXCJoaWRlX2ZpbHRlclwiO1xyXG5cclxuICAgIH1cclxuICB9ICovXHJcbiAgICBcclxuICBpc0xhc3RQYWdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnZVxyXG4gICAgICA/IHRoaXMucGFnZS5wYWdlTnVtYmVyID09PSB0aGlzLnBhZ2UudG90YWxDb3VudCAtIHRoaXMucGFnZS5wYWdlU2l6ZVxyXG4gICAgICA6IHRydWU7XHJcbiAgfVxyXG5cclxuICBpc0ZpcnN0UGFnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2UgPyB0aGlzLnBhZ2UucGFnZU51bWJlciA9PT0gMCA6IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMYXp5TG9hZFxyXG4gICAqL1xyXG4gIC8vZmlyc3QgPT0+IHBhZ2UucGFnZU51bWJlclxyXG4gIC8vcm93cyA9PT4gcGFnZS5wYWdlU2l6ZVxyXG4gIC8vdGhpcy5wYWdlLml0ZW1zLmxlbmd0aCA9PT4gdG90YWwgY291bnRcclxuXHJcbiAgb3Blbk5ldygpIHtcclxuICAgIGlmICghdGhpcy5wcmV2ZW50QWRkRXZlbnQpIHtcclxuICAgICAgdGhpcy5fb3Blbk1vZGFsKENvbXBvbmVudF9Nb2Rlcy5DUkVBVEUsIG51bGwsIHRoaXMuX21vZGFsRGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5idXR0b25Db2x1bW5DbGlja2VkLmVtaXQoe1xyXG4gICAgICBrZXk6IHVuZGVmaW5lZCxcclxuICAgICAgZmllbGQ6ICdhZGQnLFxyXG4gICAgICBzZWxlY3RLZXlPbmx5OiB0aGlzLnNlbGVjdEtleU9ubHksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGhhbmRsZUJ1dHRvbkNvbHVtbkNsaWNrZWQoZXZlbnQ6IEJ1dHRvbkNsaWNrUmVzdWx0KSB7XHJcblxyXG4gICAgbGV0IGl0ZW1LZXk6IGFueSA9IGV2ZW50LnNlbGVjdEtleU9ubHkgPyBldmVudC5rZXkgOiBldmVudC5rZXlbdGhpcy5rZXldO1xyXG5cclxuICAgIGNvbnN0IGV4Y2x1ZGVkID0gW1wiTm90ZXNcIiwgXCJGaWNoaWVyXCJdO1xyXG4gICAgaWYgKHRoaXMuYnVzaW5lc3NDbGFzcyAmJiAhZXhjbHVkZWQuaW5jbHVkZXModGhpcy5idXNpbmVzc0NsYXNzKSkge1xyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGFTZXJ2aWNlLnNldERhdGEoeyBpZDogaXRlbUtleSwgY2xhc3M6IHRoaXMuYnVzaW5lc3NDbGFzcyB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXZlbnQuZmllbGQgPT0gJ2VkaXQnKSB7XHJcbiAgICAgIHRoaXMuX2VkaXRSb3coaXRlbUtleSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdkZWxldGUnKSB7XHJcbiAgICAgIHRoaXMuX2RlbGV0ZVJvdyhpdGVtS2V5KTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ2NvbnN1bHQnKSB7XHJcbiAgICAgIHRoaXMuX2NvbnN1bHRSb3coaXRlbUtleSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdkdXBsaWNhdGUnKSB7XHJcblxyXG4gICAgICBpZiAoIXRoaXMuYnVzaW5lc3NDbGFzcykge1xyXG4gICAgICAgIHRocm93IEVycm9yKFwiQnVzc2luZXNzIGNsYXNzIGlzIG5vdCBkZWZpbmVkICFcIik7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRoaXMuX2R1cGxpY2F0ZVJvdyhpdGVtS2V5KTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICd1cGxvYWQnKSB7XHJcbiAgICAgIGNvbnN0IGNvbmYgPSB7XHJcbiAgICAgICAgZGF0YToge30sXHJcbiAgICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgICAgd2lkdGg6IHRoaXMubW9kYWxTaXplIS53aWR0aCxcclxuICAgICAgICBoZWlnaHQ6IHRoaXMubW9kYWxTaXplIS5oZWlnaHQsXHJcbiAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcmVmID0gYXdhaXQgb3Blbk1vZGFsVXBsb2FkR3JpZCh0aGlzLl9pbmplY3RvciwgY29uZilcclxuXHJcbiAgICAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB0aGlzLl9jbG9zZU1vZGFsKHZhbCkpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5maWVsZCA9PSAnbm90ZXMnKSB7XHJcblxyXG4gICAgICBjb25zdCByZWYgPSBhd2FpdCBvcGVuTm90ZXNMaXN0KHRoaXMuX2luamVjdG9yKTtcclxuXHJcbiAgICAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB0aGlzLl9jbG9zZU1vZGFsKHZhbCkpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5maWVsZCA9PSAnZG93bmxvYWQnKSB7XHJcblxyXG4gICAgICB0aGlzLmZpY2hpZXJTZXJ2aWNlLmdldEJ5SWQoaXRlbUtleSkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNhdmVGaWxlKGRhdGEuY29udGVudSwgZGF0YS5ub21GaWNoaWVyQ29tcGxldCEpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ2luZm8nKSB7XHJcblxyXG4gICAgICB0aGlzLnJlY29yZEluZm9Qb3B1cFNlcnZpY2VcclxuICAgICAgICAuZ2V0SW5mbyh0aGlzLmJ1c2luZXNzQ2xhc3MhLCBpdGVtS2V5KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbW9kYWxTaXplID0gTW9kYWxTaXplRW51bS5FeHRyYUxhcmdlO1xyXG4gICAgICAgICAgICBsZXQgdGV4dCA9XHJcbiAgICAgICAgICAgICAgJ1VJRCA6ICAnICtcclxuICAgICAgICAgICAgICBpdGVtS2V5ICtcclxuICAgICAgICAgICAgICAnPEJSPkNyZWF0ZWQgYnkgOiAgJyArXHJcbiAgICAgICAgICAgICAgZGF0YS5jcmVhdGlvblVzZXIgK1xyXG4gICAgICAgICAgICAgICc8QlI+TW9kaWZpZWQgYnkgOiAnICtcclxuICAgICAgICAgICAgICBkYXRhLm1vZGlmVXNlciArXHJcbiAgICAgICAgICAgICAgJzxCUj5DcmVhdGVkIG9uIDogJyArXHJcbiAgICAgICAgICAgICAgZGF0YS5kYXRlU2Fpc2llICtcclxuICAgICAgICAgICAgICAnPEJSPk1vZGlmaWVkIG9uIDogJyArXHJcbiAgICAgICAgICAgICAgZGF0YS5kYXRlTW9kaWY7XHJcblxyXG4gICAgICAgICAgICBsZXQgY29uZjogRHluYW1pY0RpYWxvZ0NvbmZpZyA9IHtcclxuICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBVaWQ6IGl0ZW1LZXksXHJcbiAgICAgICAgICAgICAgICBidXNpbmVzc0NsYXNzOiB0aGlzLmJ1c2luZXNzQ2xhc3MsXHJcbiAgICAgICAgICAgICAgICBjcmVhdGlvblVzZXI6IGRhdGEuY3JlYXRpb25Vc2VyLFxyXG4gICAgICAgICAgICAgICAgbW9kaWZVc2VyOiBkYXRhLm1vZGlmVXNlcixcclxuICAgICAgICAgICAgICAgIGRhdGVTYWlzaWU6IGRhdGEuZGF0ZVNhaXNpZSxcclxuICAgICAgICAgICAgICAgIGRhdGVNb2RpZjogZGF0YS5kYXRlTW9kaWYsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICB3aWR0aDogJzkwcmVtJyxcclxuICAgICAgICAgICAgICBoZWlnaHQ6ICc4MHJlbScsXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3BlbihcclxuICAgICAgICAgICAgICBUc2lQb3B1cFRleHRWaWV3ZXJDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgY29uZlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT5cclxuICAgICAgICAgICAgICB0aGlzLl9jbG9zZU1vZGFsKHZhbClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9IFxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ2Zvcm0nKXtcclxuICAgICAgIGNvbnN0IG1vZGFsQ29uZmlnID0ge1xyXG4gICAgICAgIGRhdGE6IHt9LFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICcnLFxyXG4gICAgICAgIHdpZHRoOiB0aGlzLm1vZGFsU2l6ZSEud2lkdGgsXHJcbiAgICAgICAgaGVpZ2h0OiB0aGlzLm1vZGFsU2l6ZSEuaGVpZ2h0LFxyXG4gICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHJlZiA9IGF3YWl0IG9wZW5EeW5hbWljRm9ybU1vZGFsQ29tcG9uZW50KHRoaXMuX2luamVjdG9yLCBtb2RhbENvbmZpZylcclxuXHJcbiAgICAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB0aGlzLl9jbG9zZU1vZGFsKHZhbCkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuYnV0dG9uQ29sdW1uQ2xpY2tlZC5lbWl0KHtcclxuICAgICAgICBrZXk6IGV2ZW50LmtleSxcclxuICAgICAgICBmaWVsZDogZXZlbnQuZmllbGQsXHJcbiAgICAgICAgc2VsZWN0S2V5T25seTogdGhpcy5zZWxlY3RLZXlPbmx5LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmVGaWxlKGJhc2U2NERhdGE6IGFueSwgZmlsZU5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGJhc2U2NERhdGEpO1xyXG4gICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoYnl0ZUNoYXJhY3RlcnMubGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgYnl0ZU51bWJlcnNbaV0gPSBieXRlQ2hhcmFjdGVycy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0pO1xyXG5cclxuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG5cclxuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgYS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgYS5ocmVmID0gdXJsO1xyXG4gICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgYS5jbGljaygpO1xyXG5cclxuICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgfVxyXG5cclxuICBsb2FkKGV2ZW50OiB7IHJlcXVlc3Q6IElQYWdlZFJlcXVlc3Q7IGlzRm9yQ2FsZW5kYXI6IGJvb2xlYW4gfSkge1xyXG4gICAgdGhpcy5wYWdlZFJlcXVlc3QgPSBldmVudC5yZXF1ZXN0O1xyXG4gICAgdGhpcy5fc2V0Zm9ybUVuZHBvaW50Qm9keSgpO1xyXG4gICAgdGhpcy5fbG9hZERTKGV2ZW50LmlzRm9yQ2FsZW5kYXIpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RlZEl0ZW1zQ2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gcHJpdmF0ZSBtZXRob2RzXHJcbiAgcHJpdmF0ZSBfc2V0Zm9ybUVuZHBvaW50Qm9keSgpOiB2b2lkIHtcclxuICAgIGxldCBveDogYW55ID0gdGhpcy5fY2xvbmVQYWdlZFJlcXVlc3QodGhpcy5wYWdlZFJlcXVlc3QpO1xyXG4gICAgb3hbJ2dldEFsbERhdGEnXSA9IHRydWU7XHJcbiAgICB0aGlzLmZvcm1FbmRwb2ludEJvZHkgPSBKU09OLnN0cmluZ2lmeShveCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0TW9kZWxzKCkge1xyXG4gICAgXHJcbiAgICB0aGlzLnBhZ2UgPSB7XHJcbiAgICAgIGl0ZW1zOiBbXSxcclxuICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICBwYWdlTnVtYmVyOiAxLFxyXG4gICAgICB0b3RhbENvdW50OiAwLFxyXG4gICAgICB0b3RhbFBhZ2VzOiAwLFxyXG4gICAgICBzdW1tYXJpZXM6IFtdLFxyXG4gICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5wYWdlZFJlcXVlc3QgPSB7XHJcbiAgICAgIG1heFJlc3VsdENvdW50OiAxMCxcclxuICAgICAgc2tpcENvdW50OiAwLFxyXG4gICAgICBzb3J0aW5nOiBbXSxcclxuICAgICAga2V5d29yZDogJycsXHJcbiAgICAgIGZpbHRlcnM6IFtdLFxyXG4gICAgICBnZXRBbGxEYXRhOiBmYWxzZSxcclxuICAgICAgc3VtbWFyaWVzOiBbXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2FkRFMoaXNGb3JDYWxlbmRlcjogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBcclxuICAgIHRoaXMucGFnZS5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucGFnZSQubmV4dCh0aGlzLnBhZ2UpO1xyXG4gICAgdGhpcy5wYWdlZFJlcXVlc3QgPSB7XHJcbiAgICAgIC4uLnRoaXMucGFnZWRSZXF1ZXN0LFxyXG4gICAgICBnZXRBbGxEYXRhOiBpc0ZvckNhbGVuZGVyLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5jcnVkU2VydmljZSAhPSBudWxsICYmIHRoaXMuY3J1ZFNlcnZpY2UgIT0gdW5kZWZpbmVkKSB7XHJcblxyXG4gICAgICB0aGlzLmNydWRTZXJ2aWNlLmdldEFsbFBhZ2VkKHRoaXMucGFnZWRSZXF1ZXN0KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICh2YWx1ZTogSVBhZ2VkUmVzcG9uc2U8YW55PikgPT4ge1xyXG4gICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFnZS5pdGVtcyA9IHZhbHVlLml0ZW1zO1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2UudG90YWxDb3VudCA9IHZhbHVlLnRvdGFsQ291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMucGFnZS5zdW1tYXJpZXMgPSB2YWx1ZS5zdW1tYXJpZXMgPyB2YWx1ZS5zdW1tYXJpZXMgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5wYWdlLnRvdGFsUGFnZXMgPVxyXG4gICAgICAgICAgICAgICh0aGlzLnBhZ2UudG90YWxDb3VudCAtICAodGhpcy5wYWdlLnRvdGFsQ291bnQgJSB0aGlzLnBhZ2UucGFnZVNpemUpKSAvIHRoaXMucGFnZS5wYWdlU2l6ZSArIDE7XHJcblxyXG4gICAgICAgICAgICBpZih0aGlzLmlzQ3VzdG9tQ29sdW1uUmVuZGVyZWQgPT0gZmFsc2UgJiYgdmFsdWUuY3VzdG9tQ29sdW1uU2NoZW1hICYmIHZhbHVlLmN1c3RvbUNvbHVtblNjaGVtYS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLy8gQWRkIGN1c3RvbSBjb2x1bW5zIHRvIHRoZSBncmlkXHJcbiAgICAgICAgICAgICAgICB2YWx1ZS5jdXN0b21Db2x1bW5TY2hlbWEuZm9yRWFjaChjY3MgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgY3VzdG9tQ29sdW1uR3JpZDogR3JpZENvbHVtbiA9IHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IGNjcy5jb2x1bW5OYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBjY3MuY29sdW1uTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJJbnB1dFR5cGU6IGNjcy50eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzQ3VzdG9tQ29sdW1uOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMucHVzaChjdXN0b21Db2x1bW5HcmlkKVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNDdXN0b21Db2x1bW5SZW5kZXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucGFnZS5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnBhZ2UkLm5leHQodmFsdWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgdGhpcy5wYWdlLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2VkaXRSb3coaXRlbUtleTogYW55KSB7XHJcbiAgICB0aGlzLl9oYW5kbGVBY3Rpb25XaXRoQWxlcnRDaGVjayhDb21wb25lbnRfTW9kZXMuRURJVCwgaXRlbUtleSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kZWxldGVSb3coaXRlbUtleTogYW55KSB7XHJcbiAgICB0aGlzLl9oYW5kbGVBY3Rpb25XaXRoQWxlcnRDaGVjayhDb21wb25lbnRfTW9kZXMuREVMRVRFLCBpdGVtS2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbnN1bHRSb3coaXRlbUtleTogYW55KSB7XHJcbiAgICB0aGlzLl9oYW5kbGVBY3Rpb25XaXRoQWxlcnRDaGVjayhDb21wb25lbnRfTW9kZXMuQ09OU1VMVCwgaXRlbUtleSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2R1cGxpY2F0ZVJvdyhpdGVtS2V5OiBhbnkpIHtcclxuICAgIHRoaXMuX2hhbmRsZUFjdGlvbldpdGhBbGVydENoZWNrKENvbXBvbmVudF9Nb2Rlcy5EVVBMSUNBVEUsIGl0ZW1LZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRFbnRpdHlJbmZvKCkge1xyXG4gICAgaWYgKHRoaXMuYnVzaW5lc3NDbGFzcykge1xyXG4gICAgICB0aGlzLmVudGl0eUluZm8gPSBhd2FpdCB0aGlzLl9lbnRpdHlDb25maWdTZXJ2aWNlLmdldEVudGl0eUluZm9Gcm9tQ2FjaGUodGhpcy5idXNpbmVzc0NsYXNzKTtcclxuICAgICAgaWYgKCF0aGlzLmVudGl0eUluZm8pIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oYE5vIGVudGl0eSBpbmZvIGZvdW5kIGZvciAke3RoaXMuYnVzaW5lc3NDbGFzc31gKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfb3Blbk1vZGFsKG1vZGU6IHN0cmluZywgaXRlbUtleTogYW55LCBkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuY3J1ZFNlcnZpY2UhLmlzRHVwbGljYXRlID0gbW9kZSA9PT0gTW9kZXMuZHVwbGljYXRlO1xyXG4gICAgbGV0IHdvcmtmbG93RW50aXR5SW5mb3JtYXRpb246IHdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlc3BvbnNlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXHJcblxyXG4gICAgaWYgKHRoaXMuYnVzaW5lc3NDbGFzcykge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMuZW50aXR5SW5mbyA9IGF3YWl0IHRoaXMuX2VudGl0eUNvbmZpZ1NlcnZpY2UuZ2V0RW50aXR5SW5mb0Zyb21DYWNoZSh0aGlzLmJ1c2luZXNzQ2xhc3MpXHJcbiAgICAgICAgd29ya2Zsb3dFbnRpdHlJbmZvcm1hdGlvbiA9IGF3YWl0IHRoaXMuZ2V0V29ya2Zsb3dFbnRpdHlJbmZvcm1hdGlvbih0aGlzLmJ1c2luZXNzQ2xhc3MsIGl0ZW1LZXkpO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlcnJvcil7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBjb25mOiBEeW5hbWljRGlhbG9nQ29uZmlnO1xyXG5cclxuICAgIGlmICh0aGlzLm1vZGFsU2l6ZSAhPSBudWxsICYmIHRoaXMubW9kYWxTaXplICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25mID0ge1xyXG4gICAgICAgIGRhdGE6IHsgaWQ6IGl0ZW1LZXksIG1vZGU6IG1vZGUsIGN1c3RvbURhdGE6IGRhdGEsIHdvcmtmbG93SW5mb3JtYXRpb246IHdvcmtmbG93RW50aXR5SW5mb3JtYXRpb24sIGVudGl0eUluZm86IHRoaXMuZW50aXR5SW5mbyB9LFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICcnLFxyXG4gICAgICAgIHdpZHRoOiB0aGlzLm1vZGFsU2l6ZS53aWR0aCxcclxuICAgICAgICBoZWlnaHQ6IHRoaXMubW9kYWxTaXplLmhlaWdodCxcclxuICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgICB0ZW1wbGF0ZXM6IHtcclxuICAgICAgICAgIGZvb3RlcjogVHNpRm9ybU1vZGFsRm9vdGVyQ29tcG9uZW50LFxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbmYgPSB7XHJcbiAgICAgICAgZGF0YTogeyBpZDogaXRlbUtleSwgbW9kZTogbW9kZSwgY3VzdG9tRGF0YTogZGF0YSwgd29ya2Zsb3dJbmZvcm1hdGlvbjogd29ya2Zsb3dFbnRpdHlJbmZvcm1hdGlvbiB9LFxyXG4gICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgdGhpcy5jdWRDb21wb25lbnQgPT0gJ3N0cmluZycpIHtcclxuICAgICAgdGhpcy5jdWRDb21wb25lbnQgPSBUeXBlUmVnaXN0cnlIZWxwZXIuZ2V0VHlwZSh0aGlzLmN1ZENvbXBvbmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fZGlhbG9nUmVmID0gdGhpcy5fdHNpTW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5jdWRDb21wb25lbnQsIGNvbmYpO1xyXG5cclxuICAgIHRoaXMuX2RpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB0aGlzLl9jbG9zZU1vZGFsKHZhbCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xvc2VNb2RhbCh2YWw/OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2YWwgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5fbG9hZERTKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kaWFsb2dSZWY/LmRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Nsb25lUGFnZWRSZXF1ZXN0KHJlcXVlc3Q6IElQYWdlZFJlcXVlc3QpOiBJUGFnZWRSZXF1ZXN0IHtcclxuICAgIGxldCBjbG9uZTogSVBhZ2VkUmVxdWVzdCA9IHtcclxuICAgICAgbWF4UmVzdWx0Q291bnQ6IHJlcXVlc3QubWF4UmVzdWx0Q291bnQsXHJcbiAgICAgIHNraXBDb3VudDogcmVxdWVzdC5za2lwQ291bnQsXHJcbiAgICAgIHNvcnRpbmc6IHJlcXVlc3Quc29ydGluZyxcclxuICAgICAga2V5d29yZDogcmVxdWVzdC5rZXl3b3JkLFxyXG4gICAgICBmaWx0ZXJzOiByZXF1ZXN0LmZpbHRlcnMsXHJcbiAgICAgIGdldEFsbERhdGE6IHJlcXVlc3QuZ2V0QWxsRGF0YSxcclxuICAgICAgc3VtbWFyaWVzOiByZXF1ZXN0LnN1bW1hcmllcyxcclxuICAgIH07XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKGRhdGE6IGFueSkge1xyXG4gICAgaWYgKGRhdGEgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLl9sb2FkRFMoKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGRpc3BsYXlTZWFyY2hGaWVsZHMoKSB7XHJcbiAgICB0aGlzLnNob3dTZWFyY2hGaWVsZCA9ICF0aGlzLnNob3dTZWFyY2hGaWVsZDtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBjYWxlbmRlclxyXG4gIGhhbmRsZUNhbGVuZGFyRXZlbnRDbGljayhpdGVtOiBhbnkpIHtcclxuICAgIHN3aXRjaCAoaXRlbS5tb2RlKSB7XHJcbiAgICAgIGNhc2UgQ29tcG9uZW50X01vZGVzLkNPTlNVTFQ6XHJcbiAgICAgICAgdGhpcy5fY29uc3VsdFJvdyhpdGVtLmlkKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb21wb25lbnRfTW9kZXMuQ1JFQVRFOlxyXG4gICAgICAgIHRoaXMuX29wZW5Nb2RhbChDb21wb25lbnRfTW9kZXMuQ1JFQVRFLCBudWxsLCBpdGVtLmRhdGVEZWJ1dCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29tcG9uZW50X01vZGVzLkVESVQ6XHJcbiAgICAgICAgdGhpcy5fZWRpdFJvdyhpdGVtLmlkKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb21wb25lbnRfTW9kZXMuRFVQTElDQVRFOlxyXG4gICAgICAgIC8vIHRvZG9cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlTGlzdFZpZXcoKSB7XHJcbiAgICB0aGlzLnNob3dDYXJkVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93Q2FsZW5kZXJWaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dLYW5iYW5WaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLl9sb2FkRFMoKTtcclxuICAgIHRoaXMuY3VycmVudEljb24gPSBcInBpIHBpLWFsaWduLWp1c3RpZnlcIjtcclxuICAgIHRoaXMuY3VycmVudFRvb2x0aXAgPSBcInNoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfbGlzdF92aWV3XCI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvZ2dsZUNhbGVuZGVyVmlldygpIHtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGVyVmlldyA9ICF0aGlzLnNob3dDYWxlbmRlclZpZXc7XHJcbiAgICB0aGlzLnNob3dDYXJkVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93S2FuYmFuVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5fbG9hZERTKHRoaXMuc2hvd0NhbGVuZGVyVmlldyk7XHJcbiAgICB0aGlzLmN1cnJlbnRJY29uID0gXCJwaSBwaS1jYWxlbmRhclwiO1xyXG4gICAgdGhpcy5jdXJyZW50VG9vbHRpcCA9IFwic2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9jYWxlbmRlcl92aWV3XCI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvZ2dsZUNhcmRWaWV3KCkge1xyXG4gICAgdGhpcy5zaG93Q2FyZFZpZXcgPSAhdGhpcy5zaG93Q2FyZFZpZXc7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRlclZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0thbmJhblZpZXcgPSBmYWxzZTtcclxuICAgIC8vIHRoaXMuX2xvYWREUyh0aGlzLnNob3dDYXJkVmlldyk7XHJcbiAgICB0aGlzLmN1cnJlbnRJY29uID0gXCJwaSBwaS1pZC1jYXJkXCI7XHJcbiAgICB0aGlzLmN1cnJlbnRUb29sdGlwID0gXCJzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhcmRfdmlld1wiO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVLYW5iYW5WaWV3KCkge1xyXG4gICAgdGhpcy5zaG93S2FuYmFuVmlldyA9ICF0aGlzLnNob3dLYW5iYW5WaWV3O1xyXG4gICAgdGhpcy5zaG93Q2FyZFZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGVyVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5fbG9hZERTKCk7XHJcbiAgICB0aGlzLmN1cnJlbnRJY29uID0gXCJwaSBwaS10aC1sYXJnZVwiO1xyXG4gICAgdGhpcy5jdXJyZW50VG9vbHRpcCA9IFwic2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9rYW5iYW5fdmlld1wiO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdGNCcpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5vcGVuTmV3KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgaGFuZGxlQWN0aW9uVmlld0NsaWNrKCkge1xyXG4gICAgdGhpcy5jbGlja0NvdW50Kys7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmNsaWNrQ291bnQpIHtcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIHRoaXMudG9nZ2xlTGlzdFZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICB0aGlzLnRvZ2dsZUNhbGVuZGVyVmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAzOlxyXG4gICAgICAgIHRoaXMudG9nZ2xlQ2FyZFZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgNDpcclxuICAgICAgICB0aGlzLnRvZ2dsZUthbmJhblZpZXcoKTtcclxuICAgICAgICB0aGlzLmNsaWNrQ291bnQgPSAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLmNsaWNrQ291bnQgPSAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgX2hhbmRsZUFjdGlvbldpdGhBbGVydENoZWNrKG1vZGU6IENvbXBvbmVudF9Nb2RlcywgaXRlbUtleTogYW55KSB7XHJcbiAgICAvLyBUT0RPIEBNZWRBbGkgdG8gYmUgZml4ZWRcclxuICAgIGlmICh0aGlzLmJ1c2luZXNzQ2xhc3MgJiYgdGhpcy5idXNpbmVzc0NsYXNzICE9PSBcIk5vdGVzXCIpIHtcclxuICAgICAgdGhpcy5ub3Rlc1NlcnZpY2UuZ2V0QWxlcnROb3RlcyhpdGVtS2V5Py50b1N0cmluZygpLCB0aGlzLmJ1c2luZXNzQ2xhc3MpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBOb3Rlc0dyb3VwZWRCeVVzZXJSZXNwb25zZVtdKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9vcGVuTW9kYWwobW9kZSwgaXRlbUtleSwgdGhpcy5fbW9kYWxEYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCByZWYgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3BlbihUc2lOb3Rlc0F2ZXJ0aXJDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICBkYXRhOiB7IGdyb3VwZWROb3RlczogcmVzcG9uc2UgfSxcclxuICAgICAgICAgICAgICBzdHlsZUNsYXNzOiAnJyxcclxuICAgICAgICAgICAgICB3aWR0aDogTW9kYWxTaXplRW51bS5TbWFsbC53aWR0aCxcclxuICAgICAgICAgICAgICBoZWlnaHQ6IE1vZGFsU2l6ZUVudW0uU21hbGwuaGVpZ2h0LFxyXG4gICAgICAgICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fY2xvc2VNb2RhbCh2YWwpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX29wZW5Nb2RhbChtb2RlLCBpdGVtS2V5LCB0aGlzLl9tb2RhbERhdGEpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIG5vdGVzIGZvciBhbGVydCcsIGVycik7XHJcbiAgICAgICAgICB0aGlzLl9vcGVuTW9kYWwobW9kZSwgaXRlbUtleSwgdGhpcy5fbW9kYWxEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuX29wZW5Nb2RhbChtb2RlLCBpdGVtS2V5LCB0aGlzLl9tb2RhbERhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TdGF0dXNGaWx0ZXJDaGFuZ2VkKGV2dDogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhldnQpXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydENsaWNrZWQoKXtcclxuICAgIHRoaXMub25JbXBvcnRGcm9tT3V0bG9va0NsaWNrZWQuZW1pdCh7XHJcbiAgICAgIGJ1c2luZXNzQ2xhc3M6IHRoaXMuYnVzaW5lc3NDbGFzcyxcclxuICAgICAgc2VhcmNoRmllbGRzOiB0aGlzLnNlYXJjaEZpZWxkc1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGluaXRpYWxpc2VTaG93S2FuYmFuVmlld09mV29ya0Zsb3dFdGF0KClcclxuICB7XHJcbiAgICBpZih0aGlzLmJ1c2luZXNzQ2xhc3MpXHJcbiAgICB7XHJcbiAgICAgIHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UuZ2V0V29ya2Zsb3dFdGF0QnlDbGFzc05hbWVBbmREZXNjcmltaW5hdG9yKHRoaXMuYnVzaW5lc3NDbGFzcywgdGhpcy5kZXNjcmltaW5hdG9yVmFsdWUpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgaWYoZGF0YSAhPSBudWxsICYmIGRhdGEubGVuZ3RoID4gMClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0thbmJhblZpZXdPZldvcmtGbG93RXRhdCA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gIFxyXG4gIDxwLXRvb2xiYXIgc3R5bGVDbGFzcz1cImJvcmRlci1yYWRpdXMtNyBtYi0xIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG5vLXBhZFwiIFxyXG4gICAgKm5nSWY9XCIoc2hvd0FkZEJ1dHRvbiB8fCBzZWFyY2hGaWVsZHMgfHwgZm9ybUVuZHBvaW50IHx8IGJ1c2luZXNzQ2xhc3MpICYmIHNob3dSZXBvcnRpbmdcIj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwibGVmdFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBteC0yXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dBZGRCdXR0b25cIiBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJhZGRfYnV0dG9uXCI+XHJcbiAgICAgICAgICA8VHNpLUJ1dHRvbiBpY29uPVwicGkgcGktcGx1c1wiIFxyXG4gICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiBcclxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9XCJzaGFyZWRfdHNpX2NvbXBvbmVudF9hZGRfdmlld1wiIFxyXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tc3VjY2VzcyBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCIgXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuTmV3KClcIj5cclxuICAgICAgICAgIDwvVHNpLUJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoRmllbGRzXCIgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwic2hvd19zZWFyY2hfZmllbGRzX2J1dHRvblwiPlxyXG4gICAgICAgICAgPFRzaS1CdXR0b24gaWNvbj1cInBpIHBpLXNsaWRlcnMtaFwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PVwic2hhcmVkX3RzaV9jb21wb25lbnRfbWVudVwiXHJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5IGhvdmVyOnNoYWRvdy02IHt7IHNob3dTZWFyY2hGaWVsZCA/ICdwLWJ1dHRvbi1zZWNvbmRhcnknIDogJ3AtYnV0dG9uLXN1Y2Nlc3MnIH19XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRpc3BsYXlTZWFyY2hGaWVsZHMoKVwiPlxyXG4gICAgICAgICAgPC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0ltcG9ydEZyb21PdXRsb29rQnV0dG9uXCIgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwiaW1wb3J0RnJvbU91dGxvb2tfYnV0dG9uXCI+XHJcbiAgICAgICAgICA8VHNpLUJ1dHRvbiBpY29uPVwicGkgcGktZW52ZWxvcGVcIiBcclxuICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCIgXHJcbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PVwic2hhcmVkX3RzaV9jb21wb25lbnRfaW1wb3J0X2Zyb21fb3V0bG9va1wiIFxyXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24taW5mbyBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCIgXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkltcG9ydENsaWNrZWQoKVwiPiBcclxuICAgICAgICAgIDwvVHNpLUJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwidG9nZ2xlX2FjdGlvbnNfdmlld19idXR0b25cIj5cclxuICAgICAgICAgIDxwLXNwbGl0QnV0dG9uXHJcbiAgICAgICAgICAgIFtpY29uXT1cImN1cnJlbnRJY29uXCJcclxuICAgICAgICAgICAgW21vZGVsXT1cInZpZXdPcHRpb25zXCJcclxuICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlQWN0aW9uVmlld0NsaWNrKClcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcF09XCJjdXJyZW50VG9vbHRpcCB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHkgcC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1wcmltYXJ5IGgtMnJlbSBob3ZlcjpzaGFkb3ctNlwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPCEtLSA8VHNpLUJ1dHRvblxyXG4gICAgICAgICAgICBbaWNvbl09XCJjdXJyZW50SWNvblwiXHJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWVsZW1lbnQgcC1idXR0b24tcHJpbWFyeSAgaC0ycmVtIHAtYnV0dG9uIHAtY29tcG9uZW50IHAtYnV0dG9uLWljb24tb25seVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVBY3Rpb25WaWV3Q2xpY2soKVwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwVGV4dF09XCJjdXJyZW50VG9vbHRpcCB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICA8L1RzaS1CdXR0b24+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICBcclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicmlnaHRcIj5cclxuICAgICAgICA8YXBwLXJlcG9ydGluZyAqbmdJZj1cIihmb3JtRW5kcG9pbnQgfHwgYnVzaW5lc3NDbGFzcylcIiBcclxuICAgICAgICAgIFtmb3JtRW5kcG9pbnRdPVwiZm9ybUVuZHBvaW50XCIgXHJcbiAgICAgICAgICBbZm9ybU5hbWVdPVwiZm9ybU5hbWVcIlxyXG4gICAgICAgICAgW2Zvcm1FbmRwb2ludEJvZHldPVwiZm9ybUVuZHBvaW50Qm9keVwiIFxyXG4gICAgICAgICAgW2lzRm9ybUVuZHBvaW50UGFnZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbYnVzaW5lc3NDbGFzc109XCJidXNpbmVzc0NsYXNzXCJcclxuICAgICAgICAgIFtyZXBvcnREaXNjcmltaW5hdG9yXT1cImRlc2NyaW1pbmF0b3JWYWx1ZVwiXHJcbiAgICAgICAgICAocmVmcmVzaERhdGEpPVwicmVmcmVzaCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtmaWx0ZXJzSHRtbFRlbXBsYXRlXT1cImZpbHRlcnNIdG1sVGVtcGxhdGVcIlxyXG4gICAgICAgICAgW3BhZ2VkUmVxdWVzdF09XCJwYWdlZFJlcXVlc3RcIlxyXG4gICAgICAgICAgW2N1ZENvbXBvbmVudF09XCJjdWRDb21wb25lbnRcIiBcclxuICAgICAgICAgIFtjb25maWdNb2RlQnV0dG9uSWRdPVwiY29uZmlnTW9kZUJ1dHRvbklkXCJcclxuICAgICAgICAgIFtzaG93Tm90ZUJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbc2hvd0luZm9CdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW3Nob3dVcGxvYWRCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgID48L2FwcC1yZXBvcnRpbmc+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10b29sYmFyPlxyXG5cclxuICA8ZGl2PlxyXG5cclxuICAgIDxUc2ktR2VuZXJpYy1HcmlkXHJcbiAgICAgIFtmb3JtTmFtZV09XCJmb3JtTmFtZVwiXHJcbiAgICAgIFtjcnVkU2VydmljZV09XCJjcnVkU2VydmljZVwiXHJcbiAgICAgIFtzaG93U2VhcmNoRmllbGRdPVwic2hvd1NlYXJjaEZpZWxkXCJcclxuICAgICAgW3NlYXJjaEZpZWxkc109XCJzZWFyY2hGaWVsZHNcIlxyXG4gICAgICBbZGVzY3JpbWluYXRvclZhbHVlXT1cImRlc2NyaW1pbmF0b3JWYWx1ZVwiXHJcbiAgICAgIFtoZWFkZXJdPVwiaGVhZGVyXCJcclxuICAgICAgW3BhZ2VdPVwicGFnZVwiXHJcbiAgICAgIFtwYWdlZFJlcXVlc3RdPVwicGFnZWRSZXF1ZXN0XCJcclxuICAgICAgW2NvbHVtbnNdPVwic2VsZWN0ZWRDb2x1bW5zXCJcclxuICAgICAgW3Nob3dIZWFkZXJGaWx0ZXJzXT1cInNob3dIZWFkZXJGaWx0ZXJzXCJcclxuICAgICAgWyhmaWx0ZXJzSHRtbFRlbXBsYXRlKV09XCJmaWx0ZXJzSHRtbFRlbXBsYXRlXCJcclxuICAgICAgW3ByZXNlbnRhdGlvblNldHRpbmdzXT1cInByZXNlbnRhdGlvblNldHRpbmdzXCJcclxuICAgICAgKGxvYWQpPVwibG9hZCgkZXZlbnQpXCJcclxuICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQ29sdW1uQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgW3NlbGVjdEtleU9ubHldPVwic2VsZWN0S2V5T25seVwiXHJcbiAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cInNlbGVjdGlvbk1vZGVcIlxyXG4gICAgICBba2V5XT1cImtleVwiXHJcbiAgICAgIFsoc2VsZWN0ZWRJdGVtcyldPVwic2VsZWN0ZWRJdGVtc1wiXHJcbiAgICAgIChzZWxlY3RlZEl0ZW1zQ2hhbmdlKT1cIm9uU2VsZWN0ZWRJdGVtc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgKHNlYXJjaEZpZWxkc1ZhbHVlQ2hhbmdlZCk9XCJzZWFyY2hGaWVsZFZhbHVlQ2hhbmdlcygkZXZlbnQpXCJcclxuICAgICAgW3NlYXJjaE9uSW5pdF09XCJzZWFyY2hPbkluaXRcIlxyXG4gICAgICBbc2hvd0V4cG9ydEJ1dHRvbl09XCJzaG93RXhwb3J0QnV0dG9uXCJcclxuICAgICAgW3Nob3dHbG9iYWxTZWFyY2hdPVwic2hvd0dsb2JhbFNlYXJjaFwiXHJcbiAgICAgIFtpc1NlYXJjaEJ1dHRvbkRpc2FibGVkXT1cImlzU2VhcmNoQnV0dG9uRGlzYWJsZWRcIlxyXG4gICAgICBbc2hvd0NhbGVuZGVyVmlld109XCJzaG93Q2FsZW5kZXJWaWV3XCJcclxuICAgICAgW3Nob3dDYXJkVmlld109XCJzaG93Q2FyZFZpZXdcIlxyXG4gICAgICBbc2hvd0thbmJhblZpZXddPVwic2hvd0thbmJhblZpZXdcIlxyXG4gICAgICBbc2hvd0thbmJhblZpZXdPZldvcmtGbG93RXRhdF09XCJzaG93S2FuYmFuVmlld09mV29ya0Zsb3dFdGF0XCJcclxuICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiYnVzaW5lc3NDbGFzc1wiXHJcbiAgICAgIFtjYWxlbmRlclNjaGVtYV09XCJjYWxlbmRlclNjaGVtYVwiXHJcbiAgICAgIFtjdWRDb21wb25lbnRdPVwiY3VkQ29tcG9uZW50XCIgXHJcbiAgICAgIFttb2RhbFNpemVdPVwibW9kYWxTaXplXCIgXHJcbiAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgIFtwYWdlJF09XCJwYWdlJFwiXHJcbiAgICAgIFtlbnRpdHlJbmZvXT1cImVudGl0eUluZm9cIlxyXG4gICAgICAoY2FsZW5kYXJFdmVudENsaWNrKT1cImhhbmRsZUNhbGVuZGFyRXZlbnRDbGljaygkZXZlbnQpXCJcclxuICAgICAgKHN0YXR1c0ZpbHRlckNoYW5nZWQpPVwib25TdGF0dXNGaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgPjwvVHNpLUdlbmVyaWMtR3JpZD5cclxuICA8L2Rpdj5cclxuICBcclxuPC9kaXY+XHJcbiJdfQ==
|