ngx-histaff-alpha 2.3.2 → 2.3.4

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.
Files changed (50) hide show
  1. package/esm2022/lib/app/libraries/core-contract-seeker/core-contract-seeker/core-contract-seeker.component.mjs +5 -3
  2. package/esm2022/lib/app/libraries/core-control/core-control/core-control.component.mjs +3 -3
  3. package/esm2022/lib/app/libraries/core-control-no-grid-buffer/core-control-no-grid-buffer/core-control-no-grid-buffer.component.mjs +2 -2
  4. package/esm2022/lib/app/libraries/core-currency-input/core-currency-input/core-currency-input.component.mjs +9 -6
  5. package/esm2022/lib/app/libraries/core-employee-seeker/core-employee-seeker/core-employee-seeker.component.mjs +5 -3
  6. package/esm2022/lib/app/libraries/core-form/core-form/enum-interfaces.mjs +1 -1
  7. package/esm2022/lib/app/libraries/core-form-control-seeker/EnumCoreSeekerColumn.mjs +95 -0
  8. package/esm2022/lib/app/libraries/core-form-control-seeker/core-form-control-seeker/core-form-control-seeker.component.mjs +89 -29
  9. package/esm2022/lib/app/libraries/core-grid-buffer/core-grid-buffer/core-grid-buffer.component.mjs +1 -1
  10. package/esm2022/lib/app/libraries/core-job-seeker/core-job-seeker.component.mjs +6 -3
  11. package/esm2022/lib/app/libraries/core-page-edit/core-page-edit.component.mjs +6 -1
  12. package/esm2022/lib/app/libraries/core-page-list/core-page-list.component.mjs +2 -2
  13. package/esm2022/lib/app/libraries/core-page-list-content/core-page-list-content/core-page-list-content.component.mjs +2 -2
  14. package/esm2022/lib/app/libraries/core-position-concurrent-seeker/core-position-concurrent-seeker/core-position-concurrent-seeker.component.mjs +5 -3
  15. package/esm2022/lib/app/libraries/core-position-seeker/core-position-seeker/core-position-seeker.component.mjs +5 -3
  16. package/esm2022/lib/app/libraries/core-table/ICoreTableColumnItem.mjs +1 -1
  17. package/esm2022/lib/app/libraries/core-table/core-table.component.mjs +7 -5
  18. package/esm2022/lib/app/libraries/core-wage-seeker/core-wage-seeker/core-wage-seeker.component.mjs +5 -3
  19. package/esm2022/lib/app/libraries/core-working-seeker/core-working-seeker/core-working-seeker.component.mjs +5 -3
  20. package/esm2022/lib/app/libraries/decision/decision.component.mjs +4 -2
  21. package/esm2022/lib/app/libraries/huconcurrently/huconcurrently.component.mjs +6 -4
  22. package/esm2022/lib/app/libraries/job/job.component.mjs +21 -11
  23. package/esm2022/lib/app/libraries/position/position.component.mjs +4 -2
  24. package/esm2022/lib/app/libraries/staffprofile/staffprofile.component.mjs +4 -2
  25. package/esm2022/lib/app/libraries/wage/wage.component.mjs +4 -64
  26. package/esm2022/lib/app/root/in-memory/in-memory/in-memory.component.mjs +1 -1
  27. package/esm2022/public-api.mjs +2 -1
  28. package/fesm2022/ngx-histaff-alpha.mjs +269 -134
  29. package/fesm2022/ngx-histaff-alpha.mjs.map +1 -1
  30. package/lib/app/libraries/core-contract-seeker/core-contract-seeker/core-contract-seeker.component.d.ts +3 -1
  31. package/lib/app/libraries/core-currency-input/core-currency-input/core-currency-input.component.d.ts +3 -2
  32. package/lib/app/libraries/core-employee-seeker/core-employee-seeker/core-employee-seeker.component.d.ts +3 -1
  33. package/lib/app/libraries/core-form/core-form/enum-interfaces.d.ts +3 -1
  34. package/lib/app/libraries/core-form-control-seeker/EnumCoreSeekerColumn.d.ts +87 -0
  35. package/lib/app/libraries/core-form-control-seeker/core-form-control-seeker/core-form-control-seeker.component.d.ts +16 -2
  36. package/lib/app/libraries/core-job-seeker/core-job-seeker.component.d.ts +3 -1
  37. package/lib/app/libraries/core-position-concurrent-seeker/core-position-concurrent-seeker/core-position-concurrent-seeker.component.d.ts +3 -1
  38. package/lib/app/libraries/core-position-seeker/core-position-seeker/core-position-seeker.component.d.ts +3 -1
  39. package/lib/app/libraries/core-table/ICoreTableColumnItem.d.ts +8 -0
  40. package/lib/app/libraries/core-table/core-table.component.d.ts +2 -1
  41. package/lib/app/libraries/core-wage-seeker/core-wage-seeker/core-wage-seeker.component.d.ts +3 -1
  42. package/lib/app/libraries/core-working-seeker/core-working-seeker/core-working-seeker.component.d.ts +3 -1
  43. package/lib/app/libraries/decision/decision.component.d.ts +1 -1
  44. package/lib/app/libraries/huconcurrently/huconcurrently.component.d.ts +1 -1
  45. package/lib/app/libraries/job/job.component.d.ts +2 -2
  46. package/lib/app/libraries/position/position.component.d.ts +1 -1
  47. package/lib/app/libraries/staffprofile/staffprofile.component.d.ts +1 -1
  48. package/lib/app/libraries/wage/wage.component.d.ts +1 -1
  49. package/package.json +1 -1
  50. package/public-api.d.ts +1 -0
@@ -283,7 +283,7 @@ export class PositionComponent extends BaseComponent {
283
283
  }
284
284
  }
