@provoly/dashboard 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.service.mjs +5 -4
- package/esm2022/admin/i18n/fr.translations.mjs +2 -2
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +4 -4
- package/esm2022/mock/service/mock-i18n.service.mjs +2 -2
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +33 -42
- package/esm2022/presentation/components/presentation.component.mjs +4 -8
- package/esm2022/presentation/i18n/en.translations.mjs +3 -2
- package/esm2022/presentation/i18n/fr.translations.mjs +3 -2
- package/esm2022/toolbox/components/toolbox.component.mjs +3 -3
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +9 -7
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +3 -3
- package/esm2022/widgets/widget-table/i18n/en.translations.mjs +10 -2
- package/esm2022/widgets/widget-table/i18n/fr.translations.mjs +10 -2
- package/esm2022/widgets/widget-table/style/css.component.mjs +2 -2
- package/fesm2022/provoly-dashboard-admin.mjs +5 -4
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-mock.mjs +1 -1
- package/fesm2022/provoly-dashboard-mock.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +39 -50
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +2 -2
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +8 -6
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +22 -6
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +3 -3
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/mock/service/mock-i18n.service.d.ts +1 -1
- package/package.json +37 -37
- package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +3 -1
- package/presentation/components/presentation.component.d.ts +4 -8
- package/presentation/i18n/en.translations.d.ts +1 -0
- package/presentation/i18n/fr.translations.d.ts +1 -0
- package/widgets/widget-map/component/widget-map.component.d.ts +1 -1
- package/widgets/widget-table/i18n/en.translations.d.ts +8 -0
- package/widgets/widget-table/i18n/fr.translations.d.ts +8 -0
- package/widgets/widget-table/style/_o-widget-table.scss +4 -0
|
@@ -82,11 +82,11 @@ export class ToolboxComponent {
|
|
|
82
82
|
return manifest && action.name === 'dashboard_details' ? !!manifest.additionalInformation : action.visible;
|
|
83
83
|
}
|
|
84
84
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ToolboxComponent, deps: [{ token: i1.Store }, { token: PRY_ACCESS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
85
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: ToolboxComponent, selector: "pry-toolbox", inputs: { displayLabels: "displayLabels", dropdownPosition: "dropdownPosition", actions: "actions", dropdownActions: "dropdownActions" }, ngImport: i0, template: "<ul class=\"m-actions-list\" #input>\n @if (showEditToggle$ | async) {\n @if (isManualMode$ | async) {\n <li class=\"m-actions-list__item\">\n <pry-edit-mode-toggle\n *pryAccess=\"{ module: 'dashboard', page: 'toolbox', action: 'edit_dashboard' }\"\n [displayLabels]=\"displayLabels\"\n ></pry-edit-mode-toggle>\n </li>\n }\n }\n\n @if (showDropdownButton$ | async) {\n @if (((dropdownActions$ | async)?.length ?? 0) > 0) {\n <li class=\"m-actions-list__item\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--ghost -pad-5\"\n cdkOverlayOrigin\n id=\"options\"\n aria-controls=\"IDpanel\"\n aria-expanded=\"false\"\n (click)=\"openDropdown($event)\"\n #trigger=\"cdkOverlayOrigin\"\n >\n <span [class.u-visually-hidden]=\"!displayLabels\">{{ '@pry.toolbox.options' | i18n }}</span>\n <pry-icon [width]=\"10\" [height]=\"13\" iconSvg=\"chevron_bottom\"></pry-icon>\n </button>\n </li>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isDropdownOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayPositions]=\"dropdownPosition\"\n [cdkConnectedOverlayOffsetY]=\"5\"\n (backdropClick)=\"isDropdownOpen = false\"\n >\n <div class=\"o-draggable-menu -dropdown\" aria-labelledby=\"\">\n <ul class=\"o-draggable-menu__list\">\n @for (action of dropdownActions$ | async; track action.name) {\n @if (action.visible) {\n <li class=\"o-draggable-menu__list__item\" [style.order]=\"getOrder(action.name)\">\n <pry-toolbox-action-instanciator\n [action]=\"action\"\n [displayLabels]=\"displayLabels\"\n (closeOptions)=\"closeDropdown($event)\"\n ></pry-toolbox-action-instanciator>\n </li>\n }\n }\n </ul>\n </div>\n </ng-template>\n }\n }\n\n @for (action of mainActions$ | async; track action.name) {\n @if (action.visible) {\n <li class=\"m-actions-list__item -{{ action.name }}\" *pryAccess=\"action.access\">\n <pry-toolbox-action-instanciator\n [action]=\"action\"\n [displayLabels]=\"displayLabels\"\n ></pry-toolbox-action-instanciator>\n </li>\n }\n }\n</ul>\n", dependencies: [{ kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i3.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i4.ToolboxActionInstanciatorComponent, selector: "pry-toolbox-action-instanciator", inputs: ["displayLabels", "action"], outputs: ["closeOptions"] }, { kind: "component", type: i5.EditModeToggleComponent, selector: "pry-edit-mode-toggle" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
85
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: ToolboxComponent, selector: "pry-toolbox", inputs: { displayLabels: "displayLabels", dropdownPosition: "dropdownPosition", actions: "actions", dropdownActions: "dropdownActions" }, ngImport: i0, template: "<ul class=\"m-actions-list\" #input>\n @if (showEditToggle$ | async) {\n @if (isManualMode$ | async) {\n <li class=\"m-actions-list__item\">\n <pry-edit-mode-toggle\n *pryAccess=\"{ module: 'dashboard', page: 'toolbox', action: 'edit_dashboard' }\"\n [displayLabels]=\"displayLabels\"\n ></pry-edit-mode-toggle>\n </li>\n }\n }\n\n @if (showDropdownButton$ | async) {\n @if (((dropdownActions$ | async)?.length ?? 0) > 0) {\n <li class=\"m-actions-list__item\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--ghost -pad-5\"\n cdkOverlayOrigin\n id=\"options\"\n aria-controls=\"IDpanel\"\n aria-expanded=\"false\"\n (click)=\"openDropdown($event)\"\n #trigger=\"cdkOverlayOrigin\"\n >\n <span [class.u-visually-hidden]=\"!displayLabels\">{{ '@pry.toolbox.options' | i18n }}</span>\n <pry-icon [width]=\"10\" [height]=\"13\" [iconSvg]=\"isDropdownOpen ? 'chevron_top' : 'chevron_bottom'\"></pry-icon>\n </button>\n </li>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isDropdownOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayPositions]=\"dropdownPosition\"\n [cdkConnectedOverlayOffsetY]=\"5\"\n (backdropClick)=\"isDropdownOpen = false\"\n >\n <div class=\"o-draggable-menu -dropdown\" aria-labelledby=\"\">\n <ul class=\"o-draggable-menu__list\">\n @for (action of dropdownActions$ | async; track action.name) {\n @if (action.visible) {\n <li class=\"o-draggable-menu__list__item\" [style.order]=\"getOrder(action.name)\">\n <pry-toolbox-action-instanciator\n [action]=\"action\"\n [displayLabels]=\"displayLabels\"\n (closeOptions)=\"closeDropdown($event)\"\n ></pry-toolbox-action-instanciator>\n </li>\n }\n }\n </ul>\n </div>\n </ng-template>\n }\n }\n\n @for (action of mainActions$ | async; track action.name) {\n @if (action.visible) {\n <li class=\"m-actions-list__item -{{ action.name }}\" *pryAccess=\"action.access\">\n <pry-toolbox-action-instanciator\n [action]=\"action\"\n [displayLabels]=\"displayLabels\"\n ></pry-toolbox-action-instanciator>\n </li>\n }\n }\n</ul>\n", dependencies: [{ kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i3.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i4.ToolboxActionInstanciatorComponent, selector: "pry-toolbox-action-instanciator", inputs: ["displayLabels", "action"], outputs: ["closeOptions"] }, { kind: "component", type: i5.EditModeToggleComponent, selector: "pry-edit-mode-toggle" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
86
86
|
}
|
|
87
87
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ToolboxComponent, decorators: [{
|
|
88
88
|
type: Component,
|
|
89
|
-
args: [{ selector: 'pry-toolbox', template: "<ul class=\"m-actions-list\" #input>\n @if (showEditToggle$ | async) {\n @if (isManualMode$ | async) {\n <li class=\"m-actions-list__item\">\n <pry-edit-mode-toggle\n *pryAccess=\"{ module: 'dashboard', page: 'toolbox', action: 'edit_dashboard' }\"\n [displayLabels]=\"displayLabels\"\n ></pry-edit-mode-toggle>\n </li>\n }\n }\n\n @if (showDropdownButton$ | async) {\n @if (((dropdownActions$ | async)?.length ?? 0) > 0) {\n <li class=\"m-actions-list__item\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--ghost -pad-5\"\n cdkOverlayOrigin\n id=\"options\"\n aria-controls=\"IDpanel\"\n aria-expanded=\"false\"\n (click)=\"openDropdown($event)\"\n #trigger=\"cdkOverlayOrigin\"\n >\n <span [class.u-visually-hidden]=\"!displayLabels\">{{ '@pry.toolbox.options' | i18n }}</span>\n <pry-icon [width]=\"10\" [height]=\"13\" iconSvg=\"chevron_bottom\"></pry-icon>\n </button>\n </li>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isDropdownOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayPositions]=\"dropdownPosition\"\n [cdkConnectedOverlayOffsetY]=\"5\"\n (backdropClick)=\"isDropdownOpen = false\"\n >\n <div class=\"o-draggable-menu -dropdown\" aria-labelledby=\"\">\n <ul class=\"o-draggable-menu__list\">\n @for (action of dropdownActions$ | async; track action.name) {\n @if (action.visible) {\n <li class=\"o-draggable-menu__list__item\" [style.order]=\"getOrder(action.name)\">\n <pry-toolbox-action-instanciator\n [action]=\"action\"\n [displayLabels]=\"displayLabels\"\n (closeOptions)=\"closeDropdown($event)\"\n ></pry-toolbox-action-instanciator>\n </li>\n }\n }\n </ul>\n </div>\n </ng-template>\n }\n }\n\n @for (action of mainActions$ | async; track action.name) {\n @if (action.visible) {\n <li class=\"m-actions-list__item -{{ action.name }}\" *pryAccess=\"action.access\">\n <pry-toolbox-action-instanciator\n [action]=\"action\"\n [displayLabels]=\"displayLabels\"\n ></pry-toolbox-action-instanciator>\n </li>\n }\n }\n</ul>\n" }]
|
|
89
|
+
args: [{ selector: 'pry-toolbox', template: "<ul class=\"m-actions-list\" #input>\n @if (showEditToggle$ | async) {\n @if (isManualMode$ | async) {\n <li class=\"m-actions-list__item\">\n <pry-edit-mode-toggle\n *pryAccess=\"{ module: 'dashboard', page: 'toolbox', action: 'edit_dashboard' }\"\n [displayLabels]=\"displayLabels\"\n ></pry-edit-mode-toggle>\n </li>\n }\n }\n\n @if (showDropdownButton$ | async) {\n @if (((dropdownActions$ | async)?.length ?? 0) > 0) {\n <li class=\"m-actions-list__item\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--ghost -pad-5\"\n cdkOverlayOrigin\n id=\"options\"\n aria-controls=\"IDpanel\"\n aria-expanded=\"false\"\n (click)=\"openDropdown($event)\"\n #trigger=\"cdkOverlayOrigin\"\n >\n <span [class.u-visually-hidden]=\"!displayLabels\">{{ '@pry.toolbox.options' | i18n }}</span>\n <pry-icon [width]=\"10\" [height]=\"13\" [iconSvg]=\"isDropdownOpen ? 'chevron_top' : 'chevron_bottom'\"></pry-icon>\n </button>\n </li>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isDropdownOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayPositions]=\"dropdownPosition\"\n [cdkConnectedOverlayOffsetY]=\"5\"\n (backdropClick)=\"isDropdownOpen = false\"\n >\n <div class=\"o-draggable-menu -dropdown\" aria-labelledby=\"\">\n <ul class=\"o-draggable-menu__list\">\n @for (action of dropdownActions$ | async; track action.name) {\n @if (action.visible) {\n <li class=\"o-draggable-menu__list__item\" [style.order]=\"getOrder(action.name)\">\n <pry-toolbox-action-instanciator\n [action]=\"action\"\n [displayLabels]=\"displayLabels\"\n (closeOptions)=\"closeDropdown($event)\"\n ></pry-toolbox-action-instanciator>\n </li>\n }\n }\n </ul>\n </div>\n </ng-template>\n }\n }\n\n @for (action of mainActions$ | async; track action.name) {\n @if (action.visible) {\n <li class=\"m-actions-list__item -{{ action.name }}\" *pryAccess=\"action.access\">\n <pry-toolbox-action-instanciator\n [action]=\"action\"\n [displayLabels]=\"displayLabels\"\n ></pry-toolbox-action-instanciator>\n </li>\n }\n }\n</ul>\n" }]
|
|
90
90
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i3.PryBaseAccess, decorators: [{
|
|
91
91
|
type: Optional
|
|
92
92
|
}, {
|
|
@@ -101,4 +101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
101
101
|
}], dropdownActions: [{
|
|
102
102
|
type: Input
|
|
103
103
|
}] } });
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBR2xCLGdCQUFnQixFQUVqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQU1oRCxNQUFNLE9BQU8sZ0JBQWdCO0lBdUIzQixJQUFhLE9BQU8sQ0FBQyxPQUF3QjtRQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBYSxlQUFlLENBQUMsZUFBa0Q7UUFDN0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsWUFDRSxLQUFZLEVBQ2tDLE1BQXFCO1FBQXJCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFoQ3JFLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBa0IsT0FBTyxDQUFDLENBQUM7UUFDekQsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQW9DLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLHFCQUFnQixHQUF3QjtZQUMvQztnQkFDRSxPQUFPLEVBQUUsS0FBSztnQkFDZCxPQUFPLEVBQUUsUUFBUTtnQkFDakIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsUUFBUSxFQUFFLEtBQUs7YUFDaEI7U0FDRixDQUFDO1FBT0YsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFpQnJCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLO2FBQzFCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7YUFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7WUFDakMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUM7WUFDL0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7U0FDNUMsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQ0QsQ0FBQyxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQy9CLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxLQUFLLFNBQVM7WUFDcEQsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU07WUFDekMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLG1CQUFtQixDQUFDLE1BQU0sQ0FDakQsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDMUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDckIsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3RSxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDN0YsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUNyQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLENBQUMsRUFBRSxlQUFlLENBQUMsRUFBRSxFQUFFLENBQ3JFLGFBQWEsQ0FDWCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDckIsYUFBYTtZQUNiLE1BQU0sZUFBZSxHQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUM7Z0JBQzdDLGNBQWMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQTJDLENBQUMsQ0FBQztZQUM5RSxNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDO1lBQ25ELE9BQU8sSUFBSSxDQUFDLE1BQU07Z0JBQ2hCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQzVGLEdBQUcsQ0FDRCxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ1YsQ0FBQztvQkFDQyxHQUFHLE1BQU07b0JBQ1QsT0FBTyxFQUFFLGVBQWUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxTQUFTO2lCQUNuRSxDQUFrQixDQUN0QixDQUNGO2dCQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ0QsR0FBRyxNQUFNO29CQUNULE9BQU8sRUFBRSxlQUFlLElBQUksU0FBUztpQkFDckIsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNoRixHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQ2pDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDM0csQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3BGLEdBQUcsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FDakMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzVHLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUNuRCxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQ3hFLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWE7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBb0I7UUFDaEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxNQUFNO1lBQUUsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxRQUFRLENBQUMsVUFBa0I7UUFDekIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUMvRixDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQXFCLEVBQUUsUUFBeUM7UUFDOUUsT0FBTyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUM3RyxDQUFDOzhHQXZIVSxnQkFBZ0IsdUNBaUNMLGdCQUFnQjtrR0FqQzNCLGdCQUFnQiw2TENuQjdCLHVqRkFxRUE7OzJGRGxEYSxnQkFBZ0I7a0JBSjVCLFNBQVM7K0JBQ0UsYUFBYTs7MEJBb0NwQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQjt5Q0E5QjdCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQW1CTyxPQUFPO3NCQUFuQixLQUFLO2dCQUlPLGVBQWU7c0JBQTNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgRGFzaGJvYXJkR3JpZExheW91dCxcbiAgRGFzaGJvYXJkU2VsZWN0b3JzLFxuICBEaXNwbGF5T3B0aW9ucyxcbiAgTWFuaWZlc3REZXNjcmlwdGlvbixcbiAgUFJZX0FDQ0VTU19UT0tFTixcbiAgUHJ5QmFzZUFjY2Vzc1xufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFDVElPTlMsIFRvb2xib3hBY3Rpb24gfSBmcm9tICcuLi90b29sYm94Lm1vZGVsJztcbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS10b29sYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rvb2xib3guY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRvb2xib3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBhY3Rpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VG9vbGJveEFjdGlvbltdPihBQ1RJT05TKTtcbiAgX2Ryb3Bkb3duQWN0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgbmFtZTogc3RyaW5nOyBvcmRlcjogbnVtYmVyIH1bXT4oW10pO1xuICBASW5wdXQoKSBkaXNwbGF5TGFiZWxzID0gdHJ1ZTtcbiAgQElucHV0KCkgZHJvcGRvd25Qb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtcbiAgICB7XG4gICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgfVxuICBdO1xuICBpc01hbnVhbE1vZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBjYW5Nb2RpZnkkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhbGxBY3Rpb25zJCE6IE9ic2VydmFibGU8VG9vbGJveEFjdGlvbltdPjtcbiAgbWFpbkFjdGlvbnMkITogT2JzZXJ2YWJsZTxUb29sYm94QWN0aW9uW10+O1xuICBkcm9wZG93bkFjdGlvbnMkITogT2JzZXJ2YWJsZTxUb29sYm94QWN0aW9uW10+O1xuICBzaG93RHJvcGRvd25CdXR0b24kITogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgYWN0aW9uc0F2YWlsYWJsZSQ6IE9ic2VydmFibGU8RGlzcGxheU9wdGlvbnMgfCB1bmRlZmluZWQ+O1xuICBzaG93RWRpdFRvZ2dsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHByaXZhdGUgY3VycmVudE1hbmlmZXN0JDogT2JzZXJ2YWJsZTxNYW5pZmVzdERlc2NyaXB0aW9uIHwgdW5kZWZpbmVkPjtcblxuICBASW5wdXQoKSBzZXQgYWN0aW9ucyhhY3Rpb25zOiBUb29sYm94QWN0aW9uW10pIHtcbiAgICB0aGlzLmFjdGlvbnMkLm5leHQoYWN0aW9ucyk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZHJvcGRvd25BY3Rpb25zKGRyb3Bkb3duQWN0aW9uczogeyBuYW1lOiBzdHJpbmc7IG9yZGVyOiBudW1iZXIgfVtdKSB7XG4gICAgdGhpcy5fZHJvcGRvd25BY3Rpb25zJC5uZXh0KGRyb3Bkb3duQWN0aW9ucyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBzdG9yZTogU3RvcmUsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChQUllfQUNDRVNTX1RPS0VOKSBwcml2YXRlIGFjY2VzczogUHJ5QmFzZUFjY2Vzc1xuICApIHtcbiAgICB0aGlzLmN1cnJlbnRNYW5pZmVzdCQgPSBzdG9yZVxuICAgICAgLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucHJlc2VudGF0aW9uKVxuICAgICAgLnBpcGUobWFwKChwcmVzZW50YXRpb24pID0+IHByZXNlbnRhdGlvbj8uY3VycmVudCkpO1xuICAgIHRoaXMuaXNNYW51YWxNb2RlJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zdGF0aWNNYW5pZmVzdCksXG4gICAgICBzdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdyaWRMYXlvdXQpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgKFtzdGF0aWNNYW5pZmVzdCwgZ3JpZExheW91dF0pID0+XG4gICAgICAgICAgKHN0YXRpY01hbmlmZXN0LndpbmRvd3NbMF0/LmdyaWQ/LmxheW91dCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IHN0YXRpY01hbmlmZXN0LndpbmRvd3NbMF0/LmdyaWQ/LmxheW91dFxuICAgICAgICAgICAgOiBncmlkTGF5b3V0KSA9PT0gRGFzaGJvYXJkR3JpZExheW91dC5NQU5VQUxcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuYWN0aW9uc0F2YWlsYWJsZSQgPSBzdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmRpc3BsYXlPcHRpb25zKTtcbiAgICB0aGlzLnNob3dFZGl0VG9nZ2xlJCA9IHRoaXMuYWN0aW9uc0F2YWlsYWJsZSQucGlwZShtYXAoKGFjdGlvbnMpID0+ICEhYWN0aW9ucz8uZWRpdF90b2dnbGUpKTtcbiAgICB0aGlzLmNhbk1vZGlmeSQgPSB0aGlzLmN1cnJlbnRNYW5pZmVzdCQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgobWFuaWZlc3QpID0+IHtcbiAgICAgICAgcmV0dXJuIG1hbmlmZXN0ID8gdGhpcy5hY2Nlc3M/LmNhbk1vZGlmeVByZXNlbnRhdGlvbihtYW5pZmVzdCkgOiBvZihmYWxzZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFsbEFjdGlvbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5hY3Rpb25zJCwgdGhpcy5hY3Rpb25zQXZhaWxhYmxlJCwgdGhpcy5jYW5Nb2RpZnkkXSkucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuY3VycmVudE1hbmlmZXN0JCksXG4gICAgICBzd2l0Y2hNYXAoKFtbYWN0aW9ucywgZGlzcGxheU9wdGlvbnMsIF9jYW5Nb2RpZnldLCBjdXJyZW50TWFuaWZlc3RdKSA9PlxuICAgICAgICBjb21iaW5lTGF0ZXN0KFxuICAgICAgICAgIGFjdGlvbnMubWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbkF2YWlsYWJsZSA9XG4gICAgICAgICAgICAgIHRoaXMuaXNBY3Rpb25WaXNpYmxlKGFjdGlvbiwgY3VycmVudE1hbmlmZXN0KSAmJlxuICAgICAgICAgICAgICBkaXNwbGF5T3B0aW9ucz8udG9vbGJveFthY3Rpb24ubmFtZSBhcyBrZXlvZiB0eXBlb2YgZGlzcGxheU9wdGlvbnMudG9vbGJveF07XG4gICAgICAgICAgICBjb25zdCBjYW5Nb2RpZnkgPSAhYWN0aW9uLm5lZWRzT3duZXIgfHwgX2Nhbk1vZGlmeTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFjY2Vzc1xuICAgICAgICAgICAgICA/IHRoaXMuYWNjZXNzLmhhc1JvbGUobnVsbCwgYWN0aW9uLmFjY2Vzcy5tb2R1bGUsIGFjdGlvbi5hY2Nlc3MucGFnZSwgYWN0aW9uLmFjY2Vzcy5hY3Rpb24pLnBpcGUoXG4gICAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgIChoYXNSb2xlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5hY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBhY3Rpb25BdmFpbGFibGUgJiYgKCF0aGlzLmFjY2VzcyB8fCBoYXNSb2xlKSAmJiBjYW5Nb2RpZnlcbiAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBUb29sYm94QWN0aW9uXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IG9mKHtcbiAgICAgICAgICAgICAgICAgIC4uLmFjdGlvbixcbiAgICAgICAgICAgICAgICAgIHZpc2libGU6IGFjdGlvbkF2YWlsYWJsZSAmJiBjYW5Nb2RpZnlcbiAgICAgICAgICAgICAgICB9IGFzIFRvb2xib3hBY3Rpb24pO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMubWFpbkFjdGlvbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5fZHJvcGRvd25BY3Rpb25zJCwgdGhpcy5hbGxBY3Rpb25zJF0pLnBpcGUoXG4gICAgICBtYXAoKFtkcm9wZG93bkFjdGlvbnMsIGFjdGlvbnNdKSA9PlxuICAgICAgICBhY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiAhZHJvcGRvd25BY3Rpb25zLmZpbmQoKGRyb3Bkb3duQWN0aW9uKSA9PiBhY3Rpb24ubmFtZSA9PT0gZHJvcGRvd25BY3Rpb24ubmFtZSkpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLmRyb3Bkb3duQWN0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9kcm9wZG93bkFjdGlvbnMkLCB0aGlzLmFsbEFjdGlvbnMkXSkucGlwZShcbiAgICAgIG1hcCgoW2Ryb3Bkb3duQWN0aW9ucywgYWN0aW9uc10pID0+XG4gICAgICAgIGFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+ICEhZHJvcGRvd25BY3Rpb25zLmZpbmQoKGRyb3Bkb3duQWN0aW9uKSA9PiBhY3Rpb24ubmFtZSA9PT0gZHJvcGRvd25BY3Rpb24ubmFtZSkpXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuc2hvd0Ryb3Bkb3duQnV0dG9uJCA9IHRoaXMuZHJvcGRvd25BY3Rpb25zJC5waXBlKFxuICAgICAgbWFwKChhY3Rpb25zKSA9PiBhY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24udmlzaWJsZSkubGVuZ3RoID4gMClcbiAgICApO1xuICB9XG5cbiAgb3BlbkRyb3Bkb3duKCRldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gdHJ1ZTtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBjbG9zZURyb3Bkb3duKCRldmVudDogRXZlbnQgfCB2b2lkKSB7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgIGlmICgkZXZlbnQpICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGdldE9yZGVyKGFjdGlvbk5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9kcm9wZG93bkFjdGlvbnMkLmdldFZhbHVlKCkuZmluZCgoYWN0aW9uKSA9PiBhY3Rpb25OYW1lID09PSBhY3Rpb24ubmFtZSk/Lm9yZGVyO1xuICB9XG5cbiAgaXNBY3Rpb25WaXNpYmxlKGFjdGlvbjogVG9vbGJveEFjdGlvbiwgbWFuaWZlc3Q6IE1hbmlmZXN0RGVzY3JpcHRpb24gfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbWFuaWZlc3QgJiYgYWN0aW9uLm5hbWUgPT09ICdkYXNoYm9hcmRfZGV0YWlscycgPyAhIW1hbmlmZXN0LmFkZGl0aW9uYWxJbmZvcm1hdGlvbiA6IGFjdGlvbi52aXNpYmxlO1xuICB9XG59XG4iLCI8dWwgY2xhc3M9XCJtLWFjdGlvbnMtbGlzdFwiICNpbnB1dD5cbiAgQGlmIChzaG93RWRpdFRvZ2dsZSQgfCBhc3luYykge1xuICAgIEBpZiAoaXNNYW51YWxNb2RlJCB8IGFzeW5jKSB7XG4gICAgICA8bGkgY2xhc3M9XCJtLWFjdGlvbnMtbGlzdF9faXRlbVwiPlxuICAgICAgICA8cHJ5LWVkaXQtbW9kZS10b2dnbGVcbiAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAndG9vbGJveCcsIGFjdGlvbjogJ2VkaXRfZGFzaGJvYXJkJyB9XCJcbiAgICAgICAgICBbZGlzcGxheUxhYmVsc109XCJkaXNwbGF5TGFiZWxzXCJcbiAgICAgICAgPjwvcHJ5LWVkaXQtbW9kZS10b2dnbGU+XG4gICAgICA8L2xpPlxuICAgIH1cbiAgfVxuXG4gIEBpZiAoc2hvd0Ryb3Bkb3duQnV0dG9uJCB8IGFzeW5jKSB7XG4gICAgQGlmICgoKGRyb3Bkb3duQWN0aW9ucyQgfCBhc3luYyk/Lmxlbmd0aCA/PyAwKSA+IDApIHtcbiAgICAgIDxsaSBjbGFzcz1cIm0tYWN0aW9ucy1saXN0X19pdGVtXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1naG9zdCAtcGFkLTVcIlxuICAgICAgICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICAgICAgICBpZD1cIm9wdGlvbnNcIlxuICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJJRHBhbmVsXCJcbiAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuRHJvcGRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgI3RyaWdnZXI9XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIFtjbGFzcy51LXZpc3VhbGx5LWhpZGRlbl09XCIhZGlzcGxheUxhYmVsc1wiPnt7ICdAcHJ5LnRvb2xib3gub3B0aW9ucycgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDxwcnktaWNvbiBbd2lkdGhdPVwiMTBcIiBbaGVpZ2h0XT1cIjEzXCIgaWNvblN2Zz1cImNoZXZyb25fYm90dG9tXCI+PC9wcnktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXG4gICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc0Ryb3Bkb3duT3BlblwiXG4gICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwidHJ1ZVwiXG4gICAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPVwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BcIlxuICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJkcm9wZG93blBvc2l0aW9uXCJcbiAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZXT1cIjVcIlxuICAgICAgICAoYmFja2Ryb3BDbGljayk9XCJpc0Ryb3Bkb3duT3BlbiA9IGZhbHNlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm8tZHJhZ2dhYmxlLW1lbnUgLWRyb3Bkb3duXCIgYXJpYS1sYWJlbGxlZGJ5PVwiXCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiby1kcmFnZ2FibGUtbWVudV9fbGlzdFwiPlxuICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIGRyb3Bkb3duQWN0aW9ucyQgfCBhc3luYzsgdHJhY2sgYWN0aW9uLm5hbWUpIHtcbiAgICAgICAgICAgICAgQGlmIChhY3Rpb24udmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm8tZHJhZ2dhYmxlLW1lbnVfX2xpc3RfX2l0ZW1cIiBbc3R5bGUub3JkZXJdPVwiZ2V0T3JkZXIoYWN0aW9uLm5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICA8cHJ5LXRvb2xib3gtYWN0aW9uLWluc3RhbmNpYXRvclxuICAgICAgICAgICAgICAgICAgICBbYWN0aW9uXT1cImFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5TGFiZWxzXT1cImRpc3BsYXlMYWJlbHNcIlxuICAgICAgICAgICAgICAgICAgICAoY2xvc2VPcHRpb25zKT1cImNsb3NlRHJvcGRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+PC9wcnktdG9vbGJveC1hY3Rpb24taW5zdGFuY2lhdG9yPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfVxuICB9XG5cbiAgQGZvciAoYWN0aW9uIG9mIG1haW5BY3Rpb25zJCB8IGFzeW5jOyB0cmFjayBhY3Rpb24ubmFtZSkge1xuICAgIEBpZiAoYWN0aW9uLnZpc2libGUpIHtcbiAgICAgIDxsaSBjbGFzcz1cIm0tYWN0aW9ucy1saXN0X19pdGVtIC17eyBhY3Rpb24ubmFtZSB9fVwiICpwcnlBY2Nlc3M9XCJhY3Rpb24uYWNjZXNzXCI+XG4gICAgICAgIDxwcnktdG9vbGJveC1hY3Rpb24taW5zdGFuY2lhdG9yXG4gICAgICAgICAgW2FjdGlvbl09XCJhY3Rpb25cIlxuICAgICAgICAgIFtkaXNwbGF5TGFiZWxzXT1cImRpc3BsYXlMYWJlbHNcIlxuICAgICAgICA+PC9wcnktdG9vbGJveC1hY3Rpb24taW5zdGFuY2lhdG9yPlxuICAgICAgPC9saT5cbiAgICB9XG4gIH1cbjwvdWw+XG4iXX0=
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBR2xCLGdCQUFnQixFQUVqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQU1oRCxNQUFNLE9BQU8sZ0JBQWdCO0lBdUIzQixJQUFhLE9BQU8sQ0FBQyxPQUF3QjtRQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBYSxlQUFlLENBQUMsZUFBa0Q7UUFDN0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsWUFDRSxLQUFZLEVBQ2tDLE1BQXFCO1FBQXJCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFoQ3JFLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBa0IsT0FBTyxDQUFDLENBQUM7UUFDekQsc0JB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QzNCLGdCQUFnQiw2TENuQjdCLDRsRkFxRUE7OzJGRGxEYSxnQkFBZ0I7a0JBSjVCLFNBQVM7K0JBQ0UsYUFBYTs7MEJBb0NwQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQjt5Q0E5QjdCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQW1CTyxPQUFPO3NCQUFuQixLQUFLO2dCQUlPLGVBQWU7c0JBQTNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgRGFzaGJvYXJkR3JpZExheW91dCxcbiAgRGFzaGJvYXJkU2VsZWN0b3JzLFxuICBEaXNwbGF5T3B0aW9ucyxcbiAgTWFuaWZlc3REZXNjcmlwdGlvbixcbiAgUFJZX0FDQ0VTU19UT0tFTixcbiAgUHJ5QmFzZUFjY2Vzc1xufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFDVElPTlMsIFRvb2xib3hBY3Rpb24gfSBmcm9tICcuLi90b29sYm94Lm1vZGVsJztcbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS10b29sYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rvb2xib3guY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRvb2xib3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBhY3Rpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VG9vbGJveEFjdGlvbltdPihBQ1RJT05TKTtcbiAgX2Ryb3Bkb3duQWN0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgbmFtZTogc3RyaW5nOyBvcmRlcjogbnVtYmVyIH1bXT4oW10pO1xuICBASW5wdXQoKSBkaXNwbGF5TGFiZWxzID0gdHJ1ZTtcbiAgQElucHV0KCkgZHJvcGRvd25Qb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtcbiAgICB7XG4gICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgfVxuICBdO1xuICBpc01hbnVhbE1vZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBjYW5Nb2RpZnkkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhbGxBY3Rpb25zJCE6IE9ic2VydmFibGU8VG9vbGJveEFjdGlvbltdPjtcbiAgbWFpbkFjdGlvbnMkITogT2JzZXJ2YWJsZTxUb29sYm94QWN0aW9uW10+O1xuICBkcm9wZG93bkFjdGlvbnMkITogT2JzZXJ2YWJsZTxUb29sYm94QWN0aW9uW10+O1xuICBzaG93RHJvcGRvd25CdXR0b24kITogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgYWN0aW9uc0F2YWlsYWJsZSQ6IE9ic2VydmFibGU8RGlzcGxheU9wdGlvbnMgfCB1bmRlZmluZWQ+O1xuICBzaG93RWRpdFRvZ2dsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHByaXZhdGUgY3VycmVudE1hbmlmZXN0JDogT2JzZXJ2YWJsZTxNYW5pZmVzdERlc2NyaXB0aW9uIHwgdW5kZWZpbmVkPjtcblxuICBASW5wdXQoKSBzZXQgYWN0aW9ucyhhY3Rpb25zOiBUb29sYm94QWN0aW9uW10pIHtcbiAgICB0aGlzLmFjdGlvbnMkLm5leHQoYWN0aW9ucyk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZHJvcGRvd25BY3Rpb25zKGRyb3Bkb3duQWN0aW9uczogeyBuYW1lOiBzdHJpbmc7IG9yZGVyOiBudW1iZXIgfVtdKSB7XG4gICAgdGhpcy5fZHJvcGRvd25BY3Rpb25zJC5uZXh0KGRyb3Bkb3duQWN0aW9ucyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBzdG9yZTogU3RvcmUsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChQUllfQUNDRVNTX1RPS0VOKSBwcml2YXRlIGFjY2VzczogUHJ5QmFzZUFjY2Vzc1xuICApIHtcbiAgICB0aGlzLmN1cnJlbnRNYW5pZmVzdCQgPSBzdG9yZVxuICAgICAgLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucHJlc2VudGF0aW9uKVxuICAgICAgLnBpcGUobWFwKChwcmVzZW50YXRpb24pID0+IHByZXNlbnRhdGlvbj8uY3VycmVudCkpO1xuICAgIHRoaXMuaXNNYW51YWxNb2RlJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zdGF0aWNNYW5pZmVzdCksXG4gICAgICBzdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdyaWRMYXlvdXQpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgKFtzdGF0aWNNYW5pZmVzdCwgZ3JpZExheW91dF0pID0+XG4gICAgICAgICAgKHN0YXRpY01hbmlmZXN0LndpbmRvd3NbMF0/LmdyaWQ/LmxheW91dCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IHN0YXRpY01hbmlmZXN0LndpbmRvd3NbMF0/LmdyaWQ/LmxheW91dFxuICAgICAgICAgICAgOiBncmlkTGF5b3V0KSA9PT0gRGFzaGJvYXJkR3JpZExheW91dC5NQU5VQUxcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuYWN0aW9uc0F2YWlsYWJsZSQgPSBzdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmRpc3BsYXlPcHRpb25zKTtcbiAgICB0aGlzLnNob3dFZGl0VG9nZ2xlJCA9IHRoaXMuYWN0aW9uc0F2YWlsYWJsZSQucGlwZShtYXAoKGFjdGlvbnMpID0+ICEhYWN0aW9ucz8uZWRpdF90b2dnbGUpKTtcbiAgICB0aGlzLmNhbk1vZGlmeSQgPSB0aGlzLmN1cnJlbnRNYW5pZmVzdCQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgobWFuaWZlc3QpID0+IHtcbiAgICAgICAgcmV0dXJuIG1hbmlmZXN0ID8gdGhpcy5hY2Nlc3M/LmNhbk1vZGlmeVByZXNlbnRhdGlvbihtYW5pZmVzdCkgOiBvZihmYWxzZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFsbEFjdGlvbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5hY3Rpb25zJCwgdGhpcy5hY3Rpb25zQXZhaWxhYmxlJCwgdGhpcy5jYW5Nb2RpZnkkXSkucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuY3VycmVudE1hbmlmZXN0JCksXG4gICAgICBzd2l0Y2hNYXAoKFtbYWN0aW9ucywgZGlzcGxheU9wdGlvbnMsIF9jYW5Nb2RpZnldLCBjdXJyZW50TWFuaWZlc3RdKSA9PlxuICAgICAgICBjb21iaW5lTGF0ZXN0KFxuICAgICAgICAgIGFjdGlvbnMubWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbkF2YWlsYWJsZSA9XG4gICAgICAgICAgICAgIHRoaXMuaXNBY3Rpb25WaXNpYmxlKGFjdGlvbiwgY3VycmVudE1hbmlmZXN0KSAmJlxuICAgICAgICAgICAgICBkaXNwbGF5T3B0aW9ucz8udG9vbGJveFthY3Rpb24ubmFtZSBhcyBrZXlvZiB0eXBlb2YgZGlzcGxheU9wdGlvbnMudG9vbGJveF07XG4gICAgICAgICAgICBjb25zdCBjYW5Nb2RpZnkgPSAhYWN0aW9uLm5lZWRzT3duZXIgfHwgX2Nhbk1vZGlmeTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFjY2Vzc1xuICAgICAgICAgICAgICA/IHRoaXMuYWNjZXNzLmhhc1JvbGUobnVsbCwgYWN0aW9uLmFjY2Vzcy5tb2R1bGUsIGFjdGlvbi5hY2Nlc3MucGFnZSwgYWN0aW9uLmFjY2Vzcy5hY3Rpb24pLnBpcGUoXG4gICAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgIChoYXNSb2xlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5hY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBhY3Rpb25BdmFpbGFibGUgJiYgKCF0aGlzLmFjY2VzcyB8fCBoYXNSb2xlKSAmJiBjYW5Nb2RpZnlcbiAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBUb29sYm94QWN0aW9uXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IG9mKHtcbiAgICAgICAgICAgICAgICAgIC4uLmFjdGlvbixcbiAgICAgICAgICAgICAgICAgIHZpc2libGU6IGFjdGlvbkF2YWlsYWJsZSAmJiBjYW5Nb2RpZnlcbiAgICAgICAgICAgICAgICB9IGFzIFRvb2xib3hBY3Rpb24pO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMubWFpbkFjdGlvbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5fZHJvcGRvd25BY3Rpb25zJCwgdGhpcy5hbGxBY3Rpb25zJF0pLnBpcGUoXG4gICAgICBtYXAoKFtkcm9wZG93bkFjdGlvbnMsIGFjdGlvbnNdKSA9PlxuICAgICAgICBhY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiAhZHJvcGRvd25BY3Rpb25zLmZpbmQoKGRyb3Bkb3duQWN0aW9uKSA9PiBhY3Rpb24ubmFtZSA9PT0gZHJvcGRvd25BY3Rpb24ubmFtZSkpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLmRyb3Bkb3duQWN0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9kcm9wZG93bkFjdGlvbnMkLCB0aGlzLmFsbEFjdGlvbnMkXSkucGlwZShcbiAgICAgIG1hcCgoW2Ryb3Bkb3duQWN0aW9ucywgYWN0aW9uc10pID0+XG4gICAgICAgIGFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+ICEhZHJvcGRvd25BY3Rpb25zLmZpbmQoKGRyb3Bkb3duQWN0aW9uKSA9PiBhY3Rpb24ubmFtZSA9PT0gZHJvcGRvd25BY3Rpb24ubmFtZSkpXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuc2hvd0Ryb3Bkb3duQnV0dG9uJCA9IHRoaXMuZHJvcGRvd25BY3Rpb25zJC5waXBlKFxuICAgICAgbWFwKChhY3Rpb25zKSA9PiBhY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24udmlzaWJsZSkubGVuZ3RoID4gMClcbiAgICApO1xuICB9XG5cbiAgb3BlbkRyb3Bkb3duKCRldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gdHJ1ZTtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBjbG9zZURyb3Bkb3duKCRldmVudDogRXZlbnQgfCB2b2lkKSB7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgIGlmICgkZXZlbnQpICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGdldE9yZGVyKGFjdGlvbk5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9kcm9wZG93bkFjdGlvbnMkLmdldFZhbHVlKCkuZmluZCgoYWN0aW9uKSA9PiBhY3Rpb25OYW1lID09PSBhY3Rpb24ubmFtZSk/Lm9yZGVyO1xuICB9XG5cbiAgaXNBY3Rpb25WaXNpYmxlKGFjdGlvbjogVG9vbGJveEFjdGlvbiwgbWFuaWZlc3Q6IE1hbmlmZXN0RGVzY3JpcHRpb24gfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbWFuaWZlc3QgJiYgYWN0aW9uLm5hbWUgPT09ICdkYXNoYm9hcmRfZGV0YWlscycgPyAhIW1hbmlmZXN0LmFkZGl0aW9uYWxJbmZvcm1hdGlvbiA6IGFjdGlvbi52aXNpYmxlO1xuICB9XG59XG4iLCI8dWwgY2xhc3M9XCJtLWFjdGlvbnMtbGlzdFwiICNpbnB1dD5cbiAgQGlmIChzaG93RWRpdFRvZ2dsZSQgfCBhc3luYykge1xuICAgIEBpZiAoaXNNYW51YWxNb2RlJCB8IGFzeW5jKSB7XG4gICAgICA8bGkgY2xhc3M9XCJtLWFjdGlvbnMtbGlzdF9faXRlbVwiPlxuICAgICAgICA8cHJ5LWVkaXQtbW9kZS10b2dnbGVcbiAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAndG9vbGJveCcsIGFjdGlvbjogJ2VkaXRfZGFzaGJvYXJkJyB9XCJcbiAgICAgICAgICBbZGlzcGxheUxhYmVsc109XCJkaXNwbGF5TGFiZWxzXCJcbiAgICAgICAgPjwvcHJ5LWVkaXQtbW9kZS10b2dnbGU+XG4gICAgICA8L2xpPlxuICAgIH1cbiAgfVxuXG4gIEBpZiAoc2hvd0Ryb3Bkb3duQnV0dG9uJCB8IGFzeW5jKSB7XG4gICAgQGlmICgoKGRyb3Bkb3duQWN0aW9ucyQgfCBhc3luYyk/Lmxlbmd0aCA/PyAwKSA+IDApIHtcbiAgICAgIDxsaSBjbGFzcz1cIm0tYWN0aW9ucy1saXN0X19pdGVtXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1naG9zdCAtcGFkLTVcIlxuICAgICAgICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICAgICAgICBpZD1cIm9wdGlvbnNcIlxuICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJJRHBhbmVsXCJcbiAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuRHJvcGRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgI3RyaWdnZXI9XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIFtjbGFzcy51LXZpc3VhbGx5LWhpZGRlbl09XCIhZGlzcGxheUxhYmVsc1wiPnt7ICdAcHJ5LnRvb2xib3gub3B0aW9ucycgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDxwcnktaWNvbiBbd2lkdGhdPVwiMTBcIiBbaGVpZ2h0XT1cIjEzXCIgW2ljb25TdmddPVwiaXNEcm9wZG93bk9wZW4gPyAnY2hldnJvbl90b3AnIDogJ2NoZXZyb25fYm90dG9tJ1wiPjwvcHJ5LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxuICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNEcm9wZG93bk9wZW5cIlxuICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cInRydWVcIlxuICAgICAgICBjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcz1cImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wXCJcbiAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwiZHJvcGRvd25Qb3NpdGlvblwiXG4gICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T2Zmc2V0WV09XCI1XCJcbiAgICAgICAgKGJhY2tkcm9wQ2xpY2spPVwiaXNEcm9wZG93bk9wZW4gPSBmYWxzZVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvLWRyYWdnYWJsZS1tZW51IC1kcm9wZG93blwiIGFyaWEtbGFiZWxsZWRieT1cIlwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cIm8tZHJhZ2dhYmxlLW1lbnVfX2xpc3RcIj5cbiAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBkcm9wZG93bkFjdGlvbnMkIHwgYXN5bmM7IHRyYWNrIGFjdGlvbi5uYW1lKSB7XG4gICAgICAgICAgICAgIEBpZiAoYWN0aW9uLnZpc2libGUpIHtcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJvLWRyYWdnYWJsZS1tZW51X19saXN0X19pdGVtXCIgW3N0eWxlLm9yZGVyXT1cImdldE9yZGVyKGFjdGlvbi5uYW1lKVwiPlxuICAgICAgICAgICAgICAgICAgPHByeS10b29sYm94LWFjdGlvbi1pbnN0YW5jaWF0b3JcbiAgICAgICAgICAgICAgICAgICAgW2FjdGlvbl09XCJhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUxhYmVsc109XCJkaXNwbGF5TGFiZWxzXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsb3NlT3B0aW9ucyk9XCJjbG9zZURyb3Bkb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgPjwvcHJ5LXRvb2xib3gtYWN0aW9uLWluc3RhbmNpYXRvcj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIH1cbiAgfVxuXG4gIEBmb3IgKGFjdGlvbiBvZiBtYWluQWN0aW9ucyQgfCBhc3luYzsgdHJhY2sgYWN0aW9uLm5hbWUpIHtcbiAgICBAaWYgKGFjdGlvbi52aXNpYmxlKSB7XG4gICAgICA8bGkgY2xhc3M9XCJtLWFjdGlvbnMtbGlzdF9faXRlbSAte3sgYWN0aW9uLm5hbWUgfX1cIiAqcHJ5QWNjZXNzPVwiYWN0aW9uLmFjY2Vzc1wiPlxuICAgICAgICA8cHJ5LXRvb2xib3gtYWN0aW9uLWluc3RhbmNpYXRvclxuICAgICAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgICAgICBbZGlzcGxheUxhYmVsc109XCJkaXNwbGF5TGFiZWxzXCJcbiAgICAgICAgPjwvcHJ5LXRvb2xib3gtYWN0aW9uLWluc3RhbmNpYXRvcj5cbiAgICAgIDwvbGk+XG4gICAgfVxuICB9XG48L3VsPlxuIl19
|