285
285
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PositionComponent, deps: [{ token: i1.PositionEditService }, { token: i2.MultiLanguageService }, { token: i3.ActivatedRoute }, { token: i4.OrganizationService }, { token: i5.AlertService }, { token: i6.DialogService }, { token: i7.AppService }, { token: i8.LayoutService }, { token: i9.CorePageListService }, { token: i10.PositionTransferService }], target: i0.ɵɵFactoryTarget.Component }); }
286
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: PositionComponent, isStandalone: true, selector: "cms-app-position", inputs: { hideHeader: "hideHeader" }, outputs: { onInstanceCreated: "onInstanceCreated" }, viewQueries: [{ propertyName: "isTDV", first: true, predicate: ["isTDV"], descendants: true }, { propertyName: "isNotot", first: true, predicate: ["isNotot"], descendants: true }, { propertyName: "sticker", first: true, predicate: ["sticker"], descendants: true }, { propertyName: "concurrentStatus", first: true, predicate: ["concurrentStatus"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"position-profile-container\">\r\n <core-page-list [apiDefinition]=\"apiDefinition\" [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\"\r\n [title]=\"title\" [left]=\"orgTree\" [normalMode]=\"true\" [outerParam$]=\"outerParam$\"\r\n [outerInOperators]=\"outerInOperators\" [autoResizeWithWindow]=\"true\"\r\n (corePageHeaderButtonClick)=\"onCorePageHeaderButtonClick($event)\"\r\n (selectedIdsChange)=\"onSelectedIdsChangeeee($event)\"\r\n (onInstanceCreated)=\"onInstanceCreatedLocal($event)\"></core-page-list>\r\n\r\n <ng-template #orgTree>\r\n <core-org-tree [(ngModel)]=\"orgIds\" (ngModelChange)=\"onOrgIdsChange($event)\">\r\n </core-org-tree>\r\n </ng-template>\r\n\r\n <ng-template #isTDV let-isTDV=\"context.isTDV\">\r\n <core-checkbox [disabled]=\"true\" [inputValue]=\"isTDV\"></core-checkbox>\r\n </ng-template>\r\n\r\n <ng-template #isNotot let-isNotot=\"context.isNotot\">\r\n <core-checkbox [disabled]=\"true\" [inputValue]=\"isNotot\"></core-checkbox>\r\n </ng-template>\r\n\r\n <ng-template #sticker let-code=\"context.active\">\r\n <core-status-sticker [code]=\"code\"></core-status-sticker>\r\n </ng-template>\r\n <ng-template #concurrentStatus let-concurrentStatus=\"context.isMaster\">\r\n <core-checkbox [disabled]=\"true\" [inputValue]=\"concurrentStatus\"></core-checkbox>\r\n </ng-template>\r\n</div>", styles: [".position-profile-container .b-r{border-right:1px solid #ccc;padding-top:.5rem!important}.position-profile-container .p-l{padding-left:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CorePageListComponent, selector: "core-page-list", inputs: ["normalMode", "hideHeader", "hideButtonGroup", "seekerMode", "mccMode", "height", "headerWrap", "headerFirstRowHeight", "enableTimeZoneConverterForDateTimePeriodParameters", "showParamKit", "datePeriodComparisonFor", "datePeriodComparisonForLabelKey", "statusInclusionFor", "statusInclusionForLabelKey", "statusOptionsApi", "hideDatePeriodComparison", "hideStatusInclusion", "title", "hasIdOfStringType", "hideCheck", "apiDefinition", "columns", "frozen", "inlineTools", "inlineToolItems", "editRoute", "crud", "showListInlineTools", "top", "left", "hideLeft", "outerParam$", "outerSort", "outerFilterOperators", "outerInOperators", "autoResizeWithWindow", "extraManualOffset", "wrap", "rowHeight", "selfResolveCorePageHeaderButtonClick", "clearData$", "deleteValidateFn", "generateTemplateRequest", "importPreviewPath", "columnSearchDefaultOpen", "fixedPageSize", "disableDoubleClick", "noPaddingCell", "disableHighlightOnClick", "loading$", "excludedIds$"], outputs: ["corePageHeaderButtonClick", "rowClick", "rowDoubleClick", "selectedIdsChange", "selectedDataChange", "onInstanceCreated", "onInputFileBase64DataReady"] }, { kind: "component", type: CoreOrgTreeComponent, selector: "core-org-tree", inputs: ["lineColor", "fullWidthMode", "accessorMode", "fullRendering", "height", "disabledLoopExpand", "showCheckInheritance", "excludedIds$"], outputs: ["itemDoubleClick", "itemClick"] }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "component", type: CoreStatusStickerComponent, selector: "core-status-sticker", inputs: ["code", "isTrueCode"] }], encapsulation: i0.ViewEncapsulation.None }); }
286
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: PositionComponent, isStandalone: true, selector: "cms-app-position", inputs: { hideHeader: "hideHeader", columns: "columns" }, outputs: { onInstanceCreated: "onInstanceCreated" }, viewQueries: [{ propertyName: "isTDV", first: true, predicate: ["isTDV"], descendants: true }, { propertyName: "isNotot", first: true, predicate: ["isNotot"], descendants: true }, { propertyName: "sticker", first: true, predicate: ["sticker"], descendants: true }, { propertyName: "concurrentStatus", first: true, predicate: ["concurrentStatus"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"position-profile-container\">\r\n <core-page-list [apiDefinition]=\"apiDefinition\" [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\"\r\n [title]=\"title\" [left]=\"orgTree\" [normalMode]=\"true\" [outerParam$]=\"outerParam$\"\r\n [outerInOperators]=\"outerInOperators\" [autoResizeWithWindow]=\"true\"\r\n (corePageHeaderButtonClick)=\"onCorePageHeaderButtonClick($event)\"\r\n (selectedIdsChange)=\"onSelectedIdsChangeeee($event)\"\r\n (onInstanceCreated)=\"onInstanceCreatedLocal($event)\"></core-page-list>\r\n\r\n <ng-template #orgTree>\r\n <core-org-tree [(ngModel)]=\"orgIds\" (ngModelChange)=\"onOrgIdsChange($event)\">\r\n </core-org-tree>\r\n </ng-template>\r\n\r\n <ng-template #isTDV let-isTDV=\"context.isTDV\">\r\n <core-checkbox [disabled]=\"true\" [inputValue]=\"isTDV\"></core-checkbox>\r\n </ng-template>\r\n\r\n <ng-template #isNotot let-isNotot=\"context.isNotot\">\r\n <core-checkbox [disabled]=\"true\" [inputValue]=\"isNotot\"></core-checkbox>\r\n </ng-template>\r\n\r\n <ng-template #sticker let-code=\"context.active\">\r\n <core-status-sticker [code]=\"code\"></core-status-sticker>\r\n </ng-template>\r\n <ng-template #concurrentStatus let-concurrentStatus=\"context.isMaster\">\r\n <core-checkbox [disabled]=\"true\" [inputValue]=\"concurrentStatus\"></core-checkbox>\r\n </ng-template>\r\n</div>", styles: [".position-profile-container .b-r{border-right:1px solid #ccc;padding-top:.5rem!important}.position-profile-container .p-l{padding-left:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CorePageListComponent, selector: "core-page-list", inputs: ["normalMode", "hideHeader", "hideButtonGroup", "seekerMode", "mccMode", "height", "headerWrap", "headerFirstRowHeight", "enableTimeZoneConverterForDateTimePeriodParameters", "showParamKit", "datePeriodComparisonFor", "datePeriodComparisonForLabelKey", "statusInclusionFor", "statusInclusionForLabelKey", "statusOptionsApi", "hideDatePeriodComparison", "hideStatusInclusion", "title", "hasIdOfStringType", "hideCheck", "apiDefinition", "columns", "frozen", "inlineTools", "inlineToolItems", "editRoute", "crud", "showListInlineTools", "top", "left", "hideLeft", "outerParam$", "outerSort", "outerFilterOperators", "outerInOperators", "autoResizeWithWindow", "extraManualOffset", "wrap", "rowHeight", "selfResolveCorePageHeaderButtonClick", "clearData$", "deleteValidateFn", "generateTemplateRequest", "importPreviewPath", "columnSearchDefaultOpen", "fixedPageSize", "disableDoubleClick", "noPaddingCell", "disableHighlightOnClick", "loading$", "excludedIds$"], outputs: ["corePageHeaderButtonClick", "rowClick", "rowDoubleClick", "selectedIdsChange", "selectedDataChange", "onInstanceCreated", "onInputFileBase64DataReady"] }, { kind: "component", type: CoreOrgTreeComponent, selector: "core-org-tree", inputs: ["lineColor", "fullWidthMode", "accessorMode", "fullRendering", "height", "disabledLoopExpand", "showCheckInheritance", "excludedIds$"], outputs: ["itemDoubleClick", "itemClick"] }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "component", type: CoreStatusStickerComponent, selector: "core-status-sticker", inputs: ["code", "isTrueCode"] }], encapsulation: i0.ViewEncapsulation.None }); }
287
287
  }
288
288
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PositionComponent, decorators: [{
289
289
  type: Component,
@@ -313,5 +313,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
313
313
  }], concurrentStatus: [{
314
314
  type: ViewChild,
315
315
  args: ['concurrentStatus']
316
+ }], columns: [{
317
+ type: Input
316
318
  }] } });
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL3Bvc2l0aW9uL3Bvc2l0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9wb3NpdGlvbi9wb3NpdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUEyRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVKLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQWdDLE1BQU0sb0NBQW9DLENBQUM7QUFHdEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFVNUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFFN0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUM5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUMxRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMvRixPQUFPLEVBQUUsMEJB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QkFBQyxTQUFTO2dCQUNXLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtY29tcG9uZW50L2Jhc2UvYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUxpc3RDb21wb25lbnQsIElDb3JlUGFnZUxpc3RBcGlEZWZpbml0aW9uLCBJQ29yZVBhZ2VMaXN0Q1JVRCwgSUNvcmVQYWdlTGlzdEVkaXRSb3V0aW5nIH0gZnJvbSAnLi4vY29yZS1wYWdlLWxpc3QvY29yZS1wYWdlLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgYXBpIH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IEVudW1GaWx0ZXJPcGVyYXRvciwgSUZpbHRlck9wZXJhdG9yLCBJSW5PcGVyYXRvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVF1ZXJ5TGlzdFJlcXVlc3QnO1xyXG5pbXBvcnQgeyBJQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQvYWxlcnQubW9kZWwnO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gJy4uL2NvcmUtdGFibGUvSUNvcmVUYWJsZUNvbHVtbkl0ZW0nO1xyXG5pbXBvcnQgeyBFbnVtQ29yZVRhYmxlUGlwZVR5cGUgfSBmcm9tICcuLi9jb3JlLXRhYmxlL0VudW1Db3JlVGFibGVQaXBlVHlwZSc7XHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmdhbml6YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUxpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS1wYWdlLWxpc3QvY29yZS1wYWdlLWxpc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IFBvc2l0aW9uVHJhbnNmZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG9zaXRpb24tdHJhbnNmZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IElGb3JtYXRlZFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JRm9ybWF0ZWRSZXNwb25zZSc7XHJcbmltcG9ydCB7IEVudW1Db3JlQnV0dG9uVk5TQ29kZSB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvRW51bUNvcmVCdXR0b25WTlNDb2RlJztcclxuaW1wb3J0IHsgSUNvcmVCdXR0b25WTlMgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0lDb3JlQnV0dG9uVk5TJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvcmVPcmdUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZVBhZ2VFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1wYWdlLWVkaXQvY29yZS1wYWdlLWVkaXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlU3RhdHVzU3RpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtc3RhdHVzLXN0aWNrZXIvY29yZS1zdGF0dXMtc3RpY2tlci9jb3JlLXN0YXR1cy1zdGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBvc2l0aW9uRWRpdFNlcnZpY2UgfSBmcm9tICcuL3Bvc2l0b24uZWRpdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjbXMtYXBwLXBvc2l0aW9uJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29yZVBhZ2VMaXN0Q29tcG9uZW50LFxyXG4gICAgQ29yZU9yZ1RyZWVDb21wb25lbnQsXHJcbiAgICBDb3JlUGFnZUVkaXRDb21wb25lbnQsXHJcbiAgICBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCxcclxuICAgIENvcmVDaGVja2JveENvbXBvbmVudCxcclxuICAgIENvcmVTdGF0dXNTdGlja2VyQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcG9zaXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Bvc2l0aW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBvc2l0aW9uQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGhpZGVIZWFkZXIhOiBib29sZWFuO1xyXG5cclxuICBAT3V0cHV0KCkgb25JbnN0YW5jZUNyZWF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaXNURFYnKSBpc1REViE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnaXNOb3RvdCcpIGlzTm90b3QhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ3N0aWNrZXInKSBzdGlja2VyITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdjb25jdXJyZW50U3RhdHVzJykgY29uY3VycmVudFN0YXR1cyE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8vIEBWaWV3Q2hpbGQoJ2lzcGxhbicpIGlzcGxhbiE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgLy8gQFZpZXdDaGlsZCgnaXNub25waHlzaWNhbCcpIGlzbm9ucGh5c2ljYWwhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIGNoZWNrYm94VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIG9yZ0lkcyE6IG51bWJlcltdO1xyXG4gIG9yZ0lkITogbnVtYmVyO1xyXG4gIGxpc3RJbnN0YW5jZSE6IG51bWJlcjtcclxuICBzZWxlY3RlZElkczogbnVtYmVyW10gPSBbXTtcclxuICBvdXRlclBhcmFtJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuXHJcbiAgYXBpRGVmaW5pdGlvbjogSUNvcmVQYWdlTGlzdEFwaURlZmluaXRpb24gPSB7XHJcbiAgICBxdWVyeUxpc3RSZWxhdGl2ZVBhdGg6IGFwaS5IVV9QT1NJVElPTl9RVUVSWV9MSVNULFxyXG4gIH07XHJcbiAgdGl0bGUgPSBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTVBPTkVOVF9USVRMRV9QT1NJVElPTjtcclxuICBjcnVkOiBJQ29yZVBhZ2VMaXN0Q1JVRCA9IHtcclxuICAgIGRlbGV0ZUlkczogYXBpLkhVX1BPU0lUSU9OX0RFTEVURV9JRFMsXHJcbiAgICB0b2dnbGVBY3RpdmVJZHM6IGFwaS5IVV9QT1NJVElPTl9DSEFOR0VTVEFUVVNcclxuICB9O1xyXG5cclxuICBhbGVydE9wdGlvbnM6IElBbGVydE9wdGlvbnMgPSB7XHJcbiAgICBhdXRvQ2xvc2U6IHRydWUsXHJcbiAgICBrZWVwQWZ0ZXJSb3V0ZUNoYW5nZTogdHJ1ZSxcclxuICAgIHRpbWVDbG9zZTogMTAwMDBcclxuICB9O1xyXG4gIG91dGVyRmlsdGVyT3BlcmF0b3JzOiBJRmlsdGVyT3BlcmF0b3JbXSA9IFtcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICdvcmdJZCcsXHJcbiAgICAgIG9wZXJhdG9yOiBFbnVtRmlsdGVyT3BlcmF0b3IuRVFVQUwsXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgb3V0ZXJJbk9wZXJhdG9yczogSUluT3BlcmF0b3JbXSB8IG51bGwgPSBbXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnb3JnSWQnLFxyXG4gICAgICB2YWx1ZXM6IHRoaXMub3JnSWRzIHx8IFtdLFxyXG4gICAgfSxcclxuICBdO1xyXG4gIGNvbHVtbnM6IElDb3JlVGFibGVDb2x1bW5JdGVtW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fQ09NTU9OX0lELFxyXG4gICAgICBmaWVsZDogJ2lkJyxcclxuICAgICAgaGlkZGVuOiB0cnVlLFxyXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDIwMCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fUE9TSVRJT05fSVNfQUNUSVZFLFxyXG4gICAgICBmaWVsZDogJ2FjdGl2ZScsXHJcbiAgICAgIHBpcGU6IEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX0FDVElWRV9JTkFDVElWRSxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgd2lkdGg6IDExMCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fUE9TSVRJT05fQ09ERSxcclxuICAgICAgZmllbGQ6ICdjb2RlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxMTAsXHJcbiAgICAgIGhpZGRlbjogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9QT1NJVElPTl9OQU1FLFxyXG4gICAgICBmaWVsZDogJ25hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDIwMCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fUE9TSVRJT05fTUFTVEVSLFxyXG4gICAgICBmaWVsZDogJ21hc3Rlck5hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDIwMCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fUE9TSVRJT05fSU5URVJJTSxcclxuICAgICAgZmllbGQ6ICdpbnRlcmltTmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9QT1NJVElPTl9JU19NQUlOX1RJVExFLFxyXG4gICAgICBmaWVsZDogJ2lzTWFzdGVyJyxcclxuICAgICAgdHlwZTogJ2Jvb2wnLFxyXG4gICAgICBwaXBlOiBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuQk9PTEVBTl9UT19UUlVFX0ZBTFNFLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgICByZWFkb25seTogdHJ1ZSxcclxuICAgICAgdGVtcGxhdGVSZWY6IHRoaXMuY2hlY2tib3hUZW1wbGF0ZSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fUE9TSVRJT05fT1JHTkFNRSxcclxuICAgICAgZmllbGQ6ICdvcmdOYW1lJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiA0MDAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1BPU0lUSU9OX0xNX0pPQixcclxuICAgICAgZmllbGQ6ICdsbUpvYk5hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDQwMCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fUE9TSVRJT05fTE0sXHJcbiAgICAgIGZpZWxkOiAnbG1OYW1lJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAyMDAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1BPU0lUSU9OX0NTTV9KT0IsXHJcbiAgICAgIGZpZWxkOiAnY3NtSm9iTmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9QT1NJVElPTl9DU00sXHJcbiAgICAgIGZpZWxkOiAnY3NtTmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9QT1NJVElPTl9JU19URFYsXHJcbiAgICAgIGZpZWxkOiAnaXNURFYnLFxyXG4gICAgICB0eXBlOiAnYm9vbCcsXHJcbiAgICAgIHBpcGU6IEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX1RSVUVfRkFMU0UsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAyMDAsXHJcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxyXG4gICAgICB0ZW1wbGF0ZVJlZjogdGhpcy5jaGVja2JveFRlbXBsYXRlLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9QT1NJVElPTl9JU19OT1RfT1QsXHJcbiAgICAgIGZpZWxkOiAnaXNOb3RvdCcsXHJcbiAgICAgIHR5cGU6ICdib29sJyxcclxuICAgICAgcGlwZTogRW51bUNvcmVUYWJsZVBpcGVUeXBlLkJPT0xFQU5fVE9fVFJVRV9GQUxTRSxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDIwMCxcclxuICAgICAgcmVhZG9ubHk6IHRydWUsXHJcbiAgICAgIHRlbXBsYXRlUmVmOiB0aGlzLmNoZWNrYm94VGVtcGxhdGUsXHJcbiAgICB9LFxyXG5cclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9QT1NJVElPTl9FRkZFQ1RJVkVfREFURSxcclxuICAgICAgZmllbGQ6ICdlZmZlY3RpdmVEYXRlJyxcclxuICAgICAgcGlwZTogRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRBVEUsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9QT1NJVElPTl9KT0JfREVTQyxcclxuICAgICAgZmllbGQ6ICdqb2JEZXNjJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAyMDAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1BPU0lUSU9OX05PVEUsXHJcbiAgICAgIGZpZWxkOiAnbm90ZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgfSxcclxuXHJcbiAgXTtcclxuXHJcbiAgZWRpdFJvdXRlOiBJQ29yZVBhZ2VMaXN0RWRpdFJvdXRpbmcgPSB7XHJcbiAgICBhdXhpbGlhcnk6ICdwb3B1cEF1eCcsXHJcbiAgfTtcclxuICAvKiBFbmQgUHJvcGVydGllcyBiZWluZyBwYXNzZWQgdG8gY29yZS1wYWdlLXR5cGUtYSAqL1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBwb3NpdGlvbkVkaXRTZXJ2aWNlOiBQb3NpdGlvbkVkaXRTZXJ2aWNlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHVibGljIG9yZ2FuaXphdGlvblNlcnZpY2U6IE9yZ2FuaXphdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHB1YmxpYyBhcHBTZXJ2aWNlOiBBcHBTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgY29yZVBhZ2VMaXN0U2VydmljZTogQ29yZVBhZ2VMaXN0U2VydmljZSxcclxuICAgIHB1YmxpYyBwb3NpdGlvblRyYW5zZmVyU2VydmljZTogUG9zaXRpb25UcmFuc2ZlclNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihtbHMpO1xyXG5cclxuICAgIC8qIEdldCBvcmdJZHMgc3RhcnR1cCB2YWx1ZSAqL1xyXG4gICAgY29uc3QgbmV3T3JnSWRzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWUuYWN0aXZlS2V5cy5tYXAoKHgpID0+XHJcbiAgICAgIG5ld09yZ0lkcy5wdXNoKE51bWJlcih4KSlcclxuICAgICk7XHJcbiAgICB0aGlzLm9uT3JnSWRzQ2hhbmdlKG5ld09yZ0lkcyk7XHJcbiAgICB0aGlzLmxpc3RJbnN0YW5jZSA9IE51bWJlcihcclxuICAgICAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2xpc3RJbnN0YW5jZScpIVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRJZHNDaGFuZ2VlZWUoZTogbnVtYmVyW10pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBlO1xyXG4gIH1cclxuICBvblJvd0NsaWNrKGV2ZW50OiBhbnkpIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvLyB0cm9uZyBuZ0FmdGVyVmlld0luaXQgbuG6v3UgbXXhu5FuIHRoYXkgxJHhu5VpIHRodeG7mWMgdMOtbmggY+G7p2EgdHMgY+G6p24gZ8OzaSB2w6BvIHNldFRpbWVvdXRcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jb2x1bW5zLmZpbHRlcigoYykgPT4gYy5maWVsZCA9PT0gJ2lzVERWJylbMF0udGVtcGxhdGVSZWYgPSB0aGlzLmlzVERWO1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZmlsdGVyKChjKSA9PiBjLmZpZWxkID09PSAnaXNOb3RvdCcpWzBdLnRlbXBsYXRlUmVmID0gdGhpcy5pc05vdG90O1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZmlsdGVyKChjKSA9PiBjLmZpZWxkID09PSAnaXNNYXN0ZXInKVswXS50ZW1wbGF0ZVJlZiA9IHRoaXMuY29uY3VycmVudFN0YXR1cztcclxuXHJcbiAgICAgIGNvbnN0IHN0aWNrZXJGaWx0ZXIgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5maWVsZCA9PT0gJ2FjdGl2ZScpO1xyXG4gICAgICBpZiAoISFzdGlja2VyRmlsdGVyLmxlbmd0aCkgc3RpY2tlckZpbHRlclswXS50ZW1wbGF0ZVJlZiA9IHRoaXMuc3RpY2tlcjtcclxuXHJcblxyXG4gICAgICAvLyB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5maWVsZCA9PT0gJ2lzcGxhbicpWzBdLnRlbXBsYXRlUmVmID0gdGhpcy5pc3BsYW47XHJcbiAgICAgIC8vIHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLmZpZWxkID09PSAnaXNub25waHlzaWNhbCcpWzBdLnRlbXBsYXRlUmVmID0gdGhpcy5pc25vbnBoeXNpY2FsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbk9yZ0lkc0NoYW5nZShvcmdJZHM6IG51bWJlcltdKSB7XHJcbiAgICB0aGlzLm9yZ0lkcyA9IG9yZ0lkcztcclxuICAgIHRoaXMub3V0ZXJJbk9wZXJhdG9ycyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkOiAnb3JnSWQnLFxyXG4gICAgICAgIHZhbHVlczogb3JnSWRzLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIG9uSW5zdGFuY2VDcmVhdGVkTG9jYWwoZXZlbnQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5saXN0SW5zdGFuY2UgPSBldmVudDtcclxuICAgIHRoaXMub25JbnN0YW5jZUNyZWF0ZWQuZW1pdChldmVudCk7XHJcbiAgfVxyXG4gIHN3YXBNYXN0ZXJJbnRlcmltKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJZHMgPT0gbnVsbCB8fCB0aGlzLnNlbGVjdGVkSWRzLmxlbmd0aCA9PSAwIHx8IHRoaXMuc2VsZWN0ZWRJZHMgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFsZXJ0U2VydmljZS53YXJuKFxyXG4gICAgICAgIHRoaXMubWxzLnRyYW5zKCdVSV9DT01QT05FTlRfVElUTEVfUE9TSVRJT05fSURTX05VTEwnKSxcclxuICAgICAgICB0aGlzLmFsZXJ0T3B0aW9uc1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29uZmlybSA9IHdpbmRvdy5jb25maXJtKFxyXG4gICAgICB0aGlzLm1scy50cmFucygnY29tbW9uLmNvbmZpcm0uam9iLnN3YXAubWFzdGVyaW50ZXJpbScpICsgJz8nXHJcbiAgICApO1xyXG4gICAgaWYgKGNvbmZpcm0pIHtcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIC8vIDw9PSBJbm5lciBwdXNoXHJcbiAgICAgICAgdGhpcy5hcHBTZXJ2aWNlXHJcbiAgICAgICAgICAucG9zdChhcGkuSFVfUE9TSVRJT05fU1dBUCwgeyBpZHM6IHRoaXMuc2VsZWN0ZWRJZHMgfSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghIXJlcy5vayAmJiByZXMuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHJlcy5ib2R5O1xyXG4gICAgICAgICAgICAgIC8vIHJlbG9hZCBtw6BuIGjDrG5oXHJcbiAgICAgICAgICAgICAgY29uc3QgbGlzdEluc3RhbmNlcyA9IHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKHkpID0+IHkuaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMubGlzdEluc3RhbmNlXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBpZiAoISFsaXN0SW5zdGFuY2VzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgbGlzdEluc3RhbmNlc1swXS5yZWxvYWRGbGFnJC5uZXh0KFxyXG4gICAgICAgICAgICAgICAgICAhISFsaXN0SW5zdGFuY2VzWzBdLnJlbG9hZEZsYWckLnZhbHVlXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyBlbmQgcmVsb2FkIG3DoG4gaMOsbmhcclxuICAgICAgICAgICAgICAvLyB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKFxyXG4gICAgICAgICAgICAgIC8vICAgdGhpcy5tbHMudHJhbnMoYm9keS5tZXNzYWdlQ29kZSksXHJcbiAgICAgICAgICAgICAgLy8gICAvL3RoaXMuYWxlcnRPcHRpb25zXHJcbiAgICAgICAgICAgICAgLy8gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25Db3JlUGFnZUhlYWRlckJ1dHRvbkNsaWNrKGU6IElDb3JlQnV0dG9uVk5TKSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiU3RhZmZQcm9maWxlQ29tcG9uZW50IG9uQ29yZVBhZ2VIZWFkZXJCdXR0b25DbGlja1wiLCBlKVxyXG4gICAgc3dpdGNoIChlLmNvZGUpIHtcclxuICAgICAgY2FzZSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX0NSRUFURTpcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX0VESVQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9TV0FQOlxyXG4gICAgICAgIHRoaXMuc3dhcE1hc3RlckludGVyaW0oKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInBvc2l0aW9uLXByb2ZpbGUtY29udGFpbmVyXCI+XHJcbiAgPGNvcmUtcGFnZS1saXN0IFthcGlEZWZpbml0aW9uXT1cImFwaURlZmluaXRpb25cIiBbY29sdW1uc109XCJjb2x1bW5zXCIgW2VkaXRSb3V0ZV09XCJlZGl0Um91dGVcIiBbY3J1ZF09XCJjcnVkXCJcclxuICAgIFt0aXRsZV09XCJ0aXRsZVwiIFtsZWZ0XT1cIm9yZ1RyZWVcIiBbbm9ybWFsTW9kZV09XCJ0cnVlXCIgW291dGVyUGFyYW0kXT1cIm91dGVyUGFyYW0kXCJcclxuICAgIFtvdXRlckluT3BlcmF0b3JzXT1cIm91dGVySW5PcGVyYXRvcnNcIiBbYXV0b1Jlc2l6ZVdpdGhXaW5kb3ddPVwidHJ1ZVwiXHJcbiAgICAoY29yZVBhZ2VIZWFkZXJCdXR0b25DbGljayk9XCJvbkNvcmVQYWdlSGVhZGVyQnV0dG9uQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAoc2VsZWN0ZWRJZHNDaGFuZ2UpPVwib25TZWxlY3RlZElkc0NoYW5nZWVlZSgkZXZlbnQpXCJcclxuICAgIChvbkluc3RhbmNlQ3JlYXRlZCk9XCJvbkluc3RhbmNlQ3JlYXRlZExvY2FsKCRldmVudClcIj48L2NvcmUtcGFnZS1saXN0PlxyXG5cclxuICA8bmctdGVtcGxhdGUgI29yZ1RyZWU+XHJcbiAgICA8Y29yZS1vcmctdHJlZSBbKG5nTW9kZWwpXT1cIm9yZ0lkc1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uT3JnSWRzQ2hhbmdlKCRldmVudClcIj5cclxuICAgIDwvY29yZS1vcmctdHJlZT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2lzVERWIGxldC1pc1REVj1cImNvbnRleHQuaXNURFZcIj5cclxuICAgIDxjb3JlLWNoZWNrYm94IFtkaXNhYmxlZF09XCJ0cnVlXCIgW2lucHV0VmFsdWVdPVwiaXNURFZcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNpc05vdG90IGxldC1pc05vdG90PVwiY29udGV4dC5pc05vdG90XCI+XHJcbiAgICA8Y29yZS1jaGVja2JveCBbZGlzYWJsZWRdPVwidHJ1ZVwiIFtpbnB1dFZhbHVlXT1cImlzTm90b3RcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNzdGlja2VyIGxldC1jb2RlPVwiY29udGV4dC5hY3RpdmVcIj5cclxuICAgIDxjb3JlLXN0YXR1cy1zdGlja2VyIFtjb2RlXT1cImNvZGVcIj48L2NvcmUtc3RhdHVzLXN0aWNrZXI+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8bmctdGVtcGxhdGUgI2NvbmN1cnJlbnRTdGF0dXMgbGV0LWNvbmN1cnJlbnRTdGF0dXM9XCJjb250ZXh0LmlzTWFzdGVyXCI+XHJcbiAgICA8Y29yZS1jaGVja2JveCBbZGlzYWJsZWRdPVwidHJ1ZVwiIFtpbnB1dFZhbHVlXT1cImNvbmN1cnJlbnRTdGF0dXNcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+Il19
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL3Bvc2l0aW9uL3Bvc2l0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9wb3NpdGlvbi9wb3NpdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUEyRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVKLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQWdDLE1BQU0sb0NBQW9DLENBQUM7QUFHdEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFVNUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFFN0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUM5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUMxRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMvRixPQUFPLEVBQUUsMEJB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QkFBQyxTQUFTO2dCQUNXLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBcUNwQixPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtY29tcG9uZW50L2Jhc2UvYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUxpc3RDb21wb25lbnQsIElDb3JlUGFnZUxpc3RBcGlEZWZpbml0aW9uLCBJQ29yZVBhZ2VMaXN0Q1JVRCwgSUNvcmVQYWdlTGlzdEVkaXRSb3V0aW5nIH0gZnJvbSAnLi4vY29yZS1wYWdlLWxpc3QvY29yZS1wYWdlLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgYXBpIH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IEVudW1GaWx0ZXJPcGVyYXRvciwgSUZpbHRlck9wZXJhdG9yLCBJSW5PcGVyYXRvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVF1ZXJ5TGlzdFJlcXVlc3QnO1xyXG5pbXBvcnQgeyBJQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQvYWxlcnQubW9kZWwnO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gJy4uL2NvcmUtdGFibGUvSUNvcmVUYWJsZUNvbHVtbkl0ZW0nO1xyXG5pbXBvcnQgeyBFbnVtQ29yZVRhYmxlUGlwZVR5cGUgfSBmcm9tICcuLi9jb3JlLXRhYmxlL0VudW1Db3JlVGFibGVQaXBlVHlwZSc7XHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmdhbml6YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUxpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS1wYWdlLWxpc3QvY29yZS1wYWdlLWxpc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IFBvc2l0aW9uVHJhbnNmZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG9zaXRpb24tdHJhbnNmZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IElGb3JtYXRlZFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JRm9ybWF0ZWRSZXNwb25zZSc7XHJcbmltcG9ydCB7IEVudW1Db3JlQnV0dG9uVk5TQ29kZSB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvRW51bUNvcmVCdXR0b25WTlNDb2RlJztcclxuaW1wb3J0IHsgSUNvcmVCdXR0b25WTlMgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0lDb3JlQnV0dG9uVk5TJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvcmVPcmdUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZVBhZ2VFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1wYWdlLWVkaXQvY29yZS1wYWdlLWVkaXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlU3RhdHVzU3RpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtc3RhdHVzLXN0aWNrZXIvY29yZS1zdGF0dXMtc3RpY2tlci9jb3JlLXN0YXR1cy1zdGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBvc2l0aW9uRWRpdFNlcnZpY2UgfSBmcm9tICcuL3Bvc2l0b24uZWRpdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjbXMtYXBwLXBvc2l0aW9uJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29yZVBhZ2VMaXN0Q29tcG9uZW50LFxyXG4gICAgQ29yZU9yZ1RyZWVDb21wb25lbnQsXHJcbiAgICBDb3JlUGFnZUVkaXRDb21wb25lbnQsXHJcbiAgICBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCxcclxuICAgIENvcmVDaGVja2JveENvbXBvbmVudCxcclxuICAgIENvcmVTdGF0dXNTdGlja2VyQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcG9zaXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Bvc2l0aW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBvc2l0aW9uQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGhpZGVIZWFkZXIhOiBib29sZWFuO1xyXG5cclxuICBAT3V0cHV0KCkgb25JbnN0YW5jZUNyZWF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaXNURFYnKSBpc1REViE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnaXNOb3RvdCcpIGlzTm90b3QhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ3N0aWNrZXInKSBzdGlja2VyITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdjb25jdXJyZW50U3RhdHVzJykgY29uY3VycmVudFN0YXR1cyE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8vIEBWaWV3Q2hpbGQoJ2lzcGxhbicpIGlzcGxhbiE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgLy8gQFZpZXdDaGlsZCgnaXNub25waHlzaWNhbCcpIGlzbm9ucGh5c2ljYWwhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIGNoZWNrYm94VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIG9yZ0lkcyE6IG51bWJlcltdO1xyXG4gIG9yZ0lkITogbnVtYmVyO1xyXG4gIGxpc3RJbnN0YW5jZSE6IG51bWJlcjtcclxuICBzZWxlY3RlZElkczogbnVtYmVyW10gPSBbXTtcclxuICBvdXRlclBhcmFtJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuXHJcbiAgYXBpRGVmaW5pdGlvbjogSUNvcmVQYWdlTGlzdEFwaURlZmluaXRpb24gPSB7XHJcbiAgICBxdWVyeUxpc3RSZWxhdGl2ZVBhdGg6IGFwaS5IVV9QT1NJVElPTl9RVUVSWV9MSVNULFxyXG4gIH07XHJcbiAgdGl0bGUgPSBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTVBPTkVOVF9USVRMRV9QT1NJVElPTjtcclxuICBjcnVkOiBJQ29yZVBhZ2VMaXN0Q1JVRCA9IHtcclxuICAgIGRlbGV0ZUlkczogYXBpLkhVX1BPU0lUSU9OX0RFTEVURV9JRFMsXHJcbiAgICB0b2dnbGVBY3RpdmVJZHM6IGFwaS5IVV9QT1NJVElPTl9DSEFOR0VTVEFUVVNcclxuICB9O1xyXG5cclxuICBhbGVydE9wdGlvbnM6IElBbGVydE9wdGlvbnMgPSB7XHJcbiAgICBhdXRvQ2xvc2U6IHRydWUsXHJcbiAgICBrZWVwQWZ0ZXJSb3V0ZUNoYW5nZTogdHJ1ZSxcclxuICAgIHRpbWVDbG9zZTogMTAwMDBcclxuICB9O1xyXG4gIG91dGVyRmlsdGVyT3BlcmF0b3JzOiBJRmlsdGVyT3BlcmF0b3JbXSA9IFtcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICdvcmdJZCcsXHJcbiAgICAgIG9wZXJhdG9yOiBFbnVtRmlsdGVyT3BlcmF0b3IuRVFVQUwsXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgb3V0ZXJJbk9wZXJhdG9yczogSUluT3BlcmF0b3JbXSB8IG51bGwgPSBbXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnb3JnSWQnLFxyXG4gICAgICB2YWx1ZXM6IHRoaXMub3JnSWRzIHx8IFtdLFxyXG4gICAgfSxcclxuICBdO1xyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IElDb3JlVGFibGVDb2x1bW5JdGVtW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fQ09NTU9OX0lELFxyXG4gICAgICBmaWVsZDogJ2lkJyxcclxuICAgICAgaGlkZGVuOiB0cnVlLFxyXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDIwMCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fUE9TSVRJT05fSVNfQUNUSVZFLFxyXG4gICAgICBmaWVsZDogJ2FjdGl2ZScsXHJcbiAgICAgIHBpcGU6IEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX0FDVElWRV9JTkFDVElWRSxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgd2lkdGg6IDExMCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fUE9TSVRJT05fQ09ERSxcclxuICAgICAgZmllbGQ6ICdjb2RlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxMTAsXHJcbiAgICAgIGhpZGRlbjogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9QT1NJVElPTl9OQU1FLFxyXG4gICAgICBmaWVsZDogJ25hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDIwMCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fUE9TSVRJT05fTUFTVEVSLFxyXG4gICAgICBmaWVsZDogJ21hc3Rlck5hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDIwMCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fUE9TSVRJT05fSU5URVJJTSxcclxuICAgICAgZmllbGQ6ICdpbnRlcmltTmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9QT1NJVElPTl9JU19NQUlOX1RJVExFLFxyXG4gICAgICBmaWVsZDogJ2lzTWFzdGVyJyxcclxuICAgICAgdHlwZTogJ2Jvb2wnLFxyXG4gICAgICBwaXBlOiBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuQk9PTEVBTl9UT19UUlVFX0ZBTFNFLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgICByZWFkb25seTogdHJ1ZSxcclxuICAgICAgdGVtcGxhdGVSZWY6IHRoaXMuY2hlY2tib3hUZW1wbGF0ZSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fUE9TSVRJT05fT1JHTkFNRSxcclxuICAgICAgZmllbGQ6ICdvcmdOYW1lJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiA0MDAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1BPU0lUSU9OX0xNX0pPQixcclxuICAgICAgZmllbGQ6ICdsbUpvYk5hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDQwMCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fUE9TSVRJT05fTE0sXHJcbiAgICAgIGZpZWxkOiAnbG1OYW1lJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAyMDAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1BPU0lUSU9OX0NTTV9KT0IsXHJcbiAgICAgIGZpZWxkOiAnY3NtSm9iTmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9QT1NJVElPTl9DU00sXHJcbiAgICAgIGZpZWxkOiAnY3NtTmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9QT1NJVElPTl9JU19URFYsXHJcbiAgICAgIGZpZWxkOiAnaXNURFYnLFxyXG4gICAgICB0eXBlOiAnYm9vbCcsXHJcbiAgICAgIHBpcGU6IEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX1RSVUVfRkFMU0UsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAyMDAsXHJcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxyXG4gICAgICB0ZW1wbGF0ZVJlZjogdGhpcy5jaGVja2JveFRlbXBsYXRlLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9QT1NJVElPTl9JU19OT1RfT1QsXHJcbiAgICAgIGZpZWxkOiAnaXNOb3RvdCcsXHJcbiAgICAgIHR5cGU6ICdib29sJyxcclxuICAgICAgcGlwZTogRW51bUNvcmVUYWJsZVBpcGVUeXBlLkJPT0xFQU5fVE9fVFJVRV9GQUxTRSxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDIwMCxcclxuICAgICAgcmVhZG9ubHk6IHRydWUsXHJcbiAgICAgIHRlbXBsYXRlUmVmOiB0aGlzLmNoZWNrYm94VGVtcGxhdGUsXHJcbiAgICB9LFxyXG5cclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9QT1NJVElPTl9FRkZFQ1RJVkVfREFURSxcclxuICAgICAgZmllbGQ6ICdlZmZlY3RpdmVEYXRlJyxcclxuICAgICAgcGlwZTogRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRBVEUsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9QT1NJVElPTl9KT0JfREVTQyxcclxuICAgICAgZmllbGQ6ICdqb2JEZXNjJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAyMDAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1BPU0lUSU9OX05PVEUsXHJcbiAgICAgIGZpZWxkOiAnbm90ZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgfSxcclxuXHJcbiAgXTtcclxuXHJcbiAgZWRpdFJvdXRlOiBJQ29yZVBhZ2VMaXN0RWRpdFJvdXRpbmcgPSB7XHJcbiAgICBhdXhpbGlhcnk6ICdwb3B1cEF1eCcsXHJcbiAgfTtcclxuICAvKiBFbmQgUHJvcGVydGllcyBiZWluZyBwYXNzZWQgdG8gY29yZS1wYWdlLXR5cGUtYSAqL1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBwb3NpdGlvbkVkaXRTZXJ2aWNlOiBQb3NpdGlvbkVkaXRTZXJ2aWNlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHVibGljIG9yZ2FuaXphdGlvblNlcnZpY2U6IE9yZ2FuaXphdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHB1YmxpYyBhcHBTZXJ2aWNlOiBBcHBTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgY29yZVBhZ2VMaXN0U2VydmljZTogQ29yZVBhZ2VMaXN0U2VydmljZSxcclxuICAgIHB1YmxpYyBwb3NpdGlvblRyYW5zZmVyU2VydmljZTogUG9zaXRpb25UcmFuc2ZlclNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihtbHMpO1xyXG5cclxuICAgIC8qIEdldCBvcmdJZHMgc3RhcnR1cCB2YWx1ZSAqL1xyXG4gICAgY29uc3QgbmV3T3JnSWRzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWUuYWN0aXZlS2V5cy5tYXAoKHgpID0+XHJcbiAgICAgIG5ld09yZ0lkcy5wdXNoKE51bWJlcih4KSlcclxuICAgICk7XHJcbiAgICB0aGlzLm9uT3JnSWRzQ2hhbmdlKG5ld09yZ0lkcyk7XHJcbiAgICB0aGlzLmxpc3RJbnN0YW5jZSA9IE51bWJlcihcclxuICAgICAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2xpc3RJbnN0YW5jZScpIVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRJZHNDaGFuZ2VlZWUoZTogbnVtYmVyW10pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBlO1xyXG4gIH1cclxuICBvblJvd0NsaWNrKGV2ZW50OiBhbnkpIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvLyB0cm9uZyBuZ0FmdGVyVmlld0luaXQgbuG6v3UgbXXhu5FuIHRoYXkgxJHhu5VpIHRodeG7mWMgdMOtbmggY+G7p2EgdHMgY+G6p24gZ8OzaSB2w6BvIHNldFRpbWVvdXRcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jb2x1bW5zLmZpbHRlcigoYykgPT4gYy5maWVsZCA9PT0gJ2lzVERWJylbMF0udGVtcGxhdGVSZWYgPSB0aGlzLmlzVERWO1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZmlsdGVyKChjKSA9PiBjLmZpZWxkID09PSAnaXNOb3RvdCcpWzBdLnRlbXBsYXRlUmVmID0gdGhpcy5pc05vdG90O1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZmlsdGVyKChjKSA9PiBjLmZpZWxkID09PSAnaXNNYXN0ZXInKVswXS50ZW1wbGF0ZVJlZiA9IHRoaXMuY29uY3VycmVudFN0YXR1cztcclxuXHJcbiAgICAgIGNvbnN0IHN0aWNrZXJGaWx0ZXIgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5maWVsZCA9PT0gJ2FjdGl2ZScpO1xyXG4gICAgICBpZiAoISFzdGlja2VyRmlsdGVyLmxlbmd0aCkgc3RpY2tlckZpbHRlclswXS50ZW1wbGF0ZVJlZiA9IHRoaXMuc3RpY2tlcjtcclxuXHJcblxyXG4gICAgICAvLyB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5maWVsZCA9PT0gJ2lzcGxhbicpWzBdLnRlbXBsYXRlUmVmID0gdGhpcy5pc3BsYW47XHJcbiAgICAgIC8vIHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLmZpZWxkID09PSAnaXNub25waHlzaWNhbCcpWzBdLnRlbXBsYXRlUmVmID0gdGhpcy5pc25vbnBoeXNpY2FsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbk9yZ0lkc0NoYW5nZShvcmdJZHM6IG51bWJlcltdKSB7XHJcbiAgICB0aGlzLm9yZ0lkcyA9IG9yZ0lkcztcclxuICAgIHRoaXMub3V0ZXJJbk9wZXJhdG9ycyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkOiAnb3JnSWQnLFxyXG4gICAgICAgIHZhbHVlczogb3JnSWRzLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIG9uSW5zdGFuY2VDcmVhdGVkTG9jYWwoZXZlbnQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5saXN0SW5zdGFuY2UgPSBldmVudDtcclxuICAgIHRoaXMub25JbnN0YW5jZUNyZWF0ZWQuZW1pdChldmVudCk7XHJcbiAgfVxyXG4gIHN3YXBNYXN0ZXJJbnRlcmltKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJZHMgPT0gbnVsbCB8fCB0aGlzLnNlbGVjdGVkSWRzLmxlbmd0aCA9PSAwIHx8IHRoaXMuc2VsZWN0ZWRJZHMgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFsZXJ0U2VydmljZS53YXJuKFxyXG4gICAgICAgIHRoaXMubWxzLnRyYW5zKCdVSV9DT01QT05FTlRfVElUTEVfUE9TSVRJT05fSURTX05VTEwnKSxcclxuICAgICAgICB0aGlzLmFsZXJ0T3B0aW9uc1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29uZmlybSA9IHdpbmRvdy5jb25maXJtKFxyXG4gICAgICB0aGlzLm1scy50cmFucygnY29tbW9uLmNvbmZpcm0uam9iLnN3YXAubWFzdGVyaW50ZXJpbScpICsgJz8nXHJcbiAgICApO1xyXG4gICAgaWYgKGNvbmZpcm0pIHtcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIC8vIDw9PSBJbm5lciBwdXNoXHJcbiAgICAgICAgdGhpcy5hcHBTZXJ2aWNlXHJcbiAgICAgICAgICAucG9zdChhcGkuSFVfUE9TSVRJT05fU1dBUCwgeyBpZHM6IHRoaXMuc2VsZWN0ZWRJZHMgfSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghIXJlcy5vayAmJiByZXMuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHJlcy5ib2R5O1xyXG4gICAgICAgICAgICAgIC8vIHJlbG9hZCBtw6BuIGjDrG5oXHJcbiAgICAgICAgICAgICAgY29uc3QgbGlzdEluc3RhbmNlcyA9IHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKHkpID0+IHkuaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMubGlzdEluc3RhbmNlXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBpZiAoISFsaXN0SW5zdGFuY2VzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgbGlzdEluc3RhbmNlc1swXS5yZWxvYWRGbGFnJC5uZXh0KFxyXG4gICAgICAgICAgICAgICAgICAhISFsaXN0SW5zdGFuY2VzWzBdLnJlbG9hZEZsYWckLnZhbHVlXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyBlbmQgcmVsb2FkIG3DoG4gaMOsbmhcclxuICAgICAgICAgICAgICAvLyB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKFxyXG4gICAgICAgICAgICAgIC8vICAgdGhpcy5tbHMudHJhbnMoYm9keS5tZXNzYWdlQ29kZSksXHJcbiAgICAgICAgICAgICAgLy8gICAvL3RoaXMuYWxlcnRPcHRpb25zXHJcbiAgICAgICAgICAgICAgLy8gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25Db3JlUGFnZUhlYWRlckJ1dHRvbkNsaWNrKGU6IElDb3JlQnV0dG9uVk5TKSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiU3RhZmZQcm9maWxlQ29tcG9uZW50IG9uQ29yZVBhZ2VIZWFkZXJCdXR0b25DbGlja1wiLCBlKVxyXG4gICAgc3dpdGNoIChlLmNvZGUpIHtcclxuICAgICAgY2FzZSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX0NSRUFURTpcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX0VESVQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9TV0FQOlxyXG4gICAgICAgIHRoaXMuc3dhcE1hc3RlckludGVyaW0oKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInBvc2l0aW9uLXByb2ZpbGUtY29udGFpbmVyXCI+XHJcbiAgPGNvcmUtcGFnZS1saXN0IFthcGlEZWZpbml0aW9uXT1cImFwaURlZmluaXRpb25cIiBbY29sdW1uc109XCJjb2x1bW5zXCIgW2VkaXRSb3V0ZV09XCJlZGl0Um91dGVcIiBbY3J1ZF09XCJjcnVkXCJcclxuICAgIFt0aXRsZV09XCJ0aXRsZVwiIFtsZWZ0XT1cIm9yZ1RyZWVcIiBbbm9ybWFsTW9kZV09XCJ0cnVlXCIgW291dGVyUGFyYW0kXT1cIm91dGVyUGFyYW0kXCJcclxuICAgIFtvdXRlckluT3BlcmF0b3JzXT1cIm91dGVySW5PcGVyYXRvcnNcIiBbYXV0b1Jlc2l6ZVdpdGhXaW5kb3ddPVwidHJ1ZVwiXHJcbiAgICAoY29yZVBhZ2VIZWFkZXJCdXR0b25DbGljayk9XCJvbkNvcmVQYWdlSGVhZGVyQnV0dG9uQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAoc2VsZWN0ZWRJZHNDaGFuZ2UpPVwib25TZWxlY3RlZElkc0NoYW5nZWVlZSgkZXZlbnQpXCJcclxuICAgIChvbkluc3RhbmNlQ3JlYXRlZCk9XCJvbkluc3RhbmNlQ3JlYXRlZExvY2FsKCRldmVudClcIj48L2NvcmUtcGFnZS1saXN0PlxyXG5cclxuICA8bmctdGVtcGxhdGUgI29yZ1RyZWU+XHJcbiAgICA8Y29yZS1vcmctdHJlZSBbKG5nTW9kZWwpXT1cIm9yZ0lkc1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uT3JnSWRzQ2hhbmdlKCRldmVudClcIj5cclxuICAgIDwvY29yZS1vcmctdHJlZT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2lzVERWIGxldC1pc1REVj1cImNvbnRleHQuaXNURFZcIj5cclxuICAgIDxjb3JlLWNoZWNrYm94IFtkaXNhYmxlZF09XCJ0cnVlXCIgW2lucHV0VmFsdWVdPVwiaXNURFZcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNpc05vdG90IGxldC1pc05vdG90PVwiY29udGV4dC5pc05vdG90XCI+XHJcbiAgICA8Y29yZS1jaGVja2JveCBbZGlzYWJsZWRdPVwidHJ1ZVwiIFtpbnB1dFZhbHVlXT1cImlzTm90b3RcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNzdGlja2VyIGxldC1jb2RlPVwiY29udGV4dC5hY3RpdmVcIj5cclxuICAgIDxjb3JlLXN0YXR1cy1zdGlja2VyIFtjb2RlXT1cImNvZGVcIj48L2NvcmUtc3RhdHVzLXN0aWNrZXI+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8bmctdGVtcGxhdGUgI2NvbmN1cnJlbnRTdGF0dXMgbGV0LWNvbmN1cnJlbnRTdGF0dXM9XCJjb250ZXh0LmlzTWFzdGVyXCI+XHJcbiAgICA8Y29yZS1jaGVja2JveCBbZGlzYWJsZWRdPVwidHJ1ZVwiIFtpbnB1dFZhbHVlXT1cImNvbmN1cnJlbnRTdGF0dXNcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+Il19
@@ -288,7 +288,7 @@ export class StaffProfileComponent extends BaseComponent {
288
288
  }
289
289
  }
290
290
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: StaffProfileComponent, deps: [{ token: i1.MultiLanguageService }, { token: i2.RandomAvatarService }, { token: i3.Router }, { token: i3.ActivatedRoute }, { token: i4.OrganizationService }, { token: i5.HttpClient }, { token: i6.LayoutService }, { token: i7.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
291
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: StaffProfileComponent, isStandalone: true, selector: "cms-profile-staffprofile", inputs: { hideHeader: "hideHeader", height: "height" }, viewQueries: [{ propertyName: "avatar", first: true, predicate: ["avatar"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"staff-profile-container\">\r\n <core-page-list \r\n [height]=\"height\"\r\n [apiDefinition]=\"apiDefinition\" [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\"\r\n [title]=\"title\" [left]=\"orgTree\" *ngIf=\"!!avatar\"\r\n [outerParam$]=\"outerParam$\"\r\n [outerInOperators]=\"outerInOperators\"\r\n [autoResizeWithWindow]=\"true\"\r\n [selfResolveCorePageHeaderButtonClick]=\"true\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (corePageHeaderButtonClick)=\"onCorePageHeaderButtonClick($event)\"\r\n (selectedIdsChange)=\"onSelectedIdsChange1($event)\"\r\n [frozen]=\"3\"\r\n [outerSort]=\"outerSort\"\r\n [showParamKit]=\"true\"\r\n [datePeriodComparisonFor]=\"datePeriodComparisonFor\"\r\n [datePeriodComparisonForLabelKey]=\"datePeriodComparisonForLabelKey\"\r\n [hideStatusInclusion]=\"false\"\r\n [statusInclusionFor]=\"statusInclusionFor\"\r\n [statusInclusionForLabelKey]=\"statusInclusionForLabelKey\"\r\n [statusOptionsApi]=\"statusOptionsApi\"\r\n [generateTemplateRequest]=\"generateTemplateRequest\"\r\n [importPreviewPath]=\"'staffprofile-import'\" \r\n ></core-page-list>\r\n\r\n <ng-template #orgTree>\r\n <core-org-tree [(ngModel)]=\"orgIds\" (ngModelChange)=\"onOrgIdsChange($event)\">\r\n </core-org-tree>\r\n\r\n \r\n </ng-template>\r\n\r\n <ng-template #avatar let-avatar=\"context.avatar\">\r\n <img *ngIf=\"avatar != null\" [src]=\"avatar | mapAvatarToServer\" class=\"in-table-avatar\" appImageErrorResolver>\r\n <img *ngIf=\"avatar == null\" [src]=\"defaultAvatar\" class=\"in-table-avatar\" appImageErrorResolver>\r\n\r\n </ng-template>\r\n\r\n</div>\r\n<app-fullscreen-modal-loader *ngIf=\"loading\"></app-fullscreen-modal-loader>", styles: [".staff-profile-container img{border-radius:50%}\n"], dependencies: [{ kind: "component", type: CorePageListComponent, selector: "core-page-list", inputs: ["normalMode", "hideHeader", "hideButtonGroup", "seekerMode", "mccMode", "height", "headerWrap", "headerFirstRowHeight", "enableTimeZoneConverterForDateTimePeriodParameters", "showParamKit", "datePeriodComparisonFor", "datePeriodComparisonForLabelKey", "statusInclusionFor", "statusInclusionForLabelKey", "statusOptionsApi", "hideDatePeriodComparison", "hideStatusInclusion", "title", "hasIdOfStringType", "hideCheck", "apiDefinition", "columns", "frozen", "inlineTools", "inlineToolItems", "editRoute", "crud", "showListInlineTools", "top", "left", "hideLeft", "outerParam$", "outerSort", "outerFilterOperators", "outerInOperators", "autoResizeWithWindow", "extraManualOffset", "wrap", "rowHeight", "selfResolveCorePageHeaderButtonClick", "clearData$", "deleteValidateFn", "generateTemplateRequest", "importPreviewPath", "columnSearchDefaultOpen", "fixedPageSize", "disableDoubleClick", "noPaddingCell", "disableHighlightOnClick", "loading$", "excludedIds$"], outputs: ["corePageHeaderButtonClick", "rowClick", "rowDoubleClick", "selectedIdsChange", "selectedDataChange", "onInstanceCreated", "onInputFileBase64DataReady"] }, { kind: "component", type: CoreOrgTreeComponent, selector: "core-org-tree", inputs: ["lineColor", "fullWidthMode", "accessorMode", "fullRendering", "height", "disabledLoopExpand", "showCheckInheritance", "excludedIds$"], outputs: ["itemDoubleClick", "itemClick"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FullscreenModalLoaderComponent, selector: "app-fullscreen-modal-loader", inputs: ["content"] }, { kind: "pipe", type: MapAvatarToServerPipe, name: "mapAvatarToServer" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
291
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: StaffProfileComponent, isStandalone: true, selector: "cms-profile-staffprofile", inputs: { hideHeader: "hideHeader", height: "height", columns: "columns" }, viewQueries: [{ propertyName: "avatar", first: true, predicate: ["avatar"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"staff-profile-container\">\r\n <core-page-list \r\n [height]=\"height\"\r\n [apiDefinition]=\"apiDefinition\" [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\"\r\n [title]=\"title\" [left]=\"orgTree\" *ngIf=\"!!avatar\"\r\n [outerParam$]=\"outerParam$\"\r\n [outerInOperators]=\"outerInOperators\"\r\n [autoResizeWithWindow]=\"true\"\r\n [selfResolveCorePageHeaderButtonClick]=\"true\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (corePageHeaderButtonClick)=\"onCorePageHeaderButtonClick($event)\"\r\n (selectedIdsChange)=\"onSelectedIdsChange1($event)\"\r\n [frozen]=\"3\"\r\n [outerSort]=\"outerSort\"\r\n [showParamKit]=\"true\"\r\n [datePeriodComparisonFor]=\"datePeriodComparisonFor\"\r\n [datePeriodComparisonForLabelKey]=\"datePeriodComparisonForLabelKey\"\r\n [hideStatusInclusion]=\"false\"\r\n [statusInclusionFor]=\"statusInclusionFor\"\r\n [statusInclusionForLabelKey]=\"statusInclusionForLabelKey\"\r\n [statusOptionsApi]=\"statusOptionsApi\"\r\n [generateTemplateRequest]=\"generateTemplateRequest\"\r\n [importPreviewPath]=\"'staffprofile-import'\" \r\n ></core-page-list>\r\n\r\n <ng-template #orgTree>\r\n <core-org-tree [(ngModel)]=\"orgIds\" (ngModelChange)=\"onOrgIdsChange($event)\">\r\n </core-org-tree>\r\n\r\n \r\n </ng-template>\r\n\r\n <ng-template #avatar let-avatar=\"context.avatar\">\r\n <img *ngIf=\"avatar != null\" [src]=\"avatar | mapAvatarToServer\" class=\"in-table-avatar\" appImageErrorResolver>\r\n <img *ngIf=\"avatar == null\" [src]=\"defaultAvatar\" class=\"in-table-avatar\" appImageErrorResolver>\r\n\r\n </ng-template>\r\n\r\n</div>\r\n<app-fullscreen-modal-loader *ngIf=\"loading\"></app-fullscreen-modal-loader>", styles: [".staff-profile-container img{border-radius:50%}\n"], dependencies: [{ kind: "component", type: CorePageListComponent, selector: "core-page-list", inputs: ["normalMode", "hideHeader", "hideButtonGroup", "seekerMode", "mccMode", "height", "headerWrap", "headerFirstRowHeight", "enableTimeZoneConverterForDateTimePeriodParameters", "showParamKit", "datePeriodComparisonFor", "datePeriodComparisonForLabelKey", "statusInclusionFor", "statusInclusionForLabelKey", "statusOptionsApi", "hideDatePeriodComparison", "hideStatusInclusion", "title", "hasIdOfStringType", "hideCheck", "apiDefinition", "columns", "frozen", "inlineTools", "inlineToolItems", "editRoute", "crud", "showListInlineTools", "top", "left", "hideLeft", "outerParam$", "outerSort", "outerFilterOperators", "outerInOperators", "autoResizeWithWindow", "extraManualOffset", "wrap", "rowHeight", "selfResolveCorePageHeaderButtonClick", "clearData$", "deleteValidateFn", "generateTemplateRequest", "importPreviewPath", "columnSearchDefaultOpen", "fixedPageSize", "disableDoubleClick", "noPaddingCell", "disableHighlightOnClick", "loading$", "excludedIds$"], outputs: ["corePageHeaderButtonClick", "rowClick", "rowDoubleClick", "selectedIdsChange", "selectedDataChange", "onInstanceCreated", "onInputFileBase64DataReady"] }, { kind: "component", type: CoreOrgTreeComponent, selector: "core-org-tree", inputs: ["lineColor", "fullWidthMode", "accessorMode", "fullRendering", "height", "disabledLoopExpand", "showCheckInheritance", "excludedIds$"], outputs: ["itemDoubleClick", "itemClick"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FullscreenModalLoaderComponent, selector: "app-fullscreen-modal-loader", inputs: ["content"] }, { kind: "pipe", type: MapAvatarToServerPipe, name: "mapAvatarToServer" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
292
292
  }
293
293
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: StaffProfileComponent, decorators: [{
294
294
  type: Component,
@@ -308,5 +308,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
308
308
  }], avatar: [{
309
309
  type: ViewChild,
310
310
  args: ['avatar']
311
+ }], columns: [{
312
+ type: Input
311
313
  }] } });
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZmZwcm9maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9zdGFmZnByb2ZpbGUvc3RhZmZwcm9maWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9zdGFmZnByb2ZpbGUvc3RhZmZwcm9maWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUE4QixLQUFLLEdBQUcsTUFBTSxlQUFlLENBQUM7QUFFekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxxQkFBcUIsRUFBMkUsTUFBTSw0Q0FBNEMsQ0FBQztBQU01SixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUU3RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3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O3NCQUFkLEtBQUs7Z0JBRWUsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmLCBBZnRlclZpZXdJbml0LCBJbnB1dCwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtY29tcG9uZW50L2Jhc2UvYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgYXBpIH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgRW51bVNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9lbnVtL0VudW1Tb3J0RGlyZWN0aW9uJztcclxuaW1wb3J0IHsgSUZpbHRlck9wZXJhdG9yLCBJSW5PcGVyYXRvciwgSVNvcnRJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUXVlcnlMaXN0UmVxdWVzdCc7XHJcbmltcG9ydCB7IENvcmVQYWdlTGlzdENvbXBvbmVudCwgSUNvcmVQYWdlTGlzdEFwaURlZmluaXRpb24sIElDb3JlUGFnZUxpc3RDUlVELCBJQ29yZVBhZ2VMaXN0RWRpdFJvdXRpbmcgfSBmcm9tICcuLi9jb3JlLXBhZ2UtbGlzdC9jb3JlLXBhZ2UtbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSYW5kb21BdmF0YXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmFuZG9tLWF2YXRhci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3JnYW5pemF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL29yZ2FuaXphdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1Db3JlQnV0dG9uVk5TQ29kZSB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvRW51bUNvcmVCdXR0b25WTlNDb2RlJztcclxuaW1wb3J0IHsgSUNvcmVCdXR0b25WTlMgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0lDb3JlQnV0dG9uVk5TJztcclxuaW1wb3J0IHsgYWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElHZW5lcmF0ZVRlbXBsYXRlUmVxdWVzdCB9IGZyb20gJy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gJy4uL2NvcmUtdGFibGUvSUNvcmVUYWJsZUNvbHVtbkl0ZW0nO1xyXG5pbXBvcnQgeyBFbnVtQ29yZVRhYmxlUGlwZVR5cGUgfSBmcm9tICcuLi9jb3JlLXRhYmxlL0VudW1Db3JlVGFibGVQaXBlVHlwZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlT3JnVHJlZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ1bGxzY3JlZW5Nb2RhbExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2Z1bGxzY3JlZW4tbW9kYWwtbG9hZGVyL2Z1bGxzY3JlZW4tbW9kYWwtbG9hZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBNYXBBdmF0YXJUb1NlcnZlclBpcGUgfSBmcm9tICcuLi8uLi9hcHAtcGlwZXMvbWFwLWF2YXRhci10by1zZXJ2ZXIucGlwZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Ntcy1wcm9maWxlLXN0YWZmcHJvZmlsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb3JlUGFnZUxpc3RDb21wb25lbnQsIFxyXG4gICAgQ29yZU9yZ1RyZWVDb21wb25lbnQsIFxyXG4gICAgRm9ybXNNb2R1bGUsIFxyXG4gICAgRnVsbHNjcmVlbk1vZGFsTG9hZGVyQ29tcG9uZW50LFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIE1hcEF2YXRhclRvU2VydmVyUGlwZSxcclxuICAgIENvbW1vbk1vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N0YWZmcHJvZmlsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3RhZmZwcm9maWxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdGFmZlByb2ZpbGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgaGlkZUhlYWRlciE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGVpZ2h0ITogbnVtYmVyO1xyXG5cclxuICBAVmlld0NoaWxkKCdhdmF0YXInKSBhdmF0YXIhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKiBTVEFSVDogTG9jYWwgZmlsdGVyIHBhcmFtcyAqL1xyXG4gIG9yZ0lkcyE6IG51bWJlcltdO1xyXG4gIC8qIEVORDogTG9jYWwgZmlsdGVyIHBhcmFtcyAqL1xyXG5cclxuICAvKlxyXG4gIFByb3BlcnRpZXMgYmVpbmcgcGFzc2VkIHRvIGNvcmUtcGFnZS1saXN0XHJcbiAgKi9cclxuICBkYXRlUGVyaW9kQ29tcGFyaXNvbkZvcjogc3RyaW5nID0gJ2pvaW5EYXRlJztcclxuICBkYXRlUGVyaW9kQ29tcGFyaXNvbkZvckxhYmVsS2V5OiBFbnVtVHJhbnNsYXRlS2V5ID1cclxuICAgIEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1RBRkZfUFJPRklMRV9KT0lOX0RBVEU7XHJcbiAgc3RhdHVzSW5jbHVzaW9uRm9yOiBzdHJpbmcgPSAnd29ya1N0YXR1c0lkJztcclxuICBzdGF0dXNJbmNsdXNpb25Gb3JMYWJlbEtleTogRW51bVRyYW5zbGF0ZUtleSA9XHJcbiAgICBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX0RFTU9fQVRUQUNITUVOVF9TVEFUVVNfSUQ7XHJcbiAgc3RhdHVzT3B0aW9uc0FwaTogYXBpID0gYXBpLkhVX0VNUExPWUVFX0NWX0dFVF9FTVBMT1lFRV9TVEFUVVNfTElTVDtcclxuICBsb2FkaW5nITogYm9vbGVhbjtcclxuICB0aXRsZSA9IEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NUE9ORU5UX1RJVExFX1NUQUZGX1BST0ZJTEU7XHJcblxyXG4gIG91dGVyU29ydDogSVNvcnRJdGVtW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiBcImpvYk9yZGVyTnVtXCIsXHJcbiAgICAgIHNvcnREaXJlY3Rpb246IEVudW1Tb3J0RGlyZWN0aW9uLkFTQ1xyXG4gICAgfVxyXG4gIF1cclxuXHJcbiAgb3V0ZXJQYXJhbSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XHJcbiAgb3V0ZXJGaWx0ZXJPcGVyYXRvcnM6IElGaWx0ZXJPcGVyYXRvcltdID0gW107XHJcbiAgb3V0ZXJJbk9wZXJhdG9yczogSUluT3BlcmF0b3JbXSA9IFtcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICdvcmdJZCcsXHJcbiAgICAgIHZhbHVlczogdGhpcy5vcmdJZHMgfHwgW10sXHJcbiAgICB9LFxyXG4gIF07XHJcblxyXG4gIGFwaURlZmluaXRpb246IElDb3JlUGFnZUxpc3RBcGlEZWZpbml0aW9uID0ge1xyXG4gICAgcXVlcnlMaXN0UmVsYXRpdmVQYXRoOiBhcGkuSFVfRU1QTE9ZRUVfUVVFUllfTElTVCxcclxuICB9O1xyXG5cclxuICBjcnVkOiBJQ29yZVBhZ2VMaXN0Q1JVRCA9IHtcclxuICAgIGRlbGV0ZUlkczogYXBpLkhVX0VNUExPWUVFX0RFTEVURV9JRFMsXHJcbiAgfTtcclxuXHJcbiAgYXZhdGFyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBjb2x1bW5zOiBJQ29yZVRhYmxlQ29sdW1uSXRlbVtdID0gW1xyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX0NPTU1PTl9JRCxcclxuICAgICAgZmllbGQ6ICdpZCcsXHJcbiAgICAgIGhpZGRlbjogdHJ1ZSxcclxuICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgIGFsaWduOiAncmlnaHQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TVEFGRl9QUk9GSUxFX0FWQVRBUiwgLy8gdG8gYmUgYXNpZ25lZCB0byBFbnVtVHJhbnNsYXRlS2V5XHJcbiAgICAgIGZpZWxkOiAnYXZhdGFyJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgaGlkZVNlYXJjaEJveDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDgwLFxyXG4gICAgICB0ZW1wbGF0ZVJlZjogdGhpcy5hdmF0YXJUZW1wbGF0ZSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246XHJcbiAgICAgICAgRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TVEFGRl9QUk9GSUxFX0VNUExPWUVFX0NPREUsIC8vIHRvIGJlIGFzaWduZWQgdG8gRW51bVRyYW5zbGF0ZUtleVxyXG4gICAgICBmaWVsZDogJ2NvZGUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDgwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TVEFGRl9QUk9GSUxFX0ZVTExOQU1FLCAvLyB0byBiZSBhc2lnbmVkIHRvIEVudW1UcmFuc2xhdGVLZXlcclxuICAgICAgZmllbGQ6ICdmdWxsbmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMTUwLFxyXG4gICAgICBwaXBlOiBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuTk9STUFMSVpFX0hVTUFOX05BTUUsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOlxyXG4gICAgICAgIEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX1VTRVJfRU1QTE9ZRUVfUFJPRklMRV9DT0RFLCAvLyB0byBiZSBhc2lnbmVkIHRvIEVudW1UcmFuc2xhdGVLZXlcclxuICAgICAgZmllbGQ6ICdwcm9maWxlQ29kZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogODAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOlxyXG4gICAgICAgIEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1RBRkZfUFJPRklMRV9QT1NJVElPTl9OQU1FLCAvLyB0byBiZSBhc2lnbmVkIHRvIEVudW1UcmFuc2xhdGVLZXlcclxuICAgICAgZmllbGQ6ICduYW1lT25Qcm9maWxlRW1wbG95ZWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDMwMCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1RBRkZfUFJPRklMRV9PUkdfTkFNRSwgLy8gdG8gYmUgYXNpZ25lZCB0byBFbnVtVHJhbnNsYXRlS2V5XHJcbiAgICAgIGZpZWxkOiAnb3JnTmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TVEFGRl9XT1JLX1NUQVRVU19OQU1FLCAvLyB0byBiZSBhc2lnbmVkIHRvIEVudW1UcmFuc2xhdGVLZXlcclxuICAgICAgZmllbGQ6ICd3b3JrU3RhdHVzTmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwLFxyXG4gICAgfSxcclxuICBdO1xyXG5cclxuICBkZWZhdWx0QXZhdGFyITogc3RyaW5nO1xyXG5cclxuICBlZGl0Um91dGU6IElDb3JlUGFnZUxpc3RFZGl0Um91dGluZyA9IHtcclxuICAgIGF1eGlsaWFyeTogJ3BvcHVwQXV4JyxcclxuICB9O1xyXG5cclxuICBnZW5lcmF0ZVRlbXBsYXRlUmVxdWVzdCE6IElHZW5lcmF0ZVRlbXBsYXRlUmVxdWVzdDtcclxuXHJcbiAgaWQ6IGFueTtcclxuXHJcbiAgLyogRW5kIFByb3BlcnRpZXMgYmVpbmcgcGFzc2VkIHRvIGNvcmUtcGFnZS1saXN0ICovXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIG92ZXJyaWRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcmFzOiBSYW5kb21BdmF0YXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHVibGljIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHB1YmxpYyBvcmdhbml6YXRpb25TZXJ2aWNlOiBPcmdhbml6YXRpb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHB1YmxpYyBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICApIHtcclxuICAgIHN1cGVyKG1scyk7XHJcbiAgICB0aGlzLmRlZmF1bHRBdmF0YXIgPSByYXMuZ2V0KCk7XHJcblxyXG4gICAgLyogR2V0IG9yZ0lkcyBzdGFydHVwIHZhbHVlICovXHJcbiAgICBjb25zdCBuZXdPcmdJZHM6IG51bWJlcltdID0gW107XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZS5hY3RpdmVLZXlzLm1hcCgoeCkgPT5cclxuICAgICAgbmV3T3JnSWRzLnB1c2goTnVtYmVyKHgpKVxyXG4gICAgKTtcclxuICAgIHRoaXMub25PcmdJZHNDaGFuZ2UobmV3T3JnSWRzKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICB0aGlzLmxhbmcgPSB4O1xyXG4gICAgICB0aGlzLmdlbmVyYXRlVGVtcGxhdGVSZXF1ZXN0ID0ge1xyXG4gICAgICAgIGV4Q29kZTogJ1NUQUZGX1BST0ZJTEUnLFxyXG4gICAgICAgIGxhbmc6IHhcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICAvLyBO4bq/dSBjaGnhu4F1IGNhbyBoZWlnaHQgY+G7p2EgU3RhZmZQcm9maWxlQ29tcG9uZW50IGtow7RuZyDEkcaw4bujYyB0cnV54buBbiB2w6BvXHJcbiAgICAvLyBUaMOsIGNoaeG7gXUgY2FvIGPhu6dhIG7DsyBz4bq9IGLhurFuZyBnacOhIHRy4buLIGJp4bq/biB0aGnDqm4gY+G7p2EgY29udGVudENvbnRhaW5lckhlaWdodCRcclxuICAgIC8vIHRy4burIMSRaSBraG/huqNuZyBwYWRkaW5nQm90dG9tIChiYXNpY1NwYWNpbmcpIFxyXG4gICAgaWYgKCF0aGlzLmhlaWdodCkge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UuY29udGVudENvbnRhaW5lckhlaWdodCQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgdGhpcy5oZWlnaHQgPSB4IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmJhc2ljU3BhY2luZztcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29sdW1ucy5maWx0ZXIoKGMpID0+IGMuZmllbGQgPT09ICdhdmF0YXInKVswXS50ZW1wbGF0ZVJlZiA9XHJcbiAgICAgIHRoaXMuYXZhdGFyO1xyXG4gIH1cclxuXHJcbiAgb25PcmdJZHNDaGFuZ2Uob3JnSWRzOiBudW1iZXJbXSkge1xyXG4gICAgdGhpcy5vcmdJZHMgPSBvcmdJZHM7XHJcbiAgICB0aGlzLm91dGVySW5PcGVyYXRvcnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBmaWVsZDogJ29yZ0lkJyxcclxuICAgICAgICB2YWx1ZXM6IG9yZ0lkcyxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBvblJvd0RvdWJsZUNsaWNrKGU6IGFueSkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2J0b2EoZS5pZC50b1N0cmluZygpKV0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICB9XHJcblxyXG4gIHNlbGVjdGVkSWRzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBvblNlbGVjdGVkSWRzQ2hhbmdlMShlOiBzdHJpbmdbXSB8IG51bWJlcltdKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSWRzID0gZTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuc2VsZWN0ZWRJZHMpO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dDbGljayhlOiBhbnkpIHtcclxuICAgIHRoaXMuaWQgPSBlLmlkO1xyXG4gIH1cclxuXHJcbiAgb25Db3JlUGFnZUhlYWRlckJ1dHRvbkNsaWNrKGU6IElDb3JlQnV0dG9uVk5TKSB7XHJcbiAgICBjb25zb2xlLmxvZygnU3RhZmZQcm9maWxlQ29tcG9uZW50IG9uQ29yZVBhZ2VIZWFkZXJCdXR0b25DbGljaycsIGUpO1xyXG4gICAgbGV0IGZpbGVuYW1lID0gJyc7XHJcbiAgICBzd2l0Y2ggKGUuY29kZSkge1xyXG4gICAgICBjYXNlIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5IRUFERVJfQ1JFQVRFOlxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnYXBwLXN0YWZmLXByb2ZpbGUtZWRpdCddLCB7XHJcbiAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5IRUFERVJfRURJVDpcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYnRvYSh0aGlzLmlkLnRvU3RyaW5nKCkpXSwge1xyXG4gICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX0RFTEVURTpcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX1BSSU5UOlxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdjYWxsJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9QUklOVF8yQ18yMDA4OlxyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZElkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS53YXJuKHRoaXMubWxzLnRyYW5zKCdQUklOVF9PTkVfUkVDT1JEJyksIGFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5odHRwLmdldChhcGkuSFVfRU1QTE9ZRUVfQ1ZfR0VUX0ZJTEVfTkFNRSArIHRoaXMuc2VsZWN0ZWRJZHNbMF0udG9TdHJpbmcoKSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGZpbGVuYW1lID0gcmVzcG9uc2UuaW5uZXJCb2R5O1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldChhcGkuSFVfRU1QTE9ZRUVfQ1ZfR0VUXzJDMjAwOCwge1xyXG4gICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyBpZDogdGhpcy5zZWxlY3RlZElkc1swXS50b1N0cmluZygpIH0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBCbG9iKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPT09ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkb3dubG9hZFVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IGRvd25sb2FkVXJsO1xyXG4gICAgICAgICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgJzJDX0JOVl8yMDA4XycgKyBmaWxlbmFtZSArICcuZG9jJyk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICAgICAgICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoZG93bmxvYWRVcmwpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBqc29uQm9keSA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShqc29uQm9keSk7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1c0NvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhkYXRhLm1lc3NhZ2VDb2RlLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGRhdGEubWVzc2FnZUNvZGUsIGFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzVGV4dChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX1BSSU5UXzJDXzk4OlxyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZElkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS53YXJuKHRoaXMubWxzLnRyYW5zKCdQUklOVF9PTkVfUkVDT1JEJyksIGFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaHR0cC5nZXQoYXBpLkhVX0VNUExPWUVFX0NWX0dFVF9GSUxFX05BTUUgKyB0aGlzLnNlbGVjdGVkSWRzWzBdLnRvU3RyaW5nKCkpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBmaWxlbmFtZSA9IHJlc3BvbnNlLmlubmVyQm9keTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZ2V0KGFwaS5IVV9FTVBMT1lFRV9DVl9HRVRfMkM5OCwge1xyXG4gICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyBpZDogdGhpcy5zZWxlY3RlZElkc1swXS50b1N0cmluZygpIH0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBCbG9iKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPT09ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkb3dubG9hZFVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IGRvd25sb2FkVXJsO1xyXG4gICAgICAgICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgJzJDX0JOVl85OF8nICsgZmlsZW5hbWUgKyAnLmRvYycpO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcbiAgICAgICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGRvd25sb2FkVXJsKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QganNvbkJvZHkgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcclxuICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoanNvbkJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS53YXJuKGRhdGEubWVzc2FnZUNvZGUsIGFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc1RleHQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5IRUFERVJfVVBEQVRFOlxyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuc2VsZWN0ZWRJZHNbMF0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic3RhZmYtcHJvZmlsZS1jb250YWluZXJcIj5cclxuICA8Y29yZS1wYWdlLWxpc3QgXHJcbiAgICBbaGVpZ2h0XT1cImhlaWdodFwiXHJcbiAgICBbYXBpRGVmaW5pdGlvbl09XCJhcGlEZWZpbml0aW9uXCIgW2NvbHVtbnNdPVwiY29sdW1uc1wiIFtlZGl0Um91dGVdPVwiZWRpdFJvdXRlXCIgW2NydWRdPVwiY3J1ZFwiXHJcbiAgICBbdGl0bGVdPVwidGl0bGVcIiBbbGVmdF09XCJvcmdUcmVlXCIgKm5nSWY9XCIhIWF2YXRhclwiXHJcbiAgICBbb3V0ZXJQYXJhbSRdPVwib3V0ZXJQYXJhbSRcIlxyXG4gICAgW291dGVySW5PcGVyYXRvcnNdPVwib3V0ZXJJbk9wZXJhdG9yc1wiXHJcbiAgICBbYXV0b1Jlc2l6ZVdpdGhXaW5kb3ddPVwidHJ1ZVwiXHJcbiAgICBbc2VsZlJlc29sdmVDb3JlUGFnZUhlYWRlckJ1dHRvbkNsaWNrXT1cInRydWVcIlxyXG4gICAgKHJvd0RvdWJsZUNsaWNrKT1cIm9uUm93RG91YmxlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAocm93Q2xpY2spPVwib25Sb3dDbGljaygkZXZlbnQpXCJcclxuICAgIChjb3JlUGFnZUhlYWRlckJ1dHRvbkNsaWNrKT1cIm9uQ29yZVBhZ2VIZWFkZXJCdXR0b25DbGljaygkZXZlbnQpXCJcclxuICAgIChzZWxlY3RlZElkc0NoYW5nZSk9XCJvblNlbGVjdGVkSWRzQ2hhbmdlMSgkZXZlbnQpXCJcclxuICAgIFtmcm96ZW5dPVwiM1wiXHJcbiAgICBbb3V0ZXJTb3J0XT1cIm91dGVyU29ydFwiXHJcbiAgICBbc2hvd1BhcmFtS2l0XT1cInRydWVcIlxyXG4gICAgW2RhdGVQZXJpb2RDb21wYXJpc29uRm9yXT1cImRhdGVQZXJpb2RDb21wYXJpc29uRm9yXCJcclxuICAgIFtkYXRlUGVyaW9kQ29tcGFyaXNvbkZvckxhYmVsS2V5XT1cImRhdGVQZXJpb2RDb21wYXJpc29uRm9yTGFiZWxLZXlcIlxyXG4gICAgW2hpZGVTdGF0dXNJbmNsdXNpb25dPVwiZmFsc2VcIlxyXG4gICAgW3N0YXR1c0luY2x1c2lvbkZvcl09XCJzdGF0dXNJbmNsdXNpb25Gb3JcIlxyXG4gICAgW3N0YXR1c0luY2x1c2lvbkZvckxhYmVsS2V5XT1cInN0YXR1c0luY2x1c2lvbkZvckxhYmVsS2V5XCJcclxuICAgIFtzdGF0dXNPcHRpb25zQXBpXT1cInN0YXR1c09wdGlvbnNBcGlcIlxyXG4gICAgW2dlbmVyYXRlVGVtcGxhdGVSZXF1ZXN0XT1cImdlbmVyYXRlVGVtcGxhdGVSZXF1ZXN0XCJcclxuICAgIFtpbXBvcnRQcmV2aWV3UGF0aF09XCInc3RhZmZwcm9maWxlLWltcG9ydCdcIiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICA+PC9jb3JlLXBhZ2UtbGlzdD5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNvcmdUcmVlPlxyXG4gICAgPGNvcmUtb3JnLXRyZWUgWyhuZ01vZGVsKV09XCJvcmdJZHNcIiAobmdNb2RlbENoYW5nZSk9XCJvbk9yZ0lkc0NoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICA8L2NvcmUtb3JnLXRyZWU+XHJcblxyXG4gICAgXHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhdmF0YXIgbGV0LWF2YXRhcj1cImNvbnRleHQuYXZhdGFyXCI+XHJcbiAgICA8aW1nICpuZ0lmPVwiYXZhdGFyICE9IG51bGxcIiBbc3JjXT1cImF2YXRhciB8IG1hcEF2YXRhclRvU2VydmVyXCIgY2xhc3M9XCJpbi10YWJsZS1hdmF0YXJcIiBhcHBJbWFnZUVycm9yUmVzb2x2ZXI+XHJcbiAgICA8aW1nICpuZ0lmPVwiYXZhdGFyID09IG51bGxcIiBbc3JjXT1cImRlZmF1bHRBdmF0YXJcIiBjbGFzcz1cImluLXRhYmxlLWF2YXRhclwiIGFwcEltYWdlRXJyb3JSZXNvbHZlcj5cclxuXHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwvZGl2PlxyXG48YXBwLWZ1bGxzY3JlZW4tbW9kYWwtbG9hZGVyICpuZ0lmPVwibG9hZGluZ1wiPjwvYXBwLWZ1bGxzY3JlZW4tbW9kYWwtbG9hZGVyPiJdfQ==
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZmZwcm9maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9zdGFmZnByb2ZpbGUvc3RhZmZwcm9maWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9zdGFmZnByb2ZpbGUvc3RhZmZwcm9maWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUE4QixLQUFLLEdBQUcsTUFBTSxlQUFlLENBQUM7QUFFekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxxQkFBcUIsRUFBMkUsTUFBTSw0Q0FBNEMsQ0FBQztBQU01SixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUU3RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3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O3NCQUFkLEtBQUs7Z0JBRWUsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQTZDVixPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYsIEFmdGVyVmlld0luaXQsIElucHV0LCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1jb21wb25lbnQvYmFzZS9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBhcGkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBFbnVtU29ydERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL2VudW0vRW51bVNvcnREaXJlY3Rpb24nO1xyXG5pbXBvcnQgeyBJRmlsdGVyT3BlcmF0b3IsIElJbk9wZXJhdG9yLCBJU29ydEl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lRdWVyeUxpc3RSZXF1ZXN0JztcclxuaW1wb3J0IHsgQ29yZVBhZ2VMaXN0Q29tcG9uZW50LCBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiwgSUNvcmVQYWdlTGlzdENSVUQsIElDb3JlUGFnZUxpc3RFZGl0Um91dGluZyB9IGZyb20gJy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFJhbmRvbUF2YXRhclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yYW5kb20tYXZhdGFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPcmdhbml6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3JnYW5pemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW51bUNvcmVCdXR0b25WTlNDb2RlIH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9FbnVtQ29yZUJ1dHRvblZOU0NvZGUnO1xyXG5pbXBvcnQgeyBJQ29yZUJ1dHRvblZOUyB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvSUNvcmVCdXR0b25WTlMnO1xyXG5pbXBvcnQgeyBhbGVydE9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYWxlcnRPcHRpb25zJztcclxuaW1wb3J0IHsgSUdlbmVyYXRlVGVtcGxhdGVSZXF1ZXN0IH0gZnJvbSAnLi4vY29yZS1wYWdlLWxpc3QvY29yZS1wYWdlLWxpc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IElDb3JlVGFibGVDb2x1bW5JdGVtIH0gZnJvbSAnLi4vY29yZS10YWJsZS9JQ29yZVRhYmxlQ29sdW1uSXRlbSc7XHJcbmltcG9ydCB7IEVudW1Db3JlVGFibGVQaXBlVHlwZSB9IGZyb20gJy4uL2NvcmUtdGFibGUvRW51bUNvcmVUYWJsZVBpcGVUeXBlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvcmVPcmdUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnVsbHNjcmVlbk1vZGFsTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZnVsbHNjcmVlbi1tb2RhbC1sb2FkZXIvZnVsbHNjcmVlbi1tb2RhbC1sb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IE1hcEF2YXRhclRvU2VydmVyUGlwZSB9IGZyb20gJy4uLy4uL2FwcC1waXBlcy9tYXAtYXZhdGFyLXRvLXNlcnZlci5waXBlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY21zLXByb2ZpbGUtc3RhZmZwcm9maWxlJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvcmVQYWdlTGlzdENvbXBvbmVudCwgXHJcbiAgICBDb3JlT3JnVHJlZUNvbXBvbmVudCwgXHJcbiAgICBGb3Jtc01vZHVsZSwgXHJcbiAgICBGdWxsc2NyZWVuTW9kYWxMb2FkZXJDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgTWFwQXZhdGFyVG9TZXJ2ZXJQaXBlLFxyXG4gICAgQ29tbW9uTW9kdWxlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3RhZmZwcm9maWxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zdGFmZnByb2ZpbGUuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0YWZmUHJvZmlsZUNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBcclxuICBASW5wdXQoKSBoaWRlSGVhZGVyITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBoZWlnaHQhOiBudW1iZXI7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2F2YXRhcicpIGF2YXRhciE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8qIFNUQVJUOiBMb2NhbCBmaWx0ZXIgcGFyYW1zICovXHJcbiAgb3JnSWRzITogbnVtYmVyW107XHJcbiAgLyogRU5EOiBMb2NhbCBmaWx0ZXIgcGFyYW1zICovXHJcblxyXG4gIC8qXHJcbiAgUHJvcGVydGllcyBiZWluZyBwYXNzZWQgdG8gY29yZS1wYWdlLWxpc3RcclxuICAqL1xyXG4gIGRhdGVQZXJpb2RDb21wYXJpc29uRm9yOiBzdHJpbmcgPSAnam9pbkRhdGUnO1xyXG4gIGRhdGVQZXJpb2RDb21wYXJpc29uRm9yTGFiZWxLZXk6IEVudW1UcmFuc2xhdGVLZXkgPVxyXG4gICAgRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TVEFGRl9QUk9GSUxFX0pPSU5fREFURTtcclxuICBzdGF0dXNJbmNsdXNpb25Gb3I6IHN0cmluZyA9ICd3b3JrU3RhdHVzSWQnO1xyXG4gIHN0YXR1c0luY2x1c2lvbkZvckxhYmVsS2V5OiBFbnVtVHJhbnNsYXRlS2V5ID1cclxuICAgIEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fREVNT19BVFRBQ0hNRU5UX1NUQVRVU19JRDtcclxuICBzdGF0dXNPcHRpb25zQXBpOiBhcGkgPSBhcGkuSFVfRU1QTE9ZRUVfQ1ZfR0VUX0VNUExPWUVFX1NUQVRVU19MSVNUO1xyXG4gIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIHRpdGxlID0gRW51bVRyYW5zbGF0ZUtleS5VSV9DT01QT05FTlRfVElUTEVfU1RBRkZfUFJPRklMRTtcclxuXHJcbiAgb3V0ZXJTb3J0OiBJU29ydEl0ZW1bXSA9IFtcclxuICAgIHtcclxuICAgICAgZmllbGQ6IFwiam9iT3JkZXJOdW1cIixcclxuICAgICAgc29ydERpcmVjdGlvbjogRW51bVNvcnREaXJlY3Rpb24uQVNDXHJcbiAgICB9XHJcbiAgXVxyXG5cclxuICBvdXRlclBhcmFtJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICBvdXRlckZpbHRlck9wZXJhdG9yczogSUZpbHRlck9wZXJhdG9yW10gPSBbXTtcclxuICBvdXRlckluT3BlcmF0b3JzOiBJSW5PcGVyYXRvcltdID0gW1xyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ29yZ0lkJyxcclxuICAgICAgdmFsdWVzOiB0aGlzLm9yZ0lkcyB8fCBbXSxcclxuICAgIH0sXHJcbiAgXTtcclxuXHJcbiAgYXBpRGVmaW5pdGlvbjogSUNvcmVQYWdlTGlzdEFwaURlZmluaXRpb24gPSB7XHJcbiAgICBxdWVyeUxpc3RSZWxhdGl2ZVBhdGg6IGFwaS5IVV9FTVBMT1lFRV9RVUVSWV9MSVNULFxyXG4gIH07XHJcblxyXG4gIGNydWQ6IElDb3JlUGFnZUxpc3RDUlVEID0ge1xyXG4gICAgZGVsZXRlSWRzOiBhcGkuSFVfRU1QTE9ZRUVfREVMRVRFX0lEUyxcclxuICB9O1xyXG5cclxuICBhdmF0YXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IElDb3JlVGFibGVDb2x1bW5JdGVtW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fQ09NTU9OX0lELFxyXG4gICAgICBmaWVsZDogJ2lkJyxcclxuICAgICAgaGlkZGVuOiB0cnVlLFxyXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHdpZHRoOiAyMDAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NUQUZGX1BST0ZJTEVfQVZBVEFSLCAvLyB0byBiZSBhc2lnbmVkIHRvIEVudW1UcmFuc2xhdGVLZXlcclxuICAgICAgZmllbGQ6ICdhdmF0YXInLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdjZW50ZXInLFxyXG4gICAgICBoaWRlU2VhcmNoQm94OiB0cnVlLFxyXG4gICAgICB3aWR0aDogODAsXHJcbiAgICAgIHRlbXBsYXRlUmVmOiB0aGlzLmF2YXRhclRlbXBsYXRlLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjpcclxuICAgICAgICBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NUQUZGX1BST0ZJTEVfRU1QTE9ZRUVfQ09ERSwgLy8gdG8gYmUgYXNpZ25lZCB0byBFbnVtVHJhbnNsYXRlS2V5XHJcbiAgICAgIGZpZWxkOiAnY29kZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogODAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NUQUZGX1BST0ZJTEVfRlVMTE5BTUUsIC8vIHRvIGJlIGFzaWduZWQgdG8gRW51bVRyYW5zbGF0ZUtleVxyXG4gICAgICBmaWVsZDogJ2Z1bGxuYW1lJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICAgIHBpcGU6IEVudW1Db3JlVGFibGVQaXBlVHlwZS5OT1JNQUxJWkVfSFVNQU5fTkFNRSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246XHJcbiAgICAgICAgRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfVVNFUl9FTVBMT1lFRV9QUk9GSUxFX0NPREUsIC8vIHRvIGJlIGFzaWduZWQgdG8gRW51bVRyYW5zbGF0ZUtleVxyXG4gICAgICBmaWVsZDogJ3Byb2ZpbGVDb2RlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiA4MCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246XHJcbiAgICAgICAgRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TVEFGRl9QUk9GSUxFX1BPU0lUSU9OX05BTUUsIC8vIHRvIGJlIGFzaWduZWQgdG8gRW51bVRyYW5zbGF0ZUtleVxyXG4gICAgICBmaWVsZDogJ25hbWVPblByb2ZpbGVFbXBsb3llZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMzAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TVEFGRl9QUk9GSUxFX09SR19OQU1FLCAvLyB0byBiZSBhc2lnbmVkIHRvIEVudW1UcmFuc2xhdGVLZXlcclxuICAgICAgZmllbGQ6ICdvcmdOYW1lJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAyMDAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NUQUZGX1dPUktfU1RBVFVTX05BTUUsIC8vIHRvIGJlIGFzaWduZWQgdG8gRW51bVRyYW5zbGF0ZUtleVxyXG4gICAgICBmaWVsZDogJ3dvcmtTdGF0dXNOYW1lJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAyMDAsXHJcbiAgICB9LFxyXG4gIF07XHJcblxyXG4gIGRlZmF1bHRBdmF0YXIhOiBzdHJpbmc7XHJcblxyXG4gIGVkaXRSb3V0ZTogSUNvcmVQYWdlTGlzdEVkaXRSb3V0aW5nID0ge1xyXG4gICAgYXV4aWxpYXJ5OiAncG9wdXBBdXgnLFxyXG4gIH07XHJcblxyXG4gIGdlbmVyYXRlVGVtcGxhdGVSZXF1ZXN0ITogSUdlbmVyYXRlVGVtcGxhdGVSZXF1ZXN0O1xyXG5cclxuICBpZDogYW55O1xyXG5cclxuICAvKiBFbmQgUHJvcGVydGllcyBiZWluZyBwYXNzZWQgdG8gY29yZS1wYWdlLWxpc3QgKi9cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHB1YmxpYyByYXM6IFJhbmRvbUF2YXRhclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwdWJsaWMgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHVibGljIG9yZ2FuaXphdGlvblNlcnZpY2U6IE9yZ2FuaXphdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHVibGljIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIobWxzKTtcclxuICAgIHRoaXMuZGVmYXVsdEF2YXRhciA9IHJhcy5nZXQoKTtcclxuXHJcbiAgICAvKiBHZXQgb3JnSWRzIHN0YXJ0dXAgdmFsdWUgKi9cclxuICAgIGNvbnN0IG5ld09yZ0lkczogbnVtYmVyW10gPSBbXTtcclxuICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLnZhbHVlLmFjdGl2ZUtleXMubWFwKCh4KSA9PlxyXG4gICAgICBuZXdPcmdJZHMucHVzaChOdW1iZXIoeCkpXHJcbiAgICApO1xyXG4gICAgdGhpcy5vbk9yZ0lkc0NoYW5nZShuZXdPcmdJZHMpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgIHRoaXMubGFuZyA9IHg7XHJcbiAgICAgIHRoaXMuZ2VuZXJhdGVUZW1wbGF0ZVJlcXVlc3QgPSB7XHJcbiAgICAgICAgZXhDb2RlOiAnU1RBRkZfUFJPRklMRScsXHJcbiAgICAgICAgbGFuZzogeFxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIC8vIE7hur91IGNoaeG7gXUgY2FvIGhlaWdodCBj4bunYSBTdGFmZlByb2ZpbGVDb21wb25lbnQga2jDtG5nIMSRxrDhu6NjIHRydXnhu4FuIHbDoG9cclxuICAgIC8vIFRow6wgY2hp4buBdSBjYW8gY+G7p2EgbsOzIHPhur0gYuG6sW5nIGdpw6EgdHLhu4sgYmnhur9uIHRoacOqbiBj4bunYSBjb250ZW50Q29udGFpbmVySGVpZ2h0JFxyXG4gICAgLy8gdHLhu6sgxJFpIGtob+G6o25nIHBhZGRpbmdCb3R0b20gKGJhc2ljU3BhY2luZykgXHJcbiAgICBpZiAoIXRoaXMuaGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5jb250ZW50Q29udGFpbmVySGVpZ2h0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhlaWdodCA9IHggLSB0aGlzLmxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgIH1cclxuICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb2x1bW5zLmZpbHRlcigoYykgPT4gYy5maWVsZCA9PT0gJ2F2YXRhcicpWzBdLnRlbXBsYXRlUmVmID1cclxuICAgICAgdGhpcy5hdmF0YXI7XHJcbiAgfVxyXG5cclxuICBvbk9yZ0lkc0NoYW5nZShvcmdJZHM6IG51bWJlcltdKSB7XHJcbiAgICB0aGlzLm9yZ0lkcyA9IG9yZ0lkcztcclxuICAgIHRoaXMub3V0ZXJJbk9wZXJhdG9ycyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkOiAnb3JnSWQnLFxyXG4gICAgICAgIHZhbHVlczogb3JnSWRzLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIG9uUm93RG91YmxlQ2xpY2soZTogYW55KSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYnRvYShlLmlkLnRvU3RyaW5nKCkpXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRJZHM6IGFueVtdID0gW107XHJcblxyXG4gIG9uU2VsZWN0ZWRJZHNDaGFuZ2UxKGU6IHN0cmluZ1tdIHwgbnVtYmVyW10pIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBlO1xyXG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZElkcyk7XHJcbiAgfVxyXG5cclxuICBvblJvd0NsaWNrKGU6IGFueSkge1xyXG4gICAgdGhpcy5pZCA9IGUuaWQ7XHJcbiAgfVxyXG5cclxuICBvbkNvcmVQYWdlSGVhZGVyQnV0dG9uQ2xpY2soZTogSUNvcmVCdXR0b25WTlMpIHtcclxuICAgIGNvbnNvbGUubG9nKCdTdGFmZlByb2ZpbGVDb21wb25lbnQgb25Db3JlUGFnZUhlYWRlckJ1dHRvbkNsaWNrJywgZSk7XHJcbiAgICBsZXQgZmlsZW5hbWUgPSAnJztcclxuICAgIHN3aXRjaCAoZS5jb2RlKSB7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9DUkVBVEU6XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydhcHAtc3RhZmYtcHJvZmlsZS1lZGl0J10sIHtcclxuICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9FRElUOlxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtidG9hKHRoaXMuaWQudG9TdHJpbmcoKSldLCB7XHJcbiAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5IRUFERVJfREVMRVRFOlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5IRUFERVJfUFJJTlQ6XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2NhbGwnKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX1BSSU5UXzJDXzIwMDg6XHJcbiAgICAgICAgZGVidWdnZXI7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLndhcm4odGhpcy5tbHMudHJhbnMoJ1BSSU5UX09ORV9SRUNPUkQnKSwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0KGFwaS5IVV9FTVBMT1lFRV9DVl9HRVRfRklMRV9OQU1FICsgdGhpcy5zZWxlY3RlZElkc1swXS50b1N0cmluZygpKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZmlsZW5hbWUgPSByZXNwb25zZS5pbm5lckJvZHk7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZ2V0KGFwaS5IVV9FTVBMT1lFRV9DVl9HRVRfMkMyMDA4LCB7XHJcbiAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IGlkOiB0aGlzLnNlbGVjdGVkSWRzWzBdLnRvU3RyaW5nKCkgfSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IEJsb2IpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzcG9uc2UudHlwZSA9PT0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRvd25sb2FkVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gZG93bmxvYWRVcmw7XHJcbiAgICAgICAgICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCAnMkNfQk5WXzIwMDhfJyArIGZpbGVuYW1lICsgJy5kb2MnKTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG4gICAgICAgICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChkb3dubG9hZFVybCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb25Cb2R5ID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGpzb25Cb2R5KTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzQ29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGRhdGEubWVzc2FnZUNvZGUsIGFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoZGF0YS5tZXNzYWdlQ29kZSwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQXNUZXh0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5IRUFERVJfUFJJTlRfMkNfOTg6XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLndhcm4odGhpcy5tbHMudHJhbnMoJ1BSSU5UX09ORV9SRUNPUkQnKSwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5odHRwLmdldChhcGkuSFVfRU1QTE9ZRUVfQ1ZfR0VUX0ZJTEVfTkFNRSArIHRoaXMuc2VsZWN0ZWRJZHNbMF0udG9TdHJpbmcoKSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGZpbGVuYW1lID0gcmVzcG9uc2UuaW5uZXJCb2R5O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQoYXBpLkhVX0VNUExPWUVFX0NWX0dFVF8yQzk4LCB7XHJcbiAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IGlkOiB0aGlzLnNlbGVjdGVkSWRzWzBdLnRvU3RyaW5nKCkgfSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IEJsb2IpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzcG9uc2UudHlwZSA9PT0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRvd25sb2FkVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gZG93bmxvYWRVcmw7XHJcbiAgICAgICAgICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCAnMkNfQk5WXzk4XycgKyBmaWxlbmFtZSArICcuZG9jJyk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICAgICAgICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoZG93bmxvYWRVcmwpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBqc29uQm9keSA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShqc29uQm9keSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLndhcm4oZGF0YS5tZXNzYWdlQ29kZSwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzVGV4dChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9VUERBVEU6XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZElkc1swXSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzdGFmZi1wcm9maWxlLWNvbnRhaW5lclwiPlxyXG4gIDxjb3JlLXBhZ2UtbGlzdCBcclxuICAgIFtoZWlnaHRdPVwiaGVpZ2h0XCJcclxuICAgIFthcGlEZWZpbml0aW9uXT1cImFwaURlZmluaXRpb25cIiBbY29sdW1uc109XCJjb2x1bW5zXCIgW2VkaXRSb3V0ZV09XCJlZGl0Um91dGVcIiBbY3J1ZF09XCJjcnVkXCJcclxuICAgIFt0aXRsZV09XCJ0aXRsZVwiIFtsZWZ0XT1cIm9yZ1RyZWVcIiAqbmdJZj1cIiEhYXZhdGFyXCJcclxuICAgIFtvdXRlclBhcmFtJF09XCJvdXRlclBhcmFtJFwiXHJcbiAgICBbb3V0ZXJJbk9wZXJhdG9yc109XCJvdXRlckluT3BlcmF0b3JzXCJcclxuICAgIFthdXRvUmVzaXplV2l0aFdpbmRvd109XCJ0cnVlXCJcclxuICAgIFtzZWxmUmVzb2x2ZUNvcmVQYWdlSGVhZGVyQnV0dG9uQ2xpY2tdPVwidHJ1ZVwiXHJcbiAgICAocm93RG91YmxlQ2xpY2spPVwib25Sb3dEb3VibGVDbGljaygkZXZlbnQpXCJcclxuICAgIChyb3dDbGljayk9XCJvblJvd0NsaWNrKCRldmVudClcIlxyXG4gICAgKGNvcmVQYWdlSGVhZGVyQnV0dG9uQ2xpY2spPVwib25Db3JlUGFnZUhlYWRlckJ1dHRvbkNsaWNrKCRldmVudClcIlxyXG4gICAgKHNlbGVjdGVkSWRzQ2hhbmdlKT1cIm9uU2VsZWN0ZWRJZHNDaGFuZ2UxKCRldmVudClcIlxyXG4gICAgW2Zyb3plbl09XCIzXCJcclxuICAgIFtvdXRlclNvcnRdPVwib3V0ZXJTb3J0XCJcclxuICAgIFtzaG93UGFyYW1LaXRdPVwidHJ1ZVwiXHJcbiAgICBbZGF0ZVBlcmlvZENvbXBhcmlzb25Gb3JdPVwiZGF0ZVBlcmlvZENvbXBhcmlzb25Gb3JcIlxyXG4gICAgW2RhdGVQZXJpb2RDb21wYXJpc29uRm9yTGFiZWxLZXldPVwiZGF0ZVBlcmlvZENvbXBhcmlzb25Gb3JMYWJlbEtleVwiXHJcbiAgICBbaGlkZVN0YXR1c0luY2x1c2lvbl09XCJmYWxzZVwiXHJcbiAgICBbc3RhdHVzSW5jbHVzaW9uRm9yXT1cInN0YXR1c0luY2x1c2lvbkZvclwiXHJcbiAgICBbc3RhdHVzSW5jbHVzaW9uRm9yTGFiZWxLZXldPVwic3RhdHVzSW5jbHVzaW9uRm9yTGFiZWxLZXlcIlxyXG4gICAgW3N0YXR1c09wdGlvbnNBcGldPVwic3RhdHVzT3B0aW9uc0FwaVwiXHJcbiAgICBbZ2VuZXJhdGVUZW1wbGF0ZVJlcXVlc3RdPVwiZ2VuZXJhdGVUZW1wbGF0ZVJlcXVlc3RcIlxyXG4gICAgW2ltcG9ydFByZXZpZXdQYXRoXT1cIidzdGFmZnByb2ZpbGUtaW1wb3J0J1wiICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgID48L2NvcmUtcGFnZS1saXN0PlxyXG5cclxuICA8bmctdGVtcGxhdGUgI29yZ1RyZWU+XHJcbiAgICA8Y29yZS1vcmctdHJlZSBbKG5nTW9kZWwpXT1cIm9yZ0lkc1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uT3JnSWRzQ2hhbmdlKCRldmVudClcIj5cclxuICAgIDwvY29yZS1vcmctdHJlZT5cclxuXHJcbiAgICBcclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2F2YXRhciBsZXQtYXZhdGFyPVwiY29udGV4dC5hdmF0YXJcIj5cclxuICAgIDxpbWcgKm5nSWY9XCJhdmF0YXIgIT0gbnVsbFwiIFtzcmNdPVwiYXZhdGFyIHwgbWFwQXZhdGFyVG9TZXJ2ZXJcIiBjbGFzcz1cImluLXRhYmxlLWF2YXRhclwiIGFwcEltYWdlRXJyb3JSZXNvbHZlcj5cclxuICAgIDxpbWcgKm5nSWY9XCJhdmF0YXIgPT0gbnVsbFwiIFtzcmNdPVwiZGVmYXVsdEF2YXRhclwiIGNsYXNzPVwiaW4tdGFibGUtYXZhdGFyXCIgYXBwSW1hZ2VFcnJvclJlc29sdmVyPlxyXG5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuPC9kaXY+XHJcbjxhcHAtZnVsbHNjcmVlbi1tb2RhbC1sb2FkZXIgKm5nSWY9XCJsb2FkaW5nXCI+PC9hcHAtZnVsbHNjcmVlbi1tb2RhbC1sb2FkZXI+Il19